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 tid = new_s3.last_value;
175 INCLUDE view_stage3 rpt = reports.$tid;
184 params = utils.JSON2perl( rpt.params );
185 s2_params = utils.JSON2perl( tmpl.params );
189 WRAPPER html/table style="border-collapse:collapse";
191 INCLUDE html/cell content="<b>Report Name</b>" style="border:solid gray 1px;";
192 INCLUDE html/cell content=params.reportname style="border:solid gray 1px;";
195 INCLUDE html/cell content="<b>Based on Template</b>" style="border:solid gray 1px;";
196 INCLUDE html/cell content=s2_params.templatename style="border:solid gray 1px;";
199 INCLUDE html/cell content="<b>Creation Time</b>" style="border:solid gray 1px;";
200 INCLUDE html/cell content=rpt.create_date style="border:solid gray 1px;";
203 INCLUDE html/cell content="<b>Scheduled Run Time</b>" style="border:solid gray 1px;";
204 INCLUDE html/cell content=rpt.runtime style="border:solid gray 1px;";
207 INCLUDE html/cell content="<b>Recurrence Interval</b>" style="border:solid gray 1px;";
208 INCLUDE html/cell content=rpt.recurrence style="border:solid gray 1px;";
215 type_map = { 'csv' => 'csv', 'excel' => 'xls', 'html' => 'html' };
218 '<b>Report Runs:</b>';
219 run_q = DBI.prepare("SELECT * FROM reporter.output WHERE stage3 = ? ORDER BY queue_time DESC");
220 FOR run = run_q.execute(rpt.id);
221 WRAPPER html/table style="border-collapse:collapse";
223 INCLUDE html/cell content="<b>Current State</b>" style="border:solid gray 1px;" width="20%";
224 WRAPPER html/cell style="border:solid gray 1px;";
226 IF run.state == 'complete';
228 FOR f = params.output_format.list;
229 h = tmpl.stage1 _ '/' _ tmpl.id _
230 '/' _ rpt.id _ '/' _ run.id _
231 '/report-data.' _ type_map.$f;
232 link(content=f, href=h);
241 INCLUDE html/cell content="<b>Queue Time</b>" style="border:solid gray 1px;";
242 INCLUDE html/cell content=run.queue_time style="border:solid gray 1px;";
246 INCLUDE html/cell content="<b>Run Time</b>" style="border:solid gray 1px;";
247 INCLUDE html/cell content=run.run_time style="border:solid gray 1px;";
250 IF run.complete_time;
252 INCLUDE html/cell content="<b>Complete Time</b>" style="border:solid gray 1px;";
253 INCLUDE html/cell content=run.complete_time style="border:solid gray 1px;";
258 INCLUDE html/cell content="<b>Query</b>" style="border:solid gray 1px;";
259 INCLUDE html/cell content=run.query style="border:solid gray 1px;";
264 INCLUDE html/cell content="<b>Error</b>" style="border:solid gray 1px;";
265 INCLUDE html/cell content=run.error style="border:solid gray 1px;";
270 INCLUDE html/cell content="<b>Error Time</b>" style="border:solid gray 1px;";
271 INCLUDE html/cell content=run.error_time style="border:solid gray 1px;";