diff options
Diffstat (limited to 'usecaseui-common/src/main/webapp/app/fusion/scripts/DS2-directives')
4 files changed, 280 insertions, 0 deletions
diff --git a/usecaseui-common/src/main/webapp/app/fusion/scripts/DS2-directives/b2b-leftnav-ext.js b/usecaseui-common/src/main/webapp/app/fusion/scripts/DS2-directives/b2b-leftnav-ext.js new file mode 100644 index 00000000..64da0a49 --- /dev/null +++ b/usecaseui-common/src/main/webapp/app/fusion/scripts/DS2-directives/b2b-leftnav-ext.js @@ -0,0 +1,64 @@ +appDS2.directive('leftMenuEcomp', function () { + /* + * Custom version of b2b-left-navigation directive: + * 1. Make parent menu a link if no child menus. + * 2. Add unique IDs to all items. + * 3. Hide icon if no child menus. + * 4. Arrow toggle button. + * 5. Adjust the page on collapse/expand. + */ + return { + restrict: 'EA', + templateUrl: 'app/fusion/scripts/DS2-view-models/b2b-leftnav-ext.html', + scope: { + menuData: '=' + }, + link: function (scope, element, attrs, ctrl) { + scope.idx = -1; + scope.itemIdx = -1; + scope.navIdx = -1; + /*assuming menu is expanded when page loads*/ + scope.showmenu=true; + scope.leftMenuClass= ""; + scope.leftMenuArrowClass="leftmenu-arrow-expand"; + scope.toggleNav = function (val,link,menuStatus) { + + if(!menuStatus){ + scope.toggleDrawer(menuStatus); + return; + } + if(link!=null && link!=''){ + location.href = link; + return; + } + if (val === scope.idx) { + scope.idx = -1; + return; + } + scope.idx = val; + }; + scope.toggleDrawer = function(menuStatus){ + scope.idx=-1; /*hide the sub menus*/ + if(menuStatus){ + //Collapse Menu + scope.showmenu=false; + scope.leftMenuClass = "left-menu-collapsed"; + scope.leftMenuArrowClass="leftmenu-arrow-collapse"; + document.getElementById('page-content').style.marginLeft = "50px"; + }else{ + //Expand Menu + scope.showmenu=true; + scope.leftMenuClass = ""; + scope.leftMenuArrowClass="leftmenu-arrow-expand"; + document.getElementById('page-content').style.marginLeft = "250px"; + } + + }; + scope.liveLink = function (evt, val1, val2) { + scope.itemIdx = val1; + scope.navIdx = val2; + evt.stopPropagation(); + }; + } + }; +});
\ No newline at end of file diff --git a/usecaseui-common/src/main/webapp/app/fusion/scripts/DS2-directives/ds2Header.js b/usecaseui-common/src/main/webapp/app/fusion/scripts/DS2-directives/ds2Header.js new file mode 100644 index 00000000..088fa487 --- /dev/null +++ b/usecaseui-common/src/main/webapp/app/fusion/scripts/DS2-directives/ds2Header.js @@ -0,0 +1,116 @@ +appDS2.directive('ds2Header', function () { + return { + restrict: 'A', //This menas that it will be used as an attribute and NOT as an element. I don't like creating custom HTML elements + replace: false, + templateUrl: "app/fusion/scripts/DS2-view-models/ds2Header.html", + controller: ['$scope', '$filter','$http','$timeout', '$log','UserInfoServiceDS2', 'HeaderServiceDS2', '$window', '$cookies','$cookieStore', function ($scope, $filter, $http, $timeout, $log,UserInfoServiceDS2,HeaderServiceDS2, $window, $cookies,$cookieStore) { + // copy from existing DS1 + + /*Define fields*/ + $scope.userName; + $scope.userFirstName; + $scope.userId; + $scope.userEmail; + $scope.redirectUrl; + $scope.contactUsUrl; + $scope.getAccessUrl; + $scope.menuItems = []; + $scope.showHeader = ($cookieStore.get("show_app_header") == undefined ? true : $cookies.get("show_app_header") ); + + + /***************functions**************/ + /*getting user info from session*/ + $scope.getUserNameFromSession = function(){ + UserInfoServiceDS2.getFunctionalMenuStaticDetailSession() + .then(function (res) { + $scope.contactUsUrl=res.contactUsLink; + $scope.userName = res.userName; + $scope.userId = res.userid; + $scope.userEmail = res.email; + $scope.userFirstName = res.firstName; + $scope.redirectUrl = res.portalUrl; + $scope.getAccessUrl = res.getAccessUrl; + }); + } + + $scope.returnToPortal=function(){ + window.location.href = $scope.redirectUrl; + } + + /*Menu Structure*/ + var menuStructureConvert = function(menuItems) { + $scope.megaMenuDataObjectTemp = + [{ + text: "Manage", + children: menuItems + }, + { + text: "Support", + children: [ + { + label:"Contact Us", + action:$scope.contactUsUrl, + childMenus:[] + }, + { + label:"Get Access", + action:$scope.getAccessUrl, + childMenus:[] + }] + }]; + return $scope.megaMenuDataObjectTemp; + }; + + $scope.getMenu=function() { + $scope.getUserNameFromSession(); + var promise = HeaderServiceDS2.getMenu(); + promise.then( + function(res) { + if(res==null || res==''){ + $log.error('failed to get menu'); + $scope.getUserNameFromSession(); + }else{ + $scope.parentMenu = JSON.parse(res.data); + $scope.childMenu = JSON.parse(res.data2); + for(var i=0; i<$scope.parentMenu.length;i++){ + $scope.parentMenu[i].childMenus = ($scope.childMenu[i]); + } + $scope.menuItems = menuStructureConvert($scope.parentMenu); + } + }, + function(err) { + $log.error('getMenu failed', err); + } + ); + } + + + + $scope.adjustHeader=function() { + $scope.showHeader = ($cookies.get("show_app_header") == undefined ? true : $cookies.get("show_app_header")); + // console.log($scope.showHeader); + if ($scope.showHeader==true) { + document.getElementById('page-content').style.marginTop = "45px"; + }else{ + document.getElementById('page-content').style.marginTop = "0px"; + } + }; // adjustHeader + $scope.$on('$routeChangeSuccess', function () { + $scope.adjustHeader(); + }); + + $scope.getUserNameFromSession(); + $scope.getMenu(); + }] + } +}); + +appDS2.filter("ellipsis", function(){ + return function(text, length){ + if (text) { + var ellipsis = text.length > length ? "..." : ""; + return text.slice(0, length) + ellipsis; + }; + return text; + } +}); diff --git a/usecaseui-common/src/main/webapp/app/fusion/scripts/DS2-directives/ds2LeftMenu.js b/usecaseui-common/src/main/webapp/app/fusion/scripts/DS2-directives/ds2LeftMenu.js new file mode 100644 index 00000000..758add6e --- /dev/null +++ b/usecaseui-common/src/main/webapp/app/fusion/scripts/DS2-directives/ds2LeftMenu.js @@ -0,0 +1,73 @@ +appDS2.directive('ds2Menu', function () { + return { + restrict: 'A', //This means that it will be used as an attribute and NOT as an element. I don't like creating custom HTML elements + replace: false, + templateUrl: "app/fusion/scripts/DS2-view-models/ds2Left_menu.html", + controller: ['$scope','$filter','$http','$timeout','$cookies','LeftMenuServiceDS2', function ($scope, $filter, $http, $timeout, $cookies, LeftMenuServiceDS2) { + $scope.menuData = []; + $scope.leftChildData = []; + $scope.leftParentData = []; + $scope.leftMenuItems = []; + $scope.app_name = ""; + $scope.app_name_full = ""; + LeftMenuServiceDS2.getLeftMenu().then(function(response){ + var j = response; + if (j && j !== "null" && j !== "undefined"){ + $scope.leftParentData = JSON.parse(j.data); + $scope.leftChildData = JSON.parse(j.data2); + } else { + console.log("ds2Menu::controller: unexpected getLeftMenu response"); + return; + } + var leftParentList = $scope.leftParentData; + var leftChildItemList = $scope.leftChildData; + for (var i = 0; i < leftParentList.length; i++) { + var parentItem = {}; + parentItem.name = leftParentList[i].label; + parentItem.imageSrc = leftParentList[i].imageSrc; + // Add link to items with no subitems + if (leftChildItemList[i].length == 0) + parentItem.href = leftParentList[i].action; + parentItem.menuItems = []; + for (var j = 0; j < leftChildItemList[i].length; j++) { + if (leftChildItemList[i][j].label != null && leftChildItemList[i][j].label.length > 0) { + var childItem = {}; + childItem.name = leftChildItemList[i][j].label; + childItem.href = leftChildItemList[i][j].action; + parentItem.menuItems.push(childItem) + } + } + $scope.menuData.push(parentItem); + } + },function(error){ + console.log("ds2Menu::controller: getLeftMenu failed", error); + }); + + LeftMenuServiceDS2.getAppName().then(function(response){ + var j = response; + try { + if (j && j !== "null" && j!== "undefined"){ + $scope.app_name_full = j.data; + var processed_app_name = j.data; + 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 respsone is not an object/is empty"; + } + } catch (e) { + console.log("error happened while trying to get app name "+e); + return; + } + },function(error){ + console.log("error happened while calling getAppName "+error); + }); + + $scope.drawerOpen = true; + + + }] + } +});
\ No newline at end of file diff --git a/usecaseui-common/src/main/webapp/app/fusion/scripts/DS2-directives/footer.js b/usecaseui-common/src/main/webapp/app/fusion/scripts/DS2-directives/footer.js new file mode 100644 index 00000000..e11c3a05 --- /dev/null +++ b/usecaseui-common/src/main/webapp/app/fusion/scripts/DS2-directives/footer.js @@ -0,0 +1,27 @@ +appDS2.directive('ds2Footer', function () { + return { + restrict: 'A', //This means that it will be used as an attribute and NOT as an element. I don't like creating custom HTML elements + replace: false, + templateUrl: "app/fusion/scripts/DS2-view-models/footer.html", + controller: ['$scope', '$filter','ManifestService', function ($scope, $filter,ManifestService) { + $scope.build_number = ''; + ManifestService.getManifest().then(function(response){ + $scope.build_number=response['Build-Number']; + }); + }] + } +}); + +/*Analytics for all the pages*/ +$(function() { + portalHook(); + function portalHook() { + var script = document.createElement('script'); + script.src = "api/v2/analytics" + script.async = true; + script.onload = function() { + runAnalytics(); //runAnaltics() has endpoint in epsdk-fw library. + } + document.head.appendChild(script); + } +});
\ No newline at end of file |