Merge pull request #2509 from shunjou/material-svg
[project/luci.git] / themes / luci-theme-material / htdocs / luci-static / material / js / script.js
index db9c99e118d26acaa0105d991fc327da3ed7a7cc..755191f3352d8e83674cbe0bbc28c0e421723015 100755 (executable)
 /**
- *  Material is a clean HTML5 theme for LuCI. It is based on luci-theme-bootstrap and MUI
+ *     Material is a clean HTML5 theme for LuCI. It is based on luci-theme-bootstrap and MUI
  *
- *  luci-theme-material
- *      Copyright 2015 Lutty Yang <lutty@wcan.in>
+ *     luci-theme-material
+ *             Copyright 2015 Lutty Yang <lutty@wcan.in>
  *
- *  Have a bug? Please create an issue here on GitHub!
- *      https://github.com/LuttyYang/luci-theme-material/issues
+ *     Have a bug? Please create an issue here on GitHub!
+ *             https://github.com/LuttyYang/luci-theme-material/issues
  *
- *  luci-theme-bootstrap:
- *      Copyright 2008 Steven Barth <steven@midlink.org>
- *      Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
- *      Copyright 2012 David Menting <david@nut-bolt.nl>
+ *     luci-theme-bootstrap:
+ *             Copyright 2008 Steven Barth <steven@midlink.org>
+ *             Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+ *             Copyright 2012 David Menting <david@nut-bolt.nl>
  *
- *  MUI:
- *      https://github.com/muicss/mui
+ *     MUI:
+ *             https://github.com/muicss/mui
  *
- *  Licensed to the public under the Apache License 2.0
+ *     Licensed to the public under the Apache License 2.0
  */
+
 (function ($) {
-    $(".main > .loading").fadeOut();
-
-    /**
-     * trim text, Remove spaces, wrap
-     * @param text
-     * @returns {string}
-     */
-    function trimText(text) {
-        return text.replace(/[ \t\n\r]+/g, " ");
-    }
-
-
-    var lastNode = undefined;
-    var mainNodeName = undefined;
-
-    var nodeUrl = "";
-    (function(node){
-        var luciLocation;
-        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;
-        if (!$('body').hasClass('logged-in')) {
-            luciLocation = ["Main", "Login"];
-            return true;
-        }
-
-        $(".main > .main-left > .nav > .slide > .menu").each(function () {
-            var ulNode = $(this);
-            ulNode.next().find("a").each(function () {
-                var that = $(this);
-                var href = that.attr("href");
-
-                if (href.indexOf(nodeUrl) != -1) {
-                    ulNode.click();
-                    ulNode.next(".slide-menu").stop(true, true);
-                    lastNode = that.parent();
-                    lastNode.addClass("active");
-                    ret = true;
-                    return true;
-                }
-            });
-        });
-        return ret;
-    }
-
-    /**
-     * menu click
-     */
-    $(".main > .main-left > .nav > .slide > .menu").click(function () {
-        var ul = $(this).next(".slide-menu");
-        var menu = $(this);
-        if (!ul.is(":visible")) {
-            menu.addClass("active");
-            ul.addClass("active");
-            ul.stop(true).slideDown("fast");
-        } else {
-            ul.stop(true).slideUp("fast", function () {
-                menu.removeClass("active");
-                ul.removeClass("active");
-            });
-        }
-        return false;
-    });
-
-    /**
-     * hook menu click and add the hash
-     */
-    $(".main > .main-left > .nav > .slide > .slide-menu > li > a").click(function () {
-        if (lastNode != undefined) lastNode.removeClass("active");
-        $(this).parent().addClass("active");
-        $(".main > .loading").fadeIn("fast");
-        return true;
-    });
-
-    /**
-     * fix menu click
-     */
-    $(".main > .main-left > .nav > .slide > .slide-menu > li").click(function () {
-        if (lastNode != undefined) lastNode.removeClass("active");
-        $(this).addClass("active");
-        $(".main > .loading").fadeIn("fast");
-        window.location = $($(this).find("a")[0]).attr("href");
-        return false;
-    });
-
-    /**
-     * get current node and open it
-     */
-    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("");
-
-    /**
-     * Sidebar expand
-     */
-    var showSide = false;
-    $(".showSide").click(function () {
-        if (showSide) {
-            $(".darkMask").stop(true).fadeOut("fast");
-            $(".main-left").stop(true).animate({
-                width: "0"
-            }, "fast");
-            $(".main-right").css("overflow-y", "visible");
-            showSide = false;
-        } else {
-            $(".darkMask").stop(true).fadeIn("fast");
-            $(".main-left").stop(true).animate({
-                width: "15rem"
-            }, "fast");
-            $(".main-right").css("overflow-y", "hidden");
-            showSide = true;
-        }
-    });
-
-
-    $(".darkMask").click(function () {
-        if (showSide) {
-            showSide = false;
-            $(".darkMask").stop(true).fadeOut("fast");
-            $(".main-left").stop(true).animate({
-                width: "0"
-            }, "fast");
-            $(".main-right").css("overflow-y", "visible");
-        }
-    });
-
-    $(window).resize(function () {
-        if ($(window).width() > 921) {
-            $(".main-left").css("width", "");
-            $(".darkMask").stop(true);
-            $(".darkMask").css("display", "none");
-            showSide = false;
-        }
-    });
-
-    /**
-     * fix legend position
-     */
-    $("legend").each(function () {
-        var that = $(this);
-        that.after("<span class='panel-title'>" + that.text() + "</span>");
-    });
-
-    $(".cbi-section-table-titles, .cbi-section-table-descr, .cbi-section-descr").each(function () {
-        var that = $(this);
-        if (that.text().trim() == ""){
-            that.css("display", "none");
-        }
-    });
-
-
-    $(".main-right").focus();
-    $(".main-right").blur();
-    $("input").attr("size", "0");
-
-    if (mainNodeName != undefined) {
-        console.log(mainNodeName);
-        switch (mainNodeName) {
-            case "node-status-system_log":
-            case "node-status-kernel_log":
-                $("#syslog").focus(function () {
-                    $("#syslog").blur();
-                    $(".main-right").focus();
-                    $(".main-right").blur();
-                });
-                break;
-            case "node-status-firewall":
-                var button = $(".node-status-firewall > .main fieldset li > a");
-                button.addClass("cbi-button cbi-button-reset a-to-btn");
-                break;
-            case "node-system-reboot":
-                var button = $(".node-system-reboot > .main > .main-right p > a");
-                button.addClass("cbi-button cbi-input-reset a-to-btn");
-                break;
-        }
-    }
+       $(".main > .loading").fadeOut();
+
+       /**
+        * trim text, Remove spaces, wrap
+        * @param text
+        * @returns {string}
+        */
+       function trimText(text) {
+               return text.replace(/[ \t\n\r]+/g, " ");
+       }
+
+       var lastNode = undefined;
+       var mainNodeName = undefined;
+
+       var nodeUrl = "";
+       (function(node){
+               var luciLocation;
+               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;
+               if (!$('body').hasClass('logged-in')) {
+                       luciLocation = ["Main", "Login"];
+                       return true;
+               }
+
+               $(".main > .main-left > .nav > .slide > .menu").each(function () {
+                       var ulNode = $(this);
+                       ulNode.next().find("a").each(function () {
+                               var that = $(this);
+                               var href = that.attr("href");
+
+                               if (href.indexOf(nodeUrl) != -1) {
+                                       ulNode.click();
+                                       ulNode.next(".slide-menu").stop(true, true);
+                                       lastNode = that.parent();
+                                       lastNode.addClass("active");
+                                       ret = true;
+                                       return true;
+                               }
+                       });
+               });
+               return ret;
+       }
+
+       /**
+        * menu click
+        */
+       $(".main > .main-left > .nav > .slide > .menu").click(function () {
+               var ul = $(this).next(".slide-menu");
+               var menu = $(this);
+               if (!ul.is(":visible")) {
+                       menu.addClass("active");
+                       ul.addClass("active");
+                       ul.stop(true).slideDown("fast");
+               } else {
+                       ul.stop(true).slideUp("fast", function () {
+                               menu.removeClass("active");
+                               ul.removeClass("active");
+                       });
+               }
+               return false;
+       });
+
+       /**
+        * hook menu click and add the hash
+        */
+       $(".main > .main-left > .nav > .slide > .slide-menu > li > a").click(function () {
+               if (lastNode != undefined) lastNode.removeClass("active");
+               $(this).parent().addClass("active");
+               $(".main > .loading").fadeIn("fast");
+               return true;
+       });
+
+       /**
+        * fix menu click
+        */
+       $(".main > .main-left > .nav > .slide > .slide-menu > li").click(function () {
+               if (lastNode != undefined) lastNode.removeClass("active");
+               $(this).addClass("active");
+               $(".main > .loading").fadeIn("fast");
+               window.location = $($(this).find("a")[0]).attr("href");
+               return false;
+       });
+
+       /**
+        * get current node and open it
+        */
+       if (getCurrentNodeByUrl()) {
+               mainNodeName = "node-" + luciLocation[0] + "-" + luciLocation[1];
+               mainNodeName = mainNodeName.replace(/[ \t\n\r\/]+/g, "_").toLowerCase();
+               $("body").addClass(mainNodeName);
+       }
+
+       /**
+        * Sidebar expand
+        */
+       var showSide = false;
+       $(".showSide").click(function () {
+               if (showSide) {
+                       $(".darkMask").stop(true).fadeOut("fast");
+                       $(".main-left").stop(true).animate({
+                               width: "0"
+                       }, "fast");
+                       $(".main-right").css("overflow-y", "visible");
+                       showSide = false;
+               } else {
+                       $(".darkMask").stop(true).fadeIn("fast");
+                       $(".main-left").stop(true).animate({
+                               width: "15rem"
+                       }, "fast");
+                       $(".main-right").css("overflow-y", "hidden");
+                       showSide = true;
+               }
+       });
+
+       $(".darkMask").click(function () {
+               if (showSide) {
+                       showSide = false;
+                       $(".darkMask").stop(true).fadeOut("fast");
+                       $(".main-left").stop(true).animate({
+                               width: "0"
+                       }, "fast");
+                       $(".main-right").css("overflow-y", "visible");
+               }
+       });
+
+       $(window).resize(function () {
+               if ($(window).width() > 921) {
+                       $(".main-left").css("width", "");
+                       $(".darkMask").stop(true);
+                       $(".darkMask").css("display", "none");
+                       showSide = false;
+               }
+       });
+
+       /**
+        * fix legend position
+        */
+       $("legend").each(function () {
+               var that = $(this);
+               that.after("<span class='panel-title'>" + that.text() + "</span>");
+       });
+
+       $(".cbi-section-table-titles, .cbi-section-table-descr, .cbi-section-descr").each(function () {
+               var that = $(this);
+               if (that.text().trim() == ""){
+                       that.css("display", "none");
+               }
+       });
+
+       $(".main-right").focus();
+       $(".main-right").blur();
+       $("input").attr("size", "0");
+       $(".cbi-button-up").val("__");
+       $(".cbi-button-down").val("__");
+       $(".slide > a").removeAttr("href");
+
+       if (mainNodeName != undefined) {
+               console.log(mainNodeName);
+               switch (mainNodeName) {
+                       case "node-status-system_log":
+                       case "node-status-kernel_log":
+                               $("#syslog").focus(function () {
+                                       $("#syslog").blur();
+                                       $(".main-right").focus();
+                                       $(".main-right").blur();
+                               });
+                               break;
+                       case "node-status-firewall":
+                               var button = $(".node-status-firewall > .main fieldset li > a");
+                               button.addClass("cbi-button cbi-button-reset a-to-btn");
+                               break;
+                       case "node-system-reboot":
+                               var button = $(".node-system-reboot > .main > .main-right p > a");
+                               button.addClass("cbi-button cbi-input-reset a-to-btn");
+                               break;
+               }
+       }
 
 })(jQuery);