From 147570d1a8d1bbccfc7030bfe92e01796843c2f3 Mon Sep 17 00:00:00 2001 From: erickson Date: Mon, 26 Sep 2005 20:36:11 +0000 Subject: [PATCH] breaking up widgets into small chunks git-svn-id: svn://svn.open-ils.org/ILS/trunk@1874 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/src/reporter/tables.example.xml | 24 +- Open-ILS/src/reporter/templates/login.ttk | 6 + Open-ILS/src/reporter/templates/stage1.ttk | 488 ++++++++++++++------- 3 files changed, 345 insertions(+), 173 deletions(-) diff --git a/Open-ILS/src/reporter/tables.example.xml b/Open-ILS/src/reporter/tables.example.xml index 6ec6b07093..65b3f39cb2 100644 --- a/Open-ILS/src/reporter/tables.example.xml +++ b/Open-ILS/src/reporter/tables.example.xml @@ -1,8 +1,8 @@ - - Silly Fact table +
+ Silly Fact tablestats.silly_fact @@ -62,7 +62,7 @@
- Silly word list + Silly word liststats.words @@ -70,17 +70,21 @@ name="id" primary="true" create-type="serial" - datatype="int"/> + datatype="int"> + + + index-type="BTREE"> + +
- Silly word sayer list + Silly word sayer liststats.silly_sayers @@ -88,13 +92,17 @@ name="id" primary="true" create-type="serial" - datatype="int"/> + datatype="int"> + + + index-type="BTREE"> + +
diff --git a/Open-ILS/src/reporter/templates/login.ttk b/Open-ILS/src/reporter/templates/login.ttk index 82f6e2d897..5ccef68d6f 100644 --- a/Open-ILS/src/reporter/templates/login.ttk +++ b/Open-ILS/src/reporter/templates/login.ttk @@ -71,6 +71,12 @@ + +

+ Org Test +

+ [% INCLUDE orgtree.ttk %] + [% INCLUDE footer.ttk %] diff --git a/Open-ILS/src/reporter/templates/stage1.ttk b/Open-ILS/src/reporter/templates/stage1.ttk index dba9c83ae6..b9242a6769 100644 --- a/Open-ILS/src/reporter/templates/stage1.ttk +++ b/Open-ILS/src/reporter/templates/stage1.ttk @@ -6,60 +6,59 @@ END; MACRO logme(a) PROCESS logme_block x = a.list.join(', '); -%] - -[% - USE CGI; - USE DBI; - USE WebSession; - USE utils = WebUtils; - USE config = XML.LibXML(config_xml); +USE CGI; +USE DBI; +USE WebSession; +USE utils = WebUtils; +USE config = XML.LibXML(config_xml, expand_xinclude => 1); - dir = '/reporter/setup/files/' _ stage_dir; - dir = config.findvalue(dir); +dir = '/reporter/setup/files/' _ stage_dir; +dir = config.findvalue(dir); - dbname = config.findvalue('/reporter/setup/database/name'); - dbhost = config.findvalue('/reporter/setup/database/host'); - d_u = config.findvalue('/reporter/setup/database/user'); - d_p = config.findvalue('/reporter/setup/database/password'); +dbname = config.findvalue('/reporter/setup/database/name'); +dbhost = config.findvalue('/reporter/setup/database/host'); +d_u = config.findvalue('/reporter/setup/database/user'); +d_p = config.findvalue('/reporter/setup/database/password'); - dsn = "dbi:Pg:dbname=" _ dbname _';host=' _ dbhost; +dsn = "dbi:Pg:dbname=" _ dbname _';host=' _ dbhost; - logme([dsn,d_u,d_p]); +logme([dsn,d_u,d_p]); - DBI.connect(dsn,d_u,d_p); -%] - - - - [% INCLUDE header.ttk title="Basic Report Types" %] - - [% INCLUDE logout.ttk %] - [% IF !CGI.param('id') %] - [% IF CGI.param('detail') %] - |No Details (All) - [% ELSE %] - |Details (All) - [% END %] - [% PROCESS all_stage1 %] - [% END %] - [% PROCESS one_stage1 IF CGI.param('id') %] - - [% INCLUDE footer.ttk %] - +DBI.connect(dsn,d_u,d_p); + + +WRAPPER html/html; + INCLUDE header.ttk title="Basic Report Types"; + WRAPPER html/body; + INCLUDE logout.ttk; + IF !CGI.param('id'); + IF CGI.param('detail'); + %]|No Details (All)[% + ELSE; + %]|Details (All)[% + END; + PROCESS all_stage1; + ELSE; + PROCESS one_stage1; + END; + END; + INCLUDE footer.ttk; +END; +#============================================================================= +BLOCK one_stage1; + %]|Show all[% -[% BLOCK one_stage1 %] - |Show all -[% uid = DBI.quote(user.id()); + uid = DBI.quote(user.id()); rid = DBI.quote(CGI.param('id')); + q = "select * from reporter.stage1 where (pub is true or owner = $uid) and id = $rid;"; FOR s1 IN DBI.query(q); file = dir _ '/' _ s1.filename; @@ -73,12 +72,15 @@ MACRO logme(a) PROCESS logme_block x = a.list.join(', '); END; END; -%] -[% + + + BLOCK all_stage1; + ''; END; -%] -[% BLOCK stage1_summary links=0 %] - - - - - - - - - - - - - -[% PROCESS stage1_detail IF CGI.param('detail') == 1 %] -
- Name: - - [%doc.findvalue('/reporter/report/@name')%] -
- Description: - - [%doc.findvalue('/reporter/report/description')%] -
- Actions: - - [% IF CGI.param('detail') %] - No Details - [% ELSE %] - Details - [% END %] - |New Report Template -
-[% END %] -[% + +BLOCK stage1_summary links=0; + WRAPPER html/table width="100%"; + WRAPPER html/row; + WRAPPER html/cell align="right"; + %]Name:[% + END; + WRAPPER html/cell; + doc.findvalue('/reporter/report/@name'); + END; + END; + WRAPPER html/row; + WRAPPER html/cell align="right"; + %]Description:[% + END; + WRAPPER html/cell; + doc.findvalue('/reporter/report/description'); + END; + END; + WRAPPER html/row; + WRAPPER html/cell align="right"; + %]Actions:[% + END; + WRAPPER html/cell; + IF CGI.param('detail'); + %]No Details[% + ELSE; + %]Details[% + END; + %]|New Report Template[% + END; + END; + PROCESS stage1_detail IF CGI.param('detail') == 1; + END; +END; + + +%][% + BLOCK stage2_new; col_xpath = "/reporter/tables/table[@id='" _ fact_table _ "']/fields/field[@core='true']"; logme(col_xpath); - '

Core report limiters

'; + WRAPPER html/table width="100%" border=1; + WRAPPER html/row; + WRAPPER html/cell colspan=2; + # hidden input here ... + table = config.findnodes("/reporter/tables/table[@id='$fact_table']"); + INCLUDE hidden name="filtertable" value=fact_table; + table.findvalue('label'); + ' Core Columns'; + END; + END; + INCLUDE widget_selector tableid=fact_table columns=config.findnodes(col_xpath) force=1; + END; - FOR col IN config.findnodes(col_xpath); - logme(col.findvalue('@name')); - widget = col.findvalue('@widget') or col.findvalue('@datatype'); - INCLUDE "draw_$widget" column = col; + dim_xpath = "/reporter/tables/table[@id='$fact_table']/links/link/@table"; + FOR dim_table IN config.findnodes(dim_xpath); + dim_table = dim_table.value(); + dimension = config.findnodes("/reporter/tables/table[@id='$dim_table']"); + + WRAPPER html/table width="100%" border=1; + WRAPPER html/row; + WRAPPER html/cell colspan=2; + # checkbox input here ... + INCLUDE checkbox name="filtertable" value=dim_table checked=1; + dimension.findvalue('label'); + ' Dimension'; + END; + END; + INCLUDE widget_selector tableid=dim_table; + END; END; END; -%] + + +BLOCK widget_selector; + + logme("widget_selector called for table $tableid"); + + # if we got some columns, use them. if not, get all non-primary columns + IF ! columns; + columns_xpath = + '/reporter/tables/table[@id="' _ tableid _ + '"]/fields/field[not(@primary) or @primary!="true"]' + columns = config.findnodes(columns_xpath); + logme("widget_selector had to grab columns for table $tableid!"); + END; + + column_input_type="checkbox"; + IF force; + column_input_type="hidden"; + END; + + FOR column IN columns; + column_name=column.findvalue('@name'); + + WRAPPER html/row; + WRAPPER html/cell valign='top'; + # checkbox for column filter here ... + INCLUDE $column_input_type + name="filtercolumn:$tableid" + value=column_name + checked=1; + column.findvalue('label'); + END; + WRAPPER html/cell; + + col_widget_fams_xpath = + '/reporter/widgets/widget-family[@datatype="' _ + column.findvalue('@datatype') _ '"]'; + + IF column.findnodes('@widget-family'); + col_widget_fams_xpath = + '/reporter/widgets/widget-family[@name="' _ + column.findvalue('@widget-family') _ '"]'; + END; + + logme("finding widget families using $col_widget_fams_xpath"); + + widget_fams = config.findnodes(col_widget_fams_xpath); + + ''; + END; + END; + END; +END; -[% BLOCK draw_timestamptz %] -[% varname = column.parentNode.parentNode.findvalue('tablename') _ '.' _ column.findvalue('@name') %] -[% column.findvalue('label') %]

- - - - - - - - -
- [% column.findvalue('description') %] -
- Report Range Size: - - -
-[% END %] +%][% -[% BLOCK dim_description %] - - Name: - [% dim.findvalue('name') %] - -[% PROCESS table_fields table = dim %] -[% END %] +BLOCK text; + %][% +END; +BLOCK textarea; + %][% +END; +BLOCK hidden; + %][% +END; +BLOCK radio; + %][% +END; +BLOCK checkbox; + %][% +END; -[% BLOCK table_fields %] -[% FOR f IN table.findnodes('fields/field') %] - - Field: - [% f.findvalue('@name') %] ([% f.findvalue('@datatype') %]) - -[% END %] -[% END %] +BLOCK render_dimension; + INCLUDE checkbox checked = 1 name = 's2_dim_table' value = dim_object.findvalue('@id'); + %][% dim_object.findvalue('name') %]
[% + + WRAPPER html/table width="100%" ; + WRAPPER html/row; + WRAPPER html/cell align="right"; + END; + END; + END; +END; -[% BLOCK stage1_detail %] - - - Visible Stage2 reports: - - - [% q = 'select count(*) as x from reporter.stage2 ' _ - 'where pub is true or owner = ' _ DBI.quote(user.id()); - FOR r IN DBI.query(q); - r.x; - END %] - - -[% PROCESS table_fields table = config.findnodes("/reporter/tables/table[@id='$fact_table']") %] +BLOCK dim_description; + WRAPPER html/row; + WRAPPER html/cell align="right"; + %]Name:[% + END; + WRAPPER html/cell; + dim.findvalue('name'); + END; + END; + PROCESS table_fields table = dim; +END; - - - Report Attributes
(dimensions): - - -[% - incs = doc.findnodes('//report/dims/dim/@include'); - FOR dim IN incs; - ''; - link_xpath = '/reporter/tables/table[@id="' _ fact_table _'"]'_ - '/links/link[@field="' _ dim.value() _ '"]/@table'; - logme(link_xpath); - dim_table = config.findvalue(link_xpath); - dim_xpath = '/reporter/tables/table[@id="' _ dim_table _'"]'; - logme(dim_xpath); + +BLOCK table_fields; + FOR f IN table.findnodes('fields/field'); + WRAPPER html/row; + WRAPPER html/cell align="right"; + %]Field:[% + END; + WRAPPER html/cell; + f.findvalue('@name'); + %] ([% f.findvalue('@datatype') %])[% + END; + END; + END; +END; + + + + + + +BLOCK stage1_detail; + WRAPPER html/row; + WRAPPER html/cell align="right"; + %]Visible Stage2 reports:[% + END; + WRAPPER html/cell; + q = 'select count(*) as x from reporter.stage2 ' _ + 'where pub is true or owner = ' _ DBI.quote(user.id()); + FOR r IN DBI.query(q); + r.x; + END; + END; + END; + + PROCESS table_fields table = config.findnodes("/reporter/tables/table[@id='$fact_table']"); + + WRAPPER html/row; + WRAPPER html/cell align="right"; + %]Report Attributes
(dimensions):[% + END; + WRAPPER html/cell; + incs = doc.findnodes('//report/dims/dim/@include'); + + FOR dim IN incs; + %]
[% + + link_xpath = '/reporter/tables/table[@id="' _ fact_table _'"]'_ + '/links/link[@field="' _ dim.value() _ '"]/@table'; + logme(link_xpath); + + dim_table = config.findvalue(link_xpath); + + dim_xpath = '/reporter/tables/table[@id="' _ dim_table _'"]'; + logme(dim_xpath); - dim_def = config.findnodes(dim_xpath); + dim_def = config.findnodes(dim_xpath); - PROCESS dim_description dim = dim_def; - '
'; - END -%] - - -[% END %] + PROCESS dim_description dim = dim_def; + %][% + END; + END; + END; +END; +%] -- 2.43.2