Koha/koha-tmpl/intranet-tmpl/prog/en/modules/circ/pendingreserves.tt
Owen Leonard 9a9a05aee8 Bug 12088: Improve date handling and sorting in holds to pull report
The holds to pull report could be improved by improving sorting on the
title and date columns. This patch adds "anti-the" sorting to the title
column and "title-string" sorting to the date column.

Date formatting of another variable has been moved to the template for
formatting using KohaDates.

The patch includes other corrections for HTML validity.

To test, apply the patch and view the holds to pull report.
 - Sorting by date should work correctly regardless of dateformat system
   preference setting.
 - Sorting of the title columns should correctly ignore articles.
 - Formatting of the "Reported on" date should be correct.

Revision incorporates the corrections made by Bug 12127 and converts
those changes to use class-based sorting.

Signed-off-by: David Cook <dcook@prosentient.com.au>

The patch works as described. Thanks for including and improving the
changes from Bug 12127, Owen!

Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
Passes QA script and tests.
No regressions found, works as advertised.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
2014-04-28 18:31:29 +00:00

189 lines
7 KiB
Text

[% USE KohaDates %]
[% INCLUDE 'doc-head-open.inc' %]
<title>Koha &rsaquo; Circulation &rsaquo; Holds to pull</title>
[% INCLUDE 'doc-head-close.inc' %]
[% INCLUDE 'calendar.inc' %]
<!-- Plugin datatables -->
<link rel="stylesheet" type="text/css" href="[% themelang %]/css/datatables.css" />
[% INCLUDE 'datatables.inc' %]
<script type="text/JavaScript">
//<![CDATA[
$(document).ready(function() {
var holdst = $("#holdst").dataTable($.extend(true, {}, dataTablesDefaults, {
"aoColumnDefs": [
{ "sType": "anti-the", "aTargets" : [ "anti-the" ] },
{ "sType": "title-string", "aTargets" : [ "title-string" ] },
{ "sType": "string", "aTargets": [ "string-sort" ] } //Target columns that use <br> separators and pull-down menus.
]
}));
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 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]);
}
}
}
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 () {
var filter_value = $(this).val();
if(filter_value){
filter_value = "(^|>)"+filter_value+"($|<)";
}
holdst.fnFilter( filter_value, 4, true );
} );
} );
$("#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 );
} );
} );
});
//]]>
</script>
</head>
<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> &rsaquo; <a href="/cgi-bin/koha/circ/circulation-home.pl">Circulation</a> &rsaquo; Holds to pull</div>
<div id="doc3" class="yui-t2">
<div id="bd">
<div id="yui-main">
<div class="yui-b">
<h2>Holds to pull[% IF ( run_report ) %] placed between [% from %] and [% to %][% END %]</h2>
[% IF ( run_report ) %]
<h3>Reported on [% todaysdate | $KohaDates %]</h3>
<p>The following holds have not been filled. Please retrieve them and check them in.</p>
<div class="searchresults">
[% IF ( reserveloop ) %]
<table id="holdst">
<thead>
<tr>
<th>Pull this many items</th>
<th>Items available</th>
<th>Patrons with holds</th>
<th class="anti-the">Title</th>
<th class="string-sort">Libraries</th>
<th>Available call numbers</th>
<th>Available copy numbers</th>
<th>Available enumeration</th>
<th class="string-sort">Available itypes</th>
<th class="string-sort">Available locations</th>
<th class="title-string">Earliest hold date</th>
</tr>
</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 %]</a></p>
[% IF ( reserveloo.author ) %]<p> by [% reserveloo.author %]</p>[% END %]
</td>
[% ELSE %]
<td>"</td>
<td>"</td>
<td>"</td>
<td>"</td>
[% END %]
<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>
<span title="[% reserveloo.reservedate %]">[% reserveloo.reservedate | $KohaDates %] in [% reserveloo.branch %]</span>
[% 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>
[% END %]
</div>
[% END %]
</div>
</div>
<div class="yui-b">
<div id="filters">
<form action="/cgi-bin/koha/circ/pendingreserves.pl" method="post" >
<fieldset class="brief">
<h4>Refine results</h4>
<ol>
<li>
<label for="from">
Start date:
</label>
<input type="text" size="10" id="from" name="from" value="[% from %]" class="datepickerfrom" />
</li>
<li><label for="to">
End date:
</label>
<input type="text" size="10" id="to" name="to" value="[% to %]" class="datepickerto" />
</li>
</ol>
<p><i>(Inclusive, default is [% HoldsToPullStartDate %] days ago to [% IF ( HoldsToPullEndDate ) %][% HoldsToPullEndDate %] days ahead[% ELSE %]today[% END %], set other date ranges as needed. )</i></p>
<fieldset class="action"><input type="submit" name="run_report" value="Submit" class="submit"/></fieldset>
</fieldset>
</form>
</div>
</div>
</div>
[% INCLUDE 'intranet-bottom.inc' %]