added report and template delete actions, added report save actions
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 29 Sep 2006 23:47:10 +0000 (23:47 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 29 Sep 2006 23:47:10 +0000 (23:47 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@6271 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/web/reports/oils_rpt_editor.xhtml
Open-ILS/web/reports/oils_rpt_folder_window.js
Open-ILS/web/reports/oils_rpt_folder_window.xhtml
Open-ILS/web/reports/oils_rpt_param_editor.js
Open-ILS/web/reports/oils_rpt_report_editor.js
Open-ILS/web/reports/oils_rpt_vars.js

index 2b8e330..2c74aea 100644 (file)
@@ -20,7 +20,7 @@
                        </tr>
                        <tr>
                                <td>Report Description:</td>
-                               <td><textarea cols='45' rows='2' id='oils_rpt_report_editor_name'/></td>
+                               <td><textarea cols='45' rows='2' id='oils_rpt_report_editor_desc'/></td>
                        </tr>
                        <tr><td colspan='2'><hr/></td></tr>
                        <tr>
                                        Add scheduling interface ...
                                </td>
                        </tr>
+                       <tr>
+                               <td colspan='2'>
+                                       <input id='oils_rpt_report_editor_save' type='submit' value='Save Report'/>
+                               </td>
+                       </tr>
+
                </tbody>
        </table>
 </div>
index 2f1d39b..0704fc1 100644 (file)
@@ -118,10 +118,60 @@ oilsRptFolderWindow.prototype.doFolderAction = function() {
                        unHideMe(DOM.oils_rpt_folder_table_alt_td);
                        new oilsRptReportEditor(new oilsReport(objs[0]), this);
                        break;
+               case 'delete_report' :
+                       for(var r = 0; r < objs.length; r++) 
+                               this.deleteReport(objs[r]);
+                       break;
+               case 'delete_template' :
+                       for(var r = 0; r < objs.length; r++) 
+                               this.deleteTemplate(objs[r]);
+                       break;
+
        }
 }
 
 
+oilsRptFolderWindow.prototype.deleteReport = function(report) {
+       if(!confirmId('oils_rpt_folder_contents_confirm_report_delete')) return;
+       var req = new Request(OILS_RPT_DELETE_REPORT, SESSION, report.id());
+       req.callback(
+               function(r) {
+                       var res = r.getResultObject();
+                       if( res == 1 ) {
+                               oilsRptAlertSuccess();
+                               oilsRptCurrentFolderManager.draw();
+                       }
+               }
+       );
+       req.send();
+}
+
+oilsRptFolderWindow.prototype.deleteTemplate = function(tmpl) {
+       var req0 = new Request( OILS_RPT_TEMPLATE_HAS_RPTS, SESSION, tmpl.id() );
+       req0.callback(
+               function(r0) {
+                       var resp = r0.getResultObject();
+                       if( resp != '0' )
+                               return alertId('oils_rpt_folder_contents_template_no_delete');
+                       if(!confirmId('oils_rpt_folder_contents_confirm_template_delete')) return;
+                       var req = new Request(OILS_RPT_DELETE_TEMPLATE, SESSION, tmpl.id());
+                       req.callback(
+                               function(r) {
+                                       var res = r.getResultObject();
+                                       if( res == 1 ) {
+                                               oilsRptAlertSuccess();
+                                               oilsRptCurrentFolderManager.draw();
+                                       }
+                               }
+                       );
+                       req.send();
+               }
+       );
+       req0.send();
+}
+
+
+
 oilsRptFolderWindow.prototype.drawFolderDetails = function() {
        appendClear(DOM.oils_rpt_folder_creator_label, 
                text(this.folderNode.folder.owner().usrname()));
index a1899b4..027efb3 100644 (file)
@@ -5,10 +5,12 @@
                                <td> 
                                        <span>
                                                <select id='oils_rpt_folder_contents_action_selector' style='width: auto;'>
-                                                       <option type='template' value='create_report'>Create a new report from template</option>
-                                                       <option type='template' value='clone_template'>Clone template</option>
+                                                       <option type='template' value='create_report'>Create a new report from selected template</option>
+                                                       <option type='template' value='clone_template'>Clone selected template</option>
+                                                       <option type='template' value='delete_template'>Delete selected template(s)</option>
                                                        <option type='report' value='change_params'>Clone report</option>
                                                        <option type='report' value='schedule_report'>Schedule report</option>
+                                                       <option type='report' value='delete_report'>Delete selected report(s)</option>
                                                </select>
                                        </span>
                                        <input type='submit' value='Submit' id='oils_rpt_folder_content_action_go'/>
                        </tr>
                </tbody>
        </table>
+
+       <span class='hide_me' id='oils_rpt_folder_contents_confirm_report_delete'>
+               Are you sure you wish to delete the selected report(s)?
+       </span>
+
+       <span class='hide_me' id='oils_rpt_folder_contents_confirm_template_delete'>
+               Are you sure you wish to delete the selected template(s)?
+       </span>
+
+       <span class='hide_me' id='oils_rpt_folder_contents_template_no_delete'>
+               The selected template could not be deleted because there are reports
+               that depend on it.
+       </span>
 </div>
 
index af6ed06..4a780c8 100644 (file)
@@ -21,7 +21,7 @@ oilsRptParamEditor.prototype.draw = function() {
                var par = params[p];
                var row = oilsRptParamEditor.row.cloneNode(true);
                $n(row, 'object').appendChild(text(oilsRptMakeLabel(par.relation)));
-               $n(row, 'column').appendChild(par.column.colname);
+               $n(row, 'column').appendChild(text(par.column.colname));
                $n(row, 'transform').appendChild(text(par.column.transform));
                $n(row, 'action').appendChild(text(par.op));
                par.widget = this.buildWidget(par, $n(row, 'widget'));
index 96f7e87..54aa69a 100644 (file)
@@ -5,6 +5,9 @@ function oilsRptReportEditor(rptObject, folderWindow) {
        var rpt = rptObject.reportObject;
        this.folderWindow = folderWindow;
 
+       this.template = tmpl;
+       this.report = rpt;
+
        appendClear(DOM.oils_rpt_report_editor_template_name, tmpl.name());
        appendClear(DOM.oils_rpt_report_editor_template_creator, tmpl.owner().usrname());
        appendClear(DOM.oils_rpt_report_editor_template_description, tmpl.description());
@@ -26,7 +29,44 @@ function oilsRptReportEditor(rptObject, folderWindow) {
                function(node) { 
                        appendClear(DOM.oils_rpt_report_editor_selected_folder, node.folder.name());
                        obj.selectedFolder = node; });
+
+
+       var obj = this;
+       DOM.oils_rpt_report_editor_save.onclick = function(){obj.save();}
 }
 
 
+oilsRptReportEditor.prototype.save = function() {
+       var report = new rr();
+       report.owner( USER.id() );
+       report.template( this.template.id() );
+       report.folder( this.selectedFolder.folder.id() );
+       report.name( DOM.oils_rpt_report_editor_name.value );
+       report.description( DOM.oils_rpt_report_editor_desc.value );
+
+       report.recur('f');
+       var data = {};
+
+       for( var p in this.paramEditor.params ) {
+               var par = this.paramEditor.params[p];
+               _debug("adding report param "+par.key+" to report data");
+               data[par.key] = par.widget.getValue();
+       }
+       data = js2JSON(data);
+
+       _debug("complete report data = "+data);
+       report.data(data);
+
+       debug("Built report:\n"+js2JSON(report));
+
+       var req = new Request(OILS_RPT_CREATE_REPORT, SESSION, report );
+       req.callback(
+               function(r) {
+                       var res = r.getResultObject();
+                       oilsRptAlertSuccess();
+                       oilsRptCurrentFolderManager.draw();
+               }
+       );
+       req.send();
+}
 
index 81f0083..c6f14f7 100644 (file)
@@ -52,14 +52,19 @@ var oilsRptCurrentFilterTform;
 /* the current operation manager for the filter window */
 var oilsRptCurrentFilterOpManager;
 
-var OILS_RPT_FETCH_FOLDERS = 'open-ils.reporter:open-ils.reporter.folder.visible.retrieve';
-var OILS_RPT_FETCH_FOLDER_DATA = 'open-ils.reporter:open-ils.reporter.folder_data.retrieve';
-var OILS_RPT_FETCH_TEMPLATE = 'open-ils.reporter:open-ils.reporter.template.retrieve';
-var OILS_RPT_UPDATE_FOLDER = 'open-ils.reporter:open-ils.reporter.folder.update';
-var OILS_RPT_DELETE_FOLDER = 'open-ils.reporter:open-ils.reporter.folder.delete';
-var OILS_RPT_CREATE_FOLDER = 'open-ils.reporter:open-ils.reporter.folder.create';
+var OILS_RPT_FETCH_FOLDERS                     = 'open-ils.reporter:open-ils.reporter.folder.visible.retrieve';
+var OILS_RPT_FETCH_FOLDER_DATA = 'open-ils.reporter:open-ils.reporter.folder_data.retrieve';
+var OILS_RPT_FETCH_TEMPLATE            = 'open-ils.reporter:open-ils.reporter.template.retrieve';
+var OILS_RPT_UPDATE_FOLDER                     = 'open-ils.reporter:open-ils.reporter.folder.update';
+var OILS_RPT_DELETE_FOLDER                     = 'open-ils.reporter:open-ils.reporter.folder.delete';
+var OILS_RPT_CREATE_FOLDER                     = 'open-ils.reporter:open-ils.reporter.folder.create';
 var OILS_RPT_FETCH_ORG_FULL_PATH = 'open-ils.reporter:open-ils.reporter.org_unit.full_path';
-var OILS_RPT_FETCH_ORG_TREE = 'open-ils.actor:open-ils.actor.org_tree.retrieve';
+var OILS_RPT_FETCH_ORG_TREE            = 'open-ils.actor:open-ils.actor.org_tree.retrieve';
+var OILS_RPT_DELETE_TEMPLATE           = 'open-ils.reporter:open-ils.reporter.template.delete';
+var OILS_RPT_DELETE_REPORT                     = 'open-ils.reporter:open-ils.reporter.report.delete';
+var OILS_RPT_TEMPLATE_HAS_RPTS = 'open-ils.reporter:open-ils.reporter.template_has_reports';
+var OILS_RPT_CREATE_REPORT                     = 'open-ils.reporter:open-ils.reporter.report.create';
+var OILS_RPT_CREATE_TEMPLATE           = 'open-ils.reporter:open-ils.reporter.template.create';
 
 var oilsRptCurrentFolderManager;