# 843 Fixed notes.
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/53660999 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/53660999 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/53660999 Branch: refs/heads/ignite-843 Commit: 53660999b650d0192aeb664a614cafb0b39753c6 Parents: abe3302 Author: Andrey <anovi...@gridgain.com> Authored: Mon May 18 09:05:30 2015 +0700 Committer: Andrey <anovi...@gridgain.com> Committed: Mon May 18 09:05:30 2015 +0700 ---------------------------------------------------------------------- modules/webconfig/nodejs/app.js | 6 +- .../nodejs/public/javascripts/AdminLTE.js | 281 +++- .../nodejs/public/javascripts/AdminLTE.min.js | 4 +- .../public/javascripts/controllers/cluster.js | 84 -- .../public/javascripts/controllers/clusters.js | 86 ++ .../nodejs/public/stylesheets/AdminLTE.css | 603 ++++++--- .../nodejs/public/stylesheets/AdminLTE.min.css | 6 +- .../nodejs/public/stylesheets/_all-skins.css | 1203 +++++++++++++++--- .../public/stylesheets/_all-skins.min.css | 2 +- .../nodejs/public/stylesheets/skin-ignite.css | 133 ++ .../nodejs/public/stylesheets/style.css | 2 +- .../nodejs/public/stylesheets/style.less | 8 + modules/webconfig/nodejs/routes/cluster.js | 54 - modules/webconfig/nodejs/routes/clusters.js | 54 + modules/webconfig/nodejs/routes/page.js | 20 - modules/webconfig/nodejs/routes/pages.js | 25 + modules/webconfig/nodejs/routes/users.js | 9 - modules/webconfig/nodejs/views/cluster.jade | 7 +- modules/webconfig/nodejs/views/clusterEdit.jade | 9 +- .../webconfig/nodejs/views/includes/footer.jade | 15 +- .../webconfig/nodejs/views/includes/header.jade | 4 +- modules/webconfig/nodejs/views/index.jade | 22 - modules/webconfig/nodejs/views/layout.jade | 27 +- .../nodejs/views/templates/select.jade | 9 + 24 files changed, 2090 insertions(+), 583 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/53660999/modules/webconfig/nodejs/app.js ---------------------------------------------------------------------- diff --git a/modules/webconfig/nodejs/app.js b/modules/webconfig/nodejs/app.js index 7cc610f..bc12c71 100644 --- a/modules/webconfig/nodejs/app.js +++ b/modules/webconfig/nodejs/app.js @@ -6,9 +6,8 @@ var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var session = require('express-session') -var pageRoutes = require('./routes/page'); -var users = require('./routes/users'); -var clusterRouter = require('./routes/cluster'); +var pageRoutes = require('./routes/pages'); +var clusterRouter = require('./routes/clusters'); //var passport = require('passport') //var LocalStrategy = require('passport-local').Strategy; @@ -32,7 +31,6 @@ app.use(express.static(path.join(__dirname, 'public'))); //app.use(passport.session()); app.use('/', pageRoutes); -//app.use('/users', users); app.use('/rest', clusterRouter); // catch 404 and forward to error handler http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/53660999/modules/webconfig/nodejs/public/javascripts/AdminLTE.js ---------------------------------------------------------------------- diff --git a/modules/webconfig/nodejs/public/javascripts/AdminLTE.js b/modules/webconfig/nodejs/public/javascripts/AdminLTE.js index e44da57..aae72a1 100644 --- a/modules/webconfig/nodejs/public/javascripts/AdminLTE.js +++ b/modules/webconfig/nodejs/public/javascripts/AdminLTE.js @@ -7,7 +7,7 @@ * @Author Almsaeed Studio * @Support <http://www.almsaeedstudio.com> * @Email <supp...@almsaeedstudio.com> - * @version 2.0.5 + * @version 2.1.0 * @license MIT <http://opensource.org/licenses/MIT> */ @@ -47,6 +47,10 @@ $.AdminLTE.options = { sidebarPushMenu: true, //Activate sidebar slimscroll if the fixed layout is set (requires SlimScroll Plugin) sidebarSlimScroll: true, + //Enable sidebar expand on hover effect for sidebar mini + //This option is forced to true if both the fixed layout and sidebar mini + //are used together + sidebarExpandOnHover: false, //BoxRefresh Plugin enableBoxRefresh: true, //Bootstrap.js tooltip @@ -57,18 +61,28 @@ $.AdminLTE.options = { //choose to enable the plugin, make sure you load the script //before AdminLTE's app.js enableFastclick: true, + //Control Sidebar Options + enableControlSidebar: true, + controlSidebarOptions: { + //Which button should trigger the open/close event + toggleBtnSelector: "[data-toggle='control-sidebar']", + //The sidebar selector + selector: ".control-sidebar", + //Enable slide over content + slide: true + }, //Box Widget Plugin. Enable this plugin //to allow boxes to be collapsed and/or removed enableBoxWidget: true, //Box Widget plugin options boxWidgetOptions: { boxWidgetIcons: { - //The icon that triggers the collapse event - collapse: 'fa fa-minus', - //The icon that trigger the opening event - open: 'fa fa-plus', - //The icon that triggers the removing event - remove: 'fa fa-times' + //Collapse icon + collapse: 'fa-minus', + //Open icon + open: 'fa-plus', + //Remove icon + remove: 'fa-times' }, boxWidgetSelectors: { //Remove button selector @@ -122,6 +136,13 @@ $.AdminLTE.options = { * options above. */ $(function () { + //Extend options if external options exist + if (typeof AdminLTEOptions !== "undefined") { + $.extend(true, + $.AdminLTE.options, + AdminLTEOptions); + } + //Easy access to options var o = $.AdminLTE.options; @@ -134,23 +155,30 @@ $(function () { //Enable sidebar tree view controls $.AdminLTE.tree('.sidebar'); + //Enable control sidebar + if (o.enableControlSidebar) { + $.AdminLTE.controlSidebar.activate(); + } + //Add slimscroll to navbar dropdown if (o.navbarMenuSlimscroll && typeof $.fn.slimscroll != 'undefined') { $(".navbar .menu").slimscroll({ - height: "200px", + height: o.navbarMenuHeight, alwaysVisible: false, - size: "3px" + size: o.navbarMenuSlimscrollWidth }).css("width", "100%"); } //Activate sidebar push menu if (o.sidebarPushMenu) { - $.AdminLTE.pushMenu(o.sidebarToggleSelector); + $.AdminLTE.pushMenu.activate(o.sidebarToggleSelector); } //Activate Bootstrap tooltip if (o.enableBSToppltip) { - $(o.BSTooltipSelector).tooltip(); + $('body').tooltip({ + selector: o.BSTooltipSelector + }); } //Activate box widget @@ -165,7 +193,7 @@ $(function () { //Activate direct chat widget if (o.directChat.enable) { - $(o.directChat.contactToggleSelector).click(function () { + $(o.directChat.contactToggleSelector).on('click', function () { var box = $(this).parents('.direct-chat').first(); box.toggleClass('direct-chat-contacts-open'); }); @@ -177,7 +205,7 @@ $(function () { */ $('.btn-group[data-toggle="btn-toggle"]').each(function () { var group = $(this); - $(this).find(".btn").click(function (e) { + $(this).find(".btn").on('click', function (e) { group.find(".btn.active").removeClass("active"); $(this).addClass("active"); e.preventDefault(); @@ -222,11 +250,22 @@ function _init() { if ($("body").hasClass("fixed")) { $(".content-wrapper, .right-side").css('min-height', window_height - $('.main-footer').outerHeight()); } else { + var postSetWidth; if (window_height >= sidebar_height) { $(".content-wrapper, .right-side").css('min-height', window_height - neg); + postSetWidth = window_height - neg; } else { $(".content-wrapper, .right-side").css('min-height', sidebar_height); + postSetWidth = sidebar_height; + } + + //Fix for the control sidebar height + var controlSidebar = $($.AdminLTE.options.controlSidebarOptions.selector); + if (typeof controlSidebar !== "undefined") { + if (controlSidebar.height() > postSetWidth) + $(".content-wrapper, .right-side").css('min-height', controlSidebar.height()); } + } }, fixSidebar: function () { @@ -242,7 +281,7 @@ function _init() { //Enable slimscroll for fixed layout if ($.AdminLTE.options.sidebarSlimScroll) { if (typeof $.fn.slimScroll != 'undefined') { - //Distroy if it exists + //Destroy if it exists $(".sidebar").slimScroll({destroy: true}).height("auto"); //Add slimscroll $(".sidebar").slimscroll({ @@ -262,36 +301,71 @@ function _init() { * @type Function * @usage: $.AdminLTE.pushMenu("[data-toggle='offcanvas']") */ - $.AdminLTE.pushMenu = function (toggleBtn) { - //Get the screen sizes - var screenSizes = this.options.screenSizes; + $.AdminLTE.pushMenu = { + activate: function (toggleBtn) { + //Get the screen sizes + var screenSizes = $.AdminLTE.options.screenSizes; - //Enable sidebar toggle - $(toggleBtn).click(function (e) { - e.preventDefault(); + //Enable sidebar toggle + $(toggleBtn).on('click', function (e) { + e.preventDefault(); - //Enable sidebar push menu - if ($(window).width() > (screenSizes.sm - 1)) { - $("body").toggleClass('sidebar-collapse'); - } - //Handle sidebar push menu for small screens - else { - if ($("body").hasClass('sidebar-open')) { + //Enable sidebar push menu + if ($(window).width() > (screenSizes.sm - 1)) { + $("body").toggleClass('sidebar-collapse'); + } + //Handle sidebar push menu for small screens + else { + if ($("body").hasClass('sidebar-open')) { + $("body").removeClass('sidebar-open'); + $("body").removeClass('sidebar-collapse') + } else { + $("body").addClass('sidebar-open'); + } + } + }); + + $(".content-wrapper").click(function () { + //Enable hide menu when clicking on the content-wrapper on small screens + if ($(window).width() <= (screenSizes.sm - 1) && $("body").hasClass("sidebar-open")) { $("body").removeClass('sidebar-open'); - $("body").removeClass('sidebar-collapse') - } else { - $("body").addClass('sidebar-open'); } - } - }); + }); - $(".content-wrapper").click(function () { - //Enable hide menu when clicking on the content-wrapper on small screens - if ($(window).width() <= (screenSizes.sm - 1) && $("body").hasClass("sidebar-open")) { - $("body").removeClass('sidebar-open'); + //Enable expand on hover for sidebar mini + if ($.AdminLTE.options.sidebarExpandOnHover + || ($('body').hasClass('fixed') + && $('body').hasClass('sidebar-mini'))) { + this.expandOnHover(); } - }); + }, + expandOnHover: function () { + var _this = this; + var screenWidth = $.AdminLTE.options.screenSizes.sm - 1; + //Expand sidebar on hover + $('.main-sidebar').hover(function () { + if ($('body').hasClass('sidebar-mini') + && $("body").hasClass('sidebar-collapse') + && $(window).width() > screenWidth) { + _this.expand(); + } + }, function () { + if ($('body').hasClass('sidebar-mini') + && $('body').hasClass('sidebar-expanded-on-hover') + && $(window).width() > screenWidth) { + _this.collapse(); + } + }); + }, + expand: function () { + $("body").removeClass('sidebar-collapse').addClass('sidebar-expanded-on-hover'); + }, + collapse: function () { + if ($('body').hasClass('sidebar-expanded-on-hover')) { + $('body').removeClass('sidebar-expanded-on-hover').addClass('sidebar-collapse'); + } + } }; /* Tree() @@ -305,7 +379,7 @@ function _init() { $.AdminLTE.tree = function (menu) { var _this = this; - $("li a", $(menu)).click(function (e) { + $("li a", $(menu)).on('click', function (e) { //Get the clicked link and the next element var $this = $(this); var checkElement = $this.next(); @@ -348,46 +422,148 @@ function _init() { }); }; + /* ControlSidebar + * ============== + * Adds functionality to the right sidebar + * + * @type Object + * @usage $.AdminLTE.controlSidebar.activate(options) + */ + $.AdminLTE.controlSidebar = { + //instantiate the object + activate: function () { + //Get the object + var _this = this; + //Update options + var o = $.AdminLTE.options.controlSidebarOptions; + //Get the sidebar + var sidebar = $(o.selector); + //The toggle button + var btn = $(o.toggleBtnSelector); + + //Listen to the click event + btn.on('click', function (e) { + e.preventDefault(); + //If the sidebar is not open + if (!sidebar.hasClass('control-sidebar-open') + && !$('body').hasClass('control-sidebar-open')) { + //Open the sidebar + _this.open(sidebar, o.slide); + } else { + _this.close(sidebar, o.slide); + } + }); + + //If the body has a boxed layout, fix the sidebar bg position + var bg = $(".control-sidebar-bg"); + _this._fix(bg); + + //If the body has a fixed layout, make the control sidebar fixed + if ($('body').hasClass('fixed')) { + _this._fixForFixed(sidebar); + } else { + //If the content height is less than the sidebar's height, force max height + if ($('.content-wrapper, .right-side').height() < sidebar.height()) { + _this._fixForContent(sidebar); + } + } + }, + //Open the control sidebar + open: function (sidebar, slide) { + var _this = this; + //Slide over content + if (slide) { + sidebar.addClass('control-sidebar-open'); + } else { + //Push the content by adding the open class to the body instead + //of the sidebar itself + $('body').addClass('control-sidebar-open'); + } + }, + //Close the control sidebar + close: function (sidebar, slide) { + if (slide) { + sidebar.removeClass('control-sidebar-open'); + } else { + $('body').removeClass('control-sidebar-open'); + } + }, + _fix: function (sidebar) { + var _this = this; + if ($("body").hasClass('layout-boxed')) { + sidebar.css('position', 'absolute'); + sidebar.height($(".wrapper").height()); + $(window).resize(function () { + _this._fix(sidebar); + }); + } else { + sidebar.css({ + 'position': 'fixed', + 'height': 'auto' + }); + } + }, + _fixForFixed: function (sidebar) { + sidebar.css({ + 'position': 'fixed', + 'max-height': '100%', + 'overflow': 'auto', + 'padding-bottom': '50px' + }); + }, + _fixForContent: function (sidebar) { + $(".content-wrapper, .right-side").css('min-height', sidebar.height()); + } + }; + /* BoxWidget * ========= - * BoxWidget is plugin to handle collapsing and + * BoxWidget is a plugin to handle collapsing and * removing boxes from the screen. * * @type Object * @usage $.AdminLTE.boxWidget.activate() - * Set all of your option in the main $.AdminLTE.options object + * Set all your options in the main $.AdminLTE.options object */ $.AdminLTE.boxWidget = { + selectors: $.AdminLTE.options.boxWidgetOptions.boxWidgetSelectors, + icons: $.AdminLTE.options.boxWidgetOptions.boxWidgetIcons, activate: function () { - var o = $.AdminLTE.options; var _this = this; //Listen for collapse event triggers - $(o.boxWidgetOptions.boxWidgetSelectors.collapse).click(function (e) { + $(_this.selectors.collapse).on('click', function (e) { e.preventDefault(); _this.collapse($(this)); }); //Listen for remove event triggers - $(o.boxWidgetOptions.boxWidgetSelectors.remove).click(function (e) { + $(_this.selectors.remove).on('click', function (e) { e.preventDefault(); _this.remove($(this)); }); }, collapse: function (element) { + var _this = this; //Find the box parent var box = element.parents(".box").first(); //Find the body and the footer - var bf = box.find(".box-body, .box-footer"); + var box_content = box.find("> .box-body, > .box-footer"); if (!box.hasClass("collapsed-box")) { //Convert minus into plus - element.children(".fa-minus").removeClass("fa-minus").addClass("fa-plus"); - bf.slideUp(300, function () { + element.children(":first") + .removeClass(_this.icons.collapse) + .addClass(_this.icons.open); + //Hide the content + box_content.slideUp(300, function () { box.addClass("collapsed-box"); }); } else { //Convert plus into minus - element.children(".fa-plus").removeClass("fa-plus").addClass("fa-minus"); - bf.slideDown(300, function () { + element.children(":first") + .removeClass(_this.icons.open) + .addClass(_this.icons.collapse); + //Show the content + box_content.slideDown(300, function () { box.removeClass("collapsed-box"); }); } @@ -396,8 +572,7 @@ function _init() { //Find the box parent var box = element.parents(".box").first(); box.slideUp(); - }, - options: $.AdminLTE.options.boxWidgetOptions + } }; } @@ -410,7 +585,7 @@ function _init() { /* * BOX REFRESH BUTTON * ------------------ - * This is a custom plugin to use with the compenet BOX. It allows you to add + * This is a custom plugin to use with the component BOX. It allows you to add * a refresh button to the box. It converts the box's state to a loading state. * * @type plugin @@ -422,7 +597,7 @@ function _init() { // Render options var settings = $.extend({ - //Refressh button selector + //Refresh button selector trigger: ".refresh-btn", //File source to be loaded (e.g: ajax/src.php) source: "", @@ -451,7 +626,7 @@ function _init() { var rBtn = box.find(settings.trigger).first(); //On trigger click - rBtn.click(function (e) { + rBtn.on('click', function (e) { e.preventDefault(); //Add loading overlay start(box); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/53660999/modules/webconfig/nodejs/public/javascripts/AdminLTE.min.js ---------------------------------------------------------------------- diff --git a/modules/webconfig/nodejs/public/javascripts/AdminLTE.min.js b/modules/webconfig/nodejs/public/javascripts/AdminLTE.min.js index b01e4c4..e61cc0f 100644 --- a/modules/webconfig/nodejs/public/javascripts/AdminLTE.min.js +++ b/modules/webconfig/nodejs/public/javascripts/AdminLTE.min.js @@ -7,7 +7,7 @@ * @Author Almsaeed Studio * @Support <http://www.almsaeedstudio.com> * @Email <supp...@almsaeedstudio.com> - * @version 2.0.5 + * @version 2.1.0 * @license MIT <http://opensource.org/licenses/MIT> */ -"use strict";function _init(){$.AdminLTE.layout={activate:function(){var a=this;a.fix(),a.fixSidebar(),$(window,".wrapper").resize(function(){a.fix(),a.fixSidebar()})},fix:function(){var a=$(".main-header").outerHeight()+$(".main-footer").outerHeight(),b=$(window).height(),c=$(".sidebar").height();$("body").hasClass("fixed")?$(".content-wrapper, .right-side").css("min-height",b-$(".main-footer").outerHeight()):b>=c?$(".content-wrapper, .right-side").css("min-height",b-a):$(".content-wrapper, .right-side").css("min-height",c)},fixSidebar:function(){return $("body").hasClass("fixed")?("undefined"==typeof $.fn.slimScroll&&console&&console.error("Error: the fixed layout requires the slimscroll plugin!"),void($.AdminLTE.options.sidebarSlimScroll&&"undefined"!=typeof $.fn.slimScroll&&($(".sidebar").slimScroll({destroy:!0}).height("auto"),$(".sidebar").slimscroll({height:$(window).height()-$(".main-header").height()+"px",color:"rgba(0,0,0,0.2)",size:"3px"})))):void("undefined"!=typeof $.fn .slimScroll&&$(".sidebar").slimScroll({destroy:!0}).height("auto"))}},$.AdminLTE.pushMenu=function(a){var b=this.options.screenSizes;$(a).click(function(a){a.preventDefault(),$(window).width()>b.sm-1?$("body").toggleClass("sidebar-collapse"):$("body").hasClass("sidebar-open")?($("body").removeClass("sidebar-open"),$("body").removeClass("sidebar-collapse")):$("body").addClass("sidebar-open")}),$(".content-wrapper").click(function(){$(window).width()<=b.sm-1&&$("body").hasClass("sidebar-open")&&$("body").removeClass("sidebar-open")})},$.AdminLTE.tree=function(a){var b=this;$("li a",$(a)).click(function(a){var c=$(this),d=c.next();if(d.is(".treeview-menu")&&d.is(":visible"))d.slideUp("normal",function(){d.removeClass("menu-open")}),d.parent("li").removeClass("active");else if(d.is(".treeview-menu")&&!d.is(":visible")){var e=c.parents("ul").first(),f=e.find("ul:visible").slideUp("normal");f.removeClass("menu-open");var g=c.parent("li");d.slideDown("normal",function(){d.addClass("menu-op en"),e.find("li.active").removeClass("active"),g.addClass("active"),b.layout.fix()})}d.is(".treeview-menu")&&a.preventDefault()})},$.AdminLTE.boxWidget={activate:function(){var a=$.AdminLTE.options,b=this;$(a.boxWidgetOptions.boxWidgetSelectors.collapse).click(function(a){a.preventDefault(),b.collapse($(this))}),$(a.boxWidgetOptions.boxWidgetSelectors.remove).click(function(a){a.preventDefault(),b.remove($(this))})},collapse:function(a){var b=a.parents(".box").first(),c=b.find(".box-body, .box-footer");b.hasClass("collapsed-box")?(a.children(".fa-plus").removeClass("fa-plus").addClass("fa-minus"),c.slideDown(300,function(){b.removeClass("collapsed-box")})):(a.children(".fa-minus").removeClass("fa-minus").addClass("fa-plus"),c.slideUp(300,function(){b.addClass("collapsed-box")}))},remove:function(a){var b=a.parents(".box").first();b.slideUp()},options:$.AdminLTE.options.boxWidgetOptions}}if("undefined"==typeof jQuery)throw new Error("AdminLTE requires jQuery");$.AdminLTE={},$.AdminLT E.options={navbarMenuSlimscroll:!0,navbarMenuSlimscrollWidth:"3px",navbarMenuHeight:"200px",sidebarToggleSelector:"[data-toggle='offcanvas']",sidebarPushMenu:!0,sidebarSlimScroll:!0,enableBoxRefresh:!0,enableBSToppltip:!0,BSTooltipSelector:"[data-toggle='tooltip']",enableFastclick:!0,enableBoxWidget:!0,boxWidgetOptions:{boxWidgetIcons:{collapse:"fa fa-minus",open:"fa fa-plus",remove:"fa fa-times"},boxWidgetSelectors:{remove:'[data-widget="remove"]',collapse:'[data-widget="collapse"]'}},directChat:{enable:!0,contactToggleSelector:'[data-widget="chat-pane-toggle"]'},colors:{lightBlue:"#3c8dbc",red:"#f56954",green:"#00a65a",aqua:"#00c0ef",yellow:"#f39c12",blue:"#0073b7",navy:"#001F3F",teal:"#39CCCC",olive:"#3D9970",lime:"#01FF70",orange:"#FF851B",fuchsia:"#F012BE",purple:"#8E24AA",maroon:"#D81B60",black:"#222222",gray:"#d2d6de"},screenSizes:{xs:480,sm:768,md:992,lg:1200}},$(function(){var a=$.AdminLTE.options;_init(),$.AdminLTE.layout.activate(),$.AdminLTE.tree(".sidebar"),a.navbarMenu Slimscroll&&"undefined"!=typeof $.fn.slimscroll&&$(".navbar .menu").slimscroll({height:"200px",alwaysVisible:!1,size:"3px"}).css("width","100%"),a.sidebarPushMenu&&$.AdminLTE.pushMenu(a.sidebarToggleSelector),a.enableBSToppltip&&$(a.BSTooltipSelector).tooltip(),a.enableBoxWidget&&$.AdminLTE.boxWidget.activate(),a.enableFastclick&&"undefined"!=typeof FastClick&&FastClick.attach(document.body),a.directChat.enable&&$(a.directChat.contactToggleSelector).click(function(){var a=$(this).parents(".direct-chat").first();a.toggleClass("direct-chat-contacts-open")}),$('.btn-group[data-toggle="btn-toggle"]').each(function(){var a=$(this);$(this).find(".btn").click(function(b){a.find(".btn.active").removeClass("active"),$(this).addClass("active"),b.preventDefault()})})}),function(a){a.fn.boxRefresh=function(b){function c(a){a.append(f),e.onLoadStart.call(a)}function d(a){a.find(f).remove(),e.onLoadDone.call(a)}var e=a.extend({trigger:".refresh-btn",source:"",onLoadStart:function(){},onLoadDone:f unction(){}},b),f=a('<div class="overlay"><div class="fa fa-refresh fa-spin"></div></div>');return this.each(function(){if(""===e.source)return void(console&&console.log("Please specify a source first - boxRefresh()"));var b=a(this),f=b.find(e.trigger).first();f.click(function(a){a.preventDefault(),c(b),b.find(".box-body").load(e.source,function(){d(b)})})})}}(jQuery),function(a){a.fn.todolist=function(b){var c=a.extend({onCheck:function(){},onUncheck:function(){}},b);return this.each(function(){"undefined"!=typeof a.fn.iCheck?(a("input",this).on("ifChecked",function(){var b=a(this).parents("li").first();b.toggleClass("done"),c.onCheck.call(b)}),a("input",this).on("ifUnchecked",function(){var b=a(this).parents("li").first();b.toggleClass("done"),c.onUncheck.call(b)})):a("input",this).on("change",function(){var b=a(this).parents("li").first();b.toggleClass("done"),c.onCheck.call(b)})})}}(jQuery); \ No newline at end of file +"use strict";function _init(){$.AdminLTE.layout={activate:function(){var a=this;a.fix(),a.fixSidebar(),$(window,".wrapper").resize(function(){a.fix(),a.fixSidebar()})},fix:function(){var a=$(".main-header").outerHeight()+$(".main-footer").outerHeight(),b=$(window).height(),c=$(".sidebar").height();if($("body").hasClass("fixed"))$(".content-wrapper, .right-side").css("min-height",b-$(".main-footer").outerHeight());else{var d;b>=c?($(".content-wrapper, .right-side").css("min-height",b-a),d=b-a):($(".content-wrapper, .right-side").css("min-height",c),d=c);var e=$($.AdminLTE.options.controlSidebarOptions.selector);"undefined"!=typeof e&&e.height()>d&&$(".content-wrapper, .right-side").css("min-height",e.height())}},fixSidebar:function(){return $("body").hasClass("fixed")?("undefined"==typeof $.fn.slimScroll&&console&&console.error("Error: the fixed layout requires the slimscroll plugin!"),void($.AdminLTE.options.sidebarSlimScroll&&"undefined"!=typeof $.fn.slimScroll&&($(".sidebar").slim Scroll({destroy:!0}).height("auto"),$(".sidebar").slimscroll({height:$(window).height()-$(".main-header").height()+"px",color:"rgba(0,0,0,0.2)",size:"3px"})))):void("undefined"!=typeof $.fn.slimScroll&&$(".sidebar").slimScroll({destroy:!0}).height("auto"))}},$.AdminLTE.pushMenu={activate:function(a){var b=$.AdminLTE.options.screenSizes;$(a).on("click",function(a){a.preventDefault(),$(window).width()>b.sm-1?$("body").toggleClass("sidebar-collapse"):$("body").hasClass("sidebar-open")?($("body").removeClass("sidebar-open"),$("body").removeClass("sidebar-collapse")):$("body").addClass("sidebar-open")}),$(".content-wrapper").click(function(){$(window).width()<=b.sm-1&&$("body").hasClass("sidebar-open")&&$("body").removeClass("sidebar-open")}),($.AdminLTE.options.sidebarExpandOnHover||$("body").hasClass("fixed")&&$("body").hasClass("sidebar-mini"))&&this.expandOnHover()},expandOnHover:function(){var a=this,b=$.AdminLTE.options.screenSizes.sm-1;$(".main-sidebar").hover(function(){$("body") .hasClass("sidebar-mini")&&$("body").hasClass("sidebar-collapse")&&$(window).width()>b&&a.expand()},function(){$("body").hasClass("sidebar-mini")&&$("body").hasClass("sidebar-expanded-on-hover")&&$(window).width()>b&&a.collapse()})},expand:function(){$("body").removeClass("sidebar-collapse").addClass("sidebar-expanded-on-hover")},collapse:function(){$("body").hasClass("sidebar-expanded-on-hover")&&$("body").removeClass("sidebar-expanded-on-hover").addClass("sidebar-collapse")}},$.AdminLTE.tree=function(a){var b=this;$("li a",$(a)).on("click",function(a){var c=$(this),d=c.next();if(d.is(".treeview-menu")&&d.is(":visible"))d.slideUp("normal",function(){d.removeClass("menu-open")}),d.parent("li").removeClass("active");else if(d.is(".treeview-menu")&&!d.is(":visible")){var e=c.parents("ul").first(),f=e.find("ul:visible").slideUp("normal");f.removeClass("menu-open");var g=c.parent("li");d.slideDown("normal",function(){d.addClass("menu-open"),e.find("li.active").removeClass("active"),g.ad dClass("active"),b.layout.fix()})}d.is(".treeview-menu")&&a.preventDefault()})},$.AdminLTE.controlSidebar={activate:function(){var a=this,b=$.AdminLTE.options.controlSidebarOptions,c=$(b.selector),d=$(b.toggleBtnSelector);d.on("click",function(d){d.preventDefault(),c.hasClass("control-sidebar-open")||$("body").hasClass("control-sidebar-open")?a.close(c,b.slide):a.open(c,b.slide)});var e=$(".control-sidebar-bg");a._fix(e),$("body").hasClass("fixed")?a._fixForFixed(c):$(".content-wrapper, .right-side").height()<c.height()&&a._fixForContent(c)},open:function(a,b){b?a.addClass("control-sidebar-open"):$("body").addClass("control-sidebar-open")},close:function(a,b){b?a.removeClass("control-sidebar-open"):$("body").removeClass("control-sidebar-open")},_fix:function(a){var b=this;$("body").hasClass("layout-boxed")?(a.css("position","absolute"),a.height($(".wrapper").height()),$(window).resize(function(){b._fix(a)})):a.css({position:"fixed",height:"auto"})},_fixForFixed:function(a){a.css({po sition:"fixed","max-height":"100%",overflow:"auto","padding-bottom":"50px"})},_fixForContent:function(a){$(".content-wrapper, .right-side").css("min-height",a.height())}},$.AdminLTE.boxWidget={selectors:$.AdminLTE.options.boxWidgetOptions.boxWidgetSelectors,icons:$.AdminLTE.options.boxWidgetOptions.boxWidgetIcons,activate:function(){var a=this;$(a.selectors.collapse).on("click",function(b){b.preventDefault(),a.collapse($(this))}),$(a.selectors.remove).on("click",function(b){b.preventDefault(),a.remove($(this))})},collapse:function(a){var b=this,c=a.parents(".box").first(),d=c.find("> .box-body, > .box-footer");c.hasClass("collapsed-box")?(a.children(":first").removeClass(b.icons.open).addClass(b.icons.collapse),d.slideDown(300,function(){c.removeClass("collapsed-box")})):(a.children(":first").removeClass(b.icons.collapse).addClass(b.icons.open),d.slideUp(300,function(){c.addClass("collapsed-box")}))},remove:function(a){var b=a.parents(".box").first();b.slideUp()}}}if("undefined"==ty peof jQuery)throw new Error("AdminLTE requires jQuery");$.AdminLTE={},$.AdminLTE.options={navbarMenuSlimscroll:!0,navbarMenuSlimscrollWidth:"3px",navbarMenuHeight:"200px",sidebarToggleSelector:"[data-toggle='offcanvas']",sidebarPushMenu:!0,sidebarSlimScroll:!0,sidebarExpandOnHover:!1,enableBoxRefresh:!0,enableBSToppltip:!0,BSTooltipSelector:"[data-toggle='tooltip']",enableFastclick:!0,enableControlSidebar:!0,controlSidebarOptions:{toggleBtnSelector:"[data-toggle='control-sidebar']",selector:".control-sidebar",slide:!0},enableBoxWidget:!0,boxWidgetOptions:{boxWidgetIcons:{collapse:"fa-minus",open:"fa-plus",remove:"fa-times"},boxWidgetSelectors:{remove:'[data-widget="remove"]',collapse:'[data-widget="collapse"]'}},directChat:{enable:!0,contactToggleSelector:'[data-widget="chat-pane-toggle"]'},colors:{lightBlue:"#3c8dbc",red:"#f56954",green:"#00a65a",aqua:"#00c0ef",yellow:"#f39c12",blue:"#0073b7",navy:"#001F3F",teal:"#39CCCC",olive:"#3D9970",lime:"#01FF70",orange:"#FF851B",fuchsia:"#F0 12BE",purple:"#8E24AA",maroon:"#D81B60",black:"#222222",gray:"#d2d6de"},screenSizes:{xs:480,sm:768,md:992,lg:1200}},$(function(){"undefined"!=typeof AdminLTEOptions&&$.extend(!0,$.AdminLTE.options,AdminLTEOptions);var a=$.AdminLTE.options;_init(),$.AdminLTE.layout.activate(),$.AdminLTE.tree(".sidebar"),a.enableControlSidebar&&$.AdminLTE.controlSidebar.activate(),a.navbarMenuSlimscroll&&"undefined"!=typeof $.fn.slimscroll&&$(".navbar .menu").slimscroll({height:a.navbarMenuHeight,alwaysVisible:!1,size:a.navbarMenuSlimscrollWidth}).css("width","100%"),a.sidebarPushMenu&&$.AdminLTE.pushMenu.activate(a.sidebarToggleSelector),a.enableBSToppltip&&$("body").tooltip({selector:a.BSTooltipSelector}),a.enableBoxWidget&&$.AdminLTE.boxWidget.activate(),a.enableFastclick&&"undefined"!=typeof FastClick&&FastClick.attach(document.body),a.directChat.enable&&$(a.directChat.contactToggleSelector).on("click",function(){var a=$(this).parents(".direct-chat").first();a.toggleClass("direct-chat-contacts-ope n")}),$('.btn-group[data-toggle="btn-toggle"]').each(function(){var a=$(this);$(this).find(".btn").on("click",function(b){a.find(".btn.active").removeClass("active"),$(this).addClass("active"),b.preventDefault()})})}),function(a){a.fn.boxRefresh=function(b){function c(a){a.append(f),e.onLoadStart.call(a)}function d(a){a.find(f).remove(),e.onLoadDone.call(a)}var e=a.extend({trigger:".refresh-btn",source:"",onLoadStart:function(a){},onLoadDone:function(a){}},b),f=a('<div class="overlay"><div class="fa fa-refresh fa-spin"></div></div>');return this.each(function(){if(""===e.source)return void(console&&console.log("Please specify a source first - boxRefresh()"));var b=a(this),f=b.find(e.trigger).first();f.on("click",function(a){a.preventDefault(),c(b),b.find(".box-body").load(e.source,function(){d(b)})})})}}(jQuery),function(a){a.fn.todolist=function(b){var c=a.extend({onCheck:function(a){},onUncheck:function(a){}},b);return this.each(function(){"undefined"!=typeof a.fn.iCheck?(a("input ",this).on("ifChecked",function(b){var d=a(this).parents("li").first();d.toggleClass("done"),c.onCheck.call(d)}),a("input",this).on("ifUnchecked",function(b){var d=a(this).parents("li").first();d.toggleClass("done"),c.onUncheck.call(d)})):a("input",this).on("change",function(b){var d=a(this).parents("li").first();d.toggleClass("done"),c.onCheck.call(d)})})}}(jQuery); \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/53660999/modules/webconfig/nodejs/public/javascripts/controllers/cluster.js ---------------------------------------------------------------------- diff --git a/modules/webconfig/nodejs/public/javascripts/controllers/cluster.js b/modules/webconfig/nodejs/public/javascripts/controllers/cluster.js deleted file mode 100644 index a758337..0000000 --- a/modules/webconfig/nodejs/public/javascripts/controllers/cluster.js +++ /dev/null @@ -1,84 +0,0 @@ -angular.module('ignite-web-configurator', ['ngTable', 'mgcrea.ngStrap']) - .controller('clusterRouter', ['$scope', '$modal', '$http', '$filter', 'ngTableParams', function($scope, $modal, $http, $filter, ngTableParams) { - $scope.discovery = 'VM'; - - // when landing on the page, get all settings and show them - $http.get('/rest/cluster') - .success(function(data) { - $scope.clusters = data; - - console.log(data); - - $scope.clustersTable = new ngTableParams({ - page: 1, // show first page - count: 10, // count per page - sorting: { - name: 'asc' // initial sorting - } - }, { - total: $scope.clusters.length, // length of data - getData: function($defer, params) { - // use build-in angular filter - var orderedData = params.sorting() ? - $filter('orderBy')($scope.clusters, params.orderBy()) : - $scope.clusters; - - $defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count())); - } - }); - }) - .error(function(data) { - $scope.text = data; - }); - - // Pre-fetch an external template populated with a custom scope - var myOtherModal = $modal({scope: $scope, template: '/cluster/edit', show: false}); - - $scope.submit = function() { - myOtherModal.hide(); - - var data = { - _id: $scope.cluster._id, - name: $scope.cluster.name, - caches: ['cache1', 'cache2', 'cache2'], - discovery: $scope.cluster.discovery, - addresses: ['127.0.0.1', '192.168.1.1'] - }; - - $http.post('/rest/cluster/save', data) - .success(function(data) { - $scope.clusters = data; - - $scope.clustersTable.reload(); - }) - .error(function(data) { - console.log('Error: ' + data); - }); - }; - - $scope.create = function () { - $scope.cluster = { discovery: 'VM' }; - - // Show when some event occurs (use $promise property to ensure the template has been loaded) - myOtherModal.$promise.then(myOtherModal.show); - }; - - $scope.edit = function (cluster) { - $scope.cluster = JSON.parse(JSON.stringify(cluster)); - - // Show when some event occurs (use $promise property to ensure the template has been loaded) - myOtherModal.$promise.then(myOtherModal.show); - }; - - $scope.delete = function (cluster) { - $http.post('/rest/cluster/remove', { _id: cluster._id }) - .success(function(data) { - $scope.clusters = data; - - $scope.clustersTable.reload(); - }) - .error(function(data) { - console.log('Error: ' + data); - }); - }; - }]); \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/53660999/modules/webconfig/nodejs/public/javascripts/controllers/clusters.js ---------------------------------------------------------------------- diff --git a/modules/webconfig/nodejs/public/javascripts/controllers/clusters.js b/modules/webconfig/nodejs/public/javascripts/controllers/clusters.js new file mode 100644 index 0000000..16aef47 --- /dev/null +++ b/modules/webconfig/nodejs/public/javascripts/controllers/clusters.js @@ -0,0 +1,86 @@ +angular.module('ignite-web-configurator', ['ngTable', 'mgcrea.ngStrap', 'ngSanitize']) + .controller('clusterRouter', ['$scope', '$modal', '$http', '$filter', 'ngTableParams', function($scope, $modal, $http, $filter, ngTableParams) { + + $scope.discoveries = [ + {value: 'VM', label: 'VM'}, + {value: 'Multicast', label: 'Multicast'} + ]; + + // when landing on the page, get all settings and show them + $http.get('/rest/cluster') + .success(function(data) { + $scope.clusters = data; + + $scope.clustersTable = new ngTableParams({ + page: 1, // show first page + count: 10, // count per page + sorting: { + name: 'asc' // initial sorting + } + }, { + total: $scope.clusters.length, // length of data + getData: function($defer, params) { + // use build-in angular filter + var orderedData = params.sorting() ? + $filter('orderBy')($scope.clusters, params.orderBy()) : + $scope.clusters; + + $defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count())); + } + }); + }) + .error(function(data) { + $scope.text = data; + }); + + // Pre-fetch an external template populated with a custom scope + var myOtherModal = $modal({scope: $scope, template: '/cluster/edit', show: false}); + + $scope.submit = function() { + var data = { + _id: $scope.cluster._id, + name: $scope.cluster.name, + caches: ['cache1', 'cache2', 'cache2'], + discovery: $scope.cluster.discovery, + addresses: ['127.0.0.1', '192.168.1.1'] + }; + + $http.post('/rest/cluster/save', data) + .success(function(data) { + myOtherModal.hide(); + + $scope.clusters = data; + + $scope.clustersTable.reload(); + }) + .error(function(data) { + console.log('Error: ' + data); + }); + }; + + $scope.create = function () { + $scope.cluster = { discovery: 'VM' }; + + // Show when some event occurs (use $promise property to ensure the template has been loaded) + myOtherModal.$promise.then(myOtherModal.show); + }; + + $scope.edit = function (cluster) { + $scope.cluster = JSON.parse(JSON.stringify(cluster)); + + // Show when some event occurs (use $promise property to ensure the template has been loaded) + myOtherModal.$promise.then(myOtherModal.show); + }; + + $scope.delete = function (cluster) { + $http.post('/rest/cluster/remove', { _id: cluster._id }) + .success(function(data) { + $scope.clusters = data; + + $scope.clustersTable.reload(); + }) + .error(function(data) { + console.log('Error: ' + data); + }); + }; + }]); \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/53660999/modules/webconfig/nodejs/public/stylesheets/AdminLTE.css ---------------------------------------------------------------------- diff --git a/modules/webconfig/nodejs/public/stylesheets/AdminLTE.css b/modules/webconfig/nodejs/public/stylesheets/AdminLTE.css old mode 100644 new mode 100755 index 27b5a7d..55d94d0 --- a/modules/webconfig/nodejs/public/stylesheets/AdminLTE.css +++ b/modules/webconfig/nodejs/public/stylesheets/AdminLTE.css @@ -1,6 +1,7 @@ -@import url(//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic); +@import url(https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic); +@import url(https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic); /*! - * AdminLTE v2.0. + * AdminLTE v2.1.0 * Author: Almsaeed Studio * Website: Almsaeed Studio <http://almsaeedstudio.com> * License: Open source - MIT @@ -29,8 +30,8 @@ body { /* Layout */ .wrapper { min-height: 100%; - position: static; - overflow: hidden; + position: relative; + overflow: hidden!important; } .wrapper:before, .wrapper:after { @@ -51,19 +52,16 @@ body { background: url('../img/boxed-bg.jpg') repeat fixed; } /* - * Content Wrapper - contins main content + * Content Wrapper - contains the main content * ```.right-side has been deprecated as of v2.0.0 in favor of .content-wrapper ``` */ .content-wrapper, .right-side, .main-footer { - -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.32, 1.25, 0.375, 1.15); - -moz-transition: -moz-transform 0.3s cubic-bezier(0.32, 1.25, 0.375, 1.15); - -o-transition: -o-transform 0.3s cubic-bezier(0.32, 1.25, 0.375, 1.15); - transition: transform 0.3s cubic-bezier(0.32, 1.25, 0.375, 1.15); - -webkit-transition: margin-left 0.3s cubic-bezier(0.32, 1.25, 0.375, 1.15); - -o-transition: margin-left 0.3s cubic-bezier(0.32, 1.25, 0.375, 1.15); - transition: margin-left 0.3s cubic-bezier(0.32, 1.25, 0.375, 1.15); + -webkit-transition: -webkit-transform 0.3s ease-in-out, margin 0.3s ease-in-out; + -moz-transition: -moz-transform 0.3s ease-in-out, margin 0.3s ease-in-out; + -o-transition: -o-transform 0.3s ease-in-out, margin 0.3s ease-in-out; + transition: transform 0.3s ease-in-out, margin 0.3s ease-in-out; margin-left: 230px; z-index: 820; } @@ -106,7 +104,7 @@ body { background: #fff; padding: 15px; color: #444; - border-top: 1px solid #eee; + border-top: 1px solid #d2d6de; } /* Fixed layout */ .fixed .main-header, @@ -187,6 +185,9 @@ a:focus { z-index: 1030; } .main-header > .navbar { + -webkit-transition: margin-left 0.3s ease-in-out; + -o-transition: margin-left 0.3s ease-in-out; + transition: margin-left 0.3s ease-in-out; margin-bottom: 0; margin-left: 230px; border: none; @@ -217,7 +218,6 @@ a:focus { } .main-header .navbar-custom-menu, .main-header .navbar-right { - margin-right: 5px; float: right; } @media (max-width: 991px) { @@ -252,6 +252,10 @@ a:focus { .main-header .sidebar-toggle:hover { color: #fff; } +.main-header .sidebar-toggle:focus, +.main-header .sidebar-toggle:active { + background: transparent; +} .main-header .sidebar-toggle .icon-bar { display: none; } @@ -270,6 +274,9 @@ a:focus { line-height: .9; } .main-header .logo { + -webkit-transition: width 0.3s ease-in-out; + -o-transition: width 0.3s ease-in-out; + transition: width 0.3s ease-in-out; display: block; float: left; height: 50px; @@ -280,6 +287,13 @@ a:focus { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; padding: 0 15px; font-weight: 300; + overflow: hidden; +} +.main-header .logo .logo-lg { + display: block; +} +.main-header .logo .logo-mini { + display: none; } .main-header .navbar-brand { color: #fff; @@ -378,6 +392,17 @@ a:focus { padding-top: 100px!important; } } +@media (max-width: 991px) { + .navbar-collapse.pull-left { + float: none!important; + } + .navbar-collapse.pull-left + .navbar-custom-menu { + display: block; + position: absolute; + top: 0; + right: 40px; + } +} /* * Component: Sidebar * ------------------ @@ -391,10 +416,10 @@ a:focus { min-height: 100%; width: 230px; z-index: 810; - -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.32, 1.25, 0.375, 1.15); - -moz-transition: -moz-transform 0.3s cubic-bezier(0.32, 1.25, 0.375, 1.15); - -o-transition: -o-transform 0.3s cubic-bezier(0.32, 1.25, 0.375, 1.15); - transition: transform 0.3s cubic-bezier(0.32, 1.25, 0.375, 1.15); + -webkit-transition: -webkit-transform 0.3s ease-in-out, width 0.3s ease-in-out; + -moz-transition: -moz-transform 0.3s ease-in-out, width 0.3s ease-in-out; + -o-transition: -o-transform 0.3s ease-in-out, width 0.3s ease-in-out; + transition: transform 0.3s ease-in-out, width 0.3s ease-in-out; } @media (max-width: 767px) { .main-sidebar, @@ -426,15 +451,14 @@ a:focus { .sidebar { padding-bottom: 10px; } -.fixed .sidebar { - overflow: auto; - height: 100%; -} .sidebar-form input:focus { border-color: transparent!important; } .user-panel { + position: relative; + width: 100%; padding: 10px; + overflow: hidden; } .user-panel:before, .user-panel:after { @@ -445,16 +469,18 @@ a:focus { clear: both; } .user-panel > .image > img { - width: 45px; - height: 45px; + width: 100%; + max-width: 45px; + height: auto; } .user-panel > .info { - font-weight: 600; padding: 5px 5px 5px 15px; - font-size: 14px; line-height: 1; + position: absolute; + left: 55px; } .user-panel > .info > p { + font-weight: 600; margin-bottom: 9px; } .user-panel > .info > a { @@ -462,7 +488,6 @@ a:focus { padding-right: 5px; margin-top: 3px; font-size: 11px; - font-weight: normal; } .user-panel > .info > a > .fa, .user-panel > .info > a > .ion, @@ -541,12 +566,331 @@ a:focus { width: auto; } /* + * Component: Sidebar Mini + */ +@media (min-width: 768px) { + .sidebar-mini.sidebar-collapse .content-wrapper, + .sidebar-mini.sidebar-collapse .right-side, + .sidebar-mini.sidebar-collapse .main-footer { + margin-left: 50px!important; + z-index: 840; + } + .sidebar-mini.sidebar-collapse .main-sidebar { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0); + width: 50px!important; + z-index: 850; + } + .sidebar-mini.sidebar-collapse .sidebar-menu > li { + position: relative; + } + .sidebar-mini.sidebar-collapse .sidebar-menu > li > a { + margin-right: 0; + } + .sidebar-mini.sidebar-collapse .sidebar-menu > li > a > span { + border-top-right-radius: 4px; + } + .sidebar-mini.sidebar-collapse .sidebar-menu > li:not(.treeview) > a > span { + border-bottom-right-radius: 4px; + } + .sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { + padding-top: 5px; + padding-bottom: 5px; + border-bottom-right-radius: 4px; + } + .sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > span:not(.pull-right), + .sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > .treeview-menu { + display: block!important; + position: absolute; + width: 180px; + left: 50px; + } + .sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > span { + top: 0; + margin-left: -3px; + padding: 12px 5px 12px 20px; + background-color: inherit; + } + .sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > .treeview-menu { + top: 44px; + margin-left: 0; + } + .sidebar-mini.sidebar-collapse .main-sidebar .user-panel > .info, + .sidebar-mini.sidebar-collapse .sidebar-form, + .sidebar-mini.sidebar-collapse .sidebar-menu > li > a > span, + .sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu, + .sidebar-mini.sidebar-collapse .sidebar-menu > li > a > .pull-right, + .sidebar-mini.sidebar-collapse .sidebar-menu li.header { + display: none!important; + } + .sidebar-mini.sidebar-collapse .main-header .logo { + width: 50px; + } + .sidebar-mini.sidebar-collapse .main-header .logo > .logo-mini { + display: block; + margin-left: -15px; + margin-right: -15px; + font-size: 18px; + } + .sidebar-mini.sidebar-collapse .main-header .logo > .logo-lg { + display: none; + } + .sidebar-mini.sidebar-collapse .main-header .navbar { + margin-left: 50px; + } +} +.sidebar-menu, +.main-sidebar .user-panel, +.sidebar-menu > li.header { + white-space: nowrap!important; + overflow: hidden; +} +.sidebar-menu:hover { + overflow: visible; +} +.sidebar-form, +.sidebar-menu > li.header { + overflow: hidden; + text-overflow: clip; +} +.sidebar-menu li > a { + position: relative; +} +.sidebar-menu li > a > .pull-right { + position: absolute; + top: 50%; + right: 10px; + margin-top: -7px; +} +/* + * Component: Control sidebar. By default, this is the right sidebar. + */ +.control-sidebar-bg { + position: fixed; + z-index: 1000; + bottom: 0; +} +.control-sidebar-bg, +.control-sidebar { + top: 0; + right: -230px; + width: 230px; + -webkit-transition: right 0.3s ease-in-out; + -o-transition: right 0.3s ease-in-out; + transition: right 0.3s ease-in-out; +} +.control-sidebar { + position: absolute; + padding-top: 50px; + z-index: 1010; +} +@media (max-width: 768px) { + .control-sidebar { + padding-top: 100px; + } +} +.control-sidebar > .tab-content { + padding: 10px 15px; +} +.control-sidebar.control-sidebar-open, +.control-sidebar.control-sidebar-open + .control-sidebar-bg { + right: 0; +} +.control-sidebar-open .control-sidebar-bg, +.control-sidebar-open .control-sidebar { + right: 0; +} +@media (min-width: 768px) { + .control-sidebar-open .content-wrapper, + .control-sidebar-open .right-side, + .control-sidebar-open .main-footer { + margin-right: 230px; + } +} +.control-sidebar-tabs > li:first-of-type > a { + margin-left: 1px; +} +.control-sidebar-tabs > li:first-of-type > a, +.control-sidebar-tabs > li:first-of-type > a:hover { + border-left-width: 0!important; +} +.control-sidebar-tabs > li > a { + border-radius: 0 !important; +} +.control-sidebar-tabs > li > a, +.control-sidebar-tabs > li > a:hover { + border-top: none; + border-right: none; + border-left: 1px solid transparent!important; + border-bottom: 1px solid transparent!important; +} +.control-sidebar-tabs > li > a .icon { + font-size: 16px; +} +.control-sidebar-tabs > li.active > a, +.control-sidebar-tabs > li.active > a:hover, +.control-sidebar-tabs > li.active > a:focus, +.control-sidebar-tabs > li.active > a:active { + border-top: none!important; + border-right: none!important; + border-bottom: none!important; +} +@media (max-width: 768px) { + .control-sidebar-tabs { + display: table; + } + .control-sidebar-tabs > li { + display: table-cell !important; + } +} +.control-sidebar-heading { + font-weight: 400; + font-size: 16px; + padding: 10px 0; + margin-bottom: 10px; +} +.control-sidebar-subheading { + display: block; + font-weight: 400; + font-size: 14px; +} +.control-sidebar-menu { + list-style: none; + padding: 0; + margin: 0 -15px; +} +.control-sidebar-menu > li > a { + display: block; + padding: 10px 15px; +} +.control-sidebar-menu > li > a:before, +.control-sidebar-menu > li > a:after { + content: " "; + display: table; +} +.control-sidebar-menu > li > a:after { + clear: both; +} +.control-sidebar-menu > li > a > .control-sidebar-subheading { + margin-top: 0; +} +.control-sidebar-menu .menu-icon { + float: left; + width: 35px; + height: 35px; + border-radius: 50%; + text-align: center; + line-height: 35px; +} +.control-sidebar-menu .menu-info { + margin-left: 45px; + margin-top: 3px; +} +.control-sidebar-menu .menu-info > .control-sidebar-subheading { + margin: 0; +} +.control-sidebar-menu .menu-info > p { + margin: 0; + font-size: 11px; +} +.control-sidebar-menu .progress { + margin: 0; +} +.control-sidebar-dark { + color: #b8c7ce; +} +.control-sidebar-dark, +.control-sidebar-dark + .control-sidebar-bg { + background: #222d32; +} +.control-sidebar-dark .control-sidebar-tabs { + border-bottom: #1c2529; +} +.control-sidebar-dark .control-sidebar-tabs > li > a { + background: #181f23; + color: #b8c7ce; +} +.control-sidebar-dark .control-sidebar-tabs > li > a, +.control-sidebar-dark .control-sidebar-tabs > li > a:hover { + border-left-color: #141a1d !important; + border-bottom-color: #141a1d !important; +} +.control-sidebar-dark .control-sidebar-tabs > li > a:hover, +.control-sidebar-dark .control-sidebar-tabs > li > a:focus, +.control-sidebar-dark .control-sidebar-tabs > li > a:active { + background: #1c2529; +} +.control-sidebar-dark .control-sidebar-tabs > li.active > a, +.control-sidebar-dark .control-sidebar-tabs > li.active > a:hover, +.control-sidebar-dark .control-sidebar-tabs > li.active > a:focus, +.control-sidebar-dark .control-sidebar-tabs > li.active > a:active { + background: #222d32; + color: #fff; +} +.control-sidebar-dark .control-sidebar-heading, +.control-sidebar-dark .control-sidebar-subheading { + color: #fff; +} +.control-sidebar-dark .control-sidebar-menu > li > a:hover { + background: #1e282c; +} +.control-sidebar-dark .control-sidebar-menu > li > a .menu-info > p { + color: #b8c7ce; +} +.control-sidebar-light { + color: #5e5e5e; +} +.control-sidebar-light, +.control-sidebar-light + .control-sidebar-bg { + background: #f9fafc; + border-left: 1px solid #d2d6de; +} +.control-sidebar-light .control-sidebar-tabs { + border-bottom: #d2d6de; +} +.control-sidebar-light .control-sidebar-tabs > li > a { + background: #e8ecf4; + color: #444444; +} +.control-sidebar-light .control-sidebar-tabs > li > a, +.control-sidebar-light .control-sidebar-tabs > li > a:hover { + border-left-color: #d2d6de !important; + border-bottom-color: #d2d6de !important; +} +.control-sidebar-light .control-sidebar-tabs > li > a:hover, +.control-sidebar-light .control-sidebar-tabs > li > a:focus, +.control-sidebar-light .control-sidebar-tabs > li > a:active { + background: #eff1f7; +} +.control-sidebar-light .control-sidebar-tabs > li.active > a, +.control-sidebar-light .control-sidebar-tabs > li.active > a:hover, +.control-sidebar-light .control-sidebar-tabs > li.active > a:focus, +.control-sidebar-light .control-sidebar-tabs > li.active > a:active { + background: #f9fafc; + color: #111; +} +.control-sidebar-light .control-sidebar-heading, +.control-sidebar-light .control-sidebar-subheading { + color: #111; +} +.control-sidebar-light .control-sidebar-menu { + margin-left: -14px; +} +.control-sidebar-light .control-sidebar-menu > li > a:hover { + background: #f4f4f5; +} +.control-sidebar-light .control-sidebar-menu > li > a .menu-info > p { + color: #5e5e5e; +} +/* * Component: Dropdown menus * ------------------------- */ /*Dropdowns in general*/ .dropdown-menu { - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); + box-shadow: none; border-color: #eee; } .dropdown-menu > li > a { @@ -564,10 +908,10 @@ a:focus { .dropdown-menu > .divider { background-color: #eee; } -/* - Navbar custom dropdown menu ------------------------------------- -*/ +.navbar-nav .dropdown-menu { + -webkit-box-shadow: none !important; + box-shadow: none !important; +} .navbar-nav > .notifications-menu, .navbar-nav > .messages-menu, .navbar-nav > .tasks-menu { @@ -831,23 +1175,23 @@ a:focus { } @-webkit-keyframes flipInX { 0% { - transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - transition-timing-function: ease-in; + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + -webkit-transition-timing-function: ease-in; opacity: 0; } 40% { - transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - transition-timing-function: ease-in; + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + -webkit-transition-timing-function: ease-in; } 60% { - transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); opacity: 1; } 80% { - transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); } 100% { - transform: perspective(400px); + -webkit-transform: perspective(400px); } } /* Fix dropdown menu in navbars */ @@ -1298,19 +1642,23 @@ a:focus { margin-bottom: 0.3em; } .box > .overlay, -.box > .loading-img { +.overlay-wrapper > .overlay, +.box > .loading-img, +.overlay-wrapper > .loading-img { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } -.box .overlay { - z-index: 1010; +.box .overlay, +.overlay-wrapper .overlay { + z-index: 50; background: rgba(255, 255, 255, 0.7); border-radius: 3px; } -.box .overlay > .fa { +.box .overlay > .fa, +.overlay-wrapper .overlay > .fa { position: absolute; top: 50%; left: 50%; @@ -1319,23 +1667,30 @@ a:focus { color: #000; font-size: 30px; } -.box .overlay.dark { +.box .overlay.dark, +.overlay-wrapper .overlay.dark { background: rgba(0, 0, 0, 0.5); } -.box-header { - color: #444; - display: block; - padding: 10px; - position: relative; -} .box-header:before, -.box-header:after { +.box-body:before, +.box-footer:before, +.box-header:after, +.box-body:after, +.box-footer:after { content: " "; display: table; } -.box-header:after { +.box-header:after, +.box-body:after, +.box-footer:after { clear: both; } +.box-header { + color: #444; + display: block; + padding: 10px; + position: relative; +} .box-header.with-border { border-bottom: 1px solid #f4f4f4; } @@ -1396,15 +1751,6 @@ a:focus { .box-body > .table { margin-bottom: 0; } -.box-body > .chart { - position: relative; - overflow: hidden; - width: 100%; -} -.box-body > .chart svg, -.box-body > .chart canvas { - width: 100%!important; -} .box-body .fc { margin-top: 5px; } @@ -1981,6 +2327,12 @@ a:focus { * Component: Nav * -------------- */ +.nav > li > a:hover, +.nav > li > a:active, +.nav > li > a:focus { + color: #444; + background: #f7f7f7; +} /* NAV PILLS */ .nav-pills > li > a { border-radius: 0; @@ -1993,17 +2345,13 @@ a:focus { margin-right: 5px; } .nav-pills > li.active > a, -.nav-pills > li.active > a:hover { - background-color: #f4f4f4; +.nav-pills > li.active > a:hover, +.nav-pills > li.active > a:focus { border-top-color: #3c8dbc; - color: #444; } .nav-pills > li.active > a { font-weight: 600; } -.nav-pills > li > a:hover { - background-color: #f6f6f6; -} /* NAV STACKED */ .nav-stacked > li > a { border-radius: 0; @@ -2013,10 +2361,8 @@ a:focus { } .nav-stacked > li.active > a, .nav-stacked > li.active > a:hover { - background-color: #f4f4f4; border-top: 0; border-left-color: #3c8dbc; - color: #444; } .nav-stacked > li.header { border-bottom: 1px solid #ddd; @@ -2044,6 +2390,7 @@ a:focus { margin-right: 5px; } .nav-tabs-custom > .nav-tabs > li > a { + color: #444; border-radius: 0 !important; } .nav-tabs-custom > .nav-tabs > li > a, @@ -2051,6 +2398,9 @@ a:focus { background: transparent; margin: 0; } +.nav-tabs-custom > .nav-tabs > li > a:hover { + color: #999; +} .nav-tabs-custom > .nav-tabs > li:not(.active) > a:hover, .nav-tabs-custom > .nav-tabs > li:not(.active) > a:focus, .nav-tabs-custom > .nav-tabs > li:not(.active) > a:active { @@ -2062,9 +2412,10 @@ a:focus { .nav-tabs-custom > .nav-tabs > li.active > a, .nav-tabs-custom > .nav-tabs > li.active:hover > a { background-color: #fff; + color: #444; } .nav-tabs-custom > .nav-tabs > li.active > a { - border-top: 0; + border-top-color: transparent; border-left-color: #f4f4f4; border-right-color: #f4f4f4; } @@ -2072,7 +2423,7 @@ a:focus { margin-left: 0; } .nav-tabs-custom > .nav-tabs > li:first-of-type.active > a { - border-left-width: 0; + border-left-color: transparent; } .nav-tabs-custom > .nav-tabs.pull-right { float: none!important; @@ -2083,9 +2434,12 @@ a:focus { .nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type { margin-right: 0; } -.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type.active > a { +.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type > a { border-left-width: 1px; - border-right-width: 0; +} +.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type.active > a { + border-left-color: #f4f4f4; + border-right-color: transparent; } .nav-tabs-custom > .nav-tabs > li.header { line-height: 35px; @@ -2104,21 +2458,16 @@ a:focus { border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; } -/* Nav tabs bottom */ -.tabs-bottom.nav-3 li a { - width: 3333.33333333% !important; -} -.tabs-bottom li a { - border: 0; +.nav-tabs-custom .dropdown.open > a:active, +.nav-tabs-custom .dropdown.open > a:focus { + background: transparent; + color: #999; } /* PAGINATION */ .pagination > li > a { background: #fafafa; color: #666; -} -.pagination > li:first-of-type a, -.pagination > li:last-of-type a { - border-radius: 0; + border-radius: 0 !important; } /* * Component: Products List @@ -2346,10 +2695,10 @@ table.text-center th { transform: translate(0, 0); } .direct-chat-contacts { - -webkit-transform: translate(100%, 0); - -ms-transform: translate(100%, 0); - -o-transform: translate(100%, 0); - transform: translate(100%, 0); + -webkit-transform: translate(101%, 0); + -ms-transform: translate(101%, 0); + -o-transform: translate(101%, 0); + transform: translate(101%, 0); position: absolute; top: 0; bottom: 0; @@ -2456,11 +2805,15 @@ table.text-center th { padding: 10px; text-align: center; } -.users-list > li > img { +.users-list > li img { border-radius: 50%; max-width: 100%; height: auto; } +.users-list > li > a:hover, +.users-list > li > a:hover .users-list-name { + color: #999; +} .users-list-name, .users-list-date { display: block; @@ -2472,9 +2825,6 @@ table.text-center th { white-space: nowrap; text-overflow: ellipsis; } -.users-list-name:hover { - color: #999; -} .users-list-date { color: #999; font-size: 12px; @@ -2608,52 +2958,6 @@ table.text-center th { max-width: 100%; height: auto; } -.mailbox .table-mailbox { - border-left: 1px solid #f4f4f4; - border-right: 1px solid #f4f4f4; - border-bottom: 1px solid #f4f4f4; -} -.mailbox .table-mailbox tr.unread > td { - background-color: rgba(0, 0, 0, 0.05); - color: #000; - font-weight: 600; -} -.mailbox .table-mailbox tr > td > .fa.fa-star, -.mailbox .table-mailbox tr > td > .fa.fa-star-o, -.mailbox .table-mailbox tr > td > .glyphicon.glyphicon-star, -.mailbox .table-mailbox tr > td > .glyphicon.glyphicon-star-empty { - color: #f39c12; - cursor: pointer; -} -.mailbox .table-mailbox tr > td.small-col { - width: 30px; -} -.mailbox .table-mailbox tr > td.name { - width: 150px; - font-weight: 600; -} -.mailbox .table-mailbox tr > td.time { - text-align: right; - width: 100px; -} -.mailbox .table-mailbox tr > td { - white-space: nowrap; -} -.mailbox .table-mailbox tr > td > a { - color: #444; -} -@media (max-width: 991px) { - .mailbox .nav-stacked > li:not(.header) { - float: left; - width: 50%; - } - .mailbox .nav-stacked > li:not(.header).header { - border: 0!important; - } - .mailbox .search-form { - margin-top: 10px; - } -} /* * Page: Lock Screen * ----------------- @@ -3581,7 +3885,6 @@ fieldset[disabled] .btn-vk.active { * General: Miscellaneous * ---------------------- */ -/* 10px padding and margins */ .pad { padding: 10px; } @@ -3591,12 +3894,10 @@ fieldset[disabled] .btn-vk.active { .margin-bottom { margin-bottom: 20px; } -/* Display inline */ .inline { display: inline; width: auto; } -/* Description Blocks */ .description-block { display: block; margin: 10px 0; @@ -3614,7 +3915,6 @@ fieldset[disabled] .btn-vk.active { .description-block > .description-text { text-transform: uppercase; } -/* Background colors */ .bg-red, .bg-yellow, .bg-aqua, @@ -3807,7 +4107,6 @@ fieldset[disabled] .btn-vk.active { opacity: 0.65; filter: alpha(opacity=65); } -/* Text colors */ .text-red { color: #dd4b39 !important; } @@ -3856,27 +4155,21 @@ fieldset[disabled] .btn-vk.active { .text-maroon { color: #d81b60 !important; } -/*Hide elements by display none only*/ .hide { display: none !important; } -/* Remove borders */ .no-border { border: 0px !important; } -/* Remove padding */ .no-padding { padding: 0px !important; } -/* Remove margins */ .no-margin { margin: 0px !important; } -/* Remove box shadow */ .no-shadow { box-shadow: none!important; } -/* Unstyled List */ .list-unstyled, .chart-legend, .contacts-list, @@ -3886,7 +4179,6 @@ fieldset[disabled] .btn-vk.active { margin: 0; padding: 0; } -/* Remove border radius */ .flat { border-radius: 0 !important; } @@ -3895,15 +4187,11 @@ fieldset[disabled] .btn-vk.active { .text-bold.table th { font-weight: 700; } -/* _fix for sparkline tooltip */ .jqstooltip { padding: 5px!important; width: auto!important; height: auto!important; } -/* -Gradient Background colors -*/ .bg-teal-gradient { background: #39cccc !important; background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #39cccc), color-stop(1, #7adddd)) !important; @@ -4020,6 +4308,15 @@ Gradient Background colors opacity: 1; filter: alpha(opacity=100); } +.chart { + position: relative; + overflow: hidden; + width: 100%; +} +.chart svg, +.chart canvas { + width: 100%!important; +} /* * Misc: print * -----------