From: erickson Date: Mon, 9 Oct 2006 02:25:46 +0000 (+0000) Subject: added support for remote object limiting by org where available X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=84de00138669953908350c220d1e060d62199c0b;p=evergreen%2Fpines.git added support for remote object limiting by org where available git-svn-id: svn://svn.open-ils.org/ILS/trunk@6413 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Reporter.pm b/Open-ILS/src/perlmods/OpenILS/Application/Reporter.pm index 152e6c060c..d74528885b 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Reporter.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Reporter.pm @@ -396,6 +396,8 @@ sub magic_fetch_all { return $e->event unless $e->allowed('RUN_REPORTS'); my $hint = $$args{hint}; + my $org_col = $$args{org_column}; + my $orgs = $$args{org}; # Find the class the iplements the given hint my ($class) = grep { @@ -405,11 +407,20 @@ sub magic_fetch_all { $class =~ s/Fieldmapper:://og; $class =~ s/::/_/og; - my $method = "retrieve_all_$class"; + + my $method; + my $margs; + + if( $org_col ) { + $method = "search_$class"; + $margs = { $org_col => $orgs }; + } else { + $method = "retrieve_all_$class"; + } $logger->info("reporter.magic_fetch => $method"); - return $e->$method(); + return $e->$method($margs); } diff --git a/Open-ILS/web/reports/oils_rpt_vars.js b/Open-ILS/web/reports/oils_rpt_vars.js index de6c8b3fd9..2348829501 100644 --- a/Open-ILS/web/reports/oils_rpt_vars.js +++ b/Open-ILS/web/reports/oils_rpt_vars.js @@ -11,6 +11,7 @@ var oilsRpt; var oilsRptTree; var oilsRptCurrentOrg; +var oilsRptMyOrgs; var oilsRptCookie; diff --git a/Open-ILS/web/reports/oils_rpt_widget.js b/Open-ILS/web/reports/oils_rpt_widget.js index ef12c6fcfe..e08624f09a 100644 --- a/Open-ILS/web/reports/oils_rpt_widget.js +++ b/Open-ILS/web/reports/oils_rpt_widget.js @@ -616,7 +616,24 @@ function oilsRptRemoteWidget(args) { } oilsRptRemoteWidget.prototype.draw = function() { - var req = new Request(OILS_RPT_MAGIC_FETCH, SESSION, {hint:this.class}); + var orgcol; + iterate(oilsIDL[this.class].fields, + function(i) { + if(i.type == 'link' && i.class == 'aou') + orgcol = i.name; + } + ); + + if(orgcol) _debug("found org column for remote widget: " + orgcol); + + var orgs = []; + iterate(oilsRptMyOrgs,function(i){orgs.push(i.id());}); + var req = new Request(OILS_RPT_MAGIC_FETCH, SESSION, { + hint:this.class, + org_column : orgcol, + org : orgs + }); + var obj = this; this.node.appendChild(this.source); req.callback(function(r){obj.render(r.getResultObject())}); @@ -624,7 +641,6 @@ oilsRptRemoteWidget.prototype.draw = function() { } oilsRptRemoteWidget.prototype.render = function(objs) { - _debug("rendering objects " + formatJSON(js2JSON(objs))); for( var i = 0; i < objs.length; i++ ) { var obj = objs[i]; var label = obj[this.field.selector](); @@ -679,17 +695,22 @@ function oilsRptMyOrgsWidget(node, orgid, maxorg) { } oilsRptMyOrgsWidget.prototype.draw = function() { - var req = new Request(OILS_RPT_FETCH_ORG_FULL_PATH, this.orgid); - var obj = this; - req.callback( - function(r) { obj.drawWidget(r.getResultObject()); } - ); - req.send(); + if(!oilsRptMyOrgs) { + var req = new Request(OILS_RPT_FETCH_ORG_FULL_PATH, this.orgid); + var obj = this; + req.callback( + function(r) { obj.drawWidget(r.getResultObject()); } + ); + req.send(); + } else { + this.drawWidget(oilsRptMyOrgs); + } } oilsRptMyOrgsWidget.prototype.drawWidget = function(orglist) { var sel = this.node; var started = false; + oilsRptMyOrgs = orglist; for( var i = 0; i < orglist.length; i++ ) { var org = orglist[i]; var opt = insertSelectorVal( this.node, -1,