From bd726a01c79552a86873036d1f1fa1126ed1492e Mon Sep 17 00:00:00 2001 From: Joe Tretter Date: Tue, 28 Apr 2020 18:46:31 -0500 Subject: [PATCH] Fix multiple execution of on-date-change event handler causing duplication of requests after changing symbol --- client/js/masterFilter.js | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/client/js/masterFilter.js b/client/js/masterFilter.js index 2e3b7a8..f9c4781 100644 --- a/client/js/masterFilter.js +++ b/client/js/masterFilter.js @@ -78,15 +78,19 @@ let symbolChanged=(newSymbol)=>{ $("#tbSymbol").text(getCurrentSymbol()); getAvailDatesForSymbol(getCurrentSymbol()).done(_=>{ - $("#datePicker").datepicker('destroy'); - $("#datePicker").datepicker({beforeShowDay:beforeShowDay}) - .on('changeDate', (e)=>{ - if (e.date !== undefined) { - console.log("DatePicker changed date",e.date); - filterContext.theDate=e.date.toISOString().substr(0,10); - showTimesForDay(filterContext.theDate); - } - }); + $("#datePicker").datepicker('destroy'); + $("#datePicker").datepicker({beforeShowDay:beforeShowDay}); + if (document.getElementById("datePicker").hasHandler !== true) { // work around multiple binding of the eventhandler - it seems that destroy doesn't remove the old handler.... + $("#datePicker").datepicker().on('changeDate', (e)=>{ + if (e.date !== undefined) { + console.log("DatePicker changed date",e.date); + filterContext.theDate=e.date.toISOString().substr(0,10); + showTimesForDay(filterContext.theDate); + } + }); + document.getElementById("datePicker").hasHandler= true; + } + if (filterContext.theDate === undefined) { console.log("no date in contest, setting date to the last in chain."); filterContext.theDate=filterContext.availableDates[filterContext.availableDates.length-1].Date;