Sha256: f87273e19347bf010b7a4c0f9f109bd8fcd81ea9664c04983b15bea81833069c

Contents?: true

Size: 1.91 KB

Versions: 114

Compression:

Stored size: 1.91 KB

Contents

require_relative 'utils/associations'

module CmAdmin
  module Models
    class Column
      include Utils::Associations

      attr_accessor :field_name, :field_type, :header, :format, :prefix, :suffix, :exportable, :round, :height, :width,
      :cm_css_class, :link, :url, :custom_method, :helper_method, :managable, :lockable, :drawer_partial, :tag_class,
      :display_if, :association_name, :association_type, :viewable, :custom_link

      def initialize(field_name, attributes = {})
        @field_name = field_name
        set_default_values
        attributes.each do |key, value|
          self.send("#{key.to_s}=", value)
        end

        #formatting header (either field_name or value present in header attribute)
        self.send("header=", format_header)
        self.height = 50 if self.field_type == :image && self.height.nil?
        self.width = 50 if self.field_type == :image && self.width.nil?
        self.display_if = lambda { |arg| return true } if self.display_if.nil?

        validation_for_association
      end

      #returns a string value as a header (either field_name or value present in header attribute)
      def format_header
        header_value = if self.header.present?
                         self.header
                       elsif self.field_type.to_s == 'association'
                         self.association_name
                       else
                         self.field_name
                       end
        header_value.to_s.titleize.upcase
      end

      def set_default_values
        self.exportable = true
        self.managable = true
        self.lockable = false
        self.viewable = true
        self.tag_class = {}
        self.field_type = :string
      end

      class << self
        def find_by(model, action_name, search_hash)
          model.available_fields[action_name].find { |column| column.field_name == search_hash[:name] }
        end
      end
    end
  end
end

Version data entries

114 entries across 114 versions & 1 rubygems

Version Path
cm-admin-1.5.47 lib/cm_admin/models/column.rb
cm-admin-1.5.46 lib/cm_admin/models/column.rb
cm-admin-1.5.45 lib/cm_admin/models/column.rb
cm-admin-1.5.44 lib/cm_admin/models/column.rb
cm-admin-1.5.43 lib/cm_admin/models/column.rb
cm-admin-1.5.42 lib/cm_admin/models/column.rb
cm-admin-1.5.41 lib/cm_admin/models/column.rb
cm-admin-1.5.40 lib/cm_admin/models/column.rb
cm-admin-1.5.39 lib/cm_admin/models/column.rb
cm-admin-1.5.38 lib/cm_admin/models/column.rb
cm-admin-1.5.37 lib/cm_admin/models/column.rb
cm-admin-1.5.36 lib/cm_admin/models/column.rb
cm-admin-1.5.35 lib/cm_admin/models/column.rb
cm-admin-1.5.34 lib/cm_admin/models/column.rb
cm-admin-1.5.33 lib/cm_admin/models/column.rb
cm-admin-1.5.32 lib/cm_admin/models/column.rb
cm-admin-1.5.31 lib/cm_admin/models/column.rb
cm-admin-1.5.30 lib/cm_admin/models/column.rb
cm-admin-1.5.29 lib/cm_admin/models/column.rb
cm-admin-1.5.28 lib/cm_admin/models/column.rb