3 [% INCLUDE 'doc-head-open.inc' %]
4 <title>Koha › Reports › Holds statistics [% IF ( do_it ) %]› Results[% END %]</title>
5 [% INCLUDE 'doc-head-close.inc' %]
11 <body id="rep_reserve_stats" class="rep">
12 [% INCLUDE 'header.inc' %]
13 [% INCLUDE 'cat-search.inc' %]
15 <div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › <a href="/cgi-bin/koha/reports/reports-home.pl">Reports</a> [% IF ( do_it ) %]› <a href="/cgi-bin/koha/reports/reserves_stats.pl">Holds statistics</a> › Results [% ELSE %]› Holds statistics[% END %]</div>
17 <div class="main container-fluid">
19 <div class="col-sm-10 col-sm-push-2">
25 <h1>Holds statistics</h1>
26 [% IF ( loopfilter ) %]
29 [% FOREACH loopfilte IN loopfilter %]
30 [% IF ( loopfilte.err ) %]<li class="error">Error:
31 [% ELSIF ( loopfilte.sql ) %]<li class="sql">
34 [% loopfilte.crit | html %] [% loopfilte.filter | html %]
40 [% FOREACH mainloo IN mainloop %]
44 <th>[% mainloo.line | html %] / [% mainloo.column | html %]</th>
45 [% FOREACH loopco IN mainloo.loopcol %]
46 <th>[% loopco.coltitle_display | html %]</th>
50 [% FOREACH loopro IN mainloo.looprow %]
52 <td>[% loopro.rowtitle_display or "UNKNOWN VALUE" | html %]</td>
53 [% FOREACH loopcel IN loopro.loopcell %]
55 [% IF ( loopcel.url_complement ) %]<a href="reserves_stats.pl?output=[% loopcel.output | uri %]&[% loopcel.url_complement | uri %]">[% loopcel.value | html %]</a>[% ELSE %][% loopcel.value | html %][% END %]
58 <td align="center">[% loopro.totalrow | html %]</td>
63 [% FOREACH loopfoote IN mainloo.loopfooter %]
64 <th>[% loopfoote.totalcol | html %]</th>
66 <th>[% mainloo.total | html %]</th>
73 <form method="post" action="/cgi-bin/koha/reports/reserves_stats.pl">
74 <fieldset class="rows">
75 <legend>Holds statistics</legend><table>
87 <td><input type="radio" name="Line" value="reservestatus" /></td>
88 <td><input type="radio" name="Column" value="reservestatus" checked="checked" /></td>
90 <input type="checkbox" name="filter_reservestatus_or_1" value="1" /> Asked
91 <input type="checkbox" name="filter_reservestatus_or_2" value="2" /> Processing
92 <input type="checkbox" name="filter_reservestatus_or_3" value="3" /> Waiting
93 <input type="checkbox" name="filter_reservestatus_or_4" value="4" /> Satisfied
94 <input type="checkbox" name="filter_reservestatus_or_5" value="5" /> Cancelled
99 <td><input type="radio" name="Line" value="reservedate" /></td>
100 <td><input type="radio" name="Column" value="reservedate" /></td>
101 <td><label for="filter_reservedate_begin">From</label> <input type="text" size="10" id="filter_reservedate_begin" name="filter_reservedate_begin" />
102 <label for="filter_reservedate_end">To</label> <input size="10" id="filter_reservedate_end" name="filter_reservedate_end" value="" type="text" />
106 <td>Notification date</td>
107 <td><input type="radio" name="Line" value="notificationdate" /></td>
108 <td><input type="radio" name="Column" value="notificationdate" /></td>
109 <td><label for="filter_notificationdate_begin">From</label> <input type="text" size="10" id="filter_notificationdate_begin" name="filter_notificationdate_begin" />
110 <label for="filter_notificationdate_end">To</label> <input size="10" id="filter_notificationdate_end" name="filter_notificationdate_end" value="" type="text" />
114 <td>Reminder date</td>
115 <td><input type="radio" name="Line" value="reminderdate" /></td>
116 <td><input type="radio" name="Column" value="reminderdate" /></td>
117 <td><label for="filter_reminderdate_begin">From</label> <input type="text" size="10" id="filter_reminderdate_begin" name="Filter" />
118 <label for="filter_reminderdate_end">To</label> <input size="10" id="filter_reminderdate_end" name="filter_reminderdate_end" value="" type="text" />
122 <td>Waiting date</td>
123 <td><input type="radio" name="Line" value="waitingdate" /></td>
124 <td><input type="radio" name="Column" value="waitingdate" /></td>
125 <td><label for="filter_waitingdate_begin">From</label> <input type="text" size="10" id="filter_waitingdate_begin" name="filter_waitingdate_begin" />
126 <label for="filter_waitingdate_end">To</label> <input size="10" id="filter_waitingdate_end" name="filter_waitingdate_end" value="" type="text" />
130 <td>Cancellation date</td>
131 <td><input type="radio" name="Line" value="cancellationdate" /></td>
132 <td><input type="radio" name="Column" value="cancellationdate" /></td>
133 <td><label for="filter_cancellationdate_begin">From</label> <input type="text" size="10" id="filter_cancellationdate_begin" name="filter_cancellationdate_begin" />
134 <label for="filter_cancellationdate_end">To</label> <input size="10" id="filter_cancellationdate_end" name="filter_cancellationdate_end" value="" type="text" />
138 <td>Patron category</td>
139 <td><input type="radio" name="Line" value="borrowers.categorycode" /></td>
140 <td><input type="radio" name="Column" value="borrowers.categorycode" /></td>
141 <td><select name="filter_categorycode" id="borcat">
142 <option value=""> </option>
143 [% FOREACH categoryloo IN categoryloop %]
144 <option value="[% categoryloo.categorycode | html %]">[% categoryloo.description | html %]</option>
151 <td><input type="radio" name="Line" value="items.itype" /></td>
152 <td><input type="radio" name="Column" value="items.itype" /></td>
153 <td><select name="filter_items.itype" id="itype">
154 <option value=""> </option>
155 [% FOREACH itemtype IN itemtypes %]
156 <option value="[% itemtype.itemtype | html %]">[% itemtype.translated_description | html %]</option>
162 <td>Pickup library</td>
163 <td><input type="radio" name="Line" value="reserves.branchcode" checked="checked" /></td>
164 <td><input type="radio" name="Column" value="reserves.branchcode" /></td>
165 <td><select name="filter_reserves.branchcode" id="resbranchcode">
166 <option value=""> </option>
167 [% PROCESS options_for_libraries libraries => Branches.all() %]
172 <td>Holding library</td>
173 <td><input type="radio" name="Line" value="items.holdingbranch" /></td>
174 <td><input type="radio" name="Column" value="items.holdingbranch" /></td>
175 <td><select name="filter_items.holdingbranch" id="holdingbranch">
176 <option value=""> </option>
177 [% PROCESS options_for_libraries libraries => Branches.all() %]
182 <td>Home library</td>
183 <td><input type="radio" name="Line" value="items.homebranch" /></td>
184 <td><input type="radio" name="Column" value="items.homebranch" /></td>
185 <td><select name="filter_items.homebranch" id="homebranch">
186 <option value=""> </option>
187 [% PROCESS options_for_libraries libraries => Branches.all() %]
193 <td><input type="radio" name="Line" value="items.ccode" /></td>
194 <td><input type="radio" name="Column" value="items.ccode" /></td>
195 <td><select name="filter_items.ccode" id="ccode">
196 <option value=""> </option>
197 [% FOREACH ccodeloo IN ccodeloop %]
198 [% IF ( ccodeloo.selected ) %] <option value="[% ccodeloo.code | html %]" selected="selected">[% ccodeloo.description | html %]</option>[% ELSE %]<option value="[% ccodeloo.code | html %]">[% ccodeloo.description | html %]</option>[% END %]
204 <td>Shelving location</td>
205 <td><input type="radio" name="Line" value="items.location" /></td>
206 <td><input type="radio" name="Column" value="items.location" /></td>
207 <td><select name="filter_items.location" id="location">
208 <option value=""> </option>
209 [% FOREACH locationloo IN locationloop %]
210 [% IF ( locationloo.selected ) %]<option value="[% locationloo.code | html %]" selected="selected">[% locationloo.description | html %]</option>[% ELSE %]<option value="[% locationloo.code | html %]">[% locationloo.description | html %]</option>[% END %]
216 <td>Item call number</td>
219 <td>From <input type="text" name="filter_items.itemcallnumber_begin" size="10" /> (inclusive) to <input type="text" name="filter_items.itemcallnumber_endex" size="10" /> (exclusive) </td>
221 [% IF ( hassort1 ) %]
222 <tr><td>Patron sort 1</td>
223 <td><input type="radio" name="Line" value="borrowers.sort1" /></td>
224 <td><input type="radio" name="Column" value="borrowers.sort1" /></td>
225 <td><select name="filter_borrowers.sort1" id="sort1">
226 <option value=""> </option>
227 [% FOREACH Bsort IN Bsort1 %]
228 [% IF ( Bsort.selected ) %]<option value="[% Bsort.authorised_value | html %]" selected="selected">[% Bsort.lib | html %]</option>[% ELSE %]<option value="[% Bsort.authorised_value | html %]" >[% Bsort.lib | html %]</option>[% END %]
234 [% IF ( hassort2 ) %]
235 <tr><td>Patron sort 2</td>
236 <td><input type="radio" name="Line" value="borrowers.sort2" /></td>
237 <td><input type="radio" name="Column" value="borrowers.sort2" /></td>
238 <td><select name="filter_borrowers.sort2" id="sort2">
239 <option value=""> </option>
240 [% FOREACH Bsort IN Bsort2 %]
241 [% IF ( Bsort.selected ) %]<option value="[% Bsort.authorised_value | html %]" selected="selected">[% Bsort.lib | html %]</option>[% ELSE %]<option value="[% Bsort.authorised_value | html %]" >[% Bsort.lib | html %]</option>[% END %]
248 </table><br /></fieldset>
250 <fieldset class="rows"><legend>Cell value </legend><ol><li><label for="cellvalue1">Count holds:</label> <input type="radio" name="Cellvalue" value="1" id="cellvalue1" checked="checked" /> </li>
251 <li><label for="cellvalue2">Count unique borrowers:</label> <input type="radio" name="Cellvalue" value="2" id="cellvalue2" /> </li><li><label for="cellvalue3">Count unique items:</label> <input type="radio" name="Cellvalue" id="cellvalue3" value="3" /> </li><li><label for="cellvalue4">Count unique bibliographic records:</label> <input type="radio" name="Cellvalue" id="cellvalue4" value="4" /> </li></ol></fieldset>
253 <fieldset class="rows">
254 <legend>Output</legend>
257 <label for="outputscreen">To screen into the browser: </label><input type="radio" checked="checked" name="output" id="outputscreen" value="screen" />
260 <label for="outputfile">To a file:</label> <input type="radio" name="output" value="file" id="outputfile" />
261 <label class="inline" for="basename">Named: </label><input type="text" name="basename" id="basename" value="Export" />
262 <label class="inline" for="MIME">Into an application:</label>
263 <select name="MIME" id="MIME" size="1">
264 [% FOREACH value IN CGIextChoice %]
265 <option value="[% value | html %]">[% value | html %]</option>
268 <select name="sep" id="sep" size="1">
269 [% FOREACH value IN CGIsepChoice.values.sort() %]
270 [% IF ( value == CGIsepChoice.default ) %]
271 <option value="[% value | html %]" selected="selected">[% value | html %]</option>
273 <option value="[% value | html %]">[% value | html %]</option>
281 <fieldset class="action">
282 <input type="submit" value="Submit" />
283 <input type="hidden" name="report_name" value="[% report_name | html %]" />
284 <input type="hidden" name="do_it" value="1" />
290 </div> <!-- /.col-sm-10.col-sm-push-2 -->
292 <div class="col-sm-2 col-sm-pull-10">
294 [% INCLUDE 'reports-menu.inc' %]
296 </div> <!-- /.col-sm-2.col-sm-pull-10 -->
297 </div> <!-- /.row -->
299 [% MACRO jsinclude BLOCK %]
300 [% INCLUDE 'calendar.inc' %]
302 $(document).ready(function() {
303 // http://jqueryui.com/demos/datepicker/#date-range
304 var dates = $( "#filter_reservedate_begin, #filter_reservedate_end" ).datepicker({
307 onSelect: function( selectedDate ) {
308 var option = this.id == "filter_reservedate_begin" ? "minDate" : "maxDate",
309 instance = $( this ).data( "datepicker" );
310 date = $.datepicker.parseDate(
311 instance.settings.dateFormat ||
312 $.datepicker._defaults.dateFormat,
313 selectedDate, instance.settings );
314 dates.not( this ).datepicker( "option", option, date );
317 var datesND = $( "#filter_notificationdate_begin, #filter_notificationdate_end" ).datepicker({
320 onSelect: function( selectedDate ) {
321 var option = this.id == "filter_notificationdate_begin" ? "minDate" : "maxDate",
322 instance = $( this ).data( "datepicker" );
323 date = $.datepicker.parseDate(
324 instance.settings.dateFormat ||
325 $.datepicker._defaults.dateFormat,
326 selectedDate, instance.settings );
327 datesND.not( this ).datepicker( "option", option, date );
330 var datesRD = $( "#filter_reminderdate_begin, #filter_reminderdate_end" ).datepicker({
333 onSelect: function( selectedDate ) {
334 var option = this.id == "filter_reminderdate_begin" ? "minDate" : "maxDate",
335 instance = $( this ).data( "datepicker" );
336 date = $.datepicker.parseDate(
337 instance.settings.dateFormat ||
338 $.datepicker._defaults.dateFormat,
339 selectedDate, instance.settings );
340 datesRD.not( this ).datepicker( "option", option, date );
343 var datesWD = $( "#filter_waitingdate_begin, #filter_waitingdate_end" ).datepicker({
346 onSelect: function( selectedDate ) {
347 var option = this.id == "filter_waitingdate_begin" ? "minDate" : "maxDate",
348 instance = $( this ).data( "datepicker" );
349 date = $.datepicker.parseDate(
350 instance.settings.dateFormat ||
351 $.datepicker._defaults.dateFormat,
352 selectedDate, instance.settings );
353 datesWD.not( this ).datepicker( "option", option, date );
356 var datesCD = $( "#filter_cancellationdate_begin, #filter_cancellationdate_end" ).datepicker({
359 onSelect: function( selectedDate ) {
360 var option = this.id == "filter_cancellationdate_begin" ? "minDate" : "maxDate",
361 instance = $( this ).data( "datepicker" );
362 date = $.datepicker.parseDate(
363 instance.settings.dateFormat ||
364 $.datepicker._defaults.dateFormat,
365 selectedDate, instance.settings );
366 datesCD.not( this ).datepicker( "option", option, date );
373 [% INCLUDE 'intranet-bottom.inc' %]