Sha256: 8baaa46d7bf81ec48058ef7872bcf04f90782ceff56c258ecb29ad35d1dbedd1
Contents?: true
Size: 1.7 KB
Versions: 2
Compression:
Stored size: 1.7 KB
Contents
# frozen_string_literal: true require 'quby/questionnaires/entities/charting/line_chart' require_relative 'chart_builder' module Quby module Questionnaires module DSL class LineChartBuilder < ChartBuilder set_chart_class(Entities::Charting::LineChart) def y_axis_label(label) @chart.y_label = label end def tonality(value) @chart.tonality = value end # value - Number or a hash `{from_age..to_age => {female: 5, default: 4}, .., default: { default: 3 }}` # block - deprecated. def baseline(value = nil, &block) unless value.nil? ^ block.nil? fail ArgumentError, "Must give either value or a block" end if value && value.is_a?(Hash) @chart.baseline = ->(age, gender) { age_match = value.find { |age_range, _v| age && age_range === age } hash_by_gender = (age_match&.last || value.stringify_keys["default"]) gender_match = hash_by_gender.find {|gender_key, _v| gender && gender_key.to_s == gender.to_s } gender_match&.last || hash_by_gender.stringify_keys['default'] } elsif value @chart.baseline = ->(age, gender) { value } end if block if block.arity != 2 fail ArgumentError, "Given block must take two arguments" end @chart.baseline = block end end def clinically_relevant_change(value) @chart.clinically_relevant_change = value end def validate! fail "Chart #{@chart.key} has no range specified" unless @chart.y_range end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
quby-4.0.4 | lib/quby/questionnaires/dsl/charting/line_chart_builder.rb |
quby-4.0.3 | lib/quby/questionnaires/dsl/charting/line_chart_builder.rb |