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