diff --git a/web/src/main/webapp/js/override.js b/web/src/main/webapp/js/override.js index cb05ef694..01ec15b13 100644 --- a/web/src/main/webapp/js/override.js +++ b/web/src/main/webapp/js/override.js @@ -28,6 +28,8 @@ define(['angular'], function(angular) { 'defaultTheme': 'group', 'debug': true, 'showUserSettingsPage': true, + 'useNewLayout': true, + 'useOldLayout': false }, 'APP_OPTIONS': { 'appMenuTemplateURL': @@ -42,6 +44,7 @@ define(['angular'], function(angular) { 'context': '/portal/', 'base': '/portal/api/', 'layout': 'api/layoutDoc?tab=UW Bucky Home', + 'newLayout': 'http://localhost:3000/layout.json', 'layoutTab': 'UW Bucky Home', 'marketplace': { 'base': 'marketplace/', diff --git a/web/src/main/webapp/my-app/layout/services.js b/web/src/main/webapp/my-app/layout/services.js index cf10d001d..daeba6bab 100644 --- a/web/src/main/webapp/my-app/layout/services.js +++ b/web/src/main/webapp/my-app/layout/services.js @@ -31,33 +31,167 @@ define(['angular', 'jquery'], function(angular, $) { return angular.module('my-app.layout.services', []) .factory('layoutService', ['$sce', '$http', '$log', 'miscService', - 'mainService', '$sessionStorage', '$q', 'SERVICE_LOC', + 'mainService', '$sessionStorage', '$q', 'SERVICE_LOC', 'APP_FLAGS', function($sce, $http, $log, miscService, - mainService, $sessionStorage, $q, SERVICE_LOC) { - var addToHome = function addToHomeFunction(portlet) { + mainService, $sessionStorage, $q, SERVICE_LOC, APP_FLAGS) { + + /************************ + * NEW LAYOUT + * To use new service layout set useNewLayout flag in override.js to true, + * and useOldLayout to false + ************************/ + + if (APP_FLAGS.useNewLayout) { + console.log("SERVICE_LOC.newLayout: ", SERVICE_LOC); + + var getUncachedLayout = function() { + var successFn = function(result) { + var data = formatLayoutForCache(result.data); + storeLayoutInCache(data); + return data; + }; + + var errorFn = function(reason) { + miscService.redirectUser(reason.status, 'layout call'); + }; + + // no caching... request from the server + return $http.get(SERVICE_LOC.newLayout, + {cache: true} ) + .then(successFn, errorFn); + }; + + var getLayout = function() { + return checkLayoutCache().then(function(data) { + var successFn; + var errorFn; + var defer; + + // first, check the local storage... + if (data) { + defer = $q.defer(); + defer.resolve(data); + return defer.promise; + } + + successFn = function(result) { + console.log("result", result); + var data = formatLayoutForCache(result.data); + storeLayoutInCache(data); + return data; + }; + + errorFn = function(reason) { + miscService.redirectUser(reason.status, 'layout call'); + }; + + // no caching... request from the server + return $http.get( + SERVICE_LOC.newLayout, {cache: true} ) + .then(successFn, errorFn); + }); + }; + + var addToHome = function addToHomeFunction(portlet) { var fname = portlet.fname; - var tabName = SERVICE_LOC.layoutTab; - return $.ajax({ - url: SERVICE_LOC.base + 'layout?action=addPortlet&fname=' + - fname + '&tabName=' + tabName, - type: 'POST', - data: null, + return getLayout().then(function(data) { + console.log("data: ", data); + data.layout.push(fname); + return $http({ + method: 'POST', + url: SERVICE_LOC.newLayout, + data: {"layout" : data.layout,"new" : false}, dataType: 'json', - async: true, - success: function(request, text) { - $log.log('Added ' + portlet.fname + ' successfully'); - miscService.pushGAEvent( - 'Layout Modification', 'Add', portlet.name); - return true; - }, - error: function(request, text, error) { - $log.warn('failed to add app to home.'); - return false; - }, + headers : { + 'eppn': 'pnogal@wisc.edu', + 'Content-Type': 'application/x-www-form-urlencoded' + } + }); + }) + }; + } + + /************************ + ** OLD LAYOUT + ** To use old service layout set useOldLayout flag in override.js to true, + ** and useNewLayout to false + *************************/ + + if (APP_FLAGS.useOldLayout) { + console.log("using old layout"); + var getUncachedLayout = function() { + var successFn = function(result) { + var data = formatLayoutForCache(result.data); + storeLayoutInCache(data); + return data; + }; + + var errorFn = function(reason) { + miscService.redirectUser(reason.status, 'layout call'); + }; + + // no caching... request from the server + return $http.get(SERVICE_LOC.context + SERVICE_LOC.layout, + {cache: true} ) + .then(successFn, errorFn); + }; + + var getLayout = function() { + return checkLayoutCache().then(function(data) { + var successFn; + var errorFn; + var defer; + + // first, check the local storage... + if (data) { + defer = $q.defer(); + defer.resolve(data); + return defer.promise; + } + + successFn = function(result) { + var data = formatLayoutForCache(result.data); + storeLayoutInCache(data); + return data; + }; + + errorFn = function(reason) { + miscService.redirectUser(reason.status, 'layout call'); + }; + + // no caching... request from the server + return $http.get( + SERVICE_LOC.context + SERVICE_LOC.layout, {cache: true} ) + .then(successFn, errorFn); }); - }; + }; + + var addToHome = function addToHomeFunction(portlet) { + var fname = portlet.fname; + var tabName = SERVICE_LOC.layoutTab; + return $.ajax({ + url: SERVICE_LOC.base + 'layout?action=addPortlet&fname=' + + fname + '&tabName=' + tabName, + type: 'POST', + data: null, + dataType: 'json', + async: true, + success: function(request, text) { + $log.log('Added ' + portlet.fname + ' successfully'); + miscService.pushGAEvent( + 'Layout Modification', 'Add', portlet.name); + return true; + }, + error: function(request, text, error) { + $log.warn('failed to add app to home.'); + return false; + }, + }); + }; + } var addToLayoutByFname = function addToLayoutByFname(fname) { + console.log('in addToLayoutByFname', fname); var tabName = SERVICE_LOC.layoutTab; return $.ajax({ url: SERVICE_LOC.base + 'layout?action=addPortlet&fname=' + @@ -167,53 +301,6 @@ define(['angular', 'jquery'], function(angular, $) { return result; }; - var getUncachedLayout = function() { - var successFn = function(result) { - var data = formatLayoutForCache(result.data); - storeLayoutInCache(data); - return data; - }; - - var errorFn = function(reason) { - miscService.redirectUser(reason.status, 'layout call'); - }; - - // no caching... request from the server - return $http.get(SERVICE_LOC.context + SERVICE_LOC.layout, - {cache: true} ) - .then(successFn, errorFn); - }; - - var getLayout = function() { - return checkLayoutCache().then(function(data) { - var successFn; - var errorFn; - var defer; - - // first, check the local storage... - if (data) { - defer = $q.defer(); - defer.resolve(data); - return defer.promise; - } - - successFn = function(result) { - var data = formatLayoutForCache(result.data); - storeLayoutInCache(data); - return data; - }; - - errorFn = function(reason) { - miscService.redirectUser(reason.status, 'layout call'); - }; - - // no caching... request from the server - return $http.get( - SERVICE_LOC.context + SERVICE_LOC.layout, {cache: true} ) - .then(successFn, errorFn); - }); - }; - var getApp = function(fname) { return $http.get(SERVICE_LOC.base + 'portlet/' +fname + '.json', {cache: true}) diff --git a/web/src/main/webapp/my-app/layout/widget/partials/home-widget-view.html b/web/src/main/webapp/my-app/layout/widget/partials/home-widget-view.html index d3b3da5a0..2858c8147 100644 --- a/web/src/main/webapp/my-app/layout/widget/partials/home-widget-view.html +++ b/web/src/main/webapp/my-app/layout/widget/partials/home-widget-view.html @@ -42,7 +42,8 @@ ng-keydown="moveWithKeyboard(widget, $event);selectNode(widget.nodeId);" dnd-draggable="widget" dnd-effect-allowed="move"> - + + diff --git a/web/src/main/webapp/my-app/marketplace/controllers.js b/web/src/main/webapp/my-app/marketplace/controllers.js index 527543738..de42e444d 100644 --- a/web/src/main/webapp/my-app/marketplace/controllers.js +++ b/web/src/main/webapp/my-app/marketplace/controllers.js @@ -84,34 +84,40 @@ define(['angular', 'jquery', 'require'], function(angular, $, require) { $scope.addToHome = function addToHome(portlet) { var fname = portlet.fname; - var ret = layoutService.addToHome(portlet); - ret.success(function(request, text) { - angular.element('.fname-'+fname) + var ret = layoutService.addToHome(portlet, $sessionStorage.layout); + ret.then( + function successCallback(response) { + $log.log('Added ' + portlet.fname + ' successfully'); + angular.element('.fname-'+fname) .html(' Added Successfully') .prop('disabled', true) .removeClass('btn-add') .addClass('btn-added'); - $scope.$apply(function() { - var marketplaceEntries = $.grep( - $sessionStorage.marketplace, - function(e) { - return e.fname === portlet.fname; + + var marketplaceEntries = $.grep( + $sessionStorage.marketplace, + function(e) { + return e.fname === portlet.fname; + } + ); + if (marketplaceEntries.length > 0) { + marketplaceEntries[0].hasInLayout = true; } - ); - if (marketplaceEntries.length > 0) { - marketplaceEntries[0].hasInLayout = true; - } - $rootScope.layout = null; // reset layout due to modifications - $sessionStorage.layout = null; - }); - }) - .error(function(request, text, error) { + $rootScope.layout = null; // reset layout due to modifications + $sessionStorage.layout = null; + miscService.pushGAEvent('Layout Modification', 'Add', portlet.name); + }, + + function errorCallback(response) { + $log.warn('failed to add app to home.'); angular.element('.fname-'+fname) .parent() .append( 'Issue adding to home, please try again later' ); - }); + }).catch(function() { + console.log("more errors occurred"); + }); }; $scope.searchTermFilter = function(portlet) {