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