diff options
Diffstat (limited to 'portal/src/main/webapp/extsys/vnfm/js')
-rw-r--r-- | portal/src/main/webapp/extsys/vnfm/js/commonUtil.js | 128 | ||||
-rw-r--r-- | portal/src/main/webapp/extsys/vnfm/js/loadi18n_nsoc.js | 38 | ||||
-rw-r--r-- | portal/src/main/webapp/extsys/vnfm/js/vnfm-validate.js | 89 | ||||
-rw-r--r-- | portal/src/main/webapp/extsys/vnfm/js/vnfmController.js | 302 | ||||
-rw-r--r-- | portal/src/main/webapp/extsys/vnfm/js/vnfmUtil.js | 78 |
5 files changed, 635 insertions, 0 deletions
diff --git a/portal/src/main/webapp/extsys/vnfm/js/commonUtil.js b/portal/src/main/webapp/extsys/vnfm/js/commonUtil.js new file mode 100644 index 0000000..44a72f3 --- /dev/null +++ b/portal/src/main/webapp/extsys/vnfm/js/commonUtil.js @@ -0,0 +1,128 @@ +/* + * Copyright 2016-2017 ZTE Corporation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var commonUtil = {}; +commonUtil.arrayRemove = function (aryInstance, index) { + if (aryInstance == undefined || aryInstance == null) { + return; + } + for (var i = 0, n = 0; i < aryInstance.length; i++) { + if (aryInstance[i] != aryInstance[dx]) { + aryInstance[n++] = aryInstance[i]; + } + } + aryInstance.length -= 1; +}; + +//For the expansion of the Date, convert the Date to specify the format String +// examples: +// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423 +// (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18 +commonUtil.parseDate = function (dateObj, format) { + var o = { + "M+": dateObj.getMonth() + 1, //month + "d+": dateObj.getDate(), //day + "h+": dateObj.getHours(), //hour + "m+": dateObj.getMinutes(), //minute + "s+": dateObj.getSeconds(), //second + "q+": Math.floor((dateObj.getMonth() + 3) / 3), //quarter + "S": dateObj.getMilliseconds() //millisecond + } + if (/(y+)/.test(format)) format = format.replace(RegExp.$1, + (dateObj.getFullYear() + "").substr(4 - RegExp.$1.length)); + for (var k in o) + if (new RegExp("(" + k + ")").test(format)) + format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : + ("00" + o[k]).substr(("" + o[k]).length)); + return format; +}; + +//tooltip +commonUtil.showMessage = function (message, type) { + $.growl({ + icon: "fa fa-envelope-o fa-lg", + title: " " + $.i18n.prop("nfv-nso-iui-common-tip"), + message: message + }, { + type: type + }); +}; + +commonUtil.registerCometdMessage = function (url, channel, callback) { + var cometd = new $.Cometd(); + var cometdURL = location.protocol + "//" + location.host + url; + cometd.configure({ + url: cometdURL, + logLevel: "info" + }); + // unregister websocket transport, use long-polling transport + cometd.unregisterTransport('websocket'); + // store channel object parameters(this object include channel and callback function), start from arguments[1] + var _args = arguments; + + cometd.addListener("/meta/handshake", function (handshake) { + if (handshake.successful === true) { + cometd.batch(function () { + //subscribe channel + cometd.subscribe(channel, function (message) { + callback.call(this, message.data); + }); + }); + } + }); + cometd.handshake(); +} + +commonUtil.format = function () { + if (arguments.length == 0) { + return null; + } + var str = arguments[0]; + for (var i = 0; i < arguments.length; i++) { + var reg = new RegExp("\\{" + (i - 1) + "\\}", "gm"); + str = str.replace(reg, arguments[i]); + } + return str; +} + +commonUtil.get = function (url, params, callback) { + $.ajax({ + type: "GET", + url: url, + //contentType : contentType || "application/x-www-form-urlencoded; charset=UTF-8", + dataType: "json", + data: params || {}, + success: callback + }); +} + +commonUtil.post = function (url, params, callback, contentType) { + $.ajax({ + type: "POST", + url: url, + contentType: contentType || "application/x-www-form-urlencoded; charset=UTF-8", + data: params || {}, + success: callback + }); +} + +commonUtil.delete = function (url, callback, contentType) { + $.ajax({ + type: "DELETE", + url: url, + contentType: contentType || "application/x-www-form-urlencoded; charset=UTF-8", + success: callback + }); +}
\ No newline at end of file diff --git a/portal/src/main/webapp/extsys/vnfm/js/loadi18n_nsoc.js b/portal/src/main/webapp/extsys/vnfm/js/loadi18n_nsoc.js new file mode 100644 index 0000000..a543a20 --- /dev/null +++ b/portal/src/main/webapp/extsys/vnfm/js/loadi18n_nsoc.js @@ -0,0 +1,38 @@ +/* + * Copyright 2016-2017 ZTE Corporation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +function loadPropertiesSideMenu(lang, fileNamePrefix, filePath) { + jQuery.i18n.properties({ + language: lang, + name: fileNamePrefix, + path: filePath, + mode: 'map', + callback: function () { + var i18nItems = $("[name_i18n=com_zte_nfv_nsoc_i18n]"); + for (var i = 0; i < i18nItems.length; i++) { + var $item = $(i18nItems.eq(i)); + var itemId = $item.attr("id"); + var itemTitle = $item.attr("title"); + if (typeof(itemTitle) != "undefined") { + $item.attr("title", $.i18n.prop(itemId)); + } else { + $item.text($.i18n.prop(itemId)); + } + } + } + }); +} +var lang = getLanguage(); +loadPropertiesSideMenu(lang, 'nfv-nso-iui-i18n', 'i18n/');
\ No newline at end of file diff --git a/portal/src/main/webapp/extsys/vnfm/js/vnfm-validate.js b/portal/src/main/webapp/extsys/vnfm/js/vnfm-validate.js new file mode 100644 index 0000000..627d6d5 --- /dev/null +++ b/portal/src/main/webapp/extsys/vnfm/js/vnfm-validate.js @@ -0,0 +1,89 @@ +/* + * Copyright 2016-2017 ZTE Corporation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +$(function () { + var form = $('#vnfm_form'); + var error = $('.alert-danger', form); + var success = $('.alert-success', form); + + form.validate({ + doNotHideMessage: true, //this option enables to show the error/success messages on tab switch. + errorElement: 'span', //default input error message container + errorClass: 'help-block', // default input error message class + focusInvalid: false, // do not focus the last invalid input + rules: { + name: { + required: true, + maxlength: 20 + }, + type: { + required: true, + maxlength: 20 + }, + version: { + required: true, + maxlength: 20 + }, + vendor: { + required: true, + maxlength: 20 + }, + url: { + required: true, + url: true + } + }, + messages: { + name: { + required: $.i18n.prop("nfv-vnfm-iui-validate-name") + }, + type: { + required: $.i18n.prop("nfv-vnfm-iui-validate-type") + }, + version: { + required: $.i18n.prop("nfv-vnfm-iui-validate-version") + }, + vendor: { + required: $.i18n.prop("nfv-vnfm-iui-validate-vendor") + }, + url: { + required: $.i18n.prop("nfv-vnfm-iui-validate-url-required"), + url: $.i18n.prop("nfv-vnfm-iui-validate-url") + } + }, + errorPlacement: function (error, element) { // render error placement for each input type + error.insertAfter(element); // for other inputs, just perform default behavior + }, + invalidHandler: function (event, validator) { //display error alert on form submit + success.hide(); + error.show(); + }, + highlight: function (element) { // hightlight error inputs + $(element).closest('.form-group').removeClass('has-success').addClass('has-error'); // set error class to the control group + }, + unhighlight: function (element) { // revert the change done by hightlight + $(element).closest('.form-group').removeClass('has-error'); // set error class to the control group + }, + success: function (label) { + label.addClass('valid') // mark the current input as valid and display OK icon + .closest('.form-group').removeClass('has-error'); // set success class to the control group + }, + submitHandler: function (form) { + success.show(); + error.hide(); + //add here some ajax code to submit your form or just call form.submit() if you want to submit the form without ajax + } + }); +});
\ No newline at end of file diff --git a/portal/src/main/webapp/extsys/vnfm/js/vnfmController.js b/portal/src/main/webapp/extsys/vnfm/js/vnfmController.js new file mode 100644 index 0000000..1df32b1 --- /dev/null +++ b/portal/src/main/webapp/extsys/vnfm/js/vnfmController.js @@ -0,0 +1,302 @@ +/* + * Copyright 2016-2017 ZTE Corporation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +var vm = avalon + .define({ + $id: "vnfmController", + vnfmInfo: [], + //mocSelectItems : [], + vimSelectItems: [], + server_rtn: { + info_block: false, + warning_block: false, + rtn_info: "", + $RTN_SUCCESS: "RTN_SUCCESS", + $RTN_FAILED: "RTN_FAILED" + }, + $Status: { + success: "active", + failed: "inactive" + }, + $restUrl: { + queryVnfmInfoUrl: '/onapapi/aai/esr/v1/vnfms', + addVnfmInfoUrl: '/onapapi/aai/esr/v1/vnfms', + updateVnfmInfoUrl: '/onapapi/aai/esr/v1/vnfms/', + delVnfmInfoUrl: '/onapapi/aai/esr/v1/vnfms/', + queryMocUrl: '', + queryVimUrl: '/onapapi/aai/esr/v1/vims' + }, + $htmlText: { + saveSuccess: $.i18n.prop("nfv-vnfm-iui-message-save-success"), + saveFail: $.i18n.prop("nfv-vnfm-iui-message-save-fail"), + alreadyExist: $.i18n.prop("nfv-vnfm-iui-message-vnfm-already-exists"), + updateSuccess: $.i18n.prop("nfv-vnfm-iui-message-update-success"), + updateFail: $.i18n.prop("nfv-vnfm-iui-message-update-fail") + }, + $initTable: function () { + $.ajax({ + "type": 'GET', + "url": vm.$restUrl.queryVnfmInfoUrl, + //"dataType": "json", + "success": function (resp) { + for (var i = 0; i < resp.length; i++) { + resp[i].status = vm.$Status.success; + } + vm.vnfmInfo = resp; + }, + error: function (XMLHttpRequest, textStatus, errorThrown) { + bootbox.alert($.i18n.prop("nfv-vnfm-iui-message-query-fail") + ":" + textStatus + ":" + errorThrown); + return; + }, + complete: function () { + vnfmUtil.tooltipVnfmStatus(); + } + }); + }, + // $initMoc : function() { + // /*var url = vm.$restUrl.queryMocUrl; + // commonUtil.get(url, null, function(resp) { + // if (resp) { + // vm.addVnfm.moc = resp.data; + // } + // });*/ + // var resp = [ + // { id : "nfv.vnfm.eco", name : "VNFM(ECO)"}, + // { id : "nfv.vnfm.tacker", name : "VNFM(Tacker)"}, + // { id : "nfv.vnfm.cmcc", name : "VNFM(CMCC)"}, + // { id : "nfv.vnfm.etsi", name : "VNFM(ETSI)"} + // ] + // vm.mocSelectItems = resp; + // }, + $initVim: function () { + $.ajax({ + type: 'get', + url: vm.$restUrl.queryVimUrl, + dataType: 'json', + success: function (resp) { + if (resp) { + vm.vimSelectItems = resp; + } + vm.vimSelectItems.push({"vimId": "", "name": ""}); + } + }); + }, + addVnfm: { + title: $.i18n.prop("nfv-vnfm-iui-text-register"), + vnfmId: "", + name: "", + type: "", + //moc : "", + nameReadonly : false, + vimId: "", + //vimVisiable : false, + vendor: "", + version: "", + description: "", + certificateUrl: "", + url: "", + urlTip: $.i18n.prop("nfv-vnfm-iui-text-url-tip"), + userName: "", + password: "", + saveType: "add", + status: "" + }, + $showVnfmTable: function () { + vm.addVnfm.title = $.i18n.prop("nfv-vnfm-iui-text-register"), + vm.addVnfm.vnfmId = ""; + vm.addVnfm.name = ""; + vm.addVnfm.type = ""; + //vm.addVnfm.moc = ""; + vm.addVnfm.nameReadonly = false; + vm.addVnfm.vimId = ""; + //vm.addVnfm.vimVisiable = false; + vm.addVnfm.vendor = ""; + vm.addVnfm.version = ""; + vm.addVnfm.description = ""; + vm.addVnfm.certificateUrl = ""; + vm.addVnfm.url = ""; + vm.addVnfm.userName = ""; + vm.addVnfm.password = ""; + vm.addVnfm.saveType = "add"; + vm.server_rtn.warning_block = false; + vm.server_rtn.info_block = false; + //vm.$initMoc(); + vm.$initVim(); + //vm.$mocChange(); + + $(".form-group").each(function () { + $(this).removeClass('has-success'); + $(this).removeClass('has-error'); + $(this).find(".help-block[id]").remove(); + }); + $("#addVnfmDlg").modal("show"); + }, + // $getMocName : function(mocId) { + // var items = vm.mocSelectItems; + // for(var i=0;i<items.length;i++) { + // if(items[i].id == mocId) { + // return items[i].name; + // } + // } + // return ""; + // }, + $saveVnfm: function () { + var form = $('#vnfm_form'); + if (form.valid() == false) { + return false; + } + vm.server_rtn.info_block = true; + vm.server_rtn.warning_block = false; + vm.addVnfm.status = vm.$Status.success; + + var param = { + name: vm.addVnfm.name, + //status : vm.addVnfm.status, + //moc : $("#moc").val(), + //vimId : vm.$getVimId($("#moc").val()), + vimId: $("#vimId").val(), + vendor: vm.addVnfm.vendor, + version: vm.addVnfm.version, + type: vm.addVnfm.type, + description: vm.addVnfm.description, + certificateUrl: vm.addVnfm.certificateUrl, + url: vm.addVnfm.url, + userName: vm.addVnfm.userName, + password: vm.addVnfm.password + } + //save VIM info + if (vm.addVnfm.saveType == "add") { + // for( var i = 0; i < vm.vnfmInfo.length; i ++ ){ + // if(vm.addVnfm.name == vm.vnfmInfo[i].name){ + // vm.server_rtn.warning_block = true; + // vm.server_rtn.rtn_info = vm.$htmlText.alreadyExist; + // commonUtil.showMessage(vm.$htmlText.alreadyExist, "failed"); + // return; + // } + // } + $.ajax({ + type: "POST", + url: vm.$restUrl.addVnfmInfoUrl, + data: JSON.stringify(param), + dataType: "json", + contentType: "application/json", + success: function (data) { + vm.server_rtn.info_block = false; + vm.server_rtn.warning_block = false; + if (data) { + vm.vnfmInfo = []; + vm.$initTable(); + + $('#addVnfmDlg').modal('hide'); + commonUtil.showMessage(vm.$htmlText.saveSuccess, "success"); + } else { + vm.server_rtn.warning_block = true; + vm.server_rtn.rtn_info = vm.$htmlText.saveFail; + commonUtil.showMessage(vm.$htmlText.saveFail, "failed"); + } + }, + error: function (XMLHttpRequest, textStatus, errorThrown) { + vm.server_rtn.warning_block = true; + vm.server_rtn.rtn_info = textStatus + ":" + errorThrown; + vm.server_rtn.info_block = false; + } + }); + } else { + $.ajax({ + type: "PUT", + url: vm.$restUrl.updateVnfmInfoUrl + vm.addVnfm.vnfmId, + data: JSON.stringify(param), + dataType: "json", + contentType: "application/json", + success: function (data) { + vm.server_rtn.info_block = false; + vm.server_rtn.warning_block = false; + if (data) { + for (var i = 0; i < vm.vnfmInfo.length; i++) { + if (vm.vnfmInfo[i].vnfmId == vm.addVnfm.vnfmId) { + vm.vnfmInfo[i].name = vm.addVnfm.name; + vm.vnfmInfo[i].vimId = $("#vimId").val(); + vm.vnfmInfo[i].vendor = vm.addVnfm.vendor; + vm.vnfmInfo[i].version = vm.addVnfm.version; + vm.vnfmInfo[i].certificateUrl = vm.addVnfm.certificateUrl; + vm.vnfmInfo[i].description = vm.addVnfm.description; + vm.vnfmInfo[i].url = vm.addVnfm.url; + vm.vnfmInfo[i].userName = vm.addVnfm.userName; + vm.vnfmInfo[i].password = vm.addVnfm.password; + } + } + $('#addVnfmDlg').modal('hide'); + commonUtil.showMessage(vm.$htmlText.updateSuccess, "success"); + } else { + vm.server_rtn.warning_block = true; + vm.server_rtn.rtn_info = vm.$htmlText.updateFail; + commonUtil.showMessage(vm.$htmlText.updateFail, "failed"); + } + }, + error: function (XMLHttpRequest, textStatus, errorThrown) { + vm.server_rtn.warning_block = true; + vm.server_rtn.rtn_info = textStatus + ":" + errorThrown; + vm.server_rtn.info_block = false; + } + }); + } + }, + // mocRendered : function(action) { + // if(vm.addVnfm.saveType === "update" && vm.addVnfm.moc) { + // var items = vm.mocSelectItems; + // for(var i=0;i<items.length;i++) { + // if(items[i].id == vm.addVnfm.moc) { + // $("#moc")[0].selectedIndex = i; + // vm.$mocChange(); + // break; + // } + // } + // } else { + // $("#moc")[0].selectedIndex = 0; + // } + // }, + vimRendered: function (action) { + var items = vm.vimSelectItems; + if (vm.addVnfm.saveType === "update") { + for (var i = 0; i < items.length; i++) { + if (items[i].vimId == vm.addVnfm.vimId) { + $("#vimId")[0].selectedIndex = i; + break; + } + } + } else { + $("#vimId")[0].selectedIndex = items.length - 1; + } + }, + // $mocChange : function() { + // var mocId = $('#moc').val(); + // if(mocId == "nfv.vnfm.tacker") { + // vm.addVnfm.vimVisiable = true; + // } else { + // vm.addVnfm.vimVisiable = false; + // } + // }, + // $getVimId : function(mocId) { + // if(vm.addVnfm.vimVisiable) { + // return $("#vimId").val(); + // } else { + // return ""; + // } + // } + }); +avalon.scan(); +vm.$initTable(); +//vm.$initMoc();
\ No newline at end of file diff --git a/portal/src/main/webapp/extsys/vnfm/js/vnfmUtil.js b/portal/src/main/webapp/extsys/vnfm/js/vnfmUtil.js new file mode 100644 index 0000000..21038da --- /dev/null +++ b/portal/src/main/webapp/extsys/vnfm/js/vnfmUtil.js @@ -0,0 +1,78 @@ +/* + * Copyright 2016-2017 ZTE Corporation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +var vnfmUtil = {}; + +vnfmUtil.delVnfm = function (vnfmId) { + bootbox.confirm($.i18n.prop("nfv-vnfm-iui-message-delete-confirm"), function (result) { + if (result) { + $.ajax({ + type: "DELETE", + url: vm.$restUrl.delVnfmInfoUrl + vnfmId, + dataType: "json", + success: function (data, statusText, jqXHR) { + if (jqXHR.status == "204") { + for (var i = 0; i < vm.vnfmInfo.length; i++) { + if (vnfmId == vm.vnfmInfo[i].vnfmId) { + //delete the vnfm object from vnfm array + vm.vnfmInfo.splice(i, 1); + break; + } + } + commonUtil.showMessage($.i18n.prop("nfv-vnfm-iui-message-delete-success"), "success"); + } else { + commonUtil.showMessage($.i18n.prop("nfv-vnfm-iui-message-delete-fail"), "warning"); + } + }, + error: function () { + commonUtil.showMessage($.i18n.prop("nfv-vnfm-iui-message-delete-fail"), "warning"); + } + }); + } + }); +} + +vnfmUtil.updateVnfm = function (data) { + vm.addVnfm.vnfmId = data.vnfmId; + vm.addVnfm.name = data.name; + //vm.addVnfm.moc = data.moc; + //vm.addVnfm.mocDisabled = true; + vm.addVnfm.vendor = data.vendor; + vm.addVnfm.version = data.version; + vm.addVnfm.description = data.description; + vm.addVnfm.type = data.type; + vm.addVnfm.vimId = data.vimId; + vm.addVnfm.url = data.url; + vm.addVnfm.nameReadonly=true; + vm.addVnfm.userName = data.userName; + vm.addVnfm.password = data.password; + vm.addVnfm.saveType = "update"; + vm.addVnfm.title = $.i18n.prop("nfv-vnfm-iui-test-update"); + vm.server_rtn.info_block = false; + vm.server_rtn.warning_block = false; + //vm.$initMoc(); + vm.$initVim(); + + $(".form-group").each(function () { + $(this).removeClass('has-success'); + $(this).removeClass('has-error'); + $(this).find(".help-block[id]").remove(); + }); + $("#addVnfmDlg").modal("show"); +} + +vnfmUtil.tooltipVnfmStatus = function () { + $("[data-toggle='tooltip']").tooltip(); +}
\ No newline at end of file |