From 695e028663051ce9e9afc7c6f6c4c6efdc82d227 Mon Sep 17 00:00:00 2001 From: erickson Date: Sun, 1 Oct 2006 21:19:54 +0000 Subject: [PATCH] added report description creation at run-time and so much more git-svn-id: svn://svn.open-ils.org/ILS/trunk@6318 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../src/perlmods/OpenILS/Application/Reporter.pm | 45 ++++++++++++++++++++-- Open-ILS/web/reports/oils_rpt_editor.xhtml | 6 +-- Open-ILS/web/reports/oils_rpt_folder_manager.xhtml | 3 ++ Open-ILS/web/reports/oils_rpt_folder_window.js | 10 +++-- Open-ILS/web/reports/oils_rpt_folders.js | 4 ++ Open-ILS/web/reports/oils_rpt_param_editor.js | 14 ++++++- Open-ILS/web/reports/oils_rpt_param_editor.xhtml | 2 + Open-ILS/web/reports/oils_rpt_report_editor.js | 43 ++++++++++++++++++--- Open-ILS/web/reports/oils_rpt_utils.js | 4 +- Open-ILS/web/reports/oils_rpt_vars.js | 3 ++ Open-ILS/web/reports/oils_rpt_widget.js | 25 ++---------- 11 files changed, 120 insertions(+), 39 deletions(-) diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Reporter.pm b/Open-ILS/src/perlmods/OpenILS/Application/Reporter.pm index f75789c21e..30e54a5416 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Reporter.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Reporter.pm @@ -44,6 +44,7 @@ sub retrieve_visible_folders { my $class = 'rrf'; $class = 'rtf' if $type eq 'template'; + $class = 'rof' if $type eq 'output'; my $flesh = {flesh => 1,flesh_fields => { $class => ['owner', 'share_with']}}; my $meth = "search_reporter_${type}_folder"; @@ -108,19 +109,36 @@ __PACKAGE__->register_method( api_name => 'open-ils.reporter.report.create', method => 'create_report'); sub create_report { - my( $self, $conn, $auth, $report ) = @_; + my( $self, $conn, $auth, $report, $schedule ) = @_; my $e = new_rstore_editor(authtoken=>$auth, xact=>1); return $e->die_event unless $e->checkauth; return $e->die_event unless $e->allowed('RUN_REPORTS'); $report->owner($e->requestor->id); - my $tmpl = $e->create_reporter_report($report) + my $rpt = $e->create_reporter_report($report) or return $e->die_event; + $schedule->report($rpt->id); + $schedule->runner($e->requestor->id); + $e->create_reporter_schedule($schedule) or return $e->die_event; $e->commit; - return $tmpl; + return $rpt; } __PACKAGE__->register_method( + api_name => 'open-ils.scheduleer.schedule.create', + method => 'create_schedule'); +sub create_schedule { + my( $self, $conn, $auth, $schedule ) = @_; + my $e = new_rstore_editor(authtoken=>$auth, xact=>1); + return $e->die_event unless $e->checkauth; + return $e->die_event unless $e->allowed('RUN_REPORTS'); + my $sched = $e->create_reporter_schedule($schedule) + or return $e->die_event; + $e->commit; + return $sched; +} + +__PACKAGE__->register_method( api_name => 'open-ils.reporter.template.retrieve', method => 'retrieve_template'); sub retrieve_template { @@ -167,6 +185,27 @@ sub update_template { __PACKAGE__->register_method( + api_name => 'open-ils.reporter.report.update', + method => 'update_report'); +sub update_report { + my( $self, $conn, $auth, $report ) = @_; + my $e = new_rstore_editor(authtoken=>$auth, xact=>1); + return $e->die_event unless $e->checkauth; + return $e->die_event unless $e->allowed('RUN_REPORTS'); + my $r = $e->retrieve_reporter_report($report->id) + or return $e->die_event; + if( $r->owner ne $e->requestor->id ) { + $e->rollback; + return 0; + } + $e->update_reporter_report($report) + or return $e->die_event; + $e->commit; + return 1; +} + + +__PACKAGE__->register_method( api_name => 'open-ils.reporter.folder.update', method => 'update_folder'); sub update_folder { diff --git a/Open-ILS/web/reports/oils_rpt_editor.xhtml b/Open-ILS/web/reports/oils_rpt_editor.xhtml index 8c5fc0f98f..09beffd09a 100644 --- a/Open-ILS/web/reports/oils_rpt_editor.xhtml +++ b/Open-ILS/web/reports/oils_rpt_editor.xhtml @@ -47,9 +47,9 @@ Run on: - + at - @@ -79,7 +79,7 @@ Send completion notification to this Email address: - + Choose a folder to store this report's output: diff --git a/Open-ILS/web/reports/oils_rpt_folder_manager.xhtml b/Open-ILS/web/reports/oils_rpt_folder_manager.xhtml index e895b1bf51..b1a8203841 100644 --- a/Open-ILS/web/reports/oils_rpt_folder_manager.xhtml +++ b/Open-ILS/web/reports/oils_rpt_folder_manager.xhtml @@ -5,6 +5,9 @@ + + + diff --git a/Open-ILS/web/reports/oils_rpt_folder_window.js b/Open-ILS/web/reports/oils_rpt_folder_window.js index 9874dea4ca..3f01eb49b1 100644 --- a/Open-ILS/web/reports/oils_rpt_folder_window.js +++ b/Open-ILS/web/reports/oils_rpt_folder_window.js @@ -15,7 +15,6 @@ function oilsRptFetchTemplate(id) { oilsRptSetSubClass('oilsRptFolderWindow', 'oilsRptObject'); function oilsRptFolderWindow(type, folderId) { this.init(); - _debug("initted folderwindow with id "+this.id); var node = oilsRptCurrentFolderManager.findNode(type, folderId); this.selector = DOM.oils_rpt_folder_contents_selector; this.folderNode = node; @@ -24,6 +23,13 @@ function oilsRptFolderWindow(type, folderId) { oilsRptFolderWindow.prototype.draw = function() { + + _debug(this.folderNode.folder.owner().id() + ' : ' + USER.id()); + + if( this.folderNode.folder.owner().id() != USER.id() ) + hideMe(DOM.oils_rpt_folder_window_contents_new_template.parentNode); + else unHideMe(DOM.oils_rpt_folder_window_contents_new_template.parentNode); + unHideMe(DOM.oils_rpt_folder_window_contents_div); hideMe(DOM.oils_rpt_folder_manager_div); hideMe(DOM.oils_rpt_top_folder); @@ -260,8 +266,6 @@ oilsRptFolderWindow.prototype.setFolderEditActions = function() { if( folder.shared() == 't' ) folder.share_with( obj.myOrgSelector.getValue() ); - _debug("Creating new folder: " + js2JSON(folder)); - if(confirm(DOM.oils_rpt_folder_manager_new_confirm.innerHTML + ' "'+folder.name()+'"')) { oilsRptCreateFolder(folder, obj.type, function(success) { diff --git a/Open-ILS/web/reports/oils_rpt_folders.js b/Open-ILS/web/reports/oils_rpt_folders.js index fb7c8b0018..733c656f46 100644 --- a/Open-ILS/web/reports/oils_rpt_folders.js +++ b/Open-ILS/web/reports/oils_rpt_folders.js @@ -195,8 +195,10 @@ oilsRptFolderManager.prototype.drawFolders = function(type, folders) { var node = { folder : folder, treeId : id }; oilsRptFolderNodeCache[type][folder.id()] = node; node.folderWindow = new oilsRptFolderWindow(type, folder.id()) + /* _debug("creating folder node for "+folder.name()+" : id = "+ folder.id()+' treeId = '+id + ' window id = ' + node.folderWindow.id); + */ } @@ -282,8 +284,10 @@ oilsRptFolderManager.prototype.drawFolders = function(type, folders) { } var action = 'javascript:oilsRptObject.find('+node.folderWindow.id+').draw();'; + /* _debug('adding node '+fname+' id = ' + id + ' pid = ' +pid + ' parent = ' + folder.parent() + ' folder-window = ' + node.folderWindow.id ); + */ tree.addNode(id, pid, fname, action); tree.close(pid); diff --git a/Open-ILS/web/reports/oils_rpt_param_editor.js b/Open-ILS/web/reports/oils_rpt_param_editor.js index 4a780c885c..e7301fdb03 100644 --- a/Open-ILS/web/reports/oils_rpt_param_editor.js +++ b/Open-ILS/web/reports/oils_rpt_param_editor.js @@ -5,6 +5,17 @@ function oilsRptParamEditor(report, tbody) { } +oilsRptParamEditor.prototype.recur = function() { + var cb = $n(DOM.oils_rpt_recur_editor_table,'oils_rpt_recur'); + return (cb.checked) ? 't' : 'f'; +} + +oilsRptParamEditor.prototype.recurInterval = function() { + var count = getSelectorVal($n(DOM.oils_rpt_recur_editor_table,'oils_rpt_recur_count')); + var intvl = getSelectorVal($n(DOM.oils_rpt_recur_editor_table,'oils_rpt_recur_interval_type')); + return count+''+intvl; +} + oilsRptParamEditor.prototype.draw = function() { var params = this.report.gatherParams(); this.params = params; @@ -37,13 +48,12 @@ oilsRptParamEditor.prototype.buildWidget = function(param, node) { switch(param.op) { case 'in': case 'not in': - /* we have to special case org selection for now, until we have generic object fetch support */ if( cls == 'aou' ) { return new oilsRptOrgMultiSelect({node:node}); } else { - return new oilsRptOrgMultiSelect({node:node}); + return new oilsRptInputMultiWidget({node:node}); } default: diff --git a/Open-ILS/web/reports/oils_rpt_param_editor.xhtml b/Open-ILS/web/reports/oils_rpt_param_editor.xhtml index eed4519823..c56ef619c2 100644 --- a/Open-ILS/web/reports/oils_rpt_param_editor.xhtml +++ b/Open-ILS/web/reports/oils_rpt_param_editor.xhtml @@ -39,7 +39,9 @@