Sha256: 7c47997f4d894c7176042052547a119f0ababb5aac05be1db9dde266d38e87f8

Contents?: true

Size: 1.74 KB

Versions: 19

Compression:

Stored size: 1.74 KB

Contents

module AdminIt
  module ActiveRecordData
    #
    module Resource
      protected

      TYPE_MAPPING = {
        primary_key: :integer,
        string: :string,
        text: :string,
        integer: :integer,
        float: :float,
        decimal: :float,
        datetime: :datetime,
        timestamp: :datetime,
        time: :time,
        date: :date,
        binary: :binary,
        boolean: :boolean
      }

      def default_display_name
        entity_class
          .model_name
          .human# (count: 0)
          .split(' ')
          .map { |s| s.mb_chars.capitalize }
          .join(' ')
      end

      def default_fields(&block)
        enum = Enumerator.new do |yielder|
          exclude = []
          entity_class.reflections.each do |name, a|
            f = AdminIt::Field.create(name, entity_class, type: :relation)
            f.assoc = a
            yielder << f
            exclude << "#{name}_id" if a.belongs_to?
          end
          entity_class.columns_hash.each do |name, c|
            next if exclude.include?(name)
            name = name.to_sym
            opts = { type: TYPE_MAPPING[c.type] }
            if name == :id
              opts[:visible] = false
              opts[:writable] = false
            end
            yielder << AdminIt::Field.create(name, entity_class, opts)
          end
        end
        block_given? ? enum.each(&block) : enum
      end

      def default_filters
        enum = Enumerator.new do |yielder|
          fields.each do |field|
            next if field.type == :relation
            name = "#{field.field_name}_value"
            yielder << AdminIt::ValueFilter.create(name, self, field)
          end
        end
        block_given? ? enum.each(&block) : enum
      end
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
admin_it-1.3.8 lib/admin_it/data/active_record/resource.rb
admin_it-1.3.7 lib/admin_it/data/active_record/resource.rb
admin_it-1.3.6 lib/admin_it/data/active_record/resource.rb
admin_it-1.3.5 lib/admin_it/data/active_record/resource.rb
admin_it-1.3.4 lib/admin_it/data/active_record/resource.rb
admin_it-1.3.3 lib/admin_it/data/active_record/resource.rb
admin_it-1.3.2 lib/admin_it/data/active_record/resource.rb
admin_it-1.3.1 lib/admin_it/data/active_record/resource.rb
admin_it-1.3.0 lib/admin_it/data/active_record/resource.rb
admin_it-1.2.8 lib/admin_it/data/active_record/resource.rb
admin_it-1.2.7 lib/admin_it/data/active_record/resource.rb
admin_it-1.2.6 lib/admin_it/data/active_record/resource.rb
admin_it-1.2.5 lib/admin_it/data/active_record/resource.rb
admin_it-1.2.4 lib/admin_it/data/active_record/resource.rb
admin_it-1.2.3 lib/admin_it/data/active_record/resource.rb
admin_it-1.2.2 lib/admin_it/data/active_record/resource.rb
admin_it-1.2.1 lib/admin_it/data/active_record/resource.rb
admin_it-1.2.0 lib/admin_it/data/active_record/resource.rb
admin_it-1.1.0 lib/admin_it/data/active_record/resource.rb