CLIENT GUI Framework
[vnfsdk/refrepo.git] / portal-performance / src / main / webapp / performance / js / performanceQueryController.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 pm = {};\r
17 pm.query = {};\r
18 pm.query.vmPmQuery = avalon.define({\r
19         $id: "pmQueryController",\r
20         tableTitle:'',\r
21         pmDataVisable:true,\r
22         pmChartVisable:false,\r
23         tableIconVisable:false,\r
24         chartIconVisable:false,\r
25         queryRuleVisable:false,\r
26         boxVisible:true,\r
27         pmQueries:[],           \r
28         \r
29         $postData:{},\r
30         \r
31         beginTime: "",\r
32         endTime: "",\r
33         granularity:"",\r
34         \r
35         granularities: [\r
36         {id: '5', name: $.i18n.prop('com_zte_ums_ict_pm_query_5'), value: true},\r
37         {id: '15', name: $.i18n.prop('com_zte_ums_ict_pm_query_15'), value: false},             \r
38                 {id: '60', name: $.i18n.prop('com_zte_ums_ict_pm_query_60'), value: false}\r
39     ],\r
40         \r
41         granularityClicked: function(modelItem, item){\r
42                 if(modelItem.id =="5"){\r
43                         pm.query.vmPmQuery.granularity = "5*60";\r
44                         pm.query.vmPmQuery.granularities[0].value = true;  \r
45                         pm.query.vmPmQuery.granularities[1].value = false;  \r
46                         pm.query.vmPmQuery.granularities[2].value = false; \r
47                 }else if(modelItem.id =="15"){\r
48                         pm.query.vmPmQuery.granularity = "15*60";\r
49                         pm.query.vmPmQuery.granularities[0].value = false;  \r
50                         pm.query.vmPmQuery.granularities[1].value = true;  \r
51                         pm.query.vmPmQuery.granularities[2].value = false;\r
52                 }else{\r
53                         pm.query.vmPmQuery.granularity = "60*60";\r
54                         pm.query.vmPmQuery.granularities[0].value = false;  \r
55                         pm.query.vmPmQuery.granularities[1].value = false;  \r
56                         pm.query.vmPmQuery.granularities[2].value = true;\r
57                 }\r
58         },      \r
59         \r
60         resources: [\r
61                 /* {id: 'vnfInstance', name: $.i18n.prop('ngict-pm-iui-name-vnfInstance'), value: "SSS"},\r
62                 {id: 'host', name: $.i18n.prop('ngict-pm-iui-name-host'), value: ""} */\r
63         ],\r
64         \r
65         resourcesMap:{},\r
66         \r
67         resourceSlected:[],\r
68         \r
69         resourceSlectedObjs:[],\r
70         \r
71         rmSelectedResource: function(modelItem, elem){\r
72                 $(elem).parent().remove();\r
73                 pm.query.vmPmQuery.resourceSlected.splice(pm.query.vmPmQuery.resourceSlected.indexOf(modelItem.id), 1);\r
74         },\r
75         \r
76         initResources: function(resourceTypeId){\r
77                 var that = this;\r
78                 $.ajax({\r
79                         async: false,\r
80                         "dataType": 'json',\r
81                         "type": "GET",\r
82                         "url": "/openoapi/umc/v1/pm/resources",\r
83                         "contentType": 'application/json; charset=utf-8',\r
84                         "success": function (res, textStatus, jqXHR) {\r
85                                 //var nodes = res.content;      \r
86                                 var nodes = res;\r
87                                 that.resources = [];\r
88                                 for (var i = 0; i < nodes.length; i++) {\r
89                                         var resource = {\r
90                                                 id: nodes[i].id,\r
91                                                 name: nodes[i].name,\r
92                                                 resType: nodes[i].resType\r
93                                         };\r
94                                         that.resources.push(resource);\r
95                                         //保存id和resource的映射关系\r
96                                         var resourceCopy = {\r
97                                                 id: nodes[i].id,\r
98                                                 name: nodes[i].name,\r
99                                                 resType: nodes[i].resType\r
100                                         };\r
101                                         that.resourcesMap[nodes[i].id] = resourceCopy;\r
102                                 }\r
103                                 //过滤框注册\r
104                                 $("input[id=resourcesToFilter]").keyup(function(){ \r
105                                         $("table#resources tbody tr").hide().filter(":contains('"+( $(this).val() )+"')").show(); \r
106                                 }); \r
107                         },\r
108                         "error": function () {\r
109                         }\r
110                 });\r
111         },\r
112         \r
113         resTypeArray : [],\r
114         selectedResourceType : "",\r
115         selectedResourceTypeId : "",\r
116         \r
117         moTypeArray:[],\r
118         selectedMoType:"",\r
119         selectedMoTypeId:"",\r
120         \r
121         counterArray:[],\r
122         selectedCounter:[],\r
123         \r
124         resTypeSelectAction:function(){\r
125                 var resourceTypeId = getIdFromName(pm.query.vmPmQuery.selectedResourceType,pm.query.vmPmQuery.resTypeArray);\r
126                 pm.query.vmPmQuery.selectedResourceTypeId = resourceTypeId;\r
127                 getMoTypeArray(resourceTypeId);\r
128                 pm.query.vmPmQuery.counterArray=[];\r
129                 pm.query.vmPmQuery.initResources(resourceTypeId);\r
130         },\r
131         moTypeSelectAction:function(obj){\r
132                  var resourceTypeId=getIdFromName(pm.query.vmPmQuery.selectedResourceType,pm.query.vmPmQuery.resTypeArray);\r
133                  //var moTypeId=$(obj).val();\r
134                  var moTypeId = getIdFromName(pm.query.vmPmQuery.selectedMoType, pm.query.vmPmQuery.moTypeArray);       \r
135                  pm.query.vmPmQuery.selectedMoTypeId = moTypeId;                 \r
136                  getCounterArray(resourceTypeId,moTypeId);\r
137         },\r
138         /* counterSelectAction:function(obj){\r
139                  var counterId=$(obj).val();\r
140                  pm.query.vmPmQuery.selectedCounter=counterId;          \r
141                  pm.query.vmPmQuery.indexDescription+=pm.query.vmPmQuery.selectedCounter;\r
142         }, */\r
143         returnQueryPage: function(){\r
144                 pm.query.vmPmQuery.pmDataVisable=true;\r
145                 pm.query.vmPmQuery.pmChartVisable=false;\r
146                 pm.query.vmPmQuery.tableIconVisable=false;\r
147                 pm.query.vmPmQuery.chartIconVisable=true;\r
148                 pm.query.vmPmQuery.queryRuleVisable=false;\r
149                 pm.query.vmPmQuery.clickDisplayGraphAlink();\r
150         },\r
151         \r
152         queryRuleView: function(event, el){\r
153                 event.stopPropagation();\r
154                 \r
155                 pm.query.vmPmQuery.tableTitle=$.i18n.prop('com_zte_ums_ict_pm_query_edit');   \r
156                 \r
157                 //取得测量任务详情\r
158                 var elem = {};\r
159                 $.ajax({\r
160                         async: false,\r
161                         "dataType": 'json',\r
162                         "type": "GET",\r
163                         "url": "/openoapi/umc/v1/pm/meatasks/" + el.id,\r
164                         "data": null,\r
165                         "contentType": 'application/json; charset=utf-8',\r
166                         "success": function (res, textStatus, jqXHR) {\r
167                                 elem = res;\r
168                         },\r
169                         "error": function () {\r
170                         }\r
171                 });\r
172                 \r
173                 pm.query.vmPmQuery.pmDataVisable=false;\r
174                 pm.query.vmPmQuery.pmChartVisable=false;\r
175                 pm.query.vmPmQuery.tableIconVisable=false;\r
176                 pm.query.vmPmQuery.chartIconVisable=false;\r
177                 pm.query.vmPmQuery.queryRuleVisable=true;\r
178                 \r
179                 pm.query.vmPmQuery.beginTime = elem.beginTime;\r
180                 pm.query.vmPmQuery.endTime = elem.endTime;\r
181                 \r
182                 var timetext = pmUtil.formatTime(pm.query.vmPmQuery.beginTime) + " - " + pmUtil.formatTime(pm.query.vmPmQuery.endTime);\r
183                 $("#queryTimeRange").val(timetext);\r
184                 \r
185                 //选择粒度\r
186                 pm.query.vmPmQuery.granularity = elem.granularity;\r
187                 var granularity = pm.query.vmPmQuery.granularity / 60;\r
188                 var granularities = pm.query.vmPmQuery.granularities;\r
189                 for(var i=0;i<granularities.length;i++){\r
190                         if(granularity == granularities[i].id){\r
191                                 granularities[i].value = true;\r
192                         }else{\r
193                                 granularities[i].value = false;\r
194                         }\r
195                 }               \r
196                 \r
197                 //展开相关资源类型              \r
198                 pm.query.vmPmQuery.resTypeArray.push(elem.resourceType);\r
199                 pm.query.vmPmQuery.selectedResourceTypeId = elem.resourceType.id;\r
200                 pm.query.vmPmQuery.selectedResourceType = elem.resourceType.name;               \r
201                 //pm.query.vmPmQuery.resTypeSelectAction();\r
202                 pm.query.vmPmQuery.moTypeArray.push(elem.moType);\r
203                 pm.query.vmPmQuery.selectedMoTypeId = elem.moType.id;\r
204                 pm.query.vmPmQuery.selectedMoType = elem.moType.name;\r
205                 //pm.query.vmPmQuery.moTypeSelectAction();\r
206                 getCounterArray(elem.moType.id);                \r
207                 pm.query.vmPmQuery.initResources(elem.resourceType.id);\r
208                 \r
209                 $("select#resourceTypes").attr("disabled", true);\r
210                 $("select#moTypes").attr("disabled", true);\r
211                 \r
212                 //选中对象\r
213                 pm.query.vmPmQuery.resourceSlected = [];\r
214                 for(var j=0;j<elem.resources.length;j++){\r
215                         pm.query.vmPmQuery.resourceSlected.push(elem.resources[j].id);\r
216                         //pm.query.vmPmQuery.resourceSlected.push(elem.resources[j]);\r
217                 }\r
218                 \r
219                 //$("a#upArrow").click();\r
220                 pm.query.vmPmQuery.clickDisplayGraphAlink();\r
221                 \r
222                 $('.indexesAll').unbind().bind("change", function () {\r
223                         var table = $("table#indexes");\r
224                         var set = $('tbody > tr > td:nth-child(1) input[type="checkbox"]', table);\r
225                         var checked = $(this).is(":checked");\r
226                         $(set).each(function () {\r
227                                 //$(this).attr("checked", checked);\r
228                                 if(checked){\r
229                                         if(!$(this).is(":checked")){\r
230                                                 $(this).click();\r
231                                         }\r
232                                 }else{\r
233                                         if($(this).is(":checked")){\r
234                                                 $(this).click();\r
235                                         }\r
236                                 }               \r
237                         });\r
238                 });\r
239                 \r
240                 $('.resourceAll').unbind().bind("change", function () {\r
241                         var table = $("table#resources");\r
242                         var set = $('tbody > tr > td:nth-child(1) input[type="checkbox"]', table);\r
243                         var checked = $(this).is(":checked");\r
244                         $(set).each(function () {\r
245                                 //$(this).attr("checked", checked);\r
246                                 if(checked){\r
247                                         if(!$(this).is(":checked")){\r
248                                                 $(this).click();\r
249                                         }\r
250                                 }else{\r
251                                         if($(this).is(":checked")){\r
252                                                 $(this).click();\r
253                                         }\r
254                                 }               \r
255                         });\r
256                 });     \r
257                 //国际化\r
258                 var i18nItems = $("[name_i18n=openo_performance_i18n]");\r
259                 for(var i=0;i<i18nItems.length;i++){\r
260                         var $item = $(i18nItems.eq(i));\r
261                         var itemId = $item.attr('id');\r
262                         var itemValue = $.i18n.prop(itemId);                                            \r
263                         if(typeof($item.attr("title"))!="undefined"){\r
264                                 $item.attr("title", itemValue);\r
265                         }else if(typeof($item.attr("placeholder"))!="undefined"){\r
266                                 $item.attr("placeholder", itemValue);\r
267                         }else{\r
268                                 $item.text(itemValue);\r
269                         }\r
270                 }       \r
271         },\r
272         \r
273         queryRuleChanged: function(){\r
274                 \r
275                 pm.query.vmPmQuery.pmDataVisable=true;\r
276                 pm.query.vmPmQuery.pmChartVisable=false;\r
277                 pm.query.vmPmQuery.tableIconVisable=false;\r
278                 pm.query.vmPmQuery.chartIconVisable=true;\r
279                 pm.query.vmPmQuery.queryRuleVisable=false;\r
280                 pm.query.vmPmQuery.clickDisplayGraphAlink();\r
281                 \r
282                 var resourcesToPut = [];\r
283                 for(var i=0;i<pm.query.vmPmQuery.resourceSlected.length;i++){\r
284                         for(var j=0;j<pm.query.vmPmQuery.resources.length;j++){\r
285                                 if(pm.query.vmPmQuery.resourceSlected[i] == pm.query.vmPmQuery.resources[j].id){\r
286                                         var resource = {};\r
287                                         resource.id = pm.query.vmPmQuery.resources[j].id;\r
288                                         resource.name = pm.query.vmPmQuery.resources[j].name;\r
289                                         resource.resType = pm.query.vmPmQuery.resources[j].resType;\r
290                                         resourcesToPut.push(resource);\r
291                                         break;\r
292                                 }\r
293                         }\r
294                 }\r
295                 \r
296                 var postData = {\r
297                         "resourceTypeId": pm.query.vmPmQuery.selectedResourceTypeId,        \r
298                         "moTypeId": pm.query.vmPmQuery.selectedMoTypeId,        \r
299                         "resources": resourcesToPut,      \r
300                         "counterOrIndexId": pm.query.vmPmQuery.selectedCounter,\r
301                         "granularity": pm.query.vmPmQuery.granularity,\r
302                         "beginTime": pm.query.vmPmQuery.beginTime,\r
303                         "endTime": pm.query.vmPmQuery.endTime,\r
304                         "pageNo": 0,\r
305                         "pageSize": 10\r
306                 }\r
307                 pm.query.vmPmQuery.$postData = postData;\r
308                 $.ajax({\r
309                         //async:false,\r
310                         "type": 'post',\r
311                         "url": "/openoapi/umc/v1/pm/historydataqueries",\r
312                         "dataType": "json",\r
313                         "data": JSON.stringify(postData),\r
314                         "contentType": 'application/json; charset=utf-8',\r
315                         "success": function (resp) {            \r
316                                 //if(resp.content[0]){\r
317                                 if(resp.data[0]){\r
318                                         //var datas = resp.content[0].datas;    \r
319                                         var datas = resp.data[0].datas;\r
320                                         //pm.query.vmPmQuery.$queryDataTableFields = pm.query.vmPmQuery.$queryDataTableFieldsBackup;\r
321                                         collectDataFields(datas);\r
322                                         //pm.query.vmPmQuery.postData = postData;\r
323                                         pm.query.vmPmQuery.$initTable();\r
324                                 }else{\r
325                                         collectDataFields([]);                                  \r
326                                         pm.query.vmPmQuery.$initTable();\r
327                                 }               \r
328                         },\r
329                         "error":function(resp){\r
330                         \r
331                         }\r
332                 });                     \r
333         },\r
334         \r
335         queryTabClicked: function (el, item) {          \r
336         \r
337                 //取得测量任务详情\r
338                 var modelItem = {};\r
339                 $.ajax({\r
340                         async: false,\r
341                         "dataType": 'json',\r
342                         "type": "GET",\r
343                         "url": "/openoapi/umc/v1/pm/meatasks/" + el.id,\r
344                         "data": null,\r
345                         "contentType": 'application/json; charset=utf-8',\r
346                         "success": function (res, textStatus, jqXHR) {\r
347                                 modelItem = res;\r
348                         },\r
349                         "error": function () {\r
350                         }\r
351                 });\r
352         \r
353                 pm.query.vmPmQuery.pmDataVisable=true;\r
354                 pm.query.vmPmQuery.pmChartVisable=false;\r
355                 pm.query.vmPmQuery.tableIconVisable=false;\r
356                 pm.query.vmPmQuery.chartIconVisable=true;\r
357                 pm.query.vmPmQuery.queryRuleVisable=false;\r
358                 //vmPmQuery.boxVisible= false;\r
359                 pm.query.vmPmQuery.tableTitle=modelItem.name + " " + $.i18n.prop('com_zte_ums_ict_pm_query_result');   \r
360 \r
361                 //取得指标\r
362                 var getData = [];\r
363                 getData.push({\r
364                         name: "resourceTypeId",\r
365                         value: modelItem.resourceType.id\r
366                 });\r
367                 getData.push({\r
368                         name: "moTypeId",\r
369                         value: modelItem.moType.id\r
370                 });\r
371                 var counterOrIndexId = [];\r
372                 var MoTypeId = modelItem.moType.id;\r
373                 var url="/openoapi/umc/v1/pm/motypes/" + MoTypeId + "/counters";\r
374                 var data={};\r
375                 data.moTypeId=MoTypeId;\r
376                 $.ajax({\r
377                         "type": 'get',\r
378                         "url": url,\r
379                         "dataType": "json",\r
380                         data:data,\r
381                          "async": false,\r
382                         "success": function (res) {\r
383                                 for(var i=0;i<res.length;i++){\r
384                                         counterOrIndexId.push(res[i].id);\r
385                                 }\r
386                         },\r
387                         "error":function(res){\r
388                                 counterOrIndexId=[];                            \r
389                         }\r
390                 }); \r
391                 \r
392                 var resources=[];\r
393                 for(var i=0;i<modelItem.resources.length;i++){\r
394                         var resource = {};\r
395                         resource.id = modelItem.resources[i].id;\r
396                         resource.name = modelItem.resources[i].name;\r
397                         resource.resType = modelItem.resources[i].resType;\r
398                         resources.push(resource);\r
399                 }\r
400                 var postData = {\r
401                   "resourceTypeId": modelItem.resourceType.id,        \r
402                   "moTypeId": modelItem.moType.id,        \r
403                   "resources": resources,         \r
404                   "counterOrIndexId": counterOrIndexId,\r
405                   "granularity": modelItem.granularity,\r
406                   "beginTime": modelItem.beginTime,\r
407                   "endTime": modelItem.endTime,\r
408                   "pageNo": 0,\r
409                   "pageSize": 10\r
410                 }\r
411                 pm.query.vmPmQuery.$postData = postData;                \r
412                 $.ajax({\r
413                         //async:false,\r
414                         "type": 'post',\r
415                         "url": "/openoapi/umc/v1/pm/historydataqueries",\r
416                         "dataType": "json",\r
417                         "data": JSON.stringify(postData),\r
418                         "contentType": 'application/json; charset=utf-8',\r
419                         "success": function (resp) {            \r
420                                 //if(resp.content[0]){\r
421                                 if(resp.data[0]){\r
422                                         //var datas = resp.content[0].datas;    \r
423                                         var datas = resp.data[0].datas;\r
424                                         //pm.query.vmPmQuery.$queryDataTableFields = pm.query.vmPmQuery.$queryDataTableFieldsBackup;                                    \r
425                                         collectDataFields(datas);                                       \r
426                                         pm.query.vmPmQuery.$initTable();\r
427                                 }else{\r
428                                         collectDataFields([]);                                  \r
429                                         pm.query.vmPmQuery.$initTable();\r
430                                 }               \r
431                         },\r
432                         "error":function(resp){\r
433                         \r
434                         }\r
435                 });                             \r
436         },\r
437         clickSelectedCommonCond: function () {\r
438            //显示统计图;\r
439         },                      \r
440         clickDisplayGraphAlink: function () {\r
441                 pm.query.vmPmQuery.boxVisible = !pm.query.vmPmQuery.boxVisible;\r
442         },      \r
443         showPerformanceChart: function () {\r
444                 drawPerformanceChart();\r
445                 pm.query.vmPmQuery.pmDataVisable=false;\r
446                 pm.query.vmPmQuery.pmChartVisable=true;\r
447                 pm.query.vmPmQuery.tableIconVisable=true;\r
448                 pm.query.vmPmQuery.chartIconVisable=false;\r
449         },\r
450         showPerformanceTable: function () {\r
451                 pm.query.vmPmQuery.pmDataVisable=true;\r
452                 pm.query.vmPmQuery.pmChartVisable=false;\r
453                 pm.query.vmPmQuery.tableIconVisable=false;\r
454                 pm.query.vmPmQuery.chartIconVisable=true;\r
455         },\r
456         $queryDataTableFields: [                \r
457                 {\r
458                         "mData": "beginTime",\r
459                         sWidth: "10%",\r
460                         name: $.i18n.prop('com_zte_ums_ict_pm_query_start_time'),\r
461                         "fnRender": pmUtil.timeRender\r
462                 },\r
463                 {\r
464                         "mData": "endTime",\r
465                         sWidth: "10%",\r
466                         name: $.i18n.prop('com_zte_ums_ict_pm_query_end_time'),\r
467                         "fnRender": pmUtil.timeRender\r
468                 },              \r
469                 {\r
470                         "mData": "granularity",\r
471                         sWidth: "10%",\r
472                         name: $.i18n.prop('com_zte_ums_ict_pm_query_granularity')\r
473                 },\r
474                 {\r
475                         "mData": "resourceType.name",\r
476                         sWidth: "15%",\r
477                         name: $.i18n.prop('com_zte_ums_ict_pm_query_resource_type')\r
478                 },\r
479                 {\r
480                         "mData": "resource.name",\r
481                         sWidth: "15%",\r
482                         name: $.i18n.prop('com_zte_ums_ict_pm_query_resource_name')\r
483                 }\r
484         ] ,\r
485         $language: {\r
486                 "sProcessing": "<img src='../common/thirdparty/data-tables/images/loading-spinner-grey.gif'/><span>&nbsp;&nbsp;处理中...</span>",\r
487                 "sLengthMenu": $.i18n.prop("ngict-log-iui-table-sLengthMenu"),\r
488                 "sZeroRecords": $.i18n.prop("ngict-log-iui-table-sZeroRecords"),\r
489                 "sInfo": "<span class='seperator'>  </span>" + $.i18n.prop("ngict-log-iui-table-sInfo"),\r
490                 "sInfoEmpty": $.i18n.prop("ngict-log-iui-table-sInfoEmpty"),\r
491                 "sGroupActions": $.i18n.prop("ngict-log-iui-table-sGroupActions"),\r
492                 "sAjaxRequestGeneralError":$.i18n.prop("ngict-log-iui-table-sAjaxRequestGeneralError"),\r
493                 "sEmptyTable": $.i18n.prop("ngict-log-iui-table-sEmptyTable"),\r
494                 "oPaginate": {\r
495                         "sPrevious": $.i18n.prop("ngict-log-iui-table-sPrevious"),\r
496                         "sNext": $.i18n.prop("ngict-log-iui-table-sNext"),\r
497                         "sPage": $.i18n.prop("ngict-log-iui-table-sPage"),\r
498                         "sPageOf": $.i18n.prop("ngict-log-iui-table-sPageOf")\r
499                 }\r
500         },\r
501         $initTable: function () {\r
502                 var setting = {};\r
503                 setting.language = this.$language;\r
504                 setting.columns = this.$queryDataTableFields;\r
505                 setting.pageHtml="r<'table-scrollable't><'row page-info-bottom'<'col-md-12 col-sm-12'lip>>>";\r
506                 setting.restUrl = "/openoapi/umc/v1/pm/historydataqueries";\r
507                 setting.tableId = "ict_pm_data";\r
508                 serverPageTable.initDataTable(setting,  'ict_pm_data_div' );            \r
509         }\r
510 });\r
511 \r
512 pm.query.vmPmQuery.resourceSlected.$watch("length", function(newValue, oldValue){\r
513    var resourceSlected = pm.query.vmPmQuery.resourceSlected;\r
514    //pm.query.vmPmQuery.resourceSlectedObjs = [];\r
515    var resourceSlectedObjs = [];\r
516    for(var i=0;i<resourceSlected.length;i++){\r
517                 //var obj = getObjById(resourceSlected[i], pm.query.vmPmQuery.resources);\r
518                 var obj = $.extend(true, {}, pm.query.vmPmQuery.resourcesMap[resourceSlected[i]]);\r
519                 //pm.query.vmPmQuery.resourceSlectedObjs.push(obj);\r
520                 resourceSlectedObjs.push(obj);\r
521    }\r
522    //给绑定变量一次性赋值,否则非常慢\r
523    //pm.query.vmPmQuery.resourceSlectedObjs = $.extend(true, [], resourceSlectedObjs);\r
524    pm.query.vmPmQuery.resourceSlectedObjs=[];\r
525    for(var j=0;j<resourceSlectedObjs.length;j++){\r
526            pm.query.vmPmQuery.resourceSlectedObjs.push(resourceSlectedObjs[j]);\r
527    }\r
528 });\r
529 \r
530 function getObjById(id,array){\r
531    for(var i=0;i<array.length;i++){\r
532           if(array[i].id==id){\r
533                  return array[i];\r
534           }\r
535    }\r
536 }\r
537         \r
538 avalon.scan();\r
539 \r
540 //取得任务列表\r
541 var queryViewData;\r
542 $.ajax({\r
543         async: false,\r
544         "dataType": 'json',\r
545         "type": "GET",\r
546         "url": "/openoapi/umc/v1/pm/meatasks",\r
547         "data": null,\r
548         "contentType": 'application/json; charset=utf-8',\r
549         "success": function (res, textStatus, jqXHR) {\r
550                 //queryViewData = res.content;\r
551                 queryViewData = res;\r
552         },\r
553         "error": function () {\r
554         }\r
555 });\r
556 \r
557 pm.query.vmPmQuery.pmQueries = transformQueryViewData(queryViewData, 8);\r
558 \r
559 /* var postData = {\r
560   "resourceTypeId": "vnf.cn.cscf",        \r
561   "moTypeId": "vnf.cn.cscf.metrictype",        \r
562   "resources": [\r
563         {\r
564           "id": "vnf.cn.cscf.001",\r
565           "name": "cscf001",\r
566           "resType": "vnf.cn.cscf"\r
567         }\r
568   ],      \r
569   "counterOrIndexId": [\r
570         "001"\r
571   ],\r
572   "granularity": 900,\r
573   "beginTime": 1449023738672,\r
574   "endTime": 1449023738672\r
575 } */\r
576 \r
577 var queryDataTableFieldsBackup = [              \r
578         {\r
579                 "mData": "beginTime",\r
580                 sWidth: "10%",\r
581                 name: $.i18n.prop('com_zte_ums_ict_pm_query_start_time'),\r
582                 "fnRender": pmUtil.timeRender\r
583         },\r
584         {\r
585                 "mData": "endTime",\r
586                 sWidth: "10%",\r
587                 name: $.i18n.prop('com_zte_ums_ict_pm_query_end_time'),\r
588                 "fnRender": pmUtil.timeRender\r
589         },              \r
590         {\r
591                 "mData": "granularity",\r
592                 sWidth: "10%",\r
593                 name: $.i18n.prop('com_zte_ums_ict_pm_query_granularity')\r
594         },\r
595         {\r
596                 "mData": "resourceType.name",\r
597                 sWidth: "15%",\r
598                 name: $.i18n.prop('com_zte_ums_ict_pm_query_resource_type')\r
599         },\r
600         {\r
601                 "mData": "resource.name",\r
602                 sWidth: "15%",\r
603                 name: $.i18n.prop('com_zte_ums_ict_pm_query_resource_name')\r
604         }\r
605 ];\r
606 \r
607 //pm.query.vmPmQuery.$initTable();\r
608 function  fnServerData(sSource, aoData, fnCallback, oSettings) {\r
609         \r
610         var oPaging = oSettings.oInstance.fnPagingInfo();\r
611         var pageLength = oPaging.iLength;\r
612         var curPageNo = oPaging.iPage;\r
613         \r
614         pm.query.vmPmQuery.$postData.pageNo = curPageNo;\r
615         pm.query.vmPmQuery.$postData.pageSize = pageLength;\r
616         \r
617         oSettings.jqXHR = $.ajax({\r
618                 "type": 'post',\r
619                 "url": sSource,\r
620                 "dataType": "json",\r
621                 "data": JSON.stringify(pm.query.vmPmQuery.$postData),\r
622                 "contentType": 'application/json; charset=utf-8',\r
623                 "success": function (resp) {\r
624                         oSettings.iDraw = oSettings.iDraw + 1;\r
625                         var data = {};\r
626                         //添加动态列\r
627                         //for(var i=0;i<resp.content.length;i++){\r
628                         for(var i=0;i<resp.data.length;i++){\r
629                                 //var row = resp.content[i];\r
630                                 var row = resp.data[i];\r
631                                 for(var j=0;j<row.datas.length;j++){\r
632                                         row["counterOrIndex" + row.datas[j].counterOrIndexId] = row.datas[j].value;\r
633                                 }\r
634                         }\r
635                         /* data.aaData = resp.content;                  \r
636                         data.iTotalRecords = resp.content.length;\r
637             data.iTotalDisplayRecords = resp.content.length; */\r
638                         data.aaData = resp.data;                        \r
639                         data.iTotalRecords = resp.totalCout;\r
640             data.iTotalDisplayRecords = resp.totalCout;\r
641                         data.sEcho = oSettings;                                 \r
642                         fnCallback(data);                       \r
643                 },\r
644                 "error":function(resp){\r
645                 \r
646                 }\r
647         });\r
648 }\r
649 \r
650 /* var tableFieldsMap = {\r
651         beginTime: "开始时间",\r
652         endTime: "结束时间" \r
653 }; */\r
654 \r
655 function collectDataFields(datas){\r
656         pm.query.vmPmQuery.$queryDataTableFields = [];\r
657         for(var i=0;i<queryDataTableFieldsBackup.length;i++){\r
658                 pm.query.vmPmQuery.$queryDataTableFields.push(queryDataTableFieldsBackup[i]);\r
659         }       \r
660         for(var i=0;i<datas.length;i++){\r
661                 if(!datas[i].name){\r
662                         datas[i].name="测试列"\r
663                 }               \r
664                 pm.query.vmPmQuery.$queryDataTableFields.push({\r
665                                 //"mData": "datas["+ i +"].value",\r
666                                 //"mData": "datas.value",\r
667                                 //"mData": "datas",\r
668                                 "mData": "counterOrIndex" + datas[i].counterOrIndexId,\r
669                                 sWidth: "10%",\r
670                                 name: datas[i].counterOrIndexName\r
671                                 //,fnRender: pmUtil.indexValue\r
672                 });\r
673         }\r
674 }\r
675 \r
676 /* function tranverseObjFields(obj){\r
677         for(var p in obj){ \r
678                 if(typeof(obj[p])!="function" && tableFieldsMap[p]){\r
679                         if(obj[p]){\r
680                                 \r
681                         }\r
682                         pm.query.vmPmQuery.$queryDataTableFields.push({\r
683                                 "mData": p,\r
684                                 sWidth: "10%",\r
685                                 name: tableFieldsMap[p]\r
686                         })\r
687                 } \r
688         } \r
689 } */\r
690 \r
691 function transformQueryViewData(queryViewData, pageSize) {\r
692     var newData = [];\r
693     var pageNo = Math.floor(queryViewData.length / pageSize) + 1;\r
694         if(queryViewData.length % pageSize == 0){\r
695                 pageNo--;\r
696         }\r
697     for (var i = 0; i < pageNo; i++) {\r
698         newData.push({array: []});\r
699     }\r
700     for (var j = 0; j < queryViewData.length; j++) {\r
701         newData[Math.floor(j / pageSize)].array.push(queryViewData[j]);\r
702     }\r
703     return newData;\r
704 }\r
705     \r
706 setTimeout(function(){\r
707         $($(".item", $(".carousel-inner"))[0]).addClass("active");\r
708         pmUtil.setDateRange("queryTimeRange");\r
709 }, 100);\r
710 \r
711 newIndexWizard = function (idx,action) {            \r
712           //获取资源类型\r
713                 var resourceTypeId;\r
714                 var moTypeId;\r
715          \r
716                 //默认取资源第一个的测量类型\r
717                 /* if(pm.query.vmPmQuery.resTypeArray && pm.query.vmPmQuery.resTypeArray.length>0){\r
718                         pm.query.vmPmQuery.selectedResourceType=pm.query.vmPmQuery.resTypeArray[0].name;\r
719                         resourceTypeId=pm.query.vmPmQuery.resTypeArray[0].id;\r
720                         pm.query.vmPmQuery.selectedDataType=pm.query.vmPmQuery.dataTypeArray[0].name;\r
721                         getMoTypeArray( pm.query.vmPmQuery.resTypeArray[0].id);\r
722                         getCounterArray(resourceTypeId,moTypeId);\r
723                 } */\r
724 }();\r
725 \r
726 function  getMoTypeArray(resourceTypeId){\r
727         if(resourceTypeId){\r
728         //获取测量类型\r
729         var url="/openoapi/umc/v1/pm/motypes";\r
730         var data={};\r
731         data.resourceTypeId=resourceTypeId;\r
732         $.ajax({\r
733                 "type": 'get',\r
734                 "url": url,\r
735                 data:data,\r
736                 "dataType": "json",\r
737                  "async": false,\r
738                 "success": function (resp) {\r
739                         //pm.query.vmPmQuery.moTypeArray= resp.content;\r
740                         pm.query.vmPmQuery.moTypeArray= resp;\r
741                 },\r
742                 "error":function(resp){\r
743                         pm.query.vmPmQuery.moTypeArray=[]; \r
744                         //for test\r
745                         /* var res = {"message":null,"content":[{"name":"性能KPI-1","id":"ns.cn.ims.metrictype"},{"name":"性能KPI-2","id":"ns.cn.ims.metrictype1"},{"name":"性能KPI-3","id":"ns.cn.ims.metrictype2"},{"name":"性能KPI-4","id":"ns.cn.ims.metrictype3"},{"name":"性能KPI-5","id":"ns.cn.ims.metrictype4"}],"status":0};\r
746                         pm.query.vmPmQuery.moTypeArray = res.content; */\r
747                 }\r
748         }); \r
749         }\r
750 }\r
751 \r
752 function  getCounterArray(MoTypeId){\r
753         if(MoTypeId){\r
754                 var url="/openoapi/umc/v1/pm/motypes/"+MoTypeId+"/counters";\r
755                 var data={};\r
756                 data.moTypeId=MoTypeId;\r
757                 $.ajax({\r
758                         "type": 'get',\r
759                         "url": url,\r
760                         "dataType": "json",\r
761                         data:data,\r
762                          "async": false,\r
763                         "success": function (resp) {\r
764                                 //pm.query.vmPmQuery.counterArray= resp.content;\r
765                                 pm.query.vmPmQuery.counterArray= resp;\r
766                                 //默认全选\r
767                                 pm.query.vmPmQuery.selectedCounter = [];\r
768                                 for(var i=0;i<resp.length;i++){\r
769                                         pm.query.vmPmQuery.selectedCounter.push(resp[i].id);\r
770                                 }\r
771                         },\r
772                         "error":function(resp){\r
773                                 pm.query.vmPmQuery.counterArray=[]; \r
774                                 //for test\r
775                                 /* var res = {"message":null,"content":[{"dataType":null,"name":"总用户数","id":"ns.cn.epc.businesskpi.totalUsers"},{"dataType":null,"name":"总用户数","id":"ns.cn.ims.businesskpi.totalUsers"},{"dataType":null,"name":"平均CPU使用率%","id":"vnf.runtimeInfo.averageCpuUsage"},{"dataType":null,"name":"平均内存使用率%","id":"vnf.runtimeInfo.averageMemoryUsage"},{"dataType":null,"name":"总用户数","id":"vnf.cn.cscf.businesskpi.totalUsers"}],"status":0};\r
776                                 pm.query.vmPmQuery.counterArray = res.content; */\r
777                         }\r
778                 }); \r
779         }\r
780 }\r
781 \r
782 function getIdFromName(name,array){\r
783    for(var i=0;i<array.length;i++){\r
784           if(array[i].name==name){\r
785                  return array[i].id;\r
786           }\r
787    }\r
788 }\r
789 function getNameFromId(id,array){\r
790    for(var i=0;i<array.length;i++){\r
791           if(array[i].id==id){\r
792                  return array[i].name;\r
793           }\r
794    }\r
795 }\r
796 function getObjFromId(id,array){\r
797    for(var i=0;i<array.length;i++){\r
798           if(array[i].id==id){\r
799                  return array[i];\r
800           }\r
801    }\r
802    return "";\r
803 }\r
804 function getObjFromName(name,array){\r
805    for(var i=0;i<array.length;i++){\r
806           if(array[i].name==name){\r
807                  return array[i];\r
808           }\r
809    }\r
810 }\r