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