diff --git a/README.md b/README.md index 5369588..2f53447 100644 --- a/README.md +++ b/README.md @@ -23,4 +23,6 @@ You can download the last version [here](http://www.ezservermonitor.com/esm-web/ The [documentation](http://www.ezservermonitor.com/esm-web/documentation) explains all the parameters of *esm.config.json*. +Changelog is available [here](http://www.ezservermonitor.com/esm-web/changelog). + **View more information on the [official website](http://www.ezservermonitor.com/esm-web/features).** \ No newline at end of file diff --git a/autoload.php b/autoload.php new file mode 100644 index 0000000..6487133 --- /dev/null +++ b/autoload.php @@ -0,0 +1,8 @@ +checkUpdate(); ?> @@ -169,6 +168,12 @@ $update = $Config->checkUpdate(); Bogomips + get('cpu:enable_temperature')): ?> + + Temperature + + + diff --git a/js/esm.js b/js/esm.js index 40ed93b..c40d875 100644 --- a/js/esm.js +++ b/js/esm.js @@ -3,11 +3,17 @@ var esm = {}; esm.getSystem = function() { - $.get('libs/system.php', function(data) { + var module = 'system'; + + esm.reloadBlock_spin(module); - var $box = $('.box#esm-system .box-content tbody'); + $.get('libs/'+module+'.php', function(data) { - esm.insertDatas($box, 'system', data); + var $box = $('.box#esm-'+module+' .box-content tbody'); + + esm.insertDatas($box, module, data); + + esm.reloadBlock_spin(module); }, 'json'); @@ -16,14 +22,20 @@ esm.getSystem = function() { esm.getLoad_average = function() { - $.get('libs/load_average.php', function(data) { + var module = 'load_average'; + + esm.reloadBlock_spin(module); - var $box = $('.box#esm-load_average .box-content'); + $.get('libs/'+module+'.php', function(data) { + + var $box = $('.box#esm-'+module+' .box-content'); esm.reconfigureGauge($('input#load-average_1', $box), data[0]); esm.reconfigureGauge($('input#load-average_5', $box), data[1]); esm.reconfigureGauge($('input#load-average_15', $box), data[2]); + esm.reloadBlock_spin(module); + }, 'json'); } @@ -31,11 +43,17 @@ esm.getLoad_average = function() { esm.getCpu = function() { - $.get('libs/cpu.php', function(data) { + var module = 'cpu'; + + esm.reloadBlock_spin(module); - var $box = $('.box#esm-cpu .box-content tbody'); + $.get('libs/'+module+'.php', function(data) { - esm.insertDatas($box, 'cpu', data); + var $box = $('.box#esm-'+module+' .box-content tbody'); + + esm.insertDatas($box, module, data); + + esm.reloadBlock_spin(module); }, 'json'); @@ -44,11 +62,17 @@ esm.getCpu = function() { esm.getMemory = function() { - $.get('libs/memory.php', function(data) { + var module = 'memory'; + + esm.reloadBlock_spin(module); - var $box = $('.box#esm-memory .box-content tbody'); + $.get('libs/'+module+'.php', function(data) { - esm.insertDatas($box, 'memory', data); + var $box = $('.box#esm-'+module+' .box-content tbody'); + + esm.insertDatas($box, module, data); + + esm.reloadBlock_spin(module); // Percent bar var $progress = $('.progressbar', $box); @@ -72,11 +96,15 @@ esm.getMemory = function() { esm.getSwap = function() { - $.get('libs/swap.php', function(data) { + var module = 'swap'; + + esm.reloadBlock_spin(module); - var $box = $('.box#esm-swap .box-content tbody'); + $.get('libs/'+module+'.php', function(data) { - esm.insertDatas($box, 'swap', data); + var $box = $('.box#esm-'+module+' .box-content tbody'); + + esm.insertDatas($box, module, data); // Percent bar var $progress = $('.progressbar', $box); @@ -92,6 +120,8 @@ esm.getSwap = function() { $progress.addClass('orange'); else $progress.addClass('red'); + + esm.reloadBlock_spin(module); }, 'json'); @@ -100,9 +130,13 @@ esm.getSwap = function() { esm.getDisk = function() { - $.get('libs/disk.php', function(data) { + var module = 'disk'; + + esm.reloadBlock_spin(module); - var $box = $('.box#esm-disk .box-content tbody'); + $.get('libs/'+module+'.php', function(data) { + + var $box = $('.box#esm-'+module+' .box-content tbody'); $box.empty(); for (var line in data) @@ -127,6 +161,8 @@ esm.getDisk = function() { $box.append(html); } + + esm.reloadBlock_spin(module); }, 'json'); @@ -135,9 +171,13 @@ esm.getDisk = function() { esm.getLast_login = function() { - $.get('libs/last_login.php', function(data) { + var module = 'last_login'; + + esm.reloadBlock_spin(module); - var $box = $('.box#esm-last_login .box-content tbody'); + $.get('libs/'+module+'.php', function(data) { + + var $box = $('.box#esm-'+module+' .box-content tbody'); $box.empty(); for (var line in data) @@ -150,6 +190,8 @@ esm.getLast_login = function() { $box.append(html); } + + esm.reloadBlock_spin(module); }, 'json'); @@ -158,9 +200,13 @@ esm.getLast_login = function() { esm.getNetwork = function() { - $.get('libs/network.php', function(data) { + var module = 'network'; + + esm.reloadBlock_spin(module); - var $box = $('.box#esm-network .box-content tbody'); + $.get('libs/'+module+'.php', function(data) { + + var $box = $('.box#esm-'+module+' .box-content tbody'); $box.empty(); for (var line in data) @@ -176,6 +222,8 @@ esm.getNetwork = function() { $box.append(html); } + esm.reloadBlock_spin(module); + }, 'json'); } @@ -183,9 +231,13 @@ esm.getNetwork = function() { esm.getPing = function() { - $.get('libs/ping.php', function(data) { + var module = 'ping'; + + esm.reloadBlock_spin(module); - var $box = $('.box#esm-ping .box-content tbody'); + $.get('libs/'+module+'.php', function(data) { + + var $box = $('.box#esm-'+module+' .box-content tbody'); $box.empty(); for (var line in data) @@ -198,6 +250,8 @@ esm.getPing = function() { $box.append(html); } + + esm.reloadBlock_spin(module); }, 'json'); @@ -206,9 +260,13 @@ esm.getPing = function() { esm.getServices = function() { - $.get('libs/services.php', function(data) { + var module = 'services'; + + esm.reloadBlock_spin(module); - var $box = $('.box#esm-services .box-content tbody'); + $.get('libs/'+module+'.php', function(data) { + + var $box = $('.box#esm-'+module+' .box-content tbody'); $box.empty(); for (var line in data) @@ -225,14 +283,14 @@ esm.getServices = function() { $box.append(html); } + + esm.reloadBlock_spin(module); }, 'json'); } - - esm.getAll = function() { esm.getSystem(); esm.getCpu(); @@ -247,7 +305,18 @@ esm.getAll = function() { } esm.reloadBlock = function(block) { + esm.mapping[block](); + +} + +esm.reloadBlock_spin = function(block) { + + var $module = $('.box#esm-'+block); + + $('.reload', $module).toggleClass('spin disabled'); + $('.box-content', $module).toggleClass('faded'); + } esm.insertDatas = function($box, block, datas) { diff --git a/js/plugins/jquery.knob.js b/js/plugins/jquery.knob.js index a23a1c6..163847b 100644 --- a/js/plugins/jquery.knob.js +++ b/js/plugins/jquery.knob.js @@ -2,7 +2,7 @@ /** * Downward compatible, touchable dial * - * Version: 1.2.8 + * Version: 1.2.11 * Requires: jQuery v1.7+ * * Copyright (c) 2012 Anthony Terrien @@ -10,7 +10,15 @@ * * Thanks to vor, eskimoblood, spiffistan, FabrizioC */ -(function($) { +(function (factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['jquery'], factory); + } else { + // Browser globals + factory(jQuery); + } +}(function ($) { /** * Kontrol library @@ -80,43 +88,41 @@ ._draw(); }; - if(this.$.data('kontroled')) return; + if (this.$.data('kontroled')) return; this.$.data('kontroled', true); this.extend(); - this.o = $.extend( - { + this.o = $.extend({ // Config - min : this.$.data('min') !== undefined ? this.$.data('min') : 0, - max : this.$.data('max') !== undefined ? this.$.data('max') : 100, - stopper : true, - readOnly : this.$.data('readonly') || (this.$.attr('readonly') === 'readonly'), + min: this.$.data('min') !== undefined ? this.$.data('min') : 0, + max: this.$.data('max') !== undefined ? this.$.data('max') : 100, + stopper: true, + readOnly: this.$.data('readonly') || (this.$.attr('readonly') === 'readonly'), // UI - cursor : (this.$.data('cursor') === true && 30) || - this.$.data('cursor') || 0, - thickness : ( - this.$.data('thickness') && - Math.max(Math.min(this.$.data('thickness'), 1), 0.01) - ) || 0.35, - lineCap : this.$.data('linecap') || 'butt', - width : this.$.data('width') || 200, - height : this.$.data('height') || 200, - displayInput : this.$.data('displayinput') == null || this.$.data('displayinput'), - displayPrevious : this.$.data('displayprevious'), - fgColor : this.$.data('fgcolor') || '#87CEEB', + cursor: this.$.data('cursor') === true && 30 + || this.$.data('cursor') || 0, + thickness: this.$.data('thickness') + && Math.max(Math.min(this.$.data('thickness'), 1), 0.01) + || 0.35, + lineCap: this.$.data('linecap') || 'butt', + width: this.$.data('width') || 200, + height: this.$.data('height') || 200, + displayInput: this.$.data('displayinput') == null || this.$.data('displayinput'), + displayPrevious: this.$.data('displayprevious'), + fgColor: this.$.data('fgcolor') || '#87CEEB', inputColor: this.$.data('inputcolor'), font: this.$.data('font') || 'Arial', fontWeight: this.$.data('font-weight') || 'bold', - inline : false, - step : this.$.data('step') || 1, + inline: false, + step: this.$.data('step') || 1, rotation: this.$.data('rotation'), // Hooks - draw : null, // function () {} - change : null, // function (value) {} - cancel : null, // function () {} - release : null, // function (value) {} + draw: null, // function () {} + change: null, // function (value) {} + cancel: null, // function () {} + release: null, // function (value) {} // Output formatting, allows to add unit: %, ms ... format: function(v) { @@ -130,12 +136,12 @@ // finalize options this.o.flip = this.o.rotation === 'anticlockwise' || this.o.rotation === 'acw'; - if(!this.o.inputColor) { + if (!this.o.inputColor) { this.o.inputColor = this.o.fgColor; } // routing value - if(this.$.is('fieldset')) { + if (this.$.is('fieldset')) { // fieldset = array of integer this.v = {}; @@ -146,33 +152,31 @@ s.v[k] = s.o.parse($this.val()); $this.bind( - 'change blur' - , function () { + 'change blur', + function () { var val = {}; val[k] = $this.val(); - s.val(val); + s.val(s._validate(val)); } ); }); this.$.find('legend').remove(); - } else { // input = integer this.i = this.$; this.v = this.o.parse(this.$.val()); - (this.v === '') && (this.v = this.o.min); - + this.v === '' && (this.v = this.o.min); this.$.bind( - 'change blur' - , function () { + 'change blur', + function () { s.val(s._validate(s.o.parse(s.$.val()))); } ); } - (!this.o.displayInput) && this.$.hide(); + !this.o.displayInput && this.$.hide(); // adds needed DOM elements (canvas, div) this.$c = $(document.createElement('canvas')).attr({ @@ -191,7 +195,7 @@ this.$div = this.$.parent(); if (typeof G_vmlCanvasManager !== 'undefined') { - G_vmlCanvasManager.initElement(this.$c[0]); + G_vmlCanvasManager.initElement(this.$c[0]); } this.c = this.$c[0].getContext ? this.$c[0].getContext('2d') : null; @@ -205,21 +209,20 @@ } // hdpi support - this.scale = (window.devicePixelRatio || 1) / - ( + this.scale = (window.devicePixelRatio || 1) / ( this.c.webkitBackingStorePixelRatio || this.c.mozBackingStorePixelRatio || this.c.msBackingStorePixelRatio || this.c.oBackingStorePixelRatio || this.c.backingStorePixelRatio || 1 - ); + ); // detects relative width / height - this.relativeWidth = ((this.o.width % 1 !== 0) && - this.o.width.indexOf('%')); - this.relativeHeight = ((this.o.height % 1 !== 0) && - this.o.height.indexOf('%')); - this.relative = (this.relativeWidth || this.relativeHeight); + this.relativeWidth = this.o.width % 1 !== 0 + && this.o.width.indexOf('%'); + this.relativeHeight = this.o.height % 1 !== 0 + && this.o.height.indexOf('%'); + this.relative = this.relativeWidth || this.relativeHeight; // computes size and carves the component this._carve(); @@ -253,15 +256,15 @@ }; this._carve = function() { - if(this.relative) { + if (this.relative) { var w = this.relativeWidth ? - this.$div.parent().width() * - parseInt(this.o.width) / 100 : - this.$div.parent().width(), + this.$div.parent().width() * + parseInt(this.o.width) / 100 + : this.$div.parent().width(), h = this.relativeHeight ? - this.$div.parent().height() * - parseInt(this.o.height) / 100 : - this.$div.parent().height(); + this.$div.parent().height() * + parseInt(this.o.height) / 100 + : this.$div.parent().height(); // apply relative this.w = this.h = Math.min(w, h); @@ -302,25 +305,21 @@ s.clear(); - s.dH - && (d = s.dH()); - - (d !== false) && s.draw(); + s.dH && (d = s.dH()); + d !== false && s.draw(); }; this._touch = function (e) { - var touchMove = function (e) { - var v = s.xy2val( e.originalEvent.touches[s.t].pageX, e.originalEvent.touches[s.t].pageY - ); + ); if (v == s.cv) return; - if (s.cH && (s.cH(v) === false)) return; + if (s.cH && s.cH(v) === false) return; s.change(s._validate(v)); s._draw(); @@ -336,8 +335,8 @@ k.c.d .bind("touchmove.k", touchMove) .bind( - "touchend.k" - , function () { + "touchend.k", + function () { k.c.d.unbind('touchmove.k touchend.k'); s.val(s.cv); } @@ -347,7 +346,6 @@ }; this._mouse = function (e) { - var mouseMove = function (e) { var v = s.xy2val(e.pageX, e.pageY); @@ -367,23 +365,21 @@ .bind("mousemove.k", mouseMove) .bind( // Escape key cancel current change - "keyup.k" - , function (e) { + "keyup.k", + function (e) { if (e.keyCode === 27) { k.c.d.unbind("mouseup.k mousemove.k keyup.k"); - if ( - s.eH - && (s.eH() === false) - ) return; + if (s.eH && s.eH() === false) + return; s.cancel(); } } ) .bind( - "mouseup.k" - , function (e) { + "mouseup.k", + function (e) { k.c.d.unbind('mousemove.k mouseup.k keyup.k'); s.val(s.cv); } @@ -396,26 +392,26 @@ var o = this.$c.offset(); this.x = o.left; this.y = o.top; + return this; }; this._listen = function () { - if (!this.o.readOnly) { this.$c .bind( - "mousedown" - , function (e) { + "mousedown", + function (e) { e.preventDefault(); s._xy()._mouse(e); - } + } ) .bind( - "touchstart" - , function (e) { + "touchstart", + function (e) { e.preventDefault(); s._xy()._touch(e); - } + } ); this.listen(); @@ -423,10 +419,9 @@ this.$.attr('readonly', 'readonly'); } - if(this.relative) { + if (this.relative) { $(window).resize(function() { - s._carve() - .init(); + s._carve().init(); s._draw(); }); } @@ -456,8 +451,9 @@ this.$c[0].width = this.$c[0].width; }; - this._validate = function(v) { - return (~~ (((v < 0) ? -0.5 : 0.5) + (v/this.o.step))) * this.o.step; + this._validate = function (v) { + var val = (~~ (((v < 0) ? -0.5 : 0.5) + (v/this.o.step))) * this.o.step; + return Math.round(val * 100) / 100; }; // Abstract methods @@ -474,14 +470,19 @@ this.h2rgba = function (h, a) { var rgb; h = h.substring(1,7) - rgb = [parseInt(h.substring(0,2),16) - ,parseInt(h.substring(2,4),16) - ,parseInt(h.substring(4,6),16)]; + rgb = [ + parseInt(h.substring(0,2), 16), + parseInt(h.substring(2,4), 16), + parseInt(h.substring(4,6), 16) + ]; + return "rgba(" + rgb[0] + "," + rgb[1] + "," + rgb[2] + "," + a + ")"; }; this.copy = function (f, t) { - for (var i in f) { t[i] = f[i]; } + for (var i in f) { + t[i] = f[i]; + } }; }; @@ -501,14 +502,12 @@ this.PI2 = 2*Math.PI; this.extend = function () { - this.o = $.extend( - { - bgColor : this.$.data('bgcolor') || '#EEEEEE', - angleOffset : this.$.data('angleoffset') || 0, - angleArc : this.$.data('anglearc') || 360, - inline : true - }, this.o - ); + this.o = $.extend({ + bgColor: this.$.data('bgcolor') || '#EEEEEE', + angleOffset: this.$.data('angleoffset') || 0, + angleArc: this.$.data('anglearc') || 360, + inline: true + }, this.o); }; this.val = function (v, triggerRelease) { @@ -517,10 +516,10 @@ // reverse format v = this.o.parse(v); - if ( - triggerRelease !== false && (v != this.v) && this.rH && - (this.rH(v) === false) - ) return; + if (triggerRelease !== false + && v != this.v + && this.rH + && this.rH(v) === false) { return; } this.cv = this.o.stopper ? max(min(v, this.o.max), this.o.min) : v; this.v = this.cv; @@ -535,23 +534,23 @@ var a, ret; a = Math.atan2( - x - (this.x + this.w2) - , - (y - this.y - this.w2) + x - (this.x + this.w2), + - (y - this.y - this.w2) ) - this.angleOffset; if (this.o.flip) { a = this.angleArc - a - this.PI2; } - if(this.angleArc != this.PI2 && (a < 0) && (a > -0.5)) { + if (this.angleArc != this.PI2 && (a < 0) && (a > -0.5)) { + // if isset angleArc option, set to min if .5 under min a = 0; } else if (a < 0) { a += this.PI2; } - ret = ~~ (0.5 + (a * (this.o.max - this.o.min) / this.angleArc)) - + this.o.min; + ret = (a * (this.o.max - this.o.min) / this.angleArc) + this.o.min; this.o.stopper && (ret = max(min(ret, this.o.max), this.o.min)); @@ -559,60 +558,75 @@ }; this.listen = function () { + // bind MouseWheel - var s = this, mwTimerStop, mwTimerRelease, + var s = this, mwTimerStop, + mwTimerRelease, mw = function (e) { e.preventDefault(); - var ori = e.originalEvent - ,deltaX = ori.detail || ori.wheelDeltaX - ,deltaY = ori.detail || ori.wheelDeltaY - ,v = s._validate(s.o.parse(s.$.val())) - + (deltaX>0 || deltaY>0 ? s.o.step : deltaX<0 || deltaY<0 ? -s.o.step : 0); + var ori = e.originalEvent, + deltaX = ori.detail || ori.wheelDeltaX, + deltaY = ori.detail || ori.wheelDeltaY, + v = s._validate(s.o.parse(s.$.val())) + + ( + deltaX > 0 || deltaY > 0 + ? s.o.step + : deltaX < 0 || deltaY < 0 ? -s.o.step : 0 + ); v = max(min(v, s.o.max), s.o.min); s.val(v, false); - if(s.rH) { + if (s.rH) { // Handle mousewheel stop clearTimeout(mwTimerStop); - mwTimerStop = setTimeout(function() { + mwTimerStop = setTimeout(function () { s.rH(v); mwTimerStop = null; }, 100); // Handle mousewheel releases - if(!mwTimerRelease) { - mwTimerRelease = setTimeout(function() { - if(mwTimerStop) s.rH(v); + if (!mwTimerRelease) { + mwTimerRelease = setTimeout(function () { + if (mwTimerStop) + s.rH(v); mwTimerRelease = null; }, 200); } } - } - , kval, to, m = 1, kv = {37:-s.o.step, 38:s.o.step, 39:s.o.step, 40:-s.o.step}; + }, + kval, + to, + m = 1, + kv = { + 37: -s.o.step, + 38: s.o.step, + 39: s.o.step, + 40: -s.o.step + }; this.$ .bind( - "keydown" - ,function (e) { + "keydown", + function (e) { var kc = e.keyCode; // numpad support - if(kc >= 96 && kc <= 105) { + if (kc >= 96 && kc <= 105) { kc = e.keyCode = kc - 48; } kval = parseInt(String.fromCharCode(kc)); if (isNaN(kval)) { - - (kc !== 13) // enter - && (kc !== 8) // bs - && (kc !== 9) // tab - && (kc !== 189) // - - && (kc !== 190 || s.$.val().match(/\./)) // . only allowed once + (kc !== 13) // enter + && kc !== 8 // bs + && kc !== 9 // tab + && kc !== 189 // - + && (kc !== 190 + || s.$.val().match(/\./)) // . allowed once && e.preventDefault(); // arrows @@ -622,20 +636,20 @@ var v = s.o.parse(s.$.val()) + kv[kc] * m; s.o.stopper && (v = max(min(v, s.o.max), s.o.min)); - s.change(v); + s.change(s._validate(v)); s._draw(); // long time keydown speed-up - to = window.setTimeout( - function () { m *= 2; }, 30 - ); + to = window.setTimeout(function () { + m *= 2; + }, 30); } } } ) .bind( - "keyup" - ,function (e) { + "keyup", + function (e) { if (isNaN(kval)) { if (to) { window.clearTimeout(to); @@ -648,7 +662,6 @@ (s.$.val() > s.o.max && s.$.val(s.o.max)) || (s.$.val() < s.o.min && s.$.val(s.o.min)); } - } ); @@ -657,11 +670,8 @@ }; this.init = function () { - - if ( - this.v < this.o.min - || this.v > this.o.max - ) this.v = this.o.min; + if (this.v < this.o.min + || this.v > this.o.max) { this.v = this.o.min; } this.$.val(this.v); this.w2 = this.w / 2; @@ -686,30 +696,29 @@ this.endAngle = 1.5 * Math.PI + this.angleOffset + this.angleArc; var s = max( - String(Math.abs(this.o.max)).length - , String(Math.abs(this.o.min)).length - , 2 - ) + 2; + String(Math.abs(this.o.max)).length, + String(Math.abs(this.o.min)).length, + 2 + ) + 2; this.o.displayInput && this.i.css({ - 'width' : ((this.w / 2 + 4) >> 0) + 'px' - ,'height' : ((this.w / 3) >> 0) + 'px' - ,'position' : 'absolute' - ,'vertical-align' : 'middle' - ,'margin-top' : ((this.w / 3) >> 0) + 'px' - ,'margin-left' : '-' + ((this.w * 3 / 4 + 2) >> 0) + 'px' - ,'border' : 0 - ,'background' : 'none' - ,'font' : this.o.fontWeight + ' ' + ((this.w / s) >> 0) + 'px ' + this.o.font - ,'text-align' : 'center' - ,'color' : this.o.inputColor || this.o.fgColor - ,'padding' : '0px' - ,'-webkit-appearance': 'none' - }) - || this.i.css({ - 'width' : '0px' - ,'visibility' : 'hidden' + 'width' : ((this.w / 2 + 4) >> 0) + 'px', + 'height' : ((this.w / 3) >> 0) + 'px', + 'position' : 'absolute', + 'vertical-align' : 'middle', + 'margin-top' : ((this.w / 3) >> 0) + 'px', + 'margin-left' : '-' + ((this.w * 3 / 4 + 2) >> 0) + 'px', + 'border' : 0, + 'background' : 'none', + 'font' : this.o.fontWeight + ' ' + ((this.w / s) >> 0) + 'px ' + this.o.font, + 'text-align' : 'center', + 'color' : this.o.inputColor || this.o.fgColor, + 'padding' : '0px', + '-webkit-appearance': 'none' + }) || this.i.css({ + 'width': '0px', + 'visibility': 'hidden' }); }; @@ -735,6 +744,7 @@ this.o.cursor && (sa = ea - this.cursorExt) && (ea = ea + this.cursorExt); + return { s: sa, e: ea, @@ -743,30 +753,33 @@ }; this.draw = function () { - var c = this.g, // context - a = this.arc(this.cv) // Arc - , pa // Previous arc - , r = 1; + a = this.arc(this.cv), // Arc + pa, // Previous arc + r = 1; c.lineWidth = this.lineWidth; c.lineCap = this.lineCap; - c.strokeStyle = this.o.bgColor; - c.arc(this.xy, this.xy, this.radius, this.endAngle - 0.00001, this.startAngle + 0.00001, true); - c.stroke(); + + if (this.o.bgColor !== "none") { + c.beginPath(); + c.strokeStyle = this.o.bgColor; + c.arc(this.xy, this.xy, this.radius, this.endAngle - 0.00001, this.startAngle + 0.00001, true); + c.stroke(); + } if (this.o.displayPrevious) { pa = this.arc(this.v); c.beginPath(); - c.strokeStyle = this.pColor; - c.arc(this.xy, this.xy, this.radius, pa.s, pa.e, pa.d); + c.strokeStyle = this.pColor; + c.arc(this.xy, this.xy, this.radius, pa.s, pa.e, pa.d); c.stroke(); - r = (this.cv == this.v); + r = this.cv == this.v; } c.beginPath(); - c.strokeStyle = r ? this.o.fgColor : this.fgColor ; - c.arc(this.xy, this.xy, this.radius, a.s, a.e, a.d); + c.strokeStyle = r ? this.o.fgColor : this.fgColor ; + c.arc(this.xy, this.xy, this.radius, a.s, a.e, a.d); c.stroke(); }; @@ -786,4 +799,4 @@ ).parent(); }; -})(jQuery); \ No newline at end of file +})); diff --git a/libs/Utils/Config.class.php b/libs/Utils/Config.php similarity index 96% rename from libs/Utils/Config.class.php rename to libs/Utils/Config.php index c9140c6..212a227 100644 --- a/libs/Utils/Config.class.php +++ b/libs/Utils/Config.php @@ -9,7 +9,7 @@ class Config { $this->_checkPHPVersion(5.3); - $this->file = __DIR__.'/../../esm.config.json'; + $this->file = __DIR__.'/../../conf/esm.config.json'; if (!file_exists($this->file)) throw new \Exception('Config file '.basename($this->file).' not found'); @@ -47,7 +47,8 @@ class Config } } - return $tab == $this->config ? null : $tab; + // return $tab == $this->config ? null : $tab; + return $tab; } diff --git a/libs/Utils/Misc.class.php b/libs/Utils/Misc.php similarity index 51% rename from libs/Utils/Misc.class.php rename to libs/Utils/Misc.php index e2fe7cb..a86312b 100644 --- a/libs/Utils/Misc.class.php +++ b/libs/Utils/Misc.php @@ -4,6 +4,10 @@ class Misc { /** * Returns human size + * + * @param float $filesize File size + * @param int $precision Number of decimals + * @return string Human size */ public static function getSize($filesize, $precision = 2) { @@ -23,6 +27,8 @@ class Misc /** * Returns hostname + * + * @return string Hostname */ public static function getHostname() { @@ -32,6 +38,8 @@ class Misc /** * Returns CPU cores number + * + * @return int Number of cores */ public static function getCpuCoresNumber() { @@ -52,6 +60,8 @@ class Misc /** * Returns server IP + * + * @return string Server local IP */ public static function getLanIp() { @@ -61,6 +71,11 @@ class Misc /** * Returns a command that exists in the system among $cmds + * + * @param array $cmds List of commands + * @param string $args List of arguments (optional) + * @param bool $returnWithArgs If true, returns command with the arguments + * @return string Command */ public static function whichCommand($cmds, $args = '', $returnWithArgs = true) { @@ -89,14 +104,61 @@ class Misc * Ex : echo 'cheva'.Misc::pluralize(5, 'ux', 'l'); ==> prints chevaux * Ex : echo 'cheva'.Misc::pluralize(1, 'ux', 'l'); ==> prints cheval * - * @param int $nb - * @param string $plural - * @param string $singular - * - * @return string + * @param int $nb Number + * @param string $plural String for plural word + * @param string $singular String for singular word + * @return string String pluralized */ public static function pluralize($nb, $plural = 's', $singular = '') { return $nb > 1 ? $plural : $singular; } + + + /** + * Checks if a port is open (TCP or UPD) + * + * @param string $host Host to check + * @param int $port Port number + * @param string $protocol tcp or udp + * @param integer $timeout Timeout + * @return bool True if the port is open else false + */ + public static function scanPort($host, $port, $protocol = 'tcp', $timeout = 3) + { + if ($protocol == 'tcp') + { + $handle = @fsockopen($host, $port, $errno, $errstr, $timeout); + + if ($handle) + return true; + else + return false; + } + elseif ($protocol == 'udp') + { + $handle = @fsockopen('udp://'.$host, $port, $errno, $errstr, $timeout); + + socket_set_timeout($handle, $timeout); + + $write = fwrite($handle, 'x00'); + + $startTime = time(); + + $header = fread($handle, 1); + + $endTime = time(); + + $timeDiff = $endTime - $startTime; + + fclose($handle); + + if ($timeDiff >= $timeout) + return true; + else + return false; + } + + return false; + } } \ No newline at end of file diff --git a/libs/cpu.php b/libs/cpu.php index 73a5409..9665c87 100644 --- a/libs/cpu.php +++ b/libs/cpu.php @@ -1,5 +1,6 @@ get('cpu:enable_temperature')) +{ + if (exec('/usr/bin/sensors | grep -E "^(CPU Temp|Core 0)" | cut -d \'+\' -f2 | cut -d \'.\' -f1', $t)) + { + if (isset($t[0])) + $temp = $t[0].' °C'; + } + else + { + if (exec('cat /sys/class/thermal/thermal_zone0/temp', $t)) + { + $temp = round($t[0] / 1000).' °C'; + } + } +} + $datas = array( 'model' => $model, @@ -57,6 +85,7 @@ $datas = array( 'frequency' => $frequency, 'cache' => $cache, 'bogomips' => $bogomips, + 'temp' => $temp, ); echo json_encode($datas); \ No newline at end of file diff --git a/libs/disk.php b/libs/disk.php index e897818..f3da378 100644 --- a/libs/disk.php +++ b/libs/disk.php @@ -1,6 +1,5 @@ 0) + $percent_used = 100 - (round($free / $total * 100)); $datas = array( diff --git a/libs/network.php b/libs/network.php index b63d990..c24fcd4 100644 --- a/libs/network.php +++ b/libs/network.php @@ -1,10 +1,9 @@ array('ifconfig', '/sbin/ifconfig', '/usr/bin/ifconfig', '/usr/sbin/ifconfig'), diff --git a/libs/ping.php b/libs/ping.php index 9ea0ec8..dc8121d 100644 --- a/libs/ping.php +++ b/libs/ping.php @@ -1,5 +1,5 @@ get('services')) > 0) +$available_protocols = array('tcp', 'udp'); + +$show_port = $Config->get('services:show_port'); + +if (count($Config->get('services:list')) > 0) { - foreach ($Config->get('services') as $service) + foreach ($Config->get('services:list') as $service) { - $host = $service['host']; - $sock = @fsockopen($host, $service['port'], $num, $error, 5); - - if ($sock) - { - $datas[] = array( - 'port' => $service['port'], - 'name' => $service['name'], - 'status' => 1, - ); - - fclose($sock); - } + $host = $service['host']; + $port = $service['port']; + $name = $service['name']; + $protocol = isset($service['protocol']) && in_array($service['protocol'], $available_protocols) ? $service['protocol'] : 'tcp'; + + if (Misc::scanPort($host, $port, $protocol)) + $status = 1; else - { - $datas[] = array( - 'port' => $service['port'], - 'name' => $service['name'], - 'status' => 0, - ); - } + $status = 0; + + $datas[] = array( + 'port' => $show_port === true ? $port : '', + 'name' => $name, + 'status' => $status, + ); } } diff --git a/libs/swap.php b/libs/swap.php index 522660b..e3cc980 100644 --- a/libs/swap.php +++ b/libs/swap.php @@ -1,5 +1,5 @@ 0) + $percent_used = 100 - (round($free / $total * 100)); $datas = array( diff --git a/libs/system.php b/libs/system.php index f569d30..015b1dd 100644 --- a/libs/system.php +++ b/libs/system.php @@ -1,5 +1,5 @@ 1 { + @for $i from 2 through $length { + @if $get != null and type-of($get) == 'map' { + $warn: $warn + "->#{nth($keys, $i)}"; + $get: map-get($get, nth($keys, $i)); + + @if $get == null { + @return map-get-deep-warning($warn, $get); + } + } + @else { + @return map-get-deep-warning($warn, $get); + } + } } -} + + @return $get; +} \ No newline at end of file diff --git a/web/css/_src/frontend.scss b/web/css/_src/frontend.scss index 341aa75..2369695 100644 --- a/web/css/_src/frontend.scss +++ b/web/css/_src/frontend.scss @@ -52,7 +52,7 @@ nav[role="main"] { #appname { float: left; - width: 120px; + width: 150px; text-align: left; a { @@ -231,6 +231,35 @@ table.firstBold tbody tr td:first-child { } +/* --------------------------- */ +/* == Reload style */ +/* --------------------------- */ +.reload.spin { + @include animation(spin 2000ms infinite linear); +} + +@-ms-keyframes spin { + from { -ms-transform: rotate(0deg); } + to { -ms-transform: rotate(360deg); } +} +@-moz-keyframes spin { + from { -moz-transform: rotate(0deg); } + to { -moz-transform: rotate(360deg); } +} +@-webkit-keyframes spin { + from { -webkit-transform: rotate(0deg); } + to { -webkit-transform: rotate(360deg); } +} +@keyframes spin { + from { + transform:rotate(0deg); + } + to { + transform:rotate(360deg); + } +} + + /* --------------------------- */ /* == Load Average */ /* --------------------------- */ @@ -239,3 +268,55 @@ table.firstBold tbody tr td:first-child { font-weight: normal; } } + + + + +/* ------------------------- */ +/* == Responsive */ +/* ------------------------- */ +@media only screen and (max-width: 1024px) { + .column-left, .column-right { + float: none; + width: 100%; + } + .box { + width: 100%; + margin-right: 0 !important; + margin-left: 0 !important; + } +} + +@media only screen and (max-width: 550px) { + nav[role="main"] { + #appname { + width: 135px; + } + + #hostname { + margin-left: 0; + font-size: 12px; + } + + #update { + margin-left: 0; + font-size: 9px; + position: absolute; + top: 47px; + line-height: inherit; + } + + ul > li { + > a { + padding: 12px 0; + } + } + } + + .box#esm-load_average { + div { + width: 100%; + float: none; + } + } +} \ No newline at end of file diff --git a/web/css/_src/utilities.scss b/web/css/_src/utilities.scss index a08dd0d..0dddffa 100644 --- a/web/css/_src/utilities.scss +++ b/web/css/_src/utilities.scss @@ -6,8 +6,7 @@ /* -------------------- */ /* == Fonts */ /* -------------------- */ - -@include font-face('OpenSans-Light', font-files('OpenSans-Light.ttf')); +@include font-face('OpenSans-Light', font-files('OpenSans-Light.ttf', 'OpenSans-Light.svg', 'OpenSans-Light.woff'), 'OpenSans-Light.eot'); @include font-face('Entypo', font-files('entypo.ttf', 'entypo.eot', 'entypo.svg', 'entypo.woff')); @import "../libs/_icons.entypo"; @@ -15,7 +14,6 @@ /* ------------------- */ /* == Misc */ /* ------------------- */ - * { padding: 0; margin: 0; } *:focus { outline: none; } @@ -37,11 +35,6 @@ img { border: 0; } .debug { border: 1px solid red; } -.u { text-decoration: underline; } -.b { font-weight: bold; } -.i { font-style: italic; } -.r { text-decoration: line-through; } - .text_left, .t-left { text-align: left; } .text_right, .t-right { text-align: right !important; } .text_center, .t-center { text-align: center; } @@ -65,9 +58,6 @@ img { border: 0; } width: 66%; } -.m-l-10 { margin-left: 10px; } -.m-r-10 { margin-right: 10px; } - /*pre { background-color: #fafafa; @@ -83,32 +73,6 @@ img { border: 0; } .w50p { width: 50%; } .w100p { width: 100%; } -.w30 { width: 30px; } -.w50 { width: 50px; } -.w60 { width: 60px; } -.w70 { width: 70px; } -.w75 { width: 75px; } -.w90 { width: 90px; } -.w100 { width: 100px; } -.w110 { width: 110px; } -.w120 { width: 120px; } -.w130 { width: 130px; } -.w150 { width: 150px; } -.w180 { width: 180px; } -.w200 { width: 200px; } -.w220 { width: 220px; } -.w250 { width: 250px; } -.w300 { width: 300px; } -.w350 { width: 350px; } -.w400 { width: 400px; } -.w450 { width: 450px; } -.w500 { width: 500px; } -.w600 { width: 600px; } -.w700 { width: 700px; } -.w800 { width: 800px; } -.w900 { width: 900px; } -.w1000 { width: 1000px; } - /* ------------------------ */ /* == Scrollbar */ diff --git a/web/css/fonts/OpenSans-Light.ttf b/web/css/fonts/OpenSans-Light.ttf index 0d38189..758595a 100644 Binary files a/web/css/fonts/OpenSans-Light.ttf and b/web/css/fonts/OpenSans-Light.ttf differ diff --git a/web/css/fonts/OpenSans-light.eot b/web/css/fonts/OpenSans-light.eot new file mode 100644 index 0000000..c8184be Binary files /dev/null and b/web/css/fonts/OpenSans-light.eot differ diff --git a/web/css/fonts/OpenSans-light.svg b/web/css/fonts/OpenSans-light.svg new file mode 100644 index 0000000..b3e3faa --- /dev/null +++ b/web/css/fonts/OpenSans-light.svg @@ -0,0 +1,1824 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/css/fonts/OpenSans-light.woff b/web/css/fonts/OpenSans-light.woff new file mode 100644 index 0000000..c68ced0 Binary files /dev/null and b/web/css/fonts/OpenSans-light.woff differ diff --git a/web/css/frontend.css b/web/css/frontend.css index 09f5cd1..fc5d8b3 100644 --- a/web/css/frontend.css +++ b/web/css/frontend.css @@ -1 +1 @@ -html{height:100%}body{font-size:14px;font-family:OpenSans-Light, Verdana, sans-serif, Arial;margin:0 auto;color:#4d5157;background-color:#fff}a{color:#99aec4}a:hover{color:#a9bbcd;text-decoration:none}::-moz-selection{background-color:#7994b1;color:#fafbfc}::selection{background-color:#7994b1;color:#fafbfc}nav[role="main"]{position:fixed;top:0;left:0;right:0;background-color:#99aec4;height:60px;width:100%;padding-left:5px;color:#fff;font-size:16px;text-align:center;z-index:2}nav[role="main"] #appname{float:left;width:120px;text-align:left}nav[role="main"] #appname a{color:#fff;text-decoration:none}nav[role="main"] #appname a:first-child{font-size:24px}nav[role="main"] #appname a:first-child span[class^="icon-"]{font-size:30px;margin-right:10px}nav[role="main"] #appname a:last-child{display:block;font-size:11px;font-style:italic}nav[role="main"] #hostname{float:left;margin-left:110px;line-height:60px}nav[role="main"] #update{float:left;margin-left:100px;line-height:60px;font-size:13px}nav[role="main"] #update a{color:#fff}nav[role="main"]>ul{text-align:right;list-style-type:none}nav[role="main"]>ul>li{display:inline-block}nav[role="main"]>ul>li>a{display:inline-block;padding:13px 15px;color:#fff;text-decoration:none;-webkit-transition:background 300ms ease-in-out;-moz-transition:background 300ms ease-in-out;-o-transition:background 300ms ease-in-out;transition:background 300ms ease-in-out}nav[role="main"]>ul>li>a:hover{background:#acbdcf;-webkit-transition:background 300ms ease-in-out;-moz-transition:background 300ms ease-in-out;-o-transition:background 300ms ease-in-out;transition:background 300ms ease-in-out}nav[role="main"]>ul>li>a>span[class^="icon-"]{font-size:30px}#main-container{overflow:auto;margin-top:60px;background-color:#fff;padding:20px 25px}ul.list{margin-left:20px;list-style-type:none}ul.list li{position:relative;padding-left:12px}ul.list li:before{content:'';width:5px;height:5px;background-color:#99aec4;position:absolute;left:0;top:9px}table:not(.no-style){width:100%;border-collapse:collapse;border-spacing:0;font-size:13px}table:not(.no-style) tr{border-bottom:1px solid #ebebeb;border-top:1px solid #fff}table:not(.no-style) thead tr{border-top:none}table:not(.no-style) tbody tr:last-child{border-bottom:none}table:not(.no-style) tbody tr:nth-child(odd){background:#f2f2f2}table:not(.no-style) tbody tr td,table:not(.no-style) thead tr th{padding:6px 8px;position:relative;text-align:left}table:not(.no-style) tbody tr td:last-child,table:not(.no-style) thead tr th:last-child{border-right:none}table:not(.no-style) tbody tr td:first-child,table:not(.no-style) thead tr th:first-child{border-left:none}table:not(.no-style) thead{color:#898989;font-size:13px;font-weight:bold}table:not(.no-style) thead tr th{text-align:center}table:not(.no-style) tbody tr:hover{background:#eaeef3}table.firstBold tbody tr td:first-child{font-weight:bold;color:#7e848c}.progressbar-wrap{width:100%;background-color:rgba(153,174,196,0.2)}.progressbar-wrap .progressbar{text-indent:5px}.progressbar-wrap .progressbar.green{background-color:#7BCE6C}.progressbar-wrap .progressbar.orange{background-color:#E3BB80}.progressbar-wrap .progressbar.red{background-color:#CF6B6B}.box#esm-load_average h3{font-weight:normal} +html{height:100%}body{font-size:14px;font-family:OpenSans-Light, Verdana, sans-serif, Arial;margin:0 auto;color:#4D5157;background-color:#fff}a{color:#99AEC4}a:hover{color:#a9bbcd;text-decoration:none}::-moz-selection{background-color:#7994b1;color:#fafbfc}::selection{background-color:#7994b1;color:#fafbfc}nav[role="main"]{position:fixed;top:0;left:0;right:0;background-color:#99AEC4;height:60px;width:100%;padding-left:5px;color:#fff;font-size:16px;text-align:center;z-index:2}nav[role="main"] #appname{float:left;width:150px;text-align:left}nav[role="main"] #appname a{color:#fff;text-decoration:none}nav[role="main"] #appname a:first-child{font-size:24px}nav[role="main"] #appname a:first-child span[class^="icon-"]{font-size:30px;margin-right:10px}nav[role="main"] #appname a:last-child{display:block;font-size:11px;font-style:italic}nav[role="main"] #hostname{float:left;margin-left:110px;line-height:60px}nav[role="main"] #update{float:left;margin-left:100px;line-height:60px;font-size:13px}nav[role="main"] #update a{color:#fff}nav[role="main"]>ul{text-align:right;list-style-type:none}nav[role="main"]>ul>li{display:inline-block}nav[role="main"]>ul>li>a{display:inline-block;padding:13px 15px;color:#fff;text-decoration:none;-moz-transition:background 300ms ease-in-out;-o-transition:background 300ms ease-in-out;-webkit-transition:background 300ms ease-in-out;transition:background 300ms ease-in-out}nav[role="main"]>ul>li>a:hover{background:#acbdcf;-moz-transition:background 300ms ease-in-out;-o-transition:background 300ms ease-in-out;-webkit-transition:background 300ms ease-in-out;transition:background 300ms ease-in-out}nav[role="main"]>ul>li>a>span[class^="icon-"]{font-size:30px}#main-container{overflow:auto;margin-top:60px;background-color:#fff;padding:20px 25px}ul.list{margin-left:20px;list-style-type:none}ul.list li{position:relative;padding-left:12px}ul.list li:before{content:'';width:5px;height:5px;background-color:#99AEC4;position:absolute;left:0;top:9px}table:not(.no-style){width:100%;border-collapse:collapse;border-spacing:0;font-size:13px}table:not(.no-style) tr{border-bottom:1px solid #ebebeb;border-top:1px solid #fff}table:not(.no-style) thead tr{border-top:none}table:not(.no-style) tbody tr:last-child{border-bottom:none}table:not(.no-style) tbody tr:nth-child(odd){background:#f2f2f2}table:not(.no-style) tbody tr td,table:not(.no-style) thead tr th{padding:6px 8px;position:relative;text-align:left}table:not(.no-style) tbody tr td:last-child,table:not(.no-style) thead tr th:last-child{border-right:none}table:not(.no-style) tbody tr td:first-child,table:not(.no-style) thead tr th:first-child{border-left:none}table:not(.no-style) thead{color:#898989;font-size:13px;font-weight:bold}table:not(.no-style) thead tr th{text-align:center}table:not(.no-style) tbody tr:hover{background:#eaeef3}table.firstBold tbody tr td:first-child{font-weight:bold;color:#7e848c}.progressbar-wrap{width:100%;background-color:rgba(153,174,196,0.2)}.progressbar-wrap .progressbar{text-indent:5px}.progressbar-wrap .progressbar.green{background-color:#7BCE6C}.progressbar-wrap .progressbar.orange{background-color:#E3BB80}.progressbar-wrap .progressbar.red{background-color:#CF6B6B}.reload.spin{-moz-animation:spin 2000ms infinite linear;-webkit-animation:spin 2000ms infinite linear;animation:spin 2000ms infinite linear}@-ms-keyframes spin{from{-ms-transform:rotate(0deg)}to{-ms-transform:rotate(360deg)}}@-moz-keyframes spin{from{-moz-transform:rotate(0deg)}to{-moz-transform:rotate(360deg)}}@-webkit-keyframes spin{from{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(360deg)}}@keyframes spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}.box#esm-load_average h3{font-weight:normal}@media only screen and (max-width: 1024px){.column-left,.column-right{float:none;width:100%}.box{width:100%;margin-right:0 !important;margin-left:0 !important}}@media only screen and (max-width: 550px){nav[role="main"] #appname{width:135px}nav[role="main"] #hostname{margin-left:0;font-size:12px}nav[role="main"] #update{margin-left:0;font-size:9px;position:absolute;top:47px;line-height:inherit}nav[role="main"] ul>li>a{padding:12px 0}.box#esm-load_average div{width:100%;float:none}} diff --git a/web/css/libs/_classic-box.scss b/web/css/libs/_classic-box.scss index bbc886d..80cdadc 100644 --- a/web/css/libs/_classic-box.scss +++ b/web/css/libs/_classic-box.scss @@ -1,28 +1,28 @@ @import "compass"; .box { - background: $classic-box-background; - box-shadow: 3px 3px 0 rgba($classic-box-border, .6); + background: map-get($classic-box, background); + box-shadow: 3px 3px 0 rgba(map-get($classic-box, border-color), .6); margin-bottom: 15px; - border: 1px solid $classic-box-border; + border: 1px solid map-get($classic-box, border-color); padding: 2px; .box-header { - background-color: $classic-box-color; - height: $classic-box-header-height; + background-color: map-get($classic-box, color); + height: map-get-deep($classic-box, header, height); h1 { - color: $classic-box-title-color; + color: map-get-deep($classic-box, header, color); float: left; - font-size: $classic-box-title-fontsize; + font-size: map-get-deep($classic-box, header, font-size); font-weight: bold; - line-height: $classic-box-header-height - 2px; + line-height: map-get-deep($classic-box, header, height) - 2px; padding-left: 10px; text-transform: uppercase; /*text-shadow: rgba(0, 0, 0, 1) 0 1px 0;*/ &:first-letter { - font-size: $classic-box-title-fontsize + 6px; + font-size: map-get-deep($classic-box, header, font-size) + 6px; } } ul { @@ -34,20 +34,20 @@ margin-left: -3px; a { - color: lighten($classic-box-title-color, 10%); - font-size: $classic-box-title-fontsize + 6px; - line-height: $classic-box-header-height; + color: lighten(map-get-deep($classic-box, header, color), 10%); + font-size: map-get-deep($classic-box, header, font-size) + 6px; + line-height: map-get-deep($classic-box, header, height); padding: 4px 10px; text-decoration: none; &:hover:not(.disabled) { - background: lighten($classic-box-color, 20%); - color: $classic-box-color !important; + background: lighten(map-get($classic-box, color), 20%); + color: map-get($classic-box, color) !important; } &.disabled { - opacity: .4; + /*opacity: .4;*/ &:hover { cursor: default; @@ -74,12 +74,16 @@ table a { text-decoration: none; - color: $classic-box-color; + color: map-get($classic-box, color); &:hover { - color: lighten($classic-box-color, 20%); + color: lighten(map-get($classic-box, color), 20%); } } + + &.faded { + opacity: .4; + } } .box-footer { diff --git a/web/css/libs/_labels.scss b/web/css/libs/_labels.scss index 726cb7e..5136300 100644 --- a/web/css/libs/_labels.scss +++ b/web/css/libs/_labels.scss @@ -2,24 +2,17 @@ span.label { padding: 1px 3px 2px; - font-size: $label-font-size; + font-size: map-get($label, font-size); font-weight: bold; color: #fff; text-transform: uppercase; white-space: nowrap; - background-color: $label-default; - @include border-radius($label-border-radius); - - &.success { - background-color: $label-success; - } - &.warning { - background-color: $label-warning; - } - &.important, &.error { - background-color: $label-important; - } - &.notice { - background-color: $label-notice; + background-color: map-get-deep($label, types, default); + @include border-radius(map-get($label, border-radius)); + + @each $name, $color in map-get($label, types) { + &.#{""+$name+""} { + background-color: $color; + } } } \ No newline at end of file diff --git a/web/css/utilities.css b/web/css/utilities.css index 07e5e94..bd76498 100644 --- a/web/css/utilities.css +++ b/web/css/utilities.css @@ -1 +1 @@ -@font-face{font-family:"OpenSans-Light";src:url('fonts/OpenSans-Light.ttf') format('truetype')}@font-face{font-family:"Entypo";src:url('fonts/entypo.ttf') format('truetype'),url('fonts/entypo.eot') format('embedded-opentype'),url('fonts/entypo.svg') format('svg'),url('fonts/entypo.woff') format('woff')}[class*="icon-"]{font-family:'Entypo';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-phone:before{content:"\e600"}.icon-mobile:before{content:"\e601"}.icon-mouse:before{content:"\e602"}.icon-directions:before{content:"\e603"}.icon-mail:before{content:"\e604"}.icon-paperplane:before{content:"\e605"}.icon-pencil:before{content:"\e606"}.icon-paperclip:before{content:"\e608"}.icon-drawer:before{content:"\e609"}.icon-reply:before{content:"\e60a"}.icon-reply-all:before{content:"\e60b"}.icon-forward:before{content:"\e60c"}.icon-user:before{content:"\e60d"}.icon-users:before{content:"\e60e"}.icon-user-add:before{content:"\e60f"}.icon-vcard:before{content:"\e610"}.icon-export:before{content:"\e611"}.icon-location:before{content:"\e612"}.icon-map:before{content:"\e613"}.icon-compass:before{content:"\e614"}.icon-location2:before{content:"\e615"}.icon-target:before{content:"\e616"}.icon-share:before{content:"\e617"}.icon-sharable:before{content:"\e618"}.icon-heart:before{content:"\e619"}.icon-heart2:before{content:"\e61a"}.icon-star:before{content:"\e61b"}.icon-star2:before{content:"\e61c"}.icon-thumbs-up:before{content:"\e61d"}.icon-thumbs-down:before{content:"\e61e"}.icon-chat:before{content:"\e61f"}.icon-comment:before{content:"\e620"}.icon-quote:before{content:"\e621"}.icon-house:before{content:"\e622"}.icon-popup:before{content:"\e623"}.icon-search:before{content:"\e624"}.icon-flashlight:before{content:"\e625"}.icon-printer:before{content:"\e626"}.icon-bell:before{content:"\e627"}.icon-link:before{content:"\e628"}.icon-flag:before{content:"\e629"}.icon-cog:before{content:"\e62a"}.icon-tools:before{content:"\e62b"}.icon-trophy:before{content:"\e62c"}.icon-tag:before{content:"\e62d"}.icon-camera:before{content:"\e62e"}.icon-megaphone:before{content:"\e62f"}.icon-palette:before{content:"\e631"}.icon-music:before{content:"\e633"}.icon-music2:before{content:"\e634"}.icon-new:before{content:"\e635"}.icon-graduation:before{content:"\e636"}.icon-book:before{content:"\e637"}.icon-newspaper:before{content:"\e638"}.icon-bag:before{content:"\e639"}.icon-airplane:before{content:"\e63a"}.icon-lifebuoy:before{content:"\e63b"}.icon-eye:before{content:"\e63c"}.icon-clock:before{content:"\e63d"}.icon-microphone:before{content:"\e63e"}.icon-calendar:before{content:"\e63f"}.icon-bolt:before{content:"\e640"}.icon-thunder:before{content:"\e641"}.icon-droplet:before{content:"\e642"}.icon-briefcase:before{content:"\e644"}.icon-air:before{content:"\e645"}.icon-hourglass:before{content:"\e646"}.icon-gauge:before{content:"\e647"}.icon-network:before{content:"\e649"}.icon-key:before{content:"\e64a"}.icon-battery:before{content:"\e64b"}.icon-bucket:before{content:"\e64c"}.icon-magnet:before{content:"\e64d"}.icon-drive:before{content:"\e64e"}.icon-cup:before{content:"\e64f"}.icon-rocket:before{content:"\e650"}.icon-brush:before{content:"\e651"}.icon-suitcase:before{content:"\e652"}.icon-cone:before{content:"\e653"}.icon-earth:before{content:"\e654"}.icon-keyboard:before{content:"\e655"}.icon-browser:before{content:"\e656"}.icon-publish:before{content:"\e657"}.icon-progress-3:before{content:"\e658"}.icon-progress-2:before{content:"\e659"}.icon-brogress-1:before{content:"\e65a"}.icon-progress-0:before{content:"\e65b"}.icon-sun:before{content:"\e65d"}.icon-code:before{content:"\e65f"}.icon-screen:before{content:"\e660"}.icon-infinity:before{content:"\e661"}.icon-light-bulb:before{content:"\e662"}.icon-credit-card:before{content:"\e663"}.icon-database:before{content:"\e664"}.icon-clipboard:before{content:"\e666"}.icon-cart:before{content:"\e667"}.icon-box:before{content:"\e668"}.icon-ticket:before{content:"\e669"}.icon-rss:before{content:"\e66a"}.icon-signal:before{content:"\e66b"}.icon-thermometer:before{content:"\e66c"}.icon-droplets:before{content:"\e66d"}.icon-uniE66E:before{content:"\e66e"}.icon-statistics:before{content:"\e66f"}.icon-pie:before{content:"\e670"}.icon-bars:before{content:"\e671"}.icon-graph:before{content:"\e672"}.icon-lock:before{content:"\e673"}.icon-lock-open:before{content:"\e674"}.icon-logout:before{content:"\e675"}.icon-login:before{content:"\e676"}.icon-checkmark:before{content:"\e677"}.icon-cross:before{content:"\e678"}.icon-minus:before{content:"\e679"}.icon-plus:before{content:"\e67a"}.icon-cross2:before{content:"\e67b"}.icon-minus2:before{content:"\e67c"}.icon-plus2:before{content:"\e67d"}.icon-cross3:before{content:"\e67e"}.icon-minus3:before{content:"\e67f"}.icon-plus3:before{content:"\e680"}.icon-erase:before{content:"\e681"}.icon-blocked:before{content:"\e682"}.icon-info:before{content:"\e683"}.icon-info2:before{content:"\e684"}.icon-question:before{content:"\e685"}.icon-help:before{content:"\e686"}.icon-warning:before{content:"\e687"}.icon-cycle:before{content:"\e688"}.icon-cw:before{content:"\e689"}.icon-ccw:before{content:"\e68a"}.icon-shuffle:before{content:"\e68b"}.icon-arrow:before{content:"\e68c"}.icon-arrow2:before{content:"\e68d"}.icon-retweet:before{content:"\e68e"}.icon-loop:before{content:"\e68f"}.icon-history:before{content:"\e690"}.icon-back:before{content:"\e691"}.icon-switch:before{content:"\e692"}.icon-list:before{content:"\e693"}.icon-add-to-list:before{content:"\e694"}.icon-layout:before{content:"\e695"}.icon-list2:before{content:"\e696"}.icon-text:before{content:"\e697"}.icon-text2:before{content:"\e698"}.icon-document:before{content:"\e699"}.icon-docs:before{content:"\e69a"}.icon-landscape:before{content:"\e69b"}.icon-pictures:before{content:"\e69c"}.icon-video:before{content:"\e69d"}.icon-music3:before{content:"\e69e"}.icon-folder:before{content:"\e69f"}.icon-archive:before{content:"\e6a0"}.icon-trash:before{content:"\e6a1"}.icon-upload:before{content:"\e6a2"}.icon-download:before{content:"\e6a3"}.icon-disk:before{content:"\e6a4"}.icon-install:before{content:"\e6a5"}.icon-cloud:before{content:"\e6a6"}.icon-upload2:before{content:"\e6a7"}.icon-bookmark:before{content:"\e6a8"}.icon-bookmarks:before{content:"\e6a9"}.icon-book2:before{content:"\e6aa"}.icon-play:before{content:"\e6ab"}.icon-pause:before{content:"\e6ac"}.icon-record:before{content:"\e6ad"}.icon-stop:before{content:"\e6ae"}.icon-next:before{content:"\e6af"}.icon-previous:before{content:"\e6b0"}.icon-first:before{content:"\e6b1"}.icon-last:before{content:"\e6b2"}.icon-resize-enlarge:before{content:"\e6b3"}.icon-resize-shrink:before{content:"\e6b4"}.icon-volume:before{content:"\e6b5"}.icon-sound:before{content:"\e6b6"}.icon-mute:before{content:"\e6b7"}.icon-flow-cascade:before{content:"\e6b8"}.icon-flow-branch:before{content:"\e6b9"}.icon-flow-tree:before{content:"\e6ba"}.icon-flow-line:before{content:"\e6bb"}.icon-flow-parallel:before{content:"\e6bc"}.icon-arrow-left:before{content:"\e6bd"}.icon-arrow-down:before{content:"\e6be"}.icon-arrow-up--upload:before{content:"\e6bf"}.icon-arrow-right:before{content:"\e6c0"}.icon-arrow-left2:before{content:"\e6c1"}.icon-arrow-down2:before{content:"\e6c2"}.icon-arrow-up:before{content:"\e6c3"}.icon-arrow-right2:before{content:"\e6c4"}.icon-arrow-left3:before{content:"\e6c5"}.icon-arrow-down3:before{content:"\e6c6"}.icon-arrow-up2:before{content:"\e6c7"}.icon-arrow-right3:before{content:"\e6c8"}.icon-arrow-left4:before{content:"\e6c9"}.icon-arrow-down4:before{content:"\e6ca"}.icon-arrow-up3:before{content:"\e6cb"}.icon-arrow-right4:before{content:"\e6cc"}.icon-arrow-left5:before{content:"\e6cd"}.icon-arrow-down5:before{content:"\e6ce"}.icon-arrow-up4:before{content:"\e6cf"}.icon-arrow-right5:before{content:"\e6d0"}.icon-arrow-left6:before{content:"\e6d1"}.icon-arrow-down6:before{content:"\e6d2"}.icon-arrow-up5:before{content:"\e6d3"}.icon-arrow-right6:before{content:"\e6d4"}.icon-arrow-left7:before{content:"\e6d5"}.icon-arrow-down7:before{content:"\e6d6"}.icon-arrow-up6:before{content:"\e6d7"}.icon-uniE6D8:before{content:"\e6d8"}.icon-arrow-left8:before{content:"\e6d9"}.icon-arrow-down8:before{content:"\e6da"}.icon-arrow-up7:before{content:"\e6db"}.icon-arrow-right7:before{content:"\e6dc"}.icon-menu:before{content:"\e6dd"}.icon-ellipsis:before{content:"\e6de"}.icon-dots:before{content:"\e6df"}.icon-dot:before{content:"\e6e0"}.icon-daniel-bruce2:before{content:"\e6ed"}.icon-github:before{content:"\e6ee"}.icon-github2:before{content:"\e6ef"}.icon-flickr:before{content:"\e6f0"}.icon-flickr2:before{content:"\e6f1"}.icon-vimeo:before{content:"\e6f2"}.icon-vimeo2:before{content:"\e6f3"}.icon-twitter:before{content:"\e6f4"}.icon-twitter2:before{content:"\e6f5"}.icon-facebook:before{content:"\e6f6"}.icon-facebook2:before{content:"\e6f7"}.icon-facebook3:before{content:"\e6f8"}.icon-googleplus:before{content:"\e6f9"}.icon-googleplus2:before{content:"\e6fa"}.icon-pinterest:before{content:"\e6fb"}.icon-pinterest2:before{content:"\e6fc"}.icon-tumblr:before{content:"\e6fd"}.icon-tumblr2:before{content:"\e6fe"}.icon-linkedin:before{content:"\e6ff"}.icon-linkedin2:before{content:"\e700"}.icon-dribbble:before{content:"\e701"}.icon-dribbble2:before{content:"\e702"}.icon-stumbleupon:before{content:"\e703"}.icon-stumbleupon2:before{content:"\e704"}.icon-spotify:before{content:"\e709"}.icon-spotify2:before{content:"\e70a"}.icon-instagram:before{content:"\e70c"}.icon-dropbox:before{content:"\e70d"}.icon-evernote:before{content:"\e70e"}.icon-flattr:before{content:"\e70f"}.icon-skype:before{content:"\e710"}.icon-skype2:before{content:"\e711"}.icon-paypal:before{content:"\e714"}.icon-picasa:before{content:"\e715"}.icon-circles:before{content:"\e719"}*{padding:0;margin:0}*:focus{outline:none}*,*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.cls:after{content:".";display:block;height:0;clear:both;visibility:hidden}img{border:0}.debug{border:1px solid red}.u{text-decoration:underline}.b{font-weight:bold}.i{font-style:italic}.r{text-decoration:line-through}.text_left,.t-left{text-align:left}.text_right,.t-right{text-align:right !important}.text_center,.t-center{text-align:center}.pfixed{position:fixed !important}.f-left{float:left}.f-right{float:right}.column-left{float:left;width:49%}.column-right{float:right;width:49%}.column-33{width:32%}.column-66{width:66%}.m-l-10{margin-left:10px}.m-r-10{margin-right:10px}.w15p{width:15%}.w20p{width:20%}.w33p{width:33%}.w35p{width:35%}.w50p{width:50%}.w100p{width:100%}.w30{width:30px}.w50{width:50px}.w60{width:60px}.w70{width:70px}.w75{width:75px}.w90{width:90px}.w100{width:100px}.w110{width:110px}.w120{width:120px}.w130{width:130px}.w150{width:150px}.w180{width:180px}.w200{width:200px}.w220{width:220px}.w250{width:250px}.w300{width:300px}.w350{width:350px}.w400{width:400px}.w450{width:450px}.w500{width:500px}.w600{width:600px}.w700{width:700px}.w800{width:800px}.w900{width:900px}.w1000{width:1000px}::-webkit-scrollbar-track{box-shadow:inset 1px 0px 3px rgba(0,0,0,0.2);background-color:#F5F5F5}::-webkit-scrollbar-track:hover{background-color:#EFEFEF}::-webkit-scrollbar{width:8px;background-color:#F5F5F5}::-webkit-scrollbar-thumb{background-color:#959595}::-webkit-scrollbar-thumb:hover{background-color:#6B6B6B}::-webkit-scrollbar-thumb:active{background-color:#555}span.label{padding:1px 3px 2px;font-size:10px;font-weight:bold;color:#fff;text-transform:uppercase;white-space:nowrap;background-color:#bfbfbf;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}span.label.success{background-color:#46a546}span.label.warning{background-color:#f89406}span.label.important,span.label.error{background-color:#c43c35}span.label.notice{background-color:#62cffc}.box{background:#fff;box-shadow:3px 3px 0 rgba(205,215,226,0.6);margin-bottom:15px;border:1px solid #cdd7e2;padding:2px}.box .box-header{background-color:#829cb7;height:35px}.box .box-header h1{color:#fff;float:left;font-size:14px;font-weight:bold;line-height:33px;padding-left:10px;text-transform:uppercase}.box .box-header h1:first-letter{font-size:20px}.box .box-header ul{float:right;list-style-type:none}.box .box-header ul li{display:inline;margin-left:-3px}.box .box-header ul li a{color:#fff;font-size:20px;line-height:35px;padding:4px 10px;text-decoration:none}.box .box-header ul li a:hover:not(.disabled){background:#c3cfdc;color:#829cb7 !important}.box .box-header ul li a.disabled{opacity:.4}.box .box-header ul li a.disabled:hover{cursor:default}.box .box-header ul li:first-child{margin-left:0}.box .box-header ul li:last-child a{border-right:none}.box .box-header ul li.active a{background:#fafafa;cursor:default}.box .box-content{padding:6px}.box .box-content table a{text-decoration:none;color:#829cb7}.box .box-content table a:hover{color:#c3cfdc}.box .box-footer{background:#e8e8e8;padding:7px}.box .box-footer span[class^="icon-"]{font-size:14px;margin-right:5px} +@font-face{font-family:"OpenSans-Light";src:url('fonts/OpenSans-Light.eot');src:url('fonts/OpenSans-Light.eot?#iefix') format('embedded-opentype'),url('fonts/OpenSans-Light.ttf') format('truetype'),url('fonts/OpenSans-Light.svg') format('svg'),url('fonts/OpenSans-Light.woff') format('woff')}@font-face{font-family:"Entypo";src:url('fonts/entypo.ttf') format('truetype'),url('fonts/entypo.eot') format('embedded-opentype'),url('fonts/entypo.svg') format('svg'),url('fonts/entypo.woff') format('woff')}[class*="icon-"]{font-family:'Entypo';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-phone:before{content:"\e600"}.icon-mobile:before{content:"\e601"}.icon-mouse:before{content:"\e602"}.icon-directions:before{content:"\e603"}.icon-mail:before{content:"\e604"}.icon-paperplane:before{content:"\e605"}.icon-pencil:before{content:"\e606"}.icon-paperclip:before{content:"\e608"}.icon-drawer:before{content:"\e609"}.icon-reply:before{content:"\e60a"}.icon-reply-all:before{content:"\e60b"}.icon-forward:before{content:"\e60c"}.icon-user:before{content:"\e60d"}.icon-users:before{content:"\e60e"}.icon-user-add:before{content:"\e60f"}.icon-vcard:before{content:"\e610"}.icon-export:before{content:"\e611"}.icon-location:before{content:"\e612"}.icon-map:before{content:"\e613"}.icon-compass:before{content:"\e614"}.icon-location2:before{content:"\e615"}.icon-target:before{content:"\e616"}.icon-share:before{content:"\e617"}.icon-sharable:before{content:"\e618"}.icon-heart:before{content:"\e619"}.icon-heart2:before{content:"\e61a"}.icon-star:before{content:"\e61b"}.icon-star2:before{content:"\e61c"}.icon-thumbs-up:before{content:"\e61d"}.icon-thumbs-down:before{content:"\e61e"}.icon-chat:before{content:"\e61f"}.icon-comment:before{content:"\e620"}.icon-quote:before{content:"\e621"}.icon-house:before{content:"\e622"}.icon-popup:before{content:"\e623"}.icon-search:before{content:"\e624"}.icon-flashlight:before{content:"\e625"}.icon-printer:before{content:"\e626"}.icon-bell:before{content:"\e627"}.icon-link:before{content:"\e628"}.icon-flag:before{content:"\e629"}.icon-cog:before{content:"\e62a"}.icon-tools:before{content:"\e62b"}.icon-trophy:before{content:"\e62c"}.icon-tag:before{content:"\e62d"}.icon-camera:before{content:"\e62e"}.icon-megaphone:before{content:"\e62f"}.icon-palette:before{content:"\e631"}.icon-music:before{content:"\e633"}.icon-music2:before{content:"\e634"}.icon-new:before{content:"\e635"}.icon-graduation:before{content:"\e636"}.icon-book:before{content:"\e637"}.icon-newspaper:before{content:"\e638"}.icon-bag:before{content:"\e639"}.icon-airplane:before{content:"\e63a"}.icon-lifebuoy:before{content:"\e63b"}.icon-eye:before{content:"\e63c"}.icon-clock:before{content:"\e63d"}.icon-microphone:before{content:"\e63e"}.icon-calendar:before{content:"\e63f"}.icon-bolt:before{content:"\e640"}.icon-thunder:before{content:"\e641"}.icon-droplet:before{content:"\e642"}.icon-briefcase:before{content:"\e644"}.icon-air:before{content:"\e645"}.icon-hourglass:before{content:"\e646"}.icon-gauge:before{content:"\e647"}.icon-network:before{content:"\e649"}.icon-key:before{content:"\e64a"}.icon-battery:before{content:"\e64b"}.icon-bucket:before{content:"\e64c"}.icon-magnet:before{content:"\e64d"}.icon-drive:before{content:"\e64e"}.icon-cup:before{content:"\e64f"}.icon-rocket:before{content:"\e650"}.icon-brush:before{content:"\e651"}.icon-suitcase:before{content:"\e652"}.icon-cone:before{content:"\e653"}.icon-earth:before{content:"\e654"}.icon-keyboard:before{content:"\e655"}.icon-browser:before{content:"\e656"}.icon-publish:before{content:"\e657"}.icon-progress-3:before{content:"\e658"}.icon-progress-2:before{content:"\e659"}.icon-brogress-1:before{content:"\e65a"}.icon-progress-0:before{content:"\e65b"}.icon-sun:before{content:"\e65d"}.icon-code:before{content:"\e65f"}.icon-screen:before{content:"\e660"}.icon-infinity:before{content:"\e661"}.icon-light-bulb:before{content:"\e662"}.icon-credit-card:before{content:"\e663"}.icon-database:before{content:"\e664"}.icon-clipboard:before{content:"\e666"}.icon-cart:before{content:"\e667"}.icon-box:before{content:"\e668"}.icon-ticket:before{content:"\e669"}.icon-rss:before{content:"\e66a"}.icon-signal:before{content:"\e66b"}.icon-thermometer:before{content:"\e66c"}.icon-droplets:before{content:"\e66d"}.icon-uniE66E:before{content:"\e66e"}.icon-statistics:before{content:"\e66f"}.icon-pie:before{content:"\e670"}.icon-bars:before{content:"\e671"}.icon-graph:before{content:"\e672"}.icon-lock:before{content:"\e673"}.icon-lock-open:before{content:"\e674"}.icon-logout:before{content:"\e675"}.icon-login:before{content:"\e676"}.icon-checkmark:before{content:"\e677"}.icon-cross:before{content:"\e678"}.icon-minus:before{content:"\e679"}.icon-plus:before{content:"\e67a"}.icon-cross2:before{content:"\e67b"}.icon-minus2:before{content:"\e67c"}.icon-plus2:before{content:"\e67d"}.icon-cross3:before{content:"\e67e"}.icon-minus3:before{content:"\e67f"}.icon-plus3:before{content:"\e680"}.icon-erase:before{content:"\e681"}.icon-blocked:before{content:"\e682"}.icon-info:before{content:"\e683"}.icon-info2:before{content:"\e684"}.icon-question:before{content:"\e685"}.icon-help:before{content:"\e686"}.icon-warning:before{content:"\e687"}.icon-cycle:before{content:"\e688"}.icon-cw:before{content:"\e689"}.icon-ccw:before{content:"\e68a"}.icon-shuffle:before{content:"\e68b"}.icon-arrow:before{content:"\e68c"}.icon-arrow2:before{content:"\e68d"}.icon-retweet:before{content:"\e68e"}.icon-loop:before{content:"\e68f"}.icon-history:before{content:"\e690"}.icon-back:before{content:"\e691"}.icon-switch:before{content:"\e692"}.icon-list:before{content:"\e693"}.icon-add-to-list:before{content:"\e694"}.icon-layout:before{content:"\e695"}.icon-list2:before{content:"\e696"}.icon-text:before{content:"\e697"}.icon-text2:before{content:"\e698"}.icon-document:before{content:"\e699"}.icon-docs:before{content:"\e69a"}.icon-landscape:before{content:"\e69b"}.icon-pictures:before{content:"\e69c"}.icon-video:before{content:"\e69d"}.icon-music3:before{content:"\e69e"}.icon-folder:before{content:"\e69f"}.icon-archive:before{content:"\e6a0"}.icon-trash:before{content:"\e6a1"}.icon-upload:before{content:"\e6a2"}.icon-download:before{content:"\e6a3"}.icon-disk:before{content:"\e6a4"}.icon-install:before{content:"\e6a5"}.icon-cloud:before{content:"\e6a6"}.icon-upload2:before{content:"\e6a7"}.icon-bookmark:before{content:"\e6a8"}.icon-bookmarks:before{content:"\e6a9"}.icon-book2:before{content:"\e6aa"}.icon-play:before{content:"\e6ab"}.icon-pause:before{content:"\e6ac"}.icon-record:before{content:"\e6ad"}.icon-stop:before{content:"\e6ae"}.icon-next:before{content:"\e6af"}.icon-previous:before{content:"\e6b0"}.icon-first:before{content:"\e6b1"}.icon-last:before{content:"\e6b2"}.icon-resize-enlarge:before{content:"\e6b3"}.icon-resize-shrink:before{content:"\e6b4"}.icon-volume:before{content:"\e6b5"}.icon-sound:before{content:"\e6b6"}.icon-mute:before{content:"\e6b7"}.icon-flow-cascade:before{content:"\e6b8"}.icon-flow-branch:before{content:"\e6b9"}.icon-flow-tree:before{content:"\e6ba"}.icon-flow-line:before{content:"\e6bb"}.icon-flow-parallel:before{content:"\e6bc"}.icon-arrow-left:before{content:"\e6bd"}.icon-arrow-down:before{content:"\e6be"}.icon-arrow-up--upload:before{content:"\e6bf"}.icon-arrow-right:before{content:"\e6c0"}.icon-arrow-left2:before{content:"\e6c1"}.icon-arrow-down2:before{content:"\e6c2"}.icon-arrow-up:before{content:"\e6c3"}.icon-arrow-right2:before{content:"\e6c4"}.icon-arrow-left3:before{content:"\e6c5"}.icon-arrow-down3:before{content:"\e6c6"}.icon-arrow-up2:before{content:"\e6c7"}.icon-arrow-right3:before{content:"\e6c8"}.icon-arrow-left4:before{content:"\e6c9"}.icon-arrow-down4:before{content:"\e6ca"}.icon-arrow-up3:before{content:"\e6cb"}.icon-arrow-right4:before{content:"\e6cc"}.icon-arrow-left5:before{content:"\e6cd"}.icon-arrow-down5:before{content:"\e6ce"}.icon-arrow-up4:before{content:"\e6cf"}.icon-arrow-right5:before{content:"\e6d0"}.icon-arrow-left6:before{content:"\e6d1"}.icon-arrow-down6:before{content:"\e6d2"}.icon-arrow-up5:before{content:"\e6d3"}.icon-arrow-right6:before{content:"\e6d4"}.icon-arrow-left7:before{content:"\e6d5"}.icon-arrow-down7:before{content:"\e6d6"}.icon-arrow-up6:before{content:"\e6d7"}.icon-uniE6D8:before{content:"\e6d8"}.icon-arrow-left8:before{content:"\e6d9"}.icon-arrow-down8:before{content:"\e6da"}.icon-arrow-up7:before{content:"\e6db"}.icon-arrow-right7:before{content:"\e6dc"}.icon-menu:before{content:"\e6dd"}.icon-ellipsis:before{content:"\e6de"}.icon-dots:before{content:"\e6df"}.icon-dot:before{content:"\e6e0"}.icon-daniel-bruce2:before{content:"\e6ed"}.icon-github:before{content:"\e6ee"}.icon-github2:before{content:"\e6ef"}.icon-flickr:before{content:"\e6f0"}.icon-flickr2:before{content:"\e6f1"}.icon-vimeo:before{content:"\e6f2"}.icon-vimeo2:before{content:"\e6f3"}.icon-twitter:before{content:"\e6f4"}.icon-twitter2:before{content:"\e6f5"}.icon-facebook:before{content:"\e6f6"}.icon-facebook2:before{content:"\e6f7"}.icon-facebook3:before{content:"\e6f8"}.icon-googleplus:before{content:"\e6f9"}.icon-googleplus2:before{content:"\e6fa"}.icon-pinterest:before{content:"\e6fb"}.icon-pinterest2:before{content:"\e6fc"}.icon-tumblr:before{content:"\e6fd"}.icon-tumblr2:before{content:"\e6fe"}.icon-linkedin:before{content:"\e6ff"}.icon-linkedin2:before{content:"\e700"}.icon-dribbble:before{content:"\e701"}.icon-dribbble2:before{content:"\e702"}.icon-stumbleupon:before{content:"\e703"}.icon-stumbleupon2:before{content:"\e704"}.icon-spotify:before{content:"\e709"}.icon-spotify2:before{content:"\e70a"}.icon-instagram:before{content:"\e70c"}.icon-dropbox:before{content:"\e70d"}.icon-evernote:before{content:"\e70e"}.icon-flattr:before{content:"\e70f"}.icon-skype:before{content:"\e710"}.icon-skype2:before{content:"\e711"}.icon-paypal:before{content:"\e714"}.icon-picasa:before{content:"\e715"}.icon-circles:before{content:"\e719"}*{padding:0;margin:0}*:focus{outline:none}*,*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.cls:after{content:".";display:block;height:0;clear:both;visibility:hidden}img{border:0}.debug{border:1px solid red}.text_left,.t-left{text-align:left}.text_right,.t-right{text-align:right !important}.text_center,.t-center{text-align:center}.pfixed{position:fixed !important}.f-left{float:left}.f-right{float:right}.column-left{float:left;width:49%}.column-right{float:right;width:49%}.column-33{width:32%}.column-66{width:66%}.w15p{width:15%}.w20p{width:20%}.w33p{width:33%}.w35p{width:35%}.w50p{width:50%}.w100p{width:100%}::-webkit-scrollbar-track{box-shadow:inset 1px 0px 3px rgba(0,0,0,0.2);background-color:#F5F5F5}::-webkit-scrollbar-track:hover{background-color:#EFEFEF}::-webkit-scrollbar{width:8px;background-color:#F5F5F5}::-webkit-scrollbar-thumb{background-color:#959595}::-webkit-scrollbar-thumb:hover{background-color:#6B6B6B}::-webkit-scrollbar-thumb:active{background-color:#555}span.label{padding:1px 3px 2px;font-size:10px;font-weight:bold;color:#fff;text-transform:uppercase;white-space:nowrap;background-color:#bfbfbf;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}span.label.default{background-color:#bfbfbf}span.label.success{background-color:#46a546}span.label.warning{background-color:#f89406}span.label.important{background-color:#c43c35}span.label.error{background-color:#c43c35}span.label.notice{background-color:#62cffc}.box{background:#fff;box-shadow:3px 3px 0 rgba(205,215,226,0.6);margin-bottom:15px;border:1px solid #cdd7e2;padding:2px}.box .box-header{background-color:#829cb7;height:35px}.box .box-header h1{color:#fff;float:left;font-size:14px;font-weight:bold;line-height:33px;padding-left:10px;text-transform:uppercase}.box .box-header h1:first-letter{font-size:20px}.box .box-header ul{float:right;list-style-type:none}.box .box-header ul li{display:inline;margin-left:-3px}.box .box-header ul li a{color:#fff;font-size:20px;line-height:35px;padding:4px 10px;text-decoration:none}.box .box-header ul li a:hover:not(.disabled){background:#c3cfdc;color:#829cb7 !important}.box .box-header ul li a.disabled:hover{cursor:default}.box .box-header ul li:first-child{margin-left:0}.box .box-header ul li:last-child a{border-right:none}.box .box-header ul li.active a{background:#fafafa;cursor:default}.box .box-content{padding:6px}.box .box-content table a{text-decoration:none;color:#829cb7}.box .box-content table a:hover{color:#c3cfdc}.box .box-content.faded{opacity:.4}.box .box-footer{background:#e8e8e8;padding:7px}.box .box-footer span[class^="icon-"]{font-size:14px;margin-right:5px}