学习mxgraph一段时间了,列一些常用代码段,于己于人都方便
设置节点在线上(即:线和元素重叠式,线被节点遮住)
graph.selectEdges();//选中所有的线 graph.orderCells(true);//使线在所有元素的底下 graph.clearSelection();//取消选中的元素
设置画布背景图片
var img = new mxImage(imageSrc,1280 ,1024); // w:1280 h:1024 graph.setBackgroundImage(img); graph.view.validate();
自定义ToolTip
graph.setTooltips(true); graph.getTooltipForCell = function(cell){ return "下级设备1:"+cell.downDevice1 + "\n下级设备2: "+cell.downDevice2 + "\n下级设备3: "+cell.downDevice3 + "\n下级设备数: "+cell.downDeviceNum; }
事件
//移动元素触发事件 graph.addListener(mxEvent.CELLS_MOVED,function(sender, evt){ //alert("CELLS_MOVED"); var cell = evt.getProperty('cell'); if(cell==null&&sender.graphHandler.cells!=null){ cell = sender.graphHandler.cells[0];//保证cell有值,否则移动时cell } if(cell != null && cell.vertex == 1) {//代表鼠标点击的是节点 //alert("移动节点"+cell.id); cell.autoSaveNode = '1';//给cell节点增加一个自定义属性,标识处于可保存状态 } });
更新指定节点图片,可配合ajax无刷新实现告警时自动闪烁
graph.getModel().beginUpdate(); try{ for (var i = 0; i < nodelist.length; i++) { //alert(nodelist[i].deviceid+1); var cellId = nodelist[i].deviceid+1; var picUrl = ""; //alert(cellId); if(nodelist[i].sr_alarmsum>0) picUrl = "red.gif"; else if (nodelist[i].sw_alarmsum >0) picUrl = "orange.gif"; var cell = graph.getModel().getCell(cellId); // Updates the cell color and adds some tooltip information if (cell != null) { graph.setCellStyles(mxConstants.STYLE_IMAGE, "image;image="+picUrl, [cell]); } } } finally { graph.getModel().endUpdate(); //alert("ol1"); }
设置画布只能预览,禁止拖动或点击
graph.setEnabled(false);//graph只能预览 graph.getCursorForCell = function(cell){//预览时鼠标悬浮到节点时,改变鼠标样式 if (cell != null && cell.value != null && cell.vertex ==1 ) { return 'pointer'; } };