|
Lines 7-12
let bookable_items,
Link Here
|
| 7 |
booking_item_id, |
7 |
booking_item_id, |
| 8 |
booking_patron; |
8 |
booking_patron; |
| 9 |
|
9 |
|
|
|
10 |
function containsAny(integers1, integers2) { |
| 11 |
// Create a hash set to store integers from the second array |
| 12 |
let integerSet = {}; |
| 13 |
for (let i = 0; i < integers2.length; i++) { |
| 14 |
integerSet[integers2[i]] = true; |
| 15 |
} |
| 16 |
|
| 17 |
// Check if any integer from the first array exists in the hash set |
| 18 |
for (let i = 0; i < integers1.length; i++) { |
| 19 |
if (integerSet[integers1[i]]) { |
| 20 |
return true; // Found a match, return true |
| 21 |
} |
| 22 |
} |
| 23 |
|
| 24 |
return false; // No match found |
| 25 |
} |
| 26 |
|
| 10 |
$("#placeBookingModal").on("show.bs.modal", function (e) { |
27 |
$("#placeBookingModal").on("show.bs.modal", function (e) { |
| 11 |
// Get context |
28 |
// Get context |
| 12 |
let button = $(e.relatedTarget); |
29 |
let button = $(e.relatedTarget); |
|
Lines 120-125
$("#placeBookingModal").on("show.bs.modal", function (e) {
Link Here
|
| 120 |
allowClear: false, |
137 |
allowClear: false, |
| 121 |
placeholder: __("Pickup location"), |
138 |
placeholder: __("Pickup location"), |
| 122 |
}); |
139 |
}); |
|
|
140 |
function setLocationsPicker(response) { |
| 141 |
let $pickupSelect = $("#pickup_library_id"); |
| 142 |
let bookableItemnumbers = bookable_items.map(function(object) { return object.item_id; }); |
| 143 |
$pickupSelect.empty(); |
| 144 |
|
| 145 |
$.each(response, function(index, pickup_location) { |
| 146 |
if (containsAny(pickup_location.pickup_items, bookableItemnumbers)) { |
| 147 |
let option = $( |
| 148 |
'<option value="' + |
| 149 |
pickup_location.library_id + |
| 150 |
'">' + |
| 151 |
pickup_location.name + |
| 152 |
"</option>" |
| 153 |
); |
| 154 |
|
| 155 |
option.attr( |
| 156 |
"data-needs_override", |
| 157 |
pickup_location.needs_override |
| 158 |
); |
| 159 |
option.attr( |
| 160 |
"data-pickup_items", |
| 161 |
pickup_location.pickup_items.join(",") |
| 162 |
); |
| 163 |
|
| 164 |
$pickupSelect.append(option); |
| 165 |
} |
| 166 |
}); |
| 167 |
|
| 168 |
$pickupSelect.prop("disabled", false); |
| 169 |
$pickupSelect.val(null).trigger("change"); |
| 170 |
} |
| 123 |
|
171 |
|
| 124 |
// Item select2 |
172 |
// Item select2 |
| 125 |
$("#booking_item_id").select2({ |
173 |
$("#booking_item_id").select2({ |
|
Lines 135-141
$("#placeBookingModal").on("show.bs.modal", function (e) {
Link Here
|
| 135 |
booking_patron = e.params.data; |
183 |
booking_patron = e.params.data; |
| 136 |
|
184 |
|
| 137 |
// Fetch pickup locations and enable picker |
185 |
// Fetch pickup locations and enable picker |
| 138 |
let $pickupSelect = $("#pickup_library_id"); |
|
|
| 139 |
$.ajax({ |
186 |
$.ajax({ |
| 140 |
url: pickup_url, |
187 |
url: pickup_url, |
| 141 |
type: "GET", |
188 |
type: "GET", |
|
Lines 146-176
$("#placeBookingModal").on("show.bs.modal", function (e) {
Link Here
|
| 146 |
patron_id: booking_patron.patron_id, |
193 |
patron_id: booking_patron.patron_id, |
| 147 |
}, |
194 |
}, |
| 148 |
success: function (response) { |
195 |
success: function (response) { |
| 149 |
$pickupSelect.empty(); |
196 |
if (dataFetched === true) { |
| 150 |
|
197 |
setLocationsPicker(response); |
| 151 |
$.each(response, function (index, pickup_location) { |
198 |
|
| 152 |
let option = $( |
199 |
} else { |
| 153 |
'<option value="' + |
200 |
var interval = setInterval(function() { |
| 154 |
pickup_location.library_id + |
201 |
if (dataFetched === true) { |
| 155 |
'">' + |
202 |
// Data is fetched, execute the callback and stop the interval |
| 156 |
pickup_location.name + |
203 |
setLocationsPicker(response); |
| 157 |
"</option>" |
204 |
clearInterval(interval); |
| 158 |
); |
205 |
} |
| 159 |
|
206 |
}, 100); |
| 160 |
option.attr( |
207 |
}; |
| 161 |
"data-needs_override", |
|
|
| 162 |
pickup_location.needs_override |
| 163 |
); |
| 164 |
option.attr( |
| 165 |
"data-pickup_items", |
| 166 |
pickup_location.pickup_items.join(",") |
| 167 |
); |
| 168 |
|
| 169 |
$pickupSelect.append(option); |
| 170 |
}); |
| 171 |
|
| 172 |
$pickupSelect.prop("disabled", false); |
| 173 |
$pickupSelect.val(null).trigger("change"); |
| 174 |
}, |
208 |
}, |
| 175 |
error: function (xhr, status, error) { |
209 |
error: function (xhr, status, error) { |
| 176 |
console.log("Pickup location fetch failed: ", error); |
210 |
console.log("Pickup location fetch failed: ", error); |
|
Lines 820-833
$("#placeBookingForm").on("submit", function (e) {
Link Here
|
| 820 |
}); |
854 |
}); |
| 821 |
|
855 |
|
| 822 |
$("#placeBookingModal").on("hidden.bs.modal", function (e) { |
856 |
$("#placeBookingModal").on("hidden.bs.modal", function (e) { |
|
|
857 |
|
| 858 |
// Reset patron select |
| 823 |
$("#booking_patron_id").val(null).trigger("change"); |
859 |
$("#booking_patron_id").val(null).trigger("change"); |
| 824 |
$("#booking_patron_id").empty(); |
860 |
$("#booking_patron_id").empty(); |
|
|
861 |
$("#booking_patron_id").prop("disabled", false); |
| 825 |
booking_patron = undefined; |
862 |
booking_patron = undefined; |
|
|
863 |
|
| 864 |
// Restet item select |
| 826 |
$("#booking_item_id").val(0).trigger("change"); |
865 |
$("#booking_item_id").val(0).trigger("change"); |
|
|
866 |
$("#booking_item_id").prop("disabled", true); |
| 867 |
|
| 868 |
// Reset pickup library select |
| 827 |
$("#pickup_library_id").val(null).trigger("change"); |
869 |
$("#pickup_library_id").val(null).trigger("change"); |
| 828 |
$("#pickup_library_id").empty(); |
870 |
$("#pickup_library_id").empty(); |
| 829 |
$("#pickup_library_id").prop("disabled", true); |
871 |
$("#pickup_library_id").prop("disabled", true); |
|
|
872 |
|
| 873 |
// Reset booking period picker |
| 830 |
$("#period").get(0)._flatpickr.clear(); |
874 |
$("#period").get(0)._flatpickr.clear(); |
|
|
875 |
$("#period").prop("disabled", true); |
| 831 |
$("#booking_start_date").val(""); |
876 |
$("#booking_start_date").val(""); |
| 832 |
$("#booking_end_date").val(""); |
877 |
$("#booking_end_date").val(""); |
| 833 |
$("#booking_id").val(""); |
878 |
$("#booking_id").val(""); |
| 834 |
- |
|
|