mirror of
https://github.com/discourse/discourse.git
synced 2024-11-25 18:30:26 -06:00
Create a cold age helper, make sure the first age column is strictly
`created_at`, add cold to the second column.
This commit is contained in:
parent
c430c6dd30
commit
f5e6bcc585
@ -16,6 +16,33 @@ Handlebars.registerHelper('breakUp', function(property, hint, options) {
|
||||
return new Handlebars.SafeString(Discourse.Formatter.breakUp(prop, hint));
|
||||
});
|
||||
|
||||
// helper function for dates
|
||||
function daysSinceEpoch(dt) {
|
||||
// 1000 * 60 * 60 * 24 = days since epoch
|
||||
return dt.getTime() / 86400000;
|
||||
}
|
||||
|
||||
/**
|
||||
Converts a date to a coldmap class
|
||||
|
||||
@method coldDate
|
||||
**/
|
||||
Handlebars.registerHelper('coldAgeClass', function(property, options) {
|
||||
var dt = Em.Handlebars.get(this, property, options);
|
||||
|
||||
if (!dt) { return 'age'; }
|
||||
|
||||
// Show heat on age
|
||||
var nowDays = daysSinceEpoch(new Date()),
|
||||
epochDays = daysSinceEpoch(new Date(dt));
|
||||
if (nowDays - epochDays > 60) return 'age coldmap-high';
|
||||
if (nowDays - epochDays > 30) return 'age coldmap-med';
|
||||
if (nowDays - epochDays > 14) return 'age coldmap-low';
|
||||
|
||||
return 'age';
|
||||
});
|
||||
|
||||
|
||||
/**
|
||||
Truncates long strings
|
||||
|
||||
|
@ -118,25 +118,6 @@ Discourse.Topic = Discourse.Model.extend({
|
||||
return this.get('new_posts');
|
||||
}.property('new_posts', 'id'),
|
||||
|
||||
// The coldmap class for the age of the topic
|
||||
ageCold: function() {
|
||||
var createdAt, daysSinceEpoch, lastPost, lastPostDays, nowDays;
|
||||
if (!(createdAt = this.get('created_at'))) return;
|
||||
if (!(lastPost = this.get('last_posted_at'))) lastPost = createdAt;
|
||||
daysSinceEpoch = function(dt) {
|
||||
// 1000 * 60 * 60 * 24 = days since epoch
|
||||
return dt.getTime() / 86400000;
|
||||
};
|
||||
|
||||
// Show heat on age
|
||||
nowDays = daysSinceEpoch(new Date());
|
||||
lastPostDays = daysSinceEpoch(new Date(lastPost));
|
||||
if (nowDays - lastPostDays > 60) return 'coldmap-high';
|
||||
if (nowDays - lastPostDays > 30) return 'coldmap-med';
|
||||
if (nowDays - lastPostDays > 14) return 'coldmap-low';
|
||||
return null;
|
||||
}.property('age', 'created_at', 'last_posted_at'),
|
||||
|
||||
viewsHeat: function() {
|
||||
var v = this.get('views');
|
||||
if( v >= Discourse.SiteSettings.topic_views_heat_high ) return 'heatmap-high';
|
||||
|
@ -57,10 +57,10 @@
|
||||
<td {{bind-attr class=":num :views topic.viewsHeat"}}>{{number topic.views numberKey="views_long"}}</td>
|
||||
{{#if topic.bumped}}
|
||||
<td class='num activity'>
|
||||
<a href="{{unbound topic.url}}" {{{bind-attr class=":age topic.ageCold"}}} title='{{i18n first_post}}: {{{rawDate topic.created_at}}}' >{{unboundAge topic.created_at}}</a>
|
||||
<a href="{{unbound topic.url}}" class='{{coldAgeClass created_at}}' title='{{i18n first_post}}: {{{rawDate topic.created_at}}}' >{{unboundAge topic.created_at}}</a>
|
||||
</td>
|
||||
<td class='num activity last'>
|
||||
<a href="{{unbound topic.lastPostUrl}}" class='age' title='{{i18n last_post}}: {{{rawDate topic.bumped_at}}}'>{{unboundAge topic.bumped_at}}</a>
|
||||
<a href="{{unbound topic.lastPostUrl}}" class='{{coldAgeClass bumped_at}}' title='{{i18n last_post}}: {{{rawDate topic.bumped_at}}}'>{{unboundAge topic.bumped_at}}</a>
|
||||
</td>
|
||||
{{else}}
|
||||
<td class='num activity'>
|
||||
|
@ -7,7 +7,7 @@
|
||||
<section {{bind-attr class=":map mapCollapsed"}}>
|
||||
<ul class="clearfix">
|
||||
<li>
|
||||
<a href='{{unbound topic.url}}' {{bind-attr class=topic.ageCold}}>
|
||||
<a href='{{unbound topic.url}}' class='{{coldAgeClass topic.created_at}}'>
|
||||
<h4>{{i18n created}}</h4>
|
||||
{{avatar details.created_by imageSize="tiny"}}
|
||||
{{unboundDate topic.created_at}}
|
||||
|
@ -52,7 +52,7 @@
|
||||
</div>
|
||||
</td>
|
||||
<td class='num posts'><span class='badge-posts'>{{number posts_count}}</span></td>
|
||||
<td class='num age'><span {{bind-attr class=":age ageCold"}} title='{{rawDate created_at}}'>{{{unboundAge created_at}}}</span></td>
|
||||
<td class='num age'><span class="{{coldAgeClass created_at}}" title='{{rawDate created_at}}'>{{{unboundAge created_at}}}</span></td>
|
||||
</tr>
|
||||
{{/each}}
|
||||
|
||||
|
@ -58,14 +58,14 @@
|
||||
|
||||
{{#if bumped}}
|
||||
<td class='num activity'>
|
||||
<a href="{{url}}" {{{bind-attr class=":age ageCold"}}} title='{{i18n first_post}}: {{{rawDate created_at}}}' >{{unboundAge created_at}}</a>
|
||||
<a href="{{url}}" class="{{coldAgeClass created_at}}" title='{{i18n first_post}}: {{{rawDate created_at}}}' >{{unboundAge created_at}}</a>
|
||||
</td>
|
||||
<td class='num activity last'>
|
||||
<a href="{{lastPostUrl}}" class='age' title='{{i18n last_post}}: {{{rawDate bumped_at}}}'>{{unboundAge bumped_at}}</a>
|
||||
<a href="{{lastPostUrl}}" class="{{coldAgeClass bumped_at}}" title='{{i18n last_post}}: {{{rawDate bumped_at}}}'>{{unboundAge bumped_at}}</a>
|
||||
</td>
|
||||
{{else}}
|
||||
<td class='num activity'>
|
||||
<a href="{{url}}" {{{bind-attr class=":age ageCold"}}} title='{{i18n first_post}}: {{{rawDate created_at}}}'>{{unboundAge created_at}}</a>
|
||||
<a href="{{url}}" class="{{coldAgeClass created_at}}" title='{{i18n first_post}}: {{{rawDate created_at}}}'>{{unboundAge created_at}}</a>
|
||||
</td>
|
||||
<td class='activity'></td>
|
||||
{{/if}}
|
||||
|
Loading…
Reference in New Issue
Block a user