50 lines
1.3 KiB
JavaScript
50 lines
1.3 KiB
JavaScript
|
/**
|
||
|
* An element which displays charts and graphs representing the current installation of the
|
||
|
* application. This control requires superuser access and *must be disabled when not visible*.
|
||
|
*/
|
||
|
angular.module('quay').directive('psUsageGraph', function () {
|
||
|
var directiveDefinitionObject = {
|
||
|
priority: 0,
|
||
|
templateUrl: '/static/directives/ps-usage-graph.html',
|
||
|
replace: false,
|
||
|
transclude: false,
|
||
|
restrict: 'C',
|
||
|
scope: {
|
||
|
'isEnabled': '=isEnabled'
|
||
|
},
|
||
|
controller: function($scope, $element) {
|
||
|
$scope.counter = -1;
|
||
|
$scope.data = null;
|
||
|
|
||
|
var source = null;
|
||
|
|
||
|
var connect = function() {
|
||
|
if (source) { return; }
|
||
|
source = new EventSource('/realtime/ps');
|
||
|
source.onmessage = function(e) {
|
||
|
$scope.$apply(function() {
|
||
|
$scope.counter++;
|
||
|
$scope.data = JSON.parse(e.data);
|
||
|
});
|
||
|
};
|
||
|
};
|
||
|
|
||
|
var disconnect = function() {
|
||
|
if (!source) { return; }
|
||
|
source.close();
|
||
|
source = null;
|
||
|
};
|
||
|
|
||
|
$scope.$watch('isEnabled', function(value) {
|
||
|
if (value) {
|
||
|
connect();
|
||
|
} else {
|
||
|
disconnect();
|
||
|
}
|
||
|
});
|
||
|
|
||
|
$scope.$on("$destroy", disconnect);
|
||
|
}
|
||
|
};
|
||
|
return directiveDefinitionObject;
|
||
|
});
|