From f152509fb69b13d96169cac7b7dde8c4d585f6c0 Mon Sep 17 00:00:00 2001 From: Fabio Cantoni Date: Sun, 16 Feb 2014 10:16:42 -0300 Subject: [PATCH 01/33] Update jquery-timepicker to version 1.3.3 --- .../assets/javascripts/jquery.timepicker.js | 300 ++++++++++++------ .../assets/stylesheets/jquery.timepicker.css | 134 ++++---- 2 files changed, 273 insertions(+), 161 deletions(-) mode change 100755 => 100644 vendor/assets/stylesheets/jquery.timepicker.css diff --git a/vendor/assets/javascripts/jquery.timepicker.js b/vendor/assets/javascripts/jquery.timepicker.js index b7bf38c..cb0e1a1 100644 --- a/vendor/assets/javascripts/jquery.timepicker.js +++ b/vendor/assets/javascripts/jquery.timepicker.js @@ -1,5 +1,5 @@ /************************ -jquery-timepicker v1.2.5 +jquery-timepicker v1.3.3 http://jonthornton.github.com/jquery-timepicker/ requires jQuery 1.7+ @@ -28,12 +28,13 @@ requires jQuery 1.7+ scrollDefaultNow: false, scrollDefaultTime: false, selectOnBlur: false, - disableTouchKeyboard: true, + disableTouchKeyboard: false, forceRoundTime: false, appendTo: 'body', disableTimeRanges: [], closeOnWindowScroll: false, - disableTextInput: false + typeaheadHighlight: true, + noneOption: false }; var _lang = { decimal: '.', @@ -50,49 +51,52 @@ requires jQuery 1.7+ { var self = $(this); - // convert dropdowns to text input - if (self[0].tagName == 'SELECT') { - var attrs = { 'type': 'text', 'value': self.val() }; - var raw_attrs = self[0].attributes; - - for (var i=0; i < raw_attrs.length; i++) { - attrs[raw_attrs[i].nodeName] = raw_attrs[i].nodeValue; + // pick up settings from data attributes + var attributeOptions = []; + for (key in _defaults) { + if (self.data(key)) { + attributeOptions[key] = self.data(key); } - - var input = $('', attrs); - self.replaceWith(input); - self = input; } - var settings = $.extend({}, _defaults); - - if (options) { - settings = $.extend(settings, options); - } + var settings = $.extend({}, _defaults, attributeOptions, options); if (settings.lang) { _lang = $.extend(_lang, settings.lang); } settings = _parseSettings(settings); - self.data('timepicker-settings', settings); - self.prop('autocomplete', 'off'); - self.on('click.timepicker focus.timepicker', methods.show); - self.on('change.timepicker', _formatValue); - self.on('keydown.timepicker', _keydownhandler); - self.on('keyup.timepicker', _keyuphandler); self.addClass('ui-timepicker-input'); - _formatValue.call(self.get(0)); + if (settings.useSelect) { + _render(self); + } else { + self.prop('autocomplete', 'off'); + self.on('click.timepicker focus.timepicker', methods.show); + self.on('change.timepicker', _formatValue); + self.on('keydown.timepicker', _keydownhandler); + self.on('keyup.timepicker', _keyuphandler); + + _formatValue.call(self.get(0)); + } }); }, show: function(e) { + if (e) { + e.preventDefault(); + } + var self = $(this); var settings = self.data('timepicker-settings'); + if (settings.useSelect) { + self.data('timepicker-list').focus(); + return; + } + if (_hideKeyboard(self)) { // block the keyboard on mobile devices self.blur(); @@ -154,13 +158,26 @@ requires jQuery 1.7+ list.scrollTop(0); } - _attachCloseHandler(settings); + // attach close handlers + $(document).on('touchstart.ui-timepicker mousedown.ui-timepicker', _closeHandler); + if (settings.closeOnWindowScroll) { + $(document).on('scroll.ui-timepicker', _closeHandler); + } self.trigger('showTimepicker'); + + return this; }, hide: function(e) { + var self = $(this); + var settings = self.data('timepicker-settings'); + + if (settings && settings.useSelect) { + self.blur(); + } + $('.ui-timepicker-wrapper:visible').each(function() { var list = $(this); var self = list.data('timepicker-input'); @@ -173,6 +190,8 @@ requires jQuery 1.7+ list.hide(); self.trigger('hideTimepicker'); }); + + return this; }, option: function(key, value) @@ -200,7 +219,11 @@ requires jQuery 1.7+ self.data('timepicker-list', false); } - return self; + if (settings.useSelect) { + _render(self); + } + + return this; }, getSecondsFromMidnight: function() @@ -211,12 +234,18 @@ requires jQuery 1.7+ getTime: function(relative_date) { var self = this; + + var time_string = _getTimeValue(self); + if (!time_string) { + return null; + } + if (!relative_date) { relative_date = new Date(); } relative_date.setHours(0, 0, 0, 0); - return new Date(relative_date.valueOf() + (_time2int(_getTimeValue(self))*1000)); + return new Date(relative_date.valueOf() + (_time2int(time_string)*1000)); }, setTime: function(value) @@ -228,6 +257,8 @@ requires jQuery 1.7+ if (self.data('timepicker-list')) { _setSelected(self, self.data('timepicker-list')); } + + return this; }, remove: function() @@ -250,6 +281,8 @@ requires jQuery 1.7+ } self.removeData('timepicker-list'); + + return this; } }; @@ -282,6 +315,17 @@ requires jQuery 1.7+ settings.disableTimeRanges = settings.disableTimeRanges.sort(function(a, b){ return a[0] - b[0]; }); + + // merge any overlapping ranges + for (var i = settings.disableTimeRanges.length-1; i > 0; i--) { + if (settings.disableTimeRanges[i][0] <= settings.disableTimeRanges[i-1][1]) { + settings.disableTimeRanges[i-1] = [ + Math.min(settings.disableTimeRanges[i][0], settings.disableTimeRanges[i-1][0]), + Math.max(settings.disableTimeRanges[i][1], settings.disableTimeRanges[i-1][1]) + ]; + settings.disableTimeRanges.splice(i, 1); + } + } } return settings; @@ -297,11 +341,25 @@ requires jQuery 1.7+ self.data('timepicker-list', false); } - list = $('