1 oilsRptSetSubClass('oilsRptReportEditor', 'oilsRptObject');
2 var oilsRptReportEditorFolderTree;
4 function oilsRptReportEditor(rptObject, folderWindow) {
5 var tmpl = rptObject.templateObject;
6 var rpt = rptObject.reportObject;
7 this.folderWindow = folderWindow;
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());
16 appendClear(DOM.oils_rpt_report_editor_cols,' | ');
17 iterate(rptObject.def.select,
20 DOM.oils_rpt_report_editor_cols.appendChild(text(i.alias +' | '));
25 oils_rpt_editor_pivot_label
26 oils_rpt_editor_pivot_data
30 iterate(rptObject.def.select,
32 if(OILS_RPT_TRANSFORMS[i.column.transform].aggregate)
37 while(DOM.oils_rpt_editor_pivot_label.getElementsByTagName('option').length > 1)
38 DOM.oils_rpt_editor_pivot_label.removeChild(DOM.oils_rpt_editor_pivot_label.lastChild);
40 while(DOM.oils_rpt_editor_pivot_data.lastChild)
41 DOM.oils_rpt_editor_pivot_data.removeChild(DOM.oils_rpt_editor_pivot_data.lastChild);
44 unHideMe(DOM.oils_rpt_editor_pivot_label_row);
45 unHideMe(DOM.oils_rpt_editor_pivot_data_row);
47 for(var i in rptObject.def.select) {
48 var col = rptObject.def.select[i];
49 if(OILS_RPT_TRANSFORMS[col.column.transform].aggregate)
50 insertSelectorVal(DOM.oils_rpt_editor_pivot_data, -1, col.alias, parseInt(i)+1);
52 insertSelectorVal(DOM.oils_rpt_editor_pivot_label, -1, col.alias, parseInt(i)+1);
56 hideMe(DOM.oils_rpt_editor_pivot_label_row);
57 hideMe(DOM.oils_rpt_editor_pivot_data_row);
62 DOM.oils_rpt_report_editor_name.value = rpt.name();
63 DOM.oils_rpt_report_editor_description.value = rpt.description();
66 this.paramEditor = new oilsRptParamEditor(
67 rptObject, DOM.oils_rpt_param_editor_tbody);
68 this.paramEditor.draw();
70 removeChildren(DOM.oils_rpt_report_editor_selected_folder);
71 removeChildren(DOM.oils_rpt_output_selected_folder);
76 DOM.oils_rpt_report_editor_dest_folder,
77 'oilsRptReportEditorFolderTree',
80 appendClear(DOM.oils_rpt_report_editor_selected_folder, node.folder.name());
81 obj.selectedFolder = node; });
86 DOM.oils_rpt_output_dest_folder,
87 'oilsRptReportEditorOutputTree',
90 appendClear(DOM.oils_rpt_output_selected_folder, node.folder.name());
91 obj.selectedOutputFolder = node; });
95 DOM.oils_rpt_report_editor_save.onclick = function(){obj.save();}
96 DOM.oils_rpt_param_editor_sched_email.value = USER.email();
97 DOM.oils_rpt_param_editor_sched_start_date.value = mkYearMonDay();
99 _debug("fleshing template:\n" + tmpl.name() + '\n' + formatJSON(tmpl.data()));
103 oilsRptReportEditor.prototype.save = function() {
104 var report = new rr();
106 if(!this.selectedFolder)
107 return alert('Please provide a report folder');
109 if(!DOM.oils_rpt_report_editor_name.value)
110 return alert('Please enter a report name');
112 report.owner( USER.id() );
113 report.template( this.template.id() );
114 report.folder( this.selectedFolder.folder.id() );
115 report.name( DOM.oils_rpt_report_editor_name.value );
116 report.description( DOM.oils_rpt_report_editor_desc.value );
117 report.recur(this.paramEditor.recur());
118 report.recurance(this.paramEditor.recurInterval());
121 /* collect the param data */
123 for( var p in this.paramEditor.params ) {
124 var par = this.paramEditor.params[p];
125 _debug("adding report param "+par.key+" to report data");
126 var val = par.widget.getValue();
128 if(!val || val.length == 0 )
129 return alertId('oils_rpt_empty_param');
131 if( typeof val == 'object') {
132 for( var i = i; i < val.length; i++ ) {
133 _debug("looking at widget value" + val[i]);
134 if( val[i] == '' || val[i] == null )
135 return alertId('oils_rpt_empty_param');
142 if(getSelectorVal(DOM.oils_rpt_editor_pivot_data)) {
143 data.__pivot_label = getSelectorVal(DOM.oils_rpt_editor_pivot_label);
144 data.__pivot_data = getSelectorVal(DOM.oils_rpt_editor_pivot_data);
148 data = js2JSON(data);
149 _debug("complete report data = "+data);
152 _debug("Built report:\n"+js2JSON(report));
156 if( DOM.oils_rpt_report_editor_run_now.checked ) {
157 DOM.oils_rpt_report_editor_run_now.checked = false;
162 var dt = DOM.oils_rpt_param_editor_sched_start_date.value;
163 if(!dt || !dt.match(/^\d{4}-\d{2}-\d{2}$/) ) {
164 /* for now.. make this better in the future */
165 alert('invalid start date - YYYY-MM-DD');
168 var hour = getSelectorVal(DOM.oils_rpt_param_editor_sched_start_hour);
169 time = dt +'T'+hour+':00';
170 _debug("built run_time "+time);
173 if(!this.selectedOutputFolder)
174 return alert('Please provide an output folder');
176 var schedule = new rs();
177 schedule.folder(this.selectedOutputFolder.folder.id());
178 schedule.email(DOM.oils_rpt_param_editor_sched_email.value);
179 schedule.run_time(time);
180 schedule.runner(USER.id());
182 schedule.excel_format((DOM.oils_rpt_format_excel.checked) ? 't' : 'f');
183 schedule.html_format((DOM.oils_rpt_format_html.checked) ? 't' : 'f');
184 schedule.csv_format((DOM.oils_rpt_format_csv.checked) ? 't' : 'f');
185 //schedule.chart_pie((DOM.oils_rpt_format_chart_pie.checked) ? 't' : 'f');
186 schedule.chart_bar((DOM.oils_rpt_format_chart_bar.checked) ? 't' : 'f');
187 schedule.chart_line((DOM.oils_rpt_format_chart_line.checked) ? 't' : 'f');
190 debugFMObject(report);
191 debugFMObject(schedule);
196 var folderReq = new Request(OILS_RPT_REPORT_EXISTS, SESSION, report);
199 if(r1.getResultObject() == 1) {
200 alertId('oils_rpt_report_exists');
203 var req = new Request(OILS_RPT_CREATE_REPORT, SESSION, report, schedule );
206 var res = r.getResultObject();
207 if(checkILSEvent(res)) {
210 if( res && res != '0' ) {
211 oilsRptAlertSuccess();
212 oilsRptCurrentFolderManager.draw();
213 obj.folderWindow.draw();