Sha256: c95797c1366cf92a12cc37509646affac18f1d28a34fc7852851b9714a33da39

Contents?: true

Size: 1.29 KB

Versions: 2

Compression:

Stored size: 1.29 KB

Contents

require_relative "dataset.rb"
require_relative "helpers/dates.rb"

module ChartJS

  class Data

    include Helpers::Dates

    def initialize
      @container = Hash.new
      @datasets  = Hash.new
    end

    def build(&block)
      instance_eval(&block)
      self
    end

    def labels(labels = nil)
      raise "Not an array!" unless labels.is_a? Array
      @container['labels'] = labels
    end

    def dataset(label, &block)
      @datasets[label] = Dataset.new(label, &block)
    end

    def to_h(type)
      case type
      when :pie
        @container  
        @container['labels'] = Array.new
        @container['datasets'] = Array.new
        @container['datasets'] << Hash.new
        @datasets.each do |label, data|
          @container['labels'] << label
          data.to_h.each do |key, value|
            if @container['datasets'][0][key].is_a? Array
              @container['datasets'][0][key] << value
            else
              @container['datasets'][0][key] = Array.new
              @container['datasets'][0][key] << value
            end
          end
        end
        @container  
      else
        cont = @container.dup
        cont['datasets'] = []
        @datasets.each do |_, data|
          cont['datasets'] << data.to_h
        end
        cont

      end
    end

  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
chart_js-1.1.1 lib/chart_js/chart/data.rb
chart_js-1.1.0 lib/chart_js/chart/data.rb