1/**
2 * data service
3 *
4 * @module app/common/services/dataService
5 * @exports dataService
6 * @name dataService
7
8 */
9
10window.angular && (function(angular) {
11  'use strict';
12
13  angular.module('app.common.services').service('dataService', [
14    'Constants',
15    function(Constants) {
16      this.server_health = Constants.SERVER_HEALTH.unknown;
17      this.server_state = 'Unreachable';
18      this.server_status = -2;
19      this.chassis_state = 'On';
20      this.LED_state = Constants.LED_STATE_TEXT.off;
21      this.last_updated = new Date();
22
23      this.loading = false;
24      this.server_unreachable = false;
25      this.loading_message = '';
26      this.showNavigation = false;
27      this.bodyStyle = {};
28      this.path = '';
29      this.sensorData = [];
30
31      this.hostname = '';
32      this.mac_address = '';
33      this.defaultgateway = '';
34      this.remote_window_active = false;
35
36      this.displayErrorModal = false;
37      this.errorModalDetails = {};
38
39      this.ignoreHttpError = false;
40      this.getServerId = function() {
41        return this.host.replace(/^https?\:\/\//ig, '');
42      };
43
44      this.reloadServerId = function() {
45        this.server_id = this.getServerId();
46      };
47
48      this.getHost = function() {
49        if (sessionStorage.getItem(
50                Constants.API_CREDENTIALS.host_storage_key) !== null) {
51          return sessionStorage.getItem(
52              Constants.API_CREDENTIALS.host_storage_key);
53        } else {
54          return Constants.API_CREDENTIALS.default_protocol + '://' +
55              window.location.hostname +
56              (window.location.port ? ':' + window.location.port : '');
57        }
58      };
59
60      this.setHost = function(hostWithPort) {
61        hostWithPort = hostWithPort.replace(/^https?\:\/\//ig, '');
62        var hostURL =
63            Constants.API_CREDENTIALS.default_protocol + '://' + hostWithPort;
64        sessionStorage.setItem(
65            Constants.API_CREDENTIALS.host_storage_key, hostURL);
66        this.host = hostURL;
67        this.reloadServerId();
68      };
69
70      this.getUser = function() {
71        return sessionStorage.getItem('LOGIN_ID');
72      };
73
74      this.host = this.getHost();
75      this.server_id = this.getServerId();
76
77      this.setNetworkInfo = function(data) {
78        this.hostname = data.hostname;
79        this.defaultgateway = data.defaultgateway;
80        this.mac_address = data.mac_address;
81      };
82
83      this.setPowerOnState = function() {
84        this.server_state = Constants.HOST_STATE_TEXT.on;
85        this.server_status = Constants.HOST_STATE.on;
86      };
87
88      this.setPowerOffState = function() {
89        this.server_state = Constants.HOST_STATE_TEXT.off;
90        this.server_status = Constants.HOST_STATE.off;
91      };
92
93      this.setErrorState = function() {
94        this.server_state = Constants.HOST_STATE_TEXT.error;
95        this.server_status = Constants.HOST_STATE.error;
96      };
97
98      this.setUnreachableState = function() {
99        this.server_state = Constants.HOST_STATE_TEXT.unreachable;
100        this.server_status = Constants.HOST_STATE.unreachable;
101      };
102
103      this.setRemoteWindowActive = function() {
104        this.remote_window_active = true;
105      };
106
107      this.setRemoteWindowInactive = function() {
108        this.remote_window_active = false;
109      };
110
111      this.updateServerHealth = function(logs) {
112        var criticals = logs.filter(function(item) {
113          return item.health_flags.critical == true;
114        });
115
116        if (criticals.length) {
117          this.server_health = Constants.SERVER_HEALTH.critical;
118          return;
119        }
120
121        var warnings = logs.filter(function(item) {
122          return item.health_flags.warning == true;
123        });
124
125        if (warnings.length) {
126          this.server_health = Constants.SERVER_HEALTH.warning;
127          return;
128        }
129
130        this.server_health = Constants.SERVER_HEALTH.good;
131      };
132
133      this.activateErrorModal = function(data) {
134        if (data && data.hasOwnProperty('title')) {
135          this.errorModalDetails.title = data.title;
136        } else {
137          this.errorModalDetails.title = Constants.MESSAGES.ERROR_MODAL.TITLE;
138        }
139
140        if (data && data.hasOwnProperty('description')) {
141          this.errorModalDetails.description = data.description;
142        } else {
143          this.errorModalDetails.description =
144              Constants.MESSAGES.ERROR_MODAL.DESCRIPTION;
145        }
146        this.displayErrorModal = true;
147      };
148
149      this.deactivateErrorModal = function() {
150        this.displayErrorModal = false;
151      };
152    }
153  ]);
154
155})(window.angular);
156