frontend/app/scripts/modules/dashboard/controllers/dashboardCtrl.js (129 lines of code) (raw):
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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';
angular.module('serviceCenter.dashboard', [])
.controller('dashboardController', ['$scope', '$state', 'apiConstant', 'httpService', '$q', '$interval', function($scope, $state, apiConstant, httpService, $q, $interval) {
$scope.getAllServices = function() {
$(".loader").show();
$scope.dashboardInfo = [{
count: 0,
title: "services",
iconName: "fa fa-cog"
},
{
count: 0,
title: "instances",
iconName: "fa fa-cogs"
},
{
count: 0,
title: "providers",
iconName: "fa fa-arrow-circle-right"
},
{
count: 0,
title: "consumers",
iconName: "fa fa-arrow-circle-left"
}
];
$scope.instanceStat = [{
count: 0,
title: "starting",
percent: 0,
status: "STARTING"
},
{
count: 0,
title: "testing",
percent: 0,
status: "TESTING"
},
{
count: 0,
title: "up",
percent: 0,
status: "UP"
},
{
count: 0,
title: "outOfService",
percent: 0,
status: "OUTOFSERVICE"
},
{
count: 0,
title: "down",
percent: 0,
status: "DOWN"
}
];
$scope.runningServices = [];
$scope.stoppedServices = [];
$scope.startingServices = [];
$scope.outOfServiceServices = [];
$scope.testingServices = [];
$scope.totalProviders = [];
$scope.totalConsumers = [];
$scope.services = [];
$scope.instances = [];
var url = apiConstant.api.allServices.url;
var method = apiConstant.api.allServices.method;
httpService.apiRequest(url, method, null, null).then(function(response) {
$(".loader").hide();
if (response && response.data && response.data.allServicesDetail) {
$scope.dashboardInfo[0].count = response.data.allServicesDetail.length;
response.data.allServicesDetail.forEach(function(services) {
$scope.services.push(services.microService);
if (services.instances) {
services.instances.forEach(function(instance) {
instance.serviceName = services.microService.serviceName;
instance.appId = services.microService.appId;
$scope.instances.push(instance);
if (instance.status == "STARTING") {
$scope.startingServices.push(services);
}
if (instance.status == "UP") {
$scope.runningServices.push(services);
}
if (instance.status == "DOWN") {
$scope.stoppedServices.push(services);
}
if (instance.status == "OUTOFSERVICE") {
$scope.outOfServiceServices.push(services);
}
if (instance.status == "TESTING") {
$scope.testingServices.push(services);
}
});
$scope.dashboardInfo[1].count = $scope.dashboardInfo[1].count + services.instances.length;
}
if (services.providers) {
services.providers.forEach(function(provider) {
var isProvider = 0;
for (var p = 0; p < $scope.totalProviders.length; p++) {
if (provider.serviceId == $scope.totalProviders[p]) {
isProvider = 1;
}
}
if (isProvider == 0) {
$scope.totalProviders.push(provider.serviceId);
}
})
}
if (services.consumers) {
services.consumers.forEach(function(consumer) {
var isConsumer = 0;
for (var c = 0; c < $scope.totalConsumers.length; c++) {
if (consumer.serviceId == $scope.totalConsumers[c]) {
isConsumer = 1;
}
}
if (isConsumer == 0) {
$scope.totalConsumers.push(consumer.serviceId);
}
})
}
});
$scope.instanceStat[0].percent = Math.round($scope.startingServices.length / $scope.dashboardInfo[1].count) * 100;
$scope.instanceStat[1].percent = Math.round($scope.testingServices.length / $scope.dashboardInfo[1].count) * 100;
$scope.instanceStat[2].percent = Math.round($scope.runningServices.length / $scope.dashboardInfo[1].count) * 100;
$scope.instanceStat[3].percent = Math.round($scope.outOfServiceServices.length / $scope.dashboardInfo[1].count) * 100;
$scope.instanceStat[4].percent = Math.round($scope.stoppedServices.length / $scope.dashboardInfo[1].count) * 100;
$scope.instanceStat[0].count = $scope.startingServices.length;
$scope.instanceStat[1].count = $scope.testingServices.length;
$scope.instanceStat[2].count = $scope.runningServices.length;
$scope.instanceStat[3].count = $scope.outOfServiceServices.length;
$scope.instanceStat[4].count = $scope.stoppedServices.length;
$scope.dashboardInfo[2].count = $scope.totalProviders.length;
$scope.dashboardInfo[3].count = $scope.totalConsumers.length;
}
}, function(error) {
$(".loader").hide();
});
};
$scope.goToServices = function(status) {
$state.go("sc.instances", {
status: status
});
};
$scope.getAllServices();
var dashboardRefresh = $interval(function(){
$scope.getAllServices();
}, 10000);
$scope.$on('$destroy', function(){
$interval.cancel(dashboardRefresh);
})
}]);