Lines 56-61
Link Here
|
56 |
<div id="holdshistory" class="page-section"> |
56 |
<div id="holdshistory" class="page-section"> |
57 |
<h2>Current holds</h2> |
57 |
<h2>Current holds</h2> |
58 |
[% IF patron.holds.count %] |
58 |
[% IF patron.holds.count %] |
|
|
59 |
<div id="current_holds_filters" data-table-id="table_holdshistory"> |
60 |
<p> |
61 |
<span class="selected"> |
62 |
<input id="current_show_all" type="checkbox" checked="checked" class="show_all"/> |
63 |
<label for="current_show_all">Show all</label> |
64 |
</span> |
65 |
<span class="selected"> |
66 |
<input id="current_pending_filter" type="checkbox" checked="checked" /> |
67 |
<label for="current_pending_filter">Pending</label> |
68 |
</span> |
69 |
<span class="selected"> |
70 |
<input id="current_waiting_filter" type="checkbox" checked="checked" /> |
71 |
<label for="current_waiting_filter">Waiting</label> |
72 |
</span> |
73 |
<span class="selected"> |
74 |
<input id="current_processing_filter" type="checkbox" checked="checked" /> |
75 |
<label for="current_processing_filter">Processing</label> |
76 |
</span> |
77 |
<span class="selected"> |
78 |
<input id="current_transit_filter" type="checkbox" checked="checked" /> |
79 |
<label for="current_transit_filter">In transit</label> |
80 |
</span> |
81 |
</p> |
82 |
</div> |
59 |
<table id="table_holdshistory"> |
83 |
<table id="table_holdshistory"> |
60 |
<thead> |
84 |
<thead> |
61 |
<tr> |
85 |
<tr> |
Lines 81-86
Link Here
|
81 |
|
105 |
|
82 |
<h2>Historical holds</h2> |
106 |
<h2>Historical holds</h2> |
83 |
[% IF patron.old_holds.count %] |
107 |
[% IF patron.old_holds.count %] |
|
|
108 |
<div id="old_holds_filters" data-table-id="table_oldholdshistory"> |
109 |
<p> |
110 |
<span class="selected"> |
111 |
<input id="old_show_all" type="checkbox" checked="checked" class="show_all"/> |
112 |
<label for="old_show_all">Show all</label> |
113 |
</span> |
114 |
<span class="selected"> |
115 |
<input id="old_fulfilled_filter" type="checkbox" checked="checked" /> |
116 |
<label for="old_fulfilled_filter">Fulfilled</label> |
117 |
</span> |
118 |
<span class="selected"> |
119 |
<input id="old_cancelled_filter" type="checkbox" checked="checked" /> |
120 |
<label for="old_cancelled_filter">Cancelled</label> |
121 |
</span> |
122 |
</p> |
123 |
</div> |
84 |
<table id="table_oldholdshistory"> |
124 |
<table id="table_oldholdshistory"> |
85 |
<thead> |
125 |
<thead> |
86 |
<tr> |
126 |
<tr> |
Lines 129-140
Link Here
|
129 |
//Remove item type column settings |
169 |
//Remove item type column settings |
130 |
table_settings['columns'] = table_settings['columns'].filter(function(c){return c['columnname'] != 'itemtype';}); |
170 |
table_settings['columns'] = table_settings['columns'].filter(function(c){return c['columnname'] != 'itemtype';}); |
131 |
[% END %] |
171 |
[% END %] |
132 |
build_holds_table("#table_holdshistory"); |
172 |
let current_holds_table = build_holds_table("#table_holdshistory"); |
133 |
build_holds_table("#table_oldholdshistory", 1); |
173 |
let old_holds_table = build_holds_table("#table_oldholdshistory", 1); |
134 |
function build_holds_table(table_id, old){ |
174 |
function build_holds_table(table_id, old){ |
|
|
175 |
let additional_filters = { |
176 |
"-or": function(){ |
177 |
let statuses = []; |
178 |
let include_cancelled = false; |
179 |
if ( table_id == '#table_holdshistory' ) { |
180 |
if ( $("#current_pending_filter").is(":checked") ) { |
181 |
statuses.push(null); |
182 |
} |
183 |
if ( $("#current_waiting_filter").is(":checked") ) { |
184 |
statuses.push("W"); |
185 |
} |
186 |
if ( $("#current_processing_filter").is(":checked") ) { |
187 |
statuses.push("P"); |
188 |
} |
189 |
if ( $("#current_transit_filter").is(":checked") ) { |
190 |
statuses.push("T"); |
191 |
} |
192 |
} else { |
193 |
if ( $("#old_fulfilled_filter").is(":checked") ) { |
194 |
statuses.push("F"); |
195 |
} |
196 |
if ( $("#old_cancelled_filter").is(":checked") ) { |
197 |
include_cancelled = true; |
198 |
} |
199 |
} |
200 |
if ( include_cancelled ) { |
201 |
return [{status: statuses}, { cancellation_date: {"<": new Date().toISOString() } } ]; // cancellation_date cannot be in the future. Would be better a 'not null' here however. |
202 |
} else { |
203 |
return [{status: statuses}]; |
204 |
} |
205 |
}, |
206 |
|
207 |
}; |
208 |
|
135 |
let table_url = '/api/v1/patrons/[% patron.borrowernumber | uri %]/holds'; |
209 |
let table_url = '/api/v1/patrons/[% patron.borrowernumber | uri %]/holds'; |
136 |
if (old){table_url += '?old=1'} |
210 |
if (old){table_url += '?old=1'} |
137 |
$(table_id).kohaTable({ |
211 |
return $(table_id).kohaTable({ |
138 |
ajax: { |
212 |
ajax: { |
139 |
url: table_url, |
213 |
url: table_url, |
140 |
}, |
214 |
}, |
Lines 232-239
Link Here
|
232 |
}, |
306 |
}, |
233 |
[% END %] |
307 |
[% END %] |
234 |
{ |
308 |
{ |
235 |
data: "found", // FIXME filter with dropdown list |
309 |
data: "status", |
236 |
searchable: true, |
310 |
searchable: false, |
237 |
orderable: true, |
311 |
orderable: true, |
238 |
render: function (data, type, row, meta) { |
312 |
render: function (data, type, row, meta) { |
239 |
if ( row.status == 'F' ) { |
313 |
if ( row.status == 'F' ) { |
Lines 256-263
Link Here
|
256 |
} |
330 |
} |
257 |
}, |
331 |
}, |
258 |
], |
332 |
], |
259 |
}, table_settings); |
333 |
}, table_settings, true, additional_filters); |
260 |
} |
334 |
} |
|
|
335 |
$("#current_holds_filters :checkbox, #old_holds_filters :checkbox").on("change", function(e){ |
336 |
e.preventDefault(); |
337 |
let container = $(this).closest("div"); |
338 |
if ( $(this).hasClass("show_all") ) { |
339 |
if ( $(this).is(":checked") ) { |
340 |
container.find(":checkbox").prop("checked", true); |
341 |
} |
342 |
} else if ( $(this).not(":checked") ) { |
343 |
container.find(".show_all").prop("checked", false); |
344 |
} |
345 |
let table_dt = $("#"+container.data("table-id")).DataTable(); |
346 |
table_dt.draw(); |
347 |
}); |
261 |
}); |
348 |
}); |
262 |
</script> |
349 |
</script> |
263 |
[% END %] |
350 |
[% END %] |
264 |
- |
|
|