6 PROCESS logic_header.ttk;
9 templates = DBI.tie('reporter.stage2', 'id')
10 reports = DBI.tie('reporter.stage3', 'id')
16 rid = CGI.param('id');
19 tmpl = templates.$tid;
24 INCLUDE header.ttk + navbar.ttk title="Reports";
26 IF CGI.param('action') == 'Schedule';
27 PROCESS schedule_stage3;
28 ELSIF CGI.param('action') == 'Save';
30 ELSIF CGI.param('action') == 'Run Now';
32 ELSIF CGI.param('id');
42 BLOCK schedule_stage3;
43 WRAPPER form method='POST';
45 INCLUDE text name='runtime' value='yyyy-mm-dd';
48 'Optional Recurrence:';
49 INCLUDE text name='recurrence-count' value='0';
50 WRAPPER select name='recurrence-interval';
51 INCLUDE option value='days' content='Day(s)';
52 INCLUDE option value='weeks' content='Week(s)';
53 INCLUDE option value='months' content='Month(s)';
57 NEXT IF p == 'action';
58 NEXT IF p == 'runtime';
59 INCLUDE hidden name=p value=CGI.param(p);
62 INCLUDE submit name='action' value='Save';
71 stage2 = CGI.param('stage2');
72 runtime = CGI.param('runtime') OR 'now';
73 pub = CGI.param('publicreport') OR 'f';
79 logme([p,CGI.param(p)]);
91 IF p_obj.$p1.$p2.$p3.$p4.$p5.$p6.defined;
92 IF p_obj.$p1.$p2.$p3.$p4.$p5.$p6.size > 1;
93 p_obj.$p1.$p2.$p3.$p4.$p5.$p6.push(CGI.param(p));
95 tmp = [ p_obj.$p1.$p2.$p3.$p4.$p5.$p6, CGI.param(p) ];
96 p_obj.$p1.$p2.$p3.$p4.$p5.$p6 = tmp;
99 p_obj.$p1.$p2.$p3.$p4.$p5.$p6 = CGI.param(p);
104 IF p_obj.$p1.$p2.$p3.$p4.$p5.defined;
105 IF p_obj.$p1.$p2.$p3.$p4.$p5.size > 1;
106 p_obj.$p1.$p2.$p3.$p4.$p5.push(CGI.param(p));
108 tmp = [ p_obj.$p1.$p2.$p3.$p4.$p5, CGI.param(p) ];
109 p_obj.$p1.$p2.$p3.$p4.$p5 = tmp;
112 p_obj.$p1.$p2.$p3.$p4.$p5 = CGI.param(p);
117 IF p_obj.$p1.$p2.$p3.$p4.defined;
118 IF p_obj.$p1.$p2.$p3.$p4.size > 1;
119 p_obj.$p1.$p2.$p3.$p4.push(CGI.param(p));
121 tmp = [ p_obj.$p1.$p2.$p3.$p4, CGI.param(p) ];
122 p_obj.$p1.$p2.$p3.$p4 = tmp;
125 p_obj.$p1.$p2.$p3.$p4 = CGI.param(p);
130 IF p_obj.$p1.$p2.$p3.defined;
131 IF p_obj.$p1.$p2.$p3.size > 1;
132 p_obj.$p1.$p2.$p3.push(CGI.param(p));
134 tmp = [ p_obj.$p1.$p2.$p3, CGI.param(p) ];
135 p_obj.$p1.$p2.$p3 = tmp;
138 p_obj.$p1.$p2.$p3 = CGI.param(p);
143 IF p_obj.$p1.$p2.defined;
144 IF p_obj.$p1.$p2.size > 1;
145 p_obj.$p1.$p2.push(CGI.param(p));
147 tmp = [ p_obj.$p1.$p2, CGI.param(p) ];
151 p_obj.$p1.$p2 = CGI.param(p);
156 p_obj.$p = CGI.param(p);
161 params = utils.perl2JSON( p_obj );
163 recurrence = '0 sec';
164 IF CGI.param('recurrence-count') > 0;
165 recurrence = CGI.param('recurrence-count') _ ' ' _ CGI.param('recurrence-interval');
168 logme([stage2, params, owner, pub]);
170 q = DBI.prepare( stage3_insert );
171 CALL q.execute(stage2, params, owner, pub, runtime, recurrence);
173 FOR new_s3 = DBI.query("SELECT * FROM reporter.stage3_id_seq;");
174 rid = new_s3.last_value;
177 tmpl = templates.$tid;
187 params = utils.JSON2perl( rpt.params );
188 s2_params = utils.JSON2perl( tmpl.params );
192 WRAPPER html/table style="border-collapse:collapse";
194 INCLUDE html/cell content="<b>Report Name</b>" style="border:solid gray 1px;";
195 INCLUDE html/cell content=params.reportname style="border:solid gray 1px;";
198 INCLUDE html/cell content="<b>Based on Template</b>" style="border:solid gray 1px;";
199 INCLUDE html/cell content=s2_params.templatename style="border:solid gray 1px;";
202 INCLUDE html/cell content="<b>Creation Time</b>" style="border:solid gray 1px;";
203 INCLUDE html/cell content=rpt.create_date style="border:solid gray 1px;";
206 INCLUDE html/cell content="<b>Scheduled Run Time</b>" style="border:solid gray 1px;";
207 INCLUDE html/cell content=rpt.runtime style="border:solid gray 1px;";
210 INCLUDE html/cell content="<b>Recurrence Interval</b>" style="border:solid gray 1px;";
211 INCLUDE html/cell content=rpt.recurrence style="border:solid gray 1px;";
218 type_map = { 'csv' => 'csv', 'excel' => 'xls', 'html' => 'html' };
221 '<b>Report Runs:</b>';
222 run_q = DBI.prepare("SELECT * FROM reporter.output WHERE stage3 = ? ORDER BY queue_time DESC");
223 FOR run = run_q.execute(rpt.id);
224 WRAPPER html/table style="border-collapse:collapse";
226 INCLUDE html/cell content="<b>Current State</b>" style="border:solid gray 1px;" width="20%";
227 WRAPPER html/cell style="border:solid gray 1px;";
229 IF run.state == 'complete';
231 FOR f = params.output_format.list;
232 h = tmpl.stage1 _ '/' _ tmpl.id _
233 '/' _ rpt.id _ '/' _ run.id _
234 '/report-data.' _ type_map.$f;
235 link(content=f, href=h);
244 INCLUDE html/cell content="<b>Queue Time</b>" style="border:solid gray 1px;";
245 INCLUDE html/cell content=run.queue_time style="border:solid gray 1px;";
249 INCLUDE html/cell content="<b>Run Time</b>" style="border:solid gray 1px;";
250 INCLUDE html/cell content=run.run_time style="border:solid gray 1px;";
253 IF run.complete_time;
255 INCLUDE html/cell content="<b>Complete Time</b>" style="border:solid gray 1px;";
256 INCLUDE html/cell content=run.complete_time style="border:solid gray 1px;";
261 INCLUDE html/cell content="<b>Query</b>" style="border:solid gray 1px;";
262 INCLUDE html/cell content=run.query style="border:solid gray 1px;";
267 INCLUDE html/cell content="<b>Error</b>" style="border:solid gray 1px;";
268 INCLUDE html/cell content=run.error style="border:solid gray 1px;";
273 INCLUDE html/cell content="<b>Error Time</b>" style="border:solid gray 1px;";
274 INCLUDE html/cell content=run.error_time style="border:solid gray 1px;";