2 * Copyright 2016 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.
17 var vm = avalon.define({
18 $id: "tmTopoController",
22 "sProcessing": "<img src='../common/thirdparty/data-tables/images/loading-spinner-grey.gif'/><span> "
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"),
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")
39 queryNodeTemplateUrl: "/openoapi/catalog/v1/servicetemplates/{0}/nodetemplates",
40 queryTemplateInfoUrl: "/openoapi/catalog/v1/servicetemplates"
43 vm.$initTemplateData();
44 vm.$initTopoNodesData();
46 $initTemplateData: function () {
49 url: vm.$restUrl.queryTemplateInfoUrl,
50 success: function (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]);
57 //vm.$initNfvNodesTab();
61 commonUtil.showMessage($.i18n.prop("nfv-topology-iui-message-error"), "danger");
65 $initTopoNodesData: function () {
68 url: vm.$restUrl.queryNodeTemplateUrl,
69 success: function (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);
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);
85 commonUtil.showMessage($.i18n.prop("nfv-topology-iui-message-error"), "danger");
90 topology: "topology.html",
91 vnfTip: $.i18n.prop("nfv-topology-iui-vnf-tip"),
92 btnTip: $.i18n.prop("nfv-topology-iui-btn-return-tip"),
97 returnBtnVisible: false,
98 $getColor: function (index) {
99 return topoUtil.getColor(index);
101 $getCidr: function (properties) {
102 return topoUtil.getCidr(properties);
104 $getCpTop: function (index, parentBoxId) {
105 return topoUtil.getCpTop(index, parentBoxId);
107 $initTopology: function () {
108 topoUtil.initTopoData(vm.topologyTab.topoTemplateData.$model);
110 $showTopo: function (id, name) {
111 vm.nodesDetail.$showDetails("block", id, name);
113 $showVnfTopo: function (templateId) {
114 vm.topologyTab.returnBtnVisible = true;
115 vm.$restUrl.queryNodeTemplateUrl = "/openoapi/catalog/v1/servicetemplates/" + templateId + "/nodetemplates";
118 $returnNS: function () {
119 vm.topologyTab.returnBtnVisible = false;
120 vm.$restUrl.queryNodeTemplateUrl = "/openoapi/catalog/v1/servicetemplates/" + vm.templateId + "/nodetemplates";
126 nodesTemplateDetailData: [],
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},
135 name: $.i18n.prop("nfv-templateDetail-nodesTab-iui-tab-relationShips"),
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);
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;
153 vm.nodesDetail.detailData[index].isActive = true;
155 $tableFields: {// table columns
157 {"mData": "key", "name": $.i18n.prop("nfv-templateDetail-nodesTab-iui-field-key"), "bSortable": false},
160 "name": $.i18n.prop("nfv-templateDetail-nodesTab-iui-field-value"),
165 {"mData": "key", "name": $.i18n.prop("nfv-templateDetail-nodesTab-iui-field-key"), "bSortable": false},
168 "name": $.i18n.prop("nfv-templateDetail-nodesTab-iui-field-value"),
174 "mData": "sourceNodeName",
175 "name": $.i18n.prop("nfv-templateDetail-nodesTab-iui-field-sourceNodeName"),
179 "mData": "targetNodeName",
180 "name": $.i18n.prop("nfv-templateDetail-nodesTab-iui-field-targetNodeName"),
183 {"mData": "type", "name": $.i18n.prop("nfv-templateDetail-nodesTab-iui-field-type"), "bSortable": false}
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) {
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]);
202 var initParam = function () { //initialize template detail params
203 var paramStr = window.location.search.substring(1);
204 if (paramStr.length > 0) {
206 var params = paramStr.split("&");
207 var instanceId = params[0].substring(params[0].indexOf('=') + 1);
208 var templateQueryUrl = '/openoapi/nslcm/v1.0/ns/' + instanceId;
211 url: templateQueryUrl,
212 contentType: "application/json",
214 success: function (jsonResp) {
215 initTopo(jsonResp.nsdId)
217 error: function (xhr, ajaxOptions, thrownError) {
218 alert("Error on page : " + xhr.responseText);
224 function initTopo(templateId) {
225 vm.templateId = templateId;
226 vm.$restUrl.queryNodeTemplateUrl = commonUtil.format(vm.$restUrl.queryNodeTemplateUrl, templateId);