Skip to content

Instantly share code, notes, and snippets.

@foamdino
Created December 4, 2018 06:38
Show Gist options
  • Select an option

  • Save foamdino/05cbb7c0ec430dcb154d3ee77b351d81 to your computer and use it in GitHub Desktop.

Select an option

Save foamdino/05cbb7c0ec430dcb154d3ee77b351d81 to your computer and use it in GitHub Desktop.
Coffeescript for "hot meter" dashboard widget
class Dashing.Hotmeter extends Dashing.Widget
@accessor 'value', Dashing.AnimatedValue
getMeterColour: (stage) ->
return switch
when stage == 0 then "#88C100"
when stage == 1 then "#88C100"
when stage == 2 then "#FABE28"
when stage == 3 then "#FF8A00"
else "#FF003C"
setMeterColour: (value) ->
node = $(@node)
cool = parseInt node.data "cool"
warm = parseInt node.data "warm"
level = switch
when value <= cool then 0
when value >= warm then 4
else
bucketSize = (warm - cool) / 3 # Total # of colours in middle
Math.ceil (value - cool) / bucketSize
dialColour = @getMeterColour(level)
$(@node).find(".meter").val(value).trigger('configure', {"fgColor": dialColour});
constructor: ->
super
@observe 'value', (value) ->
$(@node).find(".meter").val(value).trigger('change')
@setMeterColour(value)
ready: (data) ->
Dashing.debugMode = true
meter = $(@node).find(".meter")
meter.attr("data-bgcolor", meter.css("background-color"))
meter.attr("data-fgcolor", meter.css("color"))
meter.knob()
node = $(@node)
onData: (data) ->
@setMeterColour(data.value)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment