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 : "tmDetailController",
18 templateId : "",//store the Id of service template which shows in Topology tab page
19 globalNodesData: {},//store the nodes data which shows in Topology tab page
21 {href: "#topology", name: "Topology", value: true},
22 {href: "#nodes", name: "Nodes", value: false}
25 "sProcessing": "<img src='../common/thirdparty/data-tables/images/loading-spinner-grey.gif'/><span> "
26 + $.i18n.prop("nfv-nso-iui-table-sProcess") + "</span>",
27 "sLengthMenu": $.i18n.prop("nfv-nso-iui-table-sLengthMenu"),
28 "sZeroRecords": $.i18n.prop("nfv-nso-iui-table-sZeroRecords"),
29 "sInfo": "<span class='seperator'> </span>" + $.i18n.prop("nfv-nso-iui-table-sInfo"),
30 "sInfoEmpty": $.i18n.prop("nfv-nso-iui-table-sInfoEmpty"),
31 "sGroupActions": $.i18n.prop("nfv-nso-iui-table-sGroupActions"),
32 "sAjaxRequestGeneralError": $.i18n.prop("nfv-nso-iui-table-sAjaxRequestGeneralError"),
33 "sEmptyTable": $.i18n.prop("nfv-nso-iui-table-sEmptyTable"),
35 "sPrevious": $.i18n.prop("nfv-nso-iui-table-sPrevious"),
36 "sNext": $.i18n.prop("nfv-nso-iui-table-sNext"),
37 "sPage": $.i18n.prop("nfv-nso-iui-table-sPage"),
38 "sPageOf": $.i18n.prop("nfv-nso-iui-table-sPageOf")
42 queryNodeTemplateUrl: "/openoapi/catalog/v1/servicetemplates/{0}/nodetemplates",
43 queryTemplateInfoUrl: "/openoapi/catalog/v1/servicetemplates"
46 vm.$initTemplateData();
47 vm.$initTopoNodesData();
49 $initTemplateData: function () {
52 url: vm.$restUrl.queryTemplateInfoUrl,
53 success: function (resp) {
55 vm.nodesTab.servicesTemplateData = [];
56 for (var i = 0; i < resp.length; i++) {
57 //generate node table display data
58 vm.nodesTab.servicesTemplateData.push(resp[i]);
60 vm.nodesTab.$initNfvNodesTab();
64 commonUtil.showMessage($.i18n.prop("nfv-topology-iui-message-error"), "danger");
68 $initTopoNodesData: function () {
71 url: vm.$restUrl.queryNodeTemplateUrl,
72 success: function (resp) {
74 vm.nodesDetail.nodesTemplateDetailData = [];
75 var nodesTempData = [];
76 for (var i = 0; i < resp.length; i++) {
77 //generate node table display data
78 var nodeTemplate = topoUtil.generateNodeTemplate(resp[i]);
79 nodesTempData.push(nodeTemplate);
81 vm.globalNodesData[vm.templateId] = nodesTempData;
82 //generate topology graph display data
83 vm.nodesDetail.nodesTemplateDetailData = resp;
84 //initialize topology data
85 vm.topologyTab.topoTemplateData = topoUtil.generateTopoTemplate(vm.globalNodesData[vm.templateId]);
86 topoUtil.initTopoData(vm.topologyTab.topoTemplateData.$model);
90 commonUtil.showMessage($.i18n.prop("nfv-topology-iui-message-error"), "danger");
95 topology: "topology.html",
96 vnfTip: $.i18n.prop("nfv-topology-iui-vnf-tip"),
97 btnTip: $.i18n.prop("nfv-topology-iui-btn-return-tip"),
100 networkTopoDatas: [],
102 returnBtnVisible: false,
103 $getColor: function (index) {
104 return topoUtil.getColor(index);
106 $getCidr: function (properties) {
107 return topoUtil.getCidr(properties);
109 $getCpTop: function (index, parentBoxId) {
110 return topoUtil.getCpTop(index, parentBoxId);
112 $initTopology: function () {
113 topoUtil.initTopoData(vm.topologyTab.topoTemplateData.$model);
115 $showTopo: function (id, name) {
116 vm.topologyTab.$showTopoDetails("block", id, name);
118 $showVnfTopo: function (templateId) {
119 vm.topologyTab.returnBtnVisible = true;
120 vm.$restUrl.queryNodeTemplateUrl = "/openoapi/catalog/v1/servicetemplates/" + templateId + "/nodetemplates";
123 $returnNS: function () {
124 vm.topologyTab.returnBtnVisible = false;
125 vm.$restUrl.queryNodeTemplateUrl = "/openoapi/catalog/v1/servicetemplates/" + vm.templateId + "/nodetemplates";
128 $showTopoDetails: function (isShow, nodetypeid, nodetypename) {
129 vm.nodesDetail.isShow = isShow;
130 if (isShow == "block") {
131 vm.nodesDetail.detailTitle = nodetypename + " " + $.i18n.prop("nfv-templateDetail-nodesTab-iui-title-nodeDetail"),
132 $('#' + vm.nodesDetail.detailData[0].id).click();
133 vm.nodesDetail.detailData[0].isActive = true;
134 vm.nodesDetail.$initTopoNodesDetailTable(nodetypeid);
140 servicesTemplateData: [],
141 $nodesTabId: "ict_nodes_template_table",
142 $nodesTemplateTabFields: {// table columns
144 {"mData": "serviceTemplateId", name: "ID", "bVisible": false},
145 {"mData": "", name: "", "sClass": 'details-control'},
146 {"mData": "templateName", name: $.i18n.prop("nfv-template-iui-field-templatename")},
147 {"mData": "vendor", name: $.i18n.prop("nfv-template-iui-field-vendor")},
148 {"mData": "version", name: $.i18n.prop("nfv-template-iui-field-version")},
149 {"mData": "csarid", name: "packageID", "bVisible": false},
150 {"mData": "type", name: $.i18n.prop("nfv-template-iui-field-type")},
153 $initNfvNodesTab: function () {
155 setting.language = vm.$language;
156 setting.paginate = true;
158 //setting.sort = true;
159 setting.columns = vm.nodesTab.$nodesTemplateTabFields.table;
160 setting.restUrl = vm.$restUrl.queryTemplateInfoUrl;
161 setting.tableId = vm.nodesTab.$nodesTabId;
162 //serverPageTable.initTableWithData(setting,vm.nodesTab.$nodesTabId + '_div',vm.nodesTab.servicesTemplateData.$model);
163 serverPageTable.initDataTable(setting, {}, vm.nodesTab.$nodesTabId + '_div');
164 $('#' + vm.nodesTab.$nodesTabId + '>tbody').on("click", 'td.details-control', function () {
165 var tr = $(this).closest('tr');
166 var table = $('#' + vm.nodesTab.$nodesTabId).dataTable();
167 if (table.fnIsOpen(tr[0])) {
168 table.fnClose(tr[0]);
169 tr.removeClass('shown');
172 table.fnOpen(tr[0], vm.nodesTab.nodesList.$format_Detail(table,tr[0]), 'details');
173 tr.addClass('shown');
177 $initNodesData: function (tempId) {
180 //url: vm.$restUrl.queryNodeTemplateUrl,
181 url: "/openoapi/catalog/v1/servicetemplates/" + tempId + "/nodetemplates",
182 success: function (resp) {
184 var nodesTempData = [];
185 for (var i = 0; i < resp.length; i++) {
186 //generate node table display data
187 var nodeTemplate = topoUtil.generateNodeTemplate(resp[i]);
188 nodesTempData.push(nodeTemplate);
190 vm.nodesTab.nodesList.nodesData[tempId] = nodesTempData;
191 //generate topology graph display data
192 vm.nodesTab.nodesList.$initNodesTable(tempId);
196 commonUtil.showMessage($.i18n.prop("nfv-topology-iui-message-error"), "danger");
204 $nodesTabDataId: "ict_nodes_table",
205 $nodesTabFields: {// table columns
207 {"mData": "id", name: "ID", "bVisible": false},
210 name: $.i18n.prop("nfv-templateDetail-iui-field-nodetypename"),
212 "fnRender": tmDetailUtil.nameRender
214 {"mData": "type", name: $.i18n.prop("nfv-templateDetail-iui-field-type"), "bSortable": false},
216 "mData": "containedin",
217 name: $.i18n.prop("nfv-templateDetail-iui-field-containedin"),
221 "mData": "deployedon",
222 name: $.i18n.prop("nfv-templateDetail-iui-field-deployedon"),
226 "mData": "connectedto",
227 name: $.i18n.prop("nfv-templateDetail-iui-field-connectedto"),
231 "mData": "virtuallinksto",
232 name: $.i18n.prop("nfv-templateDetail-iui-field-virtuallinksto"),
237 $initNodesTable: function (tempId) {
239 setting.language = vm.$language;
240 setting.paginate = true;
242 //setting.sort = true;
243 setting.columns = vm.nodesTab.nodesList.$nodesTabFields.table;
244 setting.restUrl = "/openoapi/catalog/v1/servicetemplates/" + tempId + "/nodetemplates";
245 setting.tableId = vm.nodesTab.nodesList.$nodesTabDataId + "_" + tempId;
246 //serverPageTable.initTableWithData(setting,vm.nodesTab.nodesList.$nodesTabDataId + '_div',vm.nodesTab.nodesList.nodesData.$model);
247 serverPageTable.initTableWithoutLib(setting, {}, setting.tableId + '_div');
249 $format_Detail: function (oTable, nTr) {
250 var aData = oTable.fnGetData(nTr);
251 var tempId = aData.serviceTemplateId;
252 vm.nodesTab.nodesList.tempId = tempId;
253 var tableId = "ict_nodes_table" + "_" + tempId + "_div";
254 var sOut = '<div class="row-fluid" data-name="table_zone"><div class="col-xs-12" id="'+tableId+'"></div></div>'
255 vm.nodesTab.$initNodesData(tempId);
262 nodesTemplateDetailData: [], //used in topo tab page to show node detail
267 {id: "general", name: $.i18n.prop("nfv-templateDetail-nodesTab-iui-tab-general"), isActive: true},
270 name: $.i18n.prop("nfv-templateDetail-nodesTab-iui-tab-properties"),
275 name: $.i18n.prop("nfv-templateDetail-nodesTab-iui-tab-relationShips"),
279 $showDetails: function (isShow, nodetypeid, nodetypename,tempId) {
280 vm.nodesDetail.isShow = isShow;
281 if (isShow == "block") {
282 vm.nodesDetail.detailTitle = nodetypename + " " + $.i18n.prop("nfv-templateDetail-nodesTab-iui-title-nodeDetail"),
283 $('#' + vm.nodesDetail.detailData[0].id).click();
284 vm.nodesDetail.detailData[0].isActive = true;
285 vm.nodesDetail.$initNodeDetailTable(nodetypeid,tempId);
288 detailCondChange: function (index) {
289 vm.nodesDetail.detailIndex = index;
290 for (var i = 0; i < vm.nodesDetail.detailData.length; i++) {
291 vm.nodesDetail.detailData[i].isActive = false;
293 vm.nodesDetail.detailData[index].isActive = true;
295 $tableFields : {// table columns
299 "name": $.i18n.prop("nfv-templateDetail-nodesTab-iui-field-key"),
304 "name": $.i18n.prop("nfv-templateDetail-nodesTab-iui-field-value"),
311 "name": $.i18n.prop("nfv-templateDetail-nodesTab-iui-field-key"),
316 "name": $.i18n.prop("nfv-templateDetail-nodesTab-iui-field-value"),
322 "mData": "sourceNodeName",
323 "name": $.i18n.prop("nfv-templateDetail-nodesTab-iui-field-sourceNodeName"),
327 "mData": "targetNodeName",
328 "name": $.i18n.prop("nfv-templateDetail-nodesTab-iui-field-targetNodeName"),
333 "name": $.i18n.prop("nfv-templateDetail-nodesTab-iui-field-type"),
338 $initNodeDetailTable: function (nodetemplateid,tempId) {
339 var data = topoUtil.getCurrentDetailData(vm.nodesTab.nodesList.nodesData[tempId], nodetemplateid);
340 //initialize three tables of nodedetail
341 $.each(vm.nodesDetail.$tableFields, function (key, value) {
343 setting.language = vm.$language;
344 setting.paginate = false;
345 setting.info = false;
346 setting.columns = value;
347 setting.tableId = "ict_table_" + key;
348 serverPageTable.initTableWithData(setting, setting.tableId + '_div', data[key]);
351 $initTopoNodesDetailTable: function (nodetemplateid) {
352 var data = topoUtil.getCurrentDetailData(vm.nodesDetail.nodesTemplateDetailData.$model, nodetemplateid);
353 //initialize three tables of nodedetail
354 $.each(vm.nodesDetail.$tableFields, function (key, value) {
356 setting.language = vm.$language;
357 setting.paginate = false;
358 setting.info = false;
359 setting.columns = value;
360 setting.tableId = "ict_table_" + key;
361 serverPageTable.initTableWithData(setting, setting.tableId + '_div', data[key]);
366 $eventsTabId: "ict_events_table",
367 $eventsTabFields: {// table columns
369 {"mData": "currentStepId", name: "ID", "bVisible": false},
371 "mData": "currentStepName",
372 name: $.i18n.prop("nfv-templateDetail-executionTab-iui-field-currentStepName")
375 "mData": "currentStepStatus",
376 name: $.i18n.prop("nfv-templateDetail-executionTab-iui-field-currentStepStatus")
379 "mData": "currentStepDesc",
380 name: $.i18n.prop("nfv-templateDetail-executionTab-iui-field-currentStepDesc")
382 {"mData": "currentTime", name: $.i18n.prop("nfv-templateDetail-executionTab-iui-field-executionTime")},
383 {"mData": "allSteps", name: "allSteps", "bVisible": false}
386 $queryEventsInfoUrl: "/api/nsoc/appinstance/operateschedule?instanceId=",
388 $getEventsCond: function () {
392 $initEventsTable: function () {
393 console.log("initEventsTable ");
395 setting.language = vm.$language;
396 setting.paginate = false;
397 setting.info = false;
398 setting.columns = vm.executionTab.$eventsTabFields.table;
399 setting.restUrl = vm.executionTab.$queryEventsInfoUrl;
400 setting.tableId = vm.executionTab.$eventsTabId;
401 serverPageTable.initDataTable(setting, vm.executionTab.$getEventsCond(),
402 vm.executionTab.$eventsTabId + '_div');
407 vm.executionTab.$initEventsTable();
413 var initParam = function () { //initialize template detail params
414 var paramStr = window.location.search.substring(1);
415 if (paramStr.length > 0) {
416 var params = paramStr.split("&");
417 var templateId = params[0].substring(params[0].indexOf('=') + 1);
418 var flavor = params[1].substring(params[1].indexOf('=') + 1);
421 vm.templateId = templateId;
422 vm.$restUrl.queryNodeTemplateUrl = commonUtil.format(vm.$restUrl.queryNodeTemplateUrl, templateId);
425 vm.$restUrl.queryNodeTemplateUrl += "?flavor=" + flavor;