4 WRAPPER header.ttk + navbar.ttk title="Report Templates";
8 PROCESS logic_header.ttk;
14 PROCESS select_sorter.js;
16 templates = DBI.tie('reporter.stage2', 'id')
21 tid = CGI.param('id');
22 tmpl = templates.$tid;
25 IF CGI.param('action') == 'save';
27 ELSIF CGI.param('action') == 'edit';
29 ELSIF CGI.param('action') == 'run';
42 stage1 = CGI.param('stage1');
43 pub = CGI.param('publictemplate') OR 'f';
49 logme([p,CGI.param(p)]);
58 AND (CGI.param("$p1").list.grep("^$p2$").size > 0)
59 AND (CGI.param("$p1:$p2").list.grep("^$p3$").size > 0)
60 AND (CGI.param("$p1:$p2:$p3").list.grep("^$p4$").size > 0);
62 p_obj.$p1.$p2.$p3.$p4 = CGI.param(p);
65 AND (CGI.param("$p1").list.grep(p2).size > 0);
68 p_obj.$p1 = CGI.param(p);
73 params = utils.perl2JSON( p_obj );
75 logme([stage1, params, owner, pub]);
77 q = DBI.prepare( stage2_insert );
78 CALL q.execute(stage1, params, owner, pub);
80 FOR new_s2 = DBI.query("SELECT * FROM reporter.stage2_id_seq;");
81 tid = new_s2.last_value;
82 INCLUDE view_stage2 tmpl = templates.$tid;
99 params = utils.JSON2perl( tmpl.params );
101 WRAPPER html/table border=0 width='100%';
103 WRAPPER html/cell colspan=5 align='center';
104 s1_name_xpath = '/reporter/tables/table[@id="' _ params.stage1 _ '"]/label';
106 content=config.findvalue( s1_name_xpath )
107 href="stage1?id=" _ params.stage1;
108 ' :: ' _ params.templatename _ '<br>';
110 content="Create a report from this template"
111 href=CGI.url('-path', 1) _ '?action=run&id=' _ tmpl.id;
116 INCLUDE html/cell colspan=4 content="<b>Filterable Attributes:</b>";
119 core_table = params.stage1;
121 tables = params.filter.keys;
122 tables.unshift(core_table);
123 tables = tables.unique;
126 logme(['table id or link id', t]);
128 f_table = INCLUDE find_table_id id=t;
130 table = config.findnodes( "/reporter/tables/table[@id='$f_table']");
133 WRAPPER html/cell colspan=4 align='left';
136 link_xpath = '//*[@id="' _ t _ '"]';
137 dim_link = config.findnodes(link_xpath);
140 '../../fields/field[@name="' _
141 dim_link.findvalue('@field') _ '"]/label';
142 dim_link.findvalue(link_label_xpath);
147 table.findvalue( 'label' );
151 FOR f_field = params.filter.$t.keys;
152 logme([f_table,f_field]);
153 FOR f_fam = params.filter.$t.$f_field.keys;
154 logme([f_table,f_field,f_fam]);
155 f_widget = params.filter.$t.$f_field.$f_fam;
156 logme([f_table,f_field,f_fam,f_widget]);
159 field = table.findnodes( "fields/field[@name='$f_field']" );
160 fam = config.findnodes( "/reporter/widgets/widget-family[@name='$f_fam']" );
161 widget = fam.findnodes( "widget[@name='$f_widget']" );
163 INCLUDE html/cell colspan=2;
164 INCLUDE html/cell align='right' content=field.findvalue( 'label' );
165 INCLUDE html/cell align='center' content=fam.findvalue( 'label' );
166 INCLUDE html/cell align='left' content=widget.findvalue( 'label' );
173 INCLUDE html/cell colspan=5 content="<br>";
177 INCLUDE html/cell colspan=5 content="<b>Attributes Available for Output</b>";
180 tables = params.dims.keys;
181 tables.unshift(core_table);
182 tables = tables.unique;
186 f_table = INCLUDE find_table_id id=t;
188 table = config.findnodes( "/reporter/tables/table[@id='$f_table']");
189 tname = table.findvalue( "label" );
190 tdesc = table.findvalue( "desription" );
192 #NEXT IF table.findvalue('@fact-table') == 'true';
196 WRAPPER html/cell colspan=4 align='left';
198 link_xpath = '//*[@id="' _ t _ '"]';
199 dim_link = config.findnodes(link_xpath);
202 '../../fields/field[@name="' _
203 dim_link.findvalue('@field') _ '"]/label';
204 dim_link.findvalue(link_label_xpath);
213 FOR field = table.findnodes('fields/field[not(@primary) or @primary != "true"]');
214 link_test = '../../links/link[@field="' _ field.findvalue('@name') _ '"]';
215 logme(['link_test',link_test]);
216 NEXT IF field.findnodes( link_test );
218 fname = field.findvalue( "label" );
219 fdesc = field.findvalue( "desription" );
223 INCLUDE html/cell colspan=2;
224 INCLUDE html/cell align='right' content=fname;
225 INCLUDE html/cell colspan=2 align='center' content=fdesc;
236 params = utils.JSON2perl( tmpl.params );
239 <script language="javascript">
245 WRAPPER html/table width="100%";
247 WRAPPER html/cell align='center';
248 s1_name_xpath = '/reporter/tables/table[@id="' _ params.stage1 _ '"]/label';
250 content=config.findvalue( s1_name_xpath )
251 href="stage1?id=" _ params.stage1;
252 ' :: ' _ params.templatename;
259 WRAPPER form id="stage3_new" name="stage3_new" action="stage3" method="POST";
260 INCLUDE hidden name='stage2' value=CGI.param('id');
262 '<br/><center><b>Report Name:</b>';
263 INCLUDE text name='reportname' size="50";
264 '</center><br/><br/>';
266 WRAPPER html/table width="100%";
267 WRAPPER html/row style="border-top: solid black 2px;";
268 INCLUDE html/cell colspan=2 content='<b>Output and Sort Order</b>' style="border-top: solid black 2px;";
269 INCLUDE html/cell colspan=2 content='<b>Output Formats</b>' align="center" style="border-top: solid black 2px;";
272 WRAPPER html/cell rowspan=3 width="25%";
273 INCLUDE select multi=1 size=5 id='output_order' name='output_order';
276 INCLUDE anchor href='javascript:void(0);' content='Up' onclick="Widget.Select.moveSelectedOptionsUp('output_order')";
279 WRAPPER html/cell align="right";
280 INCLUDE checkbox name='output_format' value='csv';
282 INCLUDE html/cell content="CSV" align="left";
286 INCLUDE anchor href='javascript:void(0);' content='Down' onclick="Widget.Select.moveSelectedOptionsDown('output_order')";
289 WRAPPER html/cell align="right";
290 INCLUDE checkbox name='output_format' value='excel';
292 INCLUDE html/cell content="Excel" align="left";
296 WRAPPER html/cell align="right";
297 INCLUDE checkbox name='output_format' value='html';
299 INCLUDE html/cell content="HTML" align="left";
305 WRAPPER html/table border=0 width='100%';
307 INCLUDE html/cell colspan=4 content="<b>Filterable Attributes</b><br/><br/>" style="border-top: solid black 2px;";
310 core_table = params.stage1;
312 tables = params.filter.keys;
313 tables.unshift(core_table) IF tables.grep("^$core_table$");
314 tables = tables.unique;
317 NEXT UNLESS params.filter.$t.keys;
318 f_table = INCLUDE find_table_id id=t;
319 table = config.findnodes( "/reporter/tables/table[@id='$f_table']");
321 WRAPPER html/cell colspan=3 align='center' style="border: solid black 1px; background: lightgray;";
323 link_xpath = '//*[@id="' _ t _ '"]';
324 dim_link = config.findnodes(link_xpath);
327 '../../fields/field[@name="' _
328 dim_link.findvalue('@field') _ '"]/label';
329 dim_link.findvalue(link_label_xpath);
333 table.findvalue( 'label' );
337 FOR f_field = params.filter.$t.keys;
338 logme([f_table,f_field]);
339 FOR f_fam = params.filter.$t.$f_field.keys;
340 logme([f_table,f_field,f_fam]);
341 f_widget = params.filter.$t.$f_field.$f_fam;
342 logme([f_table,f_field,f_fam,f_widget]);
345 field = table.findnodes( "fields/field[@name='$f_field']" );
346 fam = config.findnodes( "/reporter/widgets/widget-family[@name='$f_fam']" );
347 widget = fam.findnodes( "widget[@name='$f_widget']" );
349 w_file = 'widgets/' _ fam.findvalue('@name') _ '.' _ widget.findvalue('@name');
351 INCLUDE html/cell align='right' content=field.findvalue( 'label' );
353 WRAPPER html/cell align='center';
355 classname = table.findvalue('@id');
356 fieldname = field.findvalue('@name');
357 widgetname = widget.findvalue('@name');
358 famname = fam.findvalue('@name');
360 input_prefix = "filter:$t:$fieldname:$famname:$widgetname";
362 INCLUDE $w_file widget_family=fam;
364 %]ARG!! Couldn't render widget [% $w_file %] ([% error.info %])!!![%
373 INCLUDE html/cell colspan=4 content="<br>";
377 INCLUDE html/cell colspan=4 content="<b>Attributes Available for Output</b><br/><br/>" style="border-top: solid black 2px;";
380 table = config.findnodes( "/reporter/tables/table[@id='$core_table']" );
381 classname = table.findvalue( "@id" );
382 tname = table.findvalue( "label" );
383 tdesc = table.findvalue( "desription" );
386 INCLUDE html/cell colspan=4 align='center' content=tname style="border: solid black 1px; background: lightgray;";
389 pkey_field = table.findnodes('fields/field[@primary = "true"]');
390 pid = pkey_field.findvalue('@name');
391 plabel = pkey_field.findvalue('label');
394 WRAPPER html/cell align='right';
395 INCLUDE checkbox checked='checked' name="output:$classname:$pid" value="include" onclick="field_add_remove(this)";
396 INCLUDE hidden name="xform:type:$classname:$pid" value="count_dist";
398 <script language="javascript">
399 outputs['[% "output:$classname:$pid" %]'] = '[% "Per group count of $plabel" %]';
400 Widget.Select.addOption('output_order','[% "output:$classname:$pid" %]', '[% "Per group count of $plabel" %]');
404 INCLUDE html/cell align='right' content="Per group count of $plabel";
405 INCLUDE html/cell align='center';
409 tables = params.dims.keys;
410 tables.unshift(core_table);
411 tables = tables.unique;
415 FOR f_table = tables;
417 noheader = 1 IF f_table == core_table;
418 INCLUDE show_filter_atts;
420 INCLUDE html/cell colspan=4 content="<br/><br/>";
426 INCLUDE checkbox name="publicreport" value="t";
428 INCLUDE submit name="action" value="Run Now" onclick="Widget.Select.selectAll('output_order');this.form.submit();";
429 INCLUDE submit name="action" value="Schedule" onclick="Widget.Select.selectAll('output_order');this.form.submit();";
434 BLOCK show_filter_atts;
436 f_table = INCLUDE find_table_id id=t;
437 table = config.findnodes( "/reporter/tables/table[@id='$f_table']");
438 classname = table.findvalue( "@id" );
439 tname = table.findvalue( "label" );
440 tdesc = table.findvalue( "desription" );
444 WRAPPER html/cell colspan=4 align='center' style="border: solid black 1px; background: lightgray;";
446 link_xpath = '//*[@id="' _ t _ '"]';
447 dim_link = config.findnodes(link_xpath);
450 '../../fields/field[@name="' _
451 dim_link.findvalue('@field') _ '"]/label';
452 dim_link.findvalue(link_label_xpath);
461 fields_xpath = 'fields/field[not(@primary) or @primary != "true"]';
466 FOR field = table.findnodes(fields_xpath);
467 link_test = '../../links/link[@field="' _ field.findvalue('@name') _ '"]';
468 logme(['link_test',link_test]);
469 NEXT IF field.findnodes( link_test );
471 fname = field.findvalue( "label" );
472 fid = field.findvalue( "@name" );
476 bg_color = 'lightcyan';
481 WRAPPER html/cell align='right' col=bg_color;
482 INCLUDE checkbox name="output:$t:$fid" value="include" onclick="field_add_remove(this)";
484 <script language="javascript">
485 outputs['[% "output:$t:$fid" %]'] = '[% fname %]';
490 INCLUDE html/cell align='right' content=fname col=bg_color;
491 WRAPPER html/cell align='right' col=bg_color;
492 'Output Transformation: ';
493 dtype = field.findvalue('@datatype');
494 WRAPPER select name="xform:type:$t:$fid";
495 INCLUDE option value='' content='None' selected=1;
496 FOR xform = dtype_xform_map.$dtype;
497 xform_label = dtype_xforms.$xform.label;
498 IF dtype_xforms.$xform.param;
499 xform_label = "$xform_label (*)";
501 INCLUDE option value=xform content=xform_label;
505 '<small><super>*</super>Output Tranformation Parameter: </small>';
506 INCLUDE text name="xform:param:$t:$fid";