Handlebars.registerHelper 'formatDuration', (seconds)->
if seconds < Duration.HOUR
minutes = Math.floor(seconds / Duration.MINUTE)
unit = if minutes == 1 then 'minute' else 'minutes'
"#{minutes} #{unit}"
else if seconds < Duration.DAY
hours = Math.floor(seconds / Duration.HOUR)
unit = if hours == 1 then 'hour' else 'hours'
"#{hours} #{unit}"
else
days = Math.floor(seconds / Duration.DAY)
unit = if days == 1 then 'day' else 'days'
"#{days} #{unit}"
Handlebars.registerHelper 'formatDate', (timestamp)->
format = d3.time.format('%a %b %-d')
format Date.create(timestamp)
Handlebars.registerHelper 'formatDateWithYear', (timestamp)->
return "" unless timestamp
format = d3.time.format('%b %-d %Y')
format Date.create(timestamp)
Handlebars.registerHelper 'formatDateWithYear2', (timestamp)->
return "" unless timestamp
format = d3.time.format('%b %-d, %Y')
format Date.create(timestamp)
Handlebars.registerHelper 'formatTime', (timestamp)->
format = d3.time.format('%a %b %-d, %Y %-I:%M%p')
format Date.create(timestamp)
.replace(/[AP]M/, (str)-> str.toLowerCase()[0])
Handlebars.registerHelper 'formatTimeAgo', (timestamp)->
$.timeago Date.create(timestamp)
Handlebars.registerHelper 'markdown', (markdown)-> App.mdown(markdown)
Handlebars.registerHelper 'emojify', (string)-> App.emojify(string)
Handlebars.registerHelper 'classForAge', (seconds)->
if seconds < (6 * Duration.HOUR)
'infant'
else if seconds < (2 * Duration.DAY)
'child'
else if seconds < (7 * Duration.DAY)
'adult'
else if seconds < (4 * Duration.WEEK)
'senior'
else if seconds < (26 * Duration.WEEK)
'old'
else
'ancient'
Handlebars.registerHelper 'radioButton', (object, id, name, value, selectedValue)->
id = "#{object}_#{id}_#{name}_#{value}"
input = ""
Handlebars.registerHelper 'formatTicketSummary', (message)->
App.formatTicketSummary(message)
Handlebars.registerHelper 'linkToCommit', (commit)->
sha = commit.sha[0...8]
if commit.linkTo
"#{sha}"
else
sha
Handlebars.registerHelper 'testerAvatar', (email, size, title)->
tester = window.testers.findByEmail(email)
gravatarUrl = "//www.gravatar.com/avatar/#{MD5(email.toLowerCase().trim())}?r=g&d=retro&s=#{size * 2}"
""
Handlebars.registerHelper 'userAvatar', (size)->
user = window.user
gravatarUrl = "//www.gravatar.com/avatar/#{MD5(user.get('email').toLowerCase().trim())}?r=g&d=retro&s=#{size * 2}"
"
"
Handlebars.registerHelper 'avatar', (email, size, title)->
return "
" unless email
gravatarUrl = "//www.gravatar.com/avatar/#{MD5(email.toLowerCase().trim())}?r=g&d=retro&s=#{size * 2}"
if title
"
"
else
"
"
Handlebars.registerHelper 'ifEq', (v1, v2, block)->
if v1 == v2
block.fn(@)
else
block.inverse(@)
Handlebars.registerHelper 'summarizeAntecedents', (antecedents)->
html = ''
for kind, antecedents of _.groupBy(antecedents, (antecedent)-> antecedent.kind)
html += "#{kind} #{antecedents.length}"
html
Handlebars.registerPartial 'sprintTask', (task)->
HandlebarsTemplates['sprints/task'](task)
Handlebars.registerHelper 'timelineDateRange', (lastDate, date)->
return Handlebars.helpers.timelineDate(date) unless lastDate
days = (lastDate - date) / Duration.DAY
return Handlebars.helpers.timelineDateAfterGap(date) if days >= 3
_.inject [0...days],
((html, i)-> html + Handlebars.helpers.timelineDate((i + 1).days().before(lastDate)))
, ''
Handlebars.registerHelper 'timelineDate', (date)->
format = d3.time.format """