commit d1c0541e4c8ddb1b76335c6559c0903d0e3a35f6 Author: phasefx Date: Fri Nov 12 19:49:34 2010 +0000 ensure that we only fetch this setting once per page git-svn-id: svn://svn.open-ils.org/ILS/branches/rel_2_0@18716 dcc99617-32d9-48b4-a31d-7c20da2025e4 diff --git a/Open-ILS/web/opac/common/js/opac_utils.js b/Open-ILS/web/opac/common/js/opac_utils.js index 8499c5e..64bfc50 100644 --- a/Open-ILS/web/opac/common/js/opac_utils.js +++ b/Open-ILS/web/opac/common/js/opac_utils.js @@ -827,17 +827,34 @@ function drawOrgTree() { //setTimeout( 'buildOrgSelector(G.ui.common.org_tree, orgTreeSelector);', 10 ); setTimeout( 'buildOrgSelector(G.ui.common.org_tree, orgTreeSelector);', 1 ); } - + +var checkOrgHiding_cached = false; +var checkOrgHiding_cached_context_org; +var checkOrgHiding_cached_depth; function checkOrgHiding() { - var context_org = getOrigLocation() || globalOrgTree.id(); - var depth = fetchOrgSettingDefault( context_org, 'opac.org_unit_hiding.depth'); - if (isXUL()) { - return false; // disable org hiding for staff client - } - if ( findOrgDepth( context_org ) < depth ) { - return false; // disable org hiding if Original Location doesn't make sense with setting depth (avoids disjointed org selectors) - } - return { 'org' : findOrgUnit(context_org), 'depth' : depth }; + if (isXUL()) { + return false; // disable org hiding for staff client + } + var context_org = getOrigLocation() || globalOrgTree.id(); + var depth; + if (checkOrgHiding_cached) { + if (checkOrgHiding_cached_context_org != context_org) { + checkOrgHiding_cached_context_org = context_org; + checkOrgHiding_cached_depth = undefined; + checkOrgHiding_cached = false; + } else { + depth = checkOrgHiding_cached_depth; + } + } else { + depth = fetchOrgSettingDefault( context_org, 'opac.org_unit_hiding.depth'); + checkOrgHiding_cached_depth = depth; + checkOrgHiding_cached_context_org = context_org; + checkOrgHiding_cached = true; + } + if ( findOrgDepth( context_org ) < depth ) { + return false; // disable org hiding if Original Location doesn't make sense with setting depth (avoids disjointed org selectors) + } + return { 'org' : findOrgUnit(context_org), 'depth' : depth }; } var orgTreeSelector;