-
Notifications
You must be signed in to change notification settings - Fork 38
/
thermometer.coffee
75 lines (63 loc) · 1.92 KB
/
thermometer.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
class Thermometer
constructor: (@dom_id="#thermometer", @max) ->
@dom_element = $(@dom_id)
@dom_element.addClass('thermometer')
@samples = [0]
@last_draw_time = new Date().getTime()
@sample_interval_ms = 250
@last_draw_time -= @sample_interval_ms
this.init_view()
init_view: ->
@width = @dom_element.width()
@height = @dom_element.height()
midpoint = @width/2
@y1 = @height
@y2 = 0
@x1 = @x2 = midpoint
this.init_thermometer_fill()
d3.select('#therm_text').attr('class','therm_text')
init_thermometer_fill: ->
@thermometer_fill = $('<div>').addClass('thermometer_fill')
@dom_element.append(@thermometer_fill)
# @thermometer_fill.addClass('vertical')
this.redraw()
set_scaled_value: (v) ->
results = @value
results = results * (@max - @min)
results = results + @min
results
scaled_value: ->
results = @value
results = results * (@max - @min)
results = results + @min
results
time_to_redraw: ->
timestamp = new Date().getTime()
timestamp > @last_draw_time + @sample_interval_ms
add_value: (new_value) ->
@samples.push new_value
if this.time_to_redraw()
this.redraw()
@samples = []
get_avg: ->
total = 0
for sample in @samples
total = total + sample
total / @samples.length
scaled_display_value: ->
(this.get_avg() / @max) * @height
redraw: ->
@width = @dom_element.width()
@height = @dom_element.height()
avg = this.get_avg().toFixed(4)
value = this.scaled_display_value()
# @thermometer_fill.attr("height", value)
@thermometer_fill.css("bottom", "#{value-@height}px")
@thermometer_fill.height("#{value}px")
@last_draw_time = new Date().getTime()
d3.select('#therm_text').text("Temperature")
# make this class available globally as Thermometer
# use like:
# meter = new Thermometer();
root = exports ? this
root.Thermometer = Thermometer