CLIENT GUI Framework
[vnfsdk/refrepo.git] / portal-lifecyclemgr / src / main / webapp / lifecyclemgr / js / tmNodesController.js
1 /*\r
2  * Copyright 2016-2017 ZTE Corporation.\r
3  *\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
7  *\r
8  *         http://www.apache.org/licenses/LICENSE-2.0\r
9  *\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
15  */\r
16 \r
17 var vm = avalon.define({\r
18     $id: "tmNodesController",\r
19     instanceId: "",\r
20     $language: {\r
21         "sProcessing": "<img src='../common/thirdparty/data-tables/images/loading-spinner-grey.gif'/><span>&nbsp;&nbsp;"\r
22         + $.i18n.prop("nfv-nso-iui-table-sProcess") + "</span>",\r
23         "sLengthMenu": $.i18n.prop("nfv-nso-iui-table-sLengthMenu"),\r
24         "sZeroRecords": $.i18n.prop("nfv-nso-iui-table-sZeroRecords"),\r
25         "sInfo": "<span class='seperator'>  </span>" + $.i18n.prop("nfv-nso-iui-table-sInfo"),\r
26         "sInfoEmpty": $.i18n.prop("nfv-nso-iui-table-sInfoEmpty"),\r
27         "sGroupActions": $.i18n.prop("nfv-nso-iui-table-sGroupActions"),\r
28         "sAjaxRequestGeneralError": $.i18n.prop("nfv-nso-iui-table-sAjaxRequestGeneralError"),\r
29         "sEmptyTable": $.i18n.prop("nfv-nso-iui-table-sEmptyTable"),\r
30         "oPaginate": {\r
31             "sPrevious": $.i18n.prop("nfv-nso-iui-table-sPrevious"),\r
32             "sNext": $.i18n.prop("nfv-nso-iui-table-sNext"),\r
33             "sPage": $.i18n.prop("nfv-nso-iui-table-sPage"),\r
34             "sPageOf": $.i18n.prop("nfv-nso-iui-table-sPageOf")\r
35         }\r
36     },\r
37     $restUrl: {\r
38         queryNodeInstanceUrl: "/openoapi/nslcm/v1.0/ns/"\r
39     },\r
40     $init: function () {\r
41         vm.$initInstanceData();\r
42     },\r
43     $initInstanceData: function () {\r
44         $.ajax({\r
45             type: "GET",\r
46             url: vm.$restUrl.queryNodeInstanceUrl,\r
47             success: function (resp) {\r
48                 if (resp) {\r
49                     vm.servicesInstanceData = [\r
50                         resp.nsName,\r
51                         resp.description,\r
52                         resp.nsdId,\r
53                         resp.nsState\r
54                     ];\r
55                     var tableData = [\r
56                         [resp.vnfInfoId, 'vnf'],\r
57                         [resp.vlInfo.vldId, 'vl'],\r
58                         [resp.vnffgInfo.vnffgInstanceId, 'vnffg']\r
59                     ];\r
60                     vm.$initNfvNodesTab();\r
61                     vm.nodesList.nodesData = tableData;\r
62                     vm.nodesList.$initNodesTable();\r
63                 }\r
64             },\r
65             error: function () {\r
66                 commonUtil.showMessage($.i18n.prop("nfv-topology-iui-message-error"), "danger");\r
67             }\r
68         });\r
69     },\r
70     servicesInstanceData: [],\r
71     $nodesTabId: "ict_nodes_template_table",\r
72     $nodesInstanceTabFields: {// table columns\r
73         table: [\r
74             {"mData": "serviceInstanceId", name: "ID", "bVisible": false},\r
75             {"mData": "", name: "", "sClass": 'details-control'},\r
76             {"mData": "serviceName", name: "Service Name"},\r
77             {"mData": "serviceDescription", name: "Service Description"},\r
78             {"mData": "nsdId", name: "NSD ID"},\r
79             {"mData": "status", name: "Status"}\r
80         ]\r
81     },\r
82     $initNfvNodesTab: function () {\r
83         var setting = {};\r
84         setting.language = vm.$language;\r
85         setting.paginate = true;\r
86         setting.info = true;\r
87         setting.columns = vm.$nodesInstanceTabFields.table;\r
88         setting.tableId = vm.$nodesTabId;\r
89         vm.$initDataTable(setting, vm.$nodesTabId + '_div', vm.servicesInstanceData);\r
90         $('#' + vm.$nodesTabId + '>tbody').on("click", 'td.details-control', function () {\r
91             var tr = $(this).closest('tr');\r
92             var table = $('#' + vm.$nodesTabId).dataTable();\r
93             if (table.fnIsOpen(tr[0])) {\r
94                 table.fnClose(tr[0]);\r
95                 tr.removeClass('shown');\r
96             }\r
97             else {\r
98                 table.fnOpen(tr[0], vm.nodesList.$format_Detail(), 'details');\r
99                 tr.addClass('shown');\r
100             }\r
101         });\r
102     },\r
103 \r
104     $initDataTable: function (setting, divId, tableData) {\r
105         //transform colomn\r
106         var column = setting.columns;\r
107         //empty table\r
108         $('#' + divId).children().remove();\r
109         var tableId = setting.tableId;\r
110         var tableEleStr = '<table class="table table-striped table-bordered table-hover" id= ' + tableId + '>'\r
111             + '<thead>'\r
112             + '<tr role="row" class="heading" >'\r
113             + '</tr>'\r
114             + '</thead>'\r
115             + '<tbody>'\r
116             + '</tbody>'\r
117             + '</table>';\r
118         $('#' + divId).append(tableEleStr);\r
119         var trEle = $('#' + tableId + ' > thead >tr');\r
120         for (var one in column) {\r
121             var th = '<th>' + column[one].name + '</th>';\r
122             trEle.append(th);\r
123         }\r
124         var table = $("#" + tableId).dataTable({\r
125             "sDom": '<"top"rt><"bottom"lip>',\r
126             "oLanguage": setting.language,//language\r
127             "bPaginate": setting.paginate,// page button\r
128             "bFilter": false,// search bar\r
129             "bAutoWidth": true,//automatically set colum width\r
130             "bLengthChange": true,// record number in each row\r
131             "iDisplayLength": 10,// row number in each page\r
132             "bSort": setting.sort ? true : false,// sort\r
133             "bInfo": setting.info,// Showing 1 to 10 of 23 entries \r
134             "bWidth": true,\r
135             "bScrollCollapse": true,\r
136             "sPaginationType": "bootstrap_extended", // page, a total of two kinds of style, another one is two_button\r
137             "bProcessing": true,\r
138             "bServerSide": false,\r
139             "bDestroy": true,\r
140             "bSortCellsTop": true,\r
141             "aoColumns": setting.columns,\r
142             "aoColumnDefs": [\r
143                 {\r
144                     sDefaultContent: '',\r
145                     aTargets: ['_all']\r
146                 }\r
147             ],\r
148             "aaData": tableData\r
149         });\r
150     };\r
151 \r
152 //nodes list table\r
153 nodesList :{\r
154     nodesData: [],\r
155         $nodesTabDataId\r
156 :\r
157     "ict_nodes_table",\r
158         $nodesTabFields\r
159 :\r
160     {// table columns\r
161         table: [\r
162             {"mData": "id", name: "ID", "bVisible": false},\r
163             {"mData": "instanceId", name: "Instance Id"},\r
164             {"mData": "nodeType", name: "Node Type"}\r
165         ]\r
166     }\r
167 ,\r
168     $initNodesTable: function () {\r
169         var setting = {};\r
170         setting.language = vm.$language;\r
171         setting.paginate = true;\r
172         setting.info = true;\r
173         setting.columns = vm.nodesList.$nodesTabFields.table;\r
174         setting.tableId = vm.nodesList.$nodesTabDataId;\r
175         vm.$initDataTable(setting, vm.nodesList.$nodesTabDataId + '_div', vm.nodesList.nodesData);\r
176     }\r
177 }\r
178 })\r
179 ;\r
180 \r
181 var initParam = function () {\r
182     var paramStr = window.location.search.substring(1);\r
183     if (paramStr.length > 0) {\r
184         avalon.scan();\r
185         var params = paramStr.split("&");\r
186         var instanceId = params[0].substring(params[0].indexOf('=') + 1);\r
187 \r
188         vm.instanceId = instanceId;\r
189         vm.$restUrl.queryNodeInstanceUrl = commonUtil.format(vm.$restUrl.queryNodeInstanceUrl, instanceId);\r
190         vm.$init();\r
191     }\r
192 };\r
193 \r
194 initParam();