You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
838 B
43 lines
838 B
# frozen_string_literal: true
|
|
|
|
module Analyze
|
|
module Graph
|
|
class StudentsByIncome
|
|
attr_reader :incomes
|
|
|
|
def initialize(incomes:)
|
|
@incomes = incomes
|
|
end
|
|
|
|
def to_s
|
|
"Students by income"
|
|
end
|
|
|
|
def slug
|
|
"students-by-income"
|
|
end
|
|
|
|
def columns
|
|
[].tap do |array|
|
|
incomes.each do |income|
|
|
array << Analyze::Graph::Column::Income.new(income:)
|
|
end
|
|
array << Analyze::Graph::Column::AllStudent.new
|
|
end
|
|
end
|
|
|
|
def source
|
|
Analyze::Source::SurveyData.new(slices: [slice], graph: self)
|
|
end
|
|
|
|
def slice
|
|
Analyze::Slice::StudentsByGroup.new(graph: self)
|
|
end
|
|
|
|
def group
|
|
Analyze::Group::Base.new(name: "Income", slug: "income", graph: self)
|
|
end
|
|
end
|
|
end
|
|
end
|