defmodule Chartkick do def line_chart(data_source, options \\ []) do chartkick_chart("LineChart", data_source, options) end def pie_chart(data_source, options \\ []) do chartkick_chart("PieChart", data_source, options) end def column_chart(data_source, options \\ []) do chartkick_chart("ColumnChart", data_source, options) end def bar_chart(data_source, options \\ []) do chartkick_chart("BarChart", data_source, options) end def area_chart(data_source, options \\ []) do chartkick_chart("AreaChart", data_source, options) end def combo_chart(data_source, options \\ []) do chartkick_chart("ComboChart", data_source, options) end def geo_chart(data_source, options \\ []) do chartkick_chart("GeoChart", data_source, options) end def scatter_chart(data_source, options \\ []) do chartkick_chart("ScatterChart", data_source, options) end def timeline(data_source, options \\ []) do chartkick_chart("Timeline", data_source, options) end def chartkick_chart(klass, data_source, options \\ []) do id = options[:id] || generate_element_id height = options[:height] || "300px" only = options[:only] """ #{unless only == :script, do: chartkick_tag(id, height)} #{unless only == :html, do: chartkick_script(klass, id, data_source, options_json(Enum.into(options, %{})))} """ end def chartkick_script(klass, id, data_source, options_json) do "" end def chartkick_tag(id, height) do "