Netzke::DataAccessor

This module is included into such data-driven components as GridPanel, FormPanel, etc.

Public Instance Methods

assoc_and_assoc_method_for_column(c) click to toggle source

Returns association and association method for a column

    # File lib/netzke/data_accessor.rb, line 68
68:     def assoc_and_assoc_method_for_column(c)
69:       assoc_name, assoc_method = c[:name].split('__')
70:       assoc = data_class.reflect_on_association(assoc_name.to_sym) if assoc_method
71:       [assoc, assoc_method]
72:     end
association_attr?(name) click to toggle source
    # File lib/netzke/data_accessor.rb, line 74
74:     def association_attr?(name)
75:       !!name.to_s.index("__")
76:     end
combobox_options_for_column(column, method_options = {}) click to toggle source

Returns options for comboboxes in grids/forms

    # File lib/netzke/data_accessor.rb, line 8
 8:     def combobox_options_for_column(column, method_options = {})
 9:       query = method_options[:query]
10: 
11:       # First, check if we have options for this column defined in persistent storage
12:       options = column[:combobox_options] && column[:combobox_options].split("\n")
13:       if options
14:         query ? options.select{ |o| o.index(/^#{query}/) }.map{ |el| [el] } : options
15:       else
16:         assoc, assoc_method = assoc_and_assoc_method_for_column(column)
17: 
18:         if assoc
19:           # Options for an asssociation attribute
20: 
21:           relation = assoc.klass.where({})
22: 
23:           relation = relation.extend_with(method_options[:scope]) if method_options[:scope]
24: 
25:           if assoc.klass.column_names.include?(assoc_method)
26:             # apply query
27:             relation = relation.where(:"#{assoc_method}".like => "#{query}%") if query.present?
28:             relation.all.map{ |r| [r.send(assoc_method)] }
29:           else
30:             relation.all.map{ |r| r.send(assoc_method) }.select{ |value| value =~ /^#{query}/  }.map{ |v| [v] }
31:           end
32: 
33:         else
34:           # Options for a non-association attribute
35:           res=data_class.netzke_combo_options_for(column[:name], method_options)
36: 
37:                                         # ensure it is an array-in-array, as Ext will fail otherwise
38:                                         raise RuntimeError, "netzke_combo_options_for should return an Array" unless res.kind_of? Array
39:                                         return [[]] if res.empty?
40: 
41:                                         unless res.first.kind_of? Array
42:                                                 res=res.map do |v|
43:                                                         [v]
44:                                                 end
45:                                         end
46:                                         return res
47: 
48: 
49:         end
50:       end
51:     end
data_class() click to toggle source

Model class (We can’t memoize this method because at some point we extend it, e.g. in Netzke::DataAccessor)

    # File lib/netzke/data_accessor.rb, line 80
80:     def data_class
81:       @data_class ||= begin
82:         klass = "Netzke::ModelExtensions::#{config[:model]}For#{short_component_class_name}".constantize rescue nil
83:         klass || original_data_class
84:       end
85:     end
normalize_attr(a) click to toggle source

Normalize an attribute, e.g.: :first_name =>

  {:name => "first_name"}
    # File lib/netzke/data_accessor.rb, line 63
63:     def normalize_attr(a)
64:       a.is_a?(Symbol) || a.is_a?(String) ? {:name => a.to_s} : a.merge(:name => a[:name].to_s)
65:     end
normalize_attrs(attrs) click to toggle source

Normalize array of attributes

:col1, “col2”, {:name => :col3}

>

  [{:name => "col1"}, {:name => "col2"}, {:name => "col3"}]
    # File lib/netzke/data_accessor.rb, line 56
56:     def normalize_attrs(attrs)
57:       attrs.map{ |a| normalize_attr(a) }
58:     end
original_data_class() click to toggle source

Model class before model extensions are taken into account

    # File lib/netzke/data_accessor.rb, line 88
88:     def original_data_class
89:       @original_data_class ||= begin
90:         ::ActiveSupport::Deprecation.warn("data_class_name option is deprecated. Use model instead", caller) if config[:data_class_name]
91:         model_name = config[:model] || config[:data_class_name]
92:         model_name && model_name.constantize
93:       end
94:     end
primary_key_attr?(a) click to toggle source

whether a column is bound to the primary_key

    # File lib/netzke/data_accessor.rb, line 97
97:     def primary_key_attr?(a)
98:       data_class && a[:name].to_s == data_class.primary_key
99:     end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.