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