Yangman - precheck patharray, fix modal z-index and so on
[dlux.git] / modules / yangman-resources / src / main / resources / yangman / models / history-request.model.js
1 define([], function (){
2     'use strict';
3
4     /**
5      * Base history request object
6      * @constructor
7      * @param PathUtilsService
8      * @param YangUtilsService
9      * @param ParsingJsonService
10      */
11     function HistoryRequestModel(PathUtilsService, YangUtilsService, ParsingJsonService){
12         var self = this;
13
14         // properties
15         self.collection = '';
16         self.method = '';
17         self.name = '';
18         self.path = '';
19         self.receivedData = null;
20         self.selected = false;
21         self.sentData = null;
22         self.status = '';
23         self.timestamp = '';
24         self.responseStatus = '';
25         self.responseStatusText = '';
26         self.responseTime = '';
27
28         // functions
29         self.clone = clone;
30         self.toJSON = toJSON;
31         self.getLastPathDataElemName = getLastPathDataElemName;
32         self.setDataForView = setDataForView;
33         self.setData = setData;
34         self.setExecutionData = setExecutionData;
35
36         /**
37          * Grouped setter
38          *
39          * @param sentData
40          * @param receivedData
41          * @param status
42          * @param path
43          * @param operation
44          * @param name
45          * @param collection
46          * @param timestamp
47          * @param responseStatus
48          * @param responseTime
49          * @param responseStatusText
50          */
51         function setData(sentData, receivedData, status, path, operation, name, collection, timestamp, responseStatus, responseStatusText, responseTime) {
52
53             self.sentData = sentData === null || sentData === undefined || $.isEmptyObject(sentData) ? null : sentData;
54             self.name = name;
55             self.path = path;
56             self.method = operation;
57             self.status = status;
58             self.receivedData = receivedData === null || receivedData === undefined || $.isEmptyObject(receivedData) ?
59                 null : receivedData;
60             self.collection = collection;
61             self.timestamp = timestamp;
62             self.responseStatus = responseStatus;
63             self.responseStatusText = responseStatusText;
64             self.responseTime = responseTime;
65         }
66
67         /**
68          * Set data which might be available after executing request
69          * @param sentData
70          * @param receivedData
71          * @param status - http status from response header
72          * @param responseStatus
73          * @param responseTime
74          * @param responseStatusText
75          */
76         function setExecutionData(sentData, receivedData, status, responseStatus, responseStatusText, responseTime) {
77             self.sentData = sentData;
78             self.receivedData = receivedData;
79             self.status = status ? (status > 199 && status < 205 ? 'success' : 'erorr') : '';
80             self.responseStatus = responseStatus;
81             self.responseStatusText = responseStatusText;
82             self.responseTime = responseTime;
83         }
84
85
86         /**
87          *
88          * @returns {{sentData: (null|*), receivedData: (null|*), path: (string|*), collection: (string|*),
89          * method: (string|*), status: (string|*), name: (string|*), timestamp: (string|*), responseStatus: (string|*),
90          * responseTime: (string|*)}}
91          */
92         function toJSON() {
93             var obj = {
94                 sentData: self.sentData,
95                 receivedData: self.receivedData,
96                 path: self.path,
97                 collection: self.collection,
98                 method: self.method,
99                 status: self.status,
100                 name: self.name,
101                 timestamp: self.timestamp,
102                 responseStatus: self.responseStatus,
103                 responseStatusText: self.responseStatusText,
104                 responseTime: self.responseTime,
105             };
106
107             return obj;
108         }
109
110
111
112         /**
113          *
114          * @returns {*}
115          */
116         function getLastPathDataElemName() {
117             var pathArray = self.path.split(':');
118             return pathArray[pathArray.length - 1];
119         }
120
121         /**
122          *
123          * @param data
124          * @returns {string}
125          */
126         function setDataForView(data){
127             var newData = {},
128                 parsedData = '';
129
130             angular.copy(data, newData);
131             parsedData = JSON.stringify(
132                 YangUtilsService.stripAngularGarbage(newData, self.getLastPathDataElemName()), null, 4);
133
134             return parsedData;
135         }
136
137
138         /**
139          *
140          * @returns {HistoryRequest}
141          */
142         function clone() {
143             /**
144              *
145              * @type {HistoryRequestModel}
146              */
147             var result = new HistoryRequestModel(PathUtilsService, YangUtilsService, ParsingJsonService);
148             result.setData(self.sentData, self.receivedData, self.status, self.path, self.method, self.name,
149                 self.collection, self.timestamp, self.responseStatus, self.responseStatusText, self.responseTime);
150             return result;
151         }
152
153     }
154
155     return HistoryRequestModel;
156 });