Skip to content
This repository has been archived by the owner on May 4, 2022. It is now read-only.

Commit

Permalink
WIP: service layout replacement
Browse files Browse the repository at this point in the history
  • Loading branch information
nogalpaulina committed May 28, 2021
1 parent 8a43899 commit 8021330
Show file tree
Hide file tree
Showing 4 changed files with 184 additions and 87 deletions.
3 changes: 3 additions & 0 deletions web/src/main/webapp/js/override.js
Expand Up @@ -28,6 +28,8 @@ define(['angular'], function(angular) {
'defaultTheme': 'group',
'debug': true,
'showUserSettingsPage': true,
'useNewLayout': true,
'useOldLayout': false
},
'APP_OPTIONS': {
'appMenuTemplateURL':
Expand All @@ -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/',
Expand Down
223 changes: 155 additions & 68 deletions web/src/main/webapp/my-app/layout/services.js
Expand Up @@ -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=' +
Expand Down Expand Up @@ -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})
Expand Down
Expand Up @@ -42,7 +42,8 @@
ng-keydown="moveWithKeyboard(widget, $event);selectNode(widget.nodeId);"
dnd-draggable="widget"
dnd-effect-allowed="move">
<widget fname="{{ widget.fname }}">
<!-- if useOldLayout is set to true update to widget.fname-->
<widget fname="{{ widget }}">
<remove-button></remove-button>
</widget>
</li>
Expand Down
42 changes: 24 additions & 18 deletions web/src/main/webapp/my-app/marketplace/controllers.js
Expand Up @@ -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('<i class="fa fa-check"></i> 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(
'<span>Issue adding to home, please try again later</span>'
);
});
}).catch(function() {
console.log("more errors occurred");
});
};

$scope.searchTermFilter = function(portlet) {
Expand Down

0 comments on commit 8021330

Please sign in to comment.