CLIENT GUI Framework
[vnfsdk/refrepo.git] / portal-catalog / src / main / webapp / catalog / js / package / pmController.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 var vm = avalon.define({\r
17         $id : "pmController",\r
18     $tableId : "ict_package_table",\r
19     resource : {\r
20         packageInfo : [],\r
21         packageDetails : "",\r
22         vimSelectItems : []\r
23     },\r
24     csarIdSelected : "",\r
25         $packageTableFields : {// table columns\r
26                 table: [\r
27             //{"mData":"",name:$.i18n.prop("nfv-package-iui-field-sn")},\r
28             {"mData": "csarId", name: "ID", "bVisible": false},\r
29             {"mData": "name", name: $.i18n.prop("nfv-package-iui-field-name"),"fnRender" : pmUtil.nameRender},\r
30             {"mData": "type", name: $.i18n.prop("nfv-package-iui-field-type")},\r
31             {"mData": "usageState", name: $.i18n.prop("nfv-package-iui-field-usagestate")},\r
32             {"mData": "processState", name: $.i18n.prop("nfv-package-iui-field-processstate")},\r
33             {"mData": "operationalState", name: $.i18n.prop("nfv-package-iui-field-operationalstate")},\r
34             {"mData": "onBoardState", name: $.i18n.prop("nfv-package-iui-field-onboardstate"), "fnRender" : pmUtil.onBoardRender},\r
35             {"mData": "", name: $.i18n.prop("nfv-package-iui-field-operation"), "fnRender" : pmUtil.operationRender}\r
36                 ]\r
37         },\r
38         $language: {\r
39         "sProcessing": "<img src='../common/thirdparty/data-tables/images/loading-spinner-grey.gif'/><span>&nbsp;&nbsp;"\r
40                         +$.i18n.prop("nfv-nso-iui-table-sProcess")+"</span>",\r
41         "sLengthMenu": $.i18n.prop("nfv-nso-iui-table-sLengthMenu"),\r
42         "sZeroRecords": $.i18n.prop("nfv-nso-iui-table-sZeroRecords"),\r
43         "sInfo": "<span class='seperator'>  </span>" + $.i18n.prop("nfv-nso-iui-table-sInfo"),\r
44         "sInfoEmpty": $.i18n.prop("nfv-nso-iui-table-sInfoEmpty"),\r
45         "sGroupActions": $.i18n.prop("nfv-nso-iui-table-sGroupActions"),\r
46         "sAjaxRequestGeneralError":$.i18n.prop("nfv-nso-iui-table-sAjaxRequestGeneralError"),\r
47         "sEmptyTable": $.i18n.prop("nfv-nso-iui-table-sEmptyTable"),\r
48         "oPaginate": {\r
49             "sPrevious": $.i18n.prop("nfv-nso-iui-table-sPrevious"),\r
50             "sNext": $.i18n.prop("nfv-nso-iui-table-sNext"),\r
51             "sPage": $.i18n.prop("nfv-nso-iui-table-sPage"),\r
52             "sPageOf": $.i18n.prop("nfv-nso-iui-table-sPageOf")\r
53         }\r
54     },\r
55     $restUrl:{\r
56         queryPackageInfoUrl: "/openoapi/catalog/v1/csars",\r
57         uploadPackageUrl: "/openoapi/catalog/v1/csars",\r
58         gsarDelPackageUrl: "/openoapi/gso/v1/nspackages",\r
59         ssarDelPackageUrl: "/openoapi/catalog/v1/csars",\r
60         nsarDelPackageUrl: "/openoapi/nslcm/v1/nspackage",\r
61         nfarDelPackageUrl: "/openoapi/nslcm/v1/vnfpackage",\r
62         gsarOnboardUrl: "/openoapi/gso/v1/nspackages",\r
63         ssarOnboardUrl: "/openoapi/catalog/v1/csars",\r
64         nsarOnboardUrl: "/openoapi/nslcm/v1/nspackage",\r
65         nfarOnboardUrl: "/openoapi/nslcm/v1/vnfpackage",\r
66         changePackageStatusUrl : "/openoapi/catalog/v1/csars",\r
67         queryVimInfoUrl : "/openoapi/extsys/v1/vims"\r
68     },\r
69     $getPackageCond: function() {\r
70         var cond = {};\r
71                 return cond;\r
72     },\r
73         //$initTable: function() {\r
74      //   var url=vm.$restUrl.queryPackageInfoUrl;\r
75      //   commonUtil.get(url,null,function(resp) {\r
76      //       if (resp) {\r
77      //           vm.resource.packageInfo=resp;\r
78      //       }\r
79      //   })\r
80         //},\r
81     $initTable: function() {\r
82         var setting = {};\r
83         setting.language = vm.$language;\r
84         setting.paginate = true;\r
85         setting.info = true;\r
86         setting.sort = true;\r
87         setting.columns = vm.$packageTableFields.table;\r
88         setting.restUrl = vm.$restUrl.queryPackageInfoUrl;\r
89         setting.tableId = vm.$tableId;\r
90         serverPageTable.initDataTable(setting,{},vm.$tableId + '_div');\r
91     },\r
92     packageDetail : {\r
93         detailTitle : "",\r
94         isShow : "none",\r
95         detailIndex : 0,\r
96         detailData : [{\r
97             id : "general",\r
98             name : $.i18n.prop("com_zte_ums_eco_roc_rsview_info"),\r
99             isActive : true\r
100         }, {\r
101             id : "relationShips",\r
102             name : $.i18n.prop("com_zte_ums_eco_roc_rsview_relation"),\r
103             isActive : false\r
104         }\r
105         ],\r
106         $showDetails : function (isShow, csarId, name) {\r
107             vm.packageDetail.isShow = isShow;\r
108             vm.packageDetail.detailCondChange(0);\r
109             if (isShow == "block") {\r
110                 vm.packageDetail.detailTitle = name + "-" + $.i18n.prop("nfv-package-iui_packageview_packageDetail"),\r
111                     $('#' + vm.packageDetail.detailData[0].id).click();\r
112                 vm.packageDetail.detailData[0].isActive = true;\r
113                 vm.packageDetail.$initPackageDetailTable(csarId);\r
114             }\r
115         },\r
116         detailCondChange : function (index) {\r
117             vm.packageDetail.detailIndex = index;\r
118             for (var i = 0; i < vm.packageDetail.detailData.length; i++) {\r
119                 vm.packageDetail.detailData[i].isActive = false;\r
120             }\r
121             vm.packageDetail.detailData[index].isActive = true;\r
122         },\r
123         $initPackageDetailTable : function (csarId) {\r
124             var url=vm.$restUrl.queryPackageInfoUrl + "/" + csarId;\r
125             commonUtil.get(url,null,function(resp) {\r
126                 if (resp) {\r
127                     vm.resource.packageDetails=resp;\r
128                 }\r
129        })\r
130 \r
131         },\r
132         $isRowDeletingStatus : function(name) {\r
133             var table = $("#" + vm.$tableId).dataTable();\r
134             var tableData = table.fnGetData();\r
135             for (var i=0; i<tableData.length; i++) {\r
136                 if(tableData[i]["name"] == name &&\r
137                     tableData[i]["status"].indexOf($.i18n.prop("nfv-package-iui-status-deleting")) > -1) {\r
138                     return true;\r
139                 }\r
140             }\r
141             return false;\r
142         },\r
143     },\r
144     selectVimDialog : {\r
145         currentRadioClicked : [],\r
146         clickedIndex : "",\r
147         nfarOnBoardParam : {\r
148             csarId : "",\r
149             vimIds : [],\r
150             labVimId : "",\r
151         },\r
152         $initData : function(csarId) {\r
153             var url=vm.$restUrl.queryVimInfoUrl;\r
154             commonUtil.get(url,null,function(resp) {\r
155                 if (resp) {\r
156                     vm.resource.vimSelectItems=resp;\r
157                 }\r
158             })\r
159             vm.selectVimDialog.nfarOnBoardParam.csarId = csarId;\r
160         },\r
161         $confirmBtnClick : function () {\r
162             var labVimId = "";\r
163             var vimIds = [];\r
164             var testEnvCount = 0;\r
165             for(var i=0; i<vm.resource.vimSelectItems.length; i++) {\r
166                 var radioId = "testEnvRadios" + i;\r
167                 var checkboxId = "produceEnvChecks" + i;\r
168                 if(document.getElementById(radioId).checked) {\r
169                     labVimId = vm.resource.vimSelectItems[i].vimId;\r
170                 }\r
171                 if(document.getElementById(checkboxId).checked) {\r
172                     vimIds.push(vm.resource.vimSelectItems[i].vimId);\r
173                 }\r
174             }\r
175             vm.selectVimDialog.nfarOnBoardParam.labVimId = labVimId;\r
176             vm.selectVimDialog.nfarOnBoardParam.vimIds = vimIds;\r
177             var extData = vm.selectVimDialog.nfarOnBoardParam.$model;\r
178             pmUtil.doNFAROnboard(extData);\r
179             $("#selectVimDialog").modal("hide");\r
180         },\r
181         $radioClicked : function(index) {\r
182             var radioId = "testEnvRadios" + index;\r
183             var checkboxId = "produceEnvChecks" + index;\r
184             if(vm.selectVimDialog.currentRadioClicked[index] && vm.selectVimDialog.clickedIndex == index) {\r
185                 vm.selectVimDialog.currentRadioClicked[index] = false;\r
186                 document.getElementById(radioId).checked = false;\r
187                 document.getElementById(checkboxId).disabled = false;\r
188             } else {\r
189                 for(var i=0; i<vm.resource.vimSelectItems.length; i++) {\r
190                     var uncheckId = "produceEnvChecks" + i;\r
191                     document.getElementById(uncheckId).disabled = false;\r
192                 }\r
193                 document.getElementById(checkboxId).checked = false;\r
194                 document.getElementById(checkboxId).disabled = true;\r
195                 vm.selectVimDialog.currentRadioClicked[index] = true;\r
196                 vm.selectVimDialog.clickedIndex = index;\r
197             }\r
198         }\r
199     },\r
200 \r
201     $delPackage : function(csarId,type) {\r
202         bootbox.confirm($.i18n.prop("nfv-package-iui-message-delete-confirm"), function(result){\r
203             var url = "";\r
204             if(result) {\r
205                 if(type == "NSAR") {\r
206                     url = vm.$restUrl.nsarDelPackageUrl + "/" + csarId;\r
207                 } else if(type == "NFAR") {\r
208                     url = vm.$restUrl.nfarDelPackageUrl + "/" + csarId;\r
209                 } else if(type == "GSAR") {\r
210                     url = vm.$restUrl.gsarDelPackageUrl + "/" + csarId;\r
211                 } else if(type == "SSAR") {\r
212                     url = vm.$restUrl.ssarDelPackageUrl + "/" + csarId;\r
213                 }\r
214                 pmUtil.delPackage(url);\r
215             }\r
216         });\r
217     },\r
218     isRowOnBoardingStatus : function(csarId) {\r
219         var table = $("#" + vm.$tableId).dataTable();\r
220         var tableData = table.fnGetData();\r
221         for (var i=0; i<tableData.length; i++) {\r
222             if(tableData[i]["name"] == name &&\r
223                 tableData[i]["status"].indexOf($.i18n.prop("nfv-package-iui-status-onboarding")) > -1) {\r
224                 return true;\r
225             }\r
226         }\r
227         return false;\r
228     },\r
229 \r
230     onBoardPackage : function(csarId,type,onBoardState) {\r
231         var param = {\r
232             csarId : csarId\r
233         };\r
234         if(type == "NSAR") {\r
235             var url = vm.$restUrl.nsarOnboardUrl;\r
236             pmUtil.doOnBoard(url, param);\r
237         } else if(type == "NFAR") {\r
238             vm.csarIdSelected = csarId;\r
239             vm.showOnboardDialog(csarId);\r
240         } else if(type == "GSAR") {\r
241             var url = vm.$restUrl.gsarOnboardUrl;\r
242             pmUtil.doOnBoard(url, param);\r
243         } else if(type == "SSAR") {\r
244             var ssarTarOnbardState="";\r
245             var operationalState="";\r
246             if(onBoardState =="onBoarded") {\r
247                 ssarTarOnbardState = "non-onBoarded";\r
248                 operationalState = "Disabled";\r
249             } else {\r
250                 ssarTarOnbardState = "onBoarded";\r
251                 operationalState = "Enabled";\r
252             }\r
253             var url = vm.$restUrl.ssarOnboardUrl+"/"+csarId+"?onBoardState="+ssarTarOnbardState+"&operationalState="+operationalState;\r
254             pmUtil.doSSAROnboard(url);\r
255         }\r
256     },\r
257     showOnboardDialog : function(csarId) {\r
258         vm.selectVimDialog.$initData(csarId);\r
259         $("#selectVimDialog").modal("show");\r
260     },\r
261     $initUpload : function() {\r
262         $("#fileupload").fileupload({\r
263             url : vm.$restUrl.uploadPackageUrl,\r
264             dropZone: $('#dropzone'),\r
265             maxNumberOfFiles : 1,\r
266             maxChunkSize : 20000000, //20M\r
267             autoUpload : false,\r
268             add : function(e, data) {\r
269                 $("#bar").css('width', '0%');\r
270                 $("#persent").text('0%');\r
271                 $("#fileName").text(data.files[0].name);\r
272                 $("#fileremove").attr("disabled", false);\r
273                 $("#filesubmit").attr("disabled", false);\r
274 \r
275                 $("#filesubmit").remove();\r
276                 $('<button id="filesubmit" class="btn btn-default" type="button"/>').text($.i18n.prop("nfv-package-iui-drop-zone-uploadBtn"))\r
277                     .appendTo($(".input-group-btn")[0])\r
278                     .click(function () {\r
279                         var fileName = data.files[0].name;\r
280                         var existPackage = pmUtil.getExistPackageByName(fileName);\r
281                         if(existPackage == 0){//0:package is not exist\r
282                             $(".progress").addClass("active");\r
283                             data.submit();\r
284                         } else {\r
285                             var msg = "";\r
286                             if(existPackage == 1){//1:package not exist, instance reference this csar\r
287                                 msg = $.i18n.prop("nfv-package-iui-message-upload-csar-deletionpending");\r
288                             }\r
289                             if(existPackage == 2){//2:package exist\r
290                                 msg = $.i18n.prop("nfv-package-iui-message-upload-csar-exist");\r
291                             }\r
292 \r
293                             bootbox.confirm(msg, function(result){\r
294                                 if(result) {\r
295                                     $(".progress").addClass("active");\r
296                                     data.submit();\r
297                                 }\r
298                             });\r
299                         }\r
300                     });\r
301                 $("#fileremove").click(function(){\r
302                     $("#bar").css('width', '0%');\r
303                     $("#persent").text("");\r
304                     $("#fileName").text("");\r
305                     $("#filesubmit").attr("disabled", true);\r
306                     $("#fileremove").attr("disabled", true);\r
307                 });\r
308             },\r
309             done : function(e, data) {\r
310                 commonUtil.showMessage($.i18n.prop("nfv-package-iui-message-upload-success"), 'success');\r
311             },\r
312             fail : function(e, data) {\r
313                 commonUtil.showMessage($.i18n.prop("nfv-package-iui-message-upload-fail"), 'danger');\r
314             },\r
315             always : function(e, data) {\r
316                 refreshByCond();\r
317                 $(".progress").removeClass("active");\r
318                 $("#bar").css('width', '100%');\r
319                 $("#persent").text('100%');\r
320             },\r
321             progressall : function(e ,data) {\r
322                 var progress = parseInt(data.loaded / data.total * 80, 10);\r
323                 $("#bar").css('width', progress + '%');\r
324                 $("#persent").text(progress + '%');\r
325             }\r
326         });\r
327     },\r
328     $initCometd : function() {\r
329         commonUtil.registerCometdMessage("/openoapi/catalog/v1/catalognotification", "/package/delete", function(message) {\r
330             pmUtil.updateDeletedPackageStatus(message);\r
331         });\r
332     },\r
333     gotoPackageListPage:function(){\r
334         window.location.href="./csarPackage.html";\r
335         refreshByCond();\r
336     }\r
337 });\r
338 avalon.scan();\r
339 vm.$initUpload();\r
340 vm.$initCometd();\r
341 $(function(){\r
342     vm.$initTable();\r
343 });\r
344 var refreshByCond = function() {\r
345     vm.$initTable();\r
346 };