diff --git a/conf/glances.conf b/conf/glances.conf index 89b0d28b..125115a3 100644 --- a/conf/glances.conf +++ b/conf/glances.conf @@ -16,6 +16,8 @@ history_size=28800 [outputs] # Theme name for the Curses interface: black or white curse_theme=black +# Limit the number of processes to display in the WebUI +max_processes_display=30 ############################################################################## # plugins diff --git a/glances/outputs/static/html/plugins/processlist.html b/glances/outputs/static/html/plugins/processlist.html index 162cf2c1..8dba824f 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/app.js b/glances/outputs/static/js/app.js index abb111e2..0730b378 100644 --- a/glances/outputs/static/js/app.js +++ b/glances/outputs/static/js/app.js @@ -8,6 +8,9 @@ var glancesApp = angular.module('glancesApp', ['ngRoute']) help: function(GlancesStats) { return GlancesStats.getHelp(); }, + config: function(GlancesStats) { + return GlancesStats.getConfig(); + }, arguments: function(GlancesStats, $route) { return GlancesStats.getArguments().then(function(arguments) { var refreshTimeRoute = parseInt($route.current.params.refresh_time); diff --git a/glances/outputs/static/js/controllers.js b/glances/outputs/static/js/controllers.js index 691e31cd..7b2812ad 100644 --- a/glances/outputs/static/js/controllers.js +++ b/glances/outputs/static/js/controllers.js @@ -1,4 +1,4 @@ -glancesApp.controller('statsController', function ($scope, $rootScope, $interval, GlancesStats, help, arguments, favicoService) { +glancesApp.controller('statsController', function ($scope, $rootScope, $interval, GlancesStats, help, config, arguments, favicoService) { $scope.help = help; $scope.arguments = arguments; diff --git a/glances/outputs/static/js/services/core/stats.js b/glances/outputs/static/js/services/core/stats.js index 117b8762..8239b3e0 100644 --- a/glances/outputs/static/js/services/core/stats.js +++ b/glances/outputs/static/js/services/core/stats.js @@ -1,5 +1,5 @@ glancesApp.service('GlancesStats', function($http, $injector, $q, GlancesPlugin) { - var _stats = [], _views = [], _limits = []; + var _stats = [], _views = [], _limits = [], _config = {}; var _plugins = { 'alert': 'GlancesPluginAlert', @@ -69,6 +69,14 @@ glancesApp.service('GlancesStats', function($http, $injector, $q, GlancesPlugin) }); }; + this.getConfig = function() { + return $http.get('/api/2/config').then(function (response) { + _config = response.data; + + return _config; + }); + }; + this.getArguments = function() { return $http.get('/api/2/args').then(function (response) { return response.data; @@ -83,7 +91,7 @@ glancesApp.service('GlancesStats', function($http, $injector, $q, GlancesPlugin) } plugin = $injector.get(plugin); - plugin.setData(_stats, _views); + plugin.setData(_stats, _views, _config); return plugin; }; diff --git a/glances/outputs/static/js/services/plugins/processlist.js b/glances/outputs/static/js/services/plugins/processlist.js index d6ef0d7f..51dd0e09 100644 --- a/glances/outputs/static/js/services/plugins/processlist.js +++ b/glances/outputs/static/js/services/plugins/processlist.js @@ -1,11 +1,13 @@ glancesApp.service('GlancesPluginProcessList', function($filter, GlancesPlugin) { var _pluginName = "processlist"; - var _ioReadWritePresent = false; + var _maxProcessesToDisplay = undefined; this.processes = []; + this.ioReadWritePresent = false; - this.setData = function(data, views) { + this.setData = function(data, views, config) { this.processes = []; this.ioReadWritePresent = false; + _maxProcessesToDisplay = config.outputs !== undefined ? config.outputs.max_processes_display : undefined;; for (var i = 0; i < data[_pluginName].length; i++) { var process = data[_pluginName][i]; @@ -51,4 +53,8 @@ glancesApp.service('GlancesPluginProcessList', function($filter, GlancesPlugin) this.getMemoryPercentAlert = function(process) { return GlancesPlugin.getAlert(_pluginName, 'processlist_mem_', process.cpu_percent); }; + + this.getLimit = function() { + return _maxProcessesToDisplay; + }; }); diff --git a/glances/outputs/static/package.json b/glances/outputs/static/package.json index b5247938..94e890a8 100644 --- a/glances/outputs/static/package.json +++ b/glances/outputs/static/package.json @@ -2,7 +2,7 @@ "private": true, "dependencies": {}, "devDependencies": { - "bower": "^1.7.9", + "bower": "^1.8.0", "del": "^2.2.1", "gulp": "^3.9.1", "gulp-angular-templatecache": "^2.0.0", diff --git a/glances/outputs/static/public/js/main.min.js b/glances/outputs/static/public/js/main.min.js index cc1e536a..4b9f9e27 100644 --- a/glances/outputs/static/public/js/main.min.js +++ b/glances/outputs/static/public/js/main.min.js @@ -8,6 +8,9 @@ var glancesApp = angular.module('glancesApp', ['ngRoute']) help: ["GlancesStats", function(GlancesStats) { return GlancesStats.getHelp(); }], + config: ["GlancesStats", function(GlancesStats) { + return GlancesStats.getConfig(); + }], arguments: ["GlancesStats", "$route", function(GlancesStats, $route) { return GlancesStats.getArguments().then(function(arguments) { var refreshTimeRoute = parseInt($route.current.params.refresh_time); @@ -27,7 +30,7 @@ var glancesApp = angular.module('glancesApp', ['ngRoute']) $rootScope.title = "Glances"; }]); -glancesApp.controller('statsController', ["$scope", "$rootScope", "$interval", "GlancesStats", "help", "arguments", "favicoService", function ($scope, $rootScope, $interval, GlancesStats, help, arguments, favicoService) { +glancesApp.controller('statsController', ["$scope", "$rootScope", "$interval", "GlancesStats", "help", "config", "arguments", "favicoService", function ($scope, $rootScope, $interval, GlancesStats, help, config, arguments, favicoService) { $scope.help = help; $scope.arguments = arguments; @@ -413,7 +416,7 @@ var keycodes = { 'r' : '82', 'q' : '81', 'A' : '65', - 'R' : '82', + 'Q' : '81' } glancesApp.service('favicoService', function() { @@ -432,7 +435,7 @@ glancesApp.service('favicoService', function() { }); glancesApp.service('GlancesStats', ["$http", "$injector", "$q", "GlancesPlugin", function($http, $injector, $q, GlancesPlugin) { - var _stats = [], _views = [], _limits = []; + var _stats = [], _views = [], _limits = [], _config = {}; var _plugins = { 'alert': 'GlancesPluginAlert', @@ -502,6 +505,14 @@ glancesApp.service('GlancesStats', ["$http", "$injector", "$q", "GlancesPlugin", }); }; + this.getConfig = function() { + return $http.get('/api/2/config').then(function (response) { + _config = response.data; + + return _config; + }); + }; + this.getArguments = function() { return $http.get('/api/2/args').then(function (response) { return response.data; @@ -516,7 +527,7 @@ glancesApp.service('GlancesStats', ["$http", "$injector", "$q", "GlancesPlugin", } plugin = $injector.get(plugin); - plugin.setData(_stats, _views); + plugin.setData(_stats, _views, _config); return plugin; }; @@ -1112,12 +1123,14 @@ glancesApp.service('GlancesPluginProcessCount', function() { glancesApp.service('GlancesPluginProcessList', ["$filter", "GlancesPlugin", function($filter, GlancesPlugin) { var _pluginName = "processlist"; - var _ioReadWritePresent = false; + var _maxProcessesToDisplay = undefined; this.processes = []; + this.ioReadWritePresent = false; - this.setData = function(data, views) { + this.setData = function(data, views, config) { this.processes = []; this.ioReadWritePresent = false; + _maxProcessesToDisplay = config.outputs !== undefined ? config.outputs.max_processes_display : undefined;; for (var i = 0; i < data[_pluginName].length; i++) { var process = data[_pluginName][i]; @@ -1163,6 +1176,10 @@ glancesApp.service('GlancesPluginProcessList', ["$filter", "GlancesPlugin", func this.getMemoryPercentAlert = function(process) { return GlancesPlugin.getAlert(_pluginName, 'processlist_mem_', process.cpu_percent); }; + + this.getLimit = function() { + return _maxProcessesToDisplay; + }; }]); glancesApp.service('GlancesPluginQuicklook', function() { diff --git a/glances/outputs/static/public/js/templates.min.js b/glances/outputs/static/public/js/templates.min.js index ab588b58..f91fcb8b 100644 --- a/glances/outputs/static/public/js/templates.min.js +++ b/glances/outputs/static/public/js/templates.min.js @@ -16,7 +16,7 @@ $templateCache.put('plugins/network.html','
\n
\n
\n
PER CPU
\n
{{ percpu.total }}%
\n
\n
\n
user:
\n
\n {{ percpu.user }}%\n
\n
\n
\n
system:
\n
\n {{ percpu.system }}%\n
\n
\n
\n
idle:
\n
{{ percpu.idle }}%
\n
\n
\n
iowait:
\n
\n {{ percpu.iowait }}%\n
\n
\n
\n
steal:
\n
\n {{ percpu.steal }}%\n
\n
\n
\n'); $templateCache.put('plugins/ports.html','
\n
{{(port.description ? port.description : port.host + \' \' + port.port) | min_size: 20}}
\n
\n
\n Scanning\n Timeout\n Open\n {{port.status * 1000.0 | number:0}}ms\n
\n
\n'); $templateCache.put('plugins/processcount.html','TASKS\n{{ statsProcessCount.total }} ({{ statsProcessCount.thread }} thr),\n{{ statsProcessCount.running }} run,\n{{ statsProcessCount.sleeping }} slp,\n{{ statsProcessCount.stopped }} oth\n sorted {{ sorter.auto ? \'automatically\' : \'\' }} by {{ sorter.getColumnLabel(sorter.column) }}, flat view\n'); -$templateCache.put('plugins/processlist.html','
\n
\n
CPU%
\n
MEM%
\n \n \n
PID
\n
USER
\n
NI
\n
S
\n \n \n \n
Command
\n
\n
\n
{{process.cpu_percent | number:1}}
\n
{{process.memory_percent | number:1}}
\n \n \n
{{process.pid}}
\n
{{process.username}}
\n
{{process.nice | exclamation}}
\n
{{process.status}}
\n \n \n \n
{{process.name}}
\n
{{process.cmdline}}
\n
\n
\n'); +$templateCache.put('plugins/processlist.html','
\n
\n
CPU%
\n
MEM%
\n \n \n
PID
\n
USER
\n
NI
\n
S
\n \n \n \n
Command
\n
\n
\n
{{process.cpu_percent | number:1}}
\n
{{process.memory_percent | number:1}}
\n \n \n
{{process.pid}}
\n
{{process.username}}
\n
{{process.nice | exclamation}}
\n
{{process.status}}
\n \n \n \n
{{process.name}}
\n
{{process.cmdline}}
\n
\n
\n'); $templateCache.put('plugins/quicklook.html','
\n {{ statsQuicklook.cpu_name }}\n
\n
\n
\n
CPU
\n
\n
\n
\n  \n
\n
\n
\n
\n {{ statsQuicklook.cpu }}%\n
\n
\n
\n
CPU{{ percpu.number }}
\n
\n
\n
\n  \n
\n
\n
\n
\n {{ percpu.total }}%\n
\n
\n
\n
MEM
\n
\n
\n
\n  \n
\n
\n
\n
\n {{ statsQuicklook.mem }}%\n
\n
\n
\n
SWAP
\n
\n
\n
\n  \n
\n
\n
\n
\n {{ statsQuicklook.swap }}%\n
\n
\n
\n'); $templateCache.put('plugins/raid.html','
\n
RAID disks
\n
Used
\n
Total
\n
\n
\n
\n {{ disk.type | uppercase }} {{ disk.name }}\n
\u2514\u2500 Degraded mode
\n
   \u2514\u2500 {{ disk.config }}
\n\n
\u2514\u2500 Status {{ disk.status }}
\n
\n    {{ $last ? \'\u2514\u2500\' : \'\u251C\u2500\' }} disk {{ component.number }}: {{ component.name }}\n
\n
\n
{{ disk.used }}
\n
{{ disk.available }}
\n
'); $templateCache.put('plugins/sensors.html','
\n
SENSORS
\n
\n\n
\n
{{ sensor.label }}
\n
{{ sensor.unit }}
\n
{{ sensor.value }}
\n
\n');