"use strict";
|
|
var defpage;
|
var rightFrame;
|
|
$(document).ready(function () {
|
initView();
|
});
|
|
function initView() {
|
//获取用户信息,用于校验token
|
if (window.hasServer) {
|
window.sendAjax({
|
url: "sys/user/" + window.getUserId(),
|
type: "get",
|
contentType: "application/x-www-form-urlencoded",
|
success: function (data) {},
|
});
|
}
|
|
var user = JSON.parse(haoutil.storage.get("user")) || { name: "火星科技" };
|
$("#lblUserName").html(user.name);
|
|
//根据设置,加载不同皮肤
|
//setStyleByTheme();
|
|
$("#userInfo").on("mouseenter", function () {
|
var list = $(this).find("dl"),
|
child = list.children(),
|
size = child.size(),
|
offsetV = 6;
|
|
list.css({
|
height: $(child.get(size - 1)).height() * size + offsetV,
|
});
|
});
|
$("#userInfo").on("mouseleave", function () {
|
var list = $(this).find("dl");
|
|
list.css({
|
height: 0,
|
});
|
});
|
|
rightFrame = document.getElementById("rightFrame");
|
if (rightFrame.attachEvent) {
|
rightFrame.attachEvent("onload", rightFrame_onload);
|
} else {
|
rightFrame.onload = rightFrame_onload;
|
}
|
|
//加载菜单
|
$.ajax({
|
url: "../data/menu.json",
|
type: "get",
|
dataType: "json",
|
cache: false,
|
beforeSend: function () {
|
$("#navLoadEle").show();
|
},
|
success: function (json) {
|
$("#navLoadEle").hide(); // loading
|
|
defpage = json.defpage;
|
//showPage(defpage);
|
|
initMenu(json, clkMenuNodeItem);
|
},
|
error: function (d) {
|
$("#navLoadEle").hide(); // loading
|
},
|
});
|
}
|
|
//根据设置,加载不同皮肤
|
//function setStyleByTheme() {
|
// var theme;
|
// var style = haoutil.system.getRequestByName('style');
|
// if (style) {
|
// haoutil.storage.add('theme', style);
|
// } else {
|
// theme = haoutil.storage.get('theme');
|
// }
|
// if (theme == null) return;
|
|
// switch (theme) {
|
// case 'blue':
|
// haoutil.system.loadResource("css/themeBlue.css");
|
// break;
|
// case 'gray':
|
// haoutil.system.loadResource("css/themeGray.css");
|
// break;
|
// case 'steelblue':
|
// haoutil.system.loadResource("css/themeSteelBlue.css");
|
// break;
|
// default:
|
// break;
|
// }
|
//}
|
|
//构造菜单目录
|
function initMenu(d, callback) {
|
var da = d.menu || [],
|
menu = $("#menu").get(0),
|
navList = $("#navList"),
|
positionM = $("#positionMarker").get(0),
|
i = 0,
|
len = 0,
|
CLA_N = "active",
|
S_PX = "px",
|
OFFL_V = 6,
|
_creNavFn = function (d) {
|
var liE = document.createElement("li"),
|
aEle = document.createElement("a"),
|
spanEle = document.createElement("span"),
|
divSubMenuEle = document.createElement("div"),
|
resultStr = "";
|
|
spanEle.className = d.icon || "";
|
aEle.href = "javascript:void(0)";
|
aEle.appendChild(spanEle);
|
aEle.innerHTML += d.name || "";
|
|
$(divSubMenuEle).addClass("navCon");
|
|
if (!d.children) {
|
aEle.data = d;
|
}
|
|
liE.appendChild(aEle);
|
liE.appendChild(divSubMenuEle);
|
|
return liE;
|
},
|
_creMenuFn = function (d) {
|
var i = 0,
|
len = 0,
|
arr = d.children,
|
j = 0,
|
subLen = 0,
|
doc = document,
|
dlE = null,
|
secDlE = doc.createElement("dl"),
|
dtE = null,
|
ddE = null,
|
aE = null,
|
spanE = null,
|
tempO = null,
|
tempSubO = null;
|
|
if (arr && $.isArray(arr) && arr.length > 0) {
|
for (i = 0, len = arr.length; i < len; ++i) {
|
tempO = arr[i];
|
if (tempO.children) {
|
dlE = doc.createElement("dl");
|
dtE = doc.createElement("dt");
|
spanE = doc.createElement("span");
|
aE = doc.createElement("a");
|
spanE.className = tempO.icon || "";
|
|
if (tempO.uri) {
|
aE = doc.createElement("a");
|
aE.href = "javascript:void(0)";
|
dtE.appendChild(aE);
|
}
|
dtE.appendChild(spanE);
|
dtE.innerHTML += tempO.name || "";
|
dlE.appendChild(dtE);
|
|
if (tempO.children) {
|
for (j = 0, subLen = tempO.children.length; j < subLen; ++j) {
|
tempSubO = tempO.children[j];
|
|
ddE = doc.createElement("dd");
|
aE = doc.createElement("a");
|
aE.href = "javascript:void(0)";
|
|
spanE = doc.createElement("span");
|
spanE.className = tempSubO.icon || "";
|
aE.appendChild(spanE);
|
aE.innerHTML += tempSubO.name || "";
|
aE.data = tempSubO;
|
|
ddE.appendChild(aE);
|
|
dlE.appendChild(ddE);
|
}
|
}
|
|
fragE.appendChild(dlE);
|
} else {
|
dtE = doc.createElement("dt");
|
spanE = doc.createElement("span");
|
aE = doc.createElement("a");
|
|
spanE.className = tempO.icon || "";
|
aE.href = "javascript:void(0)";
|
|
aE.appendChild(spanE);
|
aE.innerHTML += tempO.name || "";
|
|
aE.data = tempO;
|
secDlE.className = "secList";
|
|
dtE.appendChild(aE);
|
secDlE.appendChild(dtE);
|
fragE.appendChild(secDlE);
|
}
|
}
|
}
|
return fragE;
|
},
|
_enterFn = function (e) {
|
var evt = e || window.event,
|
tar = e.target || e.srcElement,
|
navCon = $(this).find(".navCon"),
|
ind = $(this).index(),
|
l = $(this).offset().left,
|
widN = 0,
|
offW = 30;
|
|
docW = $(document).width();
|
menu.innerHTML = "";
|
navCon.html("");
|
navCon.removeClass(CLA_N);
|
|
$(menu).append(_creMenuFn(da[ind]));
|
navCon.append(_creMenuFn(da[ind]));
|
|
if ($(menu).children().size() > 1) {
|
// widN = 0;
|
// $(menu).children().each(function (i, v) {
|
// console.log( v.offsetWidth ) ;
|
// console.log($(v),$(v).offset(),$(v).width(),$(v).innerWidth(),$(v).outerWidth()) ;
|
// widN += $(v).width();
|
// });
|
// $(menu).css({
|
// 'width': widN + 6
|
// //'width': widN
|
// });
|
$(menu).css({
|
//'width': 'auto'
|
width: "auto",
|
//'float' : 'normal'
|
});
|
} else if ($(menu).children().size() === 1) {
|
// $(menu).css({
|
//'width': 'auto'
|
//'width' : $(this).width()
|
//'float' : 'normal'
|
// });
|
}
|
|
widN = $(menu).width();
|
|
l = l >= docW - widN - offW ? docW - widN - offW : l;
|
|
$(menu).css({
|
left: l + S_PX,
|
});
|
|
$(positionM).css({
|
left: $(this).offset().left + S_PX,
|
width: $(this).width(),
|
});
|
|
$("#menu dl").on("click", function (e) {
|
e.preventDefault();
|
|
if (e.target.tagName === "A") {
|
if ($.isFunction(callback) && e.target.data) {
|
callback(e.target.data);
|
}
|
}
|
});
|
|
if ($(menu).children().size() >= 1) {
|
$(menu).addClass(CLA_N);
|
}
|
|
//indNum = this.ind;
|
indNum = ind;
|
},
|
_leaveFn = function (e) {
|
var navCon = $(this).find(".navCon");
|
$(positionM).css({
|
left: $(this).offset().left,
|
width: 0,
|
});
|
navCon.removeClass(CLA_N);
|
|
$(menu).removeClass(CLA_N);
|
},
|
_menuEnterFn = function () {
|
var el = navList.children().get(indNum);
|
|
for (i = 0, len = navList.children().size(); i < len; ++i) {
|
tempE = navList.children().get(i);
|
|
$(tempE.children[0]).removeClass(CLA_N);
|
}
|
|
$(positionM).css({
|
left: $(el).offset().left + S_PX,
|
width: $(el).width(),
|
});
|
|
$(navList.children().get(indNum).children[0]).addClass(CLA_N);
|
$(this).addClass(CLA_N);
|
},
|
_menuLeaveFn = function () {
|
var el = navList.children().get(indNum).children[0];
|
|
$(menu).removeClass(CLA_N);
|
$(el).removeClass(CLA_N);
|
|
$(positionM).css({
|
left: $(el).offset().left + $(el).width(),
|
width: 0,
|
});
|
},
|
_mediaFn = function () {
|
navList.find("li").on("click", function (e) {
|
var _self = $(this),
|
tar = e.target,
|
subCon = null,
|
dlEs = null;
|
|
if (docW <= VIEW_W) {
|
//console.log(this, docW) ;
|
//console.log( e.target, _self.find('.navCon').height() ) ;
|
|
subCon = _self.find(".navCon");
|
dlEs = _self.find("dl");
|
dlEs.on("click", function (e) {
|
var _that = $(this);
|
|
e.preventDefault();
|
e.stopPropagation ? e.stopPropagation() : (e.cancelBubble = true);
|
|
if (e.target.tagName === "A") {
|
if ($.isFunction(callback) && e.target.data) {
|
callback(e.target.data);
|
return;
|
}
|
}
|
|
if (!_that.hasClass(CLA_N)) {
|
_that.addClass(CLA_N);
|
} else {
|
_that.removeClass(CLA_N);
|
}
|
});
|
|
if (!_self.hasClass(CLA_N)) {
|
$("#navList li").removeClass(CLA_N);
|
if (subCon.children().size() > 0) {
|
// Empty
|
_self.addClass(CLA_N);
|
}
|
} else {
|
_self.removeClass(CLA_N);
|
}
|
|
// if (!_self.hasClass(CLA_N)) {
|
// if (subCon.children().size() > 0) { // Empty
|
// _self.addClass(CLA_N);
|
// }
|
// } else {
|
// _self.removeClass(CLA_N);
|
// }
|
}
|
});
|
},
|
indNum = -1,
|
fragE = document.createDocumentFragment(),
|
VIEW_W = 1024,
|
docW = $(document).width(),
|
resultStr = "",
|
menuStr = "",
|
tempE = null;
|
|
if ($.isArray(da)) {
|
for (i = 0, len = da.length; i < len; ++i) {
|
fragE.appendChild(_creNavFn(da[i]));
|
}
|
navList.get(0).appendChild(fragE);
|
|
// $('#navList li a:first-child').on('click', function (e) {
|
// //e.preventDefault();
|
// //
|
|
// if (e.target.tagName === 'A') {
|
// if ($.isFunction(callback) && e.target.data) {
|
// callback(e.target.data);
|
// }
|
// }
|
// });
|
|
// for (i = 0, len = navList.children().size() ; i < len; ++i) {
|
// tempE = navList.children().get(i);
|
// tempE.ind = i;
|
|
// $(tempE).on('mouseenter', _enterFn);
|
// $(tempE).on('mouseleave', _leaveFn);
|
// $(tempE).on('click', _enterFn);
|
// }
|
|
$("#navList li").on("mouseenter", _enterFn);
|
$("#navList li").on("click", function (e) {
|
var _self = $(this);
|
|
_enterFn.call(this, e);
|
|
if (e.target.tagName === "A") {
|
if ($.isFunction(callback) && e.target.data) {
|
callback(e.target.data);
|
}
|
}
|
});
|
|
$("#navList li").on("mouseleave", _leaveFn);
|
|
$(menu).on("mouseenter", _menuEnterFn);
|
$(menu).on("mouseleave", _menuLeaveFn);
|
|
$("#mediaNav").on("click", function () {
|
if (!navList.hasClass(CLA_N)) {
|
navList.addClass(CLA_N);
|
} else {
|
navList.find("dl").removeClass(CLA_N); // Reset
|
navList.find(".navCon").removeClass(CLA_N); // Reset
|
navList.removeClass(CLA_N);
|
$("#navList li").removeClass(CLA_N);
|
}
|
});
|
|
// $('#menu dl').on('click', function (e) {
|
// e.preventDefault();
|
|
// if (e.target.tagName === 'A') {
|
// if ($.isFunction(callback) && e.target.data) {
|
// callback(e.target.data);
|
// }
|
// }
|
|
// });
|
|
$(window).on("resize", function () {
|
docW = $(document).width();
|
|
if (docW > VIEW_W) {
|
$("#navList li").removeClass(CLA_N);
|
$(positionM).show();
|
} else {
|
$(positionM).hide();
|
}
|
});
|
|
_mediaFn();
|
}
|
}
|
|
//单击了菜单叶子节点回调
|
function clkMenuNodeItem(item) {
|
//console.log('单击了菜单:' + JSON.stringify(item));
|
|
lastFun = null;
|
|
//存在uri
|
var uri = item.uri;
|
if (uri && uri.length > 0) {
|
console.log("单击了菜单:" + item.uri);
|
|
if (uri.endsWith("js") || uri.indexOf(".js?") != -1) {
|
//widget js
|
item = haoutil.system.clone(item, ["_class"]); //需要拷贝,防止在子页面被引用
|
|
var isref = showPage(defpage);
|
if (isref) {
|
lastFun = function () {
|
rightFrame.contentWindow.activateWidget(item);
|
};
|
} else {
|
rightFrame.contentWindow.activateWidget(item);
|
}
|
} else {
|
//页面
|
showPage(uri);
|
}
|
} else {
|
showPage(defpage);
|
}
|
|
//存在事件
|
var callback = item.callback;
|
if (callback && callback.length > 0) {
|
if (rightFrame.contentWindow && rightFrame.contentWindow.activateFunByMenu) {
|
rightFrame.contentWindow.activateFunByMenu(callback);
|
} else {
|
lastFun = function () {
|
rightFrame.contentWindow.activateFunByMenu(callback);
|
};
|
}
|
}
|
}
|
|
var lastFun;
|
function rightFrame_onload() {
|
if (lastFun) {
|
setTimeout(function () {
|
lastFun();
|
}, 200);
|
}
|
}
|
|
function showPage(url) {
|
if (url == null || url == "") {
|
return false;
|
}
|
|
var lastsrc = $("#rightFrame").attr("src");
|
if (lastsrc != url) {
|
$("#rightFrame").attr("src", url);
|
return true;
|
} else {
|
return false;
|
}
|
}
|
|
function logout() {
|
if (window.hasServer) {
|
window.sendAjax({
|
url: "pub/user/logout",
|
type: "post",
|
success: function (result) {
|
location.href = "./login.html";
|
},
|
});
|
} else {
|
location.href = "./login.html";
|
}
|
}
|