Lines 112-117
$("#placeBookingModal").on("show.bs.modal", function (e) {
Link Here
|
112 |
|
112 |
|
113 |
$("#booking_patron_id").on("select2:select", function (e) { |
113 |
$("#booking_patron_id").on("select2:select", function (e) { |
114 |
booking_patron = e.params.data; |
114 |
booking_patron = e.params.data; |
|
|
115 |
$("#pickup_library_id").prop("disabled", false); |
116 |
}); |
117 |
|
118 |
// Pickup location select2 |
119 |
let pickup_url = "/api/v1/biblios/" + biblionumber + "/pickup_locations"; |
120 |
$("#pickup_library_id").kohaSelect({ |
121 |
dropdownParent: $(".modal-content", "#placeBookingModal"), |
122 |
width: "50%", |
123 |
dropdownAutoWidth: true, |
124 |
allowClear: false, |
125 |
ajax: { |
126 |
url: pickup_url, |
127 |
delay: 300, // wait 300 milliseconds before triggering the request |
128 |
cache: true, |
129 |
dataType: "json", |
130 |
data: function (params) { |
131 |
var search_term = params.term === undefined ? "" : params.term; |
132 |
var query = { |
133 |
q: JSON.stringify({ |
134 |
name: { "-like": "%" + search_term + "%" }, |
135 |
}), |
136 |
_order_by: "name", |
137 |
_page: params.page, |
138 |
}; |
139 |
query["patron_id"] = booking_patron.patron_id; |
140 |
return query; |
141 |
}, |
142 |
processResults: function (data) { |
143 |
var results = []; |
144 |
data.results.forEach(function (pickup_location) { |
145 |
results.push({ |
146 |
id: pickup_location.library_id.escapeHtml(), |
147 |
text: pickup_location.name.escapeHtml(), |
148 |
needs_override: pickup_location.needs_override, |
149 |
pickup_items: pickup_location.pickup_items, |
150 |
}); |
151 |
}); |
152 |
return { |
153 |
results: results, |
154 |
pagination: { more: data.pagination.more }, |
155 |
}; |
156 |
}, |
157 |
}, |
158 |
templateResult: function (state) { |
159 |
var $text; |
160 |
if (state.needs_override === true) { |
161 |
$text = $( |
162 |
"<span>" + |
163 |
state.text + |
164 |
'</span> <span style="float:right;" title="' + |
165 |
__( |
166 |
"This pickup location is not allowed according to circulation rules" |
167 |
) + |
168 |
'"><i class="fa fa-exclamation-circle" aria-hidden="true"></i></span>' |
169 |
); |
170 |
} else { |
171 |
$text = $("<span>" + state.text + "</span>"); |
172 |
} |
173 |
return $text; |
174 |
}, |
115 |
}); |
175 |
}); |
116 |
|
176 |
|
117 |
// Adopt periodPicker |
177 |
// Adopt periodPicker |
Lines 389-394
$("#placeBookingModal").on("show.bs.modal", function (e) {
Link Here
|
389 |
periodPicker.redraw(); |
449 |
periodPicker.redraw(); |
390 |
}); |
450 |
}); |
391 |
|
451 |
|
|
|
452 |
// Setup listener for pickup location select2 |
453 |
$("#pickup_library_id").on("select2:select", function (e) { |
454 |
let valid_items = e.params.data.pickup_items; |
455 |
|
456 |
// Disable items not available at the pickup location |
457 |
$("#booking_item_id > option").each(function () { |
458 |
let option = $(this); |
459 |
let item_id = option.val(); |
460 |
if (valid_items.includes(parseInt(item_id))) { |
461 |
option.prop("disabled", false); |
462 |
} else { |
463 |
option.prop("disabled", true); |
464 |
} |
465 |
}); |
466 |
$("#booking_item_id").trigger("change.select2"); |
467 |
}); |
468 |
|
392 |
// Set onChange for flatpickr |
469 |
// Set onChange for flatpickr |
393 |
let changeExists = periodPicker.config.onChange.filter( |
470 |
let changeExists = periodPicker.config.onChange.filter( |
394 |
f => f.name === "periodChange" |
471 |
f => f.name === "periodChange" |
Lines 567-572
$("#placeBookingForm").on("submit", function (e) {
Link Here
|
567 |
|
644 |
|
568 |
let start_date = $("#booking_start_date").val(); |
645 |
let start_date = $("#booking_start_date").val(); |
569 |
let end_date = $("#booking_end_date").val(); |
646 |
let end_date = $("#booking_end_date").val(); |
|
|
647 |
let pickup_library_id = $("#pickup_library_id").val(); |
648 |
let biblio_id = $("#booking_biblio_id").val(); |
570 |
let item_id = $("#booking_item_id").val(); |
649 |
let item_id = $("#booking_item_id").val(); |
571 |
|
650 |
|
572 |
if (!booking_id) { |
651 |
if (!booking_id) { |
Lines 575-581
$("#placeBookingForm").on("submit", function (e) {
Link Here
|
575 |
JSON.stringify({ |
654 |
JSON.stringify({ |
576 |
start_date: start_date, |
655 |
start_date: start_date, |
577 |
end_date: end_date, |
656 |
end_date: end_date, |
578 |
biblio_id: $("#booking_biblio_id").val(), |
657 |
pickup_library_id: pickup_library_id, |
|
|
658 |
biblio_id: biblio_id, |
579 |
item_id: item_id != 0 ? item_id : null, |
659 |
item_id: item_id != 0 ? item_id : null, |
580 |
patron_id: $("#booking_patron_id").find(":selected").val(), |
660 |
patron_id: $("#booking_patron_id").find(":selected").val(), |
581 |
}) |
661 |
}) |
Lines 635-641
$("#placeBookingForm").on("submit", function (e) {
Link Here
|
635 |
booking_id: booking_id, |
715 |
booking_id: booking_id, |
636 |
start_date: start_date, |
716 |
start_date: start_date, |
637 |
end_date: end_date, |
717 |
end_date: end_date, |
638 |
biblio_id: $("#booking_biblio_id").val(), |
718 |
pickup_library_id: pickup_library_id, |
|
|
719 |
biblio_id: biblio_id, |
639 |
item_id: item_id != 0 ? item_id : null, |
720 |
item_id: item_id != 0 ? item_id : null, |
640 |
patron_id: $("#booking_patron_id").find(":selected").val(), |
721 |
patron_id: $("#booking_patron_id").find(":selected").val(), |
641 |
}), |
722 |
}), |
Lines 693-698
$("#placeBookingModal").on("hidden.bs.modal", function (e) {
Link Here
|
693 |
$("#booking_patron_id").val(null).trigger("change"); |
774 |
$("#booking_patron_id").val(null).trigger("change"); |
694 |
$("#booking_patron_id").empty(); |
775 |
$("#booking_patron_id").empty(); |
695 |
$("#booking_item_id").val(0).trigger("change"); |
776 |
$("#booking_item_id").val(0).trigger("change"); |
|
|
777 |
$("#pickup_library_id").val(null).trigger("change"); |
778 |
$("#pickup_library_id").empty(); |
696 |
$("#period").get(0)._flatpickr.clear(); |
779 |
$("#period").get(0)._flatpickr.clear(); |
697 |
$("#booking_start_date").val(""); |
780 |
$("#booking_start_date").val(""); |
698 |
$("#booking_end_date").val(""); |
781 |
$("#booking_end_date").val(""); |
699 |
- |
|
|