/* * Copyright (c) 2024 LatePoint LLC. All rights reserved. */ function latepoint_submit_quick_order_form(){ let $quick_edit_form = jQuery('form.order-quick-edit-form'); let errors = latepoint_validate_form($quick_edit_form); if(errors.length){ let error_messages = errors.map(error => error.message ).join(', '); latepoint_add_notification(error_messages, 'error'); return false; } $quick_edit_form.find('button[type="submit"]').addClass('os-loading'); jQuery.ajax({ type: "post", dataType: "json", processData: false, contentType: false, url: latepoint_timestamped_ajaxurl(), data: latepoint_create_form_data($quick_edit_form), success: function (response) { if(response.fields_to_update){ for (const [key, value] of Object.entries(response.fields_to_update)) { $quick_edit_form.find('input[name="' + key + '"]').val(value) } } $quick_edit_form.find('button[type="submit"]').removeClass('os-loading'); if(response.form_values_to_update){ jQuery.each(response.form_values_to_update, function(name, value){ $quick_edit_form.find('[name="'+ name +'"]').val(value); }); } if (response.status === "success") { latepoint_add_notification(response.message); latepoint_reload_after_order_save(); }else{ latepoint_add_notification(response.message, 'error'); } } }); } function latepoint_apply_agent_selector_change(){ if(jQuery('.quick-availability-per-day-w').length){ let booking_form_id = jQuery('.quick-availability-per-day-w').data('trigger-form-booking-id'); let $trigger_btn = jQuery('.order-item-booking-data-form-wrapper[data-booking-id="' + booking_form_id + '"]').find('.trigger-quick-availability'); latepoint_load_quick_availability($trigger_btn); } } function latepoint_apply_service_selector_change($form){ let field_base_name = 'order_items[' + $form.data('order-item-id') +'][bookings][' + $form.data('booking-id') +']'; var $selected_service = $form.find('.os-services-select-field-w .service-option-selected'); var service_id = $selected_service.data('id'); var buffer_before = $selected_service.data('buffer-before'); var buffer_after = $selected_service.data('buffer-after'); var default_duration = $selected_service.data('duration'); var default_duration_name = $selected_service.data('duration-name'); var min_capacity = $selected_service.data('capacity-min'); var max_capacity = $selected_service.data('capacity-max'); var extra_durations = $selected_service.data('extra-durations'); $form.find('input[name="'+field_base_name+'[buffer_before]"]').val(buffer_before).trigger('change').closest('.os-form-group').addClass('has-value'); $form.find('input[name="'+field_base_name+'[buffer_after]"]').val(buffer_after).trigger('change').closest('.os-form-group').addClass('has-value'); $form.find('input[name="'+field_base_name+'[service_id]"]').val(service_id).trigger('change').closest('.os-form-group').addClass('has-value'); var duration_name = default_duration_name ? default_duration_name : (default_duration + ' ' + latepoint_helper.string_minutes); var options = '<option value="'+ default_duration +'">' + duration_name + '</option>'; if(extra_durations.length){ jQuery.each(extra_durations, function(index, value){ var duration_name = value.name ? value.name : value.duration + ' ' + latepoint_helper.string_minutes; options+= '<option value="'+ value.duration +'">' + duration_name + '</option>'; }); $form.find('.os-service-durations').show(); }else{ $form.find('.os-service-durations').hide(); } $form.find('.booking-total-attendees-selector-w .capacity-info strong').text(max_capacity); var attendees_options_html = ''; for(var i=1;i<=max_capacity;i++){ attendees_options_html+= '<option value="' + i + '">' + i + '</option>'; } var selected_attendees = Math.min(jQuery('.booking-total-attendees-selector-w select').val(), max_capacity); $form.find('.booking-total-attendees-selector-w select').html(attendees_options_html).val(selected_attendees); if(max_capacity > 1){ $form.find('.booking-total-attendees-selector-w').show(); }else{ $form.find('.booking-total-attendees-selector-w').hide(); } $form.find('.os-service-durations select').html(options); latepoint_set_booking_end_time($form); if(jQuery('.quick-availability-per-day-w').length){ latepoint_load_quick_availability($form.find('.trigger-quick-availability')); } latepoint_init_input_masks($form); } function latepoint_reload_balance_and_payments(){ let $wrapper = jQuery('.balance-payment-info'); $wrapper.closest('.balance-payment-wrapper').addClass('os-loading'); let route_name = $wrapper.data('route'); let $quick_edit_form = $wrapper.closest('form.order-quick-edit-form'); let form_data = new FormData($quick_edit_form[0]); let data = { action: latepoint_helper.route_action, route_name: route_name, params: latepoint_formdata_to_url_encoded_string(form_data), return_format: 'json' } jQuery.ajax({ type : "post", dataType : "json", url : latepoint_timestamped_ajaxurl(), data : data, success: function(response){ $wrapper.closest('.balance-payment-wrapper').removeClass('os-loading'); if(response.status === "success"){ jQuery('.balance-payment-wrapper').html(response.message); latepoint_init_input_masks(jQuery('.balance-payment-wrapper')); latepoint_init_daterangepicker(jQuery('.balance-payment-wrapper .os-date-range-picker')); latepoint_init_payment_request_form(jQuery('.quick-order-form-w')); }else{ alert(response.message); } } }); } function latepoint_cancel_adding_new_order_item_to_quick_edit_form(){ jQuery('.order-items-list').removeClass('is-blurred'); jQuery('.new-order-item-list-bundles-wrapper').removeClass('is-open'); jQuery('.new-order-item-variant-selector-wrapper').removeClass('is-open'); jQuery('.order-form-add-item-btn').removeClass('is-cancelling').find('span').text(jQuery('.order-form-add-item-btn').data('add-label')); } function latepoint_build_new_booking_order_item(){ jQuery('.order-form-add-item-btn').addClass('os-loading'); latepoint_cancel_adding_new_order_item_to_quick_edit_form(); let params = {} var data = { action: 'latepoint_route_call', route_name: jQuery('.order-form-add-item-btn').data('booking-form-route-name'), params: params, return_format: 'json' } jQuery.ajax({ type : "post", dataType : "json", url : latepoint_timestamped_ajaxurl(), data : data, success: function(response){ if(response.status === "success"){ let $form = jQuery(response.message); jQuery('.order-items-list').prepend($form); jQuery('.order-form-add-item-btn').removeClass('os-loading'); latepoint_init_booking_data_form(jQuery('.order-item-booking-data-form-wrapper[data-order-item-id="' + $form.data('order-item-id') + '"]')); // new item added, trigger change event latepoint_quick_order_items_changed(); }else{ alert(response.message, 'error'); } } }); } function latepoint_build_booking_data_form_for_bundle($slot_for_booking){ $slot_for_booking.addClass('os-loading'); latepoint_cancel_adding_new_order_item_to_quick_edit_form(); let params = {} let is_booked = $slot_for_booking.hasClass('is-booked'); var data = { action: 'latepoint_route_call', route_name: jQuery('.order-form-add-item-btn').data('booking-form-route-name'), params: { order_item_id: $slot_for_booking.data('order-item-id'), order_item_variant: $slot_for_booking.data('order-item-variant'), booking_id: $slot_for_booking.data('booking-id'), booking_item_data: is_booked ? $slot_for_booking.find('.booking_item_data').val() : $slot_for_booking.find('.unscheduled_booking_item_data').val() }, return_format: 'json' } jQuery.ajax({ type : "post", dataType : "json", url : latepoint_timestamped_ajaxurl(), data : data, success: function(response){ if(response.status === "success"){ let $form = jQuery(response.message); $slot_for_booking.removeClass('os-loading'); if($slot_for_booking){ $slot_for_booking.find('.scheduled-bundle-booking').html($form).closest('.order-item-variant-bundle-booking ').addClass('is-booked'); }else{ jQuery('.order-items-list').prepend($form); } latepoint_init_booking_data_form(jQuery('.order-item-booking-data-form-wrapper[data-order-item-id="' + $form.data('order-item-id') + '"][data-booking-id="' + $form.data('booking-id') + '"]')); // new item added, trigger change event if(!$slot_for_booking) latepoint_quick_order_items_changed(); }else{ alert(response.message, 'error'); } } }); } function latepoint_bundle_added_to_quick_order(){ latepoint_quick_order_items_changed(); latepoint_cancel_adding_new_order_item_to_quick_edit_form(); } function latepoint_quick_order_items_changed(){ latepoint_reload_price_breakdown(); } function latepoint_fold_booking_data_form_in_order_quick_edit($booking_data_form){ if(!$booking_data_form.length) return false; latepoint_close_quick_availability_form(); latepoint_show_all_order_items(); let order_item_id = $booking_data_form.data('order-item-id'); let booking_id = $booking_data_form.data('booking-id'); let order_item_variant = $booking_data_form.data('order-item-variant'); $booking_data_form.addClass('is-loading'); let form_data = new FormData(jQuery('.order-quick-edit-form')[0]); form_data.set('order_item_id', order_item_id); form_data.set('booking_id', booking_id); var data = { action: 'latepoint_route_call', route_name: jQuery('.order-form-add-item-btn').data('fold-booking-data-route-name'), params: latepoint_formdata_to_url_encoded_string(form_data), return_format: 'json' } jQuery.ajax({ type : "post", dataType : "json", url : latepoint_timestamped_ajaxurl(), data : data, success: function(response){ if(response.status === "success"){ $booking_data_form.removeClass('is-loading').removeClass('is-unfolded').addClass('is-folded'); if(order_item_variant == latepoint_helper.order_item_variant_bundle){ $booking_data_form.closest('.order-item-variant-bundle-booking').addClass('is-booked'); $booking_data_form.find('.bundle-booking-item-pill').replaceWith(response.message); }else{ $booking_data_form.find('.order-item-pill').replaceWith(response.message); } }else{ alert(response.message, 'error'); } } }); } function latepoint_init_booking_data_form($booking_data_form){ latepoint_init_input_masks($booking_data_form); $booking_data_form.find('.fold-order-item-booking-data-form-btn').on('click', function(){ latepoint_fold_booking_data_form_in_order_quick_edit($booking_data_form); return false; }); $booking_data_form.find('.quick-booking-form-view-log-btn').on('click', function(){ var $trigger_elem = jQuery(this); $trigger_elem.addClass('os-loading'); var route = $trigger_elem.data('route'); var data = { action: 'latepoint_route_call', route_name: route, params: {booking_id: $trigger_elem.data('booking-id')}, return_format: 'json' } jQuery.ajax({ type : "post", dataType : "json", url : latepoint_timestamped_ajaxurl(), data : data, success: function(response){ $trigger_elem.removeClass('os-loading'); if(response.status === "success"){ latepoint_display_in_side_sub_panel(response.message); jQuery('body').addClass('has-side-sub-panel'); }else{ alert(response.message, 'error'); } } }); return false; }); $booking_data_form.find('.os-late-select').lateSelect(); $booking_data_form.find('.trigger-quick-availability').on('click', function(){ latepoint_load_quick_availability(jQuery(this)); return false; }); let field_base_name = 'order_items[' + $booking_data_form.data('order-item-id') +'][bookings][' + $booking_data_form.data('booking-id') +']'; $booking_data_form.find('input[name="' + field_base_name +'[start_time][formatted_value]"]').on('change', function(){ latepoint_set_booking_end_time($booking_data_form); }); $booking_data_form.find('input[name="' + field_base_name +'[end_time][formatted_value]"]').on('change', function(){ latepoint_is_next_day($booking_data_form); }); $booking_data_form.on('change', '.agent-selector', function(){ latepoint_apply_agent_selector_change($booking_data_form); }); $booking_data_form.on('change', '.location-selector', function(){ latepoint_apply_agent_selector_change($booking_data_form); }); $booking_data_form.on('change', 'select[name="booking[location_id]"]', function(){ latepoint_apply_agent_selector_change($booking_data_form); }); $booking_data_form.on('change', 'select[name="booking[total_attendees]"]', function(){ latepoint_apply_agent_selector_change($booking_data_form); }); $booking_data_form.on('change', '.os-affects-duration', function(){ latepoint_set_booking_end_time($booking_data_form); if(jQuery('.quick-availability-per-day-w').length){ latepoint_load_quick_availability($booking_data_form.find('.trigger-quick-availability')); } }); $booking_data_form.on('change', '.os-affects-price', function(){ latepoint_reload_price_breakdown(); }); $booking_data_form.on('change', '.os-affects-balance', function(){ latepoint_reload_balance_and_payments(); }); $booking_data_form.on('keyup', '.os-affects-balance', function(event){ if(event.keyCode == 13) { latepoint_reload_balance_and_payments(); } }); $booking_data_form.on('click', '.services-options-list .service-option', function(){ var selected_option_html = jQuery(this).html(); var $selected_option = jQuery(this).closest('.os-services-select-field-w').find('.service-option-selected'); $selected_option.html(selected_option_html) .data('id', jQuery(this).data('id')) .data('duration', jQuery(this).data('duration')) .data('duration-name', jQuery(this).data('duration-name')) .data('buffer-before', jQuery(this).data('buffer-before')) .data('buffer-after', jQuery(this).data('buffer-after')) .data('capacity-min', jQuery(this).data('capacity-min')) .data('capacity-max', jQuery(this).data('capacity-max')) .data('extra-durations', jQuery(this).data('extra-durations')); jQuery(this).closest('.os-services-select-field-w').find('.service-option.selected').removeClass('selected'); jQuery(this).addClass('selected').closest('.os-services-select-field-w').removeClass('active'); latepoint_apply_service_selector_change($booking_data_form); return false; }); $booking_data_form.trigger('latepoint:initBookingDataForm'); } function latepoint_init_payment_request_form($quick_order_form){ $quick_order_form.find('select[name="payment_request[portion]"]').on('change', function(){ if(jQuery(this).val() == 'custom'){ $quick_order_form.find('.custom-charge-amount-wrapper').show(); }else{ $quick_order_form.find('.custom-charge-amount-wrapper').hide(); } }) } function latepoint_show_all_order_items(){ let $quick_order_form = jQuery('.quick-order-form-w'); $quick_order_form.find('.order-items-info-w').removeClass('show-preselected-only'); $quick_order_form.find('.holds-preselected-booking').removeClass('holds-preselected-booking'); } function latepoint_init_quick_order_form(){ let $quick_order_form = jQuery('.quick-order-form-w'); $quick_order_form.trigger('latepoint:initOrderEditForm'); $quick_order_form.on('change', '.os-affects-balance', function(){ latepoint_reload_balance_and_payments(); }); $quick_order_form.on('keyup', '.os-affects-balance', function(event){ if(event.keyCode == 13) { latepoint_reload_balance_and_payments(); } }); latepoint_init_customer_inline_edit_form($quick_order_form.find('.customer-info-w')); $quick_order_form.find('.order-item-booking-data-form-wrapper').each(function(){ latepoint_init_booking_data_form(jQuery(this)); }); latepoint_lightbox_close(); latepoint_remove_floating_popup(); latepoint_init_input_masks($quick_order_form); latepoint_init_daterangepicker($quick_order_form.find('.os-date-range-picker')); latepoint_init_payment_request_form($quick_order_form); // Transactions $quick_order_form.on('click', '.transaction-refund-settings-button', function(){ jQuery(this).closest('.quick-add-transaction-box-w').addClass('show-refund-settings'); }); $quick_order_form.on('click', '.transaction-refund-submit-button', function(){ let $trigger_elem = jQuery(this); if(confirm(jQuery(this).data('os-prompt'))){ $trigger_elem.addClass('os-loading'); let route = $trigger_elem.data('route'); let data = { action: 'latepoint_route_call', route_name: route, params: $trigger_elem.closest('.refund-settings-fields').find('input, textarea, select').serialize(), return_format: 'json' } jQuery.ajax({ type : "post", dataType : "json", url : latepoint_timestamped_ajaxurl(), data : data, success: function(response){ $trigger_elem.removeClass('os-loading'); if(response.status === "success"){ $trigger_elem.closest('.quick-add-transaction-box-w').replaceWith(response.message); latepoint_reload_balance_and_payments(); }else{ alert(response.message, 'error'); } } }); return false; } }); $quick_order_form.on('click', '.refund-settings-close', function(){ jQuery(this).closest('.quick-add-transaction-box-w').removeClass('show-refund-settings'); }); $quick_order_form.on('change', '.refund-portion-selector', function(){ if(jQuery(this).val() == 'full'){ jQuery(this).closest('.refund-settings-fields').find('.custom-charge-amount-wrapper').hide(); }else{ jQuery(this).closest('.refund-settings-fields').find('.custom-charge-amount-wrapper').show(); } }); // Log $quick_order_form.find('.quick-order-form-view-log-btn').on('click', function(){ var $trigger_elem = jQuery(this); $trigger_elem.addClass('os-loading'); var route = $trigger_elem.data('route'); var data = { action: 'latepoint_route_call', route_name: route, params: {order_id: $trigger_elem.data('order-id')}, return_format: 'json' } jQuery.ajax({ type : "post", dataType : "json", url : latepoint_timestamped_ajaxurl(), data : data, success: function(response){ $trigger_elem.removeClass('os-loading'); if(response.status === "success"){ latepoint_display_in_side_sub_panel(response.message); jQuery('body').addClass('has-side-sub-panel'); }else{ alert(response.message, 'error'); } } }); return false; }); $quick_order_form.find('.new-order-item-variant-bundle').on('click', function(){ $quick_order_form.find('.new-order-item-list-bundles-wrapper').toggleClass('is-open'); $quick_order_form.find('.new-order-item-variant-selector-wrapper').toggleClass('is-open'); return false; }); $quick_order_form.find('.hidden-order-items-notice-link, .hidden-bundle-items-notice-link').on('click', function(e){ latepoint_show_all_order_items(); return false; }); $quick_order_form.find('.order-quick-edit-form').on('submit', function(e){ if(jQuery(this).find('button[type="submit"]').hasClass('os-loading')) return false; e.preventDefault(); latepoint_submit_quick_order_form(); }); $quick_order_form.on("keydown", ":input:not(textarea):not(:submit)", function(event) { if (event.key == "Enter") { event.preventDefault(); } }); $quick_order_form.find('.order-items-list').on('click', '.remove-order-item-btn', function(){ latepoint_close_quick_availability_form(); if(confirm(jQuery(this).data('os-prompt'))){ if(jQuery(this).closest('.order-item-variant-bundle-booking-wrapper').length){ // it's a bundle booking // need to figure out how to remove it when bundle jQuery(this).closest('.order-item-variant-bundle-booking').removeClass('is-booked').find('.scheduled-bundle-booking').html(''); }else{ jQuery(this).closest('.order-item').remove(); jQuery(this).closest('.order-item-booking-data-form-wrapper').remove(); } latepoint_quick_order_items_changed(); } return false; }); $quick_order_form.find('.new-order-item-variant-booking').on('click', function(){ latepoint_fold_all_open_booking_data_forms(); latepoint_build_new_booking_order_item(); }); $quick_order_form.on('click', '.order-item-pill.order-item-pill-variant-booking', function(){ jQuery(this).closest('.order-item-booking-data-form-wrapper').removeClass('is-folded').addClass('is-unfolded'); return false; }); $quick_order_form.on('click', '.bundle-booking-item-pill', function(){ jQuery(this).closest('.order-item-booking-data-form-wrapper').removeClass('is-folded').addClass('is-unfolded'); return false; }); $quick_order_form.on('click', '.unscheduled-bundle-booking', function(){ latepoint_build_booking_data_form_for_bundle(jQuery(this).closest('.order-item-variant-bundle-booking')); }); $quick_order_form.find('.order-form-add-item-btn').on('click', function(){ let $booking_data_forms = jQuery('.order-item-booking-data-form-wrapper'); $booking_data_forms.each(function(){ latepoint_fold_booking_data_form_in_order_quick_edit(jQuery(this)); }); if(jQuery(this).hasClass('is-cancelling')){ latepoint_cancel_adding_new_order_item_to_quick_edit_form(); }else{ if(jQuery('.new-order-item-variant-selector-wrapper').length){ jQuery('.order-items-list').addClass('is-blurred'); jQuery('.new-order-item-variant-selector-wrapper').addClass('is-open'); jQuery(this).addClass('is-cancelling').find('span').text(jQuery(this).data('cancel-label')); }else{ // no bundles exist, create booking form latepoint_cancel_adding_new_order_item_to_quick_edit_form(); latepoint_build_new_booking_order_item(); } } return false; }); $quick_order_form.on('click', '.order-item-variant-bundle .bundle-icon', function(){ jQuery(this).closest('.order-item-variant-bundle').toggleClass('is-open'); return false; }); $quick_order_form.find('.reload-price-breakdown').on('click', function(){ latepoint_reload_price_breakdown(); return false; }); $quick_order_form.on('click', '.trigger-remove-transaction-btn', function(){ jQuery(this).closest('.quick-add-transaction-box-w').remove(); return false; }); $quick_order_form.trigger('latepoint:initQuickOrderForm'); } function latepoint_fold_all_open_booking_data_forms(){ let $booking_data_forms = jQuery('.order-item-booking-data-form-wrapper'); $booking_data_forms.each(function(){ latepoint_fold_booking_data_form_in_order_quick_edit(jQuery(this)); }); } function latepoint_init_customer_inline_edit_form($customer_form){ latepoint_init_input_masks($customer_form); $customer_form.find('.customers-selector-search-input').on('keyup',function(){ var $queryInput = jQuery(this); var query = $queryInput.val().toLowerCase(); if(query == $queryInput.data('current-query')) return; // Search $queryInput.closest('.customers-selector-search-w').addClass('os-loading'); $queryInput.data('searching-query', query); setTimeout(function(){ if(query != jQuery('.customers-selector-search-input').data('searching-query')) return; var data = { action: latepoint_helper.route_action, route_name: $queryInput.data('route'), params: {query: query}, return_format: 'json' } jQuery.ajax({ type : "post", dataType : "json", url : latepoint_timestamped_ajaxurl(), data : data, success: function(response){ if($queryInput.data('searching-query') != query) return; $queryInput.closest('.customers-selector-search-w').removeClass('os-loading'); if(response.status === "success"){ $queryInput.data('current-query', query); jQuery('.quick-order-form-w .customers-options-list').html(response.message); }else{ // console.log(response.message); } } }); }, 300, query, $queryInput); }); } function latepoint_load_quick_availability($trigger_elem, custom_agent_id = false, start_date = false, load_more_days = false, load_prev_days = false){ $trigger_elem.addClass('os-loading'); let $booking_form = $trigger_elem.closest('.order-item-booking-data-form-wrapper'); var route = $booking_form.find('.trigger-quick-availability').data('route'); var $quick_order_form = jQuery('.quick-order-form-w'); if(custom_agent_id) $quick_order_form.find('.agent-selector').val(custom_agent_id); if(!$quick_order_form.find('.service-selector').val() || $quick_order_form.find('.service-selector').val() == '0'){ $quick_order_form.find('.os-services-select-field-w .service-option:first').trigger('click'); } let form_data = new FormData($quick_order_form.find('form')[0]); form_data.set('trigger_form_booking_id', $booking_form.data('booking-id')); form_data.set('trigger_form_order_item_id', $booking_form.data('order-item-id')); if(start_date) form_data.set('start_date', start_date); if(load_more_days || load_prev_days) form_data.set('show_days_only', true); if(load_prev_days) form_data.set('previous_days', true); var data = { action: latepoint_helper.route_action, route_name: route, params: latepoint_formdata_to_url_encoded_string(form_data), return_format: 'json' } jQuery.ajax({ type : "post", dataType : "json", url : latepoint_timestamped_ajaxurl(), data : data, success: function(response){ $trigger_elem.removeClass('os-loading'); if(response.status === "success"){ if(load_more_days){ jQuery('.latepoint-side-panel-w .quick-availability-per-day-w').html(response.message); jQuery('.latepoint-side-panel-w .os-availability-days').scrollTop(52); }else if(load_prev_days){ jQuery('.latepoint-side-panel-w .quick-availability-per-day-w').html(response.message); jQuery('.latepoint-side-panel-w .os-availability-days').scrollTop(jQuery('.latepoint-side-panel-w .os-availability-days')[0].scrollHeight - jQuery('.latepoint-side-panel-w .os-availability-days')[0].clientHeight - 50); }else{ latepoint_display_in_side_sub_panel(response.message); jQuery('.latepoint-side-panel-w .os-availability-days').scrollTop(52); jQuery('body').addClass('has-side-sub-panel'); latepoint_init_quick_availability_form(); } }else{ alert(response.message, 'error'); } } }); } function latepoint_create_field_base_name(order_item_id, booking_id){ return 'order_items['+order_item_id+'][bookings]['+booking_id+']'; } function latepoint_close_quick_availability_form(){ jQuery('.quick-availability-per-day-w').remove(); jQuery('body').removeClass('has-side-sub-panel'); } function latepoint_init_quick_availability_form(){ // TODO set booking ID let $quick_availability_wrapper = jQuery('.quick-availability-per-day-w'); let trigger_form_order_item_id = $quick_availability_wrapper.data('trigger-form-order-item-id'); let trigger_form_booking_id = $quick_availability_wrapper.data('trigger-form-booking-id'); let field_base_name = latepoint_create_field_base_name(trigger_form_order_item_id, trigger_form_booking_id); let $booking_data_form = jQuery('.quick-order-form-w .order-item-booking-data-form-wrapper[data-booking-id="'+trigger_form_booking_id+'"]'); var selected_start_date = $booking_data_form.find('input[name="'+field_base_name+'[start_date_formatted]"').val(); var selected_start_time = $booking_data_form.find('input[name="'+field_base_name+'[start_time][formatted_value]"]').val(); var selected_start_time_ampm = $booking_data_form.find('input[name="'+field_base_name+'[start_time][ampm]"]').val(); var selected_start_time_minutes = latepoint_hours_and_minutes_to_minutes(selected_start_time, selected_start_time_ampm); $quick_availability_wrapper.find('.os-availability-days').find('.agent-timeslot[data-formatted-date="'+ selected_start_date +'"][data-minutes="' + selected_start_time_minutes + '"]').addClass('selected'); $quick_availability_wrapper.on('click', '.load-more-quick-availability', function(){ jQuery(this).addClass('os-loading'); let booking_form_id = jQuery(this).closest('.quick-availability-per-day-w').data('trigger-form-booking-id'); let $trigger_btn = jQuery('.order-item-booking-data-form-wrapper[data-booking-id="' + booking_form_id + '"]').find('.trigger-quick-availability'); latepoint_load_quick_availability($trigger_btn, false, jQuery(this).data('start-date'), true); return false; }); $quick_availability_wrapper.on('click', '.load-prev-quick-availability', function(){ jQuery(this).addClass('os-loading'); let booking_form_id = jQuery(this).closest('.quick-availability-per-day-w').data('trigger-form-booking-id'); let $trigger_btn = jQuery('.order-item-booking-data-form-wrapper[data-booking-id="' + booking_form_id + '"]').find('.trigger-quick-availability'); latepoint_load_quick_availability($trigger_btn, false, jQuery(this).data('start-date'), false, true); return false; }); $quick_availability_wrapper.find('select[name="booking[agent_id]"]').on('change', function(){ latepoint_load_quick_availability(jQuery('.trigger-quick-availability'), jQuery(this).val()); }); jQuery('.os-time-group label').on('click', function(){ jQuery(this).closest('.os-time-group').find('.os-form-control').trigger('focus'); }); $quick_availability_wrapper.on('click', '.fill-booking-time', function(){ jQuery('.os-availability-days .agent-timeslot.selected').removeClass('selected'); jQuery(this).addClass('selected'); var formatted_date = jQuery(this).data('formatted-date'); var minutes = jQuery(this).data('minutes'); $booking_data_form.find('input[name="'+field_base_name+'[start_date_formatted]"]').val(formatted_date); var start_minutes = minutes; var start_hours_and_minutes = latepoint_minutes_to_hours_and_minutes(start_minutes); if(start_minutes >= 720){ $booking_data_form.find('.quick-start-time-w .time-pm').trigger('click'); }else{ $booking_data_form.find('.quick-start-time-w .time-am').trigger('click'); } $booking_data_form.find('input[name="'+field_base_name+'[start_time][formatted_value]"]').val(start_hours_and_minutes); latepoint_set_booking_end_time($booking_data_form); $booking_data_form.find('.ws-period, .as-period').addClass('animate-filled-in'); setTimeout(function(){ $booking_data_form.find('.ws-period, .as-period').removeClass('animate-filled-in'); }, 500) }); } function latepoint_reload_after_order_save(){ latepoint_reload_calendar_view(); jQuery('.os-widget').each(function(){ latepoint_reload_widget(jQuery(this)); }); if(jQuery('table.os-reload-on-booking-update').length) latepoint_filter_table(jQuery('table.os-reload-on-booking-update'), jQuery('table.os-reload-on-booking-update')); latepoint_close_side_panel(); }