Sha256: 6bf4622082bbeadac30967cf9524d0fcf264f940afb51aee9d136f60902f9c4e

Contents?: true

Size: 1.84 KB

Versions: 19

Compression:

Stored size: 1.84 KB

Contents

require 'bson'
require 'moped'

module AdminIt
  module MongoidData
    #
    module Resource
      protected

      TYPE_MAPPING = {
        Array => :array,
        BigDecimal => :float,
        Boolean => :boolean,
        Date => :date,
        DateTime => :datetime,
        Float => :float,
        Hash => :hash,
        Integer => :integer,
        BSON::ObjectId => :integer,
        BSON::Binary => :binary,
        Range => :range,
        Regexp => :regexp,
        String => :string,
        Symbol => :symbol,
        Time => :time
      }

      NONFILTER_TYPES = %i(array hash binary range regexp relation)

      def default_fields(&block)
        enum = Enumerator.new do |yielder|
          entity_class.fields.each do |name, field|
            name = name.to_sym
            opts = { type: TYPE_MAPPING[field.options[:type]] }
            if name == :_id
              name = :id
              opts[:visible] = false
              opts[:writable] = false
            end
            yielder << AdminIt::Field.create(name, entity_class, opts)
          end
          relations = entity_class.relations
          relations.merge!(entity_class.embedded_relations)
          relations.each do |name, rel|
            name = name.to_sym
            opts = { type: :relation }
            field = AdminIt::Field.create(name, entity_class, opts)
            field.assoc = rel
            yielder << field
          end
        end
        block_given? ? enum.each(&block) : enum
      end

      def default_filters
        enum = Enumerator.new do |yielder|
          fields.each do |field|
            next if NONFILTER_TYPES.include?(field.type)
            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/mongoid/resource.rb
admin_it-1.3.7 lib/admin_it/data/mongoid/resource.rb
admin_it-1.3.6 lib/admin_it/data/mongoid/resource.rb
admin_it-1.3.5 lib/admin_it/data/mongoid/resource.rb
admin_it-1.3.4 lib/admin_it/data/mongoid/resource.rb
admin_it-1.3.3 lib/admin_it/data/mongoid/resource.rb
admin_it-1.3.2 lib/admin_it/data/mongoid/resource.rb
admin_it-1.3.1 lib/admin_it/data/mongoid/resource.rb
admin_it-1.3.0 lib/admin_it/data/mongoid/resource.rb
admin_it-1.2.8 lib/admin_it/data/mongoid/resource.rb
admin_it-1.2.7 lib/admin_it/data/mongoid/resource.rb
admin_it-1.2.6 lib/admin_it/data/mongoid/resource.rb
admin_it-1.2.5 lib/admin_it/data/mongoid/resource.rb
admin_it-1.2.4 lib/admin_it/data/mongoid/resource.rb
admin_it-1.2.3 lib/admin_it/data/mongoid/resource.rb
admin_it-1.2.2 lib/admin_it/data/mongoid/resource.rb
admin_it-1.2.1 lib/admin_it/data/mongoid/resource.rb
admin_it-1.2.0 lib/admin_it/data/mongoid/resource.rb
admin_it-1.1.0 lib/admin_it/data/mongoid/resource.rb