From 0a1726e359792deb93d3e787642f46b0af5943de Mon Sep 17 00:00:00 2001 From: Patrick Melanson Date: Fri, 20 Nov 2015 17:52:39 -0500 Subject: [PATCH 1/2] date change messages are chat_day_change color, multiple messages generated for diff of 1-5 days --- js/handlers.js | 24 ++++++++++++++++++++---- js/weechat.js | 2 +- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/js/handlers.js b/js/handlers.js index 25ba797..be66ea3 100644 --- a/js/handlers.js +++ b/js/handlers.js @@ -21,11 +21,11 @@ weechat.factory('handlers', ['$rootScope', '$log', 'models', 'plugins', 'notific // inject a fake buffer line for date change var injectDateChangeMessage = function(message, buffer, date) { - var content = "Date changed to " + date.toDateString(); + var content = "\u001943Date changed to " + date.toDateString(); var line = { buffer: buffer, date: date, - prefix: '—', + prefix: '\u001943\u2500\u2500', tags_array: [], displayed: true, highlight: 0, @@ -47,8 +47,24 @@ weechat.factory('handlers', ['$rootScope', '$log', 'models', 'plugins', 'notific current_date = new Date(message.date); previous_date.setHours(0, 0, 0, 0); current_date.setHours(0, 0, 0, 0); - if (previous_date.valueOf() !== current_date.valueOf()) { - injectDateChangeMessage(message, buffer, current_date); + var dateDifference = + Math.round((current_date - previous_date)/(24*60*60*1000)); + if (dateDifference !== 0) { + console.log(dateDifference); + // if it's a small, positive number display a message + // for each one. Otherwise, just display one big + // date change message + // The range [1,5] was chosen arbitrarily + if (dateDifference >= 1 && dateDifference <= 5) { + var prev_date_clone = previous_date; + for (var i = 1; i <= dateDifference; ++i) { + prev_date_clone.setDate(prev_date_clone.getDate()+1); + injectDateChangeMessage(message, buffer, + prev_date_clone); + } + } else { + injectDateChangeMessage(message, buffer, current_date); + } } } diff --git a/js/weechat.js b/js/weechat.js index 126eda6..4a6d4f0 100644 --- a/js/weechat.js +++ b/js/weechat.js @@ -290,7 +290,7 @@ var ret = {}; var optionCode = parseInt(m[1]); - if (optionCode > 43) { + if (optionCode >= WeeChatProtocol._colorsOptionsNames.length) { // should never happen return { fgColor: null, From 9955056ed927da8922aec0f3ae4be822e9a0bfdc Mon Sep 17 00:00:00 2001 From: Patrick Melanson Date: Fri, 20 Nov 2015 22:26:56 -0500 Subject: [PATCH 2/2] dates change with weechat 2date behaviour --- js/handlers.js | 41 ++++++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/js/handlers.js b/js/handlers.js index be66ea3..fa6f818 100644 --- a/js/handlers.js +++ b/js/handlers.js @@ -20,11 +20,26 @@ weechat.factory('handlers', ['$rootScope', '$log', 'models', 'plugins', 'notific }; // inject a fake buffer line for date change - var injectDateChangeMessage = function(message, buffer, date) { - var content = "\u001943Date changed to " + date.toDateString(); + var injectDateChangeMessage = function(message, buffer, d1, d2) { + var d1_plus_one = d1; + d1_plus_one.setDate(d1_plus_one.getDate() + 1); + d1.setHours(0, 0, 0, 0); + d2.setHours(0, 0, 0, 0); + // it's not always true that a date with time 00:00:00 + // plus one day will be time 00:00:00 + d1_plus_one.setHours(0, 0, 0, 0); + var content = ""; + if (d1_plus_one.valueOf() === d2.valueOf()) { + content = "\u001943Date changed to " + d2.toDateString(); + } else { + var date_diff = Math.round((d2 - d1)/(24*60*60*1000)); + date_diff = date_diff >= 0 ? date_diff : date_diff + 1; + content = "\u001943Date changed to " + d2.toDateString(); + content += " (" + date_diff + " days from " + d1.toDateString() + ")"; + } var line = { buffer: buffer, - date: date, + date: d2, prefix: '\u001943\u2500\u2500', tags_array: [], displayed: true, @@ -47,24 +62,8 @@ weechat.factory('handlers', ['$rootScope', '$log', 'models', 'plugins', 'notific current_date = new Date(message.date); previous_date.setHours(0, 0, 0, 0); current_date.setHours(0, 0, 0, 0); - var dateDifference = - Math.round((current_date - previous_date)/(24*60*60*1000)); - if (dateDifference !== 0) { - console.log(dateDifference); - // if it's a small, positive number display a message - // for each one. Otherwise, just display one big - // date change message - // The range [1,5] was chosen arbitrarily - if (dateDifference >= 1 && dateDifference <= 5) { - var prev_date_clone = previous_date; - for (var i = 1; i <= dateDifference; ++i) { - prev_date_clone.setDate(prev_date_clone.getDate()+1); - injectDateChangeMessage(message, buffer, - prev_date_clone); - } - } else { - injectDateChangeMessage(message, buffer, current_date); - } + if (previous_date.valueOf() !== current_date.valueOf()) { + injectDateChangeMessage(message, buffer, previous_date, current_date); } }