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
@@ -1,138 +0,0 @@
1
- <!DOCTYPE html>
2
-
3
- <html>
4
- <head>
5
- <title>sections.rb</title>
6
- <meta http-equiv="content-type" content="text/html; charset=UTF-8">
7
- <link rel="stylesheet" media="all" href="public/stylesheets/normalize.css" />
8
- <link rel="stylesheet" media="all" href="docco.css" />
9
- </head>
10
- <body>
11
- <div class="container">
12
- <div class="page">
13
-
14
- <div class="header">
15
-
16
- <h1>sections.rb</h1>
17
-
18
-
19
-
20
- <div class="toc">
21
- <h3>Table of Contents</h3>
22
- <ol>
23
-
24
-
25
- <li>
26
- <a class="source" href="getting_started.html">
27
- getting_started.rb
28
- </a>
29
- </li>
30
-
31
-
32
- <li>
33
- <a class="source" href="models.html">
34
- models.rb
35
- </a>
36
- </li>
37
-
38
-
39
- <li>
40
- <a class="source" href="screens.html">
41
- screens.rb
42
- </a>
43
- </li>
44
-
45
-
46
- <li>
47
- <a class="source" href="sections.html">
48
- sections.rb
49
- </a>
50
- </li>
51
-
52
-
53
- <li>
54
- <a class="source" href="tables.html">
55
- tables.rb
56
- </a>
57
- </li>
58
-
59
- </ol>
60
- </div>
61
-
62
- </div>
63
-
64
-
65
-
66
- <p><strong> What is a Section? </strong></p>
67
- <p>&quot;Section&quot; is something like &quot;partial&quot; which you may know from RubyOnRails.
68
- In the first look it&#39;s just a list of elements which will be added to the &quot;Screen&quot;.
69
- But the magic is inside.
70
- When you add &quot;Element&quot; to a &quot;Section&quot;, e.g. image or label,
71
- it will try to draw it using CALayer/CGContext/etc, instead of adding new UIView.
72
- That way increases application speed (especially on Table elements) by 5-10 times.</p>
73
- <p>Let&#39;s get started.</p>
74
- <p><strong> Create a section. </strong></p>
75
- <p>Just inherit it from <code>Prime::Section</code>.</p>
76
-
77
-
78
- <div class='highlight'><pre><span class="class"><span class="keyword">class</span> <span class="title">FooSection</span> <span class="inheritance">&lt; <span class="parent">Prime::Section</span></span></span>
79
- <span class="keyword">end</span></pre></div>
80
-
81
-
82
-
83
- <p><strong> Add some elements to the section. </strong></p>
84
- <p>Each element should have name and type: &quot;image&quot;, &quot;label&quot;, &quot;button&quot;, etc. </p>
85
- <p>When you send <code>:text</code> option, type will be &quot;label&quot; by default.</p>
86
- <p>When you send <code>:image</code> option, type will be &quot;image&quot; by default.</p>
87
-
88
-
89
- <div class='highlight'><pre><span class="class"><span class="keyword">class</span> <span class="title">FooSection</span> <span class="inheritance">&lt; <span class="parent">Prime::Section</span></span></span>
90
- element <span class="symbol">:welcome</span>, <span class="symbol">text:</span> <span class="string">'Hello World!'</span>
91
- element <span class="symbol">:avatar</span>, <span class="symbol">image:</span> <span class="string">'images/users/avatar.jpg'</span>
92
- element <span class="symbol">:cheer</span>, <span class="symbol">type:</span> <span class="symbol">:button</span>
93
- <span class="keyword">end</span></pre></div>
94
-
95
-
96
-
97
- <p><strong> Render Section to Screen </strong></p>
98
- <p>NOTE: it&#39;s recommended to use instance variables for sections, e.g. <code>@main_section</code> instead of <code>main_section</code>.</p>
99
-
100
-
101
- <div class='highlight'><pre><span class="class"><span class="keyword">class</span> <span class="title">FooScreen</span> <span class="inheritance">&lt; <span class="parent">Prime::Screen</span></span></span>
102
- <span class="function"><span class="keyword">def</span> <span class="title">render</span></span>
103
- <span class="variable">@main_section</span> = <span class="constant">FooSection</span>.new(<span class="symbol">screen:</span> <span class="keyword">self</span>)
104
- <span class="variable">@main_section</span>.render
105
- <span class="keyword">end</span>
106
- <span class="keyword">end</span></pre></div>
107
-
108
-
109
-
110
- <p><strong> Add some styles for section </strong></p>
111
- <p>Generally styles are just attributes of UIView elements.</p>
112
- <p>Let&#39;s style the UILabel element (:welcome label element we added above.)</p>
113
- <p>We send :foo parameter to <code>define</code>, because we have section named <code>foo</code> (FooSection)
114
- and :welcome parameter to <code>style</code>, because the name of element is <code>welcome</code>.</p>
115
-
116
-
117
- <div class='highlight'><pre><span class="constant">Prime::Styles</span>.define <span class="symbol">:foo</span> <span class="keyword">do</span>
118
- style <span class="symbol">:welcome</span>,
119
- <span class="symbol">text_color:</span> <span class="symbol">:black</span>,
120
- <span class="symbol">top:</span> <span class="number">100</span>,
121
- <span class="symbol">width:</span> <span class="number">320</span>,
122
- <span class="symbol">left:</span> <span class="number">20</span>,
123
- <span class="symbol">font:</span> proc { <span class="symbol">:system</span>.uifont(<span class="number">20</span>) },
124
- <span class="symbol">size_to_fit:</span> <span class="keyword">true</span>,
125
- <span class="keyword">end</span></pre></div>
126
-
127
-
128
-
129
- <p><strong> Next </strong></p>
130
- <p><a href="models.html">Read more about Models</a></p>
131
-
132
-
133
-
134
- <div class="fleur">h</div>
135
- </div>
136
- </div>
137
- </body>
138
- </html>
data/doc/docs/tables.html DELETED
@@ -1,128 +0,0 @@
1
- <!DOCTYPE html>
2
-
3
- <html>
4
- <head>
5
- <title>tables.rb</title>
6
- <meta http-equiv="content-type" content="text/html; charset=UTF-8">
7
- <link rel="stylesheet" media="all" href="public/stylesheets/normalize.css" />
8
- <link rel="stylesheet" media="all" href="docco.css" />
9
- </head>
10
- <body>
11
- <div class="container">
12
- <div class="page">
13
-
14
- <div class="header">
15
-
16
- <h1>tables.rb</h1>
17
-
18
-
19
-
20
- <div class="toc">
21
- <h3>Table of Contents</h3>
22
- <ol>
23
-
24
-
25
- <li>
26
- <a class="source" href="getting_started.html">
27
- getting_started.rb
28
- </a>
29
- </li>
30
-
31
-
32
- <li>
33
- <a class="source" href="models.html">
34
- models.rb
35
- </a>
36
- </li>
37
-
38
-
39
- <li>
40
- <a class="source" href="screens.html">
41
- screens.rb
42
- </a>
43
- </li>
44
-
45
-
46
- <li>
47
- <a class="source" href="sections.html">
48
- sections.rb
49
- </a>
50
- </li>
51
-
52
-
53
- <li>
54
- <a class="source" href="tables.html">
55
- tables.rb
56
- </a>
57
- </li>
58
-
59
- </ol>
60
- </div>
61
-
62
- </div>
63
-
64
-
65
-
66
- <p><strong> What is a TableSection? </strong></p>
67
- <p>&quot;TableSection&quot; is a &quot;Section&quot; which have some sugar to work with UITableViews.</p>
68
- <p><strong> Create a Cell Section. </strong></p>
69
- <p>Inherit it from <code>Prime::Section</code>. </p>
70
- <p>Each element inside this section will be part of one cell.</p>
71
-
72
-
73
- <div class='highlight'><pre><span class="class"><span class="keyword">class</span> <span class="title">FooCellSection</span> <span class="inheritance">&lt; <span class="parent">Prime::Section</span></span></span>
74
- element <span class="symbol">:title</span>, <span class="symbol">text:</span> proc { model[<span class="symbol">:title</span>] }
75
- <span class="keyword">end</span></pre></div>
76
-
77
-
78
-
79
- <p><strong> Create a Table Section. </strong></p>
80
- <p>Just inherit it from <code>Prime::TableSection</code>. </p>
81
- <p>The key method which should be created is <code>table_data</code>. It should return array of any sections.</p>
82
-
83
-
84
- <div class='highlight'><pre><span class="class"><span class="keyword">class</span> <span class="title">FooTableSection</span> <span class="inheritance">&lt; <span class="parent">Prime::TableSection</span></span></span>
85
- <span class="function"><span class="keyword">def</span> <span class="title">table_data</span></span>
86
- my_foo_items.map <span class="keyword">do</span> |fruit_name|
87
- model = {<span class="symbol">title:</span> fruit_name}
88
- <span class="constant">FooCellSection</span>.new(<span class="symbol">model:</span> model)
89
- <span class="keyword">end</span>
90
- <span class="keyword">end</span>
91
-
92
- <span class="function"><span class="keyword">def</span> <span class="title">my_foo_items</span></span>
93
- <span class="string">%w[Orange Apricot Banana]</span>
94
- <span class="keyword">end</span>
95
- <span class="keyword">end</span></pre></div>
96
-
97
-
98
-
99
- <p><strong> Render table to a Screen. </strong></p>
100
-
101
-
102
- <div class='highlight'><pre><span class="class"><span class="keyword">class</span> <span class="title">FooScreen</span> <span class="inheritance">&lt; <span class="parent">Prime::Screen</span></span></span>
103
- <span class="function"><span class="keyword">def</span> <span class="title">render</span></span>
104
- <span class="variable">@main_section</span> = <span class="constant">FooTableSection</span>.new(<span class="symbol">screen:</span> <span class="keyword">self</span>)
105
- <span class="variable">@main_section</span>.render
106
- <span class="keyword">end</span>
107
- <span class="keyword">end</span></pre></div>
108
-
109
-
110
-
111
- <p><strong> Style it. </strong></p>
112
- <p>Of course, don&#39;t forget to add styles for table cells.</p>
113
-
114
-
115
- <div class='highlight'><pre><span class="constant">Prime::Styles</span>.define <span class="symbol">:foo_cell</span> <span class="keyword">do</span>
116
- style <span class="symbol">:title</span>,
117
- <span class="symbol">left:</span> <span class="number">20</span>,
118
- <span class="symbol">top:</span> <span class="number">5</span>,
119
- <span class="symbol">width:</span> <span class="number">200</span>,
120
- <span class="symbol">height:</span> <span class="number">20</span>
121
- <span class="keyword">end</span></pre></div>
122
-
123
-
124
- <div class="fleur">h</div>
125
- </div>
126
- </div>
127
- </body>
128
- </html>
@@ -1,3 +0,0 @@
1
- class SampleSection < Prime::Section
2
- element :description, text: "Lorem Ipsum"
3
- end