CLIENT GUI Framework
[vnfsdk/refrepo.git] / openo-portal / portal-performance / src / main / webapp / performance / js / alarmConds.js
1 /*\r
2  * Copyright 2016-2017, CMCC Technologies Co., Ltd.\r
3  *\r
4  * Licensed under the Apache License, Version 2.0 (the "License");\r
5  * you may not use this file except in compliance with the License.\r
6  * You may obtain a copy of the License at\r
7  *\r
8  *         http://www.apache.org/licenses/LICENSE-2.0\r
9  *\r
10  * Unless required by applicable law or agreed to in writing, software\r
11  * distributed under the License is distributed on an "AS IS" BASIS,\r
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13  * See the License for the specific language governing permissions and\r
14  * limitations under the License.\r
15  */\r
16 var AlarmConds = function () {\r
17 \r
18     return {\r
19 \r
20         parseActiveConds2JSon: function (conds) {\r
21             return this.parseConds2JSon(conds, 1);\r
22         },\r
23         parseHistoryConds2JSon: function (conds) {\r
24             return this.parseConds2JSon(conds, 2);\r
25         },\r
26 \r
27         /**\r
28          *  传入的条件数组说明:\r
29          *  每个条件都是一个对象,包含2个属性:type和data。type表示条件的类型,data是一个数组,每项都表示一个条件。\r
30          *  下面是支持的所有条件的说明:\r
31          *  1)网元\r
32          *      {\r
33                          *          type : 'Position',\r
34                          *          data : [{   //支持多个\r
35                          *               locationId : 'lId1',\r
36                          *               oid : 'oid1',\r
37                          *               isSelf : true //是否分组,true表示只包含自己,false表示分组\r
38                          *           }\r
39                          *          ]\r
40                          *       }\r
41          *  2)级别\r
42          *      {\r
43                          *          type : 'Severity',\r
44                          *          data : [{  //支持多个\r
45                          *               severity : 1 //1表示严重,2表示主要,3表示次要,4表示警告\r
46                          *           }\r
47                          *          ]\r
48                          *       }\r
49          *  3)确认状态\r
50          *      {\r
51                          *          type : 'AckState',\r
52                          *          data : [{  //支持多个\r
53                          *               ackState : 1 //1表示已确认,2表示未确认\r
54                          *           }\r
55                          *          ]\r
56                          *      }\r
57          *  4)可见性\r
58          *      {\r
59                          *          type : 'FilterState',\r
60                          *          data : [{  //支持多个\r
61                          *               filterState : 1 //1表示可见,0表示不可见\r
62                          *           }\r
63                          *          ]\r
64                          *       }\r
65          *  5)告警类型\r
66          *      {\r
67                          *          type : 'AlarmType',\r
68                          *          data : [{  //支持多个\r
69                          *               alarmType : 1 //0表示通信告警,1表示处理错误告警,2表示服务质量告警,3表示设备告警,4表示环境告警,5表示网管系统告警,6表示完整性告警,7表示可用性告警,8表示物理攻击告警,9表示安全攻击告警,10表示时限告警\r
70                          *           }\r
71                          *          ]\r
72                          *       }\r
73          *  6)告警码\r
74          *      {\r
75                          *          type : 'ProbableCause',\r
76                          *          data : [{  //支持多个\r
77                          *               systemType : 6,\r
78                          *               code : 1001\r
79                          *           }\r
80                          *          ]\r
81                          *       }\r
82          *  7)发生时间\r
83          *      {\r
84                          *          type : 'RaisedTime',\r
85                          *          data : [{  //支持一个\r
86                          *               mode : 0, //0表示区间,1表示最近\r
87                          *               start : 1399429229000, //mode为0时,表示开始时间,mode为1时,表示时间的毫秒值\r
88                          *               end : 1399515601000  //mode为0时,表示结束时间,mode为1时,表示时间的毫秒值\r
89                          *           }\r
90                          *          ]\r
91                          *       }\r
92          *  8)确认时间\r
93          *      {\r
94                          *          type : 'AckTime',\r
95                          *          data : [{  //支持一个\r
96                          *               mode : 0, //0表示区间,1表示最近\r
97                          *               start : 1399429229000, //mode为0时,表示开始时间,mode为1时,表示时间的毫秒值\r
98                          *               end : 1399515601000  //mode为0时,表示结束时间,mode为1时,表示时间的毫秒值\r
99                          *           }\r
100                          *          ]\r
101                          *       }\r
102          *  9)清除时间\r
103          *      {\r
104                          *          type : 'ClearedTime',\r
105                          *          data : [{  //支持一个\r
106                          *               mode : 0, //0表示区间,1表示最近\r
107                          *               start : 1399429229000, //mode为0时,表示开始时间,mode为1时,表示时间的毫秒值\r
108                          *               end : 1399515601000  //mode为0时,表示结束时间,mode为1时,表示时间的毫秒值\r
109                          *           }\r
110                          *          ]\r
111                          *       }\r
112          *    10)告警ID\r
113          *      {\r
114                          *          type : 'AlarmId',\r
115                          *          data : [{  //支持一个\r
116                          *               id : 1412923648983\r
117                          *           }\r
118                          *          ]\r
119                          *       }\r
120          *    11)MOC\r
121          *      {\r
122                          *          type : 'Moc',\r
123                          *          data : [{ //支持一个\r
124                          *               moc : 'moc' //支持前缀匹配,如:'moc%'\r
125                          *           }\r
126                          *          ]\r
127                          *       }\r
128          *    12)ip地址\r
129          *      {\r
130                          *                      type : 'NeIp',\r
131                          *                      data : [{ //支持一个\r
132                          *                              neIp : '10.74.165.57'\r
133                          *                      }\r
134                          *         ]\r
135                          *              }\r
136          */\r
137         parseConds2JSon: function (conds, ruleType) {\r
138             var parser = {\r
139                 Position: function (cond) {\r
140                     var condStr = "";\r
141                     if (cond.type === "Position" && cond.data.length > 0) {\r
142                         condStr = "<NewPositionCond OwnerType='Position' value='" + cond.data[0].locationId + "#" + cond.data[0].oid + "#" + cond.data[0].isSelf;\r
143                         for (var i = 1; i < cond.data.length; i++) {\r
144                             condStr += "∷" + cond.data[i].locationId + "#" + cond.data[i].oid + "#" + cond.data[i].isSelf;\r
145                         }\r
146                         condStr += "' />";\r
147                     }\r
148                     return condStr;\r
149                 },\r
150                 Severity: function (cond) {\r
151                     var condStr = "";\r
152                     if (cond.type === "Severity" && cond.data.length > 0) {\r
153                         condStr = "<PerceivedSeverity value='" + cond.data[0].severity;\r
154                         for (var i = 1; i < cond.data.length; i++) {\r
155                             condStr += "," + cond.data[i].severity;\r
156                         }\r
157                         condStr += "' />";\r
158                     }\r
159                     return condStr;\r
160                 },\r
161                 AckState: function (cond) {\r
162                     var condStr = "";\r
163                     if (cond.type === "AckState" && cond.data.length > 0) {\r
164                         condStr = "<AckState value='" + cond.data[0].ackState;\r
165                         for (var i = 1; i < cond.data.length; i++) {\r
166                             condStr += "," + cond.data[i].ackState;\r
167                         }\r
168                         condStr += "' />";\r
169                     }\r
170                     return condStr;\r
171                 },\r
172                 FilterState: function (cond) {\r
173                     var condStr = "";\r
174                     if (cond.type === "FilterState" && cond.data.length > 0) {\r
175                         condStr = "<FilterState value='" + cond.data[0].filterState;\r
176                         for (var i = 1; i < cond.data.length; i++) {\r
177                             condStr += "," + cond.data[i].filterState;\r
178                         }\r
179                         condStr += "' />";\r
180                     }\r
181                     return condStr;\r
182                 },\r
183                 AlarmType: function (cond) {\r
184                     var condStr = "";\r
185                     if (cond.type === "AlarmType" && cond.data.length > 0) {\r
186                         condStr = "<AlarmType value='" + cond.data[0].alarmType;\r
187                         for (var i = 1; i < cond.data.length; i++) {\r
188                             condStr += "," + cond.data[i].alarmType;\r
189                         }\r
190                         condStr += "' />";\r
191                     }\r
192                     return condStr;\r
193                 },\r
194                 ProbableCause: function (cond) {\r
195                     var condStr = "";\r
196                     if (cond.type === "ProbableCause" && cond.data.length > 0) {\r
197                         condStr = "<ProbableCause value='" + cond.data[0].systemType + "#" + cond.data[0].code;\r
198                         for (var i = 1; i < cond.data.length; i++) {\r
199                             condStr += "," + cond.data[i].systemType + "#" + cond.data[i].code;\r
200                         }\r
201                         condStr += "' />";\r
202                     }\r
203                     return condStr;\r
204                 },\r
205                 RaisedTime: function (cond) {\r
206                     var condStr = "";\r
207                     if (cond.type === "RaisedTime" && cond.data.length === 1) {\r
208                         condStr = "<RaisedTime model='" + cond.data[0].mode + "' start='" + cond.data[0].start + "' end= '" + cond.data[0].end + "' queryTimeZone='' condTimeZone='' />";\r
209                     }\r
210                     return condStr;\r
211                 },\r
212                 AckTime: function (cond) {\r
213                     var condStr = "";\r
214                     if (cond.type === "AckTime" && cond.data.length === 1) {\r
215                         condStr = "<AckTime model='" + cond.data[0].mode + "' start='" + cond.data[0].start + "' end= '" + cond.data[0].end + "' queryTimeZone='' condTimeZone='' />";\r
216                     }\r
217                     return condStr;\r
218                 },\r
219                 ClearedTime: function (cond) {\r
220                     var condStr = "";\r
221                     if (cond.type === "ClearedTime" && cond.data.length === 1) {\r
222                         condStr = "<ClearedTime model='" + cond.data[0].mode + "' start='" + cond.data[0].start + "' end= '" + cond.data[0].end + "' queryTimeZone='' condTimeZone='' />";\r
223                     }\r
224                     return condStr;\r
225                 },\r
226                 AlarmId: function (cond) {\r
227                     var condStr = "";\r
228                     if (cond.type === "AlarmId" && cond.data.length === 1) {\r
229                         condStr = "<IDString value='" + cond.data[0].id + "'/>";\r
230                     }\r
231                     return condStr;\r
232                 },\r
233                 Moc: function (cond) {\r
234                     var condStr = "";\r
235                     if (cond.type === "Moc" && cond.data.length === 1) {\r
236                         condStr = "<Moc Moc='" + cond.data[0].moc + "' SELECT_MODEL='false' MocSelf='true' />";\r
237                     }\r
238                     return condStr;\r
239                 },\r
240                 NeIp: function (cond) {\r
241                     var condStr = "";\r
242                     if (cond.type === "NeIp" && cond.data.length === 1) {\r
243                         condStr = "<NeIp value='" + cond.data[0].neIp + "' />";\r
244                     }\r
245                     return condStr;\r
246                 }\r
247             };\r
248 \r
249             var d = new Date();\r
250             var JSonObj = {\r
251                 rule: {\r
252                     ruleId: -1,\r
253                     name: "Alarm",\r
254                     creator: "admin",\r
255                     createTime: d.getTime(),\r
256                     modifier: "",\r
257                     modifyTime: 0,\r
258                     description: "",\r
259                     state: true,\r
260                     ruleType: ruleType,\r
261                     ruleSort: 1,\r
262                     owner: "",\r
263                     attrs: "<Attrs/>"\r
264                 }\r
265             };\r
266             var condStr = "<CompoundCond>";\r
267             for (var i = 0; i < conds.length; i++) {\r
268                 condStr += parser[conds[i].type](conds[i]);\r
269             }\r
270             JSonObj.rule.ruleData = condStr + "</CompoundCond>";\r
271             //return JSON.stringify(JSonObj);\r
272             return JSonObj;\r
273         }\r
274 \r
275     };\r
276 }();