class RailsDataExplorer::DataType::Quantitative::Temporal

Responsibilities:

* Provide methods for temporal quantitative data type.

Collaborators:

* DataSet

Public Instance Methods

all_available_chart_types() click to toggle source
# File lib/rails_data_explorer/data_type/quantitative/temporal.rb, line 14
def all_available_chart_types
  [
    {
      chart_class: Chart::HistogramTemporal,
      chart_roles: [:x],
      dimensions_count_min: 1,
      dimensions_count_max: 1
    },
    {
      chart_class: Chart::DescriptiveStatisticsTable,
      chart_roles: [:any],
      dimensions_count_min: 1,
      dimensions_count_max: 1
    },
    {
      chart_class: Chart::ParallelCoordinates,
      chart_roles: [:dimension],
      dimensions_count_min: 3,
    },
    # {
    #   chart_class: Chart::StackedHistogramTemporal,
    #   chart_roles: [:x],
    #   dimensions_count_min: 2,
    #   dimensions_count_max: 2,
    # },
  ].freeze
end
axis_tick_format(values) click to toggle source
# File lib/rails_data_explorer/data_type/quantitative/temporal.rb, line 70
def axis_tick_format(values)
  %(function(d) { return d3.time.format('%x')(new Date(d)) })
end
descriptive_statistics(values) click to toggle source
# File lib/rails_data_explorer/data_type/quantitative/temporal.rb, line 42
def descriptive_statistics(values)
  non_nil_values = values.find_all { |e| !e.nil? }
  ruby_formatter = Proc.new { |v| v.nil? ? '' : v.strftime('%a, %b %e, %Y, %l:%M:%S %p %Z') }
  [
    { label: 'Min', value: non_nil_values.min, ruby_formatter: ruby_formatter },
    { label: 'Max', value: non_nil_values.max, ruby_formatter: ruby_formatter },
    { label: 'Count', value: values.length, ruby_formatter: Proc.new { |e| number_with_delimiter(e) } },
  ]
end
descriptive_statistics_table(values) click to toggle source

Returns an object that describes a statistics table.

# File lib/rails_data_explorer/data_type/quantitative/temporal.rb, line 53
def descriptive_statistics_table(values)
  desc_stats = descriptive_statistics(values)
  table = Utils::RdeTable.new(
    desc_stats.map { |stat|
      Utils::RdeTableRow.new(
        :tr,
        [
          Utils::RdeTableCell.new(:th, stat[:label], css_class: 'rde-row_header'),
          Utils::RdeTableCell.new(:td, stat[:value], ruby_formatter: stat[:ruby_formatter], css_class: 'rde-cell-value'),
        ],
        css_class: 'rde-row-values',
      )
    }
  )
  table
end