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