Class: OgScaffolder
- Inherits:
-
Wee::Component
show all
- Defined in:
- lib/wee/databases/og/scaffolder.rb,
lib/wee/databases/og/old_scaffolder.rb
Overview
This is a Rails-like scaffolder for use with Og (navel.gr/nitro) domain objects.
Defined Under Namespace
Classes: 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_class) ⇒ OgScaffolder
Returns a new instance of OgScaffolder.
5
6
7
8
9
|
# File 'lib/wee/databases/og/scaffolder.rb', line 5
def initialize(domain_class)
super()
@domain_class = domain_class
@props = @domain_class.__props.reject {|a| a.name == 'oid'}
end
|
Instance Method Details
69
70
71
|
# File 'lib/wee/databases/og/scaffolder.rb', line 69
def add
call editor_for(@domain_class.new)
end
|
29
30
31
32
|
# File 'lib/wee/databases/og/old_scaffolder.rb', line 29
def cancel
@objs.delete(@edit) if @edit and @edit.oid.nil?
@edit = nil
end
|
#confirm_delete(confirmed, obj) ⇒ Object
13
14
15
16
17
18
|
# File 'lib/wee/databases/og/old_scaffolder.rb', line 13
def confirm_delete(confirmed, obj)
if confirmed
@objs.delete(obj)
obj.delete!
end
end
|
#confirm_destroy(obj, confirmed) ⇒ Object
78
79
80
|
# File 'lib/wee/databases/og/scaffolder.rb', line 78
def confirm_destroy(obj, confirmed)
obj.delete! if confirmed
end
|
38
39
40
|
# File 'lib/wee/databases/og/old_scaffolder.rb', line 38
def create
@objs << (@edit = @domain_class.new)
end
|
#delete(obj) ⇒ Object
9
10
11
|
# File 'lib/wee/databases/og/old_scaffolder.rb', line 9
def delete(obj)
call Wee::MessageBox.new('Really delete?'), :confirm_delete, obj
end
|
#destroy(obj) ⇒ Object
73
74
75
76
|
# File 'lib/wee/databases/og/scaffolder.rb', line 73
def destroy(obj)
call Wee::MessageBox.new('Do you really want to destroy the object?'),
:confirm_destroy, obj
end
|
#domain_objects ⇒ Object
82
83
84
|
# File 'lib/wee/databases/og/scaffolder.rb', line 82
def domain_objects
@domain_class.all || []
end
|
#edit(obj) ⇒ Object
65
66
67
|
# File 'lib/wee/databases/og/scaffolder.rb', line 65
def edit(obj)
call editor_for(obj)
end
|
#editor_class ⇒ Object
86
87
88
|
# File 'lib/wee/databases/og/scaffolder.rb', line 86
def editor_class
Editor
end
|
#editor_for(obj) ⇒ Object
90
91
92
|
# File 'lib/wee/databases/og/scaffolder.rb', line 90
def editor_for(obj)
editor_class.new(obj).add_decoration(Wee::FormDecoration.new)
end
|
34
35
36
|
# File 'lib/wee/databases/og/old_scaffolder.rb', line 34
def refresh
@objs = @domain_class.all || []
end
|
11
12
13
14
15
16
17
18
19
20
|
# File 'lib/wee/databases/og/scaffolder.rb', line 11
def render
r.h1 "List #{ @domain_class }"
r.paragraph
r.table.border(1).with {
render_body
}
r.paragraph
r.anchor.callback(:add).with("Add new #{ @domain_class }")
end
|
#render_action(obj) ⇒ Object
53
54
55
56
57
58
59
|
# File 'lib/wee/databases/og/scaffolder.rb', line 53
def render_action(obj)
r.table_data.with {
r.anchor.callback(:edit, obj).with("Edit")
r.space
r.anchor.callback(:destroy, obj).with("Destroy")
}
end
|
31
32
33
34
|
# File 'lib/wee/databases/og/scaffolder.rb', line 31
def
r.paragraph
r..with { r.space(2) } end
|
#render_body ⇒ Object
42
43
44
|
# File 'lib/wee/databases/og/scaffolder.rb', line 42
def render_body
domain_objects.each {|obj| render_object(obj) }
end
|
22
23
24
25
26
27
28
29
|
# File 'lib/wee/databases/og/scaffolder.rb', line 22
def
r.table_row.with {
@props.each {|prop|
(prop)
}
}
end
|
#render_object(obj) ⇒ Object
46
47
48
49
50
51
|
# File 'lib/wee/databases/og/scaffolder.rb', line 46
def render_object(obj)
r.table_row {
@props.each {|prop| render_property(obj, prop) }
render_action(obj)
}
end
|
#render_property(obj, prop) ⇒ Object
61
62
63
|
# File 'lib/wee/databases/og/scaffolder.rb', line 61
def render_property(obj, prop)
r.table_data(obj.send(prop.name).to_s)
end
|
36
37
38
39
40
|
# File 'lib/wee/databases/og/scaffolder.rb', line 36
def (prop)
r..with {
r.bold(prop.name.to_s.capitalize)
}
end
|
#save(obj) ⇒ Object
24
25
26
27
|
# File 'lib/wee/databases/og/old_scaffolder.rb', line 24
def save(obj)
obj.save!
@edit = nil
end
|