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 += '