Module: LcpRuby::DisplayHelper
- Defined in:
- app/helpers/lcp_ruby/display_helper.rb
Instance Method Summary collapse
- #compute_item_classes(record, presenter) ⇒ Object
- #current_model_name ⇒ Object
-
#display_association_value(value) ⇒ Object
Default rendering for association-valued show fields / index columns (plain belongs_to, terminal-belongs_to dot-path) without an explicit renderer or partial.
- #empty_value_placeholder(value, presenter = nil) ⇒ Object
- #format_enum_display(value, field_def, model_name = nil) ⇒ Object
- #render_display_value(value, renderer_key, options = {}, field_def = nil, record: nil) ⇒ Object
Instance Method Details
#compute_item_classes(record, presenter) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'app/helpers/lcp_ruby/display_helper.rb', line 22 def compute_item_classes(record, presenter) rules = presenter.item_classes return "" if rules.empty? ctx = condition_context matching = rules.filter_map do |rule| ConditionEvaluator.evaluate_any(record, rule["when"], context: ctx) ? rule["class"] : nil rescue ConditionError => e raise unless Rails.env.production? LcpRuby.record_error(e, subsystem: "condition_eval", presenter: presenter.name) nil end matching.join(" ") end |
#current_model_name ⇒ Object
50 51 52 |
# File 'app/helpers/lcp_ruby/display_helper.rb', line 50 def current_model_name current_model_definition&.name if respond_to?(:current_model_definition) end |
#display_association_value(value) ⇒ Object
Default rendering for association-valued show fields / index columns (plain belongs_to, terminal-belongs_to dot-path) without an explicit renderer or partial. Non-AR values pass through untouched.
57 58 59 60 61 |
# File 'app/helpers/lcp_ruby/display_helper.rb', line 57 def display_association_value(value) return value unless value.is_a?(ActiveRecord::Base) LcpRuby::Presenter::FieldValueResolver.association_label(value) end |
#empty_value_placeholder(value, presenter = nil) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'app/helpers/lcp_ruby/display_helper.rb', line 37 def empty_value_placeholder(value, presenter = nil) return value if value == false || value == 0 if value.nil? || (value.respond_to?(:empty?) && value.empty?) || (value.is_a?(String) && value.strip.empty?) text = presenter&.&.dig("empty_value") || LcpRuby.configuration.empty_value || I18n.t("lcp_ruby.empty_value", default: "\u2014") content_tag(:span, text, class: "lcp-empty-value") else value end end |
#format_enum_display(value, field_def, model_name = nil) ⇒ Object
17 18 19 20 |
# File 'app/helpers/lcp_ruby/display_helper.rb', line 17 def format_enum_display(value, field_def, model_name = nil) return value unless field_def&.enum? && value.present? field_def.enum_label_for(value, model_name: model_name) end |
#render_display_value(value, renderer_key, options = {}, field_def = nil, record: nil) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 |
# File 'app/helpers/lcp_ruby/display_helper.rb', line 3 def render_display_value(value, renderer_key, = {}, field_def = nil, record: nil) return value if renderer_key.blank? renderer = LcpRuby::Display::RendererRegistry.renderer_for(renderer_key.to_s) return value unless renderer = || {} if field_def&.enum? && !.key?("label") = .merge("label" => field_def.enum_label_for(value, model_name: current_model_name)) end renderer.render(value, , record: record, view_context: self) end |