gojs的应用

<!DOCTYPE html>
<html>
	<head>
		<title>整体能源结构图</title>
		<%@ page contentType="text/html;charset=UTF-8"%>
		<meta name="renderer" content="webkit">
		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
		<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
		<meta name="apple-mobile-web-app-status-bar-style" content="black">
		<meta name="apple-mobile-web-app-capable" content="yes">
		<meta name="format-detection" content="telephone=no">
		<%@ include file="/WEB-INF/jsp/include/public.jsp"%>
		<script src="${path}/js/extend/go.js" type="text/javascript"></script>
	</head>
	<style type="text/css">
		*{margin:0;padding:0}
		html{height:100%;}
		body{background: #fff;}
		#close{color:#fff;position: fixed;right: 100px;top: 10px;z-index: 19050707;cursor:pointer;background:#6A5ACD;width:80px;height:20px;text-align:center;border-radius:20px;line-height:20px;font-size:10px;}
		#open{color:#fff;position: fixed;right: 10px;top: 10px;z-index: 19050707;cursor:pointer;background:#6A5ACD;width:80px;height:20px;text-align:center;border-radius:20px;line-height:20px;font-size:10px;}
		#box{position: fixed;right:60px;top:8px;z-index: 19050707;width:250px;height:20px;}
		#search_icon{position:fixed;right:95px;top:10px;z-index: 19050708;width:13px;height:22px;background:#fff;display:block;}
		#close_icon{width:13px;height:22px;background:#fff;position:fixed;right:199px;top:10px;z-index: 19050708;cursor:pointer;display:none;}
		#cirel{width:20px;height:20px;background:#d8d8d8;border-radius:20px;margin-top:1px;text-align:center;line-height:20px}
		#cirel span{color:#666;font-size:16px;display:inline-block;}
		:focus{outline:none;}
	</style>
	<script type="text/javascript">
		var time_=localStorage.getItem("time");
		var iframeId=window.frameElement && window.frameElement.id || '';//获取当前iframe的id
		$("#"+iframeId,parent.document).parent().css("padding",0);
		$(function(){
			if(window.goSamples) goSamples();
			var menu_id={"menu_id":localStorage.getItem("thisWebId")};
			var myDiagramDiv=document.getElementById("myDiagramDiv");
			var body=document.getElementById("body");
			var $gojs = go.GraphObject.make;
			myDiagram =$gojs(go.Diagram, "myDiagramDiv",{
				initialContentAlignment: go.Spot.Center,//加载位置
				"initialPosition":new go.Point(-150,-10),
				allowDelete:false,//完全禁用删除
				//initialAutoScale:go.Diagram.Uniform,//全屏显示树结构
				scrollMode:go.Diagram.InfiniteScroll,//启动无限滚动,不受边界控制
				//"animationManager.isEnabled":false,
				"toolManager.mouseWheelBehavior":go.ToolManager.WheelZoom,//启动滚轮缩放
				"allowMove":false,//禁止拖动
				/*"allowSelect":false,//禁止选择 */
				"hasHorizontalScrollbar":false,//去除水平滚动条
				"hasVerticalScrollbar":false,//去除竖直滚动条
				"canStart":false,
				/* "TreeLayout.lerangement":go.TreeLayout.ArrangementVertical, */
				grid: $gojs(go.Panel, "Grid", //网格
					$gojs(go.Shape, "LineH", {
						stroke: "lightgray",
						strokeWidth: 0.5
					}),
					$gojs(go.Shape, "LineH", {
						stroke: "gray",
						strokeWidth: 0.5,
						interval: 10
					}),
					$gojs(go.Shape, "LineV", {
						stroke: "lightgray",
						strokeWidth: 0.5
					}),
					$gojs(go.Shape, "LineV", {
						stroke: "gray",
						strokeWidth: 0.5,
						interval: 10
					})
				),
				layout:$gojs(go.TreeLayout,{
					angle:90,
					arrangement:go.TreeLayout.ArrangementVertical
				})
			});
			myDiagram.nodeTemplate =$gojs(go.Node,"Vertical",{
				isTreeExpanded: false,//折叠全部子节点
				selectionObjectName: "BODY",/*"selectionAdorned":false,禁止出现矩形框*/selectionAdorned:false,
				/*layoutConditions: go.Part.LayoutStandard & ~go.Part.LayoutNodeSized,展开不恢复到默认布局*/},
		       		$gojs(go.Panel, "Auto",{name: "BODY",},
		         		$gojs(go.Shape, "Rectangle",{fill:"white",stroke:"#6A5ACD",strokeWidth:4,name:"highlight"}
		         	),
		         	$gojs(go.Panel, "Vertical",
		           		$gojs(go.TextBlock,{stretch: go.GraphObject.Horizontal,
		             		verticalAlignment : go.Spot.Center,//垂直对齐
		             		font: "10pt Verdana, sans-serif",
		             		textAlign:"center",//居中对齐
		             		background:"#6A5ACD",
		             		stroke:"#fff",
		             		name:"maxwidth",
		             		/* width:250,
		             		wrap:"none",//省略号
		             		maxLines:1,//省略号
		             		overflow: go.TextBlock.OverflowEllipsis,//省略号 */
		             	},
		             	new go.Binding("text", "name")
		           	),
		           	$gojs(go.Panel, "Vertical",{
		           		stretch: go.GraphObject.Horizontal ,background:"#FFF"/* ,click:function(a,c){//绑定PanelExpanderButton点击事件
		           			var diagram = c.diagram;
						    if (diagram === null) return;
						    if (diagram.isReadOnly) return;
						    var elt = c.findTemplateBinder();
						    if (elt === null) elt = c.part;
						    if (elt !== null) {
						      var pan = elt.findObject("COLLAPSIBLE");
						      if (pan !== null) {
						        diagram.startTransaction('Collapse/Expand Panel');
						        pan.visible = !pan.visible;
						        diagram.commitTransaction('Collapse/Expand Panel');
						      }
						    }
		           		}, */},
		             		$gojs(go.Panel, "Table",{
		             			stretch: go.GraphObject.Fill,background:"white"},
			               			$gojs(go.TextBlock,{
			                 			font: "bold 10pt Verdana, sans-serif",
			                 			stroke:"#6A5ACD",
			                 			name:"width",
			                 			margin: new go.Margin(3, 0, 0, 5),
			                 			alignment: go.Spot.Center,
			                 			verticalAlignment : go.Spot.Center//垂直对齐
			                 		},new go.Binding("text", "readNum")),
		               				/* $gojs("PanelExpanderButton","COLLAPSIBLE",{
		               					column: 1,
		               					alignment: go.Spot.Right,
		               					click:function(a,c){},
		               					"ButtonIcon.fill":"#6A5ACD",
		               					"ButtonIcon.stroke":"#6A5ACD",
		               				}) */
		             		),
		             	$gojs(go.Panel, "Table",new go.Binding("itemArray", "actions"),{
		             		defaultAlignment: go.Spot.Left,
		             		name:"COLLAPSIBLE",
		             		background: "white",
		             		margin:new go.Margin(2, 0, 0, 0),
		             		stretch: go.GraphObject.Horizontal,
		             		//visible:false,//默认折叠
          					itemTemplate:
          						$gojs(go.Panel, "TableRow",
					              $gojs(go.TextBlock, new go.Binding("text", "value"),
					                { column: 1,alignment: go.Spot.Center,stroke:"#6A5ACD",font: "bold 10pt Verdana, sans-serif"}),
					            )
		               	}
		             )
		           )
		         ) 
		       ),
		       $gojs(go.Panel, // this is underneath the "BODY"
					{
						height: 15
					}, // always this height, even if the TreeExpanderButton is not visible
					$gojs("TreeExpanderButton")
				),
		     );
		   myDiagram.linkTemplate =
		     $gojs(go.Link, go.Link.Orthogonal,
		       { deletable: false, corner: 10 },
		       $gojs(go.Shape,
		         { strokeWidth: 2,stroke:"#6A5ACD"}
		       )
		     );
		     /* var max_width=0;
		     myDiagram.addDiagramListener('AnimationFinished', function(){//动画完成后执行
		     		var width_judge=true;
     				myDiagram.nodes.each (function(n) {
			    		var p = n.findObject("maxwidth");
			    		if(p.Oi.maxLineWidth>max_width){
			    			max_width=p.Oi.maxLineWidth
			    		}
					});
					myDiagram.nodes.each (function(n) {
			    		var p = n.findObject("width");
			    		if(p.Oi.maxLineWidth>max_width){
			    			max_width=p.Oi.maxLineWidth;
			    			width_judge=false;
			    		}
					});
					if(!width_judge){
						max_width=max_width+20;
					}
     				if(max_width != 0){
     					myDiagram.nodes.each (function(n) {
				    		var p = n.findObject("maxwidth");
				    		p.width=max_width;
						});
     				}
		     }); */
		   myDiagram.initialContentAlignment = go.Spot.Center;
		   	$.ajax({
		     	url:path + "/gplotData_meter",
		     	dataType:"json",
		     	data:menu_id,
		     	success:function(data){
		     		myDiagram.addDiagramListener("InitialLayoutCompleted",function(e){
				         e.diagram.findTreeRoots().each(function(r){ r.expandTree(3);});
				       });//只显示到第二级节点,其余隐藏
		     		 myDiagram.model =$gojs(go.GraphLinksModel,{ nodeDataArray: data.nodeDataArray,linkDataArray: data.linkDataArray });
		     		 $("#search").combobox({//搜索框赋值
					    data:data.nodeDataArray,
					    valueField:'name',
					    textField:'name',
						prompt:"搜索计量点",
					    width:220,
					    hasDownArrow:false,
					    onSelect:function(data){
					    	var model = myDiagram.model;
							var _data=model.nodeDataArray;
							for(var i=0;i<_data.length;i++){
								var node_=myDiagram.findNodeForData(_data[i]);
								var node_text= node_.findObject("highlight");
								node_text.stroke ="#6A5ACD";
								if(_data[i].name == data.name){
									var _node=myDiagram.findNodeForData(_data[i]);
									var text = _node.findObject("highlight");
			    					text.stroke = "#fe854f";
									myDiagram.commandHandler.scrollToPart(_node);
								}
							}
					    },
					    onChange:function(newValue, oldValue){
					    	if(newValue != null){//搜索框不等于空的时候
					    		$("#close_icon").css("display","block");
					    		$("#search_icon").css("display","none");
					    	}else{
					    		$("#close_icon").css("display","none");
					    		$("#search_icon").css("display","block");
					    	}
					    }
					 });
					 $("#close_icon").click(function(){
			    		$("#search").combobox("clear");
			    		$("#close_icon").css("display","none");
					    $("#search_icon").css("display","block");
			    	 });
					 $("#_easyui_textbox_input2").blur(function(){
					 	setTimeout(function(){
					 		$("#search").combobox("hidePanel");
					 	},200)
					 });
					  $("#_easyui_textbox_input2").focus(function(){
					  	setTimeout(function(){
					 		$("#search").combobox("showPanel");
					 	},200)
					 });
		     	}
		    });
		   /* var open=document.getElementById('open');
		   var close=document.getElementById('close');
		   	open.onclick=function(){//全部展开
		   		myDiagram.startTransaction();
				myDiagram.nodes.each (function(n) {
		    		var p = n.findObject("COLLAPSIBLE");
		    		if (p !== null) p.visible = true;
				});
				myDiagram.commitTransaction("collapsed all panels");
		 	}
		   	close.onclick=function(){//全部折叠
		   		myDiagram.startTransaction();
				myDiagram.nodes.each (function(n) {
		    		var p = n.findObject("COLLAPSIBLE");
		    		if (p !== null) p.visible = false;
				});
				myDiagram.commitTransaction("collapsed all panels");
		 	} */
		   setInterval(function(){
				$.ajax({
			     	url:path + "/gplotData_meter",
			     	dataType:"json",
			     	data:menu_id,
			     	success:function(data){
			     		var model = myDiagram.model;
						var _data=model.nodeDataArray;
						for(var i=0;i<_data.length;i++){
							model.setDataProperty(_data[i],"readNum",data.nodeDataArray[i].readNum);
							model.setDataProperty(_data[i],"actions",data.nodeDataArray[i].actions);
						}
						model.commitTransaction("flash");
			     	}
			    });
		   },30*1000);
		  /* setInterval(function(){
		   		$("#html").css("height","100%");
		   		$("#body").css("height","100%");
		   		$("#sample").css("height","100%");
		   },1); */
		});
		window.document.onkeydown=function(ev){
			var iEvent=ev||event;
			if(iEvent.keyCode == 46){
				return false;
			}
		}
  	</script>
	<body id="body" onselectstart="javascript:return false;" style="overflow:-Scroll;overflow-x:hidden;overflow-y:hidden;height:100%;">
		<div id="sample" onselectstart="javascript:return false;" style="overflow:-Scroll;overflow-x:hidden;overflow-y:hidden;width:100%; height:100%;">
			<div id="myDiagramDiv" style="width:100%; height:100%;"></div>
		</div>
		<span id="search_icon" style="display:none;"><img src="${path}/images/search_icon.png"/></span>
		<div id="close_icon" style="display:none;">
			<div id="cirel">
				<span>x</span>
			</div>
		</div>
		<!-- <div id="open">全部展开</div>
		<div id="close">全部折叠</div> -->
		<div id="box" style="display:none;">
			<div id="search" class="easyui-combobox"></div>
		</div>
	</body>
</html>

效果图:

数据格式:

二、空调系统能源监控 svg-pan-zoom的应用

项目位置:ktxtnyjk

https://www.jianshu.com/p/24072108c7d4

 

猜你喜欢

转载自blog.csdn.net/qq_36784628/article/details/86666572