Sha256: 427568d16a713af69ef32c39df09ce2b67ecb0d9bb05aafa192e41eb3f550b8b
Contents?: true
Size: 1.6 KB
Versions: 2
Compression:
Stored size: 1.6 KB
Contents
require 'json' module MetricsGraphicsRails module ViewHelpers # TODO: generalize for extra options def metrics_graphic_for(data, options = {}) @data = data json_data = data.to_json @target = options.fetch(:target) @x_accessor = options.fetch(:x_accessor) { :date } @y_accessor = options.fetch(:y_accessor) { :value } title = options.fetch(:title) description = options.fetch(:description) { '' } width = options.fetch(:width) { 600 } height = options.fetch(:height) { 250 } @time_format = options.fetch(:time_format) { '%Y-%m-%d' } @is_multiple = data.first.is_a?(Array) @extra_options = options[:extra_options] || {} javascript_tag <<-SCRIPT var data = #{json_data}; #{convert_data_js} MG.data_graphic({ title: "#{title}", description: "#{description}", data: data, width: #{width}, height: #{height}, target: '#{@target}',#{extra_options_to_options} x_accessor: '#{@x_accessor}', y_accessor: '#{@y_accessor}' }); SCRIPT end private def extra_options_to_options @extra_options.map{ |k,v| "#{k}: #{ v.is_a?(String) ? "'#{v}'" : v }," }.join("\n ") end def convert_data_js if @is_multiple <<-CONVERT for (var i = 0; i < data.length; i++) { data[i] = MG.convert.date(data[i], '#{@x_accessor}', '#{@time_format}'); } CONVERT else "MG.convert.date(data, '#{@x_accessor}', '#{@time_format}');" end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
metrics-graphics-rails-2.10.1.2 | lib/metrics-graphics-rails/view_helpers.rb |
metrics-graphics-rails-2.10.1.1 | lib/metrics-graphics-rails/view_helpers.rb |