1 line
3.5 KiB
JavaScript
Executable File
1 line
3.5 KiB
JavaScript
Executable File
"use strict";App.Pages.BookingSettings=function(){function isInvalid(){try{$("#booking-settings .is-invalid").removeClass("is-invalid");var missingRequiredFields=!1;if($("#booking-settings .required").each(function(index,requiredField){var $requiredField=$(requiredField);$requiredField.val()||($requiredField.addClass("is-invalid"),missingRequiredFields=!0)}),missingRequiredFields)throw new Error(lang("fields_are_required"));if(!$(".display-switch:checked").length)throw new Error(lang("at_least_one_field"));if(!$(".require-switch:checked").length)throw new Error(lang("at_least_one_field_required"));return!1}catch(error){return App.Layouts.Backend.displayNotification(error.message),!0}}function deserialize(bookingSettings){bookingSettings.forEach(function(bookingSetting){if("disable_booking_message"===bookingSetting.name)return void $disableBookingMessage.trumbowyg("html",bookingSetting.value);var $field=$("[data-field=\""+bookingSetting.name+"\"]");$field.is(":checkbox")?$field.prop("checked",!!+bookingSetting.value):$field.val(bookingSetting.value)})}function serialize(){var bookingSettings=[];return $("[data-field]").each(function(index,field){var $field=$(field);bookingSettings.push({name:$field.data("field"),value:$field.is(":checkbox")?+$field.prop("checked"):$field.val()})}),bookingSettings.push({name:"disable_booking_message",value:$disableBookingMessage.trumbowyg("html")}),bookingSettings}function updateDisplaySwitch($displaySwitch){var isChecked=$displaySwitch.prop("checked"),$formGroup=$displaySwitch.closest(".form-group");$formGroup.find(".require-switch").prop("disabled",!isChecked),$formGroup.find(".form-label, .form-control").toggleClass("opacity-25",!isChecked),isChecked||($formGroup.find(".require-switch").prop("checked",!1),$formGroup.find(".text-danger").hide())}function updateRequireSwitch($requireSwitch){var isChecked=$requireSwitch.prop("checked"),$formGroup=$requireSwitch.closest(".form-group");$formGroup.find(".text-danger").toggle(isChecked)}function applyInitialState(){$bookingSettings.find(".display-switch").each(function(index,displaySwitchEl){var $displaySwitch=$(displaySwitchEl);updateDisplaySwitch($displaySwitch)}),$bookingSettings.find(".require-switch").each(function(index,requireSwitchEl){var $requireSwitch=$(requireSwitchEl);updateRequireSwitch($requireSwitch)}),$disableBookingMessage.closest(".form-group").prop("hidden",!$disableBooking.prop("checked"))}function onSaveSettingsClick(){if(!isInvalid()){var bookingSettings=serialize();App.Http.BookingSettings.save(bookingSettings).done(function(){App.Layouts.Backend.displayNotification(lang("settings_saved"))})}}function onDisplaySwitchClick(event){var $displaySwitch=$(event.target);updateDisplaySwitch($displaySwitch)}function onRequireSwitchClick(event){var $requireSwitch=$(event.target);updateRequireSwitch($requireSwitch)}function onDisableBookingClick(){$disableBookingMessage.closest(".form-group").prop("hidden",!$disableBooking.prop("checked"))}var $bookingSettings=$("#booking-settings"),$saveSettings=$("#save-settings"),$disableBooking=$("#disable-booking"),$disableBookingMessage=$("#disable-booking-message");return document.addEventListener("DOMContentLoaded",function(){var bookingSettings=vars("booking_settings");$saveSettings.on("click",onSaveSettingsClick),$disableBooking.on("click",onDisableBookingClick),$bookingSettings.on("click",".display-switch",onDisplaySwitchClick).on("click",".require-switch",onRequireSwitchClick),$disableBookingMessage.trumbowyg(),deserialize(bookingSettings),applyInitialState()}),{}}(); |