diff --git a/frontend_tests/node_tests/templates.js b/frontend_tests/node_tests/templates.js
index 05928ca117..c3b5a15bb8 100644
--- a/frontend_tests/node_tests/templates.js
+++ b/frontend_tests/node_tests/templates.js
@@ -648,7 +648,7 @@ function render(template_name, args) {
is_stream: true,
message_ids: [1, 2],
message_containers: messages,
- show_date: '"Jan 07"',
+ show_date: '"Jan 07"',
show_date_separator: true,
subject: 'two messages',
match_subject: 'two messages',
diff --git a/frontend_tests/node_tests/timerender.js b/frontend_tests/node_tests/timerender.js
index 314d138938..c3f3d2c93d 100644
--- a/frontend_tests/node_tests/timerender.js
+++ b/frontend_tests/node_tests/timerender.js
@@ -99,7 +99,7 @@ var timerender = require('js/timerender.js');
var actual = timerender.render_date(message_time, undefined, today);
assert.equal(expected_html, actual.html());
assert.equal(attrs.get('title'), 'Friday, April 12, 2019');
- assert.equal(attrs.get('id'), 'timerender0');
+ assert.equal(attrs.get('class'), 'timerender0');
}());
(function test_render_date_renders_time_above_html() {
diff --git a/static/js/timerender.js b/static/js/timerender.js
index b7d28241bb..d6740f4d49 100644
--- a/static/js/timerender.js
+++ b/static/js/timerender.js
@@ -113,50 +113,53 @@ function render_date_span(elem, rendered_time, rendered_time_above) {
// of this DOM node as HTML, so effectively a copy of the node. That's
// okay since to update the time later we look up the node by its id.)
exports.render_date = function (time, time_above, today) {
- var id = "timerender" + next_timerender_id;
+ var className = "timerender" + next_timerender_id;
next_timerender_id += 1;
var rendered_time = exports.render_now(time, today);
- var node = $("").attr('id', id);
+ var node = $("").attr('class', className);
if (time_above !== undefined) {
var rendered_time_above = exports.render_now(time_above, today);
node = render_date_span(node, rendered_time, rendered_time_above);
} else {
node = render_date_span(node, rendered_time);
}
- maybe_add_update_list_entry(rendered_time.needs_update, id, time, time_above);
+ maybe_add_update_list_entry(rendered_time.needs_update, className, time, time_above);
return node;
};
// This isn't expected to be called externally except manually for
// testing purposes.
exports.update_timestamps = function () {
- var time = new XDate();
- if (time >= next_update) {
+ var now = new XDate();
+ if (now >= next_update) {
var to_process = update_list;
update_list = [];
- _.each(to_process, function (elem) {
- var id = elem[0];
- var element = document.getElementById(id);
+ _.each(to_process, function (entry) {
+ var className = entry[0];
+ var elements = $('.' + className);
// The element might not exist any more (because it
// was in the zfilt table, or because we added
// messages above it and re-collapsed).
- if (element !== null) {
- var time = elem[1];
- var time_above;
- var rendered_time = exports.render_now(time);
- if (elem.length === 3) {
- time_above = elem[2];
- var rendered_time_above = exports.render_now(time_above);
- render_date_span($(element), rendered_time, rendered_time_above);
- } else {
- render_date_span($(element), rendered_time);
- }
- maybe_add_update_list_entry(rendered_time.needs_update, id, time, time_above);
+ if (elements !== null) {
+ _.each(elements, function (element) {
+ var time = entry[1];
+ var time_above;
+ var rendered_time = exports.render_now(time);
+ if (entry.length === 3) {
+ time_above = entry[2];
+ var rendered_time_above = exports.render_now(time_above);
+ render_date_span($(element), rendered_time, rendered_time_above);
+ } else {
+ render_date_span($(element), rendered_time);
+ }
+ maybe_add_update_list_entry(
+ rendered_time.needs_update, className, time, time_above);
+ });
}
});
- next_update = set_to_start_of_day(time.clone().addDays(1));
+ next_update = set_to_start_of_day(now.clone().addDays(1));
}
};