if (!$('#alarmNum').html()) { $('#alarmNum').html('0'); } var urlParam = decodeURIComponent(location.search); if (urlParam.indexOf('theme') !== -1) { var arr = urlParam.substr(urlParam.indexOf('theme')).split(/[\=\&]/g); localStorage.setItem('configTheme', arr[1]); } function checkDisabled() { var his = JSON.parse(sessionStorage.getItem('hisMenu') || '[]'); var index = sessionStorage.getItem('menuIndex'); if (his.length <= 1) { $('#m_pre').addClass('disabled'); $('#m_next').addClass('disabled'); return false; } if (index == 0) { $('#m_pre').addClass('disabled'); } else { $('#m_pre').removeClass('disabled'); } if (index == his.length - 1) { $('#m_next').addClass('disabled'); } else { $('#m_next').removeClass('disabled'); } } //* 面包屑菜单 function BreadcrumbClass() { this.patchNavDataCache = this.patchNavData() this.breadcrumSelectOptionHandleInit() var el=$('#breadcrumb'); if(!el[0]){ console.error('面包屑菜单缺少容器'); return; } var stArr = $('#breadcrumb').attr('style').split(';').filter(function (f) {return !!f}) stArr.push('display: flex','flex;align-items: center') $('#breadcrumb').attr('style',stArr.join(';')) } // 必定是跳转链接触发 BreadcrumbClass.prototype.initBreadcrumbHtml = function (targetItem) { var chain = this.getBreadcrumbChainData(targetItem) var htmlStr = this.getBreadcrumbHtmeStr(chain) $('#breadcrumb').html(htmlStr); } BreadcrumbClass.prototype.getBreadcrumbChainData = function (item) { var chain = [] var curItem = item while (true) { var pItem = this.patchNavDataCache.idMap[curItem._pId] if(!pItem) break chain.unshift({ ...curItem, nearArr:pItem.items }) curItem = pItem } return chain } BreadcrumbClass.prototype.getBreadcrumbHtmeStr = function (chain) { var strArr = chain.map(function (item) { var str = '' if(!item.nearArr){ str = ''+ item.name +'' }else{ str = '' } return str }) return strArr.join('') } BreadcrumbClass.prototype.breadcrumSelectOptionHandleInit = function () { var that = this $('#breadcrumb').on('change', 'select', function() { var id = $(this).find('option:selected').val() var targetItem = that.patchNavDataCache.idMap[id] if(!targetItem) return console.log('目标无跳转路径数据') var jumpItem = targetItem while(true){ if(jumpItem.data) break if(jumpItem.items && jumpItem.items.length > 0){ jumpItem = jumpItem.items[0] }else{ jumpItem = null break } } if(!jumpItem) return console.log('无跳转路径数据') var src = navDataSrc(jumpItem) var aList = $('#nav li>p[href]') for (var index = 0; index < aList.length; index++) { var element = aList[index]; var jumpHref = $(element).attr('href') if(jumpHref === src){ $(element).trigger('click'); break } } }) } BreadcrumbClass.prototype.patchNavData = function() { var nveDatas = navData.items var nveDatasRich = JSON.parse(JSON.stringify(nveDatas)) var idMap = {} var dataMap = {} var idMark = 0 patchId(nveDatasRich) var fullNavMenuData = [{ id:'root', items:[] }] $('#menu') .find('button[nav-value]').each(function (i,btn,c) { var nav_value = $(btn).attr('nav-value').split(',').filter(function (f) { return !!f }) var rootItem = { _id:'topmenuIndex' + i, _pId:'root', name:$(btn).text(), } var items = nav_value.map(function (i) { var item = nveDatasRich[i] item._pId = rootItem._id return item }) rootItem.items = items fullNavMenuData[0].items.push(rootItem) }) patchMap(fullNavMenuData) return { idMap:idMap, nveDatasRich:nveDatasRich, dataMap:dataMap, fullNavMenuData:fullNavMenuData } function patchId(cArr,Pitem) { cArr.forEach(navItem => { if(!navItem._id){ navItem._id = ++idMark } if(Pitem){ navItem._pId = Pitem._id } if(navItem.items && navItem.items.length>0){ patchId(navItem.items,navItem) } }); } function patchMap(cArr) { cArr.forEach(navItem => { if(navItem.data) dataMap[navItem.data] = navItem idMap[navItem._id] = navItem if(navItem.items && navItem.items.length>0){ patchMap(navItem.items,navItem) } }); } } var BreadcrumbIns = new BreadcrumbClass() var backFlag = false; (function($) { var navShowFlag = document.getElementById('nav_img'); var origin = location.origin; var mynav = { alarm_window: 'alarm', event_window: 'rtevent', trend: 'realtime', 实时事件: 'event', 历史趋势: 'history', reportview: 'view', reportdesign: 'design', view_bi_design: origin + '/platform/pageManage', view_bi_view: origin + '/platform/configView' }; var lng = localStorage.getItem('i18n'); var nop; if (!lng) { nop = navigator.language == 'zh-CN' ? '没有权限' : 'No permissions'; } else { nop = lng == 'cn' ? '没有权限' : 'No permissions'; } $('#theme').on('click', function() { var theme = localStorage.getItem('configTheme'); var fn = function(t) { var ft = t === 'light' ? 'dark' : 'light'; localStorage.setItem('configTheme', t); var urlParam = decodeURIComponent(location.href); if (urlParam.indexOf('theme') !== -1) { urlParam = urlParam.replace('theme=' + ft, 'theme=' + t); } location.href = urlParam.replace(ft + '/page', t + '/page'); }; if (theme === 'dark') { fn('light'); } else { fn('dark'); } }); if (navShowFlag) { $('#nav_img').on('click', function() { var max = parseFloat($('#view').css('height')); var min = parseFloat($('#m_navi').css('top')) + 1; var height = parseFloat($('#nav').css('height')); if (height == max + min) { $('#nav').css('height', min + 'px'); } else { $('#nav').css('height', max + min + 'px'); } }); } $('#m_alarmBtn').on('click', function() { checkPower('alarm_window.glx', function(json) { var res = JSON.parse(json); if (res.flag || !powerFlag) { $('#m_alarm').trigger('click'); } else { alert(nop); } }); }); //*点击导航 $('#nav').on('click', 'li>p[href]', function() { var el = $(this); var href = el.attr('href'); var code = el.attr('code'); var mainIframe = $('#view').find('iframe'); var mainIframeBak = mainIframe.clone(); $('#view') .find('iframe') .remove(); mainIframeBak.attr('src', '/loading.html'); $('#view').append(mainIframeBak); checkPower(code, function(json) { var res = JSON.parse(json); if (!powerFlag) { res.flag = true; } var theme = localStorage.getItem('configTheme'); if (res.flag) { $('#nav') .find('.cur') .removeClass('cur'); el.addClass('cur'); var selector = '#menu button[nav-value]'; var item = $(selector + '.checked').index(selector) + '-' + el.index('#nav>ul p[href]'); sessionStorage.setItem('selMenu', item); // 历史记录 var his = JSON.parse(sessionStorage.getItem('hisMenu') || '[]'); if (!backFlag) { if (!(his.length !== 0 && his[his.length - 1] === item)) { if (his.length > 30) { his.splice(0, 1); } his.push(item); sessionStorage.setItem('hisMenu', JSON.stringify(his)); } sessionStorage.setItem('menuIndex', his.length - 1); checkDisabled(); } backFlag = false; if (href === '../../page/view.html') { var userGroup = sessionStorage.getItem('userGroup'); mainIframeBak.attr( 'src', href + '?theme=' + theme + '&userGroup=' + encodeURI(userGroup) + '&language=' + lng ); } else if (href === '../../page/design.html') { mainIframeBak.attr( 'src', href + (href.indexOf('?') !== -1 ? '&' : '?') + 'theme=' + theme + '&language=' + lng ); } else if (href.indexOf('http://' !== -1)) { mainIframeBak.attr('src', href); } else { mainIframeBak.attr( 'src', href + (href.indexOf('?') !== -1 ? '&' : '?') + 'language=' + lng ); } if (navShowFlag) { var min = parseFloat($('#m_navi').css('top')) + 1; $('#nav').css('height', min + 'px'); } } else { alert(nop); } }); if($('#breadcrumb')&&$('#breadcrumb')[0]){ var tItem = BreadcrumbIns.patchNavDataCache.dataMap[code] if(tItem) BreadcrumbIns.initBreadcrumbHtml(tItem) } }); $.fn.initNav = function(data) { var keylist = ['levelTopItem', 'levelChildItem', 'levelLeafItem']; createStyle(data.configure, keylist); var el = createElement(data.items, 0); this.html(el); return this; }; window.navDataSrc = navDataSrc function navDataSrc(d){ var src = '', dh = ''; dh = d.data.replace(/.*\\|.*\/|\.glx/g, ''); //删除正斜杠和反斜杠之前所有的字符串以及.glx var pdh = mynav[dh] !== undefined ? mynav[dh] : dh; var theme = localStorage.getItem('configTheme'); if (d.type === 'html') { if (pdh.indexOf('http:') !== -1) { src = pdh; } else if (mynav[dh]) { src = '../../page/' + encodeURI(pdh) + '.html'; } else { src = '../../' + theme + '/page/' + encodeURI(pdh) + '.html'; } // if (dh == "view") { // // src = src + '?userGroup=flag'; // src = src + "?userGroup=" + sessionStorage.getItem("userGroup"); // } } else if (d.type === 'canvas') { src = '../../configView.html?#/configView?fileName=' + encodeURI(d.data.replace(/\.glx/g, '')); } else if (d.type === 'energy') { src = d.data; } return src; } function createEleP(d, item) { var str = ''; var img = d.icon ? ' ' : ''; if (d.type) { var src = navDataSrc(d) str = '

' + ''; } else { str = '

'; } return str + img + d.name + '

'; } function createElement(data, item) { if (!data) { return ''; } item = item === undefined ? 0 : Number(item); for (var i = 0, str = ''; i < data.length; i++) { var d = data[i]; str += '
  • ' + createEleP(d, item); if (d.items && d.items.length) { str += ''; } str += '
  • '; } return str; } function createStyle(data, keylist) { if ($('style#navstyle')[0]) { return false; } else { var default_opacity = 'ff'; $('#nav').prepend(''); var el = $('style#navstyle'); $('#nav').css({ 'background-color': data.backgroundColor + default_opacity }); var style = ''; style += '#nav .img.icon{margin:' + data.iconMargin + 'px;vertical-align:middle;display:inline-block;}' + '#nav em.sim-border{width:' + data.indicatorWidth + 'px;height:100%;display:inline-block;vertical-align:middle;background-color:transparent;}' + '#nav li>p{height:' + data.rowHeight + 'px;line-height:' + data.rowHeight + 'px;}' + '#nav li>p[href]:hover{background-color:' + data.itemHoveredBgColor + default_opacity + ';color:' + data.itemHoveredTextColor + ';}' + '#nav li>p.cur{background-color:' + data.itemSelectedColor + default_opacity + ';color:' + data.itemSelectedTextColor + ';}'; style += '#nav li>p{white-space: nowrap;overflow: hidden;text-overflow: ellipsis;}'; for (var i = 0; i < keylist.length; i++) { var d = keylist[i]; style += '#nav p.node' + i + '{padding-left:' + data[d + 'Indentation'] + 'px;background-color:' + data[d + 'BgColor'] + default_opacity + ';color:' + data[d + 'TextColor'] + ';font-size:' + data[d + 'TextSize'] + 'px;}'; style += '#nav p.node' + i + ' .img{width:' + data[d + 'IconSize'] + 'px;}'; } el.html(style); } } var oldid; var alarmCount = initSocket({ url: 'alarmCountWebsocket', success: function(res) { var obj = res.data; if (obj === undefined) { return false; } $('#alarmNum').html(obj.count > 99 ? '99+' : obj.count); if (obj.id !== oldid) { audioplay.soundList = obj.soundFile; audioplay.changeCurList(); } oldid = obj.id; }, open: function(count) { count.send({ flag: 1 }); } }); $(document).on('click', function() { if (audioplay.state == 0) { audioplay.init(); } }); })(jQuery); $(function() { var username = sessionStorage.getItem('name'); $('#m_menuBar').html( '' ); //*点击顶部菜单 */ $('#menu') .find('button[nav-value]') .on('click', function() { $('#menu') .find('button[nav-value].checked') .removeClass('checked'); $(this).addClass('checked'); var menuIndex = $(this).index('#menu button[nav-value]'); var nav_value = $(this) .attr('nav-value') .split(','); var data_type = $(this).attr('data-type'); if (data_type == 3) { var data = { configure: navData.configure, items: [] }; for (var i = 0; i < nav_value.length; i++) { var n = nav_value[i]; if (n !== '' && n !== null && !isNaN(n)) { data.items.push(navData.items[n]); } } var el = $('#nav>ul').initNav(data); // $('#breadcrumb').initBreadcrumb(data.items) setTimeout(function() { var data = (sessionStorage.getItem('selMenu') || '').split('-'); if (data[0] + '' === menuIndex + '') { el.find('p[href]:eq(' + data[1] + ')').trigger('click'); } else { el.find('p[href]:eq(0)').trigger('click'); sessionStorage.setItem('selMenu', menuIndex + '-0'); } }, 80); } }); var menuSelData = (sessionStorage.getItem('selMenu') || '').split('-'); $('#menu') .find( 'button[nav-value]:eq(' + (menuSelData.length === 2 ? menuSelData[0] : 0) + ')' ) .trigger('click'); $('button#m_exit').on('click', function() { $.get('/ems/logoutAction', {}, function() { location.href = '/'; }); sessionStorage.setItem('hisMenu', '[]'); sessionStorage.setItem('menuIndex', 0); sessionStorage.setItem('selMenu', '0-0'); }); var timer, t; setTimeout(function() { if (timer) { clearInterval(timer); } getServerTime(); setTimeout(arguments.callee, 600000); }, 600000); getServerTime(); function getServerTime() { $.get( '/ems/monitorBusiness/getSystemDateTime', {}, function(res) { var nop = localStorage.getItem('i18n'); if (!nop) { nop = navigator.language == 'zh-CN' ? 'cn' : 'en'; } var weekList = [ '星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六' ]; t = dayjs(res.sysTime); $('#time').html(t.format('HH:mm:ss')); timer = setInterval(function() { t = t.add(1, 'second'); $('#time').html(t.format('HH:mm:ss')); }, 1000); if (nop == 'en') { $('#date').html(t.format('MMM DD')); $('#week').html(t.format('ddd')); } else { $('#date').html(t.format('MM月DD日')); $('#week').html(weekList[t.day()]); } $('#safe-days-name').html(res.safeDaysMs[0].day_diff); }, 'JSON' ); } //放大缩小 $('#view').css('transform-origin', 'left top'); //设置原点 $('#view').css('transform', 'scale(1)'); //放大 $('#m_zoomIn').on('click', function() { var transform = $('#view').css('transform'); if (transform !== 'none') { var matrix = transform.replace(/[^0-9\-,\.]/g, '').split(','); var value = parseFloat(matrix[0]) + 0.1; if (value > 3) { value = 3; } value = value.toFixed(1); matrix[0] = value; matrix[3] = value; $('#view').css('transform', 'matrix(' + matrix.join(',') + ')'); } else { $('#view').css('transform', 'matrix(1,0,0,1,0,0)'); } }); //缩小 $('#m_zoomOut').on('click', function() { var transform = $('#view').css('transform'); if (transform !== 'none') { var matrix = transform.replace(/[^0-9\-,\.]/g, '').split(','); var value = parseFloat(matrix[0]) - 0.1; if (value < 0.4) { value = 0.4; } value = value.toFixed(1); matrix[0] = value; matrix[3] = value; $('#view').css('transform', 'matrix(' + matrix.join(',') + ')'); } else { $('#view').css('transform', 'matrix(1,0,0,1,0,0)'); } }); //复原 $('#m_zoom').on('click', function() { $('#view').css('transform', 'matrix(1,0,0,1,0,0)'); }); //首页 $('#m_index').on('click', function() { if ( $('#menu') .find('button[nav-value]:first') .hasClass('checked') ) { $('#nav') .find('p[href]:first') .trigger('click'); } else { $('#menu') .find('button[nav-value]:first') .trigger('click'); } }); //前进后退 $('#m_pre').on('click', function() { if ($(this).hasClass('disabled')) { return false; } if(backFlag){return false} backFlag = true; var his = JSON.parse(sessionStorage.getItem('hisMenu') || '[]'); if (his.length <= 1) { return false; } var index = parseInt(sessionStorage.getItem('menuIndex'), 10); index = index !== 0 && !index ? his.length - 1 : index - 1; if (index < 0) { alert('没有记录了'); return false; } var sel = his[index]; sessionStorage.setItem('selMenu', sel); sessionStorage.setItem('menuIndex', index); sel = sel.split('-'); $('#menu') .find('button[nav-value]:eq(' + sel[0] + ')') .trigger('click'); checkDisabled(); }); $('#m_next').on('click', function() { if ($(this).hasClass('disabled')) { return false; } if(backFlag){return false} backFlag = true; var his = JSON.parse(sessionStorage.getItem('hisMenu') || '[]'); if (his.length <= 1) { return false; } var index = parseInt(sessionStorage.getItem('menuIndex'), 10); index = index !== 0 && !index ? his.length - 1 : index + 1; if (index >= his.length) { alert('没有记录了'); return false; } var sel = his[index]; sessionStorage.setItem('selMenu', sel); sessionStorage.setItem('menuIndex', index); sel = sel.split('-'); $('#menu') .find('button[nav-value]:eq(' + sel[0] + ')') .trigger('click'); checkDisabled(); }); //禁止截屏 $('#m_snapScreen').addClass('disabled'); //禁止滚动截屏 $('#m_shotScreen').addClass('disabled'); //禁止轮播 $('#m_rollBtn').addClass('disabled'); }); //声音报警 var audioplay = { soundList: [], audio: '', curList: [], state: 0, path: '../../audio/', suffix: '.wav', init: function() { this.curList = this.soundList; this.playList(); }, changeCurList: function() { if (this.state == 2) { this.audio.pause(); this.audio.currentTime = 0; } this.init(); }, playList: function() { var i = 0, arr = this.curList || []; var me = this; var path = me.path; var suffix = me.suffix; this.audio = new Audio(path + arr[i] + suffix); this.state = 1; this.audio.oncanplay = function() { me.audio.play(); me.state = 2; }; me.audio.onended = function() { if (arr[++i]) { me.audio.src = path + arr[i] + suffix; me.audio.play(); } else { i = 0; if (!arr[0]) { return false; } else { me.audio.src = path + arr[i] + suffix; me.audio.play(); } } }; if (typeof this.audio.play !== 'function') { // me.state = 0; console.log('no'); } } };