Module: SimpleMetric::Helpers
- Defined in:
- lib/simple_metric.rb
Instance Method Summary collapse
-
#simple_metric_graph(*metrics) ⇒ Object
simple_metric_graph([[:metric_key, :title], [:metric_key_2, :title_2]]) OR simple_metric_graph([:metric_key, :metric_key_2]).
Instance Method Details
#simple_metric_graph(*metrics) ⇒ Object
simple_metric_graph([[:metric_key, :title], [:metric_key_2, :title_2]]) OR
simple_metric_graph([:metric_key, :metric_key_2])
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 |
# File 'lib/simple_metric.rb', line 16 def simple_metric_graph(*metrics) if metrics.blank? "" else titles = {} metrics = metrics.map do |m| metric, title = m metric = metric.is_a?(Metric) ? metric : Metric.find_by(key: metric) next if metric.blank? titles[metric.id] = title || metric.key.mb_chars.titleize.to_s metric end.compact dates = metrics.map(&:data_set_object).map(&:data_points).flatten.map(&:x).uniq.sort.map { |x| Time.at(x) } content_tag :div do concat content_tag(:div, nil, :id => "metric_graph_#{metrics.map(&:id).join("_")}", :style => "width: 100%", :class => "dygraph_container") concat javascript_tag <<-JS var container_id = "metric_graph_#{metrics.map(&:id).join("_")}"; g = new Dygraph( // containing div document.getElementById(container_id), // CSV or path to a CSV file. "Date,#{metrics.map{ |m| titles[m.id] }.join(',')}\\n" + "#{dates.map { |date| [date.strftime("%Y-%m-%d %H:%M"), metrics.map { |m| m.get_value(date) }].flatten.join(", ") + "\\n" }.join("")}" ); $("#" + container_id).data("dygraph", g); JS end end end |