From ed10d0650e8bd181ddff6d67da6969d4fbda0aaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ing=2E=20Jan=20Novotn=C3=BD?= Date: Mon, 26 Sep 2011 22:10:14 +0200 Subject: [PATCH] Issue when specifying stepHour/stepMinute/stepSecond along with min and max limits. Modulo was computed in relation with midnight instead of min limit. Error usecase: $('#example1').datetimepicker({ stepHour: 4, hourMin: 9, hourMax: 18 }); Would make steps 9-13-16 instead of 9-13-17. --- jquery-ui-timepicker-addon.js | 38 +++++++++++++++++------------------ 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/jquery-ui-timepicker-addon.js b/jquery-ui-timepicker-addon.js index 123bfb6..721986c 100644 --- a/jquery-ui-timepicker-addon.js +++ b/jquery-ui-timepicker-addon.js @@ -340,10 +340,10 @@ $.extend(Timepicker.prototype, { // Added by Peter Medeiros: // - Figure out what the hour/minute/second max should be based on the step values. // - Example: if stepMinute is 15, then minMax is 45. - hourMax = (o.hourMax - (o.hourMax % o.stepHour)).toFixed(0), - minMax = (o.minuteMax - (o.minuteMax % o.stepMinute)).toFixed(0), - secMax = (o.secondMax - (o.secondMax % o.stepSecond)).toFixed(0), - millisecMax = (o.millisecMax - (o.millisecMax % o.stepMillisec)).toFixed(0), + hourMax = (o.hourMax - ((o.hourMax - o.hourMin) % o.stepHour)).toFixed(0), + minMax = (o.minuteMax - ((o.minuteMax - o.minuteMin) % o.stepMinute)).toFixed(0), + secMax = (o.secondMax - ((o.secondMax - o.secondMin) % o.stepSecond)).toFixed(0), + millisecMax = (o.millisecMax - ((o.millisecMax - o.millisecMin) % o.stepMillisec)).toFixed(0), dp_id = this.inst.id.toString().replace(/([^A-Za-z0-9_])/g, ''); // Prevent displaying twice @@ -362,7 +362,7 @@ $.extend(Timepicker.prototype, { secondGridSize = 0, millisecGridSize = 0, size; - + // Hours if (o.showHour && o.hourGrid > 0) { html += '
' + @@ -388,7 +388,7 @@ $.extend(Timepicker.prototype, { html += '
' + o.minuteText + '
'; - + // Minutes if (o.showMinute && o.minuteGrid > 0) { html += '
' + @@ -425,7 +425,7 @@ $.extend(Timepicker.prototype, { '
'; } else html += '
'; - + // Milliseconds html += '
' + o.millisecText + '
'; @@ -445,8 +445,8 @@ $.extend(Timepicker.prototype, { ''; } else html += '
'; - - // Timezone + + // Timezone html += '
' + o.timezoneText + '
'; html += '
').find("select"); $.fn.append.apply(this.timezone_select, $.map(o.timezoneList, function(val, idx) { @@ -598,7 +598,7 @@ $.extend(Timepicker.prototype, { }); }); } - + if (o.showMillisec && o.millisecGrid > 0) { $tp.find(".ui_tpicker_millisec table").css({ width: size + "%", @@ -642,7 +642,7 @@ $.extend(Timepicker.prototype, { }, //######################################################################## - // This function tries to limit the ability to go outside the + // This function tries to limit the ability to go outside the // min/max date range //######################################################################## _limitMinMaxDateTime: function(dp_inst, adjustSliders){ @@ -674,7 +674,7 @@ $.extend(Timepicker.prototype, { this.second = this._defaults.secondMin; this._defaults.millisecMin = minDateTime.getMilliseconds(); } else { - if(this.millisec < this._defaults.millisecMin) + if(this.millisec < this._defaults.millisecMin) this.millisec = this._defaults.millisecMin; this._defaults.millisecMin = this.millisecMinOriginal; } @@ -694,7 +694,7 @@ $.extend(Timepicker.prototype, { if($.datepicker._get(dp_inst, 'maxDateTime') !== null && $.datepicker._get(dp_inst, 'maxDateTime') !== undefined && dp_date){ var maxDateTime = $.datepicker._get(dp_inst, 'maxDateTime'), maxDateTimeDate = new Date(maxDateTime.getFullYear(), maxDateTime.getMonth(), maxDateTime.getDate(), 0, 0, 0, 0); - + if(this.hourMaxOriginal === null || this.minuteMaxOriginal === null || this.secondMaxOriginal === null){ this.hourMaxOriginal = o.hourMax; this.minuteMaxOriginal = o.minuteMax; @@ -731,10 +731,10 @@ $.extend(Timepicker.prototype, { } if(adjustSliders !== undefined && adjustSliders === true){ - var hourMax = (this._defaults.hourMax - (this._defaults.hourMax % this._defaults.stepHour)).toFixed(0), - minMax = (this._defaults.minuteMax - (this._defaults.minuteMax % this._defaults.stepMinute)).toFixed(0), - secMax = (this._defaults.secondMax - (this._defaults.secondMax % this._defaults.stepSecond)).toFixed(0), - millisecMax = (this._defaults.millisecMax - (this._defaults.millisecMax % this._defaults.stepMillisec)).toFixed(0); + var hourMax = (this._defaults.hourMax - ((this._defaults.hourMax - this._defaults.hourMin) % this._defaults.stepHour)).toFixed(0), + minMax = (this._defaults.minuteMax - ((this._defaults.minuteMax - this._defaults.minuteMin) % this._defaults.stepMinute)).toFixed(0), + secMax = (this._defaults.secondMax - ((this._defaults.secondMax - this._defaults.secondMin) % this._defaults.stepSecond)).toFixed(0), + millisecMax = (this._defaults.millisecMax - ((this._defaults.millisecMax - this._defaults.millisecMin) % this._defaults.stepMillisec)).toFixed(0); if(this.hour_slider) this.hour_slider.slider("option", { min: this._defaults.hourMin, max: hourMax }).slider('value', this.hour);