4 WRAPPER header.ttk + navbar.ttk title="Report Templates";
13 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">
242 function send_it (f) {
243 var bad_filters = [];
244 for (var i in filters) {
245 if (!f.elements[i].value) {
246 bad_filters.push(filters[i]);
249 if (bad_filters.length) {
251 for (var i in bad_filters)
252 fstring = fstring + "\n\t" + bad_filters[i];
254 alert('You must choose a value for these filters or settings:\n' + fstring);
258 Widget.Select.selectAll('output_order');
265 WRAPPER html/table width="100%";
267 WRAPPER html/cell align='center';
268 s1_name_xpath = '/reporter/tables/table[@id="' _ params.stage1 _ '"]/label';
270 content=config.findvalue( s1_name_xpath )
271 href="stage1?id=" _ params.stage1;
272 ' :: ' _ params.templatename;
279 WRAPPER form id="stage3_new" name="stage3_new" action="stage3" onsubmit="return send_it(this);" method="POST";
280 INCLUDE hidden name='stage2' value=CGI.param('id');
282 '<br/><center><b>Report Name:</b>';
283 INCLUDE text name='reportname' size="50";
284 '</center><br/><br/>';
285 '<script language="javascript">filters["reportname"] = "Report Name";</script>';
287 WRAPPER html/table width="100%";
288 WRAPPER html/row style="border-top: solid black 2px;";
289 INCLUDE html/cell colspan=2 content='<b>Output and Sort Order</b>' style="border-top: solid black 2px;";
290 INCLUDE html/cell colspan=2 content='<b>Output Formats</b>' align="center" style="border-top: solid black 2px;";
293 WRAPPER html/cell rowspan=3 width="25%";
294 INCLUDE select multi=1 size=5 id='output_order' name='output_order';
297 INCLUDE anchor href='javascript:void(0);' content='Up' onclick="Widget.Select.moveSelectedOptionsUp('output_order')";
300 WRAPPER html/cell align="right";
301 INCLUDE checkbox name='output_format' value='csv' checked='checked';
303 INCLUDE html/cell content="CSV" align="left";
307 INCLUDE anchor href='javascript:void(0);' content='Down' onclick="Widget.Select.moveSelectedOptionsDown('output_order')";
310 WRAPPER html/cell align="right";
311 INCLUDE checkbox name='output_format' value='excel' checked='checked';
313 INCLUDE html/cell content="Excel" align="left";
317 WRAPPER html/cell align="right" valign='top';
318 INCLUDE checkbox name='output_format' value='html' checked='checked';
320 WRAPPER html/cell align="left";
323 WRAPPER html/row + html/cell colspan=2;
324 "<i>Graph types</i>";
328 INCLUDE checkbox name='html_graph_type' value='bar' checked=1;
330 INCLUDE html/cell content='Bar';
334 INCLUDE checkbox name='html_graph_type' value='pie' checked=1;
336 INCLUDE html/cell content='Pie';
340 INCLUDE checkbox name='html_graph_type' value='line';
342 INCLUDE html/cell content='Line';
349 '<br/><br/><b>Pivot Column:</b> ';
350 WRAPPER select id='pivot_col' name='pivot_col';
351 INCLUDE option value='' content='No Pivot';
355 WRAPPER html/table border=0 width='100%';
357 INCLUDE html/cell colspan=4 content="<b>Filterable Attributes</b><br/><br/>" style="border-top: solid black 2px;";
360 core_table = params.stage1;
362 tables = params.filter.keys;
363 tables.unshift(core_table) IF tables.grep("^$core_table$");
364 tables = tables.unique;
367 NEXT UNLESS params.filter.$t.keys;
368 f_table = INCLUDE find_table_id id=t;
369 table = config.findnodes( "/reporter/tables/table[@id='$f_table']");
371 table_label = table.findvalue( 'label' );
374 WRAPPER html/cell colspan=3 align='center' style="border: solid black 1px; background: lightgray;";
376 link_xpath = '//*[@id="' _ t _ '"]';
377 dim_link = config.findnodes(link_xpath);
380 '../../fields/field[@name="' _
381 dim_link.findvalue('@field') _ '"]/label';
383 table_label = table_label _ ' -- ' _ dim_link.findvalue(link_label_xpath);
389 FOR f_field = params.filter.$t.keys;
390 logme([f_table,f_field]);
391 FOR f_fam = params.filter.$t.$f_field.keys;
392 logme([f_table,f_field,f_fam]);
393 f_widget = params.filter.$t.$f_field.$f_fam;
394 logme([f_table,f_field,f_fam,f_widget]);
397 field = table.findnodes( "fields/field[@name='$f_field']" );
398 fam = config.findnodes( "/reporter/widgets/widget-family[@name='$f_fam']" );
399 widget = fam.findnodes( "widget[@name='$f_widget']" );
401 w_file = 'widgets/' _ fam.findvalue('@name') _ '.' _ widget.findvalue('@name');
402 INCLUDE html/cell align='left' style="padding-left: 50px;" content=field.findvalue( 'label' );
404 WRAPPER html/cell align='left';
406 classname = table.findvalue('@id');
407 fieldname = field.findvalue('@name');
408 widgetname = widget.findvalue('@name');
409 famname = fam.findvalue('@name');
412 input_prefix = "filter:$t:$fieldname:$famname:$widgetname";
414 INCLUDE $w_file widget_family=fam;
416 %]ARG!! Couldn't render widget [% $w_file %] ([% error.info %])!!![%
425 INCLUDE html/cell colspan=4 content="<br>";
429 INCLUDE html/cell colspan=4 content="<b>Attributes Available for Output</b><br/><br/>" style="border-top: solid black 2px;";
432 table = config.findnodes( "/reporter/tables/table[@id='$core_table']" );
433 classname = table.findvalue( "@id" );
434 tname = table.findvalue( "label" );
435 tdesc = table.findvalue( "desription" );
438 INCLUDE html/cell colspan=4 align='center' content=tname style="border: solid black 1px; background: lightgray;";
441 pkey_field = table.findnodes('fields/field[@primary = "true"]');
442 pid = pkey_field.findvalue('@name');
443 plabel = pkey_field.findvalue('label');
446 WRAPPER html/cell align='left' style="padding-left: 50px;";
447 INCLUDE checkbox checked='checked' name="output:$classname:$pid" value="include" onclick="field_add_remove(this)";
448 INCLUDE hidden name="xform:type:$classname:$pid" value="count_dist";
450 <script language="javascript">
451 outputs['[% "output:$classname:$pid" %]'] = '[% "Per group count of $plabel" %]';
452 Widget.Select.addOption('output_order','[% "output:$classname:$pid" %]', '[% "Per group count of $plabel" %]');
455 "Per group count of $plabel<br/><br/>";
457 INCLUDE html/cell align='center';
461 tables = params.dims.keys;
462 tables.unshift(core_table);
463 tables = tables.unique;
467 FOR f_table = tables;
469 noheader = 1 IF f_table == core_table;
470 INCLUDE show_filter_atts;
472 INCLUDE html/cell colspan=4 content="<br/><br/>";
478 INCLUDE checkbox name="publicreport" value="t";
480 INCLUDE submit name="action" value="Run Now";
481 INCLUDE submit name="action" value="Schedule";
486 BLOCK show_filter_atts;
488 f_table = INCLUDE find_table_id id=t;
489 table = config.findnodes( "/reporter/tables/table[@id='$f_table']");
490 classname = table.findvalue( "@id" );
491 tname = table.findvalue( "label" );
492 tdesc = table.findvalue( "desription" );
496 WRAPPER html/cell colspan=4 align='center' style="border: solid black 1px; background: lightgray;";
498 link_xpath = '//*[@id="' _ t _ '"]';
499 dim_link = config.findnodes(link_xpath);
502 '../../fields/field[@name="' _
503 dim_link.findvalue('@field') _ '"]/label';
504 dim_link.findvalue(link_label_xpath);
513 fields_xpath = 'fields/field[not(@primary) or @primary != "true"]';
518 FOR field = table.findnodes(fields_xpath);
519 link_test = '../../links/link[@field="' _ field.findvalue('@name') _ '"]';
520 logme(['link_test',link_test]);
521 NEXT IF field.findnodes( link_test );
523 fname = field.findvalue( "label" );
524 fid = field.findvalue( "@name" );
528 bg_color = 'lightcyan';
533 WRAPPER html/cell align='left' col=bg_color style="padding-left: 50px;";
534 INCLUDE checkbox name="output:$t:$fid" value="include" onclick="field_add_remove(this)";
536 <script language="javascript">
537 outputs['[% "output:$t:$fid" %]'] = '[% fname %]';
543 INCLUDE html/cell align='right' content='Output Transformation:' col=bg_color;
544 WRAPPER html/cell align='left' col=bg_color style="padding-left: 50px;";
546 dtype = field.findvalue('@transform-group');
548 dtype = field.findvalue('@datatype');
551 WRAPPER select id="xform:type:$t:$fid" name="xform:type:$t:$fid" onchange="show_hide_params(this)";
552 INCLUDE option value='' content='None' selected=1;
553 FOR xform = dtype_xform_map.$dtype;
554 xform_label = dtype_xforms.$xform.label;
555 IF dtype_xforms.$xform.param;
556 xform_label = "$xform_label (*)";
558 INCLUDE option value=xform content=xform_label;
565 <span id="hide-param:xform:type:[% t %]:[% fid %]" style="visibility: hidden;">
566 <small><super>*</super>Output Tranformation Parameter: </small>
567 [% INCLUDE text name="xform:param:$t:$fid" %]