easyappointments/assets/js/pages/blocked_periods.min.js

1 line
8.3 KiB
JavaScript
Executable File

"use strict";App.Pages.BlockedPeriods=function(){function filter(keyword){var selectId=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null,show=!!(2<arguments.length&&void 0!==arguments[2])&&arguments[2];App.Http.BlockedPeriods.search(keyword,filterLimit).then(function(response){filterResults=response,$("#filter-blocked-periods .results").empty(),response.forEach(function(blockedPeriod){$("#filter-blocked-periods .results").append(App.Pages.BlockedPeriods.getFilterHtml(blockedPeriod)).append($("<hr/>"))}),0===response.length?$("#filter-blocked-periods .results").append($("<em/>",{text:lang("no_records_found")})):response.length===filterLimit&&$("<button/>",{type:"button",class:"btn btn-outline-secondary w-100 load-more text-center",text:lang("load_more"),click:function click(){filterLimit+=20,App.Pages.BlockedPeriods.filter(keyword,selectId,show)}}).appendTo("#filter-blocked-periods .results"),selectId&&App.Pages.BlockedPeriods.select(selectId,show)})}function select(id){var show=!!(1<arguments.length&&void 0!==arguments[1])&&arguments[1];if($filterBlockedPeriods.find(".selected").removeClass("selected"),$filterBlockedPeriods.find(".blocked-period-row[data-id=\""+id+"\"]").addClass("selected"),show){var blockedPeriod=filterResults.find(function(blockedPeriod){return+blockedPeriod.id===+id});App.Pages.BlockedPeriods.display(blockedPeriod),$("#edit-blocked-period, #delete-blocked-period").prop("disabled",!1)}}var $blockedPeriods=$("#blocked-periods"),$filterBlockedPeriods=$("#filter-blocked-periods"),$id=$("#id"),$name=$("#name"),$startDateTime=$("#start-date-time"),$endDateTime=$("#end-date-time"),$notes=$("#notes"),moment=window.moment,filterResults={},filterLimit=20,backupStartDateTimeObject=void 0;return document.addEventListener("DOMContentLoaded",function initialize(){App.Pages.BlockedPeriods.resetForm(),App.Pages.BlockedPeriods.filter(""),App.Pages.BlockedPeriods.addEventListeners(),App.Utils.UI.initializeDateTimePicker($startDateTime),App.Utils.UI.initializeDateTimePicker($endDateTime)}),{filter:filter,save:function save(blockedPeriod){App.Http.BlockedPeriods.save(blockedPeriod).then(function(response){App.Layouts.Backend.displayNotification(lang("blocked_period_saved")),App.Pages.BlockedPeriods.resetForm(),$filterBlockedPeriods.find(".key").val(""),App.Pages.BlockedPeriods.filter("",response.id,!0)})},remove:function remove(id){App.Http.BlockedPeriods.destroy(id).then(function(){App.Layouts.Backend.displayNotification(lang("blocked_period_deleted")),App.Pages.BlockedPeriods.resetForm(),App.Pages.BlockedPeriods.filter($("#filter-blocked-periods .key").val())})},validate:function validate(){$blockedPeriods.find(".is-invalid").removeClass("is-invalid"),$blockedPeriods.find(".form-message").removeClass("alert-danger").hide();try{var missingRequired=!1;if($blockedPeriods.find(".required").each(function(index,fieldEl){$(fieldEl).val()||($(fieldEl).addClass("is-invalid"),missingRequired=!0)}),missingRequired)throw new Error(lang("fields_are_required"));var startDateTimeObject=App.Utils.UI.getDateTimePickerValue($startDateTime),endDateTimeObject=App.Utils.UI.getDateTimePickerValue($endDateTime);if(startDateTimeObject>=endDateTimeObject)throw $startDateTime.addClass("is-invalid"),$endDateTime.addClass("is-invalid"),new Error(lang("start_date_before_end_error"));return!0}catch(error){return $blockedPeriods.find(".form-message").addClass("alert-danger").text(error.message).show(),!1}},getFilterHtml:function getFilterHtml(blockedPeriod){return $("<div/>",{class:"blocked-period-row entry","data-id":blockedPeriod.id,html:[$("<strong/>",{text:blockedPeriod.name}),$("<br/>")]})},resetForm:function resetForm(){$filterBlockedPeriods.find(".selected").removeClass("selected"),$filterBlockedPeriods.find("button").prop("disabled",!1),$filterBlockedPeriods.find(".results").css("color",""),$blockedPeriods.find(".add-edit-delete-group").show(),$blockedPeriods.find(".save-cancel-group").hide(),$blockedPeriods.find(".record-details").find("input, select, textarea").val("").prop("disabled",!0),$blockedPeriods.find(".record-details .form-label span").prop("hidden",!0),$("#edit-blocked-period, #delete-blocked-period").prop("disabled",!0),$blockedPeriods.find(".record-details .is-invalid").removeClass("is-invalid"),$blockedPeriods.find(".record-details .form-message").hide(),backupStartDateTimeObject=void 0},display:function display(blockedPeriod){$id.val(blockedPeriod.id),$name.val(blockedPeriod.name),App.Utils.UI.setDateTimePickerValue($startDateTime,new Date(blockedPeriod.start_datetime)),App.Utils.UI.setDateTimePickerValue($endDateTime,new Date(blockedPeriod.end_datetime)),$notes.val(blockedPeriod.notes)},select:select,addEventListeners:function addEventListeners(){$blockedPeriods.on("submit","#filter-blocked-periods form",function(event){event.preventDefault();var key=$("#filter-blocked-periods .key").val();$(".selected").removeClass("selected"),App.Pages.BlockedPeriods.resetForm(),App.Pages.BlockedPeriods.filter(key)}),$blockedPeriods.on("click",".blocked-period-row",function(event){if($("#filter-blocked-periods .filter").prop("disabled"))return void $("#filter-blocked-periods .results").css("color","#AAA");var blockedPeriodId=$(event.currentTarget).attr("data-id"),blockedPeriod=filterResults.find(function(filterResult){return+filterResult.id===+blockedPeriodId});App.Pages.BlockedPeriods.display(blockedPeriod),$("#filter-blocked-periods .selected").removeClass("selected"),$(event.currentTarget).addClass("selected"),$("#edit-blocked-period, #delete-blocked-period").prop("disabled",!1)}),$blockedPeriods.on("click","#add-blocked-period",function(){App.Pages.BlockedPeriods.resetForm(),$blockedPeriods.find(".add-edit-delete-group").hide(),$blockedPeriods.find(".save-cancel-group").show(),$blockedPeriods.find(".record-details").find("input, select, textarea").prop("disabled",!1),$blockedPeriods.find(".record-details .form-label span").prop("hidden",!1),$filterBlockedPeriods.find("button").prop("disabled",!0),$filterBlockedPeriods.find(".results").css("color","#AAA"),App.Utils.UI.setDateTimePickerValue($startDateTime,moment("00:00","HH:mm").toDate()),App.Utils.UI.setDateTimePickerValue($endDateTime,moment("00:00","HH:mm").add(1,"day").toDate())}),$blockedPeriods.on("click","#edit-blocked-period",function(){$blockedPeriods.find(".add-edit-delete-group").hide(),$blockedPeriods.find(".save-cancel-group").show(),$blockedPeriods.find(".record-details").find("input, select, textarea").prop("disabled",!1),$blockedPeriods.find(".record-details .form-label span").prop("hidden",!1),$filterBlockedPeriods.find("button").prop("disabled",!0),$filterBlockedPeriods.find(".results").css("color","#AAA")}),$blockedPeriods.on("click","#delete-blocked-period",function(){var blockedPeriodId=$id.val(),buttons=[{text:lang("cancel"),click:function click(event,messageModal){messageModal.hide()}},{text:lang("delete"),click:function click(event,messageModal){App.Pages.BlockedPeriods.remove(blockedPeriodId),messageModal.hide()}}];App.Utils.Message.show(lang("delete_blocked_period"),lang("delete_record_prompt"),buttons)}),$blockedPeriods.on("click","#save-blocked-period",function(){var startDateTimeObject=App.Utils.UI.getDateTimePickerValue($startDateTime),startDateTimeMoment=moment(startDateTimeObject),endDateTimeObject=App.Utils.UI.getDateTimePickerValue($endDateTime),endDateTimeMoment=moment(endDateTimeObject),blockedPeriod={name:$name.val(),start_datetime:startDateTimeMoment.format("YYYY-MM-DD HH:mm:ss"),end_datetime:endDateTimeMoment.format("YYYY-MM-DD HH:mm:ss"),notes:$notes.val()};""!==$id.val()&&(blockedPeriod.id=$id.val()),App.Pages.BlockedPeriods.validate()&&App.Pages.BlockedPeriods.save(blockedPeriod)}),$blockedPeriods.on("click","#cancel-blocked-period",function(){var id=$id.val();App.Pages.BlockedPeriods.resetForm(),""!==id&&App.Pages.BlockedPeriods.select(id,!0)}),$blockedPeriods.on("focus","#start-date-time",function(){backupStartDateTimeObject=App.Utils.UI.getDateTimePickerValue($startDateTime)}),$blockedPeriods.on("change","#start-date-time",function(event){var endDateTimeObject=App.Utils.UI.getDateTimePickerValue($endDateTime);if(backupStartDateTimeObject&&endDateTimeObject){var endDateTimeMoment=moment(endDateTimeObject),backupStartDateTimeMoment=moment(backupStartDateTimeObject),diff=endDateTimeMoment.diff(backupStartDateTimeMoment),newEndDateTimeMoment=endDateTimeMoment.clone().add(diff,"milliseconds");App.Utils.UI.setDateTimePickerValue($endDateTime,newEndDateTimeMoment.toDate())}})}}}();