rebuild GUI structure(only changed modules' name)
[vnfsdk/refrepo.git] / catalog / src / main / webapp / catalog / js / template / tmTopoController.js
1 /*
2  * Copyright 2016-2017 ZTE Corporation.
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 vm = avalon.define({
17     $id : "tmTopoController",
18     templateId : "",
19     nodesData: [],
20     $language: {
21         "sProcessing": "<img src='../common/thirdparty/data-tables/images/loading-spinner-grey.gif'/><span>&nbsp;&nbsp;"
22         +$.i18n.prop("nfv-nso-iui-table-sProcess")+"</span>",
23         "sLengthMenu": $.i18n.prop("nfv-nso-iui-table-sLengthMenu"),
24         "sZeroRecords": $.i18n.prop("nfv-nso-iui-table-sZeroRecords"),
25         "sInfo": "<span class='seperator'>  </span>" + $.i18n.prop("nfv-nso-iui-table-sInfo"),
26         "sInfoEmpty": $.i18n.prop("nfv-nso-iui-table-sInfoEmpty"),
27         "sGroupActions": $.i18n.prop("nfv-nso-iui-table-sGroupActions"),
28         "sAjaxRequestGeneralError":$.i18n.prop("nfv-nso-iui-table-sAjaxRequestGeneralError"),
29         "sEmptyTable": $.i18n.prop("nfv-nso-iui-table-sEmptyTable"),
30         "oPaginate": {
31             "sPrevious": $.i18n.prop("nfv-nso-iui-table-sPrevious"),
32             "sNext": $.i18n.prop("nfv-nso-iui-table-sNext"),
33             "sPage": $.i18n.prop("nfv-nso-iui-table-sPage"),
34             "sPageOf": $.i18n.prop("nfv-nso-iui-table-sPageOf")
35         }
36     },
37     $restUrl : {
38         queryNodeTemplateUrl : "/openoapi/catalog/v1/servicetemplates/{0}/nodetemplates",
39         queryTemplateInfoUrl : "/openoapi/catalog/v1/servicetemplates"
40     },
41     $init : function() {
42         vm.$initTemplateData();
43         vm.$initTopoNodesData();
44     },
45     $initTemplateData : function() {
46         $.ajax({
47             type : "GET",
48             url : vm.$restUrl.queryTemplateInfoUrl,
49             success : function(resp) {
50                 if(resp) {
51                     vm.servicesTemplateData = [];
52                     for(var i=0; i<resp.length; i++) {
53                         //generate node table display data
54                         vm.servicesTemplateData.push(resp[i]);
55                     }
56                     //vm.$initNfvNodesTab();
57                 }
58             },
59             error : function() {
60                 commonUtil.showMessage($.i18n.prop("nfv-topology-iui-message-error"), "danger");
61             }
62         });
63     },
64     $initTopoNodesData : function() {
65         $.ajax({
66             type : "GET",
67             url : vm.$restUrl.queryNodeTemplateUrl,
68             success : function(resp) {
69                 if(resp) {
70                     vm.nodesDetail.nodesTemplateDetailData = [];
71                     for(var i=0; i<resp.length; i++) {
72                         //generate node table display data
73                         var nodeTemplate = topoUtil.generateNodeTemplate(resp[i]);
74                         vm.nodesData.push(nodeTemplate);
75                     }
76                     vm.nodesDetail.nodesTemplateDetailData = resp;
77                     //generate topology graph display data
78                     vm.topologyTab.topoTemplateData = topoUtil.generateTopoTemplate(vm.nodesData.$model);
79                     //initialize topology data
80                     topoUtil.initTopoData(vm.topologyTab.topoTemplateData.$model);
81                 }
82             },
83             error : function() {
84                 commonUtil.showMessage($.i18n.prop("nfv-topology-iui-message-error"), "danger");
85             }
86         });
87     },
88     topologyTab : {
89         topology : "topology.html",
90         vnfTip : $.i18n.prop("nfv-topology-iui-vnf-tip"),
91         btnTip : $.i18n.prop("nfv-topology-iui-btn-return-tip"),
92         topoTemplateData:[],
93         boxTopoDatas:[],
94         networkTopoDatas:[],
95         isShowNum: false,
96         returnBtnVisible : false,
97         $getColor: function(index) {
98             return topoUtil.getColor(index);
99         },
100         $getCidr: function(properties){
101             return topoUtil.getCidr(properties);
102         },
103         $getCpTop: function(index, parentBoxId){
104             return topoUtil.getCpTop(index, parentBoxId);
105         },
106         $initTopology : function() {
107             topoUtil.initTopoData(vm.topologyTab.topoTemplateData.$model);
108         },
109         $showTopo:function(id, name){
110             vm.nodesDetail.$showDetails("block", id, name);
111         },
112         $showVnfTopo: function(templateId) {
113             vm.topologyTab.returnBtnVisible = true;
114             vm.$restUrl.queryNodeTemplateUrl = "/openoapi/catalog/v1/servicetemplates/" + templateId + "/nodetemplates";
115             vm.$init();
116         },
117         $returnNS: function() {
118             vm.topologyTab.returnBtnVisible = false;
119             vm.$restUrl.queryNodeTemplateUrl = "/openoapi/catalog/v1/servicetemplates/" + vm.templateId + "/nodetemplates";
120             vm.$init();
121         }
122     },
123     //Nodes Details
124     nodesDetail : {
125         nodesTemplateDetailData: [],
126         detailTitle : "",
127         isShow : "none",
128         detailIndex : 0,
129         detailData : [
130             {id: "general", name: $.i18n.prop("nfv-templateDetail-nodesTab-iui-tab-general"), isActive: true},
131             {id: "properties", name: $.i18n.prop("nfv-templateDetail-nodesTab-iui-tab-properties"), isActive: false},
132             {id: "relationShips", name: $.i18n.prop("nfv-templateDetail-nodesTab-iui-tab-relationShips"), isActive: false}
133         ],
134         $showDetails : function(isShow, nodetypeid, nodetypename) {
135             vm.nodesDetail.isShow = isShow;
136             if (isShow == "block") {
137                 vm.nodesDetail.detailTitle = nodetypename + " " + $.i18n.prop("nfv-templateDetail-nodesTab-iui-title-nodeDetail"),
138                     $('#' + vm.nodesDetail.detailData[0].id).click();
139                 vm.nodesDetail.detailData[0].isActive = true;
140                 vm.nodesDetail.$initNodeDetailTable(nodetypeid);
141             }
142         },
143         detailCondChange : function(index) {
144             vm.nodesDetail.detailIndex = index;
145             for(var i=0; i<vm.nodesDetail.detailData.length; i++) {
146                 vm.nodesDetail.detailData[i].isActive = false;
147             }
148             vm.nodesDetail.detailData[index].isActive = true;
149         },
150         $tableFields : {// table columns
151             general: [
152                 {"mData": "key", "name": $.i18n.prop("nfv-templateDetail-nodesTab-iui-field-key"), "bSortable" : false},
153                 {"mData": "value", "name": $.i18n.prop("nfv-templateDetail-nodesTab-iui-field-value"), "bSortable" : false}
154             ],
155             properties: [
156                 {"mData": "key", "name": $.i18n.prop("nfv-templateDetail-nodesTab-iui-field-key"), "bSortable" : false},
157                 {"mData": "value", "name": $.i18n.prop("nfv-templateDetail-nodesTab-iui-field-value"), "bSortable" : false}
158             ],
159             relationShips: [
160                 {"mData": "sourceNodeName", "name": $.i18n.prop("nfv-templateDetail-nodesTab-iui-field-sourceNodeName"), "bSortable" : false},
161                 {"mData": "targetNodeName", "name": $.i18n.prop("nfv-templateDetail-nodesTab-iui-field-targetNodeName"), "bSortable" : false},
162                 {"mData": "type", "name": $.i18n.prop("nfv-templateDetail-nodesTab-iui-field-type"), "bSortable" : false}
163             ]
164         },
165         $initNodeDetailTable: function(nodetemplateid) {
166             var data = topoUtil.getCurrentDetailData(vm.nodesDetail.nodesTemplateDetailData.$model, nodetemplateid);
167             //initialize three tables of nodedetail
168             $.each(vm.nodesDetail.$tableFields, function(key, value){
169                 var setting = {};
170                 setting.language = vm.$language;
171                 setting.paginate = false;
172                 setting.info = false;
173                 setting.columns = value;
174                 setting.tableId = "ict_table_" + key;
175                 serverPageTable.initTableWithData(setting, setting.tableId + '_div', data[key]);
176             });
177         }
178     },
179 });
180
181 var initParam = function() { //initialize template detail params
182     var paramStr = window.location.search.substring(1);
183     if(paramStr.length > 0) {
184         var params = paramStr.split("&");
185         var templateId = params[0].substring(params[0].indexOf('=') + 1);
186         var flavor = params[1].substring(params[1].indexOf('=') + 1);
187         avalon.scan();
188
189         vm.templateId = templateId;
190         vm.$restUrl.queryNodeTemplateUrl = commonUtil.format(vm.$restUrl.queryNodeTemplateUrl, templateId);
191
192         if(flavor) {
193             vm.$restUrl.queryNodeTemplateUrl += "?flavor=" + flavor;
194         }
195
196         vm.$init();
197     }
198 };
199 initParam();