1 [% INCLUDE 'doc-head-open.inc' %]
2 <title>Koha › Reports › Holds statistics [% IF ( do_it ) %]› Results[% END %]</title>
3 [% INCLUDE 'doc-head-close.inc' %]
4 [% INCLUDE 'calendar.inc' %]
5 <style type="text/css">
10 [% INCLUDE 'header.inc' %]
11 [% INCLUDE 'cat-search.inc' %]
13 <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>
15 <div id="doc3" class="yui-t2">
23 <h1>Holds statistics</h1>
24 [% IF ( loopfilter ) %]
27 [% FOREACH loopfilte IN loopfilter %]
28 [% IF ( loopfilte.err ) %]<li class="error">Error:
29 [% ELSIF ( loopfilte.sql ) %]<li class="sql">
32 [% loopfilte.crit %] [% loopfilte.filter %]
38 [% FOREACH mainloo IN mainloop %]
42 <th>[% mainloo.line %] / [% mainloo.column %]</th>
43 [% FOREACH loopco IN mainloo.loopcol %]
44 <th>[% loopco.coltitle_display |html %]</th>
48 [% FOREACH loopro IN mainloo.looprow %]
52 <tr class="highlight">
54 <td>[% loopro.rowtitle_display or "UNKNOWN VALUE" |html %]</td>
55 [% FOREACH loopcel IN loopro.loopcell %]
57 [% IF ( loopcel.url_complement ) %]<a href="reserves_stats.pl?output=[% loopcel.output %]&[% loopcel.url_complement %]">[% loopcel.value %]</a>[% ELSE %][% loopcel.value %][% END %]
60 <td align="center">[% loopro.totalrow %]</td>
65 [% FOREACH loopfoote IN mainloo.loopfooter %]
66 <th>[% loopfoote.totalcol %]</th>
68 <th>[% mainloo.total %]</th>
75 <form method="post" action="/cgi-bin/koha/reports/reserves_stats.pl">
76 <fieldset class="rows">
77 <legend>Holds statistics</legend><table>
89 <td><input type="radio" name="Line" value="reservestatus" /></td>
90 <td><input type="radio" name="Column" value="reservestatus" checked="checked" /></td>
92 <input type="checkbox" name="filter_reservestatus_or_1" value="1"> Asked</input>
93 <input type="checkbox" name="filter_reservestatus_or_2" value="2"> Processing</input>
94 <input type="checkbox" name="filter_reservestatus_or_3" value="3"> Waiting</input>
95 <input type="checkbox" name="filter_reservestatus_or_4" value="4"> Satisfied</input>
96 <input type="checkbox" name="filter_reservestatus_or_5" value="5"> Cancelled</input>
99 <tr class="highlight">
101 <td><input type="radio" name="Line" value="reservedate" /></td>
102 <td><input type="radio" name="Column" value="reservedate" /></td>
103 <td><label for="reservedate_begin">From</label> <input type="text" size="10" id="filter_reservedate_begin" name="filter_reservedate_begin" />
104 <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show Calendar" border="0" id="openreservedateFrom" style="cursor: pointer;" />
105 <script type="text/javascript">
107 function validate1(date) {
108 var day = date.getDate();
109 var month = date.getMonth() + 1;
110 var year = date.getFullYear();
111 var weekDay = date.getDay();
112 var dayMonth = month + '-' + day;
113 var dateString = year + '-' + month + '-' + day;
114 var dateTo = document.getElementById('filter_reservedate_end').value.split("-");
115 var limitDate = new Date(dateTo[0], (dateTo[1] - 1), dateTo[2]);
116 if (date > limitDate) {
123 inputField : "filter_reservedate_begin",
124 ifFormat : "[% DHTMLcalendar_dateformat %]",
125 button : "openreservedateFrom",
126 disableFunc : validate1,
127 dateStatusFunc : validate1
131 <label for="filter_reservedate_end">To</label> <input size="10" id="filter_reservedate_end" name="filter_reservedate_end" value="" type="text" />
132 <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show Calendar" id="openreservedateTo" style="cursor: pointer;" border="0" />
133 <script type="text/javascript">
135 function validate2(date) {
136 var day = date.getDate();
137 var month = date.getMonth() + 1;
138 var year = date.getFullYear();
139 var weekDay = date.getDay();
140 var dayMonth = month + '-' + day;
141 var dateString = year + '-' + month + '-' + day;
142 var dateFrom = document.getElementById('filter_reservedate_begin').value.split("-");
143 var limitDate = new Date(dateFrom[0], (dateFrom[1] - 1), dateFrom[2]);
144 if (limitDate > date) {
151 inputField : "filter_reservedate_end",
152 ifFormat : "[% DHTMLcalendar_dateformat %]",
153 button : "openreservedateTo",
154 disableFunc : validate2,
155 dateStatusFunc : validate2
162 <td>Notification Date</td>
163 <td><input type="radio" name="Line" value="notificationdate" /></td>
164 <td><input type="radio" name="Column" value="notificationdate" /></td>
165 <td><label for="filter_notificationdate_begin">From</label> <input type="text" size="10" id="filter_notificationdate_begin" name="filter_notificationdate_begin" />
166 <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show Calendar" border="0" id="opennotificationdateFrom" style="cursor: pointer;" />
167 <script type="text/javascript">
169 function validate1(date) {
170 var day = date.getDate();
171 var month = date.getMonth() + 1;
172 var year = date.getFullYear();
173 var weekDay = date.getDay();
174 var dayMonth = month + '-' + day;
175 var dateString = year + '-' + month + '-' + day;
176 var dateTo = document.getElementById('filter_notificationdate_end').value.split("-");
177 var limitDate = new Date(dateTo[0], (dateTo[1] - 1), dateTo[2]);
178 if (date > limitDate) {
185 inputField : "filter_notificationdate_begin",
186 ifFormat : "[% DHTMLcalendar_dateformat %]",
187 button : "opennotificationdateFrom",
188 disableFunc : validate1,
189 dateStatusFunc : validate1
193 <label for="filter_notificationdate_end">To</label> <input size="10" id="filter_notificationdate_end" name="filter_notificationdate_end" value="" type="text" />
194 <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show Calendar" id="opennotificationdateTo" style="cursor: pointer;" border="0" />
195 <script type="text/javascript">
197 function validate2(date) {
198 var day = date.getDate();
199 var month = date.getMonth() + 1;
200 var year = date.getFullYear();
201 var weekDay = date.getDay();
202 var dayMonth = month + '-' + day;
203 var dateString = year + '-' + month + '-' + day;
204 var dateFrom = document.getElementById('filter_notificationdate_begin').value.split("-");
205 var limitDate = new Date(dateFrom[0], (dateFrom[1] - 1), dateFrom[2]);
206 if (limitDate > date) {
213 inputField : "filter_notificationdate_end",
214 ifFormat : "[% DHTMLcalendar_dateformat %]",
215 button : "opennotificationdateTo",
216 disableFunc : validate2,
217 dateStatusFunc : validate2
224 <td>Reminder Date</td>
225 <td><input type="radio" name="Line" value="reminderdate" /></td>
226 <td><input type="radio" name="Column" value="reminderdate" /></td>
227 <td><label for="filter_reminderdate_begin">From</label> <input type="text" size="10" id="filter_reminderdate_begin" name="Filter" />
228 <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show Calendar" border="0" id="openreminderdateFrom" style="cursor: pointer;" />
229 <script type="text/javascript">
231 function validate1(date) {
232 var day = date.getDate();
233 var month = date.getMonth() + 1;
234 var year = date.getFullYear();
235 var weekDay = date.getDay();
236 var dayMonth = month + '-' + day;
237 var dateString = year + '-' + month + '-' + day;
238 var dateTo = document.getElementById('filter_reminderdate_end').value.split("-");
239 var limitDate = new Date(dateTo[0], (dateTo[1] - 1), dateTo[2]);
240 if (date > limitDate) {
247 inputField : "filter_reminderdate_begin",
248 ifFormat : "[% DHTMLcalendar_dateformat %]",
249 button : "openreminderdateFrom",
250 disableFunc : validate1,
251 dateStatusFunc : validate1
255 <label for="filter_reminderdate_end">To</label> <input size="10" id="filter_reminderdate_end" name="filter_reminderdate_end" value="" type="text" />
256 <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show Calendar" id="openreminderdateTo" style="cursor: pointer;" border="0" />
257 <script type="text/javascript">
259 function validate2(date) {
260 var day = date.getDate();
261 var month = date.getMonth() + 1;
262 var year = date.getFullYear();
263 var weekDay = date.getDay();
264 var dayMonth = month + '-' + day;
265 var dateString = year + '-' + month + '-' + day;
266 var dateFrom = document.getElementById('filter_reminderdate_begin').value.split("-");
267 var limitDate = new Date(dateFrom[0], (dateFrom[1] - 1), dateFrom[2]);
268 if (limitDate > date) {
275 inputField : "filter_reminderdate_end",
276 ifFormat : "[% DHTMLcalendar_dateformat %]",
277 button : "openreminderdateTo",
278 disableFunc : validate2,
279 dateStatusFunc : validate2
286 <td>Waiting Date</td>
287 <td><input type="radio" name="Line" value="waitingdate" /></td>
288 <td><input type="radio" name="Column" value="waitingdate" /></td>
289 <td><label for="filter_waitingdate_begin">From</label> <input type="text" size="10" id="filter_waitingdate_begin" name="filter_waitingdate_begin" />
290 <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show Calendar" border="0" id="openwaitingdateFrom" style="cursor: pointer;" />
291 <script type="text/javascript">
293 function validate1(date) {
294 var day = date.getDate();
295 var month = date.getMonth() + 1;
296 var year = date.getFullYear();
297 var weekDay = date.getDay();
298 var dayMonth = month + '-' + day;
299 var dateString = year + '-' + month + '-' + day;
300 var dateTo = document.getElementById('filter_waitingdate_end').value.split("-");
301 var limitDate = new Date(dateTo[0], (dateTo[1] - 1), dateTo[2]);
302 if (date > limitDate) {
309 inputField : "filter_waitingdate_begin",
310 ifFormat : "[% DHTMLcalendar_dateformat %]",
311 button : "openwaitingdateFrom",
312 disableFunc : validate1,
313 dateStatusFunc : validate1
317 <label for="filter_waitingdate_end">To</label> <input size="10" id="filter_waitingdate_end" name="filter_waitingdate_end" value="" type="text" />
318 <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show Calendar" id="openwaitingdateTo" style="cursor: pointer;" border="0" />
319 <script type="text/javascript">
321 function validate2(date) {
322 var day = date.getDate();
323 var month = date.getMonth() + 1;
324 var year = date.getFullYear();
325 var weekDay = date.getDay();
326 var dayMonth = month + '-' + day;
327 var dateString = year + '-' + month + '-' + day;
328 var dateFrom = document.getElementById('filter_waitingdate_begin').value.split("-");
329 var limitDate = new Date(dateFrom[0], (dateFrom[1] - 1), dateFrom[2]);
330 if (limitDate > date) {
337 inputField : "filter_waitingdate_end",
338 ifFormat : "[% DHTMLcalendar_dateformat %]",
339 button : "openwaitingdateTo",
340 disableFunc : validate2,
341 dateStatusFunc : validate2
348 <td>Cancellation Date</td>
349 <td><input type="radio" name="Line" value="cancellationdate" /></td>
350 <td><input type="radio" name="Column" value="cancellationdate" /></td>
351 <td><label for="filter_cancellationdate_begin">From</label> <input type="text" size="10" id="filter_cancellationdate_begin" name="filter_cancellationdate_begin" />
352 <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show Calendar" border="0" id="opencancellationdateFrom" style="cursor: pointer;" />
353 <script type="text/javascript">
355 function validate1(date) {
356 var day = date.getDate();
357 var month = date.getMonth() + 1;
358 var year = date.getFullYear();
359 var weekDay = date.getDay();
360 var dayMonth = month + '-' + day;
361 var dateString = year + '-' + month + '-' + day;
362 var dateTo = document.getElementById('filter_cancellationdate_end').value.split("-");
363 var limitDate = new Date(dateTo[0], (dateTo[1] - 1), dateTo[2]);
364 if (date > limitDate) {
371 inputField : "filter_cancellationdate_begin",
372 ifFormat : "[% DHTMLcalendar_dateformat %]",
373 button : "opencancellationdateFrom",
374 disableFunc : validate1,
375 dateStatusFunc : validate1
379 <label for="filter_cancellationdate_end">To</label> <input size="10" id="filter_cancellationdate_end" name="filter_cancellationdate_end" value="" type="text" />
380 <img src="[% themelang %]/lib/calendar/cal.gif" alt="Show Calendar" id="opencancellationdateTo" style="cursor: pointer;" border="0" />
381 <script type="text/javascript">
383 function validate2(date) {
384 var day = date.getDate();
385 var month = date.getMonth() + 1;
386 var year = date.getFullYear();
387 var weekDay = date.getDay();
388 var dayMonth = month + '-' + day;
389 var dateString = year + '-' + month + '-' + day;
390 var dateFrom = document.getElementById('filter_cancellationdate_begin').value.split("-");
391 var limitDate = new Date(dateFrom[0], (dateFrom[1] - 1), dateFrom[2]);
392 if (limitDate > date) {
399 inputField : "filter_cancellationdate_end",
400 ifFormat : "[% DHTMLcalendar_dateformat %]",
401 button : "opencancellationdateTo",
402 disableFunc : validate2,
403 dateStatusFunc : validate2
410 <td>Patron Category</td>
411 <td><input type="radio" name="Line" value="borrowers.categorycode" /></td>
412 <td><input type="radio" name="Column" value="borrowers.categorycode" /></td>
413 <td><select name="filter_categorycode" id="borcat">
414 <option value=""> </option>
415 [% FOREACH categoryloo IN categoryloop %]
416 [% IF ( categoryloo.selected ) %]<option value="[% categoryloo.categorycode %]" selected="selected">[% categoryloo.description %]</option>[% ELSE %]<option value="[% categoryloo.categorycode %]">[% categoryloo.description %]</option>[% END %]
421 <tr class="highlight">
423 <td><input type="radio" name="Line" value="items.itype" /></td>
424 <td><input type="radio" name="Column" value="items.itype" /></td>
425 <td><select name="filter_items.itype" id="itype">
426 <option value=""> </option>
427 [% FOREACH itypeloo IN itypeloop %]
428 [% IF ( itypeloo.selected ) %]<option value="[% itypeloo.code %]" selected="selected">[% itypeloo.description %]</option>[% ELSE %]<option value="[% itypeloo.code %]">[% itypeloo.description %]</option>[% END %]
434 <td>Pickup Library</td>
435 <td><input type="radio" name="Line" value="reserves.branchcode" checked="checked" /></td>
436 <td><input type="radio" name="Column" value="reserves.branchcode" /></td>
437 <td><select name="filter_reserves.branchcode" id="resbranchcode">
438 <option value=""> </option>
439 [% FOREACH branchloo IN branchloop %]
440 [% IF ( branchloo.selected ) %]<option value="[% branchloo.value %]" selected="selected">[% branchloo.branchname %]</option>[% ELSE %]<option value="[% branchloo.value %]">[% branchloo.branchname %]</option>[% END %]
445 <tr class="highlight">
446 <td>Holding Library</td>
447 <td><input type="radio" name="Line" value="holdingbranch" /></td>
448 <td><input type="radio" name="Column" value="holdingbranch" /></td>
449 <td><select name="filter_holdingbranch" id="holdingbranch">
450 <option value=""> </option>
451 [% FOREACH branchloo IN branchloop %]
452 [% IF ( branchloo.selected ) %]<option value="[% branchloo.value %]" selected="selected">[% branchloo.branchname %]</option>[% ELSE %]<option value="[% branchloo.value %]">[% branchloo.branchname %]</option>[% END %]
458 <td>Home Library</td>
459 <td><input type="radio" name="Line" value="homebranch" /></td>
460 <td><input type="radio" name="Column" value="homebranch" /></td>
461 <td><select name="filter_homebranch" id="homebranch">
462 <option value=""> </option>
463 [% FOREACH branchloo IN branchloop %]
464 [% IF ( branchloo.selected ) %]<option value="[% branchloo.value %]" selected="selected">[% branchloo.branchname %]</option>[% ELSE %]<option value="[% branchloo.value %]">[% branchloo.branchname %]</option>[% END %]
469 <tr class="highlight">
471 <td><input type="radio" name="Line" value="items.ccode" /></td>
472 <td><input type="radio" name="Column" value="items.ccode" /></td>
473 <td><select name="filter_items.ccode" id="ccode">
474 <option value=""> </option>
475 [% FOREACH ccodeloo IN ccodeloop %]
476 [% IF ( ccodeloo.selected ) %] <option value="[% ccodeloo.code %]" selected="selected">[% ccodeloo.description %]</option>[% ELSE %]<option value="[% ccodeloo.code %]">[% ccodeloo.description %]</option>[% END %]
482 <td>Shelving Location</td>
483 <td><input type="radio" name="Line" value="items.location" /></td>
484 <td><input type="radio" name="Column" value="items.location" /></td>
485 <td><select name="filter_items.location" id="location">
486 <option value=""> </option>
487 [% FOREACH locationloo IN locationloop %]
488 [% IF ( locationloo.selected ) %]<option value="[% locationloo.code %]" selected="selected">[% locationloo.description %]</option>[% ELSE %]<option value="[% locationloo.code %]">[% locationloo.description %]</option>[% END %]
493 <tr class="highlight">
494 <td>Item Call Number</td>
497 <td>From <input type="text" name="filter_itemcallnumber" size="10" /> (inclusive) to <input type="text" name="fiter_itemcallnumber" size="10" /> (exclusive) </td>
499 [% IF ( hassort1 ) %]
500 <tr><td>Patron sort1</td>
501 <td><input type="radio" name="Line" value="borrowers.sort1" /></td>
502 <td><input type="radio" name="Column" value="borrowers.sort1" /></td>
503 <td><select name="filter_borrowers.sort1" id="sort1">
504 <option value=""> </option>
505 [% FOREACH Bsort IN Bsort1 %]
506 [% IF ( Bsort.selected ) %]<option value="[% Bsort.authorised_value %]" selected="selected">[% Bsort.lib %]</option>[% ELSE %]<option value="[% Bsort.authorised_value %]" >[% Bsort.lib %]</option>[% END %]
512 [% IF ( hassort2 ) %]
513 <tr class="highlight"><td>Patron sort2</td>
514 <td><input type="radio" name="Line" value="borrowers.sort2" /></td>
515 <td><input type="radio" name="Column" value="borrowers.sort2" /></td>
516 <td><select name="filter_borrowers.sort2" id="sort2">
517 <option value=""> </option>
518 [% FOREACH Bsort IN Bsort2 %]
519 [% IF ( Bsort.selected ) %]<option value="[% Bsort.authorised_value %]" selected="selected">[% Bsort.lib %]</option>[% ELSE %]<option value="[% Bsort.authorised_value %]" >[% Bsort.lib %]</option>[% END %]
526 </table><br /></fieldset>
528 <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>
529 <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 biblios</label> <input type="radio" name="Cellvalue" id="cellvalue4" value="4" /> </li></ol></fieldset>
531 <fieldset class="rows">
532 <legend>Output</legend>
533 <ol><li><label for="outputscreen">To screen into the browser: </label><input type="radio" checked="checked" name="output" id="outputscreen" value="screen" /> </li>
534 <li><label for="outputfile">To a file:</label> <input type="radio" name="output" value="file" id="outputfile" /> <label class="inline" for="basename">Named: </label><input type="text" name="basename" id="basename" value="Export" /> <label class="inline" for="MIME">Into an application
535 </label>[% CGIextChoice %]
536 [% CGIsepChoice %]</li></ol>
539 <fieldset class="action">
540 <input type="submit" value="Submit" />
541 <input type="hidden" name="report_name" value="[% report_name %]" />
542 <input type="hidden" name="do_it" value="1" />
550 [% INCLUDE 'reports-menu.inc' %]
553 [% INCLUDE 'intranet-bottom.inc' %]