[Back] /*
* Copyright (c) 2023 LatePoint LLC. All rights reserved.
*/
function latepoint_check_horizontal_calendar_scroll(){
if(jQuery('.daily-availability-calendar.horizontal-calendar').length){
if(jQuery('.daily-availability-calendar.horizontal-calendar').width() < 700){
jQuery('.daily-availability-calendar.horizontal-calendar').scrollLeft(jQuery('.os-day.selected').index() * jQuery('.os-day.selected').width());
}
}
}
function latepoint_calendar_custom_period_created(){
latepoint_reload_calendar_view();
latepoint_lightbox_close();
}
function latepoint_init_calendar_quick_actions(){
latepoint_init_input_masks(jQuery('.quick-calendar-action-settings'));
jQuery('.quick-calendar-action-day-off').on('click', function(){
jQuery('.quick-calendar-actions-wrapper').addClass('showing-settings');
jQuery('.quick-calendar-actions').hide();
jQuery('.quick-calendar-action-settings').removeClass('setting-slot-off').addClass('setting-day-off');
jQuery('.quick-calendar-action-settings input[name="blocked_period_settings[full_day_off]"]').val('yes');
jQuery('.quick-calendar-action-toggle.selected').removeClass('selected');
jQuery('.quick-calendar-action-toggle[data-period-type="full"]').addClass('selected');
return false;
});
jQuery('.quick-calendar-action-slot-off').on('click', function(){
jQuery('.quick-calendar-actions-wrapper').addClass('showing-settings');
jQuery('.quick-calendar-actions').hide();
jQuery('.quick-calendar-action-settings').removeClass('setting-day-off').addClass('setting-slot-off');
jQuery('.quick-calendar-action-settings input[name="blocked_period_settings[full_day_off]"]').val('no');
jQuery('.quick-calendar-action-toggle.selected').removeClass('selected');
jQuery('.quick-calendar-action-toggle[data-period-type="partial"]').addClass('selected');
return false;
});
jQuery('.quick-calendar-action-toggle').on('click', function(){
if(jQuery(this).data('period-type') === 'full'){
jQuery('.quick-calendar-action-day-off').trigger('click');
}else{
jQuery('.quick-calendar-action-slot-off').trigger('click');
}
return false;
});
}
function latepoint_init_calendars(){
latepoint_check_horizontal_calendar_scroll();
jQuery('.os-calendar-settings-extra .latecheckbox').lateCheckbox();
jQuery('.os-calendar-view-toggle').on('click', '.os-calendar-view-option', function(){
jQuery(this).closest('.os-calendar-view-toggle').find('.os-calendar-view-option.os-selected').removeClass('os-selected')
jQuery(this).addClass('os-selected');
jQuery('input[name="' + jQuery(this).closest('.os-calendar-view-toggle').data('update-element-by-name') + '"]').val(jQuery(this).data('value')).trigger('change');
return false;
});
jQuery('.calendar-settings-toggler').on('click', function(){
jQuery('.os-calendar-settings-form').toggleClass('show-extra-settings');
return false;
});
jQuery('.os-calendar-settings-form').on('change', 'input[name="calendar_settings[view]"]', function(){
jQuery(this).closest('.calendar-wrapper').attr('data-view', jQuery(this).val());
});
jQuery('.os-calendar-settings-form').on('change', 'select, input, .latecheckbox ', function(){
latepoint_reload_calendar_view();
});
jQuery('.calendar-view-wrapper').on('click', '.weekly-calendar-agent-selector', function(){
jQuery('.weekly-calendar-agent-selector.selected').removeClass('selected');
jQuery(this).addClass('selected');
jQuery('.os-calendar-settings-form input[name="calendar_settings[selected_agent_id]"]').val(jQuery(this).data('agent-id'));
jQuery('.agent-weekly-calendar.selected').removeClass('selected');
jQuery('.agent-weekly-calendar[data-agent-id="'+jQuery(this).data('agent-id')+'"]').addClass('selected');
return false;
});
jQuery('.calendar-view-wrapper').on('click', '.daily-calendar-action-navigation-btn', function(){
jQuery(this).addClass('os-loading');
jQuery('input[name="calendar_settings[target_date_string]"]').val(jQuery(this).data('target-date')).trigger('change');
return false;
});
jQuery('.calendar-view-wrapper').on('click', '.daily-availability-calendar .os-day', function(){
jQuery('.os-monthly-calendar-days-w .os-day.selected').removeClass('selected');
jQuery(this).addClass('selected');
jQuery('input[name="calendar_settings[target_date_string]"]').val(jQuery(this).data('date')).trigger('change');
return false;
});
jQuery('.os-calendar-today-btn').on('click', function(){
jQuery(this).addClass('os-loading');
jQuery('input[name="calendar_settings[target_date_string]"]').val(jQuery(this).data('target-date')).trigger('change');
return false;
});
jQuery('.os-calendar-prev-btn').on('click', function(){
jQuery(this).addClass('os-loading');
jQuery('input[name="calendar_settings[target_date_string]"]').val(jQuery('input[name="prev_target_date"]').val()).trigger('change');
return false;
});
jQuery('.os-calendar-next-btn').on('click', function(){
jQuery(this).addClass('os-loading');
jQuery('input[name="calendar_settings[target_date_string]"]').val(jQuery('input[name="next_target_date"]').val()).trigger('change');
return false;
});
}
function latepoint_reload_calendar_view(){
let $calendar_wrapper = jQuery('.calendar-view-wrapper');
if(!$calendar_wrapper.length) return;
$calendar_wrapper.addClass('os-loading');
let calendar_settings = new FormData(jQuery('form.os-calendar-settings-form')[0]);
let data = new FormData();
data.append('params', latepoint_formdata_to_url_encoded_string(calendar_settings));
data.append('action', latepoint_helper.route_action);
data.append('route_name', $calendar_wrapper.data('route'));
data.append('return_format', 'json');
jQuery.ajax({
type: "post",
dataType: "json",
processData: false,
contentType: false,
url: latepoint_timestamped_ajaxurl(),
data: data,
success: function (response) {
if (response.status === "success") {
$calendar_wrapper.html(response.message).removeClass('os-loading');
jQuery('.os-calendar-today-btn, .os-calendar-prev-btn, .os-calendar-next-btn').removeClass('os-loading');
jQuery('.os-current-month-label .current-month').text(response.top_date_label);
jQuery('.os-current-month-label .current-year').text(response.top_date_year);
latepoint_check_horizontal_calendar_scroll();
}
}
});
}