]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/src/reporter/templates/stage1.ttk
mucho work
[working/Evergreen.git] / Open-ILS / src / reporter / templates / stage1.ttk
1 [%
2
3 BLOCK logme_block;
4         "\n\t<!-- " _ x _ " -->\n";
5 END;
6
7 MACRO logme(a) PROCESS logme_block x = a.list.join(', ');
8
9 %]
10
11 [%
12         USE CGI;
13         USE DBI;
14         USE WebSession;
15         USE utils = WebUtils;
16         USE config = XML.LibXML(config_xml);
17
18         dir = '/reporter/setup/files/' _ stage_dir;
19         dir = config.findvalue(dir);
20
21         dbname = config.findvalue('/reporter/setup/database/name');
22         dbhost = config.findvalue('/reporter/setup/database/host');
23         d_u = config.findvalue('/reporter/setup/database/user');
24         d_p = config.findvalue('/reporter/setup/database/password');
25
26         dsn = "dbi:Pg:dbname=" _ dbname _';host=' _ dbhost;
27
28         logme([dsn,d_u,d_p]);
29         
30         DBI.connect(dsn,d_u,d_p);
31 %]
32
33
34 <html>
35         [% INCLUDE header.ttk title="Basic Report Types" %]     
36         <body>
37                 [% INCLUDE logout.ttk %]
38                 [% IF !CGI.param('id') %]
39                         [%      IF CGI.param('detail') %]
40                                 |<a href="?detail=0">No Details (All)</a>
41                         [% ELSE %]
42                                 |<a href="?detail=1">Details (All)</a>
43                         [% END %]
44                         [% PROCESS all_stage1 %]
45                 [% END %]
46                 [% PROCESS one_stage1 IF CGI.param('id') %]
47         </body>
48         [% INCLUDE footer.ttk %]        
49 </html>
50
51
52
53
54
55
56
57 [% BLOCK one_stage1 %]
58         |<a href="[% CGI.
59                                                 url('-absolute',1,'-path_info',1,'-query',1).
60                                                 replace('&?id=\d+','') %]">Show all</a>
61 [%      uid = DBI.quote(user.id());
62         rid = DBI.quote(CGI.param('id'));
63         q = "select * from reporter.stage1 where (pub is true or owner = $uid) and id = $rid;";
64         FOR s1 IN DBI.query(q);
65                 file = dir _ '/' _ s1.filename;
66                 USE doc = XML.LibXML(file);
67
68                 fact_table = doc.findvalue('//report/@fact-table');
69                 logme(fact_table);
70
71                 PROCESS stage1_summary;
72                 PROCESS stage2_new IF CGI.param('create_stage2') == 1;
73
74         END;
75 END;
76 %]
77
78 [%
79 BLOCK all_stage1;
80         uid = DBI.quote(user.id());
81         FOR s1 IN DBI.query("select * from reporter.stage1 where pub is true or owner = $uid;");
82                 file = dir _ '/' _ s1.filename;
83                 USE doc = XML.LibXML(file);
84
85                 fact_table = doc.findvalue('//report/@fact-table');
86                 logme(fact_table);
87
88                 PROCESS stage1_summary links = 1;
89
90                 IF loop.count != loop.size;
91                         '<hr>';
92                 END;
93         END;
94 END;
95 %]
96
97 [% BLOCK stage1_summary  links=0 %]
98 <table width="100%">
99         <tr>
100                 <td align="right">
101                         <b>Name:</b>
102                 </td>
103                 <td>
104                         [%doc.findvalue('/reporter/report/@name')%]
105                 </td>
106         </tr>
107         <tr>
108                 <td align="right">
109                         <b>Description:</b>
110                 </td>
111                 <td>
112                         [%doc.findvalue('/reporter/report/description')%]
113                 </td>
114         </tr>
115         <tr>
116                 <td align="right">
117                         <b>Actions:</b>
118                 </td>
119                 <td>
120                         [% IF CGI.param('detail') %]
121                                 <a href="?detail=0&id=[% s1.id %]">No Details</a>
122                         [% ELSE %]
123                                 <a href="?detail=1&id=[% s1.id %]">Details</a>
124                         [% END %]
125                         |<a href="?create_stage2=1&id=[% s1.id %]">New Report Template</a>
126                 </td>
127         </tr>
128 [%      PROCESS stage1_detail IF CGI.param('detail') == 1 %]
129 </table>
130 [%      END %]
131
132
133 [%
134 BLOCK stage2_new;
135         col_xpath = "/reporter/tables/table[@id='" _ fact_table _ "']/fields/field[@core='true']";
136         logme(col_xpath);
137
138         '<h3><u>Core report limiters</u></h3>';
139
140         FOR col IN config.findnodes(col_xpath);
141                 logme(col.findvalue('@name'));
142                 widget = col.findvalue('@widget') or col.findvalue('@datatype');
143                 INCLUDE "draw_$widget" column = col; 
144         END;
145
146 END;
147 %]
148
149
150
151
152 [% BLOCK draw_timestamptz %]
153 [% varname = column.parentNode.parentNode.findvalue('tablename') _ '.' _ column.findvalue('@name') %]
154
155 <b>[% column.findvalue('label') %]</b><br/><br/>
156 <table border=1 width="100%">
157         <tr>
158                 <td colspan=2>
159                         <b>[% column.findvalue('description') %]</b>
160                 </td>
161         </tr>
162         <tr>
163                 <td>
164                         Report Range Size:
165                 </td>
166                 <td>
167                         <select
168                                 name="range_size" >
169                                 <option value="[% varname %]:">Any</option>
170                                 <option value="[% varname %]:hour">Hour</option>
171                                 <option value="[% varname %]:day">Day</option>
172                                 <option value="[% varname %]:week">Week</option>
173                                 <option value="[% varname %]:month">Month</option>
174                                 <option value="[% varname %]:year">Year</option>
175                                 <option value="[% varname %]:decade">Decade</option>
176                         </select>
177                 </td>
178         </tr>
179 </table>
180 [% END %]
181
182
183
184
185 [% BLOCK dim_description %]
186 <tr>
187         <td align="right">Name:</td>
188         <td>[% dim.findvalue('name') %]</td>
189 </tr>
190 [% PROCESS table_fields table = dim %]
191 [% END %]
192
193
194
195
196
197
198 [% BLOCK table_fields %]
199 [%              FOR f IN table.findnodes('fields/field') %]
200 <tr>
201         <td align="right">Field:</td>
202         <td>[% f.findvalue('@name') %] ([% f.findvalue('@datatype') %])</td>
203 </tr>
204 [%              END %]
205 [% END %]
206
207
208
209
210
211
212 [% BLOCK stage1_detail %]
213                                 <tr>
214                                         <td align="right">
215                                                 Visible Stage2 reports:
216                                         </td>
217                                         <td>
218                                                 [% q = 'select count(*) as x from reporter.stage2 ' _
219                                                                 'where pub is true or owner = ' _ DBI.quote(user.id());
220                                                 FOR r IN DBI.query(q);
221                                                         r.x;
222                                                 END %]
223                                         </td>
224                                 </tr>
225
226 [% PROCESS table_fields table = config.findnodes("/reporter/tables/table[@id='$fact_table']") %]
227
228                                 <tr>
229                                         <td align="right">
230                                                 Report Attributes<br/>(dimensions):
231                                         </td>
232                                         <td>
233 [%
234                                                 incs = doc.findnodes('//report/dims/dim/@include');
235
236                                                 FOR dim IN incs;
237                                                         '<table border=1 width="100%">';
238
239                                                         link_xpath = '/reporter/tables/table[@id="' _ fact_table _'"]'_
240                                                                                                 '/links/link[@field="' _ dim.value() _ '"]/@table';
241                                                         logme(link_xpath);
242
243                                                         dim_table = config.findvalue(link_xpath);
244
245                                                         dim_xpath = '/reporter/tables/table[@id="' _ dim_table _'"]';
246                                                         logme(dim_xpath);
247                                                         
248                                                         dim_def = config.findnodes(dim_xpath);
249
250                                                         PROCESS dim_description dim = dim_def;
251                                                         '</table>';
252                                                 END
253 %]
254                                         </td>
255                                 </tr>
256 [%                      END %]
257
258