⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 topflowevent.js

📁 CommitFlow,很不错的在线流程设计源码,供大家学习参考
💻 JS
📖 第 1 页 / 共 4 页
字号:
	  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(/&lt;/g,'<');
	  strCond = strCond.replace(/&gt;/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 + -