var canmove=false;
var scaleFactor=10.26;
var tempOffsetX=0;
var tempOffsetY=0;
var mapOffsetX=0;
var mapOffsetY=0;
var Starline;
var activeConcept;
var thisobj=null //为了完成各种基本编辑功能,如“置前”“复制”“删除”等
var StartPointX;
var StartPointY;
var MaxID=1;
function MoveStart()
{
if(event.srcElement.className!="WorkFlowItem" && event.srcElement.className!="EndLine" &&event.srcElement.className!="WorkFlowStartLine") return;
if (event.srcElement.className=="WorkFlowItem")
{
event.srcElement.parentElement.style.position="absolute";
activeConcept=event.srcElement.parentElement;
//window.alert(GetPreWorkFlowItems(event.srcElement.id));
//CreateXmlData();
canmove=true;
}
tempOffsetX = event.offsetX;
tempOffsetY = event.offsetY;
mapOffsetX = GetMapOffsetY();
mapOffsetY = GetMapOffsetX();
//为节点间画线而设
if (event.srcElement.className=="EndLine" || event.srcElement.className=="WorkFlowStartLine" )
{
line1.style.display='';
//保存起始线段
Starline=event.srcElement;
//保存开始点信息
StartPointX=((event.x - tempOffsetX -mapOffsetX + document.body.scrollLeft ) * scaleFactor)
StartPointY=((event.y - tempOffsetY - mapOffsetY + document.body.scrollTop ) * scaleFactor+80);
line1.points.value=StartPointX+","+StartPointY+","+((event.x - tempOffsetX -mapOffsetX + document.body.scrollLeft ) * scaleFactor)+","+((event.y - tempOffsetY - mapOffsetY + document.body.scrollTop ) * scaleFactor+80);
}
Chart.attachEvent('onmousemove',Moving);
}
function Moving()
{
if (event.button !=1) return;
if(canmove)
{
document.selection.empty();
activeConcept.style.pixelLeft = (event.x - tempOffsetX -mapOffsetX + document.body.scrollLeft ) * scaleFactor;
activeConcept.style.pixelTop = (event.y - tempOffsetY - mapOffsetY + document.body.scrollTop ) * scaleFactor;
}
else
{
window.status=event.srcElement.className;
if(event.srcElement.className=="StartLine")
{
event.srcElement.style.cursor="hand";
event.srcElement.title='放置在此处将建立流程';
}
//记录点的集合
var EndX=((event.x - tempOffsetX -mapOffsetX + document.body.scrollLeft ) * scaleFactor);
var EndY=((event.y - tempOffsetY - mapOffsetY + document.body.scrollTop ) * scaleFactor+80);
//前趋线段
//增加点集合使曲线闭合
if(EndX>StartPointX)
{
line1.points.value=StartPointX+","+StartPointY+","+(StartPointX+400)+","+StartPointY+","+(StartPointX+400)+","+EndY+","+EndX+","+EndY+","+(StartPointX+400)+","+EndY+","+(StartPointX+400)+","+StartPointY+","+StartPointX+","+StartPointY;
}
//后趋线段
else
{
line1.points.value=StartPointX+","+StartPointY+","+(StartPointX+400)+","+StartPointY+","+(StartPointX+400)+","+(EndY+600)+","+EndX+","+(EndY+600)+","+EndX+","+EndY+","+
EndX+","+(EndY+600)+","+(StartPointX+400)+","+(EndY+600)+","+(StartPointX+400)+","+StartPointY+","+StartPointX+","+StartPointY;
}
}
}
//显示并调整所有的线段
function ShowAllLine()
{
var allLine = document.body.all.item('ConnectLine');
var i;
if (allLine!=null)
{
var count=allLine.length;
if (count)
{
for (i=count-1; i>=0; i--)
{
UpdateOneLinePos(allLine[i]);
allLine[i].className = "NormalLine";
}
}
else
{
UpdateOneLinePos(allLine);
allLine.className="NormalLine";
}
}
}
function UpdateOneLinePos(line)
{
var beginShape;
var endShape;
beginShape = document.all.item(line.getAttribute("BeginShape")).parentElement;
endShape = document.all.item(line.getAttribute("EndShape")).parentElement;
SetJoinLine(beginShape,endShape,line);
}
function SetJoinLine(fromShape,toShape,Line)
{
var fromShapeCenterX = GetCenterX(fromShape);
var fromShapeCenterY = GetCenterY(fromShape);
var toShapeCenterX = GetCenterX(toShape);
var toShapeCenterY = GetCenterY(toShape);
//取得开始点与结束点
//此处附值时,必须用(括起来。
var StartX=(fromShape.style.pixelLeft + fromShape.style.pixelWidth+150);
var StartY=fromShapeCenterY;
var EndXLine=(toShape.style.pixelLeft-130);
var EndYLine=toShapeCenterY;
//设定新的线段点集合
if(EndXLine>StartX)
{
Line.points.value=EndXLine+","+EndYLine+","+(StartX+200)+","+EndYLine+","+(StartX+200)+","+StartY+","+StartX+","+StartY
+","+(StartX+200)+","+StartY+","+(StartX+200)+","+EndYLine+","+EndXLine+","+EndYLine;
}
else
{
Line.points.value=EndXLine+","+EndYLine+","+EndXLine+","+(EndYLine+500)+","+(StartX+200)+","+(EndYLine+500)+","+(StartX+200)+","+StartY+","+StartX+","+StartY+","+
(StartX+200)+","+StartY+","+
(StartX+200)+","+(EndYLine+500)+","+
EndXLine+","+(EndYLine+500)+","+
EndXLine+","+EndYLine;
}
}
function GetCenterX(shape)
{
return shape.style.pixelLeft + shape.style.pixelWidth / 2;
}
function GetCenterY(shape)
{
return shape.style.pixelTop + shape.style.pixelHeight / 2;
}
function EndMove()
{
canmove=false;
document.selection.empty();
}
function GetMapOffsetY()
{
var tempMap = Chart;
var tempY = 0;
while (tempMap.tagName!="BODY")
{
tempY = tempY + tempMap.offsetTop;
tempMap = tempMap.offsetParent;
}
return tempY + document.body.topMargin ;
}
function GetMapOffsetX()
{
var tempMap = Chart;
var tempX=0;
while (tempMap.tagName!="BODY")
{
tempX = tempX + tempMap.offsetLeft;
tempMap = tempMap.offsetParent;
}
return tempX + document.body.leftMargin ;
}
function MouseUP()
{
line1.style.display='none';
var tempEnd=event.srcElement;
WorkFlowItemMenu.style.display='none';
if((tempEnd.className=="WorkFlowItem" ||tempEnd.className=="NormalLine") && event.button==2 && tempEnd.id!='0'&& tempEnd.id!='-1')
{
document.all.item('SelDep').style.display='';
if(tempEnd.className=="NormalLine")
{
document.all.item('SelDep').style.display='none';
}
WorkFlowItemMenu.style.left=event.x;
WorkFlowItemMenu.style.top=event.y;
WorkFlowItemMenu.style.display='';
thisobj=event.srcElement;
}
else
{
if(tempEnd.className=="StartLine")
{
//画节点之间的关系
//加线之前进行判断
//判断条件为:两个对象是否已经建立关系了。两个对象只建立一次关系。不能与开始节点建立流入关系
if (!ContainLine(Starline,tempEnd)&& tempEnd.Refid!='0'&& Starline.Refid!='-1')
{
DrawLine();
//引发服务器端事件__doPostBack('Add','');
}
else
{
window.alert('无法建立关系,可能是关系已经存在或在同一节点上建立关系');
}
}
}
ShowAllLine();
}
//判断节点间是否已经有关系了
function ContainLine(fromline,Toline)
{
var allLine = document.body.all.item('ConnectLine');
var i;
if (allLine!=null)
{
var count=allLine.length;
if (count)
{
for (i=count-1; i>=0; i--)
{
if((allLine[i].BeginShape==fromline.Refid && allLine[i].EndShape==Toline.Refid)||fromline.Refid==Toline.Refid)
return true;
}
}
else
{
if((allLine.BeginShape==fromline.Refid && allLine.EndShape==Toline.Refid)||fromline.Refid==Toline.Refid)
return true;
}
return false;
}
}
document.onclick = EndMove;
Chart.onmousedown = MoveStart;
Chart.onmouseup=MouseUP;
工作流vml asp.net 开发的工作流模型
4星 · 超过85%的资源 需积分: 16 160 浏览量
2008-09-11
16:46:50
上传
评论 1
收藏 77KB RAR 举报
harry_liuliuliu
- 粉丝: 0
- 资源: 4
最新资源
- 基于51单片机的自动浇花设计论文
- 客服机器人需要的数据集,包括order、ware、user,测试集和开发集
- 用0到9生成十位数的所有排列组合(java代码).docx
- 模仿魔慢相机的人脸监测选择ios组件
- STM32F103C8T6模拟IIC控制4针0.96寸OLED显示屏已测
- Chromeextent_paly.zip
- 【2023年全国职业技能大赛“信息安全与评估”赛项】任务4-Linux内存取证WP+靶场环境
- 基于51单片机数字电压表的设计(PCB+原理图+仿真+论文+代码)
- open62541在window10 VS2019编译完成的源码
- 新闻文章自动新闻采集系统-webapps.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论5