|
Lines 180-185
$("#placeBookingModal").on("show.bs.modal", function (e) {
Link Here
|
| 180 |
} |
180 |
} |
| 181 |
} |
181 |
} |
| 182 |
|
182 |
|
|
|
183 |
// Itemtype select2 |
| 184 |
$("#booking_itemtype").select2({ |
| 185 |
dropdownParent: $(".modal-content", "#placeBookingModal"), |
| 186 |
width: "50%", |
| 187 |
allowClear: true, |
| 188 |
dropdownAutoWidth: true, |
| 189 |
minimumResultsForSearch: 20, |
| 190 |
placeholder: __("Item type"), |
| 191 |
}); |
| 192 |
|
| 183 |
// Item select2 |
193 |
// Item select2 |
| 184 |
$("#booking_item_id").select2({ |
194 |
$("#booking_item_id").select2({ |
| 185 |
dropdownParent: $(".modal-content", "#placeBookingModal"), |
195 |
dropdownParent: $(".modal-content", "#placeBookingModal"), |
|
Lines 227-232
$("#placeBookingModal").on("show.bs.modal", function (e) {
Link Here
|
| 227 |
if ($bookingItemSelect.data("loaded")) { |
237 |
if ($bookingItemSelect.data("loaded")) { |
| 228 |
$bookingItemSelect.prop("disabled", false); |
238 |
$bookingItemSelect.prop("disabled", false); |
| 229 |
} |
239 |
} |
|
|
240 |
|
| 241 |
// Enable itemtype selection if item data if also fetched |
| 242 |
let $bookingItemtypeSelect = $("#booking_itemtype"); |
| 243 |
$bookingItemtypeSelect.data("patron", true); |
| 244 |
if ($bookingItemtypeSelect.data("loaded")) { |
| 245 |
$bookingItemtypeSelect.prop("disabled", false); |
| 246 |
} |
| 230 |
}); |
247 |
}); |
| 231 |
|
248 |
|
| 232 |
// Adopt periodPicker |
249 |
// Adopt periodPicker |
|
Lines 285-292
$("#placeBookingModal").on("show.bs.modal", function (e) {
Link Here
|
| 285 |
// Total bookable items |
302 |
// Total bookable items |
| 286 |
let bookable = 0; |
303 |
let bookable = 0; |
| 287 |
|
304 |
|
|
|
305 |
let itemtypes = new Set(); |
| 288 |
for (item of bookable_items) { |
306 |
for (item of bookable_items) { |
| 289 |
bookable++; |
307 |
bookable++; |
|
|
308 |
|
| 290 |
// Populate item select (NOTE: Do we still need this check for pre-existing select option here?) |
309 |
// Populate item select (NOTE: Do we still need this check for pre-existing select option here?) |
| 291 |
if ( |
310 |
if ( |
| 292 |
!$("#booking_item_id").find( |
311 |
!$("#booking_item_id").find( |
|
Lines 301-312
$("#placeBookingModal").on("show.bs.modal", function (e) {
Link Here
|
| 301 |
false |
320 |
false |
| 302 |
); |
321 |
); |
| 303 |
newOption.setAttribute("data-available", true); |
322 |
newOption.setAttribute("data-available", true); |
|
|
323 |
newOption.setAttribute( |
| 324 |
"data-itemtype", |
| 325 |
item.effective_item_type_id |
| 326 |
); |
| 304 |
|
327 |
|
| 305 |
// Append it to the select |
328 |
// Append it to the select |
| 306 |
$("#booking_item_id").append(newOption); |
329 |
$("#booking_item_id").append(newOption); |
| 307 |
} |
330 |
} |
|
|
331 |
|
| 332 |
// Build list of itemtypes |
| 333 |
itemtypes.add(item.effective_item_type_id); |
| 308 |
} |
334 |
} |
| 309 |
|
335 |
|
|
|
336 |
// Filter itemtypes |
| 337 |
$("#booking_itemtype option").each(function () { |
| 338 |
const optionValue = $(this).val(); |
| 339 |
if (!itemtypes.has(optionValue)) { |
| 340 |
$(this).remove(); |
| 341 |
} |
| 342 |
}); |
| 343 |
$("#booking_itemtype").trigger("change"); |
| 344 |
|
| 310 |
// Set disable function for periodPicker |
345 |
// Set disable function for periodPicker |
| 311 |
let disableExists = periodPicker.config.disable.filter( |
346 |
let disableExists = periodPicker.config.disable.filter( |
| 312 |
f => f.name === "dateDisable" |
347 |
f => f.name === "dateDisable" |
|
Lines 487-492
$("#placeBookingModal").on("show.bs.modal", function (e) {
Link Here
|
| 487 |
}); |
522 |
}); |
| 488 |
} |
523 |
} |
| 489 |
|
524 |
|
|
|
525 |
// Setup listener for itemtype select2 |
| 526 |
$("#booking_itemtype").on("select2:select", function (e) { |
| 527 |
effective_itemtype = e.params.data.id |
| 528 |
? e.params.data.id |
| 529 |
: null; |
| 530 |
|
| 531 |
// Disable items not of this itemtype |
| 532 |
$("#booking_item_id > option").each(function () { |
| 533 |
let option = $(this); |
| 534 |
if (option.val() != 0) { |
| 535 |
let item_itemtype = option.data("itemtype"); |
| 536 |
if (item_itemtype == effective_itemtype) { |
| 537 |
if ( |
| 538 |
option.data("available") && |
| 539 |
option.data("pickup") |
| 540 |
) { |
| 541 |
option.prop("disabled", false); |
| 542 |
} |
| 543 |
} else { |
| 544 |
option.prop("disabled", true); |
| 545 |
} |
| 546 |
} |
| 547 |
}); |
| 548 |
$("#booking_item_id").trigger("change.select2"); |
| 549 |
}); |
| 550 |
|
| 490 |
// Setup listener for item select2 |
551 |
// Setup listener for item select2 |
| 491 |
$("#booking_item_id").on("select2:select", function (e) { |
552 |
$("#booking_item_id").on("select2:select", function (e) { |
| 492 |
booking_item_id = e.params.data.id |
553 |
booking_item_id = e.params.data.id |
|
Lines 518-523
$("#placeBookingModal").on("show.bs.modal", function (e) {
Link Here
|
| 518 |
// Disable patron selection change |
579 |
// Disable patron selection change |
| 519 |
$("#booking_patron_id").prop("disabled", true); |
580 |
$("#booking_patron_id").prop("disabled", true); |
| 520 |
|
581 |
|
|
|
582 |
// handle itemtype picker |
| 583 |
if (booking_item_id != 0) { |
| 584 |
let itemtype = e.params.data.element.dataset.itemtype; |
| 585 |
|
| 586 |
$("#booking_itemtype").val(itemtype); |
| 587 |
$("#booking_itemtype").trigger("change.select2"); |
| 588 |
$("#booking_itemtype").prop("disabled", true); |
| 589 |
} else { |
| 590 |
$("#booking_itemtype").prop("disabled", false); |
| 591 |
} |
| 592 |
|
| 521 |
// redraw pariodPicker taking selected item into account |
593 |
// redraw pariodPicker taking selected item into account |
| 522 |
periodPicker.redraw(); |
594 |
periodPicker.redraw(); |
| 523 |
}); |
595 |
}); |
|
Lines 691-697
$("#placeBookingModal").on("show.bs.modal", function (e) {
Link Here
|
| 691 |
periodPicker.redraw(); |
763 |
periodPicker.redraw(); |
| 692 |
$("#period_fields :input").prop("disabled", false); |
764 |
$("#period_fields :input").prop("disabled", false); |
| 693 |
|
765 |
|
| 694 |
// Redraw select with new options and enable |
766 |
// Redraw itemtype select with new options and enable |
|
|
767 |
let $bookingItemtypeSelect = $("#booking_itemtype"); |
| 768 |
$bookingItemtypeSelect.trigger("change"); |
| 769 |
$bookingItemtypeSelect.data("loaded", true); |
| 770 |
if ($bookingItemtypeSelect.data("patron")) { |
| 771 |
$bookingItemtypeSelect.prop("disabled", false); |
| 772 |
} |
| 773 |
|
| 774 |
// Redraw item select with new options and enable |
| 695 |
let $bookingItemSelect = $("#booking_item_id"); |
775 |
let $bookingItemSelect = $("#booking_item_id"); |
| 696 |
$bookingItemSelect.trigger("change"); |
776 |
$bookingItemSelect.trigger("change"); |
| 697 |
$bookingItemSelect.data("loaded", true); |
777 |
$bookingItemSelect.data("loaded", true); |
|
Lines 940-949
$("#placeBookingModal").on("hidden.bs.modal", function (e) {
Link Here
|
| 940 |
$("#booking_patron_id").prop("disabled", false); |
1020 |
$("#booking_patron_id").prop("disabled", false); |
| 941 |
booking_patron = undefined; |
1021 |
booking_patron = undefined; |
| 942 |
|
1022 |
|
| 943 |
// Restet item select |
1023 |
// Reset item select |
| 944 |
$("#booking_item_id").val(0).trigger("change"); |
1024 |
$("#booking_item_id").val(0).trigger("change"); |
| 945 |
$("#booking_item_id").prop("disabled", true); |
1025 |
$("#booking_item_id").prop("disabled", true); |
| 946 |
|
1026 |
|
|
|
1027 |
// Reset itemtype select |
| 1028 |
$("#booking_itemtype").val(0).trigger("change"); |
| 1029 |
$("#booking_itemtype").prop("disabled", true); |
| 1030 |
|
| 947 |
// Reset pickup library select |
1031 |
// Reset pickup library select |
| 948 |
$("#pickup_library_id").val(null).trigger("change"); |
1032 |
$("#pickup_library_id").val(null).trigger("change"); |
| 949 |
$("#pickup_library_id").empty(); |
1033 |
$("#pickup_library_id").empty(); |
| 950 |
- |
|
|