more output support, more report editor options, etc.
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Mon, 2 Oct 2006 04:43:38 +0000 (04:43 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Mon, 2 Oct 2006 04:43:38 +0000 (04:43 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@6330 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/web/reports/oils_rpt.js
Open-ILS/web/reports/oils_rpt.xhtml
Open-ILS/web/reports/oils_rpt_builder.js
Open-ILS/web/reports/oils_rpt_folder_window.js
Open-ILS/web/reports/oils_rpt_folder_window.xhtml
Open-ILS/web/reports/oils_rpt_report_editor.js
Open-ILS/web/reports/oils_rpt_utils.js
Open-ILS/web/reports/oils_rpt_vars.js

index 74a559a..84c3a58 100644 (file)
@@ -5,15 +5,21 @@ function oilsInitReports() {
        document.captureEvents(Event.MOUSEMOVE);
        document.onmousemove = setMousePos;
 
-       //DEBUG = 1;
-
        var cgi = new CGI();
        fetchUser(cgi.param('ses'));
        DOM.oils_rpt_user.appendChild(text(USER.usrname()));
-       oilsRptDebugEnabled = cgi.param('dbg');
-       if(oilsRptDebugEnabled) DEBUG = 1;
 
+       fetchHighestPermOrgs(SESSION, USER.id(), ['RUN_REPORTS']);
+       if( PERMS['RUN_REPORTS'] == -1 ) {
+               unHideMe(DOM.oils_rpt_permission_denied);
+               hideMe(DOM.oils_rpt_tree_loading);
+               return false;
+       }
+
+       oilsRptCookie = new HTTP.Cookies();
        oilsRptCurrentOrg = USER.ws_ou();
+       cookieManager.write(COOKIE_SES, SESSION, -1, '/');
+       cookieManager.write('ws_ou', USER.ws_ou(), -1, '/');
 
        oilsRptFetchOrgTree(
                function() {
@@ -25,6 +31,7 @@ function oilsInitReports() {
                        )
                }
        );
+       return true;
 }
 
 function oilsRtpInitFolders() {
index 1463383..ecfb417 100644 (file)
                <!--#include virtual="oils_rpt_common.xhtml"-->
        </head>
 
-       <body onload='oilsInitReports();oilsRtpInitFolders();' onunload='oilsCleanupReports();'>
+       <body onload='if(oilsInitReports())oilsRtpInitFolders();' onunload='oilsCleanupReports();'>
                <div class='welcome_box'>
                        <span>You are logged in as </span><b><span id='oils_rpt_user'/></b>
                </div>
 
+               <div id='oils_rpt_permission_denied' class='hide_me'>
+                       You do not have sufficient permissions to run reports
+               </div>
+
                <!--
                <div>
                        <a class='oils_rpt_main_link' href='javascript:_l("oils_rpt_builder.xhtml");'>Build a New Report Template</a>
index 0f833e8..4dcd95a 100644 (file)
@@ -2,7 +2,7 @@
   * grabs and builds the IDL tree
   */
 function oilsInitReportBuilder() {
-       oilsInitReports();
+       if(!oilsInitReports()) return false;
        oilsReportBuilderReset();
        DOM.oils_rpt_table.onclick = 
                function(){hideMe(DOM.oils_rpt_column_editor)};
index f954c91..9eb6bcd 100644 (file)
@@ -1,14 +1,5 @@
 
-function oilsRptFetchTemplate(id) {
-       var t = oilsRptGetCache('rt', id);
-       if(!t) {
-               var r = new Request(OILS_RPT_FETCH_TEMPLATE, SESSION, id);
-               r.send(true);
-               t = r.result();
-               oilsRptCacheObject('rt', t, id);
-       }
-       return t;
-}
+
 
 
 /* generic folder window class */
@@ -26,6 +17,13 @@ oilsRptFolderWindow.prototype.draw = function() {
 
        _debug(this.folderNode.folder.owner().id() + ' : ' + USER.id());
 
+       var obj = this;
+       setSelector(DOM.oils_rpt_output_limit_selector, oilsRptOutputLimit);
+       DOM.oils_rpt_output_limit_redraw.onclick = function() {
+               oilsRptOutputLimit = getSelectorVal(DOM.oils_rpt_output_limit_selector);
+               obj.draw();
+       }
+
        if( this.folderNode.folder.owner().id() == USER.id() && this.type == 'template') 
                unHideMe(DOM.oils_rpt_folder_window_contents_new_template.parentNode);
        else hideMe(DOM.oils_rpt_folder_window_contents_new_template.parentNode);
@@ -50,7 +48,6 @@ oilsRptFolderWindow.prototype.draw = function() {
        hideMe(DOM.oils_rpt_folder_table_alt_td);
        this.drawFolderDetails();
 
-       var obj = this;
        DOM.oils_rpt_folder_content_action_go.onclick = 
                function() {obj.doFolderAction()}
 
@@ -69,6 +66,12 @@ oilsRptFolderWindow.prototype.draw = function() {
        }
        sel.options[0].selected = true;
 
+       /*
+       hideMe(DOM.oils_rpt_output_limit_selector.parentNode);
+       if( this.type == 'output' )
+               unHideMe(DOM.oils_rpt_output_limit_selector.parentNode);
+               */
+
        this.drawEditActions();
 }
 
@@ -218,31 +221,71 @@ oilsRptFolderWindow.prototype.drawFolderDetails = function() {
 oilsRptFolderWindow.prototype.fetchFolderData = function(callback) {
        removeChildren(this.selector);
        var req = new Request(OILS_RPT_FETCH_FOLDER_DATA, 
-               SESSION, this.type, this.folderNode.folder.id());
-
-       if(this.type == 'output') 
-               req = new Request(OILS_RPT_FETCH_OUTPUT, SESSION, this.folderNode.folder.id());
+               SESSION, this.type, this.folderNode.folder.id(), oilsRptOutputLimit);
 
+       if(this.type == 'output') {
+               req = new Request(OILS_RPT_FETCH_OUTPUT, 
+                       SESSION, this.folderNode.folder.id(), oilsRptOutputLimit);
+       }
 
        var obj = this;
        removeChildren(obj.selector);
        req.callback(
                function(r) {
                        var res = r.getResultObject();
-                       obj.fmTable = drawFMObjectTable( 
-                               { 
-                                       dest : obj.selector, 
-                                       obj : res,
-                                       selectCol : true,
-                                       selectColName : 'Select',
-                                       selectAllName : 'All',
-                                       selectNoneName : 'None'
+                       if( obj.type == 'output' ) {
+                               obj.fleshSchedules(res, 0);
+                       } else {
+                               obj.fmTable = drawFMObjectTable( 
+                                       { 
+                                               dest : obj.selector, 
+                                               obj : res,
+                                               selectCol : true,
+                                               selectColName : 'Select',
+                                               selectAllName : 'All',
+                                               selectNoneName : 'None'
+                                       }
+                               );
+                       }
+               }
+       );
+       req.send();
+}
+
+
+oilsRptFolderWindow.prototype.fleshSchedules = function(list, idx) {
+       if( idx >= list.length ) {
+               this.fmTable = drawFMObjectTable( 
+                       { 
+                               dest : this.selector, 
+                               obj : list,
+                               selectCol : true,
+                               selectColName : 'Select',
+                               selectAllName : 'All',
+                               selectNoneName : 'None'
+                       }
+               );
+               return;
+       }
+
+       var sched = list[idx];
+       var obj = this;
+       oilsRptFetchUser(sched.runner(),
+               function(user) {
+                       sched.runner(user);
+                       oilsRptFetchReport(sched.report(),
+                               function(report) {
+                                       sched.report(report);
+                                       oilsRptFetchTemplate(report.template(),
+                                               function(template) {
+                                                       report.template(template);
+                                                       obj.fleshSchedules(list, ++idx);
+                                               }
+                                       );
                                }
                        );
-                       if(callback) callback();
                }
        );
-       req.send();
 }
 
 
index 09a1044..759d86c 100644 (file)
                        <tr class='oils_rpt_folder_window_contents_row'>
                                <td width='100%' align='center'>
                                        <table width='100%'><tbody>
-                                               <tr><td align='center'><h4>Folder Contents</h4></td></tr>
+                                               <tr>
+                                                       <td align='center'>
+                                                               <h4>Folder Contents</h4>
+                                                               <span style='padding-left: 10px;'>
+                                                                       Limit output to 
+                                                                       <select id='oils_rpt_output_limit_selector'>
+                                                                               <option value='5'>5</option>
+                                                                               <option value='10'>10</option>
+                                                                               <option value='25'>25</option>
+                                                                               <option value='50'>50</option>
+                                                                               <option value=''>All</option>
+                                                                       </select>
+                                                                       rows.
+                                                                       <input type='submit' value='Re-Draw' id='oils_rpt_output_limit_redraw'/>
+                                                               </span>
+                                                       </td>
+                                               </tr>
                                                <tr><td><div id='oils_rpt_folder_contents_selector'/></td></tr>
                                        </tbody></table>
                                </td>
index 5a84843..e13c25e 100644 (file)
@@ -88,9 +88,21 @@ oilsRptReportEditor.prototype.save = function() {
        schedule.folder(this.selectedOutputFolder.folder.id());
        schedule.email(DOM.oils_rpt_param_editor_sched_email.value);
        schedule.run_time(time);
+       schedule.runner(USER.id());
+
+       schedule.excel_format((DOM.oils_rpt_format_excel.checked) ? 't' : 'f');
+       schedule.html_format((DOM.oils_rpt_format_html.checked) ? 't' : 'f');
+       schedule.csv_format((DOM.oils_rpt_format_csv.checked) ? 't' : 'f');
+       schedule.chart_pie((DOM.oils_rpt_format_chart_pie.checked) ? 't' : 'f');
+       schedule.chart_bar((DOM.oils_rpt_format_chart_bar.checked) ? 't' : 'f');
+       schedule.chart_line((DOM.oils_rpt_format_chart_line.checked) ? 't' : 'f');
+
+       debugFMObject(schedule);
 
        _debug("Built schedule:\n"+js2JSON(schedule));
 
+       return; /* XXX */
+
        var req = new Request(OILS_RPT_CREATE_REPORT, SESSION, report, schedule );
        req.callback(
                function(r) {
index 9a3ac6c..83a6764 100644 (file)
@@ -46,7 +46,7 @@ function oilsRptCacheObject(type, obj, id) {
 function oilsRptGetCache(type, id) {
        if( !oilsRptObjectCache[type] )
                return null;
-       return oilsRptObjectCache[type][i];
+       return oilsRptObjectCache[type][id];
 }
 
 
@@ -275,11 +275,55 @@ function oilsRptCreateFolder(folder, type, callback) {
        }
 }
 
+/*
 function oilsRptFetchReport(id, callback) {
        var req = new Request(OILS_RPT_FETCH_REPORT, SESSION, id);
        req.callback(function(r){ callback(r.getResultObject());});
        req.send();
 }
+*/
+
+function oilsRptFetchReport(id, callback) {
+       var r = oilsRptGetCache('rr', id);
+       if(r) return callback(r);
+       var req = new Request(OILS_RPT_FETCH_REPORT, SESSION, id);
+       req.callback( 
+               function(res) { 
+                       var rpt = res.getResultObject();
+                       oilsRptCacheObject('rr', rpt, id);
+                       callback(rpt);
+               }
+       );
+       req.send();
+}
+
+function oilsRptFetchUser(id, callback) {
+       var r = oilsRptGetCache('au', id);
+       if(r) return callback(r);
+       var req = new Request(FETCH_FLESHED_USER, SESSION, id, []);
+       req.callback( 
+               function(res) { 
+                       var user = res.getResultObject();
+                       oilsRptCacheObject('au', user, id);
+                       callback(user);
+               }
+       );
+       req.send();
+}
+
+function oilsRptFetchTemplate(id, callback) {
+       var t = oilsRptGetCache('rt', id);
+       if(t) return callback(t);
+       var r = new Request(OILS_RPT_FETCH_TEMPLATE, SESSION, id);
+       r.callback( 
+               function(res) { 
+                       var tmpl = res.getResultObject();
+               oilsRptCacheObject('rt', tmpl, id);
+                       callback(tmpl);
+               }
+       );
+       r.send();
+}
 
 
 function oilsRptAlertSuccess() { alertId('oils_rpt_generic_success'); }
@@ -288,3 +332,5 @@ function oilsRptAlertSuccess() { alertId('oils_rpt_generic_success'); }
 function oilsRptBuildOutputLink(tid, rid, sid) {
        return OILS_IDL_OUTPUT_URL + tid+'/'+rid+'/'+sid+'/'+ OILS_IDL_OUTPUT_FILE;
 }
+
+
index 495270d..f656ef3 100644 (file)
@@ -12,6 +12,8 @@ var oilsRptTree;
 
 var oilsRptCurrentOrg;
 
+var oilsRptCookie;
+
 var oilsRptTemplateFolderTree;
 var oilsRptReportFolderTree;
 var oilsRptOutputFolderTree;
@@ -19,6 +21,8 @@ var oilsRptSharedTemplateFolderTree;
 var oilsRptSharedReportFolderTree;
 var oilsRptSharedOutputFolderTree;
 
+var oilsRptOutputLimit = 10;
+
 
 /* URL to retrieve the IDL from */
 var OILS_IDL_URL = "/reports/fm_IDL.xml";