app/models/effective/table_rows/collection.rb



# frozen_string_literal: true

module Effective
  module TableRows
    class Collection < Effective::TableRow

      def initialize(name, collection, options, builder:)
        @collection = collection
        super(name, options, builder: builder)
      end

      def content
        values = Array(value) - [nil, '']

        if values.length > 1
          values.map { |v| content_tag(:div, item_content(v)) }.join.html_safe
        elsif values.length == 1
          item_content(values.first)
        end
      end

      def item_content(value)
        item = @collection.find { |k, v| (k && k == value) || (v && v == value) || k.try(:id) == value }
        item = item.first if item.kind_of?(Array)
        (item || value).to_s
      end

    end
  end
end