File "admin.js"

Full Path: /home/romayxjt/public_html/wp-content/plugins/orderable/inc/modules/live-view/source/admin/js/admin.js
File size: 3.15 KB
MIME-type: text/x-asm
Charset: utf-8

( function ( $, document ) {
	'use strict';

	var orderable_live_view = {
		/**
		 * On doc ready.
		 */
		on_ready() {
			orderable_live_view.mute_button();
			orderable_live_view.update_url_for_order_status_buttons();
		},

		/**
		 * Heartbeat send.
		 *
		 * @param e
		 * @param data
		 */
		on_heartbeat_send( e, data ) {
			data.orderable_heartbeat = 'orderable_live_view';
			data.orderable_filtered_service =
				orderable_live_view_vars.filtered_service;
			data.orderable_filtered_due_date =
				orderable_live_view_vars.filtered_due_date;
			data.orderable_orderby = orderable_live_view_vars.orderby;
			data.orderable_last_order_id =
				orderable_live_view.get_last_order_id();
			data.orderable_location_id = $(
				'select[name="orderable_location"]'
			)
				.find( ':selected' )
				.val();
		},

		/**
		 * Get last order ID.
		 *
		 * @return {number}
		 */
		get_last_order_id() {
			return parseInt( orderable_live_view_vars.last_order_id );
		},

		/**
		 * Heartbeat tick.
		 *
		 * @param e
		 * @param data
		 */
		on_heartbeat_tick( e, data ) {
			if ( typeof data.orderable === 'undefined' ) {
				return;
			}

			if (
				data.orderable.last_order_id <=
				orderable_live_view.get_last_order_id()
			) {
				return;
			}

			// Update last order ID.
			orderable_live_view_vars.last_order_id =
				data.orderable.last_order_id;

			// If there are new orders, reload the page.
			$( '#posts-filter, #wc-orders-filter' ).load(
				orderable_live_view_vars.url +
					' #posts-filter > *, #wc-orders-filter > *',
				function ( response, status, xhr ) {
					orderable_live_view.play_ding();

					if ( status === 'error' ) {
						console.log( 'Live View Error Response', response );
						console.log( 'Live View Error Status', status );
					}

					$( document ).trigger( 'orderable-live-view-updated' );
				}
			);
		},

		/**
		 * Play ding sound.
		 */
		play_ding() {
			const mute_status = parseInt(
					$( '.orderable-live-view-button--audio' ).data(
						'orderable-mute-status'
					)
				),
				$ding = $( '#orderable_ding' );

			if ( 1 === mute_status || $ding.length < 0 ) {
				return;
			}

			$ding[ 0 ].play();
		},

		/**
		 * Setup mute button.
		 */
		mute_button() {
			$( '.orderable-live-view-button--audio' ).on( 'click', function () {
				const $button = $( this ),
					mute_status =
						parseInt( $button.data( 'orderable-mute-status' ) ) ===
						1
							? 0
							: 1, // invert status.
					current_text = $button.text(),
					new_text = $button.data( 'orderable-alt-text' );

				$button
					.data( 'orderable-mute-status', mute_status )
					.data( 'orderable-alt-text', current_text )
					.text( new_text );
			} );
		},

		/**
		 * Append '&orderable_live_view' to the order status hyperlinks.
		 */
		update_url_for_order_status_buttons() {
			$( '.subsubsub li a' ).each( function () {
				const href = $( this ).attr( 'href' );
				$( this ).attr( 'href', `${ href }&orderable_live_view` );
			} );
		},
	};

	$( document ).ready( orderable_live_view.on_ready );
	$( document ).on( 'heartbeat-send', orderable_live_view.on_heartbeat_send );
	$( document ).on( 'heartbeat-tick', orderable_live_view.on_heartbeat_tick );
} )( jQuery, document );