Class: BrainDamage::Field

Inherits:
Templateable::Base show all
Defined in:
lib/generators/brain_damage/lib/field.rb

Instance Attribute Summary collapse

Attributes inherited from Templateable::Base

#inner_html, #options, #template_file

Instance Method Summary collapse

Methods inherited from Templateable::Base

#indent, #method_missing, #render, #render_erb_file, #render_erb_string, #render_template_file

Constructor Details

#initialize(args = {}) ⇒ Field

Returns a new instance of Field.



16
17
18
19
20
21
22
23
24
# File 'lib/generators/brain_damage/lib/field.rb', line 16

def initialize(args = {})
  @displays = {}
  @inputs = {}
  @labels = {}

  @name = args[:name]
  @resource = args[:resource]
  @invisible = false
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class BrainDamage::Templateable::Base

Instance Attribute Details

#attr_white_listObject



52
53
54
55
# File 'lib/generators/brain_damage/lib/field.rb', line 52

def attr_white_list
  @field_white_list = FieldWhiteList.new(self, @attr_white_list) unless @field_white_list
  @field_white_list.list
end

#generated_attributeObject

Returns the value of attribute generated_attribute.



14
15
16
# File 'lib/generators/brain_damage/lib/field.rb', line 14

def generated_attribute
  @generated_attribute
end

#nameObject (readonly)

Returns the value of attribute name.



9
10
11
# File 'lib/generators/brain_damage/lib/field.rb', line 9

def name
  @name
end

#relationObject

Returns the value of attribute relation.



10
11
12
# File 'lib/generators/brain_damage/lib/field.rb', line 10

def relation
  @relation
end

#resourceObject (readonly)

Returns the value of attribute resource.



11
12
13
# File 'lib/generators/brain_damage/lib/field.rb', line 11

def resource
  @resource
end

Instance Method Details

#add_display(identifier, options) ⇒ Object



91
92
93
94
95
96
97
# File 'lib/generators/brain_damage/lib/field.rb', line 91

def add_display(identifier, options)
  if options.nil?
    @displays[identifier] = false
  else
    @displays[identifier] = View::Factory.create :display, self, options
  end
end

#add_input(identifier, options) ⇒ Object



99
100
101
102
103
104
105
# File 'lib/generators/brain_damage/lib/field.rb', line 99

def add_input(identifier, options)
  if options.nil?
    @inputs[identifier] = false
  else
    @inputs[identifier] = View::Factory.create :input, self, options
  end
end

#add_label(identifier, options) ⇒ Object



107
108
109
110
111
112
113
# File 'lib/generators/brain_damage/lib/field.rb', line 107

def add_label(identifier, options)
  if options.nil?
    @labels[identifier] = false
  else
    @labels[identifier] = View::Factory.create :label, self, options
  end
end

#display(identifier = :default) ⇒ Object



147
148
149
150
151
152
153
# File 'lib/generators/brain_damage/lib/field.rb', line 147

def display(identifier = :default)
  if @displays.has_key? identifier
    @displays[identifier]
  elsif identifier != :default
    display :default
  end
end

#display=(options) ⇒ Object



61
62
63
# File 'lib/generators/brain_damage/lib/field.rb', line 61

def display=(options)
  add_display :default, options
end

#displayable?(identifier = :default) ⇒ Boolean

Returns:

  • (Boolean)


86
87
88
89
# File 'lib/generators/brain_damage/lib/field.rb', line 86

def displayable?(identifier = :default)
  display = display identifier
  display and display.show?
end

#field_typeObject



155
156
157
158
159
160
161
# File 'lib/generators/brain_damage/lib/field.rb', line 155

def field_type
  if generated_attribute
    generated_attribute.field_type
  else
    :text_field
  end
end

#foreign?Boolean

Returns:

  • (Boolean)


43
44
45
# File 'lib/generators/brain_damage/lib/field.rb', line 43

def foreign?
  @relation.is_a? Relation
end

#has_display?Boolean

Returns:

  • (Boolean)


77
78
79
# File 'lib/generators/brain_damage/lib/field.rb', line 77

def has_display?
  @displays.values.reject(&:nil?).any?
end

#has_input?Boolean

Returns:

  • (Boolean)


73
74
75
# File 'lib/generators/brain_damage/lib/field.rb', line 73

def has_input?
  @inputs.values.reject(&:nil?).any?
end

#inline_editable(options = {}) ⇒ Object



57
58
59
# File 'lib/generators/brain_damage/lib/field.rb', line 57

def inline_editable(options = {})
  add_display :inline_editable, options
end

#input(identifier = :default) ⇒ Object



139
140
141
142
143
144
145
# File 'lib/generators/brain_damage/lib/field.rb', line 139

def input(identifier = :default)
  if @inputs.has_key? identifier
    @inputs[identifier]
  elsif identifier != :default
    input :default
  end
end

#input=(options) ⇒ Object



65
66
67
# File 'lib/generators/brain_damage/lib/field.rb', line 65

def input=(options)
  add_input :default, options
end

#inputable?(identifier = :default) ⇒ Boolean

Returns:

  • (Boolean)


81
82
83
84
# File 'lib/generators/brain_damage/lib/field.rb', line 81

def inputable?(identifier = :default)
  input = input identifier
  input and input.show?
end

#invisibleObject



26
27
28
29
30
31
# File 'lib/generators/brain_damage/lib/field.rb', line 26

def invisible
  self.display = nil
  self.input = nil
  self.attr_white_list = ''
  @invisible = true
end

#invisible?Boolean

Returns:

  • (Boolean)


33
34
35
# File 'lib/generators/brain_damage/lib/field.rb', line 33

def invisible?
  @invisible
end

#label(scope = :default) ⇒ Object



127
128
129
130
131
132
133
134
135
136
137
# File 'lib/generators/brain_damage/lib/field.rb', line 127

def label(scope = :default)
  if @labels[scope]
    return @labels[scope]

  elsif scope == :default
    self.label = :default

  end

  label :default
end

#label=(options) ⇒ Object



69
70
71
# File 'lib/generators/brain_damage/lib/field.rb', line 69

def label=(options)
  add_label :default, options
end

#map_display(identifier, *targets) ⇒ Object



115
116
117
118
119
# File 'lib/generators/brain_damage/lib/field.rb', line 115

def map_display(identifier, *targets)
  targets.each do |target|
    @displays[target] = @displays[identifier]
  end
end

#map_input(identifier, *targets) ⇒ Object



121
122
123
124
125
# File 'lib/generators/brain_damage/lib/field.rb', line 121

def map_input(identifier, *targets)
  targets.each do |target|
    @inputs[target] = @inputs[identifier]
  end
end

#model_linesObject



47
48
49
50
# File 'lib/generators/brain_damage/lib/field.rb', line 47

def model_lines
  return @relation.model_lines if @relation
  []
end