module SimpleMetric::Helpers
Public Instance Methods
simple_metric_graph(*metrics)
click to toggle source
simple_metric_graph([[:metric_key, :title], [:metric_key_2, :title_2]])
OR
simple_metric_graph([:metric_key, :metric_key_2])
# 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