Class: LcpRuby::VirtualColumns::Collector
- Inherits:
-
Object
- Object
- LcpRuby::VirtualColumns::Collector
- Defined in:
- lib/lcp_ruby/virtual_columns/collector.rb
Overview
Scans presenter metadata to determine which virtual columns to include.
Class Method Summary collapse
-
.collect(presenter_def:, model_def:, context: :index, sort_field: nil) ⇒ Set<String>
Collect virtual column names needed for a given context.
Class Method Details
.collect(presenter_def:, model_def:, context: :index, sort_field: nil) ⇒ Set<String>
Collect virtual column names needed for a given context.
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/lcp_ruby/virtual_columns/collector.rb', line 12 def self.collect(presenter_def:, model_def:, context: :index, sort_field: nil) all_vc_names = model_def.virtual_column_names.to_set return Set.new if all_vc_names.empty? vc_names = Set.new # 1. auto_include: true virtual columns (always included) model_def.virtual_columns.each do |name, vc_def| vc_names << name if vc_def.auto_include end case context when :index collect_index(presenter_def, model_def, all_vc_names, vc_names) when :show collect_show(presenter_def, model_def, all_vc_names, vc_names) when :edit collect_edit(presenter_def, model_def, all_vc_names, vc_names) end # Runtime sort param — include VC if sorting by it if sort_field.present? field = sort_field.to_s vc_names << field if all_vc_names.include?(field) end # Filter to only existing VC names vc_names & all_vc_names end |