Class: ForestAdminDatasourceCustomizer::DSL::ChartBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/forest_admin_datasource_customizer/dsl/builders/chart_builder.rb

Overview

ChartBuilder provides a fluent DSL for building charts

Examples:

Simple value chart

chart :total_revenue do
  value 12345
end

Chart with previous value

chart :monthly_sales do
  value 784, 760
end

Distribution chart

chart :status_breakdown do
  distribution({ 'Active' => 150, 'Inactive' => 50 })
end

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(context, result_builder) ⇒ ChartBuilder

Returns a new instance of ChartBuilder.



22
23
24
25
# File 'lib/forest_admin_datasource_customizer/dsl/builders/chart_builder.rb', line 22

def initialize(context, result_builder)
  @context = context
  @result_builder = result_builder
end

Instance Attribute Details

#contextObject (readonly)

Access the context



28
29
30
# File 'lib/forest_admin_datasource_customizer/dsl/builders/chart_builder.rb', line 28

def context
  @context
end

Instance Method Details

#distribution(data) ⇒ Object

Return a distribution chart

Examples:

distribution({ 'Category A' => 10, 'Category B' => 20 })

Parameters:

  • data (Hash)

    distribution data



45
46
47
# File 'lib/forest_admin_datasource_customizer/dsl/builders/chart_builder.rb', line 45

def distribution(data)
  @result_builder.distribution(data)
end

#leaderboard(data) ⇒ Object

Return a leaderboard chart

Examples:

leaderboard([
  { key: 'User 1', value: 100 },
  { key: 'User 2', value: 90 }
])

Parameters:

  • data (Array<Hash>)

    leaderboard data



84
85
86
# File 'lib/forest_admin_datasource_customizer/dsl/builders/chart_builder.rb', line 84

def leaderboard(data)
  @result_builder.leaderboard(data)
end

#objective(current, target) ⇒ Object

Return an objective chart

Examples:

objective 235, 300

Parameters:

  • current (Numeric)

    current value

  • target (Numeric)

    target value



54
55
56
# File 'lib/forest_admin_datasource_customizer/dsl/builders/chart_builder.rb', line 54

def objective(current, target)
  @result_builder.objective(current, target)
end

#percentage(value) ⇒ Object

Return a percentage chart

Examples:

percentage 75.5

Parameters:

  • value (Numeric)

    percentage value



62
63
64
# File 'lib/forest_admin_datasource_customizer/dsl/builders/chart_builder.rb', line 62

def percentage(value)
  @result_builder.percentage(value)
end

#smart(data) ⇒ Object

Smart chart - automatically detects the best chart type

Examples:

smart 1234
smart({ 'A' => 10, 'B' => 20 })

Parameters:

  • data (Hash, Array, Numeric)

    chart data



93
94
95
# File 'lib/forest_admin_datasource_customizer/dsl/builders/chart_builder.rb', line 93

def smart(data)
  @result_builder.smart(data)
end

#time_based(data) ⇒ Object

Return a time-based chart

Examples:

time_based([
  { label: 'Jan', values: { sales: 100 } },
  { label: 'Feb', values: { sales: 150 } }
])

Parameters:

  • data (Array<Hash>)

    time series data



73
74
75
# File 'lib/forest_admin_datasource_customizer/dsl/builders/chart_builder.rb', line 73

def time_based(data)
  @result_builder.time_based(data)
end

#value(current, previous = nil) ⇒ Object

Return a simple value chart

Parameters:

  • current (Numeric)

    current value

  • previous (Numeric) (defaults to: nil)

    previous value (optional)



33
34
35
36
37
38
39
# File 'lib/forest_admin_datasource_customizer/dsl/builders/chart_builder.rb', line 33

def value(current, previous = nil)
  if previous
    @result_builder.value(current, previous)
  else
    @result_builder.value(current)
  end
end