pulse-meter 0.4.9 → 0.4.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (192) hide show
  1. data/Rakefile +1 -48
  2. data/lib/pulse-meter.rb +1 -68
  3. data/lib/pulse-meter/visualizer.rb +1 -40
  4. data/pulse-meter.gemspec +4 -26
  5. metadata +10 -558
  6. data/Procfile +0 -3
  7. data/bin/pulse +0 -6
  8. data/examples/basic.ru +0 -145
  9. data/examples/basic_sensor_data.rb +0 -96
  10. data/examples/udp_benchmark.rb +0 -29
  11. data/lib/cmd.rb +0 -171
  12. data/lib/pulse-meter/command_aggregator/async.rb +0 -83
  13. data/lib/pulse-meter/command_aggregator/sync.rb +0 -18
  14. data/lib/pulse-meter/command_aggregator/udp.rb +0 -48
  15. data/lib/pulse-meter/extensions/enumerable.rb +0 -24
  16. data/lib/pulse-meter/mixins/cmd.rb +0 -46
  17. data/lib/pulse-meter/mixins/dumper.rb +0 -87
  18. data/lib/pulse-meter/mixins/utils.rb +0 -155
  19. data/lib/pulse-meter/observer.rb +0 -120
  20. data/lib/pulse-meter/observer/extended.rb +0 -34
  21. data/lib/pulse-meter/sensor.rb +0 -61
  22. data/lib/pulse-meter/sensor/base.rb +0 -88
  23. data/lib/pulse-meter/sensor/configuration.rb +0 -106
  24. data/lib/pulse-meter/sensor/counter.rb +0 -39
  25. data/lib/pulse-meter/sensor/hashed_counter.rb +0 -36
  26. data/lib/pulse-meter/sensor/hashed_indicator.rb +0 -24
  27. data/lib/pulse-meter/sensor/indicator.rb +0 -35
  28. data/lib/pulse-meter/sensor/multi.rb +0 -97
  29. data/lib/pulse-meter/sensor/timeline.rb +0 -236
  30. data/lib/pulse-meter/sensor/timeline_reduce.rb +0 -68
  31. data/lib/pulse-meter/sensor/timelined/average.rb +0 -32
  32. data/lib/pulse-meter/sensor/timelined/counter.rb +0 -23
  33. data/lib/pulse-meter/sensor/timelined/hashed_counter.rb +0 -31
  34. data/lib/pulse-meter/sensor/timelined/hashed_indicator.rb +0 -30
  35. data/lib/pulse-meter/sensor/timelined/indicator.rb +0 -23
  36. data/lib/pulse-meter/sensor/timelined/max.rb +0 -19
  37. data/lib/pulse-meter/sensor/timelined/median.rb +0 -14
  38. data/lib/pulse-meter/sensor/timelined/min.rb +0 -19
  39. data/lib/pulse-meter/sensor/timelined/multi_percentile.rb +0 -34
  40. data/lib/pulse-meter/sensor/timelined/percentile.rb +0 -22
  41. data/lib/pulse-meter/sensor/timelined/uniq_counter.rb +0 -22
  42. data/lib/pulse-meter/sensor/timelined/zset_based.rb +0 -38
  43. data/lib/pulse-meter/sensor/uniq_counter.rb +0 -24
  44. data/lib/pulse-meter/server.rb +0 -0
  45. data/lib/pulse-meter/server/command_line_options.rb +0 -0
  46. data/lib/pulse-meter/server/config_options.rb +0 -0
  47. data/lib/pulse-meter/server/sensors.rb +0 -0
  48. data/lib/pulse-meter/udp_server.rb +0 -45
  49. data/lib/pulse-meter/version.rb +0 -3
  50. data/lib/pulse-meter/visualize/app.rb +0 -78
  51. data/lib/pulse-meter/visualize/base.rb +0 -15
  52. data/lib/pulse-meter/visualize/coffee/application.coffee +0 -40
  53. data/lib/pulse-meter/visualize/coffee/collections/page_info_list.coffee +0 -17
  54. data/lib/pulse-meter/visualize/coffee/collections/sensor_info_list.coffee +0 -4
  55. data/lib/pulse-meter/visualize/coffee/collections/widget_list.coffee +0 -14
  56. data/lib/pulse-meter/visualize/coffee/extensions.coffee +0 -26
  57. data/lib/pulse-meter/visualize/coffee/models/dinamic_widget.coffee +0 -34
  58. data/lib/pulse-meter/visualize/coffee/models/page_info.coffee +0 -2
  59. data/lib/pulse-meter/visualize/coffee/models/sensor_info.coffee +0 -2
  60. data/lib/pulse-meter/visualize/coffee/models/widget.coffee +0 -54
  61. data/lib/pulse-meter/visualize/coffee/presenters/area.coffee +0 -2
  62. data/lib/pulse-meter/visualize/coffee/presenters/gauge.coffee +0 -11
  63. data/lib/pulse-meter/visualize/coffee/presenters/line.coffee +0 -2
  64. data/lib/pulse-meter/visualize/coffee/presenters/pie.coffee +0 -20
  65. data/lib/pulse-meter/visualize/coffee/presenters/series.coffee +0 -44
  66. data/lib/pulse-meter/visualize/coffee/presenters/table.coffee +0 -10
  67. data/lib/pulse-meter/visualize/coffee/presenters/timeline.coffee +0 -13
  68. data/lib/pulse-meter/visualize/coffee/presenters/widget.coffee +0 -65
  69. data/lib/pulse-meter/visualize/coffee/router.coffee +0 -21
  70. data/lib/pulse-meter/visualize/coffee/views/dynamic_chart.coffee +0 -91
  71. data/lib/pulse-meter/visualize/coffee/views/dynamic_widget.coffee +0 -58
  72. data/lib/pulse-meter/visualize/coffee/views/page_title.coffee +0 -17
  73. data/lib/pulse-meter/visualize/coffee/views/page_titles.coffee +0 -15
  74. data/lib/pulse-meter/visualize/coffee/views/sensor_info_list.coffee +0 -19
  75. data/lib/pulse-meter/visualize/coffee/views/widget.coffee +0 -99
  76. data/lib/pulse-meter/visualize/coffee/views/widget_chart.coffee +0 -13
  77. data/lib/pulse-meter/visualize/coffee/views/widget_list.coffee +0 -15
  78. data/lib/pulse-meter/visualize/dsl/base.rb +0 -131
  79. data/lib/pulse-meter/visualize/dsl/errors.rb +0 -40
  80. data/lib/pulse-meter/visualize/dsl/layout.rb +0 -27
  81. data/lib/pulse-meter/visualize/dsl/page.rb +0 -33
  82. data/lib/pulse-meter/visualize/dsl/sensor.rb +0 -20
  83. data/lib/pulse-meter/visualize/dsl/widget.rb +0 -37
  84. data/lib/pulse-meter/visualize/dsl/widgets/area.rb +0 -20
  85. data/lib/pulse-meter/visualize/dsl/widgets/gauge.rb +0 -12
  86. data/lib/pulse-meter/visualize/dsl/widgets/line.rb +0 -21
  87. data/lib/pulse-meter/visualize/dsl/widgets/pie.rb +0 -16
  88. data/lib/pulse-meter/visualize/dsl/widgets/table.rb +0 -19
  89. data/lib/pulse-meter/visualize/layout.rb +0 -79
  90. data/lib/pulse-meter/visualize/page.rb +0 -25
  91. data/lib/pulse-meter/visualize/public/css/application.css +0 -56
  92. data/lib/pulse-meter/visualize/public/css/bootstrap.css +0 -4883
  93. data/lib/pulse-meter/visualize/public/css/bootstrap.min.css +0 -729
  94. data/lib/pulse-meter/visualize/public/css/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  95. data/lib/pulse-meter/visualize/public/css/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  96. data/lib/pulse-meter/visualize/public/css/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  97. data/lib/pulse-meter/visualize/public/css/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  98. data/lib/pulse-meter/visualize/public/css/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  99. data/lib/pulse-meter/visualize/public/css/images/ui-bg_glass_75_ffffff_1x400.png +0 -0
  100. data/lib/pulse-meter/visualize/public/css/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  101. data/lib/pulse-meter/visualize/public/css/images/ui-bg_inset-soft_95_fef1ec_1x100.png +0 -0
  102. data/lib/pulse-meter/visualize/public/css/images/ui-icons_222222_256x240.png +0 -0
  103. data/lib/pulse-meter/visualize/public/css/images/ui-icons_2e83ff_256x240.png +0 -0
  104. data/lib/pulse-meter/visualize/public/css/images/ui-icons_454545_256x240.png +0 -0
  105. data/lib/pulse-meter/visualize/public/css/images/ui-icons_888888_256x240.png +0 -0
  106. data/lib/pulse-meter/visualize/public/css/images/ui-icons_cd0a0a_256x240.png +0 -0
  107. data/lib/pulse-meter/visualize/public/css/images/ui-icons_f6cf3b_256x240.png +0 -0
  108. data/lib/pulse-meter/visualize/public/css/jquery-ui-1.8.16.bootstrap.css +0 -1320
  109. data/lib/pulse-meter/visualize/public/favicon.ico +0 -208
  110. data/lib/pulse-meter/visualize/public/img/glyphicons-halflings-white.png +0 -0
  111. data/lib/pulse-meter/visualize/public/img/glyphicons-halflings.png +0 -0
  112. data/lib/pulse-meter/visualize/public/js/application.js +0 -973
  113. data/lib/pulse-meter/visualize/public/js/backbone-min.js +0 -38
  114. data/lib/pulse-meter/visualize/public/js/bootstrap.js +0 -1835
  115. data/lib/pulse-meter/visualize/public/js/jquery-1.7.2.min.js +0 -4
  116. data/lib/pulse-meter/visualize/public/js/jquery-ui-1.8.16.bootstrap.min.js +0 -791
  117. data/lib/pulse-meter/visualize/public/js/jquery-ui-1.8.23.custom.min.js +0 -21
  118. data/lib/pulse-meter/visualize/public/js/jquery-ui-timepicker-addon.js +0 -1687
  119. data/lib/pulse-meter/visualize/public/js/json2.js +0 -487
  120. data/lib/pulse-meter/visualize/public/js/underscore-min.js +0 -32
  121. data/lib/pulse-meter/visualize/sensor.rb +0 -63
  122. data/lib/pulse-meter/visualize/series_extractor.rb +0 -107
  123. data/lib/pulse-meter/visualize/views/main.haml +0 -30
  124. data/lib/pulse-meter/visualize/views/sensors.haml +0 -76
  125. data/lib/pulse-meter/visualize/views/widgets/area.haml +0 -53
  126. data/lib/pulse-meter/visualize/views/widgets/extend_options.haml +0 -11
  127. data/lib/pulse-meter/visualize/views/widgets/gauge.haml +0 -13
  128. data/lib/pulse-meter/visualize/views/widgets/line.haml +0 -54
  129. data/lib/pulse-meter/visualize/views/widgets/pie.haml +0 -13
  130. data/lib/pulse-meter/visualize/views/widgets/table.haml +0 -45
  131. data/lib/pulse-meter/visualize/widget.rb +0 -38
  132. data/lib/pulse-meter/visualize/widgets/gauge.rb +0 -47
  133. data/lib/pulse-meter/visualize/widgets/pie.rb +0 -36
  134. data/lib/pulse-meter/visualize/widgets/timeline.rb +0 -114
  135. data/spec/pulse_meter/command_aggregator/async_spec.rb +0 -53
  136. data/spec/pulse_meter/command_aggregator/sync_spec.rb +0 -25
  137. data/spec/pulse_meter/command_aggregator/udp_spec.rb +0 -45
  138. data/spec/pulse_meter/extensions/enumerable_spec.rb +0 -58
  139. data/spec/pulse_meter/mixins/cmd_spec.rb +0 -117
  140. data/spec/pulse_meter/mixins/dumper_spec.rb +0 -162
  141. data/spec/pulse_meter/mixins/utils_spec.rb +0 -212
  142. data/spec/pulse_meter/observer/extended_spec.rb +0 -92
  143. data/spec/pulse_meter/observer_spec.rb +0 -207
  144. data/spec/pulse_meter/sensor/base_spec.rb +0 -106
  145. data/spec/pulse_meter/sensor/configuration_spec.rb +0 -103
  146. data/spec/pulse_meter/sensor/counter_spec.rb +0 -54
  147. data/spec/pulse_meter/sensor/hashed_counter_spec.rb +0 -43
  148. data/spec/pulse_meter/sensor/hashed_indicator_spec.rb +0 -39
  149. data/spec/pulse_meter/sensor/indicator_spec.rb +0 -43
  150. data/spec/pulse_meter/sensor/multi_spec.rb +0 -137
  151. data/spec/pulse_meter/sensor/timeline_spec.rb +0 -88
  152. data/spec/pulse_meter/sensor/timelined/average_spec.rb +0 -6
  153. data/spec/pulse_meter/sensor/timelined/counter_spec.rb +0 -6
  154. data/spec/pulse_meter/sensor/timelined/hashed_counter_spec.rb +0 -8
  155. data/spec/pulse_meter/sensor/timelined/hashed_indicator_spec.rb +0 -8
  156. data/spec/pulse_meter/sensor/timelined/indicator_spec.rb +0 -6
  157. data/spec/pulse_meter/sensor/timelined/max_spec.rb +0 -7
  158. data/spec/pulse_meter/sensor/timelined/median_spec.rb +0 -7
  159. data/spec/pulse_meter/sensor/timelined/min_spec.rb +0 -7
  160. data/spec/pulse_meter/sensor/timelined/multi_percentile_spec.rb +0 -21
  161. data/spec/pulse_meter/sensor/timelined/percentile_spec.rb +0 -17
  162. data/spec/pulse_meter/sensor/timelined/uniq_counter_spec.rb +0 -9
  163. data/spec/pulse_meter/sensor/uniq_counter_spec.rb +0 -28
  164. data/spec/pulse_meter/udp_server_spec.rb +0 -36
  165. data/spec/pulse_meter/visualize/app_spec.rb +0 -27
  166. data/spec/pulse_meter/visualize/dsl/layout_spec.rb +0 -64
  167. data/spec/pulse_meter/visualize/dsl/page_spec.rb +0 -62
  168. data/spec/pulse_meter/visualize/dsl/sensor_spec.rb +0 -30
  169. data/spec/pulse_meter/visualize/dsl/widget_spec.rb +0 -6
  170. data/spec/pulse_meter/visualize/dsl/widgets/area_spec.rb +0 -44
  171. data/spec/pulse_meter/visualize/dsl/widgets/gauge_spec.rb +0 -22
  172. data/spec/pulse_meter/visualize/dsl/widgets/line_spec.rb +0 -44
  173. data/spec/pulse_meter/visualize/dsl/widgets/pie_spec.rb +0 -35
  174. data/spec/pulse_meter/visualize/dsl/widgets/table_spec.rb +0 -36
  175. data/spec/pulse_meter/visualize/layout_spec.rb +0 -54
  176. data/spec/pulse_meter/visualize/page_spec.rb +0 -153
  177. data/spec/pulse_meter/visualize/sensor_spec.rb +0 -120
  178. data/spec/pulse_meter/visualize/series_extractor_spec.rb +0 -80
  179. data/spec/pulse_meter/visualize/widgets/area_spec.rb +0 -6
  180. data/spec/pulse_meter/visualize/widgets/gauge_spec.rb +0 -63
  181. data/spec/pulse_meter/visualize/widgets/line_spec.rb +0 -6
  182. data/spec/pulse_meter/visualize/widgets/pie_spec.rb +0 -73
  183. data/spec/pulse_meter/visualize/widgets/table_spec.rb +0 -6
  184. data/spec/pulse_meter/visualizer_spec.rb +0 -42
  185. data/spec/pulse_meter_spec.rb +0 -73
  186. data/spec/shared_examples/dsl_widget.rb +0 -106
  187. data/spec/shared_examples/timeline_sensor.rb +0 -439
  188. data/spec/shared_examples/timelined_subclass.rb +0 -23
  189. data/spec/shared_examples/widget.rb +0 -97
  190. data/spec/spec_helper.rb +0 -40
  191. data/spec/support/matchers.rb +0 -34
  192. data/spec/support/observered.rb +0 -40
@@ -1,58 +0,0 @@
1
- DynamicWidgetView = Backbone.View.extend {
2
- tagName: 'div'
3
-
4
- initialize: (options) ->
5
- @pageInfos = options['pageInfos']
6
- @sensorInfo = new SensorInfoList
7
-
8
- @sensorListView = new SensorInfoListView(@sensorInfo)
9
- @chartView = new DynamicChartView {pageInfos: @pageInfos}
10
-
11
- @$el.html(@template()())
12
-
13
- @$el.find('#sensor-list-area').append(@sensorListView.el)
14
-
15
- @chartView.render()
16
- @$el.find('#dynamic-plotarea').append(@chartView.el)
17
-
18
- events: {
19
- "click #sensor-controls #refresh": 'refresh'
20
- "click #sensor-controls #draw": 'drawChart'
21
- }
22
-
23
- template: ->
24
- _.template($("#dynamic-widget").html())
25
-
26
- errorTemplate: -> _.template($("#dynamic-widget-error").html())
27
-
28
- error: (error)->
29
- @$el.find('#errors').append(@errorTemplate()(error: error))
30
-
31
- refresh: ->
32
- @sensorInfo.fetch()
33
-
34
- intervalsEqual: (sensors) ->
35
- interval = sensors[0].get('interval')
36
- badIntervals = _.filter(sensors, (s) ->
37
- s.get('interval') != interval
38
- )
39
- badIntervals.length == 0
40
-
41
- drawChart: ->
42
- selectedSensors = @sensorListView.selectedSensors()
43
- return unless selectedSensors.length > 0
44
-
45
- unless @intervalsEqual(selectedSensors)
46
- @error('Selected sensors have different intervals')
47
- return
48
-
49
- type = @$el.find('#chart-type').val()
50
- @chartView.draw(selectedSensors, type)
51
-
52
- render: (container) ->
53
- container.empty()
54
- container.append(@$el)
55
- @sensorInfo.fetch()
56
- @chartView.update()
57
-
58
- }
@@ -1,17 +0,0 @@
1
- PageTitleView = Backbone.View.extend {
2
- tagName: 'li'
3
-
4
- template: _.template('<a href="#/pages/<%= id %>"><%= title %></a>')
5
-
6
- initialize: ->
7
- @model.bind 'change', @render, this
8
- @model.bind 'destroy', @remove, this
9
-
10
- render: ->
11
- @$el.html @template(@model.toJSON())
12
- if @model.get('selected')
13
- @$el.addClass('active')
14
- else
15
- @$el.removeClass('active')
16
- }
17
-
@@ -1,15 +0,0 @@
1
- PageTitlesView = Backbone.View.extend {
2
- initialize: (@pageInfos) ->
3
- @pageInfos.bind 'reset', @render, this
4
-
5
- addOne: (pageInfo) ->
6
- view = new PageTitleView {
7
- model: pageInfo
8
- }
9
- view.render()
10
- $('#page-titles').append(view.el)
11
-
12
- render: ->
13
- $('#page-titles').empty()
14
- @pageInfos.each(@addOne)
15
- }
@@ -1,19 +0,0 @@
1
- SensorInfoListView = Backbone.View.extend {
2
- tagName: 'div'
3
-
4
- template: ->
5
- _.template($("#sensor-list").html())
6
-
7
- initialize: (sensorInfo) ->
8
- @sensorInfo = sensorInfo
9
- @sensorInfo.bind 'reset', @render, this
10
-
11
- render: ->
12
- @$el.html @template()({sensors: @sensorInfo.toJSON()})
13
-
14
- selectedSensors: ->
15
- checked = _.filter @$el.find('.sensor-box'), (el) -> $(el).is(':checked')
16
- ids = {}
17
- _.each checked, (box) -> ids[box.id] = true
18
- selected = @sensorInfo.filter (sensor) -> ids[sensor.id]
19
- }
@@ -1,99 +0,0 @@
1
- WidgetView = Backbone.View.extend {
2
- tagName: 'div'
3
-
4
- template: (args) ->
5
- _.template($(".widget-template[data-widget-type=\"#{@model.get('type')}\"]").html())(args)
6
-
7
- initialize: (options) ->
8
- @pageInfos = options['pageInfos']
9
- @model.bind('destroy', @remove, this)
10
- @model.bind('redraw', @updateChart, this)
11
-
12
- events: {
13
- "click #refresh": 'refresh'
14
- "click #need-refresh": 'setRefresh'
15
- "click #extend-timespan": 'extendTimespan'
16
- "click #reset-timespan": 'resetTimespan'
17
- "change #start-time input": 'maybeEnableStopTime'
18
- "click #set-interval": 'setTimelineInterval'
19
- }
20
-
21
- refresh: ->
22
- @model.forceUpdate()
23
-
24
- setRefresh: ->
25
- needRefresh = @$el.find('#need-refresh').is(":checked")
26
- @model.setRefresh(needRefresh)
27
- true
28
-
29
- extendTimespan: ->
30
- select = @$el.find("#extend-timespan-val")
31
- val = select.first().val()
32
- @model.increaseTimespan(parseInt(val))
33
-
34
- setTimelineInterval: ->
35
- start = @unixtimeFromDatepicker("#start-time input")
36
- end = @unixtimeFromDatepicker("#end-time input")
37
- @model.setStartTime(start)
38
- @model.setEndTime(end)
39
-
40
- maybeEnableStopTime: ->
41
- date = @dateFromDatepicker("#start-time input")
42
- disabled = if date then false else true
43
- @$el.find("#end-time input").prop("disabled", disabled)
44
-
45
- resetTimespan: ->
46
- @model.resetTimespan()
47
-
48
- renderChart: ->
49
- @chartView.render()
50
-
51
- updateChart: ->
52
- @chartView.updateData(@cutoffMin(), @cutoffMax())
53
-
54
- setIds: ->
55
- @$el.find('#configure-button').prop('href', "#configure-#{@model.id}")
56
- @$el.find('#configure').attr('id', "configure-#{@model.id}")
57
- @$el.find('#start-time input').attr('id', "start-time-#{@model.id}")
58
- @$el.find('#end-time input').attr('id', "end-time-#{@model.id}")
59
-
60
- render: ->
61
- @$el.html @template(@model.toJSON())
62
- @setIds()
63
- @chartView = new WidgetChartView {
64
- pageInfos: @pageInfos
65
- model: @model
66
- }
67
- @$el.find("#plotarea").append(@chartView.el)
68
- @$el.addClass("span#{@model.get('width')}")
69
- @initDatePickers()
70
-
71
- initDatePickers: ->
72
- @$el.find(".datepicker").each (i) ->
73
- $(this).datetimepicker
74
- showOtherMonths: true
75
- selectOtherMonths: true
76
- @$el.find("#end-time input").prop("disabled", true)
77
-
78
- cutoffMin: ->
79
- val = parseFloat(@controlValue('#cutoff-min'))
80
- if _.isNaN(val) then null else val
81
-
82
- cutoffMax: ->
83
- val = parseFloat(@controlValue('#cutoff-max'))
84
- if _.isNaN(val) then null else val
85
-
86
- controlValue: (id) ->
87
- val = @$el.find(id).first().val()
88
-
89
- dateFromDatepicker: (id) ->
90
- @$el.find(id).datetimepicker("getDate")
91
-
92
- unixtimeFromDatepicker: (id) ->
93
- date = @dateFromDatepicker(id)
94
- if date
95
- date.getTime() / 1000
96
- else
97
- null
98
-
99
- }
@@ -1,13 +0,0 @@
1
- WidgetChartView = Backbone.View.extend {
2
- tagName: 'div'
3
-
4
- initialize: (options) ->
5
- @pageInfos = options['pageInfos']
6
- @model.bind 'destroy', @remove, this
7
-
8
- updateData: (min, max) ->
9
- @presenter.draw(min, max)
10
-
11
- render: ->
12
- @presenter = WidgetPresenter.create(@pageInfos, @model, @el)
13
- }
@@ -1,15 +0,0 @@
1
- WidgetListView = Backbone.View.extend {
2
- initialize: (options) ->
3
- @widgetList = options['widgetList']
4
- @pageInfos = options['pageInfos']
5
- @widgetList.bind 'reset', @render, this
6
-
7
- render: ->
8
- container = $('#widgets')
9
- container.empty()
10
- @widgetList.each (w) =>
11
- view = new WidgetView { pageInfos: @pageInfos, model: w }
12
- view.render()
13
- container.append(view.el)
14
- view.renderChart()
15
- }
@@ -1,131 +0,0 @@
1
- module PulseMeter
2
- module Visualize
3
- module DSL
4
- class DArray < Array; end
5
- class BadDataClass < PulseMeter::Visualize::DSL::Error; end
6
- class Base
7
- include PulseMeter::Mixins::Utils
8
-
9
- def initialize
10
- @opts = {}
11
- end
12
-
13
- def process_args(args)
14
- args.each_pair do |k, v|
15
- send(k, v)
16
- end
17
- end
18
-
19
- class << self
20
-
21
- def deprecated_setter(name)
22
- define_method(name) do |*args|
23
- STDERR.puts "DEPRECATION: #{name} DSL helper does not take any effect anymore."
24
- end
25
- end
26
-
27
- def setter(name, &block)
28
- define_method(name) do |val|
29
- block.call(val) if block
30
- @opts[name] = val
31
- end
32
- end
33
-
34
- def bool_setter(name)
35
- define_method(name) do |val|
36
- @opts[name] = !!val
37
- end
38
- end
39
-
40
- def string_setter(name, &block)
41
- define_method(name) do |val|
42
- val = val.to_s
43
- block.call(val) if block
44
- @opts[name] = val
45
- end
46
- end
47
-
48
- def int_setter(name, &block)
49
- define_method(name) do |val|
50
- val = val.to_i
51
- block.call(val) if block
52
- @opts[name] = val
53
- end
54
- end
55
-
56
- def hash_extender(name, &block)
57
- define_method(name) do |val|
58
- @opts[name] ||= {}
59
- @opts[name].merge!(val)
60
- end
61
- end
62
-
63
- def array_extender(name, &block)
64
- define_method(name) do |val|
65
- @opts[name] ||=[]
66
- block.call(val) if block
67
- @opts[name] << val
68
- end
69
- end
70
-
71
- def dsl_setter(name, klass)
72
- define_method(name) do |*args, &block|
73
- @opts[name] = create_dsl_obj(args, klass, block)
74
- end
75
- end
76
-
77
- def dsl_array_extender(collection_name, name, klass)
78
- define_method(name) do |*args, &block|
79
- @opts[collection_name] ||= DArray.new
80
- @opts[collection_name] << create_dsl_obj(args, klass, block)
81
- end
82
- end
83
-
84
- def data_class
85
- @data_class || PulseMeter::Visualize::Base
86
- end
87
-
88
- def data_class=(klass)
89
- raise BadDataClass unless klass.is_a?(Class) && klass <= PulseMeter::Visualize::Base
90
- @data_class = klass
91
- end
92
-
93
- end
94
-
95
- def create_dsl_obj(args, klass, block)
96
- params, options = extract_params(args)
97
- dsl_obj = klass.new(*params)
98
- dsl_obj.process_args(options)
99
- block.call(dsl_obj) if block
100
- dsl_obj
101
- end
102
-
103
- def extract_params(args)
104
- opts = if args.last.is_a?(Hash)
105
- args.pop
106
- else
107
- {}
108
- end
109
- [args, opts]
110
- end
111
-
112
- def to_data
113
- klass = self.class.data_class
114
- args = @opts.each_with_object({}) do |(k, v), acc|
115
- acc[k] = case v
116
- when PulseMeter::Visualize::DSL::Base
117
- v.to_data
118
- when DArray
119
- v.map(&:to_data)
120
- else
121
- v
122
- end
123
- end
124
- klass.new(args)
125
- end
126
-
127
- end
128
- end
129
- end
130
- end
131
-
@@ -1,40 +0,0 @@
1
- module PulseMeter
2
- module Visualize
3
- module DSL
4
- class Error < StandardError; end
5
-
6
- class NoWidgets < Error; end
7
-
8
- class BadSensorName < Error
9
- def initialize(name)
10
- super("Bad sensor name: `#{name}'")
11
- end
12
- end
13
-
14
- class BadWidgetName < Error
15
- def initialize(name)
16
- super("Bad widget name: `#{name}'")
17
- end
18
- end
19
-
20
- class BadWidgetWidth < Error
21
- def initialize(width)
22
- super("Bad widget width: `#{width}'")
23
- end
24
- end
25
-
26
- class BadWidgetRedrawInterval < Error
27
- def initialize(redraw_interval)
28
- super("Bad widget redraw_interval: `#{redraw_interval}'")
29
- end
30
- end
31
-
32
- class BadWidgetTimeSpan < Error
33
- def initialize(timespan)
34
- super("Bad widget timespan: `#{timespan}'")
35
- end
36
- end
37
- end
38
- end
39
- end
40
-
@@ -1,27 +0,0 @@
1
- module PulseMeter
2
- module Visualize
3
- module DSL
4
- class Layout < Base
5
- DEFAULT_TITLE = "Pulse Meter"
6
-
7
- self.data_class = PulseMeter::Visualize::Layout
8
-
9
- def initialize
10
- super()
11
- self.title(DEFAULT_TITLE)
12
- self.use_utc(false)
13
- end
14
-
15
- string_setter :title
16
- bool_setter :use_utc
17
- hash_extender :gchart_options
18
-
19
- deprecated_setter :outlier_color
20
- deprecated_setter :highchart_options
21
-
22
- dsl_array_extender :pages, :page, PulseMeter::Visualize::DSL::Page
23
- end
24
- end
25
- end
26
- end
27
-