fccc7170befed00a987ce58fa810be1e97b5c6e5
[Evergreen.git] / Open-ILS / src / reporter / widgets.example.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <widgets>
3         
4         <!-- String selection from user input -->
5         <widget-family name="string-input" datatype="text">
6                 <label>String matching from user input</label>
7         
8                 <widget name="exact">
9                         <label>Exactly match a user supplied string</label>
10                         <description>
11                                 This widget filters a column based on an exact string
12                                 match.
13                         </description>
14                 </widget>
15         
16                 <widget name="multistring">
17                         <label>Exactly match one of several user supplied strings</label>
18                         <description>
19                                 This widget filters a column based on an set of strings.
20                         </description>
21                 </widget>
22         
23                 <widget name="initial-substring">
24                         <label>Match the begining of a string from user input</label>
25                         <description>
26                                 This widget filters a column based on an initial substring
27                                 match.
28                         </description>
29                 </widget>
30         </widget-family>
31         
32         
33         <!-- String selection from in-database data -->
34         <widget-family name="string-choose" datatype="text">
35                 <label>String filter from known data</label>
36         
37                 <widget name="dropdown">
38                         <label>Exactly match a string chosen from a dropdown</label>
39                         <description>
40                                 This widget filters a column based on an exact string match.
41                         </description>
42                 </widget>
43                 
44                 <widget name="multiselect">
45                         <label>Match multiple strings chosen from a multiselect box</label>
46                         <description>
47                                 This widget filters a column based on multiple strings.
48                         </description>
49                 </widget>
50         </widget-family>
51         
52         
53         <!-- Specific time range selection family -->
54         <widget-family name="specific-timerange" datatype="timestamptz">
55                 <label>Specific time-range widgets</label>
56         
57                 <widget name="any">
58                         <label>User defined time range</label>
59                         <description>
60                                 This widget allows the user to pick an arbitrary time range
61                                 on which to report.
62                         </description>
63                 </widget>
64                 
65                 <widget name="day">
66                         <label>Choose a specific date</label>
67                         <description>
68                                 This widget allows the user to pick a specific date on which
69                                 to report.
70                         </description>
71                         <filter-code type="perl">
72                                 $full_col = "DATE_TRUNC($full_col, 'day')";
73                                 $where_clause = "$full_col = CAST(? AS DATE)";
74                                 push @$bind_list, sprintf('%d/%02d/%02d', @$val{qw/year month day/});
75                         </filter-code>
76                 </widget>
77         
78                 <widget name="week">
79                         <label>Choose a specific week of the year</label>
80                         <description>
81                                 This widget allows the user to pick a specific week of the year
82                                 on which to report.
83                         </description>
84                         <filter-code type="perl">
85                                 $full_col = "EXTRACT('week' FROM $full_col)";
86                                 $where_clause = "$full_col = ?";
87                                 push @$bind_list, $val;
88                         </filter-code>
89                 </widget>
90                 
91                 <widget name="multiweek">
92                         <label>Choose a range of weeks of the year</label>
93                         <description>
94                                 This widget allows the user to pick a range of weeks of the year
95                                 on which to report.
96                         </description>
97                         <filter-code type="perl">
98                                 $where_clause =
99                                         "EXTRACT('year' FROM $full_col) = ? ".
100                                         "AND EXTRACT('week' FROM $full_col) ".
101                                                 "BETWEEN ? AND ?";
102                                 push @$bind_list, $$val{year}, $$val{start}, $$val{end};
103                         </filter-code>
104                 </widget>
105                 
106                 <widget name="month">
107                         <label>Choose a specific year and month</label>
108                         <description>
109                                 This widget allows the user to pick a specific year and month
110                                 on which to report.
111                         </description>
112                         <filter-code type="perl">
113                                 $where_clause =
114                                         "EXTRACT('year' FROM $full_col) = ? ".
115                                         "AND EXTRACT('month' FROM $full_col) = ?";
116                                 push @$bind_list, $$val{'start-year'}, $$val{'start-month'};
117                         </filter-code>
118                 </widget>
119                 
120                 <widget name="multimonth">
121                         <label>Choose a range of months</label>
122                         <description>
123                                 This widget allows the user to pick a range of month on which to
124                                 report.
125                         </description>
126                         <filter-code type="perl">
127                                 $where_clause = 
128                                         "DATE_TRUNC($full_col, 'month') ".
129                                                 "BETWEEN CAST(? AS DATE) AND CAST(? AS DATE)";
130                                 push @$bind_list,
131                                         sprintf('%d/%02d/01', @$val{qw/start-year start-month/}),
132                                         sprintf('%d/%02d/01', @$val{qw/end-year end-month/});
133                         </filter-code>
134                 </widget>
135                 
136                 <widget name="quarter">
137                         <label>Choose a specific year and quarter</label>
138                         <description>
139                                 This widget allows the user to pick a specific year and
140                                 quarter on which to report.
141                         </description>
142                 </widget>
143                 
144                 <widget name="multiquarter">
145                         <label>Choose a range of quarters</label>
146                         <description>
147                                 This widget allows the user to pick a range of quarter on which
148                                 to report.
149                         </description>
150                 </widget>
151                 
152                 <widget name="year">
153                         <label>Choose a specific year</label>
154                         <description>
155                                 This widget allows the user to pick a specific year on which to
156                                 report.
157                         </description>
158                         <filter-code type="perl">
159                                 $where_clause = "EXTRACT('year' FROM $full_col) = ?";
160                                 push @$bind_list, $val;
161                         </filter-code>
162                 </widget>
163                 
164                 <widget name="multiyear">
165                         <label>Choose a range of years</label>
166                         <description>
167                                 This widget allows the user to pick a range of years on which to
168                                 report.
169                         </description>
170                         <filter-code type="perl">
171                                 $where_clause = "EXTRACT('year' FROM $full_col) BETWEEN ? AND ?";
172                                 push @$bind_list, $$val{year}, $$val{year} + $$val{year-count};
173                         </filter-code>
174                 </widget>
175         </widget-family>
176         
177         <!-- Specific time range selection family -->
178         <widget-family name="relative-timerange" datatype="timestamptz">
179                 <label>Relative time-range widgets</label>
180                 
181                 <widget name="day">
182                         <label>Choose a date relative to the report runtime</label>
183                         <description>
184                                 This widget allows the user to pick a date relative to the
185                                 report runtime on which to report.
186                         </description>
187                 </widget>
188                 
189                 <widget name="week">
190                         <label>Choose a week (sun-sat) relative to the report runtime</label>
191                         <description>
192                                 This widget allows the user to pick a week (sun-sat)  relative
193                                 to the report runtime on which to report.
194                         </description>
195                 </widget>
196                 
197                 <widget name="month">
198                         <label>Choose a month relative to the report runtime</label>
199                         <description>
200                                 This widget allows the user to pick a month relative to the
201                                 report runtime on which to report.
202                         </description>
203                         <filter-code type="perl">
204                                 $where_clause = 
205                                         "DATE_TRUNC($full_col, 'month') = ".
206                                                 "DATE_TRUNC(now(), 'month') - CAST(? || ' months' AS INTERVAL);
207                                 push @$bind_list, $val;
208                         </filter-code>
209                 </widget>
210                 
211                 <widget name="quarter">
212                         <label>Choose a quarter relative to the report runtime</label>
213                         <description>
214                                 This widget allows the user to pick a quarter relative to the
215                                 report runtime on which to report.
216                         </description>
217                 </widget>
218                 
219                 <widget name="year">
220                         <label>Choose a year relative to the report runtime</label>
221                         <description>
222                                 This widget allows the user to pick a year relative to the
223                                 report runtime on which to report.
224                         </description>
225                 </widget>
226         </widget-family>
227
228         <!-- Library selection from in-database data - special to OpenILS -->
229         <widget-family name="lib-choose" datatype="text">
230                 <label>String filter from known data</label>
231         
232                 <widget name="dropdown">
233                         <label>Exactly match a Library chosen from a dropdown</label>
234                         <description>
235                                 This widget filters on an exact Library Name match.
236                         </description>
237                 </widget>
238                 
239                 <widget name="multiselect">
240                         <label>Match multiple Libraries chosen from a multiselect box</label>
241                         <description>
242                                 This widget filters based on multiple Library names.
243                         </description>
244                 </widget>
245         </widget-family>
246         </widgets>
247