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 |
- |
|
|