RubyApp 0.6.39 → 0.6.40

Sign up to get free protection for your applications and to get access to all the features.
Files changed (27) hide show
  1. data/lib/ruby_app/element.rb +43 -3
  2. data/lib/ruby_app/elements/mobile/default/features/lists_page.css.haml +0 -2
  3. data/lib/ruby_app/elements/mobile/default/features/lists_page.js.haml +0 -2
  4. data/lib/ruby_app/elements/mobile/default/features/lists_page.rb +16 -5
  5. data/lib/ruby_app/elements/mobile/document.html.haml +16 -13
  6. data/lib/ruby_app/elements/mobile/document.js.haml +17 -0
  7. data/lib/ruby_app/elements/mobile/input.html.haml +1 -1
  8. data/lib/ruby_app/elements/mobile/input.js.haml +2 -1
  9. data/lib/ruby_app/elements/mobile/input.rb +1 -1
  10. data/lib/ruby_app/elements/mobile/inputs/date_input.rb +1 -1
  11. data/lib/ruby_app/elements/mobile/inputs/email_input.rb +1 -1
  12. data/lib/ruby_app/elements/mobile/inputs/search_input.rb +27 -0
  13. data/lib/ruby_app/elements/mobile/inputs/toggle_input.html.haml +2 -2
  14. data/lib/ruby_app/elements/mobile/inputs/toggle_input.rb +1 -1
  15. data/lib/ruby_app/elements/mobile/list.css.haml +3 -9
  16. data/lib/ruby_app/elements/mobile/list.html.haml +1 -1
  17. data/lib/ruby_app/elements/mobile/list.js.haml +14 -6
  18. data/lib/ruby_app/elements/mobile/list.rb +26 -0
  19. data/lib/ruby_app/elements/mobile/list_item.js.haml +9 -0
  20. data/lib/ruby_app/elements/mobile/list_split_item.css.haml +9 -0
  21. data/lib/ruby_app/elements/mobile/list_split_item.html.haml +1 -1
  22. data/lib/ruby_app/elements/mobile/list_split_item.js.haml +13 -0
  23. data/lib/ruby_app/scripts/elements/lists.rb +17 -7
  24. data/lib/ruby_app/version.rb +1 -1
  25. data/ruby_app.sublime-project +8 -0
  26. data/ruby_app.sublime-workspace +225 -0
  27. metadata +10 -4
@@ -119,6 +119,11 @@ module RubyApp
119
119
  self.execute("RubyApp.updateValue(#{_selector.to_json}, #{value.to_json}, #{change.to_json});")
120
120
  end
121
121
 
122
+ def update_search(text, value, change = true)
123
+ _selector = ".ui-page-active form.ui-listview-filter input[placeholder='#{text}']"
124
+ self.execute("RubyApp.updateValue(#{_selector.to_json}, #{value.to_json}, #{change.to_json});")
125
+ end
126
+
122
127
  def update_input(text, value, change = true)
123
128
  self.update_value_for("label:contains('#{text}')", value, change)
124
129
  end
@@ -179,9 +184,24 @@ module RubyApp
179
184
  self.execute("RubyApp.assertNotExists(#{_selector.to_json});")
180
185
  end
181
186
 
182
- def assert_exists_input(text, value = nil)
183
- self.assert_exists_selector_for("label:contains('#{text}')") unless value
184
- self.assert_exists_selector_value_for("label:contains('#{text}')", value) if value
187
+ def assert_exists_selector_value(selector)
188
+ _selector = ".ui-page-active #{selector}"
189
+ self.execute("RubyApp.assertExistsValue(#{_selector.to_json}, #{value.to_json});")
190
+ end
191
+
192
+ def assert_not_exists_selector_value(selector)
193
+ _selector = ".ui-page-active #{selector}"
194
+ self.execute("RubyApp.assertNotExistsValue(#{_selector.to_json}, #{value.to_json});")
195
+ end
196
+
197
+ def assert_exists_search(text, value = nil)
198
+ self.assert_exists_selector("form.ui-listview-filter input[placeholder='#{text}']") unless value
199
+ self.assert_exists_selector_value("form.ui-listview-filter input[placeholder='#{text}']", value) if value
200
+ end
201
+
202
+ def assert_not_exists_search(text, value = nil)
203
+ self.assert_not_exists_selector("form.ui-listview-filter input[placeholder='#{text}']") unless value
204
+ self.assert_not_exists_selector_value("form.ui-listview-filter input[placeholder='#{text}']", value) if value
185
205
  end
186
206
 
187
207
  def assert_exists_selector_for(selector)
@@ -189,11 +209,31 @@ module RubyApp
189
209
  self.execute("RubyApp.assertExistsFor(#{_selector.to_json});")
190
210
  end
191
211
 
212
+ def assert_not_exists_selector_for(selector)
213
+ _selector = ".ui-page-active #{selector}"
214
+ self.execute("RubyApp.assertNotExistsFor(#{_selector.to_json});")
215
+ end
216
+
192
217
  def assert_exists_selector_value_for(selector, value)
193
218
  _selector = ".ui-page-active #{selector}"
194
219
  self.execute("RubyApp.assertExistsValueFor(#{_selector.to_json}, #{value.to_json});")
195
220
  end
196
221
 
222
+ def assert_not_exists_selector_value_for(selector, value)
223
+ _selector = ".ui-page-active #{selector}"
224
+ self.execute("RubyApp.assertNotExistsValueFor(#{_selector.to_json}, #{value.to_json});")
225
+ end
226
+
227
+ def assert_exists_input(text, value = nil)
228
+ self.assert_exists_selector_for("label:contains('#{text}')") unless value
229
+ self.assert_exists_selector_value_for("label:contains('#{text}')", value) if value
230
+ end
231
+
232
+ def assert_not_exists_input(text, value = nil)
233
+ self.assert_not_exists_selector_for("label:contains('#{text}')") unless value
234
+ self.assert_not_exists_selector_value_for("label:contains('#{text}')", value) if value
235
+ end
236
+
197
237
  def assert(name, expression = nil)
198
238
  self.execute("RubyApp.assert(#{name.to_json}, #{(expression ? expression : yield).to_json});")
199
239
  end
@@ -1,6 +1,4 @@
1
1
  = RubyApp::Elements::Mobile::Dialogs::AcknowledgementDialog.render(:css)
2
2
  = RubyApp::Elements::Mobile::List.render(:css)
3
- = RubyApp::Elements::Mobile::List::ListDivider.render(:css)
4
- = RubyApp::Elements::Mobile::List::ListSplitItem.render(:css)
5
3
  = RubyApp::Elements::Mobile::Navigation::BackButton.render(:css)
6
4
  = yield
@@ -1,6 +1,4 @@
1
1
  = RubyApp::Elements::Mobile::Dialogs::AcknowledgementDialog.render(:js)
2
2
  = RubyApp::Elements::Mobile::List.render(:js)
3
- = RubyApp::Elements::Mobile::List::ListDivider.render(:js)
4
- = RubyApp::Elements::Mobile::List::ListSplitItem.render(:js)
5
3
  = RubyApp::Elements::Mobile::Navigation::BackButton.render(:js)
6
4
  = yield
@@ -22,18 +22,29 @@ module RubyApp
22
22
  @back_button = RubyApp::Elements::Mobile::Navigation::BackButton.new
23
23
 
24
24
  @list = RubyApp::Elements::Mobile::List.new
25
- @list.attributes.merge!('data-inset' => 'true')
25
+ @list.attributes.merge!('data-filter' => 'true',
26
+ 'data-filter-placeholder' => 'search')
27
+ @list.search_value = 'default'
26
28
  @list.items += [ RubyApp::Elements::Mobile::List::ListDivider.new('List') ]
27
29
  @list.items += [ 'Item 01',
28
30
  'Item 02',
29
- 'Item 03',
30
- 'Item 04',
31
- 'Item 05' ].collect { |item| RubyApp::Elements::Mobile::List::ListSplitItem.new(item) }
31
+ 'Item 03' ].collect { |item| RubyApp::Elements::Mobile::List::ListItem.new(item) }
32
32
 
33
- item = RubyApp::Elements::Mobile::List::ListSplitItem.new('Item 06')
33
+ item = RubyApp::Elements::Mobile::List::ListItem.new('Item 04')
34
34
  item.attributes.merge!('disabled' => true)
35
35
  @list.items += [ item ]
36
36
 
37
+ @list.items += [ 'Item 05',
38
+ 'Item 06',
39
+ 'Item 07' ].collect { |item| RubyApp::Elements::Mobile::List::ListSplitItem.new(item) }
40
+
41
+ item = RubyApp::Elements::Mobile::List::ListSplitItem.new('Item 08')
42
+ item.attributes.merge!('disabled' => true)
43
+ @list.items += [ item ]
44
+
45
+ @list.searched do |element, event|
46
+ RubyApp::Elements::Mobile::Dialog.show(event, RubyApp::Elements::Mobile::Dialogs::AcknowledgementDialog.new('List', "You input #{event.value}."))
47
+ end
37
48
  @list.item_clicked do |element, event|
38
49
  RubyApp::Elements::Mobile::Dialog.show(event, RubyApp::Elements::Mobile::Dialogs::AcknowledgementDialog.new('List', "You clicked the item #{event.item.item}."))
39
50
  end
@@ -4,23 +4,26 @@
4
4
  %html{self.attributes}
5
5
  %head
6
6
  - self.metadata.each do |name, value|
7
- %meta{:name => name,
8
- :content => value}
7
+ %meta{'name' => name,
8
+ 'content' => value}
9
9
  - self.links.each do |name, value|
10
- %link{:rel => name,
11
- :href => value}
10
+ %link{'rel' => name,
11
+ 'href' => value}
12
12
  - self.stylesheets.each do |stylesheet|
13
- %link{:rel => 'stylesheet',
14
- :href => stylesheet}
15
- %link{:rel => 'stylesheet',
16
- :href => "/#{RubyApp::Language.locale.code}/document.css"}
13
+ %link{'rel' => 'stylesheet',
14
+ 'href' => stylesheet}
15
+ %link{'rel' => 'stylesheet',
16
+ 'href' => "/#{RubyApp::Language.locale.code}/document.css"}
17
17
  - self.scripts.each do |script|
18
- %script{:src => script}
19
- %script{:src => "/#{RubyApp::Language.locale.code}/document.js"}
18
+ %script{'src' => script}
19
+ %script{'src' => "/#{RubyApp::Language.locale.code}/document.js"}
20
20
 
21
- %meta{:name => :session, :content => RubyApp::Session.session_id}
22
- %meta{:name => :locale, :content => RubyApp::Language.locale.code}
23
- %meta{:name => :error_message, :content => RubyApp::Elements::Mobile::Document.translate.error_message}
21
+ %meta{'name' => 'session',
22
+ 'content' => RubyApp::Session.session_id}
23
+ %meta{'name' => 'locale',
24
+ 'content' => RubyApp::Language.locale.code}
25
+ %meta{'name' => 'error_message',
26
+ 'content' => RubyApp::Elements::Mobile::Document.translate.error_message}
24
27
 
25
28
  %body
26
29
  - self.pages.reverse.each do |page|
@@ -183,15 +183,32 @@
183
183
  this.assertNotExists = function(selector) {
184
184
  RubyApp.assert('selector=' + selector, $(selector).length <= 0);
185
185
  },
186
+ this.assertExistsValue = function(selector, value) {
187
+ var _value = $(selector).val();
188
+ RubyApp.assert('selector=' + selector + ', value=' + value, _value == value);
189
+ },
190
+ this.assertNotExistsValue = function(selector, value) {
191
+ var _value = $(selector).val();
192
+ RubyApp.assert('selector=' + selector + ', value=' + value, _value != value);
193
+ },
186
194
  this.assertExistsFor = function(selector) {
187
195
  var _for = $(selector).attr('for');
188
196
  RubyApp.assert('selector=' + selector + ', for=' + _for, $('#' + _for).length > 0);
189
197
  },
198
+ this.assertNotExistsFor = function(selector) {
199
+ var _for = $(selector).attr('for');
200
+ RubyApp.assert('selector=' + selector + ', for=' + _for, $('#' + _for).length <= 0);
201
+ },
190
202
  this.assertExistsValueFor = function(selector, value) {
191
203
  var _for = $(selector).attr('for');
192
204
  var _value = $('#' + _for).val();
193
205
  RubyApp.assert('selector=' + selector + ', for=' + _for + ', value=' + value, _value == value);
194
206
  },
207
+ this.assertNotExistsValueFor = function(selector, value) {
208
+ var _for = $(selector).attr('for');
209
+ var _value = $('#' + _for).val();
210
+ RubyApp.assert('selector=' + selector + ', for=' + _for + ', value=' + value, _value != value);
211
+ },
195
212
  this.assert = function(name, value) {
196
213
  RubyApp.sendEvent({_class:'RubyApp::Element::AssertedEvent', source:$('html').attr('id'), name:name, value:eval(value)});
197
214
  },
@@ -1,3 +1,3 @@
1
1
  /
2
2
  #{__FILE__}
3
- %input{self.attributes.merge(:value => self.value)}
3
+ %input{self.attributes.merge('value' => self.value)}
@@ -3,7 +3,8 @@
3
3
  $(document).ready( function() {
4
4
  $(document).on('change', 'input', function(event) {
5
5
  event.preventDefault();
6
- RubyApp.sendEvent({_class:'RubyApp::Elements::Mobile::Input::ChangedEvent', source:$(this).attr('id'), value:$(this).val()});
6
+ if ($(this).attr('id'))
7
+ RubyApp.sendEvent({_class:'RubyApp::Elements::Mobile::Input::ChangedEvent', source:$(this).attr('id'), value:$(this).val()});
7
8
  });
8
9
  });
9
10
  = yield
@@ -36,7 +36,7 @@ module RubyApp
36
36
 
37
37
  def initialize
38
38
  super
39
- self.attributes.merge!(:type => :text)
39
+ self.attributes.merge!('type' => 'text')
40
40
 
41
41
  @value = nil
42
42
 
@@ -13,7 +13,7 @@ module RubyApp
13
13
 
14
14
  def initialize
15
15
  super
16
- self.attributes.merge!(:type => :date)
16
+ self.attributes.merge!('type' => 'date')
17
17
  end
18
18
 
19
19
  end
@@ -13,7 +13,7 @@ module RubyApp
13
13
 
14
14
  def initialize
15
15
  super
16
- self.attributes.merge!(:type => :email)
16
+ self.attributes.merge!('type' => 'email')
17
17
  end
18
18
 
19
19
  end
@@ -0,0 +1,27 @@
1
+ module RubyApp
2
+
3
+ module Elements
4
+
5
+ module Mobile
6
+
7
+ module Inputs
8
+ require 'ruby_app/elements/mobile/input'
9
+
10
+ class SearchInput < RubyApp::Elements::Mobile::Input
11
+
12
+ template_path(:all, File.dirname(__FILE__))
13
+
14
+ def initialize
15
+ super
16
+ self.attributes.merge!('type' => 'search')
17
+ end
18
+
19
+ end
20
+
21
+ end
22
+
23
+ end
24
+
25
+ end
26
+
27
+ end
@@ -1,7 +1,7 @@
1
1
  /
2
2
  #{__FILE__}
3
3
  %select{self.attributes}
4
- %option{:value => 'false', :selected => self.value == false}
4
+ %option{'value' => 'false', 'selected' => self.value == false}
5
5
  = yield(:off) || RubyApp::Elements::Mobile::Inputs::ToggleInput.translate._off
6
- %option{:value => 'true', :selected => self.value == true}
6
+ %option{'value' => 'true', 'selected' => self.value == true}
7
7
  = yield(:on) || RubyApp::Elements::Mobile::Inputs::ToggleInput.translate._on
@@ -24,7 +24,7 @@ module RubyApp
24
24
 
25
25
  def initialize
26
26
  super
27
- self.attributes.delete(:type)
27
+ self.attributes.delete('type')
28
28
  self.attributes.merge!('data-role' => 'slider')
29
29
 
30
30
  @value = false
@@ -1,10 +1,4 @@
1
- :sass
2
- /* #{__FILE__}
3
- ul.list
4
- li.item
5
- a.link
6
- span.ui-btn-inner
7
- span.ui-btn.ui-btn-icon-notext.ui-btn-corner-all.ui-shadow
8
- margin-left: 14px
9
- margin-top: -14px
1
+ = RubyApp::Elements::Mobile::List::ListItem.render(:css)
2
+ = RubyApp::Elements::Mobile::List::ListDivider.render(:css)
3
+ = RubyApp::Elements::Mobile::List::ListSplitItem.render(:css)
10
4
  = yield
@@ -1,5 +1,5 @@
1
1
  /
2
2
  #{__FILE__}
3
- %ul.list{self.attributes}
3
+ %ul.list{self.attributes.merge('data-search-value' => self.search_value)}
4
4
  - self.items.each do |item|
5
5
  = item.render(:html)
@@ -1,13 +1,21 @@
1
1
  :plain
2
2
  // #{__FILE__}
3
- $(document).ready( function() {
4
- $(document).on('click', 'ul.list > li.item a.item', function(event) {
5
- event.preventDefault();
6
- RubyApp.sendEvent({_class:'RubyApp::Elements::Mobile::List::ItemClickedEvent', source:$(this).parents('ul.list').attr('id'), item:$(this).parents('li.item').attr('id')});
3
+ $(document).on('pageinit', function() {
4
+ $('ul.list').listview('option', 'filterCallback', function() {});
5
+ $('form.ui-listview-filter input').each( function() {
6
+ $(this).val($(this).parents('form.ui-listview-filter').next('ul.list').attr('data-search-value'));
7
7
  });
8
- $(document).on('click', 'ul.list > li.item a.link', function(event) {
8
+ });
9
+ $(document).ready( function() {
10
+ $(document).on('change', 'form.ui-listview-filter input', function(event) {
9
11
  event.preventDefault();
10
- RubyApp.sendEvent({_class:'RubyApp::Elements::Mobile::List::LinkClickedEvent', source:$(this).parents('ul.list').attr('id'), item:$(this).parents('li.item').attr('id')});
12
+ var list = $(this).parents('form.ui-listview-filter').next('ul.list');
13
+ var value = $(this).val();
14
+ list.attr('data-search-value', value);
15
+ RubyApp.sendEvent({_class:'RubyApp::Elements::Mobile::List::SearchedEvent', source:list.attr('id'), value:value});
11
16
  });
12
17
  });
18
+ = RubyApp::Elements::Mobile::List::ListItem.render(:js)
19
+ = RubyApp::Elements::Mobile::List::ListDivider.render(:js)
20
+ = RubyApp::Elements::Mobile::List::ListSplitItem.render(:js)
13
21
  = yield
@@ -88,18 +88,38 @@ module RubyApp
88
88
 
89
89
  end
90
90
 
91
+ class SearchedEvent < RubyApp::Element::Event
92
+
93
+ attr_reader :value
94
+
95
+ def initialize(data)
96
+ super(data)
97
+ @value = data['value'].strip
98
+ @value = @value.empty? ? nil : @value
99
+ end
100
+
101
+ def to_hash
102
+ super.merge(:value => @value)
103
+ end
104
+
105
+ end
106
+
91
107
  template_path(:all, File.dirname(__FILE__))
92
108
 
93
109
  attr_accessor :items
110
+ attr_accessor :search_value
94
111
 
95
112
  event :item_clicked
96
113
  event :link_clicked
97
114
 
115
+ event :searched
116
+
98
117
  def initialize
99
118
  super
100
119
  self.attributes.merge!('data-role' => 'listview')
101
120
 
102
121
  @items = []
122
+ @search_value = nil
103
123
 
104
124
  end
105
125
 
@@ -108,6 +128,7 @@ module RubyApp
108
128
  def on_event(event)
109
129
  on_item_clicked(event) if event.is_a?(RubyApp::Elements::Mobile::List::ItemClickedEvent)
110
130
  on_link_clicked(event) if event.is_a?(RubyApp::Elements::Mobile::List::LinkClickedEvent)
131
+ on_searched(event) if event.is_a?(RubyApp::Elements::Mobile::List::SearchedEvent)
111
132
  super(event)
112
133
  end
113
134
 
@@ -119,6 +140,11 @@ module RubyApp
119
140
  link_clicked(event)
120
141
  end
121
142
 
143
+ def on_searched(event)
144
+ @search_value = event.value
145
+ searched(event)
146
+ end
147
+
122
148
  end
123
149
 
124
150
  end
@@ -0,0 +1,9 @@
1
+ :plain
2
+ // #{__FILE__}
3
+ $(document).ready( function() {
4
+ $(document).on('click', 'li.item a.item', function(event) {
5
+ event.preventDefault();
6
+ RubyApp.sendEvent({_class:'RubyApp::Elements::Mobile::List::ItemClickedEvent', source:$(this).parents('ul.list').attr('id'), item:$(this).parents('li.item').attr('id')});
7
+ });
8
+ });
9
+ = yield
@@ -0,0 +1,9 @@
1
+ :sass
2
+ /* #{__FILE__}
3
+ li.split-item
4
+ a.link
5
+ span.ui-btn-inner
6
+ span.ui-btn.ui-btn-icon-notext.ui-btn-corner-all.ui-shadow
7
+ margin-left: 14px
8
+ margin-top: -14px
9
+ = yield
@@ -1,6 +1,6 @@
1
1
  /
2
2
  #{__FILE__}
3
- %li.item{self.attributes}
3
+ %li.split-item{self.attributes}
4
4
  - unless self.attributes['disabled']
5
5
  %a.item{:href => '#'}
6
6
  = yield(:item) || self.item
@@ -0,0 +1,13 @@
1
+ :plain
2
+ // #{__FILE__}
3
+ $(document).ready( function() {
4
+ $(document).on('click', 'li.split-item a.item', function(event) {
5
+ event.preventDefault();
6
+ RubyApp.sendEvent({_class:'RubyApp::Elements::Mobile::List::ItemClickedEvent', source:$(this).parents('ul.list').attr('id'), item:$(this).parents('li.split-item').attr('id')});
7
+ });
8
+ $(document).on('click', 'li.split-item a.link', function(event) {
9
+ event.preventDefault();
10
+ RubyApp.sendEvent({_class:'RubyApp::Elements::Mobile::List::LinkClickedEvent', source:$(this).parents('ul.list').attr('id'), item:$(this).parents('li.split-item').attr('id')});
11
+ });
12
+ });
13
+ = yield
@@ -3,23 +3,33 @@ load_script! 'common/features'
3
3
  add_step! (RubyApp::Element::Event) { |event| event.assert_exists_link('Lists') }
4
4
  add_step! (RubyApp::Element::AssertedEvent) { |event| event.click_link('Lists') }
5
5
 
6
+ add_step! (RubyApp::Elements::Mobile::Page::ShownEvent) { |event| event.assert_exists_search('search') }
7
+ add_step! (RubyApp::Element::AssertedEvent) { |event| event.update_search('search', 'value') }
8
+ add_step! (RubyApp::Elements::Mobile::Page::ShownEvent) { |event| event.assert_exists_text('You input value.') }
9
+ add_step! (RubyApp::Element::AssertedEvent) { |event| event.assert_exists_link('OK') }
10
+ add_step! (RubyApp::Element::AssertedEvent) { |event| event.click_link('OK') }
11
+
6
12
  add_step! (RubyApp::Elements::Mobile::Page::ShownEvent) { |event| event.assert_exists_link('Item 01') }
7
13
  add_step! (RubyApp::Element::AssertedEvent) { |event| event.click_list_item('Item 01') }
8
-
9
14
  add_step! (RubyApp::Elements::Mobile::Page::ShownEvent) { |event| event.assert_exists_text('You clicked the item Item 01.') }
10
15
  add_step! (RubyApp::Element::AssertedEvent) { |event| event.assert_exists_link('OK') }
11
16
  add_step! (RubyApp::Element::AssertedEvent) { |event| event.click_link('OK') }
12
17
 
13
- add_step! (RubyApp::Elements::Mobile::Page::ShownEvent) { |event| event.assert_exists_link('Item 01') }
14
- add_step! (RubyApp::Element::AssertedEvent) { |event| event.click_list_link('Item 01') }
18
+ add_step! (RubyApp::Elements::Mobile::Page::ShownEvent) { |event| event.assert_not_exists_link('Item 04') }
15
19
 
16
- add_step! (RubyApp::Elements::Mobile::Page::ShownEvent) { |event| event.assert_exists_text('You clicked the link Item 01.') }
20
+ add_step! (RubyApp::Element::AssertedEvent) { |event| event.assert_exists_link('Item 05') }
21
+ add_step! (RubyApp::Element::AssertedEvent) { |event| event.click_list_item('Item 05') }
22
+ add_step! (RubyApp::Elements::Mobile::Page::ShownEvent) { |event| event.assert_exists_text('You clicked the item Item 05.') }
23
+ add_step! (RubyApp::Element::AssertedEvent) { |event| event.assert_exists_link('OK') }
24
+ add_step! (RubyApp::Element::AssertedEvent) { |event| event.click_link('OK') }
25
+ add_step! (RubyApp::Elements::Mobile::Page::ShownEvent) { |event| event.assert_exists_link('Item 05') }
26
+ add_step! (RubyApp::Element::AssertedEvent) { |event| event.click_list_link('Item 05') }
27
+ add_step! (RubyApp::Elements::Mobile::Page::ShownEvent) { |event| event.assert_exists_text('You clicked the link Item 05.') }
17
28
  add_step! (RubyApp::Element::AssertedEvent) { |event| event.assert_exists_link('OK') }
18
29
  add_step! (RubyApp::Element::AssertedEvent) { |event| event.click_link('OK') }
19
30
 
20
- add_step! (RubyApp::Elements::Mobile::Page::ShownEvent) { |event| event.assert_not_exists_link('Item 06') }
21
- add_step! (RubyApp::Element::AssertedEvent) { |event| event.click_link('Back') }
31
+ add_step! (RubyApp::Elements::Mobile::Page::ShownEvent) { |event| event.assert_not_exists_link('Item 08') }
22
32
 
33
+ add_step! (RubyApp::Element::AssertedEvent) { |event| event.click_link('Back') }
23
34
  add_step! (RubyApp::Elements::Mobile::Page::ShownEvent) { |event| event.click_link('Back') }
24
-
25
35
  add_step! (RubyApp::Elements::Mobile::Page::ShownEvent) { |event| event.execute {} }
@@ -1,4 +1,4 @@
1
1
  module RubyApp
2
- VERSION = "0.6.39"
2
+ VERSION = "0.6.40"
3
3
  ROOT = File.expand_path(File.dirname(__FILE__))
4
4
  end
@@ -0,0 +1,8 @@
1
+ {
2
+ "folders":
3
+ [
4
+ {
5
+ "path": "/Users/fficnar/Dropbox/Projects/gems/ruby_app"
6
+ }
7
+ ]
8
+ }
@@ -0,0 +1,225 @@
1
+ {
2
+ "auto_complete":
3
+ {
4
+ "selected_items":
5
+ [
6
+ ]
7
+ },
8
+ "buffers":
9
+ [
10
+ ],
11
+ "build_system": "",
12
+ "command_palette":
13
+ {
14
+ "height": 360.0,
15
+ "selected_items":
16
+ [
17
+ ],
18
+ "width": 392.0
19
+ },
20
+ "console":
21
+ {
22
+ "height": 158.0
23
+ },
24
+ "distraction_free":
25
+ {
26
+ "menu_visible": true,
27
+ "show_minimap": false,
28
+ "show_open_files": false,
29
+ "show_tabs": false,
30
+ "side_bar_visible": false,
31
+ "status_bar_visible": false
32
+ },
33
+ "file_history":
34
+ [
35
+ "/Users/fficnar/Dropbox/Projects/gems/ruby_app/ruby_app.sublime-workspace",
36
+ "/Users/fficnar/Dropbox/Projects/gems/ruby_app/lib/ruby_app/elements/mobile/list.css.haml",
37
+ "/Users/fficnar/Dropbox/Projects/gems/ruby_app/lib/ruby_app/elements/mobile/list.js.haml",
38
+ "/Users/fficnar/Dropbox/Projects/pike/lib/pike/elements/inputs/user_input.js.haml",
39
+ "/Users/fficnar/Dropbox/Projects/pike/lib/pike/elements/property_value_list.js.haml",
40
+ "/Users/fficnar/Dropbox/Projects/pike/lib/pike/elements/work_list_welcome_item.css.haml",
41
+ "/Users/fficnar/Dropbox/Projects/pike/lib/pike/elements/work_list_welcome_item.html.haml",
42
+ "/Users/fficnar/Dropbox/Projects/pike/lib/pike/elements/work_list.rb",
43
+ "/Users/fficnar/Dropbox/Projects/pike/lib/pike/elements/pages/default_page.css.haml",
44
+ "/Users/fficnar/Dropbox/Projects/pike/lib/pike/elements/message_list.rb",
45
+ "/Users/fficnar/Dropbox/Projects/pike/lib/pike/elements/message_list_item.css.haml",
46
+ "/Users/fficnar/Dropbox/Projects/pike/lib/pike/elements/message_list_item.html.haml",
47
+ "/Users/fficnar/Dropbox/Projects/pike/lib/pike/elements/message_list.css.haml",
48
+ "/Users/fficnar/Dropbox/Projects/pike/lib/pike/elements/message_list.js.haml",
49
+ "/Users/fficnar/Dropbox/Projects/pike/lib/pike/elements/work_report.rb",
50
+ "/Users/fficnar/Dropbox/Projects/pike/lib/pike/elements/property_value_list.rb",
51
+ "/Users/fficnar/Dropbox/Projects/pike/lib/pike/elements/project_list.rb",
52
+ "/Users/fficnar/Dropbox/Projects/pike/lib/pike/elements/friendship_list.rb",
53
+ "/Users/fficnar/Dropbox/Projects/pike/lib/pike/elements/flag_select.css.haml",
54
+ "/Users/fficnar/Dropbox/Projects/pike/lib/pike/elements/activity_select.css.haml",
55
+ "/Users/fficnar/Dropbox/Projects/pike/lib/pike/elements/activity_select.rb",
56
+ "/Users/fficnar/Dropbox/Projects/pike/lib/pike/elements/activity_list.rb",
57
+ "/Users/fficnar/Dropbox/Projects/pike/lib/pike/elements/work_report.css.haml",
58
+ "/Users/fficnar/Dropbox/Projects/pike/lib/pike/elements/work_report.html.haml",
59
+ "/Users/fficnar/Dropbox/Projects/pike/lib/pike/elements/work_list_item.css.haml",
60
+ "/Users/fficnar/Dropbox/Projects/pike/lib/pike/elements/work_list_item.html.haml",
61
+ "/Users/fficnar/Dropbox/Projects/pike/lib/pike/elements/property_value_list_item.css.haml",
62
+ "/Users/fficnar/Dropbox/Projects/pike/lib/pike/elements/property_value_list_item.html.haml",
63
+ "/Users/fficnar/Dropbox/Projects/pike/lib/pike/elements/property_value_list.css.haml",
64
+ "/Users/fficnar/Dropbox/Projects/pike/lib/pike/elements/project_list_item.css.haml",
65
+ "/Users/fficnar/Dropbox/Projects/pike/lib/pike/elements/project_list_item.html.haml",
66
+ "/Users/fficnar/Dropbox/Projects/pike/scripts/introduction.rb",
67
+ "/Users/fficnar/Dropbox/Projects/pike/lib/pike/elements/friendship_list_introduction_item.html.haml",
68
+ "/Users/fficnar/Library/Application Support/Sublime Text 2/Packages/Default/Preferences.sublime-settings",
69
+ "/Users/fficnar/Dropbox/Projects/pike/lib/pike/elements/activity_list_item.css.haml",
70
+ "/Users/fficnar/Dropbox/Projects/pike/lib/pike/elements/friendship_list.css.haml",
71
+ "/Users/fficnar/Dropbox/Projects/pike/lib/pike/elements/friendship_list_introduction_item.css.haml",
72
+ "/Users/fficnar/Dropbox/Projects/pike/lib/pike/elements/activity_list.css.haml",
73
+ "/Users/fficnar/Dropbox/Projects/gems/ruby_app/lib/ruby_app/elements/mobile/navigation/navigation_list_page_item.html.haml",
74
+ "/Users/fficnar/Dropbox/Projects/gems/ruby_app/lib/ruby_app/elements/mobile/navigation/navigation_list.rb",
75
+ "/Users/fficnar/Dropbox/Projects/gems/ruby_app/lib/ruby_app/elements/mobile/navigation/back_button.html.haml",
76
+ "/Users/fficnar/Dropbox/Projects/gems/ruby_app/lib/ruby_app/elements/mobile/documents/authentication/o_auth/git_hub_authentication_document.rb",
77
+ "/Users/fficnar/Dropbox/Projects/gems/ruby_app/lib/ruby_app/elements/mobile/documents/authentication/facebook/authentication_document.rb",
78
+ "/Users/fficnar/Dropbox/Projects/gems/ruby_app/lib/ruby_app/elements/mobile/documents/authentication/facebook/email_authentication_document.rb",
79
+ "/Users/fficnar/Dropbox/Projects/pike/tasks/migrations.rb",
80
+ "/Users/fficnar/Dropbox/Projects/pike/tasks/data.rb",
81
+ "/Users/fficnar/Dropbox/Projects/pike/tasks/process.rb",
82
+ "/Users/fficnar/Dropbox/Projects/pike/Rakefile",
83
+ "/Users/fficnar/Dropbox/Projects/pike/configuration.yml",
84
+ "/Users/fficnar/Dropbox/Projects/pike/lib/pike/elements/documents/authentication/o_auth/git_hub_authentication_document.rb",
85
+ "/Users/fficnar/Dropbox/Projects/.bash_aliases",
86
+ "/Users/fficnar/Dropbox/Projects/pike/pike.sublime-project",
87
+ "/Users/fficnar/Dropbox/Projects/pike/pike.staging.20121018235257.tar.gz"
88
+ ],
89
+ "find":
90
+ {
91
+ "height": 35.0
92
+ },
93
+ "find_in_files":
94
+ {
95
+ "height": 0.0,
96
+ "where_history":
97
+ [
98
+ "<open files>",
99
+ "/Users/fficnar/Dropbox/Projects/pike"
100
+ ]
101
+ },
102
+ "find_state":
103
+ {
104
+ "case_sensitive": false,
105
+ "find_history":
106
+ [
107
+ "MessageItem",
108
+ "indentation",
109
+ "full_",
110
+ "108"
111
+ ],
112
+ "highlight": true,
113
+ "in_selection": false,
114
+ "preserve_case": false,
115
+ "regex": false,
116
+ "replace_history":
117
+ [
118
+ "MessageListItem",
119
+ ""
120
+ ],
121
+ "reverse": false,
122
+ "show_context": true,
123
+ "use_buffer2": true,
124
+ "whole_word": false,
125
+ "wrap": true
126
+ },
127
+ "groups":
128
+ [
129
+ {
130
+ "sheets":
131
+ [
132
+ ]
133
+ }
134
+ ],
135
+ "incremental_find":
136
+ {
137
+ "height": 0.0
138
+ },
139
+ "input":
140
+ {
141
+ "height": 31.0
142
+ },
143
+ "layout":
144
+ {
145
+ "cells":
146
+ [
147
+ [
148
+ 0,
149
+ 0,
150
+ 1,
151
+ 1
152
+ ]
153
+ ],
154
+ "cols":
155
+ [
156
+ 0.0,
157
+ 1.0
158
+ ],
159
+ "rows":
160
+ [
161
+ 0.0,
162
+ 1.0
163
+ ]
164
+ },
165
+ "menu_visible": true,
166
+ "output.exec":
167
+ {
168
+ "height": 100.0
169
+ },
170
+ "replace":
171
+ {
172
+ "height": 64.0
173
+ },
174
+ "save_all_on_build": true,
175
+ "select_file":
176
+ {
177
+ "height": 0.0,
178
+ "selected_items":
179
+ [
180
+ [
181
+ "facebook",
182
+ "lib/ruby_app/elements/mobile/documents/authentication/facebook/email_authentication_document.rb"
183
+ ],
184
+ [
185
+ "face",
186
+ "lib/ruby_app/elements/mobile/documents/authentication/facebook/authentication_document.rb"
187
+ ],
188
+ [
189
+ "git",
190
+ "lib/ruby_app/elements/mobile/documents/authentication/o_auth/git_hub_authentication_document.rb"
191
+ ],
192
+ [
193
+ "rake",
194
+ "Rakefile"
195
+ ],
196
+ [
197
+ "user",
198
+ "lib/pike/models/user.rb"
199
+ ],
200
+ [
201
+ "config",
202
+ "configuration.yml"
203
+ ],
204
+ [
205
+ "github",
206
+ "lib/pike/elements/documents/authentication/o_auth/git_hub_authentication_document.rb"
207
+ ]
208
+ ],
209
+ "width": 0.0
210
+ },
211
+ "select_project":
212
+ {
213
+ "height": 0.0,
214
+ "selected_items":
215
+ [
216
+ ],
217
+ "width": 0.0
218
+ },
219
+ "show_minimap": false,
220
+ "show_open_files": true,
221
+ "show_tabs": true,
222
+ "side_bar_visible": true,
223
+ "side_bar_width": 440.0,
224
+ "status_bar_visible": true
225
+ }
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: RubyApp
3
3
  version: !ruby/object:Gem::Version
4
- hash: 73
4
+ hash: 87
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 6
9
- - 39
10
- version: 0.6.39
9
+ - 40
10
+ version: 0.6.40
11
11
  platform: ruby
12
12
  authors:
13
13
  - Frank G. Ficnar
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-10-19 00:00:00 Z
18
+ date: 2012-10-21 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  version_requirements: &id001 !ruby/object:Gem::Requirement
@@ -443,6 +443,7 @@ files:
443
443
  - lib/ruby_app/elements/mobile/inputs/multiline_input.html.haml
444
444
  - lib/ruby_app/elements/mobile/inputs/multiline_input.js.haml
445
445
  - lib/ruby_app/elements/mobile/inputs/multiline_input.rb
446
+ - lib/ruby_app/elements/mobile/inputs/search_input.rb
446
447
  - lib/ruby_app/elements/mobile/inputs/toggle_input.html.haml
447
448
  - lib/ruby_app/elements/mobile/inputs/toggle_input.js.haml
448
449
  - lib/ruby_app/elements/mobile/inputs/toggle_input.rb
@@ -454,7 +455,10 @@ files:
454
455
  - lib/ruby_app/elements/mobile/list.rb
455
456
  - lib/ruby_app/elements/mobile/list_divider.html.haml
456
457
  - lib/ruby_app/elements/mobile/list_item.html.haml
458
+ - lib/ruby_app/elements/mobile/list_item.js.haml
459
+ - lib/ruby_app/elements/mobile/list_split_item.css.haml
457
460
  - lib/ruby_app/elements/mobile/list_split_item.html.haml
461
+ - lib/ruby_app/elements/mobile/list_split_item.js.haml
458
462
  - lib/ruby_app/elements/mobile/navigation/back_button.html.haml
459
463
  - lib/ruby_app/elements/mobile/navigation/back_button.rb
460
464
  - lib/ruby_app/elements/mobile/navigation/hide_button.rb
@@ -602,6 +606,8 @@ files:
602
606
  - lib/ruby_app/translations/en.yml
603
607
  - lib/ruby_app/version.rb
604
608
  - ruby_app.gemspec
609
+ - ruby_app.sublime-project
610
+ - ruby_app.sublime-workspace
605
611
  homepage: ""
606
612
  licenses: []
607
613