Morris = window.Morris = {} $ = jQuery # Very simple event-emitter class. # class Morris.EventEmitter on: (name, handler) -> unless @handlers? @handlers = {} unless @handlers[name]? @handlers[name] = [] @handlers[name].push(handler) fire: (name, args...) -> if @handlers? and @handlers[name]? for handler in @handlers[name] handler(args...) # Make long numbers prettier by inserting commas. # eg: commas(1234567) -> '1,234,567' # Morris.commas = (num) -> if num is null "n/a" else ret = if num < 0 then "-" else "" absnum = Math.abs(num) intnum = Math.floor(absnum).toFixed(0) ret += intnum.replace(/(?=(?:\d{3})+$)(?!^)/g, ',') strabsnum = absnum.toString() if strabsnum.length > intnum.length ret += strabsnum.slice(intnum.length) ret # zero-pad numbers to two characters wide # Morris.pad2 = (number) -> (if number < 10 then '0' else '') + number