mirror of
https://github.com/Piwigo/Piwigo.git
synced 2026-03-28 17:42:57 +01:00
96 lines
2.9 KiB
JavaScript
96 lines
2.9 KiB
JavaScript
jQuery.timepicker.log = jQuery.noop; // that's ugly, but the timepicker is acting weird and throws parsing errors
|
|
|
|
jQuery.fn.pwgDatepicker = function(options) {
|
|
options = options || {};
|
|
|
|
return this.each(function() {
|
|
var $this = jQuery(this),
|
|
$target = jQuery('[name="'+ jQuery(this).data('datepicker') +'"]'),
|
|
linked = !!$target.length;
|
|
|
|
if (linked) { // get value before init
|
|
var value = $target.val().split(' ');
|
|
}
|
|
|
|
// custom setter
|
|
function set(date, init) {
|
|
$this.datetimepicker('setDate', date);
|
|
|
|
if ($this.data('datepicker-start')) {
|
|
$start.datetimepicker('option', 'maxDate', date);
|
|
}
|
|
else if ($this.data('datepicker-end')) {
|
|
if (!init) { // on init, "end" is not initialized yet (assuming "start" is before "end" in the DOM)
|
|
$end.datetimepicker('option', 'minDate', date);
|
|
}
|
|
}
|
|
|
|
if (!date && linked) {
|
|
$target.val('');
|
|
}
|
|
}
|
|
|
|
// init picker
|
|
$this.datetimepicker(jQuery.extend({
|
|
dateFormat: linked ? 'DD d MM yy' : 'yy-mm-dd',
|
|
timeFormat: 'HH:mm',
|
|
|
|
altField: linked ? $target : null,
|
|
altFormat: 'yy-mm-dd',
|
|
altTimeFormat: options.showTimepicker ? 'HH:mm:ss' : '',
|
|
|
|
autoSize: true,
|
|
changeMonth : true,
|
|
changeYear: true,
|
|
showTimepicker: false,
|
|
altFieldTimeOnly: false,
|
|
showSecond: false,
|
|
alwaysSetTime: false,
|
|
stepMinute: 5
|
|
}, options));
|
|
|
|
// attach range pickers
|
|
if ($this.data('datepicker-start')) {
|
|
var $start = jQuery('[data-datepicker="'+ jQuery(this).data('datepicker-start') +'"]');
|
|
|
|
$this.datetimepicker('option', 'onClose', function(date) {
|
|
$start.datetimepicker('option', 'maxDate', date);
|
|
});
|
|
|
|
$this.datetimepicker('option', 'minDate', $start.datetimepicker('getDate'));
|
|
}
|
|
else if ($this.data('datepicker-end')) {
|
|
var $end = jQuery('[data-datepicker="'+ jQuery(this).data('datepicker-end') +'"]');
|
|
|
|
$this.datetimepicker('option', 'onClose', function(date) {
|
|
$end.datetimepicker('option', 'minDate', date);
|
|
});
|
|
}
|
|
|
|
// attach unset button
|
|
if ($this.data('datepicker-unset')) {
|
|
jQuery('#'+ $this.data('datepicker-unset')).on('click', function(e) {
|
|
e.preventDefault();
|
|
set(null, false);
|
|
});
|
|
}
|
|
|
|
// set value from linked input
|
|
if (linked) {
|
|
if (value[0].length == 10 && (!options.showTimepicker || value.length==1)) {
|
|
set(jQuery.datepicker.parseDate('yy-mm-dd', value[0]), true);
|
|
}
|
|
else if (value.length == 2 && options.showTimepicker) {
|
|
set(jQuery.datepicker.parseDateTime('yy-mm-dd', 'HH:mm:ss', value.join(' ')), true);
|
|
}
|
|
else {
|
|
set(null, true);
|
|
}
|
|
}
|
|
|
|
// autoSize not handled by timepicker
|
|
if (options.showTimepicker) {
|
|
$this.attr('size', parseInt($this.attr('size'))+6);
|
|
}
|
|
});
|
|
}; |