</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>
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()));
<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>
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'));
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());
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();
+}
/* 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;