diff options
author | Lutty Yang <lutty@wcan.in> | 2015-10-23 20:51:12 +0800 |
---|---|---|
committer | Lutty Yang <lutty@wcan.in> | 2015-10-23 20:51:12 +0800 |
commit | 8296a47c1ad8ed4ca5b6bc1032593c607242e913 (patch) | |
tree | cd2510257775d5089b2babdb5d361da2628459ed /themes/luci-theme-material/htdocs/luci-static/material/js | |
parent | 9098b20650a77e8b0d0913d7786196e7a2a7508f (diff) |
luci-theme-material: try find current position by using lua code
thanks for jow
Signed-off-by: Lutty Yang <lutty@wcan.in>
Diffstat (limited to 'themes/luci-theme-material/htdocs/luci-static/material/js')
-rwxr-xr-x | themes/luci-theme-material/htdocs/luci-static/material/js/script.js | 187 |
1 files changed, 34 insertions, 153 deletions
diff --git a/themes/luci-theme-material/htdocs/luci-static/material/js/script.js b/themes/luci-theme-material/htdocs/luci-static/material/js/script.js index b19274fa7..d402728e5 100755 --- a/themes/luci-theme-material/htdocs/luci-static/material/js/script.js +++ b/themes/luci-theme-material/htdocs/luci-static/material/js/script.js @@ -18,109 +18,6 @@ * Licensed to the public under the Apache License 2.0 */ (function ($) { - var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", - a256 = '', - r64 = [256], - r256 = [256], - i = 0; - var UTF8 = { - /** - * Encode multi-byte Unicode string into utf-8 multiple single-byte characters - * (BMP / basic multilingual plane only) - * - * Chars in range U+0080 - U+07FF are encoded in 2 chars, U+0800 - U+FFFF in 3 chars - * - * @param {String} strUni Unicode string to be encoded as UTF-8 - * @returns {String} encoded string - */ - encode: function (strUni) { - // use regular expressions & String.replace callback function for better efficiency - // than procedural approaches - var strUtf = strUni.replace(/[\u0080-\u07ff]/g, // U+0080 - U+07FF => 2 bytes 110yyyyy, 10zzzzzz - function (c) { - var cc = c.charCodeAt(0); - return String.fromCharCode(0xc0 | cc >> 6, 0x80 | cc & 0x3f); - }) - .replace(/[\u0800-\uffff]/g, // U+0800 - U+FFFF => 3 bytes 1110xxxx, 10yyyyyy, 10zzzzzz - function (c) { - var cc = c.charCodeAt(0); - return String.fromCharCode(0xe0 | cc >> 12, 0x80 | cc >> 6 & 0x3F, 0x80 | cc & 0x3f); - }); - return strUtf; - }, - /** - * Decode utf-8 encoded string back into multi-byte Unicode characters - * - * @param {String} strUtf UTF-8 string to be decoded back to Unicode - * @returns {String} decoded string - */ - decode: function (strUtf) { - // note: decode 3-byte chars first as decoded 2-byte strings could appear to be 3-byte char! - var strUni = strUtf.replace(/[\u00e0-\u00ef][\u0080-\u00bf][\u0080-\u00bf]/g, // 3-byte chars - function (c) { // (note parentheses for precence) - var cc = ((c.charCodeAt(0) & 0x0f) << 12) | ((c.charCodeAt(1) & 0x3f) << 6) | (c.charCodeAt(2) & 0x3f); - return String.fromCharCode(cc); - }) - .replace(/[\u00c0-\u00df][\u0080-\u00bf]/g, // 2-byte chars - function (c) { // (note parentheses for precence) - var cc = (c.charCodeAt(0) & 0x1f) << 6 | c.charCodeAt(1) & 0x3f; - return String.fromCharCode(cc); - }); - return strUni; - } - }; - while (i < 256) { - var c = String.fromCharCode(i); - a256 += c; - r256[i] = i; - r64[i] = b64.indexOf(c); - ++i; - } - function code(s, discard, alpha, beta, w1, w2) { - s = String(s); - var buffer = 0, - i = 0, - length = s.length, - result = '', - bitsInBuffer = 0; - while (i < length) { - var c = s.charCodeAt(i); - c = c < 256 ? alpha[c] : -1; - buffer = (buffer << w1) + c; - bitsInBuffer += w1; - while (bitsInBuffer >= w2) { - bitsInBuffer -= w2; - var tmp = buffer >> bitsInBuffer; - result += beta.charAt(tmp); - buffer ^= tmp << bitsInBuffer; - } - ++i; - } - if (!discard && bitsInBuffer > 0) result += beta.charAt(buffer << (w2 - bitsInBuffer)); - return result; - } - - var Plugin = $.base64 = function (dir, input, encode) { - return input ? Plugin[dir](input, encode) : dir ? null : this; - }; - Plugin.btoa = Plugin.encode = function (plain, utf8encode) { - plain = Plugin.raw === false || Plugin.utf8encode || utf8encode ? UTF8.encode(plain) : plain; - plain = code(plain, false, r256, b64, 8, 6); - return plain + '===='.slice((plain.length % 4) || 4); - }; - Plugin.atob = Plugin.decode = function (coded, utf8decode) { - coded = String(coded).split('='); - var i = coded.length; - do { - --i; - coded[i] = code(coded[i], true, r64, a256, 6, 8); - } while (i > 0); - coded = coded.join(''); - return Plugin.raw === false || Plugin.utf8decode || utf8decode ? UTF8.decode(coded) : coded; - }; -}(jQuery)); - -(function ($) { $(".main > .loading").fadeOut(); /** @@ -133,40 +30,33 @@ } - var tree = undefined; var lastNode = undefined; var mainNodeName = undefined; + var nodeUrl = ""; + (function(node){ + if (node[0] == "admin"){ + luciLocation = [node[1], node[2]]; + }else{ + luciLocation = node; + } + + for(var i in luciLocation){ + nodeUrl += luciLocation[i]; + if (i != luciLocation.length - 1){ + nodeUrl += "/"; + } + } + })(luciLocation); + /** * get the current node by Burl (primary) * @returns {boolean} success? */ function getCurrentNodeByUrl() { var ret = false; - var getUrlNode = function (href){ - if (!$('body').hasClass('logged-in')){ - return "login"; - }else{ - if (href == "/cgi-bin/luci/"){ - return "overview"; - }else{ - var link = href.substr(href.indexOf("admin/")); - if (link == "/") - return "overview"; - else - return link; - } - } - }; - - var currentNode = getUrlNode(window.location.pathname); - - if (currentNode == "login"){ - tree = ["Main", "Login"]; - return false; - }else if(currentNode == "overview"){ - tree = ["Status", "Overview"]; - lastNode = $($($(".main > .main-left > .nav > .slide > .menu")[0]).next().find("a")[0]).parent(); + if (!$('body').hasClass('logged-in')) { + luciLocation = ["Main", "Login"]; return false; } @@ -176,11 +66,10 @@ var that = $(this); var href = that.attr("href"); - if (currentNode.indexOf(getUrlNode(href)) != -1){ + if (href.indexOf(nodeUrl) != -1) { ulNode.click(); - ulNode.next(".slide-menu").stop(true,true); + ulNode.next(".slide-menu").stop(true, true); lastNode = that.parent(); - tree = [trimText(ulNode.data("title")), trimText(that.data("title"))]; lastNode.addClass("active"); ret = true; return true; @@ -232,18 +121,10 @@ /** * get current node and open it */ - if (!getCurrentNodeByUrl()){ - if (tree != undefined && tree[0] == "Status" && tree[1] == "Overview"){ - //overview - lastNode.addClass("active"); - $($(".main > .main-left > .nav > .slide > .menu")[0]).click(); - } - } - if (tree != undefined){ - mainNodeName = "node-"+ tree[0] + "-" + tree[1]; - mainNodeName = mainNodeName.replace(/[ \t\n\r\/]+/g,"_").toLowerCase(); + if (getCurrentNodeByUrl()) { + mainNodeName = "node-" + luciLocation[0] + "-" + luciLocation[1]; + mainNodeName = mainNodeName.replace(/[ \t\n\r\/]+/g, "_").toLowerCase(); $("body").addClass(mainNodeName); - } $(".cbi-button-up").val(""); $(".cbi-button-down").val(""); @@ -255,10 +136,10 @@ $("#maincontent > .container").find("a").each(function () { var that = $(this); var onclick = that.attr("onclick"); - if (onclick == undefined || onclick == ""){ + if (onclick == undefined || onclick == "") { that.click(function () { var href = that.attr("href"); - if (href.indexOf("#") == -1){ + if (href.indexOf("#") == -1) { $(".main > .loading").fadeIn("fast"); return true; } @@ -271,18 +152,18 @@ */ var showSide = false; $(".showSide").click(function () { - if (showSide){ + if (showSide) { $(".darkMask").stop(true).fadeOut("fast"); $(".main-left").stop(true).animate({ width: "0" - },"fast"); + }, "fast"); $(".main-right").css("overflow-y", "auto"); showSide = false; - }else{ + } else { $(".darkMask").stop(true).fadeIn("fast"); $(".main-left").stop(true).animate({ width: "15rem" - },"fast"); + }, "fast"); $(".main-right").css("overflow-y", "hidden"); showSide = true; } @@ -290,17 +171,17 @@ $(".darkMask").click(function () { - if (showSide){ + if (showSide) { showSide = false; $(".darkMask").stop(true).fadeOut("fast"); $(".main-left").stop(true).animate({ width: "0" - },"fast"); + }, "fast"); $(".main-right").css("overflow-y", "auto"); } }); - $(window).resize(function() { + $(window).resize(function () { if ($(window).width() > 921) { $(".main-left").css("width", ""); $(".darkMask").stop(true); @@ -322,9 +203,9 @@ $(".main-right").blur(); $("input").attr("size", "0"); - if (mainNodeName != undefined){ + if (mainNodeName != undefined) { console.log(mainNodeName); - switch (mainNodeName){ + switch (mainNodeName) { case "node-status-system_log": case "node-status-kernel_log": $("#syslog").focus(function () { |