Book a time

(function ($) { function setupBookingForm($scope) { const dateInput = $scope.find('#form-field-date')[0]; const timeField = $scope.find('#form-field-time')[0]; const serviceField = $scope.find('#form-field-service')[0]; const staffField = $scope.find('#form-field-staff')[0];if (!dateInput) return;function disableWeekends(date) { return date.getDay() === 0 || date.getDay() === 6; }function fetchAvailability() { if (!dateInput || !timeField || !serviceField || !staffField) return;const date = dateInput.value; const service = serviceField.value; const staff = staffField.value;timeField.innerHTML = 'Laen aegu...';if (!date || !service || !staff) { timeField.innerHTML = 'Vali esmalt kuupäev, teenus ja konsultant'; return; }const url = '/wp-json/booking/v1/availability?date=' + encodeURIComponent(date) + '&service=' + encodeURIComponent(service) + '&staff=' + encodeURIComponent(staff);console.log('Availability URL:', url);fetch(url) .then(res => res.json()) .then(data => { console.log('Availability response:', data);timeField.innerHTML = 'Vali aeg';if (!data.success) { timeField.innerHTML = 'Aegu ei saa laadida'; return; }if (!data.slots || !data.slots.length) { timeField.innerHTML = 'Vabu aegu pole'; return; }data.slots.forEach(slot => { const opt = document.createElement('option'); opt.value = slot; opt.textContent = slot; timeField.appendChild(opt); }); }) .catch(error => { console.log('Availability fetch failed:', error); timeField.innerHTML = 'Aegu ei saa laadida'; }); }let tries = 0; const wait = setInterval(function () { tries++;if (dateInput._flatpickr) { dateInput._flatpickr.destroy(); }if (typeof flatpickr !== 'undefined') { flatpickr(dateInput, { minDate: 'today', dateFormat: 'Y-m-d', altInput: true, altFormat: 'd.m.Y', locale: { firstDayOfWeek: 1 }, disable: [disableWeekends], onChange: fetchAvailability });clearInterval(wait); }if (tries > 30) { clearInterval(wait); } }, 300);if (serviceField) serviceField.addEventListener('change', fetchAvailability); if (staffField) staffField.addEventListener('change', fetchAvailability); }jQuery(window).on('elementor/frontend/init', function () { elementorFrontend.hooks.addAction('frontend/element_ready/form.default', setupBookingForm); }); })(jQuery);

Book at

Book a time

Siia mingi tekst broneerimise kohta

(function ($) { function setupBookingForm($scope) { const dateInput = $scope.find('#form-field-date')[0]; const timeField = $scope.find('#form-field-time')[0]; const serviceField = $scope.find('#form-field-service')[0]; const staffField = $scope.find('#form-field-staff')[0];if (!dateInput) return;function disableWeekends(date) { return date.getDay() === 0 || date.getDay() === 6; }function fetchAvailability() { if (!dateInput || !timeField || !serviceField || !staffField) return;const date = dateInput.value; const service = serviceField.value; const staff = staffField.value;timeField.innerHTML = 'Laen aegu...';if (!date || !service || !staff) { timeField.innerHTML = 'Vali esmalt kuupäev, teenus ja konsultant'; return; }const url = '/wp-json/booking/v1/availability?date=' + encodeURIComponent(date) + '&service=' + encodeURIComponent(service) + '&staff=' + encodeURIComponent(staff);console.log('Availability URL:', url);fetch(url) .then(res => res.json()) .then(data => { console.log('Availability response:', data);timeField.innerHTML = 'Vali aeg';if (!data.success) { timeField.innerHTML = 'Aegu ei saa laadida'; return; }if (!data.slots || !data.slots.length) { timeField.innerHTML = 'Vabu aegu pole'; return; }data.slots.forEach(slot => { const opt = document.createElement('option'); opt.value = slot; opt.textContent = slot; timeField.appendChild(opt); }); }) .catch(error => { console.log('Availability fetch failed:', error); timeField.innerHTML = 'Aegu ei saa laadida'; }); }let tries = 0; const wait = setInterval(function () { tries++;if (dateInput._flatpickr) { dateInput._flatpickr.destroy(); }if (typeof flatpickr !== 'undefined') { flatpickr(dateInput, { minDate: 'today', dateFormat: 'Y-m-d', altInput: true, altFormat: 'd.m.Y', locale: { firstDayOfWeek: 1 }, disable: [disableWeekends], onChange: fetchAvailability });clearInterval(wait); }if (tries > 30) { clearInterval(wait); } }, 300);if (serviceField) serviceField.addEventListener('change', fetchAvailability); if (staffField) staffField.addEventListener('change', fetchAvailability); }jQuery(window).on('elementor/frontend/init', function () { elementorFrontend.hooks.addAction('frontend/element_ready/form.default', setupBookingForm); }); })(jQuery);