aurita-gui 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +5 -0
- data/TODO +3 -0
- data/aurita-gui.gemspec +2 -2
- data/lib/aurita-gui.rb +1 -1
- data/lib/aurita-gui/element.rb +28 -14
- data/lib/aurita-gui/form.rb +13 -3
- data/lib/aurita-gui/form/textarea_field.rb +1 -0
- data/lib/aurita-gui/html.rb +3 -3
- data/spec/; +14 -0
- data/spec/element.rb +157 -0
- data/spec/html.rb +39 -0
- metadata +6 -5
- data/test/tc_form.rb +0 -30
- data/test/tc_options.rb +0 -59
- data/test/tc_table.rb +0 -23
data/History.txt
CHANGED
data/TODO
CHANGED
@@ -2,6 +2,9 @@
|
|
2
2
|
- Implement <fieldset>
|
3
3
|
- Implement <optgroup>
|
4
4
|
|
5
|
+
- Implement element.sibling[:dom_id] --> element
|
6
|
+
- Implement XPath1.0 method (parent, sibling, descendant, following ...)
|
7
|
+
|
5
8
|
- Implement field visibility using
|
6
9
|
field.visible = true/false, wrapped in
|
7
10
|
def form.fields=(fields)
|
data/aurita-gui.gemspec
CHANGED
@@ -14,7 +14,7 @@ as stand-alone library in any context (such as rails).
|
|
14
14
|
As there seems to be a lack of ruby form generators, i decided to release this
|
15
15
|
part of Aurita in a single gem with no dependencies.
|
16
16
|
EOF
|
17
|
-
s.version = '0.3.
|
17
|
+
s.version = '0.3.1'
|
18
18
|
s.author = 'Tobias Fuchs'
|
19
19
|
s.email = 'fuchs@atomnode.net'
|
20
20
|
s.date = Time.now
|
@@ -25,7 +25,7 @@ part of Aurita in a single gem with no dependencies.
|
|
25
25
|
'lib/aurita-gui/*',
|
26
26
|
'lib/aurita-gui/form/*',
|
27
27
|
'bin/*',
|
28
|
-
'
|
28
|
+
'spec/*'].to_a
|
29
29
|
|
30
30
|
s.has_rdoc = true
|
31
31
|
s.rdoc_options << '--title' << 'Aurita::GUI' <<
|
data/lib/aurita-gui.rb
CHANGED
data/lib/aurita-gui/element.rb
CHANGED
@@ -46,35 +46,43 @@ module GUI
|
|
46
46
|
|
47
47
|
@@element_count = 0
|
48
48
|
|
49
|
-
attr_accessor :attrib, :
|
49
|
+
attr_accessor :attrib, :content, :parent, :tag, :force_closing_tag
|
50
50
|
|
51
51
|
def initialize(params={}, &block)
|
52
|
+
|
52
53
|
@@element_count += 1
|
53
54
|
@id = @@element_count
|
54
55
|
@parent = params[:parent]
|
55
|
-
@
|
56
|
+
@force_closing_tag = params[:force_closing_tag]
|
57
|
+
params[:tag] = :div if params[:tag].nil?
|
58
|
+
@tag = params[:tag]
|
59
|
+
if [ :div, :label, :button, :textarea ].include? @tag then
|
60
|
+
@force_closing_tag = true
|
61
|
+
end
|
56
62
|
params.delete(:parent)
|
57
63
|
params.delete(:force_closing_tag)
|
58
64
|
|
59
|
-
params[:tag] = :div if params[:tag].nil?
|
60
|
-
|
61
65
|
if block_given? then
|
62
66
|
@content = yield
|
63
67
|
else
|
64
68
|
@content = params[:content]
|
65
|
-
@content = [ @content ] unless @content.kind_of? Array
|
66
69
|
end
|
70
|
+
@content = [ @content ] unless (@content.kind_of? Array or @content.to_s.length == 0)
|
71
|
+
@content ||= []
|
67
72
|
params.delete(:content)
|
68
|
-
@tag = params[:tag]
|
69
73
|
params.delete(:tag)
|
70
74
|
# params[:id] = self.class.to_s.split('::')[-1].downcase + '_' << @@element_count.to_s if params[:id].nil?
|
71
|
-
params[:onclick] << ';' unless params[:onclick].nil? or params[:onclick].include?(';')
|
75
|
+
# params[:onclick] << ';' unless params[:onclick].nil? or params[:onclick].include?(';')
|
72
76
|
|
73
77
|
@attrib = params
|
74
78
|
# @attrib[:id] = @attrib[:id].to_s
|
75
79
|
|
76
80
|
end
|
77
81
|
|
82
|
+
def has_content?
|
83
|
+
(@content.length > 0)
|
84
|
+
end
|
85
|
+
|
78
86
|
# Return DOM id of this element.
|
79
87
|
def dom_id
|
80
88
|
@attrib[:id]
|
@@ -105,6 +113,10 @@ module GUI
|
|
105
113
|
@attrib[meth.to_s.gsub('=','').intern] = value
|
106
114
|
end
|
107
115
|
|
116
|
+
def content=(obj)
|
117
|
+
@content = [ obj ]
|
118
|
+
end
|
119
|
+
|
108
120
|
# Define explicitly so built-in method #type
|
109
121
|
# is not invoked instead
|
110
122
|
def type=(type)
|
@@ -156,18 +168,20 @@ module GUI
|
|
156
168
|
end
|
157
169
|
if !value.nil? then
|
158
170
|
value = value.to_s
|
159
|
-
attrib_string << name.to_s + '="' << value + '"
|
171
|
+
attrib_string << ' ' << name.to_s + '="' << value + '"'
|
160
172
|
end
|
161
173
|
}
|
162
174
|
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
175
|
+
out = ''
|
176
|
+
if @force_closing_tag || content.to_s != '' then
|
177
|
+
out << "<#{@tag}"
|
178
|
+
out << attrib_string if attrib_string.length > 0
|
179
|
+
out << ">#{content}"
|
180
|
+
out << "</#{@tag}>"
|
167
181
|
else
|
168
|
-
|
182
|
+
out = "<#{@tag.to_s}#{attrib_string} />"
|
169
183
|
end
|
170
|
-
|
184
|
+
return out
|
171
185
|
end
|
172
186
|
alias to_s string
|
173
187
|
|
data/lib/aurita-gui/form.rb
CHANGED
@@ -26,7 +26,7 @@ module GUI
|
|
26
26
|
attr_accessor :field
|
27
27
|
|
28
28
|
def initialize(field)
|
29
|
-
label_params = { :for => field.dom_id }
|
29
|
+
label_params = { :for => field.dom_id, :force_closing_tag => true }
|
30
30
|
label_params[:id] = field.dom_id.to_s + '_label'
|
31
31
|
label = field.label
|
32
32
|
@content = [ HTML.label(label_params) { label }, field ]
|
@@ -177,7 +177,7 @@ module GUI
|
|
177
177
|
#
|
178
178
|
class Form < Element
|
179
179
|
|
180
|
-
attr_accessor :method, :target, :action, :fields, :elements, :element_map
|
180
|
+
attr_accessor :method, :target, :action, :fields, :elements, :element_map, :values
|
181
181
|
|
182
182
|
def initialize(params, &block)
|
183
183
|
@action = params[:action]
|
@@ -216,9 +216,17 @@ module GUI
|
|
216
216
|
end
|
217
217
|
|
218
218
|
# Assign / overwrite field element with index form_index.
|
219
|
+
# TODO: FIX ME
|
219
220
|
def []=(index, form_field)
|
220
|
-
@elements[index] = form_field
|
221
221
|
@content = false # Invalidate
|
222
|
+
if !index.kind_of? Numeric
|
223
|
+
@element_map[index,to_s] = form_field
|
224
|
+
@elements.collect { |e|
|
225
|
+
e = form_field if e.name.to_s == index.to_s
|
226
|
+
}
|
227
|
+
else
|
228
|
+
@elements[index] = form_field
|
229
|
+
end
|
222
230
|
end
|
223
231
|
|
224
232
|
# Delete form field with name field_name from
|
@@ -240,6 +248,8 @@ module GUI
|
|
240
248
|
end
|
241
249
|
|
242
250
|
# Add form field element to this form.
|
251
|
+
# TODO: Should overwrite previous field element
|
252
|
+
# with same field name.
|
243
253
|
def add(form_field_element)
|
244
254
|
if !form_field_element.dom_id then
|
245
255
|
form_field_element.dom_id = form_field_element.name.to_s.gsub('.','_')
|
data/lib/aurita-gui/html.rb
CHANGED
@@ -220,9 +220,9 @@ module GUI
|
|
220
220
|
def self.render(meth_name, attrib_hash={}, &block)
|
221
221
|
raise ::Exception.new('Missing attributes for HTML.' << meth_name.inspect) unless attrib_hash
|
222
222
|
attrib_hash[:tag] = meth_name
|
223
|
-
cont = yield if block_given?
|
224
|
-
attrib_hash[:content] = cont
|
225
|
-
Element.new(attrib_hash)
|
223
|
+
# cont = yield if block_given?
|
224
|
+
# attrib_hash[:content] = cont
|
225
|
+
Element.new(attrib_hash, &block)
|
226
226
|
end
|
227
227
|
|
228
228
|
def self.build(&block)
|
data/spec/;
ADDED
data/spec/element.rb
ADDED
@@ -0,0 +1,157 @@
|
|
1
|
+
|
2
|
+
require('rubygems')
|
3
|
+
require('aurita-gui/element')
|
4
|
+
|
5
|
+
include Aurita::GUI
|
6
|
+
|
7
|
+
describe Aurita::GUI::Element, "basic rendering" do
|
8
|
+
before do
|
9
|
+
@e1 = Element.new(:tag => :tagname)
|
10
|
+
@inner = Element.new(:tag => :h2) { 'i am an inner header' }
|
11
|
+
@outer = Element.new(:tag => :p, :class => :outer) { @inner }
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should have a tag attribute" do
|
15
|
+
e = Element.new(:tag => :tagname)
|
16
|
+
e.tag.should == :tagname
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should have :div as default attribute" do
|
20
|
+
e = Element.new()
|
21
|
+
e.tag.should == :div
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should redirect id to a tag attribute (DOM id)" do
|
25
|
+
e = Element.new(:id => :the_dom_id)
|
26
|
+
e.id.should == :the_dom_id
|
27
|
+
e.id = :changed_id
|
28
|
+
e.id.should == :changed_id
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should render to an array automatically if necessary" do
|
32
|
+
e1 = Element.new(:id => :first)
|
33
|
+
e2 = Element.new(:id => :second)
|
34
|
+
|
35
|
+
(e1 << e2).should == [ e1, e2 ]
|
36
|
+
(e1 + e2).should == [ e1, e2 ]
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should be able to render to string" do
|
40
|
+
@e1.to_s.should == '<tagname />'
|
41
|
+
@e1.string.should == '<tagname />'
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should have enclosed content that is an array" do
|
45
|
+
@e1.content.length.should == 0
|
46
|
+
@e1.has_content?().should == false
|
47
|
+
@e1.content.should == []
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should close the tag depending on content" do
|
51
|
+
@e1.content = 'the content'
|
52
|
+
@e1.content.should == [ 'the content' ]
|
53
|
+
@e1.to_s.should == '<tagname>the content</tagname>'
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should not allow self-closing tags in some cases (textarea, label, button ...)" do
|
57
|
+
textarea = Element.new(:tag => :textarea)
|
58
|
+
textarea.to_s.should == '<textarea></textarea>'
|
59
|
+
button = Element.new(:tag => :button, :param => :value)
|
60
|
+
button.to_s.should == '<button param="value"></button>'
|
61
|
+
label = Element.new(:tag => :label, :param => :value)
|
62
|
+
label.to_s.should == '<label param="value"></label>'
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should be possible to force a closing tag" do
|
66
|
+
e = Element.new(:tag => :something, :force_closing_tag => true)
|
67
|
+
e.to_s.should == '<something></something>'
|
68
|
+
e.force_closing_tag = false
|
69
|
+
e.to_s.should == '<something />'
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should offer tag attributes as hash, maintaining keys as provided" do
|
73
|
+
e = Element.new(:foo => 1, :bar => 'barvalue', 'wombat' => 3)
|
74
|
+
e.attrib[:foo].should == 1
|
75
|
+
e.attrib[:bar].should == 'barvalue'
|
76
|
+
e.attrib['wombat'].should == 3
|
77
|
+
end
|
78
|
+
|
79
|
+
it "should render parameters as tag attributes" do
|
80
|
+
e = Element.new(:tag => :foo, :some_param => :the_value)
|
81
|
+
e.to_s.should == '<foo some_param="the_value" />'
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should be possible to retreive original parameter values" do
|
85
|
+
e = Element.new(:tag => :foo, :some_param => :the_value)
|
86
|
+
e.some_param.should == :the_value
|
87
|
+
end
|
88
|
+
|
89
|
+
it "should accept parameter :content" do
|
90
|
+
e = Element.new(:tag => :bar, :content => 'content here', :name => :wombat)
|
91
|
+
e.content.should == ['content here']
|
92
|
+
e.name.should == :wombat
|
93
|
+
e.to_s.should == '<bar name="wombat">content here</bar>'
|
94
|
+
end
|
95
|
+
|
96
|
+
it "should accept content as block, maintaining object identity" do
|
97
|
+
test_obj_identity = 'lorem_ipsum'
|
98
|
+
e = Element.new(:tag => :jada) { test_obj_identity }
|
99
|
+
e.content.should == [ test_obj_identity ]
|
100
|
+
e.tag.should == :jada
|
101
|
+
end
|
102
|
+
|
103
|
+
it "should be possible to add new attributes" do
|
104
|
+
e = Element.new(:tag => :jada) { 'string' }
|
105
|
+
added_value = 'added_value'
|
106
|
+
e.added = added_value
|
107
|
+
e.added.should == added_value
|
108
|
+
end
|
109
|
+
|
110
|
+
it "should accept other element instances as content" do
|
111
|
+
@outer.content.should == [ @inner ]
|
112
|
+
@outer.to_s.should == '<p class="outer"><h2>i am an inner header</h2></p>'
|
113
|
+
end
|
114
|
+
|
115
|
+
it "should maintain an object hierarchy" do
|
116
|
+
@outer.content.first.new_attrib = 23
|
117
|
+
@outer.content.first.new_attrib.should == 23
|
118
|
+
end
|
119
|
+
|
120
|
+
it "should be possible to alter an enclosed element after adding it as content" do
|
121
|
+
@inner.decorated_attrib = 'decorated'
|
122
|
+
@inner.content << ' with decoration'
|
123
|
+
|
124
|
+
@outer.to_s.should == '<p class="outer"><h2 decorated_attrib="decorated">i am an inner header with decoration</h2></p>'
|
125
|
+
|
126
|
+
@inner.content = 'maintaining hierarchies rocks!'
|
127
|
+
|
128
|
+
@outer.to_s.should == '<p class="outer"><h2 decorated_attrib="decorated">maintaining hierarchies rocks!</h2></p>'
|
129
|
+
end
|
130
|
+
|
131
|
+
it "should delegate array operators to @content array" do
|
132
|
+
inner = Element.new(:tag => :h2) { 'i am an inner header' }
|
133
|
+
outer = Element.new(:tag => :p) { inner }
|
134
|
+
outer[0].new_attrib = 23
|
135
|
+
outer[0].new_attrib.should == 23
|
136
|
+
end
|
137
|
+
|
138
|
+
it "should be able to overwrite tag attributes" do
|
139
|
+
e = Element.new(:tag => :div, :the_param => 42)
|
140
|
+
e.the_param.should == 42
|
141
|
+
e.the_param = 23
|
142
|
+
e.the_param.should == 23
|
143
|
+
end
|
144
|
+
|
145
|
+
it "should be possible to add content elements" do
|
146
|
+
e = Element.new(:foo => :bar)
|
147
|
+
ras = 'one'
|
148
|
+
dwa = 'two'
|
149
|
+
tri = 'three'
|
150
|
+
e.content = ras
|
151
|
+
e.content.should == [ ras ]
|
152
|
+
e.content << dwa
|
153
|
+
e.content << tri
|
154
|
+
e.content.should == [ ras, dwa, tri ]
|
155
|
+
end
|
156
|
+
|
157
|
+
end
|
data/spec/html.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
|
2
|
+
require('rubygems')
|
3
|
+
require('aurita-gui/html')
|
4
|
+
|
5
|
+
include Aurita::GUI
|
6
|
+
|
7
|
+
describe Aurita::GUI::HTML, "basic rendering" do
|
8
|
+
before do
|
9
|
+
@e = HTML.build {
|
10
|
+
div(:class => :outer) {
|
11
|
+
h2(:id => :header) { 'Header' } +
|
12
|
+
p(:id => :content) { 'Content' }
|
13
|
+
}
|
14
|
+
}
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should act as factory by setting tag attribute for Element on class method calls" do
|
18
|
+
HTML.p.to_s.should == Element.new(:tag => :p).to_s
|
19
|
+
HTML.p(:class => :auto).to_s.should == Element.new(:tag => :p, :class => :auto).to_s
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should accept a block and pass it to Element as content" do
|
23
|
+
HTML.p { 'string' }.to_s.should == '<p>string</p>'
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should provide a build mechanism that delegates class methods" do
|
27
|
+
@e.to_s = '<div class="outer"><h2 id="header">Header</h2><p id="content">Content</p></div>'
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should still provide an object tree" do
|
31
|
+
@e[0].id.should == :header
|
32
|
+
@e[1].id.should == :content
|
33
|
+
@e[1].content.should == [ 'Content' ]
|
34
|
+
@e[1].content = 'Altered'
|
35
|
+
@e[1].content.should == [ 'Altered' ]
|
36
|
+
@e.to_s.should == '<div class="outer"><h2 id="header">Header</h2><p id="content">Altered</p></div>'
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aurita-gui
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tobias Fuchs
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-01-
|
12
|
+
date: 2009-01-15 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -24,6 +24,7 @@ extra_rdoc_files: []
|
|
24
24
|
files:
|
25
25
|
- fieldtest.rb
|
26
26
|
- cheatsheet.rb
|
27
|
+
- spec
|
27
28
|
- History.txt
|
28
29
|
- lib
|
29
30
|
- aurita-gui.gemspec
|
@@ -56,9 +57,9 @@ files:
|
|
56
57
|
- lib/aurita-gui/form/text_field.rb
|
57
58
|
- lib/aurita-gui/form/input_field.rb
|
58
59
|
- lib/aurita-gui/form/date_field.rb
|
59
|
-
-
|
60
|
-
-
|
61
|
-
-
|
60
|
+
- spec/;
|
61
|
+
- spec/html.rb
|
62
|
+
- spec/element.rb
|
62
63
|
has_rdoc: true
|
63
64
|
homepage: http://aurita.wortundform.de/
|
64
65
|
post_install_message:
|
data/test/tc_form.rb
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
|
2
|
-
require('aurita-gui/form')
|
3
|
-
|
4
|
-
include Aurita::GUI
|
5
|
-
|
6
|
-
form = Form.new(:method => :post, :action => '/where/to/send', :onsubmit => "alert('submitting');")
|
7
|
-
|
8
|
-
input1 = Input_Field.new(:name => :description, :label => 'Description',
|
9
|
-
:class => :custom_input_field_class,
|
10
|
-
:value => 'first input text'),
|
11
|
-
input2 = Input_Field.new(:name => :custom, :label => 'Custom ID',
|
12
|
-
:id => :custom_id_value,
|
13
|
-
:value => 'second input text'),
|
14
|
-
select = Select_Field.new(:name => :category, :label => 'Select category',
|
15
|
-
:disabled => true,
|
16
|
-
:value => :value_b, # Value to be selected
|
17
|
-
:options => { :value_a => :key_a, :value_b => :key_b })
|
18
|
-
form[1].readonly!
|
19
|
-
form.each { |e| e.attrib[:class] = [ e.attrib[:class], :aurita ] }
|
20
|
-
form.each { |e| e.attrib[:onfocus] = "alert('focussed #{e.id}');" }
|
21
|
-
|
22
|
-
puts HTML.h1 { 'Single element' }
|
23
|
-
puts form.element_map[:description]
|
24
|
-
|
25
|
-
puts HTML.h1 { 'Editable form, one element disabled' }
|
26
|
-
puts form
|
27
|
-
|
28
|
-
puts HTML.h1 { 'Readonly form' }
|
29
|
-
form.readonly!
|
30
|
-
puts form
|
data/test/tc_options.rb
DELETED
@@ -1,59 +0,0 @@
|
|
1
|
-
|
2
|
-
require('rubygems')
|
3
|
-
require('aurita-gui')
|
4
|
-
|
5
|
-
include Aurita::GUI
|
6
|
-
|
7
|
-
# If there are no option labels set,
|
8
|
-
# option values will be displayed directly:
|
9
|
-
s1 = Select_Field.new(:name => :test,
|
10
|
-
:label => 'Priority',
|
11
|
-
:options => (1..10))
|
12
|
-
|
13
|
-
# Set option values and labels at once using a hash:
|
14
|
-
s1 = Select_Field.new(:name => :test,
|
15
|
-
:label => 'Pick one',
|
16
|
-
:options => { 1 => 'eins', 2 => 'zwei', 3 => 'drei' })
|
17
|
-
|
18
|
-
# Set option values as array, labels as hash:
|
19
|
-
s1 = Select_Field.new(:name => :test,
|
20
|
-
:label => { 'Pick one' => [ 'foo', 'bar', 'wombat' ] },
|
21
|
-
:options => [ 1,2,3 ])
|
22
|
-
# Same as
|
23
|
-
puts '----------------------'
|
24
|
-
s1 = Select_Field.new(:name => :test,
|
25
|
-
:label => 'Pick one',
|
26
|
-
:option_labels => [ 'foo', 'bar', 'wombat' ] ,
|
27
|
-
:options => [ 1..3 ] )
|
28
|
-
puts '----------------------'
|
29
|
-
puts s1
|
30
|
-
# Ranges are ok, too:
|
31
|
-
s1 = Select_Field.new(:name => :test,
|
32
|
-
:label => 'Pick one',
|
33
|
-
:option_labels => [ 'foo', 'bar', 'wombat' ],
|
34
|
-
:options => (1..3) )
|
35
|
-
|
36
|
-
# Change option labels using an array.
|
37
|
-
# Option labels will be assigned in order,
|
38
|
-
# so options[0] has label[0] etc.
|
39
|
-
s1.option_labels = [ 'first', 'second', 'third' ]
|
40
|
-
|
41
|
-
# Change option labels using a hash.
|
42
|
-
# Compared to using an array, this is useful
|
43
|
-
# in case you don't know the order of option
|
44
|
-
# values.
|
45
|
-
s1.option_labels = { 1 => 'ras', 2 => 'dwa', 3 => 'tri' }
|
46
|
-
|
47
|
-
# Overwriting the labels field does the same,
|
48
|
-
# but this way, you also can change the
|
49
|
-
# field label:
|
50
|
-
s1.label = { 'Select one' => [ 'foo', 'bar', 'wombat' ] }
|
51
|
-
# Or
|
52
|
-
s1.label = { 'Select one' => { 1 => 'foo', 2 => 'bar', 3 => 'wombat' } }
|
53
|
-
|
54
|
-
# Of yourse you can replace all option values
|
55
|
-
# and their labels at once by overwriting
|
56
|
-
# the options field:
|
57
|
-
s1.label = 'Choose'
|
58
|
-
s1.options = { 1 => :foo, 2 => :bar, 3 => :wombat }
|
59
|
-
|
data/test/tc_table.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
|
2
|
-
require 'aurita-gui/table'
|
3
|
-
|
4
|
-
|
5
|
-
include Aurita::GUI
|
6
|
-
|
7
|
-
t = Table.new(:headers => ['user', 'phone', 'email'],
|
8
|
-
:options => { :class => 'css_class', :id => 'test_table', :border => 1, :cellpadding => 3 })
|
9
|
-
|
10
|
-
t.add_row([ 'a','b','c' ])
|
11
|
-
t.add_row([ 'd','e','f','g' ])
|
12
|
-
|
13
|
-
t[0][0].value = 'foo'
|
14
|
-
t[0][0].colspan = 2
|
15
|
-
t[1][0].onclick = 'test();'
|
16
|
-
t[0][1] = HTML.a(:href => 'http://google.com') { 'google' }
|
17
|
-
|
18
|
-
t[0][1].value.href = 'other'
|
19
|
-
t[0][1].value.content = 'clickme'
|
20
|
-
|
21
|
-
t[0].class = 'highlighted'
|
22
|
-
|
23
|
-
puts t
|