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