2 * Copyright 2016-2017 ZTE Corporation.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
16 var vm = avalon.define({
17 $id : "tmTopoController",
21 "sProcessing": "<img src='../common/thirdparty/data-tables/images/loading-spinner-grey.gif'/><span> "
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"),
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")
38 queryNodeTemplateUrl : "/openoapi/catalog/v1/servicetemplates/{0}/nodetemplates",
39 queryTemplateInfoUrl : "/openoapi/catalog/v1/servicetemplates"
42 vm.$initTemplateData();
43 vm.$initTopoNodesData();
45 $initTemplateData : function() {
48 url : vm.$restUrl.queryTemplateInfoUrl,
49 success : function(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]);
56 //vm.$initNfvNodesTab();
60 commonUtil.showMessage($.i18n.prop("nfv-topology-iui-message-error"), "danger");
64 $initTopoNodesData : function() {
67 url : vm.$restUrl.queryNodeTemplateUrl,
68 success : function(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);
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);
84 commonUtil.showMessage($.i18n.prop("nfv-topology-iui-message-error"), "danger");
89 topology : "topology.html",
90 vnfTip : $.i18n.prop("nfv-topology-iui-vnf-tip"),
91 btnTip : $.i18n.prop("nfv-topology-iui-btn-return-tip"),
96 returnBtnVisible : false,
97 $getColor: function(index) {
98 return topoUtil.getColor(index);
100 $getCidr: function(properties){
101 return topoUtil.getCidr(properties);
103 $getCpTop: function(index, parentBoxId){
104 return topoUtil.getCpTop(index, parentBoxId);
106 $initTopology : function() {
107 topoUtil.initTopoData(vm.topologyTab.topoTemplateData.$model);
109 $showTopo:function(id, name){
110 vm.nodesDetail.$showDetails("block", id, name);
112 $showVnfTopo: function(templateId) {
113 vm.topologyTab.returnBtnVisible = true;
114 vm.$restUrl.queryNodeTemplateUrl = "/openoapi/catalog/v1/servicetemplates/" + templateId + "/nodetemplates";
117 $returnNS: function() {
118 vm.topologyTab.returnBtnVisible = false;
119 vm.$restUrl.queryNodeTemplateUrl = "/openoapi/catalog/v1/servicetemplates/" + vm.templateId + "/nodetemplates";
125 nodesTemplateDetailData: [],
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}
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);
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;
148 vm.nodesDetail.detailData[index].isActive = true;
150 $tableFields : {// table columns
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}
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}
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}
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){
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]);
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);
189 vm.templateId = templateId;
190 vm.$restUrl.queryNodeTemplateUrl = commonUtil.format(vm.$restUrl.queryNodeTemplateUrl, templateId);
193 vm.$restUrl.queryNodeTemplateUrl += "?flavor=" + flavor;