rilwis/meta-box

View on GitHub
js/time.js

Summary

Maintainability
B
4 hrs
Test Coverage
( function ( $, rwmb, i18n ) {
    'use strict';

    /**
     * Transform an input into a time picker.
     */
    function transform() {
        var $this = $( this ),
            options = $this.data( 'options' ),
            $inline = $this.siblings( '.rwmb-datetime-inline' ),
            current = $this.val();

        $this.siblings( '.ui-datepicker-append' ).remove();  // Remove appended text

        options.onSelect = function() {
            $this.trigger( 'change' );
        }
        options.beforeShow = function( i ) {
            if ( $( i ).prop( 'readonly' ) ) {
                return false;
            }
        }

        if ( ! $inline.length ) {
            $this.removeClass( 'hasDatepicker' ).timepicker( options );
            return;
        }

        options.altField = '#' + $this.attr( 'id' );
        $inline
            .removeClass( 'hasDatepicker' )
            .empty()
            .prop( 'id', '' )
            .timepicker( options )
            .timepicker( 'setTime', current );
    }

    // Set language if available
    function setTimeI18n() {
        if ( $.timepicker.regional.hasOwnProperty( i18n.locale ) ) {
            $.timepicker.setDefaults( $.timepicker.regional[i18n.locale] );
        } else if ( $.timepicker.regional.hasOwnProperty( i18n.localeShort ) ) {
            $.timepicker.setDefaults( $.timepicker.regional[i18n.localeShort] );
        }
    }

    function init( e ) {
        $( e.target ).find( '.rwmb-time' ).each( transform );
    }

    setTimeI18n();
    rwmb.$document
        .on( 'mb_ready', init )
        .on( 'clone', '.rwmb-time', transform );
} )( jQuery, rwmb, RWMB_Time );