blob: 88a0f959931ef792ea3426ba727882cccdc064b9 [file] [log] [blame]
Matteo Scandolo896bb7b2016-05-06 14:10:11 -07001'use strict';
2
3angular.module('xos.serviceGrid', [
4 'ngResource',
5 'ngCookies',
6 'ui.router',
7 'xos.helpers'
8])
9.config(($stateProvider) => {
10 $stateProvider
11 .state('serviceGrid', {
12 url: '/',
13 template: '<service-grid></service-grid>'
14 })
15 .state('serviceGraph', {
16 url: '/graph',
17 template: '<service-graph></service-graph>'
18 });
19})
20.config(function($httpProvider){
21 $httpProvider.interceptors.push('NoHyperlinks');
22})
23.directive('serviceGrid', function(){
24 return {
25 restrict: 'E',
26 scope: {},
27 bindToController: true,
28 controllerAs: 'vm',
29 templateUrl: 'templates/service-grid.tpl.html',
30 controller: function(Services, _){
31
32 this.tableConfig = {
33 columns: [
34 {
35 label: 'Status',
36 prop: 'status',
Matteo Scandolocb8d9b32016-05-13 10:39:38 -070037 type: 'icon',
38 formatter: item => {
39 let status = parseInt(item.backend_status.match(/^[0-9]/)[0]);
40 switch(status){
41 case 0:
42 return 'time';
43 case 1:
44 return 'ok';
45 case 2:
46 return 'remove';
47 }
48 }
Matteo Scandolo896bb7b2016-05-06 14:10:11 -070049 },
50 {
51 label: 'Name',
52 prop: 'name',
53 link: item => `${item.view_url.replace(/\$[a-z]+\$/, item.id)}`
54 },
55 {
56 label: 'Kind',
57 prop: 'kind'
58 },
59 {
60 label: 'Enabled',
61 prop: 'enabled',
62 type: 'boolean'
63 }
64 ],
65 filter: 'field',
Matteo Scandolocb8d9b32016-05-13 10:39:38 -070066 order: {
67 field: 'name'
68 }
Matteo Scandolo896bb7b2016-05-06 14:10:11 -070069 };
70
71 // retrieving user list
72 Services.query().$promise
73 .then((services) => {
74 this.services = _.map(services, s => {
75 // parse backend_status string in a boolean for display
Matteo Scandolo0a280042016-05-13 09:26:54 -070076 // NOTE they are not boolean:
77 // - start with 0 = provisioning
78 // - start with 1 = good
79 // - start with 2 = error
Matteo Scandolo896bb7b2016-05-06 14:10:11 -070080 s.status = parseInt(s.backend_status.match(/^[0-9]/)[0]) === 0 ? false : true;
81 return s;
82 })
83 })
84 .catch((e) => {
85 throw new Error(e);
86 });
87 }
88 };
89});