6 PROCESS logic_header.ttk;
9 templates = DBI.tie('reporter.stage2', 'id')
10 reports = DBI.tie('reporter.stage3', 'id')
11 output = DBI.tie('reporter.output', 'id')
16 IF CGI.param('output');
17 oid = CGI.param('output');
24 tmpl = templates.$tid;
28 rid = CGI.param('id');
31 tmpl = templates.$tid;
36 INCLUDE header.ttk + navbar.ttk title="Reports";
38 IF CGI.param('action') == 'Schedule';
39 PROCESS schedule_stage3;
40 ELSIF CGI.param('action') == 'Save';
42 ELSIF CGI.param('action') == 'delete_stage3';
43 PROCESS delete_stage3;
44 ELSIF CGI.param('action') == 'delete_output';
45 PROCESS delete_output;
46 ELSIF CGI.param('action') == 'rerun';
48 ELSIF CGI.param('action') == 'Run Now';
50 ELSIF CGI.param('id');
60 BLOCK schedule_stage3;
61 WRAPPER form method='POST';
63 INCLUDE text name='runtime' value='yyyy-mm-dd';
66 'Optional Recurrence:';
67 INCLUDE text name='recurrence-count' value='0';
68 WRAPPER select name='recurrence-interval';
69 INCLUDE option value='days' content='Day(s)';
70 INCLUDE option value='weeks' content='Week(s)';
71 INCLUDE option value='months' content='Month(s)';
75 NEXT IF p == 'action';
76 NEXT IF p == 'runtime';
77 INCLUDE hidden name=p value=CGI.param(p);
80 INCLUDE submit name='action' value='Save';
89 stage2 = CGI.param('stage2');
90 runtime = CGI.param('runtime') OR 'now';
91 pub = CGI.param('publicreport') OR 'f';
97 logme([p,CGI.param(p)]);
109 IF p_obj.$p1.$p2.$p3.$p4.$p5.$p6.defined;
110 IF p_obj.$p1.$p2.$p3.$p4.$p5.$p6.size > 1;
111 p_obj.$p1.$p2.$p3.$p4.$p5.$p6.push(CGI.param(p));
113 tmp = [ p_obj.$p1.$p2.$p3.$p4.$p5.$p6, CGI.param(p) ];
114 p_obj.$p1.$p2.$p3.$p4.$p5.$p6 = tmp;
117 p_obj.$p1.$p2.$p3.$p4.$p5.$p6 = CGI.param(p);
122 IF p_obj.$p1.$p2.$p3.$p4.$p5.defined;
123 IF p_obj.$p1.$p2.$p3.$p4.$p5.size > 1;
124 p_obj.$p1.$p2.$p3.$p4.$p5.push(CGI.param(p));
126 tmp = [ p_obj.$p1.$p2.$p3.$p4.$p5, CGI.param(p) ];
127 p_obj.$p1.$p2.$p3.$p4.$p5 = tmp;
130 p_obj.$p1.$p2.$p3.$p4.$p5 = CGI.param(p);
135 IF p_obj.$p1.$p2.$p3.$p4.defined;
136 IF p_obj.$p1.$p2.$p3.$p4.size > 1;
137 p_obj.$p1.$p2.$p3.$p4.push(CGI.param(p));
139 tmp = [ p_obj.$p1.$p2.$p3.$p4, CGI.param(p) ];
140 p_obj.$p1.$p2.$p3.$p4 = tmp;
143 p_obj.$p1.$p2.$p3.$p4 = CGI.param(p);
148 IF p_obj.$p1.$p2.$p3.defined;
149 IF p_obj.$p1.$p2.$p3.size > 1;
150 p_obj.$p1.$p2.$p3.push(CGI.param(p));
152 tmp = [ p_obj.$p1.$p2.$p3, CGI.param(p) ];
153 p_obj.$p1.$p2.$p3 = tmp;
156 p_obj.$p1.$p2.$p3 = CGI.param(p);
161 IF p_obj.$p1.$p2.defined;
162 IF p_obj.$p1.$p2.size > 1;
163 p_obj.$p1.$p2.push(CGI.param(p));
165 tmp = [ p_obj.$p1.$p2, CGI.param(p) ];
169 p_obj.$p1.$p2 = CGI.param(p);
174 p_obj.$p = CGI.param(p);
179 params = utils.perl2JSON( p_obj );
181 recurrence = '0 sec';
182 IF CGI.param('recurrence-count') > 0;
183 recurrence = CGI.param('recurrence-count') _ ' ' _ CGI.param('recurrence-interval');
186 logme([stage2, params, owner, pub]);
188 q = DBI.prepare( stage3_insert );
189 CALL q.execute(stage2, params, owner, pub, runtime, recurrence);
191 FOR new_s3 = DBI.query("SELECT * FROM reporter.stage3_id_seq;");
192 rid = new_s3.last_value;
195 tmpl = templates.$tid;
201 q = DBI.prepare( 'DELETE FROM reporter.stage3 WHERE id = ?' );
202 CALL q.execute(rpt.id);
206 q = DBI.prepare( 'DELETE FROM reporter.output WHERE id = ?' );
207 CALL q.execute(out.id);
212 q = DBI.prepare( 'UPDATE reporter.stage3 SET rerun = TRUE WHERE id = ?' );
213 CALL q.execute(rpt.id);
219 params = utils.JSON2perl( rpt.params );
220 s2_params = utils.JSON2perl( tmpl.params );
224 WRAPPER html/table style="border-collapse:collapse";
226 INCLUDE html/cell content="<b>Report Name</b>" style="border:solid gray 1px;";
227 INCLUDE html/cell content=params.reportname style="border:solid gray 1px;";
230 INCLUDE html/cell content="<b>Based on Template</b>" style="border:solid gray 1px;";
231 INCLUDE html/cell content=s2_params.templatename style="border:solid gray 1px;";
234 INCLUDE html/cell content="<b>Creation Time</b>" style="border:solid gray 1px;";
235 INCLUDE html/cell content=rpt.create_date style="border:solid gray 1px;";
238 INCLUDE html/cell content="<b>Scheduled Run Time</b>" style="border:solid gray 1px;";
239 INCLUDE html/cell content=rpt.runtime style="border:solid gray 1px;";
242 INCLUDE html/cell content="<b>Recurrence Interval</b>" style="border:solid gray 1px;";
243 INCLUDE html/cell content=rpt.recurrence style="border:solid gray 1px;";
246 INCLUDE html/cell content="<b>Actions</b>" style="border:solid gray 1px;";
247 WRAPPER html/cell style="border:solid gray 1px;";
248 INCLUDE anchor content='Refresh' href=CGI.url('-path', 1) _ '?id=' _ rpt.id;
249 ' ';
250 INCLUDE anchor content='Run again' href=CGI.url('-path', 1) _ '?action=rerun&id=' _ rpt.id;
251 ' ';
252 INCLUDE anchor content='Delete' href=CGI.url('-path', 1) _ '?action=delete_stage3&id=' _ rpt.id;
253 ' ';
261 type_map = { 'csv' => 'csv', 'excel' => 'xls', 'html' => 'html' };
264 '<b>Report Runs:</b>';
265 run_q = DBI.prepare("SELECT * FROM reporter.output WHERE stage3 = ? ORDER BY queue_time DESC");
266 FOR run = run_q.execute(rpt.id);
267 WRAPPER html/table style="border-collapse:collapse";
269 INCLUDE html/cell content="<b>Current State</b>" style="border:solid gray 1px;" width="20%";
270 WRAPPER html/cell style="border:solid gray 1px;";
272 IF run.state == 'complete';
274 FOR f = params.output_format.list;
275 h = tmpl.stage1 _ '/' _ tmpl.id _
276 '/' _ rpt.id _ '/' _ run.id _
277 '/report-data.' _ type_map.$f;
278 link(content=f, href=h);
287 INCLUDE html/cell content="<b>Queue Time</b>" style="border:solid gray 1px;";
288 INCLUDE html/cell content=run.queue_time style="border:solid gray 1px;";
292 INCLUDE html/cell content="<b>Run Time</b>" style="border:solid gray 1px;";
293 INCLUDE html/cell content=run.run_time style="border:solid gray 1px;";
296 IF run.complete_time;
298 INCLUDE html/cell content="<b>Complete Time</b>" style="border:solid gray 1px;";
299 INCLUDE html/cell content=run.complete_time style="border:solid gray 1px;";
304 INCLUDE html/cell content="<b>Query</b>" style="border:solid gray 1px;";
305 INCLUDE html/cell content=run.query style="border:solid gray 1px;";
310 INCLUDE html/cell content="<b>Error</b>" style="border:solid gray 1px;";
311 INCLUDE html/cell content=run.error style="border:solid gray 1px;";
316 INCLUDE html/cell content="<b>Error Time</b>" style="border:solid gray 1px;";
317 INCLUDE html/cell content=run.error_time style="border:solid gray 1px;";
320 IF run.complete_time || run.error_time;
322 INCLUDE html/cell content="<b>Actions</b>" style="border:solid gray 1px;";
323 WRAPPER html/cell style="border:solid gray 1px;";
324 INCLUDE anchor content='Delete' href=CGI.url('-path', 1) _ '?action=delete_output&output=' _ run.id;
325 ' ';