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