]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/web/reports/oils_rpt_report_editor.js
fixed an output delete bug, added a brief column display in the report editor
[Evergreen.git] / Open-ILS / web / reports / oils_rpt_report_editor.js
1 oilsRptSetSubClass('oilsRptReportEditor', 'oilsRptObject');
2 var oilsRptReportEditorFolderTree;
3
4 function oilsRptReportEditor(rptObject, folderWindow) {
5         var tmpl = rptObject.templateObject;
6         var rpt = rptObject.reportObject;
7         this.folderWindow = folderWindow;
8
9         this.template = tmpl;
10         this.report = rpt;
11
12         appendClear(DOM.oils_rpt_report_editor_template_name, tmpl.name());
13         appendClear(DOM.oils_rpt_report_editor_template_creator, tmpl.owner().usrname());
14         appendClear(DOM.oils_rpt_report_editor_template_description, tmpl.description());
15
16         appendClear(DOM.oils_rpt_report_editor_cols,' | ');
17         iterate(rptObject.def.select, 
18                 function(i) {
19                         DOM.oils_rpt_report_editor_cols.appendChild(text(i.alias +' | '));
20                 }
21         );
22
23         if( rpt ) {
24                 DOM.oils_rpt_report_editor_name.value = rpt.name();
25                 DOM.oils_rpt_report_editor_description.value = rpt.description();
26         }
27
28         this.paramEditor = new oilsRptParamEditor(
29                 rptObject, DOM.oils_rpt_param_editor_tbody);
30         this.paramEditor.draw();
31
32         var obj = this;
33         oilsRptBuildFolder(
34                 'report',
35                 DOM.oils_rpt_report_editor_dest_folder,
36                 'oilsRptReportEditorFolderTree',
37                 'Report Folders',
38                 function(node) { 
39                         appendClear(DOM.oils_rpt_report_editor_selected_folder, node.folder.name());
40                         obj.selectedFolder = node; });
41
42
43         oilsRptBuildFolder(
44                 'output',
45                 DOM.oils_rpt_output_dest_folder,
46                 'oilsRptReportEditorOutputTree',
47                 'Output Folders',
48                 function(node) { 
49                         appendClear(DOM.oils_rpt_output_selected_folder, node.folder.name());
50                         obj.selectedOutputFolder = node; });
51
52
53         var obj = this;
54         DOM.oils_rpt_report_editor_save.onclick = function(){obj.save();}
55         DOM.oils_rpt_param_editor_sched_email.value = USER.email();
56         DOM.oils_rpt_param_editor_sched_start_date.value = mkYearMonDay();
57 }
58
59
60 oilsRptReportEditor.prototype.save = function() {
61         var report = new rr();
62
63         if(!this.selectedFolder) 
64                 return alert('Please provide a report folder');
65
66         report.owner( USER.id() );
67         report.template( this.template.id() );
68         report.folder( this.selectedFolder.folder.id() );
69         report.name( DOM.oils_rpt_report_editor_name.value );
70         report.description( DOM.oils_rpt_report_editor_desc.value );
71         report.recur(this.paramEditor.recur());
72         report.recurance(this.paramEditor.recurInterval());
73
74
75         /* collect the param data */
76         var data = {};
77         for( var p in this.paramEditor.params ) {
78                 var par = this.paramEditor.params[p];
79                 _debug("adding report param "+par.key+" to report data");
80                 /*
81                 if( par.relWidgetChecked )
82                         data[par.key] = par.relWidget.getValue();
83                 else
84                 */
85                 data[par.key] = par.widget.getValue();
86         }
87
88         data = js2JSON(data);
89         _debug("complete report data = "+data);
90         report.data(data);
91
92         _debug("Built report:\n"+js2JSON(report));
93
94
95         var time;
96         if( DOM.oils_rpt_report_editor_run_now.checked ) {
97                 DOM.oils_rpt_report_editor_run_now.checked = false;
98                 time = 'now';
99
100         } else {
101
102                 var dt = DOM.oils_rpt_param_editor_sched_start_date.value;
103                 if(!dt || !dt.match(/^\d{4}-\d{2}-\d{2}$/) ) {
104                         /* for now.. make this better in the future */
105                         alert('invalid start date -  YYYY-MM-DD');
106                         return;
107                 }
108                 var hour = getSelectorVal(DOM.oils_rpt_param_editor_sched_start_hour);
109                 time = dt +'T'+hour+':00';
110                 _debug("built run_time "+time);
111         }
112
113         if(!this.selectedOutputFolder) 
114                 return alert('Please provide an output folder');
115
116         var schedule = new rs();
117         schedule.folder(this.selectedOutputFolder.folder.id());
118         schedule.email(DOM.oils_rpt_param_editor_sched_email.value);
119         schedule.run_time(time);
120         schedule.runner(USER.id());
121
122         schedule.excel_format((DOM.oils_rpt_format_excel.checked) ? 't' : 'f');
123         schedule.html_format((DOM.oils_rpt_format_html.checked) ? 't' : 'f');
124         schedule.csv_format((DOM.oils_rpt_format_csv.checked) ? 't' : 'f');
125         //schedule.chart_pie((DOM.oils_rpt_format_chart_pie.checked) ? 't' : 'f');
126         schedule.chart_bar((DOM.oils_rpt_format_chart_bar.checked) ? 't' : 'f');
127         schedule.chart_line((DOM.oils_rpt_format_chart_line.checked) ? 't' : 'f');
128
129
130         debugFMObject(report);
131         debugFMObject(schedule);
132
133         //return;
134
135         var obj = this;
136         var req = new Request(OILS_RPT_CREATE_REPORT, SESSION, report, schedule );
137         req.callback(
138                 function(r) {
139                         var res = r.getResultObject();
140                         if( res && res != '0' ) {
141                                 oilsRptAlertSuccess();
142                                 oilsRptCurrentFolderManager.draw();
143                                 obj.folderWindow.draw();
144                         }
145                 }
146         );
147         req.send();
148 }
149
150