From: Bill Erickson Date: Thu, 5 Jun 2014 14:24:17 +0000 (-0400) Subject: experiment w/ caching org tree in sessionstorage X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=1f561626e0cea3ddb26265a994da6a84215a2cba;p=working%2FEvergreen.git experiment w/ caching org tree in sessionstorage Signed-off-by: Bill Erickson --- diff --git a/Open-ILS/web/js/ui/default/staff/services/env.js b/Open-ILS/web/js/ui/default/staff/services/env.js index 9860477682..ca1d709110 100644 --- a/Open-ILS/web/js/ui/default/staff/services/env.js +++ b/Open-ILS/web/js/ui/default/staff/services/env.js @@ -33,8 +33,8 @@ angular.module('egCoreMod') // env fetcher .factory('egEnv', - ['$q','egAuth','egPCRUD','egIDL', -function($q, egAuth, egPCRUD, egIDL) { + ['$q','$window','egAuth','egPCRUD','egIDL', +function($q, $window , egAuth, egPCRUD, egIDL) { var service = { // collection of custom loader functions @@ -97,10 +97,26 @@ function($q, egAuth, egPCRUD, egIDL) { */ service.classLoaders = { aou : function() { + + // EXPERIMENT: cache the org tree in session storage. + // This means that if the org tree changes, users will have to + // open the client in a new browser tab to clear the cached tree. + var treeJSON = $window.sessionStorage.getItem('eg.env.aou.tree'); + if (treeJSON) { + console.debug('serving org tree from cache'); + var tree = JSON2js(treeJSON); + service.absorbTree(tree, 'aou') + return $q.when(tree); + } + return egPCRUD.search('aou', {parent_ou : null}, {flesh : -1, flesh_fields : {aou : ['children', 'ou_type']}} ).then( - function(tree) {service.absorbTree(tree, 'aou')} + function(tree) { + $window.sessionStorage.setItem( + 'eg.env.aou.tree', js2JSON(tree)); + service.absorbTree(tree, 'aou') + } ); }, };