58 lines
1.4 KiB
JavaScript
58 lines
1.4 KiB
JavaScript
jQuery( function ( $ )
|
|
{
|
|
'use strict';
|
|
|
|
/**
|
|
* Update date picker element
|
|
* Used for static & dynamic added elements (when clone)
|
|
*/
|
|
function update()
|
|
{
|
|
var $this = $( this ),
|
|
options = $this.data( 'options' ),
|
|
$inline = $this.siblings( '.mashsb-rwmb-datetime-inline' ),
|
|
$timestamp = $this.siblings( '.mashsb-rwmb-datetime-timestamp' ),
|
|
current = $this.val();
|
|
|
|
$this.siblings( '.ui-datepicker-append' ).remove(); // Remove appended text
|
|
if ( $timestamp.length )
|
|
{
|
|
var $picker = $inline.length ? $inline : $this;
|
|
options.onSelect = function ()
|
|
{
|
|
$timestamp.val( getTimestamp( $picker.datepicker( 'getDate' ) ) );
|
|
};
|
|
}
|
|
|
|
if ( $inline.length )
|
|
{
|
|
options.altField = '#' + $this.attr( 'id' );
|
|
$inline
|
|
.removeClass( 'hasDatepicker' )
|
|
.empty()
|
|
.prop( 'id', '' )
|
|
.datepicker( options )
|
|
.datepicker( 'setDate', current );
|
|
}
|
|
else
|
|
{
|
|
$this.removeClass( 'hasDatepicker' ).datepicker( options );
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Convert date to Unix timestamp in milliseconds
|
|
* @link http://stackoverflow.com/a/14006555/556258
|
|
* @param date
|
|
* @return number
|
|
*/
|
|
function getTimestamp( date )
|
|
{
|
|
var milliseconds = Date.UTC( date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds() );
|
|
return Math.floor( milliseconds / 1000 );
|
|
}
|
|
|
|
$( ':input.mashsb-rwmb-date' ).each( update );
|
|
$( '.mashsb-rwmb-input' ).on( 'clone', ':input.mashsb-rwmb-date', update );
|
|
} );
|