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 : "tmNodesController",
\r
18 templateId : "", //store the Id of service template which shows in Topology tab page
\r
20 "sProcessing": "<img src='../common/thirdparty/data-tables/images/loading-spinner-grey.gif'/><span> "
\r
21 + $.i18n.prop("nfv-nso-iui-table-sProcess") + "</span>",
\r
22 "sLengthMenu": $.i18n.prop("nfv-nso-iui-table-sLengthMenu"),
\r
23 "sZeroRecords": $.i18n.prop("nfv-nso-iui-table-sZeroRecords"),
\r
24 "sInfo": "<span class='seperator'> </span>" + $.i18n.prop("nfv-nso-iui-table-sInfo"),
\r
25 "sInfoEmpty": $.i18n.prop("nfv-nso-iui-table-sInfoEmpty"),
\r
26 "sGroupActions": $.i18n.prop("nfv-nso-iui-table-sGroupActions"),
\r
27 "sAjaxRequestGeneralError": $.i18n.prop("nfv-nso-iui-table-sAjaxRequestGeneralError"),
\r
28 "sEmptyTable": $.i18n.prop("nfv-nso-iui-table-sEmptyTable"),
\r
30 "sPrevious": $.i18n.prop("nfv-nso-iui-table-sPrevious"),
\r
31 "sNext": $.i18n.prop("nfv-nso-iui-table-sNext"),
\r
32 "sPage": $.i18n.prop("nfv-nso-iui-table-sPage"),
\r
33 "sPageOf": $.i18n.prop("nfv-nso-iui-table-sPageOf")
\r
37 queryNodeTemplateUrl: "/openoapi/catalog/v1/servicetemplates/{0}/nodetemplates",
\r
38 queryTemplateInfoUrl: "/openoapi/catalog/v1/servicetemplates"
\r
40 $init: function () {
\r
41 vm.$initTemplateData();
\r
43 $initTemplateData: function () {
\r
46 url: vm.$restUrl.queryTemplateInfoUrl,
\r
47 success: function (resp) {
\r
49 vm.servicesTemplateData = [];
\r
50 for (var i = 0; i < resp.length; i++) {
\r
51 //generate node table display data
\r
52 vm.servicesTemplateData.push(resp[i]);
\r
54 vm.$initNfvNodesTab();
\r
57 error: function () {
\r
58 commonUtil.showMessage($.i18n.prop("nfv-topology-iui-message-error"), "danger");
\r
62 $initNodesData: function (tempId) {
\r
65 //url: vm.$restUrl.queryNodeTemplateUrl,
\r
66 url: "/openoapi/catalog/v1/servicetemplates/" + tempId + "/nodetemplates",
\r
67 success: function (resp) {
\r
69 var nodesTempData = [];
\r
70 for (var i = 0; i < resp.length; i++) {
\r
71 //generate node table display data
\r
72 var nodeTemplate = topoUtil.generateNodeTemplate(resp[i]);
\r
73 nodesTempData.push(nodeTemplate);
\r
75 vm.nodesList.nodesData[tempId] = nodesTempData;
\r
76 vm.nodesList.$initNodesTable(tempId);
\r
79 error: function () {
\r
80 commonUtil.showMessage($.i18n.prop("nfv-topology-iui-message-error"), "danger");
\r
84 servicesTemplateData: [],
\r
85 $nodesTabId: "ict_nodes_template_table",
\r
86 $nodesTemplateTabFields: {// table columns
\r
88 {"mData": "serviceTemplateId", name: "ID","bVisible": false},
\r
89 {"mData": "", name: "","sClass": 'details-control'},
\r
90 {"mData": "templateName", name: $.i18n.prop("nfv-template-iui-field-templatename")},
\r
91 {"mData": "vendor", name: $.i18n.prop("nfv-template-iui-field-vendor")},
\r
92 {"mData": "version", name: $.i18n.prop("nfv-template-iui-field-version")},
\r
93 {"mData":"csarid", name: "packageID","bVisible": false},
\r
94 {"mData": "type", name: $.i18n.prop("nfv-template-iui-field-type")},
\r
97 $initNfvNodesTab: function() {
\r
99 setting.language = vm.$language;
\r
100 setting.paginate = true;
\r
101 setting.info = true;
\r
102 setting.columns = vm.$nodesTemplateTabFields.table;
\r
103 setting.restUrl = vm.$restUrl.queryTemplateInfoUrl;
\r
104 setting.tableId = vm.$nodesTabId;
\r
105 serverPageTable.initDataTable(setting,{},vm.$nodesTabId + '_div');
\r
106 $('#' + vm.$nodesTabId + '>tbody').on("click", 'td.details-control', function () {
\r
107 var tr = $(this).closest('tr');
\r
108 var table = $('#' + vm.$nodesTabId).dataTable();
\r
109 if (table.fnIsOpen(tr[0])) {
\r
110 table.fnClose(tr[0]);
\r
111 tr.removeClass('shown');
\r
114 table.fnOpen(tr[0], vm.nodesList.$format_Detail(table,tr[0]), 'details');
\r
115 tr.addClass('shown');
\r
122 nodesData: {}, //used in Nodes tab page, to store nodes data of difference service template
\r
123 tempId:"", //used in Nodes tab page,to store the node's templateId
\r
124 $nodesTabDataId: "ict_nodes_table",
\r
125 $nodesTabFields: {// table columns
\r
127 {"mData": "id", name: "ID", "bVisible": false},
\r
130 name: $.i18n.prop("nfv-templateDetail-iui-field-nodetypename"),
\r
132 "fnRender": tmNodesDetailUtil.nameRender
\r
134 {"mData": "type", name: $.i18n.prop("nfv-templateDetail-iui-field-type"), "bSortable": false},
\r
136 "mData": "containedin",
\r
137 name: $.i18n.prop("nfv-templateDetail-iui-field-containedin"),
\r
141 "mData": "deployedon",
\r
142 name: $.i18n.prop("nfv-templateDetail-iui-field-deployedon"),
\r
146 "mData": "connectedto",
\r
147 name: $.i18n.prop("nfv-templateDetail-iui-field-connectedto"),
\r
151 "mData": "virtuallinksto",
\r
152 name: $.i18n.prop("nfv-templateDetail-iui-field-virtuallinksto"),
\r
157 $initNodesTable: function (tempId) {
\r
159 setting.language = vm.$language;
\r
160 setting.paginate = true;
\r
161 setting.info = true;
\r
162 setting.columns = vm.nodesList.$nodesTabFields.table;
\r
163 setting.restUrl = "/openoapi/catalog/v1/servicetemplates/" + tempId + "/nodetemplates";
\r
164 setting.tableId = vm.nodesList.$nodesTabDataId + "_" + tempId;
\r
165 //serverPageTable.initTableWithData(setting,vm.nodesList.$nodesTabDataId + '_div',vm.nodesList.nodesData.$model);
\r
166 serverPageTable.initTableWithoutLib(setting, {}, setting.tableId + '_div');
\r
168 $format_Detail: function (oTable, nTr) {
\r
169 var aData = oTable.fnGetData(nTr);
\r
170 var tempId = aData.serviceTemplateId;
\r
171 vm.nodesList.tempId = tempId;
\r
172 var tableId = "ict_nodes_table" + "_" + tempId + "_div";
\r
173 var sOut = '<div class="row-fluid" data-name="table_zone"><div class="col-xs-12" id="'+tableId+'"></div></div>'
\r
174 vm.$initNodesData(tempId);
\r
184 {id: "general", name: $.i18n.prop("nfv-templateDetail-nodesTab-iui-tab-general"), isActive: true},
\r
187 name: $.i18n.prop("nfv-templateDetail-nodesTab-iui-tab-properties"),
\r
191 id: "relationShips",
\r
192 name: $.i18n.prop("nfv-templateDetail-nodesTab-iui-tab-relationShips"),
\r
196 $showDetails: function (isShow, nodetypeid, nodetypename,tempId) {
\r
197 vm.nodesDetail.isShow = isShow;
\r
198 if (isShow == "block") {
\r
199 vm.nodesDetail.detailTitle = nodetypename + " " + $.i18n.prop("nfv-templateDetail-nodesTab-iui-title-nodeDetail"),
\r
200 $('#' + vm.nodesDetail.detailData[0].id).click();
\r
201 vm.nodesDetail.detailData[0].isActive = true;
\r
202 vm.nodesDetail.$initNodeDetailTable(nodetypeid,tempId);
\r
205 detailCondChange: function (index) {
\r
206 vm.nodesDetail.detailIndex = index;
\r
207 for (var i = 0; i < vm.nodesDetail.detailData.length; i++) {
\r
208 vm.nodesDetail.detailData[i].isActive = false;
\r
210 vm.nodesDetail.detailData[index].isActive = true;
\r
212 $tableFields : {// table columns
\r
216 "name": $.i18n.prop("nfv-templateDetail-nodesTab-iui-field-key"),
\r
221 "name": $.i18n.prop("nfv-templateDetail-nodesTab-iui-field-value"),
\r
228 "name": $.i18n.prop("nfv-templateDetail-nodesTab-iui-field-key"),
\r
233 "name": $.i18n.prop("nfv-templateDetail-nodesTab-iui-field-value"),
\r
239 "mData": "sourceNodeName",
\r
240 "name": $.i18n.prop("nfv-templateDetail-nodesTab-iui-field-sourceNodeName"),
\r
244 "mData": "targetNodeName",
\r
245 "name": $.i18n.prop("nfv-templateDetail-nodesTab-iui-field-targetNodeName"),
\r
250 "name": $.i18n.prop("nfv-templateDetail-nodesTab-iui-field-type"),
\r
255 $initNodeDetailTable: function (nodetemplateid,tempId) {
\r
256 var data = topoUtil.getCurrentDetailData(vm.nodesList.nodesData[tempId], nodetemplateid);
\r
257 //initialize three tables of nodedetail
\r
258 $.each(vm.nodesDetail.$tableFields, function(key, value){
\r
260 setting.language = vm.$language;
\r
261 setting.paginate = false;
\r
262 setting.info = false;
\r
263 setting.columns = value;
\r
264 setting.tableId = "ict_table_" + key;
\r
265 serverPageTable.initTableWithData(setting, setting.tableId + '_div', data[key]);
\r
271 var initParam = function() { //initialize template detail params
\r
272 var paramStr = window.location.search.substring(1);
\r
273 if(paramStr.length > 0) {
\r
274 var params = paramStr.split("&");
\r
275 var templateId = params[0].substring(params[0].indexOf('=') + 1);
\r
276 var flavor = params[1].substring(params[1].indexOf('=') + 1);
\r
279 vm.templateId = templateId;
\r
280 vm.$restUrl.queryNodeTemplateUrl = commonUtil.format(vm.$restUrl.queryNodeTemplateUrl, templateId);
\r
283 vm.$restUrl.queryNodeTemplateUrl += "?flavor=" + flavor;
\r