motion-prime 0.9.6 → 0.9.7

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.
Files changed (90) hide show
  1. checksums.yaml +8 -8
  2. data/CHANGELOG.md +6 -0
  3. data/Gemfile.lock +6 -6
  4. data/README.md +1 -10
  5. data/Rakefile +0 -1
  6. data/app/app_delegate.rb +1 -1
  7. data/bin/prime +1 -1
  8. data/files/Gemfile +1 -1
  9. data/motion-prime/api_client.rb +87 -31
  10. data/motion-prime/config/base.rb +20 -11
  11. data/motion-prime/config/config.rb +9 -3
  12. data/motion-prime/core_ext/kernel.rb +2 -1
  13. data/motion-prime/core_ext/nil_class.rb +5 -0
  14. data/motion-prime/delegate/app_delegate.rb +5 -0
  15. data/motion-prime/elements/base_element.rb +21 -2
  16. data/motion-prime/elements/draw.rb +6 -16
  17. data/motion-prime/helpers/has_authorization.rb +1 -1
  18. data/motion-prime/models/_base_mixin.rb +1 -1
  19. data/motion-prime/prime.rb +4 -0
  20. data/motion-prime/screens/extensions/_indicators_mixin.rb +16 -10
  21. data/motion-prime/screens/screen.rb +1 -1
  22. data/motion-prime/sections/_async_table_mixin.rb +1 -2
  23. data/motion-prime/sections/_draw_section_mixin.rb +3 -1
  24. data/motion-prime/sections/base_section.rb +37 -26
  25. data/motion-prime/sections/form.rb +23 -8
  26. data/motion-prime/sections/form/base_field_section.rb +1 -15
  27. data/motion-prime/sections/form/date_field_section.rb +1 -1
  28. data/motion-prime/sections/form/password_field_section.rb +1 -1
  29. data/motion-prime/sections/form/select_field_section.rb +1 -1
  30. data/motion-prime/sections/form/string_field_section.rb +1 -1
  31. data/motion-prime/sections/form/submit_field_section.rb +1 -1
  32. data/motion-prime/sections/form/text_field_section.rb +1 -1
  33. data/motion-prime/sections/table.rb +58 -27
  34. data/motion-prime/sections/table/refresh_mixin.rb +1 -1
  35. data/motion-prime/services/logger.rb +60 -21
  36. data/motion-prime/support/consts.rb +11 -0
  37. data/motion-prime/version.rb +1 -1
  38. data/motion-prime/views/layout.rb +5 -4
  39. data/motion-prime/views/view_styler.rb +3 -0
  40. data/spec/{helpers → factories}/delegates.rb +0 -3
  41. data/spec/{helpers → factories}/init.rb +0 -0
  42. data/spec/{helpers → factories}/models.rb +0 -0
  43. data/spec/factories/scaffold/models/task.rb +4 -0
  44. data/spec/factories/scaffold/screens/tasks.rb +45 -0
  45. data/spec/factories/scaffold/sections/tasks/form.rb +31 -0
  46. data/spec/factories/scaffold/sections/tasks/index_cell.rb +4 -0
  47. data/spec/factories/scaffold/sections/tasks/index_table.rb +12 -0
  48. data/spec/factories/scaffold/sections/tasks/show.rb +3 -0
  49. data/spec/factories/scaffold/styles/tasks.rb +18 -0
  50. data/spec/{helpers → factories}/screens.rb +0 -0
  51. data/spec/factories/sections.rb +9 -0
  52. data/spec/features/scaffold/index.rb +14 -0
  53. data/spec/features/screens/open_screen.rb +14 -2
  54. data/spec/helpers/has_content.rb +25 -0
  55. data/spec/unit/models/dirty_spec.rb +0 -1
  56. data/spec/unit/models/model_spec.rb +2 -0
  57. data/spec/unit/prime/logger.rb +49 -0
  58. data/spec/unit/sections/section_spec.rb +59 -0
  59. data/travis.sh +1 -1
  60. metadata +36 -41
  61. data/doc/FAQ.md +0 -2
  62. data/doc/SECTION.md +0 -7
  63. data/doc/STYLE.md +0 -39
  64. data/doc/code/getting_started.rb +0 -106
  65. data/doc/code/models.rb +0 -36
  66. data/doc/code/screens.rb +0 -93
  67. data/doc/code/sections.rb +0 -65
  68. data/doc/code/tables.rb +0 -54
  69. data/doc/docs/docco.css +0 -337
  70. data/doc/docs/getting_started.html +0 -195
  71. data/doc/docs/index.html +0 -205
  72. data/doc/docs/models.html +0 -115
  73. data/doc/docs/public/fonts/aller-bold.eot +0 -0
  74. data/doc/docs/public/fonts/aller-bold.ttf +0 -0
  75. data/doc/docs/public/fonts/aller-bold.woff +0 -0
  76. data/doc/docs/public/fonts/aller-light.eot +0 -0
  77. data/doc/docs/public/fonts/aller-light.ttf +0 -0
  78. data/doc/docs/public/fonts/aller-light.woff +0 -0
  79. data/doc/docs/public/fonts/fleurons.eot +0 -0
  80. data/doc/docs/public/fonts/fleurons.ttf +0 -0
  81. data/doc/docs/public/fonts/fleurons.woff +0 -0
  82. data/doc/docs/public/fonts/novecento-bold.eot +0 -0
  83. data/doc/docs/public/fonts/novecento-bold.ttf +0 -0
  84. data/doc/docs/public/fonts/novecento-bold.woff +0 -0
  85. data/doc/docs/public/images/gray.png +0 -0
  86. data/doc/docs/public/stylesheets/normalize.css +0 -375
  87. data/doc/docs/screens.html +0 -187
  88. data/doc/docs/sections.html +0 -138
  89. data/doc/docs/tables.html +0 -128
  90. data/spec/helpers/sections.rb +0 -3
@@ -0,0 +1,31 @@
1
+ class TasksFormSection < Prime::FormSection
2
+ field :title,
3
+ label: { text: 'Title' },
4
+ input: {
5
+ text: proc { model.title },
6
+ placeholder: "Enter title here"
7
+ }
8
+
9
+ field :delete, type: :submit,
10
+ button: {
11
+ title: "Delete",
12
+ background_color: :red
13
+ },
14
+ action: :on_delete,
15
+ if: proc { model.persisted? }
16
+
17
+ field :submit, type: :submit,
18
+ button: { title: "Save" },
19
+ action: :on_submit
20
+
21
+ def on_delete
22
+ model.delete
23
+ screen.close_screen(to_root: true)
24
+ end
25
+
26
+ def on_submit
27
+ model.assign_attributes(field_values)
28
+ model.save
29
+ screen.close_screen
30
+ end
31
+ end
@@ -0,0 +1,4 @@
1
+ class TasksIndexCellSection < Prime::Section
2
+ container height: 40
3
+ element :title, text: proc { model.title }
4
+ end
@@ -0,0 +1,12 @@
1
+ class TasksIndexTableSection < Prime::TableSection
2
+ def table_data
3
+ Task.all.map do |model|
4
+ TasksIndexCellSection.new(model: model)
5
+ end
6
+ end
7
+
8
+ def on_click(table, index)
9
+ section = data[index.row]
10
+ screen.open_screen 'tasks#show', params: { model: section.model }
11
+ end
12
+ end
@@ -0,0 +1,3 @@
1
+ class TasksShowSection < Prime::Section
2
+ element :title, text: proc { model.title }
3
+ end
@@ -0,0 +1,18 @@
1
+ Prime::Styles.define :tasks do
2
+ style :index do
3
+ style :cell_title,
4
+ text_color: :app_base,
5
+ left: 20,
6
+ top: 10,
7
+ width: 280,
8
+ font: :app_base.uifont(16),
9
+ height: 20
10
+ end
11
+ style :show do
12
+ style :title,
13
+ top: 120,
14
+ left: 0,
15
+ right: 0,
16
+ text_alignment: :center
17
+ end
18
+ end
File without changes
@@ -0,0 +1,9 @@
1
+ class SampleViewSection < Prime::Section
2
+ element :description, text: "Lorem Ipsum", as: :view
3
+ end
4
+ class SampleDrawSection < Prime::Section
5
+ element :description, text: "Lorem Ipsum", as: :draw
6
+ end
7
+ class SampleSection < Prime::Section
8
+ element :description, text: "Lorem Ipsum"
9
+ end
@@ -0,0 +1,14 @@
1
+ describe "scaffold index" do
2
+ before do
3
+ 5.times do |index|
4
+ Task.create(title: "Task #{index}")
5
+ end
6
+ App.delegate.open_screen 'tasks#index'
7
+ @controller = App.delegate.content_controller.childViewControllers.last
8
+ end
9
+ it "should render tasks list" do
10
+ wait 0.3 do
11
+ @controller.has_content?("Task 2").should.be.true
12
+ end
13
+ end
14
+ end
@@ -2,7 +2,7 @@ describe "open screen" do
2
2
  describe "from app delegate with default options" do
3
3
  before do
4
4
  App.delegate.open_screen :sample
5
- @controller = App.delegate.window.rootViewController
5
+ @controller = App.delegate.content_controller
6
6
  end
7
7
  it "should open with navigation by default" do
8
8
  @controller.is_a?(UINavigationController).should.be.true
@@ -25,6 +25,18 @@ describe "open screen" do
25
25
  end
26
26
  end
27
27
 
28
+ describe "from app delegate with action" do
29
+ before do
30
+ App.delegate.open_screen 'tasks#new'
31
+ @controller = App.delegate.content_controller.childViewControllers.last
32
+ end
33
+
34
+ it "should open screen with action" do
35
+ @controller.is_a?(TasksScreen).should.be.true
36
+ @controller.title.should == 'New Task'
37
+ end
38
+ end
39
+
28
40
  describe "from another screen with navigation: true" do
29
41
  before do
30
42
  @parent_screen = SampleScreen.new(navigation: true)
@@ -32,7 +44,7 @@ describe "open screen" do
32
44
 
33
45
  App.delegate.open_screen @parent_screen
34
46
  @parent_screen.open_screen @child_screen
35
- @controller = App.delegate.window.rootViewController
47
+ @controller = App.delegate.content_controller
36
48
 
37
49
  # we should call it because will_appear will happen async
38
50
  @child_screen.will_appear
@@ -0,0 +1,25 @@
1
+ class MotionPrime::BaseElement
2
+ def has_content?(content)
3
+ text = computed_options[:text] || computed_options[:title] || ''
4
+ !!text.match(content)
5
+ end
6
+ end
7
+ class MotionPrime::Section
8
+ def has_content?(content)
9
+ self.elements.values.any? do |element|
10
+ element.has_content?(content)
11
+ end
12
+ end
13
+ end
14
+ class MotionPrime::TableSection
15
+ def has_content?(content)
16
+ data.any? do |section|
17
+ section.has_content?(content)
18
+ end
19
+ end
20
+ end
21
+ class MotionPrime::Screen
22
+ def has_content?(content)
23
+ main_section.has_content?(content)
24
+ end
25
+ end
@@ -15,7 +15,6 @@ describe MotionPrime::Model do
15
15
  end
16
16
 
17
17
  it "should be false after save" do
18
- puts @user.changed_attributes
19
18
  @user.has_changed?.should.be.false
20
19
  end
21
20
 
@@ -50,6 +50,7 @@ describe MotionPrime::Model do
50
50
  end
51
51
 
52
52
  it "creates model when invalid parameter and validate_attribute_presence=false" do
53
+ Prime.logger.disabled = true
53
54
  user = User.new({
54
55
  name: "Eddie",
55
56
  age: 12,
@@ -57,6 +58,7 @@ describe MotionPrime::Model do
57
58
  gender: "m",
58
59
  })
59
60
  user.name.should == "Eddie"
61
+ Prime.logger.disabled = false
60
62
  end
61
63
  end
62
64
 
@@ -0,0 +1,49 @@
1
+ describe "Prime.env" do
2
+
3
+ before do
4
+ @logger = Prime::Logger.new
5
+ @logger.stub!(:output) do |message|
6
+ message
7
+ end
8
+ end
9
+
10
+ it 'should work' do
11
+ @logger.log("Hello world").should == 'Hello world'
12
+ end
13
+
14
+ describe "error level" do
15
+ before { Prime::Logger.level = :error }
16
+
17
+ it 'should log errors' do
18
+ @logger.error("message").should == ["message"]
19
+ end
20
+
21
+ it 'should not log info' do
22
+ @logger.info("message").should == nil
23
+ end
24
+ end
25
+
26
+ describe "info level" do
27
+ before { Prime::Logger.level = :info }
28
+
29
+ it 'should log info' do
30
+ @logger.info("message").should == ["message"]
31
+ end
32
+
33
+ it 'should not log debug' do
34
+ @logger.debug("message").should == nil
35
+ end
36
+ end
37
+
38
+ describe "debug level" do
39
+ before { Prime::Logger.level = :debug }
40
+
41
+ it 'should log debug' do
42
+ @logger.debug("message").should == ["message"]
43
+ end
44
+
45
+ it 'should not log dealloc' do
46
+ @logger.dealloc_message("message", Prime::Section.new).should == nil
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,59 @@
1
+ describe MotionPrime::Section do
2
+
3
+ describe "general" do
4
+ before do
5
+ @section = SampleSection.new(screen: @screen)
6
+ end
7
+
8
+ describe "#name" do
9
+ it "should use class name by default" do
10
+ @section.name.should == 'sample'
11
+ end
12
+
13
+ it "should use given name" do
14
+ section = SampleSection.new(name: 'my_section')
15
+ section.name.should == 'my_section'
16
+ end
17
+ end
18
+ end
19
+
20
+ describe "base section" do
21
+ before do
22
+ @screen = BaseScreen.new
23
+ @section = SampleViewSection.new(screen: @screen)
24
+ @section.render
25
+ end
26
+
27
+ describe "#element" do
28
+ it "should return element by name" do
29
+ @section.element(:description).is_a?(MotionPrime::BaseElement).should.be.true
30
+ end
31
+ end
32
+
33
+ describe "#view" do
34
+ it "should return view by element name" do
35
+ @section.view(:description).is_a?(MPLabel).should.be.true
36
+ end
37
+ end
38
+ end
39
+
40
+ describe "draw section" do
41
+ before do
42
+ @screen = BaseScreen.new
43
+ @section = SampleDrawSection.new(screen: @screen)
44
+ @section.render
45
+ end
46
+
47
+ describe "#element" do
48
+ it "should return element by name" do
49
+ @section.element(:description).is_a?(MotionPrime::DrawElement).should.be.true
50
+ end
51
+ end
52
+
53
+ describe "#view" do
54
+ it "should return container view by element name" do
55
+ @section.view(:description).is_a?(MPViewWithSection).should.be.true
56
+ end
57
+ end
58
+ end
59
+ end
data/travis.sh CHANGED
@@ -6,4 +6,4 @@ sudo bundle install
6
6
  #sudo pod setup
7
7
  sudo bundle exec rake pod:install
8
8
  sudo bundle exec rake clean &&
9
- sudo bundle exec rake spec
9
+ sudo bundle exec rake spec output=colorized
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: motion-prime
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.6
4
+ version: 0.9.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Iskander Haziev
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-03-27 00:00:00.000000000 Z
12
+ date: 2014-05-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -226,35 +226,6 @@ files:
226
226
  - Rakefile
227
227
  - app/app_delegate.rb
228
228
  - bin/prime
229
- - doc/FAQ.md
230
- - doc/SECTION.md
231
- - doc/STYLE.md
232
- - doc/code/getting_started.rb
233
- - doc/code/models.rb
234
- - doc/code/screens.rb
235
- - doc/code/sections.rb
236
- - doc/code/tables.rb
237
- - doc/docs/docco.css
238
- - doc/docs/getting_started.html
239
- - doc/docs/index.html
240
- - doc/docs/models.html
241
- - doc/docs/public/fonts/aller-bold.eot
242
- - doc/docs/public/fonts/aller-bold.ttf
243
- - doc/docs/public/fonts/aller-bold.woff
244
- - doc/docs/public/fonts/aller-light.eot
245
- - doc/docs/public/fonts/aller-light.ttf
246
- - doc/docs/public/fonts/aller-light.woff
247
- - doc/docs/public/fonts/fleurons.eot
248
- - doc/docs/public/fonts/fleurons.ttf
249
- - doc/docs/public/fonts/fleurons.woff
250
- - doc/docs/public/fonts/novecento-bold.eot
251
- - doc/docs/public/fonts/novecento-bold.ttf
252
- - doc/docs/public/fonts/novecento-bold.woff
253
- - doc/docs/public/images/gray.png
254
- - doc/docs/public/stylesheets/normalize.css
255
- - doc/docs/screens.html
256
- - doc/docs/sections.html
257
- - doc/docs/tables.html
258
229
  - files/Gemfile
259
230
  - files/Rakefile
260
231
  - files/app/app_delegate.rb
@@ -290,6 +261,7 @@ files:
290
261
  - motion-prime/config/base.rb
291
262
  - motion-prime/config/config.rb
292
263
  - motion-prime/core_ext/kernel.rb
264
+ - motion-prime/core_ext/nil_class.rb
293
265
  - motion-prime/core_ext/time.rb
294
266
  - motion-prime/delegate/_base_mixin.rb
295
267
  - motion-prime/delegate/_navigation_mixin.rb
@@ -382,6 +354,7 @@ files:
382
354
  - motion-prime/styles/form.rb
383
355
  - motion-prime/support/_key_value_store.rb
384
356
  - motion-prime/support/_padding_attribute.rb
357
+ - motion-prime/support/consts.rb
385
358
  - motion-prime/support/mp_button.rb
386
359
  - motion-prime/support/mp_cell_content_view.rb
387
360
  - motion-prime/support/mp_cell_with_section.rb
@@ -404,12 +377,21 @@ files:
404
377
  - motion-prime/views/view_styler.rb
405
378
  - resources/Default-568h@2x.png
406
379
  - resources/Icon.png
380
+ - spec/factories/delegates.rb
381
+ - spec/factories/init.rb
382
+ - spec/factories/models.rb
383
+ - spec/factories/scaffold/models/task.rb
384
+ - spec/factories/scaffold/screens/tasks.rb
385
+ - spec/factories/scaffold/sections/tasks/form.rb
386
+ - spec/factories/scaffold/sections/tasks/index_cell.rb
387
+ - spec/factories/scaffold/sections/tasks/index_table.rb
388
+ - spec/factories/scaffold/sections/tasks/show.rb
389
+ - spec/factories/scaffold/styles/tasks.rb
390
+ - spec/factories/screens.rb
391
+ - spec/factories/sections.rb
392
+ - spec/features/scaffold/index.rb
407
393
  - spec/features/screens/open_screen.rb
408
- - spec/helpers/delegates.rb
409
- - spec/helpers/init.rb
410
- - spec/helpers/models.rb
411
- - spec/helpers/screens.rb
412
- - spec/helpers/sections.rb
394
+ - spec/helpers/has_content.rb
413
395
  - spec/unit/config/store_spec.rb
414
396
  - spec/unit/delegate/delegate_spec.rb
415
397
  - spec/unit/models/association_collection_spec.rb
@@ -423,7 +405,9 @@ files:
423
405
  - spec/unit/models/store_extension_spec.rb
424
406
  - spec/unit/models/store_spec.rb
425
407
  - spec/unit/prime/env.rb
408
+ - spec/unit/prime/logger.rb
426
409
  - spec/unit/screens/screen_spec.rb
410
+ - spec/unit/sections/section_spec.rb
427
411
  - travis.sh
428
412
  homepage: ''
429
413
  licenses:
@@ -450,12 +434,21 @@ signing_key:
450
434
  specification_version: 4
451
435
  summary: RubyMotion apps development framework
452
436
  test_files:
437
+ - spec/factories/delegates.rb
438
+ - spec/factories/init.rb
439
+ - spec/factories/models.rb
440
+ - spec/factories/scaffold/models/task.rb
441
+ - spec/factories/scaffold/screens/tasks.rb
442
+ - spec/factories/scaffold/sections/tasks/form.rb
443
+ - spec/factories/scaffold/sections/tasks/index_cell.rb
444
+ - spec/factories/scaffold/sections/tasks/index_table.rb
445
+ - spec/factories/scaffold/sections/tasks/show.rb
446
+ - spec/factories/scaffold/styles/tasks.rb
447
+ - spec/factories/screens.rb
448
+ - spec/factories/sections.rb
449
+ - spec/features/scaffold/index.rb
453
450
  - spec/features/screens/open_screen.rb
454
- - spec/helpers/delegates.rb
455
- - spec/helpers/init.rb
456
- - spec/helpers/models.rb
457
- - spec/helpers/screens.rb
458
- - spec/helpers/sections.rb
451
+ - spec/helpers/has_content.rb
459
452
  - spec/unit/config/store_spec.rb
460
453
  - spec/unit/delegate/delegate_spec.rb
461
454
  - spec/unit/models/association_collection_spec.rb
@@ -469,4 +462,6 @@ test_files:
469
462
  - spec/unit/models/store_extension_spec.rb
470
463
  - spec/unit/models/store_spec.rb
471
464
  - spec/unit/prime/env.rb
465
+ - spec/unit/prime/logger.rb
472
466
  - spec/unit/screens/screen_spec.rb
467
+ - spec/unit/sections/section_spec.rb