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