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