[% INCLUDE 'doc-head-open.inc' %]
-<title>Koha › Circulation › Holds to Pull</title>
+<title>Koha › Circulation › Holds to pull</title>
[% INCLUDE 'doc-head-close.inc' %]
-<!-- Additions to enable Calendar system -->
-<link rel="stylesheet" type="text/css" href="[% themelang %]/lib/calendar/calendar-system.css" />
-<!-- End of additions --><!-- Additions to enable Calendar system -->
-<script type="text/javascript" src="[% themelang %]/lib/calendar/calendar.js"></script>
-<script type="text/javascript" src="[% themelang %]/lib/calendar/calendar-en.js"></script>
-<script type="text/javascript" src="[% themelang %]/lib/calendar/calendar-setup.js"></script>
-<!-- End of additions -->
-<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.tablesorter.min.js"></script>
+[% INCLUDE 'calendar.inc' %]
+<!-- Plugin datatables -->
+<link rel="stylesheet" type="text/css" href="[% themelang %]/css/datatables.css" />
+<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.dataTables.min.js"></script>
+<script type="text/javascript" src="[% themelang %]/js/datatables.js"></script>
<script type="text/JavaScript" language="JavaScript">
//<![CDATA[
-$.tablesorter.addParser({
- id: 'articles',
- is: function(s) {return false; },
- format: function(s) { return s.toLowerCase().replace(/^(the|an|a) /,''); },
- type: 'text'
+$(document).ready(function() {
+ [% IF (dateformat == 'metric') %]
+ dt_add_type_uk_date();
+ [% END %]
+ var holdst = $("#holdst").dataTable($.extend(true, {}, dataTablesDefaults, {
+ }));
+ holdst.fnAddFilters("filter");
+ [%# add separateData function to cleanse jQuery select lists by breaking apart strings glued with BR tags and then de-duplicating any repeated library codes %]
+ function separateData ( ColumnData ){
+ var cD = ColumnData;
+ var new_array = new Array();
+ for ( j=0 ; j<cD.length ; j++ ) {
+ var strMatch = cD[j].match(/<br>/gi);
+ if (strMatch) {
+ var split_array = cD[j].split(/<br>/gi);
+ for ( k=0 ; k<split_array.length ; k++ ){
+ var check_array = $.inArray(split_array[k], new_array);
+ if (check_array == -1) {
+ new_array.push(split_array[k]);
+ }
+ }
+ }
+ else {
+ var check_array = $.inArray(cD[j], new_array);
+ if (check_array == -1) {
+ new_array.push(cD[j]);
+ }
+ }
+ }
+ new_array.sort();
+ return new_array;
+ }
+ [%# add SeparateData function into createSelect function, so that it does the createSelect on clean data %]
+ function createSelect( data ) {
+ data = separateData(data);
+ var r='<select style="width:99%"><option value="">None</option>', i, len=data.length;
+ for ( i=0 ; i<len ; i++ ) {
+ r += '<option value="'+data[i]+'">'+data[i]+'</option>';
+ }
+ return r+'</select>';
+ }
+ $("#homebranchfilter").each( function () {
+ $(this).html( createSelect( holdst.fnGetColumnData(4) ) );
+ $('select', this).change( function () {
+ holdst.fnFilter( $(this).val(), 4 );
+ } );
+ } );
+ $("#itypefilter").each( function () {
+ $(this).html( createSelect( holdst.fnGetColumnData(8) ) );
+ $('select', this).change( function () {
+ holdst.fnFilter( $(this).val(), 8 );
+ } );
+ } );
+ $("#locationfilter").each( function () {
+ $(this).html( createSelect( holdst.fnGetColumnData(9) ) );
+ $('select', this).change( function () {
+ holdst.fnFilter( $(this).val(), 9 );
+ } );
+ } );
});
- $(document).ready(function() {
- $("th a").hide();
- $.tablesorter.defaults.widgets = ['zebra'];
- $("#holdst").tablesorter({[% IF ( dateformat == 'metric' ) %]
- dateFormat: 'uk',[% END %]
- sortList: [[3,0]],
- headers: { 0:{sorter:false},1:{sorter:false},3: { sorter: 'articles' },7:{sorter:false}}
- });
- });
//]]>
</script>
</head>
-<body>
+<body id="circ_pendingreserves" class="circ">
[% INCLUDE 'header.inc' %]
[% INCLUDE 'circ-search.inc' %]
-<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › <a href="/cgi-bin/koha/circ/circulation-home.pl">Circulation</a> › Holds to Pull</div>
+<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › <a href="/cgi-bin/koha/circ/circulation-home.pl">Circulation</a> › Holds to pull</div>
<div id="doc3" class="yui-t2">
-
+
<div id="bd">
- <div id="yui-main">
- <div class="yui-b">
+ <div id="yui-main">
+ <div class="yui-b">
-<h2>Holds to Pull[% IF ( run_report ) %] placed between [% from %] and [% to %][% END %]</h2>
+<h2>Holds to pull[% IF ( run_report ) %] placed between [% from %] and [% to %][% END %]</h2>
[% IF ( run_report ) %]
<h3>Reported on [% todaysdate %]</h3>
<p>The following holds have not been filled. Please retrieve them and check them in.</p>
[% IF ( reserveloop ) %]
<table id="holdst">
<thead>
- <tr>
- <th>
- Pull This Many Items
- </th>
- <th>
- Items Available
- </th>
- <th>
- Patrons with Holds
- </th>
- <th>Title
- <a href="/cgi-bin/koha/circ/pendingreserves.pl?order=biblio&from=[% from %]&to=[% to %]">Sort</a>
- </th>
- <th>
- Libraries
- <a href="/cgi-bin/koha/circ/pendingreserves.pl?order=library&from=[% from %]&to=[% to %]">Sort</a>
- </th>
- <th>
- Available Call Numbers
- <a href="/cgi-bin/koha/circ/pendingreserves.pl?order=call&from=[% from %]&to=[% to %]">Sort</a>
- </th>
- <th>
- Available Itypes
- <a href="/cgi-bin/koha/circ/pendingreserves.pl?order=itype&from=[% from %]&to=[% to %]">Sort</a>
- </th>
- <th>
- Available Locations
- <a href="/cgi-bin/koha/circ/pendingreserves.pl?order=location&from=[% from %]&to=[% to %]">Sort</a>
- </th>
- <th >Earliest Hold Date
- <a href="/cgi-bin/koha/circ/pendingreserves.pl?order=date&from=[% from %]&to=[% to %]">Sort</a>
- </th>
- </tr>
- </thead>
- <tbody>
- [% IF ( next_or_previous ) %]
<tr>
- <td colspan="3" align="left">
- [% IF ( prev_results ) %]
- <form action="/cgi-bin/koha/circ/pendingreserves.pl" method="POST">
- <input type="hidden" name="from" value="[% from %]">
- <input type="hidden" name="to" value="[% to %]">
- <input type="hidden" name="report_page" value="[% prev_results %]">
- <input type="submit" name="run_report" value="< Prev">
- </form>
- [% END %]
- </td>
- <td colspan="3"></td>
- <td colspan="3" align="right">
- [% IF ( next_results ) %]
- <form action="/cgi-bin/koha/circ/pendingreserves.pl" method="POST">
- <input type="hidden" name="from" value="[% from %]">
- <input type="hidden" name="to" value="[% to %]">
- <input type="hidden" name="report_page" value="[% next_results %]">
- <input type="submit" name="run_report" value="Next >">
- </form>
- [% END %]
- </td>
+ <th>Pull this many items</th>
+ <th>Items available</th>
+ <th>Patrons with holds</th>
+ <th>Title</th>
+ <th>Libraries</th>
+ <th>Available call numbers</th>
+ <th>Available copy No</th>
+ <th>Available enumeration</th>
+ <th>Available itypes</th>
+ <th>Available locations</th>
+ <th>Earliest hold date</th>
</tr>
- [% END %]
+ </thead>
+ <tbody>
[% FOREACH reserveloo IN reserveloop %]
<tr>
- [% IF ( reserveloo.borrowernumber ) %]
- <td><p><b>[% reserveloo.pullcount %]</b></p></td>
- <td>[% reserveloo.count %]</td>
- <td>[% reserveloo.rcount %]</td>
- <td>
- <p>
- [% INCLUDE 'biblio-default-view.inc' biblionumber = reserveloo.biblionumber %]
- [% reserveloo.title |html %] [% reserveloo.subtitle %]
- </a>
- </p>
- </td>
- [% ELSE %]
- <td colspan="3">
-
- </td>
- <td>"</td>
- [% END %]
- <td><p>[% reserveloo.holdingbranch %]</p></td>
- <td><p>[% reserveloo.itemcallnumber %]</p></td>
- <td><p>[% reserveloo.itype %]</p></td>
- <td><p>[% reserveloo.location %]</p></td>
- <td width="15%">
- <p>[% reserveloo.reservedate %]</p>
- <p>in [% reserveloo.branch %]</p>
- [% IF ( reserveloo.statusw ) %]<p>Waiting</p>[% END %][% IF ( reserveloo.statusf ) %]<p>Fullfilled</p>[% END %]
+ [% IF ( reserveloo.borrowernumber ) %]
+ <td><p><b>[% reserveloo.pullcount %]</b></p></td>
+ <td>[% reserveloo.count %]</td>
+ <td>[% reserveloo.rcount %]</td>
+ <td>
+ <p>
+ [% INCLUDE 'biblio-default-view.inc' biblionumber = reserveloo.biblionumber %]
+ [% reserveloo.title |html %]
+ </a> [% IF ( reserveloo.author ) %]<p> by [% reserveloo.author %]</p>[% END %]
+ </p>
</td>
- </tr>
+ [% ELSE %]
+ <td>"</td>
+ <td>"</td>
+ <td>"</td>
+ <td>"</td>
[% END %]
- [% IF ( next_or_previous ) %]
- <tr>
- <td colspan="3" align="left">
- [% IF ( prev_results ) %]
- <form action="/cgi-bin/koha/circ/pendingreserves.pl" method="POST">
- <input type="hidden" name="from" value="[% from %]">
- <input type="hidden" name="to" value="[% to %]">
- <input type="hidden" name="report_page" value="[% prev_results %]">
- <input type="submit" name="run_report" value="< Prev">
- </form>
- [% END %]
- </td>
- <td colspan="3"></td>
- <td colspan="3" align="right">
- [% IF ( next_results ) %]
- <form action="/cgi-bin/koha/circ/pendingreserves.pl" method="POST">
- <input type="hidden" name="from" value="[% from %]">
- <input type="hidden" name="to" value="[% to %]">
- <input type="hidden" name="report_page" value="[% next_results %]">
- <input type="submit" name="run_report" value="Next >">
- </form>
- [% END %]
- </td>
+ <td>[% reserveloo.holdingbranch %]</td>
+ <td><p>[% reserveloo.itemcallnumber %]</p></td>
+ <td><p>[% reserveloo.copyno %]</p></td>
+ <td><p>[% reserveloo.enumchron %]</p></td>
+ <td>[% reserveloo.itype %]</td>
+ <td>[% reserveloo.location %]</td>
+ <td width="15%">
+ <p>[% reserveloo.reservedate %]</p>
+ <p>in [% reserveloo.branch %]</p>
+ [% IF ( reserveloo.statusw ) %]<p>Waiting</p>[% END %][% IF ( reserveloo.statusf ) %]<p>Fullfilled</p>[% END %]
+ </td>
</tr>
[% END %]
</tbody>
+ <tfoot>
+ <tr>
+ <td><input type="text" class="filter" data-column_num="0" placeholder="Pull this many items" style="width:95%"/></td>
+ <td><input type="text" class="filter" data-column_num="1" placeholder="Items available" style="width:95%"/></td>
+ <td><input type="text" class="filter" data-column_num="2" placeholder="Patron holds" style="width:95%"/></td>
+ <td><input type="text" class="filter" data-column_num="3" placeholder="Title" style="width:95%"/></td>
+ <td id="homebranchfilter"></td>
+ <td><input type="text" class="filter" data-column_num="5" placeholder="Call number" style="width:95%"/></td>
+ <td><input type="text" class="filter" data-column_num="6" placeholder="Available copy" style="width:95%"/></td>
+ <td><input type="text" class="filter" data-column_num="7" placeholder="Available enumeration" style="width:95%"/></td>
+ <td id="itypefilter"></td>
+ <td id="locationfilter"></td>
+ <td></td>
+ </tr>
+ </tfoot>
</table>
[% ELSE %]
<b>No items found.</b>
<form action="/cgi-bin/koha/circ/pendingreserves.pl" method="post" >
<fieldset class="brief">
-<h4>Refine Results</h4>
+<h4>Refine results</h4>
<ol>
<li>
<label for="from">
Start date:
</label>
-<input type="text" size="10" id="from" name="from" value="[% from %]" />
-<img src="[% themelang %]/lib/calendar/cal.gif" border="0" id="openCalendarFrom" style="cursor: pointer;" alt="" />
-<script language="JavaScript" type="text/javascript">
-function validate1(date) {
- var day = date.getDate();
- var month = date.getMonth() + 1;
- var year = date.getFullYear();
- var weekDay = date.getDay();
- var dayMonth = month + '-' + day;
- var dateString = year + '-' + month + '-' + day;
- var dateTo = document.getElementById('to').value.split("-");
- var limitDate = new Date(dateTo[0], (dateTo[1] - 1), dateTo[2]);
- if (date > limitDate) {
- return true;
- } else {
- return false;
- }
-}
-Calendar.setup(
- {
- inputField : "from",
- ifFormat : "[% DHTMLcalendar_dateformat %]",
- button : "openCalendarFrom",
- disableFunc : validate1,
- dateStatusFunc : validate1
- }
-);
-</script></li>
+<input type="text" size="10" id="from" name="from" value="[% from %]" class="datepickerfrom" />
+</li>
<li><label for="to">
End date:
</label>
-<input size="10" id="to" name="to" value="[% to %]" type="text" />
-<img src="[% themelang %]/lib/calendar/cal.gif" alt="" id="openCalendarTo" style="cursor: pointer;" border="0" />
-<script type="text/javascript">
- function validate2(date) {
- var day = date.getDate();
- var month = date.getMonth() + 1;
- var year = date.getFullYear();
- var weekDay = date.getDay();
- var dayMonth = month + '-' + day;
- var dateString = year + '-' + month + '-' + day;
- var dateFrom = document.getElementById('from').value.split("-");
- var limitDate = new Date(dateFrom[0], (dateFrom[1] - 1), dateFrom[2]);
- if (limitDate > date) {
- return true;
- } else {
- return false;
- }
- }
-
- Calendar.setup(
- {
- inputField : "to",
- ifFormat : "[% DHTMLcalendar_dateformat %]",
- button : "openCalendarTo",
- disableFunc : validate2,
- dateStatusFunc : validate2
- }
- );
-</script></li>
+<input type="text" size="10" id="to" name="to" value="[% to %]" class="datepickerto" />
+</li>
</ol>
-<p><i>(Inclusive, default is two days ago to today, set other date ranges as needed. )</i></p>
+<p><i>(Inclusive, default is [% HoldsToPullStartDate %] days ago to today, set other date ranges as needed. )</i></p>
<fieldset class="action"><input type="submit" name="run_report" value="Submit" class="submit"/></fieldset>
</fieldset>
</form>