📄 topflowevent.js
字号:
oActSelect.value = obj.actFlag.substr(0,4);
oActSelect.svalue = obj.actFlag.substr(0,4);
}
else{//Step
//FromProc
idTR = propview.insertRow();
idTR.height = "25";
idTR.className="obj";
idTD = idTR.insertCell();
idTD.noWrap = true;
idTD.style.width = "79";
idTD.align = "right";
idTD.innerHTML = "起点过程";
idTD = idTR.insertCell();
idTD.innerHTML = '<select id="pFromProc" onblur="if(beforePropChange(this)) setPropFromProc(this);" name="pFromProc" style="width:95%;"></select>';
//ToProc
idTR = propview.insertRow();
idTR.height = "25";
idTR.className="obj";
idTD = idTR.insertCell();
idTD.noWrap = true;
idTD.style.width = "79";
idTD.align = "right";
idTD.innerHTML = "终点过程";
idTD = idTR.insertCell();
idTD.innerHTML = '<select id="pToProc" onblur="if(beforePropChange(this)) setPropToProc(this);" name="pShapeType" style="width:95%;"></select>';
//Cond
var strCond
idTR = propview.insertRow();
idTR.height = "25";
idTR.className="obj";
idTD = idTR.insertCell();
idTD.noWrap = true;
idTD.style.width = "79";
idTD.align = "right";
idTD.innerHTML = '条件';
idTD = idTR.insertCell();
idTD.vAlign = "top";
strCond = obj.Cond;
strCond = strCond.replace(/</g,'<');
strCond = strCond.replace(/>/g,'>');
idTD.innerHTML = '<input id="btnPCond" type="button" class="cButton" onclick="vmlOpenWin(\'cond.htm\',\'\',675,455)" value="...">';
idTD.innerHTML += '<textarea id="pCond" onblur="onTextBlur(this,1,19)" readonly cols="19" onfocus="onTextGetFocus(this,5,19)" rows="1" name="pCond">' + strCond + '</textarea>'
//idTD.innerHTML = '<input type="text" name="pCond" maxlength="10" value="' + obj.Cond + '" style="width:95%;">';
//字段权限
idTR = propview.insertRow();
idTR.height = "25";
idTR.className="obj";
idTD = idTR.insertCell();
idTD.noWrap = true;
idTD.style.width = "79";
idTD.align = "right";
idTD.innerHTML = "字段权限";
idTD = idTR.insertCell();
idTD.innerHTML = '<input type="button" class="cButton" onclick="vmlOpenWin(\'flag.htm\',\'\',675,455)" value="...">';
//签注权限
idTR = propview.insertRow();
idTR.height = "25";
idTR.className="obj";
idTD = idTR.insertCell();
idTD.noWrap = true;
idTD.style.width = "79";
idTD.align = "right";
idTD.innerHTML = "签注权限";
idTD = idTR.insertCell();
idTD.innerHTML = '<input id="btnPCredit" type="button" class="cButton" onclick="vmlOpenWin(\'qzCredit.htm\',\'\',675,455)" value="...">';
//事件
idTR = propview.insertRow();
idTR.height = "25";
idTR.className="obj";
idTD = idTR.insertCell();
idTD.noWrap = true;
idTD.style.width = "79";
idTD.align = "right";
idTD.innerHTML = "事件";
idTD = idTR.insertCell();
idTD.innerHTML = '<input id="btnPEvent" type="button" class="cButton" onclick="vmlOpenWin(\'event.htm\',\'\',675,455)" value="...">';
//子流程
idTR = propview.insertRow();
idTR.height = "25";
idTR.className="obj";
idTD = idTR.insertCell();
idTD.noWrap = true;
idTD.style.width = "79";
idTD.align = "right";
idTD.innerHTML = "子流程";
idTD = idTR.insertCell();
idTD.innerHTML = '<input id="btnPSubFlow" type="button" class="cButton" onclick="vmlOpenWin(\'subflow.htm\',\'\',675,455)" value="...">';
//StartArrow
idTR = propview.insertRow();
idTR.height = "25";
idTR.className="obj";
idTD = idTR.insertCell();
idTD.noWrap = true;
idTD.style.width = "79";
idTD.align = "right";
idTD.innerHTML = "开始箭头";
idTD = idTR.insertCell();
idTD.innerHTML = '<select id="pStartArrow" onblur="if(beforePropChange(this)) setPropStartArrow(this);" name="pStartArrow" style="width:95%;"><option value="none" selected>无</option><option value="Classic">典型</option><option value="Block">实心</option><option value="Diamond">钻石</option><option value="Oval">圆点</option><option value="Open">小箭头</option></select>';
if(obj.StartArrow != "") document.getElementById("pStartArrow").value = obj.StartArrow;
//EndArrow
idTR = propview.insertRow();
idTR.height = "25";
idTR.className="obj";
idTD = idTR.insertCell();
idTD.noWrap = true;
idTD.style.width = "79";
idTD.align = "right";
idTD.innerHTML = "终止箭头";
idTD = idTR.insertCell();
idTD.innerHTML = '<select id="pEndArrow" onblur="if(beforePropChange(this)) setPropEndArrow(this);" name="pEndArrow" style="width:95%;"><option value="none" selected>无</option><option value="Classic">典型</option><option value="Block">实心</option><option value="Diamond">钻石</option><option value="Oval">圆点</option><option value="Open">小箭头</option></select>';
if(obj.EndArrow != "") document.getElementById("pEndArrow").value = obj.EndArrow;
oOption = document.createElement("OPTION");
oSelect.options.add(oOption);
oOption.innerText = "直线";
oOption.value = "Line";
oOption = document.createElement("OPTION");
oSelect.options.add(oOption);
oOption.innerText = "折角线";
oOption.value = "PolyLine";
oSelect.value = obj.ShapeType;
var Proc,oSelect2;
oSelect = document.all("pFromProc");
oSelect1 = document.all("pToProc");
for(var i = 0; i< _FLOW.Procs.length; i ++){
Proc = _FLOW.Procs[i];
if(Proc.ProcType != "EndProc"){
var Option1 = document.createElement("OPTION");
oSelect.options.add(Option1);
Option1.value = Proc.ID;
Option1.text = Proc.Text;
}
oSelect.value = obj.FromProc;
if(Proc.ProcType != "BeginProc"){
var Option2 = document.createElement("OPTION");
oSelect1.options.add(Option2);
Option2.value = Proc.ID;
Option2.text = Proc.Text;
}
oSelect1.value = obj.ToProc;
}
}
//StrockWeight
idTR = propview.insertRow();
idTR.height = "25";
idTR.className="obj";
idTD = idTR.insertCell();
idTD.noWrap = true;
idTD.style.width = "79";
idTD.align = "right";
idTD.innerHTML = "线条粗细";
idTD = idTR.insertCell();
idTD.innerHTML = '<input type="text" rule="^\\d{1}$" msg="[边框粗细]请输入1位数字!" onblur="if(beforePropChange(this)) setPropStrokeWeight(this);" name="pStrokeWeight" maxlength="10" value="' + obj.StrokeWeight + '" style="width:95%;">';
//zIndex
idTR = propview.insertRow();
idTR.height = "25";
idTR.className="obj";
idTD = idTR.insertCell();
idTD.noWrap = true;
idTD.style.width = "79";
idTD.align = "right";
idTD.innerHTML = "Z轴";
idTD = idTR.insertCell();
idTD.innerHTML = '<input type="text" rule="^\\d{1,3}$" msg="[Z轴]请输入1-3位数字!" onblur="if(beforePropChange(this)) setPropzIndex(this);" name="pzIndex" maxlength="10" value="' + obj.zIndex + '" style="width:95%;">';
//条件
if(_FOCUSTEDOBJ.typ == "Proc"){
if (_FOCUSTEDOBJ.id=="begin")
{
pName.readOnly = true;
pActType.disabled = true;
pShapeType.disabled = true;
maxP.disabled = true;
isSltTrans.disabled = true;
isSameCredit.disabled = true;
btnPExcuter.disabled = true;
btnPReader.disabled = true;
}
}
else
{
if (_FOCUSTEDOBJ.id.substr(0,1)=="D")
{
pName.readOnly = true;
pFromProc.disabled = true;
pToProc.disabled = true;
btnPCond.disabled = true;
btnPCredit.disabled = true;
btnPEvent.disabled = true;
btnPSubFlow.disabled = true;
}
}
}
//CACHE
function emptyLog(){
_DOLOG = [];
_DOLOGINDEX = -1;
}
function pushLog(act, obj){
var newLog = _DOLOG.slice(0, _DOLOGINDEX + 1);
_DOLOG = newLog;
_DOLOGINDEX = _DOLOG.push({"act" : act, "val": obj}) - 1;
}
function getLog(){
return _DOLOG[_DOLOGINDEX];
}
function undoLog(){
if(_DOLOGINDEX == -1){
alert("没有操作记录可以撤消.");
return;
}
if(doLog("undo")) _DOLOGINDEX --;
}
function redoLog(){
if(_DOLOGINDEX == _DOLOG.length - 1){
alert("没有操作记录可以恢复.");
return;
}
_DOLOGINDEX ++;
doLog("redo");
}
function doLog(act){
var log = getLog();
/*TODO 是否要进行提醒
if(!confirm("确定要*"+(act == "undo"?"撤消":"恢复")+"*最后一次操作[" + log.act + "]吗?")){
if(act == "redo") _DOLOGINDEX --;
return false;
}*/
switch(log.act){
case "addproc":
act == "undo"?_FLOW.deleteProcByID(log.val.ID):_FLOW.addProc(log.val);
DrawAll();
break;
case "addstep":
act == "undo"?_FLOW.deleteStepByID(log.val.ID):_FLOW.addStep(log.val);
DrawAll();
break;
case "delproc":
act == "undo"?_FLOW.addProc(log.val):_FLOW.deleteProcByID(log.val.ID);
DrawAll();
break;
case "delstep":
act == "undo"?_FLOW.addStep(log.val):_FLOW.deleteStepByID(log.val.ID);
DrawAll();
break;
case "editproc":
if(act == "undo"){
var Proc = _FLOW.getProcByID(log.val._new.ID);
Proc.clone(log.val._old);
if(log.val._new.ID != log.val._old.ID) changeProcID(log.val._new.ID, log.val._old.ID);
}
else{
var Proc = _FLOW.getProcByID(log.val._old.ID);
Proc.clone(log.val._new);
if(log.val._new.ID != log.val._old.ID) changeProcID(log.val._old.ID, log.val._new.ID);
}
DrawAll();
objFocusedOn(act == "undo"?log.val._old.ID:log.val._new.ID);
break;
case "editstep":
if(act == "undo"){
var Step = _FLOW.getStepByID(log.val._new.ID);
Step.clone(log.val._old);
}
else{
var Step = _FLOW.getStepByID(log.val._old.ID);
Step.clone(log.val._new);
}
DrawVML();
objFocusedOn(act == "undo"?log.val._old.ID:log.val._new.ID);
break;
case "moveproc":
var obj = _FLOW.getProcByID(log.val.objID);
if(act == "undo"){
obj.setPropValue("X", log.val._old.X);
obj.setPropValue("Y", log.val._old.Y);
obj.setPropValue("Width", log.val._old.Width);
obj.setPropValue("Height", log.val._old.Height);
}
else{
obj.setPropValue("X", log.val._new.X);
obj.setPropValue("Y", log.val._new.Y);
obj.setPropValue("Width", log.val._new.Width);
obj.setPropValue("Height", log.val._new.Height);
}
_logMoveType = log.val.moveType;
changeProcPos(obj.InnerObject);
break;
case "editprop":
var CurrentProp = (act == "undo"?log.val._old:log.val._new);
log.val.obj[log.val.prop] = CurrentProp;
switch(log.val.prop){
case "ID":
if(log.val.obj.ObjType == "Proc") act == "undo"?changeProcID(log.val._new, log.val._old):changeProcID(log.val._old, log.val._new);
DrawVML();
objFocusedOn(log.val.obj.ID);
break;
case "Text":
DrawAll();
objFocusedOn(log.val.obj.ID);
break;
case "ShapeType":
DrawVML();
objFocusedOn(log.val.obj.ID);
break;
case "TextWeight":
document.all(log.val.obj.ID + "Text").style.fontSize = CurrentProp;
break;
case "zIndex":
log.val.obj.InnerObject.style.zIndex = CurrentProp;
break;
case "StrokeWeight":
log.val.obj.InnerObject.strokeweight = CurrentProp;
break;
case "X":
log.val.obj.InnerObject.style.left = CurrentProp;
changeProcPos(log.val.obj.InnerObject);
break;
case "Y":
log.val.obj.InnerObject.style.top = CurrentProp;
changeProcPos(log.val.obj.InnerObject);
break;
case "Width":
log.val.obj.InnerObject.style.width = CurrentProp;
changeProcPos(log.val.obj.InnerObject);
break;
case "Height":
log.val.obj.InnerObject.style.height = CurrentProp;
changeProcPos(log.val.obj.InnerObject);
break;
case "Cond":
document.all(log.val.obj.ID + "Text").innerHTML = CurrentProp;
break;
case "StartArrow":
document.all(log.val.obj.ID + "Arrow").startarrow = CurrentProp;
break;
case "EndArrow":
document.all(log.val.obj.ID + "Arrow").endarrow = CurrentProp;
break;
case "FromProc":
case "ToProc":
if(log.val.obj.ShapeType == "Line"){
log.val.obj.getPath();
log.val.obj.InnerObject.from = log.val.obj.FromPoint;
log.val.obj.InnerObject.to = log.val.obj.ToPoint;
}
else if(log.val.ShapeType == "PolyLine"){
log.val.obj.InnerObject.points.value = log.val.obj.reGetPath();
}
//DrawDataView();
break;
}
break;
}
stuffProp();
return true;
}
function doProcMouseDown(obj, x, y){
//判断是否是画线
if(_TOOLTYPE == "line" || _TOOLTYPE == "polyline"){
_CURRENTX = x;
_CURRENTY = y;
_MOVEOBJ = document.all("_lineui");
//_MOVEOBJ.from = _CURRENTX + "," + _CURRENTY;
_MOVEOBJ.from = _CURRENTX + "," + (_CURRENTY - 0);//原代码
_MOVEOBJ.to = _MOVEOBJ.from;
_MOVEOBJ.style.display = "block";
_MOVETYPE = _TOOLTYPE;
}
else{
var rightSide = (parseInt(obj.style.left) + parseInt(obj.style.width) -x <= 2);
var bottomSide = (parseInt(obj.style.top) + parseInt(obj.style.height) - y <= 2);
if(rightSide && bottomSide)
_MOVETYPE = "proc_nw";
else if(rightSide)
_MOVETYPE = "proc_e";
else if(bottomSide)
_MOVETYPE = "proc_n";
else{
_MOVETYPE = "proc_m";
_CURRENTX = x - obj.offsetLeft;
_CURRENTY = y - obj.offsetTop;
}
_MOVEOBJ = obj;
}
window.event.cancelBubble = true;
}
// 这里的x,y是换算过的值(/ZOOM)
function fireProcMouseDown(x, y){
var curProc = null;
for(var i = 0; i< _FLOW.Procs.length; i ++){
Proc = _FLOW.Procs[i];
if (x >= parseInt(Proc.X) && x <= (parseInt(Proc.X) + parseInt(Proc.Width))
&& y >= parseInt(Proc.Y) && y <= (parseInt(Proc.Y) + parseInt(Proc.Height))) {
if (curProc == null || Proc.zIndex >= curProc.zIndex) // 重叠的情况下取上面那个
curProc = Proc;
}
}
if (curProc != null) {
obj = document.getElementById(curProc.ID);
objFocusedOn(obj.id);
doProcMouseDown(obj, x, y);
return true;
}
return false;
}
// 这里的x,y是换算过的值(/ZOOM)
function doProcMouseMove(obj, x, y){
if(_TOOLTYPE == "line" || _TOOLTYPE == "polyline")
document.all.Canvas.style.cursor = "crosshair";
else{
var rightSide = (parseInt(obj.style.left) + parseInt(obj.style.width) -x <= 2);
var bottomSide = (parseInt(obj.style.top) + parseInt(obj.style.height) - y <= 2);
if(rightSide && bottomSide)
document.all.Canvas.style.cursor = "NW-resize";
else if(rightSide)
document.all.Canvas.style.cursor = "E-resize";
else if(bottomSide)
document.all.Canvas.style.cursor = "N-resize";
else
document.all.Canvas.style.cursor = "hand";
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -