dates change with weechat 2date behaviour

paste-quickfix
Patrick Melanson 10 years ago
parent 0a1726e359
commit 9955056ed9
  1. 41
      js/handlers.js

@ -20,11 +20,26 @@ weechat.factory('handlers', ['$rootScope', '$log', 'models', 'plugins', 'notific
}; };
// inject a fake buffer line for date change // inject a fake buffer line for date change
var injectDateChangeMessage = function(message, buffer, date) { var injectDateChangeMessage = function(message, buffer, d1, d2) {
var content = "\u001943Date changed to " + date.toDateString(); 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 = { var line = {
buffer: buffer, buffer: buffer,
date: date, date: d2,
prefix: '\u001943\u2500\u2500', prefix: '\u001943\u2500\u2500',
tags_array: [], tags_array: [],
displayed: true, displayed: true,
@ -47,24 +62,8 @@ weechat.factory('handlers', ['$rootScope', '$log', 'models', 'plugins', 'notific
current_date = new Date(message.date); current_date = new Date(message.date);
previous_date.setHours(0, 0, 0, 0); previous_date.setHours(0, 0, 0, 0);
current_date.setHours(0, 0, 0, 0); current_date.setHours(0, 0, 0, 0);
var dateDifference = if (previous_date.valueOf() !== current_date.valueOf()) {
Math.round((current_date - previous_date)/(24*60*60*1000)); injectDateChangeMessage(message, buffer, previous_date, current_date);
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);
}
} }
} }

Loading…
Cancel
Save