From 7d354acd7a582f6da33177be3567effec003f3a8 Mon Sep 17 00:00:00 2001 From: "ctrlaltca@gmail.com" <> Date: Thu, 28 Jul 2011 08:01:06 +0000 Subject: applied the "delayed callback" patch for TActiveDatePicker (ticker #265) --- .../prado/activecontrols/activedatepicker.js | 6 ---- .../source/prado/datepicker/datepicker.js | 36 +++++++++++++++++----- 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/framework/Web/Javascripts/source/prado/activecontrols/activedatepicker.js b/framework/Web/Javascripts/source/prado/activecontrols/activedatepicker.js index 2ee97266..8857ee05 100755 --- a/framework/Web/Javascripts/source/prado/activecontrols/activedatepicker.js +++ b/framework/Web/Javascripts/source/prado/activecontrols/activedatepicker.js @@ -87,11 +87,5 @@ Prado.WebUI.TActiveDatePicker = Class.extend(Prado.WebUI.TDatePicker, // Make callback request var request = new Prado.CallbackRequest(this.options.EventTarget,this.options); request.dispatch(); - }, - - // reimplement parent method to avoid handling mouse whell events, - // since they can cause floods of callback events - mouseWheelChange : function (event) - { } }); diff --git a/framework/Web/Javascripts/source/prado/datepicker/datepicker.js b/framework/Web/Javascripts/source/prado/datepicker/datepicker.js index 95ab43e7..3ee9e28f 100644 --- a/framework/Web/Javascripts/source/prado/datepicker/datepicker.js +++ b/framework/Web/Javascripts/source/prado/datepicker/datepicker.js @@ -461,7 +461,7 @@ Prado.WebUI.TDatePicker.prototype = var d = this.newDate(this.selectedDate); var m = d.getMonth() + Math.round(delta); - this.setMonth(m); + this.setMonth(m,true); return false; }, @@ -486,13 +486,33 @@ Prado.WebUI.TDatePicker.prototype = this.options.OnDateChanged(this, date); } }, + + fireChangeEvent: function(element, capped) + { + if (capped) + { + var obj = this; + + if (typeof(obj.changeeventtimer)!="undefined") + { + clearTimeout(obj.changeeventtimer); + obj.changeeventtimer = null; + } + obj.changeeventtimer = setTimeout( + function() { obj.changeeventtimer = null; Event.fireEvent(element, "change"); }, + 1500 + ); + } + else + Event.fireEvent(element, "change"); + }, - onChange : function() + onChange : function(ref, date, capevents) { if(this.options.InputMode == "TextBox") { this.control.value = this.formatDate(); - Event.fireEvent(this.control, "change"); + this.fireChangeEvent(this.control, capevents); } else { @@ -515,7 +535,7 @@ Prado.WebUI.TDatePicker.prototype = for(var i = 0; i < years.length; i++) years[i].selected = years[i].value.toInteger() == currentYear; } - Event.fireEvent(day || month || year, "change"); + this.fireChangeEvent(day || month || year, capped); } }, @@ -533,7 +553,7 @@ Prado.WebUI.TDatePicker.prototype = return new Date(Math.min(Math.max(date.getFullYear(),this.FromYear),this.UpToYear), date.getMonth(), date.getDate(), 0,0,0); }, - setSelectedDate : function(date) + setSelectedDate : function(date, capevents) { if (date == null) return; @@ -544,7 +564,7 @@ Prado.WebUI.TDatePicker.prototype = this.updateHeader(); this.update(); if (dateChanged && typeof(this.onChange) == "function") - this.onChange(this, date); + this.onChange(this, date, capevents); }, getElement : function() @@ -564,12 +584,12 @@ Prado.WebUI.TDatePicker.prototype = this.setSelectedDate(d); }, - setMonth : function (month) + setMonth : function (month, capevents) { var d = this.newDate(this.selectedDate); d.setDate(Math.min(d.getDate(), this.getDaysPerMonth(month,d.getFullYear()))); d.setMonth(month); - this.setSelectedDate(d); + this.setSelectedDate(d,capevents); }, nextMonth : function () -- cgit v1.2.3