/* * Copyright 2014 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ 'use strict'; module.exports = function ($scope, $interval, application, MetricsHelper) { $scope.application = application; var start = Date.now(); $interval(function () { $scope.ticks = Date.now() - start; }, 1000); application.getInfo() .then(function (info) { $scope.info = info; }) .catch(function (error) { $scope.error = error; }); application.getHealth() .then(function (health) { $scope.health = health; }) .catch(function (health) { $scope.health = health; }); $scope.isHealthDetail = function (key, value) { return key !== 'status' && value !== null && (Array.isArray(value) || typeof value !== 'object'); }; $scope.isChildHealth = function (key, health) { return health !== null && !Array.isArray(health) && typeof health === 'object'; }; application.getMetrics() .then(function (metrics) { $scope.metrics = metrics; $scope.metrics['mem.used'] = $scope.metrics.mem - $scope.metrics['mem.free']; $scope.gcInfos = {}; $scope.datasources = {}; $scope.caches = {}; function createOrGet(map, key, factory) { return map[key] || (map[key] = factory()); } MetricsHelper.find(metrics, [/gc\.(.+)\.time/, /gc\.(.+)\.count/, /datasource\.(.+)\.active/, /datasource\.(.+)\.usage/, /cache\.(.+)\.size/, /cache\.(.+)\.miss\.ratio/, /cache\.(.+)\.hit\.ratio/ ], [function (metric, match, value) { createOrGet($scope.gcInfos, match[1], function () { return { time: 0, count: 0 }; }) .time = value; }, function (metric, match, value) { createOrGet($scope.gcInfos, match[1], function () { return { time: 0, count: 0 }; }) .count = value; }, function (metric, match, value) { $scope.hasDatasources = true; createOrGet($scope.datasources, match[1], function () { return { min: 0, max: 0, active: 0, usage: 0 }; }) .active = value; }, function (metric, match, value) { $scope.hasDatasources = true; createOrGet($scope.datasources, match[1], function () { return { min: 0, max: 0, active: 0, usage: 0 }; }) .usage = value; }, function (metric, match, value) { $scope.hasCaches = true; createOrGet($scope.caches, match[1], function () { return { size: 0, hitRatio: 0.0, missRatio: 0.0 }; }) .size = value; }, function (metric, match, value) { $scope.hasCaches = true; createOrGet($scope.caches, match[1], function () { return { size: 0, hitRatio: 0.0, missRatio: 0.0 }; }) .missRatio = value; }, function (metric, match, value) { $scope.hasCaches = true; createOrGet($scope.caches, match[1], function () { return { size: 0, hitRatio: 0.0, missRatio: 0.0 }; }) .hitRatio = value; } ]); }) .catch(function (error) { $scope.error = error; }); };