dojo-templater
Version:
Easy HTML emails with variables
102 lines (52 loc) • 1.78 kB
text/coffeescript
Handlebars = require("handlebars")
# Handlebars.registerHelper 'chart', (data, options) ->
# barCount = 5
# max = 0
# for i in [0..barCount - 1]
# max = Math.max max, data[i].count
# buffer= '<span style="display: block">'
# # Generate bars
# for i in [0..barCount - 1]
# buffer+= newBar(max, data[i].count)
# # Generate labels
# buffer+='<span class="x-axis-labels">'
# for i in [0..barCount - 1]
# buffer+='<span>' + data[i].day + '</span>'
# buffer+='</span>'
# buffer+='</span>'
# return new Handlebars.SafeString(buffer);
Handlebars.registerHelper 'chart', (data, options) ->
barCount = 5
max = 0
for i in [0..barCount - 1]
max = Math.max max, data[i].count
buffer= '<table width="400">'
# Generate bars
buffer+='<tr>'
for i in [0..barCount - 1]
buffer+= newBar(max, data[i].count, data[i].day)
buffer+='</tr>'
buffer+='</table>'
return new Handlebars.SafeString(buffer);
newBar = (max, count, xLabel) ->
chartHeight = 130
max = 10 if max < 10
cellHeight = Math.floor( chartHeight / max )
buffer= '<td width="50">'
buffer+='<span class="bar">'
# Insert blank cells
blankCells = max - count
if blankCells > 0
for i in [1..blankCells]
buffer+='<span style="min-height:' + cellHeight + 'px"></span>'
# Add the bar label
buffer+='<span class="bar-label">' + count + '</span>'
filledCells = count
if filledCells > 0
for i in [1..filledCells]
buffer+='<span style="min-height:' + cellHeight + 'px" class="filled"></span>'
# Add the x axis label
buffer+='<span class="x-axis-label" style="min-height: 20px">' + xLabel + '</span>'
buffer+='</span>'
buffer+='</td>'
return buffer