Module: HeatmapBuilder

Defined in:
lib/heatmap-builder.rb,
lib/heatmap_builder/builder.rb,
lib/heatmap_builder/version.rb,
lib/heatmap_builder/svg_helpers.rb,
lib/heatmap_builder/color_helpers.rb,
lib/heatmap_builder/value_conversion.rb,
lib/heatmap_builder/linear_heatmap_builder.rb,
lib/heatmap_builder/calendar_heatmap_builder.rb

Defined Under Namespace

Modules: ColorHelpers, SvgHelpers, ValueConversion Classes: Builder, CalendarHeatmapBuilder, Error, LinearHeatmapBuilder

Constant Summary collapse

GITHUB_GREEN =
Builder::GITHUB_GREEN
BLUE_OCEAN =
Builder::BLUE_OCEAN
WARM_SUNSET =
Builder::WARM_SUNSET
PURPLE_VIBES =
Builder::PURPLE_VIBES
RED_TO_GREEN =
Builder::RED_TO_GREEN
VERSION =
"0.2.0"

Class Method Summary collapse

Class Method Details

.build_calendar(scores: nil, values: nil, **options) ⇒ String

Builds a calendar (GitHub-style) heatmap visualization.

Examples:

HeatmapBuilder.build_calendar(scores: { '2024-01-01' => 2, '2024-01-02' => 4 })
HeatmapBuilder.build_calendar(values: { Date.new(2024, 1, 1) => 45.2 })

Parameters:

  • scores (Hash<Date, Integer>, Hash<String, Integer>, nil) (defaults to: nil)

    Pre-calculated score values by date. Required unless values provided.

  • values (Hash<Date, Numeric>, Hash<String, Numeric>, nil) (defaults to: nil)

    Raw numeric values by date. Required unless scores provided.

  • options (Hash)

    Customization options

Returns:

  • (String)

    SVG markup

See Also:



42
43
44
# File 'lib/heatmap-builder.rb', line 42

def self.build_calendar(scores: nil, values: nil, **options)
  CalendarHeatmapBuilder.new(scores: scores, values: values, **options).build
end

.build_linear(scores: nil, values: nil, **options) ⇒ String

Builds a linear (single-row) heatmap visualization.

Examples:

HeatmapBuilder.build_linear(scores: [0, 1, 2, 3, 4])
HeatmapBuilder.build_linear(values: [10, 25, 50, 75, 100], value_min: 0, value_max: 100)

Parameters:

  • scores (Array<Integer>, nil) (defaults to: nil)

    Pre-calculated score values (0 to num_colors-1). Required unless values provided.

  • values (Array<Numeric>, nil) (defaults to: nil)

    Raw numeric values to be mapped to scores. Required unless scores provided.

  • options (Hash)

    Customization options

Returns:

  • (String)

    SVG markup

See Also:



28
29
30
# File 'lib/heatmap-builder.rb', line 28

def self.build_linear(scores: nil, values: nil, **options)
  LinearHeatmapBuilder.new(scores: scores, values: values, **options).build
end

.generate(scores, options = {}) ⇒ Object

Deprecated.

Use build_linear instead



47
48
49
50
51
# File 'lib/heatmap-builder.rb', line 47

def self.generate(scores, options = {})
  warn "[DEPRECATION] `HeatmapBuilder.generate(scores, options)` is deprecated and will be removed in v1.0.0. " \
       "Use `HeatmapBuilder.build_linear(scores: scores, **options)` instead."
  build_linear(scores: scores, **options)
end

.generate_calendar(scores, options = {}) ⇒ Object

Deprecated.

Use build_calendar instead



54
55
56
57
58
# File 'lib/heatmap-builder.rb', line 54

def self.generate_calendar(scores, options = {})
  warn "[DEPRECATION] `HeatmapBuilder.generate_calendar(scores_by_date, options)` is deprecated and will be removed in v1.0.0. " \
       "Use `HeatmapBuilder.build_calendar(scores: scores_by_date, **options)` instead."
  build_calendar(scores: scores, **options)
end