/*@WebApiFunc@*/ var varList = []; var varListObj = {}; var tagInfoDic={}; // 用于保存所有的lib var mouseX=0,mouseY=0; var zoomNodeList = zoomNodeList || []; zoomNodeList.length = 0; var contextMenuOnViewList = contextMenuOnViewList || []; var globalVarNameList = globalVarNameList || []; var ratio = {ratioX: 1, ratioY: 1}; // 保存加上图形旋转之后的缩放比例 var _ratio = {ratioX: 1, ratioY: 1}; var autoAdaptive = '@autoAdaptive@'; var browserSize = { width: window.innerWidth || $window.innerWidth(), height: window.innerHeight || $window.innerHeight() } var globalVarObj = {}; var globarParamsObj = {}; var globalAliasObj = {}; var pageSizeRatioValue; var PAGESCALABLE; // 页面是否可通过滚轮缩放 var PageAdaptMode = { value: 'adaptBrowser', minWidth: 1366, minHeight: 768 }; function calcRatio (backSize, browserSize, ratio) { var value = GD.getParams('pageSizeRatioValue') || {}, rt; function cr(adaptMode) { var rx=1, ry=1, w, h; switch (adaptMode) { case 'adaptWidth': rx = ry = browserSize.width / backSize.width; break; case 'adaptHeight': rx = ry = browserSize.width / backSize.width; break; case 'adaptBrowser': rx = browserSize.width / backSize.width; ry = browserSize.height / backSize.height; break; case 'originSize': rx = ry = 1; break; case 'autoResize': w = browserSize.width < PageAdaptMode.minWidth ? PageAdaptMode.minWidth : browserSize.width; h = browserSize.height < PageAdaptMode.minHeight ? PageAdaptMode.minHeight : browserSize.height; rx = w / backSize.width; ry = h / backSize.height; rx > ry ? rx = ry : ry = rx; break; } return {rx: rx,ry: ry} } value = value.value || PageAdaptMode.value; pageSizeRatioValue = value; if ($.isNumeric(value)) { rt = cr(PageAdaptMode.value); ratio.ratioX = value*rt.rx; ratio.ratioY = value*rt.ry; } else { rt = cr(value); ratio.ratioX = rt.rx; ratio.ratioY = rt.ry; } ratio.originRatioX = rt.rx; ratio.originRatioY = rt.ry; window.backSize = backSize; } // 页面的依赖 (function (W, GD) { W.GD = GD = GD || {}; GD.relationship = { // hash: ['a.js', 'b.js', 'c.js'], } })(window, window.GD); (function () { for (var i = 0, len = varList.length; i < len; i++) { var varStr = varList[i]; varStr = varStr && varStr.toLowerCase && varStr.toLowerCase(); varStr && (varListObj[varStr] = 0); } })(); jQuery.support.cors = true; ht.Default.appendTimeStamp = function(url) { return url }; function init() { initPage(); // dataModel._libModel = _libModel; try { VarValue = JSON.parse(sessionStorage.getItem(location.pathname)) || VarValue; } catch (err) {} for(var i=0;i< 0 ;i++){VarValue[i] =0;} graphView.handleScroll = function () {}; graphView.setPannable(false); graphView.setMovableFunc(function(data){return false});PAGESCALABLE = false view.style.background = 'rgba(255,255,255,1)'; /*@PageBeforeInit@*/ ;(function () { var GD = window.GD; if (!GD || typeof GD.useParams !== 'function') return ; GD.useParams(); })(); var backSize = {width: 1280, height: 1024};calcRatio(backSize, browserSize, ratio);_ratio = GD.getRatioWithRotation(0*Math.PI/180, ratio); var PageBackgroundtype = 'rect'; var PageBackground = new ht.Node(), PageBackgroundBorderWidth = 0*2; if (PageBackgroundtype === 'arc') { PageBackgroundBorderWidth *= 0; } PageBackground.setImage(GD.getRectJSON(1280*_ratio.ratioX, 1024*_ratio.ratioY, PageBackgroundtype, '@arcFrom@', '@arcTo@', '@arcClose@')); PageBackground.setPosition(640*ratio.ratioX, 512*ratio.ratioY); PageBackground.setSize(1280*_ratio.ratioX, 1024*_ratio.ratioY); PageBackground.s({ 'pixelPerfect':true /*@AddPara@*/ }); PageBackground.a('node.width', 1280*_ratio.ratioX); PageBackground.a('node.height', 1024*_ratio.ratioY); PageBackground.a('node.type', PageBackgroundtype); PageBackground.a('node.rect', [0, 0, 1280*_ratio.ratioX, 1024*_ratio.ratioY]); PageBackground.a('node.background', 'rgba(255,255,255,1)'); PageBackground.a('node.gradientcolor', 'rgba(255,255,255,1)'); PageBackground.a('node.gradient', ''); PageBackground.a('node.borderwidth', PageBackgroundBorderWidth); PageBackground.a('node.color', 'rgba(0,0,0,1)'); PageBackground.a('node.fillrect', [0,0,0,0]); PageBackground.a('node.fillbackcolor', 'rgba(0,0,0,0)'); PageBackground.a('node.fillgradientcolor', 'rgba(0,0,0,0)'); PageBackground.a('node.fillgradient', ''); if (PageBackgroundtype !== 'rect') { PageBackground.a('node.arcFrom', parseFloat('@arcFrom@')); PageBackground.a('node.arcTo', parseFloat('@arcTo@')); PageBackground.a('node.arcClose', '@arcClose@' === 'true' ? true : false); } if (PageBackgroundtype === 'arc') { PageBackground.a('node.arcOval', true); } PageBackground.setRotation(0*Math.PI/180); PageBackground.borderWidth = PageBackgroundBorderWidth; PageBackground.borderFillwidth = PageBackgroundBorderWidth; dataModel.add(PageBackground); PageBackground._nodename = 'PageBackground' PageBackground._nodeType = 'rect'; zoomNodeList.push({ node: PageBackground, attr: 'node.borderwidth' }); (function (node, _img) { var setWidth = node.setWidth, setHeight = node.setHeight; node.setWidth = function (width) { if (width === this.getWidth()) return ; var height = this.getHeight(); this.a('node.width', width); this.a('node.rect', [0,0,width, height]); setWidth.apply(this, arguments); } node.setHeight = function (height) { if (height === this.getHeight()) return ; var width = this.getWidth(); this.a('node.height', height); this.a('node.rect', [0,0,width, height]); setHeight.apply(this, arguments); } })(PageBackground, PageBackground.getImage());PageBackground.s({'2d.selectable': false,'2d.movable': false}); /*@GraphList@*/ var datas = dataModel.getDatas(); /*@PageInit@*/ function DatarefreshTask(callback){ /*@DataVarText@*/ callback = callback || function () {}; if(varList.length <= 0){ return callback(); } var ajaxdata = {}; var ajaxtype = 'GET'; var str = "http://" + webServiceIP + ":" + webServicePort + "/api/Snapshot?tagName="; var para = ""; for(var i=0;i 2000) { para = encodeURIComponent(para); str = "http://" + webServiceIP + ":" + webServicePort + "/api/Snapshot/tags"; ajaxdata = {'': para}; ajaxtype = 'POST'; } $.ajax({ url: str , type: ajaxtype, dataType: 'json', data: ajaxdata, cache: false, success: function (data) { if (data === null) return; var snapshots = eval(data); //判断快照是否为空 if (snapshots != null) { for (var i = 0; i < snapshots.length; i++) { var index = varList.indexOf (snapshots[i].TagName); var tagName = snapshots[i].TagName.toLowerCase(); if(index >= 0 && index< varList.length){ if(parseFloat(snapshots[i].Value).toString()==snapshots[i].Value){ varListObj[tagName] = VarValue[index] = parseFloat(snapshots[i].Value); VarSnapshotTime[tagName]=snapshots[i].Time; }else{ varListObj[tagName] = VarValue[index] = snapshots[i].Value; VarSnapshotTime[tagName]=snapshots[i].Time; } } } } }, complete: function (XHR, TS) { XHR = null; callback(); } } ); } ;(function () { var i = 0; function getdata() { DatarefreshTask(function () { i++; Timer1sCmd(); Timer100msCmd(); Timer500msCmd(); if (i <= 4) { setTimeout(getdata, 50); } }); } setTimeout(getdata, 20); })(); intervalTimers.push(setInterval(DatarefreshTask, 500)); /*@DataRefresh@*/ function GetTagsProperty(){ /*@DataVarText@*/ if(varList.length <= 0){ return; } var ajaxtype = 'GET'; var ajaxdata = {}; var str = "http://" + webServiceIP + ":" + webServicePort + "/api/Point?tagName="; var para = ""; for(var i=0;i 2000) { para = encodeURIComponent(para); str = "http://" + webServiceIP + ":" + webServicePort + "/api/Point/property"; ajaxdata = {'': para}; ajaxtype = 'POST'; } $.ajax({ url: str , type: ajaxtype, dataType: 'json', data: ajaxdata, cache: false, success: function (data) { if (data === null) return; for(var i=0;i 5) location.reload(); /*@Timer1000ms@*/ // graphView.redraw(); } Timer1sCmd(); intervalTimers.push(setInterval(Timer1sCmd, 1000)); function Timer5sCmd() { Counter5s++; /*@Timer5000ms@*/ // graphView.redraw(); } // intervalTimers.push(setInterval(Timer5sCmd, 5000)); /*@EventTimer@*/ //graphView.setInteractors(null); if (!!view) { view.eventList = view.eventList || {}; } function blockDataFilter (data) { return !(data instanceof ht.Block || data.isLibBackground || data.__clickable === false); } var type ='mousedown'; function doMouseDown (e, origin) { if(!ht.Default.isLeftButton(e)){return;} mouseX=e.clientX; mouseY=e.clientY; origin = origin || graphView; window.GD && GD.hideTagInfo(); var data = origin.getDataAt(e, blockDataFilter); if (data && data.__parentLib) { _libModel.getDataByKey(data.__parentLib).onEvent(e, data, 'mousedown', origin); return; } /*@EvnentMouseDown@*/ } view.eventList[type] = doMouseDown; view['on'+type] = function(e){ doMouseDown(e); e.preventDefault(); }; type ='mouseup'; function doMouseUp (e, origin) { if(!ht.Default.isLeftButton(e)){return;} origin = origin || graphView; var data = origin.getDataAt(e, blockDataFilter); if (data && data.__parentLib) { _libModel.getDataByKey(data.__parentLib).onEvent(e, data, 'mouseup', origin); return; } /*@EvnentMouseUp@*/ } view.eventList[type] = doMouseUp; view['on'+type] = function(e){ doMouseUp(e); e.preventDefault(); }; type ='click'; function doClick (e, origin) { if(!ht.Default.isLeftButton(e)){return;} origin = origin || graphView; var data = origin.getDataAt(e, blockDataFilter); if (data && data.__parentLib) { _libModel.getDataByKey(data.__parentLib).onEvent(e, data, 'click', origin); return; } /*@EvnentClicked@*/ } view.eventList[type] = doClick; view['on'+type] = function(e){ doClick(e); e.preventDefault(); }; type ='mousemove'; var objMouseOn = null, _objMouseOn = null; function doMouseMove (e, origin, offset) { var positon, data, zoom, _data, libData; origin = origin || graphView; position=origin.getLogicalPoint(e); zoom = graphView.getZoom(); if (origin === graphView) { mouseX= position.x + origin.tx(); mouseY = position.y + origin.ty(); } else { offset = offset || {x: 0, y: 0}; mouseX = position.x / zoom + offset.x + origin.tx(); mouseY = position.y / zoom + offset.y + origin.ty(); } data = origin.getDataAt(e, function (data) {return !(data instanceof ht.Block)}); if(data === objMouseOn || data === _objMouseOn) return; // 如果是图元内的小图形,给libData赋值为图元本身,方便下面使用 if (data && data.__parentLib && _libModel.getDataByKey(data.__parentLib)) { _data = data; data = libData = _libModel.getDataByKey(_data.__parentLib); } /*@EvnentMouseLeave@*/ if (objMouseOn && objMouseOn._baseClass && objMouseOn._baseClass.match(/^ht.lib/)) { objMouseOn.onEvent(e, _data, 'mousemove', origin, offset, _objMouseOn); } objMouseOn = data; _objMouseOn = _data; /*@EvnentMouseOver@*/ if (data && data._baseClass && data._baseClass.match(/^ht.lib/)) { data.onEvent(e, _data, 'mousemove', origin, offset, _objMouseOn); } } view.eventList[type] = doMouseMove; view['on'+type] = function(e){ doMouseMove(e); e.preventDefault(); }; window.onkeydown = function doKeyDown(e) { var keyID = e.keyCode ? e.keyCode :e.which; //if(keyID === 87) { } /*@EvnentKeyDown@*/ // if (keyID === 27 && graphView) { // graphView.setZoom(1); // graphView.tx(0); // graphView.ty(0); // } return; } /*@Event@*/ /*@Declare@*/ var contextmenu = new ht.widget.ContextMenu(); contextmenu.contextMenuHoverBackground='rgb(104,216,255)'; contextmenu.contextMenuBackground='rgb(255,255,255)'; contextmenu.contextMenuHoverLabelColor='rgb(255,255,255)'; contextmenu.contextMenuLabelColor='rgb(48,48,48)'; contextmenu.beforeShow = function(e, gv) { gv = gv || graphView; if (e.originEvent && e.originEvent.currentTarget && e.originEvent.currentTarget.className === 'main') { gv = graphView; } this.setItems(null); window.GD && GD.hideTagInfo(); var data = gv.getDataAt(e) || graphView.getDataAt(e); if (data && data.__parentLib) { _libModel.getDataByKey(data.__parentLib).onEvent(e, data, 'contextmenu', gv, {}, {}, this); return; } //if(false); /*@SetNodeContextMenu@*/ /*@SetPageContextMenu@*/ }; contextmenu.afterShow = function (e) { var fontSize = 14, screenWidth = window.screen.width, screenHeight = window.screen.height, rx = screenWidth / 1920, ry = screenHeight / 1080, itemHeight = 30 * ry, fontFamily = '', width = 150 * rx; itemHeight = itemHeight > 30 ? itemHeight : 30; var $contextMenu = $(this.getView()); $contextMenu.find('.contextmenu-item-icon').css({ width: 14, height: 14, marginRight: 10 }); $contextMenu.find('li.menu-item').css({ fontSize: fontSize, fontWeight: 600, height: itemHeight, minHeight: 25, lineHeight: itemHeight + 'px', fontFamily: fontFamily, padding: 0 }); $contextMenu.find('ul').css({ width: width, minWidth: 100 }); contextmenu.setLabelMaxWidth((width > 120 ? width : 120) - 40); }; view.eventList && (view.eventList['contextMenu'] = contextmenu); contextmenu.addTo(view); contextMenuOnViewList.push(contextmenu); /*@ControlContextMenu@*/ graphView.getSelectWidth = function() { return 0; }; (function () { var $mainContainer, mainContainerHeight, mainContainerWidth, originHeight, originWidth, ratioX, ratioY, isPageContainer = false; graphView._pageBackgroundNode = PageBackground; if (pageSizeRatioValue !== 'adaptBrowser') { window.GD && GD.setPageToCenterOrLeftTop(); } function throttle () { var timer = null; return function () { timer && clearTimeout(timer); timer = setTimeout(function () { var value = GD.getParams('pageSizeRatioValue') || {}; value = value.value || PageAdaptMode.value; GD.setPageSizeWithRatio(value, ratio, backSize); }, 200) } } try { if (window.parent && window.parent.openDialog) { autoAdaptive = false; } } catch (error) {} try { if (window.parent && window.parent.pageContainer) { graphView.handleScroll = function (data) { var t = graphView.ty() - data.deltaY; var contentSize = graphView.getContentRect(); var min = contentSize.height - graphView.getHeight() + 50; if (min <= 50) return ; graphView.setTranslate(0, t, true); graphView.setScrollBarSize(8); } graphView.adjustTranslateY = function (value) { var contentSize = graphView.getContentRect(); var min = graphView.getHeight() - contentSize.height - 50; value = value > 0 ? 0 : value; value = value < min ? min : value; return value; } autoAdaptive = false; isPageContainer = true; } } catch (error) {} if (autoAdaptive !== false && autoAdaptive !== 'false' && autoAdaptive !== 'False') { graphView.setScrollBarVisible(false); if (!graphView._pannable) { graphView.adjustTranslateX = function () {return 0}; graphView.adjustTranslateY = function () {return 0}; } $window.off('resize').on('resize', throttle()); // setTimeout(resizePage, 100); showPage(); } else { showPage(); graphView.fitContent(false,0,true); $window.off('resize').on('resize', function (e) { if (!!isPageContainer) { window.parent.postMessage('getZoom', '*'); } else { graphView.fitContent(false,0,true); } }) } var graphViewTimer = null; // 监听鼠标缩放页面事件 graphView.adjustZoom = function (value) { graphViewTimer && clearTimeout(graphViewTimer); graphViewTimer = setTimeout(function () { $window.trigger('graphViewZoomEnded', [value]); GD.resetNodeBorderWidth(zoomNodeList, 1/value); }, 80) return value; } $window.off('customEventResizeNodes').on('customEventResizeNodes', function (e) { var data = e.args; var value = GD.getParams('pageSizeRatioValue') || {}; value = value.value || PageAdaptMode.value; GD.setPageSizeWithRatio(value, ratio, backSize); graphView.setZoom(data.zoom); graphView.tx(0); graphView.ty(0); }); $window.off('beforeunload').on("beforeunload", function( event ) { try { sessionStorage.setItem(location.pathname, JSON.stringify(VarValue)); } catch (error) {console.log(error.message);} ;(function () { var GD = window.GD; if (!GD || typeof GD.removeParams !== 'function') return ; GD.removeParams(); GD.removeParams('pageSizeRatioValue'); })(); }); graphView.setScrollBarColor('rgba(211,211,211,1)'); graphView.setAutoHideScrollBar(false); GD.autoToggleScrollBar(); // ;(function () { // var oriX=browserSize.width/backSize.width; // var oriY=browserSize.height/backSize.height; // var json = [ // { // label: "25%", // action: function(item, event) { // GD.setPageSizeWithRatio(0.25); // } // }, // { // label: "50%", // action: function(item, event) { // GD.setPageSizeWithRatio(0.5); // } // }, // { // label: "100%", // action: function(item, event) { // GD.setPageSizeWithRatio(1); // } // }, // { // label: "200%", // action: function(item, event) { // GD.setPageSizeWithRatio(2); // } // }, // { // label: "400%", // action: function(item, event) { // GD.setPageSizeWithRatio(4); // } // }, // { // label: "实际大小", // action: function(item, event) { // GD.setPageSizeWithRatio('originSize'); // } // }, // { // label: '适合屏幕', // action: function (item, event) { // GD.setPageSizeWithRatio('adaptBrowser'); // } // }, // { // label: "适合宽度", // action: function(item, event) { // GD.setPageSizeWithRatio('adaptWidth'); // } // }, // { // label: "适合高度", // action: function(item, event) { // GD.setPageSizeWithRatio('adaptHeight'); // } // }, // ]; // var zoomMenu = new ht.widget.ContextMenu(json); // zoomMenu.disableGlobalKey(); // zoomMenu.setLabelMaxWidth(100); // zoomMenu.addTo($('.main')[0]); // })(); (function () { var btnstr="停止数据刷新"; var json = [], item1, item2; item1 = { label: btnstr, action: function(item, event) { if(btnstr=="停止数据刷新"){ clearInterval(intervalTimers[0]); intervalTimers.shift(intervalTimers[0]); btnstr="开启数据刷新"; json[0].label=btnstr; }else{ intervalTimers.unshift(setInterval(DatarefreshTask, 1000)); btnstr="停止数据刷新"; json[0].label=btnstr; } } }; item2 = { label: "下载本页所有测点", action: function(item, event) { var time = new Date(); var t=time.getFullYear() + "-" + (time.getMonth() + 1) + "-" + time.getDate() + " " + time.getHours() + ":" + time.getMinutes() + ":" + time.getSeconds(); var str= "测点名\n"; for(var i=0;i 0) { addContextMenu(); } })(); })(); }