aboutsummaryrefslogtreecommitdiffstats
path: root/admin/themes/default/js/datepicker.js
diff options
context:
space:
mode:
Diffstat (limited to 'admin/themes/default/js/datepicker.js')
-rw-r--r--admin/themes/default/js/datepicker.js73
1 files changed, 54 insertions, 19 deletions
diff --git a/admin/themes/default/js/datepicker.js b/admin/themes/default/js/datepicker.js
index ace38da13..eb6f31a6f 100644
--- a/admin/themes/default/js/datepicker.js
+++ b/admin/themes/default/js/datepicker.js
@@ -1,45 +1,69 @@
+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') +'"]'),
- value = $target.val().split('-');
+ linked = !!$target.length;
- function set(date) {
- $this.datepicker('setDate', date);
+ 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.datepicker('option', 'maxDate', date);
+ $start.datetimepicker('option', 'maxDate', date);
}
else if ($this.data('datepicker-end')) {
- $end.datepicker('option', 'minDate', date);
+ 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.datepicker(jQuery.extend({
- dateFormat: 'DD d MM yy',
- altField: $target,
+ $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
+ changeYear: true,
+ showTimepicker: false,
+ altFieldTimeOnly: false,
+ showSecond: false,
+ alwaysSetTime: false,
+ stepMinute: 5
}, options));
- // attach linked picker (for ranges)
+ // attach range pickers
if ($this.data('datepicker-start')) {
var $start = jQuery('[data-datepicker="'+ jQuery(this).data('datepicker-start') +'"]');
- $this.datepicker('option', 'onClose', function(date) {
- $start.datepicker('option', 'maxDate', date);
+ $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.datepicker('option', 'onClose', function(date) {
- $end.datepicker('option', 'minDate', date);
+ $this.datetimepicker('option', 'onClose', function(date) {
+ $end.datetimepicker('option', 'minDate', date);
});
}
@@ -47,15 +71,26 @@ jQuery.fn.pwgDatepicker = function(options) {
if ($this.data('datepicker-unset')) {
jQuery('#'+ $this.data('datepicker-unset')).on('click', function(e) {
e.preventDefault();
-
- $target.val('');
- set(null);
+ set(null, false);
});
}
// set value from linked input
- if (value.length == 3) {
- set(new Date(value[0], value[1]-1, value[2]));
+ if (linked) {
+ if (value[0].length == 10 && !options.showTimepicker) {
+ 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);
}
});
}; \ No newline at end of file