diff options
26 files changed, 526 insertions, 366 deletions
diff --git a/openo-portal/portal-catalog/src/main/webapp/catalog/i18n/nfv-nso-iui-i18n-en-US.properties b/openo-portal/portal-catalog/src/main/webapp/catalog/i18n/nfv-nso-iui-i18n-en-US.properties index 5e9b97bf..7c2d1303 100644 --- a/openo-portal/portal-catalog/src/main/webapp/catalog/i18n/nfv-nso-iui-i18n-en-US.properties +++ b/openo-portal/portal-catalog/src/main/webapp/catalog/i18n/nfv-nso-iui-i18n-en-US.properties @@ -89,6 +89,9 @@ nfv-package-iui-message-select-vim-error = Can not select more than one VIM to b nfv-package-iui-onboard-dialog-vimname = VIM Name
nfv-package-iui-product-env = Product Environment
nfv-package-iui-test-env = Test Environment
+nfv-package-iui-http-delete-error = Delete package from HTTP server failed!
+nfv-package-iui-template-delete-error = Delete template data failed!
+nfv-package-iui-package-delete-error = Delete package data failed!
nfv-package-iui-drop-zone-title=Drag & drop files here …
nfv-package-iui-drop-zone-selectBtn=Browse
diff --git a/openo-portal/portal-catalog/src/main/webapp/catalog/i18n/nfv-nso-iui-i18n-zh-CN.properties b/openo-portal/portal-catalog/src/main/webapp/catalog/i18n/nfv-nso-iui-i18n-zh-CN.properties index efb19162..1d3e6cfe 100644 --- a/openo-portal/portal-catalog/src/main/webapp/catalog/i18n/nfv-nso-iui-i18n-zh-CN.properties +++ b/openo-portal/portal-catalog/src/main/webapp/catalog/i18n/nfv-nso-iui-i18n-zh-CN.properties @@ -90,6 +90,9 @@ nfv-package-iui-message-select-vim-error = 最多只能选择一个VIM做为测 nfv-package-iui-onboard-dialog-vimname = VIM名称
nfv-package-iui-product-env = 生产环境
nfv-package-iui-test-env = 测试环境
+nfv-package-iui-http-delete-error = 从HTTP服务器上删除包失败!
+nfv-package-iui-template-delete-error = 删除模板数据失败!
+nfv-package-iui-package-delete-error = 删除包数据失败!
nfv-package-iui-drop-zone-title=拖拽文件到这里 …
diff --git a/openo-portal/portal-catalog/src/main/webapp/catalog/js/package/pmUtil.js b/openo-portal/portal-catalog/src/main/webapp/catalog/js/package/pmUtil.js index 80067abc..db21456f 100644 --- a/openo-portal/portal-catalog/src/main/webapp/catalog/js/package/pmUtil.js +++ b/openo-portal/portal-catalog/src/main/webapp/catalog/js/package/pmUtil.js @@ -71,8 +71,18 @@ pmUtil.updateDeletedPackageStatus = function(message) { if(messageobj.status == "true" || messageobj.status == "deletionPending") {
commonUtil.showMessage($.i18n.prop("nfv-package-iui-message-delete-success"), "success");
refreshByCond();
- } else {
+ } else if (messageobj.status == "Delete package from HTTP server failed!") {
pmUtil.changeTableStatus(messageobj.csarid, "deletefail");
+ commonUtil.showMessage($.i18n.prop("nfv-package-iui-http-delete-error"), "failed");
+ } else if (messageobj.status == "Delete template data failed!") {
+ pmUtil.changeTableStatus(messageobj.csarid, "deletefail");
+ commonUtil.showMessage($.i18n.prop("nfv-package-iui-template-delete-error"), "failed");
+ } else if (messageobj.status == "Delete package data failed!") {
+ pmUtil.changeTableStatus(messageobj.csarid, "deletefail");
+ commonUtil.showMessage($.i18n.prop("nfv-package-iui-package-delete-error"), "failed");
+ } else if (messageobj.status == "false") {
+ pmUtil.changeTableStatus(messageobj.csarid, "deletefail");
+ commonUtil.showMessage($.i18n.prop("nfv-package-iui-message-delete-error"), "failed");
}
}
@@ -168,15 +178,11 @@ pmUtil.delPackage = function (url) { url : url,
contentType : "application/json",
success : function(resp) {
- //commonUtil.showMessage($.i18n.prop("nfv-package-iui-message-delete-success"), "success");
- //setTimeout( function(){
- // refreshByCond();
- //}, 1 * 1000 );
+
},
error : function(resp) {
if(resp.status == 202 || resp.responseText == "success") {
- //commonUtil.showMessage($.i18n.prop("nfv-package-iui-message-delete-success"), "success");
- //refreshByCond();
+
} else {
commonUtil.showMessage($.i18n.prop("nfv-package-iui-message-delete-error"), "failed");
refreshByCond();
@@ -185,6 +191,18 @@ pmUtil.delPackage = function (url) { });
}
+pmUtil.isRowDeletingStatus = function(csarId) {
+ var table = $("#" + vm.$tableId).dataTable();
+ var tableData = table.fnGetData();
+ for (var i=0; i<tableData.length; i++) {
+ if(tableData[i]["csarId"] == csarId &&
+ tableData[i]["status"].indexOf($.i18n.prop("nfv-package-iui-status-deleting")) > -1) {
+ return true;
+ }
+ }
+ return false;
+}
+
pmUtil.nameRender = function(obj) {
return '<a href="#" onclick="vm.packageDetail.$showDetails('
+ '\'block\',\'' + obj.aData.csarId + '\', \'' + obj.aData.name + '\')">' + obj.aData.name + '</a>';
diff --git a/openo-portal/portal-common/src/main/webapp/common/css/login.css b/openo-portal/portal-common/src/main/webapp/common/css/login.css index 4894c02a..93fa8b1c 100644 --- a/openo-portal/portal-common/src/main/webapp/common/css/login.css +++ b/openo-portal/portal-common/src/main/webapp/common/css/login.css @@ -23,8 +23,7 @@ Login page } .login .logo { - margin: 0 auto; - margin-top:60px; + margin: 0 auto; padding: 15px; text-align: center; } @@ -33,14 +32,14 @@ Login page .login .content { background: url(../image/bg-white-lock.png) repeat; width: 360px; - margin: 0 auto; - margin-bottom: 0px; - padding: 30px; - padding-top: 20px; - padding-bottom: 15px; + margin: 0 auto; + margin-top: 150px; + padding: 30px; + padding-top: 20px; + padding-bottom: 15px; border-radius:5px; - -webkit-box-shadow: 2px 3px 3px #717171; - -moz-box-shadow: 2px 3px 3px #717171; + -webkit-box-shadow: 2px 3px 3px #717171; + -moz-box-shadow: 2px 3px 3px #717171; box-shadow: -1px 1px 1px rgba(255,255,255,0.6) inset,-3px 3px 5px rgba(0,0,0,0.2); } diff --git a/openo-portal/portal-common/src/main/webapp/common/default.html b/openo-portal/portal-common/src/main/webapp/common/default.html index 1ea020eb..1d11b720 100644 --- a/openo-portal/portal-common/src/main/webapp/common/default.html +++ b/openo-portal/portal-common/src/main/webapp/common/default.html @@ -19,6 +19,8 @@ <title id="com_zte_ums_ict_framework_ui_page_title" name_i18n="openo_frame_page_i18n"></title> <meta charset="utf-8"/> <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta http-equiv="pragma" content="no-cache"/> + <meta http-equiv="cache-control" content="no-cache, no-store, max-age=0, must-revalidate"/> <meta content="width=device-width, initial-scale=1.0" name="viewport"/> <meta content="" name="description"/> <meta content="" name="author"/> @@ -37,31 +39,6 @@ <link href="css/more-operation.css" rel="stylesheet" type="text/css" /> <link href="css/ZteIctIcons/style.css" rel="stylesheet" type="text/css"/> <link href="" rel="stylesheet" type="text/css" id="style_color"/> - <script type="text/javascript" src="js/core/const.js"></script> - <script type="text/javascript" src="js/core/hk.min.js"></script> - <script type="text/javascript" src="thirdparty/jquery/jquery-1.10.2.min.js"></script> - <script type="text/javascript" src="thirdparty/fakeLoader/fakeLoader.min.js"></script> - <script type="text/javascript" src="thirdparty/bootstrap/js/bootstrap.min.js"></script> - <script type="text/javascript" src="thirdparty/jquery-validation/js/jquery.validate.min.js"></script> - <script type="text/javascript" src="thirdparty/bootstrap-hover-dropdown/bootstrap-hover-dropdown.min.js"></script> - <script type="text/javascript" src="thirdparty/jquery-blockui/jquery.blockui.min.js"></script> - <script type="text/javascript" src="thirdparty/jquery-cokie/jquery.cokie.min.js"></script> - <script type="text/javascript" src="thirdparty/uniform/jquery.uniform.min.js"></script> - <script type="text/javascript" src="thirdparty/cometd/cometd.js"></script> - <script type="text/javascript" src="thirdparty/cometd/jquery/jquery.cometd.js"></script> - <script type="text/javascript" src="thirdparty/select2/select2.min.js"></script> - <script type="text/javascript" src="thirdparty/bootbox/bootbox.min.js"></script> - <script type="text/javascript" src="thirdparty/jquery.i18n/jquery.i18n.properties-1.0.9.js"></script> - <script type="text/javascript" src="thirdparty/data-tables/jquery.dataTables.min.js"></script> - <script type="text/javascript" src="js/moreOperation.js"></script> - <script type="text/javascript" src="js/tools.js"></script> - <script type="text/javascript" src="js/international/loadi18n.js"></script> - <script type="text/javascript" src="js/Main2moreMenu.js"></script> - <script type="text/javascript" src="js/core/pym.min.js"></script> - <script type="text/javascript" src="js/core/openoFrameWork.js"></script> - <script type="text/javascript" src="js/fm_light.js"></script> - <script type="text/javascript" src="js/mainpage/about.js"></script> - <script type="text/javascript" src="js/core/load_menuList.js"></script> </head> <body class="page-header-fixed page-sidebar-fixed"> <div id="pageLoading" class="fakeloader"></div> @@ -70,10 +47,7 @@ </script> <div class="header navbar navbar-fixed-top mega-menu"> <div class="header-inner"> - <a class="navbar-brand zte-navbar-brand hidden-sm hidden-xs" href="main-page.html"> - <img id="com_zte_ums_ict_framework_img_netnumenLogo" src="image/integration/netnumenLogo.png" name_img="com_zte_ums_ict_framework_img" alt="logo"/> - <span id="com_zte_ums_ict_framework_ui_main_title" name_i18n="openo_frame_page_i18n" class="zte-brand-text"/> - </a> + <img id="com_zte_ums_ict_framework_img_netnumenLogo" src="image/integration/openo_logo_white.png" width="7%" name_img="com_zte_ums_ict_framework_img" alt="logo" style="margin-left:50px; margin-top:3px;"/> <ul class="nav navbar-nav pull-right"> <div class="zte-theme-panel"> <div class="toggler"></div> @@ -89,64 +63,6 @@ </div> </div> </div> - - - - <li class="dropdown" id="header_notification_bar" style="display:none"> - <a href="#" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-close-others="true"> - <i class="fa fa-warning" id="hd_heighestAlarmcount_li"></i> - <span class="badge" id="hd_heighestAlarmcount_value"></span> - </a> - <ul class="dropdown-menu extended notification"> - <li> - <p> - <span id="hd_alarmcount_total_before_text"></span> - <span class="badge" id="hd_alarmcount_total_value"></span> - <span id="hd_alarmcount_total_after_text"></span> - </p> - </li> - <li> - <ul class="dropdown-menu-list scroller" style="height: 168px;"> - <li> - <a href="#"> - <span class="label label-icon alarm-critical"> - <i class="fa fa-bolt " id="hd_alarmcount_critical_li"></i> - <span class="badge" id="hd_alarmcount_critical_value"></span> - </span> - <span id="hd_alarmcount_critical_text"></span> - </a> - </li> - <li> - <a href="#"> - <span class="label label-icon alarm-major"> - <i class="fa fa-warning" id="hd_alarmcount_major_li"></i> - <span class="badge" id="hd_alarmcount_major_value"></span> - </span> - <span id="hd_alarmcount_major_text"></span> - </a> - </li> - <li> - <a href="#"> - <span class="label label-icon alarm-minor"> - <i class="fa fa-bell-o" id="hd_alarmcount_minor_li"></i> - <span class="badge" id="hd_alarmcount_minor_value"></span> - </span> - <span id="hd_alarmcount_minor_text"></span> - </a> - </li> - <li> - <a href="#"> - <span class="label label-icon alarm-warning"> - <i class="fa fa-bullhorn" id="hd_alarmcount_warning_li"></i> - <span class="badge" id="hd_alarmcount_warning_value"></span> - </span> - <span id="hd_alarmcount_warning_text"></span> - </a> - </li> - </ul> - </li> - </ul> - </li> <li class="dropdown user" id="header_dropdown_user" style="display:none"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-close-others="true"> <span><img alt="" width=26 height=26 src="image/user.png"/></span> @@ -159,7 +75,7 @@ <li> <a href="javascript:;" id="trigger_fullscreen"> <i class="fa fa-arrows"></i> - <span id="fullscreen_label"></span> + <span id="com_zte_ums_ict_framework_ui_group_fullscreen" name_i18n="openo_frame_page_i18n"></span> </a> </li> </div> @@ -167,15 +83,12 @@ <li> <a id="trigger_logout" href="#"> <i class="fa fa-key"></i> - <span id="logout_label"></span> + <span id="com_zte_ums_ict_framework_ui_group_logout" name_i18n="openo_frame_page_i18n"></span> </a> </li> </div> </ul> </li> - - - </ul> </div> </div> @@ -194,7 +107,7 @@ </div> <ul class="col-md-2 more-botton-zone"></ul> </ul> - <div id = "pageableDiv" style = "display: none" class="row row1"> + <div id="pageableDiv" style="display: none" class="row row1"> <div class="col-xs-12" > <div class="row"> <div id="carousel-example-generic" class="carousel slide" data-ride="carousel" data-interval="false"> @@ -217,8 +130,31 @@ </div> </div> </div> - - + <script type="text/javascript" src="js/core/const.js"></script> + <script type="text/javascript" src="js/core/hk.min.js"></script> + <script type="text/javascript" src="thirdparty/jquery/jquery-1.10.2.min.js"></script> + <script type="text/javascript" src="thirdparty/fakeLoader/fakeLoader.min.js"></script> + <script type="text/javascript" src="thirdparty/bootstrap/js/bootstrap.min.js"></script> + <script type="text/javascript" src="thirdparty/jquery-validation/js/jquery.validate.min.js"></script> + <script type="text/javascript" src="thirdparty/bootstrap-hover-dropdown/bootstrap-hover-dropdown.min.js"></script> + <script type="text/javascript" src="thirdparty/jquery-blockui/jquery.blockui.min.js"></script> + <script type="text/javascript" src="thirdparty/jquery-cokie/jquery.cokie.min.js"></script> + <script type="text/javascript" src="thirdparty/uniform/jquery.uniform.min.js"></script> + <script type="text/javascript" src="thirdparty/cometd/cometd.js"></script> + <script type="text/javascript" src="thirdparty/cometd/jquery/jquery.cometd.js"></script> + <script type="text/javascript" src="thirdparty/select2/select2.min.js"></script> + <script type="text/javascript" src="thirdparty/bootbox/bootbox.min.js"></script> + <script type="text/javascript" src="thirdparty/jquery.i18n/jquery.i18n.properties-1.0.9.js"></script> + <script type="text/javascript" src="thirdparty/data-tables/jquery.dataTables.min.js"></script> + <script type="text/javascript" src="js/moreOperation.js"></script> + <script type="text/javascript" src="js/tools.js"></script> + <script type="text/javascript" src="js/international/loadi18n.js"></script> + <script type="text/javascript" src="js/Main2moreMenu.js"></script> + <script type="text/javascript" src="js/core/pym.min.js"></script> + <script type="text/javascript" src="js/core/openoFrameWork.js"></script> + <script type="text/javascript" src="js/fm_light.js"></script> + <script type="text/javascript" src="js/mainpage/about.js"></script> + <script type="text/javascript" src="js/core/load_menuList.js"></script> <script> var panel = $('.zte-theme-panel'); loadi18n_WebFramework('web-framework-i18n', 'i18n/', 'openo_frame_page_i18n'); @@ -227,6 +163,9 @@ <script> jQuery(document).ready(function() { openoFrameWork.init(); + var initLink = document.getElementById('openo_menu_service_service_management_href'); + initLink.target = '_blank'; + initLink.click(); $("#pageLoading").setToHide(); }); </script> diff --git a/openo-portal/portal-common/src/main/webapp/common/i18n/web-framework-login-i18n-en-US.properties b/openo-portal/portal-common/src/main/webapp/common/i18n/web-framework-login-i18n-en-US.properties index 4698f5d3..dc9f9c70 100644 --- a/openo-portal/portal-common/src/main/webapp/common/i18n/web-framework-login-i18n-en-US.properties +++ b/openo-portal/portal-common/src/main/webapp/common/i18n/web-framework-login-i18n-en-US.properties @@ -15,11 +15,11 @@ # openo_login_title=OPEN-O System openo_login_welcome=Welcome -openo_login_userPassword=User Name or Password Error +openo_login_userPasswordError=User name or password is not available. +openo_login_connectError=System error occurred. openo_input_userName=Please Input User Name openo_input_password=Please Input Password openo_login_rememberMe=Remember Me openo_login_username=Username: openo_login_password=Password: openo_login_login=Login -openo_login_error=Login Error diff --git a/openo-portal/portal-common/src/main/webapp/common/image/integration/netnumenLogo.png b/openo-portal/portal-common/src/main/webapp/common/image/integration/netnumenLogo.png Binary files differdeleted file mode 100644 index 21f9e87a..00000000 --- a/openo-portal/portal-common/src/main/webapp/common/image/integration/netnumenLogo.png +++ /dev/null diff --git a/openo-portal/portal-common/src/main/webapp/common/image/integration/openo_bg_1.jpg b/openo-portal/portal-common/src/main/webapp/common/image/integration/openo_bg_1.jpg Binary files differindex 4a7b0722..db94b166 100644 --- a/openo-portal/portal-common/src/main/webapp/common/image/integration/openo_bg_1.jpg +++ b/openo-portal/portal-common/src/main/webapp/common/image/integration/openo_bg_1.jpg diff --git a/openo-portal/portal-common/src/main/webapp/common/image/integration/openo_bg_2.jpg b/openo-portal/portal-common/src/main/webapp/common/image/integration/openo_bg_2.jpg Binary files differindex db94b166..4a7b0722 100644 --- a/openo-portal/portal-common/src/main/webapp/common/image/integration/openo_bg_2.jpg +++ b/openo-portal/portal-common/src/main/webapp/common/image/integration/openo_bg_2.jpg diff --git a/openo-portal/portal-common/src/main/webapp/common/image/integration/openo_logo_black.png b/openo-portal/portal-common/src/main/webapp/common/image/integration/openo_logo_black.png Binary files differnew file mode 100644 index 00000000..f320af35 --- /dev/null +++ b/openo-portal/portal-common/src/main/webapp/common/image/integration/openo_logo_black.png diff --git a/openo-portal/portal-common/src/main/webapp/common/image/integration/openo_logo_pantone.png b/openo-portal/portal-common/src/main/webapp/common/image/integration/openo_logo_pantone.png Binary files differnew file mode 100644 index 00000000..14135042 --- /dev/null +++ b/openo-portal/portal-common/src/main/webapp/common/image/integration/openo_logo_pantone.png diff --git a/openo-portal/portal-common/src/main/webapp/common/image/integration/openo_logo_white.png b/openo-portal/portal-common/src/main/webapp/common/image/integration/openo_logo_white.png Binary files differindex ef9aedb7..7adc4ac3 100644 --- a/openo-portal/portal-common/src/main/webapp/common/image/integration/openo_logo_white.png +++ b/openo-portal/portal-common/src/main/webapp/common/image/integration/openo_logo_white.png diff --git a/openo-portal/portal-common/src/main/webapp/common/js/core/const.js b/openo-portal/portal-common/src/main/webapp/common/js/core/const.js index 3e36766c..e022439e 100644 --- a/openo-portal/portal-common/src/main/webapp/common/js/core/const.js +++ b/openo-portal/portal-common/src/main/webapp/common/js/core/const.js @@ -25,6 +25,7 @@ var IS_V5_TESTVERSION = true; var FrameConst={}; //Ĭϵ¼ɹתҳ FrameConst.DEFAULT_LOGINSKIP_PAGE = "common/main-page.html"; +FrameConst.DEFAULT_PAGE = "default.html"; FrameConst.do_heartbeat = false; FrameConst.change_pass = false; @@ -35,7 +36,7 @@ FrameConst.REST_HEARTBEAT = "../../api/uiframe/v1/heartbeat"; FrameConst.REST_GETLICENSEINFO = "../../api/uiframe/v1/licensevalueinfo"; FrameConst.REST_CHECKRIGHT = "../../api/uiframe/v1/checkRight"; FrameConst.REST_LOGIN = "../../api/uiframe/v1/login"; -FrameConst.REST_LOGOUT = "../../api/uiframe/v1/loginOut?SSOAction=SSOLogout"; +FrameConst.REST_LOGOUT = "/openoui/common/logout.html"; FrameConst.REST_GET_FRAME_MENUDIRECTION = "../../api/uiframe/v1/confByKey?key=usf.mainframe.web.navigation.direction"; FrameConst.REST_GET_USERNAME = "../../api/uiframe/v1/userName"; diff --git a/openo-portal/portal-common/src/main/webapp/common/js/core/load_menuList.js b/openo-portal/portal-common/src/main/webapp/common/js/core/load_menuList.js index c56952e5..972e782b 100644 --- a/openo-portal/portal-common/src/main/webapp/common/js/core/load_menuList.js +++ b/openo-portal/portal-common/src/main/webapp/common/js/core/load_menuList.js @@ -39,7 +39,7 @@ var initLeftMenu = function() { "</a>"; var templateChild = "<li>" + - "<a href='{url}' class='iframe'>" + + "<a href='{url}' class='iframe' id='{hrefId}'>" + "<i class='{iconClass}'></i>" + "<span id='{id}' name_i18n='{i18nName}'></span>" + "</a>" + @@ -57,6 +57,7 @@ var initLeftMenu = function() { childMenuContent = childMenuContent + templateChild.replace("{id}", childMenus[j].id) .replace("{url}", childMenus[j].url) .replace("{iconClass}", childMenus[j].iconClass) + .replace("{hrefId}", childMenus[j].id + "_href") .replace("{i18nName}", i18nName); } } diff --git a/openo-portal/portal-common/src/main/webapp/common/js/core/openoFrameWork.js b/openo-portal/portal-common/src/main/webapp/common/js/core/openoFrameWork.js index 267b7219..92367a71 100644 --- a/openo-portal/portal-common/src/main/webapp/common/js/core/openoFrameWork.js +++ b/openo-portal/portal-common/src/main/webapp/common/js/core/openoFrameWork.js @@ -329,14 +329,14 @@ var s=!function(w,d){ purl.jQuery(window.jQuery); return purl; }); -//把框架所有的ajax请求集中到一起,发一条请求,获取所有的配置信息。 +//把框架所有的ajax请求集中到一起,发一条请求,获取所有的配置信息。 openoFrameWork_conf = { - userName:store.get('username'), + userName:store("loginUserName"), changePassItem:FrameConst.change_pass?FrameConst.change_pass:true, helpMenuItem:false, aboutMenuItem:false, flightMenuItem:false, - fullscreenMenuItem:false, + fullscreenMenuItem:true, logoutMenuItem:true, defaultThemeColor:"ztebluelight2", dbType:"other", @@ -344,10 +344,10 @@ openoFrameWork_conf = { }; $("#currentUser").html(openoFrameWork_conf.userName); -$.ajax({ - url : FrameConst.REST_FRAMECOMMIFO, +$.ajax({ + url : FrameConst.REST_FRAMECOMMIFO, type : "GET", - cache:false, + cache:false, contentType : 'application/json; charset=utf-8', success: function(data){ var tempConf = data; @@ -403,51 +403,51 @@ function setThemeColor( configColor ){ }); }; -function setFrameWorkByConf(){ - //设置用户相关的框架下拉菜单是否可用 - var helpMenuItem = openoFrameWork_conf.helpMenuItem; - var aboutMenuItem = openoFrameWork_conf.aboutMenuItem; - var flightMenuItem = openoFrameWork_conf.flightMenuItem; - var fullscreenMenuItem = openoFrameWork_conf.fullscreenMenuItem; - var logoutMenuItem = openoFrameWork_conf.logoutMenuItem; - var changePassMenuItem = openoFrameWork_conf.changePassMenuItem; - if (!helpMenuItem || helpMenuItem === "false") { - $('#uep_ict_help_url').parent('li').remove(); - } - if(!aboutMenuItem|| aboutMenuItem === "false"){ - $('[data-target="#aboutDlg"]').parent('li').remove(); - } - if(!helpMenuItem && !aboutMenuItem){ - $('#uep_ict_help_div').remove(); - } - if (!flightMenuItem|| flightMenuItem === "false") { - $('#header_notification_bar').html("<div>      </div>"); - } - if (!fullscreenMenuItem|| fullscreenMenuItem === "false") { - //$('#trigger_fullscreen').parent().css("display", "none"); - $('#trigger_fullscreen_div').html(""); - } - if (!logoutMenuItem || logoutMenuItem === "false") { - //$('#trigger_logout').parent().css("display", "none"); - $('#trigger_logout_div').html(""); - } - if ((!fullscreenMenuItem && !logoutMenuItem) || (fullscreenMenuItem === "false" && logoutMenuItem === "false")) { - $('#full_logout_divider').css("display", "none"); - } - if (!changePassMenuItem ) { - $('#changePwd_labellink').css('display','none'); - $('#full_logout_divider').css('display','none'); - } - - //设置二次开发者选择的框架皮肤 - var defaultColor = openoFrameWork_conf.defaultThemeColor; - var panel = $('.zte-theme-panel'); - $('ul > li', panel).removeClass("current"); - if (store && !store('style_color')) { // cookie没有才设置默认主题 - setThemeColor(defaultColor); - }else{ - setThemeColor(store('style_color')); - } +function setFrameWorkByConf() { + //设置用户相关的框架下拉菜单是否可用 + var helpMenuItem = openoFrameWork_conf.helpMenuItem; + var aboutMenuItem = openoFrameWork_conf.aboutMenuItem; + var flightMenuItem = openoFrameWork_conf.flightMenuItem; + var fullscreenMenuItem = openoFrameWork_conf.fullscreenMenuItem; + var logoutMenuItem = openoFrameWork_conf.logoutMenuItem; + var changePassMenuItem = openoFrameWork_conf.changePassMenuItem; + if (!helpMenuItem || helpMenuItem === "false") { + $('#uep_ict_help_url').parent('li').remove(); + } + if (!aboutMenuItem|| aboutMenuItem === "false") { + $('[data-target="#aboutDlg"]').parent('li').remove(); + } + if (!helpMenuItem && !aboutMenuItem) { + $('#uep_ict_help_div').remove(); + } + if (!flightMenuItem|| flightMenuItem === "false") { + $('#header_notification_bar').html("<div>      </div>"); + } + if (!fullscreenMenuItem|| fullscreenMenuItem === "false") { + //$('#trigger_fullscreen').parent().css("display", "none"); + $('#trigger_fullscreen_div').html(""); + } + if (!logoutMenuItem || logoutMenuItem === "false") { + //$('#trigger_logout').parent().css("display", "none"); + $('#trigger_logout_div').html(""); + } + if ((!fullscreenMenuItem && !logoutMenuItem) || (fullscreenMenuItem === "false" && logoutMenuItem === "false")) { + $('#full_logout_divider').css("display", "none"); + } + if (!changePassMenuItem ) { + $('#changePwd_labellink').css('display','none'); + $('#full_logout_divider').css('display','none'); + } + + //设置二次开发者选择的框架皮肤 + var defaultColor = openoFrameWork_conf.defaultThemeColor; + var panel = $('.zte-theme-panel'); + $('ul > li', panel).removeClass("current"); + if (store && !store('style_color')) { // cookie没有才设置默认主题 + setThemeColor(defaultColor); + } else { + setThemeColor(store('style_color')); + } }; /*新增的hashtabel实现类,用户后续iframe的缓存,前进后退时打开过的页面的菜单id的缓存等*/ @@ -1269,7 +1269,7 @@ var openoFrameWork = function () { } var pdiv="pdiv_"+miframe; if($("#"+pdiv).length<=0){//检查下,如果该div没有添加过就添加 - pageContentBody.append("<div id='"+pdiv+"'></div>"); + pageContentBody.append("<div id='"+pdiv+"' style='height:800px;overflow:auto'></div>"); } dealstartPageLoading(); pymParent=createIframe(pdiv, url,miframe,miframe,miframe,_xdomain,_iframeAutoScroll); @@ -1952,7 +1952,7 @@ var openoFrameWork = function () { return "Already disabled!"; }; window.doLogout = function(){ - window.location=FrameConst.REST_LOGOUT; + top.window.document.location.href=FrameConst.REST_LOGOUT; }; //处理ict注销确认 $('#trigger_logout').click(function(){ @@ -3169,7 +3169,6 @@ var openoFrameWork = function () { return null; //返回参数值 } }; - }(); //抽取html片段中任意位置的script标签(包括代码是内嵌的情况)逐个运行(不会在单个script加载不到的时候停下来) diff --git a/openo-portal/portal-common/src/main/webapp/common/js/login.js b/openo-portal/portal-common/src/main/webapp/common/js/login.js index ccc150a4..1998aef5 100644 --- a/openo-portal/portal-common/src/main/webapp/common/js/login.js +++ b/openo-portal/portal-common/src/main/webapp/common/js/login.js @@ -17,39 +17,40 @@ String.prototype.trim = function() { return this.replace(/(^\s*)|(\s*$)/g, ""); }; -function loginSubmitHandler(form) { - var params = {}; - params["username"] = $("#openo_input_userName").val().trim(); - var sourcePass = $("#openo_input_password").val(); - var pass = sourcePass; - if (FrameConst.isEncypt === "true") { - pass = ict_framework_func1(pass); +function loginSubmitHandler() { + var loginData = { + "userName": $("#openo_input_userName").val(), + "password": $("#openo_input_password").val() } - params["password"] = pass; - params["isEncypted"] = FrameConst.isEncypt; - saveUserInfo(params); - location.href = FrameConst.DEFAULT_LOGINSKIP_PAGE; -// $.ajax({ -// url : FrameConst.REST_LOGIN, -// type : 'POST', -// data : JSON.stringify(params), -// dataType : 'json', -// contentType : 'application/json; charset=utf-8', -// success : function(data, status, xhr) { -// if (data.result == 0) { -// var epass = CryptoJS.MD5(params.username+sourcePass); -// store("icttka", epass.toLocaleString()); -// } -// processLoginResult(data, params); -// }, -// Error : function(xhr, error, exception) { -// if (console) { -// console.log("login fail:" + error); -// console.log(exception); -// } -// } -// }); + $.ajax({ + url : "/openoapi/auth/v1/tokens", + type : "POST", + contentType : 'application/json; charset=utf-8', + data : JSON.stringify(loginData) + }).done(function(data) { + var topURL = top.window.document.location.href; + if (topURL.indexOf("?service") != -1) { + top.window.document.location.href = decodeURIComponent(topURL.substring(topURL.indexOf("?service") + 9)); + } else { + top.window.document.location.href = "/openoui/common/default.html"; + } + store("loginUserName", $("#openo_input_userName").val()); + }).fail(function(data) { + var tipDivId = $("#loginConnError"); + if (data.status == 401) { + tipDivId = $("#nameOrpwdError"); + } + + tipDivId.addClass('alert-danger'); + if (tipDivId.attr("tipstatus") == "normal") { + tipDivId.show(); + } else if (tipDivId.attr("tipstatus") == "close") { + tipDivId.attr("tipstatus", "normal"); + } + }); + + saveUserInfo(); }; var Login = function () { @@ -103,75 +104,16 @@ var Login = function () { return false; } }); - - $("input[name='remember']").bind("click", function () { - saveUserInfo(); - }); - } - - var handleForgetPassword = function () { - $('.forget-form').validate({ - errorElement: 'span', //default input error message container - errorClass: 'help-block', // default input error message class - focusInvalid: false, // do not focus the last invalid input - ignore: "", - rules: { - email: { - required: true, - email: true - } - }, - messages: { - email: { - required: "Email is required." - } - }, - invalidHandler: function (event, validator) { //display error alert on form submit - }, - highlight: function (element) { // hightlight error inputs - $(element).closest('.form-group').addClass('has-error'); // set error class to the control group - }, - success: function (label) { - label.closest('.form-group').removeClass('has-error'); - label.remove(); - }, - errorPlacement: function (error, element) { - error.insertAfter(element.closest('.input-icon')); - }, - submitHandler: function (form) { - form.submit(); - } - }); - - $('.forget-form input').keypress(function (e) { - if (e.which == 13) { - if ($('.forget-form').validate().form()) { - $('.forget-form').submit(); - } - return false; - } - }); - - $('#forget-password').click(function () { - $('.login-form').hide(); - $('.forget-form').show(); - }); - - $('#back-btn').click(function () { - $('.login-form').show(); - $('.forget-form').hide(); - }); } return { //main function to initiate the module init: function () { handleLogin(); - handleForgetPassword(); $.backstretch([ - "./common/image/integration/openo_bg_1.jpg", - "./common/image/integration//openo_bg_2.jpg", - "./common/image/integration//openo_bg_3.jpg" + "image/integration/openo_bg_1.jpg", + "image/integration//openo_bg_2.jpg", + "image/integration//openo_bg_3.jpg" ], { fade: 500, duration: 15000 @@ -188,14 +130,12 @@ $(document).ready(function() { } }); -function saveUserInfo(params) { +function saveUserInfo() { var rmbcheck = $("input[name='remember']"); if (rmbcheck.attr("checked") == true || rmbcheck.is(':checked')) { - var userName = $("#openo_input_userName").val(); - var passWord = $("#openo_input_password").val(); store("remember", "true"); - store("openo_input_userName", params.username); - store("openo_input_password", passWord); + store("openo_input_userName", $("#openo_input_userName").val()); + store("openo_input_password", $("#openo_input_password").val()); } else { store.remove("remember"); store.remove("openo_input_userName"); diff --git a/openo-portal/portal-common/src/main/webapp/common/js/security/security.js b/openo-portal/portal-common/src/main/webapp/common/js/security/security.js index 521130c4..f6ae4d05 100644 --- a/openo-portal/portal-common/src/main/webapp/common/js/security/security.js +++ b/openo-portal/portal-common/src/main/webapp/common/js/security/security.js @@ -22,7 +22,7 @@ var ErrResult_LOGIN_SERV_ERROR = -1; function processLoginResult(data,params){ if(data.home="web/res/web-framework/index.html"||data.home.indexOf("index.html")>0){ - data.home=FrameConst.DEFAULT_LOGINSKIP_PAGE; + data.home=FrameConst.DEFAULT_PAGE; //下面这部分是为了演示需要临时增加的自动切换 /*if(params.username=="admin1"){ data.home="/web/res/web-framework/default.html?menu=1"; diff --git a/openo-portal/portal-common/src/main/webapp/common/login.html b/openo-portal/portal-common/src/main/webapp/common/login.html index 145bf3b4..71e3d3b6 100644 --- a/openo-portal/portal-common/src/main/webapp/common/login.html +++ b/openo-portal/portal-common/src/main/webapp/common/login.html @@ -19,34 +19,34 @@ <title id="openo_login_title" name_i18n="openo_login_i18n_login"></title> <meta charset="utf-8"/> <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta http-equiv="pragma" content="no-cache"/> + <meta http-equiv="cache-control" content="no-cache, no-store, max-age=0, must-revalidate"/> <meta content="width=device-width, initial-scale=1.0" name="viewport"/> <meta content="" name="description"/> <meta content="" name="author"/> - <link href="./common/thirdparty/fakeLoader/fakeLoader.css" rel="stylesheet" type="text/css"/> - <link href="./common/thirdparty/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css"/> - <link href="./common/thirdparty/bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css"/> - <link href="./common/thirdparty/uniform/css/uniform.default.css" rel="stylesheet" type="text/css"/> - <link href="./common/css/style-custom.css" rel="stylesheet" type="text/css"/> - <link href="./common/css/style.css" rel="stylesheet" type="text/css"/> - <link href="./common/css/style-responsive.css" rel="stylesheet" type="text/css"/> - <link href="./common/css/plugins.css" rel="stylesheet" type="text/css"/> - <link href="./common/css/login.css" rel="stylesheet" type="text/css"/> - <script src="./common/thirdparty/jquery/jquery-1.10.2.min.js" type="text/javascript"></script> - <script src="./common/thirdparty/fakeLoader/fakeLoader.min.js" type="text/javascript"></script> - <script src="./common/thirdparty/bootstrap/js/bootstrap.min.js" type="text/javascript"></script> - <script src="./common/thirdparty/jquery-blockui/jquery.blockui.min.js" type="text/javascript"></script> - <script src="./common/thirdparty/uniform/jquery.uniform.min.js" type="text/javascript"></script> - <script src="./common/thirdparty/jquery-validation/js/jquery.validate.min.js" type="text/javascript"></script> - <script src="./common/thirdparty/backstretch/jquery.backstretch.min.js" type="text/javascript"></script> - <script src="./common/thirdparty/jquery.i18n/jquery.i18n.properties-1.0.9.js" type="text/javascript"></script> - <script src="./common/js/core/const.js" type="text/javascript"></script> - <script src="./common/js/security/security.js" type="text/javascript"></script> - <script src="./common/js/core/hk.min.js" type="text/javascript"></script> - <script src="./common/js/tools.js" type="text/javascript"></script> - <script src="./common/js/security/aes.js" type="text/javascript"></script> - <script src="./common/js/security/framework-util.js" type="text/javascript"></script> - <script src="./common/js/login.js" type="text/javascript"></script> - <script src="./common/js/international/loadi18n.js" type="text/javascript"></script> + <link href="thirdparty/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css"/> + <link href="thirdparty/bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css"/> + <link href="thirdparty/uniform/css/uniform.default.css" rel="stylesheet" type="text/css"/> + <link href="css/style-custom.css" rel="stylesheet" type="text/css"/> + <link href="css/style.css" rel="stylesheet" type="text/css"/> + <link href="css/style-responsive.css" rel="stylesheet" type="text/css"/> + <link href="css/plugins.css" rel="stylesheet" type="text/css"/> + <link href="css/login.css" rel="stylesheet" type="text/css"/> + <script src="thirdparty/jquery/jquery-1.10.2.min.js" type="text/javascript"></script> + <script src="thirdparty/bootstrap/js/bootstrap.min.js" type="text/javascript"></script> + <script src="thirdparty/jquery-blockui/jquery.blockui.min.js" type="text/javascript"></script> + <script src="thirdparty/uniform/jquery.uniform.min.js" type="text/javascript"></script> + <script src="thirdparty/jquery-validation/js/jquery.validate.min.js" type="text/javascript"></script> + <script src="thirdparty/backstretch/jquery.backstretch.min.js" type="text/javascript"></script> + <script src="thirdparty/jquery.i18n/jquery.i18n.properties-1.0.9.js" type="text/javascript"></script> + <script src="js/core/const.js" type="text/javascript"></script> + <script src="js/security/security.js" type="text/javascript"></script> + <script src="js/core/hk.min.js" type="text/javascript"></script> + <script src="js/tools.js" type="text/javascript"></script> + <script src="js/security/aes.js" type="text/javascript"></script> + <script src="js/security/framework-util.js" type="text/javascript"></script> + <script src="js/login.js" type="text/javascript"></script> + <script src="js/international/loadi18n.js" type="text/javascript"></script> <script> if(top != window){ top.location.href = location.href; @@ -61,23 +61,19 @@ </script> </head> <body class="login"> - <div id="pageLoading" class="fakeloader"></div> - <script type="text/javascript"> - $("#pageLoading").fakeLoader({text:"",bgColor:"#1178ee",opacity:'1',spinner:"spinner2",zIndex:99999999}); - </script> - <div class="logo"> - <img id="openo_login_logo_white" src="./common/image/integration/openo_logo_white.png" name_img="openo_login_logo_white_img" style="display:none" alt=""/> - </div> <div class="content"> - <form class="login-form" method="post" id="fm1" action="./login"> + <form class="login-form"> + <div class="logo"> + <img id="openo_login_logo" src="image/integration/openo_logo_pantone.png" width="100%" style="display:inline"/> + </div> <h3 class="form-title"><span id="openo_login_welcome" name_i18n="openo_login_i18n_login"></span></h3> <div class="alert display-hide" id="nameOrpwdError" tipstatus="normal"> <button class="close" data-close="alert" onclick="hidetip('nameOrpwdError');"></button> - <div id="openo_login_userPassword" name_i18n="openo_login_i18n_login" style="display:inline"></div> + <div id="openo_login_userPasswordError" name_i18n="openo_login_i18n_login" style="display:inline"></div> </div> <div class="alert display-hide" id="loginConnError" tipstatus="normal"> <button class="close" data-close="alert" onclick="hidetip('loginConnError');"></button> - <div id="openo_login_error" name_i18n="openo_login_i18n_login" style="display:inline"></div> + <div id="openo_login_connectError" name_i18n="openo_login_i18n_login" style="display:inline"></div> </div> <div class="form-group"> <label id="openo_login_username" name_i18n="openo_login_i18n_login" class="control-label visible-ie8 visible-ie9" i18n-html="openo_login_username"></label> @@ -107,13 +103,11 @@ </div> <script> jQuery(document).ready(function() { - loadi18n_WebFramework('web-framework-login-i18n', './common/i18n/', 'openo_login_i18n_login'); - $("#openo_login_logo_white").css('display','inline'); + loadi18n_WebFramework('web-framework-login-i18n', 'i18n/', 'openo_login_i18n_login'); Login.init(); if(store("openo_input_userName")){ $("#openo_input_userName").val(store("openo_input_userName")); } - $("#pageLoading").setToHide(); }); </script> </body> diff --git a/openo-portal/portal-common/src/main/webapp/common/logout.html b/openo-portal/portal-common/src/main/webapp/common/logout.html new file mode 100644 index 00000000..bb3dbc21 --- /dev/null +++ b/openo-portal/portal-common/src/main/webapp/common/logout.html @@ -0,0 +1,39 @@ +<!-- + Copyright 2016 Huawei Technologies Co., Ltd. + + 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. +--> +<!doctype html> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> + <script type="text/javascript" src="/openoui/common/thirdparty/jquery/jquery-1.11.2.min.js"></script> +</head> +<body> + <script type="text/javascript"> + $.ajax({ + url: "/openoapi/auth/v1/tokens" + "?=" + new Date().getTime(), + type: "DELETE", + contentType: "application/json", + dataType: "text", + success: function() { + top.window.location = "/openoui/common/login.html"; + }, + error: function() { + top.window.location = "/openoui/common/login.html"; + } + }) + </script> +</body> +</html> diff --git a/openo-portal/portal-lifecyclemgr/src/main/webapp/lifecyclemgr/gsolcmmain.html b/openo-portal/portal-lifecyclemgr/src/main/webapp/lifecyclemgr/gsolcmmain.html index d20c55b1..e097e3ff 100644 --- a/openo-portal/portal-lifecyclemgr/src/main/webapp/lifecyclemgr/gsolcmmain.html +++ b/openo-portal/portal-lifecyclemgr/src/main/webapp/lifecyclemgr/gsolcmmain.html @@ -30,11 +30,14 @@ <script type="text/javascript" src="js/bootstrap-table.min.js"></script>
<script type="text/javascript" src="js/gsolcm.js"></script>
<script type="text/javascript" src="../common/thirdparty/bootbox/bootbox.min.js"></script>
+ <script type="text/javascript" src="js/jquery.bootstrap-growl.min.js"></script>
+ <script type="text/javascript" src="js/jquery.isloading.min.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.12.1.min.js"></script>
<link href="css/jquery-ui-1.12.1.min.css" rel="stylesheet" />
<script type="text/javascript" src="js/bootstrap-table-filter-control.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
+ new lcmHandler();
$('.modal-dialog').draggable();
$("#detailCont").show();
@@ -74,7 +77,7 @@ document.getElementById('inputcontent').setAttribute('data', 'InputData.html?json='+ JSON.stringify(row));
document.getElementById('inputcontentDlg').setAttribute('data', 'InputData.html?json='+ JSON.stringify(row));
});
- new lcmHandler();
+
});
function operateFormatter(value, row, index) {
@@ -213,6 +216,30 @@ .clearfix {
display: none;
}
+ .isloading-wrapper.isloading-right{
+ margin-left:10px;
+ }
+ .isloading-overlay{
+ position:relative;
+ text-align:center;
+ }
+ .isloading-overlay .isloading-wrapper{
+ background: url("images/loading.gif") 90% 50% no-repeat #FFFFFF;
+ padding:15px 30px;
+ -webkit-border-radius:7px;
+ -webkit-background-clip:padding-box;
+ -moz-border-radius:7px;
+ -moz-background-clip:padding;
+ border-radius:7px;
+ background-clip:padding-box;
+ display:inline-block;
+ margin:0 auto;
+ top:10%;
+ z-index:9000;
+ }
+ .icon-refresh{
+ background: url("images/loading.gif") 50% 50% no-repeat;
+ }
</style>
</head>
<body id="open_base_site_cotentBody" class="cotentBody ng-scope">
diff --git a/openo-portal/portal-lifecyclemgr/src/main/webapp/lifecyclemgr/images/loading.gif b/openo-portal/portal-lifecyclemgr/src/main/webapp/lifecyclemgr/images/loading.gif Binary files differnew file mode 100644 index 00000000..5e28c953 --- /dev/null +++ b/openo-portal/portal-lifecyclemgr/src/main/webapp/lifecyclemgr/images/loading.gif diff --git a/openo-portal/portal-lifecyclemgr/src/main/webapp/lifecyclemgr/js/gsolcm.js b/openo-portal/portal-lifecyclemgr/src/main/webapp/lifecyclemgr/js/gsolcm.js index 23f0a8d2..907f4821 100644 --- a/openo-portal/portal-lifecyclemgr/src/main/webapp/lifecyclemgr/js/gsolcm.js +++ b/openo-portal/portal-lifecyclemgr/src/main/webapp/lifecyclemgr/js/gsolcm.js @@ -32,6 +32,7 @@ lcmHandler.prototype = { alert('Location must be selected in Template Parameters'); return; } + $.isLoading({ text: "Creating service..." }); var serviceInstance = { serviceTemplateId: $("#svcTempl").val(), serviceName: $('#svcName').val(), @@ -48,14 +49,40 @@ lcmHandler.prototype = { return createNetworkServiceInstance(template, serviceInstance, gatewayService); } ).then( - function(serviceInstance) { - updateTable(serviceInstance); - $('#vmAppDialog').removeClass('in').css('display', 'none'); + function(response) { + $.isLoading('hide'); + if(response.status === 'success') { + updateTable(response.serviceInstance); + $('#vmAppDialog').removeClass('in').css('display', 'none'); + } else { + showErrorMessage('Create service failed', response.errorResult); + } } ); } }; +function showErrorMessage(title, result) { + var info = '<br/>' + '<h5>' + title + '</h5><hr/>'; + info = info + '<h6>Status: ' + result.status + '</h6><p/>'; + info = info + '<h6>Description: </h6>'; + if(result.statusDescription.forEach === undefined) { + info = info + '<h6>' + result.statusDescription + '</h6><p/>'; + } else { + result.statusDescription.forEach(function(message) { + info = info + '<h6>' + message + '</h6><p/>'; + }); + } + info = info + '<h6>Error code: '+ result.errorCode + '</h6>'; + $.bootstrapGrowl(info, { + type: 'danger', + align: 'center', + width: "auto", + delay: 10000, + allow_dismiss: true + }); +} + function checkLocation(parameters) { var checkPass = true; var i = 0; @@ -150,7 +177,11 @@ function fetchGsoTemplateInputParameters(templateId) { fetchSdnController() ).then( function (templateParameterResponse, nestingTempatesParas, vimInfoResponse, sdnControllersResponse) { - var inputParas = concat(templateParameterResponse[0].inputs, nestingTempatesParas); + var inputs = templateParameterResponse[0].inputs.map(function(input) { + input.showName = input.name; + return input; + }); + var inputParas = concat(inputs, nestingTempatesParas); var vims = translateToVimInfo(vimInfoResponse[0]); var sdnControllers = translateToSdnControllers(sdnControllersResponse[0]); templateParameters = translateToTemplateParameters(inputParas, vims, sdnControllers); @@ -193,6 +224,7 @@ function fetchGsoNestingTemplateParameters(templateId) { return; } var inputs = serviceTemplate.inputs.map(function(input) { + input.showName = input.name; input.name = nodeTemplate.type + '.' + input.name; return input; }); @@ -205,13 +237,15 @@ function fetchGsoNestingTemplateParameters(templateId) { name: nodeTemplate.type + '.location', type: 'location', description: nodeTemplate.name + ' Location', - required: 'true' + required: 'true', + showName: nodeTemplate.name + ' Location' }); inputs.push({ name: nodeTemplate.type + '.sdncontroller', type: 'sdncontroller', description: nodeTemplate.name + ' SDN Controller', - required: 'true' + required: 'true', + showName: nodeTemplate.name + ' SDN Controller' }); } nodeAggregatation.notify(inputs); @@ -274,7 +308,8 @@ function translateToTemplateParameters(inputs, vims, controllers) { defaultValue: inputs[i].defaultValue, required: inputs[i].required, id: 'parameters_' + i, - value: inputs[i].defaultValue || '' + value: inputs[i].defaultValue || '', + showName: inputs[i].showName }; } return {changed: false, parameters: inputParameters, vimInfos: vims, sdnControllers: controllers}; @@ -291,17 +326,23 @@ function fetchNfvoTemplateInputParameters(templateId) { var vims = translateToVimInfo(vimInfoResponse[0]); var sdnControllers = translateToSdnControllers(sdnControllerResponse[0]); var inputParas = templateParameterResponse[0].inputs; + inputParas = inputParas.map(function(input) { + input.showName = input.name; + return input; + }); inputParas.push({ name: 'location', type: 'location', description: 'Location', - required: 'true' + required: 'true', + showName: 'Location' }); inputParas.push({ name: 'sdncontroller', type: 'sdncontroller', description: 'SDN Controller', - required: 'true' + required: 'true', + showName: 'SDN Controller' }); templateParameters = translateToTemplateParameters(inputParas, vims, sdnControllers); defer.resolve(templateParameters); @@ -316,7 +357,11 @@ function fetchSdnoTemplateInputParameters(templateId) { fetchTemplateParameterDefinitions(templateId) ).then( function (templateParameterResponse) { - templateParameters = translateToTemplateParameters(templateParameterResponse.inputs, [], []); + var inputs = templateParameterResponse.inputs.map(function(input) { + input.showName = input.name; + return input; + }) + templateParameters = translateToTemplateParameters(inputs, [], []); defer.resolve(templateParameters); } ); @@ -385,7 +430,7 @@ function transformToComponents(templateParas) { function generateComboxComponent(inputPara, items) { var component = '<div class="form-group" style="margin-left:25px;margin-bottom:15px;">' + '<label class="col-sm-3 control-label">' + - '<span>'+ inputPara.description +'</span>' + + '<span>'+ inputPara.showName +'</span>' + '<span class="required">*</span>' + '</label>' + '<div class="col-sm-7">' + @@ -409,11 +454,11 @@ function transformToOptions(items) { function generateComponent(inputPara) { var component = '<div class="mT15 form-group" style="margin-left:25px;">' + '<label class="col-sm-3 control-label">' + - '<span>' + inputPara.description + '</span>' + generateRequiredLabel(inputPara) + + '<span>' + inputPara.showName + '</span>' + generateRequiredLabel(inputPara) + '</label>' + '<div class="col-sm-7">' + '<input type="text" id="' + inputPara.id + '" name="parameter description" class="form-control" placeholder="' + - inputPara.description + '" value="' + inputPara.value + '" />' + + inputPara.showName + '" value="' + inputPara.value + '" />' + '</div></div>'; return component; } @@ -457,25 +502,30 @@ function createGsoServiceInstance(gatewayService, serviceInstance, serviceTempla dataType: "json", data: JSON.stringify(parameter) })).then(function(response) { - serviceInstance.serviceId = response.serviceId; - defer.resolve(serviceInstance); + if(response.result.status === 'success') { + serviceInstance.serviceId = response.serviceId; + defer.resolve({status: 'success', instance: serviceInstance}); + } else { + defer.resolve({status: 'fail', errorResult: response.result}); + } }); return defer; } function createNfvoServiceInstance(gatewayService, serviceInstance, template) { - var nfvoLcmNsUri = '/openoapi/nslcm/v1/ns'; + var nfvoLcmUri = '/openoapi/nslcm/v1'; serviceInstance.nsdId = template.id; - return createServiceInstance(gatewayService, nfvoLcmNsUri, serviceInstance); + return createServiceInstance(gatewayService, nfvoLcmUri, serviceInstance); } function createSdnoServiceInstance(gatewayService, serviceInstance) { - var sdnoLcmNsUri = '/openoapi/sdnonslcm/v1/ns'; + var sdnoLcmUri = '/openoapi/sdnonslcm/v1'; serviceInstance.nsdId = serviceInstance.serviceTemplateId; - return createServiceInstance(gatewayService, sdnoLcmNsUri, serviceInstance); + return createServiceInstance(gatewayService, sdnoLcmUri, serviceInstance); } -function createServiceInstance(gatewayService, nsUri, serviceInstance) { +function createServiceInstance(gatewayService, lcmUri, serviceInstance) { + var nsUri = lcmUri + '/ns'; var defer = $.Deferred(); var sParameter = { 'nsdId': serviceInstance.nsdId, @@ -490,23 +540,75 @@ function createServiceInstance(gatewayService, nsUri, serviceInstance) { dataType: "json", data: JSON.stringify(sParameter) })).then(function(response) { - var nsInstanceId = response.serviceId; - serviceInstance.serviceId = nsInstanceId; - var initNsUrl = nsUri + '/' + nsInstanceId + '/instantiate'; - var parameter = { - 'gatewayUri': initNsUrl, - 'nsInstanceId': nsInstanceId, - 'additionalParamForNs': serviceInstance.inputParameters - }; - return $.ajax({ - type: "POST", - url: gatewayService, - contentType: "application/json", - dataType: "json", - data: JSON.stringify(parameter) - }); - }).then(function() { - defer.resolve(serviceInstance); + if(response.result.status === 'success') { + var nsInstanceId = response.serviceId; + serviceInstance.serviceId = nsInstanceId; + var initNsUrl = nsUri + '/' + nsInstanceId + '/instantiate'; + var parameter = { + 'gatewayUri': initNsUrl, + 'nsInstanceId': nsInstanceId, + 'additionalParamForNs': serviceInstance.inputParameters + }; + return $.ajax({ + type: "POST", + url: gatewayService, + contentType: "application/json", + dataType: "json", + data: JSON.stringify(parameter) + }); + } else { + return response; + } + }).then(function(response) { + if(response.result.status === 'success') { + var jobId = response.serviceId; + var jobStatusUri = lcmUri + '/jobs/' + jobId; + var timerDefer = $.Deferred(); + var timeout = 600000; + var fun = function() { + if(timeout === 0) { + timerDefer.resolve({ + status: 'fail', + statusDescription: 'Operation is timeout!', + errorCode: '' + }); + return; + } + timeout = timeout - 1000; + $.when( + $.ajax({ + type: "GET", + url: jobStatusUri + }) + ).then( + function(jobResponse) { + var responseDesc = jobResponse.responseDescriptor; + if(responseDesc.status === 'finished' || responseDesc.status === 'error') { + timerDefer.resolve(responseDesc); + } + } + ); + }; + var timerId = setInterval(fun, 1000); + $.when(timerDefer).then( + function(responseDesc) { + clearInterval(timerId); + if(responseDesc.status === 'finished') { + defer.resolve({status: 'success', instance: serviceInstance}); + } else { + defer.resolve({ + status: 'fail', + errorResult: { + status: responseDesc.status, + statusDescription: responseDesc.statusDescription, + errorCode: responseDesc.errorCode + }}}); + } + } + ); + } else { + defer.resolve({status: 'fail', errorResult: response.result}); + } }); return defer; } @@ -540,20 +642,26 @@ function formatDate(date) { function deleteNe(rowId, row) { var deleteHandle = function(result) { if(result) { + $.isLoading({ text: "Deleting service..." }); var instanceId = row.serviceId; var serviceType = row.serviceType; var gatewayService = '/openoapi/servicegateway/v1/services/' + instanceId + '/terminate'; var remove = function () { + $.isLoading( "hide" ); $('#sai').bootstrapTable('remove', {field: 'serviceId', values: [instanceId]}); }; + var failFun = function(responseDesc) { + $.isLoading( "hide" ); + showErrorMessage("Delete service failed", responseDesc); + } if(serviceType === 'GSO') { deleteGsoServiceInstance(gatewayService, instanceId, remove); } else if (serviceType === 'NFVO') { - var nfvoNsUri = '/openoapi/nslcm/v1/ns'; - deleteNonGsoServiceInstance(gatewayService, nfvoNsUri, instanceId, remove); + var nfvoLcmUri = '/openoapi/nslcm/v1'; + deleteNonGsoServiceInstance(gatewayService, nfvoLcmUri, instanceId, remove, failFun); } else if (serviceType === 'SDNO') { - var sdnoNsUri = '/openoapi/sdnonslcm/v1/ns'; - deleteNonGsoServiceInstance(gatewayService, sdnoNsUri, instanceId, remove); + var sdnoLcmUri = '/openoapi/sdnonslcm/v1'; + deleteNonGsoServiceInstance(gatewayService, sdnoLcmUri, instanceId, remove, failFun); } } }; @@ -571,18 +679,67 @@ function deleteGsoServiceInstance(gatewayService, instanceId, remove) { ); } -function deleteNonGsoServiceInstance(gatewayService, nsUri, instanceId, remove) { +function deleteNonGsoServiceInstance(gatewayService, lcmUri, instanceId, remove, failFun) { + var nsUri = lcmUri + '/ns'; $.when( terminateNetworkServiceInstance(gatewayService, nsUri, instanceId) ).then( - function() { - return deleteNetworkServiceInstance(gatewayService, nsUri, instanceId); - } - ).then( - function() { - remove(); + function(response) { + var jobId = response.jobId; + var jobStatusUri = lcmUri + '/jobs/' + jobId; + var timerDefer = $.Deferred(); + var timeout = 600000; + var fun = function() { + if(timeout === 0) { + timerDefer.resolve({ + status: 'fail', + statusDescription: 'Operation is timeout!', + errorCode: '' + }); + return; + } + timeout = timeout - 1000; + $.when( + $.ajax({ + type: "GET", + url: jobStatusUri + }) + ).then( + function(jobResponse) { + var responseDesc = jobResponse.responseDescriptor; + if(responseDesc.status === 'finished' || responseDesc.status === 'error') { + timerDefer.resolve(responseDesc); + } + } + ); + }; + var timerId = setInterval(fun, 1000); + $.when(timerDefer).then( + function(responseDesc) { + clearInterval(timerId); + if(responseDesc.status === 'finished') { + $.when( + deleteNetworkServiceInstance(gatewayService, nsUri, instanceId) + ).then( + function(nsResponse) { + if(nsResponse.status === 'success') { + remove(); + } else { + failFun(nsResponse); + } + } + ).fail(function() { + failFun({status: "fail", statusDescription: "delete service failed.", errorCode: "500"}}); + }); + } else { + failFun(responseDesc); + } + } + ); } - ); + ).fail(function() { + failFun({status: "fail", statusDescription: "delete service failed.", errorCode: "500"}}); + }); } function deleteNetworkServiceInstance(gatewayService, nsUri, instanceId) { diff --git a/openo-portal/portal-lifecyclemgr/src/main/webapp/lifecyclemgr/js/jquery.bootstrap-growl.min.js b/openo-portal/portal-lifecyclemgr/src/main/webapp/lifecyclemgr/js/jquery.bootstrap-growl.min.js new file mode 100644 index 00000000..67837e50 --- /dev/null +++ b/openo-portal/portal-lifecyclemgr/src/main/webapp/lifecyclemgr/js/jquery.bootstrap-growl.min.js @@ -0,0 +1 @@ +(function(){var c;c=jQuery;c.bootstrapGrowl=function(f,a){var b,e,d;a=c.extend({},c.bootstrapGrowl.default_options,a);b=c("<div>");b.attr("class","bootstrap-growl alert");a.type&&b.addClass("alert-"+a.type);a.allow_dismiss&&(b.addClass("alert-dismissible"),b.append('<button class="close" data-dismiss="alert" type="button"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>'));b.append(f);a.top_offset&&(a.offset={from:"top",amount:a.top_offset});d=a.offset.amount;c(".bootstrap-growl").each(function(){return d= Math.max(d,parseInt(c(this).css(a.offset.from))+c(this).outerHeight()+a.stackup_spacing)});e={position:"body"===a.ele?"fixed":"absolute",margin:0,"z-index":"9999",display:"none"};e[a.offset.from]=d+"px";b.css(e);"auto"!==a.width&&b.css("width",a.width+"px");c(a.ele).append(b);switch(a.align){case "center":b.css({left:"50%","margin-left":"-"+b.outerWidth()/2+"px"});break;case "left":b.css("left","20px");break;default:b.css("right","20px")}b.fadeIn();0<a.delay&&b.delay(a.delay).fadeOut(function(){return c(this).alert("close")}); return b};c.bootstrapGrowl.default_options={ele:"body",type:"info",offset:{from:"top",amount:20},align:"right",width:250,delay:4E3,allow_dismiss:!0,stackup_spacing:10}}).call(this); diff --git a/openo-portal/portal-lifecyclemgr/src/main/webapp/lifecyclemgr/js/jquery.isloading.min.js b/openo-portal/portal-lifecyclemgr/src/main/webapp/lifecyclemgr/js/jquery.isloading.min.js new file mode 100644 index 00000000..87573765 --- /dev/null +++ b/openo-portal/portal-lifecyclemgr/src/main/webapp/lifecyclemgr/js/jquery.isloading.min.js @@ -0,0 +1,39 @@ +/** +* Loading plugin for jQuery +* version: v1.0.6 +* +* Small helper to give the user a visual feedback that something is happening +* when fetching/posting data +* +* USAGE: +* - global overlay: $.isLoading(); +* - use javascript: $( selector ).isLoading(); +* - On non-form elements: $("div").isLoading({ text: "Loading", position:'inside'}); +* - remove the loading element: $( selector ).isLoading( "hide" ); +* +* @author Laurent Blanes <laurent.blanes@gmail.com> +* --- +* Copyright 2013, Laurent Blanes ( https://github.com/hekigan/is-loading ) +* +* The MIT License (MIT) +* +* Copyright (c) 2013 Laurent Blanes +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +* THE SOFTWARE. +*/!function(e,t){function i(t,i){this.element=t,this.options=e.extend({},n,i),this._defaults=n,this._name=o,this._loader=null,this.init()}function s(){e[o]||(e.isLoading=function(t){e("body").isLoading(t)})}var o="isLoading",n={position:"right",text:"","class":"glyphicon glyphicon-refresh",transparency:.5,tpl:'<span class="isloading-wrapper %wrapper%">%text%<i class="%class% glyphicon-spin"></i></span>',disableSource:!0,disableOthers:[]};i.prototype={init:function(){e(this.element).is("body")&&(this.options.position="overlay"),this.show()},show:function(){var i=this,s=i.options.tpl.replace("%wrapper%"," isloading-show isloading-"+i.options.position);switch(s=s.replace("%class%",i.options["class"]),s=s.replace("%text%",""!==i.options.text?i.options.text+" ":""),i._loader=e(s),e(i.element).is("input, textarea")&&!0===i.options.disableSource?e(i.element).attr("disabled","disabled"):!0===i.options.disableSource&&e(i.element).addClass("disabled"),i.options.position){case"inside":e(i.element).html(i._loader);break;case"overlay":var o=null;if(e(i.element).is("body"))o=e('<div class="isloading-overlay" style="position:fixed; left:0; top:0; z-index: 10000; background: rgba(0,0,0,'+i.options.transparency+"); width: 100%; height: "+e(t).height()+'px;" />'),e("body").prepend(o),e(t).on("resize",function(){o.height(e(t).height()+"px"),i._loader.css({top:e(t).height()/2-i._loader.outerHeight()/2+"px"})});else{var n=e(i.element).css("position"),a={},l=e(i.element).outerHeight()+"px",r="100%";a="relative"===n||"absolute"===n?{top:0,left:0}:e(i.element).position(),o=e('<div class="isloading-overlay" style="position:absolute; top: '+a.top+"px; left: "+a.left+"px; z-index: 10000; background: rgba(0,0,0,"+i.options.transparency+"); width: "+r+"; height: "+l+';" />'),e(i.element).prepend(o),e(t).on("resize",function(){o.height(e(i.element).outerHeight()+"px"),i._loader.css({top:o.outerHeight()/2-i._loader.outerHeight()/2+"px"})})}o.html(i._loader),i._loader.css({top:o.outerHeight()/2-i._loader.outerHeight()/2+"px"});break;default:e(i.element).after(i._loader)}i.disableOthers()},hide:function(){"overlay"===this.options.position?e(this.element).find(".isloading-overlay").first().remove():(e(this._loader).remove(),e(this.element).text(e(this.element).attr("data-isloading-label"))),e(this.element).removeAttr("disabled").removeClass("disabled"),this.enableOthers()},disableOthers:function(){e.each(this.options.disableOthers,function(t,i){var s=e(i);s.is("button, input, textarea")?s.attr("disabled","disabled"):s.addClass("disabled")})},enableOthers:function(){e.each(this.options.disableOthers,function(t,i){var s=e(i);s.is("button, input, textarea")?s.removeAttr("disabled"):s.removeClass("disabled")})}},e.fn[o]=function(t){return this.each(function(){if(t&&"hide"!==t||!e.data(this,"plugin_"+o))e.data(this,"plugin_"+o,new i(this,t));else{var s=e.data(this,"plugin_"+o);"hide"===t?s.hide():s.show()}})},s()}(jQuery,window,document); diff --git a/openo-portal/portal-package/pom.xml b/openo-portal/portal-package/pom.xml index fd051a15..24d6d062 100644 --- a/openo-portal/portal-package/pom.xml +++ b/openo-portal/portal-package/pom.xml @@ -27,7 +27,7 @@ <packaging>war</packaging> <properties> - <packagename>openo-portal</packagename> + <packagename>openoui</packagename> </properties> <dependencies> @@ -103,7 +103,7 @@ </dependencies> <build> - <finalName>openo-portal</finalName> + <finalName>openoui</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> diff --git a/openo-portal/portal-package/src/main/resources/portalConfig/msb_register.xml b/openo-portal/portal-package/src/main/resources/portalConfig/msb_register.xml index b0a94acd..ad16c1e6 100644 --- a/openo-portal/portal-package/src/main/resources/portalConfig/msb_register.xml +++ b/openo-portal/portal-package/src/main/resources/portalConfig/msb_register.xml @@ -24,7 +24,7 @@ <registerInfo> <ip>127.0.0.1</ip> <port>8300</port> - <url>/openo-portal/common</url> + <url>/openoui/common</url> <serviceName>common</serviceName> <protocol>UI</protocol> <visualRange>1</visualRange> @@ -34,7 +34,7 @@ <registerInfo> <ip>127.0.0.1</ip> <port>8300</port> - <url>/openo-portal/catalog</url> + <url>/openoui/catalog</url> <serviceName>catalog</serviceName> <protocol>UI</protocol> <visualRange>1</visualRange> @@ -44,7 +44,7 @@ <registerInfo> <ip>127.0.0.1</ip> <port>8300</port> - <url>/openo-portal/extsys</url> + <url>/openoui/extsys</url> <serviceName>extsys</serviceName> <protocol>UI</protocol> <visualRange>1</visualRange> @@ -54,7 +54,7 @@ <registerInfo> <ip>127.0.0.1</ip> <port>8300</port> - <url>/openo-portal/performance</url> + <url>/openoui/performance</url> <serviceName>performance</serviceName> <protocol>UI</protocol> <visualRange>1</visualRange> @@ -64,7 +64,7 @@ <registerInfo> <ip>127.0.0.1</ip> <port>8300</port> - <url>/openo-portal/lifecyclemgr</url> + <url>/openoui/lifecyclemgr</url> <serviceName>lifecyclemgr</serviceName> <protocol>UI</protocol> <visualRange>1</visualRange> @@ -74,7 +74,7 @@ <registerInfo> <ip>127.0.0.1</ip> <port>8300</port> - <url>/openo-portal/resmgr-nfv</url> + <url>/openoui/resmgr-nfv</url> <serviceName>resmgr-nfv</serviceName> <protocol>UI</protocol> <visualRange>1</visualRange> @@ -84,7 +84,7 @@ <registerInfo> <ip>127.0.0.1</ip> <port>8300</port> - <url>/openo-portal/resmgr-sdn</url> + <url>/openoui/resmgr-sdn</url> <serviceName>resmgr-sdn</serviceName> <protocol>UI</protocol> <visualRange>1</visualRange> @@ -94,7 +94,7 @@ <registerInfo> <ip>127.0.0.1</ip> <port>8300</port> - <url>/openo-portal/user</url> + <url>/openoui/user</url> <serviceName>user</serviceName> <protocol>UI</protocol> <visualRange>1</visualRange> |