From 31f2ed3a719618e1f232aab07ea788e665cc378a Mon Sep 17 00:00:00 2001 From: bohung Date: Wed, 13 Jul 2022 15:58:31 +0800 Subject: [PATCH] Fix js bug. --- app/assets/javascripts/calendar.js | 1 + app/assets/javascripts/calendar_frontend.js | 1 + app/assets/javascripts/calendar_widget.js | 23 ++++++++++++++----- app/assets/javascripts/calendar_widget2.js | 25 +++++++++++++++------ 4 files changed, 37 insertions(+), 13 deletions(-) diff --git a/app/assets/javascripts/calendar.js b/app/assets/javascripts/calendar.js index 75444bc..652287d 100644 --- a/app/assets/javascripts/calendar.js +++ b/app/assets/javascripts/calendar.js @@ -44,6 +44,7 @@ if(window.calendar_variable.date_type == 2){ window.calendar_variable.short_date = (calendar_variable.is_chinese ? "MMM d (W)" : "W, d MMM"); window.calendar_variable.short_date_time = (calendar_variable.is_chinese ? "MMM d (W) b h:m" : "W, d MMM h:m b"); } +window.calendar_variable.date_format_numeric = 'yy/MM/dd'; window.calendar_variable.short_date_numeric = (calendar_variable.is_chinese ? "MM/dd (w)" : "w MM/dd"); window.calendar_variable.time_format = (calendar_variable.is_chinese ? "b h:m" : "h:m b"); window.calendar_variable.std_date_format = 'y-MM-d'; diff --git a/app/assets/javascripts/calendar_frontend.js b/app/assets/javascripts/calendar_frontend.js index dd6423a..c90e655 100644 --- a/app/assets/javascripts/calendar_frontend.js +++ b/app/assets/javascripts/calendar_frontend.js @@ -44,6 +44,7 @@ if(window.calendar_variable.date_type == 2){ window.calendar_variable.short_date = (calendar_variable.is_chinese ? "MMM d (W)" : "W, d MMM"); window.calendar_variable.short_date_time = (calendar_variable.is_chinese ? "MMM d (W) b h:m" : "W, d MMM h:m b"); } +window.calendar_variable.date_format_numeric = 'yy/MM/dd'; window.calendar_variable.short_date_numeric = (calendar_variable.is_chinese ? "MM/dd (w)" : "w MM/dd"); window.calendar_variable.time_format = (calendar_variable.is_chinese ? "b h:m" : "h:m b"); window.calendar_variable.std_date_format = 'y-MM-d'; diff --git a/app/assets/javascripts/calendar_widget.js b/app/assets/javascripts/calendar_widget.js index f49fd05..0250147 100644 --- a/app/assets/javascripts/calendar_widget.js +++ b/app/assets/javascripts/calendar_widget.js @@ -43,6 +43,7 @@ if(window.calendar_variable.date_type == 2){ window.calendar_variable.short_date = (calendar_variable.is_chinese ? "MMM d (W)" : "W, d MMM"); window.calendar_variable.short_date_time = (calendar_variable.is_chinese ? "MMM d (W) b h:m" : "W, d MMM h:m b"); } +window.calendar_variable.date_format_numeric = 'yy/MM/dd'; window.calendar_variable.short_date_numeric = (calendar_variable.is_chinese ? "MM/dd (w)" : "w MM/dd"); window.calendar_variable.time_format = (calendar_variable.is_chinese ? "b h:m" : "h:m b"); window.calendar_variable.std_date_format = 'y-MM-d'; @@ -150,9 +151,12 @@ var CalendarModuleMonth1 = function(date,dom,subpart,url,index_flag){ }) return '#'+comp } - var format_date = function(date){ + var format_date = function(date, numeric){ date = new Date(date); - return getDateString(date, window.calendar_variable.date_format); + if(numeric) + return getDateString(date, window.calendar_variable.date_format_numeric); + else + return getDateString(date, window.calendar_variable.date_format); } var format_datetime = function(date){ date = new Date(date); @@ -394,6 +398,11 @@ var CalendarModuleMonth1 = function(date,dom,subpart,url,index_flag){ prevMonthFunc(toggle_data) } } + var get_start_of_date = function(date){ + var tmp_date = new Date(date); + tmp_date.setHours(0,0,0,0); + return tmp_date; + } var fetchEvents = function(){ var usd = Math.round(firstDay/1000), usd_target = Math.round(first_target_day/1000), @@ -409,10 +418,12 @@ var CalendarModuleMonth1 = function(date,dom,subpart,url,index_flag){ $.each(data.events,function(index,eve){ var sd = new Date(eve.start), ed = new Date(eve.end), - sd_date = new Date(format_date(eve.start)), - ed_date = new Date(format_date(eve.end)), - timeDiff = ed_date.getTime() - sd_date.getTime(), - dayDiff = Math.round(timeDiff / (1000 * 3600 * 24)); + sd_date = new Date(format_date(eve.start, true)), + ed_date = new Date(format_date(eve.end, true)), + start_of_sd_date = get_start_of_date(sd_date), + start_of_ed_date = get_start_of_date(ed_date), + timeDiff = start_of_ed_date.getTime() - start_of_sd_date.getTime(), + dayDiff = Math.ceil(timeDiff / (1000 * 3600 * 24)); if(eve.allDay && dayDiff < 1){ dayDiff = 1 } diff --git a/app/assets/javascripts/calendar_widget2.js b/app/assets/javascripts/calendar_widget2.js index 4823450..7447260 100644 --- a/app/assets/javascripts/calendar_widget2.js +++ b/app/assets/javascripts/calendar_widget2.js @@ -43,6 +43,7 @@ if(window.calendar_variable.date_type == 2){ window.calendar_variable.short_date = (calendar_variable.is_chinese ? "MMM d (W)" : "W, d MMM"); window.calendar_variable.short_date_time = (calendar_variable.is_chinese ? "MMM d (W) b h:m" : "W, d MMM h:m b"); } +window.calendar_variable.date_format_numeric = 'yy/MM/dd'; window.calendar_variable.short_date_numeric = (calendar_variable.is_chinese ? "MM/dd (w)" : "w MM/dd"); window.calendar_variable.time_format = (calendar_variable.is_chinese ? "b h:m" : "h:m b"); window.calendar_variable.std_date_format = 'y-MM-d'; @@ -173,9 +174,12 @@ var CalendarModuleMonth2 = function(date,dom,subpart,url,index_flag){ }) return '#'+comp } - var format_date = function(date){ + var format_date = function(date, numeric){ date = new Date(date); - return getDateString(date, window.calendar_variable.date_format); + if(numeric) + return getDateString(date, window.calendar_variable.date_format_numeric); + else + return getDateString(date, window.calendar_variable.date_format); } var format_datetime = function(date){ date = new Date(date) @@ -534,6 +538,11 @@ var CalendarModuleMonth2 = function(date,dom,subpart,url,index_flag){ prevMonthFunc(toggle_data) } } + var get_start_of_date = function(date){ + var tmp_date = new Date(date); + tmp_date.setHours(0,0,0,0); + return tmp_date; + } var fetchEvents = function(){ var usd = Math.round(firstDay/1000), usd_target = Math.round(first_target_day/1000), @@ -549,16 +558,18 @@ var CalendarModuleMonth2 = function(date,dom,subpart,url,index_flag){ $.each(data.events,function(index,eve){ var sd = new Date(eve.start), ed = new Date(eve.end), - sd_date = new Date(format_date(eve.start)), - ed_date = new Date(format_date(eve.end)), - timeDiff = ed_date.getTime() - sd_date.getTime(), - dayDiff = Math.round(timeDiff / (1000 * 3600 * 24)); + sd_date = new Date(format_date(eve.start, true)), + ed_date = new Date(format_date(eve.end, true)), + start_of_sd_date = get_start_of_date(sd_date), + start_of_ed_date = get_start_of_date(ed_date), + timeDiff = start_of_ed_date.getTime() - start_of_sd_date.getTime(), + dayDiff = Math.ceil(timeDiff / (1000 * 3600 * 24)); if(eve.allDay && dayDiff < 1){ dayDiff = 1 } if(dayDiff > 0){ var inserting_date = sd.getDate(); - for(var i = 0;i < dayDiff; i++){ + for(var i = 0;i <= dayDiff; i++){ var dt = inserting_date + "-" + sd.getMonth() + "-" + sd.getFullYear(), td = dom.find("td[data-date-node=" + dt + "]"); if (events[dt]==undefined){