6 PROCESS logic_header.ttk;
9 templates = DBI.tie('reporter.stage2', 'id')
14 tid = CGI.param('id');
15 tmpl = templates.$tid;
20 INCLUDE header.ttk + navbar.ttk title="Report Templates";
22 IF CGI.param('action') == 'save';
24 ELSIF CGI.param('action') == 'edit';
26 ELSIF CGI.param('action') == 'run';
39 stage1 = CGI.param('stage1');
40 pub = CGI.param('publictemplate') OR 'f';
46 logme([p,CGI.param(p)]);
55 AND (CGI.param("$p1").list.grep("^$p2$").size > 0)
56 AND (CGI.param("$p1:$p2").list.grep("^$p3$").size > 0)
57 AND (CGI.param("$p1:$p2:$p3").list.grep("^$p4$").size > 0);
59 p_obj.$p1.$p2.$p3.$p4 = CGI.param(p);
62 AND (CGI.param("$p1").list.grep(p2).size > 0);
65 p_obj.$p1 = CGI.param(p);
70 params = utils.perl2JSON( p_obj );
72 logme([stage1, params, owner, pub]);
74 q = DBI.prepare( stage2_insert );
75 CALL q.execute(stage1, params, owner, pub);
77 FOR new_s2 = DBI.query("SELECT * FROM reporter.stage2_id_seq;");
78 tid = new_s2.last_value;
79 INCLUDE view_stage2 tmpl = templates.$tid;
96 params = utils.JSON2perl( tmpl.params );
98 WRAPPER html/table border=0 width='100%';
100 WRAPPER html/cell colspan=5 align='center';
101 s1_name_xpath = '/reporter/tables/table[@id="' _ params.stage1 _ '"]/label';
103 content=config.findvalue( s1_name_xpath )
104 href="stage1?id=" _ params.stage1;
105 ' :: ' _ params.templatename _ '<br>';
107 content="Create a report from this template"
108 href=CGI.url('-path', 1) _ '?action=run&id=' _ tmpl.id;
113 INCLUDE html/cell colspan=4 content="<b>Filterable Attributes:</b>";
116 core_table = params.stage1;
118 tables = params.filter.keys;
119 tables.unshift(core_table);
120 tables = tables.unique;
123 logme(['table id or link id', t]);
125 f_table = INCLUDE find_table_id id=t;
127 table = config.findnodes( "/reporter/tables/table[@id='$f_table']");
130 WRAPPER html/cell colspan=4 align='left';
133 link_xpath = '//*[@id="' _ t _ '"]';
134 dim_link = config.findnodes(link_xpath);
137 '../../fields/field[@name="' _
138 dim_link.findvalue('@field') _ '"]/label';
139 dim_link.findvalue(link_label_xpath);
144 table.findvalue( 'label' );
148 FOR f_field = params.filter.$t.keys;
149 logme([f_table,f_field]);
150 FOR f_fam = params.filter.$t.$f_field.keys;
151 logme([f_table,f_field,f_fam]);
152 f_widget = params.filter.$t.$f_field.$f_fam;
153 logme([f_table,f_field,f_fam,f_widget]);
156 field = table.findnodes( "fields/field[@name='$f_field']" );
157 fam = config.findnodes( "/reporter/widgets/widget-family[@name='$f_fam']" );
158 widget = fam.findnodes( "widget[@name='$f_widget']" );
160 INCLUDE html/cell colspan=2;
161 INCLUDE html/cell align='right' content=field.findvalue( 'label' );
162 INCLUDE html/cell align='center' content=fam.findvalue( 'label' );
163 INCLUDE html/cell align='left' content=widget.findvalue( 'label' );
170 INCLUDE html/cell colspan=5 content="<br>";
174 INCLUDE html/cell colspan=5 content="<b>Attributes Available for Output</b>";
177 tables = params.dims.keys;
178 tables.unshift(core_table);
179 tables = tables.unique;
183 f_table = INCLUDE find_table_id id=t;
185 table = config.findnodes( "/reporter/tables/table[@id='$f_table']");
186 tname = table.findvalue( "label" );
187 tdesc = table.findvalue( "desription" );
189 #NEXT IF table.findvalue('@fact-table') == 'true';
193 WRAPPER html/cell colspan=4 align='left';
195 link_xpath = '//*[@id="' _ t _ '"]';
196 dim_link = config.findnodes(link_xpath);
199 '../../fields/field[@name="' _
200 dim_link.findvalue('@field') _ '"]/label';
201 dim_link.findvalue(link_label_xpath);
210 FOR field = table.findnodes('fields/field[not(@primary) or @primary != "true"]');
211 link_test = '../../links/link[@field="' _ field.findvalue('@name') _ '"]';
212 logme(['link_test',link_test]);
213 NEXT IF field.findnodes( link_test );
215 fname = field.findvalue( "label" );
216 fdesc = field.findvalue( "desription" );
220 INCLUDE html/cell colspan=2;
221 INCLUDE html/cell align='right' content=fname;
222 INCLUDE html/cell colspan=2 align='center' content=fdesc;
233 params = utils.JSON2perl( tmpl.params );
236 WRAPPER form id="stage3_new" name="stage3_new" action="stage3" method="POST";
237 INCLUDE hidden name='stage2' value=CGI.param('id');
240 INCLUDE text name='reportname';
242 WRAPPER html/table border=0 width='100%';
244 WRAPPER html/cell colspan=4 align='center';
245 s1_name_xpath = '/reporter/tables/table[@id="' _ params.stage1 _ '"]/label';
247 content=config.findvalue( s1_name_xpath )
248 href="stage1?id=" _ params.stage1;
249 ' :: ' _ params.templatename;
254 INCLUDE html/cell colspan=4 content="<b>Filterable Attributes:</b>";
257 core_table = params.stage1;
259 tables = params.filter.keys;
260 tables.unshift(core_table);
261 tables = tables.unique;
264 f_table = INCLUDE find_table_id id=t;
266 table = config.findnodes( "/reporter/tables/table[@id='$f_table']");
268 WRAPPER html/cell colspan=3 align='left';
270 link_xpath = '//*[@id="' _ t _ '"]';
271 dim_link = config.findnodes(link_xpath);
274 '../../fields/field[@name="' _
275 dim_link.findvalue('@field') _ '"]/label';
276 dim_link.findvalue(link_label_xpath);
280 table.findvalue( 'label' );
284 FOR f_field = params.filter.$t.keys;
285 logme([f_table,f_field]);
286 FOR f_fam = params.filter.$t.$f_field.keys;
287 logme([f_table,f_field,f_fam]);
288 f_widget = params.filter.$t.$f_field.$f_fam;
289 logme([f_table,f_field,f_fam,f_widget]);
292 field = table.findnodes( "fields/field[@name='$f_field']" );
293 fam = config.findnodes( "/reporter/widgets/widget-family[@name='$f_fam']" );
294 widget = fam.findnodes( "widget[@name='$f_widget']" );
296 w_file = 'widgets/' _ fam.findvalue('@name') _ '.' _ widget.findvalue('@name');
298 INCLUDE html/cell align='right' content=field.findvalue( 'label' );
300 WRAPPER html/cell align='center';
302 classname = table.findvalue('@id');
303 fieldname = field.findvalue('@name');
304 widgetname = widget.findvalue('@name');
305 famname = fam.findvalue('@name');
307 input_prefix = "filter:$t:$fieldname:$famname:$widgetname";
309 INCLUDE $w_file widget_family=fam;
311 %]ARG!! Couldn't render widget [% $w_file %] ([% error.info %])!!![%
320 INCLUDE html/cell colspan=4 content="<br>";
324 INCLUDE html/cell colspan=4 content="<b>Attributes Available for Output</b>";
327 table = config.findnodes( "/reporter/tables/table[@id='$core_table']" );
328 classname = table.findvalue( "@id" );
329 tname = table.findvalue( "label" );
330 tdesc = table.findvalue( "desription" );
333 INCLUDE html/cell colspan=4 align='left' content=tname;
336 pkey_field = table.findnodes('fields/field[@primary = "true"]');
337 pid = pkey_field.findvalue('@name');
338 plabel = pkey_field.findvalue('label');
341 WRAPPER html/cell align='right';
342 INCLUDE checkbox checked='checked' name="output:$classname:$pid" value="include";
343 INCLUDE hidden name="xform:type:$classname:$pid" value="count_dist";
345 INCLUDE html/cell align='right' content="Per group count of $plabel";
346 INCLUDE html/cell align='center';
350 tables = params.dims.keys;
351 tables.unshift(core_table);
352 tables = tables.unique;
356 FOR f_table = tables;
358 noheader = 1 IF f_table == core_table;
359 INCLUDE show_filter_atts;
363 INCLUDE checkbox name="publicreport" value="t";
365 INCLUDE submit name="action" value="Run Now";
366 INCLUDE submit name="action" value="Schedule";
371 BLOCK show_filter_atts;
373 f_table = INCLUDE find_table_id id=t;
374 table = config.findnodes( "/reporter/tables/table[@id='$f_table']");
375 classname = table.findvalue( "@id" );
376 tname = table.findvalue( "label" );
377 tdesc = table.findvalue( "desription" );
381 WRAPPER html/cell colspan=4 align='left';
383 link_xpath = '//*[@id="' _ t _ '"]';
384 dim_link = config.findnodes(link_xpath);
387 '../../fields/field[@name="' _
388 dim_link.findvalue('@field') _ '"]/label';
389 dim_link.findvalue(link_label_xpath);
398 fields_xpath = 'fields/field[not(@primary) or @primary != "true"]';
400 FOR field = table.findnodes(fields_xpath);
401 link_test = '../../links/link[@field="' _ field.findvalue('@name') _ '"]';
402 logme(['link_test',link_test]);
403 NEXT IF field.findnodes( link_test );
405 fname = field.findvalue( "label" );
406 fid = field.findvalue( "@name" );
410 WRAPPER html/cell align='right';
411 INCLUDE checkbox name="output:$t:$fid" value="include";
413 INCLUDE html/cell align='right' content=fname;
414 WRAPPER html/cell align='center';
415 'Output Transformation: ';
416 dtype = field.findvalue('@datatype');
417 WRAPPER select name="xform:type:$t:$fid";
418 INCLUDE option value='' content='None' selected=1;
419 FOR xform = dtype_xform_map.$dtype;
420 xform_label = dtype_xforms.$xform.label;
421 IF dtype_xforms.$xform.param;
422 xform_label = "$xform_label (*)";
424 INCLUDE option value=xform content=xform_label;
428 '<small><super>*</super>Output Tranformation Parameter: </small>';
429 INCLUDE text name="xform:param:$t:$fid";