ovto 0.2.3 → 0.3.0

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 (64) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/CHANGELOG.md +9 -1
  4. data/Gemfile.lock +6 -6
  5. data/README.md +7 -5
  6. data/Rakefile +2 -0
  7. data/book/api/actions.md +2 -2
  8. data/book/api/app.md +6 -6
  9. data/book/api/component.md +6 -6
  10. data/book/guides/debugging.md +9 -0
  11. data/book/guides/tutorial.md +12 -12
  12. data/docs/api/Ovto.html +168 -20
  13. data/docs/api/Ovto/Actions.html +1 -1
  14. data/docs/api/Ovto/App.html +1 -1
  15. data/docs/api/Ovto/Component.html +1 -1
  16. data/docs/api/Ovto/Component/MoreThanOneNode.html +1 -1
  17. data/docs/api/Ovto/Runtime.html +1 -1
  18. data/docs/api/Ovto/State.html +1 -1
  19. data/docs/api/Ovto/State/MissingValue.html +1 -1
  20. data/docs/api/Ovto/State/UnknownKey.html +1 -1
  21. data/docs/api/Ovto/WiredActions.html +1 -1
  22. data/docs/api/_index.html +1 -1
  23. data/docs/api/actions.html +4 -4
  24. data/docs/api/app.html +8 -8
  25. data/docs/api/component.html +8 -8
  26. data/docs/api/fetch.html +392 -0
  27. data/docs/api/file.README.html +10 -8
  28. data/docs/api/index.html +10 -8
  29. data/docs/api/method_list.html +59 -35
  30. data/docs/api/state.html +2 -2
  31. data/docs/api/top-level-namespace.html +1 -1
  32. data/docs/gitbook/gitbook.js +2 -2
  33. data/docs/gitbook/theme.js +1 -1
  34. data/docs/guides/debugging.html +7 -2
  35. data/docs/guides/development.html +2 -2
  36. data/docs/guides/tutorial.html +14 -14
  37. data/docs/index.html +12 -68
  38. data/docs/search_index.json +1 -1
  39. data/{example → examples}/sinatra/Gemfile +0 -0
  40. data/{example → examples}/sinatra/Gemfile.lock +10 -22
  41. data/{example → examples}/sinatra/README.md +1 -1
  42. data/{example → examples}/sinatra/app.rb +0 -0
  43. data/{example → examples}/sinatra/config.ru +0 -9
  44. data/{example → examples}/sinatra/ovto/app.rb +2 -2
  45. data/{example → examples}/sinatra/public/style.css +0 -0
  46. data/{example → examples}/sinatra/public/todomvc-app-css_index.css +0 -0
  47. data/{example → examples}/sinatra/public/todomvc-common_base.css +0 -0
  48. data/{example → examples}/sinatra/views/index.erb +1 -1
  49. data/{example → examples}/static/Gemfile +0 -0
  50. data/{example → examples}/static/Gemfile.lock +2 -2
  51. data/{example → examples}/static/README.md +1 -1
  52. data/{example → examples}/static/Rakefile +0 -0
  53. data/{example → examples}/static/app.rb +2 -2
  54. data/{example → examples}/static/index.html +1 -1
  55. data/index.html +44 -0
  56. data/lib/ovto.rb +8 -0
  57. data/lib/ovto/app.rb +18 -1
  58. data/lib/ovto/component.rb +2 -1
  59. data/lib/ovto/version.rb +1 -1
  60. data/ovtologo.odg +0 -0
  61. data/ovtologo.png +0 -0
  62. data/website/screen.css +18 -0
  63. metadata +23 -19
  64. data/example/static/app.js +0 -24808
@@ -293,7 +293,7 @@
293
293
  </div>
294
294
 
295
295
  <div id="footer">
296
- Generated on Tue Nov 13 16:32:29 2018 by
296
+ Generated on Mon Dec 24 21:23:44 2018 by
297
297
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
298
298
  0.9.16 (ruby-2.5.3).
299
299
  </div>
@@ -610,7 +610,7 @@
610
610
  </div>
611
611
 
612
612
  <div id="footer">
613
- Generated on Tue Nov 13 16:32:29 2018 by
613
+ Generated on Mon Dec 24 21:23:44 2018 by
614
614
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
615
615
  0.9.16 (ruby-2.5.3).
616
616
  </div>
@@ -340,7 +340,7 @@
340
340
  </div>
341
341
 
342
342
  <div id="footer">
343
- Generated on Tue Nov 13 16:32:29 2018 by
343
+ Generated on Mon Dec 24 21:23:44 2018 by
344
344
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
345
345
  0.9.16 (ruby-2.5.3).
346
346
  </div>
@@ -125,7 +125,7 @@
125
125
  </div>
126
126
 
127
127
  <div id="footer">
128
- Generated on Tue Nov 13 16:32:29 2018 by
128
+ Generated on Mon Dec 24 21:23:44 2018 by
129
129
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
130
130
  0.9.16 (ruby-2.5.3).
131
131
  </div>
@@ -305,7 +305,7 @@
305
305
  </div>
306
306
 
307
307
  <div id="footer">
308
- Generated on Tue Nov 13 16:32:29 2018 by
308
+ Generated on Mon Dec 24 21:23:44 2018 by
309
309
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
310
310
  0.9.16 (ruby-2.5.3).
311
311
  </div>
@@ -842,7 +842,7 @@
842
842
  </div>
843
843
 
844
844
  <div id="footer">
845
- Generated on Tue Nov 13 16:32:29 2018 by
845
+ Generated on Mon Dec 24 21:23:44 2018 by
846
846
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
847
847
  0.9.16 (ruby-2.5.3).
848
848
  </div>
@@ -125,7 +125,7 @@
125
125
  </div>
126
126
 
127
127
  <div id="footer">
128
- Generated on Tue Nov 13 16:32:29 2018 by
128
+ Generated on Mon Dec 24 21:23:44 2018 by
129
129
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
130
130
  0.9.16 (ruby-2.5.3).
131
131
  </div>
@@ -125,7 +125,7 @@
125
125
  </div>
126
126
 
127
127
  <div id="footer">
128
- Generated on Tue Nov 13 16:32:29 2018 by
128
+ Generated on Mon Dec 24 21:23:44 2018 by
129
129
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
130
130
  0.9.16 (ruby-2.5.3).
131
131
  </div>
@@ -333,7 +333,7 @@
333
333
  </div>
334
334
 
335
335
  <div id="footer">
336
- Generated on Tue Nov 13 16:32:29 2018 by
336
+ Generated on Mon Dec 24 21:23:44 2018 by
337
337
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
338
338
  0.9.16 (ruby-2.5.3).
339
339
  </div>
data/docs/api/_index.html CHANGED
@@ -221,7 +221,7 @@
221
221
  </div>
222
222
 
223
223
  <div id="footer">
224
- Generated on Tue Nov 13 16:32:28 2018 by
224
+ Generated on Mon Dec 24 21:23:44 2018 by
225
225
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
226
226
  0.9.16 (ruby-2.5.3).
227
227
  </div>
@@ -7,7 +7,7 @@
7
7
  <title>Ovto::Actions · GitBook</title>
8
8
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
9
9
  <meta name="description" content="">
10
- <meta name="generator" content="GitBook 3.2.3">
10
+ <meta name="generator" content="GitBook 3.2.2">
11
11
 
12
12
 
13
13
 
@@ -312,7 +312,7 @@ the <code>Actions</code> class. Here is some more conventions:</p>
312
312
  <span class="hljs-keyword">end</span>
313
313
  <span class="hljs-keyword">end</span>
314
314
 
315
- <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">View</span> &lt; Ovto::Component</span>
315
+ <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">MainComponent</span> &lt; Ovto::Component</span>
316
316
  <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">render</span><span class="hljs-params">(<span class="hljs-symbol">state:</span>)</span></span>
317
317
  o <span class="hljs-string">&apos;span&apos;</span>, state.count
318
318
  o <span class="hljs-string">&apos;button&apos;</span>, <span class="hljs-symbol">onclick:</span> -&gt;{ actions.increment(<span class="hljs-symbol">by:</span> <span class="hljs-number">1</span>) }
@@ -320,7 +320,7 @@ the <code>Actions</code> class. Here is some more conventions:</p>
320
320
  <span class="hljs-keyword">end</span>
321
321
  <span class="hljs-keyword">end</span>
322
322
 
323
- MyApp.run(<span class="hljs-symbol">id:</span> <span class="hljs-string">&apos;ovto-view&apos;</span>)
323
+ MyApp.run(<span class="hljs-symbol">id:</span> <span class="hljs-string">&apos;ovto&apos;</span>)
324
324
  </code></pre>
325
325
  <h2 id="calling-actions">Calling actions</h2>
326
326
  <p>Actions can be called from components via <code>actions</code> method. This is an instance of
@@ -394,7 +394,7 @@ In such cases, you can call another action via <code>actions</code> to tell Ovto
394
394
  <script>
395
395
  var gitbook = gitbook || [];
396
396
  gitbook.push(function() {
397
- gitbook.page.hasChanged({"page":{"title":"Ovto::Actions","level":"1.3.3","depth":2,"next":{"title":"Ovto::Component","level":"1.3.4","depth":2,"path":"api/component.md","ref":"api/component.md","articles":[]},"previous":{"title":"Ovto::State","level":"1.3.2","depth":2,"path":"api/state.md","ref":"api/state.md","articles":[]},"dir":"ltr"},"config":{"gitbook":"*","theme":"default","variables":{},"plugins":[],"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"api/actions.md","mtime":"2018-10-27T08:57:46.000Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2018-11-13T07:32:25.426Z"},"basePath":"..","book":{"language":""}});
397
+ gitbook.page.hasChanged({"page":{"title":"Ovto::Actions","level":"1.3.3","depth":2,"next":{"title":"Ovto::Component","level":"1.3.4","depth":2,"path":"api/component.md","ref":"api/component.md","articles":[]},"previous":{"title":"Ovto::State","level":"1.3.2","depth":2,"path":"api/state.md","ref":"api/state.md","articles":[]},"dir":"ltr"},"config":{"gitbook":"*","theme":"default","variables":{},"plugins":[],"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"api/actions.md","mtime":"2018-12-23T09:45:52.000Z","type":"markdown"},"gitbook":{"version":"3.2.2","time":"2018-12-24T12:23:40.758Z"},"basePath":"..","book":{"language":""}});
398
398
  });
399
399
  </script>
400
400
  </div>
data/docs/api/app.html CHANGED
@@ -7,7 +7,7 @@
7
7
  <title>Ovto::App · GitBook</title>
8
8
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
9
9
  <meta name="description" content="">
10
- <meta name="generator" content="GitBook 3.2.3">
10
+ <meta name="generator" content="GitBook 3.2.2">
11
11
 
12
12
 
13
13
 
@@ -289,7 +289,7 @@
289
289
 
290
290
  <h1 id="ovtoapp">Ovto::App</h1>
291
291
  <p>First of all, you need to define a subclass of <code>Ovto::App</code> and define <code>class State</code>,
292
- <code>class Actions</code> and <code>class View</code> in it.</p>
292
+ <code>class Actions</code> and <code>class MainComponent</code> in it.</p>
293
293
  <h2 id="example">Example</h2>
294
294
  <p>This is a smallest Ovto app.</p>
295
295
  <pre><code class="lang-rb"><span class="hljs-keyword">require</span> <span class="hljs-string">&apos;opal&apos;</span>
@@ -302,14 +302,14 @@
302
302
  <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Actions</span> &lt; Ovto::Actions</span>
303
303
  <span class="hljs-keyword">end</span>
304
304
 
305
- <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">View</span> &lt; Ovto::Component</span>
305
+ <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">MainComponent</span> &lt; Ovto::Component</span>
306
306
  <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">render</span><span class="hljs-params">(<span class="hljs-symbol">state:</span>)</span></span>
307
307
  o <span class="hljs-string">&apos;input&apos;</span>, <span class="hljs-symbol">type:</span> <span class="hljs-string">&apos;button&apos;</span>, <span class="hljs-symbol">value:</span> <span class="hljs-string">&apos;Hello&apos;</span>
308
308
  <span class="hljs-keyword">end</span>
309
309
  <span class="hljs-keyword">end</span>
310
310
  <span class="hljs-keyword">end</span>
311
311
 
312
- MyApp.run(<span class="hljs-symbol">id:</span> <span class="hljs-string">&apos;ovto-view&apos;</span>)
312
+ MyApp.run(<span class="hljs-symbol">id:</span> <span class="hljs-string">&apos;ovto&apos;</span>)
313
313
  </code></pre>
314
314
  <p>It renders a button and does nothing else. Let&apos;s have some fun:</p>
315
315
  <pre><code class="lang-rb"><span class="hljs-keyword">require</span> <span class="hljs-string">&apos;opal&apos;</span>
@@ -329,7 +329,7 @@ MyApp.run(<span class="hljs-symbol">id:</span> <span class="hljs-string">&apos;o
329
329
  <span class="hljs-keyword">end</span>
330
330
  <span class="hljs-keyword">end</span>
331
331
 
332
- <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">View</span> &lt; Ovto::Component</span>
332
+ <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">MainComponent</span> &lt; Ovto::Component</span>
333
333
  <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">render</span><span class="hljs-params">(<span class="hljs-symbol">state:</span>)</span></span>
334
334
  o <span class="hljs-string">&apos;input&apos;</span>, {
335
335
  <span class="hljs-symbol">type:</span> <span class="hljs-string">&apos;button&apos;</span>,
@@ -341,7 +341,7 @@ MyApp.run(<span class="hljs-symbol">id:</span> <span class="hljs-string">&apos;o
341
341
  <span class="hljs-keyword">end</span>
342
342
  <span class="hljs-keyword">end</span>
343
343
 
344
- MyApp.run(<span class="hljs-symbol">id:</span> <span class="hljs-string">&apos;ovto-view&apos;</span>)
344
+ MyApp.run(<span class="hljs-symbol">id:</span> <span class="hljs-string">&apos;ovto&apos;</span>)
345
345
  </code></pre>
346
346
  <p>Here we added <code>color_idx</code> to app state and <code>update_color</code> action to change it.
347
347
  The button is updated to have the color indicated by <code>color_idx</code> and
@@ -357,7 +357,7 @@ now has <code>onclick</code> event handler which executes the action.</p>
357
357
  ...
358
358
  <span class="hljs-keyword">end</span>
359
359
 
360
- MyApp.run(<span class="hljs-symbol">id:</span> <span class="hljs-string">&apos;ovto-view&apos;</span>)
360
+ MyApp.run(<span class="hljs-symbol">id:</span> <span class="hljs-string">&apos;ovto&apos;</span>)
361
361
  </code></pre>
362
362
 
363
363
 
@@ -398,7 +398,7 @@ MyApp.run(<span class="hljs-symbol">id:</span> <span class="hljs-string">&apos;o
398
398
  <script>
399
399
  var gitbook = gitbook || [];
400
400
  gitbook.push(function() {
401
- gitbook.page.hasChanged({"page":{"title":"Ovto::App","level":"1.3.1","depth":2,"next":{"title":"Ovto::State","level":"1.3.2","depth":2,"path":"api/state.md","ref":"api/state.md","articles":[]},"previous":{"title":"API","level":"1.3","depth":1,"ref":"","articles":[{"title":"Ovto::App","level":"1.3.1","depth":2,"path":"api/app.md","ref":"api/app.md","articles":[]},{"title":"Ovto::State","level":"1.3.2","depth":2,"path":"api/state.md","ref":"api/state.md","articles":[]},{"title":"Ovto::Actions","level":"1.3.3","depth":2,"path":"api/actions.md","ref":"api/actions.md","articles":[]},{"title":"Ovto::Component","level":"1.3.4","depth":2,"path":"api/component.md","ref":"api/component.md","articles":[]},{"title":"Ovto.fetch","level":"1.3.5","depth":2,"path":"api/fetch.md","ref":"api/fetch.md","articles":[]}]},"dir":"ltr"},"config":{"gitbook":"*","theme":"default","variables":{},"plugins":[],"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"api/app.md","mtime":"2018-10-27T08:04:24.000Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2018-11-13T07:32:25.426Z"},"basePath":"..","book":{"language":""}});
401
+ gitbook.page.hasChanged({"page":{"title":"Ovto::App","level":"1.3.1","depth":2,"next":{"title":"Ovto::State","level":"1.3.2","depth":2,"path":"api/state.md","ref":"api/state.md","articles":[]},"previous":{"title":"API","level":"1.3","depth":1,"ref":"","articles":[{"title":"Ovto::App","level":"1.3.1","depth":2,"path":"api/app.md","ref":"api/app.md","articles":[]},{"title":"Ovto::State","level":"1.3.2","depth":2,"path":"api/state.md","ref":"api/state.md","articles":[]},{"title":"Ovto::Actions","level":"1.3.3","depth":2,"path":"api/actions.md","ref":"api/actions.md","articles":[]},{"title":"Ovto::Component","level":"1.3.4","depth":2,"path":"api/component.md","ref":"api/component.md","articles":[]},{"title":"Ovto.fetch","level":"1.3.5","depth":2,"path":"api/fetch.md","ref":"api/fetch.md","articles":[]}]},"dir":"ltr"},"config":{"gitbook":"*","theme":"default","variables":{},"plugins":[],"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"api/app.md","mtime":"2018-12-23T09:45:52.000Z","type":"markdown"},"gitbook":{"version":"3.2.2","time":"2018-12-24T12:23:40.758Z"},"basePath":"..","book":{"language":""}});
402
402
  });
403
403
  </script>
404
404
  </div>
@@ -7,7 +7,7 @@
7
7
  <title>Ovto::Component · GitBook</title>
8
8
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
9
9
  <meta name="description" content="">
10
- <meta name="generator" content="GitBook 3.2.3">
10
+ <meta name="generator" content="GitBook 3.2.2">
11
11
 
12
12
 
13
13
 
@@ -290,11 +290,11 @@
290
290
  <section class="normal markdown-section">
291
291
 
292
292
  <h1 id="ovtocomponent">Ovto::Component</h1>
293
- <p>Your app must have a <code>View</code> class, a subclass of <code>Ovto::Component</code>.</p>
293
+ <p>An Ovto app must have <code>MainComponent</code> class, a subclass of <code>Ovto::Component</code>.</p>
294
294
  <h2 id="render-method">&apos;render&apos; method</h2>
295
- <p><code>render</code> is the only method you need to define in the <code>View</code> class.
295
+ <p><code>render</code> is the only method you need to define in the <code>MainComponent</code> class.
296
296
  It must take the global app state as a keyword argument <code>state:</code>.</p>
297
- <pre><code class="lang-rb"> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">View</span> &lt; Ovto::Component</span>
297
+ <pre><code class="lang-rb"> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">MainComponent</span> &lt; Ovto::Component</span>
298
298
  <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">render</span><span class="hljs-params">(<span class="hljs-symbol">state:</span>)</span></span>
299
299
  o <span class="hljs-string">&apos;div&apos;</span> <span class="hljs-keyword">do</span>
300
300
  o <span class="hljs-string">&apos;h1&apos;</span>, <span class="hljs-string">&apos;Your todos&apos;</span>
@@ -318,7 +318,7 @@ It must take the global app state as a keyword argument <code>state:</code>.</p>
318
318
  <span class="hljs-keyword">end</span>
319
319
  <span class="hljs-keyword">end</span>
320
320
 
321
- <span class="hljs-comment">#=&gt; $MoreThanOneNode {name: &quot;MoreThanOneNode&quot;, message: &quot;MyApp::View#render must generate a single DOM node. Please wrap the tags with a &apos;div&apos; or something.&quot;, stack: &quot;MoreThanOneNode: MyApp::View#render must generate &#x2026;opbox/proj/ovto/example/tutorial/app.js:22887:18)&quot;}</span>
321
+ <span class="hljs-comment">#=&gt; $MoreThanOneNode {name: &quot;MoreThanOneNode&quot;, ...}</span>
322
322
  </code></pre>
323
323
  <h2 id="the-o-method">The &apos;o&apos; method</h2>
324
324
  <p><a name="the-o-method"></a></p>
@@ -387,8 +387,8 @@ You can get the input value with <code>e.target.value</code> here.</p>
387
387
  <span class="hljs-keyword">end</span>
388
388
  <span class="hljs-keyword">end</span>
389
389
 
390
- <span class="hljs-comment"># Main View class</span>
391
- <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">View</span> &lt; Ovto::Component</span>
390
+ <span class="hljs-comment"># Main component</span>
391
+ <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">MainComponent</span> &lt; Ovto::Component</span>
392
392
  <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">render</span><span class="hljs-params">(<span class="hljs-symbol">state:</span>)</span></span>
393
393
  o <span class="hljs-string">&apos;div&apos;</span> <span class="hljs-keyword">do</span>
394
394
  o <span class="hljs-string">&apos;h1&apos;</span>, <span class="hljs-string">&apos;Your todos&apos;</span>
@@ -455,7 +455,7 @@ HTML could be described like this.</p>
455
455
  <script>
456
456
  var gitbook = gitbook || [];
457
457
  gitbook.push(function() {
458
- gitbook.page.hasChanged({"page":{"title":"Ovto::Component","level":"1.3.4","depth":2,"next":{"title":"Ovto.fetch","level":"1.3.5","depth":2,"path":"api/fetch.md","ref":"api/fetch.md","articles":[]},"previous":{"title":"Ovto::Actions","level":"1.3.3","depth":2,"path":"api/actions.md","ref":"api/actions.md","articles":[]},"dir":"ltr"},"config":{"gitbook":"*","theme":"default","variables":{},"plugins":[],"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"api/component.md","mtime":"2018-11-11T07:17:36.000Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2018-11-13T07:32:25.426Z"},"basePath":"..","book":{"language":""}});
458
+ gitbook.page.hasChanged({"page":{"title":"Ovto::Component","level":"1.3.4","depth":2,"next":{"title":"Ovto.fetch","level":"1.3.5","depth":2,"path":"api/fetch.md","ref":"api/fetch.md","articles":[]},"previous":{"title":"Ovto::Actions","level":"1.3.3","depth":2,"path":"api/actions.md","ref":"api/actions.md","articles":[]},"dir":"ltr"},"config":{"gitbook":"*","theme":"default","variables":{},"plugins":[],"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"api/component.md","mtime":"2018-12-23T09:45:52.000Z","type":"markdown"},"gitbook":{"version":"3.2.2","time":"2018-12-24T12:23:40.758Z"},"basePath":"..","book":{"language":""}});
459
459
  });
460
460
  </script>
461
461
  </div>
@@ -0,0 +1,392 @@
1
+
2
+ <!DOCTYPE HTML>
3
+ <html lang="" >
4
+ <head>
5
+ <meta charset="UTF-8">
6
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
7
+ <title>Ovto.fetch · GitBook</title>
8
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
9
+ <meta name="description" content="">
10
+ <meta name="generator" content="GitBook 3.2.2">
11
+
12
+
13
+
14
+
15
+ <link rel="stylesheet" href="../gitbook/style.css">
16
+
17
+
18
+
19
+
20
+ <link rel="stylesheet" href="../gitbook/gitbook-plugin-highlight/website.css">
21
+
22
+
23
+
24
+ <link rel="stylesheet" href="../gitbook/gitbook-plugin-search/search.css">
25
+
26
+
27
+
28
+ <link rel="stylesheet" href="../gitbook/gitbook-plugin-fontsettings/website.css">
29
+
30
+
31
+
32
+
33
+
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+
52
+ <meta name="HandheldFriendly" content="true"/>
53
+ <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
54
+ <meta name="apple-mobile-web-app-capable" content="yes">
55
+ <meta name="apple-mobile-web-app-status-bar-style" content="black">
56
+ <link rel="apple-touch-icon-precomposed" sizes="152x152" href="../gitbook/images/apple-touch-icon-precomposed-152.png">
57
+ <link rel="shortcut icon" href="../gitbook/images/favicon.ico" type="image/x-icon">
58
+
59
+
60
+
61
+ <link rel="prev" href="component.html" />
62
+
63
+
64
+ </head>
65
+ <body>
66
+
67
+ <div class="book">
68
+ <div class="book-summary">
69
+
70
+
71
+ <div id="book-search-input" role="search">
72
+ <input type="text" placeholder="Type to search" />
73
+ </div>
74
+
75
+
76
+ <nav role="navigation">
77
+
78
+
79
+
80
+ <ul class="summary">
81
+
82
+
83
+
84
+
85
+
86
+
87
+
88
+
89
+
90
+ <li class="chapter " data-level="1.1" data-path="../">
91
+
92
+ <a href="../">
93
+
94
+
95
+ Introduction
96
+
97
+ </a>
98
+
99
+
100
+
101
+ </li>
102
+
103
+ <li class="chapter " data-level="1.2" data-path="../guides/tutorial.html">
104
+
105
+ <a href="../guides/tutorial.html">
106
+
107
+
108
+ Getting Started
109
+
110
+ </a>
111
+
112
+
113
+
114
+ </li>
115
+
116
+ <li class="chapter " data-level="1.3" >
117
+
118
+ <span>
119
+
120
+
121
+ API
122
+
123
+ </span>
124
+
125
+
126
+
127
+ <ul class="articles">
128
+
129
+
130
+ <li class="chapter " data-level="1.3.1" data-path="app.html">
131
+
132
+ <a href="app.html">
133
+
134
+
135
+ Ovto::App
136
+
137
+ </a>
138
+
139
+
140
+
141
+ </li>
142
+
143
+ <li class="chapter " data-level="1.3.2" data-path="state.html">
144
+
145
+ <a href="state.html">
146
+
147
+
148
+ Ovto::State
149
+
150
+ </a>
151
+
152
+
153
+
154
+ </li>
155
+
156
+ <li class="chapter " data-level="1.3.3" data-path="actions.html">
157
+
158
+ <a href="actions.html">
159
+
160
+
161
+ Ovto::Actions
162
+
163
+ </a>
164
+
165
+
166
+
167
+ </li>
168
+
169
+ <li class="chapter " data-level="1.3.4" data-path="component.html">
170
+
171
+ <a href="component.html">
172
+
173
+
174
+ Ovto::Component
175
+
176
+ </a>
177
+
178
+
179
+
180
+ </li>
181
+
182
+ <li class="chapter active" data-level="1.3.5" data-path="fetch.html">
183
+
184
+ <a href="fetch.html">
185
+
186
+
187
+ Ovto.fetch
188
+
189
+ </a>
190
+
191
+
192
+
193
+ </li>
194
+
195
+
196
+ </ul>
197
+
198
+ </li>
199
+
200
+ <li class="chapter " data-level="1.4" >
201
+
202
+ <span>
203
+
204
+
205
+ Guides
206
+
207
+ </span>
208
+
209
+
210
+
211
+ <ul class="articles">
212
+
213
+
214
+ <li class="chapter " data-level="1.4.1" data-path="../guides/debugging.html">
215
+
216
+ <a href="../guides/debugging.html">
217
+
218
+
219
+ Debugging
220
+
221
+ </a>
222
+
223
+
224
+
225
+ </li>
226
+
227
+ <li class="chapter " data-level="1.4.2" data-path="../guides/development.html">
228
+
229
+ <a href="../guides/development.html">
230
+
231
+
232
+ Development
233
+
234
+ </a>
235
+
236
+
237
+
238
+ </li>
239
+
240
+
241
+ </ul>
242
+
243
+ </li>
244
+
245
+
246
+
247
+
248
+ <li class="divider"></li>
249
+
250
+ <li>
251
+ <a href="https://www.gitbook.com" target="blank" class="gitbook-link">
252
+ Published with GitBook
253
+ </a>
254
+ </li>
255
+ </ul>
256
+
257
+
258
+ </nav>
259
+
260
+
261
+ </div>
262
+
263
+ <div class="book-body">
264
+
265
+ <div class="body-inner">
266
+
267
+
268
+
269
+ <div class="book-header" role="navigation">
270
+
271
+
272
+ <!-- Title -->
273
+ <h1>
274
+ <i class="fa fa-circle-o-notch fa-spin"></i>
275
+ <a href=".." >Ovto.fetch</a>
276
+ </h1>
277
+ </div>
278
+
279
+
280
+
281
+
282
+ <div class="page-wrapper" tabindex="-1" role="main">
283
+ <div class="page-inner">
284
+
285
+ <div id="book-search-results">
286
+ <div class="search-noresults">
287
+
288
+ <section class="normal markdown-section">
289
+
290
+ <h1 id="ovtofetch">Ovto.fetch</h1>
291
+ <p>Ovto provides wrapper of <a href="https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch" target="_blank">Fetch API</a>, for convenience of calling typical server-side APIs (eg. those generated by <code>rails scaffold</code> command.)</p>
292
+ <p><code>Ovto.fetch</code> returns Opal&apos;s Promise object that calls the API with the specified parameters.</p>
293
+ <h2 id="examples">Examples</h2>
294
+ <p>GET</p>
295
+ <pre><code class="lang-rb">Ovto.fetch(<span class="hljs-string">&apos;/api/tasks&apos;</span>){|json_data|
296
+ p json_data
297
+ }.fail{|e| <span class="hljs-comment"># Network error, 404 Not Found, JSON parse error, etc.</span>
298
+ p e
299
+ }
300
+ </code></pre>
301
+ <p>POST</p>
302
+ <pre><code class="lang-rb">Ovto.fetch(<span class="hljs-string">&apos;/api/new_task&apos;</span>, <span class="hljs-string">&apos;POST&apos;</span>, {<span class="hljs-symbol">title:</span> <span class="hljs-string">&quot;do something&quot;</span>}){|json_data|
303
+ p json_data
304
+ }.fail{|e| <span class="hljs-comment"># Network error, 404 Not Found, JSON parse error, etc.</span>
305
+ p e
306
+ }
307
+ </code></pre>
308
+ <p>PUT</p>
309
+ <pre><code class="lang-rb">Ovto.fetch(<span class="hljs-string">&apos;/api/tasks/1&apos;</span>, <span class="hljs-string">&apos;PUT&apos;</span>, {<span class="hljs-symbol">title:</span> <span class="hljs-string">&quot;do something&quot;</span>}){|json_data|
310
+ p json_data
311
+ }.fail{|e| <span class="hljs-comment"># Network error, 404 Not Found, JSON parse error, etc.</span>
312
+ p e
313
+ }
314
+ </code></pre>
315
+ <h2 id="csrf-tokens">CSRF tokens</h2>
316
+ <p>You don&apos;t need to care about CSRF tokens if the server is a Rails app because <code>Ovto.fetch</code> automatically send <code>X-CSRF-Token</code> header if the page contains a meta tag like <code>&lt;meta name=&apos;csrf-token&apos; content=&apos;....&apos; /&gt;</code>.</p>
317
+
318
+
319
+ </section>
320
+
321
+ </div>
322
+ <div class="search-results">
323
+ <div class="has-results">
324
+
325
+ <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
326
+ <ul class="search-results-list"></ul>
327
+
328
+ </div>
329
+ <div class="no-results">
330
+
331
+ <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
332
+
333
+ </div>
334
+ </div>
335
+ </div>
336
+
337
+ </div>
338
+ </div>
339
+
340
+ </div>
341
+
342
+
343
+
344
+ <a href="component.html" class="navigation navigation-prev navigation-unique" aria-label="Previous page: Ovto::Component">
345
+ <i class="fa fa-angle-left"></i>
346
+ </a>
347
+
348
+
349
+
350
+
351
+ </div>
352
+
353
+ <script>
354
+ var gitbook = gitbook || [];
355
+ gitbook.push(function() {
356
+ gitbook.page.hasChanged({"page":{"title":"Ovto.fetch","level":"1.3.5","depth":2,"next":{"title":"Guides","level":"1.4","depth":1,"ref":"","articles":[{"title":"Debugging","level":"1.4.1","depth":2,"path":"guides/debugging.md","ref":"guides/debugging.md","articles":[]},{"title":"Development","level":"1.4.2","depth":2,"path":"guides/development.md","ref":"guides/development.md","articles":[]}]},"previous":{"title":"Ovto::Component","level":"1.3.4","depth":2,"path":"api/component.md","ref":"api/component.md","articles":[]},"dir":"ltr"},"config":{"gitbook":"*","theme":"default","variables":{},"plugins":[],"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"api/fetch.md","mtime":"2018-08-18T07:44:18.000Z","type":"markdown"},"gitbook":{"version":"3.2.2","time":"2018-12-24T12:23:40.758Z"},"basePath":"..","book":{"language":""}});
357
+ });
358
+ </script>
359
+ </div>
360
+
361
+
362
+ <script src="../gitbook/gitbook.js"></script>
363
+ <script src="../gitbook/theme.js"></script>
364
+
365
+
366
+ <script src="../gitbook/gitbook-plugin-search/search-engine.js"></script>
367
+
368
+
369
+
370
+ <script src="../gitbook/gitbook-plugin-search/search.js"></script>
371
+
372
+
373
+
374
+ <script src="../gitbook/gitbook-plugin-lunr/lunr.min.js"></script>
375
+
376
+
377
+
378
+ <script src="../gitbook/gitbook-plugin-lunr/search-lunr.js"></script>
379
+
380
+
381
+
382
+ <script src="../gitbook/gitbook-plugin-sharing/buttons.js"></script>
383
+
384
+
385
+
386
+ <script src="../gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
387
+
388
+
389
+
390
+ </body>
391
+ </html>
392
+