Sha256: d046b4851c2490c5542ffaf77cc243648f3e21cd515a94046f5f1c500e46032b

Contents?: true

Size: 989 Bytes

Versions: 3

Compression:

Stored size: 989 Bytes

Contents

module Trestle
  class Table
    class Automatic < Table
      def initialize(admin)
        super(sortable: true, admin: admin)
        @admin = admin
      end

      def columns
        content_columns + [actions_column]
      end

      def content_columns
        @admin.default_attributes.map.with_index do |attribute, index|
          next if attribute.inheritance_column?
          next if attribute.counter_cache?

          if attribute.association?
            Column.new(self, attribute.association_name, sort: false)
          elsif attribute.text?
            Column.new(self, attribute.name, link: index.zero?) do |instance|
              truncate(instance.public_send(attribute.name))
            end
          else
            Column.new(self, attribute.name, link: index.zero?, align: (:center if attribute.datetime? || attribute.boolean?))
          end
        end.compact
      end

      def actions_column
        ActionsColumn.new(self)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
trestle-0.8.3 lib/trestle/table/automatic.rb
trestle-0.8.2 lib/trestle/table/automatic.rb
trestle-0.8.0 lib/trestle/table/automatic.rb