From 46347023cc777ed656f19030ce2d25d44c5be845 Mon Sep 17 00:00:00 2001 From: Toby Zerner Date: Fri, 19 Jun 2015 10:00:19 +0930 Subject: [PATCH] Implement time gap indicators Get rid of short human times (1m, 1h, 1d) for now --- js/forum/src/components/post-stream.js | 11 +++++++++++ js/lib/utils/human-time.js | 18 ------------------ less/forum/discussion.less | 18 ++++++++++++++++++ 3 files changed, 29 insertions(+), 18 deletions(-) diff --git a/js/forum/src/components/post-stream.js b/js/forum/src/components/post-stream.js index 61996411b..90953123e 100644 --- a/js/forum/src/components/post-stream.js +++ b/js/forum/src/components/post-stream.js @@ -154,6 +154,8 @@ class PostStream extends mixin(Component, evented) { context.fadedIn = true; } + var lastTime; + return m('div.discussion-posts.posts', {config: this.onload.bind(this)}, this.posts.map((post, i) => { var content; @@ -166,6 +168,15 @@ class PostStream extends mixin(Component, evented) { attributes.config = fadeIn; attributes['data-time'] = post.time().toISOString(); attributes['data-number'] = post.number(); + + var dt = post.time() - lastTime; + if (dt > 1000 * 60 * 60 * 24 * 4) { + content = [ + m('div.time-gap', m('span', moment.duration(dt).humanize(), ' later')), + content + ]; + } + lastTime = post.time(); } else { content = PostLoading.component(); } diff --git a/js/lib/utils/human-time.js b/js/lib/utils/human-time.js index 3b991fb32..21717442d 100644 --- a/js/lib/utils/human-time.js +++ b/js/lib/utils/human-time.js @@ -1,21 +1,3 @@ -moment.locale('en', { - relativeTime : { - future: "in %s", - past: "%s ago", - s: "seconds", - m: "1m", - mm: "%dm", - h: "1h", - hh: "%dh", - d: "1d", - dd: "%dd", - M: "a month", - MM: "%d months", - y: "a year", - yy: "%d years" - } -}); - export default function humanTime(time) { var m = moment(time); diff --git a/less/forum/discussion.less b/less/forum/discussion.less index c2e4544ea..af45c3a32 100644 --- a/less/forum/discussion.less +++ b/less/forum/discussion.less @@ -369,6 +369,24 @@ opacity: 1; } } +.time-gap { + text-transform: uppercase; + font-weight: bold; + color: @fl-body-muted-color; + margin-top: 60px; + margin-bottom: 60px; + padding-left: 90px; + border-top: 1px solid @fl-body-secondary-color; + font-size: 12px; + + & span { + float: left; + background: #fff; + margin-top: -9px; + margin-left: -10px; + padding: 0 10px; + } +} .post-preview { color: @fl-body-muted-color;