diff options
author | shentao <shentao@chinamobile.com> | 2017-08-31 23:40:50 +0800 |
---|---|---|
committer | shentao <shentao@chinamobile.com> | 2017-08-31 23:40:58 +0800 |
commit | 4ff32341a0af1972b44a7410e76e9b231131e7ab (patch) | |
tree | e12d231d9204183e288cd2c39100b796d0c3365c /usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp | |
parent | 47b0a0f5957fab266d8c02d0fb09ac6bba343cbd (diff) |
Upload Usecase-UI project structure code
Change-Id: Iac0da235df9fdf075d6ea6e368cebf58695fc796
Issue-Id: USECASEUI-6
Signed-off-by: shentao <shentao@chinamobile.com>
Diffstat (limited to 'usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp')
21 files changed, 2974 insertions, 0 deletions
diff --git a/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/.gitignore b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/.gitignore new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/.gitignore diff --git a/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/broadcast.jsp b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/broadcast.jsp new file mode 100644 index 00000000..0b700867 --- /dev/null +++ b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/broadcast.jsp @@ -0,0 +1,137 @@ +<%-- + ================================================================================ + eCOMP Portal SDK + ================================================================================ + Copyright (C) 2017 AT&T Intellectual Property + ================================================================================ + 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. + ================================================================================ + --%> +<%@ page import="org.openecomp.portalsdk.core.web.support.UserUtils" %> +<%@ page import="org.openecomp.portalsdk.core.web.support.ControllerProperties" %> +<%@ page import="org.openecomp.portalsdk.core.util.SystemProperties" %> + +<%-- <%@ include file="/WEB-INF/fusion/jsp/include.jsp" %> --%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<link rel="stylesheet" type="text/css" href="static/fusion/css/jquery-ui.css"> + + <c:set var="clustered" value="<%=(\"true\".equals(SystemProperties.getProperty(SystemProperties.CLUSTERED)))%>"/> + + <script src="static/fusion/js/moment.min.js"></script> + + <div class="pageTitle"> + <h3> + <c:choose> + <c:when test="${!empty param.message_id}"> + <h1 class="heading1" style="margin-top:20px;">Broadcast Message Edit</h1> + </c:when> + <c:otherwise> + <h1 class="heading1" style="margin-top:20px;">Broadcast Message Create</h1> + </c:otherwise> + </c:choose> + </h3> + </div> + +<div ng-controller="broadcastController" > + Please edit the broadcast message details below: <br><br> + <div class="fn-ebz-container" > + <label class="fn-ebz-text-label"><sup><b>*</b></sup>Message Text:</label><BR> + <textarea name="comment" ng-model="broadcastMessage.messageText" rows="5" cols="200" style="height:100px"></textarea> + </div> + <br> + <div class="fn-ebz-container" > + <label class="fn-ebz-text-label"><sup><b>*</b></sup>Start Date:</label><BR> + <input style="display:none" name="startDateHidden" ng-model="broadcastMessage.startDate"> + <input type="text" class="fn-ebz-text" id="startDatepicker" /> + </div> + + <div class="fn-ebz-container" style="margin-left:3em" > + <label class="fn-ebz-text-label"><sup><b>*</b></sup>End Date:</label><BR> + <input style="display:none" name="endDateHidden" ng-model="broadcastMessage.endDate"> + <input type="text" class="fn-ebz-text" id="endDatepicker" /> + </div> + + <div class="fn-ebz-container" style="margin-left:3em" > + <label class="fn-ebz-text-label"><sup><b>*</b></sup>Sort Order:</label><BR> + <input type="text" class="fn-ebz-text" ng-model="broadcastMessage.sortOrder" + maxlength="30" /> + </div> + + <c:if test="${clustered}"> + <div class="fn-ebz-container" style="margin-left:1em" > + <label class="fn-ebz-text-label">Server:</label><BR> + <div class="form-field" att-select="broadcastSites" ng-model="broadcastMessage.siteCd"></div> + </div> + </c:if> + <br> + <div align="left" > + <button type="submit" ng-click="save();" att-button + btn-type="primary" size="small">Save</button> + </div> +</div> +<script> +app.controller('broadcastController', function ($scope, modalService, $modal){ + $scope.broadcastMessage=${broadcastMessage}; + $scope.broadcastSites=${broadcastSites}; + console.log($scope.broadcastMessage); + + $scope.save = function() { + var uuu = "broadcast/save"; + var postData={broadcastMessage: $scope.broadcastMessage}; + $.ajax({ + type : 'POST', + url : uuu, + dataType: 'json', + contentType: 'application/json', + data: JSON.stringify(postData), + success : function(data){ + //console.log(data); + window.location.href = "broadcast_list"; + }, + error : function(data){ + alert("Error while saving."); + } + }); + }; + + $(function() { + $( "#startDatepicker" ).datepicker(); + $( "#endDatepicker" ).datepicker(); + + var startDateLong = $scope.broadcastMessage.startDate; + var tempStartDate = new Date(startDateLong); + tempStartDate = moment(tempStartDate).format('MM/DD/YY');//03 Jun 2013 04:15PM EDT + console.log(tempStartDate.toString()); + $( "#startDatepicker" ).val(tempStartDate.toString()); + + var endDateLong = $scope.broadcastMessage.endDate; + var tempendDate = new Date(endDateLong); + tempendDate = moment(tempendDate).format('MM/DD/YY');//03 Jun 2013 04:15PM EDT + console.log(tempendDate.toString()); + $( "#endDatepicker" ).val(tempendDate.toString()); + + $( "#startDatepicker" ).change(function() { + var tempStartDate = moment($( "#startDatepicker" ).val()).format('YYYY-MM-DD hh:mm:ss.S'); + $scope.broadcastMessage.startDate = new Date(tempStartDate.toString()); + }); + $( "#endDatepicker" ).change(function() { + var tempEndDate = moment($( "#endDatepicker" ).val()).format('YYYY-MM-DD hh:mm:ss.S'); + $scope.broadcastMessage.endDate = new Date(tempEndDate.toString()); + }); + }); +}); + + +</script>
\ No newline at end of file diff --git a/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/broadcast_list.jsp b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/broadcast_list.jsp new file mode 100644 index 00000000..401f413b --- /dev/null +++ b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/broadcast_list.jsp @@ -0,0 +1,201 @@ +<%-- + ================================================================================ + eCOMP Portal SDK + ================================================================================ + Copyright (C) 2017 AT&T Intellectual Property + ================================================================================ + 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. + ================================================================================ + --%> +<%@ page import="java.util.*" %> +<%@ page import="com.fasterxml.jackson.databind.ObjectMapper" %> +<%@ page import="org.json.JSONObject" %> +<%@ page import="java.io.StringWriter" %> +<%@ page import="org.openecomp.portalsdk.core.web.support.ControllerProperties" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> + + <script src="static/fusion/raptor/dy3/js/moment.min.js"></script> + <script> + function editMessage(messageLocationId, messageLocation, messageId) { + window.location='broadcast.htm?message_location_id='+messageLocationId + '&message_location=' + messageLocation + ((messageId != null) ? '&message_id=' + messageId : ''); + } + </script> + + <div class="pageTitle"> + <h3> + Broadcast Messages + </h3> + </div> + + <%-- Display a table for the broadcast messages of each message location --%> +<div ng-controller="broadcastListController" > + + <div ng-repeat="location in messageLocations" > + {{location.label}} Messages + <div title="{{location.label}} Messages" > + + <table att-table table-data="location.messages" current-page="1"> + <thead att-table-row type="header"> + <tr> + <th att-table-header sortable="false" width="10%">No.</th> + <th att-table-header sortable="false" width="30%">Message Text</th> + <th att-table-header sortable="false" width="10%">Start Date</th> + <th att-table-header sortable="false" width="10%">End Date</th> + <th att-table-header sortable="false" width="10%">Sort Order</th> + <th att-table-header sortable="false" width="10%">Server</th> + <th att-table-header sortable="false" width="10%">Active?</th> + <th att-table-header sortable="false" width="10%">Delete?</th> + </tr> + </thead> + <tbody att-table-row type="body" row-repeat="message in location.messages" style="max-height: 980px;" ><!-- background colors will alternate not properly with multiple tbody--> + <tr> + {{message.id}} + <td width="10%"><a href="javascript:editMessage({{location.value}},'{{location.label}}',{{message.id}});">{{$index+1}}</a></td> + <td width="30%">{{message.messageText}}</td> + <td width="10%"> + {{message.displayStartDate}} + </td> + <td width="10%">{{message.displayEndDate}}</td> + <td width="10%">{{message.sortOrder}}</td> + <td width="10%">{{message.siteCd}}</td> + <td width="10%"> + <div ng-click="toggleActive(message);"> + <input type="checkbox" ng-model="message.active" att-toggle-main> + </div> + </td> + <td att-table-body width="10%"> + <div ng-click="remove(message);" style="font-size:20px;"><a href="javascript:void(0)" class="icon-trash"></a></div> + </td> + </tr> + + </tbody> + </table> + </div> + <input att-button btn-type="primary" size="small" class="button" type="button" value="Add" ng-click="editMessage(location);"/> + <br/><br/><br/> + </div> +</div> + +<script> +app.controller('broadcastListController', function ($scope){ + //$scope.model.messagesList=${model.messagesList}; + var messagesMap = {}; + <% + ObjectMapper mapper = new ObjectMapper(); + HashMap hmMessages = new HashMap(); + + HashMap objModel = (HashMap)request.getAttribute("model"); + + Object objMessages = objModel.get("messagesList"); + //System.out.println("messagesList: "+objMessages); + if((objMessages!=null) && (objMessages instanceof HashMap)) + { + hmMessages= (HashMap)objMessages; + Iterator it = hmMessages.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry pair = (Map.Entry)it.next(); + //System.out.println(pair.getKey() + " = " + pair.getValue()); + String pairValue = mapper.writeValueAsString(pair.getValue()); + //System.out.println(pairValue); + %> + messagesMap['<%=pair.getKey()%>'] = '<%=pairValue%>' + <% + } + } + + Object messageLocationsObject = objModel.get("messageLocations"); + //System.out.println("messageLocations: "+messageLocationsObject); + String messageLocationsString = mapper.writeValueAsString(messageLocationsObject); + //System.out.println(messageLocationsString); + %> + $scope.messagesList=messagesMap; + $scope.messageLocations=<%=messageLocationsString%>; + console.log($scope.messageLocations); + + $.each($scope.messageLocations, function(i, a){ + //var result = []; + angular.forEach($scope.messagesList, function(value, key) { + if (key+'' === a.value+'') { + var objsJSON = JSON.parse(value); + + $.each(objsJSON, function(i, a){ + var startDateLong = a.startDate; + var tempStartDate = new Date(startDateLong); + tempStartDate = moment(tempStartDate).format('DD MMM YYYY');//03 Jun 2013 04:15PM EDT - 'DD MMM YYYY hh:mmA zz' + a.displayStartDate=tempStartDate.toString(); + + var endDateLong = a.endDate; + var tempEndDate = new Date(endDateLong); + tempEndDate = moment(tempEndDate).format('DD MMM YYYY');//03 Jun 2013 04:15PM EDT + a.displayEndDate=tempEndDate.toString(); + }); + a.messages = objsJSON; + } + }); + console.log(a.messages); + }); + ; + + $scope.editMessage = function(location) { + editMessage(location.value, location.label); + }; + + $scope.toggleActive = function(broadcastMessage) { + + //alert('deleted'+role.name); + var uuu = "broadcast_list/toggleActive"; + var postData={broadcastMessage:broadcastMessage}; + $.ajax({ + type : 'POST', + url : uuu, + dataType: 'json', + contentType: 'application/json', + data: JSON.stringify(postData), + success : function(data){ + //window.location.reload(); + }, + error : function(data){ + console.log(data); + alert("Error while toggling: "+ data.responseText); + } + }); + + + }; + + $scope.remove = function(broadcastMessage) { + + //alert('deleted'+role.name); + var uuu = "broadcast_list/remove"; + var postData={broadcastMessage:broadcastMessage}; + $.ajax({ + type : 'POST', + url : uuu, + dataType: 'json', + contentType: 'application/json', + data: JSON.stringify(postData), + success : function(data){ + window.location.reload(); + }, + error : function(data){ + console.log(data); + alert("Error while deleting: "+ data.responseText); + } + }); + + + }; +}); +</script>
\ No newline at end of file diff --git a/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/data_out.jsp b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/data_out.jsp new file mode 100644 index 00000000..f3fb7a74 --- /dev/null +++ b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/data_out.jsp @@ -0,0 +1,20 @@ +<%-- + ================================================================================ + eCOMP Portal SDK + ================================================================================ + Copyright (C) 2017 AT&T Intellectual Property + ================================================================================ + 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. + ================================================================================ + --%> +${model.output_string} diff --git a/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/ds2/template.jsp b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/ds2/template.jsp new file mode 100644 index 00000000..ac210a3f --- /dev/null +++ b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/ds2/template.jsp @@ -0,0 +1,101 @@ +<%-- + ================================================================================ + eCOMP Portal SDK + ================================================================================ + Copyright (C) 2017 AT&T Intellectual Property + ================================================================================ + 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. + ================================================================================ + --%> +<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%> + +<!DOCTYPE html> +<html> + <head> +<%-- <%@ include file="/WEB-INF/fusion/jsp/ds2/meta.jsp" %> --%> + <!-- B2b Library --> + <link rel="stylesheet" type="text/css" href="app/fusion/external/b2b/css/b2b-angular/b2b-angular.css"> + <link rel="stylesheet" type="text/css" href="app/fusion/external/b2b/css/b2b-angular/font_icons.css"> + + <!-- icons in open source --> + <link rel="stylesheet" type="text/css" href="app/fusion/external/ds2/css/digital-ng-library/ionicons.css"> + + <link rel="stylesheet" type="text/css" href="app/fusion/external/angular-bootstrap/ui-bootstrap-csp.css"> + <link rel="stylesheet" type="text/css" href="app/fusion/external/angular-gridster/dist/angular-gridster.min.css"> + <!-- digital-design-library must be loaded late --> + <link rel="stylesheet" type="text/css" href="app/fusion/external/ds2/css/digital-ng-library/digital-design-library.css"> + <link rel="stylesheet" type="text/css" href="app/fusion/styles/ecomp.css"> + + + <!-- Common scripts --> + <script src="app/fusion/external/jquery/dist/jquery.min.js"></script> + <!-- Report Dashboard Specific items --> + <script src="app/fusion/ase/scripts/menus/bootstrap.min.js"></script> + <script src="app/fusion/ase/scripts/menus/jquery-ui.min.js"></script> + <script src="app/fusion/external/lodash/4.5.1/lodash.js"></script> + <script src="app/fusion/external/showdown/0.3.4/showdown.js"></script> + + <!--<script src="app/fusion/external/angular-1.5/angular.min.js"></script> + <script src="app/fusion/external/angular-1.5/angular-messages.js"></script> + <script src="app/fusion/external/angular-1.5/angular-touch.js"></script> + <script src="app/fusion/external/angular-1.5/angular-sanitize.js"></script> + <script src="app/fusion/external/angular-1.5/angular-route.min.js"></script> + <script src="app/fusion/external/angular-1.5/angular-cookies.min.js"></script>--> + <script src="app/fusion/external/angular-1.4.8/angular.min.js"></script> + <script src="app/fusion/external/angular-1.4.8/angular-messages.js"></script> + <script src="app/fusion/external/angular-1.4.8/angular-touch.js"></script> + <script src="app/fusion/external/angular-1.4.8/angular-sanitize.js"></script> + <script src="app/fusion/external/angular-1.4.8/angular-route.min.js"></script> + <script src="app/fusion/external/angular-1.4.8/angular-cookies.min.js"></script> + <script src="app/fusion/external/b2b/js/b2b-angular/b2b-library.min.js"></script> + <script src="app/fusion/external/ds2/js/digital-ng-library/digital-design-library.js"></script> + <script src="app/fusion/external/javascript-detect-element-resize/jquery.resize.js"></script> + <script src="app/fusion/external/angular-bootstrap/ui-bootstrap-tpls.min.js"></script> + <script src="app/fusion/external/angular-gridster/dist/angular-gridster.min.js"></script> + <script src="app/fusion/external/angular-gridster/dist/angular-gridster.min.js"></script> + + <!-- EPSDK App scripts and common services --> + <script src="app/fusion/scripts/DS2-services/ds2-modal/modalService.js"></script> + <script src="app/fusion/external/ds2/js/appDS2.js"></script> + + <script src="app/fusion/scripts/DS2-services/userInfoServiceDS2.js"></script> + <script src="app/fusion/scripts/DS2-services/headerServiceDS2.js"></script> + <script src="app/fusion/scripts/DS2-services/leftMenuServiceDS2.js"></script> + <script src="app/fusion/scripts/DS2-services/manifestService.js"></script> + + <script src="app/fusion/scripts/DS2-directives/footer.js"></script> + <script src="app/fusion/scripts/DS2-directives/ds2Header.js"></script> + <script src="app/fusion/scripts/DS2-directives/ds2LeftMenu.js"></script> + <script src="app/fusion/scripts/DS2-directives/b2b-leftnav-ext.js"></script> + <script src= "app/fusion/scripts/DS2-services/userInfoServiceDS2.js"></script> + + </head> + <body class="appBody" ng-app="abs"> + <div ds2-Header class="header-container" ></div> + <div ds2-menu id="menuContainer" class="menu-container" ></div> +<%-- <div> + <tiles:insertAttribute name="header" /> + </div> --%> + + <div class="applicationWindow"> + <br> + <div class="content" id="mContent"> + <div class="body-content-jsp"> + <tiles:insertAttribute name="body" /> + </div> + </div> + <br> + <div ds2-Footer class="footer-container"></div> + </div> + </body> +</html>
\ No newline at end of file diff --git a/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/ebz/ebz_footer.jsp b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/ebz/ebz_footer.jsp new file mode 100644 index 00000000..bd5206eb --- /dev/null +++ b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/ebz/ebz_footer.jsp @@ -0,0 +1,41 @@ +<%-- + ================================================================================ + eCOMP Portal SDK + ================================================================================ + Copyright (C) 2017 AT&T Intellectual Property + ================================================================================ + 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. + ================================================================================ + --%> + + + +<script src="app/fusion/external/ebz/js/footer.js"></script> +<link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/ebz_header/footer.css" > +<div class="footerContainer" id="footerContainer"> + <div class="footerWrapper" id="footerWrapper"> + <div class="attFooterInfo" style="text-align: center;"> + <div class="footerLastSection"> + <div class="footerText"> + <p class="copyright-text"> + </p> + </div> + <div class="displayInline"> + <a href="#" class="footer-logo"> + </a> + </div> + </div> + </div> + </div> + </div> +</div>
\ No newline at end of file diff --git a/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/ebz/ebz_header.jsp b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/ebz/ebz_header.jsp new file mode 100644 index 00000000..1d3ba8e7 --- /dev/null +++ b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/ebz/ebz_header.jsp @@ -0,0 +1,747 @@ +<%-- + ================================================================================ + eCOMP Portal SDK + ================================================================================ + Copyright (C) 2017 AT&T Intellectual Property + ================================================================================ + 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. + ================================================================================ + --%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> +<%@ page isELIgnored="false"%> +<%@ page import="org.openecomp.portalsdk.core.util.SystemProperties"%> +<%@ page import="org.openecomp.portalsdk.core.onboarding.util.PortalApiProperties"%> +<%@ page import="org.openecomp.portalsdk.core.onboarding.util.PortalApiConstants"%> +<%@ page import="org.openecomp.portalsdk.core.domain.MenuData"%> +<link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/ebz_header/header.css"> +<link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/ebz_header/portal_ebz_header.css"> +<link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/sandbox/styles/style.css" > + + +<script src= "app/fusion/external/ebz/angular_js/angular.js"></script> +<script src= "app/fusion/external/ebz/angular_js/angular-route.min.js"></script> +<script src= "app/fusion/external/ebz/angular_js/angular-sanitize.js"></script> +<script src= "app/fusion/external/ebz/angular_js/angular-cookies.js"></script> +<script src= "app/fusion/external/ebz/angular_js/app.js"></script> +<script src= "app/fusion/external/ebz/angular_js/gestures.js"></script> +<script src="static/js/jquery-1.10.2.js"></script> +<script src="app/fusion/scripts/modalService.js"></script> +<script src="static/js/jquery.mask.min.js" type="text/javascript"></script> +<script src="static/js/jquery-ui.js" type="text/javascript"></script> +<script src="app/fusion/external/ebz/sandbox/att-abs-tpls.js" type="text/javascript"></script> +<script src="static/fusion/js/att_angular_gridster/ui-gridster-tpls.js"></script> +<script src="static/fusion/js/att_angular_gridster/angular-gridster.js"></script> +<script src= "app/fusion/external/ebz/angular_js/checklist-model.js"></script> +<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/0.10.0/lodash.min.js"></script> +<script src="app/fusion/external/angular-ui/ui-bootstrap-tpls-1.1.2.min.js"></script> +<script src="app/fusion/scripts/services/userInfoService.js"></script> +<script src="app/fusion/scripts/services/leftMenuService.js"></script> + + +<jsp:include page="/WEB-INF/fusion/jsp/ebz/loginSnippet.html" ></jsp:include> + +<c:set var="UserName" value="<%= session.getAttribute(\"fullName\")%>" /> +<c:set var="UserFirstName" value="<%= session.getAttribute(\"first_name\")%>" /> + +<% + String contactUsLink = SystemProperties.getProperty(SystemProperties.CONTACT_US_LINK); + String redirectUrl = PortalApiProperties.getProperty(PortalApiConstants.ECOMP_REDIRECT_URL); + String portalUrl = redirectUrl.substring(0, redirectUrl.lastIndexOf('/')) + "/process_csp"; + String getAccessLink = redirectUrl.substring(0, redirectUrl.lastIndexOf('/')) + "/get_access"; +%> +<c:set var="returnPortalUrl" value="<%=portalUrl%>" /> +<c:set var="contactUsLink" value="<%=contactUsLink%>" /> +<c:set var="getAccessLink" value="<%=getAccessLink%>" /> +<style> +.att-drawer{ + z-index:997 !important; +} + +.secondaryMenuContainer{ + z-index:1000; +} +.megamenu-tabs .megamenu__item { + padding: 0 0; +} +.megamenu-tabs .megamenu__item span { + font-size: 18px; +} + +.submenu-tabs { + line-height:50px; +} +.submenu-tabs .sub__menu{ + top:54px; +} + +.top-megamenu .megamenu-tabs ul{ + width:98%; + list-style: none; +} + +</style> +<%@include file="/WEB-INF/fusion/jsp/ebz/loginSnippet.html" %> + +<div style="position: relative; z-index: 999;"> + <div ng-controller="headerController"> + + <div class="headerContainer" id="headerContainer" ng-cloak ng-show="{{showHeader}}"> + <div id="megaMenuContainer" class="megaMenuContainer" style="margin-top: 0; overflow: visible;"> + <div> + <!--for mega Menu--> + <!-- Mega Menu parent-tab directive with three models menu-items, active-sub-menu, active-menu --> + <div id="topMenu" class="top-megamenu" ng-mouseleave="activeClickSubMenu.x.active=false; activeClickMenu.x.active=false"> + <div style="float:left;width:100%;"parent-tab menu-items="megaMenuDataObject" active-sub-menu='activeClickSubMenu.x' active-menu='activeClickMenu.x'> + <div parentmenu-tabs mega-menu="true" menu-items="megaMenuDataObject" style="height:55px;"> + <div style="float:left"> + <li class="megamenu__item" style="line-height:55px;" onclick="returnToPortal()"> + <img src="app/fusion/external/ebz/images/logo.png" class="logo" ></span> +> <strong style="font-weight: 400 !important; font-family: Omnes-ECOMP-W02, Arial !important; font-size: 18px;" id='returnPortal' >ECOMP Portal</strong> + </li> + <div menu-tabs mega-menu="true" tab-name="item.text" menu-item="item" active-menu="activeClickMenu.x" + ng-repeat="item in megaMenuDataObject" style="font-size: 18px;" ng-mousedown="loadFavorites()" > + <div parentmenu-tabs sub-menu="true" ng-show="activeClickMenu.x.active && item.active" menu-items="activeClickMenu.x.children"> + <!-- Second level menu --> + <div> + <div menu-tabs sub-menu="true" tab-name="subItem.text" + tab-url="subItem.url" menu-item="subItem" + ng-repeat="subItem in activeClickMenu.x.children | orderBy : 'column'" active-menu="activeClickSubMenu.x" + sub-item-active="{{subItem.active}}" style="float:left;" aria-label="{{subItem.text}}" + ng-mouseenter="submenuLevelAction(subItem.text,subItem.column)" + ng-mouseleave="submenuLevelAction(subItem.text,subItem.column)" + ng-click="submenuLevelAction(subItem.text,subItem.column)" > + <i ng-if="subItem.text=='Favorites'" id="favorite-star" + class="icon-star favorites-icon-active"> + </i> + </div> + + <div class="sub__menu" ng-mouseleave="activeClickSubMenu.x.active=false" > + <ul ng-show="activeClickSubMenu.x.active" role="menubar" class="columns"> + <!-- Third level menu --> + <div menu-tabs menu-item="subItem" + class="columns-div" + ng-repeat="subItem in activeClickSubMenu.x.children | orderBy : 'column'" + ng-show="activeClickSubMenu.x.active"> + + <i id="favorite-selector-third-level" + ng-show="isUrlFavorite(subItem.menuId)==false" + class="icon-star favorites-icon-inactive" + ng-if="subItem.url.length > 1"> + </i> + <i id="favorite-selector-third-level" + ng-show="isUrlFavorite(subItem.menuId)" + class="icon-star favorites-icon-active" + ng-if="subItem.url.length > 1"> + </i> + <span class="title" aria-label="{{subItem.text}}" + ng-click="goToUrl(subItem)">{{subItem.text}}</span> + <!-- Fourth level menus --> + <div att-links-list=""> + <i id="favorite-selector-fourth-level" + class="icon-star favorites-icon-inactive" + ng-show="isUrlFavorite(tabValue.menuId)==false" + ng-if="tabValue.url.length > 1"> + + </i> + <i id="favorite-selector-fourth-level" + class="icon-star favorites-icon-active" + ng-show="isUrlFavorite(tabValue.menuId)" + ng-if="tabValue.url.length > 1"> + + </i> + <span role="menuitem" att-links-list-item="" + ng-repeat="tabValue in subItem.children" + ng-click="goToUrl(tabValue)" + att-accessibility-click="13,32" + ng-class="{'disabled': tabValue.disabled}">{{tabValue.text}}</span> + </div> + <hr ng-show="!$last"/> + + </div> + </ul> + <!-- Favorites level menu --> + <div class="favorites-window" ng-show='favoritesWindow' ng-mouseleave="hideFavoritesWindow()"> + <div id="favorites-menu-items" ng-show="showFavorites"> + <div ng-repeat="subItem in favoritesMenuItems" att-links-list="" style='display: inline'> + <i id="favorite-selector-favorites-list" class="icon-star favorites-icon-active"> + </i> + <a id="favorites-list" aria-label="{{subItem.text}}" + ng-click="goToUrl(subItem)" + style="margin-left: 3px; margin-right: 20px; text-decoration: none; color: #666666;"> + {{subItem.text}} + </a> + </div> + <div> + <br> + <p style='font-weight: 400; font-family: Omnes-ECOMP-W02, Arial !important; + font-size: 18px; text-align: center; background-color: lightgray; + width: 400px; margin-left: 25%; margin-right: 25%;'> + Manage favorites on ECOMP Portal. + </p> + </div> + </div> + <!-- Favorites when empty --> + <div id="favorites-empty" ng-show='favoritesWindow' ng-show="emptyFavorites"> + <div id="favorites-empty" ng-show="emptyFavorites" class="favorites-window-empty"> + <div> + <img src="app/fusion/external/ebz/images/no_favorites_star.png"> + <p class='favoritesLargeText'>No Favorites</p> + <p class='favoritesNormalText'>Manage favorites on ECOMP Portal.</p> + </div> + </div> + </div> + </div> + + </div> + </div> + </div> + </div > + <li class="megamenu__item" style="line-height:55px;" ng-if="loadMenufail"> + <strong style="font-weight: 400 !important; font-family: Omnes-ECOMP-W02, Arial !important; font-size: 18px;" >Unable to load menus</strong> + </li> +<!-- <li class="megamenu__item" style="width: 20%;"> </li> + --> </div> + <!-- Login Snippet--> + <div style="float:right"> + <li id="bcLoginSnippet" class="megamenu__item" style="width: 140px;" > + <div popover="loginSnippet.html" aria-label="Login Snippet" referby="loginSnippet" att-accessibility-click="13,32" popover-style="\" popover-placement="below" style="width: 200px;"> + <div class="icon-user-small login-snippet-icon"></div> + <div class="login-snippet-text" style="display: inline-block; font-size:12px; margin-left:5px;overflow: hidden; max-height: 31px; max-width:120px; padding-top: 0px; margin-top: 0px; white-space: nowrap;" ng-bind="userProfile.firstName"></div> + </div> + </li> + <li class="megamenu__item" style="width:120px;"> </li> + </div> + + </div> + </div> + <div style="clear: both"></div> + </div> + </div> + </div> + </div> + <div class="license-notification" id="license-notification"> + <a href="javascript:void(0)" style="background-color:#bbb;" class="button button--small" tooltip="Please contact ECOMP Portal team to get the license" tooltip-placement="below" tooltip-style="light" tooltip-popup-delay="500" > + <span style="">{{app_name_full}}</span> + </a> + </div> + <div style="position: relative; color: black; top: 70px;"> + <div ng-cloak> + <span ng-style="adjustHLeftMenu('burgerIcon')" style="z-index:998; position:fixed; left:0%; font-size:35px; margin-left:10px;text-decoration:none;"> + <a ng-click="toggleDrawer();isOpen = !isOpen" href="javascript:void(0);" class="arrow-icon-left" > + <span class="icon-hamburger"></span></a> + <span ng-init="isOpen = true" ng-show="isOpen" style="font-size:16px; position:relative; top:-8px; left:-15px;">    {{app_name}}</span> + </span> + <div att-drawer drawer-slide="left" drawer-custom-top="{{drawer_custom_top}}px" drawer-size="200px" drawer-open="drawerOpen" drawer-custom-height="100%" > + <div ng-style="adjustHLeftMenu('leftMenu')"> + <div class="attDrawer" style="margin-top:{{drawer_margin_top}}px;"> + <div style="margin-left:10px; margin-right:10px;"> + <accordion close-others="true" css="att-accordion--no-box"> + <accordion-group ng-repeat="parent in menuItems" heading="{{parent.parentLabel}}" child="{{parent.parentAction}}" parent-link="{{parent.parentAction}}" image-source="{{parent.parentImageSrc}}" child-length="{{parent.childItemList.length}}" is-open="parent.open"> + <div ng-repeat="subMenu in parent.childItemList" style="font-size:12px; margin-left:10px;"> + <a href="{{subMenu.action}}" style="font-size:12px; color:#666666;" >{{subMenu.label}}</a> + </div> + </accordion-group> + </accordion> + </div> + </div> + </div> + </div> + </div> + </div> + </div> +</div> +<script> + function returnToPortal(){ + window.location.href = "<c:out value='${returnPortalUrl}'/>"; + } + detectScrollEvent = function() { + var footerOff = $('#footerContainer').offset().top; + var headOff = $('#headerContainer').offset().top; + var winHeight = $(window).height(); + if ((footerOff - headOff) <= winHeight) { + $('.att-drawer').css({ + "height" : footerOff - headOff - 55 + }); + } else { + $('.att-drawer').css({ + "height" : "94vh" + }); + } + } + $(window).scroll(function() { + if ($('.att-drawer').is(':visible')) { + detectScrollEvent(); + } + }); + app.controller("headerController", function($scope, $timeout, $log, $http, UserInfoService, $window, $cookies,LeftMenuService) { + // $log.debug('HeaderController started'); + $scope.jsonMenuData = []; + $scope.loadMenufail=false; + $scope.app_name = ""; + $scope.app_name_full = ""; + $scope.megaMenuDataObject =[]; + $scope.activeClickSubMenu = { + x: '' + }; + $scope.activeClickMenu = { + x: '' + }; + $scope.favoritesMenuItems = []; + $scope.favoriteItemsCount = 0; + $scope.showFavorites = false; + $scope.emptyFavorites = false; + $scope.favoritesWindow = false; + $scope.userProfile={ + firstName:'', + lastName:'', + fullName:'', + email:'' + } + /*Put user info into fields*/ + $scope.inputUserInfo = function(userInfo){ + if (typeof(userInfo) != "undefined" && userInfo!=null && userInfo!=''){ + if (typeof(userInfo.USER_FIRST_NAME) != "undefined" && userInfo.USER_FIRST_NAME!=null && userInfo.USER_FIRST_NAME!='') + $scope.userProfile.firstName = userInfo.USER_FIRST_NAME; + if (typeof(userInfo.USER_LAST_NAME) != "undefined" && userInfo.USER_LAST_NAME!=null && userInfo.USER_LAST_NAME!='') + $scope.userProfile.lastName = userInfo.USER_LAST_NAME; + if (typeof(userInfo.USER_EMAIL) != "undefined" && userInfo.USER_EMAIL!=null && userInfo.USER_EMAIL!='') + $scope.userProfile.email = userInfo.USER_EMAIL; + } + } + /*getting user info from session*/ + $scope.getUserNameFromSession = function(){ + UserInfoService.getFunctionalMenuStaticDetailSession() + .then(function (res) { + $scope.userProfile.firstName = res.firstName; + $scope.redirectUrl = res.portalUrl; + }); + } + $scope.getTopMenuStaticInfo=function() { + var promise = UserInfoService.getFunctionalMenuStaticDetailShareContext(); + promise.then( + function(res) { + if(res==null || res==''){ + $log.info('failed getting static User information'); + $scope.getUserNameFromSession(); + }else{ + $log.info('Received static User information'); + var resData = res; + $scope.inputUserInfo(resData); + $scope.userProfile.fullName = $scope.userProfile.firstName+ ' '+ $scope.userProfile.lastName; + } + }, + function(err) { + $log.info('failed getting static User information'); + } + ); + } + + var unflatten = function( array, parent, tree ){ + tree = typeof tree !== 'undefined' ? tree : []; + parent = typeof parent !== 'undefined' ? parent : { menuId: null }; + var children = _.filter( array, function(child){ return child.parentMenuId == parent.menuId; }); + + if( !_.isEmpty( children ) ){ + if( parent.menuId === null ){ + tree = children; + }else{ + parent['children'] = children + } + _.each( children, function( child ){ unflatten( array, child ) } ); + } + + return tree; + } + + var menuStructureConvert = function(menuItems) { + var megaMenuDataObjectTemp = [ + { + text: "ECOMP", + children:menuItems + }, + { + text: "Help", + children: [{ + text:"Contact Us", + url:"<c:out value='${contactUsLink}'/>" + }, + { + text:"Get Access", + url:"<c:out value='${getAccessLink}'/>" + }] + } + ]; + return megaMenuDataObjectTemp; + }; + + + /*Left Menu*/ + LeftMenuService.getAppName().then(function(response){ + var j = response; + try{ + if(j && j !== "null" && j!== "undefined"){ + // console.log("app name is " + $scope.app_name); + $scope.app_name_full = j.data; + var processed_app_name = j.data; + if(processed_app_name.indexOf("[")<=-1) { + if (document.getElementById('license-notification')!=null) + document.getElementById('license-notification').style.display = "none"; + } + var n = processed_app_name.length; + if (n > 15) { + n = 15; + } + $scope.app_name = processed_app_name.substr(0, n); + }else{ + throw "Get app_name response is not an object/is empty"; + } + }catch (e) { + console.log("error happened while trying to get app name "+e); + return; + } + },function(error){ + console.log('getAppName failed', error); + }); + + $scope.getTopMenuStaticInfo(); + $scope.getMenu=function() { + + $http({ + method: "GET", + url: 'get_functional_menu', +// TIMEOUT USED FOR LOCAL TESTING ONLY +// timeout: 100 + }).success(function (response) { + if(response == '101: Timeout') { + $log.error('Timeout attempting to get_functional_menu'); + // TIMEOUT USED FOR LOCAL TESTING ONLY +// $scope.createErrorMenu(); + $scope.megaMenuDataObject = menuStructureConvert(''); + }else { + $log.debug('get_functional_menu success: ' + response); + if(typeof response != 'undefined' && response.length!=0 && typeof response[0] != 'undefined' && typeof response[0].error!="undefined"){ +// createErrorMenu() USED FOR LOCAL TESTING ONLY +// $scope.createErrorMenu(); + $scope.megaMenuDataObject = menuStructureConvert(''); + // $scope.loadMenufail=true; + }else{ + $scope.jsonMenuData = unflatten( response ); + $scope.megaMenuDataObject = menuStructureConvert($scope.jsonMenuData); + } + } + }).error(function (response){ +// createErrorMenu() USED FOR LOCAL TESTING ONLY +// $scope.createErrorMenu(); + + //$scope.loadMenufail=true; + $scope.megaMenuDataObject = menuStructureConvert(''); + $log.debug('REST API failed get_functional_menu...'+ response); + }); + } + $scope.adjustHLeftMenu = function (type){ + $scope.showHeader = ($cookies.show_app_header == undefined ? true : $cookies.show_app_header); + + if($scope.showHeader == true) { + $scope.drawer_margin_top = 60; + $scope.drawer_custom_top = 54; + $scope.toggle_drawer_top = 55; + } + else { + + $scope.drawer_margin_top = 50; + $scope.drawer_custom_top = 0; + $scope.toggle_drawer_top = 10; + } + if(type=='burgerIcon'){ + return { "top": $scope.toggle_drawer_top+"px"}; + }else if(type=='leftMenu'){ + return { "margin-top": $scope.drawer_margin_top+"px"}; + }else + return; + } + $scope.adjustHeader=function() { + $scope.showHeader = ($cookies.show_app_header == undefined ? true : $cookies.show_app_header); + + if($scope.showHeader == true) { + $scope.drawer_margin_top = 50; + $scope.drawer_custom_top = 54; + $scope.toggle_drawer_top = 55; + } + else { + + $scope.drawer_margin_top = 40; + $scope.drawer_custom_top = 0; + $scope.toggle_drawer_top = 10; + } + + + } + + + //$scope.getMenu(); + $scope.adjustHeader(); + + + /* **************************************************************************/ + /* Logic for the favorite menus is here */ + + $scope.loadFavorites = function () { + $log.debug('loadFavorites has happened.'); + if ($scope.favoritesMenuItems == '') { + $scope.generateFavoriteItems(); + $log.debug('loadFavorites is calling generateFavoriteItems()'); + } else { + $log.debug('loadFavorites is NOT calling generateFavoriteItems()'); + } + } + + $scope.goToUrl = function (item) { + $log.info("goToUrl called") + $log.info(item); + + var url = item.url; + var restrictedApp = item.restrictedApp; + $log.debug('Restricted app status is: ' + restrictedApp); + if (!url) { + $log.info('No url found for this application, doing nothing..'); + return; + } + if (restrictedApp) { + $window.open(url, '_blank'); + } else { + $window.open(url, '_self'); + } + + } + + $scope.submenuLevelAction = function(index, column) { + if ($scope.favoritesMenuItems == '') { + $scope.generateFavoriteItems(); + $log.debug('submenuLevelAction is calling generateFavoriteItems()'); + } + $log.debug('item hovered/clicked: ' + index + '; column = ' + column); + if (column == 2) { // 2 is Design + $scope.favoritesWindow = false; + $scope.showFavorites = false; + $scope.emptyFavorites = false; + } + if (index=='Favorites' && $scope.favoriteItemsCount != 0) { + $log.debug('Showing Favorites window'); + $scope.favoritesWindow = true; + $scope.showFavorites = true; + $scope.emptyFavorites = false; + } + if (index=='Favorites' && $scope.favoriteItemsCount == 0) { + $log.debug('Hiding Favorites window in favor of No Favorites Window'); + $scope.favoritesWindow = true; + $scope.showFavorites = false; + $scope.emptyFavorites = true; + } + if (column > 2) { + $scope.favoritesWindow = false; + $scope.showFavorites = false; + $scope.emptyFavorites = false; + } + }; + + $scope.hideFavoritesWindow = function() { + $log.debug('$scope.hideFavoritesWindow has been called'); + $scope.showFavorites = false; + $scope.emptyFavorites = false; + } + + $scope.isUrlFavorite = function (menuId) { +// $log.debug('array objects in menu favorites = ' + $scope.favoriteItemsCount + '; menuId=' + menuId); + var jsonMenu = JSON.stringify($scope.favoritesMenuItems); + var isMenuFavorite = jsonMenu.indexOf('menuId\":' + menuId); + if (isMenuFavorite==-1) { + return false; + } else { + return true; + } + + } + + $scope.generateFavoriteItems = function() { + $http({ + method: "GET", + url: 'get_favorites', + // TIMEOUT USED FOR LOCAL TESTING ONLY +// timeout: 100 + }).success(function (response) { + if (response == '101: Timeout') { + $log.error('Timeout attempting to get_favorites_menu'); + } else { + if(typeof response != 'undefined' && response.length!=0 && typeof response[0] != 'undefined' && typeof response[0].error!="undefined"){ + $log.error('REST API failed get_favorites' + response); + }else{ + $log.debug('get_favorites = ' + JSON.stringify(response)); + $scope.favoritesMenuItems = response; + $scope.favoriteItemsCount = Object.keys($scope.favoritesMenuItems).length; + $log.info('number of favorite menus: ' + $scope.favoriteItemsCount); + } + } + }).error(function (response){ + $log.error('REST API failed get_favorites' + response); + //createFavoriteErrorMenu() USED FOR LOCAL TESTING ONLY +// $scope.createFavoriteErrorMenu(); + }); + } + + $scope.createFavoriteErrorMenu=function() { + $scope.favoritesMenuItems = [ +// { +// "menuId": "93", +// "text": "XXX", +// "url": "XXX" +// } + ]; + $scope.favoriteItemsCount = Object.keys($scope.favoritesMenuItems).length; + $log.info('number of favorite menus: ' + $scope.favoriteItemsCount); + } + + /* end of Favorite Menu code */ + /* **************************************************************************/ + + + /* **************************************************************************/ + // THIS IS USED FOR LOCAL TESTING ONLY + /* **************************************************************************/ + + $scope.createErrorMenu=function() { + $scope.jsonMenuData = [ + { + "menuId": 1, + "column": 2, + "text": "Design", + "parentMenuId": null, + "url": "" + }, + { + "menuId": 2, + "column": 3, + "text": "Infrastructure Ordering", + "parentMenuId": null, + "url": "" + }, + { + "menuId": 3, + "column": 4, + "text": "Service Creation", + "parentMenuId": null, + "url": "" + }, + { + "menuId": 4, + "column": 5, + "text": "Service Mgmt", + "parentMenuId": null, + "url": "" + }, + { + "menuId": 99, + "column": 1, + "text": "Favorites", + "parentMenuId": null, + "url": "" + } + ]; + $scope.jsonMenuData = unflatten( $scope.jsonMenuData ); + $scope.megaMenuDataObject = menuStructureConvert($scope.jsonMenuData); +// $log.debug(JSON.stringify($scope.jsonMenuData)); + } + var childItemList=""; + var parentList = ""; + try{ + childItemList = ${menu.childItemList}; + parentList = ${menu.parentList}; + }catch(err){ + console.log("ebz_header: failed to get child/parent lists", err); + } + + var pageUrl = window.location.href.split('/')[window.location.href.split('/').length-1]; + + $scope.menuItems = []; + for (var i = 0; i < parentList.length; i++) { + $scope.openCurrentMenu = false; + if(pageUrl==parentList[i].action) + $scope.openCurrentMenu = true; + $scope.childItemList = childItemList[i]; + for(chIndex in $scope.childItemList){ + if($scope.childItemList.length>0) + if($scope.childItemList[chIndex].action!=null){ + if($scope.childItemList[chIndex].action==pageUrl) + $scope.openCurrentMenu = true; + } + } + $scope.item = { + parentLabel : parentList[i].label, + parentAction : parentList[i].action, + parentImageSrc : parentList[i].imageSrc, + open:$scope.openCurrentMenu, + childItemList : $scope.childItemList + } + $scope.menuItems.push($scope.item); + } + $scope.arrowShow = true; + $scope.drawerOpen = false; + $scope.subMenuContent = false; + $scope.toggleSubMenu = function() { + $scope.subMenuContent = !$scope.subMenuContent; + }; + + var drawerOpen = 'open'; + if (drawerOpen == 'open') { + $scope.drawerOpen = true; + $scope.arrowShow = true; + } else { + $scope.arrowShow = false; + } + $scope.arrowShow = true; + $scope.drawerOpen = false; + $scope.toggleDrawer = function() { + $scope.drawerOpen = !($scope.drawerOpen); + if ($scope.drawerOpen) { + $scope.arrowShow = true; + if (document.getElementById('mContent')!=null) + document.getElementById('mContent').style.marginLeft = "0px"; + } else { + $scope.arrowShow = false; + if (document.getElementById('mContent')!=null) + document.getElementById('mContent').style.marginLeft = "-150px"; + } + }; + //var drawerOpen = getCookie('drawerOpen'); + if (drawerOpen == 'open') { + $scope.drawerOpen = true; + $scope.arrowShow = true; + } else { + $scope.arrowShow = false; + } + $timeout(function() { + detectScrollEvent(); + }, 800); + + }); + + app.filter("ellipsis", function(){ + return function(text, length){ + if (text) { + var ellipsis = text.length > length ? "..." : ""; + return text.slice(0, length) + ellipsis; + }; + return text; + } + }); +</script>
\ No newline at end of file diff --git a/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/ebz/loginSnippet.html b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/ebz/loginSnippet.html new file mode 100644 index 00000000..ae5e13ec --- /dev/null +++ b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/ebz/loginSnippet.html @@ -0,0 +1,115 @@ +<!-- + ================================================================================ + eCOMP Portal SDK + ================================================================================ + Copyright (C) 2017 AT&T Intellectual Property + ================================================================================ + 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. + ================================================================================ + --> +<script type="text/ng-template" id="loginSnippet.html"> + <div style="line-height: normal; right: 167px; min-height: 200px; height: auto; width: auto; " ng-controller="loginSnippetCtrl" > + <div id="reg-header-snippet"> + <div class="reg-profilePicture" style="min-height: 215px; width: auto; " id="reg-profile-links"> + <div id="reg-profileImage"> + <div style="clear: both; height: 80px; position: relative; width: 80px;"> + + <span style=" background-position: -1px -1px; height: 81px;left: 0;position: absolute;top: 0;width: 81px;"> </span> + </div> + </div> + <div id="reg-logout-div"> + <a class="reg-logout-btn" href="logout.htm">Log Out</a> + </div> + </div> + <div tabindex="0" class="reg-profileDetails" id="reg-profiledetails-id"> + <ul class="reg-Details-table" style="list-style: none;"> + <li><div class="reg-userName-table"><div id="reg-userName-table-row"><div id="reg-userName-table-cell"><h3 id="reg-userName" ng-bind="userProfile.fullName"></h3><span class="visuallyhidden">.</span></div></div></div></li> + <li><div class="reg-userEmail-label"><span class="reg-userEmail-label-spn">EMAIL<span class="visuallyhidden">:</span></span></div></li> + <li><div class="reg-userEmail-value"><span class="reg-userEmail-value-spn" ng-bind="userProfile.email"><span class="visuallyhidden">.</span></span></div></li> + <li><div class="reg-userRole-label"><span class="reg-userRole-label-spn">orgUserId<span class="visuallyhidden">:</span></span></div></li> + <li><div class="reg-userRole-value"><span class="reg-userRole-value-spn" ng-bind="userProfile.orgUserId"><span class="visuallyhidden"></span></span></div></li> + </ul> + </div> + </div> + </div> + </script> + <script type="text/ng-template" id="chat_box.html"> + + <div style="width: auto;"> + + <div style="font-size: 24px; font-family: Omnes-ECOMP-W02, Arial;line-height: 26px;color: #444444;text-align: center;"> + <span>Live Chat</span> + </div> + + </div> + </script> + +<script> +var loginSnippetCtrl = function ($scope,$http, $log,UserInfoService){ + /*Define fields*/ + $scope.userProfile={ + firstName:'', + lastName:'', + fullName:'', + email:'' + } + /*Put user info into fields*/ + $scope.inputUserInfo = function(userInfo){ + if (typeof(userInfo) != "undefined" && userInfo!=null && userInfo!=''){ + if (typeof(userInfo.USER_FIRST_NAME) != "undefined" && userInfo.USER_FIRST_NAME!=null && userInfo.USER_FIRST_NAME!='') + $scope.userProfile.firstName = userInfo.USER_FIRST_NAME; + if (typeof(userInfo.USER_LAST_NAME) != "undefined" && userInfo.USER_LAST_NAME!=null && userInfo.USER_LAST_NAME!='') + $scope.userProfile.lastName = userInfo.USER_LAST_NAME; + if (typeof(userInfo.USER_EMAIL) != "undefined" && userInfo.USER_EMAIL!=null && userInfo.USER_EMAIL!='') + $scope.userProfile.email = userInfo.USER_EMAIL; + + } + } + /*getting user info from session*/ + $scope.getUserNameFromSession = function(){ + UserInfoService.getFunctionalMenuStaticDetailSession() + .then(function (response) { + var j = response; + // console.log(response); + $scope.userProfile.fullName = response.userName; + $scope.userProfile.email = response.email; + }); + } + /*getting user info from shared context*/ + $scope.getUserName=function() { + var promise = UserInfoService.getFunctionalMenuStaticDetailShareContext(); + promise.then( + function(res) { + if(res==null || res==''){ + $log.info('loginSnippet::getUserName: failed to get user info from shared context'); + $scope.getUserNameFromSession(); + }else{ + // $log.info('Received User information from shared context',res); + var resData = res; + $scope.inputUserInfo(resData); + $scope.userProfile.fullName = $scope.userProfile.firstName+ ' '+ $scope.userProfile.lastName; + } + }, + function(err) { + console.log('error'); + } + ); + }; + /*call the get user info function*/ + try{ + $scope.getUserName(); + }catch(err){ + $log.info('Error while getting User information',err); + } +} + </script>
\ No newline at end of file diff --git a/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/ebz_template.jsp b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/ebz_template.jsp new file mode 100644 index 00000000..93f96369 --- /dev/null +++ b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/ebz_template.jsp @@ -0,0 +1,45 @@ +<%-- + ================================================================================ + eCOMP Portal SDK + ================================================================================ + Copyright (C) 2017 AT&T Intellectual Property + ================================================================================ + 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. + ================================================================================ + --%> +<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%> + +<!DOCTYPE html> +<html ng-app="abs"> + <head> + <%@ include file="/WEB-INF/fusion/jsp/meta.jsp" %> + <script src="static/js/jquery-1.10.2.js" type="text/javascript"></script> + </head> + <body class="templatebody" style="opacity: 1; background-color: rgb(242, 242, 242); padding: 0px;"> + <div class="applicationWindow"> + <div> + <tiles:insertAttribute name="header" /> + </div> + <br> + <div class="content" id="mContent"> + <div class="body-content-jsp"> + <tiles:insertAttribute name="body" /> + </div> + </div> + <br> + <div> + <tiles:insertAttribute name="footer" /> + </div> + </div> + </body> +</html>
\ No newline at end of file diff --git a/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/ebz_template_noheader_nofooter.jsp b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/ebz_template_noheader_nofooter.jsp new file mode 100644 index 00000000..a579fdc0 --- /dev/null +++ b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/ebz_template_noheader_nofooter.jsp @@ -0,0 +1,35 @@ +<%-- + ================================================================================ + eCOMP Portal SDK + ================================================================================ + Copyright (C) 2017 AT&T Intellectual Property + ================================================================================ + 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. + ================================================================================ + --%> +<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%> +<!DOCTYPE html> +<html> + <%@ include file="/WEB-INF/fusion/jsp/meta.jsp" %> + <body class="templatebody" style="opacity: 1; background-color: rgb(242, 242, 242); padding: 0px;"> + <div class="applicationWindow"> + + <div class="content" style="margin-left:100px; margin-right:100px;"> + <div> + <tiles:insertAttribute name="body" /> + </div> + </div> + + </div> + </body> +</html>
\ No newline at end of file diff --git a/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/ebz_template_report_embedded.jsp b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/ebz_template_report_embedded.jsp new file mode 100644 index 00000000..4cdfe51d --- /dev/null +++ b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/ebz_template_report_embedded.jsp @@ -0,0 +1,48 @@ +<%-- + ================================================================================ + eCOMP Portal SDK + ================================================================================ + Copyright (C) 2017 AT&T Intellectual Property + ================================================================================ + 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. + ================================================================================ + --%> +<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%> +<!DOCTYPE html> +<html ng-app="abs"> + <%@ include file="/WEB-INF/fusion/jsp/meta.jsp" %> + <script src="static/js/jquery-1.10.2.js" type="text/javascript"></script> +<script src= "app/fusion/external/ebz/angular_js/angular.js"></script> +<script src= "app/fusion/external/ebz/angular_js/angular-route.min.js"></script> +<script src= "app/fusion/external/ebz/angular_js/angular-sanitize.js"></script> +<script src= "app/fusion/external/ebz/angular_js/app.js"></script> +<script src= "app/fusion/external/ebz/angular_js/gestures.js"></script> +<script src="static/js/jquery-1.10.2.js"></script> +<script src="static/js/modalService.js"></script> +<script src="static/js/jquery.mask.min.js" type="text/javascript"></script> +<script src="static/js/jquery-ui.js" type="text/javascript"></script> +<script src="app/fusion/external/ebz/sandbox/att-abs-tpls.js" type="text/javascript"></script> +<script src="static/fusion/js/att_angular_gridster/ui-gridster-tpls.js"></script> +<script src="static/fusion/js/att_angular_gridster/angular-gridster.js"></script> +<script src= "app/fusion/external/ebz/angular_js/checklist-model.js"></script> +<script src="app/fusion/external/angular-ui/ui-bootstrap-tpls-1.1.2.min.js"></script> + + + <body class="templatebody" style="opacity: 1; background-color: rgb(242, 242, 242); padding: 0px;"> + <div class="applicationWindow"> + <div class="content"> + <tiles:insertAttribute name="body" /> + </div> + </div> + </body> +</html>
\ No newline at end of file diff --git a/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/es_search_demo.jsp b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/es_search_demo.jsp new file mode 100644 index 00000000..61458524 --- /dev/null +++ b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/es_search_demo.jsp @@ -0,0 +1,97 @@ +<%-- + ================================================================================ + eCOMP Portal SDK + ================================================================================ + Copyright (C) 2017 AT&T Intellectual Property + ================================================================================ + 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. + ================================================================================ + --%> +<!-- <link rel="stylesheet" type="text/css" href="app/fusion/elasticsearch/styles/styles.css" > --> +<script> +app.controller('elasticSearchController',['$scope','$http',function ($scope,$http) { + $scope.submenuId = ""; + $scope.isNew=""; + $scope.viewPerPage = 20; + $scope.currentPage = 2; + $scope.totalPage; + $scope.searchCategory = ""; + $scope.searchString = ""; + $scope.tableData=[]; + $scope.searchText=''; + $scope.flagCount=0; + function escapeRegExp(str) { + return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|\&]/g, " "); + } + $scope.test = function(){ + $scope.searchText=$scope.searchText; + var sendData ={ + "data" : escapeRegExp($scope.searchText), + "size" : "100", + "fuzzy" : "true", + "resultname" : "custsuggest" + }; + + if($scope.flagCount<3 || $scope.searchText.length==0){ + $scope.flagCount++; + $http.get('es_search/' + encodeURIComponent(JSON.stringify(sendData))). + then(function(response){ + var data = JSON.parse(response.data.result); + $scope.tableData = data.hits.hits; + }) + .catch(function(data,status){ + console.log("Error: " + status + " : " + data); + }) + .finally(function() { + $scope.flagCount--; + }); + } + } + $scope.searchText=''; +}]); +</script> + +<div style="margin-left:20px;" ng-app="eSearchApp"> + <div style="margin-top:20px; margin-bottom:20px;"><span class="heading1">Elastic Search - </span><span class="heading2">Corporate Location Data System</span></div> + <div class="demoElas" ng-controller="elasticSearchController"> + <div class="form-field" align="center"> + <input type="text" placeholder="What are you looking for?" class="search__large-iconform" ng-model="searchText" ng-change="test()"> + <i class="icon-search"> </i> + </div> + + <table att-table table-data="tableData" view-per-page="viewPerPage" current-page="currentPage" search-category="searchCategory" search-string="searchString" total-page="totalPage"> + <thead att-table-row type="header"> + <tr> + <th att-table-header>Customer Name</th> + <th att-table-header>Phone</th> + <th att-table-header>Street</th> + <th att-table-header>City</th> + <th att-table-header>State</th> + <th att-table-header>ZIP</th> + <th att-table-header>CLLI</th> + </tr> + </thead> + <tbody att-table-row type="body" row-repeat="options in tableData"> + <tr> + <td att-table-body >{{options._source.name}}</td> + <td att-table-body >{{options._source.suggest.payload.tn}}</td> + <td att-table-body >{{options._source.suggest.payload.addr}}</td> + <td att-table-body >{{options._source.suggest.payload.city}}</td> + <td att-table-body >{{options._source.suggest.payload.st}}</td> + <td att-table-body >{{options._source.suggest.payload.zip}}</td> + <td att-table-body >{{options._source.suggest.payload.clli}}</td> + </tr> + </tbody> + </table> + </div> +</div>
\ No newline at end of file diff --git a/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/es_suggest_demo.jsp b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/es_suggest_demo.jsp new file mode 100644 index 00000000..abae598b --- /dev/null +++ b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/es_suggest_demo.jsp @@ -0,0 +1,97 @@ +<%-- + ================================================================================ + eCOMP Portal SDK + ================================================================================ + Copyright (C) 2017 AT&T Intellectual Property + ================================================================================ + 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. + ================================================================================ + --%> +<!-- <link rel="stylesheet" type="text/css" href="app/fusion/elasticsearch/styles/styles.css" > --> +<script> +app.controller('elasticSearchController',['$scope','$http',function ($scope,$http) { + $scope.submenuId = ""; + $scope.isNew=""; + $scope.viewPerPage = 20; + $scope.currentPage = 2; + $scope.totalPage; + $scope.searchCategory = ""; + $scope.searchString = ""; + $scope.tableData=[]; + $scope.searchText=''; + $scope.flagCount=0; + function escapeRegExp(str) { + return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|\&]/g, " "); + } + $scope.test = function(){ + $scope.searchText=$scope.searchText; + var sendData ={ + "data" : escapeRegExp($scope.searchText), + "size" : "20", + "fuzzy" : "true", + "resultname" : "custsuggest" + }; + + if($scope.flagCount<3 || $scope.searchText.length==0){ + $scope.flagCount++; + $http.get('es_suggest/' + encodeURIComponent(JSON.stringify(sendData))). + then(function(response){ + var data = JSON.parse(response.data.result); + $scope.tableData = data.custsuggest[0].options; + }) + .catch(function(data,status){ + console.log("Error: " + status + " : " + data); + }) + .finally(function() { + $scope.flagCount--; + }); + } + } + $scope.searchText=''; +}]); +</script> + +<div style="margin-left:20px;" ng-app="eSearchApp"> + <div style="margin-top:20px; margin-bottom:20px;"><span class="heading1">Elastic Search - </span><span class="heading2">Corporate Location Data System</span></div> + <div class="demoElas" ng-controller="elasticSearchController"> + <div class="form-field" align="center"> + <input type="text" placeholder="What are you looking for?" class="search__large-iconform" ng-model="searchText" ng-change="test()"> + <i class="icon-search"> </i> + </div> + + <table att-table table-data="tableData" view-per-page="viewPerPage" current-page="currentPage" search-category="searchCategory" search-string="searchString" total-page="totalPage"> + <thead att-table-row type="header"> + <tr> + <th att-table-header>Customer Name</th> + <th att-table-header>Phone</th> + <th att-table-header>Street</th> + <th att-table-header>City</th> + <th att-table-header>State</th> + <th att-table-header>ZIP</th> + <th att-table-header>CLLI</th> + </tr> + </thead> + <tbody att-table-row type="body" row-repeat="options in tableData"> + <tr> + <td att-table-body >{{options.text}}</td> + <td att-table-body >{{options.payload.tn}}</td> + <td att-table-body >{{options.payload.addr}}</td> + <td att-table-body >{{options.payload.city}}</td> + <td att-table-body >{{options.payload.st}}</td> + <td att-table-body >{{options.payload.zip}}</td> + <td att-table-body >{{options.payload.clli}}</td> + </tr> + </tbody> + </table> + </div> +</div>
\ No newline at end of file diff --git a/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/frame_insert.jsp b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/frame_insert.jsp new file mode 100644 index 00000000..ed50b5dd --- /dev/null +++ b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/frame_insert.jsp @@ -0,0 +1,44 @@ +<%-- + ================================================================================ + eCOMP Portal SDK + ================================================================================ + Copyright (C) 2017 AT&T Intellectual Property + ================================================================================ + 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. + ================================================================================ + --%> +<iframe id="frame_insert" src="${frame_int}"></iframe> + +<script type="text/javascript"> + + var frameId = "#frame_insert"; + + $(frameId).load(function(){ + iframeLoaded() + + }); + + + function iframeLoaded() { + var iFrameRef = $(frameId); + if(iFrameRef) { + + var height = iFrameRef.contents().find("input[name='inner_height']"); + var width = iFrameRef.contents().find("input[name='inner_width']"); + + iFrameRef.css('height', (height.val() != undefined ? height.val():"500px")); + iFrameRef.css('width', (width.val() != undefined ? width.val():"500px")); + iFrameRef.css('border','none'); + } + } +</script>
\ No newline at end of file diff --git a/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/include.jsp b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/include.jsp new file mode 100644 index 00000000..cd6a5e09 --- /dev/null +++ b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/include.jsp @@ -0,0 +1,30 @@ +<%-- + ================================================================================ + eCOMP Portal SDK + ================================================================================ + Copyright (C) 2017 AT&T Intellectual Property + ================================================================================ + 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. + ================================================================================ + --%> +<%@ page import="org.openecomp.portalsdk.core.util.SystemProperties" %> +<%@ page import="org.openecomp.portalsdk.core.web.support.AppUtils" %> + +<%@ page import="java.util.LinkedHashMap" %> + + +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> + +<c:set var="request" value="<%=request%>"/> diff --git a/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/meta.jsp b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/meta.jsp new file mode 100644 index 00000000..0a361803 --- /dev/null +++ b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/meta.jsp @@ -0,0 +1,36 @@ +<%-- + ================================================================================ + eCOMP Portal SDK + ================================================================================ + Copyright (C) 2017 AT&T Intellectual Property + ================================================================================ + 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. + ================================================================================ + --%> +<head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags --> + <link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/fn-ebz.css" > + <link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/sandbox/styles/demo.css" > + <link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/sandbox/styles/base.css" > + <link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/sandbox/styles/btn.css" > + <link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/sandbox/styles/dtpk.css" > + <link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/sandbox/styles/frms.css" > + <link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/sandbox/styles/sldr.css" > + <link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/sandbox/styles/style.css" > + <link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/sandbox/styles/tbs.css" > + <link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/ebz_header/portal_ebz_header.css"> + +</head>
\ No newline at end of file diff --git a/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/popup_modal.html b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/popup_modal.html new file mode 100644 index 00000000..0766cecd --- /dev/null +++ b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/popup_modal.html @@ -0,0 +1,324 @@ +<!-- + ================================================================================ + eCOMP Portal SDK + ================================================================================ + Copyright (C) 2017 AT&T Intellectual Property + ================================================================================ + 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. + ================================================================================ + --> + +<script type="text/ng-template" id="modal_informative.html"> + <div class="modal__informative font-showcase" > + <div class="modal__header"> + <h2 class="font-showcase-font-name">Success!</h2> + <div class="modal__header--icon"></div> + </div> + <div class="divider-container"><hr> </div> + <div class="modal__content" style="white-space: pre-wrap;">{{message.text}}</div> + <div class="modal__footer"> + <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$dismiss()">Dismiss</button> + </div> + </div> + </script> + + <script type="text/ng-template" id="modal_message.html"> + <div class="modal__informative font-showcase" > + <div class="modal__header"> + <h2 class="font-showcase-font-name">Attention!</h2> + <div class="modal__header--icon"></div> + </div> + <div class="divider-container"><hr> </div> + <div class="modal__content" style="white-space: pre-wrap;">{{message.text}}</div> + <div class="modal__footer"> + <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$dismiss()">Dismiss</button> + </div> + </div> + </script> + + <script type="text/ng-template" id="delete_informative.html"> + <div class="modal__warning font-showcase" > + <div class="modal__header"> + <h2 class="font-showcase-font-name">Are you sure you want to delete the profile?</h2> + + <div class="modal__header--icon"></div> + </div> + <div class="divider-container"><hr> </div> + <div class="modal__content"> + Deletions are not reversible.<br/> {{message.text}} + </div> + <div class="modal__footer"> + <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$close()">Yes</button> + <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$dismiss()">Cancel</button> + </div> + </div> + </script> + <script type="text/ng-template" id="email_report_informative.html"> + <div class="modal__warning font-showcase" > + <div class="modal__header"> + <h2 class="font-showcase-font-name">Mailing your report...</h2> + + <div class="modal__header--icon"></div> + </div> + <div class="divider-container"><hr> </div> + <div class="modal__content"> + The report will be sent to your email soon! + </div> + <div class="modal__footer"> + <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$close()">Ok</button> + </div> + </div> + </script> + <script type="text/ng-template" id="delete_authCode.html"> + <div class="modal__warning font-showcase" > + <div class="modal__header"> + <h2 class="font-showcase-font-name">Are you sure you want to delete the Authorization Code(s)?</h2> + + <div class="modal__header--icon"></div> + </div> + <div class="divider-container"><hr> </div> + <div class="modal__content"> + Deletions are not reversible.<br/> {{message.text}} + </div> + <div class="modal__footer"> + <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$close()">Yes</button> + <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$dismiss()">Cancel</button> + </div> + </div> + </script> + <script type="text/ng-template" id="delete_Schedule.html"> + <div class="modal__warning font-showcase" > + <div class="modal__header"> + <h2 class="font-showcase-font-name">Are You Sure You Want to Delete This Schedule(s) ?</h2> + + <div class="modal__header--icon"></div> + </div> + <div class="divider-container"><hr> </div> + <div class="modal__content"> + Deletions are not reversible.<br/> {{message.text}} + </div> + <div class="modal__footer"> + <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$close()">Yes</button> + <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$dismiss()">Cancel</button> + </div> + </div> + </script> + <script type="text/ng-template" id="alternate_number.html"> + <div class="modal__warning font-showcase" > + <div class="modal__header"> + <h2 class="font-showcase-font-name">Are You Sure You Want to Delete This Number ?</h2> + + <div class="modal__header--icon"></div> + </div> + <div class="divider-container"><hr> </div> + <div class="modal__content"> + Deletions are not reversible.<br/> {{message.text}} + </div> + <div class="modal__footer"> + <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$close()">Yes</button> + <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$dismiss()">Cancel</button> + </div> + </div> + </script> + <script type="text/ng-template" id="manage_device.html"> + <div class="modal__warning font-showcase" > + <div class="modal__header"> + <h2 class="font-showcase-font-name">Are You Sure You Want to Delete This Line Port ?</h2> + + <div class="modal__header--icon"></div> + </div> + <div class="divider-container"><hr> </div> + <div class="modal__content"> + Deletions are not reversible.<br/> {{message.text}} + </div> + <div class="modal__footer"> + <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$close()">Yes</button> + <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$dismiss()">Cancel</button> + </div> + </div> + </script> + <script type="text/ng-template" id="delete_virtualOnNet.html"> + <div class="modal__warning font-showcase" > + <div class="modal__header"> + <h2 class="font-showcase-font-name">Are You Sure You Want to Delete this Virtual On-Net User?</h2> + + <div class="modal__header--icon"></div> + </div> + <div class="divider-container"><hr> </div> + <div class="modal__content"> + Deletions are not reversible.<br/> {{message.text}} + </div> + <div class="modal__footer"> + <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$close()">Yes</button> + <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$dismiss()">Cancel</button> + </div> + </div> + </script> + <script type="text/ng-template" id="delete_user_meet_me_conference.html"> + <div class="modal__warning font-showcase" > + <div class="modal__header"> + <h2 class="font-showcase-font-name">Are You Sure You Want to Delete this Conference?</h2> + + <div class="modal__header--icon"></div> + </div> + <div class="divider-container"><hr> </div> + <div class="modal__content"> + Deletions are not reversible.<br/> {{message.text}} + </div> + <div class="modal__footer"> + <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$close()">Yes</button> + <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$dismiss()">Cancel</button> + </div> + </div> + </script> + <script type="text/ng-template" id="confirmation_informative.html"> + <div class="modal__warning font-showcase" > + <div class="modal__header"> + <h2 class="font-showcase-font-name">{{message.title}}</h2> + + <div class="modal__header--icon"></div> + </div> + <div class="divider-container"><hr> </div> + <div class="modal__content" style="white-space: pre-wrap;">{{message.text}}<br/></div> + <div class="modal__footer"> + <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$close()">Yes</button> + <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$dismiss()">Cancel</button> + </div> + </div> + </script> + + <script type="text/ng-template" id="confirmation_for_delete.html"> + <div class="modal__warning font-showcase" > + <div class="modal__header"> + <h2 class="font-showcase-font-name"> <h2 class="font-showcase-font-name">Are You Sure You Want to Delete This {{message.title}}?</h2> + + <div class="modal__header--icon"></div> + </div> + <div class="divider-container"><hr> </div> + <div class="modal__content">Deletions are not reversible. {{message.text}}<br/></div> + <div class="modal__footer"> + <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$close()">Yes</button> + <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$dismiss()">Cancel</button> + </div> + </div> + </script> + + <script type="text/ng-template" id="modal_warning.html"> + <div class="modal__warning font-showcase" > + <div class="modal__header"> + <h2 class="font-showcase-font-name">Unable to process your request!</h2> + + <div class="modal__header--icon"></div> + </div> + <div class="divider-container"><hr> </div> + <div class="modal__content" style="white-space: pre-wrap;">Unable to process your request. <br/>{{message.text}}<br/> + </div> + <div class="modal__footer"> + <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$dismiss()">Dismiss</button> + </div> + </div> + </script> + + <script type="text/ng-template" id="modal_warning_message.html"> + <div class="modal__warning font-showcase" > + <div class="modal__header"> + <h2 class="font-showcase-font-name">Warning</h2> + + <div class="modal__header--icon"></div> + </div> + <div class="divider-container"><hr> </div> + <div class="modal__content" style="white-space: pre-wrap;">{{message.text}}<br/> + </div> + <div class="modal__footer"> + <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$dismiss()">Dismiss</button> + </div> + </div> + </script> + + + + <script type="text/ng-template" id="modal_prompt.html"> + <div class="modal__warning font-showcase"> + <div class="modal__header"> + <h2 class="font-showcase-font-name">Unable to process your request. </h2> + <i class="icon-circle-action-close close-modal modal__header--close" ng-click="$dismiss()"></i> + + </div> + <div class="divider-container"><hr> </div> + <div class="modal__content"> + Unable to process your request. <br/> {{message.text}} + </div> + </div> + </script> + <script type="text/ng-template" id="delete_device.html"> + <div class="modal__warning font-showcase" > + <div class="modal__header"> + <h2 class="font-showcase-font-name">Are You Sure You Want to Delete This Device?</h2> + + <div class="modal__header--icon"></div> + </div> + <div class="divider-container"><hr> </div> + <div class="modal__content"> + Deletions are not reversible.<br/> {{message.text}} + </div> + <div class="modal__footer"> + <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$close()">Yes</button> + <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$dismiss()">Cancel</button> + </div> + </div> + </script> + <script type="text/ng-template" id="delete_multiple_device.html"> + <div class="modal__warning font-showcase" > + <div class="modal__header"> + <h2 class="font-showcase-font-name">Are You Sure You Want to Delete The Device(s)?</h2> + + <div class="modal__header--icon"></div> + </div> + <div class="divider-container"><hr> </div> + <div class="modal__content"> + Deletions are not reversible.<br/> {{message.text}} + </div> + <div class="modal__footer"> + <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$close()">Yes</button> + <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="$dismiss()">Cancel</button> + </div> + </div> + </script> + +<script> + +//.controller('modalpopupController', function ($scope, $modalInstance){ +var modalpopupController = function ($scope, $modalInstance, message){ + + $scope.message = message; + + + $scope.hello = function () { + $modalInstance.close($scope.digitPattern); + }; + $modalInstance.ok = function() { + //add the ok functionality + alert("Logout"); + }; + $modalInstance.cancel = function() { + //add the cancel functionality + alert("Keep Log in"); + }; + $modalInstance.cancelbutton = function() { + //add the cancel functionality + alert("Modal Waring popup close event"); + }; +} + + +</script> diff --git a/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/popup_modal_role.html b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/popup_modal_role.html new file mode 100644 index 00000000..c163002d --- /dev/null +++ b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/popup_modal_role.html @@ -0,0 +1,274 @@ +<!-- + ================================================================================ + eCOMP Portal SDK + ================================================================================ + Copyright (C) 2017 AT&T Intellectual Property + ================================================================================ + 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. + ================================================================================ + --> + +<script type="text/ng-template" id="role_functions_popup.html"> + <div class="modal__informative font-showcase" style="width:700px;height:500px;overflow:scroll"> + <div class="modal__header"> + <h2 class="font-showcase-font-name" style="width: 500px;">Select Role Functions</h2> + </div> + <button align="right" class="button button--primary button--small" herf="javascript:void(0)" ng-click="close()">Close</button> + <div class="divider-container"><hr> </div> + <div class="modal__content"> + <table table-data="availableRoleFunctions" att-table> + <thead att-table-row type="header"> + <tr> + <th att-table-header sortable="false" width="10%"> </th> + <th att-table-header sortable="false" width="90%">Role Function</th> + </tr> + </thead> + <tbody att-table-row type="body" row-repeat="availableRoleFunction in availableRoleFunctions" style="max-height: 980px;" > + <tr> + + <td width="10%"> + <div ng-click="toggleRoleFunction(availableRoleFunction.selected,availableRoleFunction);"> + <input type="checkbox" ng-model="availableRoleFunction.selected" att-toggle-main> + </div> + </td> + <td width="90%">{{ availableRoleFunction.name }}</td> + + </tr> + </tbody> + </table> + </div> + </div> +</script> + + +<script type="text/ng-template" id="child_roles_popup.html"> + <div class="modal__informative font-showcase" style="width:700px;height:500px;overflow:scroll"> + <div class="modal__header"> + <h2 class="font-showcase-font-name" style="width: 500px;">Select Child Roles</h2> + </div> + <button align="right" class="button button--primary button--small" herf="javascript:void(0)" ng-click="close()">Close</button> + <div class="divider-container"><hr> </div> + <div class="modal__content"> + <table table-data="availableRoles" att-table> + <thead att-table-row type="header"> + <tr> + <th att-table-header sortable="false" width="10%"> </th> + <th att-table-header sortable="false" width="90%">Role</th> + </tr> + </thead> + <tbody att-table-row type="body" row-repeat="availableRole in availableRoles" style="max-height: 980px;" > + <tr> + <td att-table-body width="10%"> + <div ng-click="toggleChildRole(availableRole.selected,availableRole);"> + <input type="checkbox" ng-model="availableRole.selected" att-toggle-main> + </div> + </td> + <td att-table-body width="90%">{{ availableRole.name }}</td> + </tr> + </tbody> + </table> + </div> + </div> +</script> + +<script> + +var rolepopupController = function ($scope, $modalInstance, role,modalService){ + $scope.role = role; + + if($scope.role.childRoles==null){ + $scope.role.childRoles=[]; + } + + $scope.ociavailableRoles=${availableRoles}; + console.log($scope.ociavailableRoles); + $scope.availableRoles=[]; + if($scope.ociavailableRoles) + $.each($scope.ociavailableRoles, function(i, a){ + var availableRole = a; + availableRole.selected = false; + if($scope.role.childRoles){ + $.each($scope.role.childRoles, function(j, b){ + if(a.id === b.id) { + availableRole.selected = true; + } + }); + }; + $scope.availableRoles.push(availableRole); + }); + ; + + $scope.ociavailableRoleFunctions=${availableRoleFunctions}; + + $scope.availableRoleFunctions = []; + if($scope.ociavailableRoleFunctions) + $.each($scope.ociavailableRoleFunctions, function(i, a){ + var availableRoleFunction = a; + availableRoleFunction.selected = false; + $.each($scope.role.roleFunctions, function(j, b){ + if(a.code === b.code) { + availableRoleFunction.selected = true; + } + }); + $scope.availableRoleFunctions.push(availableRoleFunction); + }); + ; + + $scope.toggleRoleFunction = function(selected,availableRoleFunction) { + //alert('toggleRole: '+selected); + + if(!selected) { + //remove role function + if(role.id==null){ + var index = $scope.role.roleFunctions.indexOf(availableRoleFunction); + if(index>=0) + $scope.role.roleFunctions.splice(index, 1); + return; + } + var uuu = "role/removeRoleFunction.htm?role_id=${param.role_id}"; + modalService.popupConfirmWinWithCancel("Confirm","You are about to remove the role function "+availableRoleFunction.name+" from the role for "+$scope.role.name+". Do you want to continue?", + function(){ + var postData={roleFunction:availableRoleFunction}; + $.ajax({ + type : 'POST', + url : uuu, + dataType: 'json', + contentType: 'application/json', + data: JSON.stringify(postData), + success : function(data){ + $scope.$apply(function(){$scope.role=data.role;}); + }, + error : function(data){ + modalService.showFailure("Fail","Error while saving."); + } + }); + + }, + function(){ + availableRoleFunction.selected=!availableRoleFunction.selected; + }) + + } else { + //add role function + if(role.id==null){ + $scope.role.roleFunctions.push(availableRoleFunction); + return; + } + var uuu = "role/addRoleFunction.htm?role_id=${param.role_id}"; + modalService.popupConfirmWinWithCancel("Confirm","You are about to add the role function "+availableRoleFunction.name+" to the role for "+$scope.role.name+". Do you want to continue?", + function(){ + var postData={roleFunction:availableRoleFunction}; + $.ajax({ + type : 'POST', + url : uuu, + dataType: 'json', + contentType: 'application/json', + data: JSON.stringify(postData), + success : function(data){ + $scope.$apply(function(){$scope.role=data.role;}); + }, + error : function(data){ + modalService.showFailure("Fail","Error while saving."); + } + }); + + }, + function(){ + availableRoleFunction.selected=!availableRoleFunction.selected; + }) + + } + + + }; + + $scope.toggleChildRole = function(selected,availableRole) { + //alert('toggleRole: '+selected); + + if(!selected) { + //remove role + if(role.id==null){ + var index = $scope.role.childRoles.indexOf(availableRole); + if(index>=0) + $scope.role.childRoles.splice(index, 1); + return; + } + var uuu = "role/removeChildRole.htm?role_id=${param.role_id}"; + modalService.popupConfirmWinWithCancel("Confirm","You are about to remove the child role "+availableRole.name+" from the role for "+$scope.role.name+". Do you want to continue?", + function(){ + var postData={childRole:availableRole}; + $.ajax({ + type : 'POST', + url : uuu, + dataType: 'json', + contentType: 'application/json', + data: JSON.stringify(postData), + success : function(data){ + console.log('role',data.role); + $scope.$apply(function(){$scope.role=data.role;}); + }, + error : function(data){ + modalService.showFailure("Fail","Error while saving."); + } + }); + + }, + function(){ + availableRole.selected=true; + }) + + } else { + //add role + if(role.id==null){ + $scope.role.childRoles.push(availableRole); + return; + } + var uuu = "role/addChildRole.htm?role_id=${param.role_id}"; + modalService.popupConfirmWinWithCancel("Confirm","You are about to add the child role "+availableRole.name+" to the role for "+$scope.role.name+". Do you want to continue?", + function(){ + var postData={childRole:availableRole}; + $.ajax({ + type : 'POST', + url : uuu, + dataType: 'json', + contentType: 'application/json', + data: JSON.stringify(postData), + success : function(data){ + $scope.$apply(function(){$scope.role=data.role;}); + }, + error : function(data){ + modalService.showFailure("Fail","Error while saving."); + } + }); + + }, + function(){ + availableRole.selected=false; + }) + + + } + + + }; + + + $scope.close = function() { + console.log('role', $scope.role); + $modalInstance.close({role:$scope.role}); + }; + +} + + +</script> diff --git a/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/popup_modal_rolefunction.html b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/popup_modal_rolefunction.html new file mode 100644 index 00000000..ee0b5121 --- /dev/null +++ b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/popup_modal_rolefunction.html @@ -0,0 +1,87 @@ +<!-- + ================================================================================ + eCOMP Portal SDK + ================================================================================ + Copyright (C) 2017 AT&T Intellectual Property + ================================================================================ + 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. + ================================================================================ + --> +<script type="text/ng-template" id="edit_role_function_popup.html"> + <div class="modal__informative font-showcase" style="width:400px;"> + <div class="modal__header"> + <h2 class="font-showcase-font-name" style="width: 500px;">{{label}}</h2> + </div> + <div class="divider-container"><hr> </div> + <div class="modal__content"> + <div class="fn-ebz-container" > + <label class="fn-ebz-text-label"><sup><b>*</b></sup>Name:</label><br> + <input type="text" class="fn-ebz-text" ng-model="editRoleFunction.name" + maxlength="30" /> + </div> + <br/> + <div class="fn-ebz-container" > + <label class="fn-ebz-text-label"><sup><b>*</b></sup>Code:</label><br> + <input type="text" class="fn-ebz-text" ng-model="editRoleFunction.code" ng-disabled="disableCd" + maxlength="30" /> + </div> + </div> + <div class="modal__footer"> + <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="saveRoleFunction(editRoleFunction);">Save</button> + <button class="button button--primary button--small" herf="javascript:void(0)" ng-click="close()">Close</button> + </div> + </div> +</script> + +<script> + +var rolefunctionpopupController = function ($scope, $modalInstance, message){ + if(message.availableRoleFunction==null) + $scope.label='Add Role Function' + else{ + $scope.label='Edit Role Function' + $scope.disableCd=true; + } + $scope.editRoleFunction = message.availableRoleFunction; + + $scope.saveRoleFunction = function(availableRoleFunction) { + var uuu = "role_function_list/saveRoleFunction.htm"; + var postData={availableRoleFunction: availableRoleFunction}; + $.ajax({ + type : 'POST', + url : uuu, + dataType: 'json', + contentType: 'application/json', + data: JSON.stringify(postData), + success : function(data){ + $scope.$apply(function(){ + //$scope.availableRoleFunctions=[];$scope.$apply(); + $scope.availableRoleFunctions=data.availableRoleFunctions;}); + //alert("Update Successful.") ; + console.log($scope.availableRoleFunctions); + + //$scope.editRoleFunction = null; + $modalInstance.close({availableRoleFunctions:$scope.availableRoleFunctions}); + }, + error : function(data){ + alert("Error while saving."); + } + }); + }; + + $scope.close = function() { + $modalInstance.close(); + }; +} + +</script> diff --git a/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/sequence/details.jsp b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/sequence/details.jsp new file mode 100644 index 00000000..eacdfbe0 --- /dev/null +++ b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/sequence/details.jsp @@ -0,0 +1 @@ +<iframe style="border:none" src="app/fusion/sequence/view-models/details.html" height="700" width="1300"></iframe>
\ No newline at end of file diff --git a/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/webrtc/collaboration.jsp b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/webrtc/collaboration.jsp new file mode 100644 index 00000000..9bf0ed74 --- /dev/null +++ b/usecaseui-common/src/main/webapp/WEB-INF/fusion/jsp/webrtc/collaboration.jsp @@ -0,0 +1,494 @@ +<%-- + ================================================================================ + eCOMP Portal SDK + ================================================================================ + Copyright (C) 2017 AT&T Intellectual Property + ================================================================================ + 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 xmlns="http://www.w3.org/1999/xhtml" ng-app="abs"> +<head> + <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <link type="text/css" rel="stylesheet" href="app/fusion/styles/layout/layout-default-latest.css" /> + <link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/sandbox/styles/btn.css" > + <link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/fn-ebz.css" > + <style type="text/css"> + /* + * NOTE: All CSS is purely cosmetic - it does not affect functionality + * http://layout.jquery-dev.com/demos.cfm + */ + + /* customize borders to avoid double-borders around inner-layouts */ + .ui-layout-pane { + border: 0; /* override layout-default-latest.css */ + border-top: 1px solid #BBB; + border-bottom: 1px solid #BBB; + } + .ui-layout-pane-north , + .ui-layout-pane-south { + border: 1px solid #BBB; + overflow: auto; + } + .ui-layout-pane-west , + .ui-layout-pane-east { + } + .ui-layout-pane-center { + border-left: 0; + border-right: 0; + } + .inner-center { + border: 1px solid #BBB; + } + + /* add shading to outer sidebar-panes */ + .outer-west , + .outer-east { + background-color: #EEE; + } + .middle-west , + .middle-east { + background-color: #F8F8F8; + } + + /* remove padding & scrolling from panes that are 'containers' for nested layouts */ + .outer-center , + .middle-center { + border: 0; /* cosmetic */ + padding: 0; + overflow: auto; + } + + /* + * customize borders on panes/resizers to make pretty + */ + .ui-layout-pane-west { border-right: 0; } + .ui-layout-resizer-west { border-left: 1px solid #BBB; } + .ui-layout-pane-east { border-left: 0; } + .ui-layout-resizer-east { border-right: 1px solid #BBB; } + .ui-layout-pane-north { border-bottom: 0; } + .ui-layout-resizer-north { border-top: 1px solid #BBB; } + .ui-layout-pane-south { border-top: 0; } + .ui-layout-resizer-south { border-bottom: 1px solid #BBB; } + /* + * add borders to resizers when pane is 'closed' + * + *.ui-layout-resizer-closed { border: 1px solid #BBB; } + */ + /* + * show both borders when the resizer is 'dragging' + */ + .ui-layout-resizer-west-dragging , + .ui-layout-resizer-east-dragging { + border-left: 1px solid #BBB; + border-right: 1px solid #BBB; + } + .ui-layout-resizer-north-dragging , + .ui-layout-resizer-south-dragging { + border-top: 1px solid #BBB; + border-bottom: 1px solid #BBB; + } + + + /* + layout toggler background image + */ + .ui-layout-toggler-west, .ui-layout-toggler-east { + border-width: 1px 0; + background-image: url("static/fusion/images/layout/panel-e-w-toggle.png"); + background-size: 10px 10px; + background-repeat: no-repeat; + background-position: center; + } + + .ui-layout-toggler-north, .ui-layout-toggler-south { + border-width: 0 1px; + background-image: url("static/fusion/images/layout/panel-n-s-toggle.png"); + background-size: 10px 10px; + background-repeat: no-repeat; + background-position: center; + } + + body{background-color:#fff;font-size:14px;font-size:.875rem;margin:0;padding:0px 0 20px;position:relative} + + </style> + + + <!-- LAYOUT v 1.3.0 --> + <script type="text/javascript" src="app/fusion/scripts/layout/jquery-latest.js"></script> + <script type="text/javascript" src="app/fusion/scripts/layout/jquery-ui-latest.js"></script> + <script type="text/javascript" src="app/fusion/scripts/layout/jquery.layout-latest.js"></script> + <script type="text/javascript" src="app/fusion/scripts/webrtc/RTCMultiConnection.js"></script> + <script type="text/javascript" src="app/fusion/scripts/socket/peerBroadcast.js"></script> + <script type="text/javascript" src="app/fusion/scripts/layout/debug.js"></script> + + <link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/fn-ebz.css" > + <link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/sandbox/styles/style.css" > + + <script src= "app/fusion/external/ebz/angular_js/angular.js"></script> + <script src= "app/fusion/external/ebz/angular_js/angular-route.min.js"></script> + <script src= "app/fusion/external/ebz/angular_js/angular-sanitize.js"></script> + <script src= "app/fusion/external/ebz/angular_js/app.js"></script> + <script src= "app/fusion/external/ebz/angular_js/gestures.js"></script> + + <%@ include file="/WEB-INF/fusion/jsp/popup_modal.html" %> + <script src="app/fusion/scripts/modalService.js"></script> + <script src="app/fusion/external/ebz/sandbox/att-abs-tpls.js" type="text/javascript"></script> + <script src="app/fusion/scripts/att_angular_gridster/ui-gridster-tpls.js"></script> + <script src="app/fusion/scripts/att_angular_gridster/angular-gridster.js"></script> + <script src= "app/fusion/external/ebz/angular_js/checklist-model.js"></script> + <script type="text/javascript" src= "app/fusion/external/ebz/angular_js/angular-cookies.js"></script> + <style> + body{background-color:#fff;font-size:14px;font-size:.875rem;margin:0;padding:0px 0 20px;position:relative} + </style> + + <script type="text/javascript"> + + + var popupModalService; + + app.controller("collaborationController", function ($scope,$http,modalService, $modal) { + popupModalService = modalService; + + }); + + + $(document).ready(function () { + + // OUTER-LAYOUT + panelLayout = $('body').layout({ + center__paneSelector: ".outer-center" + , west__paneSelector: ".outer-west" + , east__paneSelector: ".outer-east" + //, west__size: 800 + //, east__size: 125 + , spacing_open: 8 // ALL panes + , spacing_closed: 12 // ALL panes + + , center__childOptions: { + center__paneSelector: ".inner-center" + , west__paneSelector: ".inner-west" + , east__paneSelector: ".inner-east" + , west__size: 75 + , east__size: 75 + , spacing_open: 8 // ALL panes + , spacing_closed: 8 // ALL panes + , west__spacing_closed: 12 + , east__spacing_closed: 12 + } + + + + + }); + + + function initializeConnections() { + + var channelId = null; + channelId = location.href.replace(/\/|:|#|%|\.|\[|\]/g, ''); + var videoChannelId = channelId.concat("video"); + var screenChannelId = channelId.concat("screen"); + + videoConnection = new RTCMultiConnection(videoChannelId); + screenConnection = new RTCMultiConnection(screenChannelId); + + configConnection(videoConnection,true,true,false,true,false); + configConnection(screenConnection,false,false,true,false,true); + + }; + + function configConnection(_connection, _audio, _video, _screen, _data, _oneway) { + _connection.session = { + audio: _audio, // by default, it is true + video: _video, // by default, it is true + screen: _screen, + data: _data, + oneway: _oneway, + broadcast: false + }; + + _connection.direction = "one-to-one"; + + if( _data == true ) { + _connection.onmessage = function(e) { + appendDIV(e.data); + + console.debug(e.userid, 'posted', e.data); + console.log('latency:', e.latency, 'ms'); + }; + } + + + }; + + function assignStreamToDom() { + + + screenConnection.screenbody = document.querySelector('.screenContainer1'); + screenConnection.videobody = document.querySelector('.videoContainer2'); + + videoConnection.screenbody = document.querySelector('.screenContainer2'); + videoConnection.videobody = document.querySelector('.videoContainer1'); + }; + + function maximizeLayout() { + + // open the panes and maximize the window. + top.window.resizeTo(screen.availWidth,screen.availHeight); + panelLayout.open('west'); + // panelLayout.open('south'); is not working due to state initialization problem; debug to find out. so replacing the call with work around below - hack. + $(".ui-layout-toggler-south-closed").first().click(); + + }; + + function minimizeLayout() { + + // close the panes and minimize the window. + top.window.resizeTo(screen.availWidth - 2*screen.availWidth/3, screen.availHeight - screen.availHeight/2); + panelLayout.close('west'); + // panelLayout.close('south'); is not working due to state initialization problem; debug to find out. so replacing the call with work around below - hack. + $(".ui-layout-toggler-south-opened").first().click(); + }; + + function emptyContainers() { + $('.screenContainer1').empty(); + $('.videoContainer2').empty(); + + $('.screenContainer2').empty(); + $('.videoContainer1').empty(); + }; + + function appendDIV(div, parent) { + if (typeof div === 'string') { + var content = div; + div = document.createElement('div'); + div.innerHTML = content; + }; + + var chatOutput = document.getElementById('chat-output'), + fileProgress = document.getElementById('file-progress'); + + if (!parent) chatOutput.insertBefore(div, chatOutput.firstChild); + else fileProgress.insertBefore(div, fileProgress.firstChild); + + div.tabIndex = 0; + $('#chat-input').focus(); + }; + + function confirmClose() { + var message = "Are you sure you want to close the session?"; + + if(popupModalService != undefined) { + popupModalService.popupConfirmWin("Confirm", message, function(){ location.reload();}); + } + + else if (confirm(message) == true) { + location.reload(); + //window.opener.location.reload(); // go to the parent window + //close(); + } else { + // do nothing + } + + }; + + function notifyOthers() { + + // var websocket = localStorage.getItem('notifySocket'); + //if( websocket != null) { + // handling websocket peer broadcast session + var currentUser = "${sessionScope.user.sbcid}"; + var initialPageVisit = "${sessionScope.initialPageVisit}"; + var remoteUser = ''; + + var userList = location.search.split('chat_id=')[1].split('-'); + for(var i=0;i<userList.length;i++) { + if(userList[i] !== currentUser) { + remoteUser = userList[i]; + break; + } + } + + socketSetup(initialPageVisit, currentUser, remoteUser,"socketSend"); + + + + + + + }; + + function makeChatVisible() { + + $('#chat-input').css("visibility", 'visible'); + }; + + + + /* on click button enabled*/ + document.getElementById('share-screen').onclick = function() { + + emptyContainers(); + videoConnection.close(); + screenConnection.close(); + + maximizeLayout(); + emptyContainers(); + makeChatVisible(); + + videoConnection.open(); + screenConnection.open(); + + + notifyOthers(); + + + + }; + + document.getElementById('stop-share-screen').onclick = function() { + + emptyContainers(); + + videoConnection.close(); + screenConnection.close(); + + confirmClose(); + + }; + + document.getElementById('view-screen').onclick = function() { + + maximizeLayout(); + emptyContainers(); + makeChatVisible(); + + // timeout is required for the sharing to properly work + setTimeout(function() { + screenConnection.connect(); + },2000); + setTimeout(function() { + videoConnection.connect(); + },1000); + + + }; + + document.getElementById('chat-input').onkeypress = function(e) { + if (e.keyCode !== 13 || !this.value) return; + var message = "<b>${model.name}</b>: " + this.value; + appendDIV(message); + + // sending text message + videoConnection.send(message); + + this.value = ''; + }; + + /* + document.getElementById('file').onchange = function() { + videoConnection.send(this.files[0]); + }; + */ + + + //document.querySelector('.screenContainerPane').appenChild(document.querySelector('.screenContainer')); + //document.querySelector('.videoContainerPane').appendChild(document.querySelector('.videoContainer')); + + //panelLayout.bindButton($('#share-screen'), 'open', 'outer-west'); + //panelLayout.bindButton($('#stop-share-screen'), 'close', 'outer-west'); + var videoConnection = null, screenConnection = null; + initializeConnections(); + assignStreamToDom(); + + // start the share + //document.getElementById('share-screen').click(); + // + }); + + +</script> + + +</head> + +<body> +<!-- + <button id="share-screen" hidden="true" style="display: none;" class="setup">Share Your Screen</button> + <button id="stop-share-screen" hidden="true" style="display: none;" class="setup">Stop Share Your Screen</button> + <button id="view-screen" hidden="true" style="display: none;" class="setup">View My Screen</button> + + --> + +<div class="outer-center" style="position: absolute; left: 12px; right: 0px; top: 0px;bottom: 0px;"> + <div class="inner-center"> + + <!-- <jsp:include page="/WEB-INF/fusion/zul/chatOne.zul" /> --> + + + + <table style="width: 100%;"> + <tbody><tr> + <td> + <button id="share-screen" class="button button--primary button--small setup">Start Session</button> + <button id="stop-share-screen" class="button button--primary button--small setup">Stop Session</button> + <button id="view-screen" class="button button--primary button--small setup">View</button> + + </td> + + </tr> + </tbody> + + <tbody><tr> + <td> + <input type="text" id="chat-input" style="font-size: 1.2em;visibility:collapse;" placeholder="type here.."/> + <div id="chat-output"></div> + </td> + <!-- + <td style="background: white;"> + <input type="file" id="file"> + <div id="file-progress"></div> + </td> + --> + </tr> + </tbody> + </table> + + + </div> + <div id="inner-south" class="ui-layout-south"> + <div class="videoContainer1"></div> + <div class="videoContainer2"></div> + + </div> +</div> + +<div class="outer-west"> + <div class="screenContainer1"></div> + <div class="screenContainer2"></div> + <div ng-controller="collaborationController"> + </div> +</div> + + + + + +</body> +</html> |