UNPKG

dojo-templater

Version:
102 lines (52 loc) 1.78 kB
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