Koha/koha-tmpl/intranet-tmpl/prog/en/modules/circ/reserveratios.tmpl
Joe Atzberger de38cf6df1 Bug 3130 and general cleanup
Javascript error in FF and IE when loading page and no data matches criteria.
This was because it was passing more holds than necessary to the template and
letting a template conditional inside the loop control whether to display or not.
That doesn't make sense, and it forces the table to be displayed even when all
rows FAIL the conditional.  jquery.tablesorter was confused trying to be added
on top of an empty table with nothing to sort.

There were several other errors addressed by this patch:
 ~ 13 unused variables deleted.
 ~ regexps run on user-supplied $var before checking $var defined
 ~ decimal ratio prohibited and silently replaced with "3"

I also added the hold ratio to a column display, with a jquery tweak to put it in
the ratio input box on click.  Hidden .sql div now contains the actual query run,
like the other wizard reports.

Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
2009-04-29 07:29:10 -05:00

199 lines
8.5 KiB
Cheetah

<!-- TMPL_INCLUDE NAME="doc-head-open.inc" -->
<title>Koha &rsaquo; Circulation &rsaquo; Hold Ratios</title>
<!-- TMPL_INCLUDE NAME="doc-head-close.inc" -->
<!-- Additions to enable Calendar system -->
<link rel="stylesheet" type="text/css" href="<!-- TMPL_VAR name="themelang" -->/lib/calendar/calendar-system.css" />
<!-- End of additions --><!-- Additions to enable Calendar system -->
<script type="text/javascript" src="<!-- TMPL_VAR name="themelang" -->/lib/calendar/calendar.js"></script>
<script type="text/javascript" src="<!-- TMPL_VAR name="themelang" -->/lib/calendar/calendar-en.js"></script>
<script type="text/javascript" src="<!-- TMPL_VAR name="themelang" -->/lib/calendar/calendar-setup.js"></script>
<!-- End of additions -->
<script type="text/javascript" src="<!-- TMPL_VAR name="themelang" -->/lib/jquery/plugins/jquery.tablesorter.min.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() {
$("th a").hide();
$(".ratiolimit").click(function () {
$("#ratio").val($(this).html());
});
$(".ratiolimit").hover(
function () { $(this).toggleClass("ulined") },
function () { $(this).toggleClass("ulined") }
);
$.tablesorter.defaults.widgets = ['zebra'];
$("#holdst:has(tbody tr)").tablesorter({ // only add sort if the table has a body and rows
sortList: [[0,0]],
headers: { 1: { sorter: 'articles' }}
});
});
//]]>
</script>
<style type="text/css">
.sql { display: none; }
.ulined { text-decoration: underline; }
.ratiolimit { color: blue; cursor: pointer; }
</style>
</head>
<body>
<!-- TMPL_INCLUDE NAME="header.inc" -->
<!-- TMPL_INCLUDE NAME="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; Hold Ratios</div>
<div id="doc3" class="yui-t2">
<div id="bd">
<div id="yui-main">
<div class="yui-b">
<h1>Hold Ratios to Calculate Items Needed</h1>
<h3>Calculated on <!-- TMPL_VAR NAME="todaysdate" -->. From <!-- TMPL_VAR NAME="from" -->
to <!-- TMPL_VAR NAME="to" --></h3>
<p>These items have a hold ratio &ge; <!-- TMPL_VAR NAME="ratio" -->.</p>
<div class="sql"><!-- TMPL_VAR NAME="sql" DEFAULT="" --></div>
<!-- TMPL_IF NAME="reserveloop" -->
<table id="holdst">
<thead> <tr>
<th>Reserves
<a href="/cgi-bin/koha/circ/reserveratios.pl?ratio=<!-- TMPL_VAR NAME="ratio" -->&amp;order=reservecount&amp;from=<!-- TMPL_VAR NAME="from" -->&amp;to=<!-- TMPL_VAR NAME="to" -->">Sort</a>
</th>
<th>Items
<a href="/cgi-bin/koha/circ/reserveratios.pl?ratio=<!-- TMPL_VAR NAME="ratio" -->&amp;order=itemcount&amp;from=<!-- TMPL_VAR NAME="from" -->&amp;to=<!-- TMPL_VAR NAME="to" -->">Sort</a>
</th>
<th>Hold Ratio</th>
<th>Title
<a href="/cgi-bin/koha/circ/reserveratios.pl?ratio=<!-- TMPL_VAR NAME="ratio" -->&amp;order=biblio&amp;from=<!-- TMPL_VAR NAME="from" -->&amp;to=<!-- TMPL_VAR NAME="to" -->">Sort</a>
</th>
<th>Holding Libraries
<a href="/cgi-bin/koha/circ/reserveratios.pl?ratio=<!-- TMPL_VAR NAME="ratio" -->&amp;order=branch&amp;from=<!-- TMPL_VAR NAME="from" -->&amp;to=<!-- TMPL_VAR NAME="to" -->">Sort</a>
</th>
<th>Location
<a href="/cgi-bin/koha/circ/reserveratios.pl?ratio=<!-- TMPL_VAR NAME="ratio" -->&amp;order=location&amp;from=<!-- TMPL_VAR NAME="from" -->&amp;to=<!-- TMPL_VAR NAME="to" -->">Sort</a>
</th>
<th>Itype
<a href="/cgi-bin/koha/circ/reserveratios.pl?ratio=<!-- TMPL_VAR NAME="ratio" -->&amp;order=itype&amp;from=<!-- TMPL_VAR NAME="from" -->&amp;to=<!-- TMPL_VAR NAME="to" -->">Sort</a>
</th>
<th>Call Numbers
<a href="/cgi-bin/koha/circ/reserveratios.pl?ratio=<!-- TMPL_VAR NAME="ratio" -->&amp;order=callnumber&amp;from=<!-- TMPL_VAR NAME="from" -->&amp;to=<!-- TMPL_VAR NAME="to" -->">Sort</a>
</th>
<th>Items Needed
</th>
</tr></thead>
<tbody><!-- TMPL_LOOP NAME="reserveloop" -->
<tr>
<td><p><!-- TMPL_VAR NAME="reservecount" --></p></td>
<td><p><!-- TMPL_VAR NAME="itemcount" --></p></td>
<td><p class="ratiolimit"><!-- TMPL_VAR NAME="thisratio" --></p></td>
<td><p>
<!-- TMPL_IF name="BiblioDefaultViewmarc" -->
<a href="/cgi-bin/koha/catalogue/MARCdetail.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" ESCAPE="URL" -->">
<!-- TMPL_ELSIF name="BiblioDefaultViewisbd" -->
<a href="/cgi-bin/koha/catalogue/ISBDdetail.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" ESCAPE="URL" -->">
<!-- TMPL_ELSE -->
<a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" ESCAPE="URL" -->">
<!-- /TMPL_IF -->
<!-- TMPL_VAR NAME="title" escape="html" --> <!-- TMPL_VAR NAME="subtitle" -->
</a>
</p>
<p><!-- TMPL_VAR NAME="notes" --></p>
</td>
<td><p><!-- TMPL_VAR NAME="listbranch" --></p></td>
<td><p><!-- TMPL_VAR NAME="location" --></p></td>
<td><p><!-- TMPL_VAR NAME="itype" --></p></td>
<td><p><!-- TMPL_VAR NAME="listcall" --></p></td>
<td><!-- TMPL_IF NAME="thisratio_atleast1" --><p><b><!-- TMPL_VAR NAME="ratiocalc" --> to order</b></p><!-- /TMPL_IF --></td>
</tr>
<!-- /TMPL_LOOP --></tbody>
</table>
<!-- TMPL_ELSE -->
<b>No items found.</b>
<!-- /TMPL_IF -->
</div>
</div>
<div class="yui-b">
<form action="/cgi-bin/koha/circ/reserveratios.pl" method="post" >
<fieldset class="brief">
<h4>Refine Results:</h4>
<ol><li><label for="ratio">
Hold Ratio:
</label>
<input type="text" size="5" id="ratio" name="ratio" value="<!-- TMPL_VAR NAME="ratio" -->" /></li>
<li><label for="from">
Start date:
</label>
<input type="text" size="10" id="from" name="from" value="<!-- TMPL_VAR NAME="from" -->" />
<img src="<!-- TMPL_VAR Name="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 : "<!-- TMPL_VAR NAME="DHTMLcalendar_dateformat" -->",
button : "openCalendarFrom",
disableFunc : validate1,
dateStatusFunc : validate1
}
);
</script></li>
<li><label for="to" >
End date:
</label>
<input size="10" id="to" name="to" value="<!-- TMPL_VAR NAME="to" -->" type="text" />
<img src="<!-- TMPL_VAR Name="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 : "<!-- TMPL_VAR NAME="DHTMLcalendar_dateformat" -->",
button : "openCalendarTo",
disableFunc : validate2,
dateStatusFunc : validate2
}
);
</script></li></ol>
(inclusive)
<fieldset class="action"><input type="submit" value="Go" class="submit"/></fieldset>
</fieldset>
</form>
</div>
</div>
<!-- TMPL_INCLUDE NAME="intranet-bottom.inc" -->