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