From d25c34e699e7380cb49f5cfa331aae03d883d92d Mon Sep 17 00:00:00 2001 From: Sylvain MOUQUET Date: Tue, 13 Jan 2015 01:19:53 +0100 Subject: [PATCH 01/90] add angularjs --- MANIFEST.in | 2 +- glances/outputs/bottle/index.html | 242 +++++++++++++++++++++++ glances/outputs/glances_bottle.py | 22 +-- glances/outputs/static/js/angular.min.js | 216 ++++++++++++++++++++ glances/outputs/static/js/controllers.js | 175 ++++++++++++++++ 5 files changed, 637 insertions(+), 20 deletions(-) create mode 100644 glances/outputs/bottle/index.html create mode 100644 glances/outputs/static/js/angular.min.js create mode 100644 glances/outputs/static/js/controllers.js diff --git a/MANIFEST.in b/MANIFEST.in index dae6a3d7..e976fa45 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -3,7 +3,7 @@ include COPYING include NEWS include README.rst include conf/glances.conf -include glances/outputs/bottle/*.tpl +include glances/outputs/bottle/*.html include glances/outputs/static/css/*.css include glances/outputs/static/js/*.js include man/glances.1 diff --git a/glances/outputs/bottle/index.html b/glances/outputs/bottle/index.html new file mode 100644 index 00000000..4dccc9d4 --- /dev/null +++ b/glances/outputs/bottle/index.html @@ -0,0 +1,242 @@ + + + + + + +Glances + + + + + + + + + + +
Loading...
+
+
+
+
+ +
+ Refresh time  {{result["system"].hostname}}  +
+ +
+
+
+ Uptime: {{result["uptime"]}} +
+
+
+
+ +
+
+
+ + + + + + + + + + + + + + + + + + + +
CPU{{result["cpu"].total}}%
user:{{result["cpu"].user}}%
system:{{result["cpu"].system}}%
idle:{{result["cpu"].idle}}%
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + +
MEM{{result["mem"].percent}}%
total:{{result["mem"].total | bytes:2}}
used:{{result["mem"].used | bytes:2}}
free:{{result["mem"].free | bytes:2}}
+
+
+
+
+ + + + + + + + + + + + + + + + + + + +
SWAP{{result["memswap"].percent}}%
total:{{result["memswap"].total | bytes:2}}
used:{{result["memswap"].used | bytes:2}}
free:{{result["memswap"].free | bytes:2}}
+
+
+
+
+
+
+ + + + + + + + + + + + + +
NETWORKRx/sTx/s
{{network.interface_name | min_size}}}{{network.rx | bytes}}{{network.tx | bytes}}
+
+ +
+ + + + + + + + + + + + + +
DISK I/OR/sW/s
{{disk.disk_name | min_size}}{{disk.read_bytes | bytes}}{{disk.write_bytes | bytes}}
+
+
+ + + + + + + + + + + + + +
FILE SYSUsedTotal
{{fs.mnt_point}} ({{fs.device_name}}){{fs.size - fs.free | bytes}}{{fs.size | bytes}}
+
+ +
+
+
+ + + + + + + +
No warning or critical alert detected{{alert}}
+
+ +
+ TASKS {{result["processcount"].total}} ({{result["processcount"].thread}} thr), {{result["processcount"].running}} run, + {{result["processcount"].sleeping}} slp, {{result["processcount"].stopped}} oth sorted automatically by cpu_percent, flat view +
+ +
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CPU%MEM%PIDUSERNISCommand
{{process.cpu_percent | number:1}}{{process.memory_percent | number:1}}{{process.pid}}{{process.username}}{{process.nice | exclamation}}{{process.status}}{{process.name}}
+
+
+
+
+ + diff --git a/glances/outputs/glances_bottle.py b/glances/outputs/glances_bottle.py index 27b56343..cf80bf17 100644 --- a/glances/outputs/glances_bottle.py +++ b/glances/outputs/glances_bottle.py @@ -246,22 +246,6 @@ class GlancesBottle(object): stats: Stats database to display """ - stats = { - 'system': self.stats.get_plugin('system').get_stats_display(args=self.args), - 'uptime': self.stats.get_plugin('uptime').get_stats_display(args=self.args), - 'cpu': self.stats.get_plugin('cpu').get_stats_display(args=self.args), - 'load': self.stats.get_plugin('load').get_stats_display(args=self.args), - 'mem': self.stats.get_plugin('mem').get_stats_display(args=self.args), - 'memswap': self.stats.get_plugin('memswap').get_stats_display(args=self.args), - 'network': self.stats.get_plugin('network').get_stats_display(args=self.args), - 'diskio': self.stats.get_plugin('diskio').get_stats_display(args=self.args), - 'fs': self.stats.get_plugin('fs').get_stats_display(args=self.args), - 'raid': self.stats.get_plugin('raid').get_stats_display(args=self.args), - 'sensors': self.stats.get_plugin('sensors').get_stats_display(args=self.args), - 'alert': self.stats.get_plugin('alert').get_stats_display(args=self.args), - 'processcount': self.stats.get_plugin('processcount').get_stats_display(args=self.args), - 'monitor': self.stats.get_plugin('monitor').get_stats_display(args=self.args), - 'processlist': self.stats.get_plugin('processlist').get_stats_display(args=self.args) - } - - return template('base', refresh_time=refresh_time, stats=stats) + path = os.path.join(os.path.dirname(os.path.realpath(__file__)), "bottle", "index.html") + f = open(path, encoding="utf-8") + return f.read() \ No newline at end of file diff --git a/glances/outputs/static/js/angular.min.js b/glances/outputs/static/js/angular.min.js new file mode 100644 index 00000000..0be575c2 --- /dev/null +++ b/glances/outputs/static/js/angular.min.js @@ -0,0 +1,216 @@ +/* + AngularJS v1.2.26 + (c) 2010-2014 Google, Inc. http://angularjs.org + License: MIT +*/ +(function(W,X,t){'use strict';function C(b){return function(){var a=arguments[0],c,a="["+(b?b+":":"")+a+"] http://errors.angularjs.org/1.2.26/"+(b?b+"/":"")+a;for(c=1;c").append(b).html();try{return 3===b[0].nodeType?K(c):c.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+K(b)})}catch(d){return K(c)}}function dc(b){try{return decodeURIComponent(b)}catch(a){}}function ec(b){var a={},c,d;r((b||"").split("&"),function(b){b&&(c=b.replace(/\+/g,"%20").split("="),d=dc(c[0]),y(d)&&(b=y(c[1])?dc(c[1]):!0,kb.call(a,d)?J(a[d])?a[d].push(b):a[d]=[a[d],b]:a[d]=b))});return a}function Cb(b){var a= +[];r(b,function(b,d){J(b)?r(b,function(b){a.push(Ca(d,!0)+(!0===b?"":"="+Ca(b,!0)))}):a.push(Ca(d,!0)+(!0===b?"":"="+Ca(b,!0)))});return a.length?a.join("&"):""}function lb(b){return Ca(b,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function Ca(b,a){return encodeURIComponent(b).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,a?"%20":"+")}function Xc(b,a){function c(a){a&&d.push(a)}var d=[b],e,f,g=["ng:app","ng-app","x-ng-app", +"data-ng-app"],k=/\sng[:\-]app(:\s*([\w\d_]+);?)?\s/;r(g,function(a){g[a]=!0;c(X.getElementById(a));a=a.replace(":","\\:");b.querySelectorAll&&(r(b.querySelectorAll("."+a),c),r(b.querySelectorAll("."+a+"\\:"),c),r(b.querySelectorAll("["+a+"]"),c))});r(d,function(a){if(!e){var b=k.exec(" "+a.className+" ");b?(e=a,f=(b[2]||"").replace(/\s+/g,",")):r(a.attributes,function(b){!e&&g[b.name]&&(e=a,f=b.value)})}});e&&a(e,f?[f]:[])}function fc(b,a){var c=function(){b=w(b);if(b.injector()){var c=b[0]===X? +"document":ia(b);throw Ta("btstrpd",c.replace(//,">"));}a=a||[];a.unshift(["$provide",function(a){a.value("$rootElement",b)}]);a.unshift("ng");c=gc(a);c.invoke(["$rootScope","$rootElement","$compile","$injector","$animate",function(a,b,c,d,e){a.$apply(function(){b.data("$injector",d);c(b)(a)})}]);return c},d=/^NG_DEFER_BOOTSTRAP!/;if(W&&!d.test(W.name))return c();W.name=W.name.replace(d,"");Va.resumeBootstrap=function(b){r(b,function(b){a.push(b)});c()}}function mb(b,a){a= +a||"_";return b.replace(Yc,function(b,d){return(d?a:"")+b.toLowerCase()})}function Db(b,a,c){if(!b)throw Ta("areq",a||"?",c||"required");return b}function Wa(b,a,c){c&&J(b)&&(b=b[b.length-1]);Db(P(b),a,"not a function, got "+(b&&"object"===typeof b?b.constructor.name||"Object":typeof b));return b}function Da(b,a){if("hasOwnProperty"===b)throw Ta("badname",a);}function hc(b,a,c){if(!a)return b;a=a.split(".");for(var d,e=b,f=a.length,g=0;g "+e[1]+a.replace(me,"<$1>")+e[2];d.removeChild(d.firstChild);for(a=e[0];a--;)d=d.lastChild;a=0;for(e=d.childNodes.length;a=Q?(c.preventDefault=null,c.stopPropagation=null,c.isDefaultPrevented=null):(delete c.preventDefault,delete c.stopPropagation,delete c.isDefaultPrevented)};c.elem=b;return c}function Ka(b,a){var c=typeof b,d;"function"==c||"object"==c&&null!==b?"function"==typeof(d= +b.$$hashKey)?d=b.$$hashKey():d===t&&(d=b.$$hashKey=(a||hb)()):d=b;return c+":"+d}function bb(b,a){if(a){var c=0;this.nextUid=function(){return++c}}r(b,this.put,this)}function sc(b){var a,c;"function"===typeof b?(a=b.$inject)||(a=[],b.length&&(c=b.toString().replace(pe,""),c=c.match(qe),r(c[1].split(re),function(b){b.replace(se,function(b,c,d){a.push(d)})})),b.$inject=a):J(b)?(c=b.length-1,Wa(b[c],"fn"),a=b.slice(0,c)):Wa(b,"fn",!0);return a}function gc(b){function a(a){return function(b,c){if(T(b))r(b, +$b(a));else return a(b,c)}}function c(a,b){Da(a,"service");if(P(b)||J(b))b=n.instantiate(b);if(!b.$get)throw cb("pget",a);return l[a+k]=b}function d(a,b){return c(a,{$get:b})}function e(a){var b=[],c,d,f,k;r(a,function(a){if(!h.get(a)){h.put(a,!0);try{if(v(a))for(c=Ya(a),b=b.concat(e(c.requires)).concat(c._runBlocks),d=c._invokeQueue,f=0,k=d.length;f 4096 bytes)!"));else{if(m.cookie!== +da)for(da=m.cookie,d=da.split("; "),O={},f=0;fh&&this.remove(p.key),b},get:function(a){if(h").parent()[0])});var f=L(a,b,a,c,d,e);ca(a,"ng-scope");return function(b,c,d,e){Db(b,"scope");var g=c?La.clone.call(a):a;r(d,function(a,b){g.data("$"+b+"Controller",a)});d=0;for(var m=g.length;darguments.length&& +(b=a,a=t);K&&(c=da);return p(a,b,c)}var u,M,z,O,I,B,da={},rb;u=c===f?d:ha(d,new Ob(w(f),d.$attr));M=u.$$element;if(L){var Na=/^\s*([@=&])(\??)\s*(\w*)\s*$/;B=e.$new(!0);!H||H!==L&&H!==L.$$originalDirective?M.data("$isolateScopeNoTemplate",B):M.data("$isolateScope",B);ca(M,"ng-isolate-scope");r(L.scope,function(a,c){var d=a.match(Na)||[],f=d[3]||c,g="?"==d[2],d=d[1],m,l,n,p;B.$$isolateBindings[c]=d+f;switch(d){case "@":u.$observe(f,function(a){B[c]=a});u.$$observers[f].$$scope=e;u[f]&&(B[c]=b(u[f])(e)); +break;case "=":if(g&&!u[f])break;l=q(u[f]);p=l.literal?Aa:function(a,b){return a===b||a!==a&&b!==b};n=l.assign||function(){m=B[c]=l(e);throw ja("nonassign",u[f],L.name);};m=B[c]=l(e);B.$watch(function(){var a=l(e);p(a,B[c])||(p(a,m)?n(e,a=B[c]):B[c]=a);return m=a},null,l.literal);break;case "&":l=q(u[f]);B[c]=function(a){return l(e,a)};break;default:throw ja("iscp",L.name,c,a);}})}rb=p&&F;R&&r(R,function(a){var b={$scope:a===L||a.$$isolateScope?B:e,$element:M,$attrs:u,$transclude:rb},c;I=a.controller; +"@"==I&&(I=u[a.name]);c=s(I,b);da[a.name]=c;K||M.data("$"+a.name+"Controller",c);a.controllerAs&&(b.$scope[a.controllerAs]=c)});g=0;for(z=m.length;gG.priority)break;if(V=G.scope)O=O||G,G.templateUrl||(db("new/isolated scope",L,G,Z),T(V)&&(L=G));C=G.name;!G.templateUrl&&G.controller&&(V=G.controller,R=R||{},db("'"+C+"' controller",R[C],G,Z),R[C]=G);if(V=G.transclude)x=!0,G.$$tlb|| +(db("transclusion",fa,G,Z),fa=G),"element"==V?(K=!0,u=G.priority,V=Z,Z=d.$$element=w(X.createComment(" "+C+": "+d[C]+" ")),c=Z[0],Na(f,Ba.call(V,0),c),S=z(V,e,u,g&&g.name,{nonTlbTranscludeDirective:fa})):(V=w(Kb(c)).contents(),Z.empty(),S=z(V,e));if(G.template)if(D=!0,db("template",H,G,Z),H=G,V=P(G.template)?G.template(Z,d):G.template,V=W(V),G.replace){g=G;V=Ib.test(V)?w(aa(V)):[];c=V[0];if(1!=V.length||1!==c.nodeType)throw ja("tplrt",C,"");Na(f,Z,c);qa={$attr:{}};V=da(c,[],qa);var $=a.splice(Fa+ +1,a.length-(Fa+1));L&&y(V);a=a.concat(V).concat($);E(d,qa);qa=a.length}else Z.html(V);if(G.templateUrl)D=!0,db("template",H,G,Z),H=G,G.replace&&(g=G),N=ue(a.splice(Fa,a.length-Fa),Z,d,f,x&&S,m,n,{controllerDirectives:R,newIsolateScopeDirective:L,templateDirective:H,nonTlbTranscludeDirective:fa}),qa=a.length;else if(G.compile)try{Q=G.compile(Z,d,S),P(Q)?F(null,Q,U,Y):Q&&F(Q.pre,Q.post,U,Y)}catch(ve){l(ve,ia(Z))}G.terminal&&(N.terminal=!0,u=Math.max(u,G.priority))}N.scope=O&&!0===O.scope;N.transcludeOnThisElement= +x;N.templateOnThisElement=D;N.transclude=S;p.hasElementTranscludeDirective=K;return N}function y(a){for(var b=0,c=a.length;bp.priority)&&-1!=p.restrict.indexOf(f)&&(q&&(p=bc(p,{$$start:q,$$end:n})),b.push(p),h=p)}catch(F){l(F)}}return h}function E(a,b){var c=b.$attr,d=a.$attr,e=a.$$element;r(a,function(d,e){"$"!= +e.charAt(0)&&(b[e]&&b[e]!==d&&(d+=("style"===e?";":" ")+b[e]),a.$set(e,d,!0,c[e]))});r(b,function(b,f){"class"==f?(ca(e,b),a["class"]=(a["class"]?a["class"]+" ":"")+b):"style"==f?(e.attr("style",e.attr("style")+";"+b),a.style=(a.style?a.style+";":"")+b):"$"==f.charAt(0)||a.hasOwnProperty(f)||(a[f]=b,d[f]=c[f])})}function ue(a,b,c,d,e,f,g,h){var m=[],l,q,s=b[0],u=a.shift(),F=D({},u,{templateUrl:null,transclude:null,replace:null,$$originalDirective:u}),N=P(u.templateUrl)?u.templateUrl(b,c):u.templateUrl; +b.empty();n.get(A.getTrustedResourceUrl(N),{cache:p}).success(function(n){var p,A;n=W(n);if(u.replace){n=Ib.test(n)?w(aa(n)):[];p=n[0];if(1!=n.length||1!==p.nodeType)throw ja("tplrt",u.name,N);n={$attr:{}};Na(d,b,p);var z=da(p,[],n);T(u.scope)&&y(z);a=z.concat(a);E(c,n)}else p=s,b.html(n);a.unshift(F);l=H(a,p,c,e,b,u,f,g,h);r(d,function(a,c){a==p&&(d[c]=b[0])});for(q=L(b[0].childNodes,e);m.length;){n=m.shift();A=m.shift();var R=m.shift(),I=m.shift(),z=b[0];if(A!==s){var B=A.className;h.hasElementTranscludeDirective&& +u.replace||(z=Kb(p));Na(R,w(A),z);ca(w(z),B)}A=l.transcludeOnThisElement?O(n,l.transclude,I):I;l(q,n,z,d,A)}m=null}).error(function(a,b,c,d){throw ja("tpload",d.url);});return function(a,b,c,d,e){a=e;m?(m.push(b),m.push(c),m.push(d),m.push(a)):(l.transcludeOnThisElement&&(a=O(b,l.transclude,e)),l(q,b,c,d,a))}}function x(a,b){var c=b.priority-a.priority;return 0!==c?c:a.name!==b.name?a.namea.status?d:n.reject(d)}var c={method:"get",transformRequest:e.transformRequest,transformResponse:e.transformResponse},d=function(a){var b=e.headers,c=D({},a.headers),d,f,b=D({},b.common,b[K(a.method)]); +a:for(d in b){a=K(d);for(f in c)if(K(f)===a)continue a;c[d]=b[d]}(function(a){var b;r(a,function(c,d){P(c)&&(b=c(),null!=b?a[d]=b:delete a[d])})})(c);return c}(a);D(c,a);c.headers=d;c.method=Ia(c.method);var f=[function(a){d=a.headers;var c=xc(a.data,wc(d),a.transformRequest);x(c)&&r(d,function(a,b){"content-type"===K(b)&&delete d[b]});x(a.withCredentials)&&!x(e.withCredentials)&&(a.withCredentials=e.withCredentials);return s(a,c,d).then(b,b)},t],g=n.when(c);for(r(A,function(a){(a.request||a.requestError)&& +f.unshift(a.request,a.requestError);(a.response||a.responseError)&&f.push(a.response,a.responseError)});f.length;){a=f.shift();var m=f.shift(),g=g.then(a,m)}g.success=function(a){g.then(function(b){a(b.data,b.status,b.headers,c)});return g};g.error=function(a){g.then(null,function(b){a(b.data,b.status,b.headers,c)});return g};return g}function s(c,f,g){function h(a,b,c,e){I&&(200<=a&&300>a?I.put(w,[a,b,vc(c),e]):I.remove(w));p(b,a,c,e);d.$$phase||d.$apply()}function p(a,b,d,e){b=Math.max(b,0);(200<= +b&&300>b?A.resolve:A.reject)({data:a,status:b,headers:wc(d),config:c,statusText:e})}function s(){var a=Ra(q.pendingRequests,c);-1!==a&&q.pendingRequests.splice(a,1)}var A=n.defer(),r=A.promise,I,H,w=F(c.url,c.params);q.pendingRequests.push(c);r.then(s,s);!c.cache&&!e.cache||(!1===c.cache||"GET"!==c.method&&"JSONP"!==c.method)||(I=T(c.cache)?c.cache:T(e.cache)?e.cache:u);if(I)if(H=I.get(w),y(H)){if(H&&P(H.then))return H.then(s,s),H;J(H)?p(H[1],H[0],ha(H[2]),H[3]):p(H,200,{},"OK")}else I.put(w,r);x(H)&& +((H=Pb(c.url)?b.cookies()[c.xsrfCookieName||e.xsrfCookieName]:t)&&(g[c.xsrfHeaderName||e.xsrfHeaderName]=H),a(c.method,w,f,h,g,c.timeout,c.withCredentials,c.responseType));return r}function F(a,b){if(!b)return a;var c=[];Tc(b,function(a,b){null===a||x(a)||(J(a)||(a=[a]),r(a,function(a){T(a)&&(a=ta(a)?a.toISOString():na(a));c.push(Ca(b)+"="+Ca(a))}))});0=Q&&(!b.match(/^(get|post|head|put|delete|options)$/i)|| +!W.XMLHttpRequest))return new W.ActiveXObject("Microsoft.XMLHTTP");if(W.XMLHttpRequest)return new W.XMLHttpRequest;throw C("$httpBackend")("noxhr");}function Vd(){this.$get=["$browser","$window","$document",function(b,a,c){return ye(b,xe,b.defer,a.angular.callbacks,c[0])}]}function ye(b,a,c,d,e){function f(a,b,c){var f=e.createElement("script"),g=null;f.type="text/javascript";f.src=a;f.async=!0;g=function(a){$a(f,"load",g);$a(f,"error",g);e.body.removeChild(f);f=null;var k=-1,s="unknown";a&&("load"!== +a.type||d[b].called||(a={type:"error"}),s=a.type,k="error"===a.type?404:200);c&&c(k,s)};sb(f,"load",g);sb(f,"error",g);8>=Q&&(f.onreadystatechange=function(){v(f.readyState)&&/loaded|complete/.test(f.readyState)&&(f.onreadystatechange=null,g({type:"load"}))});e.body.appendChild(f);return g}var g=-1;return function(e,m,h,l,n,p,q,s){function F(){A=g;R&&R();z&&z.abort()}function u(a,d,e,f,g){L&&c.cancel(L);R=z=null;0===d&&(d=e?200:"file"==ua(m).protocol?404:0);a(1223===d?204:d,e,f,g||"");b.$$completeOutstandingRequest(E)} +var A;b.$$incOutstandingRequestCount();m=m||b.url();if("jsonp"==K(e)){var N="_"+(d.counter++).toString(36);d[N]=function(a){d[N].data=a;d[N].called=!0};var R=f(m.replace("JSON_CALLBACK","angular.callbacks."+N),N,function(a,b){u(l,a,d[N].data,"",b);d[N]=E})}else{var z=a(e);z.open(e,m,!0);r(n,function(a,b){y(a)&&z.setRequestHeader(b,a)});z.onreadystatechange=function(){if(z&&4==z.readyState){var a=null,b=null,c="";A!==g&&(a=z.getAllResponseHeaders(),b="response"in z?z.response:z.responseText);A===g&& +10>Q||(c=z.statusText);u(l,A||z.status,b,a,c)}};q&&(z.withCredentials=!0);if(s)try{z.responseType=s}catch(ca){if("json"!==s)throw ca;}z.send(h||null)}if(0=k&&(n.resolve(q),l(p.$$intervalId),delete e[p.$$intervalId]);s||b.$apply()},g);e[p.$$intervalId]=n;return p}var e={};d.cancel= +function(b){return b&&b.$$intervalId in e?(e[b.$$intervalId].reject("canceled"),a.clearInterval(b.$$intervalId),delete e[b.$$intervalId],!0):!1};return d}]}function bd(){this.$get=function(){return{id:"en-us",NUMBER_FORMATS:{DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{minInt:1,minFrac:0,maxFrac:3,posPre:"",posSuf:"",negPre:"-",negSuf:"",gSize:3,lgSize:3},{minInt:1,minFrac:2,maxFrac:2,posPre:"\u00a4",posSuf:"",negPre:"(\u00a4",negSuf:")",gSize:3,lgSize:3}],CURRENCY_SYM:"$"},DATETIME_FORMATS:{MONTH:"January February March April May June July August September October November December".split(" "), +SHORTMONTH:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),DAY:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),SHORTDAY:"Sun Mon Tue Wed Thu Fri Sat".split(" "),AMPMS:["AM","PM"],medium:"MMM d, y h:mm:ss a","short":"M/d/yy h:mm a",fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",mediumDate:"MMM d, y",shortDate:"M/d/yy",mediumTime:"h:mm:ss a",shortTime:"h:mm a"},pluralCat:function(b){return 1===b?"one":"other"}}}}function Qb(b){b=b.split("/");for(var a=b.length;a--;)b[a]= +lb(b[a]);return b.join("/")}function zc(b,a,c){b=ua(b,c);a.$$protocol=b.protocol;a.$$host=b.hostname;a.$$port=U(b.port)||ze[b.protocol]||null}function Ac(b,a,c){var d="/"!==b.charAt(0);d&&(b="/"+b);b=ua(b,c);a.$$path=decodeURIComponent(d&&"/"===b.pathname.charAt(0)?b.pathname.substring(1):b.pathname);a.$$search=ec(b.search);a.$$hash=decodeURIComponent(b.hash);a.$$path&&"/"!=a.$$path.charAt(0)&&(a.$$path="/"+a.$$path)}function ra(b,a){if(0===a.indexOf(b))return a.substr(b.length)}function eb(b){var a= +b.indexOf("#");return-1==a?b:b.substr(0,a)}function Rb(b){return b.substr(0,eb(b).lastIndexOf("/")+1)}function Bc(b,a){this.$$html5=!0;a=a||"";var c=Rb(b);zc(b,this,b);this.$$parse=function(a){var e=ra(c,a);if(!v(e))throw Sb("ipthprfx",a,c);Ac(e,this,b);this.$$path||(this.$$path="/");this.$$compose()};this.$$compose=function(){var a=Cb(this.$$search),b=this.$$hash?"#"+lb(this.$$hash):"";this.$$url=Qb(this.$$path)+(a?"?"+a:"")+b;this.$$absUrl=c+this.$$url.substr(1)};this.$$rewrite=function(d){var e; +if((e=ra(b,d))!==t)return d=e,(e=ra(a,e))!==t?c+(ra("/",e)||e):b+d;if((e=ra(c,d))!==t)return c+e;if(c==d+"/")return c}}function Tb(b,a){var c=Rb(b);zc(b,this,b);this.$$parse=function(d){var e=ra(b,d)||ra(c,d),e="#"==e.charAt(0)?ra(a,e):this.$$html5?e:"";if(!v(e))throw Sb("ihshprfx",d,a);Ac(e,this,b);d=this.$$path;var f=/^\/[A-Z]:(\/.*)/;0===e.indexOf(b)&&(e=e.replace(b,""));f.exec(e)||(d=(e=f.exec(d))?e[1]:d);this.$$path=d;this.$$compose()};this.$$compose=function(){var c=Cb(this.$$search),e=this.$$hash? +"#"+lb(this.$$hash):"";this.$$url=Qb(this.$$path)+(c?"?"+c:"")+e;this.$$absUrl=b+(this.$$url?a+this.$$url:"")};this.$$rewrite=function(a){if(eb(b)==eb(a))return a}}function Ub(b,a){this.$$html5=!0;Tb.apply(this,arguments);var c=Rb(b);this.$$rewrite=function(d){var e;if(b==eb(d))return d;if(e=ra(c,d))return b+a+e;if(c===d+"/")return c};this.$$compose=function(){var c=Cb(this.$$search),e=this.$$hash?"#"+lb(this.$$hash):"";this.$$url=Qb(this.$$path)+(c?"?"+c:"")+e;this.$$absUrl=b+a+this.$$url}}function tb(b){return function(){return this[b]}} +function Cc(b,a){return function(c){if(x(c))return this[b];this[b]=a(c);this.$$compose();return this}}function Wd(){var b="",a=!1;this.hashPrefix=function(a){return y(a)?(b=a,this):b};this.html5Mode=function(b){return y(b)?(a=b,this):a};this.$get=["$rootScope","$browser","$sniffer","$rootElement",function(c,d,e,f){function g(a){c.$broadcast("$locationChangeSuccess",k.absUrl(),a)}var k,m,h=d.baseHref(),l=d.url(),n;a?(n=l.substring(0,l.indexOf("/",l.indexOf("//")+2))+(h||"/"),m=e.history?Bc:Ub):(n= +eb(l),m=Tb);k=new m(n,"#"+b);k.$$parse(k.$$rewrite(l));var p=/^\s*(javascript|mailto):/i;f.on("click",function(a){if(!a.ctrlKey&&!a.metaKey&&2!=a.which){for(var e=w(a.target);"a"!==K(e[0].nodeName);)if(e[0]===f[0]||!(e=e.parent())[0])return;var g=e.prop("href");T(g)&&"[object SVGAnimatedString]"===g.toString()&&(g=ua(g.animVal).href);if(!p.test(g)){if(m===Ub){var h=e.attr("href")||e.attr("xlink:href");if(h&&0>h.indexOf("://"))if(g="#"+b,"/"==h[0])g=n+g+h;else if("#"==h[0])g=n+g+(k.path()||"/")+h; +else{var l=k.path().split("/"),h=h.split("/");2!==l.length||l[1]||(l.length=1);for(var q=0;qe?Dc(d[0],d[1],d[2],d[3],d[4],c,a):function(b,f){var g=0,k;do k=Dc(d[g++],d[g++],d[g++],d[g++],d[g++],c,a)(b,f),f=t,b=k;while(ga)for(b in h++,e)e.hasOwnProperty(b)&&!d.hasOwnProperty(b)&&(r--,delete e[b])}else e!==d&&(e=d,h++);return h},function(){n?(n=!1,b(d,d,c)):b(d,g,c);if(k)if(T(d))if(Pa(d)){g=Array(d.length);for(var a=0;at&&(w=4-t,O[w]||(O[w]=[]),B=P(d.exp)?"fn: "+(d.exp.name||d.exp.toString()): +d.exp,B+="; newVal: "+na(f)+"; oldVal: "+na(k),O[w].push(B));else if(d===c){z=!1;break a}}catch(y){p.$$phase=null,e(y)}if(!(h=L.$$childHead||L!==this&&L.$$nextSibling))for(;L!==this&&!(h=L.$$nextSibling);)L=L.$parent}while(L=h);if((z||l.length)&&!t--)throw p.$$phase=null,a("infdig",b,na(O));}while(z||l.length);for(p.$$phase=null;r.length;)try{r.shift()()}catch(v){e(v)}},$destroy:function(){if(!this.$$destroyed){var a=this.$parent;this.$broadcast("$destroy");this.$$destroyed=!0;this!==p&&(r(this.$$listenerCount, +Bb(null,l,this)),a.$$childHead==this&&(a.$$childHead=this.$$nextSibling),a.$$childTail==this&&(a.$$childTail=this.$$prevSibling),this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling),this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling),this.$parent=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=this.$root=null,this.$$listeners={},this.$$watchers=this.$$asyncQueue=this.$$postDigestQueue=[],this.$destroy=this.$digest=this.$apply=E,this.$on= +this.$watch=function(){return E})}},$eval:function(a,b){return f(a)(this,b)},$evalAsync:function(a){p.$$phase||p.$$asyncQueue.length||g.defer(function(){p.$$asyncQueue.length&&p.$digest()});this.$$asyncQueue.push({scope:this,expression:a})},$$postDigest:function(a){this.$$postDigestQueue.push(a)},$apply:function(a){try{return m("$apply"),this.$eval(a)}catch(b){e(b)}finally{p.$$phase=null;try{p.$digest()}catch(c){throw e(c),c;}}},$on:function(a,b){var c=this.$$listeners[a];c||(this.$$listeners[a]= +c=[]);c.push(b);var d=this;do d.$$listenerCount[a]||(d.$$listenerCount[a]=0),d.$$listenerCount[a]++;while(d=d.$parent);var e=this;return function(){c[Ra(c,b)]=null;l(e,1,a)}},$emit:function(a,b){var c=[],d,f=this,g=!1,k={name:a,targetScope:f,stopPropagation:function(){g=!0},preventDefault:function(){k.defaultPrevented=!0},defaultPrevented:!1},h=[k].concat(Ba.call(arguments,1)),l,m;do{d=f.$$listeners[a]||c;k.currentScope=f;l=0;for(m=d.length;lc.msieDocumentMode)throw xa("iequirks");var e=ha(ga);e.isEnabled=function(){return b};e.trustAs=d.trustAs;e.getTrusted=d.getTrusted;e.valueOf=d.valueOf;b||(e.trustAs=e.getTrusted=function(a,b){return b}, +e.valueOf=Qa);e.parseAs=function(b,c){var d=a(c);return d.literal&&d.constant?d:function(a,c){return e.getTrusted(b,d(a,c))}};var f=e.parseAs,g=e.getTrusted,k=e.trustAs;r(ga,function(a,b){var c=K(b);e[Za("parse_as_"+c)]=function(b){return f(a,b)};e[Za("get_trusted_"+c)]=function(b){return g(a,b)};e[Za("trust_as_"+c)]=function(b){return k(a,b)}});return e}]}function ce(){this.$get=["$window","$document",function(b,a){var c={},d=U((/android (\d+)/.exec(K((b.navigator||{}).userAgent))||[])[1]),e=/Boxee/i.test((b.navigator|| +{}).userAgent),f=a[0]||{},g=f.documentMode,k,m=/^(Moz|webkit|O|ms)(?=[A-Z])/,h=f.body&&f.body.style,l=!1,n=!1;if(h){for(var p in h)if(l=m.exec(p)){k=l[0];k=k.substr(0,1).toUpperCase()+k.substr(1);break}k||(k="WebkitOpacity"in h&&"webkit");l=!!("transition"in h||k+"Transition"in h);n=!!("animation"in h||k+"Animation"in h);!d||l&&n||(l=v(f.body.style.webkitTransition),n=v(f.body.style.webkitAnimation))}return{history:!(!b.history||!b.history.pushState||4>d||e),hashchange:"onhashchange"in b&&(!g||7< +g),hasEvent:function(a){if("input"==a&&9==Q)return!1;if(x(c[a])){var b=f.createElement("div");c[a]="on"+a in b}return c[a]},csp:Xa(),vendorPrefix:k,transitions:l,animations:n,android:d,msie:Q,msieDocumentMode:g}}]}function ee(){this.$get=["$rootScope","$browser","$q","$exceptionHandler",function(b,a,c,d){function e(e,k,m){var h=c.defer(),l=h.promise,n=y(m)&&!m;k=a.defer(function(){try{h.resolve(e())}catch(a){h.reject(a),d(a)}finally{delete f[l.$$timeoutId]}n||b.$apply()},k);l.$$timeoutId=k;f[k]=h; +return l}var f={};e.cancel=function(b){return b&&b.$$timeoutId in f?(f[b.$$timeoutId].reject("canceled"),delete f[b.$$timeoutId],a.defer.cancel(b.$$timeoutId)):!1};return e}]}function ua(b,a){var c=b;Q&&(Y.setAttribute("href",c),c=Y.href);Y.setAttribute("href",c);return{href:Y.href,protocol:Y.protocol?Y.protocol.replace(/:$/,""):"",host:Y.host,search:Y.search?Y.search.replace(/^\?/,""):"",hash:Y.hash?Y.hash.replace(/^#/,""):"",hostname:Y.hostname,port:Y.port,pathname:"/"===Y.pathname.charAt(0)?Y.pathname: +"/"+Y.pathname}}function Pb(b){b=v(b)?ua(b):b;return b.protocol===Hc.protocol&&b.host===Hc.host}function fe(){this.$get=ba(W)}function mc(b){function a(d,e){if(T(d)){var f={};r(d,function(b,c){f[c]=a(c,b)});return f}return b.factory(d+c,e)}var c="Filter";this.register=a;this.$get=["$injector",function(a){return function(b){return a.get(b+c)}}];a("currency",Ic);a("date",Jc);a("filter",Ce);a("json",De);a("limitTo",Ee);a("lowercase",Fe);a("number",Kc);a("orderBy",Lc);a("uppercase",Ge)}function Ce(){return function(b, +a,c){if(!J(b))return b;var d=typeof c,e=[];e.check=function(a){for(var b=0;bb;b=Math.abs(b);var g=b+"",k="",m=[],h=!1;if(-1!==g.indexOf("e")){var l=g.match(/([\d\.]+)e(-?)(\d+)/);l&&"-"==l[2]&& +l[3]>e+1?(g="0",b=0):(k=g,h=!0)}if(h)0b)&&(k=b.toFixed(e));else{g=(g.split(Nc)[1]||"").length;x(e)&&(e=Math.min(Math.max(a.minFrac,g),a.maxFrac));b=+(Math.round(+(b.toString()+"e"+e)).toString()+"e"+-e);0===b&&(f=!1);b=(""+b).split(Nc);g=b[0];b=b[1]||"";var l=0,n=a.lgSize,p=a.gSize;if(g.length>=n+p)for(l=g.length-n,h=0;hb&&(d="-",b=-b);for(b=""+b;b.length-c)e+=c;0===e&&-12==c&&(e=12);return Xb(e,a,d)}}function vb(b,a){return function(c,d){var e=c["get"+b](),f=Ia(a?"SHORT"+b:b);return d[f][e]}}function Jc(b){function a(a){var b;if(b=a.match(c)){a=new Date(0);var f=0,g=0,k=b[8]? +a.setUTCFullYear:a.setFullYear,m=b[8]?a.setUTCHours:a.setHours;b[9]&&(f=U(b[9]+b[10]),g=U(b[9]+b[11]));k.call(a,U(b[1]),U(b[2])-1,U(b[3]));f=U(b[4]||0)-f;g=U(b[5]||0)-g;k=U(b[6]||0);b=Math.round(1E3*parseFloat("0."+(b[7]||0)));m.call(a,f,g,k,b)}return a}var c=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(c,e){var f="",g=[],k,m;e=e||"mediumDate";e=b.DATETIME_FORMATS[e]||e;v(c)&&(c=He.test(c)?U(c):a(c));ib(c)&&(c=new Date(c)); +if(!ta(c))return c;for(;e;)(m=Ie.exec(e))?(g=g.concat(Ba.call(m,1)),e=g.pop()):(g.push(e),e=null);r(g,function(a){k=Je[a];f+=k?k(c,b.DATETIME_FORMATS):a.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return f}}function De(){return function(b){return na(b,!0)}}function Ee(){return function(b,a){if(!J(b)&&!v(b))return b;a=Infinity===Math.abs(Number(a))?Number(a):U(a);if(v(b))return a?0<=a?b.slice(0,a):b.slice(a,b.length):"";var c=[],d,e;a>b.length?a=b.length:a<-b.length&&(a=-b.length);0a||37<=a&&40>=a)||q()});if(e.hasEvent("paste"))a.on("paste cut",q)}a.on("change",n);d.$render=function(){a.val(d.$isEmpty(d.$viewValue)?"":d.$viewValue)};var s=c.ngPattern;s&&((e=s.match(/^\/(.*)\/([gim]*)$/))?(s=RegExp(e[1],e[2]),e=function(a){return sa(d, +"pattern",d.$isEmpty(a)||s.test(a),a)}):e=function(c){var e=b.$eval(s);if(!e||!e.test)throw C("ngPattern")("noregexp",s,e,ia(a));return sa(d,"pattern",d.$isEmpty(c)||e.test(c),c)},d.$formatters.push(e),d.$parsers.push(e));if(c.ngMinlength){var r=U(c.ngMinlength);e=function(a){return sa(d,"minlength",d.$isEmpty(a)||a.length>=r,a)};d.$parsers.push(e);d.$formatters.push(e)}if(c.ngMaxlength){var u=U(c.ngMaxlength);e=function(a){return sa(d,"maxlength",d.$isEmpty(a)||a.length<=u,a)};d.$parsers.push(e); +d.$formatters.push(e)}}function Yb(b,a){b="ngClass"+b;return["$animate",function(c){function d(a,b){var c=[],d=0;a:for(;dQ?function(b){b=b.nodeName?b:b[0];return b.scopeName&&"HTML"!=b.scopeName?Ia(b.scopeName+":"+b.nodeName):b.nodeName}:function(b){return b.nodeName?b.nodeName:b[0].nodeName};var Xa=function(){if(y(Xa.isActive_))return Xa.isActive_;var b=!(!X.querySelector("[ng-csp]")&&!X.querySelector("[data-ng-csp]")); +if(!b)try{new Function("")}catch(a){b=!0}return Xa.isActive_=b},Yc=/[A-Z]/g,ad={full:"1.2.26",major:1,minor:2,dot:26,codeName:"captivating-disinterest"};S.expando="ng339";var ab=S.cache={},ne=1,sb=W.document.addEventListener?function(b,a,c){b.addEventListener(a,c,!1)}:function(b,a,c){b.attachEvent("on"+a,c)},$a=W.document.removeEventListener?function(b,a,c){b.removeEventListener(a,c,!1)}:function(b,a,c){b.detachEvent("on"+a,c)};S._data=function(b){return this.cache[b[this.expando]]||{}};var ie=/([\:\-\_]+(.))/g, +je=/^moz([A-Z])/,Hb=C("jqLite"),ke=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,Ib=/<|&#?\w+;/,le=/<([\w:]+)/,me=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ea={option:[1,'"],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ea.optgroup=ea.option;ea.tbody=ea.tfoot=ea.colgroup=ea.caption=ea.thead;ea.th= +ea.td;var La=S.prototype={ready:function(b){function a(){c||(c=!0,b())}var c=!1;"complete"===X.readyState?setTimeout(a):(this.on("DOMContentLoaded",a),S(W).on("load",a))},toString:function(){var b=[];r(this,function(a){b.push(""+a)});return"["+b.join(", ")+"]"},eq:function(b){return 0<=b?w(this[b]):w(this[this.length+b])},length:0,push:Me,sort:[].sort,splice:[].splice},qb={};r("multiple selected checked disabled readOnly required open".split(" "),function(b){qb[K(b)]=b});var rc={};r("input select option textarea button form details".split(" "), +function(b){rc[Ia(b)]=!0});r({data:Mb,removeData:Lb},function(b,a){S[a]=b});r({data:Mb,inheritedData:pb,scope:function(b){return w.data(b,"$scope")||pb(b.parentNode||b,["$isolateScope","$scope"])},isolateScope:function(b){return w.data(b,"$isolateScope")||w.data(b,"$isolateScopeNoTemplate")},controller:oc,injector:function(b){return pb(b,"$injector")},removeAttr:function(b,a){b.removeAttribute(a)},hasClass:Nb,css:function(b,a,c){a=Za(a);if(y(c))b.style[a]=c;else{var d;8>=Q&&(d=b.currentStyle&&b.currentStyle[a], +""===d&&(d="auto"));d=d||b.style[a];8>=Q&&(d=""===d?t:d);return d}},attr:function(b,a,c){var d=K(a);if(qb[d])if(y(c))c?(b[a]=!0,b.setAttribute(a,d)):(b[a]=!1,b.removeAttribute(d));else return b[a]||(b.attributes.getNamedItem(a)||E).specified?d:t;else if(y(c))b.setAttribute(a,c);else if(b.getAttribute)return b=b.getAttribute(a,2),null===b?t:b},prop:function(b,a,c){if(y(c))b[a]=c;else return b[a]},text:function(){function b(b,d){var e=a[b.nodeType];if(x(d))return e?b[e]:"";b[e]=d}var a=[];9>Q?(a[1]= +"innerText",a[3]="nodeValue"):a[1]=a[3]="textContent";b.$dv="";return b}(),val:function(b,a){if(x(a)){if("SELECT"===Ma(b)&&b.multiple){var c=[];r(b.options,function(a){a.selected&&c.push(a.value||a.text)});return 0===c.length?null:c}return b.value}b.value=a},html:function(b,a){if(x(a))return b.innerHTML;for(var c=0,d=b.childNodes;c":function(a,c,d,e){return d(a,c)>e(a,c)},"<=":function(a,c,d,e){return d(a,c)<=e(a,c)},">=":function(a,c,d,e){return d(a,c)>=e(a,c)},"&&":function(a,c,d,e){return d(a,c)&&e(a,c)},"||":function(a,c,d,e){return d(a,c)||e(a,c)},"&":function(a,c,d,e){return d(a,c)&e(a,c)},"|":function(a,c,d,e){return e(a,c)(a,c,d(a,c))},"!":function(a,c,d){return!d(a,c)}},Re={n:"\n",f:"\f",r:"\r", +t:"\t",v:"\v","'":"'",'"':'"'},Wb=function(a){this.options=a};Wb.prototype={constructor:Wb,lex:function(a){this.text=a;this.index=0;this.ch=t;this.lastCh=":";for(this.tokens=[];this.index=a},isWhitespace:function(a){return" "===a||"\r"===a||"\t"===a||"\n"===a||"\v"===a||"\u00a0"===a},isIdent:function(a){return"a"<=a&&"z">=a||"A"<=a&&"Z">=a||"_"===a||"$"===a},isExpOperator:function(a){return"-"===a||"+"===a||this.isNumber(a)},throwError:function(a,c,d){d=d||this.index;c=y(c)?"s "+c+"-"+this.index+" ["+ +this.text.substring(c,d)+"]":" "+d;throw la("lexerr",a,c,this.text);},readNumber:function(){for(var a="",c=this.index;this.index","<=",">="))a=this.binaryFn(a,c.fn,this.relational());return a},additive:function(){for(var a=this.multiplicative(),c;c=this.expect("+","-");)a=this.binaryFn(a,c.fn,this.multiplicative());return a},multiplicative:function(){for(var a=this.unary(),c;c=this.expect("*","/","%");)a=this.binaryFn(a,c.fn,this.unary());return a},unary:function(){var a;return this.expect("+")?this.primary():(a=this.expect("-"))?this.binaryFn(fb.ZERO,a.fn, +this.unary()):(a=this.expect("!"))?this.unaryFn(a.fn,this.unary()):this.primary()},fieldAccess:function(a){var c=this,d=this.expect().text,e=Ec(d,this.options,this.text);return D(function(c,d,k){return e(k||a(c,d))},{assign:function(e,g,k){(k=a(e,k))||a.assign(e,k={});return ub(k,d,g,c.text,c.options)}})},objectIndex:function(a){var c=this,d=this.expression();this.consume("]");return D(function(e,f){var g=a(e,f),k=d(e,f),m;ka(k,c.text);if(!g)return t;(g=va(g[k],c.text))&&(g.then&&c.options.unwrapPromises)&& +(m=g,"$$v"in g||(m.$$v=t,m.then(function(a){m.$$v=a})),g=g.$$v);return g},{assign:function(e,f,g){var k=ka(d(e,g),c.text);(g=va(a(e,g),c.text))||a.assign(e,g={});return g[k]=f}})},functionCall:function(a,c){var d=[];if(")"!==this.peekToken().text){do d.push(this.expression());while(this.expect(","))}this.consume(")");var e=this;return function(f,g){for(var k=[],m=c?c(f,g):f,h=0;ha.getHours()?c.AMPMS[0]:c.AMPMS[1]},Z:function(a){a=-1*a.getTimezoneOffset();return a=(0<=a?"+":"")+(Xb(Math[0< +a?"floor":"ceil"](a/60),2)+Xb(Math.abs(a%60),2))}},Ie=/((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z))(.*)/,He=/^\-?\d+$/;Jc.$inject=["$locale"];var Fe=ba(K),Ge=ba(Ia);Lc.$inject=["$parse"];var dd=ba({restrict:"E",compile:function(a,c){8>=Q&&(c.href||c.name||c.$set("href",""),a.append(X.createComment("IE fix")));if(!c.href&&!c.xlinkHref&&!c.name)return function(a,c){var f="[object SVGAnimatedString]"===za.call(c.prop("href"))?"xlink:href":"href";c.on("click",function(a){c.attr(f)|| +a.preventDefault()})}}}),Fb={};r(qb,function(a,c){if("multiple"!=a){var d=pa("ng-"+c);Fb[d]=function(){return{priority:100,link:function(a,f,g){a.$watch(g[d],function(a){g.$set(c,!!a)})}}}}});r(["src","srcset","href"],function(a){var c=pa("ng-"+a);Fb[c]=function(){return{priority:99,link:function(d,e,f){var g=a,k=a;"href"===a&&"[object SVGAnimatedString]"===za.call(e.prop("href"))&&(k="xlinkHref",f.$attr[k]="xlink:href",g=null);f.$observe(c,function(c){c?(f.$set(k,c),Q&&g&&e.prop(g,f[k])):"href"=== +a&&f.$set(k,null)})}}}});var yb={$addControl:E,$removeControl:E,$setValidity:E,$setDirty:E,$setPristine:E};Oc.$inject=["$element","$attrs","$scope","$animate"];var Rc=function(a){return["$timeout",function(c){return{name:"form",restrict:a?"EAC":"E",controller:Oc,compile:function(){return{pre:function(a,e,f,g){if(!f.action){var k=function(a){a.preventDefault?a.preventDefault():a.returnValue=!1};sb(e[0],"submit",k);e.on("$destroy",function(){c(function(){$a(e[0],"submit",k)},0,!1)})}var m=e.parent().controller("form"), +h=f.name||f.ngForm;h&&ub(a,h,g,h);if(m)e.on("$destroy",function(){m.$removeControl(g);h&&ub(a,h,t,h);D(g,yb)})}}}}}]},ed=Rc(),rd=Rc(!0),Se=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,Te=/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,Ue=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/,Sc={text:Ab,number:function(a,c,d,e,f,g){Ab(a,c,d,e,f,g);e.$parsers.push(function(a){var c=e.$isEmpty(a);if(c||Ue.test(a))return e.$setValidity("number", +!0),""===a?null:c?a:parseFloat(a);e.$setValidity("number",!1);return t});Ke(e,"number",Ve,null,e.$$validityState);e.$formatters.push(function(a){return e.$isEmpty(a)?"":""+a});d.min&&(a=function(a){var c=parseFloat(d.min);return sa(e,"min",e.$isEmpty(a)||a>=c,a)},e.$parsers.push(a),e.$formatters.push(a));d.max&&(a=function(a){var c=parseFloat(d.max);return sa(e,"max",e.$isEmpty(a)||a<=c,a)},e.$parsers.push(a),e.$formatters.push(a));e.$formatters.push(function(a){return sa(e,"number",e.$isEmpty(a)|| +ib(a),a)})},url:function(a,c,d,e,f,g){Ab(a,c,d,e,f,g);a=function(a){return sa(e,"url",e.$isEmpty(a)||Se.test(a),a)};e.$formatters.push(a);e.$parsers.push(a)},email:function(a,c,d,e,f,g){Ab(a,c,d,e,f,g);a=function(a){return sa(e,"email",e.$isEmpty(a)||Te.test(a),a)};e.$formatters.push(a);e.$parsers.push(a)},radio:function(a,c,d,e){x(d.name)&&c.attr("name",hb());c.on("click",function(){c[0].checked&&a.$apply(function(){e.$setViewValue(d.value)})});e.$render=function(){c[0].checked=d.value==e.$viewValue}; +d.$observe("value",e.$render)},checkbox:function(a,c,d,e){var f=d.ngTrueValue,g=d.ngFalseValue;v(f)||(f=!0);v(g)||(g=!1);c.on("click",function(){a.$apply(function(){e.$setViewValue(c[0].checked)})});e.$render=function(){c[0].checked=e.$viewValue};e.$isEmpty=function(a){return a!==f};e.$formatters.push(function(a){return a===f});e.$parsers.push(function(a){return a?f:g})},hidden:E,button:E,submit:E,reset:E,file:E},Ve=["badInput"],jc=["$browser","$sniffer",function(a,c){return{restrict:"E",require:"?ngModel", +link:function(d,e,f,g){g&&(Sc[K(f.type)]||Sc.text)(d,e,f,g,c,a)}}}],wb="ng-valid",xb="ng-invalid",Oa="ng-pristine",zb="ng-dirty",We=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate",function(a,c,d,e,f,g){function k(a,c){c=c?"-"+mb(c,"-"):"";g.removeClass(e,(a?xb:wb)+c);g.addClass(e,(a?wb:xb)+c)}this.$modelValue=this.$viewValue=Number.NaN;this.$parsers=[];this.$formatters=[];this.$viewChangeListeners=[];this.$pristine=!0;this.$dirty=!1;this.$valid=!0;this.$invalid=!1;this.$name= +d.name;var m=f(d.ngModel),h=m.assign;if(!h)throw C("ngModel")("nonassign",d.ngModel,ia(e));this.$render=E;this.$isEmpty=function(a){return x(a)||""===a||null===a||a!==a};var l=e.inheritedData("$formController")||yb,n=0,p=this.$error={};e.addClass(Oa);k(!0);this.$setValidity=function(a,c){p[a]!==!c&&(c?(p[a]&&n--,n||(k(!0),this.$valid=!0,this.$invalid=!1)):(k(!1),this.$invalid=!0,this.$valid=!1,n++),p[a]=!c,k(c,a),l.$setValidity(a,c,this))};this.$setPristine=function(){this.$dirty=!1;this.$pristine= +!0;g.removeClass(e,zb);g.addClass(e,Oa)};this.$setViewValue=function(d){this.$viewValue=d;this.$pristine&&(this.$dirty=!0,this.$pristine=!1,g.removeClass(e,Oa),g.addClass(e,zb),l.$setDirty());r(this.$parsers,function(a){d=a(d)});this.$modelValue!==d&&(this.$modelValue=d,h(a,d),r(this.$viewChangeListeners,function(a){try{a()}catch(d){c(d)}}))};var q=this;a.$watch(function(){var c=m(a);if(q.$modelValue!==c){var d=q.$formatters,e=d.length;for(q.$modelValue=c;e--;)c=d[e](c);q.$viewValue!==c&&(q.$viewValue= +c,q.$render())}return c})}],Gd=function(){return{require:["ngModel","^?form"],controller:We,link:function(a,c,d,e){var f=e[0],g=e[1]||yb;g.$addControl(f);a.$on("$destroy",function(){g.$removeControl(f)})}}},Id=ba({require:"ngModel",link:function(a,c,d,e){e.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}),kc=function(){return{require:"?ngModel",link:function(a,c,d,e){if(e){d.required=!0;var f=function(a){if(d.required&&e.$isEmpty(a))e.$setValidity("required",!1);else return e.$setValidity("required", +!0),a};e.$formatters.push(f);e.$parsers.unshift(f);d.$observe("required",function(){f(e.$viewValue)})}}}},Hd=function(){return{require:"ngModel",link:function(a,c,d,e){var f=(a=/\/(.*)\//.exec(d.ngList))&&RegExp(a[1])||d.ngList||",";e.$parsers.push(function(a){if(!x(a)){var c=[];a&&r(a.split(f),function(a){a&&c.push(aa(a))});return c}});e.$formatters.push(function(a){return J(a)?a.join(", "):t});e.$isEmpty=function(a){return!a||!a.length}}}},Xe=/^(true|false|\d+)$/,Jd=function(){return{priority:100, +compile:function(a,c){return Xe.test(c.ngValue)?function(a,c,f){f.$set("value",a.$eval(f.ngValue))}:function(a,c,f){a.$watch(f.ngValue,function(a){f.$set("value",a)})}}}},jd=ya({compile:function(a){a.addClass("ng-binding");return function(a,d,e){d.data("$binding",e.ngBind);a.$watch(e.ngBind,function(a){d.text(a==t?"":a)})}}}),ld=["$interpolate",function(a){return function(c,d,e){c=a(d.attr(e.$attr.ngBindTemplate));d.addClass("ng-binding").data("$binding",c);e.$observe("ngBindTemplate",function(a){d.text(a)})}}], +kd=["$sce","$parse",function(a,c){return{compile:function(d){d.addClass("ng-binding");return function(d,f,g){f.data("$binding",g.ngBindHtml);var k=c(g.ngBindHtml);d.$watch(function(){return(k(d)||"").toString()},function(c){f.html(a.getTrustedHtml(k(d))||"")})}}}}],md=Yb("",!0),od=Yb("Odd",0),nd=Yb("Even",1),pd=ya({compile:function(a,c){c.$set("ngCloak",t);a.removeClass("ng-cloak")}}),qd=[function(){return{scope:!0,controller:"@",priority:500}}],lc={},Ye={blur:!0,focus:!0};r("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "), +function(a){var c=pa("ng-"+a);lc[c]=["$parse","$rootScope",function(d,e){return{compile:function(f,g){var k=d(g[c]);return function(c,d){d.on(a,function(d){var f=function(){k(c,{$event:d})};Ye[a]&&e.$$phase?c.$evalAsync(f):c.$apply(f)})}}}}]});var td=["$animate",function(a){return{transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(c,d,e,f,g){var k,m,h;c.$watch(e.ngIf,function(f){Ua(f)?m||(m=c.$new(),g(m,function(c){c[c.length++]=X.createComment(" end ngIf: "+e.ngIf+ +" ");k={clone:c};a.enter(c,d.parent(),d)})):(h&&(h.remove(),h=null),m&&(m.$destroy(),m=null),k&&(h=Eb(k.clone),a.leave(h,function(){h=null}),k=null))})}}}],ud=["$http","$templateCache","$anchorScroll","$animate","$sce",function(a,c,d,e,f){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:Va.noop,compile:function(g,k){var m=k.ngInclude||k.src,h=k.onload||"",l=k.autoscroll;return function(g,k,q,r,F){var u=0,t,w,R,z=function(){w&&(w.remove(),w=null);t&&(t.$destroy(),t=null); +R&&(e.leave(R,function(){w=null}),w=R,R=null)};g.$watch(f.parseAsResourceUrl(m),function(f){var m=function(){!y(l)||l&&!g.$eval(l)||d()},q=++u;f?(a.get(f,{cache:c}).success(function(a){if(q===u){var c=g.$new();r.template=a;a=F(c,function(a){z();e.enter(a,null,k,m)});t=c;R=a;t.$emit("$includeContentLoaded");g.$eval(h)}}).error(function(){q===u&&z()}),g.$emit("$includeContentRequested")):(z(),r.template=null)})}}}}],Kd=["$compile",function(a){return{restrict:"ECA",priority:-400,require:"ngInclude", +link:function(c,d,e,f){d.html(f.template);a(d.contents())(c)}}}],vd=ya({priority:450,compile:function(){return{pre:function(a,c,d){a.$eval(d.ngInit)}}}}),wd=ya({terminal:!0,priority:1E3}),xd=["$locale","$interpolate",function(a,c){var d=/{}/g;return{restrict:"EA",link:function(e,f,g){var k=g.count,m=g.$attr.when&&f.attr(g.$attr.when),h=g.offset||0,l=e.$eval(m)||{},n={},p=c.startSymbol(),q=c.endSymbol(),s=/^when(Minus)?(.+)$/;r(g,function(a,c){s.test(c)&&(l[K(c.replace("when","").replace("Minus","-"))]= +f.attr(g.$attr[c]))});r(l,function(a,e){n[e]=c(a.replace(d,p+k+"-"+h+q))});e.$watch(function(){var c=parseFloat(e.$eval(k));if(isNaN(c))return"";c in l||(c=a.pluralCat(c-h));return n[c](e,f,!0)},function(a){f.text(a)})}}}],yd=["$parse","$animate",function(a,c){var d=C("ngRepeat");return{transclude:"element",priority:1E3,terminal:!0,$$tlb:!0,link:function(e,f,g,k,m){var h=g.ngRepeat,l=h.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?\s*$/),n,p,q,s,t,u,A={$id:Ka};if(!l)throw d("iexp", +h);g=l[1];k=l[2];(l=l[3])?(n=a(l),p=function(a,c,d){u&&(A[u]=a);A[t]=c;A.$index=d;return n(e,A)}):(q=function(a,c){return Ka(c)},s=function(a){return a});l=g.match(/^(?:([\$\w]+)|\(([\$\w]+)\s*,\s*([\$\w]+)\))$/);if(!l)throw d("iidexp",g);t=l[3]||l[1];u=l[2];var y={};e.$watchCollection(k,function(a){var g,k,l=f[0],n,A={},B,I,H,v,E,C,x,J=[];if(Pa(a))C=a,E=p||q;else{E=p||s;C=[];for(H in a)a.hasOwnProperty(H)&&"$"!=H.charAt(0)&&C.push(H);C.sort()}B=C.length;k=J.length=C.length;for(g=0;gB;)d=t.pop(),p.removeOption(d.label),d.element.remove()}for(;z.length>M;)z.pop()[0].element.remove()}var h;if(!(h=s.match(d)))throw Ze("iexp",s,ia(f));var l=c(h[2]||h[1]),m=h[4]||h[6],n=h[5],r=c(h[3]||""),u=c(h[2]? +h[1]:m),w=c(h[7]),x=h[8]?c(h[8]):null,z=[[{element:f,label:""}]];F&&(a(F)(e),F.removeClass("ng-scope"),F.remove());f.empty();f.on("change",function(){e.$apply(function(){var a,c=w(e)||[],d={},h,l,p,r,s,v,y;if(q)for(l=[],r=0,v=z.length;r@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide{display:none !important;}ng\\:form{display:block;}.ng-animate-block-transitions{transition:0s all!important;-webkit-transition:0s all!important;}.ng-hide-add-active,.ng-hide-remove{display:block!important;}'); +//# sourceMappingURL=angular.min.js.map \ No newline at end of file diff --git a/glances/outputs/static/js/controllers.js b/glances/outputs/static/js/controllers.js new file mode 100644 index 00000000..d3d9cd81 --- /dev/null +++ b/glances/outputs/static/js/controllers.js @@ -0,0 +1,175 @@ +var glancesApp = angular.module('glancesApp', []); + +glancesApp.filter('min_size', function() { + return function(input) { + var max = 8; + if (input.length > max) { + return "_" + input.substring(input.length - max) + } + return input + }; +}); +glancesApp.filter('exclamation', function() { + return function(input) { + if (input == undefined || input =='') { + return '?' + } + return input + }; +}); + +/** + * Fork from https://gist.github.com/thomseddon/3511330 + *   => \u00A0 + * WARNING : kilobyte (kB) != kibibyte (KiB) (more info here : http://en.wikipedia.org/wiki/Byte ) + **/ +glancesApp.filter('bytes', function() { + return function(bytes, precision) { + if (isNaN(parseFloat(bytes)) || !isFinite(bytes) || bytes == 0) return '0B'; + var units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB'], + number = Math.floor(Math.log(bytes) / Math.log(1000)); + return (bytes / Math.pow(1000, Math.floor(number))).toFixed(precision) + units[number]; + } +}); + +glancesApp.controller('bodyController', [ '$scope', '$http', '$interval', '$q', function($scope, $http, $interval, $q) { + + $scope.limitSuffix = ['critical', 'careful', 'warning'] + $scope.refreshTime = 3 + $scope.pluginLimits = [] + + $scope.initLimits = function() { + $scope.pluginsList(); + } + + $scope.pluginsList = function() { + $http.get('/api/2/pluginslist').success(function(d, status, headers, config) { + $scope.plugins = d; + + for (var i = 0;i< $scope.plugins.length; i++) { + var pluginName = $scope.plugins[i]; + $scope.limits(pluginName); + } + + }).error(function(d, status, headers, config) { + console.log('error' + d + status + headers + config); + }); + } + $scope.limits = function(pluginName) { + url = "/api/2/" + pluginName + "/limits" + console.log("url = " + url) + $http.get(url).success(function(d, status, headers, config) { + $scope.pluginLimits[pluginName] = d; + }).error(function(d, status, headers, config) { + console.log('error'); + }); + } + + var canceler = undefined; + + /** + * Refresh all the data of the view + */ + $scope.refreshData = function() { + canceler = $q.defer(); + $http.get('/api/2/all', {timeout: canceler.promise}).success(function(response, status, headers, config) { + //alert('success'); + + function timemillis(array) { + var sum = 0.0 + for (var i = 0; i < array.length; i++) { + sum += array[i] * 1000.0; + } + return sum; + } + function leftpad(input) { + if (input < 10) { + return "0" + input + } + return input + } + function timedelta(input) { + var sum = timemillis(input); + var d = new Date(sum); + var hour = leftpad(d.getUTCHours()) // TODO : multiple days ( * (d.getDay() * 24))) + var minutes = leftpad(d.getUTCMinutes()) + var seconds = leftpad(d.getUTCSeconds()) + var milliseconds = parseInt("" + d.getUTCMilliseconds() / 10) + var millisecondsStr = leftpad(milliseconds) + return hour +":" + minutes + ":" + seconds + "." + millisecondsStr + }; + + for (var i = 0; i < response['processlist'].length; i++) { + var process = response['processlist'][i] + process.memvirt = process.memory_info[1] + process.memres = process.memory_info[0] + process.timeformatted = timedelta(process.cpu_times) + process.timemillis = timemillis(process.cpu_times) + process.io_read = (process.io_counters[0] - process.io_counters[2]) / process.time_since_update + process.io_write = (process.io_counters[1] - process.io_counters[3]) / process.time_since_update + } + $scope.result = response; + canceler.resolve() + }).error(function(d, status, headers, config) { + console.log('error status:' + status + " - headers = " + headers); + canceler.resolve() + }); + } + + $scope.getClass = function(pluginName, limitNamePrefix, value, num) { + if ($scope.pluginLimits != undefined && $scope.pluginLimits[pluginName] != undefined) { + for (var i = 0; i < $scope.limitSuffix.length; i++) { + var limitName = limitNamePrefix + $scope.limitSuffix[i] + var limit = $scope.pluginLimits[pluginName][limitName] + + if (value > limit) { + //console.log("value = " + value + " - limit = " + limit) + var pos = limitName.lastIndexOf("_") + var className = limitName.substring(pos + 1) + //console.log("className = " + className) + if (num == 1) { + return className + '_log' + } + return className + } + } + } + if (num == 1) { + return "ok_log" + } + return "ok"; + } + + $scope.initLimits(); + + var stop; + $scope.configureRefresh = function () { + if (!angular.isDefined(stop)) { + //$scope.refreshData(); + stop = $interval(function() { + $scope.refreshData(); + }, $scope.refreshTime * 1000); // in milliseconds + } + } + + $scope.$watch( + function() { return $scope.refreshTime; }, + function(newValue, oldValue) { + $scope.stopRefresh(); + $scope.configureRefresh(); + } + ); + + $scope.stopRefresh = function() { + if (angular.isDefined(stop)) { + $interval.cancel(stop); + stop = undefined; + } + }; + + $scope.$on('$destroy', function() { + // Make sure that the interval is destroyed too + $scope.stopRefresh(); + }); + +} ]); \ No newline at end of file From 8de1a2fabcadaca7dac810e37f920079cb7b3177 Mon Sep 17 00:00:00 2001 From: Sylvain MOUQUET Date: Tue, 13 Jan 2015 01:20:15 +0100 Subject: [PATCH 02/90] add angularjs --- glances/outputs/bottle/base.tpl | 59 ------------------- glances/outputs/bottle/plugin_table.tpl | 22 ------- glances/outputs/bottle/plugin_text.tpl | 11 ---- glances/outputs/static/js/modernizr.custom.js | 4 -- 4 files changed, 96 deletions(-) delete mode 100644 glances/outputs/bottle/base.tpl delete mode 100644 glances/outputs/bottle/plugin_table.tpl delete mode 100644 glances/outputs/bottle/plugin_text.tpl delete mode 100755 glances/outputs/static/js/modernizr.custom.js diff --git a/glances/outputs/bottle/base.tpl b/glances/outputs/bottle/base.tpl deleted file mode 100644 index c0fec737..00000000 --- a/glances/outputs/bottle/base.tpl +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - Glances - - - - - - -
-
-
-
- % include('plugin_text', plugin_name="system", stats=stats['system']) -
-
- % include('plugin_text', plugin_name="uptime", stats=stats['uptime']) -
-
-
-
-
- % include('plugin_table', plugin_name="cpu", stats=stats['cpu']) -
-
- % include('plugin_table', plugin_name="load", stats=stats['load']) -
-
- % include('plugin_table', plugin_name="mem", stats=stats['mem']) -
-
- % include('plugin_table', plugin_name="memswap", stats=stats['memswap']) -
-
-
-
- % include('plugin_table', plugin_name="network", stats=stats['network']) - % include('plugin_table', plugin_name="diskio", stats=stats['diskio']) - % include('plugin_table', plugin_name="fs", stats=stats['fs']) - % include('plugin_table', plugin_name="sensors", stats=stats['sensors']) -
-
- % include('plugin_table', plugin_name="alert", stats=stats['alert']) - % include('plugin_text', plugin_name="processcount", stats=stats['processcount']) -
-
- % include('plugin_table', plugin_name="monitor", stats=stats['monitor']) -
-
- % include('plugin_table', plugin_name="processlist", stats=stats['processlist']) -
-
-
- - \ No newline at end of file diff --git a/glances/outputs/bottle/plugin_table.tpl b/glances/outputs/bottle/plugin_table.tpl deleted file mode 100644 index f98e5497..00000000 --- a/glances/outputs/bottle/plugin_table.tpl +++ /dev/null @@ -1,22 +0,0 @@ -% if stats['msgdict'] != []: -
- - - - % for msg in stats['msgdict']: - % if msg['msg'].startswith('\n'): - - - % else: - % if stats['display']: - - % end - % end - % end - - -
- {{ msg['msg'] }} -
-
-% end \ No newline at end of file diff --git a/glances/outputs/bottle/plugin_text.tpl b/glances/outputs/bottle/plugin_text.tpl deleted file mode 100644 index 990e7478..00000000 --- a/glances/outputs/bottle/plugin_text.tpl +++ /dev/null @@ -1,11 +0,0 @@ -% if stats['msgdict'] != []: -
-% for msg in stats['msgdict']: - % if stats['display']: - - {{ msg['msg'] }} - - % end -% end -
-% end \ No newline at end of file diff --git a/glances/outputs/static/js/modernizr.custom.js b/glances/outputs/static/js/modernizr.custom.js deleted file mode 100755 index c6ead250..00000000 --- a/glances/outputs/static/js/modernizr.custom.js +++ /dev/null @@ -1,4 +0,0 @@ -/* Modernizr 2.8.2 (Custom Build) | MIT & BSD - * Build: http://modernizr.com/download/#-touch-shiv-cssclasses-teststyles-prefixes-load - */ -;window.Modernizr=function(a,b,c){function w(a){j.cssText=a}function x(a,b){return w(m.join(a+";")+(b||""))}function y(a,b){return typeof a===b}function z(a,b){return!!~(""+a).indexOf(b)}function A(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:y(f,"function")?f.bind(d||b):f}return!1}var d="2.8.2",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k,l={}.toString,m=" -webkit- -moz- -o- -ms- ".split(" "),n={},o={},p={},q=[],r=q.slice,s,t=function(a,c,d,e){var f,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),l.appendChild(j);return f=["­",'"].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},u={}.hasOwnProperty,v;!y(u,"undefined")&&!y(u.call,"undefined")?v=function(a,b){return u.call(a,b)}:v=function(a,b){return b in a&&y(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=r.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(r.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(r.call(arguments)))};return e}),n.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:t(["@media (",m.join("touch-enabled),("),h,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9}),c};for(var B in n)v(n,B)&&(s=B.toLowerCase(),e[s]=n[B](),q.push((e[s]?"":"no-")+s));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)v(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},w(""),i=k=null,function(a,b){function l(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function m(){var a=s.elements;return typeof a=="string"?a.split(" "):a}function n(a){var b=j[a[h]];return b||(b={},i++,a[h]=i,j[i]=b),b}function o(a,c,d){c||(c=b);if(k)return c.createElement(a);d||(d=n(c));var g;return d.cache[a]?g=d.cache[a].cloneNode():f.test(a)?g=(d.cache[a]=d.createElem(a)).cloneNode():g=d.createElem(a),g.canHaveChildren&&!e.test(a)&&!g.tagUrn?d.frag.appendChild(g):g}function p(a,c){a||(a=b);if(k)return a.createDocumentFragment();c=c||n(a);var d=c.frag.cloneNode(),e=0,f=m(),g=f.length;for(;e",g="hidden"in a,k=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){g=!0,k=!0}})();var s={elements:d.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:c,shivCSS:d.shivCSS!==!1,supportsUnknownElements:k,shivMethods:d.shivMethods!==!1,type:"default",shivDocument:r,createElement:o,createDocumentFragment:p};a.html5=s,r(b)}(this,b),e._version=d,e._prefixes=m,e.testStyles=t,g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+q.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f Date: Thu, 1 Jan 2015 19:40:08 +0100 Subject: [PATCH 03/90] Fix typos --- docs/glances-doc.rst | 8 ++++---- glances/README.txt | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/glances-doc.rst b/docs/glances-doc.rst index 26c375d4..24e713a0 100644 --- a/docs/glances-doc.rst +++ b/docs/glances-doc.rst @@ -226,7 +226,7 @@ The following commands (key pressed) are supported while in Glances: ``F`` Switch between FS used and free space ``g`` - Generate hraphs for current history + Generate graphs for current history ``h`` Show/hide the help screen ``i`` @@ -240,7 +240,7 @@ The following commands (key pressed) are supported while in Glances: ``p`` Sort processes by name ``q`` or ``ESC`` - Quit the current Glances session + Quit the current Glances session ``r`` Reset history ``s`` @@ -273,7 +273,7 @@ In the Glances client browser (accessible through the --browser command line arg ``DOWN`` Down in the servers list ``q`` or ``ESC`` - Quit Glances + Quit Glances Configuration ============= @@ -582,7 +582,7 @@ In standalone mode, additionals informations are provided for the top process: * CPU affinity (number of cores used by the process) * Extended memory information (swap, shared, text, lib, data and dirty on Linux) * Open threads, files and network sessions (TCP and UDP) -* IO nice level +* IO nice level The extended stats feature could be enabled using the --enable-process-extended option (command line) or the ``e`` key (curses interface). diff --git a/glances/README.txt b/glances/README.txt index 3b64f75d..fe29ae0e 100644 --- a/glances/README.txt +++ b/glances/README.txt @@ -1,6 +1,6 @@ You are in the main Glances's source folder. This page is **ONLY** for developpers purposes. -If you are lookink for user manual, please follow this link: https://github.com/nicolargo/glances/blob/master/docs/glances-doc.rst +If you are looking for the user manual, please follow this link: https://github.com/nicolargo/glances/blob/master/docs/glances-doc.rst === @@ -35,4 +35,4 @@ outputs/ exports/ => Glances export interfaces glances_csv.py The CSV export module - ... \ No newline at end of file + ... From b13ce2545ddf1e3912c466f67752573b51ff5c61 Mon Sep 17 00:00:00 2001 From: desbma Date: Thu, 1 Jan 2015 19:40:43 +0100 Subject: [PATCH 04/90] RESTFULL -> RESTFUL --- docs/glances-doc.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/glances-doc.rst b/docs/glances-doc.rst index 24e713a0..16b08b4c 100644 --- a/docs/glances-doc.rst +++ b/docs/glances-doc.rst @@ -736,12 +736,12 @@ Glances will generate stats as: APIs Documentations =================== -Glances includes a `XML-RPC server`_ and a `RESTFULL-JSON`_ API which and can be used by another client software. +Glances includes a `XML-RPC server`_ and a `RESTFUL-JSON`_ API which and can be used by another client software. APIs documentations are available at: - XML-RPC: https://github.com/nicolargo/glances/wiki/The-Glances-2.x-API-How-to -- RESTFULL-JSON: https://github.com/nicolargo/glances/wiki/The-Glances-RESTFULL-JSON-API +- RESTFUL-JSON: https://github.com/nicolargo/glances/wiki/The-Glances-RESTFUL-JSON-API Support ======= @@ -759,5 +759,5 @@ Feel free to contribute ! .. _psutil: https://code.google.com/p/psutil/ .. _XML-RPC server: http://docs.python.org/2/library/simplexmlrpcserver.html -.. _RESTFULL-JSON: http://jsonapi.org/ +.. _RESTFUL-JSON: http://jsonapi.org/ .. _forum: https://groups.google.com/forum/?hl=en#!forum/glances-users From 878a46ca6dd52b7cb6f57db29ad7ee3e2771079c Mon Sep 17 00:00:00 2001 From: desbma Date: Thu, 1 Jan 2015 19:41:55 +0100 Subject: [PATCH 05/90] Add a sentence to explain how to set refresh rate for web UI --- docs/glances-doc.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/glances-doc.rst b/docs/glances-doc.rst index 16b08b4c..7700fb9f 100644 --- a/docs/glances-doc.rst +++ b/docs/glances-doc.rst @@ -117,6 +117,8 @@ and on the client enter the following URL in your favorite web browser: where ``@server`` is the IP address or hostname of the server. +To change the refresh rate of the page, just add the period in seconds between refreshes at the end of the URL, ie. to refresh every 10s, use ``http://@server:61208/10``. + The Glances web interface follows responsive web design principles. Screenshot from Chrome on Android From 611a7657bb0015db1fdbe91f0287559b300935f4 Mon Sep 17 00:00:00 2001 From: desbma Date: Thu, 1 Jan 2015 19:50:21 +0100 Subject: [PATCH 06/90] Don't break wiki link --- docs/glances-doc.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/glances-doc.rst b/docs/glances-doc.rst index 7700fb9f..a3a267ce 100644 --- a/docs/glances-doc.rst +++ b/docs/glances-doc.rst @@ -743,7 +743,7 @@ Glances includes a `XML-RPC server`_ and a `RESTFUL-JSON`_ API which and can be APIs documentations are available at: - XML-RPC: https://github.com/nicolargo/glances/wiki/The-Glances-2.x-API-How-to -- RESTFUL-JSON: https://github.com/nicolargo/glances/wiki/The-Glances-RESTFUL-JSON-API +- RESTFUL-JSON: https://github.com/nicolargo/glances/wiki/The-Glances-RESTFULL-JSON-API Support ======= From 2fa566e89dfbb85f8b87d286561362160e79b682 Mon Sep 17 00:00:00 2001 From: Nicolargo Date: Thu, 1 Jan 2015 22:34:55 +0100 Subject: [PATCH 07/90] Add GlancesActions class. Actions are run every refresh time... It sucks... --- conf/glances-test.conf | 1 + glances/__init__.py | 2 +- glances/__main__.py | 2 +- glances/core/glances_actions.py | 40 ++++++++ glances/core/glances_autodiscover.py | 2 +- glances/core/glances_client.py | 2 +- glances/core/glances_client_browser.py | 2 +- glances/core/glances_config.py | 2 +- glances/core/glances_globals.py | 2 +- glances/core/glances_logging.py | 2 +- glances/core/glances_logs.py | 2 +- glances/core/glances_main.py | 2 +- glances/core/glances_monitor_list.py | 2 +- glances/core/glances_password.py | 2 +- glances/core/glances_processes.py | 2 +- glances/core/glances_server.py | 2 +- glances/core/glances_snmp.py | 2 +- glances/core/glances_standalone.py | 2 +- glances/core/glances_staticlist.py | 2 +- glances/core/glances_stats.py | 2 +- glances/core/glances_timer.py | 2 +- glances/core/glances_webserver.py | 2 +- glances/exports/glances_csv.py | 2 +- glances/exports/glances_export.py | 2 +- glances/exports/glances_history.py | 2 +- glances/exports/glances_influxdb.py | 2 +- glances/exports/glances_statsd.py | 125 +++++++++++++++++++++++ glances/outputs/glances_bottle.py | 2 +- glances/outputs/glances_colorconsole.py | 2 +- glances/outputs/glances_curses.py | 2 +- glances/plugins/glances_alert.py | 2 +- glances/plugins/glances_batpercent.py | 2 +- glances/plugins/glances_core.py | 2 +- glances/plugins/glances_cpu.py | 2 +- glances/plugins/glances_diskio.py | 2 +- glances/plugins/glances_fs.py | 2 +- glances/plugins/glances_hddtemp.py | 2 +- glances/plugins/glances_help.py | 2 +- glances/plugins/glances_load.py | 2 +- glances/plugins/glances_mem.py | 2 +- glances/plugins/glances_memswap.py | 2 +- glances/plugins/glances_monitor.py | 2 +- glances/plugins/glances_network.py | 2 +- glances/plugins/glances_now.py | 2 +- glances/plugins/glances_percpu.py | 2 +- glances/plugins/glances_plugin.py | 73 +++++++++---- glances/plugins/glances_processcount.py | 2 +- glances/plugins/glances_processlist.py | 2 +- glances/plugins/glances_psutilversion.py | 2 +- glances/plugins/glances_raid.py | 2 +- glances/plugins/glances_sensors.py | 2 +- glances/plugins/glances_system.py | 2 +- glances/plugins/glances_uptime.py | 2 +- 53 files changed, 268 insertions(+), 69 deletions(-) create mode 100644 glances/core/glances_actions.py create mode 100644 glances/exports/glances_statsd.py diff --git a/conf/glances-test.conf b/conf/glances-test.conf index 0e141fe2..d4f9dbdc 100644 --- a/conf/glances-test.conf +++ b/conf/glances-test.conf @@ -3,6 +3,7 @@ user_careful=50 user_warning=70 user_critical=90 +user_critical_action=touch /tmp/glances.alert iowait_careful=50 iowait_warning=70 iowait_critical=90 diff --git a/glances/__init__.py b/glances/__init__.py index c5c0200f..7b14b3f3 100644 --- a/glances/__init__.py +++ b/glances/__init__.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/__main__.py b/glances/__main__.py index 9aeb86f2..871dea89 100644 --- a/glances/__main__.py +++ b/glances/__main__.py @@ -3,7 +3,7 @@ # # Glances - An eye on your system # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/core/glances_actions.py b/glances/core/glances_actions.py new file mode 100644 index 00000000..9ee947b2 --- /dev/null +++ b/glances/core/glances_actions.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- +# +# This file is part of Glances. +# +# Copyright (C) 2015 Nicolargo +# +# Glances is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Glances is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see . + +"""Manage on alert actions.""" + +# Import system lib +from subprocess import Popen + +# Import Glances lib +from glances.core.glances_logging import logger + + +class GlancesActions(object): + + """This class manage action if an alert is reached""" + + def run(self, commands): + """Run the commands (in background) + - commands: a list of command line""" + + for cmd in commands: + logger.info("Action triggered: {0}".format(cmd)) + splitted_cmd = cmd.split() + Popen(splitted_cmd) diff --git a/glances/core/glances_autodiscover.py b/glances/core/glances_autodiscover.py index 62d627b1..f9659f08 100644 --- a/glances/core/glances_autodiscover.py +++ b/glances/core/glances_autodiscover.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/core/glances_client.py b/glances/core/glances_client.py index a903cf4d..755b88c0 100644 --- a/glances/core/glances_client.py +++ b/glances/core/glances_client.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/core/glances_client_browser.py b/glances/core/glances_client_browser.py index e54c0849..a198399b 100644 --- a/glances/core/glances_client_browser.py +++ b/glances/core/glances_client_browser.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/core/glances_config.py b/glances/core/glances_config.py index 2b690836..935f08e3 100644 --- a/glances/core/glances_config.py +++ b/glances/core/glances_config.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/core/glances_globals.py b/glances/core/glances_globals.py index e2f8878e..3cf9fa51 100644 --- a/glances/core/glances_globals.py +++ b/glances/core/glances_globals.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/core/glances_logging.py b/glances/core/glances_logging.py index f1e0e5d4..74518f3e 100644 --- a/glances/core/glances_logging.py +++ b/glances/core/glances_logging.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/core/glances_logs.py b/glances/core/glances_logs.py index 577e4601..7d6a10b6 100644 --- a/glances/core/glances_logs.py +++ b/glances/core/glances_logs.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/core/glances_main.py b/glances/core/glances_main.py index 86dac256..7a5b016f 100644 --- a/glances/core/glances_main.py +++ b/glances/core/glances_main.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/core/glances_monitor_list.py b/glances/core/glances_monitor_list.py index 5bc20e12..98b0604f 100644 --- a/glances/core/glances_monitor_list.py +++ b/glances/core/glances_monitor_list.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/core/glances_password.py b/glances/core/glances_password.py index 87e6d137..3ec9179c 100644 --- a/glances/core/glances_password.py +++ b/glances/core/glances_password.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/core/glances_processes.py b/glances/core/glances_processes.py index 62637914..6584a3d0 100644 --- a/glances/core/glances_processes.py +++ b/glances/core/glances_processes.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/core/glances_server.py b/glances/core/glances_server.py index f4ecd07c..91d627bb 100644 --- a/glances/core/glances_server.py +++ b/glances/core/glances_server.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/core/glances_snmp.py b/glances/core/glances_snmp.py index 67cfd3ef..95e1e602 100644 --- a/glances/core/glances_snmp.py +++ b/glances/core/glances_snmp.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/core/glances_standalone.py b/glances/core/glances_standalone.py index 12a3daf2..50170a97 100644 --- a/glances/core/glances_standalone.py +++ b/glances/core/glances_standalone.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/core/glances_staticlist.py b/glances/core/glances_staticlist.py index 56db4d22..1ff942a7 100644 --- a/glances/core/glances_staticlist.py +++ b/glances/core/glances_staticlist.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/core/glances_stats.py b/glances/core/glances_stats.py index 64da8919..b9e98288 100644 --- a/glances/core/glances_stats.py +++ b/glances/core/glances_stats.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/core/glances_timer.py b/glances/core/glances_timer.py index 8b21d8d4..71fd4667 100644 --- a/glances/core/glances_timer.py +++ b/glances/core/glances_timer.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/core/glances_webserver.py b/glances/core/glances_webserver.py index f83793a6..39c477cc 100644 --- a/glances/core/glances_webserver.py +++ b/glances/core/glances_webserver.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/exports/glances_csv.py b/glances/exports/glances_csv.py index d3cb452d..a71e492b 100644 --- a/glances/exports/glances_csv.py +++ b/glances/exports/glances_csv.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/exports/glances_export.py b/glances/exports/glances_export.py index 5e52f237..a4d219f1 100644 --- a/glances/exports/glances_export.py +++ b/glances/exports/glances_export.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/exports/glances_history.py b/glances/exports/glances_history.py index 36217897..674bdb5c 100644 --- a/glances/exports/glances_history.py +++ b/glances/exports/glances_history.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/exports/glances_influxdb.py b/glances/exports/glances_influxdb.py index 057fa456..801fb962 100644 --- a/glances/exports/glances_influxdb.py +++ b/glances/exports/glances_influxdb.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/exports/glances_statsd.py b/glances/exports/glances_statsd.py new file mode 100644 index 00000000..63a9e1fc --- /dev/null +++ b/glances/exports/glances_statsd.py @@ -0,0 +1,125 @@ +# -*- coding: utf-8 -*- +# +# This file is part of Glances. +# +# Copyright (C) 2015 Nicolargo +# +# Glances is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Glances is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see . + +"""Statsd interface class.""" + +# Import sys libs +from statsd import StatsClient +from numbers import Number +import sys + +# Import Glances lib +from glances.core.glances_logging import logger +from ConfigParser import NoSectionError, NoOptionError +from glances.exports.glances_export import GlancesExport + + +class Export(GlancesExport): + + """This class manages the Statsd export module.""" + + def __init__(self, config=None, args=None): + """Init the Statsd export IF.""" + GlancesExport.__init__(self, config=config, args=args) + + # Load the InfluxDB configuration file + self.host = None + self.port = None + self.prefix = None + self.export_enable = self.load_conf() + if not self.export_enable: + sys.exit(2) + + # Default prefix for stats is 'glances' + if self.prefix is None: + self.prefix = 'glances' + + # Init the Statsd client + self.client = StatsClient(self.host, + int(self.port), + prefix=self.prefix) + + def load_conf(self, section="statsd"): + """Load the Statsd configuration in the Glances configuration file""" + if self.config is None: + return False + try: + self.host = self.config.get_raw_option(section, "host") + self.port = self.config.get_raw_option(section, "port") + except NoSectionError: + logger.critical("No Statsd configuration found") + return False + except NoOptionError as e: + logger.critical("Error in the Statsd configuration (%s)" % e) + return False + else: + logger.debug("Load Statsd from the Glances configuration file") + # Prefix is optional + try: + self.prefix = self.config.get_raw_option(section, "prefix") + except NoOptionError as e: + pass + return True + + def init(self, prefix='glances'): + """Init the connection to the Statsd server""" + if not self.export_enable: + return None + return StatsClient(self.host, + self.port, + prefix=prefix) + + def update(self, stats): + """Update stats to the InfluxDB server.""" + if not self.export_enable: + return False + + # Get the stats + all_stats = stats.getAll() + plugins = stats.getAllPlugins() + + # Loop over available plugin + i = 0 + for plugin in plugins: + if plugin in self.plugins_to_export(): + if type(all_stats[i]) is list: + for item in all_stats[i]: + export_names = map( + lambda x: item[item['key']] + '.' + x, item.keys()) + export_values = item.values() + self.__export(plugin, export_names, export_values) + elif type(all_stats[i]) is dict: + export_names = all_stats[i].keys() + export_values = all_stats[i].values() + self.__export(plugin, export_names, export_values) + i += 1 + + return True + + def __export(self, name, columns, points): + """Export the stats to the Statsd server""" + for i in range(0, len(columns)): + if not isinstance(points[i], Number): + continue + stat_name = '{0}.{1}'.format(name, columns[i]) + stat_value = points[i] + try: + self.client.gauge(stat_name, stat_value) + except Exception as e: + logger.critical("Can not export stats to Statsd (%s)" % e) diff --git a/glances/outputs/glances_bottle.py b/glances/outputs/glances_bottle.py index cf80bf17..ae603208 100644 --- a/glances/outputs/glances_bottle.py +++ b/glances/outputs/glances_bottle.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/outputs/glances_colorconsole.py b/glances/outputs/glances_colorconsole.py index 8407114c..49c55037 100644 --- a/glances/outputs/glances_colorconsole.py +++ b/glances/outputs/glances_colorconsole.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/outputs/glances_curses.py b/glances/outputs/glances_curses.py index abf26a53..5cedb395 100644 --- a/glances/outputs/glances_curses.py +++ b/glances/outputs/glances_curses.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/plugins/glances_alert.py b/glances/plugins/glances_alert.py index 49714cde..78c6c45a 100644 --- a/glances/plugins/glances_alert.py +++ b/glances/plugins/glances_alert.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/plugins/glances_batpercent.py b/glances/plugins/glances_batpercent.py index f5d67fda..ff1deecc 100644 --- a/glances/plugins/glances_batpercent.py +++ b/glances/plugins/glances_batpercent.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/plugins/glances_core.py b/glances/plugins/glances_core.py index ffd4ef2f..20127c8b 100644 --- a/glances/plugins/glances_core.py +++ b/glances/plugins/glances_core.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/plugins/glances_cpu.py b/glances/plugins/glances_cpu.py index 436c18e7..685f5454 100644 --- a/glances/plugins/glances_cpu.py +++ b/glances/plugins/glances_cpu.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/plugins/glances_diskio.py b/glances/plugins/glances_diskio.py index 373c878c..0cf68bec 100644 --- a/glances/plugins/glances_diskio.py +++ b/glances/plugins/glances_diskio.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/plugins/glances_fs.py b/glances/plugins/glances_fs.py index 4f74e45b..20dc85c1 100644 --- a/glances/plugins/glances_fs.py +++ b/glances/plugins/glances_fs.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/plugins/glances_hddtemp.py b/glances/plugins/glances_hddtemp.py index 1492a251..82f29f1b 100644 --- a/glances/plugins/glances_hddtemp.py +++ b/glances/plugins/glances_hddtemp.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/plugins/glances_help.py b/glances/plugins/glances_help.py index 2644e171..02504b1d 100644 --- a/glances/plugins/glances_help.py +++ b/glances/plugins/glances_help.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/plugins/glances_load.py b/glances/plugins/glances_load.py index c689173d..aa2f0dde 100644 --- a/glances/plugins/glances_load.py +++ b/glances/plugins/glances_load.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/plugins/glances_mem.py b/glances/plugins/glances_mem.py index 2c2eca43..52bee12a 100644 --- a/glances/plugins/glances_mem.py +++ b/glances/plugins/glances_mem.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/plugins/glances_memswap.py b/glances/plugins/glances_memswap.py index 2fcaa8c9..20751add 100644 --- a/glances/plugins/glances_memswap.py +++ b/glances/plugins/glances_memswap.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/plugins/glances_monitor.py b/glances/plugins/glances_monitor.py index 16d548ae..66765ea1 100644 --- a/glances/plugins/glances_monitor.py +++ b/glances/plugins/glances_monitor.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/plugins/glances_network.py b/glances/plugins/glances_network.py index 0b6ef070..9ef8bc89 100644 --- a/glances/plugins/glances_network.py +++ b/glances/plugins/glances_network.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/plugins/glances_now.py b/glances/plugins/glances_now.py index 199085ec..b40fa44f 100644 --- a/glances/plugins/glances_now.py +++ b/glances/plugins/glances_now.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/plugins/glances_percpu.py b/glances/plugins/glances_percpu.py index a0a06243..93abeab6 100644 --- a/glances/plugins/glances_percpu.py +++ b/glances/plugins/glances_percpu.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/plugins/glances_plugin.py b/glances/plugins/glances_plugin.py index da6d6889..9954cf20 100644 --- a/glances/plugins/glances_plugin.py +++ b/glances/plugins/glances_plugin.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by @@ -32,6 +32,7 @@ from operator import itemgetter from glances.core.glances_globals import is_py3 from glances.core.glances_logging import logger from glances.core.glances_logs import glances_logs +from glances.core.glances_actions import GlancesActions class GlancesPlugin(object): @@ -64,6 +65,9 @@ class GlancesPlugin(object): # Init the limits dictionnary self.limits = dict() + # Init the actions + self.actions = GlancesActions() + def __repr__(self): """Return the raw stats.""" return self.stats @@ -263,6 +267,8 @@ class GlancesPlugin(object): except ValueError: self.limits[ self.plugin_name + '_' + s] = config.get_raw_option(self.plugin_name, s).split(",") + logger.debug("Load limit: {0} = {1}".format(self.plugin_name + '_' + s, + self.limits[self.plugin_name + '_' + s])) def set_limits(self, input_limits): """Set the limits to input_limits.""" @@ -299,19 +305,21 @@ class GlancesPlugin(object): # Manage limits ret = 'OK' try: - if value > self.__get_limit_critical(header=header): + if value > self.__get_limit('critical', header=header): ret = 'CRITICAL' - elif value > self.__get_limit_warning(header=header): + elif value > self.__get_limit('warning', header=header): ret = 'WARNING' - elif value > self.__get_limit_careful(header=header): + elif value > self.__get_limit('careful', header=header): ret = 'CAREFUL' elif current < min: ret = 'CAREFUL' except KeyError: return 'DEFAULT' - # Manage log (if needed) + # Init the return post string log_str = "" + + # Manage log if log: # Add _LOG to the return string # So stats will be highlited with a specific color @@ -324,6 +332,12 @@ class GlancesPlugin(object): # Add the log to the list glances_logs.add(ret, stat_name.upper(), value, []) + # Manage action + action = self.__get_limit_action(ret.lower(), header=header) + if action is not None: + # An action is available for the current alert, run it + self.actions.run(action) + # Default is ok return ret + log_str @@ -331,23 +345,42 @@ class GlancesPlugin(object): """Get the alert log.""" return self.get_alert(current, min, max, header, log=True) - def __get_limit_critical(self, header=""): - if header == "": - return self.limits[self.plugin_name + '_' + 'critical'] - else: - return self.limits[self.plugin_name + '_' + header + '_' + 'critical'] + def __get_limit(self, criticity, header=""): + """Return the limit value for the alert""" + prefix = self.plugin_name + '_' + if header != "": + prefix += header + '_' + action = self.limits[prefix + criticity] + return action - def __get_limit_warning(self, header=""): - if header == "": - return self.limits[self.plugin_name + '_' + 'warning'] - else: - return self.limits[self.plugin_name + '_' + header + '_' + 'warning'] + def __get_limit_action(self, criticity, header=""): + """Return the action for the alert""" + prefix = self.plugin_name + '_' + if header != "": + prefix += header + '_' + try: + action = self.limits[prefix + criticity + '_action'] + except KeyError: + action = None + return action - def __get_limit_careful(self, header=""): - if header == "": - return self.limits[self.plugin_name + '_' + 'careful'] - else: - return self.limits[self.plugin_name + '_' + header + '_' + 'careful'] + # def __get_limit_critical(self, header=""): + # if header == "": + # return self.limits[self.plugin_name + '_' + 'critical'] + # else: + # return self.limits[self.plugin_name + '_' + header + '_' + 'critical'] + + # def __get_limit_warning(self, header=""): + # if header == "": + # return self.limits[self.plugin_name + '_' + 'warning'] + # else: + # return self.limits[self.plugin_name + '_' + header + '_' + 'warning'] + + # def __get_limit_careful(self, header=""): + # if header == "": + # return self.limits[self.plugin_name + '_' + 'careful'] + # else: + # return self.limits[self.plugin_name + '_' + header + '_' + 'careful'] def get_conf_value(self, value, header="", plugin_name=None): """Return the configuration (header_)value for the current plugin (or the one given by the plugin_name var)""" diff --git a/glances/plugins/glances_processcount.py b/glances/plugins/glances_processcount.py index cfdc1ebc..3248ef1d 100644 --- a/glances/plugins/glances_processcount.py +++ b/glances/plugins/glances_processcount.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/plugins/glances_processlist.py b/glances/plugins/glances_processlist.py index 061ccc1b..c0502c7b 100644 --- a/glances/plugins/glances_processlist.py +++ b/glances/plugins/glances_processlist.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/plugins/glances_psutilversion.py b/glances/plugins/glances_psutilversion.py index 9c54b8df..0c2ffa14 100644 --- a/glances/plugins/glances_psutilversion.py +++ b/glances/plugins/glances_psutilversion.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/plugins/glances_raid.py b/glances/plugins/glances_raid.py index 82645cf8..20743c36 100644 --- a/glances/plugins/glances_raid.py +++ b/glances/plugins/glances_raid.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/plugins/glances_sensors.py b/glances/plugins/glances_sensors.py index 5fe7fddc..089933a9 100644 --- a/glances/plugins/glances_sensors.py +++ b/glances/plugins/glances_sensors.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/plugins/glances_system.py b/glances/plugins/glances_system.py index 3a5f10da..a227847c 100644 --- a/glances/plugins/glances_system.py +++ b/glances/plugins/glances_system.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by diff --git a/glances/plugins/glances_uptime.py b/glances/plugins/glances_uptime.py index 63f6341e..12e1c22b 100644 --- a/glances/plugins/glances_uptime.py +++ b/glances/plugins/glances_uptime.py @@ -2,7 +2,7 @@ # # This file is part of Glances. # -# Copyright (C) 2014 Nicolargo +# Copyright (C) 2015 Nicolargo # # Glances is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by From 4ef5bb2faad40a8a94912d389f5970a6f08a3932 Mon Sep 17 00:00:00 2001 From: Nicolargo Date: Thu, 1 Jan 2015 22:46:25 +0100 Subject: [PATCH 08/90] Display 64bit every time on 64bit environment and fix the display of io read/write (issue #469 Thk to Sylvain Mouquet) --- glances/plugins/glances_processlist.py | 8 ++++---- glances/plugins/glances_system.py | 4 ++++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/glances/plugins/glances_processlist.py b/glances/plugins/glances_processlist.py index c0502c7b..2e1cc6c0 100644 --- a/glances/plugins/glances_processlist.py +++ b/glances/plugins/glances_processlist.py @@ -235,18 +235,18 @@ class Plugin(GlancesPlugin): # IO read/write if 'io_counters' in p: # IO read - io_rs = (p['io_counters'][0] - p['io_counters'][2]) / p['time_since_update'] + io_rs = int((p['io_counters'][0] - p['io_counters'][2]) / p['time_since_update']) if io_rs == 0: msg = '{0:>6}'.format("0") else: - msg = '{0:>6}'.format(self.auto_unit(io_rs, low_precision=False)) + msg = '{0:>6}'.format(self.auto_unit(io_rs, low_precision=True)) ret.append(self.curse_add_line(msg, optional=True, additional=True)) # IO write - io_ws = (p['io_counters'][1] - p['io_counters'][3]) / p['time_since_update'] + io_ws = int((p['io_counters'][1] - p['io_counters'][3]) / p['time_since_update']) if io_ws == 0: msg = '{0:>6}'.format("0") else: - msg = '{0:>6}'.format(self.auto_unit(io_ws, low_precision=False)) + msg = '{0:>6}'.format(self.auto_unit(io_ws, low_precision=True)) ret.append(self.curse_add_line(msg, optional=True, additional=True)) else: msg = '{0:>6}'.format("?") diff --git a/glances/plugins/glances_system.py b/glances/plugins/glances_system.py index a227847c..e5e1acfa 100644 --- a/glances/plugins/glances_system.py +++ b/glances/plugins/glances_system.py @@ -118,6 +118,10 @@ class Plugin(GlancesPlugin): elif self.stats['os_name'] == "Windows": os_version = platform.win32_ver() self.stats['os_version'] = ' '.join(os_version[::2]) + # if the python version is 32 bit perhaps the windows operating system is 64bit + if self.stats['platform'] == '32bit': + if 'PROCESSOR_ARCHITEW6432' in os.environ: + self.stats['platform'] = '64bit' else: self.stats['os_version'] = "" # Add human readable name From 64ffa5ed16610441790bc983a2e2f5d42ce49a8c Mon Sep 17 00:00:00 2001 From: Nicolargo Date: Thu, 1 Jan 2015 23:40:40 +0100 Subject: [PATCH 09/90] Trigger OK --- glances/core/glances_actions.py | 41 ++++++++++++++++++++++++++++--- glances/plugins/glances_plugin.py | 24 +++++++++--------- 2 files changed, 50 insertions(+), 15 deletions(-) diff --git a/glances/core/glances_actions.py b/glances/core/glances_actions.py index 9ee947b2..0624fd13 100644 --- a/glances/core/glances_actions.py +++ b/glances/core/glances_actions.py @@ -30,11 +30,44 @@ class GlancesActions(object): """This class manage action if an alert is reached""" - def run(self, commands): - """Run the commands (in background) - - commands: a list of command line""" + def __init__(self): + """Init GlancesActions class""" + # Dict with the criticity status + # - key: stat_name + # - value: criticity + # Goal: avoid to execute the same command twice + self.status = {} + + def get(self, stat_name): + """Get the stat_name criticity""" + try: + return self.status[stat_name] + except KeyError: + return None + + def set(self, stat_name, criticity): + """Set the stat_name to criticity""" + self.status[stat_name] = criticity + + def run(self, stat_name, criticity, commands): + """Run the commands (in background) + - stats_name: plugin_name (+ header) + - criticity: criticity of the trigger + - commands: a list of command line + + Return True if the commands have been ran""" + + if self.get(stat_name) == criticity: + # Action already executed => Exit + return False + + # Ran all actions in background for cmd in commands: - logger.info("Action triggered: {0}".format(cmd)) + logger.info("Action triggered for {0} ({1}): {2}".format(stat_name, criticity, cmd)) splitted_cmd = cmd.split() Popen(splitted_cmd) + + self.set(stat_name, criticity) + + return True diff --git a/glances/plugins/glances_plugin.py b/glances/plugins/glances_plugin.py index 9954cf20..ecc2d4ca 100644 --- a/glances/plugins/glances_plugin.py +++ b/glances/plugins/glances_plugin.py @@ -316,27 +316,29 @@ class GlancesPlugin(object): except KeyError: return 'DEFAULT' - # Init the return post string - log_str = "" + # Get the stat_name = plugin_name (+ header) + if header == "": + stat_name = self.plugin_name + else: + stat_name = self.plugin_name + '_' + header # Manage log + log_str = "" if log: # Add _LOG to the return string # So stats will be highlited with a specific color log_str = "_LOG" - # Get the stat_name = plugin_name (+ header) - if header == "": - stat_name = self.plugin_name - else: - stat_name = self.plugin_name + '_' + header # Add the log to the list glances_logs.add(ret, stat_name.upper(), value, []) # Manage action - action = self.__get_limit_action(ret.lower(), header=header) - if action is not None: - # An action is available for the current alert, run it - self.actions.run(action) + # Here is a command line for the current trigger ? + command = self.__get_limit_action(ret.lower(), header=header) + if command is not None: + # Acommand line is available for the current alert, run it + self.actions.run(stat_name, ret.lower(), command) + else: + self.actions.set(stat_name, ret.lower()) # Default is ok return ret + log_str From 014543fab63c757d844b669fe6ed6c9a939f09f3 Mon Sep 17 00:00:00 2001 From: Nicolargo Date: Fri, 2 Jan 2015 17:45:18 +0100 Subject: [PATCH 10/90] Catch exp on alert --- glances/core/glances_actions.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/glances/core/glances_actions.py b/glances/core/glances_actions.py index 0624fd13..4c7011e0 100644 --- a/glances/core/glances_actions.py +++ b/glances/core/glances_actions.py @@ -66,7 +66,10 @@ class GlancesActions(object): for cmd in commands: logger.info("Action triggered for {0} ({1}): {2}".format(stat_name, criticity, cmd)) splitted_cmd = cmd.split() - Popen(splitted_cmd) + try: + Popen(splitted_cmd) + except OSError as e: + logger.error("Can't execute the action ({0})".format(e)) self.set(stat_name, criticity) From 07194861271c8f61030ddc24389503d4ec1de67b Mon Sep 17 00:00:00 2001 From: Nicolargo Date: Fri, 2 Jan 2015 22:59:08 +0100 Subject: [PATCH 11/90] Add {{mustache}} feature to the action script --- NEWS | 5 ++- conf/glances-test.conf | 5 ++- glances/core/glances_actions.py | 15 ++++--- glances/outputs/glances_curses.py | 5 ++- glances/plugins/glances_fs.py | 4 +- glances/plugins/glances_plugin.py | 64 ++++++++++++++++++------------ glances/plugins/glances_sensors.py | 4 ++ 7 files changed, 65 insertions(+), 37 deletions(-) diff --git a/NEWS b/NEWS index 24298846..7ecc1530 100644 --- a/NEWS +++ b/NEWS @@ -2,12 +2,13 @@ Glances Version 2.x ============================================================================== -Version 2.X +Version 2.3 =========== + * Add actions on alerts (issue #132). It is now possible to run action (command line) by triggers. Action could containq {Mustache} {{tag}} (Mustache) with stat value. * Add InfluxDB export module (--export-influxdb) (issue #455) * Add Statsd export module (--export-statsd) (issue #465) - * Refactor export module (CSV export option is now --export-csv). It is now possible to export stats from the Glances client (issue #463) + * Refactor export module (CSV export option is now --export-csv). It is now possible to export stats from the Glances client mode (issue #463) * The Web inteface is now based on BootStarp / RWD grid (issue #417, #366 and #461) Thanks to Nicolas Hart @nclsHart * Add the RAID plugins (issue #447) diff --git a/conf/glances-test.conf b/conf/glances-test.conf index d4f9dbdc..4a804eea 100644 --- a/conf/glances-test.conf +++ b/conf/glances-test.conf @@ -3,7 +3,7 @@ user_careful=50 user_warning=70 user_critical=90 -user_critical_action=touch /tmp/glances.alert +user_critical_action=echo {{user}} {{value}} {{max}} > /tmp/cpu.alert iowait_careful=50 iowait_warning=70 iowait_critical=90 @@ -72,13 +72,14 @@ hide=sda2,sda5 # Default limits for free filesytem space in % # Default values if not defined: 50/70/90 careful=50 +careful_action=echo {{mnt_point}} {{used}}/{{size}} > /tmp/fs.alert warning=70 critical=90 [sensors] # Sensors core limits # Default values if not defined: 60/70/80 -temperature_core_careful=60 +temperature_core_careful=50 temperature_core_warning=70 temperature_core_critical=80 # Temperatures in °C for hddtemp diff --git a/glances/core/glances_actions.py b/glances/core/glances_actions.py index 4c7011e0..6069e0e8 100644 --- a/glances/core/glances_actions.py +++ b/glances/core/glances_actions.py @@ -21,6 +21,7 @@ # Import system lib from subprocess import Popen +import pystache # Import Glances lib from glances.core.glances_logging import logger @@ -50,11 +51,12 @@ class GlancesActions(object): """Set the stat_name to criticity""" self.status[stat_name] = criticity - def run(self, stat_name, criticity, commands): + def run(self, stat_name, criticity, commands, mustache_dict=None): """Run the commands (in background) - stats_name: plugin_name (+ header) - criticity: criticity of the trigger - - commands: a list of command line + - commands: a list of command line with optional {{mustache}} + - mustache_dict: Plugin stats (can be use within {{mustache}}) Return True if the commands have been ran""" @@ -64,10 +66,13 @@ class GlancesActions(object): # Ran all actions in background for cmd in commands: - logger.info("Action triggered for {0} ({1}): {2}".format(stat_name, criticity, cmd)) - splitted_cmd = cmd.split() + # Replace {{arg}} by the dict one (Thk to {Mustache}) + cmd_full = pystache.render(cmd, mustache_dict) + # Execute the action + logger.info("Action triggered for {0} ({1}): {2}".format(stat_name, criticity, cmd_full)) + logger.debug("Stats value for the trigger: {0}".format(mustache_dict)) try: - Popen(splitted_cmd) + Popen(cmd_full, shell=True) except OSError as e: logger.error("Can't execute the action ({0})".format(e)) diff --git a/glances/outputs/glances_curses.py b/glances/outputs/glances_curses.py index 5cedb395..378dc64b 100644 --- a/glances/outputs/glances_curses.py +++ b/glances/outputs/glances_curses.py @@ -697,6 +697,7 @@ class _GlancesCurses(object): # Display x = display_x + x_max = x y = display_y for m in plugin_stats['msgdict']: # New line @@ -740,9 +741,11 @@ class _GlancesCurses(object): # good offset = len(m['msg']) x = x + offset + if x > x_max: + x_max = x # Compute the next Glances column/line position - self.next_column = max(self.next_column, x + self.space_between_column) + self.next_column = max(self.next_column, x_max + self.space_between_column) self.next_line = max(self.next_line, y + self.space_between_line) def erase(self): diff --git a/glances/plugins/glances_fs.py b/glances/plugins/glances_fs.py index 20dc85c1..621ea5bc 100644 --- a/glances/plugins/glances_fs.py +++ b/glances/plugins/glances_fs.py @@ -209,7 +209,9 @@ class Plugin(GlancesPlugin): msg = '{0:>7}'.format(self.auto_unit(i['free'])) else: msg = '{0:>7}'.format(self.auto_unit(i['used'])) - ret.append(self.curse_add_line(msg, self.get_alert(i['used'], max=i['size']))) + ret.append(self.curse_add_line(msg, self.get_alert(i['used'], + max=i['size'], + header=i['mnt_point']))) msg = '{0:>7}'.format(self.auto_unit(i['size'])) ret.append(self.curse_add_line(msg)) diff --git a/glances/plugins/glances_plugin.py b/glances/plugins/glances_plugin.py index ecc2d4ca..15ba53e1 100644 --- a/glances/plugins/glances_plugin.py +++ b/glances/plugins/glances_plugin.py @@ -333,12 +333,25 @@ class GlancesPlugin(object): # Manage action # Here is a command line for the current trigger ? - command = self.__get_limit_action(ret.lower(), header=header) - if command is not None: - # Acommand line is available for the current alert, run it - self.actions.run(stat_name, ret.lower(), command) - else: + try: + command = self.__get_limit_action(ret.lower(), header=header) + except KeyError: + # Reset the trigger self.actions.set(stat_name, ret.lower()) + else: + # A command line is available for the current alert, run it + # Build the {{mustache}} dictionnary + if type(self.stats) is list: + # If the stats are stored in a list of dict (fs plugin for exemple) + # Return the dict for the current header + try: + mustache_dict = (item for item in self.stats if item[self.get_key()] == header).next() + except StopIteration: + mustache_dict = {} + else: + # Use the stats dict + mustache_dict = self.stats + self.actions.run(stat_name, ret.lower(), command, mustache_dict=mustache_dict) # Default is ok return ret + log_str @@ -352,38 +365,37 @@ class GlancesPlugin(object): prefix = self.plugin_name + '_' if header != "": prefix += header + '_' - action = self.limits[prefix + criticity] - return action + + # Get the limit for stat + header + # Exemple: network_wlan0_rx_careful + try: + limit = self.limits[prefix + criticity] + except KeyError: + # Try fallback to plugin default limit + # Exemple: network_careful + limit = self.limits[self.plugin_name + '_' + criticity] + + # Return the limit + return limit def __get_limit_action(self, criticity, header=""): """Return the action for the alert""" prefix = self.plugin_name + '_' if header != "": prefix += header + '_' + + # Get the limit for stat + header + # Exemple: network_wlan0_rx_careful_action try: action = self.limits[prefix + criticity + '_action'] except KeyError: - action = None + # Try fallback to plugin default limit + # Exemple: network_careful_action + action = self.limits[self.plugin_name + '_' + criticity + '_action'] + + # Return the action list return action - # def __get_limit_critical(self, header=""): - # if header == "": - # return self.limits[self.plugin_name + '_' + 'critical'] - # else: - # return self.limits[self.plugin_name + '_' + header + '_' + 'critical'] - - # def __get_limit_warning(self, header=""): - # if header == "": - # return self.limits[self.plugin_name + '_' + 'warning'] - # else: - # return self.limits[self.plugin_name + '_' + header + '_' + 'warning'] - - # def __get_limit_careful(self, header=""): - # if header == "": - # return self.limits[self.plugin_name + '_' + 'careful'] - # else: - # return self.limits[self.plugin_name + '_' + header + '_' + 'careful'] - def get_conf_value(self, value, header="", plugin_name=None): """Return the configuration (header_)value for the current plugin (or the one given by the plugin_name var)""" if plugin_name is None: diff --git a/glances/plugins/glances_sensors.py b/glances/plugins/glances_sensors.py index 089933a9..00fc3552 100644 --- a/glances/plugins/glances_sensors.py +++ b/glances/plugins/glances_sensors.py @@ -64,6 +64,10 @@ class Plugin(GlancesPlugin): # Init the stats self.reset() + def get_key(self): + """Return the key of the list""" + return 'label' + def reset(self): """Reset/init the stats.""" self.stats = [] From 2919eac36334302f7ae967f102e1b11d8f4f1323 Mon Sep 17 00:00:00 2001 From: Nicolargo Date: Fri, 2 Jan 2015 23:23:47 +0100 Subject: [PATCH 12/90] Update documentation --- conf/glances.conf | 2 ++ docs/glances-doc.rst | 24 ++++++++++++++++++++++-- setup.py | 3 ++- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/conf/glances.conf b/conf/glances.conf index c8378e98..f3df2a25 100644 --- a/conf/glances.conf +++ b/conf/glances.conf @@ -70,6 +70,8 @@ critical=90 [fs] # Default limits for free filesytem space in % # Default values if not defined: 50/70/90 +# It is also possible to define per mount point value +# Example: /_careful=40 careful=50 warning=70 critical=90 diff --git a/docs/glances-doc.rst b/docs/glances-doc.rst index a3a267ce..9ae0929f 100644 --- a/docs/glances-doc.rst +++ b/docs/glances-doc.rst @@ -4,9 +4,9 @@ Glances This manual describes *Glances* version 2.2. -Copyright © 2012-2014 Nicolas Hennion +Copyright © 2011-2015 Nicolas Hennion -December 2014 +Junuary 2015 .. contents:: Table of Contents @@ -671,6 +671,26 @@ Each alert message displays the following information: 4. {min,avg,max} values or number of running processes for monitored processes list alerts +Actions +------- + +Glances can trigger actions on events. + +By action, we mean all shell command line. For example, if you want to execute the foo.py script if the last 5 minutes load are critical then add the action line to the Glances configuration file: + + [load] + critical=5.0 + critical_action=python /path/to/foo.py + +All the stats are usable in the command line by the use of the {{mustache}} syntax. Another example to create a log file containing used vs total disk space if a warning space trigger is reached: + +[fs] +warning=70 +warning_action=echo {{mnt_point}} {{used}}/{{size}} > /tmp/fs.alert + +Note: You can use all the stats for the current plugin (see https://github.com/nicolargo/glances/wiki/The-Glances-2.x-API-How-to for the stats list) + + Gateway to others services ========================== diff --git a/setup.py b/setup.py index 5d78b0f0..cf1d40a8 100755 --- a/setup.py +++ b/setup.py @@ -67,7 +67,8 @@ setup( 'CHART': ['matplotlib'], 'BROWSER': ['zeroconf>=0.16', 'netifaces'], 'RAID': ['pymdstat'], - 'EXPORT': ['influxdb', 'statsd'] + 'EXPORT': ['influxdb', 'statsd'], + 'ACTION': ['pystache'] }, packages=['glances'], include_package_data=True, From 3048c8763854e6703f63d068d3332227288db811 Mon Sep 17 00:00:00 2001 From: Nicolargo Date: Fri, 2 Jan 2015 23:31:05 +0100 Subject: [PATCH 13/90] Update install documentation --- README.rst | 2 ++ docs/glances-doc.rst | 8 ++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/README.rst b/README.rst index 54d3999b..18986715 100644 --- a/README.rst +++ b/README.rst @@ -41,6 +41,8 @@ Optional dependencies: - ``pysnmp`` (for SNMP support) - ``zeroconf`` and ``netifaces`` (for the auto discoverer mode) - ``influxdb`` (for the InfluxDB export module) +- ``statsd`` (for the StatsD export module) +- ``pystache`` (for the action script feature) Installation ============ diff --git a/docs/glances-doc.rst b/docs/glances-doc.rst index 9ae0929f..7ea6c134 100644 --- a/docs/glances-doc.rst +++ b/docs/glances-doc.rst @@ -684,11 +684,11 @@ By action, we mean all shell command line. For example, if you want to execute t All the stats are usable in the command line by the use of the {{mustache}} syntax. Another example to create a log file containing used vs total disk space if a warning space trigger is reached: -[fs] -warning=70 -warning_action=echo {{mnt_point}} {{used}}/{{size}} > /tmp/fs.alert + [fs] + warning=70 + warning_action=echo {{mnt_point}} {{used}}/{{size}} > /tmp/fs.alert -Note: You can use all the stats for the current plugin (see https://github.com/nicolargo/glances/wiki/The-Glances-2.x-API-How-to for the stats list) +*Note*: You can use all the stats for the current plugin (see https://github.com/nicolargo/glances/wiki/The-Glances-2.x-API-How-to for the stats list) Gateway to others services From 27501dc4639f66f00f86c1f6fc49ba412667bdde Mon Sep 17 00:00:00 2001 From: Nicolargo Date: Sat, 3 Jan 2015 14:45:14 +0100 Subject: [PATCH 14/90] Refactor get limit and alert method --- glances/plugins/glances_plugin.py | 38 ++++++++++++------------------- 1 file changed, 15 insertions(+), 23 deletions(-) diff --git a/glances/plugins/glances_plugin.py b/glances/plugins/glances_plugin.py index 15ba53e1..f7de80eb 100644 --- a/glances/plugins/glances_plugin.py +++ b/glances/plugins/glances_plugin.py @@ -302,26 +302,26 @@ class GlancesPlugin(object): except TypeError: return 'DEFAULT' + # Build the stat_name = plugin_name + header + if header == "": + stat_name = self.plugin_name + else: + stat_name = self.plugin_name + '_' + header + # Manage limits ret = 'OK' try: - if value > self.__get_limit('critical', header=header): + if value > self.__get_limit('critical', stat_name=stat_name): ret = 'CRITICAL' - elif value > self.__get_limit('warning', header=header): + elif value > self.__get_limit('warning', stat_name=stat_name): ret = 'WARNING' - elif value > self.__get_limit('careful', header=header): + elif value > self.__get_limit('careful', stat_name=stat_name): ret = 'CAREFUL' elif current < min: ret = 'CAREFUL' except KeyError: return 'DEFAULT' - # Get the stat_name = plugin_name (+ header) - if header == "": - stat_name = self.plugin_name - else: - stat_name = self.plugin_name + '_' + header - # Manage log log_str = "" if log: @@ -334,7 +334,7 @@ class GlancesPlugin(object): # Manage action # Here is a command line for the current trigger ? try: - command = self.__get_limit_action(ret.lower(), header=header) + command = self.__get_limit_action(ret.lower(), stat_name=stat_name) except KeyError: # Reset the trigger self.actions.set(stat_name, ret.lower()) @@ -360,16 +360,12 @@ class GlancesPlugin(object): """Get the alert log.""" return self.get_alert(current, min, max, header, log=True) - def __get_limit(self, criticity, header=""): + def __get_limit(self, criticity, stat_name=""): """Return the limit value for the alert""" - prefix = self.plugin_name + '_' - if header != "": - prefix += header + '_' - # Get the limit for stat + header # Exemple: network_wlan0_rx_careful try: - limit = self.limits[prefix + criticity] + limit = self.limits[stat_name + '_' + criticity] except KeyError: # Try fallback to plugin default limit # Exemple: network_careful @@ -378,16 +374,12 @@ class GlancesPlugin(object): # Return the limit return limit - def __get_limit_action(self, criticity, header=""): + def __get_limit_action(self, criticity, stat_name=""): """Return the action for the alert""" - prefix = self.plugin_name + '_' - if header != "": - prefix += header + '_' - # Get the limit for stat + header # Exemple: network_wlan0_rx_careful_action try: - action = self.limits[prefix + criticity + '_action'] + action = self.limits[stat_name + '_' + criticity + '_action'] except KeyError: # Try fallback to plugin default limit # Exemple: network_careful_action @@ -397,7 +389,7 @@ class GlancesPlugin(object): return action def get_conf_value(self, value, header="", plugin_name=None): - """Return the configuration (header_)value for the current plugin (or the one given by the plugin_name var)""" + """Return the configuration (header_) value for the current plugin (or the one given by the plugin_name var)""" if plugin_name is None: plugin_name = self.plugin_name if header == "": From 338330271d62629461f867d7fd940231e65fa08f Mon Sep 17 00:00:00 2001 From: Nicolargo Date: Sat, 3 Jan 2015 17:43:02 +0100 Subject: [PATCH 15/90] Factorize export code --- glances/exports/glances_csv.py | 2 ++ glances/exports/glances_export.py | 33 +++++++++++++++++++++++++++++ glances/exports/glances_influxdb.py | 31 ++------------------------- glances/exports/glances_statsd.py | 31 ++------------------------- 4 files changed, 39 insertions(+), 58 deletions(-) diff --git a/glances/exports/glances_csv.py b/glances/exports/glances_csv.py index a71e492b..2b450027 100644 --- a/glances/exports/glances_csv.py +++ b/glances/exports/glances_csv.py @@ -53,6 +53,8 @@ class Export(GlancesExport): logger.info("Stats exported to CSV file: {0}".format(self.csv_filename)) + self.export_enable = True + self.first_line = True def exit(self): diff --git a/glances/exports/glances_export.py b/glances/exports/glances_export.py index a4d219f1..a8681a64 100644 --- a/glances/exports/glances_export.py +++ b/glances/exports/glances_export.py @@ -44,6 +44,10 @@ class GlancesExport(object): self.config = config self.args = args + # By default export is disable + # Had to be set to True in the __init__ class of child + self.export_enable = False + def exit(self): """Close the export module.""" logger.debug("Finalise export interface %s" % self.export_name) @@ -51,3 +55,32 @@ class GlancesExport(object): def plugins_to_export(self): """Return the list of plugins to export""" return ['cpu', 'load', 'mem', 'memswap', 'network', 'diskio', 'fs', 'processcount'] + + def update(self, stats): + """Update stats to a server. + The method buil two list: names and values + and call the export method to export the stats""" + if not self.export_enable: + return False + + # Get the stats + all_stats = stats.getAll() + plugins = stats.getAllPlugins() + + # Loop over available plugin + i = 0 + for plugin in plugins: + if plugin in self.plugins_to_export(): + if type(all_stats[i]) is list: + for item in all_stats[i]: + export_names = map( + lambda x: item[item['key']] + '.' + x, item.keys()) + export_values = item.values() + self.export(plugin, export_names, export_values) + elif type(all_stats[i]) is dict: + export_names = all_stats[i].keys() + export_values = all_stats[i].values() + self.export(plugin, export_names, export_values) + i += 1 + + return True diff --git a/glances/exports/glances_influxdb.py b/glances/exports/glances_influxdb.py index 801fb962..60b9c1ee 100644 --- a/glances/exports/glances_influxdb.py +++ b/glances/exports/glances_influxdb.py @@ -93,34 +93,7 @@ class Export(GlancesExport): sys.exit(2) return db - def update(self, stats): - """Update stats to the InfluxDB server.""" - if not self.export_enable: - return False - - # Get the stats - all_stats = stats.getAll() - plugins = stats.getAllPlugins() - - # Loop over available plugin - i = 0 - for plugin in plugins: - if plugin in self.plugins_to_export(): - if type(all_stats[i]) is list: - for item in all_stats[i]: - export_names = map( - lambda x: item[item['key']] + '_' + x, item.keys()) - export_values = item.values() - self.write_to_influxdb(plugin, export_names, export_values) - elif type(all_stats[i]) is dict: - export_names = all_stats[i].keys() - export_values = all_stats[i].values() - self.write_to_influxdb(plugin, export_names, export_values) - i += 1 - - return True - - def write_to_influxdb(self, name, columns, points): + def export(self, name, columns, points): """Write the points to the InfluxDB server""" data = [ { @@ -131,4 +104,4 @@ class Export(GlancesExport): try: self.client.write_points(data) except Exception as e: - logger.critical("Can not export stats to InfluxDB (%s)" % e) + logger.error("Can not export stats to InfluxDB (%s)" % e) diff --git a/glances/exports/glances_statsd.py b/glances/exports/glances_statsd.py index 63a9e1fc..982a9bfb 100644 --- a/glances/exports/glances_statsd.py +++ b/glances/exports/glances_statsd.py @@ -85,34 +85,7 @@ class Export(GlancesExport): self.port, prefix=prefix) - def update(self, stats): - """Update stats to the InfluxDB server.""" - if not self.export_enable: - return False - - # Get the stats - all_stats = stats.getAll() - plugins = stats.getAllPlugins() - - # Loop over available plugin - i = 0 - for plugin in plugins: - if plugin in self.plugins_to_export(): - if type(all_stats[i]) is list: - for item in all_stats[i]: - export_names = map( - lambda x: item[item['key']] + '.' + x, item.keys()) - export_values = item.values() - self.__export(plugin, export_names, export_values) - elif type(all_stats[i]) is dict: - export_names = all_stats[i].keys() - export_values = all_stats[i].values() - self.__export(plugin, export_names, export_values) - i += 1 - - return True - - def __export(self, name, columns, points): + def export(self, name, columns, points): """Export the stats to the Statsd server""" for i in range(0, len(columns)): if not isinstance(points[i], Number): @@ -122,4 +95,4 @@ class Export(GlancesExport): try: self.client.gauge(stat_name, stat_value) except Exception as e: - logger.critical("Can not export stats to Statsd (%s)" % e) + logger.error("Can not export stats to Statsd (%s)" % e) From 754798538ededc09cd8a61711bc5fa6fc2c4fafa Mon Sep 17 00:00:00 2001 From: Nicolargo Date: Sat, 3 Jan 2015 17:46:14 +0100 Subject: [PATCH 16/90] PyStache is not mandatory --- glances/core/glances_actions.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/glances/core/glances_actions.py b/glances/core/glances_actions.py index 6069e0e8..ee29fd61 100644 --- a/glances/core/glances_actions.py +++ b/glances/core/glances_actions.py @@ -19,13 +19,19 @@ """Manage on alert actions.""" -# Import system lib -from subprocess import Popen -import pystache - # Import Glances lib from glances.core.glances_logging import logger +# Import system lib +from subprocess import Popen +try: + import pystache +except ImportError: + logger.warning("PyStache lib not installed (action script with mustache will not work)") + pystache_tag = False +else: + pystache_tag = True + class GlancesActions(object): @@ -67,7 +73,10 @@ class GlancesActions(object): # Ran all actions in background for cmd in commands: # Replace {{arg}} by the dict one (Thk to {Mustache}) - cmd_full = pystache.render(cmd, mustache_dict) + if pystache_tag: + cmd_full = pystache.render(cmd, mustache_dict) + else: + cmd_full = cmd # Execute the action logger.info("Action triggered for {0} ({1}): {2}".format(stat_name, criticity, cmd_full)) logger.debug("Stats value for the trigger: {0}".format(mustache_dict)) From 540cdb4073395622756a74334e631302e53656a8 Mon Sep 17 00:00:00 2001 From: Nicolargo Date: Sat, 3 Jan 2015 19:11:21 +0100 Subject: [PATCH 17/90] Add wget to Glances autoinstall procedure --- README.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.rst b/README.rst index 18986715..6c70452b 100644 --- a/README.rst +++ b/README.rst @@ -56,6 +56,12 @@ To install both dependacies and latest Glances version, just enter the followin curl -L http://bit.ly/glances | /bin/bash +or + +.. code-block:: console + + wget -O- http://bit.ly/glances | /bin/bash + *Note*: Only supported on some GNU/Linux distributions. If you want to support others distribs, please contribute to `glancesautoinstall`_. From 8021a2bd3ada5c7733b0aab0a88680db56296339 Mon Sep 17 00:00:00 2001 From: Alessio Sergi Date: Sat, 3 Jan 2015 19:33:03 +0100 Subject: [PATCH 18/90] README.rst: FreeBSD: pkg(8) is now the only package management tool --- README.rst | 6 ------ 1 file changed, 6 deletions(-) diff --git a/README.rst b/README.rst index 6c70452b..80e78c47 100644 --- a/README.rst +++ b/README.rst @@ -106,12 +106,6 @@ FreeBSD To install the binary package: -.. code-block:: console - - # pkg_add -r py27-glances - -Using pkgng: - .. code-block:: console # pkg install py27-glances From db17fb77aff4dcd804ef74763db96a029b9474aa Mon Sep 17 00:00:00 2001 From: Alessio Sergi Date: Sun, 4 Jan 2015 16:26:55 +0100 Subject: [PATCH 19/90] README.rst: fix broken links Simplify by removing superfluous links. --- README.rst | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/README.rst b/README.rst index 80e78c47..f1fa2ed2 100644 --- a/README.rst +++ b/README.rst @@ -56,7 +56,7 @@ To install both dependacies and latest Glances version, just enter the followin curl -L http://bit.ly/glances | /bin/bash -or +or .. code-block:: console @@ -68,10 +68,10 @@ If you want to support others distribs, please contribute to `glancesautoinstall PyPI: The simple way -------------------- -Glances is on `PyPI`_. By using PyPI, you are sure to have the latest +Glances is on ``PyPI``. By using PyPI, you are sure to have the latest stable version. -To install, simply use `pip`_: +To install, simply use ``pip``: .. code-block:: console @@ -120,7 +120,7 @@ To install Glances from ports: OS X ---- -OS X users can install Glances using `Homebrew`_ or `MacPorts`_. +OS X users can install Glances using ``Homebrew`` or ``MacPorts``. Homebrew ```````` @@ -142,7 +142,7 @@ Windows - Install Python for Windows: http://www.python.org/getit/ - Install the psutil library: https://pypi.python.org/pypi?:action=display&name=psutil#downloads -- Install the `colorconsole`_ library: http://code.google.com/p/colorconsole/downloads/list +- Install the colorconsole library: https://pypi.python.org/pypi/colorconsole - Download Glances from here: http://nicolargo.github.io/glances/ Source @@ -163,7 +163,7 @@ on Debian/Ubuntu you need to install first the *python-dev* package. Puppet ------ -You can install Glances using `Puppet`_: https://github.com/rverchere/puppet-glances +You can install Glances using ``Puppet``: https://github.com/rverchere/puppet-glances Usage ===== @@ -227,12 +227,9 @@ License LGPL. See ``COPYING`` for more details. -.. _psutil: https://code.google.com/p/psutil/ +.. _psutil: https://github.com/giampaolo/psutil .. _glancesautoinstall: https://github.com/nicolargo/glancesautoinstall .. _@nicolargo: https://twitter.com/nicolargo .. _@glances_system: https://twitter.com/glances_system -.. _PyPI: https://pypi.python.org/pypi -.. _pip: http://www.pip-installer.org/ -.. _colorconsole: https://pypi.python.org/pypi/colorconsole .. _glances-doc: https://github.com/nicolargo/glances/blob/master/docs/glances-doc.rst .. _forum: https://groups.google.com/forum/?hl=en#!forum/glances-users From abe37cc7a2fe37a84534d6ae66b5baf21efa753a Mon Sep 17 00:00:00 2001 From: Alessio Sergi Date: Sun, 4 Jan 2015 16:38:00 +0100 Subject: [PATCH 20/90] README.rst: fix misspelling --- README.rst | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.rst b/README.rst index f1fa2ed2..a917d7f4 100644 --- a/README.rst +++ b/README.rst @@ -50,7 +50,8 @@ Installation Glances Auto Install script --------------------------- -To install both dependacies and latest Glances version, just enter the following command line: +To install both dependencies and latest Glances version, just enter the +following command line: .. code-block:: console @@ -63,7 +64,7 @@ or wget -O- http://bit.ly/glances | /bin/bash *Note*: Only supported on some GNU/Linux distributions. -If you want to support others distribs, please contribute to `glancesautoinstall`_. +If you want to support other distributions, please contribute to `glancesautoinstall`_. PyPI: The simple way -------------------- @@ -205,8 +206,8 @@ You can also detect and display all Glances servers available on your network or And RTFM, always. -Gateway to others services -========================== +Gateway to other services +========================= Glances can export stats to: CSV file, InfluxDB and Statsd server. From 9b17311c4b64c0b477c65bf081435ba61b5873be Mon Sep 17 00:00:00 2001 From: Alessio Sergi Date: Sun, 4 Jan 2015 17:15:26 +0100 Subject: [PATCH 21/90] README.rst: prettify Mention pymdstat as optional dep. --- README.rst | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/README.rst b/README.rst index a917d7f4..faff1001 100644 --- a/README.rst +++ b/README.rst @@ -38,6 +38,7 @@ Optional dependencies: - ``py3sensors`` (for hardware monitoring support) [Linux-only] - ``hddtemp`` (for HDD temperature monitoring support) [Linux-only] - ``batinfo`` (for battery monitoring support) [Linux-only] +- ``pymdstat`` (for RAID support) [Linux-only] - ``pysnmp`` (for SNMP support) - ``zeroconf`` and ``netifaces`` (for the auto discoverer mode) - ``influxdb`` (for the InfluxDB export module) @@ -63,8 +64,8 @@ or wget -O- http://bit.ly/glances | /bin/bash -*Note*: Only supported on some GNU/Linux distributions. -If you want to support other distributions, please contribute to `glancesautoinstall`_. +*Note*: Only supported on some GNU/Linux distributions. If you want to +support other distributions, please contribute to `glancesautoinstall`_. PyPI: The simple way -------------------- @@ -149,7 +150,7 @@ Windows Source ------ -To install Glances version X.Y from source: +To install Glances from source: .. code-block:: console @@ -198,25 +199,26 @@ on the server side and run: on the client one. -You can also detect and display all Glances servers available on your network or defined in the configuration file: +You can also detect and display all Glances servers available on your +network or defined in the configuration file: .. code-block:: console $ glances --browser -And RTFM, always. +and RTFM, always. Gateway to other services ========================= -Glances can export stats to: CSV file, InfluxDB and Statsd server. +Glances can export stats to: ``CSV`` file, ``InfluxDB`` and ``StatsD`` server. Documentation ============= For complete documentation see `glances-doc`_. -If you have any question (after RTFM !), please post it on the official Q&A `forum`_. +If you have any question (after RTFM!), please post it on the official Q&A `forum`_. Author ====== From c3be300dab0d3950c44f1dcb1fbedde569b636ef Mon Sep 17 00:00:00 2001 From: Nicolargo Date: Sun, 4 Jan 2015 20:59:04 +0100 Subject: [PATCH 22/90] Docker plugin first version --- NEWS | 3 +- README.rst | 1 + docs/glances-doc.rst | 7 + docs/images/docker.png | Bin 0 -> 60028 bytes glances/core/glances_main.py | 2 + glances/outputs/glances_curses.py | 12 +- glances/plugins/glances_batpercent.py | 1 + glances/plugins/glances_docker.py | 201 ++++++++++++++++++++++++++ glances/plugins/glances_help.py | 4 + 9 files changed, 228 insertions(+), 3 deletions(-) create mode 100644 docs/images/docker.png create mode 100644 glances/plugins/glances_docker.py diff --git a/NEWS b/NEWS index 7ecc1530..81ee3911 100644 --- a/NEWS +++ b/NEWS @@ -10,7 +10,8 @@ Version 2.3 * Add Statsd export module (--export-statsd) (issue #465) * Refactor export module (CSV export option is now --export-csv). It is now possible to export stats from the Glances client mode (issue #463) * The Web inteface is now based on BootStarp / RWD grid (issue #417, #366 and #461) Thanks to Nicolas Hart @nclsHart - * Add the RAID plugins (issue #447) + * Add the RAID plugin (issue #447) + * Add the Docker plugin (issue #440) Version 2.2.1 ============= diff --git a/README.rst b/README.rst index faff1001..c1f309cd 100644 --- a/README.rst +++ b/README.rst @@ -44,6 +44,7 @@ Optional dependencies: - ``influxdb`` (for the InfluxDB export module) - ``statsd`` (for the StatsD export module) - ``pystache`` (for the action script feature) +- ``docker-py`` (for the Docker monitoring support) [Linux-only] Installation ============ diff --git a/docs/glances-doc.rst b/docs/glances-doc.rst index 7ea6c134..c86b1c7b 100644 --- a/docs/glances-doc.rst +++ b/docs/glances-doc.rst @@ -671,6 +671,13 @@ Each alert message displays the following information: 4. {min,avg,max} values or number of running processes for monitored processes list alerts +Docker +------ + +If you use Docker, Glances can help you to monitor your container. Glances uses the Docker API through the Docker-Py library. + +.. image:: images/docker.png + Actions ------- diff --git a/docs/images/docker.png b/docs/images/docker.png new file mode 100644 index 0000000000000000000000000000000000000000..e8115359e89ce8f7fe0e39bd0e260d417f33bad1 GIT binary patch literal 60028 zcmV)3K+C_0P)i?DhBO(9*1R(w+K*(Q`h_YNN z{&NHX#QYy20sv;aK;ip@=ym|j^)d4enhOA+=TqVb2DujI9x(fAXxG?6U+BFwV*EA{ zfPlb#R`V0FB&myUJ+u8Cv{x6kRVT5x%oWhQT_W>y^ZU^an=7Mr*L<}xzd`KHtUe;~ zyGLhpP^Kl%_;Ls`98pT$LeUOP-_p_3dmpplE#%La=gs*K5~{l)>y8p>=^!E^a^GCN%oKl@{Qil^dH?2SSl!hb)yCGy!9^c&**_bC1m z`j&_M`;36ld<3Cup5)OWfB=K&jxqY5#Fh{O0%CyfT~J5>P*zq-L}3`_aycUYiG&y= zuPCGtEkh*_f^)0pJHe*83BKRRS)*vPdc16^D<dVzI$^IbnoeFl> zQT$1AiL#t9(swc0uYrVpvQ{xu6hxGEC`3?7^*KId1(w2NAz~O3g&_c0E{YpEwAMPm znqd@eL|%|RK>o_HEi$ob^8Nf9q0FH^>Tiv#pT!GB@$QPEc9hX7M5msc0wkd5S>mPO zcAgU7YF;YJot^$PWWQq1`$WZ_7qE`(C6RDd`IM4{IH2VTl(Lm#JB1k%9=^?qC

T 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 z%0D))n*GL~dz3@nqSx*ovj)lzed_y_fBg8|krlA+{d-4!Uuzz%Zqe(*z6w3bcf9k0 z7W*CF72wC==N!?m-{Jj^IOD+ZY%gyK&g8ud*rz`9wZK3cQ;wO608 zONS0UkG1IX+dgbI z=&tj7GyqyPX~gTR&AJ^Lts7cZUo((vrQgOg1{JM#=+?Dcr)H&C-fD-g-MenLb!mJE zOFN$Z%$WC|Jv-V^2w2ko)CV8CviXNYpIz8=$8OzwbnCW5%LefoqSB6M|M%?=o;#;g z{Ni!r!Z$`OXmj=r1NZH`uoA8S03ZNKL_t)t!(M0HG^qWzue>>bgNX)O_U_g2yN_r7 zK|X6#Pks-Ed-DkdOoD*6e07a>i41bQ5D_S+8C+K@PD| ziW`mxw-jj^{!CV;U_nYeDkMKAL3B*RD5K@%IcR|sYJ8bq?uvbq$s1MmQu%2}`7dC4U&{hWge^Fg^^-g$WJ#(n#j>5E7NfK7Kl zX;*+%9-p14P|r+;YIW2a87qPuIcU8fdJI#h@VB=^fZkBr^8 zUw@hBZ_}~UHt{dCY#^7XcHy(PkG}1-<4*YJ1)UBY^RK)63?6XEZhP)k3~PQE|H?gA zUHkE>B&@a9f;RlNvhh9_{PVn4jRL4yHsk$!1`QdzJm)P6Mt@zm^s|w(uR44GHcx#2 zLqsG@8#iuqz!mph*0xa)uAKY+eOEs+ZzBNE+Nyg74PN)xtB1UBd1KhPV!`Bho>*R2 zAbMCgYs`d=M<0b_->P04Z>+V`?CU(aybd6@{QaA6+-c}7Z%w*+{nF_leYCi)yS!mA zV;C{JRPB$ijcanr6YuU&zM|^+8*X}gNe&~jyp@$B$8XrL$G9;XNsldw3XS{S{ain& z`E~ABqpm*d(GQn}06?p!+;PQSxBdOvm)>jwYZiQP|K+z&Ton=`)c)|&<>v)A-8A^A zceW|sxU}lE`#!1_tvL|>_UVw@KYIJ_J1_oZz=N}=-FyDvbvN73n^t>`!ruhoL?8q# z@A2pVK66xK0021iq5qx<-#>KBfG57I)$KsVPDkz2Fn|;9eD=iXJHNet_ThI--{6D( zYQKBtnj5#h<1fQUUJ?90W7I8IKDp3by13PWM{PUrmCt|4Id_^N4WUBSX1*=a6m(^2 zP)mZC)VEc1mA2oLAbY06v!+lEyqy?T#X`t zYCKBbH%(+lznBlil(vk5Re3Bplz}QdYRZJ@NW!D(fJ+z`kZBz7yCS#ez(kHoBpD!u zaZiWnhLP1ul0ciM!+?1I2Ne^Rpi)o%%KQsoYIDrC%opnNap=n3v!kv( z7qXK>X^(G?Z{xj(jQ-2A%TE3GoEo-EyuANzT_8o62b~5bQnj;^E)HYYMMkG~jYmsF z#5-oAJ1=g1+VgLmUper&p>sDHHd%C6+vHw})kL4=lFdz^J-(oV6AY2)shL^4nTY;h z_gW1Vn*-OYk>A~7YMxNK)8(%{-v0jMZ~Am4rQCxrO;<5nQW-%==I@j!d#DOUx`INA zgtolAJloEXGa>2xB`371lt%F4?yKasW71qBrk-6@RnESn^8Erq3;GaLQj*Td0HS0O zww~4F)hIzG@>y`C!jL~)>`1V-GDJI?B5Tk$2qKgqG$Vf)bKNABR!G(s5v}(@jvTu( zf+5~JFi5FzESDl6&hZ0_f)`T>lFH zWb%nqj;|90fuTdjsARy~^|g8$e}kz!^C^*0eSI+6f2C=EOI3nw7+$9IMc%evGD%aY zV{NNxYIwlJkyckeeBb14cJEM11X^{9KNmASnNpmjJu^jy&h|Xcap4R!h@#Jq=Wy{t z1!YZ|cj^& zxAB`)m&`>XwdQinPyp86Wof%U%`5-?@K-CzEw1~*f^-0%)FwM(|4G&zlLwV_P*hT? z=SpoI{bvIU9#c~8M5LyqN4oAoW=|dj7{BX!U3P$3hcWO2%wgW_^1ivqwo<*L)O> z?sm%L+MRSq&fHVdGjGf$E1mI{M`7hG6yNkk5ȰSg;YHasG!ta^rfO!cA`UKJow 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%0A~iQ%m_o*9)y#Pk_CdSOPn8QBPStSd$Z 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%0D0%b&jNPe&bf;jo_%y5r%qJC$&4EUC0B$?`Vg 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

d*`lEqSr9cE6rfP^^Uq&A0<;SK3~Di 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 P00000NkvXXu0mjf>b_!` literal 0 HcmV?d00001 diff --git a/glances/core/glances_main.py b/glances/core/glances_main.py index 7a5b016f..2a275c0c 100644 --- a/glances/core/glances_main.py +++ b/glances/core/glances_main.py @@ -77,6 +77,8 @@ class GlancesMain(object): dest='disable_sensors', help=_('disable sensors module')) parser.add_argument('--disable-raid', action='store_true', default=False, dest='disable_raid', help=_('disable RAID module')) + parser.add_argument('--disable-docker', action='store_true', default=False, + dest='disable_docker', help=_('disable Docker module')) parser.add_argument('--disable-left-sidebar', action='store_true', default=False, dest='disable_left_sidebar', help=_('disable network, disk io, FS and sensors modules')) parser.add_argument('--disable-process', action='store_true', default=False, diff --git a/glances/outputs/glances_curses.py b/glances/outputs/glances_curses.py index 378dc64b..c98b7a5b 100644 --- a/glances/outputs/glances_curses.py +++ b/glances/outputs/glances_curses.py @@ -266,6 +266,9 @@ class _GlancesCurses(object): elif self.pressedkey == ord('d'): # 'd' > Show/hide disk I/O stats self.args.disable_diskio = not self.args.disable_diskio + elif self.pressedkey == ord('D'): + # 'D' > Show/hide Docker stats + self.args.disable_docker = not self.args.disable_docker elif self.pressedkey == ord('e'): # 'e' > Enable/Disable extended stats for top process self.args.enable_process_extended = not self.args.enable_process_extended @@ -432,6 +435,8 @@ class _GlancesCurses(object): stats_sensors = stats.get_plugin( 'sensors').get_stats_display(args=self.args) stats_now = stats.get_plugin('now').get_stats_display() + stats_docker = stats.get_plugin('docker').get_stats_display( + args=self.args) stats_processcount = stats.get_plugin( 'processcount').get_stats_display(args=self.args) stats_monitor = stats.get_plugin( @@ -441,7 +446,8 @@ class _GlancesCurses(object): # Adapt number of processes to the available space max_processes_displayed = screen_y - 11 - \ - self.get_stats_display_height(stats_alert) + self.get_stats_display_height(stats_alert) - \ + self.get_stats_display_height(stats_docker) if self.args.enable_process_extended and not self.args.process_tree: max_processes_displayed -= 4 if max_processes_displayed < 0: @@ -534,9 +540,11 @@ class _GlancesCurses(object): self.next_line = self.saved_line # Display right sidebar - # (PROCESS_COUNT+MONITORED+PROCESS_LIST+ALERT) + # ((DOCKER)+PROCESS_COUNT+(MONITORED)+PROCESS_LIST+ALERT) self.new_column() self.new_line() + self.display_plugin(stats_docker) + self.new_line() self.display_plugin(stats_processcount) if glances_processes.get_process_filter() is None and cs_status == 'None': # Do not display stats monitor list if a filter exist diff --git a/glances/plugins/glances_batpercent.py b/glances/plugins/glances_batpercent.py index ff1deecc..e2ced95c 100644 --- a/glances/plugins/glances_batpercent.py +++ b/glances/plugins/glances_batpercent.py @@ -56,6 +56,7 @@ class Plugin(GlancesPlugin): """Reset/init the stats.""" self.stats = [] + @GlancesPlugin._log_result_decorator def update(self): """Update battery capacity stats using the input method.""" # Reset stats diff --git a/glances/plugins/glances_docker.py b/glances/plugins/glances_docker.py new file mode 100644 index 00000000..edd01081 --- /dev/null +++ b/glances/plugins/glances_docker.py @@ -0,0 +1,201 @@ +# -*- coding: utf-8 -*- +# +# This file is part of Glances. +# +# Copyright (C) 2015 Nicolargo +# +# Glances is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Glances is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see . + +"""Docker plugin.""" + +# Import Glances libs +from glances.core.glances_logging import logger +from glances.plugins.glances_plugin import GlancesPlugin + +# Docker-py library (optional and Linux-only) +# https://github.com/docker/docker-py +try: + import docker + import requests +except ImportError as e: + logger.debug("Docker library not found (%s). Glances cannot grab Docker info." % e) + docker_tag = False +else: + docker_tag = True + + +class Plugin(GlancesPlugin): + + """Glances' Docker plugin. + + stats is a list + """ + + def __init__(self, args=None): + """Init the plugin.""" + GlancesPlugin.__init__(self, args=args) + + # The plgin can be disable using: args.disable_docker + self.args = args + + # We want to display the stat in the curse interface + self.display_curse = True + + # Init the Docker API + self.docker_client = self.connect() + if self.docker_client is None: + global docker_tag + docker_tag = False + + def connect(self, version=None): + """Connect to the Docker server""" + # Init connection to the Docker API + if version is None: + ret = docker.Client(base_url='unix://var/run/docker.sock') + else: + ret = docker.Client(base_url='unix://var/run/docker.sock', + version=version) + try: + ret.version() + except requests.exceptions.ConnectionError as e: + # Connexion error (Docker not detected) + # Let this message in debug mode + logger.debug("Can't connect to the Docker server (%s)" % e) + ret = None + except docker.errors.APIError as e: + if version is None: + # API error (Version mismatch ?) + logger.debug("Docker API error (%s)" % e) + # Try the connection with the server version + import re + version = re.search('server\:\ (.*)\)\"\)', str(e)) + if version: + logger.debug("Try connection with Docker API version %s" % version.group(1)) + ret = self.connect(version=version.group(1)) + else: + # API error + logger.error("Docker API error (%s)" % e) + ret = None + except Exception as e: + # Others exceptions... + # Connexion error (Docker not detected) + logger.error("Can't connect to the Docker server (%s)" % e) + ret = None + + return ret + + def reset(self): + """Reset/init the stats.""" + self.stats = {} + + @GlancesPlugin._log_result_decorator + def update(self): + """Update Docker stats using the input method. + """ + # Reset stats + self.reset() + + # The Docker-py lib is mandatory + if not docker_tag or self.args.disable_docker: + return self.stats + + if self.get_input() == 'local': + # Update stats + # Exemple: { + # "KernelVersion": "3.16.4-tinycore64", + # "Arch": "amd64", + # "ApiVersion": "1.15", + # "Version": "1.3.0", + # "GitCommit": "c78088f", + # "Os": "linux", + # "GoVersion": "go1.3.3" + # } + self.stats['version'] = self.docker_client.version() + # Example: [{u'Status': u'Up 36 seconds', + # u'Created': 1420378904, + # u'Image': u'nginx:1', + # u'Ports': [{u'Type': u'tcp', u'PrivatePort': 443}, + # {u'IP': u'0.0.0.0', u'Type': u'tcp', u'PublicPort': 8080, u'PrivatePort': 80}], + # u'Command': u"nginx -g 'daemon off;'", + # u'Names': [u'/webstack_nginx_1'], + # u'Id': u'b0da859e84eb4019cf1d965b15e9323006e510352c402d2f442ea632d61faaa5'}] + self.stats['containers'] = self.docker_client.containers() + + elif self.get_input() == 'snmp': + # Update stats using SNMP + # Not available + pass + + return self.stats + + def msg_curse(self, args=None): + """Return the dict to display in the curse interface.""" + # Init the return message + ret = [] + + # Only process if stats exist (and non null) and display plugin enable... + if self.stats == {} or args.disable_docker or len(self.stats['containers']) == 0: + return ret + + # Build the string message + # Title + msg = '{0}'.format(_("CONTAINERS")) + ret.append(self.curse_add_line(msg, "TITLE")) + msg = ' {0}'.format(len(self.stats['containers'])) + ret.append(self.curse_add_line(msg)) + msg = ' ({0} {1})'.format(_("served by Docker"), + self.stats['version']["Version"]) + ret.append(self.curse_add_line(msg)) + ret.append(self.curse_new_line()) + # Header + ret.append(self.curse_new_line()) + msg = '{0:>14}'.format(_("Id")) + ret.append(self.curse_add_line(msg)) + msg = ' {0:20}'.format(_("Name")) + ret.append(self.curse_add_line(msg)) + msg = '{0:>26}'.format(_("Status")) + ret.append(self.curse_add_line(msg)) + msg = ' {0:8}'.format(_("Command")) + ret.append(self.curse_add_line(msg)) + # Data + for container in self.stats['containers']: + ret.append(self.curse_new_line()) + # Id + msg = '{0:>14}'.format(container['Id'][0:12]) + ret.append(self.curse_add_line(msg)) + # Name + name = container['Names'][0] + if len(name) > 20: + name = '_' + name[:-19] + else: + name[0:20] + msg = ' {0:20}'.format(name) + ret.append(self.curse_add_line(msg)) + # Status + status = self.container_alert(container['Status']) + msg = container['Status'].replace("minute", "min") + msg = '{0:>26}'.format(msg[0:25]) + ret.append(self.curse_add_line(msg, status)) + # Command + msg = ' {0}'.format(container['Command']) + ret.append(self.curse_add_line(msg)) + + return ret + + def container_alert(self, status): + """Analyse the container status""" + if "Paused" in status: + return 'CAREFUL' + else: + return 'OK' diff --git a/glances/plugins/glances_help.py b/glances/plugins/glances_help.py index 02504b1d..bf1f18f6 100644 --- a/glances/plugins/glances_help.py +++ b/glances/plugins/glances_help.py @@ -139,6 +139,10 @@ class Plugin(GlancesPlugin): ret.append(self.curse_new_line()) msg = msg_col.format("/", _("Enable/disable short processes name")) ret.append(self.curse_add_line(msg)) + ret.append(self.curse_new_line()) + msg = msg_col.format("D", _("Enable/disable Docker stats")) + ret.append(self.curse_add_line(msg)) + ret.append(self.curse_new_line()) ret.append(self.curse_new_line()) From 24910a8ee2c8f5be47d4459fc52e6cf96591b500 Mon Sep 17 00:00:00 2001 From: Nicolargo Date: Sun, 4 Jan 2015 21:17:41 +0100 Subject: [PATCH 23/90] Manage if Docker-py not found --- glances/plugins/glances_docker.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/glances/plugins/glances_docker.py b/glances/plugins/glances_docker.py index edd01081..273adf9d 100644 --- a/glances/plugins/glances_docker.py +++ b/glances/plugins/glances_docker.py @@ -61,11 +61,15 @@ class Plugin(GlancesPlugin): def connect(self, version=None): """Connect to the Docker server""" # Init connection to the Docker API - if version is None: - ret = docker.Client(base_url='unix://var/run/docker.sock') - else: - ret = docker.Client(base_url='unix://var/run/docker.sock', - version=version) + try: + if version is None: + ret = docker.Client(base_url='unix://var/run/docker.sock') + else: + ret = docker.Client(base_url='unix://var/run/docker.sock', + version=version) + except NameError: + # docker lib not found + return None try: ret.version() except requests.exceptions.ConnectionError as e: From 7fc4506846ca5f61d0cfbf6476b17f9a50d4d327 Mon Sep 17 00:00:00 2001 From: Nicolargo Date: Sun, 4 Jan 2015 23:03:54 +0100 Subject: [PATCH 24/90] Add a new bar class to display bar in curse UI --- glances/outputs/glances_bars.py | 73 +++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 glances/outputs/glances_bars.py diff --git a/glances/outputs/glances_bars.py b/glances/outputs/glances_bars.py new file mode 100644 index 00000000..729e4a63 --- /dev/null +++ b/glances/outputs/glances_bars.py @@ -0,0 +1,73 @@ +# -*- coding: utf-8 -*- +# +# This file is part of Glances. +# +# Copyright (C) 2015 Nicolargo +# +# Glances is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Glances is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see . + +"""Manage bars for Glances output.""" + +# Import system lib +from math import modf + +# Global vars +curses_bars = [" ", "▏", "▎", "▍", "▌", "▋", "▊", "▉", "█"] + + +class Bar(object): + """Manage bar (progression or status) + + import sys + import time + b = Bar(10) + for p in range(0, 100): + b.set_percent(p) + print("\r%s" % b), + time.sleep(0.1) + sys.stdout.flush() + + """ + + def __init__(self, size): + # Bar size + self.__size = size + # Bar current percent + self.__percent = 0 + + def get_size(self): + return self.__size + + def set_size(self, size): + self.__size = size + return self.__size + + def get_percent(self): + return self.__percent + + def set_percent(self, percent): + assert percent >= 0 + assert percent <= 100 + self.__percent = percent + return self.__percent + + def __str__(self): + """Return the bars""" + frac, whole = modf(self.get_size() * self.get_percent() / 100.0) + ret = curses_bars[8] * int(whole) + if frac > 0: + ret += curses_bars[int(frac * 8)] + whole += 1 + ret += '_' * int(self.get_size() - whole) + return ret From ca223a9b8cd2406caae901f0afdc9ba961362b9f Mon Sep 17 00:00:00 2001 From: Alessio Sergi Date: Mon, 5 Jan 2015 11:33:15 +0100 Subject: [PATCH 25/90] setup.py: add chroot detection Fixes #471. --- setup.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/setup.py b/setup.py index cf1d40a8..d066869c 100755 --- a/setup.py +++ b/setup.py @@ -6,6 +6,8 @@ import sys from setuptools import setup +is_chroot = os.stat('/').st_ino != 2 + def get_data_files(): data_files = [ @@ -15,15 +17,16 @@ def get_data_files(): ('share/man/man1', ['man/glances.1']) ] - if os.name == 'posix' and os.getuid() == 0: # Unix-like + root privileges + if hasattr(sys, 'real_prefix'): # virtualenv + conf_path = os.path.join(sys.prefix, 'etc', 'glances') + elif os.name == 'posix' and (os.getuid() == 0 or is_chroot): + # Unix-like + root privileges/chroot environment if 'bsd' in sys.platform: conf_path = os.path.join(sys.prefix, 'etc', 'glances') elif 'linux' in sys.platform: conf_path = os.path.join('/etc', 'glances') elif 'darwin' in sys.platform: conf_path = os.path.join('/usr/local', 'etc', 'glances') - elif hasattr(sys, 'real_prefix'): # virtualenv - conf_path = os.path.join(sys.prefix, 'etc', 'glances') elif 'win32' in sys.platform: # windows conf_path = os.path.join(os.environ.get('APPDATA'), 'glances') else: # Unix-like + per-user install From 20879f86eca52c1678299287ad522f2a2175741d Mon Sep 17 00:00:00 2001 From: Nicolas Hennion Date: Mon, 5 Jan 2015 17:40:35 +0100 Subject: [PATCH 26/90] Correct an issue on Curse display if RAID not available --- glances/outputs/glances_curses.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/glances/outputs/glances_curses.py b/glances/outputs/glances_curses.py index c98b7a5b..fbd1375a 100644 --- a/glances/outputs/glances_curses.py +++ b/glances/outputs/glances_curses.py @@ -431,7 +431,7 @@ class _GlancesCurses(object): stats_fs = stats.get_plugin('fs').get_stats_display( args=self.args, max_width=plugin_max_width) stats_raid = stats.get_plugin('raid').get_stats_display( - args=self.args, max_width=plugin_max_width) + args=self.args) stats_sensors = stats.get_plugin( 'sensors').get_stats_display(args=self.args) stats_now = stats.get_plugin('now').get_stats_display() From bb54d975a07199806a8f58d7809fa4e71541b7ca Mon Sep 17 00:00:00 2001 From: Nicolargo Date: Tue, 6 Jan 2015 21:38:03 +0100 Subject: [PATCH 27/90] R/W error with the glances.log file (issue #474) --- NEWS | 6 ++++++ docs/glances-doc.rst | 2 ++ glances/core/glances_logging.py | 15 ++++++++++++++- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 81ee3911..6480042c 100644 --- a/NEWS +++ b/NEWS @@ -5,6 +5,8 @@ Glances Version 2.x Version 2.3 =========== +Enhancements and news features: + * Add actions on alerts (issue #132). It is now possible to run action (command line) by triggers. Action could containq {Mustache} {{tag}} (Mustache) with stat value. * Add InfluxDB export module (--export-influxdb) (issue #455) * Add Statsd export module (--export-statsd) (issue #465) @@ -13,6 +15,10 @@ Version 2.3 * Add the RAID plugin (issue #447) * Add the Docker plugin (issue #440) +Bugs corrected: + + * R/W error with the glances.log file (issue #474) + Version 2.2.1 ============= diff --git a/docs/glances-doc.rst b/docs/glances-doc.rst index c86b1c7b..0f33a063 100644 --- a/docs/glances-doc.rst +++ b/docs/glances-doc.rst @@ -332,6 +332,8 @@ By default, the log file is under: :Linux, \*BSD and OS X: ``/tmp/glances.log`` :Windows: ``%APPDATA%\Local\temp\glances.log`` +If glances.log is not writable, a new file will be created and returned to the user console. + Anatomy Of The Application ========================== diff --git a/glances/core/glances_logging.py b/glances/core/glances_logging.py index 74518f3e..82a8a9d3 100644 --- a/glances/core/glances_logging.py +++ b/glances/core/glances_logging.py @@ -71,14 +71,27 @@ LOGGING_CFG = { } +def tempfile_name(): + """Return the tempfile name (full path)""" + ret = os.path.join(tempfile.gettempdir(), 'glances.log') + if os.access(ret, os.F_OK) and not os.access(ret, os.W_OK): + print("Warning: can't write logs to file {} (permission denied)".format(ret)) + ret = tempfile.mkstemp(prefix='glances', suffix='.tmp', text=True) + print("Create a new log file: {}".format(ret[1])) + return ret[1] + + def glances_logger(): + """Build and return the logger""" + temp_path = tempfile_name() _logger = logging.getLogger() try: + LOGGING_CFG['handlers']['file']['filename'] = temp_path logging.config.dictConfig(LOGGING_CFG) except AttributeError: # dictConfig is only available for Python 2.7 or higher # Minimal configuration for Python 2.6 - logging.basicConfig(filename=os.path.join(tempfile.gettempdir(), 'glances.log'), + logging.basicConfig(filename=temp_path, level=logging.DEBUG, format='%(asctime)s -- %(levelname)s -- %(message)s') return _logger From c940bae43e97e7c6473ac6498ed34af07478a866 Mon Sep 17 00:00:00 2001 From: Nicolargo Date: Tue, 6 Jan 2015 22:15:55 +0100 Subject: [PATCH 28/90] Correct a bug with Docker module and server mode --- glances/plugins/glances_docker.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/glances/plugins/glances_docker.py b/glances/plugins/glances_docker.py index 273adf9d..96995c8d 100644 --- a/glances/plugins/glances_docker.py +++ b/glances/plugins/glances_docker.py @@ -111,7 +111,7 @@ class Plugin(GlancesPlugin): self.reset() # The Docker-py lib is mandatory - if not docker_tag or self.args.disable_docker: + if not docker_tag or (self.args is not None and self.args.disable_docker): return self.stats if self.get_input() == 'local': From 8f8ecf7de8435cb0078bf72adba4ac9779a1ff66 Mon Sep 17 00:00:00 2001 From: Nicolargo Date: Tue, 6 Jan 2015 22:17:45 +0100 Subject: [PATCH 29/90] Correct bug on default log file --- glances/core/glances_logging.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/glances/core/glances_logging.py b/glances/core/glances_logging.py index 82a8a9d3..c7cb7e94 100644 --- a/glances/core/glances_logging.py +++ b/glances/core/glances_logging.py @@ -78,7 +78,8 @@ def tempfile_name(): print("Warning: can't write logs to file {} (permission denied)".format(ret)) ret = tempfile.mkstemp(prefix='glances', suffix='.tmp', text=True) print("Create a new log file: {}".format(ret[1])) - return ret[1] + return ret[1] + return ret def glances_logger(): From 276d0d1b1ec8e9cf9d0f5041c4038f9949834855 Mon Sep 17 00:00:00 2001 From: Nicolargo Date: Tue, 6 Jan 2015 22:30:20 +0100 Subject: [PATCH 30/90] Correct comments --- glances/core/glances_stats.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/glances/core/glances_stats.py b/glances/core/glances_stats.py index b9e98288..93fc310b 100644 --- a/glances/core/glances_stats.py +++ b/glances/core/glances_stats.py @@ -55,7 +55,7 @@ class GlancesStats(object): # Init the export modules list dict self._exports = collections.defaultdict(dict) - # Load the plugins + # Load the exports modules self.load_exports(args=args) # Load the limits From d94d51f506e449f167d09f79ebdc03f5759fa67a Mon Sep 17 00:00:00 2001 From: Nicolargo Date: Wed, 7 Jan 2015 21:10:12 +0100 Subject: [PATCH 31/90] Add NetApp SNMP support --- glances/core/glances_stats.py | 5 +++-- glances/plugins/glances_cpu.py | 5 ++++- glances/plugins/glances_fs.py | 7 ++++++- glances/plugins/glances_system.py | 5 ++++- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/glances/core/glances_stats.py b/glances/core/glances_stats.py index 93fc310b..6992f1d2 100644 --- a/glances/core/glances_stats.py +++ b/glances/core/glances_stats.py @@ -34,7 +34,8 @@ oid_to_short_system_name = {'.*Linux.*': 'linux', '.*BSD.*': 'bsd', '.*Windows.*': 'windows', '.*Cisco.*': 'cisco', - '.*VMware ESXi.*': 'esxi'} + '.*VMware ESXi.*': 'esxi', + '.*NetApp.*': 'netapp'} class GlancesStats(object): @@ -55,7 +56,7 @@ class GlancesStats(object): # Init the export modules list dict self._exports = collections.defaultdict(dict) - # Load the exports modules + # Load the plugins self.load_exports(args=args) # Load the limits diff --git a/glances/plugins/glances_cpu.py b/glances/plugins/glances_cpu.py index 685f5454..8db1167d 100644 --- a/glances/plugins/glances_cpu.py +++ b/glances/plugins/glances_cpu.py @@ -31,7 +31,10 @@ snmp_oid = {'default': {'user': '1.3.6.1.4.1.2021.11.9.0', 'system': '1.3.6.1.4.1.2021.11.10.0', 'idle': '1.3.6.1.4.1.2021.11.11.0'}, 'windows': {'percent': '1.3.6.1.2.1.25.3.3.1.2'}, - 'esxi': {'percent': '1.3.6.1.2.1.25.3.3.1.2'}} + 'esxi': {'percent': '1.3.6.1.2.1.25.3.3.1.2'}, + 'netapp': {'system': '1.3.6.1.4.1.789.1.2.1.3.0', + 'idle': '1.3.6.1.4.1.789.1.2.1.5.0', + 'nb_log_core': '1.3.6.1.4.1.789.1.2.1.6.0'}} # Define the history items list # - 'name' define the stat identifier diff --git a/glances/plugins/glances_fs.py b/glances/plugins/glances_fs.py index 621ea5bc..b7423a17 100644 --- a/glances/plugins/glances_fs.py +++ b/glances/plugins/glances_fs.py @@ -47,7 +47,12 @@ snmp_oid = {'default': {'mnt_point': '1.3.6.1.4.1.2021.9.1.2', 'windows': {'mnt_point': '1.3.6.1.2.1.25.2.3.1.3', 'alloc_unit': '1.3.6.1.2.1.25.2.3.1.4', 'size': '1.3.6.1.2.1.25.2.3.1.5', - 'used': '1.3.6.1.2.1.25.2.3.1.6'}} + 'used': '1.3.6.1.2.1.25.2.3.1.6'}, + 'netapp': {'mnt_point': '1.3.6.1.4.1.789.1.5.4.1.2', + 'device_name': '1.3.6.1.4.1.789.1.5.4.1.10', + 'size': '1.3.6.1.4.1.789.1.5.4.1.3', + 'used': '1.3.6.1.4.1.789.1.5.4.1.4', + 'percent': '1.3.6.1.4.1.789.1.5.4.1.6'}} snmp_oid['esxi'] = snmp_oid['windows'] # Define the history items list diff --git a/glances/plugins/glances_system.py b/glances/plugins/glances_system.py index e5e1acfa..98c5bab3 100644 --- a/glances/plugins/glances_system.py +++ b/glances/plugins/glances_system.py @@ -29,7 +29,10 @@ from glances.plugins.glances_plugin import GlancesPlugin # SNMP OID snmp_oid = {'default': {'hostname': '1.3.6.1.2.1.1.5.0', - 'system_name': '1.3.6.1.2.1.1.1.0'}} + 'system_name': '1.3.6.1.2.1.1.1.0'}, + 'netapp': {'hostname': '1.3.6.1.2.1.1.5.0', + 'system_name': '1.3.6.1.2.1.1.1.0', + 'platform': '1.3.6.1.4.1.789.1.1.5.0'}} # SNMP to human read # Dict (key: OS short name) of dict (reg exp OID to human) From 147e9c4669917130bc06b049d08644d2b3716b64 Mon Sep 17 00:00:00 2001 From: Nicolargo Date: Wed, 7 Jan 2015 22:25:40 +0100 Subject: [PATCH 32/90] Add PGP public key --- AUTHORS | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/AUTHORS b/AUTHORS index 35ada0bf..bb405e52 100644 --- a/AUTHORS +++ b/AUTHORS @@ -5,7 +5,9 @@ Developers Nicolas Hennion (aka) Nicolargo http://blog.nicolargo.com https://twitter.com/nicolargo -contact@nicolargo.com +nicolashennion@gmail.com +PGP Fingerprint: 835F C447 3BCD 60E9 9200 2778 ABA4 D1AB 9731 6A3C +PGP Public key: gpg --keyserver pgp.mit.edu --recv-keys 0xaba4d1ab97316a3c Alessio Sergi (aka) al3hex https://twitter.com/al3hex From 8b19d1440e73a5324ab3ff4a53be56efe955bb06 Mon Sep 17 00:00:00 2001 From: Nicolargo Date: Fri, 9 Jan 2015 22:28:00 +0100 Subject: [PATCH 33/90] Implement get all limits in the RESTFUL API #477 --- glances/core/glances_stats.py | 14 ++++++++++++++ glances/outputs/glances_bottle.py | 18 ++++++++++++++++++ unitest-restful.py | 28 ++++++++++++++++++++-------- 3 files changed, 52 insertions(+), 8 deletions(-) diff --git a/glances/core/glances_stats.py b/glances/core/glances_stats.py index 6992f1d2..ab6a0b43 100644 --- a/glances/core/glances_stats.py +++ b/glances/core/glances_stats.py @@ -189,6 +189,13 @@ class GlancesStats(object): ret[p] = self._plugins[p].get_raw() return ret + def getAllLimitsAsDict(self): + """Return all the stats limits (dict)""" + ret = {} + for p in self._plugins: + ret[p] = self._plugins[p].get_limits() + return ret + def get_plugin_list(self): """Return the plugin list.""" self._plugins @@ -240,6 +247,13 @@ class GlancesStatsServer(GlancesStats): ret[p] = self.all_stats[p] return ret + def getAllLimitsAsDict(self): + """Return the stats limits as a dict""" + ret = {} + for p in self._plugins: + ret[p] = self._plugins[p].get_limits() + return ret + def getAllPlugins(self): """Return the plugins list.""" return [p for p in self._plugins] diff --git a/glances/outputs/glances_bottle.py b/glances/outputs/glances_bottle.py index ae603208..06363634 100644 --- a/glances/outputs/glances_bottle.py +++ b/glances/outputs/glances_bottle.py @@ -65,6 +65,7 @@ class GlancesBottle(object): # REST API self._app.route('/api/2/pluginslist', method="GET", callback=self._api_plugins) self._app.route('/api/2/all', method="GET", callback=self._api_all) + self._app.route('/api/2/all/limits', method="GET", callback=self._api_all_limits) self._app.route('/api/2/:plugin', method="GET", callback=self._api) self._app.route('/api/2/:plugin/limits', method="GET", callback=self._api_limits) self._app.route('/api/2/:plugin/:item', method="GET", callback=self._api_item) @@ -147,6 +148,23 @@ class GlancesBottle(object): abort(404, "Cannot get stats (%s)" % str(e)) return statval + def _api_all_limits(self): + """ + Glances API RESTFul implementation + Return the JSON representation of all the plugins limits + HTTP/200 if OK + HTTP/400 if plugin is not found + HTTP/404 if others error + """ + response.content_type = 'application/json' + + try: + # Get the JSON value of the stat ID + limits = json.dumps(self.stats.getAllLimitsAsDict()) + except Exception as e: + abort(404, "Cannot get limits (%s)" % (str(e))) + return limits + def _api(self, plugin): """ Glances API RESTFul implementation diff --git a/unitest-restful.py b/unitest-restful.py index 061cb13e..9b154e34 100755 --- a/unitest-restful.py +++ b/unitest-restful.py @@ -46,7 +46,8 @@ pid = None # Unitary test is only available from a GNU/Linus machine if not is_linux: - print('ERROR: RESTFul API unitaries tests should be ran on GNU/Linux operating system') + print( + 'ERROR: RESTFul API unitaries tests should be ran on GNU/Linux operating system') sys.exit(2) else: print('Unitary tests for {0} {1}'.format(appname, version)) @@ -82,25 +83,25 @@ class TestGlances(unittest.TestCase): def test_000_start_server(self): """Start the Glances Web Server""" print('INFO: [TEST_000] Start the Glances Web Server') - + global pid - + cmdline = "/usr/bin/python -m glances -w -p %s" % SERVER_PORT print("Run the Glances Web Server on port %s" % SERVER_PORT) args = shlex.split(cmdline) pid = subprocess.Popen(args) print("Please wait...") time.sleep(1) - + self.assertTrue(pid is not None) def test_001_all(self): """All""" method = "all" - print('INFO: [TEST_001] Connection test') + print('INFO: [TEST_001] Get all stats') print("HTTP RESTFul request: %s/%s" % (URL, method)) - req = requests.get("%s/%s" % (URL, method)) + req = requests.get("%s/%s" % (URL, method)) self.assertTrue(req.ok) @@ -118,7 +119,7 @@ class TestGlances(unittest.TestCase): def test_003_plugins(self): """Plugins""" - method = "pluginslist" + method = "pluginslist" print('INFO: [TEST_003] Plugins') plist = requests.get("%s/%s" % (URL, method)) @@ -146,7 +147,7 @@ class TestGlances(unittest.TestCase): ilist = requests.get("%s/%s" % (URL, method)) for i in ilist.json(): - print("HTTP RESTFul request: %s/%s/%s" % (URL, method,i)) + print("HTTP RESTFul request: %s/%s/%s" % (URL, method, i)) req = requests.get("%s/%s/%s" % (URL, method, i)) self.assertTrue(req.ok) self.assertIsInstance(req.json(), types.DictType) @@ -163,6 +164,17 @@ class TestGlances(unittest.TestCase): self.assertTrue(req.ok) self.assertIsInstance(req.json(), types.DictType) + def test_006_all_limits(self): + """All""" + method = "all/limits" + print('INFO: [TEST_006] Get all limits') + + print("HTTP RESTFul request: %s/%s" % (URL, method)) + req = requests.get("%s/%s" % (URL, method)) + + self.assertTrue(req.ok) + self.assertIsInstance(req.json(), types.DictType) + def test_999_stop_server(self): """Stop the Glances Web Server""" print('INFO: [TEST_999] Stop the Glances Web Server') From c4b79182e5ff20bb957b8149554febb622e7fc45 Mon Sep 17 00:00:00 2001 From: Nicolargo Date: Sat, 10 Jan 2015 12:57:04 +0100 Subject: [PATCH 34/90] Add Gitter badge --- README.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.rst b/README.rst index c1f309cd..64d16764 100644 --- a/README.rst +++ b/README.rst @@ -17,6 +17,8 @@ Glances - An eye on your system :alt: Downloads .. image:: https://d2weczhvl823v0.cloudfront.net/nicolargo/glances/trend.png :target: https://bitdeli.com/nicolargo +.. image:: https://badges.gitter.im/Join%20Chat.svg + :target: https://gitter.im/nicolargo/glances?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge **Glances** is a cross-platform curses-based system monitoring tool written in Python. From e327f73937be4007a2d7871746995215a2031486 Mon Sep 17 00:00:00 2001 From: Nicolargo Date: Sat, 10 Jan 2015 16:36:53 +0100 Subject: [PATCH 35/90] Update doc --- README.rst | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/README.rst b/README.rst index 64d16764..4db9f2c5 100644 --- a/README.rst +++ b/README.rst @@ -1,5 +1,3 @@ -Follow Glances on Twitter: `@nicolargo`_ or `@glances_system`_ - =============================== Glances - An eye on your system =============================== @@ -15,11 +13,12 @@ Glances - An eye on your system .. image:: https://pypip.in/d/Glances/badge.png :target: https://pypi.python.org/pypi/Glances/ :alt: Downloads -.. image:: https://d2weczhvl823v0.cloudfront.net/nicolargo/glances/trend.png - :target: https://bitdeli.com/nicolargo .. image:: https://badges.gitter.im/Join%20Chat.svg :target: https://gitter.im/nicolargo/glances?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge + +Follow Glances on Twitter: `@nicolargo`_ or `@glances_system`_ + **Glances** is a cross-platform curses-based system monitoring tool written in Python. @@ -34,7 +33,7 @@ Requirements - ``psutil >= 2.0.0`` - ``setuptools`` -Optional dependencies: +Optionals dependencies: - ``bottle`` (for Web server mode) - ``py3sensors`` (for hardware monitoring support) [Linux-only] @@ -54,8 +53,7 @@ Installation Glances Auto Install script --------------------------- -To install both dependencies and latest Glances version, just enter the -following command line: +To install both dependencies and latest Glances production ready version (aka *master* branch), just enter the following command line: .. code-block:: console @@ -85,12 +83,25 @@ To install, simply use ``pip``: *Note*: Python headers are required to install psutil. For example, on Debian/Ubuntu you need to install first the *python-dev* package. +*Note 2*: You can also install the following libs in order to use optionnal features: + +.. code-block:: console + + pip install bottle batinfo https://bitbucket.org/gleb_zhulik/py3sensors/get/tip.tar.gz zeroconf netifaces pymdstat influxdb statsd pystache + To upgrade Glances to the latest version: .. code-block:: console pip install --upgrade Glances +If you need to install Glances in a specific user location, use: + +.. code-block:: console + + export PYTHONUSERBASE=~/mylocalpath + pip install --user Glances + GNU/Linux --------- @@ -148,7 +159,7 @@ Windows - Install Python for Windows: http://www.python.org/getit/ - Install the psutil library: https://pypi.python.org/pypi?:action=display&name=psutil#downloads - Install the colorconsole library: https://pypi.python.org/pypi/colorconsole -- Download Glances from here: http://nicolargo.github.io/glances/ +- Install Glances Download Glances from here: http://nicolargo.github.io/glances/ Source ------ @@ -179,7 +190,6 @@ For the standalone mode, just run: $ glances - For the Web server mode, run: .. code-block:: console @@ -211,11 +221,6 @@ network or defined in the configuration file: and RTFM, always. -Gateway to other services -========================= - -Glances can export stats to: ``CSV`` file, ``InfluxDB`` and ``StatsD`` server. - Documentation ============= @@ -223,6 +228,11 @@ For complete documentation see `glances-doc`_. If you have any question (after RTFM!), please post it on the official Q&A `forum`_. +Gateway to other services +========================= + +Glances can export stats to: ``CSV`` file, ``InfluxDB`` and ``StatsD`` server. + Author ====== From 7bdbfea67b7965e49d5245bc6d3a19fcc60a840e Mon Sep 17 00:00:00 2001 From: Nicolargo Date: Sat, 10 Jan 2015 18:12:25 +0100 Subject: [PATCH 36/90] Add example section in the -h tag --- glances/core/glances_main.py | 45 +++++++++++++++++++++++++++++++----- 1 file changed, 39 insertions(+), 6 deletions(-) diff --git a/glances/core/glances_main.py b/glances/core/glances_main.py index 2a275c0c..d8627380 100644 --- a/glances/core/glances_main.py +++ b/glances/core/glances_main.py @@ -51,6 +51,36 @@ class GlancesMain(object): username = "glances" password = "" + # Exemple of use + example_of_use = "\ +Examples of use:\n\ +\n\ +Monitor local machine (standalone mode):\n\ + $ glances\n\ +\n\ +Monitor local machine with the Web interface (Web UI):\n\ + $ glances -w\n\ + Glances web server started on http://0.0.0.0:61208/\n\ +\n\ +Monitor local machine and export stats to a CSV file (standalone mode):\n\ + $ glances --export-csv\n\ +\n\ +Monitor local machine and export stats to a InfluxDB server with 5s refresh time (standalone mode):\n\ + $ glances -t 5 --export-influxdb -t 5\n\ +\n\ +Start a Glances server (server mode):\n\ + $ glances -s\n\ +\n\ +Connect Glances to a Glances server (client mode):\n\ + $ glances -c \n\ +\n\ +Connect Glances to a Glances server and export stats to a StatsD server (client mode):\n\ + $ glances -c --export-statsd\n\ +\n\ +Start the client browser (browser mode):\n\ + $ glances --browser\n\ + " + def __init__(self): """Manage the command line arguments.""" self.args = self.parse_args() @@ -59,7 +89,10 @@ class GlancesMain(object): """Init all the command line arguments.""" _version = "Glances v" + version + " with psutil v" + psutil_version parser = argparse.ArgumentParser( - prog=appname, conflict_handler='resolve') + prog=appname, + conflict_handler='resolve', + formatter_class=argparse.RawDescriptionHelpFormatter, + epilog=self.example_of_use) parser.add_argument( '-V', '--version', action='version', version=_version) parser.add_argument('-d', '--debug', action='store_true', default=False, @@ -80,7 +113,7 @@ class GlancesMain(object): parser.add_argument('--disable-docker', action='store_true', default=False, dest='disable_docker', help=_('disable Docker module')) parser.add_argument('--disable-left-sidebar', action='store_true', default=False, - dest='disable_left_sidebar', help=_('disable network, disk io, FS and sensors modules')) + dest='disable_left_sidebar', help=_('disable network, disk io, FS and sensors modules (need Py3Sensors lib)')) parser.add_argument('--disable-process', action='store_true', default=False, dest='disable_process', help=_('disable process module')) parser.add_argument('--disable-log', action='store_true', default=False, @@ -90,16 +123,16 @@ class GlancesMain(object): parser.add_argument('--enable-process-extended', action='store_true', default=False, dest='enable_process_extended', help=_('enable extended stats on top process')) parser.add_argument('--enable-history', action='store_true', default=False, - dest='enable_history', help=_('enable the history mode')) + dest='enable_history', help=_('enable the history mode (need MatPlotLib lib)')) parser.add_argument('--path-history', default=tempfile.gettempdir(), dest='path_history', help=_('Set the export path for graph history')) # Export modules feature parser.add_argument('--export-csv', default=None, dest='export_csv', help=_('export stats to a CSV file')) parser.add_argument('--export-influxdb', action='store_true', default=False, - dest='export_influxdb', help=_('export stats to an InfluxDB server')) + dest='export_influxdb', help=_('export stats to an InfluxDB server (need InfluDB lib)')) parser.add_argument('--export-statsd', action='store_true', default=False, - dest='export_statsd', help=_('export stats to a Statsd server')) + dest='export_statsd', help=_('export stats to a Statsd server (need StatsD lib)')) # Client/Server option parser.add_argument('-c', '--client', dest='client', help=_('connect to a Glances server by IPv4/IPv6 address or hostname')) @@ -132,7 +165,7 @@ class GlancesMain(object): parser.add_argument('-t', '--time', default=self.refresh_time, type=float, dest='time', help=_('set refresh time in seconds [default: {0} sec]').format(self.refresh_time)) parser.add_argument('-w', '--webserver', action='store_true', default=False, - dest='webserver', help=_('run Glances in web server mode')) + dest='webserver', help=_('run Glances in web server mode (need Bootle lib)')) # Display options parser.add_argument('-f', '--process-filter', default=None, type=str, dest='process_filter', help=_('set the process filter pattern (regular expression)')) From 75b22d3f266c1caaaf2092308050893c1c10330b Mon Sep 17 00:00:00 2001 From: Nicolargo Date: Sat, 10 Jan 2015 22:35:20 +0100 Subject: [PATCH 37/90] Add Glancces responsive design image --- docs/images/glances-responsive-webdesign.png | Bin 0 -> 269830 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/images/glances-responsive-webdesign.png diff --git a/docs/images/glances-responsive-webdesign.png b/docs/images/glances-responsive-webdesign.png new file mode 100644 index 0000000000000000000000000000000000000000..85090469b56ee8150197a3f6d8adf4af0d902ded GIT binary patch literal 269830 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 xHd?^8+dcIkk0;sN*xmyg_X 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 z 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

g+ix%|EK>yv8Cnt7$S1NX^W0E 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 #tyxxBY#x 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 literal 0 HcmV?d00001 From ca42eb7c9602c9bfe2bf4c0bb40c2c3a7c1fe87f Mon Sep 17 00:00:00 2001 From: Nicolargo Date: Sun, 11 Jan 2015 16:03:16 +0100 Subject: [PATCH 38/90] User can force log/alert using the configuration file (issue #437) --- NEWS | 1 + conf/glances-test.conf | 7 ++++++- conf/glances.conf | 6 ++++++ docs/glances-doc.rst | 28 +++++++++++++++++++++++++++ glances/plugins/glances_cpu.py | 2 +- glances/plugins/glances_plugin.py | 32 +++++++++++++++++++++++++------ 6 files changed, 68 insertions(+), 8 deletions(-) diff --git a/NEWS b/NEWS index 6480042c..ff3fc4b7 100644 --- a/NEWS +++ b/NEWS @@ -14,6 +14,7 @@ Enhancements and news features: * The Web inteface is now based on BootStarp / RWD grid (issue #417, #366 and #461) Thanks to Nicolas Hart @nclsHart * Add the RAID plugin (issue #447) * Add the Docker plugin (issue #440) + * It is possible to define (through teh configuration file) if an alarm should be logged or not (using the _log option) (issue #437) Bugs corrected: diff --git a/conf/glances-test.conf b/conf/glances-test.conf index 4a804eea..e850a0f5 100644 --- a/conf/glances-test.conf +++ b/conf/glances-test.conf @@ -3,6 +3,7 @@ user_careful=50 user_warning=70 user_critical=90 +#user_log=False user_critical_action=echo {{user}} {{value}} {{max}} > /tmp/cpu.alert iowait_careful=50 iowait_warning=70 @@ -13,6 +14,7 @@ system_critical=90 steal_careful=50 steal_warning=70 steal_critical=90 +#steal_log=True [percpu] # Default values if not defined: 50/70/90 @@ -34,6 +36,7 @@ system_critical=90 careful=0.7 warning=1.0 critical=5.0 +#log=False [mem] # Default limits for free RAM memory in % @@ -53,14 +56,16 @@ critical=90 # Define the list of hidden network interfaces (comma separeted) hide=lo # WLAN0 alias name -wlan0_alias=Wireless +#wlan0_alias=Wireless # WLAN0 Default limits (in bits per second aka bps) for interface bitrate wlan0_rx_careful=4000000 wlan0_rx_warning=5000000 wlan0_rx_critical=6000000 +wlan0_rx_log=True wlan0_tx_careful=700000 wlan0_tx_warning=900000 wlan0_tx_critical=1000000 +wlan0_tx_log=True [diskio] # Define the list of hidden disks (comma separeted) diff --git a/conf/glances.conf b/conf/glances.conf index f3df2a25..e42123a5 100644 --- a/conf/glances.conf +++ b/conf/glances.conf @@ -3,6 +3,8 @@ user_careful=50 user_warning=70 user_critical=90 +#user_log=False +#user_critical_action=echo {{user}} {{value}} {{max}} > /tmp/cpu.alert iowait_careful=50 iowait_warning=70 iowait_critical=90 @@ -12,6 +14,7 @@ system_critical=90 steal_careful=50 steal_warning=70 steal_critical=90 +#steal_log=True [percpu] # Default values if not defined: 50/70/90 @@ -33,6 +36,7 @@ system_critical=90 careful=0.7 warning=1.0 critical=5.0 +#log=False [mem] # Default limits for free RAM memory in % @@ -57,9 +61,11 @@ critical=90 #wlan0_rx_careful=4000000 #wlan0_rx_warning=5000000 #wlan0_rx_critical=6000000 +#wlan0_rx_log=True #wlan0_tx_careful=700000 #wlan0_tx_warning=900000 #wlan0_tx_critical=1000000 +#wlan0_tx_log=True #[diskio] # Define the list of hidden disks (comma separeted) diff --git a/docs/glances-doc.rst b/docs/glances-doc.rst index 0f33a063..846c4da3 100644 --- a/docs/glances-doc.rst +++ b/docs/glances-doc.rst @@ -320,6 +320,34 @@ e.g., on Linux: On OS X, you should copy the configuration file to ``~/Library/Application Support/glances/``. +*Configuration file description* + +Each plugin and export module can have a section. + +Example for the CPU plugin: + +.. code-block:: + + [cpu] + user_careful=50 + user_warning=70 + user_critical=90 + iowait_careful=50 + iowait_warning=70 + iowait_critical=90 + system_careful=50 + system_warning=70 + system_critical=90 + steal_careful=50 + steal_warning=70 + steal_critical=90 + +By default Steal CPU time alerts aren't logged. If you want to enable log/alert, just add: + +.. code-block:: + + steal_log=True + Logs and debug mode =================== diff --git a/glances/plugins/glances_cpu.py b/glances/plugins/glances_cpu.py index 8db1167d..58e70361 100644 --- a/glances/plugins/glances_cpu.py +++ b/glances/plugins/glances_cpu.py @@ -131,7 +131,7 @@ class Plugin(GlancesPlugin): return self.stats def msg_curse(self, args=None): - """Return the list to display in the curse interface.""" + """Return the list to display in the UI""" # Init the return message ret = [] diff --git a/glances/plugins/glances_plugin.py b/glances/plugins/glances_plugin.py index f7de80eb..ae8f81cd 100644 --- a/glances/plugins/glances_plugin.py +++ b/glances/plugins/glances_plugin.py @@ -292,7 +292,9 @@ class GlancesPlugin(object): If defined 'header' is added between the plugin name and the status. Only useful for stats with several alert status. - If log=True than return the logged status. + If log=True than add log if necessary + elif log=False than do not log + elig log=None than apply the config given in the conf file """ # Compute the % try: @@ -324,7 +326,7 @@ class GlancesPlugin(object): # Manage log log_str = "" - if log: + if self.__get_limit_log(stat_name=stat_name, default_action=log): # Add _LOG to the return string # So stats will be highlited with a specific color log_str = "_LOG" @@ -376,17 +378,35 @@ class GlancesPlugin(object): def __get_limit_action(self, criticity, stat_name=""): """Return the action for the alert""" - # Get the limit for stat + header + # Get the action for stat + header # Exemple: network_wlan0_rx_careful_action try: - action = self.limits[stat_name + '_' + criticity + '_action'] + ret = self.limits[stat_name + '_' + criticity + '_action'] except KeyError: # Try fallback to plugin default limit # Exemple: network_careful_action - action = self.limits[self.plugin_name + '_' + criticity + '_action'] + ret = self.limits[self.plugin_name + '_' + criticity + '_action'] # Return the action list - return action + return ret + + def __get_limit_log(self, stat_name, default_action=False): + """Return the log tag for the alert""" + # Get the log tag for stat + header + # Exemple: network_wlan0_rx_log + try: + log_tag = self.limits[stat_name + '_log'] + except KeyError: + # Try fallback to plugin default log + # Exemple: network_log + try: + log_tag = self.limits[self.plugin_name + '_log'] + except KeyError: + # By defaukt, log are disabled + return default_action + + # Return the action list + return log_tag[0].lower() == 'true' def get_conf_value(self, value, header="", plugin_name=None): """Return the configuration (header_) value for the current plugin (or the one given by the plugin_name var)""" From 264d11ce270b9aee584d505cc72b924d4ddf2142 Mon Sep 17 00:00:00 2001 From: Nicolargo Date: Sun, 11 Jan 2015 17:59:02 +0100 Subject: [PATCH 39/90] Update responsive design image --- docs/images/glances-responsive-webdesign.png | Bin 269830 -> 293649 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/images/glances-responsive-webdesign.png b/docs/images/glances-responsive-webdesign.png index 85090469b56ee8150197a3f6d8adf4af0d902ded..a2b35e23290dc3689ee356ce4114bddbc8bf2b21 100644 GIT binary patch literal 293649 zcmYhj1yoes8!tTckW#`(mx6*Ybc2L6C?ee<-QC>{N|%5F(uj03q?CY^bc29&*SC59 z-@WTD4~yktF*9e!^ZaTP@m5J17mExF0)gPl%1FM0Kv04q5afI)I=J&Xz5@w-LpPF_ zmW13t{QKNe_z~Q}w3pFzf6tKa6T?|n@ioRG5;i_RLCeUOaR`J4A}cBO z-u=&Ri--FMb&rkfa^cKNiftL`>i6%Gihrt7{Y2q0z%hm5V+j0uMV5$9l+K{T;cVt! zpT$_WugI9?{Bg~+^@)HY5shmqA@mnR50L>ykj?J*fpSOO;uk|>PnPp0M+5w^yp2{@t@vfER2H}jO%sSE@yQaB7fxC78d7QTl;^xUjCl5 zRTC-D`xB#AIN#RfE377Xdp4lGHGN$CqbxDmyih1ZalpFDTcECu8~f|%4o8oi>n8@; zcpStlMl{3xPP?X#1x1ubU#%qEpIV`&nj!2%>D$-_HedDk>ZL~ZU9V0@Hm|*J|7H

2QdtwdZ42$R#q!i+ytNIlSIXA!H{D65DV;VP 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%0ArRs<(@rPe_q29F;mEIW3 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

6Qj6@x^n=TD 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 literal 269830 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 xHd?^8+dcIkk0;sN*xmyg_X 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 z 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

g+ix%|EK>yv8Cnt7$S1NX^W0E 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 #tyxxBY#x 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 From 4afb0dee0f48226e71ed8f00c8f1c45a25335d95 Mon Sep 17 00:00:00 2001 From: Nicolargo Date: Sun, 11 Jan 2015 22:05:30 +0100 Subject: [PATCH 40/90] Alarm for DiskIO plugin --- NEWS | 3 ++- conf/glances-test.conf | 14 ++++++++++++-- glances/plugins/glances_diskio.py | 20 ++++++++++++++------ glances/plugins/glances_network.py | 7 ++++--- 4 files changed, 32 insertions(+), 12 deletions(-) diff --git a/NEWS b/NEWS index ff3fc4b7..b2c1d556 100644 --- a/NEWS +++ b/NEWS @@ -14,7 +14,8 @@ Enhancements and news features: * The Web inteface is now based on BootStarp / RWD grid (issue #417, #366 and #461) Thanks to Nicolas Hart @nclsHart * Add the RAID plugin (issue #447) * Add the Docker plugin (issue #440) - * It is possible to define (through teh configuration file) if an alarm should be logged or not (using the _log option) (issue #437) + * It is possible, through the configuration file, to define if an alarm should be logged or not (using the _log option) (issue #437) + * You can now set alarm for Disk IO Bugs corrected: diff --git a/conf/glances-test.conf b/conf/glances-test.conf index e850a0f5..6e4444bf 100644 --- a/conf/glances-test.conf +++ b/conf/glances-test.conf @@ -56,7 +56,7 @@ critical=90 # Define the list of hidden network interfaces (comma separeted) hide=lo # WLAN0 alias name -#wlan0_alias=Wireless +wlan0_alias=Wireless # WLAN0 Default limits (in bits per second aka bps) for interface bitrate wlan0_rx_careful=4000000 wlan0_rx_warning=5000000 @@ -69,9 +69,19 @@ wlan0_tx_log=True [diskio] # Define the list of hidden disks (comma separeted) -hide=sda2,sda5 +hide=sda5 # Alias for sda1 #sda1_alias=IntDisk +# SDA1 limits (in bytes per second aka Bps) for interface bitrate +sda2_rx_careful=150000000 +sda2_rx_warning=180000000 +sda2_rx_critical=200000000 +#sda2_rx_log=True +sda2_tx_careful=150000000 +sda2_tx_warning=180000000 +sda2_tx_critical=200000000 +#sda2_tx_log=True + [fs] # Default limits for free filesytem space in % diff --git a/glances/plugins/glances_diskio.py b/glances/plugins/glances_diskio.py index 0cf68bec..5291c64d 100644 --- a/glances/plugins/glances_diskio.py +++ b/glances/plugins/glances_diskio.py @@ -43,7 +43,8 @@ class Plugin(GlancesPlugin): def __init__(self, args=None): """Init the plugin.""" - GlancesPlugin.__init__(self, args=args, items_history_list=items_history_list) + GlancesPlugin.__init__( + self, args=args, items_history_list=items_history_list) # We want to display the stat in the curse interface self.display_curse = True @@ -146,9 +147,10 @@ class Plugin(GlancesPlugin): if self.is_hide(i['disk_name']): continue # Is there an alias for the disk name ? + disk_real_name = i['disk_name'] disk_name = self.has_alias(i['disk_name']) if disk_name is None: - disk_name = i['disk_name'] + disk_name = disk_real_name # New line ret.append(self.curse_new_line()) if len(disk_name) > 9: @@ -156,11 +158,17 @@ class Plugin(GlancesPlugin): disk_name = '_' + disk_name[-8:] msg = '{0:9}'.format(disk_name) ret.append(self.curse_add_line(msg)) - txps = self.auto_unit(int(i['read_bytes'] // i['time_since_update'])) - rxps = self.auto_unit(int(i['write_bytes'] // i['time_since_update'])) + txps = self.auto_unit( + int(i['read_bytes'] // i['time_since_update'])) + rxps = self.auto_unit( + int(i['write_bytes'] // i['time_since_update'])) msg = '{0:>7}'.format(txps) - ret.append(self.curse_add_line(msg)) + ret.append(self.curse_add_line(msg, + self.get_alert(int(i['read_bytes'] // i['time_since_update']), + header=disk_real_name + '_rx'))) msg = '{0:>7}'.format(rxps) - ret.append(self.curse_add_line(msg)) + ret.append(self.curse_add_line(msg, + self.get_alert(int(i['write_bytes'] // i['time_since_update']), + header=disk_real_name + '_tx'))) return ret diff --git a/glances/plugins/glances_network.py b/glances/plugins/glances_network.py index 9ef8bc89..0b9dda94 100644 --- a/glances/plugins/glances_network.py +++ b/glances/plugins/glances_network.py @@ -236,9 +236,10 @@ class Plugin(GlancesPlugin): continue # Format stats # Is there an alias for the interface name ? + ifrealname = i['interface_name'].split(':')[0] ifname = self.has_alias(i['interface_name']) if ifname is None: - ifname = i['interface_name'].split(':')[0] + ifname = ifrealname if len(ifname) > ifname_max_width: # Cut interface name if it is too long ifname = '_' + ifname[-ifname_max_width + 1:] @@ -277,10 +278,10 @@ class Plugin(GlancesPlugin): msg = '{0:>7}'.format(rx) ret.append(self.curse_add_line( msg, self.get_alert(int(i['rx'] // i['time_since_update'] * 8), - header=ifname + '_rx'))) + header=ifrealname + '_rx'))) msg = '{0:>7}'.format(tx) ret.append(self.curse_add_line( msg, self.get_alert(int(i['tx'] // i['time_since_update'] * 8), - header=ifname + '_tx'))) + header=ifrealname + '_tx'))) return ret From f216d6988fa6ab58247c01e0a7cefaba8883db08 Mon Sep 17 00:00:00 2001 From: nclsHart Date: Wed, 14 Jan 2015 21:38:09 +0100 Subject: [PATCH 41/90] remove python3 encoding argument on open function --- glances/outputs/glances_bottle.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/glances/outputs/glances_bottle.py b/glances/outputs/glances_bottle.py index cf80bf17..64e09659 100644 --- a/glances/outputs/glances_bottle.py +++ b/glances/outputs/glances_bottle.py @@ -247,5 +247,5 @@ class GlancesBottle(object): """ path = os.path.join(os.path.dirname(os.path.realpath(__file__)), "bottle", "index.html") - f = open(path, encoding="utf-8") + f = open(path) return f.read() \ No newline at end of file From c2d2eda6a9acf07bf97dea6b4bbae4078d5889f6 Mon Sep 17 00:00:00 2001 From: nclsHart Date: Wed, 14 Jan 2015 21:53:28 +0100 Subject: [PATCH 42/90] remove additional curly bracket in network plugin labels --- glances/outputs/bottle/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/glances/outputs/bottle/index.html b/glances/outputs/bottle/index.html index 4dccc9d4..3142d97c 100644 --- a/glances/outputs/bottle/index.html +++ b/glances/outputs/bottle/index.html @@ -123,7 +123,7 @@ Tx/s - {{network.interface_name | min_size}}} + {{network.interface_name | min_size}} {{network.rx | bytes}} {{network.tx | bytes}} From c9d736961fc25963458e923cd1e268c2d6fe31a3 Mon Sep 17 00:00:00 2001 From: nclsHart Date: Wed, 14 Jan 2015 23:14:30 +0100 Subject: [PATCH 43/90] use divs instead of tables --- glances/outputs/bottle/index.html | 442 +++++++++++++-------------- glances/outputs/static/css/style.css | 33 +- 2 files changed, 232 insertions(+), 243 deletions(-) diff --git a/glances/outputs/bottle/index.html b/glances/outputs/bottle/index.html index 3142d97c..d5210224 100644 --- a/glances/outputs/bottle/index.html +++ b/glances/outputs/bottle/index.html @@ -2,241 +2,231 @@ - - -Glances - - - - - - + + + Glances + + + + + + -

-
-
-
-
+
Loading...
+
+
+
+
+
+ Refresh time  {{result["system"].hostname}}  +
+
+
+
+ Uptime: {{result["uptime"]}} +
+
+
+
-
- Refresh time  {{result["system"].hostname}}  -
+
+
+
+
+
+
CPU
+
{{result["cpu"].total}}%
+
+
+
user:
+
+ {{result["cpu"].user}}% +
+
+
+
system:
+
+ {{result["cpu"].system}}% +
+
+
+
idle:
+
{{result["cpu"].idle}}%
+
+
+
+
+
+
+
+
+
+
MEM
+
{{result["mem"].percent}}%
+
+
+
total:
+
{{result["mem"].total | bytes:2}}
+
+
+
used:
+
+ {{result["mem"].used | bytes:2}} +
+
+
+
free:
+
{{result["mem"].free | bytes:2}}
+
+
+
+
+
+
+
+
+
SWAP
+
{{result["memswap"].percent}}%
+
+
+
total:
+
{{result["memswap"].total | bytes:2}}
+
+
+
used:
+
+ {{result["memswap"].used | bytes:2}} +
+
+
+
free:
+
{{result["memswap"].free | bytes:2}}
+
+
+
+
+
+
+
+
+
+
+
NETWORK
+
Rx/s
+
Tx/s
+
+
+
{{network.interface_name | min_size}}
+
{{network.rx | bytes}}
+
{{network.tx | bytes}}
+
+
+
-
-
-
- Uptime: {{result["uptime"]}} -
-
-
-
+
+
+
+
DISK I/O
+
R/s
+
W/s
+
+
+
{{disk.disk_name | min_size}}
+
{{disk.read_bytes | bytes}}
+
{{disk.write_bytes | bytes}}
+
+
+
+
+
+
+
FILE SYS
+
Used
+
Total
+
+
+
{{fs.mnt_point}} ({{fs.device_name}})
+
+ {{fs.size - fs.free | bytes}} +
+
{{fs.size | bytes}}
+
+
+
+ +
+
+
+
+
+
No warning or critical alert detected
+
{{alert}}
+
+
+
-
-
-
- - - - - - - - - - - - - - - - - - - -
CPU{{result["cpu"].total}}%
user:{{result["cpu"].user}}%
system:{{result["cpu"].system}}%
idle:{{result["cpu"].idle}}%
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - -
MEM{{result["mem"].percent}}%
total:{{result["mem"].total | bytes:2}}
used:{{result["mem"].used | bytes:2}}
free:{{result["mem"].free | bytes:2}}
-
-
-
-
- - - - - - - - - - - - - - - - - - - -
SWAP{{result["memswap"].percent}}%
total:{{result["memswap"].total | bytes:2}}
used:{{result["memswap"].used | bytes:2}}
free:{{result["memswap"].free | bytes:2}}
-
-
-
-
-
-
- - - - - - - - - - - - - -
NETWORKRx/sTx/s
{{network.interface_name | min_size}}{{network.rx | bytes}}{{network.tx | bytes}}
-
+
+ TASKS {{result["processcount"].total}} ({{result["processcount"].thread}} thr), {{result["processcount"].running}} run, + {{result["processcount"].sleeping}} slp, {{result["processcount"].stopped}} oth sorted automatically by cpu_percent, flat view +
-
- - - - - - - - - - - - - -
DISK I/OR/sW/s
{{disk.disk_name | min_size}}{{disk.read_bytes | bytes}}{{disk.write_bytes | bytes}}
-
-
- - - - - - - - - - - - - -
FILE SYSUsedTotal
{{fs.mnt_point}} ({{fs.device_name}}){{fs.size - fs.free | bytes}}{{fs.size | bytes}}
-
- -
-
-
- - - - - - - -
No warning or critical alert detected{{alert}}
-
+
+
+
-
- TASKS {{result["processcount"].total}} ({{result["processcount"].thread}} thr), {{result["processcount"].running}} run, - {{result["processcount"].sleeping}} slp, {{result["processcount"].stopped}} oth sorted automatically by cpu_percent, flat view -
+ -
-
-
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CPU%MEM%PIDUSERNISCommand
{{process.cpu_percent | number:1}}{{process.memory_percent | number:1}}{{process.pid}}{{process.username}}{{process.nice | exclamation}}{{process.status}}{{process.name}}
-
-
-
-
+
+
+
+
CPU%
+
MEM%
+
VIRT
+
RES
+
PID
+
USER
+
NI
+
S
+
TIME+
+
IOR/s
+
IOW/s
+
Command
+
+
+
{{process.cpu_percent | number:1}}
+
{{process.memory_percent | number:1}}
+ + +
{{process.pid}}
+
{{process.username}}
+
{{process.nice | exclamation}}
+
{{process.status}}
+ + + +
{{process.name}}
+
+
+
+
+
+
diff --git a/glances/outputs/static/css/style.css b/glances/outputs/static/css/style.css index 3fcd08d5..cca59ef4 100644 --- a/glances/outputs/static/css/style.css +++ b/glances/outputs/static/css/style.css @@ -3,16 +3,23 @@ body { color: #BBB; font-family: "Lucida Sans Typewriter", "Lucida Console", Monaco, "Bitstream Vera Sans Mono", monospace; } -.plugin { - margin-bottom: 20px; -} -.plugin table { + +.table { + display: table; width: 100%; } -.plugin table tr td:not(:first-child) { +.table-row { + display: table-row; +} +.table-cell { + display: table-cell; text-align: right; } +.plugin { + margin-bottom: 20px; +} + .underline{ text-decoration: underline } @@ -28,6 +35,9 @@ body { .text-right { text-align: right; } +.text-left { + text-align: left; +} /* Theme */ @@ -77,18 +87,7 @@ body { } /* Plugins */ -#cpu table tr td:nth-child(3), -#mem table tr td:nth-child(3), -#monitor table tr td:nth-child(3) { - text-align: left; - padding-left: 20px; -} -#processlist table tr td { +#processlist .table-cell { padding: 0px 5px 0px 5px; white-space: nowrap; - text-align: right; -} -#processlist table tr td:nth-child(6), -#processlist table tr td:nth-child(12) { - text-align: left; } \ No newline at end of file From ef142bd9809f3943586b2b6445678828c61e8835 Mon Sep 17 00:00:00 2001 From: nclsHart Date: Wed, 14 Jan 2015 23:16:34 +0100 Subject: [PATCH 44/90] convert indent to spaces --- glances/outputs/bottle/index.html | 272 +++++++++++++++--------------- 1 file changed, 136 insertions(+), 136 deletions(-) diff --git a/glances/outputs/bottle/index.html b/glances/outputs/bottle/index.html index d5210224..2dba116b 100644 --- a/glances/outputs/bottle/index.html +++ b/glances/outputs/bottle/index.html @@ -39,146 +39,146 @@
-
-
CPU
-
{{result["cpu"].total}}%
-
-
-
user:
-
- {{result["cpu"].user}}% -
-
-
-
system:
-
- {{result["cpu"].system}}% -
-
-
-
idle:
-
{{result["cpu"].idle}}%
-
-
+
+
CPU
+
{{result["cpu"].total}}%
+
+
+
user:
+
+ {{result["cpu"].user}}% +
+
+
+
system:
+
+ {{result["cpu"].system}}% +
+
+
+
idle:
+
{{result["cpu"].idle}}%
+
+
-
-
MEM
-
{{result["mem"].percent}}%
-
-
-
total:
-
{{result["mem"].total | bytes:2}}
-
-
-
used:
-
- {{result["mem"].used | bytes:2}} -
-
-
-
free:
-
{{result["mem"].free | bytes:2}}
-
-
+
+
MEM
+
{{result["mem"].percent}}%
+
+
+
total:
+
{{result["mem"].total | bytes:2}}
+
+
+
used:
+
+ {{result["mem"].used | bytes:2}} +
+
+
+
free:
+
{{result["mem"].free | bytes:2}}
+
+
-
-
-
SWAP
-
{{result["memswap"].percent}}%
-
-
-
total:
-
{{result["memswap"].total | bytes:2}}
-
-
-
used:
-
- {{result["memswap"].used | bytes:2}} -
-
-
-
free:
-
{{result["memswap"].free | bytes:2}}
-
-
+
+
+
SWAP
+
{{result["memswap"].percent}}%
+
+
+
total:
+
{{result["memswap"].total | bytes:2}}
+
+
+
used:
+
+ {{result["memswap"].used | bytes:2}} +
+
+
+
free:
+
{{result["memswap"].free | bytes:2}}
+
+
-
-
-
NETWORK
-
Rx/s
-
Tx/s
-
-
-
{{network.interface_name | min_size}}
-
{{network.rx | bytes}}
-
{{network.tx | bytes}}
-
-
+
+
+
NETWORK
+
Rx/s
+
Tx/s
+
+
+
{{network.interface_name | min_size}}
+
{{network.rx | bytes}}
+
{{network.tx | bytes}}
+
+
-
-
-
DISK I/O
-
R/s
-
W/s
-
-
-
{{disk.disk_name | min_size}}
-
{{disk.read_bytes | bytes}}
-
{{disk.write_bytes | bytes}}
-
+
+
+
DISK I/O
+
R/s
+
W/s
+
+
+
{{disk.disk_name | min_size}}
+
{{disk.read_bytes | bytes}}
+
{{disk.write_bytes | bytes}}
+
-
-
-
FILE SYS
-
Used
-
Total
-
-
-
{{fs.mnt_point}} ({{fs.device_name}})
-
- {{fs.size - fs.free | bytes}} -
-
{{fs.size | bytes}}
-
+
+
+
FILE SYS
+
Used
+
Total
+
+
+
{{fs.mnt_point}} ({{fs.device_name}})
+
+ {{fs.size - fs.free | bytes}} +
+
{{fs.size | bytes}}
+
-
-
-
No warning or critical alert detected
-
{{alert}}
-
+
+
+
No warning or critical alert detected
+
{{alert}}
+
@@ -194,35 +194,35 @@
-
-
-
CPU%
-
MEM%
-
VIRT
-
RES
-
PID
-
USER
-
NI
-
S
-
TIME+
-
IOR/s
-
IOW/s
-
Command
-
-
-
{{process.cpu_percent | number:1}}
-
{{process.memory_percent | number:1}}
- - -
{{process.pid}}
-
{{process.username}}
-
{{process.nice | exclamation}}
-
{{process.status}}
- - - -
{{process.name}}
-
+
+
+
CPU%
+
MEM%
+
VIRT
+
RES
+
PID
+
USER
+
NI
+
S
+
TIME+
+
IOR/s
+
IOW/s
+
Command
+
+
+
{{process.cpu_percent | number:1}}
+
{{process.memory_percent | number:1}}
+ + +
{{process.pid}}
+
{{process.username}}
+
{{process.nice | exclamation}}
+
{{process.status}}
+ + + +
{{process.name}}
+
From cb398d62b5195d612346f83044996d952d4e4867 Mon Sep 17 00:00:00 2001 From: Sylvain MOUQUET Date: Sat, 17 Jan 2015 13:38:29 +0100 Subject: [PATCH 45/90] add show/hide --- glances/outputs/bottle/index.html | 448 ++++++++++++----------- glances/outputs/static/js/app.js | 1 + glances/outputs/static/js/controllers.js | 115 +++++- glances/outputs/static/js/variables.js | 29 ++ 4 files changed, 370 insertions(+), 223 deletions(-) create mode 100644 glances/outputs/static/js/app.js create mode 100644 glances/outputs/static/js/variables.js diff --git a/glances/outputs/bottle/index.html b/glances/outputs/bottle/index.html index 2dba116b..76e24041 100644 --- a/glances/outputs/bottle/index.html +++ b/glances/outputs/bottle/index.html @@ -2,231 +2,245 @@ - - - Glances - - - - - - + + +Glances + + + + + + + + - + -
Loading...
-
-
-
-
-
- Refresh time  {{result["system"].hostname}}  -
-
-
-
- Uptime: {{result["uptime"]}} -
-
-
-
+
Loading...
+
+
+
+
-
-
-
-
-
-
CPU
-
{{result["cpu"].total}}%
-
-
-
user:
-
- {{result["cpu"].user}}% -
-
-
-
system:
-
- {{result["cpu"].system}}% -
-
-
-
idle:
-
{{result["cpu"].idle}}%
-
-
-
-
-
-
-
-
-
-
MEM
-
{{result["mem"].percent}}%
-
-
-
total:
-
{{result["mem"].total | bytes:2}}
-
-
-
used:
-
- {{result["mem"].used | bytes:2}} -
-
-
-
free:
-
{{result["mem"].free | bytes:2}}
-
-
-
-
-
-
-
-
-
SWAP
-
{{result["memswap"].percent}}%
-
-
-
total:
-
{{result["memswap"].total | bytes:2}}
-
-
-
used:
-
- {{result["memswap"].used | bytes:2}} -
-
-
-
free:
-
{{result["memswap"].free | bytes:2}}
-
-
-
-
-
-
-
-
-
-
-
NETWORK
-
Rx/s
-
Tx/s
-
-
-
{{network.interface_name | min_size}}
-
{{network.rx | bytes}}
-
{{network.tx | bytes}}
-
-
-
+
+ Refresh time  {{result["system"].hostname}}  +
-
-
-
-
DISK I/O
-
R/s
-
W/s
-
-
-
{{disk.disk_name | min_size}}
-
{{disk.read_bytes | bytes}}
-
{{disk.write_bytes | bytes}}
-
-
-
-
-
-
-
FILE SYS
-
Used
-
Total
-
-
-
{{fs.mnt_point}} ({{fs.device_name}})
-
- {{fs.size - fs.free | bytes}} -
-
{{fs.size | bytes}}
-
-
-
- -
-
-
-
-
-
No warning or critical alert detected
-
{{alert}}
-
-
-
+
+
+
+ Uptime: {{result["uptime"]}} +
+
+
+
-
- TASKS {{result["processcount"].total}} ({{result["processcount"].thread}} thr), {{result["processcount"].running}} run, - {{result["processcount"].sleeping}} slp, {{result["processcount"].stopped}} oth sorted automatically by cpu_percent, flat view -
+
+
+
+ + + + + + + + + + + + + + + + + + + +
CPU{{result["cpu"].total}}%
user:{{result["cpu"].user}}%
system:{{result["cpu"].system}}%
idle:{{result["cpu"].idle}}%
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + +
MEM{{result["mem"].percent}}%
total:{{result["mem"].total | bytes:2}}
used:{{result["mem"].used | bytes:2}}
free:{{result["mem"].free | bytes:2}}
+
+
+
+
+ + + + + + + + + + + + + + + + + + + +
SWAP{{result["memswap"].percent}}%
total:{{result["memswap"].total | bytes:2}}
used:{{result["memswap"].used | bytes:2}}
free:{{result["memswap"].free | bytes:2}}
+
+
+
+
+
+
+ + + + + + + + + + + + + + + +
NETWORKRx/sTx/s
{{network.interface_name | min_size}}}{{network.rx | bytes}}{{network.rx | bytes}}{{network.rx | bits}}{{network.rx | bits}}
+
-
-
-
+
+ + + + + + + + + + + + + +
DISK I/OR/sW/s
{{disk.disk_name | min_size}}{{disk.read_bytes | bytes}}{{disk.write_bytes | bytes}}
+
+
+ + + + + + + + + + + + + +
FILE SYSUsedTotal
{{fs.mnt_point}} ({{fs.device_name}}){{fs.size - fs.free | bytes}}{{fs.size | bytes}}
+
+ +
+ + + + + + + + + +
TODO
+
+ +
+
+
+ + + + + + + +
No warning or critical alert detected{{alert}}
+
- +
+ TASKS {{result["processcount"].total}} ({{result["processcount"].thread}} thr), {{result["processcount"].running}} run, + {{result["processcount"].sleeping}} slp, {{result["processcount"].stopped}} oth +
-
-
-
-
CPU%
-
MEM%
-
VIRT
-
RES
-
PID
-
USER
-
NI
-
S
-
TIME+
-
IOR/s
-
IOW/s
-
Command
-
-
-
{{process.cpu_percent | number:1}}
-
{{process.memory_percent | number:1}}
- - -
{{process.pid}}
-
{{process.username}}
-
{{process.nice | exclamation}}
-
{{process.status}}
- - - -
{{process.name}}
-
-
-
-
-
-
+
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CPU%MEM%PIDUSERNISCommand
{{process.cpu_percent | number:1}}{{process.memory_percent | number:1}}{{process.pid}}{{process.username}}{{process.nice | exclamation}}{{process.status}}{{process.name}}
+
+
+
+
diff --git a/glances/outputs/static/js/app.js b/glances/outputs/static/js/app.js new file mode 100644 index 00000000..ba6acd38 --- /dev/null +++ b/glances/outputs/static/js/app.js @@ -0,0 +1 @@ +var glancesApp = angular.module('glancesApp', []); diff --git a/glances/outputs/static/js/controllers.js b/glances/outputs/static/js/controllers.js index d3d9cd81..f7f25167 100644 --- a/glances/outputs/static/js/controllers.js +++ b/glances/outputs/static/js/controllers.js @@ -1,5 +1,3 @@ -var glancesApp = angular.module('glancesApp', []); - glancesApp.filter('min_size', function() { return function(input) { var max = 8; @@ -18,30 +16,77 @@ glancesApp.filter('exclamation', function() { }; }); + /** * Fork from https://gist.github.com/thomseddon/3511330 *   => \u00A0 * WARNING : kilobyte (kB) != kibibyte (KiB) (more info here : http://en.wikipedia.org/wiki/Byte ) **/ glancesApp.filter('bytes', function() { - return function(bytes, precision) { - if (isNaN(parseFloat(bytes)) || !isFinite(bytes) || bytes == 0) return '0B'; + return function (bytes, precision) { + if (isNaN(parseFloat(bytes)) || !isFinite(bytes) || bytes == 0){ + return '0B'; + } var units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB'], - number = Math.floor(Math.log(bytes) / Math.log(1000)); + number = Math.floor(Math.log(bytes) / Math.log(1000)); return (bytes / Math.pow(1000, Math.floor(number))).toFixed(precision) + units[number]; } }); +glancesApp.filter('bits', function() { + return function (bits, precision) { + if (isNaN(parseFloat(bits)) || !isFinite(bits) || bits == 0){ + return '0bit'; + } + var units = ['bit', 'kbit', 'Mbit', 'Gbit', 'Tbit', 'Pbit'], + number = Math.floor(Math.log(bits) / Math.log(1000)); + return (bits / Math.pow(1000, Math.floor(number))).toFixed(precision) + units[number]; + } +}); glancesApp.controller('bodyController', [ '$scope', '$http', '$interval', '$q', function($scope, $http, $interval, $q) { $scope.limitSuffix = ['critical', 'careful', 'warning'] $scope.refreshTime = 3 $scope.pluginLimits = [] + $scope.sortColumn = 'cpu_percent' + $scope.sortOrderAsc = false + $scope.lastSortColumn = '#column_' + $scope.sortColumn + $scope.show = { + 'diskio' : true, + 'network' : true, + 'fs' : true, + 'sensors' : true, + 'sidebar' : true, + 'alert' : true + } + $scope.networkSortByBytes = false $scope.initLimits = function() { $scope.pluginsList(); } + $scope.showHide = function(bloc) { + $scope.show[bloc] = !$scope.show[bloc] + } + + $scope.sortBy = function(column) { + angular.element(document.querySelector($scope.lastSortColumn)).removeClass('sort sort_asc sort_desc') + + if ($scope.sortColumn == column) { + $scope.sortOrderAsc = !$scope.sortOrderAsc + if ($scope.sortOrderAsc) { + angular.element(document.querySelector($scope.lastSortColumn)).addClass('sort sort_asc') + } else { + angular.element(document.querySelector($scope.lastSortColumn)).addClass('sort sort_desc') + } + } else { + $scope.sortColumn = column + $scope.sortOrderAsc = false + $scope.lastSortColumn = '#column_' + $scope.sortColumn + angular.element(document.querySelector($scope.lastSortColumn)).addClass('sort sort_desc') + } + } + $scope.pluginsList = function() { $http.get('/api/2/pluginslist').success(function(d, status, headers, config) { $scope.plugins = d; @@ -171,5 +216,63 @@ glancesApp.controller('bodyController', [ '$scope', '$http', '$interval', '$q', // Make sure that the interval is destroyed too $scope.stopRefresh(); }); - + + $scope.onKeyDown = function($event) { + console.log($event) + if ($event.keyCode == keycodes.a) { // a Sort processes automatically + $scope.sortBy('') + } else if ($event.keyCode == keycodes.c) {//c Sort processes by CPU% + $scope.sortBy('cpu_percent') + } else if ($event.keyCode == keycodes.m) {//m Sort processes by MEM% + $scope.sortBy('memory_percent') + } else if ($event.keyCode == keycodes.p) {//p Sort processes by name + $scope.sortBy('name') + } else if ($event.keyCode == keycodes.i) {//i Sort processes by I/O rate + $scope.sortBy('io_read') + } else if ($event.keyCode == keycodes.t) {//t Sort processes by CPU times + $scope.sortBy('timemillis') + } else if ($event.keyCode == keycodes.d) {//d Show/hide disk I/O stats + $scope.showHide('diskio') + } else if ($event.keyCode == keycodes.f) {//f Show/hide filesystem stats + $scope.showHide('fs') + } else if ($event.keyCode == keycodes.n) {//n Show/hide network stats + $scope.showHide('network') + } else if ($event.keyCode == keycodes.s) {//s Show/hide sensors stats + $scope.showHide('sensors') + } else if ($event.keyCode == keycodes.TWO) {//2 Show/hide left sidebar + $scope.showHide('sidebar') + } else if ($event.keyCode == keycodes.z) {//z Enable/disable processes stats + //$scope.enableDisable('processStats') + } else if ($event.keyCode == keycodes.e) {//e Enable/disable top extended stats + //$scope.sortBy('') + } else if ($event.keyCode == keycodes.SLASH) {// SLASH Enable/disable short processes name + //$scope.sortBy('') + } else if ($event.keyCode == keycodes.D) {//D Enable/disable Docker stats + //$scope.sortBy('') + } else if ($event.keyCode == keycodes.b) {//b Bytes or bits for network I/O + $scope.networkSortByBytes = !$scope.networkSortByBytes + } else if ($event.keyCode == keycodes.l) {//l Show/hide alert logs + $scope.showHide('alert') + } else if ($event.keyCode == keycodes.w) {//w Delete warning alerts + //$scope.sortBy('') + } else if ($event.keyCode == keycodes.x) {//x Delete warning and critical alerts + //$scope.sortBy('') + } else if ($event.keyCode == keycodes.ONE) {//1 Global CPU or per-CPU stats + //$scope.sortBy('') + } else if ($event.keyCode == keycodes.h) {//h Show/hide this help screen + //$scope.sortBy('') + } else if ($event.keyCode == keycodes.T) {//T View network I/O as combination + //$scope.sortBy('') + } else if ($event.keyCode == keycodes.u) {//u View cumulative network I/O + //$scope.sortBy('') + } else if ($event.keyCode == keycodes.F) {//F Show filesystem free space + //$scope.sortBy('') + } else if ($event.keyCode == keycodes.g) {//g Generate graphs for current history + //$scope.sortBy('') + } else if ($event.keyCode == keycodes.r) {//r Reset history + //$scope.sortBy('') + } else if ($event.keyCode == keycodes.q) {//q Quit (Esc and Ctrl-C also work) + //$scope.sortBy('') + } + } } ]); \ No newline at end of file diff --git a/glances/outputs/static/js/variables.js b/glances/outputs/static/js/variables.js new file mode 100644 index 00000000..de4513cd --- /dev/null +++ b/glances/outputs/static/js/variables.js @@ -0,0 +1,29 @@ +var keycodes = { + 'a' : '65', + 'c' : '67', + 'm' : '77', + 'p' : '80', + 'i' : '73', + 't' : '84', + 'd' : '68', + 'f' : '70', + 'n' : '78', + 's' : '83', + 'TWO' : '98', + 'z' : '90', + 'e' : '69', + 'SLASH' : '191', + 'D' : '68', + 'b' : '66', + 'l' : '76', + 'w' : '87', + 'x' : '88', + 'ONE' : '97', + 'h' : '72', + 'T' : '84', + 'u' : '', + 'F' : '', + 'g' : '', + 'r' : '', + 'q' : '' +} \ No newline at end of file From 5dee3758f148e0755d0e29048dc8a5b868fa3a1b Mon Sep 17 00:00:00 2001 From: Sylvain MOUQUET Date: Sat, 17 Jan 2015 13:54:35 +0100 Subject: [PATCH 46/90] add sensors --- glances/outputs/bottle/index.html | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/glances/outputs/bottle/index.html b/glances/outputs/bottle/index.html index 76e24041..773bfc31 100644 --- a/glances/outputs/bottle/index.html +++ b/glances/outputs/bottle/index.html @@ -172,10 +172,12 @@ - + + - + +
SENSORS°C
TODO{{sensor.label}}{{sensor.value}}
From a7e17083b75765a4b8921a8dff43d6b98b7f2123 Mon Sep 17 00:00:00 2001 From: Sylvain MOUQUET Date: Sat, 17 Jan 2015 15:16:12 +0100 Subject: [PATCH 47/90] add mod debug for angularjs --- glances/outputs/bottle/debug.html | 21 ++++++++++++++++ glances/outputs/bottle/index.html | 8 +++--- glances/outputs/glances_bottle.py | 32 +++++++++++++++--------- glances/outputs/static/js/controllers.js | 2 +- 4 files changed, 46 insertions(+), 17 deletions(-) create mode 100644 glances/outputs/bottle/debug.html diff --git a/glances/outputs/bottle/debug.html b/glances/outputs/bottle/debug.html new file mode 100644 index 00000000..1f0cf2f6 --- /dev/null +++ b/glances/outputs/bottle/debug.html @@ -0,0 +1,21 @@ + + + + + + + INSERT YOUR JSON :
+ + + + + + + + \ No newline at end of file diff --git a/glances/outputs/bottle/index.html b/glances/outputs/bottle/index.html index 773bfc31..7f8d17cc 100644 --- a/glances/outputs/bottle/index.html +++ b/glances/outputs/bottle/index.html @@ -25,7 +25,7 @@
Refresh time  {{result["system"].hostname}} 
@@ -168,16 +168,16 @@ -
+
- + - +
SENSORS°C°C
{{sensor.label}}{{sensor.value}}{{sensor.value}}
diff --git a/glances/outputs/glances_bottle.py b/glances/outputs/glances_bottle.py index 64e09659..4138a8bc 100644 --- a/glances/outputs/glances_bottle.py +++ b/glances/outputs/glances_bottle.py @@ -16,17 +16,18 @@ # # You should have received a copy of the GNU Lesser General Public License # along with this program. If not, see . - """Web interface class.""" +# Import Glances libs +# Import mandatory Bottle lib import json import os import sys -# Import Glances libs +from glances.core.glances_globals import is_windows from glances.core.glances_logging import logger -# Import mandatory Bottle lib + try: from bottle import Bottle, template, static_file, TEMPLATE_PATH, abort, response except ImportError: @@ -137,15 +138,22 @@ class GlancesBottle(object): """ response.content_type = 'application/json' - # Update the stat - self.stats.update() - - try: - # Get the JSON value of the stat ID - statval = json.dumps(self.stats.getAllAsDict()) - except Exception as e: - abort(404, "Cannot get stats (%s)" % str(e)) - return statval + if not self.args.debug: + # Update the stat + self.stats.update() + + try: + # Get the JSON value of the stat ID + statval = json.dumps(self.stats.getAllAsDict()) + except Exception as e: + abort(404, "Cannot get stats (%s)" % str(e)) + return statval + else: + path = "~/glances/" + if is_windows: + path = "D:\\glances\\" + f = open(path + "debug.json") + return f.read() def _api(self, plugin): """ diff --git a/glances/outputs/static/js/controllers.js b/glances/outputs/static/js/controllers.js index f7f25167..c0673477 100644 --- a/glances/outputs/static/js/controllers.js +++ b/glances/outputs/static/js/controllers.js @@ -167,7 +167,7 @@ glancesApp.controller('bodyController', [ '$scope', '$http', '$interval', '$q', var limitName = limitNamePrefix + $scope.limitSuffix[i] var limit = $scope.pluginLimits[pluginName][limitName] - if (value > limit) { + if (value >= limit) { //console.log("value = " + value + " - limit = " + limit) var pos = limitName.lastIndexOf("_") var className = limitName.substring(pos + 1) From fee8c06d28ab4b4f335ce4ad6f2a7c676fff95d4 Mon Sep 17 00:00:00 2001 From: Sylvain MOUQUET Date: Sat, 17 Jan 2015 16:19:05 +0100 Subject: [PATCH 48/90] remove debug.html --- glances/outputs/bottle/debug.html | 21 --------------------- glances/outputs/bottle/index.html | 2 -- glances/outputs/static/js/app.js | 8 ++++++++ glances/outputs/static/js/controllers.js | 19 +++++++++++++++++-- 4 files changed, 25 insertions(+), 25 deletions(-) delete mode 100644 glances/outputs/bottle/debug.html diff --git a/glances/outputs/bottle/debug.html b/glances/outputs/bottle/debug.html deleted file mode 100644 index 1f0cf2f6..00000000 --- a/glances/outputs/bottle/debug.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - INSERT YOUR JSON :
- - - - - - - - \ No newline at end of file diff --git a/glances/outputs/bottle/index.html b/glances/outputs/bottle/index.html index 7f8d17cc..cf26e4d5 100644 --- a/glances/outputs/bottle/index.html +++ b/glances/outputs/bottle/index.html @@ -205,8 +205,6 @@
- -
diff --git a/glances/outputs/static/js/app.js b/glances/outputs/static/js/app.js index ba6acd38..2dd90bab 100644 --- a/glances/outputs/static/js/app.js +++ b/glances/outputs/static/js/app.js @@ -1 +1,9 @@ var glancesApp = angular.module('glancesApp', []); + +/* +glancesApp.config([ '$routeProvider', function($routeProvider) { + $routeProvider.when('/:refresh_time', { + templateUrl : 'index.html', + controller : 'GlancesStatsController' + }); +} ]);*/ \ No newline at end of file diff --git a/glances/outputs/static/js/controllers.js b/glances/outputs/static/js/controllers.js index c0673477..778fbb52 100644 --- a/glances/outputs/static/js/controllers.js +++ b/glances/outputs/static/js/controllers.js @@ -43,7 +43,7 @@ glancesApp.filter('bits', function() { } }); -glancesApp.controller('bodyController', [ '$scope', '$http', '$interval', '$q', function($scope, $http, $interval, $q) { +glancesApp.controller('bodyController', [ '$scope', '$http', '$interval', '$q', function($scope, $http, $interval, $q) { //$routeParams $scope.limitSuffix = ['critical', 'careful', 'warning'] $scope.refreshTime = 3 @@ -60,6 +60,17 @@ glancesApp.controller('bodyController', [ '$scope', '$http', '$interval', '$q', 'alert' : true } $scope.networkSortByBytes = false + + /* + $scope.init_refresh_time = function() { + if ($routeParams != undefined && $routeParams.refresh_time != undefined) { + var new_refresh_time = parseInt($routeParams.refresh_time) + if (new_refres_time >= 1) { + $scope.refreshTime = new_refres_time + } + } + }*/ + $scope.initLimits = function() { $scope.pluginsList(); @@ -70,6 +81,9 @@ glancesApp.controller('bodyController', [ '$scope', '$http', '$interval', '$q', } $scope.sortBy = function(column) { + if (column == undefined) { + // sort automatically + } angular.element(document.querySelector($scope.lastSortColumn)).removeClass('sort sort_asc sort_desc') if ($scope.sortColumn == column) { @@ -185,6 +199,7 @@ glancesApp.controller('bodyController', [ '$scope', '$http', '$interval', '$q', return "ok"; } + //$scope.init_refresh_time(); $scope.initLimits(); var stop; @@ -220,7 +235,7 @@ glancesApp.controller('bodyController', [ '$scope', '$http', '$interval', '$q', $scope.onKeyDown = function($event) { console.log($event) if ($event.keyCode == keycodes.a) { // a Sort processes automatically - $scope.sortBy('') + $scope.sortBy() } else if ($event.keyCode == keycodes.c) {//c Sort processes by CPU% $scope.sortBy('cpu_percent') } else if ($event.keyCode == keycodes.m) {//m Sort processes by MEM% From bcd76e55362febd16e15a6882a103fe459bd664f Mon Sep 17 00:00:00 2001 From: Sylvain MOUQUET Date: Sat, 17 Jan 2015 17:18:40 +0100 Subject: [PATCH 49/90] fix merge div/table --- glances/outputs/bottle/index.html | 452 +++++++++++------------ glances/outputs/glances_bottle.py | 14 +- glances/outputs/static/css/style.css | 5 +- glances/outputs/static/js/controllers.js | 9 +- 4 files changed, 239 insertions(+), 241 deletions(-) diff --git a/glances/outputs/bottle/index.html b/glances/outputs/bottle/index.html index cf26e4d5..8aee53a1 100644 --- a/glances/outputs/bottle/index.html +++ b/glances/outputs/bottle/index.html @@ -2,245 +2,233 @@ - - -Glances - - - - - - - - + + + Glances + + + + + + + + - + -
Loading...
-
-
-
-
+
Loading...
+
+
+
+
+
+ Refresh time  {{result["system"].hostname}}  +
+
+
+
+ Uptime: {{result["uptime"]}} +
+
+
+
-
- Refresh time  {{result["system"].hostname}}  -
+
+
+
+
+
+
CPU
+
{{result["cpu"].total}}%
+
+
+
user:
+
+ {{result["cpu"].user}}% +
+
+
+
system:
+
+ {{result["cpu"].system}}% +
+
+
+
idle:
+
{{result["cpu"].idle}}%
+
+
+
+
+
+
+
+
+
+
MEM
+
{{result["mem"].percent}}%
+
+
+
total:
+
{{result["mem"].total | bytes:2}}
+
+
+
used:
+
+ {{result["mem"].used | bytes:2}} +
+
+
+
free:
+
{{result["mem"].free | bytes:2}}
+
+
+
+
+
+
+
+
+
SWAP
+
{{result["memswap"].percent}}%
+
+
+
total:
+
{{result["memswap"].total | bytes:2}}
+
+
+
used:
+
+ {{result["memswap"].used | bytes:2}} +
+
+
+
free:
+
{{result["memswap"].free | bytes:2}}
+
+
+
+
+
+
+
+
+
+
+
NETWORK
+
Rx/s
+
Tx/s
+
+
+
{{network.interface_name | min_size}}
+
{{network.rx | bytes}}
+
{{network.tx | bytes}}
+
+
+
-
-
-
- Uptime: {{result["uptime"]}} -
-
-
-
+
+
+
+
DISK I/O
+
R/s
+
W/s
+
+
+
{{disk.disk_name | min_size}}
+
{{disk.read_bytes | bytes}}
+
{{disk.write_bytes | bytes}}
+
+
+
+
+
+
+
FILE SYS
+
Used
+
Total
+
+
+
{{fs.mnt_point}} ({{fs.device_name}})
+
+ {{fs.size - fs.free | bytes}} +
+
{{fs.size | bytes}}
+
+
+
+
+
+
+
SENSORS
+
°C
+
+
+
{{sensor.label}} +
{{sensor.value}} +
+
+
+
+
+
+
+
+
No warning or critical alert detected
+
{{alert}}
+
+
+
-
-
-
-
- - - - - - - - - - - - - - - - - - -
CPU{{result["cpu"].total}}%
user:{{result["cpu"].user}}%
system:{{result["cpu"].system}}%
idle:{{result["cpu"].idle}}%
-
- -
-
-
- - - - - - - - - - - - - - - - - - - -
MEM{{result["mem"].percent}}%
total:{{result["mem"].total | bytes:2}}
used:{{result["mem"].used | bytes:2}}
free:{{result["mem"].free | bytes:2}}
-
-
-
-
- - - - - - - - - - - - - - - - - - - -
SWAP{{result["memswap"].percent}}%
total:{{result["memswap"].total | bytes:2}}
used:{{result["memswap"].used | bytes:2}}
free:{{result["memswap"].free | bytes:2}}
-
-
- -
-
-
- - - - - - - - - - - - - - - -
NETWORKRx/sTx/s
{{network.interface_name | min_size}}}{{network.rx | bytes}}{{network.rx | bytes}}{{network.rx | bits}}{{network.rx | bits}}
-
+
+ TASKS {{result["processcount"].total}} ({{result["processcount"].thread}} thr), {{result["processcount"].running}} run, + {{result["processcount"].sleeping}} slp, {{result["processcount"].stopped}} oth sorted automatically by cpu_percent, flat view +
-
- - - - - - - - - - - - - -
DISK I/OR/sW/s
{{disk.disk_name | min_size}}{{disk.read_bytes | bytes}}{{disk.write_bytes | bytes}}
-
-
- - - - - - - - - - - - - -
FILE SYSUsedTotal
{{fs.mnt_point}} ({{fs.device_name}}){{fs.size - fs.free | bytes}}{{fs.size | bytes}}
-
- -
- - - - - - - - - - - -
SENSORS°C
{{sensor.label}}{{sensor.value}}
-
- -
-
-
- - - - - - - -
No warning or critical alert detected{{alert}}
-
+
+
+
-
- TASKS {{result["processcount"].total}} ({{result["processcount"].thread}} thr), {{result["processcount"].running}} run, - {{result["processcount"].sleeping}} slp, {{result["processcount"].stopped}} oth -
+ -
-
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CPU%MEM%PIDUSERNISCommand
{{process.cpu_percent | number:1}}{{process.memory_percent | number:1}}{{process.pid}}{{process.username}}{{process.nice | exclamation}}{{process.status}}{{process.name}}
-
-
-
- +
+
+
+
CPU%
+
MEM%
+ + +
PID
+
USER
+
NI
+
S
+ + + +
Command
+
+
+
{{process.cpu_percent | number:1}}
+
{{process.memory_percent | number:1}}
+ + +
{{process.pid}}
+
{{process.username}}
+
{{process.nice | exclamation}}
+
{{process.status}}
+ + + +
{{process.name}}
+
+
+
+ + + - + \ No newline at end of file diff --git a/glances/outputs/glances_bottle.py b/glances/outputs/glances_bottle.py index 4138a8bc..4f17ad61 100644 --- a/glances/outputs/glances_bottle.py +++ b/glances/outputs/glances_bottle.py @@ -150,10 +150,18 @@ class GlancesBottle(object): return statval else: path = "~/glances/" - if is_windows: + if is_windows: path = "D:\\glances\\" - f = open(path + "debug.json") - return f.read() + filepath = path + "debug.json" + + if os.path.exists(filepath): + logger.debug("File exists : {0}.".format(filepath)) + + f = open(path + "debug.json") + return f.read() + + logger.warn("File does not exist : {0}.".format(filepath)) + return "" def _api(self, plugin): """ diff --git a/glances/outputs/static/css/style.css b/glances/outputs/static/css/style.css index cca59ef4..130bdb1c 100644 --- a/glances/outputs/static/css/style.css +++ b/glances/outputs/static/css/style.css @@ -29,7 +29,10 @@ body { .sort{ font-weight: bold; } -.sort:after{ +.sort_asc:after { + content: '\25B2' +} +.sort_desc:after { content: '\25BC' } .text-right { diff --git a/glances/outputs/static/js/controllers.js b/glances/outputs/static/js/controllers.js index 778fbb52..db84e6ef 100644 --- a/glances/outputs/static/js/controllers.js +++ b/glances/outputs/static/js/controllers.js @@ -35,15 +35,15 @@ glancesApp.filter('bytes', function() { glancesApp.filter('bits', function() { return function (bits, precision) { if (isNaN(parseFloat(bits)) || !isFinite(bits) || bits == 0){ - return '0bit'; + return '0b'; } - var units = ['bit', 'kbit', 'Mbit', 'Gbit', 'Tbit', 'Pbit'], + var units = ['b', 'kb', 'Mb', 'Gb', 'Tb', 'Pb'], number = Math.floor(Math.log(bits) / Math.log(1000)); return (bits / Math.pow(1000, Math.floor(number))).toFixed(precision) + units[number]; } }); -glancesApp.controller('bodyController', [ '$scope', '$http', '$interval', '$q', function($scope, $http, $interval, $q) { //$routeParams +glancesApp.controller('bodyController', [ '$scope', '$http', '$interval', '$q', function($scope, $http, $interval, $q) { $scope.limitSuffix = ['critical', 'careful', 'warning'] $scope.refreshTime = 3 @@ -61,8 +61,7 @@ glancesApp.controller('bodyController', [ '$scope', '$http', '$interval', '$q', } $scope.networkSortByBytes = false - /* - $scope.init_refresh_time = function() { + /*$scope.init_refresh_time = function() { if ($routeParams != undefined && $routeParams.refresh_time != undefined) { var new_refresh_time = parseInt($routeParams.refresh_time) if (new_refres_time >= 1) { From d857e5d6627283024b1ac3130c9b29a5bb68ef1c Mon Sep 17 00:00:00 2001 From: Sylvain MOUQUET Date: Sat, 17 Jan 2015 17:20:39 +0100 Subject: [PATCH 50/90] fix merge div/table --- glances/outputs/bottle/index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/glances/outputs/bottle/index.html b/glances/outputs/bottle/index.html index 8aee53a1..7bf2e8c3 100644 --- a/glances/outputs/bottle/index.html +++ b/glances/outputs/bottle/index.html @@ -168,8 +168,8 @@
°C
-
{{sensor.label}} -
{{sensor.value}} +
{{sensor.label}}
+
{{sensor.value}}
From 6c20fff6169df5bbf0c373bcf8be5560ffc92dfb Mon Sep 17 00:00:00 2001 From: Sylvain MOUQUET Date: Sat, 17 Jan 2015 17:25:30 +0100 Subject: [PATCH 51/90] fix merge div/table --- glances/outputs/bottle/index.html | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/glances/outputs/bottle/index.html b/glances/outputs/bottle/index.html index 7bf2e8c3..01cefed8 100644 --- a/glances/outputs/bottle/index.html +++ b/glances/outputs/bottle/index.html @@ -193,25 +193,23 @@
- -
-
CPU%
-
MEM%
- - -
PID
-
USER
-
NI
-
S
- - - -
Command
+
CPU%
+
MEM%
+ + +
PID
+
USER
+
NI
+
S
+ + + +
Command
-
+
{{process.cpu_percent | number:1}}
{{process.memory_percent | number:1}}
From d0b9ff2e2d296c31c57fe89724e0cc6dbe69d391 Mon Sep 17 00:00:00 2001 From: Sylvain MOUQUET Date: Sat, 17 Jan 2015 17:28:47 +0100 Subject: [PATCH 52/90] network bits default format --- glances/outputs/bottle/index.html | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/glances/outputs/bottle/index.html b/glances/outputs/bottle/index.html index 01cefed8..ae555ab5 100644 --- a/glances/outputs/bottle/index.html +++ b/glances/outputs/bottle/index.html @@ -125,8 +125,10 @@
{{network.interface_name | min_size}}
-
{{network.rx | bytes}}
-
{{network.tx | bytes}}
+
{{network.rx | bytes}}
+
{{network.tx | bytes}}
+
{{network.rx | bits}}
+
{{network.tx | bits}}
From 80638434a4fe2b6efa3f8be4ececab20678a6209 Mon Sep 17 00:00:00 2001 From: Sylvain MOUQUET Date: Sat, 17 Jan 2015 17:35:38 +0100 Subject: [PATCH 53/90] fix of the fix --- glances/outputs/bottle/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/glances/outputs/bottle/index.html b/glances/outputs/bottle/index.html index ae555ab5..c6c26902 100644 --- a/glances/outputs/bottle/index.html +++ b/glances/outputs/bottle/index.html @@ -15,7 +15,7 @@ - +
Loading...
From 596800a99c6b455aef01fb766043ed929d65dfd2 Mon Sep 17 00:00:00 2001 From: Sylvain MOUQUET Date: Sun, 18 Jan 2015 14:40:43 +0100 Subject: [PATCH 54/90] plugin load, mem --- glances/outputs/bottle/index.html | 100 +++++++++++++++++++++-- glances/outputs/glances_bottle.py | 12 +-- glances/outputs/static/js/controllers.js | 4 +- glances/outputs/static/js/variables.js | 4 +- 4 files changed, 99 insertions(+), 21 deletions(-) diff --git a/glances/outputs/bottle/index.html b/glances/outputs/bottle/index.html index c6c26902..0a3a320d 100644 --- a/glances/outputs/bottle/index.html +++ b/glances/outputs/bottle/index.html @@ -23,10 +23,12 @@
- Refresh time 
@@ -38,7 +40,7 @@
-
+
@@ -64,8 +66,65 @@
-
-
+
+
+
+
+
nice:
+
+ {{result["cpu"].nice}}% +
+
+
+
irq:
+
+ {{result["cpu"].irq}}% +
+
+
+
iowait:
+
+ {{result["cpu"].iowait}}% +
+
+
+
steal:
+
+ {{result["cpu"].steal}}% +
+
+
+
+
+
+
+
+
+
LOAD
+
{{result["load"].cpucore}}-core
+
+
+
1 min:
+
+ {{result["load"].min1}} +
+
+
+
5 min:
+
+ {{result["load"].min5}} +
+
+
+
15 min:
+
+ {{result["load"].min15}} +
+
+
+
+
+
@@ -89,7 +148,29 @@
-
+
+
+
+
+
active:
+
{{result["mem"].active | bytes:2}}
+
+
+
inactive:
+
{{result["mem"].inactive | bytes:2}}
+
+
+
buffers:
+
{{result["mem"].buffers | bytes:2}}
+
+
+
cached:
+
{{result["mem"].cached | bytes:2}}
+
+
+
+
+
@@ -115,7 +196,7 @@
-
+
@@ -177,6 +258,9 @@
+
+ CONTAINERS 1 (served by Docker 1.2.0) +
@@ -231,4 +315,4 @@
- \ No newline at end of file + diff --git a/glances/outputs/glances_bottle.py b/glances/outputs/glances_bottle.py index 4f17ad61..7360a184 100644 --- a/glances/outputs/glances_bottle.py +++ b/glances/outputs/glances_bottle.py @@ -154,14 +154,8 @@ class GlancesBottle(object): path = "D:\\glances\\" filepath = path + "debug.json" - if os.path.exists(filepath): - logger.debug("File exists : {0}.".format(filepath)) - - f = open(path + "debug.json") - return f.read() - - logger.warn("File does not exist : {0}.".format(filepath)) - return "" + f = open("/home/sylvain/glances/debug.json") + return f.read() def _api(self, plugin): """ @@ -264,4 +258,4 @@ class GlancesBottle(object): path = os.path.join(os.path.dirname(os.path.realpath(__file__)), "bottle", "index.html") f = open(path) - return f.read() \ No newline at end of file + return f.read() diff --git a/glances/outputs/static/js/controllers.js b/glances/outputs/static/js/controllers.js index db84e6ef..fb3777db 100644 --- a/glances/outputs/static/js/controllers.js +++ b/glances/outputs/static/js/controllers.js @@ -253,7 +253,7 @@ glancesApp.controller('bodyController', [ '$scope', '$http', '$interval', '$q', $scope.showHide('network') } else if ($event.keyCode == keycodes.s) {//s Show/hide sensors stats $scope.showHide('sensors') - } else if ($event.keyCode == keycodes.TWO) {//2 Show/hide left sidebar + } else if ($event.keyCode == keycodes.TWO && $event.shiftKey) {//2 Show/hide left sidebar $scope.showHide('sidebar') } else if ($event.keyCode == keycodes.z) {//z Enable/disable processes stats //$scope.enableDisable('processStats') @@ -289,4 +289,4 @@ glancesApp.controller('bodyController', [ '$scope', '$http', '$interval', '$q', //$scope.sortBy('') } } -} ]); \ No newline at end of file +} ]); diff --git a/glances/outputs/static/js/variables.js b/glances/outputs/static/js/variables.js index de4513cd..91f7ce22 100644 --- a/glances/outputs/static/js/variables.js +++ b/glances/outputs/static/js/variables.js @@ -9,7 +9,7 @@ var keycodes = { 'f' : '70', 'n' : '78', 's' : '83', - 'TWO' : '98', + 'TWO' : '50', 'z' : '90', 'e' : '69', 'SLASH' : '191', @@ -26,4 +26,4 @@ var keycodes = { 'g' : '', 'r' : '', 'q' : '' -} \ No newline at end of file +} From 7b77b98bf04d293b536679bdcb54985cc178339c Mon Sep 17 00:00:00 2001 From: Sylvain MOUQUET Date: Sun, 18 Jan 2015 17:38:26 +0100 Subject: [PATCH 55/90] refactoring bottle html files + add refresh_time in url + add help page --- MANIFEST.in | 3 +- glances/outputs/glances_bottle.py | 52 ++- glances/outputs/static/html/help.html | 30 ++ glances/outputs/static/html/index.html | 25 ++ glances/outputs/static/html/stats.html | 298 +++++++++++++ .../outputs/static/js/angular-route.min.js | 15 + .../static/js/angular-route.min.js.map | 8 + glances/outputs/static/js/angular.min.js | 418 +++++++++--------- glances/outputs/static/js/angular.min.js.map | 8 + glances/outputs/static/js/app.js | 9 +- glances/outputs/static/js/help_controller.js | 4 + glances/outputs/static/js/stats_controller.js | 290 ++++++++++++ 12 files changed, 928 insertions(+), 232 deletions(-) create mode 100644 glances/outputs/static/html/help.html create mode 100644 glances/outputs/static/html/index.html create mode 100644 glances/outputs/static/html/stats.html create mode 100644 glances/outputs/static/js/angular-route.min.js create mode 100644 glances/outputs/static/js/angular-route.min.js.map create mode 100644 glances/outputs/static/js/angular.min.js.map create mode 100644 glances/outputs/static/js/help_controller.js create mode 100644 glances/outputs/static/js/stats_controller.js diff --git a/MANIFEST.in b/MANIFEST.in index e976fa45..17120544 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -3,9 +3,10 @@ include COPYING include NEWS include README.rst include conf/glances.conf -include glances/outputs/bottle/*.html +include glances/outputs/static/html/*.html include glances/outputs/static/css/*.css include glances/outputs/static/js/*.js +include glances/outputs/static/js/*.js.map include man/glances.1 recursive-include docs images/*.png glances-doc.html recursive-include glances *.py diff --git a/glances/outputs/glances_bottle.py b/glances/outputs/glances_bottle.py index 7360a184..c96f7fe7 100644 --- a/glances/outputs/glances_bottle.py +++ b/glances/outputs/glances_bottle.py @@ -29,7 +29,7 @@ from glances.core.glances_logging import logger try: - from bottle import Bottle, template, static_file, TEMPLATE_PATH, abort, response + from bottle import Bottle, static_file, abort, response except ImportError: logger.critical('Bottle module not found. Glances cannot start in web server mode.') sys.exit(2) @@ -51,9 +51,6 @@ class GlancesBottle(object): self._app = Bottle() self._route() - # Update the template path (glances/outputs/bottle) - TEMPLATE_PATH.append(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'bottle')) - # Path where the statics files are stored self.STATIC_PATH = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'static') @@ -61,10 +58,15 @@ class GlancesBottle(object): """Define route.""" self._app.route('/', method="GET", callback=self._index) self._app.route('/', method=["GET", "POST"], callback=self._index) + self._app.route('/', method="GET", callback=self._css) self._app.route('/', method="GET", callback=self._js) + self._app.route('/', method="GET", callback=self._js_map) + self._app.route('/', method="GET", callback=self._html) + # REST API self._app.route('/api/2/pluginslist', method="GET", callback=self._api_plugins) + self._app.route('/api/2/pluginslimits', method="GET", callback=self._api_plugins_limits) self._app.route('/api/2/all', method="GET", callback=self._api_all) self._app.route('/api/2/:plugin', method="GET", callback=self._api) self._app.route('/api/2/:plugin/limits', method="GET", callback=self._api_limits) @@ -99,8 +101,13 @@ class GlancesBottle(object): self.stats.update() # Display - return self.display(self.stats, refresh_time=refresh_time) + return static_file("index.html", root=os.path.join(self.STATIC_PATH, 'html')) + def _html(self, filename): + """Bottle callback for *.html files.""" + # Return the static file + return static_file(filename, root=os.path.join(self.STATIC_PATH, 'html')) + def _css(self, filename): """Bottle callback for *.css files.""" # Return the static file @@ -111,6 +118,11 @@ class GlancesBottle(object): # Return the static file return static_file(filename, root=os.path.join(self.STATIC_PATH, 'js')) + def _js_map(self, filename): + """Bottle callback for *.js.map files.""" + # Return the static file + return static_file(filename, root=os.path.join(self.STATIC_PATH, 'js')) + def _api_plugins(self): """ Glances API RESTFul implementation @@ -128,6 +140,25 @@ class GlancesBottle(object): abort(404, "Cannot get plugin list (%s)" % str(e)) return plist + def _api_plugins_limits(self): + """ + Glances API RESTFul implementation + Return the limits for each plugins + or 404 error + """ + response.content_type = 'application/json' + + result = {} + for plugin in self.plugins_list: + try: + # Get the JSON value of the stat ID + limits = self.stats.get_plugin(plugin).get_limits() + result[plugin] = limits + except Exception as e: + pass + return result + + def _api_all(self): """ Glances API RESTFul implementation @@ -154,7 +185,7 @@ class GlancesBottle(object): path = "D:\\glances\\" filepath = path + "debug.json" - f = open("/home/sylvain/glances/debug.json") + f = open(filepath) return f.read() def _api(self, plugin): @@ -250,12 +281,3 @@ class GlancesBottle(object): else: return pdict - def display(self, stats, refresh_time=None): - """Display stats on the web page. - - stats: Stats database to display - """ - - path = os.path.join(os.path.dirname(os.path.realpath(__file__)), "bottle", "index.html") - f = open(path) - return f.read() diff --git a/glances/outputs/static/html/help.html b/glances/outputs/static/html/help.html new file mode 100644 index 00000000..04da403f --- /dev/null +++ b/glances/outputs/static/html/help.html @@ -0,0 +1,30 @@ + + + + + + + Glances + + + + + + + + + + + + + + + + +Help window!!! + +message : {{message}} + + + + diff --git a/glances/outputs/static/html/index.html b/glances/outputs/static/html/index.html new file mode 100644 index 00000000..054d5a99 --- /dev/null +++ b/glances/outputs/static/html/index.html @@ -0,0 +1,25 @@ + + + + + + + Glances + + + + + + + + + + + + + + + + + + diff --git a/glances/outputs/static/html/stats.html b/glances/outputs/static/html/stats.html new file mode 100644 index 00000000..aec1163f --- /dev/null +++ b/glances/outputs/static/html/stats.html @@ -0,0 +1,298 @@ + +
Loading...
+
+
+
+
+
+ Refresh time  + + {{result["system"].hostname}}  +
+
+
+
+ Uptime: {{result["uptime"]}} +
+
+
+
+ +
+
+
+
+
+
CPU
+
{{result["cpu"].total}}%
+
+
+
user:
+
+ {{result["cpu"].user}}% +
+
+
+
system:
+
+ {{result["cpu"].system}}% +
+
+
+
idle:
+
{{result["cpu"].idle}}%
+
+
+
+
+
+
+
+
+
nice:
+
+ {{result["cpu"].nice}}% +
+
+
+
irq:
+
+ {{result["cpu"].irq}}% +
+
+
+
iowait:
+
+ {{result["cpu"].iowait}}% +
+
+
+
steal:
+
+ {{result["cpu"].steal}}% +
+
+
+
+
+
+
+
+
+
LOAD
+
{{result["load"].cpucore}}-core
+
+
+
1 min:
+
+ {{result["load"].min1}} +
+
+
+
5 min:
+
+ {{result["load"].min5}} +
+
+
+
15 min:
+
+ {{result["load"].min15}} +
+
+
+
+
+
+
+
+
+
MEM
+
{{result["mem"].percent}}%
+
+
+
total:
+
{{result["mem"].total | bytes:2}}
+
+
+
used:
+
+ {{result["mem"].used | bytes:2}} +
+
+
+
free:
+
{{result["mem"].free | bytes:2}}
+
+
+
+
+
+
+
+
+
active:
+
{{result["mem"].active | bytes:2}}
+
+
+
inactive:
+
{{result["mem"].inactive | bytes:2}}
+
+
+
buffers:
+
{{result["mem"].buffers | bytes:2}}
+
+
+
cached:
+
{{result["mem"].cached | bytes:2}}
+
+
+
+
+
+
+
+
+
SWAP
+
{{result["memswap"].percent}}%
+
+
+
total:
+
{{result["memswap"].total | bytes:2}}
+
+
+
used:
+
+ {{result["memswap"].used | bytes:2}} +
+
+
+
free:
+
{{result["memswap"].free | bytes:2}}
+
+
+
+
+
+
+
+
+
+
+
NETWORK
+
Rx/s
+
Tx/s
+
+
+
{{network.interface_name | min_size}}
+
{{network.rx | bytes}}
+
{{network.tx | bytes}}
+
{{network.rx | bits}}
+
{{network.tx | bits}}
+
+
+
+ +
+
+
+
DISK I/O
+
R/s
+
W/s
+
+
+
{{disk.disk_name | min_size}}
+
{{disk.read_bytes | bytes}}
+
{{disk.write_bytes | bytes}}
+
+
+
+
+
+
+
FILE SYS
+
Used
+
Total
+
+
+
{{fs.mnt_point}} ({{fs.device_name}})
+
+ {{fs.size - fs.free | bytes}} +
+
{{fs.size | bytes}}
+
+
+
+
+
+
+
SENSORS
+
°C
+
+
+
{{sensor.label}}
+
{{sensor.value}}
+
+
+
+
+
+
+ CONTAINERS 1 (served by Docker 1.2.0) +
+
+
+
+
No warning or critical alert detected
+
{{alert}}
+
+
+
+ +
+ TASKS {{result["processcount"].total}} ({{result["processcount"].thread}} thr), {{result["processcount"].running}} run, + {{result["processcount"].sleeping}} slp, {{result["processcount"].stopped}} oth sorted automatically by cpu_percent, flat view +
+ +
+
+
+ +
+
+
+
CPU%
+
MEM%
+ + +
PID
+
USER
+
NI
+
S
+ + + +
Command
+
+
+
{{process.cpu_percent | number:1}}
+
{{process.memory_percent | number:1}}
+ + +
{{process.pid}}
+
{{process.username}}
+
{{process.nice | exclamation}}
+
{{process.status}}
+ + + +
{{process.name}}
+
+
+
+
+
+
diff --git a/glances/outputs/static/js/angular-route.min.js b/glances/outputs/static/js/angular-route.min.js new file mode 100644 index 00000000..4e533cd1 --- /dev/null +++ b/glances/outputs/static/js/angular-route.min.js @@ -0,0 +1,15 @@ + +/* + AngularJS v1.2.28 + (c) 2010-2014 Google, Inc. http://angularjs.org + License: MIT +*/ +(function(n,e,A){'use strict';function x(s,g,h){return{restrict:"ECA",terminal:!0,priority:400,transclude:"element",link:function(a,c,b,f,w){function y(){p&&(p.remove(),p=null);k&&(k.$destroy(),k=null);l&&(h.leave(l,function(){p=null}),p=l,l=null)}function v(){var b=s.current&&s.current.locals;if(e.isDefined(b&&b.$template)){var b=a.$new(),d=s.current;l=w(b,function(d){h.enter(d,null,l||c,function(){!e.isDefined(t)||t&&!a.$eval(t)||g()});y()});k=d.scope=b;k.$emit("$viewContentLoaded");k.$eval(u)}else y()} +var k,l,p,t=b.autoscroll,u=b.onload||"";a.$on("$routeChangeSuccess",v);v()}}}function z(e,g,h){return{restrict:"ECA",priority:-400,link:function(a,c){var b=h.current,f=b.locals;c.html(f.$template);var w=e(c.contents());b.controller&&(f.$scope=a,f=g(b.controller,f),b.controllerAs&&(a[b.controllerAs]=f),c.data("$ngControllerController",f),c.children().data("$ngControllerController",f));w(a)}}}n=e.module("ngRoute",["ng"]).provider("$route",function(){function s(a,c){return e.extend(new (e.extend(function(){}, +{prototype:a})),c)}function g(a,e){var b=e.caseInsensitiveMatch,f={originalPath:a,regexp:a},h=f.keys=[];a=a.replace(/([().])/g,"\\$1").replace(/(\/)?:(\w+)([\?\*])?/g,function(a,e,b,c){a="?"===c?c:null;c="*"===c?c:null;h.push({name:b,optional:!!a});e=e||"";return""+(a?"":e)+"(?:"+(a?e:"")+(c&&"(.+?)"||"([^/]+)")+(a||"")+")"+(a||"")}).replace(/([\/$\*])/g,"\\$1");f.regexp=RegExp("^"+a+"$",b?"i":"");return f}var h={};this.when=function(a,c){h[a]=e.extend({reloadOnSearch:!0},c,a&&g(a,c));if(a){var b= +"/"==a[a.length-1]?a.substr(0,a.length-1):a+"/";h[b]=e.extend({redirectTo:a},g(b,c))}return this};this.otherwise=function(a){this.when(null,a);return this};this.$get=["$rootScope","$location","$routeParams","$q","$injector","$http","$templateCache","$sce",function(a,c,b,f,g,n,v,k){function l(){var d=p(),m=r.current;if(d&&m&&d.$$route===m.$$route&&e.equals(d.pathParams,m.pathParams)&&!d.reloadOnSearch&&!u)m.params=d.params,e.copy(m.params,b),a.$broadcast("$routeUpdate",m);else if(d||m)u=!1,a.$broadcast("$routeChangeStart", +d,m),(r.current=d)&&d.redirectTo&&(e.isString(d.redirectTo)?c.path(t(d.redirectTo,d.params)).search(d.params).replace():c.url(d.redirectTo(d.pathParams,c.path(),c.search())).replace()),f.when(d).then(function(){if(d){var a=e.extend({},d.resolve),c,b;e.forEach(a,function(d,c){a[c]=e.isString(d)?g.get(d):g.invoke(d)});e.isDefined(c=d.template)?e.isFunction(c)&&(c=c(d.params)):e.isDefined(b=d.templateUrl)&&(e.isFunction(b)&&(b=b(d.params)),b=k.getTrustedResourceUrl(b),e.isDefined(b)&&(d.loadedTemplateUrl= +b,c=n.get(b,{cache:v}).then(function(a){return a.data})));e.isDefined(c)&&(a.$template=c);return f.all(a)}}).then(function(c){d==r.current&&(d&&(d.locals=c,e.copy(d.params,b)),a.$broadcast("$routeChangeSuccess",d,m))},function(c){d==r.current&&a.$broadcast("$routeChangeError",d,m,c)})}function p(){var a,b;e.forEach(h,function(f,h){var q;if(q=!b){var g=c.path();q=f.keys;var l={};if(f.regexp)if(g=f.regexp.exec(g)){for(var k=1,p=g.length;k").append(b).html();try{return 3===b[0].nodeType?K(c):c.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+K(b)})}catch(d){return K(c)}}function dc(b){try{return decodeURIComponent(b)}catch(a){}}function ec(b){var a={},c,d;r((b||"").split("&"),function(b){b&&(c=b.replace(/\+/g,"%20").split("="),d=dc(c[0]),y(d)&&(b=y(c[1])?dc(c[1]):!0,kb.call(a,d)?J(a[d])?a[d].push(b):a[d]=[a[d],b]:a[d]=b))});return a}function Cb(b){var a= -[];r(b,function(b,d){J(b)?r(b,function(b){a.push(Ca(d,!0)+(!0===b?"":"="+Ca(b,!0)))}):a.push(Ca(d,!0)+(!0===b?"":"="+Ca(b,!0)))});return a.length?a.join("&"):""}function lb(b){return Ca(b,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function Ca(b,a){return encodeURIComponent(b).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,a?"%20":"+")}function Xc(b,a){function c(a){a&&d.push(a)}var d=[b],e,f,g=["ng:app","ng-app","x-ng-app", -"data-ng-app"],k=/\sng[:\-]app(:\s*([\w\d_]+);?)?\s/;r(g,function(a){g[a]=!0;c(X.getElementById(a));a=a.replace(":","\\:");b.querySelectorAll&&(r(b.querySelectorAll("."+a),c),r(b.querySelectorAll("."+a+"\\:"),c),r(b.querySelectorAll("["+a+"]"),c))});r(d,function(a){if(!e){var b=k.exec(" "+a.className+" ");b?(e=a,f=(b[2]||"").replace(/\s+/g,",")):r(a.attributes,function(b){!e&&g[b.name]&&(e=a,f=b.value)})}});e&&a(e,f?[f]:[])}function fc(b,a){var c=function(){b=w(b);if(b.injector()){var c=b[0]===X? -"document":ia(b);throw Ta("btstrpd",c.replace(//,">"));}a=a||[];a.unshift(["$provide",function(a){a.value("$rootElement",b)}]);a.unshift("ng");c=gc(a);c.invoke(["$rootScope","$rootElement","$compile","$injector","$animate",function(a,b,c,d,e){a.$apply(function(){b.data("$injector",d);c(b)(a)})}]);return c},d=/^NG_DEFER_BOOTSTRAP!/;if(W&&!d.test(W.name))return c();W.name=W.name.replace(d,"");Va.resumeBootstrap=function(b){r(b,function(b){a.push(b)});c()}}function mb(b,a){a= -a||"_";return b.replace(Yc,function(b,d){return(d?a:"")+b.toLowerCase()})}function Db(b,a,c){if(!b)throw Ta("areq",a||"?",c||"required");return b}function Wa(b,a,c){c&&J(b)&&(b=b[b.length-1]);Db(P(b),a,"not a function, got "+(b&&"object"===typeof b?b.constructor.name||"Object":typeof b));return b}function Da(b,a){if("hasOwnProperty"===b)throw Ta("badname",a);}function hc(b,a,c){if(!a)return b;a=a.split(".");for(var d,e=b,f=a.length,g=0;g").append(b).html();try{return 3===b[0].nodeType?x(c):c.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+x(b)})}catch(d){return x(c)}}function bc(b){try{return decodeURIComponent(b)}catch(a){}}function cc(b){var a={},c,d;r((b||"").split("&"),function(b){b&&(c=b.replace(/\+/g,"%20").split("="),d=bc(c[0]),D(d)&&(b=D(c[1])?bc(c[1]):!0,lb.call(a,d)?L(a[d])?a[d].push(b):a[d]=[a[d],b]:a[d]=b))});return a}function Cb(b){var a= +[];r(b,function(b,d){L(b)?r(b,function(b){a.push(Da(d,!0)+(!0===b?"":"="+Da(b,!0)))}):a.push(Da(d,!0)+(!0===b?"":"="+Da(b,!0)))});return a.length?a.join("&"):""}function mb(b){return Da(b,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function Da(b,a){return encodeURIComponent(b).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,a?"%20":"+")}function Wc(b,a){function c(a){a&&d.push(a)}var d=[b],e,f,g=["ng:app","ng-app","x-ng-app", +"data-ng-app"],h=/\sng[:\-]app(:\s*([\w\d_]+);?)?\s/;r(g,function(a){g[a]=!0;c(X.getElementById(a));a=a.replace(":","\\:");b.querySelectorAll&&(r(b.querySelectorAll("."+a),c),r(b.querySelectorAll("."+a+"\\:"),c),r(b.querySelectorAll("["+a+"]"),c))});r(d,function(a){if(!e){var b=h.exec(" "+a.className+" ");b?(e=a,f=(b[2]||"").replace(/\s+/g,",")):r(a.attributes,function(b){!e&&g[b.name]&&(e=a,f=b.value)})}});e&&a(e,f?[f]:[])}function dc(b,a){var c=function(){b=A(b);if(b.injector()){var c=b[0]===X? +"document":ia(b);throw Va("btstrpd",c.replace(//,">"));}a=a||[];a.unshift(["$provide",function(a){a.value("$rootElement",b)}]);a.unshift("ng");c=ec(a);c.invoke(["$rootScope","$rootElement","$compile","$injector","$animate",function(a,b,c,d,e){a.$apply(function(){b.data("$injector",d);c(b)(a)})}]);return c},d=/^NG_DEFER_BOOTSTRAP!/;if(W&&!d.test(W.name))return c();W.name=W.name.replace(d,"");Xa.resumeBootstrap=function(b){r(b,function(b){a.push(b)});c()}}function nb(b,a){a= +a||"_";return b.replace(Xc,function(b,d){return(d?a:"")+b.toLowerCase()})}function Db(b,a,c){if(!b)throw Va("areq",a||"?",c||"required");return b}function Ya(b,a,c){c&&L(b)&&(b=b[b.length-1]);Db(N(b),a,"not a function, got "+(b&&"object"===typeof b?b.constructor.name||"Object":typeof b));return b}function Ea(b,a){if("hasOwnProperty"===b)throw Va("badname",a);}function fc(b,a,c){if(!a)return b;a=a.split(".");for(var d,e=b,f=a.length,g=0;g 
"+e[1]+a.replace(me,"<$1>")+e[2];d.removeChild(d.firstChild);for(a=e[0];a--;)d=d.lastChild;a=0;for(e=d.childNodes.length;a=Q?(c.preventDefault=null,c.stopPropagation=null,c.isDefaultPrevented=null):(delete c.preventDefault,delete c.stopPropagation,delete c.isDefaultPrevented)};c.elem=b;return c}function Ka(b,a){var c=typeof b,d;"function"==c||"object"==c&&null!==b?"function"==typeof(d= -b.$$hashKey)?d=b.$$hashKey():d===t&&(d=b.$$hashKey=(a||hb)()):d=b;return c+":"+d}function bb(b,a){if(a){var c=0;this.nextUid=function(){return++c}}r(b,this.put,this)}function sc(b){var a,c;"function"===typeof b?(a=b.$inject)||(a=[],b.length&&(c=b.toString().replace(pe,""),c=c.match(qe),r(c[1].split(re),function(b){b.replace(se,function(b,c,d){a.push(d)})})),b.$inject=a):J(b)?(c=b.length-1,Wa(b[c],"fn"),a=b.slice(0,c)):Wa(b,"fn",!0);return a}function gc(b){function a(a){return function(b,c){if(T(b))r(b, -$b(a));else return a(b,c)}}function c(a,b){Da(a,"service");if(P(b)||J(b))b=n.instantiate(b);if(!b.$get)throw cb("pget",a);return l[a+k]=b}function d(a,b){return c(a,{$get:b})}function e(a){var b=[],c,d,f,k;r(a,function(a){if(!h.get(a)){h.put(a,!0);try{if(v(a))for(c=Ya(a),b=b.concat(e(c.requires)).concat(c._runBlocks),d=c._invokeQueue,f=0,k=d.length;f 4096 bytes)!"));else{if(m.cookie!== -da)for(da=m.cookie,d=da.split("; "),O={},f=0;fh&&this.remove(p.key),b},get:function(a){if(h").parent()[0])});var f=L(a,b,a,c,d,e);ca(a,"ng-scope");return function(b,c,d,e){Db(b,"scope");var g=c?La.clone.call(a):a;r(d,function(a,b){g.data("$"+b+"Controller",a)});d=0;for(var m=g.length;darguments.length&& -(b=a,a=t);K&&(c=da);return p(a,b,c)}var u,M,z,O,I,B,da={},rb;u=c===f?d:ha(d,new Ob(w(f),d.$attr));M=u.$$element;if(L){var Na=/^\s*([@=&])(\??)\s*(\w*)\s*$/;B=e.$new(!0);!H||H!==L&&H!==L.$$originalDirective?M.data("$isolateScopeNoTemplate",B):M.data("$isolateScope",B);ca(M,"ng-isolate-scope");r(L.scope,function(a,c){var d=a.match(Na)||[],f=d[3]||c,g="?"==d[2],d=d[1],m,l,n,p;B.$$isolateBindings[c]=d+f;switch(d){case "@":u.$observe(f,function(a){B[c]=a});u.$$observers[f].$$scope=e;u[f]&&(B[c]=b(u[f])(e)); -break;case "=":if(g&&!u[f])break;l=q(u[f]);p=l.literal?Aa:function(a,b){return a===b||a!==a&&b!==b};n=l.assign||function(){m=B[c]=l(e);throw ja("nonassign",u[f],L.name);};m=B[c]=l(e);B.$watch(function(){var a=l(e);p(a,B[c])||(p(a,m)?n(e,a=B[c]):B[c]=a);return m=a},null,l.literal);break;case "&":l=q(u[f]);B[c]=function(a){return l(e,a)};break;default:throw ja("iscp",L.name,c,a);}})}rb=p&&F;R&&r(R,function(a){var b={$scope:a===L||a.$$isolateScope?B:e,$element:M,$attrs:u,$transclude:rb},c;I=a.controller; -"@"==I&&(I=u[a.name]);c=s(I,b);da[a.name]=c;K||M.data("$"+a.name+"Controller",c);a.controllerAs&&(b.$scope[a.controllerAs]=c)});g=0;for(z=m.length;gG.priority)break;if(V=G.scope)O=O||G,G.templateUrl||(db("new/isolated scope",L,G,Z),T(V)&&(L=G));C=G.name;!G.templateUrl&&G.controller&&(V=G.controller,R=R||{},db("'"+C+"' controller",R[C],G,Z),R[C]=G);if(V=G.transclude)x=!0,G.$$tlb|| -(db("transclusion",fa,G,Z),fa=G),"element"==V?(K=!0,u=G.priority,V=Z,Z=d.$$element=w(X.createComment(" "+C+": "+d[C]+" ")),c=Z[0],Na(f,Ba.call(V,0),c),S=z(V,e,u,g&&g.name,{nonTlbTranscludeDirective:fa})):(V=w(Kb(c)).contents(),Z.empty(),S=z(V,e));if(G.template)if(D=!0,db("template",H,G,Z),H=G,V=P(G.template)?G.template(Z,d):G.template,V=W(V),G.replace){g=G;V=Ib.test(V)?w(aa(V)):[];c=V[0];if(1!=V.length||1!==c.nodeType)throw ja("tplrt",C,"");Na(f,Z,c);qa={$attr:{}};V=da(c,[],qa);var $=a.splice(Fa+ -1,a.length-(Fa+1));L&&y(V);a=a.concat(V).concat($);E(d,qa);qa=a.length}else Z.html(V);if(G.templateUrl)D=!0,db("template",H,G,Z),H=G,G.replace&&(g=G),N=ue(a.splice(Fa,a.length-Fa),Z,d,f,x&&S,m,n,{controllerDirectives:R,newIsolateScopeDirective:L,templateDirective:H,nonTlbTranscludeDirective:fa}),qa=a.length;else if(G.compile)try{Q=G.compile(Z,d,S),P(Q)?F(null,Q,U,Y):Q&&F(Q.pre,Q.post,U,Y)}catch(ve){l(ve,ia(Z))}G.terminal&&(N.terminal=!0,u=Math.max(u,G.priority))}N.scope=O&&!0===O.scope;N.transcludeOnThisElement= -x;N.templateOnThisElement=D;N.transclude=S;p.hasElementTranscludeDirective=K;return N}function y(a){for(var b=0,c=a.length;bp.priority)&&-1!=p.restrict.indexOf(f)&&(q&&(p=bc(p,{$$start:q,$$end:n})),b.push(p),h=p)}catch(F){l(F)}}return h}function E(a,b){var c=b.$attr,d=a.$attr,e=a.$$element;r(a,function(d,e){"$"!= -e.charAt(0)&&(b[e]&&b[e]!==d&&(d+=("style"===e?";":" ")+b[e]),a.$set(e,d,!0,c[e]))});r(b,function(b,f){"class"==f?(ca(e,b),a["class"]=(a["class"]?a["class"]+" ":"")+b):"style"==f?(e.attr("style",e.attr("style")+";"+b),a.style=(a.style?a.style+";":"")+b):"$"==f.charAt(0)||a.hasOwnProperty(f)||(a[f]=b,d[f]=c[f])})}function ue(a,b,c,d,e,f,g,h){var m=[],l,q,s=b[0],u=a.shift(),F=D({},u,{templateUrl:null,transclude:null,replace:null,$$originalDirective:u}),N=P(u.templateUrl)?u.templateUrl(b,c):u.templateUrl; -b.empty();n.get(A.getTrustedResourceUrl(N),{cache:p}).success(function(n){var p,A;n=W(n);if(u.replace){n=Ib.test(n)?w(aa(n)):[];p=n[0];if(1!=n.length||1!==p.nodeType)throw ja("tplrt",u.name,N);n={$attr:{}};Na(d,b,p);var z=da(p,[],n);T(u.scope)&&y(z);a=z.concat(a);E(c,n)}else p=s,b.html(n);a.unshift(F);l=H(a,p,c,e,b,u,f,g,h);r(d,function(a,c){a==p&&(d[c]=b[0])});for(q=L(b[0].childNodes,e);m.length;){n=m.shift();A=m.shift();var R=m.shift(),I=m.shift(),z=b[0];if(A!==s){var B=A.className;h.hasElementTranscludeDirective&& -u.replace||(z=Kb(p));Na(R,w(A),z);ca(w(z),B)}A=l.transcludeOnThisElement?O(n,l.transclude,I):I;l(q,n,z,d,A)}m=null}).error(function(a,b,c,d){throw ja("tpload",d.url);});return function(a,b,c,d,e){a=e;m?(m.push(b),m.push(c),m.push(d),m.push(a)):(l.transcludeOnThisElement&&(a=O(b,l.transclude,e)),l(q,b,c,d,a))}}function x(a,b){var c=b.priority-a.priority;return 0!==c?c:a.name!==b.name?a.namea.status?d:n.reject(d)}var c={method:"get",transformRequest:e.transformRequest,transformResponse:e.transformResponse},d=function(a){var b=e.headers,c=D({},a.headers),d,f,b=D({},b.common,b[K(a.method)]); -a:for(d in b){a=K(d);for(f in c)if(K(f)===a)continue a;c[d]=b[d]}(function(a){var b;r(a,function(c,d){P(c)&&(b=c(),null!=b?a[d]=b:delete a[d])})})(c);return c}(a);D(c,a);c.headers=d;c.method=Ia(c.method);var f=[function(a){d=a.headers;var c=xc(a.data,wc(d),a.transformRequest);x(c)&&r(d,function(a,b){"content-type"===K(b)&&delete d[b]});x(a.withCredentials)&&!x(e.withCredentials)&&(a.withCredentials=e.withCredentials);return s(a,c,d).then(b,b)},t],g=n.when(c);for(r(A,function(a){(a.request||a.requestError)&& -f.unshift(a.request,a.requestError);(a.response||a.responseError)&&f.push(a.response,a.responseError)});f.length;){a=f.shift();var m=f.shift(),g=g.then(a,m)}g.success=function(a){g.then(function(b){a(b.data,b.status,b.headers,c)});return g};g.error=function(a){g.then(null,function(b){a(b.data,b.status,b.headers,c)});return g};return g}function s(c,f,g){function h(a,b,c,e){I&&(200<=a&&300>a?I.put(w,[a,b,vc(c),e]):I.remove(w));p(b,a,c,e);d.$$phase||d.$apply()}function p(a,b,d,e){b=Math.max(b,0);(200<= -b&&300>b?A.resolve:A.reject)({data:a,status:b,headers:wc(d),config:c,statusText:e})}function s(){var a=Ra(q.pendingRequests,c);-1!==a&&q.pendingRequests.splice(a,1)}var A=n.defer(),r=A.promise,I,H,w=F(c.url,c.params);q.pendingRequests.push(c);r.then(s,s);!c.cache&&!e.cache||(!1===c.cache||"GET"!==c.method&&"JSONP"!==c.method)||(I=T(c.cache)?c.cache:T(e.cache)?e.cache:u);if(I)if(H=I.get(w),y(H)){if(H&&P(H.then))return H.then(s,s),H;J(H)?p(H[1],H[0],ha(H[2]),H[3]):p(H,200,{},"OK")}else I.put(w,r);x(H)&& -((H=Pb(c.url)?b.cookies()[c.xsrfCookieName||e.xsrfCookieName]:t)&&(g[c.xsrfHeaderName||e.xsrfHeaderName]=H),a(c.method,w,f,h,g,c.timeout,c.withCredentials,c.responseType));return r}function F(a,b){if(!b)return a;var c=[];Tc(b,function(a,b){null===a||x(a)||(J(a)||(a=[a]),r(a,function(a){T(a)&&(a=ta(a)?a.toISOString():na(a));c.push(Ca(b)+"="+Ca(a))}))});0=Q&&(!b.match(/^(get|post|head|put|delete|options)$/i)|| -!W.XMLHttpRequest))return new W.ActiveXObject("Microsoft.XMLHTTP");if(W.XMLHttpRequest)return new W.XMLHttpRequest;throw C("$httpBackend")("noxhr");}function Vd(){this.$get=["$browser","$window","$document",function(b,a,c){return ye(b,xe,b.defer,a.angular.callbacks,c[0])}]}function ye(b,a,c,d,e){function f(a,b,c){var f=e.createElement("script"),g=null;f.type="text/javascript";f.src=a;f.async=!0;g=function(a){$a(f,"load",g);$a(f,"error",g);e.body.removeChild(f);f=null;var k=-1,s="unknown";a&&("load"!== -a.type||d[b].called||(a={type:"error"}),s=a.type,k="error"===a.type?404:200);c&&c(k,s)};sb(f,"load",g);sb(f,"error",g);8>=Q&&(f.onreadystatechange=function(){v(f.readyState)&&/loaded|complete/.test(f.readyState)&&(f.onreadystatechange=null,g({type:"load"}))});e.body.appendChild(f);return g}var g=-1;return function(e,m,h,l,n,p,q,s){function F(){A=g;R&&R();z&&z.abort()}function u(a,d,e,f,g){L&&c.cancel(L);R=z=null;0===d&&(d=e?200:"file"==ua(m).protocol?404:0);a(1223===d?204:d,e,f,g||"");b.$$completeOutstandingRequest(E)} -var A;b.$$incOutstandingRequestCount();m=m||b.url();if("jsonp"==K(e)){var N="_"+(d.counter++).toString(36);d[N]=function(a){d[N].data=a;d[N].called=!0};var R=f(m.replace("JSON_CALLBACK","angular.callbacks."+N),N,function(a,b){u(l,a,d[N].data,"",b);d[N]=E})}else{var z=a(e);z.open(e,m,!0);r(n,function(a,b){y(a)&&z.setRequestHeader(b,a)});z.onreadystatechange=function(){if(z&&4==z.readyState){var a=null,b=null,c="";A!==g&&(a=z.getAllResponseHeaders(),b="response"in z?z.response:z.responseText);A===g&& -10>Q||(c=z.statusText);u(l,A||z.status,b,a,c)}};q&&(z.withCredentials=!0);if(s)try{z.responseType=s}catch(ca){if("json"!==s)throw ca;}z.send(h||null)}if(0=k&&(n.resolve(q),l(p.$$intervalId),delete e[p.$$intervalId]);s||b.$apply()},g);e[p.$$intervalId]=n;return p}var e={};d.cancel= -function(b){return b&&b.$$intervalId in e?(e[b.$$intervalId].reject("canceled"),a.clearInterval(b.$$intervalId),delete e[b.$$intervalId],!0):!1};return d}]}function bd(){this.$get=function(){return{id:"en-us",NUMBER_FORMATS:{DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{minInt:1,minFrac:0,maxFrac:3,posPre:"",posSuf:"",negPre:"-",negSuf:"",gSize:3,lgSize:3},{minInt:1,minFrac:2,maxFrac:2,posPre:"\u00a4",posSuf:"",negPre:"(\u00a4",negSuf:")",gSize:3,lgSize:3}],CURRENCY_SYM:"$"},DATETIME_FORMATS:{MONTH:"January February March April May June July August September October November December".split(" "), +function Zc(b){E(b,{bootstrap:dc,copy:Ka,extend:E,equals:Ca,element:A,forEach:r,injector:ec,noop:v,bind:Bb,toJson:oa,fromJson:ac,identity:ga,isUndefined:F,isDefined:D,isString:G,isFunction:N,isObject:T,isNumber:jb,isElement:Tc,isArray:L,version:$c,isDate:va,lowercase:x,uppercase:La,callbacks:{counter:0},$$minErr:z,$$csp:Za});$a=Yc(W);try{$a("ngLocale")}catch(a){$a("ngLocale",[]).provider("$locale",ad)}$a("ng",["ngLocale"],["$provide",function(a){a.provider({$$sanitizeUri:bd});a.provider("$compile", +gc).directive({a:cd,input:hc,textarea:hc,form:dd,script:ed,select:fd,style:gd,option:hd,ngBind:id,ngBindHtml:jd,ngBindTemplate:kd,ngClass:ld,ngClassEven:md,ngClassOdd:nd,ngCloak:od,ngController:pd,ngForm:qd,ngHide:rd,ngIf:sd,ngInclude:td,ngInit:ud,ngNonBindable:vd,ngPluralize:wd,ngRepeat:xd,ngShow:yd,ngStyle:zd,ngSwitch:Ad,ngSwitchWhen:Bd,ngSwitchDefault:Cd,ngOptions:Dd,ngTransclude:Ed,ngModel:Fd,ngList:Gd,ngChange:Hd,required:ic,ngRequired:ic,ngValue:Id}).directive({ngInclude:Jd}).directive(Fb).directive(jc); +a.provider({$anchorScroll:Kd,$animate:Ld,$browser:Md,$cacheFactory:Nd,$controller:Od,$document:Pd,$exceptionHandler:Qd,$filter:kc,$interpolate:Rd,$interval:Sd,$http:Td,$httpBackend:Ud,$location:Vd,$log:Wd,$parse:Xd,$rootScope:Yd,$q:Zd,$sce:$d,$sceDelegate:ae,$sniffer:be,$templateCache:ce,$timeout:de,$window:ee,$$rAF:fe,$$asyncCallback:ge})}])}function ab(b){return b.replace(he,function(a,b,d,e){return e?d.toUpperCase():d}).replace(ie,"Moz$1")}function Gb(b,a,c,d){function e(b){var e=c&&b?[this.filter(b)]: +[this],k=a,m,l,n,q,p,s;if(!d||null!=b)for(;e.length;)for(m=e.shift(),l=0,n=m.length;l 
"+e[1]+a.replace(le,"<$1>")+e[2];d.removeChild(d.firstChild);for(a=e[0];a--;)d=d.lastChild;a=0;for(e=d.childNodes.length;a=R?(c.preventDefault=null,c.stopPropagation=null,c.isDefaultPrevented=null):(delete c.preventDefault,delete c.stopPropagation,delete c.isDefaultPrevented)};c.elem=b;return c}function Na(b,a){var c=typeof b,d;"function"==c||"object"==c&&null!==b?"function"==typeof(d= +b.$$hashKey)?d=b.$$hashKey():d===u&&(d=b.$$hashKey=(a||ib)()):d=b;return c+":"+d}function db(b,a){if(a){var c=0;this.nextUid=function(){return++c}}r(b,this.put,this)}function qc(b){var a,c;"function"===typeof b?(a=b.$inject)||(a=[],b.length&&(c=b.toString().replace(oe,""),c=c.match(pe),r(c[1].split(qe),function(b){b.replace(re,function(b,c,d){a.push(d)})})),b.$inject=a):L(b)?(c=b.length-1,Ya(b[c],"fn"),a=b.slice(0,c)):Ya(b,"fn",!0);return a}function ec(b){function a(a){return function(b,c){if(T(b))r(b, +Yb(a));else return a(b,c)}}function c(a,b){Ea(a,"service");if(N(b)||L(b))b=n.instantiate(b);if(!b.$get)throw eb("pget",a);return l[a+h]=b}function d(a,b){return c(a,{$get:b})}function e(a){var b=[],c,d,f,h;r(a,function(a){if(!m.get(a)){m.put(a,!0);try{if(G(a))for(c=$a(a),b=b.concat(e(c.requires)).concat(c._runBlocks),d=c._invokeQueue,f=0,h=d.length;f 4096 bytes)!"));else{if(k.cookie!== +ca)for(ca=k.cookie,d=ca.split("; "),M={},f=0;fm&&this.remove(q.key),b},get:function(a){if(m").parent()[0])});var f=O(a,b,a,c,d,e);ba(a,"ng-scope");return function(b,c,d,e){Db(b,"scope");var g=c?Oa.clone.call(a):a;r(d,function(a,b){g.data("$"+b+"Controller",a)});d=0;for(var k=g.length;darguments.length&& +(b=a,a=u);Ia&&(c=ca);return n(a,b,c)}var y,Q,B,M,C,P,ca={},ra;y=c===f?d:ha(d,new Ob(A(f),d.$attr));Q=y.$$element;if(K){var ue=/^\s*([@=&])(\??)\s*(\w*)\s*$/;P=e.$new(!0);!I||I!==K&&I!==K.$$originalDirective?Q.data("$isolateScopeNoTemplate",P):Q.data("$isolateScope",P);ba(Q,"ng-isolate-scope");r(K.scope,function(a,c){var d=a.match(ue)||[],f=d[3]||c,g="?"==d[2],d=d[1],k,l,n,q;P.$$isolateBindings[c]=d+f;switch(d){case "@":y.$observe(f,function(a){P[c]=a});y.$$observers[f].$$scope=e;y[f]&&(P[c]=b(y[f])(e)); +break;case "=":if(g&&!y[f])break;l=p(y[f]);q=l.literal?Ca:function(a,b){return a===b||a!==a&&b!==b};n=l.assign||function(){k=P[c]=l(e);throw ja("nonassign",y[f],K.name);};k=P[c]=l(e);P.$watch(function(){var a=l(e);q(a,P[c])||(q(a,k)?n(e,a=P[c]):P[c]=a);return k=a},null,l.literal);break;case "&":l=p(y[f]);P[c]=function(a){return l(e,a)};break;default:throw ja("iscp",K.name,c,a);}})}ra=n&&w;O&&r(O,function(a){var b={$scope:a===K||a.$$isolateScope?P:e,$element:Q,$attrs:y,$transclude:ra},c;C=a.controller; +"@"==C&&(C=y[a.name]);c=s(C,b);ca[a.name]=c;Ia||Q.data("$"+a.name+"Controller",c);a.controllerAs&&(b.$scope[a.controllerAs]=c)});g=0;for(B=k.length;gH.priority)break;if(V=H.scope)M=M||H,H.templateUrl||(fb("new/isolated scope",K,H,x),T(V)&&(K=H));z=H.name;!H.templateUrl&&H.controller&&(V=H.controller,O=O||{},fb("'"+z+"' controller",O[z],H,x),O[z]=H);if(V=H.transclude)F=!0,H.$$tlb|| +(fb("transclusion",ea,H,x),ea=H),"element"==V?(Ia=!0,y=H.priority,V=x,x=d.$$element=A(X.createComment(" "+z+": "+d[z]+" ")),c=x[0],ra(f,wa.call(V,0),c),S=B(V,e,y,g&&g.name,{nonTlbTranscludeDirective:ea})):(V=A(Kb(c)).contents(),x.empty(),S=B(V,e));if(H.template)if(E=!0,fb("template",I,H,x),I=H,V=N(H.template)?H.template(x,d):H.template,V=W(V),H.replace){g=H;V=Ib.test(V)?A($(V)):[];c=V[0];if(1!=V.length||1!==c.nodeType)throw ja("tplrt",z,"");ra(f,x,c);sa={$attr:{}};V=ca(c,[],sa);var Z=a.splice(Ha+ +1,a.length-(Ha+1));K&&D(V);a=a.concat(V).concat(Z);v(d,sa);sa=a.length}else x.html(V);if(H.templateUrl)E=!0,fb("template",I,H,x),I=H,H.replace&&(g=H),J=te(a.splice(Ha,a.length-Ha),x,d,f,F&&S,k,q,{controllerDirectives:O,newIsolateScopeDirective:K,templateDirective:I,nonTlbTranscludeDirective:ea}),sa=a.length;else if(H.compile)try{R=H.compile(x,d,S),N(R)?w(null,R,U,Y):R&&w(R.pre,R.post,U,Y)}catch(ve){l(ve,ia(x))}H.terminal&&(J.terminal=!0,y=Math.max(y,H.priority))}J.scope=M&&!0===M.scope;J.transcludeOnThisElement= +F;J.templateOnThisElement=E;J.transclude=S;n.hasElementTranscludeDirective=Ia;return J}function D(a){for(var b=0,c=a.length;bq.priority)&&-1!=q.restrict.indexOf(f)&&(m&&(q=$b(q,{$$start:m,$$end:n})),b.push(q),p=q)}catch(y){l(y)}}return p}function v(a,b){var c=b.$attr,d=a.$attr,e=a.$$element;r(a,function(d,e){"$"!= +e.charAt(0)&&(b[e]&&b[e]!==d&&(d+=("style"===e?";":" ")+b[e]),a.$set(e,d,!0,c[e]))});r(b,function(b,f){"class"==f?(ba(e,b),a["class"]=(a["class"]?a["class"]+" ":"")+b):"style"==f?(e.attr("style",e.attr("style")+";"+b),a.style=(a.style?a.style+";":"")+b):"$"==f.charAt(0)||a.hasOwnProperty(f)||(a[f]=b,d[f]=c[f])})}function te(a,b,c,d,e,f,g,k){var p=[],l,m,w=b[0],s=a.shift(),y=E({},s,{templateUrl:null,transclude:null,replace:null,$$originalDirective:s}),J=N(s.templateUrl)?s.templateUrl(b,c):s.templateUrl; +b.empty();n.get(t.getTrustedResourceUrl(J),{cache:q}).success(function(q){var n,t;q=W(q);if(s.replace){q=Ib.test(q)?A($(q)):[];n=q[0];if(1!=q.length||1!==n.nodeType)throw ja("tplrt",s.name,J);q={$attr:{}};ra(d,b,n);var B=ca(n,[],q);T(s.scope)&&D(B);a=B.concat(a);v(c,q)}else n=w,b.html(q);a.unshift(y);l=I(a,n,c,e,b,s,f,g,k);r(d,function(a,c){a==n&&(d[c]=b[0])});for(m=O(b[0].childNodes,e);p.length;){q=p.shift();t=p.shift();var K=p.shift(),C=p.shift(),B=b[0];if(t!==w){var P=t.className;k.hasElementTranscludeDirective&& +s.replace||(B=Kb(n));ra(K,A(t),B);ba(A(B),P)}t=l.transcludeOnThisElement?M(q,l.transclude,C):C;l(m,q,B,d,t)}p=null}).error(function(a,b,c,d){throw ja("tpload",d.url);});return function(a,b,c,d,e){a=e;p?(p.push(b),p.push(c),p.push(d),p.push(a)):(l.transcludeOnThisElement&&(a=M(b,l.transclude,e)),l(m,b,c,d,a))}}function F(a,b){var c=b.priority-a.priority;return 0!==c?c:a.name!==b.name?a.namea.status?d:n.reject(d)}var c={method:"get",transformRequest:e.transformRequest,transformResponse:e.transformResponse},d=function(a){var b=e.headers,c=E({},a.headers),d,f,b=E({},b.common,b[x(a.method)]); +a:for(d in b){a=x(d);for(f in c)if(x(f)===a)continue a;c[d]=b[d]}(function(a){var b;r(a,function(c,d){N(c)&&(b=c(),null!=b?a[d]=b:delete a[d])})})(c);return c}(a);E(c,a);c.headers=d;c.method=La(c.method);var f=[function(a){d=a.headers;var c=vc(a.data,uc(d),a.transformRequest);F(c)&&r(d,function(a,b){"content-type"===x(b)&&delete d[b]});F(a.withCredentials)&&!F(e.withCredentials)&&(a.withCredentials=e.withCredentials);return s(a,c,d).then(b,b)},u],g=n.when(c);for(r(t,function(a){(a.request||a.requestError)&& +f.unshift(a.request,a.requestError);(a.response||a.responseError)&&f.push(a.response,a.responseError)});f.length;){a=f.shift();var h=f.shift(),g=g.then(a,h)}g.success=function(a){g.then(function(b){a(b.data,b.status,b.headers,c)});return g};g.error=function(a){g.then(null,function(b){a(b.data,b.status,b.headers,c)});return g};return g}function s(c,f,g){function m(a,b,c,e){C&&(200<=a&&300>a?C.put(A,[a,b,tc(c),e]):C.remove(A));q(b,a,c,e);d.$$phase||d.$apply()}function q(a,b,d,e){b=Math.max(b,0);(200<= +b&&300>b?t.resolve:t.reject)({data:a,status:b,headers:uc(d),config:c,statusText:e})}function s(){var a=Ta(p.pendingRequests,c);-1!==a&&p.pendingRequests.splice(a,1)}var t=n.defer(),r=t.promise,C,I,A=J(c.url,c.params);p.pendingRequests.push(c);r.then(s,s);!c.cache&&!e.cache||(!1===c.cache||"GET"!==c.method&&"JSONP"!==c.method)||(C=T(c.cache)?c.cache:T(e.cache)?e.cache:w);if(C)if(I=C.get(A),D(I)){if(I&&N(I.then))return I.then(s,s),I;L(I)?q(I[1],I[0],ha(I[2]),I[3]):q(I,200,{},"OK")}else C.put(A,r);F(I)&& +((I=Pb(c.url)?b.cookies()[c.xsrfCookieName||e.xsrfCookieName]:u)&&(g[c.xsrfHeaderName||e.xsrfHeaderName]=I),a(c.method,A,f,m,g,c.timeout,c.withCredentials,c.responseType));return r}function J(a,b){if(!b)return a;var c=[];Sc(b,function(a,b){null===a||F(a)||(L(a)||(a=[a]),r(a,function(a){T(a)&&(a=va(a)?a.toISOString():oa(a));c.push(Da(b)+"="+Da(a))}))});0=R&&(!b.match(/^(get|post|head|put|delete|options)$/i)|| +!W.XMLHttpRequest))return new W.ActiveXObject("Microsoft.XMLHTTP");if(W.XMLHttpRequest)return new W.XMLHttpRequest;throw z("$httpBackend")("noxhr");}function Ud(){this.$get=["$browser","$window","$document",function(b,a,c){return ye(b,xe,b.defer,a.angular.callbacks,c[0])}]}function ye(b,a,c,d,e){function f(a,b,c){var f=e.createElement("script"),g=null;f.type="text/javascript";f.src=a;f.async=!0;g=function(a){bb(f,"load",g);bb(f,"error",g);e.body.removeChild(f);f=null;var h=-1,s="unknown";a&&("load"!== +a.type||d[b].called||(a={type:"error"}),s=a.type,h="error"===a.type?404:200);c&&c(h,s)};sb(f,"load",g);sb(f,"error",g);8>=R&&(f.onreadystatechange=function(){G(f.readyState)&&/loaded|complete/.test(f.readyState)&&(f.onreadystatechange=null,g({type:"load"}))});e.body.appendChild(f);return g}var g=-1;return function(e,k,m,l,n,q,p,s){function J(){t=g;K&&K();B&&B.abort()}function w(a,d,e,f,g){O&&c.cancel(O);K=B=null;0===d&&(d=e?200:"file"==xa(k).protocol?404:0);a(1223===d?204:d,e,f,g||"");b.$$completeOutstandingRequest(v)} +var t;b.$$incOutstandingRequestCount();k=k||b.url();if("jsonp"==x(e)){var y="_"+(d.counter++).toString(36);d[y]=function(a){d[y].data=a;d[y].called=!0};var K=f(k.replace("JSON_CALLBACK","angular.callbacks."+y),y,function(a,b){w(l,a,d[y].data,"",b);d[y]=v})}else{var B=a(e);B.open(e,k,!0);r(n,function(a,b){D(a)&&B.setRequestHeader(b,a)});B.onreadystatechange=function(){if(B&&4==B.readyState){var a=null,b=null,c="";t!==g&&(a=B.getAllResponseHeaders(),b="response"in B?B.response:B.responseText);t===g&& +10>R||(c=B.statusText);w(l,t||B.status,b,a,c)}};p&&(B.withCredentials=!0);if(s)try{B.responseType=s}catch(ba){if("json"!==s)throw ba;}B.send(m||null)}if(0=h&&(n.resolve(p),l(q.$$intervalId),delete e[q.$$intervalId]);s||b.$apply()},g);e[q.$$intervalId]=n;return q}var e={};d.cancel= +function(b){return b&&b.$$intervalId in e?(e[b.$$intervalId].reject("canceled"),a.clearInterval(b.$$intervalId),delete e[b.$$intervalId],!0):!1};return d}]}function ad(){this.$get=function(){return{id:"en-us",NUMBER_FORMATS:{DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{minInt:1,minFrac:0,maxFrac:3,posPre:"",posSuf:"",negPre:"-",negSuf:"",gSize:3,lgSize:3},{minInt:1,minFrac:2,maxFrac:2,posPre:"\u00a4",posSuf:"",negPre:"(\u00a4",negSuf:")",gSize:3,lgSize:3}],CURRENCY_SYM:"$"},DATETIME_FORMATS:{MONTH:"January February March April May June July August September October November December".split(" "), SHORTMONTH:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),DAY:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),SHORTDAY:"Sun Mon Tue Wed Thu Fri Sat".split(" "),AMPMS:["AM","PM"],medium:"MMM d, y h:mm:ss a","short":"M/d/yy h:mm a",fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",mediumDate:"MMM d, y",shortDate:"M/d/yy",mediumTime:"h:mm:ss a",shortTime:"h:mm a"},pluralCat:function(b){return 1===b?"one":"other"}}}}function Qb(b){b=b.split("/");for(var a=b.length;a--;)b[a]= -lb(b[a]);return b.join("/")}function zc(b,a,c){b=ua(b,c);a.$$protocol=b.protocol;a.$$host=b.hostname;a.$$port=U(b.port)||ze[b.protocol]||null}function Ac(b,a,c){var d="/"!==b.charAt(0);d&&(b="/"+b);b=ua(b,c);a.$$path=decodeURIComponent(d&&"/"===b.pathname.charAt(0)?b.pathname.substring(1):b.pathname);a.$$search=ec(b.search);a.$$hash=decodeURIComponent(b.hash);a.$$path&&"/"!=a.$$path.charAt(0)&&(a.$$path="/"+a.$$path)}function ra(b,a){if(0===a.indexOf(b))return a.substr(b.length)}function eb(b){var a= -b.indexOf("#");return-1==a?b:b.substr(0,a)}function Rb(b){return b.substr(0,eb(b).lastIndexOf("/")+1)}function Bc(b,a){this.$$html5=!0;a=a||"";var c=Rb(b);zc(b,this,b);this.$$parse=function(a){var e=ra(c,a);if(!v(e))throw Sb("ipthprfx",a,c);Ac(e,this,b);this.$$path||(this.$$path="/");this.$$compose()};this.$$compose=function(){var a=Cb(this.$$search),b=this.$$hash?"#"+lb(this.$$hash):"";this.$$url=Qb(this.$$path)+(a?"?"+a:"")+b;this.$$absUrl=c+this.$$url.substr(1)};this.$$rewrite=function(d){var e; -if((e=ra(b,d))!==t)return d=e,(e=ra(a,e))!==t?c+(ra("/",e)||e):b+d;if((e=ra(c,d))!==t)return c+e;if(c==d+"/")return c}}function Tb(b,a){var c=Rb(b);zc(b,this,b);this.$$parse=function(d){var e=ra(b,d)||ra(c,d),e="#"==e.charAt(0)?ra(a,e):this.$$html5?e:"";if(!v(e))throw Sb("ihshprfx",d,a);Ac(e,this,b);d=this.$$path;var f=/^\/[A-Z]:(\/.*)/;0===e.indexOf(b)&&(e=e.replace(b,""));f.exec(e)||(d=(e=f.exec(d))?e[1]:d);this.$$path=d;this.$$compose()};this.$$compose=function(){var c=Cb(this.$$search),e=this.$$hash? -"#"+lb(this.$$hash):"";this.$$url=Qb(this.$$path)+(c?"?"+c:"")+e;this.$$absUrl=b+(this.$$url?a+this.$$url:"")};this.$$rewrite=function(a){if(eb(b)==eb(a))return a}}function Ub(b,a){this.$$html5=!0;Tb.apply(this,arguments);var c=Rb(b);this.$$rewrite=function(d){var e;if(b==eb(d))return d;if(e=ra(c,d))return b+a+e;if(c===d+"/")return c};this.$$compose=function(){var c=Cb(this.$$search),e=this.$$hash?"#"+lb(this.$$hash):"";this.$$url=Qb(this.$$path)+(c?"?"+c:"")+e;this.$$absUrl=b+a+this.$$url}}function tb(b){return function(){return this[b]}} -function Cc(b,a){return function(c){if(x(c))return this[b];this[b]=a(c);this.$$compose();return this}}function Wd(){var b="",a=!1;this.hashPrefix=function(a){return y(a)?(b=a,this):b};this.html5Mode=function(b){return y(b)?(a=b,this):a};this.$get=["$rootScope","$browser","$sniffer","$rootElement",function(c,d,e,f){function g(a){c.$broadcast("$locationChangeSuccess",k.absUrl(),a)}var k,m,h=d.baseHref(),l=d.url(),n;a?(n=l.substring(0,l.indexOf("/",l.indexOf("//")+2))+(h||"/"),m=e.history?Bc:Ub):(n= -eb(l),m=Tb);k=new m(n,"#"+b);k.$$parse(k.$$rewrite(l));var p=/^\s*(javascript|mailto):/i;f.on("click",function(a){if(!a.ctrlKey&&!a.metaKey&&2!=a.which){for(var e=w(a.target);"a"!==K(e[0].nodeName);)if(e[0]===f[0]||!(e=e.parent())[0])return;var g=e.prop("href");T(g)&&"[object SVGAnimatedString]"===g.toString()&&(g=ua(g.animVal).href);if(!p.test(g)){if(m===Ub){var h=e.attr("href")||e.attr("xlink:href");if(h&&0>h.indexOf("://"))if(g="#"+b,"/"==h[0])g=n+g+h;else if("#"==h[0])g=n+g+(k.path()||"/")+h; -else{var l=k.path().split("/"),h=h.split("/");2!==l.length||l[1]||(l.length=1);for(var q=0;qe?Dc(d[0],d[1],d[2],d[3],d[4],c,a):function(b,f){var g=0,k;do k=Dc(d[g++],d[g++],d[g++],d[g++],d[g++],c,a)(b,f),f=t,b=k;while(ga)for(b in h++,e)e.hasOwnProperty(b)&&!d.hasOwnProperty(b)&&(r--,delete e[b])}else e!==d&&(e=d,h++);return h},function(){n?(n=!1,b(d,d,c)):b(d,g,c);if(k)if(T(d))if(Pa(d)){g=Array(d.length);for(var a=0;at&&(w=4-t,O[w]||(O[w]=[]),B=P(d.exp)?"fn: "+(d.exp.name||d.exp.toString()): -d.exp,B+="; newVal: "+na(f)+"; oldVal: "+na(k),O[w].push(B));else if(d===c){z=!1;break a}}catch(y){p.$$phase=null,e(y)}if(!(h=L.$$childHead||L!==this&&L.$$nextSibling))for(;L!==this&&!(h=L.$$nextSibling);)L=L.$parent}while(L=h);if((z||l.length)&&!t--)throw p.$$phase=null,a("infdig",b,na(O));}while(z||l.length);for(p.$$phase=null;r.length;)try{r.shift()()}catch(v){e(v)}},$destroy:function(){if(!this.$$destroyed){var a=this.$parent;this.$broadcast("$destroy");this.$$destroyed=!0;this!==p&&(r(this.$$listenerCount, -Bb(null,l,this)),a.$$childHead==this&&(a.$$childHead=this.$$nextSibling),a.$$childTail==this&&(a.$$childTail=this.$$prevSibling),this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling),this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling),this.$parent=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=this.$root=null,this.$$listeners={},this.$$watchers=this.$$asyncQueue=this.$$postDigestQueue=[],this.$destroy=this.$digest=this.$apply=E,this.$on= -this.$watch=function(){return E})}},$eval:function(a,b){return f(a)(this,b)},$evalAsync:function(a){p.$$phase||p.$$asyncQueue.length||g.defer(function(){p.$$asyncQueue.length&&p.$digest()});this.$$asyncQueue.push({scope:this,expression:a})},$$postDigest:function(a){this.$$postDigestQueue.push(a)},$apply:function(a){try{return m("$apply"),this.$eval(a)}catch(b){e(b)}finally{p.$$phase=null;try{p.$digest()}catch(c){throw e(c),c;}}},$on:function(a,b){var c=this.$$listeners[a];c||(this.$$listeners[a]= -c=[]);c.push(b);var d=this;do d.$$listenerCount[a]||(d.$$listenerCount[a]=0),d.$$listenerCount[a]++;while(d=d.$parent);var e=this;return function(){c[Ra(c,b)]=null;l(e,1,a)}},$emit:function(a,b){var c=[],d,f=this,g=!1,k={name:a,targetScope:f,stopPropagation:function(){g=!0},preventDefault:function(){k.defaultPrevented=!0},defaultPrevented:!1},h=[k].concat(Ba.call(arguments,1)),l,m;do{d=f.$$listeners[a]||c;k.currentScope=f;l=0;for(m=d.length;lc.msieDocumentMode)throw xa("iequirks");var e=ha(ga);e.isEnabled=function(){return b};e.trustAs=d.trustAs;e.getTrusted=d.getTrusted;e.valueOf=d.valueOf;b||(e.trustAs=e.getTrusted=function(a,b){return b}, -e.valueOf=Qa);e.parseAs=function(b,c){var d=a(c);return d.literal&&d.constant?d:function(a,c){return e.getTrusted(b,d(a,c))}};var f=e.parseAs,g=e.getTrusted,k=e.trustAs;r(ga,function(a,b){var c=K(b);e[Za("parse_as_"+c)]=function(b){return f(a,b)};e[Za("get_trusted_"+c)]=function(b){return g(a,b)};e[Za("trust_as_"+c)]=function(b){return k(a,b)}});return e}]}function ce(){this.$get=["$window","$document",function(b,a){var c={},d=U((/android (\d+)/.exec(K((b.navigator||{}).userAgent))||[])[1]),e=/Boxee/i.test((b.navigator|| -{}).userAgent),f=a[0]||{},g=f.documentMode,k,m=/^(Moz|webkit|O|ms)(?=[A-Z])/,h=f.body&&f.body.style,l=!1,n=!1;if(h){for(var p in h)if(l=m.exec(p)){k=l[0];k=k.substr(0,1).toUpperCase()+k.substr(1);break}k||(k="WebkitOpacity"in h&&"webkit");l=!!("transition"in h||k+"Transition"in h);n=!!("animation"in h||k+"Animation"in h);!d||l&&n||(l=v(f.body.style.webkitTransition),n=v(f.body.style.webkitAnimation))}return{history:!(!b.history||!b.history.pushState||4>d||e),hashchange:"onhashchange"in b&&(!g||7< -g),hasEvent:function(a){if("input"==a&&9==Q)return!1;if(x(c[a])){var b=f.createElement("div");c[a]="on"+a in b}return c[a]},csp:Xa(),vendorPrefix:k,transitions:l,animations:n,android:d,msie:Q,msieDocumentMode:g}}]}function ee(){this.$get=["$rootScope","$browser","$q","$exceptionHandler",function(b,a,c,d){function e(e,k,m){var h=c.defer(),l=h.promise,n=y(m)&&!m;k=a.defer(function(){try{h.resolve(e())}catch(a){h.reject(a),d(a)}finally{delete f[l.$$timeoutId]}n||b.$apply()},k);l.$$timeoutId=k;f[k]=h; -return l}var f={};e.cancel=function(b){return b&&b.$$timeoutId in f?(f[b.$$timeoutId].reject("canceled"),delete f[b.$$timeoutId],a.defer.cancel(b.$$timeoutId)):!1};return e}]}function ua(b,a){var c=b;Q&&(Y.setAttribute("href",c),c=Y.href);Y.setAttribute("href",c);return{href:Y.href,protocol:Y.protocol?Y.protocol.replace(/:$/,""):"",host:Y.host,search:Y.search?Y.search.replace(/^\?/,""):"",hash:Y.hash?Y.hash.replace(/^#/,""):"",hostname:Y.hostname,port:Y.port,pathname:"/"===Y.pathname.charAt(0)?Y.pathname: -"/"+Y.pathname}}function Pb(b){b=v(b)?ua(b):b;return b.protocol===Hc.protocol&&b.host===Hc.host}function fe(){this.$get=ba(W)}function mc(b){function a(d,e){if(T(d)){var f={};r(d,function(b,c){f[c]=a(c,b)});return f}return b.factory(d+c,e)}var c="Filter";this.register=a;this.$get=["$injector",function(a){return function(b){return a.get(b+c)}}];a("currency",Ic);a("date",Jc);a("filter",Ce);a("json",De);a("limitTo",Ee);a("lowercase",Fe);a("number",Kc);a("orderBy",Lc);a("uppercase",Ge)}function Ce(){return function(b, -a,c){if(!J(b))return b;var d=typeof c,e=[];e.check=function(a){for(var b=0;bb;b=Math.abs(b);var g=b+"",k="",m=[],h=!1;if(-1!==g.indexOf("e")){var l=g.match(/([\d\.]+)e(-?)(\d+)/);l&&"-"==l[2]&& -l[3]>e+1?(g="0",b=0):(k=g,h=!0)}if(h)0b)&&(k=b.toFixed(e));else{g=(g.split(Nc)[1]||"").length;x(e)&&(e=Math.min(Math.max(a.minFrac,g),a.maxFrac));b=+(Math.round(+(b.toString()+"e"+e)).toString()+"e"+-e);0===b&&(f=!1);b=(""+b).split(Nc);g=b[0];b=b[1]||"";var l=0,n=a.lgSize,p=a.gSize;if(g.length>=n+p)for(l=g.length-n,h=0;hb&&(d="-",b=-b);for(b=""+b;b.length-c)e+=c;0===e&&-12==c&&(e=12);return Xb(e,a,d)}}function vb(b,a){return function(c,d){var e=c["get"+b](),f=Ia(a?"SHORT"+b:b);return d[f][e]}}function Jc(b){function a(a){var b;if(b=a.match(c)){a=new Date(0);var f=0,g=0,k=b[8]? -a.setUTCFullYear:a.setFullYear,m=b[8]?a.setUTCHours:a.setHours;b[9]&&(f=U(b[9]+b[10]),g=U(b[9]+b[11]));k.call(a,U(b[1]),U(b[2])-1,U(b[3]));f=U(b[4]||0)-f;g=U(b[5]||0)-g;k=U(b[6]||0);b=Math.round(1E3*parseFloat("0."+(b[7]||0)));m.call(a,f,g,k,b)}return a}var c=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(c,e){var f="",g=[],k,m;e=e||"mediumDate";e=b.DATETIME_FORMATS[e]||e;v(c)&&(c=He.test(c)?U(c):a(c));ib(c)&&(c=new Date(c)); -if(!ta(c))return c;for(;e;)(m=Ie.exec(e))?(g=g.concat(Ba.call(m,1)),e=g.pop()):(g.push(e),e=null);r(g,function(a){k=Je[a];f+=k?k(c,b.DATETIME_FORMATS):a.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return f}}function De(){return function(b){return na(b,!0)}}function Ee(){return function(b,a){if(!J(b)&&!v(b))return b;a=Infinity===Math.abs(Number(a))?Number(a):U(a);if(v(b))return a?0<=a?b.slice(0,a):b.slice(a,b.length):"";var c=[],d,e;a>b.length?a=b.length:a<-b.length&&(a=-b.length);0a||37<=a&&40>=a)||q()});if(e.hasEvent("paste"))a.on("paste cut",q)}a.on("change",n);d.$render=function(){a.val(d.$isEmpty(d.$viewValue)?"":d.$viewValue)};var s=c.ngPattern;s&&((e=s.match(/^\/(.*)\/([gim]*)$/))?(s=RegExp(e[1],e[2]),e=function(a){return sa(d, -"pattern",d.$isEmpty(a)||s.test(a),a)}):e=function(c){var e=b.$eval(s);if(!e||!e.test)throw C("ngPattern")("noregexp",s,e,ia(a));return sa(d,"pattern",d.$isEmpty(c)||e.test(c),c)},d.$formatters.push(e),d.$parsers.push(e));if(c.ngMinlength){var r=U(c.ngMinlength);e=function(a){return sa(d,"minlength",d.$isEmpty(a)||a.length>=r,a)};d.$parsers.push(e);d.$formatters.push(e)}if(c.ngMaxlength){var u=U(c.ngMaxlength);e=function(a){return sa(d,"maxlength",d.$isEmpty(a)||a.length<=u,a)};d.$parsers.push(e); -d.$formatters.push(e)}}function Yb(b,a){b="ngClass"+b;return["$animate",function(c){function d(a,b){var c=[],d=0;a:for(;dQ?function(b){b=b.nodeName?b:b[0];return b.scopeName&&"HTML"!=b.scopeName?Ia(b.scopeName+":"+b.nodeName):b.nodeName}:function(b){return b.nodeName?b.nodeName:b[0].nodeName};var Xa=function(){if(y(Xa.isActive_))return Xa.isActive_;var b=!(!X.querySelector("[ng-csp]")&&!X.querySelector("[data-ng-csp]")); -if(!b)try{new Function("")}catch(a){b=!0}return Xa.isActive_=b},Yc=/[A-Z]/g,ad={full:"1.2.26",major:1,minor:2,dot:26,codeName:"captivating-disinterest"};S.expando="ng339";var ab=S.cache={},ne=1,sb=W.document.addEventListener?function(b,a,c){b.addEventListener(a,c,!1)}:function(b,a,c){b.attachEvent("on"+a,c)},$a=W.document.removeEventListener?function(b,a,c){b.removeEventListener(a,c,!1)}:function(b,a,c){b.detachEvent("on"+a,c)};S._data=function(b){return this.cache[b[this.expando]]||{}};var ie=/([\:\-\_]+(.))/g, -je=/^moz([A-Z])/,Hb=C("jqLite"),ke=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,Ib=/<|&#?\w+;/,le=/<([\w:]+)/,me=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ea={option:[1,'"],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ea.optgroup=ea.option;ea.tbody=ea.tfoot=ea.colgroup=ea.caption=ea.thead;ea.th= -ea.td;var La=S.prototype={ready:function(b){function a(){c||(c=!0,b())}var c=!1;"complete"===X.readyState?setTimeout(a):(this.on("DOMContentLoaded",a),S(W).on("load",a))},toString:function(){var b=[];r(this,function(a){b.push(""+a)});return"["+b.join(", ")+"]"},eq:function(b){return 0<=b?w(this[b]):w(this[this.length+b])},length:0,push:Me,sort:[].sort,splice:[].splice},qb={};r("multiple selected checked disabled readOnly required open".split(" "),function(b){qb[K(b)]=b});var rc={};r("input select option textarea button form details".split(" "), -function(b){rc[Ia(b)]=!0});r({data:Mb,removeData:Lb},function(b,a){S[a]=b});r({data:Mb,inheritedData:pb,scope:function(b){return w.data(b,"$scope")||pb(b.parentNode||b,["$isolateScope","$scope"])},isolateScope:function(b){return w.data(b,"$isolateScope")||w.data(b,"$isolateScopeNoTemplate")},controller:oc,injector:function(b){return pb(b,"$injector")},removeAttr:function(b,a){b.removeAttribute(a)},hasClass:Nb,css:function(b,a,c){a=Za(a);if(y(c))b.style[a]=c;else{var d;8>=Q&&(d=b.currentStyle&&b.currentStyle[a], -""===d&&(d="auto"));d=d||b.style[a];8>=Q&&(d=""===d?t:d);return d}},attr:function(b,a,c){var d=K(a);if(qb[d])if(y(c))c?(b[a]=!0,b.setAttribute(a,d)):(b[a]=!1,b.removeAttribute(d));else return b[a]||(b.attributes.getNamedItem(a)||E).specified?d:t;else if(y(c))b.setAttribute(a,c);else if(b.getAttribute)return b=b.getAttribute(a,2),null===b?t:b},prop:function(b,a,c){if(y(c))b[a]=c;else return b[a]},text:function(){function b(b,d){var e=a[b.nodeType];if(x(d))return e?b[e]:"";b[e]=d}var a=[];9>Q?(a[1]= -"innerText",a[3]="nodeValue"):a[1]=a[3]="textContent";b.$dv="";return b}(),val:function(b,a){if(x(a)){if("SELECT"===Ma(b)&&b.multiple){var c=[];r(b.options,function(a){a.selected&&c.push(a.value||a.text)});return 0===c.length?null:c}return b.value}b.value=a},html:function(b,a){if(x(a))return b.innerHTML;for(var c=0,d=b.childNodes;c":function(a,c,d,e){return d(a,c)>e(a,c)},"<=":function(a,c,d,e){return d(a,c)<=e(a,c)},">=":function(a,c,d,e){return d(a,c)>=e(a,c)},"&&":function(a,c,d,e){return d(a,c)&&e(a,c)},"||":function(a,c,d,e){return d(a,c)||e(a,c)},"&":function(a,c,d,e){return d(a,c)&e(a,c)},"|":function(a,c,d,e){return e(a,c)(a,c,d(a,c))},"!":function(a,c,d){return!d(a,c)}},Re={n:"\n",f:"\f",r:"\r", -t:"\t",v:"\v","'":"'",'"':'"'},Wb=function(a){this.options=a};Wb.prototype={constructor:Wb,lex:function(a){this.text=a;this.index=0;this.ch=t;this.lastCh=":";for(this.tokens=[];this.index=a},isWhitespace:function(a){return" "===a||"\r"===a||"\t"===a||"\n"===a||"\v"===a||"\u00a0"===a},isIdent:function(a){return"a"<=a&&"z">=a||"A"<=a&&"Z">=a||"_"===a||"$"===a},isExpOperator:function(a){return"-"===a||"+"===a||this.isNumber(a)},throwError:function(a,c,d){d=d||this.index;c=y(c)?"s "+c+"-"+this.index+" ["+ -this.text.substring(c,d)+"]":" "+d;throw la("lexerr",a,c,this.text);},readNumber:function(){for(var a="",c=this.index;this.indexg?Cc(f[0],f[1],f[2],f[3],f[4],c,a):function(b,d){var e=0,h;do h=Cc(f[e++],f[e++],f[e++],f[e++],f[e++],c,a)(b,d),d=u,b=h;while(eb.length?a=b.length:a<-b.length&&(a=-b.length);0a||37<=a&&40>=a)||p()});if(e.hasEvent("paste"))a.on("paste cut",p)}a.on("change",n);d.$render=function(){a.val(d.$isEmpty(d.$viewValue)?"":d.$viewValue)};var s=c.ngPattern;s&&((e=s.match(/^\/(.*)\/([gim]*)$/))? +(s=RegExp(e[1],e[2]),e=function(a){return ua(d,"pattern",d.$isEmpty(a)||s.test(a),a)}):e=function(c){var e=b.$eval(s);if(!e||!e.test)throw z("ngPattern")("noregexp",s,e,ia(a));return ua(d,"pattern",d.$isEmpty(c)||e.test(c),c)},d.$formatters.push(e),d.$parsers.push(e));if(c.ngMinlength){var r=U(c.ngMinlength);e=function(a){return ua(d,"minlength",d.$isEmpty(a)||a.length>=r,a)};d.$parsers.push(e);d.$formatters.push(e)}if(c.ngMaxlength){var w=U(c.ngMaxlength);e=function(a){return ua(d,"maxlength",d.$isEmpty(a)|| +a.length<=w,a)};d.$parsers.push(e);d.$formatters.push(e)}}function Wb(b,a){b="ngClass"+b;return["$animate",function(c){function d(a,b){var c=[],d=0;a:for(;dR?function(b){b=b.nodeName?b:b[0];return b.scopeName&&"HTML"!=b.scopeName?La(b.scopeName+":"+b.nodeName):b.nodeName}:function(b){return b.nodeName?b.nodeName:b[0].nodeName};var Za=function(){if(D(Za.isActive_))return Za.isActive_;var b=!(!X.querySelector("[ng-csp]")&& +!X.querySelector("[data-ng-csp]"));if(!b)try{new Function("")}catch(a){b=!0}return Za.isActive_=b},Xc=/[A-Z]/g,$c={full:"1.2.28",major:1,minor:2,dot:28,codeName:"finnish-disembarkation"};S.expando="ng339";var cb=S.cache={},me=1,sb=W.document.addEventListener?function(b,a,c){b.addEventListener(a,c,!1)}:function(b,a,c){b.attachEvent("on"+a,c)},bb=W.document.removeEventListener?function(b,a,c){b.removeEventListener(a,c,!1)}:function(b,a,c){b.detachEvent("on"+a,c)};S._data=function(b){return this.cache[b[this.expando]]|| +{}};var he=/([\:\-\_]+(.))/g,ie=/^moz([A-Z])/,Hb=z("jqLite"),je=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,Ib=/<|&#?\w+;/,ke=/<([\w:]+)/,le=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,da={option:[1,'"],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};da.optgroup=da.option;da.tbody=da.tfoot=da.colgroup= +da.caption=da.thead;da.th=da.td;var Oa=S.prototype={ready:function(b){function a(){c||(c=!0,b())}var c=!1;"complete"===X.readyState?setTimeout(a):(this.on("DOMContentLoaded",a),S(W).on("load",a))},toString:function(){var b=[];r(this,function(a){b.push(""+a)});return"["+b.join(", ")+"]"},eq:function(b){return 0<=b?A(this[b]):A(this[this.length+b])},length:0,push:Pe,sort:[].sort,splice:[].splice},rb={};r("multiple selected checked disabled readOnly required open".split(" "),function(b){rb[x(b)]=b}); +var pc={};r("input select option textarea button form details".split(" "),function(b){pc[La(b)]=!0});r({data:Mb,removeData:Lb},function(b,a){S[a]=b});r({data:Mb,inheritedData:qb,scope:function(b){return A.data(b,"$scope")||qb(b.parentNode||b,["$isolateScope","$scope"])},isolateScope:function(b){return A.data(b,"$isolateScope")||A.data(b,"$isolateScopeNoTemplate")},controller:mc,injector:function(b){return qb(b,"$injector")},removeAttr:function(b,a){b.removeAttribute(a)},hasClass:Nb,css:function(b, +a,c){a=ab(a);if(D(c))b.style[a]=c;else{var d;8>=R&&(d=b.currentStyle&&b.currentStyle[a],""===d&&(d="auto"));d=d||b.style[a];8>=R&&(d=""===d?u:d);return d}},attr:function(b,a,c){var d=x(a);if(rb[d])if(D(c))c?(b[a]=!0,b.setAttribute(a,d)):(b[a]=!1,b.removeAttribute(d));else return b[a]||(b.attributes.getNamedItem(a)||v).specified?d:u;else if(D(c))b.setAttribute(a,c);else if(b.getAttribute)return b=b.getAttribute(a,2),null===b?u:b},prop:function(b,a,c){if(D(c))b[a]=c;else return b[a]},text:function(){function b(b, +d){var e=a[b.nodeType];if(F(d))return e?b[e]:"";b[e]=d}var a=[];9>R?(a[1]="innerText",a[3]="nodeValue"):a[1]=a[3]="textContent";b.$dv="";return b}(),val:function(b,a){if(F(a)){if("SELECT"===Pa(b)&&b.multiple){var c=[];r(b.options,function(a){a.selected&&c.push(a.value||a.text)});return 0===c.length?null:c}return b.value}b.value=a},html:function(b,a){if(F(a))return b.innerHTML;for(var c=0,d=b.childNodes;c":function(a,c,d,e){return d(a,c)>e(a,c)},"<=":function(a,c,d,e){return d(a,c)<=e(a,c)},">=":function(a,c,d,e){return d(a,c)>=e(a,c)},"&&":function(a,c,d,e){return d(a,c)&&e(a,c)},"||":function(a,c,d,e){return d(a,c)||e(a,c)},"&":function(a,c,d,e){return d(a, +c)&e(a,c)},"|":function(a,c,d,e){return e(a,c)(a,c,d(a,c))},"!":function(a,c,d){return!d(a,c)}},Ue={n:"\n",f:"\f",r:"\r",t:"\t",v:"\v","'":"'",'"':'"'},Ub=function(a){this.options=a};Ub.prototype={constructor:Ub,lex:function(a){this.text=a;this.index=0;this.ch=u;this.lastCh=":";for(this.tokens=[];this.index=a},isWhitespace:function(a){return" "===a||"\r"===a||"\t"===a||"\n"===a||"\v"===a||"\u00a0"===a},isIdent:function(a){return"a"<=a&&"z">=a||"A"<=a&&"Z">=a||"_"===a||"$"===a},isExpOperator:function(a){return"-"===a||"+"===a||this.isNumber(a)}, +throwError:function(a,c,d){d=d||this.index;c=D(c)?"s "+c+"-"+this.index+" ["+this.text.substring(c,d)+"]":" "+d;throw la("lexerr",a,c,this.text);},readNumber:function(){for(var a="",c=this.index;this.index","<=",">="))a=this.binaryFn(a,c.fn,this.relational());return a},additive:function(){for(var a=this.multiplicative(),c;c=this.expect("+","-");)a=this.binaryFn(a,c.fn,this.multiplicative());return a},multiplicative:function(){for(var a=this.unary(),c;c=this.expect("*","/","%");)a=this.binaryFn(a,c.fn,this.unary());return a},unary:function(){var a;return this.expect("+")?this.primary():(a=this.expect("-"))?this.binaryFn(fb.ZERO,a.fn, -this.unary()):(a=this.expect("!"))?this.unaryFn(a.fn,this.unary()):this.primary()},fieldAccess:function(a){var c=this,d=this.expect().text,e=Ec(d,this.options,this.text);return D(function(c,d,k){return e(k||a(c,d))},{assign:function(e,g,k){(k=a(e,k))||a.assign(e,k={});return ub(k,d,g,c.text,c.options)}})},objectIndex:function(a){var c=this,d=this.expression();this.consume("]");return D(function(e,f){var g=a(e,f),k=d(e,f),m;ka(k,c.text);if(!g)return t;(g=va(g[k],c.text))&&(g.then&&c.options.unwrapPromises)&& -(m=g,"$$v"in g||(m.$$v=t,m.then(function(a){m.$$v=a})),g=g.$$v);return g},{assign:function(e,f,g){var k=ka(d(e,g),c.text);(g=va(a(e,g),c.text))||a.assign(e,g={});return g[k]=f}})},functionCall:function(a,c){var d=[];if(")"!==this.peekToken().text){do d.push(this.expression());while(this.expect(","))}this.consume(")");var e=this;return function(f,g){for(var k=[],m=c?c(f,g):f,h=0;ha.getHours()?c.AMPMS[0]:c.AMPMS[1]},Z:function(a){a=-1*a.getTimezoneOffset();return a=(0<=a?"+":"")+(Xb(Math[0< -a?"floor":"ceil"](a/60),2)+Xb(Math.abs(a%60),2))}},Ie=/((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z))(.*)/,He=/^\-?\d+$/;Jc.$inject=["$locale"];var Fe=ba(K),Ge=ba(Ia);Lc.$inject=["$parse"];var dd=ba({restrict:"E",compile:function(a,c){8>=Q&&(c.href||c.name||c.$set("href",""),a.append(X.createComment("IE fix")));if(!c.href&&!c.xlinkHref&&!c.name)return function(a,c){var f="[object SVGAnimatedString]"===za.call(c.prop("href"))?"xlink:href":"href";c.on("click",function(a){c.attr(f)|| -a.preventDefault()})}}}),Fb={};r(qb,function(a,c){if("multiple"!=a){var d=pa("ng-"+c);Fb[d]=function(){return{priority:100,link:function(a,f,g){a.$watch(g[d],function(a){g.$set(c,!!a)})}}}}});r(["src","srcset","href"],function(a){var c=pa("ng-"+a);Fb[c]=function(){return{priority:99,link:function(d,e,f){var g=a,k=a;"href"===a&&"[object SVGAnimatedString]"===za.call(e.prop("href"))&&(k="xlinkHref",f.$attr[k]="xlink:href",g=null);f.$observe(c,function(c){c?(f.$set(k,c),Q&&g&&e.prop(g,f[k])):"href"=== -a&&f.$set(k,null)})}}}});var yb={$addControl:E,$removeControl:E,$setValidity:E,$setDirty:E,$setPristine:E};Oc.$inject=["$element","$attrs","$scope","$animate"];var Rc=function(a){return["$timeout",function(c){return{name:"form",restrict:a?"EAC":"E",controller:Oc,compile:function(){return{pre:function(a,e,f,g){if(!f.action){var k=function(a){a.preventDefault?a.preventDefault():a.returnValue=!1};sb(e[0],"submit",k);e.on("$destroy",function(){c(function(){$a(e[0],"submit",k)},0,!1)})}var m=e.parent().controller("form"), -h=f.name||f.ngForm;h&&ub(a,h,g,h);if(m)e.on("$destroy",function(){m.$removeControl(g);h&&ub(a,h,t,h);D(g,yb)})}}}}}]},ed=Rc(),rd=Rc(!0),Se=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,Te=/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,Ue=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/,Sc={text:Ab,number:function(a,c,d,e,f,g){Ab(a,c,d,e,f,g);e.$parsers.push(function(a){var c=e.$isEmpty(a);if(c||Ue.test(a))return e.$setValidity("number", -!0),""===a?null:c?a:parseFloat(a);e.$setValidity("number",!1);return t});Ke(e,"number",Ve,null,e.$$validityState);e.$formatters.push(function(a){return e.$isEmpty(a)?"":""+a});d.min&&(a=function(a){var c=parseFloat(d.min);return sa(e,"min",e.$isEmpty(a)||a>=c,a)},e.$parsers.push(a),e.$formatters.push(a));d.max&&(a=function(a){var c=parseFloat(d.max);return sa(e,"max",e.$isEmpty(a)||a<=c,a)},e.$parsers.push(a),e.$formatters.push(a));e.$formatters.push(function(a){return sa(e,"number",e.$isEmpty(a)|| -ib(a),a)})},url:function(a,c,d,e,f,g){Ab(a,c,d,e,f,g);a=function(a){return sa(e,"url",e.$isEmpty(a)||Se.test(a),a)};e.$formatters.push(a);e.$parsers.push(a)},email:function(a,c,d,e,f,g){Ab(a,c,d,e,f,g);a=function(a){return sa(e,"email",e.$isEmpty(a)||Te.test(a),a)};e.$formatters.push(a);e.$parsers.push(a)},radio:function(a,c,d,e){x(d.name)&&c.attr("name",hb());c.on("click",function(){c[0].checked&&a.$apply(function(){e.$setViewValue(d.value)})});e.$render=function(){c[0].checked=d.value==e.$viewValue}; -d.$observe("value",e.$render)},checkbox:function(a,c,d,e){var f=d.ngTrueValue,g=d.ngFalseValue;v(f)||(f=!0);v(g)||(g=!1);c.on("click",function(){a.$apply(function(){e.$setViewValue(c[0].checked)})});e.$render=function(){c[0].checked=e.$viewValue};e.$isEmpty=function(a){return a!==f};e.$formatters.push(function(a){return a===f});e.$parsers.push(function(a){return a?f:g})},hidden:E,button:E,submit:E,reset:E,file:E},Ve=["badInput"],jc=["$browser","$sniffer",function(a,c){return{restrict:"E",require:"?ngModel", -link:function(d,e,f,g){g&&(Sc[K(f.type)]||Sc.text)(d,e,f,g,c,a)}}}],wb="ng-valid",xb="ng-invalid",Oa="ng-pristine",zb="ng-dirty",We=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate",function(a,c,d,e,f,g){function k(a,c){c=c?"-"+mb(c,"-"):"";g.removeClass(e,(a?xb:wb)+c);g.addClass(e,(a?wb:xb)+c)}this.$modelValue=this.$viewValue=Number.NaN;this.$parsers=[];this.$formatters=[];this.$viewChangeListeners=[];this.$pristine=!0;this.$dirty=!1;this.$valid=!0;this.$invalid=!1;this.$name= -d.name;var m=f(d.ngModel),h=m.assign;if(!h)throw C("ngModel")("nonassign",d.ngModel,ia(e));this.$render=E;this.$isEmpty=function(a){return x(a)||""===a||null===a||a!==a};var l=e.inheritedData("$formController")||yb,n=0,p=this.$error={};e.addClass(Oa);k(!0);this.$setValidity=function(a,c){p[a]!==!c&&(c?(p[a]&&n--,n||(k(!0),this.$valid=!0,this.$invalid=!1)):(k(!1),this.$invalid=!0,this.$valid=!1,n++),p[a]=!c,k(c,a),l.$setValidity(a,c,this))};this.$setPristine=function(){this.$dirty=!1;this.$pristine= -!0;g.removeClass(e,zb);g.addClass(e,Oa)};this.$setViewValue=function(d){this.$viewValue=d;this.$pristine&&(this.$dirty=!0,this.$pristine=!1,g.removeClass(e,Oa),g.addClass(e,zb),l.$setDirty());r(this.$parsers,function(a){d=a(d)});this.$modelValue!==d&&(this.$modelValue=d,h(a,d),r(this.$viewChangeListeners,function(a){try{a()}catch(d){c(d)}}))};var q=this;a.$watch(function(){var c=m(a);if(q.$modelValue!==c){var d=q.$formatters,e=d.length;for(q.$modelValue=c;e--;)c=d[e](c);q.$viewValue!==c&&(q.$viewValue= -c,q.$render())}return c})}],Gd=function(){return{require:["ngModel","^?form"],controller:We,link:function(a,c,d,e){var f=e[0],g=e[1]||yb;g.$addControl(f);a.$on("$destroy",function(){g.$removeControl(f)})}}},Id=ba({require:"ngModel",link:function(a,c,d,e){e.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}),kc=function(){return{require:"?ngModel",link:function(a,c,d,e){if(e){d.required=!0;var f=function(a){if(d.required&&e.$isEmpty(a))e.$setValidity("required",!1);else return e.$setValidity("required", -!0),a};e.$formatters.push(f);e.$parsers.unshift(f);d.$observe("required",function(){f(e.$viewValue)})}}}},Hd=function(){return{require:"ngModel",link:function(a,c,d,e){var f=(a=/\/(.*)\//.exec(d.ngList))&&RegExp(a[1])||d.ngList||",";e.$parsers.push(function(a){if(!x(a)){var c=[];a&&r(a.split(f),function(a){a&&c.push(aa(a))});return c}});e.$formatters.push(function(a){return J(a)?a.join(", "):t});e.$isEmpty=function(a){return!a||!a.length}}}},Xe=/^(true|false|\d+)$/,Jd=function(){return{priority:100, -compile:function(a,c){return Xe.test(c.ngValue)?function(a,c,f){f.$set("value",a.$eval(f.ngValue))}:function(a,c,f){a.$watch(f.ngValue,function(a){f.$set("value",a)})}}}},jd=ya({compile:function(a){a.addClass("ng-binding");return function(a,d,e){d.data("$binding",e.ngBind);a.$watch(e.ngBind,function(a){d.text(a==t?"":a)})}}}),ld=["$interpolate",function(a){return function(c,d,e){c=a(d.attr(e.$attr.ngBindTemplate));d.addClass("ng-binding").data("$binding",c);e.$observe("ngBindTemplate",function(a){d.text(a)})}}], -kd=["$sce","$parse",function(a,c){return{compile:function(d){d.addClass("ng-binding");return function(d,f,g){f.data("$binding",g.ngBindHtml);var k=c(g.ngBindHtml);d.$watch(function(){return(k(d)||"").toString()},function(c){f.html(a.getTrustedHtml(k(d))||"")})}}}}],md=Yb("",!0),od=Yb("Odd",0),nd=Yb("Even",1),pd=ya({compile:function(a,c){c.$set("ngCloak",t);a.removeClass("ng-cloak")}}),qd=[function(){return{scope:!0,controller:"@",priority:500}}],lc={},Ye={blur:!0,focus:!0};r("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "), -function(a){var c=pa("ng-"+a);lc[c]=["$parse","$rootScope",function(d,e){return{compile:function(f,g){var k=d(g[c]);return function(c,d){d.on(a,function(d){var f=function(){k(c,{$event:d})};Ye[a]&&e.$$phase?c.$evalAsync(f):c.$apply(f)})}}}}]});var td=["$animate",function(a){return{transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(c,d,e,f,g){var k,m,h;c.$watch(e.ngIf,function(f){Ua(f)?m||(m=c.$new(),g(m,function(c){c[c.length++]=X.createComment(" end ngIf: "+e.ngIf+ -" ");k={clone:c};a.enter(c,d.parent(),d)})):(h&&(h.remove(),h=null),m&&(m.$destroy(),m=null),k&&(h=Eb(k.clone),a.leave(h,function(){h=null}),k=null))})}}}],ud=["$http","$templateCache","$anchorScroll","$animate","$sce",function(a,c,d,e,f){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:Va.noop,compile:function(g,k){var m=k.ngInclude||k.src,h=k.onload||"",l=k.autoscroll;return function(g,k,q,r,F){var u=0,t,w,R,z=function(){w&&(w.remove(),w=null);t&&(t.$destroy(),t=null); -R&&(e.leave(R,function(){w=null}),w=R,R=null)};g.$watch(f.parseAsResourceUrl(m),function(f){var m=function(){!y(l)||l&&!g.$eval(l)||d()},q=++u;f?(a.get(f,{cache:c}).success(function(a){if(q===u){var c=g.$new();r.template=a;a=F(c,function(a){z();e.enter(a,null,k,m)});t=c;R=a;t.$emit("$includeContentLoaded");g.$eval(h)}}).error(function(){q===u&&z()}),g.$emit("$includeContentRequested")):(z(),r.template=null)})}}}}],Kd=["$compile",function(a){return{restrict:"ECA",priority:-400,require:"ngInclude", -link:function(c,d,e,f){d.html(f.template);a(d.contents())(c)}}}],vd=ya({priority:450,compile:function(){return{pre:function(a,c,d){a.$eval(d.ngInit)}}}}),wd=ya({terminal:!0,priority:1E3}),xd=["$locale","$interpolate",function(a,c){var d=/{}/g;return{restrict:"EA",link:function(e,f,g){var k=g.count,m=g.$attr.when&&f.attr(g.$attr.when),h=g.offset||0,l=e.$eval(m)||{},n={},p=c.startSymbol(),q=c.endSymbol(),s=/^when(Minus)?(.+)$/;r(g,function(a,c){s.test(c)&&(l[K(c.replace("when","").replace("Minus","-"))]= -f.attr(g.$attr[c]))});r(l,function(a,e){n[e]=c(a.replace(d,p+k+"-"+h+q))});e.$watch(function(){var c=parseFloat(e.$eval(k));if(isNaN(c))return"";c in l||(c=a.pluralCat(c-h));return n[c](e,f,!0)},function(a){f.text(a)})}}}],yd=["$parse","$animate",function(a,c){var d=C("ngRepeat");return{transclude:"element",priority:1E3,terminal:!0,$$tlb:!0,link:function(e,f,g,k,m){var h=g.ngRepeat,l=h.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?\s*$/),n,p,q,s,t,u,A={$id:Ka};if(!l)throw d("iexp", -h);g=l[1];k=l[2];(l=l[3])?(n=a(l),p=function(a,c,d){u&&(A[u]=a);A[t]=c;A.$index=d;return n(e,A)}):(q=function(a,c){return Ka(c)},s=function(a){return a});l=g.match(/^(?:([\$\w]+)|\(([\$\w]+)\s*,\s*([\$\w]+)\))$/);if(!l)throw d("iidexp",g);t=l[3]||l[1];u=l[2];var y={};e.$watchCollection(k,function(a){var g,k,l=f[0],n,A={},B,I,H,v,E,C,x,J=[];if(Pa(a))C=a,E=p||q;else{E=p||s;C=[];for(H in a)a.hasOwnProperty(H)&&"$"!=H.charAt(0)&&C.push(H);C.sort()}B=C.length;k=J.length=C.length;for(g=0;gB;)d=t.pop(),p.removeOption(d.label),d.element.remove()}for(;z.length>M;)z.pop()[0].element.remove()}var h;if(!(h=s.match(d)))throw Ze("iexp",s,ia(f));var l=c(h[2]||h[1]),m=h[4]||h[6],n=h[5],r=c(h[3]||""),u=c(h[2]? -h[1]:m),w=c(h[7]),x=h[8]?c(h[8]):null,z=[[{element:f,label:""}]];F&&(a(F)(e),F.removeClass("ng-scope"),F.remove());f.empty();f.on("change",function(){e.$apply(function(){var a,c=w(e)||[],d={},h,l,p,r,s,v,y;if(q)for(l=[],r=0,v=z.length;r@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide{display:none !important;}ng\\:form{display:block;}.ng-animate-block-transitions{transition:0s all!important;-webkit-transition:0s all!important;}.ng-hide-add-active,.ng-hide-remove{display:block!important;}'); +relational:function(){var a=this.additive(),c;if(c=this.expect("<",">","<=",">="))a=this.binaryFn(a,c.fn,this.relational());return a},additive:function(){for(var a=this.multiplicative(),c;c=this.expect("+","-");)a=this.binaryFn(a,c.fn,this.multiplicative());return a},multiplicative:function(){for(var a=this.unary(),c;c=this.expect("*","/","%");)a=this.binaryFn(a,c.fn,this.unary());return a},unary:function(){var a;return this.expect("+")?this.primary():(a=this.expect("-"))?this.binaryFn(gb.ZERO,a.fn, +this.unary()):(a=this.expect("!"))?this.unaryFn(a.fn,this.unary()):this.primary()},fieldAccess:function(a){var c=this,d=this.expect().text,e=Dc(d,this.options,this.text);return E(function(c,d,h){return e(h||a(c,d))},{assign:function(e,g,h){(h=a(e,h))||a.assign(e,h={});return ub(h,d,g,c.text,c.options)}})},objectIndex:function(a){var c=this,d=this.expression();this.consume("]");return E(function(e,f){var g=a(e,f),h=d(e,f),k;ka(h,c.text);if(!g)return u;(g=ma(g[h],c.text))&&(g.then&&c.options.unwrapPromises)&& +(k=g,"$$v"in g||(k.$$v=u,k.then(function(a){k.$$v=a})),g=g.$$v);return g},{assign:function(e,f,g){var h=ka(d(e,g),c.text);(g=ma(a(e,g),c.text))||a.assign(e,g={});return g[h]=f}})},functionCall:function(a,c){var d=[];if(")"!==this.peekToken().text){do d.push(this.expression());while(this.expect(","))}this.consume(")");var e=this;return function(f,g){for(var h=[],k=c?c(f,g):f,m=0;ma.getHours()?c.AMPMS[0]:c.AMPMS[1]},Z:function(a){a=-1*a.getTimezoneOffset();return a=(0<=a?"+":"")+(Vb(Math[0< +a?"floor":"ceil"](a/60),2)+Vb(Math.abs(a%60),2))}},Le=/((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z))(.*)/,Ke=/^\-?\d+$/;Ic.$inject=["$locale"];var Ie=aa(x),Je=aa(La);Kc.$inject=["$parse"];var cd=aa({restrict:"E",compile:function(a,c){8>=R&&(c.href||c.name||c.$set("href",""),a.append(X.createComment("IE fix")));if(!c.href&&!c.xlinkHref&&!c.name)return function(a,c){var f="[object SVGAnimatedString]"===Ba.call(c.prop("href"))?"xlink:href":"href";c.on("click",function(a){c.attr(f)|| +a.preventDefault()})}}}),Fb={};r(rb,function(a,c){if("multiple"!=a){var d=qa("ng-"+c);Fb[d]=function(){return{priority:100,link:function(a,f,g){a.$watch(g[d],function(a){g.$set(c,!!a)})}}}}});r(["src","srcset","href"],function(a){var c=qa("ng-"+a);Fb[c]=function(){return{priority:99,link:function(d,e,f){var g=a,h=a;"href"===a&&"[object SVGAnimatedString]"===Ba.call(e.prop("href"))&&(h="xlinkHref",f.$attr[h]="xlink:href",g=null);f.$observe(c,function(c){c?(f.$set(h,c),R&&g&&e.prop(g,f[h])):"href"=== +a&&f.$set(h,null)})}}}});var yb={$addControl:v,$removeControl:v,$setValidity:v,$setDirty:v,$setPristine:v};Nc.$inject=["$element","$attrs","$scope","$animate"];var Qc=function(a){return["$timeout",function(c){return{name:"form",restrict:a?"EAC":"E",controller:Nc,compile:function(){return{pre:function(a,e,f,g){if(!f.action){var h=function(a){a.preventDefault?a.preventDefault():a.returnValue=!1};sb(e[0],"submit",h);e.on("$destroy",function(){c(function(){bb(e[0],"submit",h)},0,!1)})}var k=e.parent().controller("form"), +m=f.name||f.ngForm;m&&ub(a,m,g,m);if(k)e.on("$destroy",function(){k.$removeControl(g);m&&ub(a,m,u,m);E(g,yb)})}}}}}]},dd=Qc(),qd=Qc(!0),Ve=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,We=/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,Xe=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/,Rc={text:Ab,number:function(a,c,d,e,f,g){Ab(a,c,d,e,f,g);e.$parsers.push(function(a){var c=e.$isEmpty(a);if(c||Xe.test(a))return e.$setValidity("number", +!0),""===a?null:c?a:parseFloat(a);e.$setValidity("number",!1);return u});Ne(e,"number",Ye,null,e.$$validityState);e.$formatters.push(function(a){return e.$isEmpty(a)?"":""+a});d.min&&(a=function(a){var c=parseFloat(d.min);return ua(e,"min",e.$isEmpty(a)||a>=c,a)},e.$parsers.push(a),e.$formatters.push(a));d.max&&(a=function(a){var c=parseFloat(d.max);return ua(e,"max",e.$isEmpty(a)||a<=c,a)},e.$parsers.push(a),e.$formatters.push(a));e.$formatters.push(function(a){return ua(e,"number",e.$isEmpty(a)|| +jb(a),a)})},url:function(a,c,d,e,f,g){Ab(a,c,d,e,f,g);a=function(a){return ua(e,"url",e.$isEmpty(a)||Ve.test(a),a)};e.$formatters.push(a);e.$parsers.push(a)},email:function(a,c,d,e,f,g){Ab(a,c,d,e,f,g);a=function(a){return ua(e,"email",e.$isEmpty(a)||We.test(a),a)};e.$formatters.push(a);e.$parsers.push(a)},radio:function(a,c,d,e){F(d.name)&&c.attr("name",ib());c.on("click",function(){c[0].checked&&a.$apply(function(){e.$setViewValue(d.value)})});e.$render=function(){c[0].checked=d.value==e.$viewValue}; +d.$observe("value",e.$render)},checkbox:function(a,c,d,e){var f=d.ngTrueValue,g=d.ngFalseValue;G(f)||(f=!0);G(g)||(g=!1);c.on("click",function(){a.$apply(function(){e.$setViewValue(c[0].checked)})});e.$render=function(){c[0].checked=e.$viewValue};e.$isEmpty=function(a){return a!==f};e.$formatters.push(function(a){return a===f});e.$parsers.push(function(a){return a?f:g})},hidden:v,button:v,submit:v,reset:v,file:v},Ye=["badInput"],hc=["$browser","$sniffer",function(a,c){return{restrict:"E",require:"?ngModel", +link:function(d,e,f,g){g&&(Rc[x(f.type)]||Rc.text)(d,e,f,g,c,a)}}}],wb="ng-valid",xb="ng-invalid",Ra="ng-pristine",zb="ng-dirty",Ze=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate",function(a,c,d,e,f,g){function h(a,c){c=c?"-"+nb(c,"-"):"";g.removeClass(e,(a?xb:wb)+c);g.addClass(e,(a?wb:xb)+c)}this.$modelValue=this.$viewValue=Number.NaN;this.$parsers=[];this.$formatters=[];this.$viewChangeListeners=[];this.$pristine=!0;this.$dirty=!1;this.$valid=!0;this.$invalid=!1;this.$name= +d.name;var k=f(d.ngModel),m=k.assign;if(!m)throw z("ngModel")("nonassign",d.ngModel,ia(e));this.$render=v;this.$isEmpty=function(a){return F(a)||""===a||null===a||a!==a};var l=e.inheritedData("$formController")||yb,n=0,q=this.$error={};e.addClass(Ra);h(!0);this.$setValidity=function(a,c){q[a]!==!c&&(c?(q[a]&&n--,n||(h(!0),this.$valid=!0,this.$invalid=!1)):(h(!1),this.$invalid=!0,this.$valid=!1,n++),q[a]=!c,h(c,a),l.$setValidity(a,c,this))};this.$setPristine=function(){this.$dirty=!1;this.$pristine= +!0;g.removeClass(e,zb);g.addClass(e,Ra)};this.$setViewValue=function(d){this.$viewValue=d;this.$pristine&&(this.$dirty=!0,this.$pristine=!1,g.removeClass(e,Ra),g.addClass(e,zb),l.$setDirty());r(this.$parsers,function(a){d=a(d)});this.$modelValue!==d&&(this.$modelValue=d,m(a,d),r(this.$viewChangeListeners,function(a){try{a()}catch(d){c(d)}}))};var p=this;a.$watch(function(){var c=k(a);if(p.$modelValue!==c){var d=p.$formatters,e=d.length;for(p.$modelValue=c;e--;)c=d[e](c);p.$viewValue!==c&&(p.$viewValue= +c,p.$render())}return c})}],Fd=function(){return{require:["ngModel","^?form"],controller:Ze,link:function(a,c,d,e){var f=e[0],g=e[1]||yb;g.$addControl(f);a.$on("$destroy",function(){g.$removeControl(f)})}}},Hd=aa({require:"ngModel",link:function(a,c,d,e){e.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}),ic=function(){return{require:"?ngModel",link:function(a,c,d,e){if(e){d.required=!0;var f=function(a){if(d.required&&e.$isEmpty(a))e.$setValidity("required",!1);else return e.$setValidity("required", +!0),a};e.$formatters.push(f);e.$parsers.unshift(f);d.$observe("required",function(){f(e.$viewValue)})}}}},Gd=function(){return{require:"ngModel",link:function(a,c,d,e){var f=(a=/\/(.*)\//.exec(d.ngList))&&RegExp(a[1])||d.ngList||",";e.$parsers.push(function(a){if(!F(a)){var c=[];a&&r(a.split(f),function(a){a&&c.push($(a))});return c}});e.$formatters.push(function(a){return L(a)?a.join(", "):u});e.$isEmpty=function(a){return!a||!a.length}}}},$e=/^(true|false|\d+)$/,Id=function(){return{priority:100, +compile:function(a,c){return $e.test(c.ngValue)?function(a,c,f){f.$set("value",a.$eval(f.ngValue))}:function(a,c,f){a.$watch(f.ngValue,function(a){f.$set("value",a)})}}}},id=Aa({compile:function(a){a.addClass("ng-binding");return function(a,d,e){d.data("$binding",e.ngBind);a.$watch(e.ngBind,function(a){d.text(a==u?"":a)})}}}),kd=["$interpolate",function(a){return function(c,d,e){c=a(d.attr(e.$attr.ngBindTemplate));d.addClass("ng-binding").data("$binding",c);e.$observe("ngBindTemplate",function(a){d.text(a)})}}], +jd=["$sce","$parse",function(a,c){return{compile:function(d){d.addClass("ng-binding");return function(d,f,g){f.data("$binding",g.ngBindHtml);var h=c(g.ngBindHtml);d.$watch(function(){return(h(d)||"").toString()},function(c){f.html(a.getTrustedHtml(h(d))||"")})}}}}],ld=Wb("",!0),nd=Wb("Odd",0),md=Wb("Even",1),od=Aa({compile:function(a,c){c.$set("ngCloak",u);a.removeClass("ng-cloak")}}),pd=[function(){return{scope:!0,controller:"@",priority:500}}],jc={},af={blur:!0,focus:!0};r("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "), +function(a){var c=qa("ng-"+a);jc[c]=["$parse","$rootScope",function(d,e){return{compile:function(f,g){var h=d(g[c],!0);return function(c,d){d.on(a,function(d){var f=function(){h(c,{$event:d})};af[a]&&e.$$phase?c.$evalAsync(f):c.$apply(f)})}}}}]});var sd=["$animate",function(a){return{transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(c,d,e,f,g){var h,k,m;c.$watch(e.ngIf,function(f){Wa(f)?k||(k=c.$new(),g(k,function(c){c[c.length++]=X.createComment(" end ngIf: "+e.ngIf+ +" ");h={clone:c};a.enter(c,d.parent(),d)})):(m&&(m.remove(),m=null),k&&(k.$destroy(),k=null),h&&(m=Eb(h.clone),a.leave(m,function(){m=null}),h=null))})}}}],td=["$http","$templateCache","$anchorScroll","$animate","$sce",function(a,c,d,e,f){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:Xa.noop,compile:function(g,h){var k=h.ngInclude||h.src,m=h.onload||"",l=h.autoscroll;return function(g,h,p,r,J){var w=0,t,y,u,B=function(){y&&(y.remove(),y=null);t&&(t.$destroy(),t=null); +u&&(e.leave(u,function(){y=null}),y=u,u=null)};g.$watch(f.parseAsResourceUrl(k),function(f){var k=function(){!D(l)||l&&!g.$eval(l)||d()},p=++w;f?(a.get(f,{cache:c}).success(function(a){if(p===w){var c=g.$new();r.template=a;a=J(c,function(a){B();e.enter(a,null,h,k)});t=c;u=a;t.$emit("$includeContentLoaded");g.$eval(m)}}).error(function(){p===w&&B()}),g.$emit("$includeContentRequested")):(B(),r.template=null)})}}}}],Jd=["$compile",function(a){return{restrict:"ECA",priority:-400,require:"ngInclude", +link:function(c,d,e,f){d.html(f.template);a(d.contents())(c)}}}],ud=Aa({priority:450,compile:function(){return{pre:function(a,c,d){a.$eval(d.ngInit)}}}}),vd=Aa({terminal:!0,priority:1E3}),wd=["$locale","$interpolate",function(a,c){var d=/{}/g;return{restrict:"EA",link:function(e,f,g){var h=g.count,k=g.$attr.when&&f.attr(g.$attr.when),m=g.offset||0,l=e.$eval(k)||{},n={},q=c.startSymbol(),p=c.endSymbol(),s=/^when(Minus)?(.+)$/;r(g,function(a,c){s.test(c)&&(l[x(c.replace("when","").replace("Minus","-"))]= +f.attr(g.$attr[c]))});r(l,function(a,e){n[e]=c(a.replace(d,q+h+"-"+m+p))});e.$watch(function(){var c=parseFloat(e.$eval(h));if(isNaN(c))return"";c in l||(c=a.pluralCat(c-m));return n[c](e,f,!0)},function(a){f.text(a)})}}}],xd=["$parse","$animate",function(a,c){var d=z("ngRepeat");return{transclude:"element",priority:1E3,terminal:!0,$$tlb:!0,link:function(e,f,g,h,k){var m=g.ngRepeat,l=m.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?\s*$/),n,q,p,s,u,w,t={$id:Na};if(!l)throw d("iexp", +m);g=l[1];h=l[2];(l=l[3])?(n=a(l),q=function(a,c,d){w&&(t[w]=a);t[u]=c;t.$index=d;return n(e,t)}):(p=function(a,c){return Na(c)},s=function(a){return a});l=g.match(/^(?:([\$\w]+)|\(([\$\w]+)\s*,\s*([\$\w]+)\))$/);if(!l)throw d("iidexp",g);u=l[3]||l[1];w=l[2];var y={};e.$watchCollection(h,function(a){var g,h,l=f[0],n,t={},D,C,I,x,G,v,z,F=[];if(Sa(a))v=a,G=q||p;else{G=q||s;v=[];for(I in a)a.hasOwnProperty(I)&&"$"!=I.charAt(0)&&v.push(I);v.sort()}D=v.length;h=F.length=v.length;for(g=0;gC;)d=u.pop(),q.removeOption(d.label),d.element.remove()}for(;B.length>Q;)B.pop()[0].element.remove()}var k;if(!(k=s.match(d)))throw bf("iexp",s,ia(f));var l=c(k[2]||k[1]), +m=k[4]||k[6],n=k[5],r=c(k[3]||""),x=c(k[2]?k[1]:m),A=c(k[7]),w=k[8]?c(k[8]):null,B=[[{element:f,label:""}]];z&&(a(z)(e),z.removeClass("ng-scope"),z.remove());f.empty();f.on("change",function(){e.$apply(function(){var a,c=A(e)||[],d={},k,l,q,r,s,t,v;if(p)for(l=[],r=0,t=B.length;r@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide{display:none !important;}ng\\:form{display:block;}.ng-animate-block-transitions{transition:0s all!important;-webkit-transition:0s all!important;}.ng-hide-add-active,.ng-hide-remove{display:block!important;}'); //# sourceMappingURL=angular.min.js.map \ No newline at end of file diff --git a/glances/outputs/static/js/angular.min.js.map b/glances/outputs/static/js/angular.min.js.map new file mode 100644 index 00000000..bf40d3e2 --- /dev/null +++ b/glances/outputs/static/js/angular.min.js.map @@ -0,0 +1,8 @@ +{ +"version":3, +"file":"angular.min.js", +"lineCount":216, +"mappings":"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", +"sources":["angular.js"], +"names":["window","document","undefined","minErr","isArrayLike","obj","isWindow","length","nodeType","isString","isArray","forEach","iterator","context","key","isFunction","hasOwnProperty","call","sortedKeys","keys","push","sort","forEachSorted","i","reverseParams","iteratorFn","value","nextUid","index","uid","digit","charCodeAt","join","String","fromCharCode","unshift","setHashKey","h","$$hashKey","extend","dst","arguments","int","str","parseInt","inherit","parent","extra","noop","identity","$","valueFn","isUndefined","isDefined","isObject","isNumber","isDate","toString","isRegExp","location","alert","setInterval","isElement","node","nodeName","prop","attr","find","map","results","list","indexOf","array","arrayRemove","splice","copy","source","destination","stackSource","stackDest","$evalAsync","$watch","ngMinErr","result","Date","getTime","RegExp","match","lastIndex","shallowCopy","src","charAt","equals","o1","o2","t1","t2","isNaN","keySet","bind","self","fn","curryArgs","slice","startIndex","apply","concat","toJsonReplacer","val","toJson","pretty","JSON","stringify","fromJson","json","parse","toBoolean","v","lowercase","startingTag","element","jqLite","clone","empty","e","elemHtml","append","html","TEXT_NODE","replace","tryDecodeURIComponent","decodeURIComponent","parseKeyValue","keyValue","key_value","split","toKeyValue","parts","arrayValue","encodeUriQuery","encodeUriSegment","pctEncodeSpaces","encodeURIComponent","angularInit","bootstrap","elements","appElement","module","names","NG_APP_CLASS_REGEXP","name","getElementById","querySelectorAll","exec","className","attributes","modules","doBootstrap","injector","tag","$provide","createInjector","invoke","scope","compile","animate","$apply","data","NG_DEFER_BOOTSTRAP","test","angular","resumeBootstrap","angular.resumeBootstrap","extraModules","snake_case","separator","SNAKE_CASE_REGEXP","letter","pos","toLowerCase","assertArg","arg","reason","assertArgFn","acceptArrayAnnotation","constructor","assertNotHasOwnProperty","getter","path","bindFnToScope","lastInstance","len","getBlockElements","nodes","startNode","endNode","nextSibling","setupModuleLoader","$injectorMinErr","$$minErr","factory","requires","configFn","invokeLater","provider","method","insertMethod","invokeQueue","moduleInstance","runBlocks","config","run","block","publishExternalAPI","version","uppercase","csp","angularModule","$LocaleProvider","ngModule","$$SanitizeUriProvider","$CompileProvider","directive","htmlAnchorDirective","inputDirective","formDirective","scriptDirective","selectDirective","styleDirective","optionDirective","ngBindDirective","ngBindHtmlDirective","ngBindTemplateDirective","ngClassDirective","ngClassEvenDirective","ngClassOddDirective","ngCloakDirective","ngControllerDirective","ngFormDirective","ngHideDirective","ngIfDirective","ngIncludeDirective","ngInitDirective","ngNonBindableDirective","ngPluralizeDirective","ngRepeatDirective","ngShowDirective","ngStyleDirective","ngSwitchDirective","ngSwitchWhenDirective","ngSwitchDefaultDirective","ngOptionsDirective","ngTranscludeDirective","ngModelDirective","ngListDirective","ngChangeDirective","requiredDirective","ngValueDirective","ngIncludeFillContentDirective","ngAttributeAliasDirectives","ngEventDirectives","$AnchorScrollProvider","$AnimateProvider","$BrowserProvider","$CacheFactoryProvider","$ControllerProvider","$DocumentProvider","$ExceptionHandlerProvider","$FilterProvider","$InterpolateProvider","$IntervalProvider","$HttpProvider","$HttpBackendProvider","$LocationProvider","$LogProvider","$ParseProvider","$RootScopeProvider","$QProvider","$SceProvider","$SceDelegateProvider","$SnifferProvider","$TemplateCacheProvider","$TimeoutProvider","$WindowProvider","$$RAFProvider","$$AsyncCallbackProvider","camelCase","SPECIAL_CHARS_REGEXP","_","offset","toUpperCase","MOZ_HACK_REGEXP","jqLitePatchJQueryRemove","dispatchThis","filterElems","getterIfNoArguments","removePatch","param","filter","fireEvent","set","setIndex","setLength","childIndex","children","shift","triggerHandler","childLength","jQuery","originalJqFn","$original","JQLite","trim","jqLiteMinErr","parsed","SINGLE_TAG_REGEXP","fragment","createDocumentFragment","HTML_REGEXP","tmp","appendChild","createElement","TAG_NAME_REGEXP","wrap","wrapMap","_default","innerHTML","XHTML_TAG_REGEXP","removeChild","firstChild","lastChild","j","jj","childNodes","textContent","createTextNode","jqLiteAddNodes","jqLiteClone","cloneNode","jqLiteDealoc","jqLiteRemoveData","jqLiteOff","type","unsupported","events","jqLiteExpandoStore","handle","eventHandler","removeEventListenerFn","expandoId","ng339","expandoStore","jqCache","$destroy","jqId","jqLiteData","isSetter","keyDefined","isSimpleGetter","jqLiteHasClass","selector","getAttribute","jqLiteRemoveClass","cssClasses","setAttribute","cssClass","jqLiteAddClass","existingClasses","root","jqLiteController","jqLiteInheritedData","documentElement","ii","parentNode","host","jqLiteEmpty","getBooleanAttrName","booleanAttr","BOOLEAN_ATTR","BOOLEAN_ELEMENTS","createEventHandler","event","preventDefault","event.preventDefault","returnValue","stopPropagation","event.stopPropagation","cancelBubble","target","srcElement","defaultPrevented","prevent","isDefaultPrevented","event.isDefaultPrevented","eventHandlersCopy","msie","elem","hashKey","nextUidFn","objType","HashMap","isolatedUid","this.nextUid","put","annotate","$inject","fnText","STRIP_COMMENTS","argDecl","FN_ARGS","FN_ARG_SPLIT","FN_ARG","all","underscore","last","modulesToLoad","supportObject","delegate","provider_","providerInjector","instantiate","$get","providerCache","providerSuffix","factoryFn","loadModules","moduleFn","loadedModules","get","_runBlocks","_invokeQueue","invokeArgs","message","stack","createInternalInjector","cache","getService","serviceName","INSTANTIATING","err","locals","args","Type","Constructor","returnedValue","prototype","instance","has","service","$injector","constant","instanceCache","decorator","decorFn","origProvider","orig$get","origProvider.$get","origInstance","instanceInjector","servicename","autoScrollingEnabled","disableAutoScrolling","this.disableAutoScrolling","$window","$location","$rootScope","getFirstAnchor","scroll","hash","elm","scrollIntoView","getElementsByName","scrollTo","autoScrollWatch","autoScrollWatchAction","$$rAF","$timeout","supported","Browser","$log","$sniffer","completeOutstandingRequest","outstandingRequestCount","outstandingRequestCallbacks","pop","error","startPoller","interval","setTimeout","check","pollFns","pollFn","pollTimeout","fireUrlChange","lastBrowserUrl","url","urlChangeListeners","listener","rawDocument","history","clearTimeout","pendingDeferIds","isMock","$$completeOutstandingRequest","$$incOutstandingRequestCount","self.$$incOutstandingRequestCount","notifyWhenNoOutstandingRequests","self.notifyWhenNoOutstandingRequests","callback","addPollFn","self.addPollFn","href","baseElement","reloadLocation","self.url","sameBase","stripHash","replaceState","pushState","urlChangeInit","onUrlChange","self.onUrlChange","on","hashchange","$$checkUrlChange","baseHref","self.baseHref","lastCookies","lastCookieString","cookiePath","cookies","self.cookies","cookieLength","cookie","escape","warn","cookieArray","unescape","substring","defer","self.defer","delay","timeoutId","cancel","self.defer.cancel","deferId","$document","this.$get","cacheFactory","cacheId","options","refresh","entry","freshEnd","staleEnd","n","link","p","nextEntry","prevEntry","caches","size","stats","capacity","Number","MAX_VALUE","lruHash","lruEntry","remove","removeAll","destroy","info","cacheFactory.info","cacheFactory.get","$cacheFactory","$$sanitizeUriProvider","hasDirectives","Suffix","COMMENT_DIRECTIVE_REGEXP","CLASS_DIRECTIVE_REGEXP","EVENT_HANDLER_ATTR_REGEXP","this.directive","registerDirective","directiveFactory","$exceptionHandler","directives","priority","require","controller","restrict","aHrefSanitizationWhitelist","this.aHrefSanitizationWhitelist","regexp","imgSrcSanitizationWhitelist","this.imgSrcSanitizationWhitelist","$interpolate","$http","$templateCache","$parse","$controller","$sce","$animate","$$sanitizeUri","$compileNodes","transcludeFn","maxPriority","ignoreDirective","previousCompileContext","nodeValue","compositeLinkFn","compileNodes","safeAddClass","publicLinkFn","cloneConnectFn","transcludeControllers","parentBoundTranscludeFn","$linkNode","JQLitePrototype","eq","$element","addClass","nodeList","$rootElement","childLinkFn","childScope","childBoundTranscludeFn","nodeListLength","stableNodeList","Array","linkFns","nodeLinkFn","$new","transcludeOnThisElement","createBoundTranscludeFn","transclude","templateOnThisElement","attrs","linkFnFound","Attributes","collectDirectives","applyDirectivesToNode","$$element","terminal","previousBoundTranscludeFn","boundTranscludeFn","transcludedScope","cloneFn","controllers","scopeCreated","$$transcluded","attrsMap","$attr","addDirective","directiveNormalize","nodeName_","isNgAttr","nAttrs","attrStartName","attrEndName","specified","ngAttrName","NG_ATTR_BINDING","substr","directiveNName","nName","addAttrInterpolateDirective","addTextInterpolateDirective","byPriority","groupScan","attrStart","attrEnd","depth","hasAttribute","$compileMinErr","groupElementsLinkFnWrapper","linkFn","compileNode","templateAttrs","jqCollection","originalReplaceDirective","preLinkFns","postLinkFns","addLinkFns","pre","post","directiveName","newIsolateScopeDirective","$$isolateScope","cloneAndAnnotateFn","getControllers","elementControllers","retrievalMethod","optional","linkNode","controllersBoundTransclude","cloneAttachFn","hasElementTranscludeDirective","isolateScope","LOCAL_REGEXP","templateDirective","$$originalDirective","definition","scopeName","attrName","mode","lastValue","parentGet","parentSet","compare","$$isolateBindings","$observe","$$observers","$$scope","literal","a","b","assign","parentValueWatch","parentValue","controllerDirectives","controllerInstance","controllerAs","$scope","scopeToChild","template","templateUrl","terminalPriority","newScopeDirective","nonTlbTranscludeDirective","hasTranscludeDirective","hasTemplate","$compileNode","$template","childTranscludeFn","$$start","$$end","directiveValue","assertNoDuplicate","$$tlb","createComment","replaceWith","replaceDirective","contents","denormalizeTemplate","newTemplateAttrs","templateDirectives","unprocessedDirectives","markDirectivesAsIsolate","mergeTemplateAttributes","compileTemplateUrl","Math","max","tDirectives","startAttrName","endAttrName","srcAttr","dstAttr","$set","tAttrs","linkQueue","afterTemplateNodeLinkFn","afterTemplateChildLinkFn","beforeTemplateCompileNode","origAsyncDirective","derivedSyncDirective","getTrustedResourceUrl","success","content","tempTemplateAttrs","beforeTemplateLinkNode","linkRootElement","oldClasses","response","code","headers","delayedNodeLinkFn","ignoreChildLinkFn","rootElement","diff","what","previousDirective","text","interpolateFn","textInterpolateCompileFn","templateNode","hasCompileParent","textInterpolateLinkFn","bindings","interpolateFnWatchAction","getTrustedContext","attrNormalizedName","HTML","RESOURCE_URL","attrInterpolatePreLinkFn","$$inter","newValue","oldValue","$updateClass","elementsToRemove","newNode","firstElementToRemove","removeCount","j2","replaceChild","expando","k","kk","annotation","$addClass","classVal","$removeClass","removeClass","newClasses","toAdd","tokenDifference","toRemove","setClass","writeAttr","booleanKey","removeAttr","listeners","startSymbol","endSymbol","PREFIX_REGEXP","str1","str2","values","tokens1","tokens2","token","CNTRL_REG","register","this.register","expression","identifier","exception","cause","parseHeaders","line","headersGetter","headersObj","transformData","fns","JSON_START","JSON_END","PROTECTION_PREFIX","CONTENT_TYPE_APPLICATION_JSON","defaults","d","interceptorFactories","interceptors","responseInterceptorFactories","responseInterceptors","$httpBackend","$browser","$q","requestConfig","transformResponse","resp","status","reject","transformRequest","mergeHeaders","defHeaders","reqHeaders","defHeaderName","reqHeaderName","common","lowercaseDefHeaderName","execHeaders","headerContent","headerFn","header","chain","serverRequest","reqData","withCredentials","sendReq","then","promise","when","reversedInterceptors","interceptor","request","requestError","responseError","thenFn","rejectFn","promise.success","promise.error","done","headersString","statusText","resolvePromise","$$phase","deferred","resolve","removePendingReq","idx","pendingRequests","cachedResp","buildUrl","params","defaultCache","xsrfValue","urlIsSameOrigin","xsrfCookieName","xsrfHeaderName","timeout","responseType","toISOString","interceptorFactory","responseFn","createShortMethods","createShortMethodsWithData","createXhr","XMLHttpRequest","ActiveXObject","createHttpBackend","callbacks","$browserDefer","jsonpReq","callbackId","script","async","body","called","addEventListenerFn","onreadystatechange","script.onreadystatechange","readyState","ABORTED","timeoutRequest","jsonpDone","xhr","abort","completeRequest","urlResolve","protocol","counter","open","setRequestHeader","xhr.onreadystatechange","responseHeaders","getAllResponseHeaders","responseText","send","this.startSymbol","this.endSymbol","mustHaveExpression","trustedContext","endIndex","hasInterpolation","startSymbolLength","exp","endSymbolLength","$interpolateMinErr","part","getTrusted","valueOf","newErr","$interpolate.startSymbol","$interpolate.endSymbol","count","invokeApply","clearInterval","iteration","skipApply","$$intervalId","tick","notify","intervals","interval.cancel","short","pluralCat","num","encodePath","segments","parseAbsoluteUrl","absoluteUrl","locationObj","appBase","parsedUrl","$$protocol","$$host","hostname","$$port","port","DEFAULT_PORTS","parseAppUrl","relativeUrl","prefixed","$$path","pathname","$$search","search","$$hash","beginsWith","begin","whole","stripFile","lastIndexOf","LocationHtml5Url","basePrefix","$$html5","appBaseNoFile","$$parse","this.$$parse","pathUrl","$locationMinErr","$$compose","this.$$compose","$$url","$$absUrl","$$parseLinkUrl","this.$$parseLinkUrl","relHref","appUrl","prevAppUrl","rewrittenUrl","LocationHashbangUrl","hashPrefix","withoutBaseUrl","withoutHashUrl","windowsFilePathExp","firstPathSegmentMatch","LocationHashbangInHtml5Url","locationGetter","property","locationGetterSetter","preprocess","html5Mode","this.hashPrefix","prefix","this.html5Mode","afterLocationChange","oldUrl","$broadcast","absUrl","initialUrl","LocationMode","IGNORE_URI_REGEXP","ctrlKey","metaKey","which","absHref","animVal","newUrl","$digest","changeCounter","$locationWatch","currentReplace","$$replace","debug","debugEnabled","this.debugEnabled","flag","formatError","Error","sourceURL","consoleLog","console","logFn","log","hasApply","arg1","arg2","ensureSafeMemberName","fullExpression","$parseMinErr","ensureSafeObject","Object","setter","setValue","fullExp","propertyObj","unwrapPromises","promiseWarning","$$v","isPossiblyDangerousMemberName","cspSafeGetterFn","key0","key1","key2","key3","key4","eso","o","expensiveChecks","eso0","eso1","eso2","eso3","eso4","cspSafePromiseEnabledGetter","pathVal","cspSafeGetter","getterFnWithExtraArgs","s","l","getterFn","getterFnCache","getterFnCacheExpensive","getterFnCacheDefault","pathKeys","pathKeysLength","needsEnsureSafeObject","lookupJs","wrapWithEso","evaledFnGetter","Function","cacheDefault","cacheExpensive","$parseOptions","this.unwrapPromises","logPromiseWarnings","this.logPromiseWarnings","$filter","$parseOptionsExpensive","promiseWarningCache","parsedExpression","parseOptions","lexer","Lexer","parser","Parser","qFactory","nextTick","exceptionHandler","defaultCallback","defaultErrback","pending","ref","createInternalRejectedPromise","progress","errback","progressback","wrappedCallback","wrappedErrback","wrappedProgressback","catch","finally","makePromise","resolved","handleCallback","isResolved","callbackOutput","promises","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","webkitCancelRequestAnimationFrame","rafSupported","raf","id","timer","TTL","$rootScopeMinErr","lastDirtyWatch","digestTtl","this.digestTtl","Scope","$id","$parent","$$watchers","$$nextSibling","$$prevSibling","$$childHead","$$childTail","$root","$$destroyed","$$asyncQueue","$$postDigestQueue","$$listeners","$$listenerCount","beginPhase","phase","compileToFn","decrementListenerCount","current","initWatchVal","isolate","child","$$childScopeClass","this.$$childScopeClass","watchExp","objectEquality","watcher","listenFn","watcher.fn","newVal","oldVal","originalFn","deregisterWatch","$watchCollection","veryOldValue","trackVeryOldValue","changeDetected","objGetter","internalArray","internalObject","initRun","oldLength","$watchCollectionWatch","newLength","bothNaN","$watchCollectionAction","watch","watchers","asyncQueue","postDigestQueue","dirty","ttl","watchLog","logIdx","logMsg","asyncTask","$eval","next","$on","this.$watch","expr","$$postDigest","namedListeners","indexOfListener","$emit","listenerArgs","array1","currentScope","sanitizeUri","uri","isImage","regex","normalizedVal","adjustMatcher","matcher","$sceMinErr","adjustMatchers","matchers","adjustedMatchers","SCE_CONTEXTS","resourceUrlWhitelist","resourceUrlBlacklist","this.resourceUrlWhitelist","this.resourceUrlBlacklist","generateHolderType","Base","holderType","trustedValue","$$unwrapTrustedValue","this.$$unwrapTrustedValue","holderType.prototype.valueOf","holderType.prototype.toString","htmlSanitizer","trustedValueHolderBase","byType","CSS","URL","JS","trustAs","maybeTrusted","allowed","enabled","this.enabled","$sceDelegate","msieDocumentMode","sce","isEnabled","sce.isEnabled","sce.getTrusted","parseAs","sce.parseAs","sceParseAsTrusted","enumValue","lName","eventSupport","android","userAgent","navigator","boxee","documentMode","vendorPrefix","vendorRegex","bodyStyle","style","transitions","animations","webkitTransition","webkitAnimation","hasEvent","divElm","deferreds","$$timeoutId","timeout.cancel","base","urlParsingNode","requestUrl","originUrl","filters","suffix","currencyFilter","dateFilter","filterFilter","jsonFilter","limitToFilter","lowercaseFilter","numberFilter","orderByFilter","uppercaseFilter","comparator","comparatorType","predicates","predicates.check","objKey","filtered","$locale","formats","NUMBER_FORMATS","amount","currencySymbol","CURRENCY_SYM","formatNumber","PATTERNS","GROUP_SEP","DECIMAL_SEP","number","fractionSize","pattern","groupSep","decimalSep","isFinite","isNegative","abs","numStr","formatedText","hasExponent","toFixed","fractionLen","min","minFrac","maxFrac","round","fraction","lgroup","lgSize","group","gSize","negPre","posPre","negSuf","posSuf","padNumber","digits","neg","dateGetter","date","dateStrGetter","shortForm","jsonStringToDate","string","R_ISO8601_STR","tzHour","tzMin","dateSetter","setUTCFullYear","setFullYear","timeSetter","setUTCHours","setHours","m","ms","parseFloat","format","DATETIME_FORMATS","NUMBER_STRING","DATE_FORMATS_SPLIT","DATE_FORMATS","object","input","limit","Infinity","out","sortPredicate","reverseOrder","reverseComparator","comp","descending","v1","v2","predicate","ngDirective","FormController","toggleValidCss","isValid","validationErrorKey","VALID_CLASS","INVALID_CLASS","form","parentForm","nullFormCtrl","invalidCount","errors","$error","controls","$name","ngForm","$dirty","$pristine","$valid","$invalid","$addControl","PRISTINE_CLASS","form.$addControl","control","$removeControl","form.$removeControl","queue","validationToken","$setValidity","form.$setValidity","$setDirty","form.$setDirty","DIRTY_CLASS","$setPristine","form.$setPristine","validate","ctrl","validatorName","validity","testFlags","flags","addNativeHtml5Validators","badFlags","ignoreFlags","$$hasNativeValidators","$parsers","validator","textInputType","VALIDITY_STATE_PROPERTY","placeholder","noevent","$$validityState","composing","ev","ngTrim","revalidate","$viewValue","$setViewValue","deferListener","keyCode","$render","ctrl.$render","$isEmpty","ngPattern","patternValidator","patternObj","$formatters","ngMinlength","minlength","minLengthValidator","ngMaxlength","maxlength","maxLengthValidator","classDirective","arrayDifference","arrayClasses","classes","digestClassCounts","classCounts","classesToUpdate","ngClassWatchAction","$index","old$index","mod","isActive_","active","querySelector","addEventListener","attachEvent","removeEventListener","detachEvent","_data","JQLite._data","optgroup","option","tbody","tfoot","colgroup","caption","thead","th","td","ready","trigger","fired","removeAttribute","css","currentStyle","lowercasedName","getNamedItem","ret","getText","textProp","NODE_TYPE_TEXT_PROPERTY","$dv","multiple","selected","nodeCount","onFn","eventFns","contains","compareDocumentPosition","adown","bup","eventmap","related","relatedTarget","one","off","replaceNode","insertBefore","contentDocument","prepend","wrapNode","after","newElement","toggleClass","condition","classCondition","nextElementSibling","getElementsByTagName","extraParameters","dummyEvent","handlerArgs","eventName","eventFnsCopy","arg3","unbind","$animateMinErr","$$selectors","classNameFilter","this.classNameFilter","$$classNameFilter","$$asyncCallback","enter","leave","move","add","PATH_MATCH","paramValue","CALL","APPLY","BIND","OPERATORS","null","true","false","+","-","*","/","%","^","===","!==","==","!=","<",">","<=",">=","&&","||","&","|","!","ESCAPE","lex","ch","lastCh","tokens","is","readString","peek","readNumber","isIdent","readIdent","isWhitespace","ch2","ch3","fn2","fn3","throwError","chars","was","isExpOperator","start","end","colStr","peekCh","ident","lastDot","peekIndex","methodName","quote","rawString","hex","rep","ZERO","statements","primary","expect","filterChain","consume","arrayDeclaration","functionCall","objectIndex","fieldAccess","msg","peekToken","e1","e2","e3","e4","t","unaryFn","right","ternaryFn","left","middle","binaryFn","statement","argsFn","fnInvoke","assignment","ternary","logicalOR","logicalAND","equality","relational","additive","multiplicative","unary","field","indexFn","contextGetter","fnPtr","elementFns","allConstant","elementFn","keyValues","ampmGetter","getHours","AMPMS","timeZoneGetter","zone","getTimezoneOffset","paddedZone","xlinkHref","propName","normalized","ngBooleanAttrWatchAction","formDirectiveFactory","isNgForm","formElement","action","preventDefaultListener","parentFormCtrl","alias","URL_REGEXP","EMAIL_REGEXP","NUMBER_REGEXP","inputType","numberInputType","numberBadFlags","minValidator","maxValidator","urlInputType","urlValidator","emailInputType","emailValidator","radioInputType","checked","checkboxInputType","trueValue","ngTrueValue","falseValue","ngFalseValue","ctrl.$isEmpty","NgModelController","$modelValue","NaN","$viewChangeListeners","ngModelGet","ngModel","ngModelSet","this.$isEmpty","inheritedData","this.$setValidity","this.$setPristine","this.$setViewValue","ngModelWatch","formatters","ctrls","modelCtrl","formCtrl","ngChange","required","ngList","viewValue","CONSTANT_VALUE_REGEXP","tpl","tplAttr","ngValue","ngValueConstantLink","ngValueLink","valueWatchAction","templateElement","ngBind","ngBindWatchAction","ngBindTemplate","tElement","ngBindHtml","getStringValue","ngBindHtmlWatchAction","getTrustedHtml","forceAsyncEvents","ngEventHandler","$transclude","previousElements","ngIf","ngIfWatchAction","$anchorScroll","srcExp","ngInclude","onloadExp","onload","autoScrollExp","autoscroll","previousElement","currentElement","cleanupLastIncludeContent","parseAsResourceUrl","ngIncludeWatchAction","afterAnimation","thisChangeId","newScope","$compile","ngInit","BRACE","numberExp","whenExp","whens","whensExpFns","isWhen","attributeName","ngPluralizeWatch","ngPluralizeWatchAction","ngRepeatMinErr","ngRepeat","trackByExpGetter","trackByIdExpFn","trackByIdArrayFn","trackByIdObjFn","valueIdentifier","keyIdentifier","hashFnLocals","lhs","rhs","trackByExp","lastBlockMap","ngRepeatAction","collection","previousNode","nextNode","nextBlockMap","arrayLength","trackByIdFn","collectionKeys","nextBlockOrder","trackById","$first","$last","$middle","$odd","$even","ngShow","ngShowWatchAction","ngHide","ngHideWatchAction","ngStyle","ngStyleWatchAction","newStyles","oldStyles","ngSwitchController","cases","selectedTranscludes","selectedElements","selectedScopes","ngSwitch","ngSwitchWatchAction","change","selectedTransclude","selectedScope","caseElement","anchor","ngSwitchWhen","$attrs","ngOptionsMinErr","NG_OPTIONS_REGEXP","nullModelCtrl","optionsMap","ngModelCtrl","unknownOption","databound","init","self.init","ngModelCtrl_","nullOption_","unknownOption_","addOption","self.addOption","removeOption","self.removeOption","hasOption","renderUnknownOption","self.renderUnknownOption","unknownVal","self.hasOption","setupAsSingle","selectElement","selectCtrl","ngModelCtrl.$render","emptyOption","setupAsMultiple","lastView","items","selectMultipleWatch","setupAsOptions","render","optionGroups","optionGroupNames","optionGroupName","optionGroup","existingParent","existingOptions","existingOption","modelValue","valuesFn","keyName","groupIndex","selectedSet","trackFn","trackIndex","valueName","lastElement","groupByFn","modelCast","label","displayFn","nullOption","groupLength","optionGroupsCache","optGroupTemplate","optionTemplate","optionsExp","track","optionElement","toDisplay","ngOptions","ngModelCtrl.$isEmpty","nullSelectCtrl","selectCtrlName","interpolateWatchAction","$$csp"] +} diff --git a/glances/outputs/static/js/app.js b/glances/outputs/static/js/app.js index 2dd90bab..3ade4fdc 100644 --- a/glances/outputs/static/js/app.js +++ b/glances/outputs/static/js/app.js @@ -1,9 +1,2 @@ -var glancesApp = angular.module('glancesApp', []); +var glancesApp = angular.module('glancesApp', ['ngRoute']); -/* -glancesApp.config([ '$routeProvider', function($routeProvider) { - $routeProvider.when('/:refresh_time', { - templateUrl : 'index.html', - controller : 'GlancesStatsController' - }); -} ]);*/ \ No newline at end of file diff --git a/glances/outputs/static/js/help_controller.js b/glances/outputs/static/js/help_controller.js new file mode 100644 index 00000000..ae22c77c --- /dev/null +++ b/glances/outputs/static/js/help_controller.js @@ -0,0 +1,4 @@ + +glancesApp.controller('helpController', [ '$scope', function($scope) { + $scope.message = 'help window' +}]); \ No newline at end of file diff --git a/glances/outputs/static/js/stats_controller.js b/glances/outputs/static/js/stats_controller.js new file mode 100644 index 00000000..67b03c66 --- /dev/null +++ b/glances/outputs/static/js/stats_controller.js @@ -0,0 +1,290 @@ +glancesApp.config([ '$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) { + $routeProvider.when('/', { + templateUrl : 'stats.html', + controller : 'statsController' + }).when('/:refresh_time', { + templateUrl : 'stats.html', + controller : 'statsController' + }); + + $locationProvider.html5Mode(true); +} ]); + +glancesApp.filter('min_size', function() { + return function(input) { + var max = 8; + if (input.length > max) { + return "_" + input.substring(input.length - max) + } + return input + }; +}); +glancesApp.filter('exclamation', function() { + return function(input) { + if (input == undefined || input =='') { + return '?' + } + return input + }; +}); + + +/** + * Fork from https://gist.github.com/thomseddon/3511330 + *   => \u00A0 + * WARNING : kilobyte (kB) != kibibyte (KiB) (more info here : http://en.wikipedia.org/wiki/Byte ) + **/ +glancesApp.filter('bytes', function() { + return function (bytes, precision) { + if (isNaN(parseFloat(bytes)) || !isFinite(bytes) || bytes == 0){ + return '0B'; + } + var units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB'], + number = Math.floor(Math.log(bytes) / Math.log(1000)); + return (bytes / Math.pow(1000, Math.floor(number))).toFixed(precision) + units[number]; + } +}); +glancesApp.filter('bits', function() { + return function (bits, precision) { + if (isNaN(parseFloat(bits)) || !isFinite(bits) || bits == 0){ + return '0b'; + } + var units = ['b', 'kb', 'Mb', 'Gb', 'Tb', 'Pb'], + number = Math.floor(Math.log(bits) / Math.log(1000)); + return (bits / Math.pow(1000, Math.floor(number))).toFixed(precision) + units[number]; + } +}); + + +glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', '$routeParams', function($scope, $http, $interval, $q, $routeParams) { + + $scope.limitSuffix = ['critical', 'careful', 'warning'] + $scope.refreshTime = 3 + $scope.pluginLimits = [] + $scope.sortColumn = 'cpu_percent' + $scope.sortOrderAsc = false + $scope.lastSortColumn = '#column_' + $scope.sortColumn + $scope.show = { + 'diskio' : true, + 'network' : true, + 'fs' : true, + 'sensors' : true, + 'sidebar' : true, + 'alert' : true + } + $scope.networksort_byBytes = false + + $scope.init_refresh_time = function() { + if ($routeParams != undefined && $routeParams.refresh_time != undefined) { + var new_refresh_time = parseInt($routeParams.refresh_time) + if (new_refresh_time >= 1) { + $scope.refreshTime = new_refresh_time + } + } + } + + + $scope.init_limits = function() { + $scope.plugins_limits(); + } + + $scope.show_hide = function(bloc) { + $scope.show[bloc] = !$scope.show[bloc] + } + + $scope.sort_by = function(column) { + if (column == undefined) { + // sort automatically + } + angular.element(document.querySelector($scope.lastSortColumn)).removeClass('sort sort_asc sort_desc') + + if ($scope.sortColumn == column) { + $scope.sortOrderAsc = !$scope.sortOrderAsc + if ($scope.sortOrderAsc) { + angular.element(document.querySelector($scope.lastSortColumn)).addClass('sort sort_asc') + } else { + angular.element(document.querySelector($scope.lastSortColumn)).addClass('sort sort_desc') + } + } else { + $scope.sortColumn = column + $scope.sortOrderAsc = false + $scope.lastSortColumn = '#column_' + $scope.sortColumn + angular.element(document.querySelector($scope.lastSortColumn)).addClass('sort sort_desc') + } + } + + $scope.plugins_limits = function() { + $http.get('/api/2/pluginslimits').success(function(response, status, headers, config) { + $scope.limits = response + }).error(function(response, status, headers, config) { + console.log('error : ' + response+ status + headers + config); + }); + } + + var canceler = undefined; + + /** + * Refresh all the data of the view + */ + $scope.refreshData = function() { + canceler = $q.defer(); + $http.get('/api/2/all', {timeout: canceler.promise}).success(function(response, status, headers, config) { + //alert('success'); + + function timemillis(array) { + var sum = 0.0 + for (var i = 0; i < array.length; i++) { + sum += array[i] * 1000.0; + } + return sum; + } + function leftpad(input) { + if (input < 10) { + return "0" + input + } + return input + } + function timedelta(input) { + var sum = timemillis(input); + var d = new Date(sum); + var hour = leftpad(d.getUTCHours()) // TODO : multiple days ( * (d.getDay() * 24))) + var minutes = leftpad(d.getUTCMinutes()) + var seconds = leftpad(d.getUTCSeconds()) + var milliseconds = parseInt("" + d.getUTCMilliseconds() / 10) + var millisecondsStr = leftpad(milliseconds) + return hour +":" + minutes + ":" + seconds + "." + millisecondsStr + }; + + for (var i = 0; i < response['processlist'].length; i++) { + var process = response['processlist'][i] + process.memvirt = process.memory_info[1] + process.memres = process.memory_info[0] + process.timeformatted = timedelta(process.cpu_times) + process.timemillis = timemillis(process.cpu_times) + process.io_read = (process.io_counters[0] - process.io_counters[2]) / process.time_since_update + process.io_write = (process.io_counters[1] - process.io_counters[3]) / process.time_since_update + } + $scope.result = response; + canceler.resolve() + }).error(function(d, status, headers, config) { + console.log('error status:' + status + " - headers = " + headers); + canceler.resolve() + }); + } + + $scope.getClass = function(pluginName, limitNamePrefix, value, num) { + if ($scope.pluginLimits != undefined && $scope.pluginLimits[pluginName] != undefined) { + for (var i = 0; i < $scope.limitSuffix.length; i++) { + var limitName = limitNamePrefix + $scope.limitSuffix[i] + var limit = $scope.pluginLimits[pluginName][limitName] + + if (value >= limit) { + //console.log("value = " + value + " - limit = " + limit) + var pos = limitName.lastIndexOf("_") + var className = limitName.substring(pos + 1) + //console.log("className = " + className) + if (num == 1) { + return className + '_log' + } + return className + } + } + } + if (num == 1) { + return "ok_log" + } + return "ok"; + } + + $scope.init_refresh_time(); + $scope.init_limits(); + + var stop; + $scope.configure_refresh = function () { + if (!angular.isDefined(stop)) { + //$scope.refreshData(); + stop = $interval(function() { + $scope.refreshData(); + }, $scope.refreshTime * 1000); // in milliseconds + } + } + + $scope.$watch( + function() { return $scope.refreshTime; }, + function(newValue, oldValue) { + $scope.stop_refresh(); + $scope.configure_refresh(); + } + ); + + $scope.stop_refresh = function() { + if (angular.isDefined(stop)) { + $interval.cancel(stop); + stop = undefined; + } + }; + + $scope.$on('$destroy', function() { + // Make sure that the interval is destroyed too + $scope.stop_refresh(); + }); + + $scope.onKeyDown = function($event) { + console.log($event) + if ($event.keyCode == keycodes.a) { // a Sort processes automatically + $scope.sort_by() + } else if ($event.keyCode == keycodes.c) {//c Sort processes by CPU% + $scope.sort_by('cpu_percent') + } else if ($event.keyCode == keycodes.m) {//m Sort processes by MEM% + $scope.sort_by('memory_percent') + } else if ($event.keyCode == keycodes.p) {//p Sort processes by name + $scope.sort_by('name') + } else if ($event.keyCode == keycodes.i) {//i Sort processes by I/O rate + $scope.sort_by('io_read') + } else if ($event.keyCode == keycodes.t) {//t Sort processes by CPU times + $scope.sort_by('timemillis') + } else if ($event.keyCode == keycodes.d) {//d Show/hide disk I/O stats + $scope.show_hide('diskio') + } else if ($event.keyCode == keycodes.f) {//f Show/hide filesystem stats + $scope.show_hide('fs') + } else if ($event.keyCode == keycodes.n) {//n Show/hide network stats + $scope.show_hide('network') + } else if ($event.keyCode == keycodes.s) {//s Show/hide sensors stats + $scope.show_hide('sensors') + } else if ($event.keyCode == keycodes.TWO && $event.shiftKey) {//2 Show/hide left sidebar + $scope.show_hide('sidebar') + } else if ($event.keyCode == keycodes.z) {//z Enable/disable processes stats + //$scope.enableDisable('processStats') + } else if ($event.keyCode == keycodes.e) {//e Enable/disable top extended stats + //$scope.sort_by('') + } else if ($event.keyCode == keycodes.SLASH) {// SLASH Enable/disable short processes name + //$scope.sort_by('') + } else if ($event.keyCode == keycodes.D) {//D Enable/disable Docker stats + //$scope.sort_by('') + } else if ($event.keyCode == keycodes.b) {//b Bytes or bits for network I/O + $scope.networksort_byBytes = !$scope.networksort_byBytes + } else if ($event.keyCode == keycodes.l) {//l Show/hide alert logs + $scope.show_hide('alert') + } else if ($event.keyCode == keycodes.w) {//w Delete warning alerts + //$scope.sort_by('') + } else if ($event.keyCode == keycodes.x) {//x Delete warning and critical alerts + //$scope.sort_by('') + } else if ($event.keyCode == keycodes.ONE) {//1 Global CPU or per-CPU stats + //$scope.sort_by('') + } else if ($event.keyCode == keycodes.h) {//h Show/hide this help screen + //$scope.sort_by('') + } else if ($event.keyCode == keycodes.T) {//T View network I/O as combination + //$scope.sort_by('') + } else if ($event.keyCode == keycodes.u) {//u View cumulative network I/O + //$scope.sort_by('') + } else if ($event.keyCode == keycodes.F) {//F Show filesystem free space + //$scope.sort_by('') + } else if ($event.keyCode == keycodes.g) {//g Generate graphs for current history + //$scope.sort_by('') + } else if ($event.keyCode == keycodes.r) {//r Reset history + //$scope.sort_by('') + } else if ($event.keyCode == keycodes.q) {//q Quit (Esc and Ctrl-C also work) + //$scope.sort_by('') + } + } +} ]); From 1cf70cfce9a7cd67f31ff872f80b5787a1dca7de Mon Sep 17 00:00:00 2001 From: Sylvain MOUQUET Date: Sun, 18 Jan 2015 17:38:50 +0100 Subject: [PATCH 56/90] refactoring bottle html files + add refresh_time in url + add help page --- glances/outputs/bottle/index.html | 318 ----------------------- glances/outputs/static/js/controllers.js | 292 --------------------- 2 files changed, 610 deletions(-) delete mode 100644 glances/outputs/bottle/index.html delete mode 100644 glances/outputs/static/js/controllers.js diff --git a/glances/outputs/bottle/index.html b/glances/outputs/bottle/index.html deleted file mode 100644 index 0a3a320d..00000000 --- a/glances/outputs/bottle/index.html +++ /dev/null @@ -1,318 +0,0 @@ - - - - - - - Glances - - - - - - - - - - - - -
Loading...
-
-
-
-
-
- - {{result["system"].hostname}}  -
-
-
-
- Uptime: {{result["uptime"]}} -
-
-
-
- -
-
-
-
-
-
CPU
-
{{result["cpu"].total}}%
-
-
-
user:
-
- {{result["cpu"].user}}% -
-
-
-
system:
-
- {{result["cpu"].system}}% -
-
-
-
idle:
-
{{result["cpu"].idle}}%
-
-
-
-
-
-
-
-
-
nice:
-
- {{result["cpu"].nice}}% -
-
-
-
irq:
-
- {{result["cpu"].irq}}% -
-
-
-
iowait:
-
- {{result["cpu"].iowait}}% -
-
-
-
steal:
-
- {{result["cpu"].steal}}% -
-
-
-
-
-
-
-
-
-
LOAD
-
{{result["load"].cpucore}}-core
-
-
-
1 min:
-
- {{result["load"].min1}} -
-
-
-
5 min:
-
- {{result["load"].min5}} -
-
-
-
15 min:
-
- {{result["load"].min15}} -
-
-
-
-
-
-
-
-
-
MEM
-
{{result["mem"].percent}}%
-
-
-
total:
-
{{result["mem"].total | bytes:2}}
-
-
-
used:
-
- {{result["mem"].used | bytes:2}} -
-
-
-
free:
-
{{result["mem"].free | bytes:2}}
-
-
-
-
-
-
-
-
-
active:
-
{{result["mem"].active | bytes:2}}
-
-
-
inactive:
-
{{result["mem"].inactive | bytes:2}}
-
-
-
buffers:
-
{{result["mem"].buffers | bytes:2}}
-
-
-
cached:
-
{{result["mem"].cached | bytes:2}}
-
-
-
-
-
-
-
-
-
SWAP
-
{{result["memswap"].percent}}%
-
-
-
total:
-
{{result["memswap"].total | bytes:2}}
-
-
-
used:
-
- {{result["memswap"].used | bytes:2}} -
-
-
-
free:
-
{{result["memswap"].free | bytes:2}}
-
-
-
-
-
-
-
-
-
-
-
NETWORK
-
Rx/s
-
Tx/s
-
-
-
{{network.interface_name | min_size}}
-
{{network.rx | bytes}}
-
{{network.tx | bytes}}
-
{{network.rx | bits}}
-
{{network.tx | bits}}
-
-
-
- -
-
-
-
DISK I/O
-
R/s
-
W/s
-
-
-
{{disk.disk_name | min_size}}
-
{{disk.read_bytes | bytes}}
-
{{disk.write_bytes | bytes}}
-
-
-
-
-
-
-
FILE SYS
-
Used
-
Total
-
-
-
{{fs.mnt_point}} ({{fs.device_name}})
-
- {{fs.size - fs.free | bytes}} -
-
{{fs.size | bytes}}
-
-
-
-
-
-
-
SENSORS
-
°C
-
-
-
{{sensor.label}}
-
{{sensor.value}}
-
-
-
-
-
-
- CONTAINERS 1 (served by Docker 1.2.0) -
-
-
-
-
No warning or critical alert detected
-
{{alert}}
-
-
-
- -
- TASKS {{result["processcount"].total}} ({{result["processcount"].thread}} thr), {{result["processcount"].running}} run, - {{result["processcount"].sleeping}} slp, {{result["processcount"].stopped}} oth sorted automatically by cpu_percent, flat view -
- -
-
-
- -
-
-
-
CPU%
-
MEM%
- - -
PID
-
USER
-
NI
-
S
- - - -
Command
-
-
-
{{process.cpu_percent | number:1}}
-
{{process.memory_percent | number:1}}
- - -
{{process.pid}}
-
{{process.username}}
-
{{process.nice | exclamation}}
-
{{process.status}}
- - - -
{{process.name}}
-
-
-
-
-
-
- - diff --git a/glances/outputs/static/js/controllers.js b/glances/outputs/static/js/controllers.js deleted file mode 100644 index fb3777db..00000000 --- a/glances/outputs/static/js/controllers.js +++ /dev/null @@ -1,292 +0,0 @@ -glancesApp.filter('min_size', function() { - return function(input) { - var max = 8; - if (input.length > max) { - return "_" + input.substring(input.length - max) - } - return input - }; -}); -glancesApp.filter('exclamation', function() { - return function(input) { - if (input == undefined || input =='') { - return '?' - } - return input - }; -}); - - -/** - * Fork from https://gist.github.com/thomseddon/3511330 - *   => \u00A0 - * WARNING : kilobyte (kB) != kibibyte (KiB) (more info here : http://en.wikipedia.org/wiki/Byte ) - **/ -glancesApp.filter('bytes', function() { - return function (bytes, precision) { - if (isNaN(parseFloat(bytes)) || !isFinite(bytes) || bytes == 0){ - return '0B'; - } - var units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB'], - number = Math.floor(Math.log(bytes) / Math.log(1000)); - return (bytes / Math.pow(1000, Math.floor(number))).toFixed(precision) + units[number]; - } -}); -glancesApp.filter('bits', function() { - return function (bits, precision) { - if (isNaN(parseFloat(bits)) || !isFinite(bits) || bits == 0){ - return '0b'; - } - var units = ['b', 'kb', 'Mb', 'Gb', 'Tb', 'Pb'], - number = Math.floor(Math.log(bits) / Math.log(1000)); - return (bits / Math.pow(1000, Math.floor(number))).toFixed(precision) + units[number]; - } -}); - -glancesApp.controller('bodyController', [ '$scope', '$http', '$interval', '$q', function($scope, $http, $interval, $q) { - - $scope.limitSuffix = ['critical', 'careful', 'warning'] - $scope.refreshTime = 3 - $scope.pluginLimits = [] - $scope.sortColumn = 'cpu_percent' - $scope.sortOrderAsc = false - $scope.lastSortColumn = '#column_' + $scope.sortColumn - $scope.show = { - 'diskio' : true, - 'network' : true, - 'fs' : true, - 'sensors' : true, - 'sidebar' : true, - 'alert' : true - } - $scope.networkSortByBytes = false - - /*$scope.init_refresh_time = function() { - if ($routeParams != undefined && $routeParams.refresh_time != undefined) { - var new_refresh_time = parseInt($routeParams.refresh_time) - if (new_refres_time >= 1) { - $scope.refreshTime = new_refres_time - } - } - }*/ - - - $scope.initLimits = function() { - $scope.pluginsList(); - } - - $scope.showHide = function(bloc) { - $scope.show[bloc] = !$scope.show[bloc] - } - - $scope.sortBy = function(column) { - if (column == undefined) { - // sort automatically - } - angular.element(document.querySelector($scope.lastSortColumn)).removeClass('sort sort_asc sort_desc') - - if ($scope.sortColumn == column) { - $scope.sortOrderAsc = !$scope.sortOrderAsc - if ($scope.sortOrderAsc) { - angular.element(document.querySelector($scope.lastSortColumn)).addClass('sort sort_asc') - } else { - angular.element(document.querySelector($scope.lastSortColumn)).addClass('sort sort_desc') - } - } else { - $scope.sortColumn = column - $scope.sortOrderAsc = false - $scope.lastSortColumn = '#column_' + $scope.sortColumn - angular.element(document.querySelector($scope.lastSortColumn)).addClass('sort sort_desc') - } - } - - $scope.pluginsList = function() { - $http.get('/api/2/pluginslist').success(function(d, status, headers, config) { - $scope.plugins = d; - - for (var i = 0;i< $scope.plugins.length; i++) { - var pluginName = $scope.plugins[i]; - $scope.limits(pluginName); - } - - }).error(function(d, status, headers, config) { - console.log('error' + d + status + headers + config); - }); - } - $scope.limits = function(pluginName) { - url = "/api/2/" + pluginName + "/limits" - console.log("url = " + url) - $http.get(url).success(function(d, status, headers, config) { - $scope.pluginLimits[pluginName] = d; - }).error(function(d, status, headers, config) { - console.log('error'); - }); - } - - var canceler = undefined; - - /** - * Refresh all the data of the view - */ - $scope.refreshData = function() { - canceler = $q.defer(); - $http.get('/api/2/all', {timeout: canceler.promise}).success(function(response, status, headers, config) { - //alert('success'); - - function timemillis(array) { - var sum = 0.0 - for (var i = 0; i < array.length; i++) { - sum += array[i] * 1000.0; - } - return sum; - } - function leftpad(input) { - if (input < 10) { - return "0" + input - } - return input - } - function timedelta(input) { - var sum = timemillis(input); - var d = new Date(sum); - var hour = leftpad(d.getUTCHours()) // TODO : multiple days ( * (d.getDay() * 24))) - var minutes = leftpad(d.getUTCMinutes()) - var seconds = leftpad(d.getUTCSeconds()) - var milliseconds = parseInt("" + d.getUTCMilliseconds() / 10) - var millisecondsStr = leftpad(milliseconds) - return hour +":" + minutes + ":" + seconds + "." + millisecondsStr - }; - - for (var i = 0; i < response['processlist'].length; i++) { - var process = response['processlist'][i] - process.memvirt = process.memory_info[1] - process.memres = process.memory_info[0] - process.timeformatted = timedelta(process.cpu_times) - process.timemillis = timemillis(process.cpu_times) - process.io_read = (process.io_counters[0] - process.io_counters[2]) / process.time_since_update - process.io_write = (process.io_counters[1] - process.io_counters[3]) / process.time_since_update - } - $scope.result = response; - canceler.resolve() - }).error(function(d, status, headers, config) { - console.log('error status:' + status + " - headers = " + headers); - canceler.resolve() - }); - } - - $scope.getClass = function(pluginName, limitNamePrefix, value, num) { - if ($scope.pluginLimits != undefined && $scope.pluginLimits[pluginName] != undefined) { - for (var i = 0; i < $scope.limitSuffix.length; i++) { - var limitName = limitNamePrefix + $scope.limitSuffix[i] - var limit = $scope.pluginLimits[pluginName][limitName] - - if (value >= limit) { - //console.log("value = " + value + " - limit = " + limit) - var pos = limitName.lastIndexOf("_") - var className = limitName.substring(pos + 1) - //console.log("className = " + className) - if (num == 1) { - return className + '_log' - } - return className - } - } - } - if (num == 1) { - return "ok_log" - } - return "ok"; - } - - //$scope.init_refresh_time(); - $scope.initLimits(); - - var stop; - $scope.configureRefresh = function () { - if (!angular.isDefined(stop)) { - //$scope.refreshData(); - stop = $interval(function() { - $scope.refreshData(); - }, $scope.refreshTime * 1000); // in milliseconds - } - } - - $scope.$watch( - function() { return $scope.refreshTime; }, - function(newValue, oldValue) { - $scope.stopRefresh(); - $scope.configureRefresh(); - } - ); - - $scope.stopRefresh = function() { - if (angular.isDefined(stop)) { - $interval.cancel(stop); - stop = undefined; - } - }; - - $scope.$on('$destroy', function() { - // Make sure that the interval is destroyed too - $scope.stopRefresh(); - }); - - $scope.onKeyDown = function($event) { - console.log($event) - if ($event.keyCode == keycodes.a) { // a Sort processes automatically - $scope.sortBy() - } else if ($event.keyCode == keycodes.c) {//c Sort processes by CPU% - $scope.sortBy('cpu_percent') - } else if ($event.keyCode == keycodes.m) {//m Sort processes by MEM% - $scope.sortBy('memory_percent') - } else if ($event.keyCode == keycodes.p) {//p Sort processes by name - $scope.sortBy('name') - } else if ($event.keyCode == keycodes.i) {//i Sort processes by I/O rate - $scope.sortBy('io_read') - } else if ($event.keyCode == keycodes.t) {//t Sort processes by CPU times - $scope.sortBy('timemillis') - } else if ($event.keyCode == keycodes.d) {//d Show/hide disk I/O stats - $scope.showHide('diskio') - } else if ($event.keyCode == keycodes.f) {//f Show/hide filesystem stats - $scope.showHide('fs') - } else if ($event.keyCode == keycodes.n) {//n Show/hide network stats - $scope.showHide('network') - } else if ($event.keyCode == keycodes.s) {//s Show/hide sensors stats - $scope.showHide('sensors') - } else if ($event.keyCode == keycodes.TWO && $event.shiftKey) {//2 Show/hide left sidebar - $scope.showHide('sidebar') - } else if ($event.keyCode == keycodes.z) {//z Enable/disable processes stats - //$scope.enableDisable('processStats') - } else if ($event.keyCode == keycodes.e) {//e Enable/disable top extended stats - //$scope.sortBy('') - } else if ($event.keyCode == keycodes.SLASH) {// SLASH Enable/disable short processes name - //$scope.sortBy('') - } else if ($event.keyCode == keycodes.D) {//D Enable/disable Docker stats - //$scope.sortBy('') - } else if ($event.keyCode == keycodes.b) {//b Bytes or bits for network I/O - $scope.networkSortByBytes = !$scope.networkSortByBytes - } else if ($event.keyCode == keycodes.l) {//l Show/hide alert logs - $scope.showHide('alert') - } else if ($event.keyCode == keycodes.w) {//w Delete warning alerts - //$scope.sortBy('') - } else if ($event.keyCode == keycodes.x) {//x Delete warning and critical alerts - //$scope.sortBy('') - } else if ($event.keyCode == keycodes.ONE) {//1 Global CPU or per-CPU stats - //$scope.sortBy('') - } else if ($event.keyCode == keycodes.h) {//h Show/hide this help screen - //$scope.sortBy('') - } else if ($event.keyCode == keycodes.T) {//T View network I/O as combination - //$scope.sortBy('') - } else if ($event.keyCode == keycodes.u) {//u View cumulative network I/O - //$scope.sortBy('') - } else if ($event.keyCode == keycodes.F) {//F Show filesystem free space - //$scope.sortBy('') - } else if ($event.keyCode == keycodes.g) {//g Generate graphs for current history - //$scope.sortBy('') - } else if ($event.keyCode == keycodes.r) {//r Reset history - //$scope.sortBy('') - } else if ($event.keyCode == keycodes.q) {//q Quit (Esc and Ctrl-C also work) - //$scope.sortBy('') - } - } -} ]); From b4b534270fe81733e97f862ea299b8ae98164cfe Mon Sep 17 00:00:00 2001 From: Sylvain MOUQUET Date: Sun, 18 Jan 2015 17:59:33 +0100 Subject: [PATCH 57/90] fix renaming --- glances/outputs/glances_bottle.py | 7 ++++- glances/outputs/static/html/stats.html | 26 +++++++++---------- glances/outputs/static/js/stats_controller.js | 8 +++--- 3 files changed, 24 insertions(+), 17 deletions(-) diff --git a/glances/outputs/glances_bottle.py b/glances/outputs/glances_bottle.py index c96f7fe7..27c87cd5 100644 --- a/glances/outputs/glances_bottle.py +++ b/glances/outputs/glances_bottle.py @@ -58,7 +58,8 @@ class GlancesBottle(object): """Define route.""" self._app.route('/', method="GET", callback=self._index) self._app.route('/', method=["GET", "POST"], callback=self._index) - + self._app.route('/help', method="GET", callback=self._help) + self._app.route('/', method="GET", callback=self._css) self._app.route('/', method="GET", callback=self._js) self._app.route('/', method="GET", callback=self._js_map) @@ -103,6 +104,10 @@ class GlancesBottle(object): # Display return static_file("index.html", root=os.path.join(self.STATIC_PATH, 'html')) + def _help(self): + """Bottle callback for /help """ + return static_file("help.html", root=os.path.join(self.STATIC_PATH, 'html')) + def _html(self, filename): """Bottle callback for *.html files.""" # Return the static file diff --git a/glances/outputs/static/html/stats.html b/glances/outputs/static/html/stats.html index aec1163f..52ddb7db 100644 --- a/glances/outputs/static/html/stats.html +++ b/glances/outputs/static/html/stats.html @@ -254,7 +254,7 @@
TASKS {{result["processcount"].total}} ({{result["processcount"].thread}} thr), {{result["processcount"].running}} run, - {{result["processcount"].sleeping}} slp, {{result["processcount"].stopped}} oth sorted automatically by cpu_percent, flat view + {{result["processcount"].sleeping}} slp, {{result["processcount"].stopped}} oth sorted automatically by cpu_percent, flat view
@@ -264,18 +264,18 @@
-
CPU%
-
MEM%
- - -
PID
-
USER
-
NI
-
S
- - - -
Command
+
CPU%
+
MEM%
+ + +
PID
+
USER
+
NI
+
S
+ + + +
Command
{{process.cpu_percent | number:1}}
diff --git a/glances/outputs/static/js/stats_controller.js b/glances/outputs/static/js/stats_controller.js index 67b03c66..36029f21 100644 --- a/glances/outputs/static/js/stats_controller.js +++ b/glances/outputs/static/js/stats_controller.js @@ -61,7 +61,7 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', $scope.limitSuffix = ['critical', 'careful', 'warning'] $scope.refreshTime = 3 $scope.pluginLimits = [] - $scope.sortColumn = 'cpu_percent' + $scope.sortColumn = '' $scope.sortOrderAsc = false $scope.lastSortColumn = '#column_' + $scope.sortColumn $scope.show = { @@ -72,7 +72,7 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', 'sidebar' : true, 'alert' : true } - $scope.networksort_byBytes = false + $scope.networkSortByBytes = false $scope.init_refresh_time = function() { if ($routeParams != undefined && $routeParams.refresh_time != undefined) { @@ -95,6 +95,8 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', $scope.sort_by = function(column) { if (column == undefined) { // sort automatically + $scope.sortColumn = undefined + return } angular.element(document.querySelector($scope.lastSortColumn)).removeClass('sort sort_asc sort_desc') @@ -262,7 +264,7 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', } else if ($event.keyCode == keycodes.D) {//D Enable/disable Docker stats //$scope.sort_by('') } else if ($event.keyCode == keycodes.b) {//b Bytes or bits for network I/O - $scope.networksort_byBytes = !$scope.networksort_byBytes + $scope.networkSortByBytes = !$scope.networkSortByBytes } else if ($event.keyCode == keycodes.l) {//l Show/hide alert logs $scope.show_hide('alert') } else if ($event.keyCode == keycodes.w) {//w Delete warning alerts From bdc6c43ba95a62816df2f4ebe38c416c26d62d6e Mon Sep 17 00:00:00 2001 From: Sylvain MOUQUET Date: Sun, 18 Jan 2015 20:41:41 +0100 Subject: [PATCH 58/90] message --- glances/outputs/static/html/stats.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/glances/outputs/static/html/stats.html b/glances/outputs/static/html/stats.html index 52ddb7db..766847bd 100644 --- a/glances/outputs/static/html/stats.html +++ b/glances/outputs/static/html/stats.html @@ -241,7 +241,7 @@
- CONTAINERS 1 (served by Docker 1.2.0) + CONTAINERS 1 (served by 1.2.0)
From e7bf3556587f2a19906e06d649557d2363664aac Mon Sep 17 00:00:00 2001 From: Sylvain MOUQUET Date: Sun, 18 Jan 2015 21:08:46 +0100 Subject: [PATCH 59/90] fix merge --- glances/plugins/glances_load.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/glances/plugins/glances_load.py b/glances/plugins/glances_load.py index 49d971d0..2e066247 100644 --- a/glances/plugins/glances_load.py +++ b/glances/plugins/glances_load.py @@ -121,11 +121,12 @@ class Plugin(GlancesPlugin): # Call the father's method GlancesPlugin.update_views(self) - # Add specifics informations - # Alert and log - self.views['min15']['decoration'] = self.get_alert_log(self.stats['min15'], max=100 * self.stats['cpucore']) - # Alert only - self.views['min5']['decoration'] = self.get_alert(self.stats['min5'], max=100 * self.stats['cpucore']) + if self.views != {}: + # Add specifics informations + # Alert and log + self.views['min15']['decoration'] = self.get_alert_log(self.stats['min15'], max=100 * self.stats['cpucore']) + # Alert only + self.views['min5']['decoration'] = self.get_alert(self.stats['min5'], max=100 * self.stats['cpucore']) def msg_curse(self, args=None): """Return the dict to display in the curse interface.""" From df05c92ad9d3b33dadee55ebe8626d4d14b9d9e2 Mon Sep 17 00:00:00 2001 From: Sylvain MOUQUET Date: Sun, 18 Jan 2015 21:12:27 +0100 Subject: [PATCH 60/90] remove doublon --- glances/outputs/glances_bottle.py | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/glances/outputs/glances_bottle.py b/glances/outputs/glances_bottle.py index 31a1e6a3..dd8b4f89 100644 --- a/glances/outputs/glances_bottle.py +++ b/glances/outputs/glances_bottle.py @@ -72,7 +72,6 @@ class GlancesBottle(object): # REST API self._app.route('/api/2/pluginslist', method="GET", callback=self._api_plugins) - self._app.route('/api/2/pluginslimits', method="GET", callback=self._api_plugins_limits) self._app.route('/api/2/all', method="GET", callback=self._api_all) self._app.route('/api/2/all/limits', method="GET", callback=self._api_all_limits) self._app.route('/api/2/all/views', method="GET", callback=self._api_all_views) @@ -158,25 +157,6 @@ class GlancesBottle(object): abort(404, "Cannot get plugin list (%s)" % str(e)) return plist - def _api_plugins_limits(self): - """ - Glances API RESTFul implementation - Return the limits for each plugins - or 404 error - """ - response.content_type = 'application/json' - - result = {} - for plugin in self.plugins_list: - try: - # Get the JSON value of the stat ID - limits = self.stats.get_plugin(plugin).get_limits() - result[plugin] = limits - except Exception as e: - pass - return result - - def _api_all(self): """ Glances API RESTFul implementation From 47769ca42ba4319ece830f8799c1e5bd90437c30 Mon Sep 17 00:00:00 2001 From: Sylvain MOUQUET Date: Sun, 18 Jan 2015 21:14:06 +0100 Subject: [PATCH 61/90] remove doublon --- glances/outputs/static/js/stats_controller.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/glances/outputs/static/js/stats_controller.js b/glances/outputs/static/js/stats_controller.js index 36029f21..57f7b027 100644 --- a/glances/outputs/static/js/stats_controller.js +++ b/glances/outputs/static/js/stats_controller.js @@ -116,7 +116,7 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', } $scope.plugins_limits = function() { - $http.get('/api/2/pluginslimits').success(function(response, status, headers, config) { + $http.get('/api/2/all/limits').success(function(response, status, headers, config) { $scope.limits = response }).error(function(response, status, headers, config) { console.log('error : ' + response+ status + headers + config); From 45d6673787be2df8cd1ba1f4a19c55a416f55484 Mon Sep 17 00:00:00 2001 From: Sylvain MOUQUET Date: Sun, 18 Jan 2015 23:02:27 +0100 Subject: [PATCH 62/90] sort + help --- glances/outputs/static/html/help.html | 2 +- glances/outputs/static/html/index.html | 1 + glances/outputs/static/html/stats.html | 30 +++++++++----- glances/outputs/static/js/help_controller.js | 9 +++- glances/outputs/static/js/stats_controller.js | 41 ++++++++++++++++--- 5 files changed, 66 insertions(+), 17 deletions(-) diff --git a/glances/outputs/static/html/help.html b/glances/outputs/static/html/help.html index 04da403f..957b6e15 100644 --- a/glances/outputs/static/html/help.html +++ b/glances/outputs/static/html/help.html @@ -19,7 +19,7 @@ - + Help window!!! diff --git a/glances/outputs/static/html/index.html b/glances/outputs/static/html/index.html index 054d5a99..c45bd3b4 100644 --- a/glances/outputs/static/html/index.html +++ b/glances/outputs/static/html/index.html @@ -17,6 +17,7 @@ + diff --git a/glances/outputs/static/html/stats.html b/glances/outputs/static/html/stats.html index 766847bd..6bd79192 100644 --- a/glances/outputs/static/html/stats.html +++ b/glances/outputs/static/html/stats.html @@ -5,12 +5,12 @@
- Refresh time 
@@ -186,7 +186,7 @@
Rx/s
Tx/s
-
+
{{network.interface_name | min_size}}
{{network.rx | bytes}}
{{network.tx | bytes}}
@@ -240,21 +240,30 @@
-
+ +
+ No warning or critical alert detected + Warning or critical alerts (lasts {{result['alert'].length}} entries)
-
-
No warning or critical alert detected
-
{{alert}}
+
+
+{{alert.begin}} ({{(alert[1]-alert[0]) | date : 'h:mm:ss'}}) - {{alert[2]}} on {{alert[3]}} ({{alert[4]}}) +
TASKS {{result["processcount"].total}} ({{result["processcount"].thread}} thr), {{result["processcount"].running}} run, - {{result["processcount"].sleeping}} slp, {{result["processcount"].stopped}} oth sorted automatically by cpu_percent, flat view + {{result["processcount"].sleeping}} slp, {{result["processcount"].stopped}} oth + sorted automatically + sorted + by {{sortColumn}}, flat view +
@@ -289,7 +298,8 @@ -
{{process.name}}
+
{{process.name}}
+
{{process.cmdline}}
diff --git a/glances/outputs/static/js/help_controller.js b/glances/outputs/static/js/help_controller.js index ae22c77c..d2d2f3cc 100644 --- a/glances/outputs/static/js/help_controller.js +++ b/glances/outputs/static/js/help_controller.js @@ -1,4 +1,11 @@ glancesApp.controller('helpController', [ '$scope', function($scope) { $scope.message = 'help window' -}]); \ No newline at end of file + + $scope.onKeyDown = function($event) { + console.log($event) + if ($event.keyCode == keycodes.h) {//h Show/hide this help screen + window.location = "/" + } + } +}]); diff --git a/glances/outputs/static/js/stats_controller.js b/glances/outputs/static/js/stats_controller.js index 36029f21..3d84fe91 100644 --- a/glances/outputs/static/js/stats_controller.js +++ b/glances/outputs/static/js/stats_controller.js @@ -5,6 +5,9 @@ glancesApp.config([ '$routeProvider', '$locationProvider', function($routeProvid }).when('/:refresh_time', { templateUrl : 'stats.html', controller : 'statsController' + }).when('/help', { + templateUrl : 'help.html', + controller : 'helpController' }); $locationProvider.html5Mode(true); @@ -56,7 +59,7 @@ glancesApp.filter('bits', function() { }); -glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', '$routeParams', function($scope, $http, $interval, $q, $routeParams) { +glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', '$routeParams', '$location', function($scope, $http, $interval, $q, $routeParams, $location) { $scope.limitSuffix = ['critical', 'careful', 'warning'] $scope.refreshTime = 3 @@ -70,7 +73,8 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', 'fs' : true, 'sensors' : true, 'sidebar' : true, - 'alert' : true + 'alert' : true, + 'short_process_name': false } $scope.networkSortByBytes = false @@ -98,6 +102,9 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', $scope.sortColumn = undefined return } + if (column == 'name' && !$scope.show.short_process_name) { + column = 'cmdline' + } angular.element(document.querySelector($scope.lastSortColumn)).removeClass('sort sort_asc sort_desc') if ($scope.sortColumn == column) { @@ -156,6 +163,24 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', var millisecondsStr = leftpad(milliseconds) return hour +":" + minutes + ":" + seconds + "." + millisecondsStr }; + + function dateformat(input) { + var millis = input * 1000.0; + var d = new Date(millis) + var year = d.getFullYear() + var month = leftpad(d.getMonth() + 1) // JANUARY = 0 + var day = leftpad(d.getDate()) + return year + "-" + month + "-" + day + " " + datetimeformat(input) + + } + function datetimeformat(input) { + var millis = input * 1000.0; + var d = new Date(millis) + var hour = leftpad(d.getUTCHours()) // TODO : multiple days ( * (d.getDay() * 24))) + var minutes = leftpad(d.getUTCMinutes()) + var seconds = leftpad(d.getUTCSeconds()) + return hour + ":" + minutes + ":" + seconds + } for (var i = 0; i < response['processlist'].length; i++) { var process = response['processlist'][i] @@ -166,6 +191,11 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', process.io_read = (process.io_counters[0] - process.io_counters[2]) / process.time_since_update process.io_write = (process.io_counters[1] - process.io_counters[3]) / process.time_since_update } + for (var i = 0; i < response['alert'].length; i++) { + var alert = response['alert'][i] + alert.begin = dateformat(alert[0]) + alert.end = datetimeformat(alert[1] - alert[0]) + } $scope.result = response; canceler.resolve() }).error(function(d, status, headers, config) { @@ -249,7 +279,7 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', $scope.show_hide('diskio') } else if ($event.keyCode == keycodes.f) {//f Show/hide filesystem stats $scope.show_hide('fs') - } else if ($event.keyCode == keycodes.n) {//n Show/hide network stats + } else if ($event.keyCode == keycodes.n) {//n sort_by Show/hide network stats $scope.show_hide('network') } else if ($event.keyCode == keycodes.s) {//s Show/hide sensors stats $scope.show_hide('sensors') @@ -260,7 +290,7 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', } else if ($event.keyCode == keycodes.e) {//e Enable/disable top extended stats //$scope.sort_by('') } else if ($event.keyCode == keycodes.SLASH) {// SLASH Enable/disable short processes name - //$scope.sort_by('') + $scope.show_hide('short_process_name') } else if ($event.keyCode == keycodes.D) {//D Enable/disable Docker stats //$scope.sort_by('') } else if ($event.keyCode == keycodes.b) {//b Bytes or bits for network I/O @@ -274,7 +304,8 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', } else if ($event.keyCode == keycodes.ONE) {//1 Global CPU or per-CPU stats //$scope.sort_by('') } else if ($event.keyCode == keycodes.h) {//h Show/hide this help screen - //$scope.sort_by('') + window.location = "/help" + //$location.path("/help") } else if ($event.keyCode == keycodes.T) {//T View network I/O as combination //$scope.sort_by('') } else if ($event.keyCode == keycodes.u) {//u View cumulative network I/O From b025cddfae419ce47c5ec3e038924596f96eebae Mon Sep 17 00:00:00 2001 From: Sylvain MOUQUET Date: Sun, 18 Jan 2015 23:17:56 +0100 Subject: [PATCH 63/90] per cpu --- glances/outputs/static/html/stats.html | 29 +++++++++++++++++-- glances/outputs/static/js/stats_controller.js | 7 +++-- glances/outputs/static/js/variables.js | 2 +- 3 files changed, 31 insertions(+), 7 deletions(-) diff --git a/glances/outputs/static/html/stats.html b/glances/outputs/static/html/stats.html index 6bd79192..c554af3c 100644 --- a/glances/outputs/static/html/stats.html +++ b/glances/outputs/static/html/stats.html @@ -24,20 +24,20 @@
-
+
CPU
{{result["cpu"].total}}%
user:
-
+
{{result["cpu"].user}}%
system:
-
+
{{result["cpu"].system}}%
@@ -45,6 +45,29 @@
idle:
{{result["cpu"].idle}}%
+
+ +
+
+
PER CPU
+
{{percpu.total}}%
+
+
+
user:
+
+ {{percpu.user}}% +
+
+
+
system:
+
+ {{percpu.system}}% +
+
+
+
idle:
+
{{percpu.idle}}%
+
diff --git a/glances/outputs/static/js/stats_controller.js b/glances/outputs/static/js/stats_controller.js index 3d84fe91..6d0ed94f 100644 --- a/glances/outputs/static/js/stats_controller.js +++ b/glances/outputs/static/js/stats_controller.js @@ -74,7 +74,8 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', 'sensors' : true, 'sidebar' : true, 'alert' : true, - 'short_process_name': false + 'short_process_name': false, + 'per_cpu': false } $scope.networkSortByBytes = false @@ -301,8 +302,8 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', //$scope.sort_by('') } else if ($event.keyCode == keycodes.x) {//x Delete warning and critical alerts //$scope.sort_by('') - } else if ($event.keyCode == keycodes.ONE) {//1 Global CPU or per-CPU stats - //$scope.sort_by('') + } else if ($event.keyCode == keycodes.ONE && $event.shiftKey) {//1 Global CPU or per-CPU stats + $scope.show_hide('per_cpu') } else if ($event.keyCode == keycodes.h) {//h Show/hide this help screen window.location = "/help" //$location.path("/help") diff --git a/glances/outputs/static/js/variables.js b/glances/outputs/static/js/variables.js index 91f7ce22..49a9294d 100644 --- a/glances/outputs/static/js/variables.js +++ b/glances/outputs/static/js/variables.js @@ -18,7 +18,7 @@ var keycodes = { 'l' : '76', 'w' : '87', 'x' : '88', - 'ONE' : '97', + 'ONE' : '49', 'h' : '72', 'T' : '84', 'u' : '', From bc5561d42ac01ef96cd753e5ab1be9097cfefe78 Mon Sep 17 00:00:00 2001 From: nclsHart Date: Mon, 19 Jan 2015 00:30:54 +0100 Subject: [PATCH 64/90] fix processlist header align --- glances/outputs/bottle/index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/glances/outputs/bottle/index.html b/glances/outputs/bottle/index.html index c6c26902..94893d91 100644 --- a/glances/outputs/bottle/index.html +++ b/glances/outputs/bottle/index.html @@ -203,13 +203,13 @@
PID
-
USER
+
USER
NI
S
-
Command
+
Command
{{process.cpu_percent | number:1}}
From c125b512911c7b4039c7bd9d412345af3fc6a5c1 Mon Sep 17 00:00:00 2001 From: Nicolas Hennion Date: Mon, 19 Jan 2015 16:25:42 +0100 Subject: [PATCH 65/90] Correct issue if sensors are not available --- glances/plugins/glances_sensors.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/glances/plugins/glances_sensors.py b/glances/plugins/glances_sensors.py index 526d0980..a821880f 100644 --- a/glances/plugins/glances_sensors.py +++ b/glances/plugins/glances_sensors.py @@ -136,6 +136,8 @@ class Plugin(GlancesPlugin): # Add specifics informations # Alert for i in self.stats: + if i['value'] == []: + continue if i['type'] == 'battery': self.views[i[self.get_key()]]['value']['decoration'] = self.get_alert(100 - i['value'], header=i['type']) else: From 74ced7a915fe0816585713b79134254f53fbbd6b Mon Sep 17 00:00:00 2001 From: nclsHart Date: Mon, 19 Jan 2015 22:02:32 +0100 Subject: [PATCH 67/90] remove old base.tpl file (probably fix a previous merge conflict) --- glances/outputs/bottle/base.tpl | 60 --------------------------------- 1 file changed, 60 deletions(-) delete mode 100644 glances/outputs/bottle/base.tpl diff --git a/glances/outputs/bottle/base.tpl b/glances/outputs/bottle/base.tpl deleted file mode 100644 index 30f73a35..00000000 --- a/glances/outputs/bottle/base.tpl +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - Glances - - - - - - - -
-
-
-
- % include('plugin_text', plugin_name="system", stats=stats['system']) -
-
- % include('plugin_text', plugin_name="uptime", stats=stats['uptime']) -
-
-
-
-
- % include('plugin_table', plugin_name="cpu", stats=stats['cpu']) -
-
- % include('plugin_table', plugin_name="load", stats=stats['load']) -
-
- % include('plugin_table', plugin_name="mem", stats=stats['mem']) -
-
- % include('plugin_table', plugin_name="memswap", stats=stats['memswap']) -
-
-
-
- % include('plugin_table', plugin_name="network", stats=stats['network']) - % include('plugin_table', plugin_name="diskio", stats=stats['diskio']) - % include('plugin_table', plugin_name="fs", stats=stats['fs']) - % include('plugin_table', plugin_name="sensors", stats=stats['sensors']) -
-
- % include('plugin_table', plugin_name="alert", stats=stats['alert']) - % include('plugin_text', plugin_name="processcount", stats=stats['processcount']) -
-
- % include('plugin_table', plugin_name="monitor", stats=stats['monitor']) -
-
- % include('plugin_table', plugin_name="processlist", stats=stats['processlist']) -
-
-
- - \ No newline at end of file From 7e1e00a0c32015daa6e977d127da0ea216f9651a Mon Sep 17 00:00:00 2001 From: nclsHart Date: Tue, 20 Jan 2015 23:06:52 +0100 Subject: [PATCH 68/90] add glances logo and animation on loading page --- glances/outputs/glances_bottle.py | 6 +++ glances/outputs/static/css/style.css | 52 ++++++++++++++++++++++ glances/outputs/static/html/stats.html | 18 +++++--- glances/outputs/static/images/glances.png | Bin 0 -> 43588 bytes 4 files changed, 70 insertions(+), 6 deletions(-) create mode 100644 glances/outputs/static/images/glances.png diff --git a/glances/outputs/glances_bottle.py b/glances/outputs/glances_bottle.py index f6f3187b..d757ae6e 100644 --- a/glances/outputs/glances_bottle.py +++ b/glances/outputs/glances_bottle.py @@ -68,6 +68,7 @@ class GlancesBottle(object): self._app.route('/', method="GET", callback=self._js_map) self._app.route('/', method="GET", callback=self._html) + self._app.route('/', method="GET", callback=self._images) self._app.route('/favicon.ico', method="GET", callback=self._favicon) # REST API @@ -135,6 +136,11 @@ class GlancesBottle(object): """Bottle callback for *.js.map files.""" # Return the static file return static_file(filename, root=os.path.join(self.STATIC_PATH, 'js')) + + def _images(self, filename): + """Bottle callback for *.png files.""" + # Return the static file + return static_file(filename, root=os.path.join(self.STATIC_PATH, 'images')) def _favicon(self): """Bottle callback for favicon.""" diff --git a/glances/outputs/static/css/style.css b/glances/outputs/static/css/style.css index 130bdb1c..8f02af5c 100644 --- a/glances/outputs/static/css/style.css +++ b/glances/outputs/static/css/style.css @@ -93,4 +93,56 @@ body { #processlist .table-cell { padding: 0px 5px 0px 5px; white-space: nowrap; +} + +/* Loading page */ + +#loading-page .glances-logo { + background: url('glances.png') no-repeat center center; + background-size: contain; + height: 500px; +} + +#loading-page .loader:before, +#loading-page .loader:after, +#loading-page .loader { + width: 10px; + height: 10px; + border-radius: 50%; + -webkit-animation-fill-mode: both; + animation-fill-mode: both; + -webkit-animation: loading 1.8s infinite ease-in-out; + animation: loading 1.8s infinite ease-in-out; +} +#loading-page .loader { + margin: auto; + position: relative; + text-indent: -9999px; + -webkit-animation-delay: 0.16s; + animation-delay: 0.16s; +} +#loading-page .loader:before { left: -40px } +#loading-page .loader:after { + left: 40px; + -webkit-animation-delay: 0.32s; + animation-delay: 0.32s; +} +#loading-page .loader:before, +#loading-page .loader:after { + content: ''; + position: absolute; + top: 0; +} + +@-webkit-keyframes loading { + 0%, + 80%, + 100% { box-shadow: 0 20px 0 -10px #56CA69 } + 40% { box-shadow: 0 20px 0 0 #56CA69 } +} +@keyframes loading { + 0%, + 80%, + 100% { box-shadow: 0 20px 0 -10px #56CA69 } + 40% { box-shadow: 0 20px 0 0 #56CA69 } } \ No newline at end of file diff --git a/glances/outputs/static/html/stats.html b/glances/outputs/static/html/stats.html index 257212fa..1e384f9e 100644 --- a/glances/outputs/static/html/stats.html +++ b/glances/outputs/static/html/stats.html @@ -1,5 +1,11 @@ - -
Loading...
+
+
+
+ +
Loading...
+
+
+
@@ -47,7 +53,7 @@
-
+
PER CPU
{{percpu.total}}%
@@ -273,9 +279,9 @@
-
-{{alert.begin}} ({{(alert[1]-alert[0]) | date : 'h:mm:ss'}}) - {{alert[2]}} on {{alert[3]}} ({{alert[4]}}) -
+
+ {{alert.begin}} ({{(alert[1]-alert[0]) | date : 'h:mm:ss'}}) - {{alert[2]}} on {{alert[3]}} ({{alert[4]}}) +
diff --git a/glances/outputs/static/images/glances.png b/glances/outputs/static/images/glances.png new file mode 100644 index 0000000000000000000000000000000000000000..2a8e62ba908fdf0edf174f28c3825652743f857d GIT binary patch literal 43588 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%0AiM_!k2L_h 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%0AG41^@AxS@lY3`d{+)>Hk)XbL<9bBUMu|Xw z=hTrI?1;u6@DEEr77q`{ib&KQ)sck@7ZJ47Xvqs zx0_2%l1PdM^X3%=;dqWZ+&>*3Bsq$5ciXliQec?%Hfl~V3$`%jF(vqKKp2?(q)5RG z_P>;;oWBd3L&qLkPW?8;3ge1$@)P`C=?yy#JQ6;P1C4mMQ?uoD3ORK2EPb3D$>Pm3 zk7S~s3p|f0RctG*$RtLtOZ-U3B2Te=CZYDsbzLdA_~+7z$E-v;T=OhnIg2q#!c2Es zeG8SB3U&2|jJBv3^&i_u5sncndV2A}9{Nqt&8nkBAa8)bC3DX+ za_D#n2lPh4SGVA8<(PhNMudWJ-c;vXwAfx6_cC{F8esQrso%zJW=?;xM<%C6Xl8ih!DUUDR1Y%Sei_S^0y6auwpUaom;SQ~Yc^-SD zFc65HYgNw7Z{8?FSJC>wf7(Bep_Un-G&m1g?(3$!JF%ep`Q6~Tp@v%SssjJQq5|=c zG2!`qNJsOZc7W&U`w5kIg;h6RCAjYO>u;Pa7bgDclk{F>wA)~Tr(GHvS2l-E%S5QT zDtmg=VRX7G8qhLnkF#pNkukj51jX?fhvtOKa8HKkA*!<9AsNl~Tu3;%m* z%;P-LXN2^FDe+w}05%tW$Z9>la_%ZRTmdrBjx3u9Xw42qz;xyb^~0J>+aQ+3$bv@( zu=k!K=X+*Qx>7ob(ue=5nPS2}(ii&?5Tm{=u;}C*bs_&Z{%4~Ht{`~FGKWKx+Wg^) z2;xJDJd0#iGtTJE>e|&PHqcX4d2r=lP5C&-dU}mC`U%N(+=n-$OjP9m8)sSYrtxaR zKEXGi_o}7hFXT!qPvyxNzgNr4k$Kd2r7}ukeoj-~R{cYJJ53 literal 0 HcmV?d00001 From fb23e5638959292d577bac8a104f61d2f51d8722 Mon Sep 17 00:00:00 2001 From: nclsHart Date: Sat, 24 Jan 2015 16:13:57 +0100 Subject: [PATCH 69/90] better rendering of Web UI loading page on small devices --- glances/outputs/static/css/style.css | 61 +++++++++++++++++--------- glances/outputs/static/html/stats.html | 8 +--- 2 files changed, 43 insertions(+), 26 deletions(-) diff --git a/glances/outputs/static/css/style.css b/glances/outputs/static/css/style.css index 8f02af5c..2d852eb8 100644 --- a/glances/outputs/static/css/style.css +++ b/glances/outputs/static/css/style.css @@ -100,30 +100,48 @@ body { #loading-page .glances-logo { background: url('glances.png') no-repeat center center; background-size: contain; - height: 500px; } +@media (max-width: 750px) { + #loading-page .glances-logo { + height: 400px; + } +} +@media (min-width: 750px) { + #loading-page .glances-logo { + height: 500px; + } +} + + +/* +Loading animation +source : https://github.com/lukehaas/css-loaders +*/ #loading-page .loader:before, #loading-page .loader:after, #loading-page .loader { - width: 10px; - height: 10px; border-radius: 50%; + width: 1em; + height: 1em; -webkit-animation-fill-mode: both; animation-fill-mode: both; - -webkit-animation: loading 1.8s infinite ease-in-out; - animation: loading 1.8s infinite ease-in-out; + -webkit-animation: loader 1.8s infinite ease-in-out; + animation: loader 1.8s infinite ease-in-out; } #loading-page .loader { margin: auto; + font-size: 10px; position: relative; - text-indent: -9999px; + text-indent: -9999em; -webkit-animation-delay: 0.16s; animation-delay: 0.16s; } -#loading-page .loader:before { left: -40px } +#loading-page .loader:before { + left: -3.5em; +} #loading-page .loader:after { - left: 40px; + left: 3.5em; -webkit-animation-delay: 0.32s; animation-delay: 0.32s; } @@ -133,16 +151,19 @@ body { position: absolute; top: 0; } - -@-webkit-keyframes loading { - 0%, - 80%, - 100% { box-shadow: 0 20px 0 -10px #56CA69 } - 40% { box-shadow: 0 20px 0 0 #56CA69 } +@-webkit-keyframes loader { + 0%, 80%, 100% { + box-shadow: 0 2.5em 0 -1.3em #56CA69; + } + 40% { + box-shadow: 0 2.5em 0 0 #56CA69; + } +} +@keyframes loader { + 0%, 80%, 100% { + box-shadow: 0 2.5em 0 -1.3em #56CA69; + } + 40% { + box-shadow: 0 2.5em 0 0 #56CA69; + } } -@keyframes loading { - 0%, - 80%, - 100% { box-shadow: 0 20px 0 -10px #56CA69 } - 40% { box-shadow: 0 20px 0 0 #56CA69 } -} \ No newline at end of file diff --git a/glances/outputs/static/html/stats.html b/glances/outputs/static/html/stats.html index 1e384f9e..c2586496 100644 --- a/glances/outputs/static/html/stats.html +++ b/glances/outputs/static/html/stats.html @@ -1,10 +1,6 @@
-
-
- -
Loading...
-
-
+ +
Loading...
From 6d32061754bf6d5cff8b92e8cb8496f19db8411a Mon Sep 17 00:00:00 2001 From: Nicolargo Date: Mon, 19 Jan 2015 22:47:22 +0100 Subject: [PATCH 70/90] Add per container CPU and MEM monitoring in the Docker plugin (issue #490) --- NEWS | 2 +- glances/plugins/glances_docker.py | 63 +++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 3ee2a671..acc5f9c4 100644 --- a/NEWS +++ b/NEWS @@ -18,7 +18,7 @@ Enhancements and news features: * Refactor export module (CSV export option is now --export-csv). It is now possible to export stats from the Glances client mode (issue #463) * The Web inteface is now based on BootStarp / RWD grid (issue #417, #366 and #461) Thanks to Nicolas Hart @nclsHart * Add the RAID plugin (issue #447) - * Add the Docker plugin (issue #440) + * Add the Docker plugin (issue #440) with per container CPU and memory monitoring (issue #490) * It is possible, through the configuration file, to define if an alarm should be logged or not (using the _log option) (issue #437) * You can now set alarm for Disk IO * API: add getAllLimits and getAllViews methods (issue#481) diff --git a/glances/plugins/glances_docker.py b/glances/plugins/glances_docker.py index 55b0f6b1..da96235e 100644 --- a/glances/plugins/glances_docker.py +++ b/glances/plugins/glances_docker.py @@ -33,6 +33,9 @@ except ImportError as e: docker_tag = False else: docker_tag = True +import os +import re +import numbers class Plugin(GlancesPlugin): @@ -140,14 +143,58 @@ class Plugin(GlancesPlugin): # u'Names': [u'/webstack_nginx_1'], # u'Id': u'b0da859e84eb4019cf1d965b15e9323006e510352c402d2f442ea632d61faaa5'}] self.stats['containers'] = self.docker_client.containers() + # Get CPU and MEMORY stats for containers + for c in self.stats['containers']: + c['cpu'] = self.get_docker_cpu(c['Id']) + c['memory'] = self.get_docker_memory(c['Id']) elif self.get_input() == 'snmp': # Update stats using SNMP # Not available pass + logger.info(self.stats) + return self.stats + def get_docker_cpu(self, id): + """Return the container CPU usage by reading /sys/fs/cgroup/... + Input: id is the full container id + Output: a dict {'total': 1.49, 'user': 0.65, 'system': 0.84}""" + ret = {} + # Read the stats + with open('/sys/fs/cgroup/cpuacct/docker/' + id + '/cpuacct.stat', 'r') as f: + for line in f: + m = re.search(r"(system|user)\s+(\d+)", line) + if m: + ret[m.group(1)] = int(m.group(2)) + # Get the user ticks + ticks = self.get_user_ticks() + if isinstance(ret["system"], numbers.Number) and isinstance(ret["user"], numbers.Number): + ret["total"] = ret["system"] + ret["user"] + for k in ret.keys(): + ret[k] = float(ret[k]) / ticks + # Return the stats + return ret + + def get_docker_memory(self, id): + """Return the container MEMORY usage by reading /sys/fs/cgroup/... + Input: id is the full container id + Output: a dict {'rss': 1015808, 'cache': 356352}""" + ret = {} + # Read the stats + with open('/sys/fs/cgroup/memory/docker/' + id + '/memory.stat', 'r') as f: + for line in f: + m = re.search(r"(rss|cache)\s+(\d+)", line) + if m: + ret[m.group(1)] = int(m.group(2)) + # Return the stats + return ret + + def get_user_ticks(self): + """return the user ticks by reading the environment variable""" + return os.sysconf(os.sysconf_names['SC_CLK_TCK']) + def msg_curse(self, args=None): """Return the dict to display in the curse interface.""" # Init the return message @@ -175,6 +222,10 @@ class Plugin(GlancesPlugin): ret.append(self.curse_add_line(msg)) msg = '{0:>26}'.format(_("Status")) ret.append(self.curse_add_line(msg)) + msg = '{0:>6}'.format(_("CPU%")) + ret.append(self.curse_add_line(msg)) + msg = '{0:>6}'.format(_("MEM")) + ret.append(self.curse_add_line(msg)) msg = ' {0:8}'.format(_("Command")) ret.append(self.curse_add_line(msg)) # Data @@ -196,6 +247,18 @@ class Plugin(GlancesPlugin): msg = container['Status'].replace("minute", "min") msg = '{0:>26}'.format(msg[0:25]) ret.append(self.curse_add_line(msg, status)) + # CPU + try: + msg = '{0:>6.1f}'.format(container['cpu']['total']) + except KeyError: + msg = '{0:>6}'.format('?') + ret.append(self.curse_add_line(msg)) + # MEM + try: + msg = '{0:>6}'.format(self.auto_unit(container['memory']['rss'])) + except KeyError: + msg = '{0:>6}'.format('?') + ret.append(self.curse_add_line(msg)) # Command msg = ' {0}'.format(container['Command']) ret.append(self.curse_add_line(msg)) From 628cfcbbc5cca471be13611a3c1581ac3018036a Mon Sep 17 00:00:00 2001 From: Nicolargo Date: Thu, 22 Jan 2015 21:52:15 +0100 Subject: [PATCH 71/90] Resolve merge issue --- NEWS | 18 +++++++----------- docs/glances-doc.rst | 6 +++--- glances/__init__.py | 2 +- setup.py | 4 ++-- 4 files changed, 13 insertions(+), 17 deletions(-) diff --git a/NEWS b/NEWS index acc5f9c4..9402b5ef 100644 --- a/NEWS +++ b/NEWS @@ -2,26 +2,22 @@ Glances Version 2.x ============================================================================== -<<<<<<< HEAD Version 2.3 =========== -======= -Version 2.2.1 -============= ->>>>>>> f2096d40c3086c062f882d6f115e9dd08ae26b62 Enhancements and news features: - * Add actions on alerts (issue #132). It is now possible to run action (command line) by triggers. Action could containq {Mustache} {{tag}} (Mustache) with stat value. + * Add the Docker plugin (issue #440) with per container CPU and memory monitoring (issue #490) + * Add the RAID plugin (issue #447) + * Add actions on alerts (issue #132). It is now possible to run action (command line) by triggers. Action could contain {{tag}} (Mustache) with stat value. * Add InfluxDB export module (--export-influxdb) (issue #455) - * Add Statsd export module (--export-statsd) (issue #465) + * Add StatsD export module (--export-statsd) (issue #465) * Refactor export module (CSV export option is now --export-csv). It is now possible to export stats from the Glances client mode (issue #463) * The Web inteface is now based on BootStarp / RWD grid (issue #417, #366 and #461) Thanks to Nicolas Hart @nclsHart - * Add the RAID plugin (issue #447) - * Add the Docker plugin (issue #440) with per container CPU and memory monitoring (issue #490) - * It is possible, through the configuration file, to define if an alarm should be logged or not (using the _log option) (issue #437) + * It is now possible, through the configuration file, to define if an alarm should be logged or not (using the _log option) (issue #437) * You can now set alarm for Disk IO - * API: add getAllLimits and getAllViews methods (issue#481) + * API: add getAllLimits and getAllViews methods (issue #481) and allow CORS request (issue #479) + * SNMP client support NetApp appliance (issue #394) Bugs corrected: diff --git a/docs/glances-doc.rst b/docs/glances-doc.rst index b8d4cfd7..60d7fe40 100644 --- a/docs/glances-doc.rst +++ b/docs/glances-doc.rst @@ -2,11 +2,11 @@ Glances ======= -This manual describes *Glances* version 2.2.1. +This manual describes *Glances* version 2.3. Copyright © 2011-2015 Nicolas Hennion -Junuary 2015 +January 2015 .. contents:: Table of Contents @@ -719,7 +719,7 @@ By action, we mean all shell command line. For example, if you want to execute t critical=5.0 critical_action=python /path/to/foo.py -All the stats are usable in the command line by the use of the {{mustache}} syntax. Another example to create a log file containing used vs total disk space if a warning space trigger is reached: +All the stats are available in the command line through the use of the {{mustache}} syntax. Another example to create a log file containing used vs total disk space if a space trigger warning is reached: [fs] warning=70 diff --git a/glances/__init__.py b/glances/__init__.py index 6599929f..0d29033a 100644 --- a/glances/__init__.py +++ b/glances/__init__.py @@ -20,7 +20,7 @@ """Init the Glances software.""" __appname__ = 'glances' -__version__ = '2.2.1' +__version__ = '2.3_RC1' __author__ = 'Nicolas Hennion ' __license__ = 'LGPL' diff --git a/setup.py b/setup.py index 0eada109..e46c3484 100755 --- a/setup.py +++ b/setup.py @@ -52,13 +52,13 @@ def get_requires(): setup( name='Glances', - version='2.2.1', + version='2.3RC1', description="A cross-platform curses-based monitoring tool", long_description=open('README.rst').read(), author='Nicolas Hennion', author_email='nicolas@nicolargo.com', url='https://github.com/nicolargo/glances', - # download_url='https://s3.amazonaws.com/glances/glances-2.2.1.tar.gz', + # download_url='https://s3.amazonaws.com/glances/glances-2.3.tar.gz', license="LGPL", keywords="cli curses monitoring system", install_requires=get_requires(), From 7feffee8e39dbd5286015040bc2ecc01773c3641 Mon Sep 17 00:00:00 2001 From: nclsHart Date: Sat, 24 Jan 2015 13:13:22 +0100 Subject: [PATCH 72/90] fix typo --- NEWS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 9402b5ef..8e32b1f4 100644 --- a/NEWS +++ b/NEWS @@ -13,7 +13,7 @@ Enhancements and news features: * Add InfluxDB export module (--export-influxdb) (issue #455) * Add StatsD export module (--export-statsd) (issue #465) * Refactor export module (CSV export option is now --export-csv). It is now possible to export stats from the Glances client mode (issue #463) - * The Web inteface is now based on BootStarp / RWD grid (issue #417, #366 and #461) Thanks to Nicolas Hart @nclsHart + * The Web inteface is now based on Bootstrap / RWD grid (issue #417, #366 and #461) Thanks to Nicolas Hart @nclsHart * It is now possible, through the configuration file, to define if an alarm should be logged or not (using the _log option) (issue #437) * You can now set alarm for Disk IO * API: add getAllLimits and getAllViews methods (issue #481) and allow CORS request (issue #479) From b6b5230dcd5ec934afa9c45dec29a79bd812c372 Mon Sep 17 00:00:00 2001 From: Nicolargo Date: Sat, 24 Jan 2015 16:30:20 +0100 Subject: [PATCH 73/90] Resolve merge issue --- glances/plugins/glances_load.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/glances/plugins/glances_load.py b/glances/plugins/glances_load.py index 2e066247..aa6e8a13 100644 --- a/glances/plugins/glances_load.py +++ b/glances/plugins/glances_load.py @@ -121,12 +121,15 @@ class Plugin(GlancesPlugin): # Call the father's method GlancesPlugin.update_views(self) - if self.views != {}: - # Add specifics informations + # Add specifics informations + try: # Alert and log self.views['min15']['decoration'] = self.get_alert_log(self.stats['min15'], max=100 * self.stats['cpucore']) # Alert only self.views['min5']['decoration'] = self.get_alert(self.stats['min5'], max=100 * self.stats['cpucore']) + except KeyError: + # try/except mandatory for Windows compatibility (no load stats) + pass def msg_curse(self, args=None): """Return the dict to display in the curse interface.""" From e43e6640acfccb5de904899d0a5f78e500157af3 Mon Sep 17 00:00:00 2001 From: Sylvain MOUQUET Date: Sat, 31 Jan 2015 14:44:43 +0100 Subject: [PATCH 74/90] add shortcuts --- glances/outputs/static/html/help.html | 30 ----- glances/outputs/static/html/stats.html | 127 ++++++++++++++++-- glances/outputs/static/js/stats_controller.js | 52 +++---- glances/outputs/static/js/variables.js | 10 +- 4 files changed, 152 insertions(+), 67 deletions(-) delete mode 100644 glances/outputs/static/html/help.html diff --git a/glances/outputs/static/html/help.html b/glances/outputs/static/html/help.html deleted file mode 100644 index 957b6e15..00000000 --- a/glances/outputs/static/html/help.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - Glances - - - - - - - - - - - - - - - - -Help window!!! - -message : {{message}} - - - - diff --git a/glances/outputs/static/html/stats.html b/glances/outputs/static/html/stats.html index c554af3c..c6a1b4a9 100644 --- a/glances/outputs/static/html/stats.html +++ b/glances/outputs/static/html/stats.html @@ -1,6 +1,117 @@ -
Loading...
-
+
+ + +
+ +
{{help.version}} with {{PSUTIL}}
+
Configuration file
+ + + # Build the string message + # Header + msg = '{0} {1}'.format(appname.title(), version) + ret.append(self.curse_add_line(msg, "TITLE")) + msg = _(" with PSutil {0}").format(psutil_version) + ret.append(self.curse_add_line(msg)) + ret.append(self.curse_new_line()) + + # Configuration file path + try: + msg = '{0}: {1}'.format(_("Configuration file"), self.config.get_loaded_config_file()) + except AttributeError: + pass + else: + ret.append(self.curse_new_line()) + ret.append(self.curse_add_line(msg)) + ret.append(self.curse_new_line()) + + # Keys + msg_col = ' {0:1} {1:35}' + msg_col2 = ' {0:1} {1:35}' + + ret.append(self.curse_new_line()) + msg = msg_col.format("a", _("Sort processes automatically")) + ret.append(self.curse_add_line(msg)) + msg = msg_col2.format("b", _("Bytes or bits for network I/O")) + ret.append(self.curse_add_line(msg)) + ret.append(self.curse_new_line()) + msg = msg_col.format("c", _("Sort processes by CPU%")) + ret.append(self.curse_add_line(msg)) + msg = msg_col2.format("l", _("Show/hide alert logs")) + ret.append(self.curse_add_line(msg)) + ret.append(self.curse_new_line()) + msg = msg_col.format("m", _("Sort processes by MEM%")) + ret.append(self.curse_add_line(msg)) + msg = msg_col2.format("w", _("Delete warning alerts")) + ret.append(self.curse_add_line(msg)) + ret.append(self.curse_new_line()) + msg = msg_col.format("p", _("Sort processes by name")) + ret.append(self.curse_add_line(msg)) + msg = msg_col2.format("x", _("Delete warning and critical alerts")) + ret.append(self.curse_add_line(msg)) + ret.append(self.curse_new_line()) + msg = msg_col.format("i", _("Sort processes by I/O rate")) + ret.append(self.curse_add_line(msg)) + msg = msg_col2.format("1", _("Global CPU or per-CPU stats")) + ret.append(self.curse_add_line(msg)) + ret.append(self.curse_new_line()) + msg = msg_col.format("t", _("Sort processes by CPU times")) + ret.append(self.curse_add_line(msg)) + msg = msg_col2.format("h", _("Show/hide this help screen")) + ret.append(self.curse_add_line(msg)) + ret.append(self.curse_new_line()) + msg = msg_col.format("d", _("Show/hide disk I/O stats")) + ret.append(self.curse_add_line(msg)) + msg = msg_col2.format("T", _("View network I/O as combination")) + ret.append(self.curse_add_line(msg)) + ret.append(self.curse_new_line()) + msg = msg_col.format("f", _("Show/hide filesystem stats")) + ret.append(self.curse_add_line(msg)) + msg = msg_col2.format("u", _("View cumulative network I/O")) + ret.append(self.curse_add_line(msg)) + ret.append(self.curse_new_line()) + msg = msg_col.format("n", _("Show/hide network stats")) + ret.append(self.curse_add_line(msg)) + msg = msg_col2.format("F", _("Show filesystem free space")) + ret.append(self.curse_add_line(msg)) + ret.append(self.curse_new_line()) + msg = msg_col.format("s", _("Show/hide sensors stats")) + ret.append(self.curse_add_line(msg)) + msg = msg_col2.format("g", _("Generate graphs for current history")) + ret.append(self.curse_add_line(msg)) + ret.append(self.curse_new_line()) + msg = msg_col.format("2", _("Show/hide left sidebar")) + ret.append(self.curse_add_line(msg)) + msg = msg_col2.format("r", _("Reset history")) + ret.append(self.curse_add_line(msg)) + ret.append(self.curse_new_line()) + msg = msg_col.format("z", _("Enable/disable processes stats")) + ret.append(self.curse_add_line(msg)) + msg = msg_col2.format("q", _("Quit (Esc and Ctrl-C also work)")) + ret.append(self.curse_add_line(msg)) + ret.append(self.curse_new_line()) + msg = msg_col.format("e", _("Enable/disable top extended stats")) + ret.append(self.curse_add_line(msg)) + ret.append(self.curse_new_line()) + msg = msg_col.format("/", _("Enable/disable short processes name")) + ret.append(self.curse_add_line(msg)) + ret.append(self.curse_new_line()) + msg = msg_col.format("D", _("Enable/disable Docker stats")) + ret.append(self.curse_add_line(msg)) + + + ret.append(self.curse_new_line()) + ret.append(self.curse_new_line()) + msg = '{0}: {1}'.format("ENTER", _("Edit the process filter pattern")) + ret.append(self.curse_add_line(msg)) +
+ + + +
+
Loading...
+
@@ -31,13 +142,13 @@
user:
-
+
{{result["cpu"].user}}%
system:
-
+
{{result["cpu"].system}}%
@@ -211,10 +322,10 @@
{{network.interface_name | min_size}}
-
{{network.rx | bytes}}
-
{{network.tx | bytes}}
-
{{network.rx | bits}}
-
{{network.tx | bits}}
+
{{network.rx | bytes}}
+
{{network.tx | bytes}}
+
{{network.rx | bits}}
+
{{network.tx | bits}}
diff --git a/glances/outputs/static/js/stats_controller.js b/glances/outputs/static/js/stats_controller.js index d3a74c83..44103ae9 100644 --- a/glances/outputs/static/js/stats_controller.js +++ b/glances/outputs/static/js/stats_controller.js @@ -5,9 +5,6 @@ glancesApp.config([ '$routeProvider', '$locationProvider', function($routeProvid }).when('/:refresh_time', { templateUrl : 'stats.html', controller : 'statsController' - }).when('/help', { - templateUrl : 'help.html', - controller : 'helpController' }); $locationProvider.html5Mode(true); @@ -59,7 +56,7 @@ glancesApp.filter('bits', function() { }); -glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', '$routeParams', '$location', function($scope, $http, $interval, $q, $routeParams, $location) { +glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', '$routeParams', function($scope, $http, $interval, $q, $routeParams) { $scope.limitSuffix = ['critical', 'careful', 'warning'] $scope.refreshTime = 3 @@ -74,10 +71,18 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', 'sensors' : true, 'sidebar' : true, 'alert' : true, - 'short_process_name': false, - 'per_cpu': false + 'short_process_name': true, + 'per_cpu': false, + 'warning_alerts':true, + 'warning_critical_alerts':true, + 'process_stats':true, + 'top_extended_stats':true, + 'docker_stats':true, + 'network_io_combination':false, + 'network_io_cumulative':false, + 'filesystem_freespace':false, + 'network_by_bytes':true } - $scope.networkSortByBytes = false $scope.init_refresh_time = function() { if ($routeParams != undefined && $routeParams.refresh_time != undefined) { @@ -287,38 +292,37 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', } else if ($event.keyCode == keycodes.TWO && $event.shiftKey) {//2 Show/hide left sidebar $scope.show_hide('sidebar') } else if ($event.keyCode == keycodes.z) {//z Enable/disable processes stats - //$scope.enableDisable('processStats') + $scope.show_hide('process_stats') } else if ($event.keyCode == keycodes.e) {//e Enable/disable top extended stats - //$scope.sort_by('') + $scope.show_hide('top_extended_stats') } else if ($event.keyCode == keycodes.SLASH) {// SLASH Enable/disable short processes name $scope.show_hide('short_process_name') - } else if ($event.keyCode == keycodes.D) {//D Enable/disable Docker stats - //$scope.sort_by('') + } else if ($event.keyCode == keycodes.D && $event.shiftKey) {//D Enable/disable Docker stats + $scope.show_hide('docker_stats') } else if ($event.keyCode == keycodes.b) {//b Bytes or bits for network I/O - $scope.networkSortByBytes = !$scope.networkSortByBytes + $scope.show_hide('network_by_bytes') } else if ($event.keyCode == keycodes.l) {//l Show/hide alert logs $scope.show_hide('alert') } else if ($event.keyCode == keycodes.w) {//w Delete warning alerts - //$scope.sort_by('') + $scope.show_hide('warning_alerts') } else if ($event.keyCode == keycodes.x) {//x Delete warning and critical alerts - //$scope.sort_by('') + $scope.show_hide('warning_critical_alerts') } else if ($event.keyCode == keycodes.ONE && $event.shiftKey) {//1 Global CPU or per-CPU stats $scope.show_hide('per_cpu') } else if ($event.keyCode == keycodes.h) {//h Show/hide this help screen - window.location = "/help" - //$location.path("/help") - } else if ($event.keyCode == keycodes.T) {//T View network I/O as combination - //$scope.sort_by('') + $scope.show_hide('help') + } else if ($event.keyCode == keycodes.T && $event.shiftKey) {//T View network I/O as combination + $scope.show_hide('network_io_combination') } else if ($event.keyCode == keycodes.u) {//u View cumulative network I/O - //$scope.sort_by('') - } else if ($event.keyCode == keycodes.F) {//F Show filesystem free space - //$scope.sort_by('') + $scope.show_hide('network_io_cumulative') + } else if ($event.keyCode == keycodes.F && $event.shiftKey) {//F Show filesystem free space + $scope.show_hide('filesystem_freespace') } else if ($event.keyCode == keycodes.g) {//g Generate graphs for current history - //$scope.sort_by('') + // not available } else if ($event.keyCode == keycodes.r) {//r Reset history - //$scope.sort_by('') + // not available } else if ($event.keyCode == keycodes.q) {//q Quit (Esc and Ctrl-C also work) - //$scope.sort_by('') + // not available } } } ]); diff --git a/glances/outputs/static/js/variables.js b/glances/outputs/static/js/variables.js index 49a9294d..f164f485 100644 --- a/glances/outputs/static/js/variables.js +++ b/glances/outputs/static/js/variables.js @@ -21,9 +21,9 @@ var keycodes = { 'ONE' : '49', 'h' : '72', 'T' : '84', - 'u' : '', - 'F' : '', - 'g' : '', - 'r' : '', - 'q' : '' + 'u' : '85', + 'F' : '70', + 'g' : '71', + 'r' : '82', + 'q' : '81' } From 7cda934504b9dbbf3d8a35d06905980edf87a423 Mon Sep 17 00:00:00 2001 From: Sylvain MOUQUET Date: Sat, 31 Jan 2015 16:10:10 +0100 Subject: [PATCH 75/90] add help window --- glances/outputs/glances_bottle.py | 22 ++- glances/outputs/static/html/stats.html | 176 +++++++----------- glances/outputs/static/js/stats_controller.js | 14 +- glances/plugins/glances_help.py | 164 ++++++++-------- 4 files changed, 187 insertions(+), 189 deletions(-) diff --git a/glances/outputs/glances_bottle.py b/glances/outputs/glances_bottle.py index dd8b4f89..d10ba5ff 100644 --- a/glances/outputs/glances_bottle.py +++ b/glances/outputs/glances_bottle.py @@ -61,7 +61,6 @@ class GlancesBottle(object): """Define route.""" self._app.route('/', method="GET", callback=self._index) self._app.route('/', method=["GET", "POST"], callback=self._index) - self._app.route('/help', method="GET", callback=self._help) self._app.route('/', method="GET", callback=self._css) self._app.route('/', method="GET", callback=self._js) @@ -71,6 +70,7 @@ class GlancesBottle(object): self._app.route('/favicon.ico', method="GET", callback=self._favicon) # REST API + self._app.route('/api/2/help', method="GET", callback=self._api_help) self._app.route('/api/2/pluginslist', method="GET", callback=self._api_plugins) self._app.route('/api/2/all', method="GET", callback=self._api_all) self._app.route('/api/2/all/limits', method="GET", callback=self._api_all_limits) @@ -111,10 +111,6 @@ class GlancesBottle(object): # Display return static_file("index.html", root=os.path.join(self.STATIC_PATH, 'html')) - def _help(self): - """Bottle callback for /help """ - return static_file("help.html", root=os.path.join(self.STATIC_PATH, 'html')) - def _html(self, filename): """Bottle callback for *.html files.""" # Return the static file @@ -140,6 +136,22 @@ class GlancesBottle(object): # Return the static file return static_file('favicon.ico', root=self.STATIC_PATH) + def _api_help(self): + """ + Glances API RESTFul implementation + Return the help data + or 404 error + """ + response.content_type = 'application/json' + + # Update the stat + view_data = self.stats.get_plugin("help").get_view_data() + try: + plist = json.dumps(view_data, sort_keys=True) + except Exception as e: + abort(404, "Cannot get help view data (%s)" % str(e)) + return plist + def _api_plugins(self): """ Glances API RESTFul implementation diff --git a/glances/outputs/static/html/stats.html b/glances/outputs/static/html/stats.html index c6a1b4a9..e7f3d399 100644 --- a/glances/outputs/static/html/stats.html +++ b/glances/outputs/static/html/stats.html @@ -1,117 +1,73 @@ -
+
- -
- -
{{help.version}} with {{PSUTIL}}
-
Configuration file
- - - # Build the string message - # Header - msg = '{0} {1}'.format(appname.title(), version) - ret.append(self.curse_add_line(msg, "TITLE")) - msg = _(" with PSutil {0}").format(psutil_version) - ret.append(self.curse_add_line(msg)) - ret.append(self.curse_new_line()) - - # Configuration file path - try: - msg = '{0}: {1}'.format(_("Configuration file"), self.config.get_loaded_config_file()) - except AttributeError: - pass - else: - ret.append(self.curse_new_line()) - ret.append(self.curse_add_line(msg)) - ret.append(self.curse_new_line()) - - # Keys - msg_col = ' {0:1} {1:35}' - msg_col2 = ' {0:1} {1:35}' - - ret.append(self.curse_new_line()) - msg = msg_col.format("a", _("Sort processes automatically")) - ret.append(self.curse_add_line(msg)) - msg = msg_col2.format("b", _("Bytes or bits for network I/O")) - ret.append(self.curse_add_line(msg)) - ret.append(self.curse_new_line()) - msg = msg_col.format("c", _("Sort processes by CPU%")) - ret.append(self.curse_add_line(msg)) - msg = msg_col2.format("l", _("Show/hide alert logs")) - ret.append(self.curse_add_line(msg)) - ret.append(self.curse_new_line()) - msg = msg_col.format("m", _("Sort processes by MEM%")) - ret.append(self.curse_add_line(msg)) - msg = msg_col2.format("w", _("Delete warning alerts")) - ret.append(self.curse_add_line(msg)) - ret.append(self.curse_new_line()) - msg = msg_col.format("p", _("Sort processes by name")) - ret.append(self.curse_add_line(msg)) - msg = msg_col2.format("x", _("Delete warning and critical alerts")) - ret.append(self.curse_add_line(msg)) - ret.append(self.curse_new_line()) - msg = msg_col.format("i", _("Sort processes by I/O rate")) - ret.append(self.curse_add_line(msg)) - msg = msg_col2.format("1", _("Global CPU or per-CPU stats")) - ret.append(self.curse_add_line(msg)) - ret.append(self.curse_new_line()) - msg = msg_col.format("t", _("Sort processes by CPU times")) - ret.append(self.curse_add_line(msg)) - msg = msg_col2.format("h", _("Show/hide this help screen")) - ret.append(self.curse_add_line(msg)) - ret.append(self.curse_new_line()) - msg = msg_col.format("d", _("Show/hide disk I/O stats")) - ret.append(self.curse_add_line(msg)) - msg = msg_col2.format("T", _("View network I/O as combination")) - ret.append(self.curse_add_line(msg)) - ret.append(self.curse_new_line()) - msg = msg_col.format("f", _("Show/hide filesystem stats")) - ret.append(self.curse_add_line(msg)) - msg = msg_col2.format("u", _("View cumulative network I/O")) - ret.append(self.curse_add_line(msg)) - ret.append(self.curse_new_line()) - msg = msg_col.format("n", _("Show/hide network stats")) - ret.append(self.curse_add_line(msg)) - msg = msg_col2.format("F", _("Show filesystem free space")) - ret.append(self.curse_add_line(msg)) - ret.append(self.curse_new_line()) - msg = msg_col.format("s", _("Show/hide sensors stats")) - ret.append(self.curse_add_line(msg)) - msg = msg_col2.format("g", _("Generate graphs for current history")) - ret.append(self.curse_add_line(msg)) - ret.append(self.curse_new_line()) - msg = msg_col.format("2", _("Show/hide left sidebar")) - ret.append(self.curse_add_line(msg)) - msg = msg_col2.format("r", _("Reset history")) - ret.append(self.curse_add_line(msg)) - ret.append(self.curse_new_line()) - msg = msg_col.format("z", _("Enable/disable processes stats")) - ret.append(self.curse_add_line(msg)) - msg = msg_col2.format("q", _("Quit (Esc and Ctrl-C also work)")) - ret.append(self.curse_add_line(msg)) - ret.append(self.curse_new_line()) - msg = msg_col.format("e", _("Enable/disable top extended stats")) - ret.append(self.curse_add_line(msg)) - ret.append(self.curse_new_line()) - msg = msg_col.format("/", _("Enable/disable short processes name")) - ret.append(self.curse_add_line(msg)) - ret.append(self.curse_new_line()) - msg = msg_col.format("D", _("Enable/disable Docker stats")) - ret.append(self.curse_add_line(msg)) - - - ret.append(self.curse_new_line()) - ret.append(self.curse_new_line()) - msg = '{0}: {1}'.format("ENTER", _("Edit the process filter pattern")) - ret.append(self.curse_add_line(msg)) +
+
{{help.version}} {{help.psutil_version}}
+
+
 
+
+
{{help.configuration_file}}
+
+
 
+
+
{{help.sort_auto}}
+
{{help.sort_network}}
+
+
+
{{help.sort_cpu}}
+
{{help.show_hide_alert}}
+
+
+
{{help.show_mem}}
+
{{help.delete_warning_alerts}}
+
+
+
{{help.sort_proc}}
+
{{help.delete_warning_critical_alerts}}
+
+
+
{{help.sort_io}}
+
{{help.percpu}}
+
+
+
{{help.show_hide_help}}
+
{{help.show_hide_diskio}}
+
+
+
{{help.view_network_io_combination}}
+
{{help.view_cumulative_network}}
+
+
+
{{help.show_hide_network}}
+
{{help.show_hide_filesytem_freespace}}
+
+
+
{{help.show_hide_sensors}}
+
{{help.generate_graphs}}
+
+
+
{{help.show_hide_left_sidebar}}
+
{{help.reset_history}}
+
+
+
{{help.enable_disable_process_stats}}
+
{{help.quit}}
+
+
+
{{help.enable_disable_top_extends_stats}}
+
{{help.enable_disable_short_processname}}
+
+
+
{{help.enable_disable_docker}}
+
+
 
+
+
{{help.edit_pattern_filter}}
- - -
-
Loading...
-
+ +
Loading...
+
diff --git a/glances/outputs/static/js/stats_controller.js b/glances/outputs/static/js/stats_controller.js index 44103ae9..1e477639 100644 --- a/glances/outputs/static/js/stats_controller.js +++ b/glances/outputs/static/js/stats_controller.js @@ -63,6 +63,7 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', $scope.pluginLimits = [] $scope.sortColumn = '' $scope.sortOrderAsc = false + $scope.help_screen = false $scope.lastSortColumn = '#column_' + $scope.sortColumn $scope.show = { 'diskio' : true, @@ -98,8 +99,18 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', $scope.plugins_limits(); } + $scope.init_help = function() { + $http.get('/api/2/help').success(function(response, status, headers, config) { + $scope.help = response + }); + } + $scope.show_hide = function(bloc) { - $scope.show[bloc] = !$scope.show[bloc] + if(bloc == 'help') { + $scope.help_screen = !$scope.help_screen + } else { + $scope.show[bloc] = !$scope.show[bloc] + } } $scope.sort_by = function(column) { @@ -236,6 +247,7 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', $scope.init_refresh_time(); $scope.init_limits(); + $scope.init_help(); var stop; $scope.configure_refresh = function () { diff --git a/glances/plugins/glances_help.py b/glances/plugins/glances_help.py index bf1f18f6..6be5d01c 100644 --- a/glances/plugins/glances_help.py +++ b/glances/plugins/glances_help.py @@ -41,113 +41,131 @@ class Plugin(GlancesPlugin): # We want to display the stat in the curse interface self.display_curse = True - + + # init data dictionary + self.view_data = {} + self.generate_view_data() + def update(self): """No stats. It is just a plugin to display the help.""" pass + def generate_view_data(self): + self.view_data['version'] = '{0} {1}'.format(appname.title(), version) + self.view_data['psutil_version'] = _(" with PSutil {0}").format(psutil_version) + + try: + self.view_data['configuration_file'] = '{0}: {1}'.format(_("Configuration file"), self.config.get_loaded_config_file()) + except AttributeError: + pass + + msg_col = ' {0:1} {1:35}' + msg_col2 = ' {0:1} {1:35}' + self.view_data['sort_auto'] = msg_col.format("a", _("Sort processes automatically")) + self.view_data['sort_network'] = msg_col2.format("b", _("Bytes or bits for network I/O")) + self.view_data['sort_cpu'] = msg_col.format("c", _("Sort processes by CPU%")) + self.view_data['show_hide_alert'] = msg_col2.format("l", _("Show/hide alert logs")) + + + self.view_data['show_mem'] = msg_col.format("m", _("Sort processes by MEM%")) + self.view_data['delete_warning_alerts'] = msg_col2.format("w", _("Delete warning alerts")) + self.view_data['sort_proc'] = msg_col.format("p", _("Sort processes by name")) + self.view_data['delete_warning_critical_alerts'] = msg_col2.format("x", _("Delete warning and critical alerts")) + self.view_data['sort_io'] = msg_col.format("i", _("Sort processes by I/O rate")) + self.view_data['percpu'] = msg_col2.format("1", _("Global CPU or per-CPU stats")) + self.view_data['sort_cpu_times'] = msg_col.format("t", _("Sort processes by CPU times")) + self.view_data['show_hide_help'] = msg_col2.format("h", _("Show/hide this help screen")) + self.view_data['show_hide_diskio'] = msg_col.format("d", _("Show/hide disk I/O stats")) + self.view_data['view_network_io_combination'] = msg_col2.format("T", _("View network I/O as combination")) + self.view_data['show_hide_filesystem'] = msg_col.format("f", _("Show/hide filesystem stats")) + self.view_data['view_cumulative_network'] = msg_col2.format("u", _("View cumulative network I/O")) + self.view_data['show_hide_network'] = msg_col.format("n", _("Show/hide network stats")) + self.view_data['show_hide_filesytem_freespace'] = msg_col2.format("F", _("Show filesystem free space")) + self.view_data['show_hide_sensors'] = msg_col.format("s", _("Show/hide sensors stats")) + self.view_data['generate_graphs'] = msg_col2.format("g", _("Generate graphs for current history")) + self.view_data['show_hide_left_sidebar'] = msg_col.format("2", _("Show/hide left sidebar")) + self.view_data['reset_history'] = msg_col2.format("r", _("Reset history")) + self.view_data['enable_disable_process_stats'] = msg_col.format("z", _("Enable/disable processes stats")) + self.view_data['quit'] = msg_col2.format("q", _("Quit (Esc and Ctrl-C also work)")) + self.view_data['enable_disable_top_extends_stats'] = msg_col.format("e", _("Enable/disable top extended stats")) + self.view_data['enable_disable_short_processname'] = msg_col.format("/", _("Enable/disable short processes name")) + self.view_data['enable_disable_docker'] = msg_col.format("D", _("Enable/disable Docker stats")) + self.view_data['edit_pattern_filter'] = '{0}: {1}'.format("ENTER", _("Edit the process filter pattern")) + + + def get_view_data(self, args=None): + return self.view_data + def msg_curse(self, args=None): """Return the list to display in the curse interface.""" # Init the return message ret = [] - + # Build the string message # Header - msg = '{0} {1}'.format(appname.title(), version) - ret.append(self.curse_add_line(msg, "TITLE")) - msg = _(" with PSutil {0}").format(psutil_version) - ret.append(self.curse_add_line(msg)) + ret.append(self.curse_add_line(self.view_data['version'], "TITLE")) + ret.append(self.curse_add_line(self.view_data['psutil_version'])) ret.append(self.curse_new_line()) # Configuration file path - try: - msg = '{0}: {1}'.format(_("Configuration file"), self.config.get_loaded_config_file()) - except AttributeError: - pass - else: + if 'configuration_file' in self.view_data: ret.append(self.curse_new_line()) - ret.append(self.curse_add_line(msg)) + ret.append(self.curse_add_line(self.view_data['configuration_file'])) ret.append(self.curse_new_line()) # Keys - msg_col = ' {0:1} {1:35}' - msg_col2 = ' {0:1} {1:35}' + ret.append(self.curse_new_line()) + ret.append(self.curse_add_line(self.view_data['sort_auto'])) + ret.append(self.curse_add_line(self.view_data['sort_network'])) + ret.append(self.curse_new_line()) + ret.append(self.curse_add_line(self.view_data['sort_cpu'])) + ret.append(self.curse_add_line(self.view_data['show_hide_alert'])) + ret.append(self.curse_new_line()) + + + ret.append(self.curse_add_line(self.view_data['show_mem'])) + ret.append(self.curse_add_line(self.view_data['delete_warning_alerts'])) ret.append(self.curse_new_line()) - msg = msg_col.format("a", _("Sort processes automatically")) - ret.append(self.curse_add_line(msg)) - msg = msg_col2.format("b", _("Bytes or bits for network I/O")) - ret.append(self.curse_add_line(msg)) + ret.append(self.curse_add_line(self.view_data['sort_proc'])) + ret.append(self.curse_add_line(self.view_data['delete_warning_critical_alerts'])) ret.append(self.curse_new_line()) - msg = msg_col.format("c", _("Sort processes by CPU%")) - ret.append(self.curse_add_line(msg)) - msg = msg_col2.format("l", _("Show/hide alert logs")) - ret.append(self.curse_add_line(msg)) + ret.append(self.curse_add_line(self.view_data['sort_io'])) + ret.append(self.curse_add_line(self.view_data['percpu'])) ret.append(self.curse_new_line()) - msg = msg_col.format("m", _("Sort processes by MEM%")) - ret.append(self.curse_add_line(msg)) - msg = msg_col2.format("w", _("Delete warning alerts")) - ret.append(self.curse_add_line(msg)) + ret.append(self.curse_add_line(self.view_data['sort_cpu_times'])) + ret.append(self.curse_add_line(self.view_data['show_hide_help'])) ret.append(self.curse_new_line()) - msg = msg_col.format("p", _("Sort processes by name")) - ret.append(self.curse_add_line(msg)) - msg = msg_col2.format("x", _("Delete warning and critical alerts")) - ret.append(self.curse_add_line(msg)) + ret.append(self.curse_add_line(self.view_data['show_hide_diskio'])) + ret.append(self.curse_add_line(self.view_data['view_network_io_combination'])) ret.append(self.curse_new_line()) - msg = msg_col.format("i", _("Sort processes by I/O rate")) - ret.append(self.curse_add_line(msg)) - msg = msg_col2.format("1", _("Global CPU or per-CPU stats")) - ret.append(self.curse_add_line(msg)) + ret.append(self.curse_add_line(self.view_data['show_hide_filesystem'])) + ret.append(self.curse_add_line(self.view_data['view_cumulative_network'])) ret.append(self.curse_new_line()) - msg = msg_col.format("t", _("Sort processes by CPU times")) - ret.append(self.curse_add_line(msg)) - msg = msg_col2.format("h", _("Show/hide this help screen")) - ret.append(self.curse_add_line(msg)) + ret.append(self.curse_add_line(self.view_data['show_hide_network'])) + ret.append(self.curse_add_line(self.view_data['show_hide_filesytem_freespace'])) ret.append(self.curse_new_line()) - msg = msg_col.format("d", _("Show/hide disk I/O stats")) - ret.append(self.curse_add_line(msg)) - msg = msg_col2.format("T", _("View network I/O as combination")) - ret.append(self.curse_add_line(msg)) + ret.append(self.curse_add_line(self.view_data['show_hide_sensors'])) + ret.append(self.curse_add_line(self.view_data['generate_graphs'])) ret.append(self.curse_new_line()) - msg = msg_col.format("f", _("Show/hide filesystem stats")) - ret.append(self.curse_add_line(msg)) - msg = msg_col2.format("u", _("View cumulative network I/O")) - ret.append(self.curse_add_line(msg)) + ret.append(self.curse_add_line(self.view_data['show_hide_left_sidebar'])) + ret.append(self.curse_add_line(self.view_data['reset_history'])) ret.append(self.curse_new_line()) - msg = msg_col.format("n", _("Show/hide network stats")) - ret.append(self.curse_add_line(msg)) - msg = msg_col2.format("F", _("Show filesystem free space")) - ret.append(self.curse_add_line(msg)) + ret.append(self.curse_add_line(self.view_data['enable_disable_process_stats'])) + ret.append(self.curse_add_line(self.view_data['quit'])) ret.append(self.curse_new_line()) - msg = msg_col.format("s", _("Show/hide sensors stats")) - ret.append(self.curse_add_line(msg)) - msg = msg_col2.format("g", _("Generate graphs for current history")) - ret.append(self.curse_add_line(msg)) + ret.append(self.curse_add_line(self.view_data['enable_disable_top_extends_stats'])) ret.append(self.curse_new_line()) - msg = msg_col.format("2", _("Show/hide left sidebar")) - ret.append(self.curse_add_line(msg)) - msg = msg_col2.format("r", _("Reset history")) - ret.append(self.curse_add_line(msg)) + ret.append(self.curse_add_line(self.view_data['enable_disable_short_processname'])) ret.append(self.curse_new_line()) - msg = msg_col.format("z", _("Enable/disable processes stats")) - ret.append(self.curse_add_line(msg)) - msg = msg_col2.format("q", _("Quit (Esc and Ctrl-C also work)")) - ret.append(self.curse_add_line(msg)) - ret.append(self.curse_new_line()) - msg = msg_col.format("e", _("Enable/disable top extended stats")) - ret.append(self.curse_add_line(msg)) - ret.append(self.curse_new_line()) - msg = msg_col.format("/", _("Enable/disable short processes name")) - ret.append(self.curse_add_line(msg)) - ret.append(self.curse_new_line()) - msg = msg_col.format("D", _("Enable/disable Docker stats")) - ret.append(self.curse_add_line(msg)) + + ret.append(self.curse_add_line(self.view_data['enable_disable_docker'])) ret.append(self.curse_new_line()) ret.append(self.curse_new_line()) - msg = '{0}: {1}'.format("ENTER", _("Edit the process filter pattern")) - ret.append(self.curse_add_line(msg)) + + ret.append(self.curse_add_line(self.view_data['edit_pattern_filter'])) # Return the message with decoration return ret From a5b5648a5e86560336e352b4f89995a371e2c1cc Mon Sep 17 00:00:00 2001 From: Sylvain MOUQUET Date: Sat, 31 Jan 2015 16:22:08 +0100 Subject: [PATCH 76/90] remove help controller --- glances/outputs/static/js/help_controller.js | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 glances/outputs/static/js/help_controller.js diff --git a/glances/outputs/static/js/help_controller.js b/glances/outputs/static/js/help_controller.js deleted file mode 100644 index d2d2f3cc..00000000 --- a/glances/outputs/static/js/help_controller.js +++ /dev/null @@ -1,11 +0,0 @@ - -glancesApp.controller('helpController', [ '$scope', function($scope) { - $scope.message = 'help window' - - $scope.onKeyDown = function($event) { - console.log($event) - if ($event.keyCode == keycodes.h) {//h Show/hide this help screen - window.location = "/" - } - } -}]); From 583e24a50ff2a6f3e9ce4b811005e0d975cc9f02 Mon Sep 17 00:00:00 2001 From: nclsHart Date: Tue, 17 Feb 2015 01:02:20 +0100 Subject: [PATCH 77/90] align plugin content in web ui sidebar --- glances/outputs/static/css/style.css | 29 +++++--------------- glances/outputs/static/html/stats.html | 37 +++++++++++--------------- 2 files changed, 21 insertions(+), 45 deletions(-) diff --git a/glances/outputs/static/css/style.css b/glances/outputs/static/css/style.css index 13c3ab2c..c094ed08 100644 --- a/glances/outputs/static/css/style.css +++ b/glances/outputs/static/css/style.css @@ -8,6 +8,9 @@ body { display: table; width: 100%; } +.table-row-group { + display: table-row-group +} .table-row { display: table-row; } @@ -19,6 +22,9 @@ body { .plugin { margin-bottom: 20px; } +.plugin.table-row-group .table-row:last-child .table-cell { + padding-bottom: 20px; +} .underline{ text-decoration: underline @@ -167,26 +173,3 @@ source : https://github.com/lukehaas/css-loaders box-shadow: 0 2.5em 0 0 #56CA69; } } - -#cpu table tr td:nth-child(3), -#mem table tr td:nth-child(3), -#monitor table tr td:nth-child(3) { - text-align: left; - padding-left: 20px; -} -#processlist table tr td { - text-align: right; -} -#processlist table tr td, -#docker table tr td { - padding: 0px 5px 0px 5px; - white-space: nowrap; -} -#processlist table tr td:nth-child(6), -#processlist table tr td:nth-child(12) { - text-align: left; -} -#docker table tr td:nth-child(2), -#docker table tr td:nth-child(6) { - text-align: left; -} diff --git a/glances/outputs/static/html/stats.html b/glances/outputs/static/html/stats.html index d29db457..fad70465 100644 --- a/glances/outputs/static/html/stats.html +++ b/glances/outputs/static/html/stats.html @@ -4,7 +4,7 @@
- +
{{help.version}} {{help.psutil_version}}
@@ -69,7 +69,7 @@
{{help.edit_pattern_filter}}
- +
@@ -79,7 +79,7 @@ --> - + {{result["system"].hostname}} 
@@ -272,8 +272,8 @@
-
-
+
+
NETWORK
Rx/s
@@ -286,11 +286,8 @@
{{network.rx | bits}}
{{network.tx | bits}}
-
-
- -
-
+
+
DISK I/O
R/s
@@ -301,10 +298,8 @@
{{disk.read_bytes | bytes}}
{{disk.write_bytes | bytes}}
-
- -
-
+
+
FILE SYS
Used
@@ -317,10 +312,8 @@
{{fs.size | bytes}}
-
- -
-
+
+
SENSORS
°C
@@ -329,8 +322,8 @@
{{sensor.label}}
{{sensor.value}}
-
- + +
+
No warning or critical alert detected Warning or critical alerts (lasts {{result['alert'].length}} entries) From 56f8340950477e3c1540142b5f955642c7d1c11f Mon Sep 17 00:00:00 2001 From: Nicolas Hart Date: Sat, 4 Apr 2015 18:21:32 +0200 Subject: [PATCH 79/90] show docker plugin only if there is a running container --- glances/outputs/static/html/stats.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/glances/outputs/static/html/stats.html b/glances/outputs/static/html/stats.html index 6c9b45ca..71c9b13c 100644 --- a/glances/outputs/static/html/stats.html +++ b/glances/outputs/static/html/stats.html @@ -326,7 +326,7 @@
-
+
No warning or critical alert detected Warning or critical alerts (lasts {{result['alert'].length}} entries) From 7792f9d99baceb9274ea9100ea25f4f03fb6f55e Mon Sep 17 00:00:00 2001 From: Nicolas Hart Date: Sun, 19 Apr 2015 22:48:52 +0200 Subject: [PATCH 80/90] refactor the stats template using one file per plugins --- glances/outputs/static/html/help.html | 63 +++ .../outputs/static/html/plugins/alert.html | 7 + .../outputs/static/html/plugins/alerts.html | 2 + glances/outputs/static/html/plugins/cpu.html | 44 ++ .../outputs/static/html/plugins/cpu_more.html | 26 ++ .../outputs/static/html/plugins/diskio.html | 10 + glances/outputs/static/html/plugins/fs.html | 12 + glances/outputs/static/html/plugins/load.html | 24 + glances/outputs/static/html/plugins/mem.html | 20 + .../outputs/static/html/plugins/mem_more.html | 18 + .../outputs/static/html/plugins/memswap.html | 20 + .../outputs/static/html/plugins/network.html | 12 + .../static/html/plugins/processcount.html | 5 + .../static/html/plugins/processlist.html | 31 ++ .../outputs/static/html/plugins/sensors.html | 8 + .../outputs/static/html/plugins/system.html | 6 + .../outputs/static/html/plugins/uptime.html | 1 + glances/outputs/static/html/stats.html | 441 +++--------------- 18 files changed, 364 insertions(+), 386 deletions(-) create mode 100644 glances/outputs/static/html/help.html create mode 100644 glances/outputs/static/html/plugins/alert.html create mode 100644 glances/outputs/static/html/plugins/alerts.html create mode 100644 glances/outputs/static/html/plugins/cpu.html create mode 100644 glances/outputs/static/html/plugins/cpu_more.html create mode 100644 glances/outputs/static/html/plugins/diskio.html create mode 100644 glances/outputs/static/html/plugins/fs.html create mode 100644 glances/outputs/static/html/plugins/load.html create mode 100644 glances/outputs/static/html/plugins/mem.html create mode 100644 glances/outputs/static/html/plugins/mem_more.html create mode 100644 glances/outputs/static/html/plugins/memswap.html create mode 100644 glances/outputs/static/html/plugins/network.html create mode 100644 glances/outputs/static/html/plugins/processcount.html create mode 100644 glances/outputs/static/html/plugins/processlist.html create mode 100644 glances/outputs/static/html/plugins/sensors.html create mode 100644 glances/outputs/static/html/plugins/system.html create mode 100644 glances/outputs/static/html/plugins/uptime.html diff --git a/glances/outputs/static/html/help.html b/glances/outputs/static/html/help.html new file mode 100644 index 00000000..b193d08e --- /dev/null +++ b/glances/outputs/static/html/help.html @@ -0,0 +1,63 @@ +
+
{{help.version}} {{help.psutil_version}}
+
+
 
+
+
{{help.configuration_file}}
+
+
 
+
+
{{help.sort_auto}}
+
{{help.sort_network}}
+
+
+
{{help.sort_cpu}}
+
{{help.show_hide_alert}}
+
+
+
{{help.show_mem}}
+
{{help.delete_warning_alerts}}
+
+
+
{{help.sort_proc}}
+
{{help.delete_warning_critical_alerts}}
+
+
+
{{help.sort_io}}
+
{{help.percpu}}
+
+
+
{{help.show_hide_help}}
+
{{help.show_hide_diskio}}
+
+
+
{{help.view_network_io_combination}}
+
{{help.view_cumulative_network}}
+
+
+
{{help.show_hide_network}}
+
{{help.show_hide_filesytem_freespace}}
+
+
+
{{help.show_hide_sensors}}
+
{{help.generate_graphs}}
+
+
+
{{help.show_hide_left_sidebar}}
+
{{help.reset_history}}
+
+
+
{{help.enable_disable_process_stats}}
+
{{help.quit}}
+
+
+
{{help.enable_disable_top_extends_stats}}
+
{{help.enable_disable_short_processname}}
+
+
+
{{help.enable_disable_docker}}
+
+
 
+
+
{{help.edit_pattern_filter}}
+
diff --git a/glances/outputs/static/html/plugins/alert.html b/glances/outputs/static/html/plugins/alert.html new file mode 100644 index 00000000..e8011851 --- /dev/null +++ b/glances/outputs/static/html/plugins/alert.html @@ -0,0 +1,7 @@ +
+
+
+{{alert.begin}} ({{(alert[1]-alert[0]) | date : 'h:mm:ss'}}) - {{alert[2]}} on {{alert[3]}} ({{alert[4]}}) +
+
+
diff --git a/glances/outputs/static/html/plugins/alerts.html b/glances/outputs/static/html/plugins/alerts.html new file mode 100644 index 00000000..a03db0fc --- /dev/null +++ b/glances/outputs/static/html/plugins/alerts.html @@ -0,0 +1,2 @@ +No warning or critical alert detected +Warning or critical alerts (lasts {{result['alert'].length}} entries) diff --git a/glances/outputs/static/html/plugins/cpu.html b/glances/outputs/static/html/plugins/cpu.html new file mode 100644 index 00000000..3e78b419 --- /dev/null +++ b/glances/outputs/static/html/plugins/cpu.html @@ -0,0 +1,44 @@ +
+
+
CPU
+
{{result["cpu"].total}}%
+
+
+
user:
+
+ {{result["cpu"].user}}% +
+
+
+
system:
+
+ {{result["cpu"].system}}% +
+
+
+
idle:
+
{{result["cpu"].idle}}%
+
+
+
+
+
PER CPU
+
{{percpu.total}}%
+
+
+
user:
+
+ {{percpu.user}}% +
+
+
+
system:
+
+ {{percpu.system}}% +
+
+
+
idle:
+
{{percpu.idle}}%
+
+
diff --git a/glances/outputs/static/html/plugins/cpu_more.html b/glances/outputs/static/html/plugins/cpu_more.html new file mode 100644 index 00000000..bfc83e4e --- /dev/null +++ b/glances/outputs/static/html/plugins/cpu_more.html @@ -0,0 +1,26 @@ +
+
+
nice:
+
+ {{result["cpu"].nice}}% +
+
+
+
irq:
+
+ {{result["cpu"].irq}}% +
+
+
+
iowait:
+
+ {{result["cpu"].iowait}}% +
+
+
+
steal:
+
+ {{result["cpu"].steal}}% +
+
+
diff --git a/glances/outputs/static/html/plugins/diskio.html b/glances/outputs/static/html/plugins/diskio.html new file mode 100644 index 00000000..1680ebde --- /dev/null +++ b/glances/outputs/static/html/plugins/diskio.html @@ -0,0 +1,10 @@ +
+
DISK I/O
+
R/s
+
W/s
+
+
+
{{disk.disk_name | min_size}}
+
{{disk.read_bytes | bytes}}
+
{{disk.write_bytes | bytes}}
+
diff --git a/glances/outputs/static/html/plugins/fs.html b/glances/outputs/static/html/plugins/fs.html new file mode 100644 index 00000000..81bf39ad --- /dev/null +++ b/glances/outputs/static/html/plugins/fs.html @@ -0,0 +1,12 @@ +
+
FILE SYS
+
Used
+
Total
+
+
+
{{fs.mnt_point}} ({{fs.device_name}})
+
+ {{fs.size - fs.free | bytes}} +
+
{{fs.size | bytes}}
+
diff --git a/glances/outputs/static/html/plugins/load.html b/glances/outputs/static/html/plugins/load.html new file mode 100644 index 00000000..8a92d1fe --- /dev/null +++ b/glances/outputs/static/html/plugins/load.html @@ -0,0 +1,24 @@ +
+
+
LOAD
+
{{result["load"].cpucore}}-core
+
+
+
1 min:
+
+ {{result["load"].min1}} +
+
+
+
5 min:
+
+ {{result["load"].min5}} +
+
+
+
15 min:
+
+ {{result["load"].min15}} +
+
+
diff --git a/glances/outputs/static/html/plugins/mem.html b/glances/outputs/static/html/plugins/mem.html new file mode 100644 index 00000000..2b940df2 --- /dev/null +++ b/glances/outputs/static/html/plugins/mem.html @@ -0,0 +1,20 @@ +
+
+
MEM
+
{{result["mem"].percent}}%
+
+
+
total:
+
{{result["mem"].total | bytes:2}}
+
+
+
used:
+
+ {{result["mem"].used | bytes:2}} +
+
+
+
free:
+
{{result["mem"].free | bytes:2}}
+
+
diff --git a/glances/outputs/static/html/plugins/mem_more.html b/glances/outputs/static/html/plugins/mem_more.html new file mode 100644 index 00000000..be476fc8 --- /dev/null +++ b/glances/outputs/static/html/plugins/mem_more.html @@ -0,0 +1,18 @@ +
+
+
active:
+
{{result["mem"].active | bytes:2}}
+
+
+
inactive:
+
{{result["mem"].inactive | bytes:2}}
+
+
+
buffers:
+
{{result["mem"].buffers | bytes:2}}
+
+
+
cached:
+
{{result["mem"].cached | bytes:2}}
+
+
diff --git a/glances/outputs/static/html/plugins/memswap.html b/glances/outputs/static/html/plugins/memswap.html new file mode 100644 index 00000000..dc0c1788 --- /dev/null +++ b/glances/outputs/static/html/plugins/memswap.html @@ -0,0 +1,20 @@ +
+
+
SWAP
+
{{result["memswap"].percent}}%
+
+
+
total:
+
{{result["memswap"].total | bytes:2}}
+
+
+
used:
+
+ {{result["memswap"].used | bytes:2}} +
+
+
+
free:
+
{{result["memswap"].free | bytes:2}}
+
+
diff --git a/glances/outputs/static/html/plugins/network.html b/glances/outputs/static/html/plugins/network.html new file mode 100644 index 00000000..81b1ef49 --- /dev/null +++ b/glances/outputs/static/html/plugins/network.html @@ -0,0 +1,12 @@ +
+
NETWORK
+
Rx/s
+
Tx/s
+
+
+
{{network.interface_name | min_size}}
+
{{network.rx | bytes}}
+
{{network.tx | bytes}}
+
{{network.rx | bits}}
+
{{network.tx | bits}}
+
diff --git a/glances/outputs/static/html/plugins/processcount.html b/glances/outputs/static/html/plugins/processcount.html new file mode 100644 index 00000000..af39392d --- /dev/null +++ b/glances/outputs/static/html/plugins/processcount.html @@ -0,0 +1,5 @@ +TASKS {{result["processcount"].total}} ({{result["processcount"].thread}} thr), {{result["processcount"].running}} run, + {{result["processcount"].sleeping}} slp, {{result["processcount"].stopped}} oth + sorted automatically +sorted + by {{sortColumn}}, flat view diff --git a/glances/outputs/static/html/plugins/processlist.html b/glances/outputs/static/html/plugins/processlist.html new file mode 100644 index 00000000..a7d8fcdd --- /dev/null +++ b/glances/outputs/static/html/plugins/processlist.html @@ -0,0 +1,31 @@ +
+
+
CPU%
+
MEM%
+ + +
PID
+
USER
+
NI
+
S
+ + + +
Command
+
+
+
{{process.cpu_percent | number:1}}
+
{{process.memory_percent | number:1}}
+ + +
{{process.pid}}
+
{{process.username}}
+
{{process.nice | exclamation}}
+
{{process.status}}
+ + + +
{{process.name}}
+
{{process.cmdline}}
+
+
diff --git a/glances/outputs/static/html/plugins/sensors.html b/glances/outputs/static/html/plugins/sensors.html new file mode 100644 index 00000000..42b7f216 --- /dev/null +++ b/glances/outputs/static/html/plugins/sensors.html @@ -0,0 +1,8 @@ +
+
SENSORS
+
°C
+
+
+
{{sensor.label}}
+
{{sensor.value}}
+
diff --git a/glances/outputs/static/html/plugins/system.html b/glances/outputs/static/html/plugins/system.html new file mode 100644 index 00000000..6066be0c --- /dev/null +++ b/glances/outputs/static/html/plugins/system.html @@ -0,0 +1,6 @@ + + +{{result["system"].hostname}}  diff --git a/glances/outputs/static/html/plugins/uptime.html b/glances/outputs/static/html/plugins/uptime.html new file mode 100644 index 00000000..10222fb4 --- /dev/null +++ b/glances/outputs/static/html/plugins/uptime.html @@ -0,0 +1 @@ +Uptime: {{result["uptime"]}} diff --git a/glances/outputs/static/html/stats.html b/glances/outputs/static/html/stats.html index 71c9b13c..e443a55a 100644 --- a/glances/outputs/static/html/stats.html +++ b/glances/outputs/static/html/stats.html @@ -1,392 +1,61 @@ -
- -
Loading...
-
+
+ +
Loading...
+
-
+
-
-
{{help.version}} {{help.psutil_version}}
-
-
 
-
-
{{help.configuration_file}}
-
-
 
-
-
{{help.sort_auto}}
-
{{help.sort_network}}
-
-
-
{{help.sort_cpu}}
-
{{help.show_hide_alert}}
-
-
-
{{help.show_mem}}
-
{{help.delete_warning_alerts}}
-
-
-
{{help.sort_proc}}
-
{{help.delete_warning_critical_alerts}}
-
-
-
{{help.sort_io}}
-
{{help.percpu}}
-
-
-
{{help.show_hide_help}}
-
{{help.show_hide_diskio}}
-
-
-
{{help.view_network_io_combination}}
-
{{help.view_cumulative_network}}
-
-
-
{{help.show_hide_network}}
-
{{help.show_hide_filesytem_freespace}}
-
-
-
{{help.show_hide_sensors}}
-
{{help.generate_graphs}}
-
-
-
{{help.show_hide_left_sidebar}}
-
{{help.reset_history}}
-
-
-
{{help.enable_disable_process_stats}}
-
{{help.quit}}
-
-
-
{{help.enable_disable_top_extends_stats}}
-
{{help.enable_disable_short_processname}}
-
-
-
{{help.enable_disable_docker}}
-
-
 
-
-
{{help.edit_pattern_filter}}
-
-
- -
-
-
-
-
- - - {{result["system"].hostname}}  -
-
-
-
- Uptime: {{result["uptime"]}} -
-
+
+
+
+
+
-
- -
-
-
-
-
-
CPU
-
{{result["cpu"].total}}%
-
-
-
user:
-
- {{result["cpu"].user}}% -
-
-
-
system:
-
- {{result["cpu"].system}}% -
-
-
-
idle:
-
{{result["cpu"].idle}}%
-
-
- -
-
-
PER CPU
-
{{percpu.total}}%
-
-
-
user:
-
- {{percpu.user}}% -
-
-
-
system:
-
- {{percpu.system}}% -
-
-
-
idle:
-
{{percpu.idle}}%
-
-
-
-
-
-
-
-
-
nice:
-
- {{result["cpu"].nice}}% -
-
-
-
irq:
-
- {{result["cpu"].irq}}% -
-
-
-
iowait:
-
- {{result["cpu"].iowait}}% -
-
-
-
steal:
-
- {{result["cpu"].steal}}% -
-
-
-
-
-
-
-
-
-
LOAD
-
{{result["load"].cpucore}}-core
-
-
-
1 min:
-
- {{result["load"].min1}} -
-
-
-
5 min:
-
- {{result["load"].min5}} -
-
-
-
15 min:
-
- {{result["load"].min15}} -
-
-
-
-
-
-
-
-
-
MEM
-
{{result["mem"].percent}}%
-
-
-
total:
-
{{result["mem"].total | bytes:2}}
-
-
-
used:
-
- {{result["mem"].used | bytes:2}} -
-
-
-
free:
-
{{result["mem"].free | bytes:2}}
-
-
-
-
-
-
-
-
-
active:
-
{{result["mem"].active | bytes:2}}
-
-
-
inactive:
-
{{result["mem"].inactive | bytes:2}}
-
-
-
buffers:
-
{{result["mem"].buffers | bytes:2}}
-
-
-
cached:
-
{{result["mem"].cached | bytes:2}}
-
-
-
-
-
-
-
-
-
SWAP
-
{{result["memswap"].percent}}%
-
-
-
total:
-
{{result["memswap"].total | bytes:2}}
-
-
-
used:
-
- {{result["memswap"].used | bytes:2}} -
-
-
-
free:
-
{{result["memswap"].free | bytes:2}}
-
-
-
-
-
-
-
-
-
-
-
NETWORK
-
Rx/s
-
Tx/s
-
-
-
{{network.interface_name | min_size}}
-
{{network.rx | bytes}}
-
{{network.tx | bytes}}
-
{{network.rx | bits}}
-
{{network.tx | bits}}
-
-
-
-
-
DISK I/O
-
R/s
-
W/s
-
-
-
{{disk.disk_name | min_size}}
-
{{disk.read_bytes | bytes}}
-
{{disk.write_bytes | bytes}}
-
-
-
-
-
FILE SYS
-
Used
-
Total
-
-
-
{{fs.mnt_point}} ({{fs.device_name}})
-
- {{fs.size - fs.free | bytes}} -
-
{{fs.size | bytes}}
-
-
-
-
-
SENSORS
-
°C
-
-
-
{{sensor.label}}
-
{{sensor.value}}
-
-
-
-
-
-
-
- No warning or critical alert detected - Warning or critical alerts (lasts {{result['alert'].length}} entries) -
-
-
-
-
- {{alert.begin}} ({{(alert[1]-alert[0]) | date : 'h:mm:ss'}}) - {{alert[2]}} on {{alert[3]}} ({{alert[4]}}) -
-
-
-
- -
- TASKS {{result["processcount"].total}} ({{result["processcount"].thread}} thr), {{result["processcount"].running}} run, - {{result["processcount"].sleeping}} slp, {{result["processcount"].stopped}} oth - sorted automatically - sorted - by {{sortColumn}}, flat view - -
- -
-
-
- -
-
-
-
CPU%
-
MEM%
- - -
PID
-
USER
-
NI
-
S
- - - -
Command
-
-
-
{{process.cpu_percent | number:1}}
-
{{process.memory_percent | number:1}}
- - -
{{process.pid}}
-
{{process.username}}
-
{{process.nice | exclamation}}
-
{{process.status}}
- - - -
{{process.name}}
-
{{process.cmdline}}
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+ +
+
+
+
From 92aececa37a158d9075010a80b159882240309dc Mon Sep 17 00:00:00 2001 From: Nicolas Hart Date: Sun, 19 Apr 2015 23:04:56 +0200 Subject: [PATCH 81/90] fix issue from previous merge --- glances/plugins/glances_help.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/glances/plugins/glances_help.py b/glances/plugins/glances_help.py index a1ac6c09..ea0b6e17 100644 --- a/glances/plugins/glances_help.py +++ b/glances/plugins/glances_help.py @@ -55,7 +55,7 @@ class Plugin(GlancesPlugin): self.view_data['psutil_version'] = _(" with PSutil {0}").format(psutil_version) try: - self.view_data['configuration_file'] = '{0}: {1}'.format(_("Configuration file"), self.config.loaded_config_file()) + self.view_data['configuration_file'] = '{0}: {1}'.format(_("Configuration file"), self.config.get_loaded_config_file()) except AttributeError: pass From 9b0de83793f6d6fdbcbe9172ecc03652a85c55b7 Mon Sep 17 00:00:00 2001 From: Nicolas Hart Date: Sun, 19 Apr 2015 23:22:29 +0200 Subject: [PATCH 82/90] add ip plugin on web ui --- glances/outputs/static/html/plugins/ip.html | 1 + glances/outputs/static/html/stats.html | 3 +++ 2 files changed, 4 insertions(+) create mode 100644 glances/outputs/static/html/plugins/ip.html diff --git a/glances/outputs/static/html/plugins/ip.html b/glances/outputs/static/html/plugins/ip.html new file mode 100644 index 00000000..161244d1 --- /dev/null +++ b/glances/outputs/static/html/plugins/ip.html @@ -0,0 +1 @@ + - IP {{result["ip"].address}}/{{result["ip"].mask_cidr}} diff --git a/glances/outputs/static/html/stats.html b/glances/outputs/static/html/stats.html index e443a55a..e620342e 100644 --- a/glances/outputs/static/html/stats.html +++ b/glances/outputs/static/html/stats.html @@ -11,6 +11,9 @@
+
+
+
From ff4c3d3613bed679dfd2be487a69df058a168848 Mon Sep 17 00:00:00 2001 From: Nicolas Hart Date: Mon, 20 Apr 2015 22:41:29 +0200 Subject: [PATCH 83/90] fix merge issue --- glances/plugins/glances_help.py | 40 +++++++++++++++++---------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/glances/plugins/glances_help.py b/glances/plugins/glances_help.py index ea0b6e17..c5eaaf3f 100644 --- a/glances/plugins/glances_help.py +++ b/glances/plugins/glances_help.py @@ -65,20 +65,19 @@ class Plugin(GlancesPlugin): self.view_data['sort_network'] = msg_col2.format("b", _("Bytes or bits for network I/O")) self.view_data['sort_cpu'] = msg_col.format("c", _("Sort processes by CPU%")) self.view_data['show_hide_alert'] = msg_col2.format("l", _("Show/hide alert logs")) - - - self.view_data['show_mem'] = msg_col.format("m", _("Sort processes by MEM%")) + self.view_data['sort_mem'] = msg_col.format("m", _("Sort processes by MEM%")) + self.view_data['sort_user'] = msg_col.format("u", _("Sort processes by USER")) self.view_data['delete_warning_alerts'] = msg_col2.format("w", _("Delete warning alerts")) self.view_data['sort_proc'] = msg_col.format("p", _("Sort processes by name")) self.view_data['delete_warning_critical_alerts'] = msg_col2.format("x", _("Delete warning and critical alerts")) self.view_data['sort_io'] = msg_col.format("i", _("Sort processes by I/O rate")) self.view_data['percpu'] = msg_col2.format("1", _("Global CPU or per-CPU stats")) - self.view_data['sort_cpu_times'] = msg_col.format("t", _("Sort processes by CPU times")) + self.view_data['sort_cpu_times'] = msg_col.format("t", _("Sort processes by TIME")) self.view_data['show_hide_help'] = msg_col2.format("h", _("Show/hide this help screen")) self.view_data['show_hide_diskio'] = msg_col.format("d", _("Show/hide disk I/O stats")) self.view_data['view_network_io_combination'] = msg_col2.format("T", _("View network I/O as combination")) self.view_data['show_hide_filesystem'] = msg_col.format("f", _("Show/hide filesystem stats")) - self.view_data['view_cumulative_network'] = msg_col2.format("u", _("View cumulative network I/O")) + self.view_data['view_cumulative_network'] = msg_col2.format("U", _("View cumulative network I/O")) self.view_data['show_hide_network'] = msg_col.format("n", _("Show/hide network stats")) self.view_data['show_hide_filesytem_freespace'] = msg_col2.format("F", _("Show filesystem free space")) self.view_data['show_hide_sensors'] = msg_col.format("s", _("Show/hide sensors stats")) @@ -89,7 +88,8 @@ class Plugin(GlancesPlugin): self.view_data['quit'] = msg_col2.format("q", _("Quit (Esc and Ctrl-C also work)")) self.view_data['enable_disable_top_extends_stats'] = msg_col.format("e", _("Enable/disable top extended stats")) self.view_data['enable_disable_short_processname'] = msg_col.format("/", _("Enable/disable short processes name")) - self.view_data['enable_disable_docker'] = msg_col.format("D", _("Enable/disable Docker stats")) + self.view_data['enable_disable_docker'] = msg_col2.format("D", _("Enable/disable Docker stats")) + self.view_data['enable_disable_quick_look'] = msg_col.format("3", _("Enable/disable quick look plugin")) self.view_data['edit_pattern_filter'] = '{0}: {1}'.format("ENTER", _("Edit the process filter pattern")) @@ -123,44 +123,46 @@ class Plugin(GlancesPlugin): ret.append(self.curse_new_line()) - ret.append(self.curse_add_line(self.view_data['show_mem'])) + ret.append(self.curse_add_line(self.view_data['sort_mem'])) ret.append(self.curse_add_line(self.view_data['delete_warning_alerts'])) ret.append(self.curse_new_line()) - ret.append(self.curse_add_line(self.view_data['sort_proc'])) + ret.append(self.curse_add_line(self.view_data['sort_user'])) ret.append(self.curse_add_line(self.view_data['delete_warning_critical_alerts'])) ret.append(self.curse_new_line()) - ret.append(self.curse_add_line(self.view_data['sort_io'])) + ret.append(self.curse_add_line(self.view_data['sort_proc'])) ret.append(self.curse_add_line(self.view_data['percpu'])) ret.append(self.curse_new_line()) - ret.append(self.curse_add_line(self.view_data['sort_cpu_times'])) - ret.append(self.curse_add_line(self.view_data['show_hide_help'])) + ret.append(self.curse_add_line(self.view_data['sort_io'])) + ret.append(self.curse_add_line(self.view_data['enable_disable_docker'])) ret.append(self.curse_new_line()) - ret.append(self.curse_add_line(self.view_data['show_hide_diskio'])) + ret.append(self.curse_add_line(self.view_data['sort_cpu_times'])) ret.append(self.curse_add_line(self.view_data['view_network_io_combination'])) ret.append(self.curse_new_line()) - ret.append(self.curse_add_line(self.view_data['show_hide_filesystem'])) + ret.append(self.curse_add_line(self.view_data['show_hide_diskio'])) ret.append(self.curse_add_line(self.view_data['view_cumulative_network'])) ret.append(self.curse_new_line()) - ret.append(self.curse_add_line(self.view_data['show_hide_network'])) + ret.append(self.curse_add_line(self.view_data['show_hide_filesystem'])) ret.append(self.curse_add_line(self.view_data['show_hide_filesytem_freespace'])) ret.append(self.curse_new_line()) - ret.append(self.curse_add_line(self.view_data['show_hide_sensors'])) + ret.append(self.curse_add_line(self.view_data['show_hide_network'])) ret.append(self.curse_add_line(self.view_data['generate_graphs'])) ret.append(self.curse_new_line()) - ret.append(self.curse_add_line(self.view_data['show_hide_left_sidebar'])) + ret.append(self.curse_add_line(self.view_data['show_hide_sensors'])) ret.append(self.curse_add_line(self.view_data['reset_history'])) ret.append(self.curse_new_line()) + ret.append(self.curse_add_line(self.view_data['show_hide_left_sidebar'])) + ret.append(self.curse_add_line(self.view_data['show_hide_help'])) + ret.append(self.curse_new_line()) ret.append(self.curse_add_line(self.view_data['enable_disable_process_stats'])) ret.append(self.curse_add_line(self.view_data['quit'])) ret.append(self.curse_new_line()) + ret.append(self.curse_add_line(self.view_data['enable_disable_quick_look'])) + ret.append(self.curse_new_line()) ret.append(self.curse_add_line(self.view_data['enable_disable_top_extends_stats'])) ret.append(self.curse_new_line()) ret.append(self.curse_add_line(self.view_data['enable_disable_short_processname'])) ret.append(self.curse_new_line()) - ret.append(self.curse_add_line(self.view_data['enable_disable_docker'])) - - ret.append(self.curse_new_line()) ret.append(self.curse_new_line()) ret.append(self.curse_add_line(self.view_data['edit_pattern_filter'])) From 1f5b07a522f08d7f358cc444c21d949b54b4aa34 Mon Sep 17 00:00:00 2001 From: Nicolas Hart Date: Tue, 28 Apr 2015 16:04:10 +0200 Subject: [PATCH 84/90] move vendors into a dedicated directory --- glances/outputs/static/html/index.html | 10 +++++----- .../static/js/{ => vendors}/angular-route.min.js | 0 .../static/js/{ => vendors}/angular-route.min.js.map | 0 glances/outputs/static/js/{ => vendors}/angular.min.js | 0 .../outputs/static/js/{ => vendors}/angular.min.js.map | 0 5 files changed, 5 insertions(+), 5 deletions(-) rename glances/outputs/static/js/{ => vendors}/angular-route.min.js (100%) rename glances/outputs/static/js/{ => vendors}/angular-route.min.js.map (100%) rename glances/outputs/static/js/{ => vendors}/angular.min.js (100%) rename glances/outputs/static/js/{ => vendors}/angular.min.js.map (100%) diff --git a/glances/outputs/static/html/index.html b/glances/outputs/static/html/index.html index c45bd3b4..99e766b9 100644 --- a/glances/outputs/static/html/index.html +++ b/glances/outputs/static/html/index.html @@ -5,17 +5,17 @@ Glances - + - - - + + + - + diff --git a/glances/outputs/static/js/angular-route.min.js b/glances/outputs/static/js/vendors/angular-route.min.js similarity index 100% rename from glances/outputs/static/js/angular-route.min.js rename to glances/outputs/static/js/vendors/angular-route.min.js diff --git a/glances/outputs/static/js/angular-route.min.js.map b/glances/outputs/static/js/vendors/angular-route.min.js.map similarity index 100% rename from glances/outputs/static/js/angular-route.min.js.map rename to glances/outputs/static/js/vendors/angular-route.min.js.map diff --git a/glances/outputs/static/js/angular.min.js b/glances/outputs/static/js/vendors/angular.min.js similarity index 100% rename from glances/outputs/static/js/angular.min.js rename to glances/outputs/static/js/vendors/angular.min.js diff --git a/glances/outputs/static/js/angular.min.js.map b/glances/outputs/static/js/vendors/angular.min.js.map similarity index 100% rename from glances/outputs/static/js/angular.min.js.map rename to glances/outputs/static/js/vendors/angular.min.js.map From 625384af44c82e16cbad07b262f22cb6a4ed4751 Mon Sep 17 00:00:00 2001 From: Nicolas Hart Date: Tue, 28 Apr 2015 18:54:03 +0200 Subject: [PATCH 85/90] move all filters in a dedicated file --- glances/outputs/static/html/index.html | 1 + glances/outputs/static/js/app.js | 13 ++- glances/outputs/static/js/filters.js | 44 ++++++++ glances/outputs/static/js/stats_controller.js | 104 ++++-------------- 4 files changed, 80 insertions(+), 82 deletions(-) create mode 100644 glances/outputs/static/js/filters.js diff --git a/glances/outputs/static/html/index.html b/glances/outputs/static/html/index.html index 99e766b9..308be4a6 100644 --- a/glances/outputs/static/html/index.html +++ b/glances/outputs/static/html/index.html @@ -14,6 +14,7 @@ + diff --git a/glances/outputs/static/js/app.js b/glances/outputs/static/js/app.js index 3ade4fdc..4186b40b 100644 --- a/glances/outputs/static/js/app.js +++ b/glances/outputs/static/js/app.js @@ -1,2 +1,13 @@ -var glancesApp = angular.module('glancesApp', ['ngRoute']); +var glancesApp = angular.module('glancesApp', ['ngRoute']) +.config(function($routeProvider, $locationProvider) { + $routeProvider.when('/', { + templateUrl : 'stats.html', + controller : 'statsController' + }).when('/:refresh_time', { + templateUrl : 'stats.html', + controller : 'statsController' + }); + + $locationProvider.html5Mode(true); +}); diff --git a/glances/outputs/static/js/filters.js b/glances/outputs/static/js/filters.js new file mode 100644 index 00000000..1839d3dd --- /dev/null +++ b/glances/outputs/static/js/filters.js @@ -0,0 +1,44 @@ +glancesApp.filter('min_size', function() { + return function(input) { + var max = 8; + if (input.length > max) { + return "_" + input.substring(input.length - max) + } + return input + }; +}); +glancesApp.filter('exclamation', function() { + return function(input) { + if (input == undefined || input =='') { + return '?' + } + return input + }; +}); + +/** + * Fork from https://gist.github.com/thomseddon/3511330 + *   => \u00A0 + * WARNING : kilobyte (kB) != kibibyte (KiB) (more info here : http://en.wikipedia.org/wiki/Byte ) + **/ +glancesApp.filter('bytes', function() { + return function (bytes, precision) { + if (isNaN(parseFloat(bytes)) || !isFinite(bytes) || bytes == 0){ + return '0B'; + } + var units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB'], + number = Math.floor(Math.log(bytes) / Math.log(1000)); + return (bytes / Math.pow(1000, Math.floor(number))).toFixed(precision) + units[number]; + } +}); + +glancesApp.filter('bits', function() { + return function (bits, precision) { + if (isNaN(parseFloat(bits)) || !isFinite(bits) || bits == 0){ + return '0b'; + } + var units = ['b', 'kb', 'Mb', 'Gb', 'Tb', 'Pb'], + number = Math.floor(Math.log(bits) / Math.log(1000)); + return (bits / Math.pow(1000, Math.floor(number))).toFixed(precision) + units[number]; + } +}); diff --git a/glances/outputs/static/js/stats_controller.js b/glances/outputs/static/js/stats_controller.js index 1e477639..dd160457 100644 --- a/glances/outputs/static/js/stats_controller.js +++ b/glances/outputs/static/js/stats_controller.js @@ -1,61 +1,3 @@ -glancesApp.config([ '$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) { - $routeProvider.when('/', { - templateUrl : 'stats.html', - controller : 'statsController' - }).when('/:refresh_time', { - templateUrl : 'stats.html', - controller : 'statsController' - }); - - $locationProvider.html5Mode(true); -} ]); - -glancesApp.filter('min_size', function() { - return function(input) { - var max = 8; - if (input.length > max) { - return "_" + input.substring(input.length - max) - } - return input - }; -}); -glancesApp.filter('exclamation', function() { - return function(input) { - if (input == undefined || input =='') { - return '?' - } - return input - }; -}); - - -/** - * Fork from https://gist.github.com/thomseddon/3511330 - *   => \u00A0 - * WARNING : kilobyte (kB) != kibibyte (KiB) (more info here : http://en.wikipedia.org/wiki/Byte ) - **/ -glancesApp.filter('bytes', function() { - return function (bytes, precision) { - if (isNaN(parseFloat(bytes)) || !isFinite(bytes) || bytes == 0){ - return '0B'; - } - var units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB'], - number = Math.floor(Math.log(bytes) / Math.log(1000)); - return (bytes / Math.pow(1000, Math.floor(number))).toFixed(precision) + units[number]; - } -}); -glancesApp.filter('bits', function() { - return function (bits, precision) { - if (isNaN(parseFloat(bits)) || !isFinite(bits) || bits == 0){ - return '0b'; - } - var units = ['b', 'kb', 'Mb', 'Gb', 'Tb', 'Pb'], - number = Math.floor(Math.log(bits) / Math.log(1000)); - return (bits / Math.pow(1000, Math.floor(number))).toFixed(precision) + units[number]; - } -}); - - glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', '$routeParams', function($scope, $http, $interval, $q, $routeParams) { $scope.limitSuffix = ['critical', 'careful', 'warning'] @@ -64,7 +6,7 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', $scope.sortColumn = '' $scope.sortOrderAsc = false $scope.help_screen = false - $scope.lastSortColumn = '#column_' + $scope.sortColumn + $scope.lastSortColumn = '#column_' + $scope.sortColumn $scope.show = { 'diskio' : true, 'network' : true, @@ -93,18 +35,18 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', } } } - - + + $scope.init_limits = function() { $scope.plugins_limits(); } - + $scope.init_help = function() { $http.get('/api/2/help').success(function(response, status, headers, config) { $scope.help = response }); } - + $scope.show_hide = function(bloc) { if(bloc == 'help') { $scope.help_screen = !$scope.help_screen @@ -112,7 +54,7 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', $scope.show[bloc] = !$scope.show[bloc] } } - + $scope.sort_by = function(column) { if (column == undefined) { // sort automatically @@ -123,7 +65,7 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', column = 'cmdline' } angular.element(document.querySelector($scope.lastSortColumn)).removeClass('sort sort_asc sort_desc') - + if ($scope.sortColumn == column) { $scope.sortOrderAsc = !$scope.sortOrderAsc if ($scope.sortOrderAsc) { @@ -134,11 +76,11 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', } else { $scope.sortColumn = column $scope.sortOrderAsc = false - $scope.lastSortColumn = '#column_' + $scope.sortColumn + $scope.lastSortColumn = '#column_' + $scope.sortColumn angular.element(document.querySelector($scope.lastSortColumn)).addClass('sort sort_desc') } } - + $scope.plugins_limits = function() { $http.get('/api/2/all/limits').success(function(response, status, headers, config) { $scope.limits = response @@ -146,9 +88,9 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', console.log('error : ' + response+ status + headers + config); }); } - + var canceler = undefined; - + /** * Refresh all the data of the view */ @@ -156,7 +98,7 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', canceler = $q.defer(); $http.get('/api/2/all', {timeout: canceler.promise}).success(function(response, status, headers, config) { //alert('success'); - + function timemillis(array) { var sum = 0.0 for (var i = 0; i < array.length; i++) { @@ -188,7 +130,7 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', var month = leftpad(d.getMonth() + 1) // JANUARY = 0 var day = leftpad(d.getDate()) return year + "-" + month + "-" + day + " " + datetimeformat(input) - + } function datetimeformat(input) { var millis = input * 1000.0; @@ -198,7 +140,7 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', var seconds = leftpad(d.getUTCSeconds()) return hour + ":" + minutes + ":" + seconds } - + for (var i = 0; i < response['processlist'].length; i++) { var process = response['processlist'][i] process.memvirt = process.memory_info[1] @@ -220,13 +162,13 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', canceler.resolve() }); } - + $scope.getClass = function(pluginName, limitNamePrefix, value, num) { if ($scope.pluginLimits != undefined && $scope.pluginLimits[pluginName] != undefined) { for (var i = 0; i < $scope.limitSuffix.length; i++) { var limitName = limitNamePrefix + $scope.limitSuffix[i] var limit = $scope.pluginLimits[pluginName][limitName] - + if (value >= limit) { //console.log("value = " + value + " - limit = " + limit) var pos = limitName.lastIndexOf("_") @@ -244,11 +186,11 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', } return "ok"; } - + $scope.init_refresh_time(); $scope.init_limits(); $scope.init_help(); - + var stop; $scope.configure_refresh = function () { if (!angular.isDefined(stop)) { @@ -258,7 +200,7 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', }, $scope.refreshTime * 1000); // in milliseconds } } - + $scope.$watch( function() { return $scope.refreshTime; }, function(newValue, oldValue) { @@ -273,7 +215,7 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', stop = undefined; } }; - + $scope.$on('$destroy', function() { // Make sure that the interval is destroyed too $scope.stop_refresh(); @@ -281,13 +223,13 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', $scope.onKeyDown = function($event) { console.log($event) - if ($event.keyCode == keycodes.a) { // a Sort processes automatically + if ($event.keyCode == keycodes.a) { // a Sort processes automatically $scope.sort_by() } else if ($event.keyCode == keycodes.c) {//c Sort processes by CPU% $scope.sort_by('cpu_percent') - } else if ($event.keyCode == keycodes.m) {//m Sort processes by MEM% + } else if ($event.keyCode == keycodes.m) {//m Sort processes by MEM% $scope.sort_by('memory_percent') - } else if ($event.keyCode == keycodes.p) {//p Sort processes by name + } else if ($event.keyCode == keycodes.p) {//p Sort processes by name $scope.sort_by('name') } else if ($event.keyCode == keycodes.i) {//i Sort processes by I/O rate $scope.sort_by('io_read') From c17f252a0d7568aba5cfc887b7aad749addaedc9 Mon Sep 17 00:00:00 2001 From: Nicolas Hart Date: Tue, 28 Apr 2015 23:24:02 +0200 Subject: [PATCH 86/90] remove load of unexisting help controller --- glances/outputs/static/html/index.html | 1 - 1 file changed, 1 deletion(-) diff --git a/glances/outputs/static/html/index.html b/glances/outputs/static/html/index.html index 308be4a6..19cdb16f 100644 --- a/glances/outputs/static/html/index.html +++ b/glances/outputs/static/html/index.html @@ -18,7 +18,6 @@ - From 494d2634c1ae2e1293b9539790efcc4768978a6c Mon Sep 17 00:00:00 2001 From: Nicolas Hart Date: Tue, 28 Apr 2015 23:25:05 +0200 Subject: [PATCH 87/90] fix issues on docker web ui --- glances/outputs/static/html/plugins/docker.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/glances/outputs/static/html/plugins/docker.html b/glances/outputs/static/html/plugins/docker.html index 2b4e4684..d30fa2d0 100644 --- a/glances/outputs/static/html/plugins/docker.html +++ b/glances/outputs/static/html/plugins/docker.html @@ -1,4 +1,4 @@ -CONTAINERS {{ result['docker']['containers'].length }} (served by 1.2.0) +CONTAINERS {{ result['docker']['containers'].length }} (served by Docker {{ result['docker']['version']['Version'] }})
@@ -13,7 +13,7 @@
{{ container.Id | limitTo:12 }}
{{ container.Names[0] }}
{{ container.Status }}
-
{{ container.cpu.total }}
+
{{ container.cpu.total | number:1 }}
{{ container.memory.usage | bytes }}
{{ container.Command }}
From 248918012a1c850a994be41bc318c65be1c89f6f Mon Sep 17 00:00:00 2001 From: Nicolas Hart Date: Fri, 1 May 2015 14:22:04 +0200 Subject: [PATCH 88/90] fix processlist sort --- glances/outputs/static/css/style.css | 14 +-- .../static/html/plugins/processcount.html | 11 +- .../static/html/plugins/processlist.html | 26 ++-- glances/outputs/static/js/stats_controller.js | 117 +++++++++++------- glances/outputs/static/js/variables.js | 9 +- 5 files changed, 98 insertions(+), 79 deletions(-) diff --git a/glances/outputs/static/css/style.css b/glances/outputs/static/css/style.css index 2ff226f3..448eb031 100644 --- a/glances/outputs/static/css/style.css +++ b/glances/outputs/static/css/style.css @@ -26,20 +26,15 @@ body { padding-bottom: 20px; } -.underline{ +.underline { text-decoration: underline } -.bold{ +.bold { font-weight: bold; } -.sort{ +.sort { font-weight: bold; -} -.sort_asc:after { - content: '\25B2' -} -.sort_desc:after { - content: '\25BC' + color: white; } .text-right { text-align: right; @@ -100,7 +95,6 @@ body { padding: 0px 5px 0px 5px; white-space: nowrap; } - /* Loading page */ #loading-page .glances-logo { diff --git a/glances/outputs/static/html/plugins/processcount.html b/glances/outputs/static/html/plugins/processcount.html index af39392d..0f3a8789 100644 --- a/glances/outputs/static/html/plugins/processcount.html +++ b/glances/outputs/static/html/plugins/processcount.html @@ -1,5 +1,6 @@ -TASKS {{result["processcount"].total}} ({{result["processcount"].thread}} thr), {{result["processcount"].running}} run, - {{result["processcount"].sleeping}} slp, {{result["processcount"].stopped}} oth - sorted automatically -sorted - by {{sortColumn}}, flat view +TASKS +{{result["processcount"].total}} ({{result["processcount"].thread}} thr), +{{result["processcount"].running}} run, +{{result["processcount"].sleeping}} slp, +{{result["processcount"].stopped}} oth + sorted {{ sorter.auto ? 'automatically' : '' }} by {{ sorter.column }}, flat view diff --git a/glances/outputs/static/html/plugins/processlist.html b/glances/outputs/static/html/plugins/processlist.html index a7d8fcdd..3ef93a4e 100644 --- a/glances/outputs/static/html/plugins/processlist.html +++ b/glances/outputs/static/html/plugins/processlist.html @@ -1,19 +1,19 @@
-
CPU%
-
MEM%
- - -
PID
-
USER
-
NI
-
S
- - - -
Command
+
CPU%
+
MEM%
+ + +
PID
+
USER
+
NI
+
S
+ + + +
Command
-
+
{{process.cpu_percent | number:1}}
{{process.memory_percent | number:1}}
diff --git a/glances/outputs/static/js/stats_controller.js b/glances/outputs/static/js/stats_controller.js index dd160457..a65e690d 100644 --- a/glances/outputs/static/js/stats_controller.js +++ b/glances/outputs/static/js/stats_controller.js @@ -1,12 +1,13 @@ -glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', '$routeParams', function($scope, $http, $interval, $q, $routeParams) { +glancesApp.controller('statsController', function($scope, $http, $interval, $q, $routeParams) { - $scope.limitSuffix = ['critical', 'careful', 'warning'] - $scope.refreshTime = 3 - $scope.pluginLimits = [] - $scope.sortColumn = '' - $scope.sortOrderAsc = false - $scope.help_screen = false - $scope.lastSortColumn = '#column_' + $scope.sortColumn + $scope.limitSuffix = ['critical', 'careful', 'warning']; + $scope.refreshTime = 3; + $scope.pluginLimits = []; + $scope.sorter = { + column: "cpu_percent", + auto: true + }; + $scope.help_screen = false; $scope.show = { 'diskio' : true, 'network' : true, @@ -25,7 +26,7 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', 'network_io_cumulative':false, 'filesystem_freespace':false, 'network_by_bytes':true - } + }; $scope.init_refresh_time = function() { if ($routeParams != undefined && $routeParams.refresh_time != undefined) { @@ -36,7 +37,6 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', } } - $scope.init_limits = function() { $scope.plugins_limits(); } @@ -55,32 +55,6 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', } } - $scope.sort_by = function(column) { - if (column == undefined) { - // sort automatically - $scope.sortColumn = undefined - return - } - if (column == 'name' && !$scope.show.short_process_name) { - column = 'cmdline' - } - angular.element(document.querySelector($scope.lastSortColumn)).removeClass('sort sort_asc sort_desc') - - if ($scope.sortColumn == column) { - $scope.sortOrderAsc = !$scope.sortOrderAsc - if ($scope.sortOrderAsc) { - angular.element(document.querySelector($scope.lastSortColumn)).addClass('sort sort_asc') - } else { - angular.element(document.querySelector($scope.lastSortColumn)).addClass('sort sort_desc') - } - } else { - $scope.sortColumn = column - $scope.sortOrderAsc = false - $scope.lastSortColumn = '#column_' + $scope.sortColumn - angular.element(document.querySelector($scope.lastSortColumn)).addClass('sort sort_desc') - } - } - $scope.plugins_limits = function() { $http.get('/api/2/all/limits').success(function(response, status, headers, config) { $scope.limits = response @@ -97,7 +71,6 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', $scope.refreshData = function() { canceler = $q.defer(); $http.get('/api/2/all', {timeout: canceler.promise}).success(function(response, status, headers, config) { - //alert('success'); function timemillis(array) { var sum = 0.0 @@ -170,10 +143,8 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', var limit = $scope.pluginLimits[pluginName][limitName] if (value >= limit) { - //console.log("value = " + value + " - limit = " + limit) var pos = limitName.lastIndexOf("_") var className = limitName.substring(pos + 1) - //console.log("className = " + className) if (num == 1) { return className + '_log' } @@ -222,19 +193,41 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', }); $scope.onKeyDown = function($event) { - console.log($event) if ($event.keyCode == keycodes.a) { // a Sort processes automatically - $scope.sort_by() + $scope.sorter = { + column: "cpu_percent", + auto: true + }; } else if ($event.keyCode == keycodes.c) {//c Sort processes by CPU% - $scope.sort_by('cpu_percent') + $scope.sorter = { + column: "cpu_percent", + auto: false + }; } else if ($event.keyCode == keycodes.m) {//m Sort processes by MEM% - $scope.sort_by('memory_percent') + $scope.sorter = { + column: "memory_percent", + auto: false + }; } else if ($event.keyCode == keycodes.p) {//p Sort processes by name - $scope.sort_by('name') + $scope.sorter = { + column: "name", + auto: false + }; } else if ($event.keyCode == keycodes.i) {//i Sort processes by I/O rate - $scope.sort_by('io_read') + $scope.sorter = { + column: ['io_read', 'io_write'], + auto: false + }; } else if ($event.keyCode == keycodes.t) {//t Sort processes by CPU times - $scope.sort_by('timemillis') + $scope.sorter = { + column: "timemillis", + auto: false + }; + } else if ($event.keyCode == keycodes.u) {//t Sort processes by user + $scope.sorter = { + column: "username", + auto: false + }; } else if ($event.keyCode == keycodes.d) {//d Show/hide disk I/O stats $scope.show_hide('diskio') } else if ($event.keyCode == keycodes.f) {//f Show/hide filesystem stats @@ -279,4 +272,34 @@ glancesApp.controller('statsController', [ '$scope', '$http', '$interval', '$q', // not available } } -} ]); +}) + +.directive("sortableTh", function() { + return { + restrict: 'A', + scope: { + sorter: '=' + }, + link: function (scope, element, attrs) { + + scope.$watch(function() { + return scope.sorter.column; + }, function(newValue, oldValue) { + + if (attrs.column === newValue) { + element.addClass('sort'); + } else { + element.removeClass('sort'); + } + + }); + + element.on('click', function() { + + scope.sorter.column = attrs.column; + + scope.$apply(); + }); + } + }; +}); diff --git a/glances/outputs/static/js/variables.js b/glances/outputs/static/js/variables.js index f164f485..6537b500 100644 --- a/glances/outputs/static/js/variables.js +++ b/glances/outputs/static/js/variables.js @@ -5,22 +5,23 @@ var keycodes = { 'p' : '80', 'i' : '73', 't' : '84', + 'u' : '85', 'd' : '68', 'f' : '70', 'n' : '78', 's' : '83', - 'TWO' : '50', + 'TWO': '50', 'z' : '90', 'e' : '69', - 'SLASH' : '191', + 'SLASH': '191', 'D' : '68', 'b' : '66', 'l' : '76', 'w' : '87', 'x' : '88', - 'ONE' : '49', + 'ONE': '49', 'h' : '72', - 'T' : '84', + 'T' : '84', 'u' : '85', 'F' : '70', 'g' : '71', From 432c669466e4dd5aab47a394db45dea226088961 Mon Sep 17 00:00:00 2001 From: Nicolas Hart Date: Fri, 1 May 2015 17:28:35 +0200 Subject: [PATCH 89/90] handle io sort in process list --- glances/outputs/static/html/index.html | 2 + .../static/html/plugins/processcount.html | 2 +- .../static/html/plugins/processlist.html | 2 +- glances/outputs/static/js/stats_controller.js | 68 +++++---- .../outputs/static/js/vendors/lodash.min.js | 137 ++++++++++++++++++ 5 files changed, 177 insertions(+), 34 deletions(-) create mode 100644 glances/outputs/static/js/vendors/lodash.min.js diff --git a/glances/outputs/static/html/index.html b/glances/outputs/static/html/index.html index 19cdb16f..f9b20a70 100644 --- a/glances/outputs/static/html/index.html +++ b/glances/outputs/static/html/index.html @@ -13,9 +13,11 @@ + + diff --git a/glances/outputs/static/html/plugins/processcount.html b/glances/outputs/static/html/plugins/processcount.html index 0f3a8789..a787edd3 100644 --- a/glances/outputs/static/html/plugins/processcount.html +++ b/glances/outputs/static/html/plugins/processcount.html @@ -3,4 +3,4 @@ {{result["processcount"].running}} run, {{result["processcount"].sleeping}} slp, {{result["processcount"].stopped}} oth - sorted {{ sorter.auto ? 'automatically' : '' }} by {{ sorter.column }}, flat view + sorted {{ sorter.auto ? 'automatically' : '' }} by {{ sorter.getColumnLabel(sorter.column) }}, flat view diff --git a/glances/outputs/static/html/plugins/processlist.html b/glances/outputs/static/html/plugins/processlist.html index 3ef93a4e..15535ca7 100644 --- a/glances/outputs/static/html/plugins/processlist.html +++ b/glances/outputs/static/html/plugins/processlist.html @@ -13,7 +13,7 @@
Command
-
+
{{process.cpu_percent | number:1}}
{{process.memory_percent | number:1}}
diff --git a/glances/outputs/static/js/stats_controller.js b/glances/outputs/static/js/stats_controller.js index a65e690d..f894a79c 100644 --- a/glances/outputs/static/js/stats_controller.js +++ b/glances/outputs/static/js/stats_controller.js @@ -5,7 +5,17 @@ glancesApp.controller('statsController', function($scope, $http, $interval, $q, $scope.pluginLimits = []; $scope.sorter = { column: "cpu_percent", - auto: true + auto: true, + isReverseColumn: function(column) { + return !(column == 'username' || column == 'name'); + }, + getColumnLabel: function(column) { + if (_.isEqual(column, ['io_read', 'io_write'])) { + return 'io_counters'; + } else { + return column; + } + } }; $scope.help_screen = false; $scope.show = { @@ -194,40 +204,26 @@ glancesApp.controller('statsController', function($scope, $http, $interval, $q, $scope.onKeyDown = function($event) { if ($event.keyCode == keycodes.a) { // a Sort processes automatically - $scope.sorter = { - column: "cpu_percent", - auto: true - }; + $scope.sorter.column = "cpu_percent"; + $scope.sorter.auto = true; } else if ($event.keyCode == keycodes.c) {//c Sort processes by CPU% - $scope.sorter = { - column: "cpu_percent", - auto: false - }; + $scope.sorter.column = "cpu_percent"; + $scope.sorter.auto = false; } else if ($event.keyCode == keycodes.m) {//m Sort processes by MEM% - $scope.sorter = { - column: "memory_percent", - auto: false - }; + $scope.sorter.column = "memory_percent"; + $scope.sorter.auto = false; } else if ($event.keyCode == keycodes.p) {//p Sort processes by name - $scope.sorter = { - column: "name", - auto: false - }; + $scope.sorter.column = "name"; + $scope.sorter.auto = false; } else if ($event.keyCode == keycodes.i) {//i Sort processes by I/O rate - $scope.sorter = { - column: ['io_read', 'io_write'], - auto: false - }; + $scope.sorter.column = ['io_read', 'io_write']; + $scope.sorter.auto = false; } else if ($event.keyCode == keycodes.t) {//t Sort processes by CPU times - $scope.sorter = { - column: "timemillis", - auto: false - }; + $scope.sorter.column = "timemillis"; + $scope.sorter.auto = false; } else if ($event.keyCode == keycodes.u) {//t Sort processes by user - $scope.sorter = { - column: "username", - auto: false - }; + $scope.sorter.column = "username"; + $scope.sorter.auto = false; } else if ($event.keyCode == keycodes.d) {//d Show/hide disk I/O stats $scope.show_hide('diskio') } else if ($event.keyCode == keycodes.f) {//f Show/hide filesystem stats @@ -286,10 +282,18 @@ glancesApp.controller('statsController', function($scope, $http, $interval, $q, return scope.sorter.column; }, function(newValue, oldValue) { - if (attrs.column === newValue) { - element.addClass('sort'); + if (angular.isArray(newValue)) { + if (newValue.indexOf(attrs.column) !== -1) { + element.addClass('sort'); + } else { + element.removeClass('sort'); + } } else { - element.removeClass('sort'); + if (attrs.column === newValue) { + element.addClass('sort'); + } else { + element.removeClass('sort'); + } } }); diff --git a/glances/outputs/static/js/vendors/lodash.min.js b/glances/outputs/static/js/vendors/lodash.min.js new file mode 100644 index 00000000..0d0fd334 --- /dev/null +++ b/glances/outputs/static/js/vendors/lodash.min.js @@ -0,0 +1,137 @@ +/** + * @license + * lodash 3.8.0 (Custom Build) lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE + * Build: `lodash modern -o ./lodash.js` + */ +;(function(){function n(n,t){if(n!==t){var r=n===n,e=t===t;if(n>t||!r||n===w&&e)return 1;if(n=n&&9<=n&&13>=n||32==n||160==n||5760==n||6158==n||8192<=n&&(8202>=n||8232==n||8233==n||8239==n||8287==n||12288==n||65279==n); + +}function v(n,t){for(var r=-1,e=n.length,u=-1,o=[];++ri(t,a,0)&&u.push(a);return u}function at(n,t){var r=true;return zu(n,function(n,e,u){return r=!!t(n,e,u)}),r}function ct(n,t){var r=[];return zu(n,function(n,e,u){t(n,e,u)&&r.push(n)}),r}function lt(n,t,r,e){var u;return r(n,function(n,r,o){return t(n,r,o)?(u=e?r:n,false):void 0}),u}function st(n,t,r){ +for(var e=-1,u=n.length,o=-1,i=[];++et&&(t=-t>u?0:u+t),r=r===w||r>u?u:+r||0,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0, +r=Ue(u);++eu(a,s,0)&&((t||f)&&a.push(s),c.push(l))}return c}function Ut(n,t){for(var r=-1,e=t.length,u=Ue(e);++r>>1,i=n[o];(r?i<=t:iu?null:o,u=1);++earguments.length;return typeof e=="function"&&o===w&&To(r)?n(r,e,u,i):Et(r,dr(e,o,4),u,i,t)}}function cr(n,t,r,e,u,o,i,f,a,c){function l(){for(var b=arguments.length,j=b,k=Ue(b);j--;)k[j]=arguments[j];if(e&&(k=Mt(k,e,u)),o&&(k=Dt(k,o,i)),_||y){var j=l.placeholder,O=v(k,j),b=b-O.length;if(bu)||i===e&&i===o)&&(u=i,o=n)}),o}function dr(n,t,r){var e=$n.callback||Ee,e=e===Ee?ut:e;return r?e(n,t,r):e}function mr(n,t,e){var u=$n.indexOf||Dr,u=u===Dr?r:u;return n?u(n,t,e):u}function wr(n){var t=n.length,r=new n.constructor(t); + +return t&&"string"==typeof n[0]&&Ge.call(n,"index")&&(r.index=n.index,r.input=n.input),r}function br(n){return n=n.constructor,typeof n=="function"&&n instanceof n||(n=Be),new n}function xr(n,t,r){var e=n.constructor;switch(t){case J:return Bt(n);case D:case P:return new e(+n);case X:case H:case Q:case nn:case tn:case rn:case en:case un:case on:return t=n.buffer,new e(r?Bt(t):t,n.byteOffset,n.length);case V:case G:return new e(n);case Z:var u=new e(n.source,kn.exec(n));u.lastIndex=n.lastIndex}return u; + +}function Ar(n,t,r){return null==n||Er(t,n)||(t=$r(t),n=1==t.length?n:gt(n,It(t,0,-1)),t=Pr(t)),t=null==n?n:n[t],null==t?w:t.apply(n,r)}function jr(n){return null!=n&&Rr(Yu(n))}function kr(n,t){return n=+n,t=null==t?Tu:t,-1t?0:t)):[]}function Br(n,t,r){var e=n?n.length:0;return e?((r?Or(n,t,r):null==t)&&(t=1),t=e-(+t||0),It(n,0,0>t?0:t)):[]}function Mr(n){return n?n[0]:w}function Dr(n,t,e){var u=n?n.length:0;if(!u)return-1;if(typeof e=="number")e=0>e?bu(u+e,0):e;else if(e)return e=$t(n,t),n=n[e],(t===t?t===n:n!==n)?e:-1;return r(n,t,e||0)}function Pr(n){var t=n?n.length:0;return t?n[t-1]:w}function qr(n){return zr(n,1)}function Kr(n,t,e,u){ +if(!n||!n.length)return[];null!=t&&typeof t!="boolean"&&(u=e,e=Or(n,t,u)?null:t,t=false);var o=dr();if((o!==ut||null!=e)&&(e=o(e,u,3)),t&&mr()==r){t=e;var i;e=-1,u=n.length;for(var o=-1,f=[];++er?bu(u+r,0):r||0,typeof n=="string"||!To(n)&&ve(n)?rt?0:+t||0,n.length),n)}function re(n){n=Nr(n);for(var t=-1,r=n.length,e=Ue(r);++t=n&&(t=null),r}}function oe(n,t,r){function e(){var r=t-(wo()-c);0>=r||r>t?(f&&eu(f),r=p,f=s=p=w,r&&(h=wo(),a=n.apply(l,i),s||f||(i=l=null))):s=su(e,r)}function u(){s&&eu(s),f=s=p=w,(v||_!==t)&&(h=wo(),a=n.apply(l,i),s||f||(i=l=null))}function o(){if(i=arguments,c=wo(),l=this,p=v&&(s||!g), +!1===_)var r=g&&!s;else{f||g||(h=c);var o=_-(c-h),y=0>=o||o>_;y?(f&&(f=eu(f)),h=c,a=n.apply(l,i)):f||(f=su(u,o))}return y&&s?s=eu(s):s||t===_||(s=su(e,t)),r&&(y=true,a=n.apply(l,i)),!y||s||f||(i=l=null),a}var i,f,a,c,l,s,p,h=0,_=false,v=true;if(typeof n!="function")throw new Pe(L);if(t=0>t?0:+t||0,true===r)var g=true,v=false;else se(r)&&(g=r.leading,_="maxWait"in r&&bu(+r.maxWait||0,t),v="trailing"in r?r.trailing:v);return o.cancel=function(){s&&eu(s),f&&eu(f),f=s=p=w},o}function ie(n,t){function r(){var e=arguments,u=r.cache,o=t?t.apply(this,e):e[0]; + +return u.has(o)?u.get(o):(e=n.apply(this,e),u.set(o,e),e)}if(typeof n!="function"||t&&typeof t!="function")throw new Pe(L);return r.cache=new ie.Cache,r}function fe(n,t){if(typeof n!="function")throw new Pe(L);return t=bu(t===w?n.length-1:+t||0,0),function(){for(var r=arguments,e=-1,u=bu(r.length-t,0),o=Ue(u);++et||!n||!mu(t))return r;do t%2&&(r+=n),t=uu(t/2),n+=n;while(t);return r}function ke(n,t,r){var e=n;return(n=u(n))?(r?Or(e,t,r):null==t)?n.slice(g(n),y(n)+1):(t+="",n.slice(i(n,t),f(n,t)+1)):n}function Oe(n,t,r){return r&&Or(n,t,r)&&(t=null),n=u(n),n.match(t||Wn)||[]}function Ee(n,t,r){return r&&Or(n,t,r)&&(t=null),h(n)?Ce(n):ut(n,t)}function Ie(n){ +return function(){return n}}function Re(n){return n}function Ce(n){return wt(ot(n,true))}function We(n,t,r){if(null==r){var e=se(t),u=e&&Ko(t);((u=u&&u.length&&vt(t,u))?u.length:e)||(u=false,r=t,t=n,n=this)}u||(u=vt(t,Ko(t)));var o=true,e=-1,i=No(n),f=u.length;false===r?o=false:se(r)&&"chain"in r&&(o=r.chain);for(;++e>>1,Su=vu?vu.BYTES_PER_ELEMENT:0,Tu=Le.pow(2,53)-1,Uu=_u&&new _u,Nu={},Fu=$n.support={}; + +!function(n){function t(){this.x=n}var r=arguments,e=[];t.prototype={valueOf:n,y:n};for(var u in new t)e.push(u);Fu.funcDecomp=/\bthis\b/.test(function(){return this}),Fu.funcNames=typeof $e.name=="string";try{Fu.dom=11===Ye.createDocumentFragment().nodeType}catch(o){Fu.dom=false}try{Fu.nonEnumArgs=!cu.call(r,1)}catch(i){Fu.nonEnumArgs=true}}(1,0),$n.templateSettings={escape:_n,evaluate:vn,interpolate:gn,variable:"",imports:{_:$n}};var $u=gu||function(n,t){return null==t?n:et(t,Zu(t),et(t,Ko(t),n))},Lu=function(){ +function n(){}return function(t){if(se(t)){n.prototype=t;var r=new n;n.prototype=null}return r||_.Object()}}(),zu=Kt(ht),Bu=Kt(_t,true),Mu=Vt(),Du=Vt(true),Pu=Uu?function(n,t){return Uu.set(n,t),n}:Re;tu||(Bt=nu&&hu?function(n){var t=n.byteLength,r=vu?uu(t/Su):0,e=r*Su,u=new nu(t);if(r){var o=new vu(u,0,r);o.set(new vu(n,0,r))}return t!=e&&(o=new hu(u,e),o.set(new hu(n,e))),u}:Ie(null));var qu=du&&lu?function(n){return new Dn(n)}:Ie(null),Ku=Uu?function(n){return Uu.get(n)}:Se,Vu=function(){return Fu.funcNames?"constant"==Ie.name?At("name"):function(n){ +for(var t=n.name,r=Nu[t],e=r?r.length:0;e--;){var u=r[e],o=u.func;if(null==o||o==n)return u.name}return t}:Ie("")}(),Yu=At("length"),Zu=ou?function(n){return ou(Fr(n))}:Ie([]),Gu=function(){var n=0,t=0;return function(r,e){var u=wo(),o=U-(u-t);if(t=u,0=T)return r}else n=0;return Pu(r,e)}}(),Ju=fe(function(n,t){return jr(n)?ft(n,st(t,false,true)):[]}),Xu=Qt(),Hu=Qt(true),Qu=fe(function(t,r){r=st(r);var e=rt(t,r);return kt(t,r.sort(n)),e}),no=pr(),to=pr(true),ro=fe(function(n){return Tt(st(n,false,true)); + +}),eo=fe(function(n,t){return jr(n)?ft(n,t):[]}),uo=fe(Vr),oo=fe(function(n){var t=n.length,r=n[t-2],e=n[t-1];return 2e&&(e=u)}return e}),fi=Xt(function(n){for(var t=-1,r=n.length,e=Iu;++t--n?t.apply(this,arguments):void 0}},$n.ary=function(n,t,r){return r&&Or(n,t,r)&&(t=null), +t=n&&null==t?n.length:bu(+t||0,0),hr(n,R,null,null,null,null,t)},$n.assign=$o,$n.at=io,$n.before=ue,$n.bind=bo,$n.bindAll=xo,$n.bindKey=Ao,$n.callback=Ee,$n.chain=Gr,$n.chunk=function(n,t,r){t=(r?Or(n,t,r):null==t)?1:bu(+t||1,1),r=0;for(var e=n?n.length:0,u=-1,o=Ue(ru(e/t));rr&&(r=-r>u?0:u+r),e=e===w||e>u?u:+e||0,0>e&&(e+=u),u=r>e?0:e>>>0,r>>>=0;re)return f;var i=n[0],c=-1,l=i?i.length:0,s=u[0];n:for(;++c(s?Pn(s,a):o(f,a,0))){for(t=e;--t;){var p=u[t];if(0>(p?Pn(p,a):o(n[t],a,0)))continue n}s&&s.push(a),f.push(a)}return f},$n.invert=function(n,t,r){r&&Or(n,t,r)&&(t=null),r=-1;for(var e=Ko(n),u=e.length,o={};++rt?0:t)):[]},$n.takeRight=function(n,t,r){var e=n?n.length:0;return e?((r?Or(n,t,r):null==t)&&(t=1),t=e-(+t||0),It(n,0>t?0:t)):[]},$n.takeRightWhile=function(n,t,r){return n&&n.length?Nt(n,dr(t,r,3),false,true):[]},$n.takeWhile=function(n,t,r){return n&&n.length?Nt(n,dr(t,r,3)):[]},$n.tap=function(n,t,r){return t.call(r,n),n},$n.throttle=function(n,t,r){var e=true,u=true;if(typeof n!="function")throw new Pe(L);return false===r?e=false:se(r)&&(e="leading"in r?!!r.leading:e, +u="trailing"in r?!!r.trailing:u),Fn.leading=e,Fn.maxWait=+t,Fn.trailing=u,oe(n,t,Fn)},$n.thru=Jr,$n.times=function(n,t,r){if(n=uu(n),1>n||!mu(n))return[];var e=-1,u=Ue(xu(n,Ru));for(t=zt(t,r,1);++er?0:+r||0,e),r-=t.length,0<=r&&n.indexOf(t,r)==r},$n.escape=function(n){return(n=u(n))&&hn.test(n)?n.replace(sn,l):n},$n.escapeRegExp=xe,$n.every=Xr,$n.find=ao,$n.findIndex=Xu,$n.findKey=zo,$n.findLast=co,$n.findLastIndex=Hu,$n.findLastKey=Bo,$n.findWhere=function(n,t){return ao(n,wt(t))},$n.first=Mr,$n.get=function(n,t,r){return n=null==n?w:gt(n,$r(t),t+""),n===w?r:n},$n.has=function(n,t){if(null==n)return false;var r=Ge.call(n,t); + +return r||Er(t)||(t=$r(t),n=1==t.length?n:gt(n,It(t,0,-1)),t=Pr(t),r=null!=n&&Ge.call(n,t)),r},$n.identity=Re,$n.includes=Qr,$n.indexOf=Dr,$n.inRange=function(n,t,r){return t=+t||0,"undefined"===typeof r?(r=t,t=0):r=+r||0,n>=xu(t,r)&&nr?bu(e+r,0):xu(r||0,e-1))+1;else if(r)return u=$t(n,t,true)-1,n=n[u],(t===t?t===n:n!==n)?u:-1;if(t!==t)return p(n,u,true);for(;u--;)if(n[u]===t)return u;return-1},$n.max=ii,$n.min=fi,$n.noConflict=function(){ +return _._=He,this},$n.noop=Se,$n.now=wo,$n.pad=function(n,t,r){n=u(n),t=+t;var e=n.length;return er?0:+r||0,n.length),n.lastIndexOf(t,r)==r},$n.sum=function(n,t,r){r&&Or(n,t,r)&&(t=null); + +var e=dr(),u=null==t;if(e===ut&&u||(u=false,t=e(t,r,3)),u){for(n=To(n)?n:Nr(n),t=n.length,r=0;t--;)r+=+n[t]||0;n=r}else n=St(n,t);return n},$n.template=function(n,t,r){var e=$n.templateSettings;r&&Or(n,t,r)&&(t=r=null),n=u(n),t=tt($u({},r||t),e,nt),r=tt($u({},t.imports),e.imports,nt);var o,i,f=Ko(r),a=Ut(r,f),c=0;r=t.interpolate||Rn;var l="__p+='";r=Me((t.escape||Rn).source+"|"+r.source+"|"+(r===gn?jn:Rn).source+"|"+(t.evaluate||Rn).source+"|$","g");var p="sourceURL"in t?"//# sourceURL="+t.sourceURL+"\n":""; + +if(n.replace(r,function(t,r,e,u,f,a){return e||(e=u),l+=n.slice(c,a).replace(Cn,s),r&&(o=true,l+="'+__e("+r+")+'"),f&&(i=true,l+="';"+f+";\n__p+='"),e&&(l+="'+((__t=("+e+"))==null?'':__t)+'"),c=a+t.length,t}),l+="';",(t=t.variable)||(l="with(obj){"+l+"}"),l=(i?l.replace(fn,""):l).replace(an,"$1").replace(cn,"$1;"),l="function("+(t||"obj")+"){"+(t?"":"obj||(obj={});")+"var __t,__p=''"+(o?",__e=_.escape":"")+(i?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+l+"return __p}", +t=ei(function(){return $e(f,p+"return "+l).apply(w,a)}),t.source=l,le(t))throw t;return t},$n.trim=ke,$n.trimLeft=function(n,t,r){var e=n;return(n=u(n))?n.slice((r?Or(e,t,r):null==t)?g(n):i(n,t+"")):n},$n.trimRight=function(n,t,r){var e=n;return(n=u(n))?(r?Or(e,t,r):null==t)?n.slice(0,y(n)+1):n.slice(0,f(n,t+"")+1):n},$n.trunc=function(n,t,r){r&&Or(n,t,r)&&(t=null);var e=W;if(r=S,null!=t)if(se(t)){var o="separator"in t?t.separator:o,e="length"in t?+t.length||0:e;r="omission"in t?u(t.omission):r}else e=+t||0; + +if(n=u(n),e>=n.length)return n;if(e-=r.length,1>e)return r;if(t=n.slice(0,e),null==o)return t+r;if(_e(o)){if(n.slice(e).search(o)){var i,f=n.slice(0,e);for(o.global||(o=Me(o.source,(kn.exec(o)||"")+"g")),o.lastIndex=0;n=o.exec(f);)i=n.index;t=t.slice(0,null==i?e:i)}}else n.indexOf(o,e)!=e&&(o=t.lastIndexOf(o),-1u.__dir__?"Right":"") +}),u},Bn.prototype[n+"Right"]=function(t){return this.reverse()[n](t).reverse()},Bn.prototype[n+"RightWhile"]=function(n,t){return this.reverse()[r](n,t).reverse()}}),Kn(["first","last"],function(n,t){var r="take"+(t?"Right":"");Bn.prototype[n]=function(){return this[r](1).value()[0]}}),Kn(["initial","rest"],function(n,t){var r="drop"+(t?"":"Right");Bn.prototype[n]=function(){return this[r](1)}}),Kn(["pluck","where"],function(n,t){var r=t?"filter":"map",e=t?wt:Te;Bn.prototype[n]=function(n){return this[r](e(n)); + +}}),Bn.prototype.compact=function(){return this.filter(Re)},Bn.prototype.reject=function(n,t){return n=dr(n,t,1),this.filter(function(t){return!n(t)})},Bn.prototype.slice=function(n,t){n=null==n?0:+n||0;var r=this;return 0>n?r=this.takeRight(-n):n&&(r=this.drop(n)),t!==w&&(t=+t||0,r=0>t?r.dropRight(-t):r.take(t-n)),r},Bn.prototype.toArray=function(){return this.drop(0)},ht(Bn.prototype,function(n,t){var r=$n[t];if(r){var e=/^(?:filter|map|reject)|While$/.test(t),u=/^(?:first|last)$/.test(t);$n.prototype[t]=function(){ +function t(n){return n=[n],fu.apply(n,o),r.apply($n,n)}var o=arguments,i=this.__chain__,f=this.__wrapped__,a=!!this.__actions__.length,c=f instanceof Bn,l=o[0],s=c||To(f);return s&&e&&typeof l=="function"&&1!=l.length&&(c=s=false),c=c&&!a,u&&!i?c?n.call(f):r.call($n,this.value()):s?(f=n.apply(c?f:new Bn(this),o),u||!a&&!f.__actions__||(f.__actions__||(f.__actions__=[])).push({func:Jr,args:[t],thisArg:$n}),new zn(f,i)):this.thru(t)}}}),Kn("concat join pop push replace shift sort splice split unshift".split(" "),function(n){ +var t=(/^(?:replace|split)$/.test(n)?Ve:qe)[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:join|pop|replace|shift)$/.test(n);$n.prototype[n]=function(){var n=arguments;return e&&!this.__chain__?t.apply(this.value(),n):this[r](function(r){return t.apply(r,n)})}}),ht(Bn.prototype,function(n,t){var r=$n[t];if(r){var e=r.name;(Nu[e]||(Nu[e]=[])).push({name:t,func:r})}}),Nu[cr(null,A).name]=[{name:"wrapper",func:null}],Bn.prototype.clone=function(){var n=this.__actions__,t=this.__iteratees__,r=this.__views__,e=new Bn(this.__wrapped__); + +return e.__actions__=n?qn(n):null,e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=t?qn(t):null,e.__takeCount__=this.__takeCount__,e.__views__=r?qn(r):null,e},Bn.prototype.reverse=function(){if(this.__filtered__){var n=new Bn(this);n.__dir__=-1,n.__filtered__=true}else n=this.clone(),n.__dir__*=-1;return n},Bn.prototype.value=function(){var n=this.__wrapped__.value();if(!To(n))return Ft(n,this.__actions__);var t,r=this.__dir__,e=0>r;t=n.length;for(var u=this.__views__,o=0,i=-1,f=u?u.length:0;++ip.index:u=_:!h(s))))continue n}else if(p=h(s), +_==$)s=p;else if(!p){if(_==F)continue n;break n}}c[a++]=s}return c},$n.prototype.chain=function(){return Gr(this)},$n.prototype.commit=function(){return new zn(this.value(),this.__chain__)},$n.prototype.plant=function(n){for(var t,r=this;r instanceof Ln;){var e=Lr(r);t?u.__wrapped__=e:t=e;var u=e,r=r.__wrapped__}return u.__wrapped__=n,t},$n.prototype.reverse=function(){var n=this.__wrapped__;return n instanceof Bn?(this.__actions__.length&&(n=new Bn(this)),new zn(n.reverse(),this.__chain__)):this.thru(function(n){ +return n.reverse()})},$n.prototype.toString=function(){return this.value()+""},$n.prototype.run=$n.prototype.toJSON=$n.prototype.valueOf=$n.prototype.value=function(){return Ft(this.__wrapped__,this.__actions__)},$n.prototype.collect=$n.prototype.map,$n.prototype.head=$n.prototype.first,$n.prototype.select=$n.prototype.filter,$n.prototype.tail=$n.prototype.rest,$n}var w,b="3.8.0",x=1,A=2,j=4,k=8,O=16,E=32,I=64,R=128,C=256,W=30,S="...",T=150,U=16,N=0,F=1,$=2,L="Expected a function",z="__lodash_placeholder__",B="[object Arguments]",M="[object Array]",D="[object Boolean]",P="[object Date]",q="[object Error]",K="[object Function]",V="[object Number]",Y="[object Object]",Z="[object RegExp]",G="[object String]",J="[object ArrayBuffer]",X="[object Float32Array]",H="[object Float64Array]",Q="[object Int8Array]",nn="[object Int16Array]",tn="[object Int32Array]",rn="[object Uint8Array]",en="[object Uint8ClampedArray]",un="[object Uint16Array]",on="[object Uint32Array]",fn=/\b__p\+='';/g,an=/\b(__p\+=)''\+/g,cn=/(__e\(.*?\)|\b__t\))\+'';/g,ln=/&(?:amp|lt|gt|quot|#39|#96);/g,sn=/[&<>"'`]/g,pn=RegExp(ln.source),hn=RegExp(sn.source),_n=/<%-([\s\S]+?)%>/g,vn=/<%([\s\S]+?)%>/g,gn=/<%=([\s\S]+?)%>/g,yn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\n\\]|\\.)*?\1)\]/,dn=/^\w*$/,mn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g,wn=/[.*+?^${}()|[\]\/\\]/g,bn=RegExp(wn.source),xn=/[\u0300-\u036f\ufe20-\ufe23]/g,An=/\\(\\)?/g,jn=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,kn=/\w*$/,On=/^0[xX]/,En=/^\[object .+?Constructor\]$/,In=/[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g,Rn=/($^)/,Cn=/['\n\r\u2028\u2029\\]/g,Wn=RegExp("[A-Z\\xc0-\\xd6\\xd8-\\xde]+(?=[A-Z\\xc0-\\xd6\\xd8-\\xde][a-z\\xdf-\\xf6\\xf8-\\xff]+)|[A-Z\\xc0-\\xd6\\xd8-\\xde]?[a-z\\xdf-\\xf6\\xf8-\\xff]+|[A-Z\\xc0-\\xd6\\xd8-\\xde]+|[0-9]+","g"),Sn=" \t\x0b\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000",Tn="Array ArrayBuffer Date Error Float32Array Float64Array Function Int8Array Int16Array Int32Array Math Number Object RegExp Set String _ clearTimeout document isFinite parseInt setTimeout TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap window".split(" "),Un={}; + +Un[X]=Un[H]=Un[Q]=Un[nn]=Un[tn]=Un[rn]=Un[en]=Un[un]=Un[on]=true,Un[B]=Un[M]=Un[J]=Un[D]=Un[P]=Un[q]=Un[K]=Un["[object Map]"]=Un[V]=Un[Y]=Un[Z]=Un["[object Set]"]=Un[G]=Un["[object WeakMap]"]=false;var Nn={};Nn[B]=Nn[M]=Nn[J]=Nn[D]=Nn[P]=Nn[X]=Nn[H]=Nn[Q]=Nn[nn]=Nn[tn]=Nn[V]=Nn[Y]=Nn[Z]=Nn[G]=Nn[rn]=Nn[en]=Nn[un]=Nn[on]=true,Nn[q]=Nn[K]=Nn["[object Map]"]=Nn["[object Set]"]=Nn["[object WeakMap]"]=false;var Fn={leading:false,maxWait:0,trailing:false},$n={"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A", +"\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I","\xcd":"I","\xce":"I","\xcf":"I","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xf9":"u","\xfa":"u", +"\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss"},Ln={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},zn={"&":"&","<":"<",">":">",""":'"',"'":"'","`":"`"},Bn={"function":true,object:true},Mn={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Dn=Bn[typeof exports]&&exports&&!exports.nodeType&&exports,Pn=Bn[typeof module]&&module&&!module.nodeType&&module,qn=Bn[typeof self]&&self&&self.Object&&self,Kn=Bn[typeof window]&&window&&window.Object&&window,Vn=Pn&&Pn.exports===Dn&&Dn,Yn=Dn&&Pn&&typeof global=="object"&&global&&global.Object&&global||Kn!==(this&&this.window)&&Kn||qn||this,Zn=m(); + +typeof define=="function"&&typeof define.amd=="object"&&define.amd?(Yn._=Zn, define(function(){return Zn})):Dn&&Pn?Vn?(Pn.exports=Zn)._=Zn:Dn._=Zn:Yn._=Zn}).call(this); \ No newline at end of file From 7332bd5104d3124539d5f53968dfef8839e7fd8f Mon Sep 17 00:00:00 2001 From: Nicolas Hart Date: Fri, 1 May 2015 17:48:57 +0200 Subject: [PATCH 90/90] add monitor plugin --- glances/outputs/static/css/style.css | 6 ++ .../html/components/monitor_process.html | 4 + .../outputs/static/html/plugins/monitor.html | 3 + glances/outputs/static/html/stats.html | 6 +- glances/outputs/static/js/directives.js | 78 +++++++++++++++++++ glances/outputs/static/js/stats_controller.js | 38 --------- 6 files changed, 94 insertions(+), 41 deletions(-) create mode 100644 glances/outputs/static/html/components/monitor_process.html create mode 100644 glances/outputs/static/html/plugins/monitor.html create mode 100644 glances/outputs/static/js/directives.js diff --git a/glances/outputs/static/css/style.css b/glances/outputs/static/css/style.css index 448eb031..4bb9e6f8 100644 --- a/glances/outputs/static/css/style.css +++ b/glances/outputs/static/css/style.css @@ -95,6 +95,12 @@ body { padding: 0px 5px 0px 5px; white-space: nowrap; } +gl-monitor-list { + display: block; +} +gl-monitor-list .table-cell { + text-align: left; +} /* Loading page */ #loading-page .glances-logo { diff --git a/glances/outputs/static/html/components/monitor_process.html b/glances/outputs/static/html/components/monitor_process.html new file mode 100644 index 00000000..ec883040 --- /dev/null +++ b/glances/outputs/static/html/components/monitor_process.html @@ -0,0 +1,4 @@ +
{{ process.description }}
+
{{ process.count > 1 ? process.count : '' }}
+
{{ process.count > 0 ? 'RUNNING' : 'NOT RUNNING' }}
+
{{ process.result }}
diff --git a/glances/outputs/static/html/plugins/monitor.html b/glances/outputs/static/html/plugins/monitor.html new file mode 100644 index 00000000..01ded842 --- /dev/null +++ b/glances/outputs/static/html/plugins/monitor.html @@ -0,0 +1,3 @@ +
+ +
diff --git a/glances/outputs/static/html/stats.html b/glances/outputs/static/html/stats.html index e620342e..6d5f64b7 100644 --- a/glances/outputs/static/html/stats.html +++ b/glances/outputs/static/html/stats.html @@ -53,11 +53,11 @@
-
-
+
+ +
-
diff --git a/glances/outputs/static/js/directives.js b/glances/outputs/static/js/directives.js new file mode 100644 index 00000000..d0f48d35 --- /dev/null +++ b/glances/outputs/static/js/directives.js @@ -0,0 +1,78 @@ +glancesApp.directive("sortableTh", function() { + return { + restrict: 'A', + scope: { + sorter: '=' + }, + link: function (scope, element, attrs) { + + scope.$watch(function() { + return scope.sorter.column; + }, function(newValue, oldValue) { + + if (angular.isArray(newValue)) { + if (newValue.indexOf(attrs.column) !== -1) { + element.addClass('sort'); + } else { + element.removeClass('sort'); + } + } else { + if (attrs.column === newValue) { + element.addClass('sort'); + } else { + element.removeClass('sort'); + } + } + + }); + + element.on('click', function() { + + scope.sorter.column = attrs.column; + + scope.$apply(); + }); + } + }; +}); + +glancesApp.directive("glMonitorList", function() { + return { + restrict: 'AE', + scope: { + processes: '=' + }, + templateUrl: 'plugins/monitor.html', + controller: function() { + + } + } +}) + +glancesApp.directive("glMonitorProcess", function() { + return { + restrict: 'AE', + require: "^glMonitorList", + templateUrl: 'components/monitor_process.html', + scope: { + process: '=' + }, + link: function(scope, element, attrs) { + + count = scope.process.count; + countMin = scope.process.countmin; + countMax = scope.process.countmax; + + if (count > 0) { + if ((countMin == null || count >= countMin) && (countMax == null || count <= countMax)) { + scope.descriptionClass = 'ok'; + } else { + scope.descriptionClass = 'careful'; + } + } else { + scope.descriptionClass = countMin == null ? 'ok' : 'critical'; + } + + } + } +}); diff --git a/glances/outputs/static/js/stats_controller.js b/glances/outputs/static/js/stats_controller.js index f894a79c..569d265f 100644 --- a/glances/outputs/static/js/stats_controller.js +++ b/glances/outputs/static/js/stats_controller.js @@ -268,42 +268,4 @@ glancesApp.controller('statsController', function($scope, $http, $interval, $q, // not available } } -}) - -.directive("sortableTh", function() { - return { - restrict: 'A', - scope: { - sorter: '=' - }, - link: function (scope, element, attrs) { - - scope.$watch(function() { - return scope.sorter.column; - }, function(newValue, oldValue) { - - if (angular.isArray(newValue)) { - if (newValue.indexOf(attrs.column) !== -1) { - element.addClass('sort'); - } else { - element.removeClass('sort'); - } - } else { - if (attrs.column === newValue) { - element.addClass('sort'); - } else { - element.removeClass('sort'); - } - } - - }); - - element.on('click', function() { - - scope.sorter.column = attrs.column; - - scope.$apply(); - }); - } - }; });