Class: OgScaffolder::Editor
Instance Method Summary
collapse
#add_decoration, #backtrack_state, #backtrack_state_chain, #decoration, #decoration=, #do_render_chain, #each_decoration, #process_callbacks, #process_callbacks_chain, #remove_decoration, #remove_decoration_if
#backtrack_state, #do_render, #get_property, #lookup_property, #process_callbacks, #properties, #properties=, #session, template, uses_property
Constructor Details
#initialize(domain_object) ⇒ Editor
Returns a new instance of Editor.
97
98
99
100
|
# File 'lib/wee/databases/og/scaffolder.rb', line 97
def initialize(domain_object)
super()
@domain_object = domain_object
end
|
Instance Method Details
102
103
104
105
106
107
108
109
110
111
|
# File 'lib/wee/databases/og/scaffolder.rb', line 102
def render
each_property {|prop|
unless prop.name == 'oid'
render_label(prop)
render_property(prop)
end
}
render_buttons
end
|
#render_bool(prop) ⇒ Object
148
149
150
151
152
|
# File 'lib/wee/databases/og/scaffolder.rb', line 148
def render_bool(prop)
selected = get_value_of(prop) ? true : false
r.select_list([true, false]).labels(["Yes", "No"]).selected(selected).
callback {|choosen| set_value_of(prop, choosen) }
end
|
167
168
169
170
171
172
|
# File 'lib/wee/databases/og/scaffolder.rb', line 167
def render_buttons
r.paragraph
r.submit_button.value('Save').callback(:save)
r.space
r.submit_button.value('Cancel').callback(:cancel)
end
|
#render_date(prop) ⇒ Object
155
156
157
158
159
160
161
162
163
164
165
|
# File 'lib/wee/databases/og/scaffolder.rb', line 155
def render_date(prop)
t = get_value_of(prop) || Time.now
m = Date::MONTHS.invert
months = (1..12).map {|i| m[i].capitalize}
r.select_list((t.year-10 .. t.year+10).to_a).selected(t.year).callback {|year| set_date_of(prop, year, :year) }
r.space
r.select_list((1..12).to_a).labels(months).selected(t.month).callback {|month| set_date_of(prop, month, :month) }
r.space
r.select_list((1..31).to_a).selected(t.day).callback {|day| set_date_of(prop, day, :day) }
end
|
113
114
115
116
117
118
119
120
121
122
|
# File 'lib/wee/databases/og/scaffolder.rb', line 113
def
action =
if @domain_object.oid.nil?
"Create"
else
"Edit"
end
r.h1 "#{ action } #{ @domain_object.class }"
end
|
#render_label(prop) ⇒ Object
174
175
176
177
178
|
# File 'lib/wee/databases/og/scaffolder.rb', line 174
def render_label(prop)
r.paragraph
r.text prop.name.capitalize
r.break
end
|
#render_numeric(prop) ⇒ Object
136
137
138
|
# File 'lib/wee/databases/og/scaffolder.rb', line 136
def render_numeric(prop)
r.text_input.value(get_value_of(prop)).callback(:set_value_of, prop)
end
|
#render_property(prop) ⇒ Object
124
125
126
127
128
129
130
131
132
133
134
|
# File 'lib/wee/databases/og/scaffolder.rb', line 124
def render_property(prop)
if prop.klass.ancestors.include?(Numeric)
render_numeric(prop)
elsif prop.klass.ancestors.include?(String)
render_string(prop)
elsif prop.klass.ancestors.include?(TrueClass)
render_bool(prop)
elsif prop.klass.ancestors.include?(Date)
render_date(prop)
end
end
|
#render_string(prop) ⇒ Object
140
141
142
143
144
145
146
|
# File 'lib/wee/databases/og/scaffolder.rb', line 140
def render_string(prop)
if prop.meta[:ui] == :textarea
r.text_area.callback(:set_value_of, prop).with(get_value_of(prop))
else
r.text_input.value(get_value_of(prop)).callback(:set_value_of, prop)
end
end
|