glib-web 0.5.47 → 0.5.48

Sign up to get free protection for your applications and to get access to all the features.
Files changed (145) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/concerns/glib/analytics/funnel.rb +0 -0
  3. data/app/controllers/concerns/glib/auth/policy.rb +0 -0
  4. data/app/controllers/concerns/glib/json/new_dynamic_text.rb +0 -0
  5. data/app/controllers/concerns/glib/json/traversal.rb +0 -0
  6. data/app/helpers/glib/app_feature_support_helper.rb +0 -0
  7. data/app/helpers/glib/dynamic_images_helper.rb +0 -0
  8. data/app/helpers/glib/dynamic_texts_helper.rb +0 -0
  9. data/app/helpers/glib/enum_helper.rb +0 -0
  10. data/app/helpers/glib/forms_helper.rb +0 -0
  11. data/app/helpers/glib/json_ui/action_builder.rb +8 -0
  12. data/app/helpers/glib/json_ui/action_builder/dialogs.rb +0 -0
  13. data/app/helpers/glib/json_ui/action_builder/http.rb +0 -0
  14. data/app/helpers/glib/json_ui/action_builder/sheets.rb +0 -0
  15. data/app/helpers/glib/json_ui/action_builder/snackbars.rb +0 -0
  16. data/app/helpers/glib/json_ui/action_builder/windows.rb +0 -0
  17. data/app/helpers/glib/json_ui/analytics_helper.rb +0 -0
  18. data/app/helpers/glib/json_ui/generic_builders.rb +0 -0
  19. data/app/helpers/glib/json_ui/list_builders.rb +1 -0
  20. data/app/helpers/glib/json_ui/menu_builder.rb +0 -0
  21. data/app/helpers/glib/json_ui/page_helper.rb +11 -3
  22. data/app/helpers/glib/json_ui/split_builders.rb +0 -0
  23. data/app/helpers/glib/json_ui/styling_helper.rb +0 -0
  24. data/app/helpers/glib/json_ui/table_builders.rb +0 -0
  25. data/app/helpers/glib/json_ui/view_builder.rb +0 -0
  26. data/app/helpers/glib/json_ui/view_builder/banners.rb +0 -0
  27. data/app/helpers/glib/urls_helper.rb +0 -0
  28. data/app/models/glib/active_storage/attachment.rb +0 -0
  29. data/app/models/glib/active_storage/blob.rb +0 -0
  30. data/app/models/glib/application_record.rb +0 -0
  31. data/app/models/glib/dynamic_text_record.rb +0 -0
  32. data/app/models/glib/text.rb +0 -0
  33. data/app/policies/glib/application_policy.rb +0 -0
  34. data/app/validators/email_typo_validator.rb +0 -0
  35. data/app/validators/email_validator.rb +0 -0
  36. data/app/validators/url_validator.rb +0 -0
  37. data/app/views/json_ui/garage/_nav_menu.json.jbuilder +0 -0
  38. data/app/views/json_ui/garage/actions/_dialogs.json.jbuilder +0 -0
  39. data/app/views/json_ui/garage/actions/_http.json.jbuilder +0 -0
  40. data/app/views/json_ui/garage/actions/_reload.json.jbuilder +0 -0
  41. data/app/views/json_ui/garage/actions/_sheets.json.jbuilder +0 -0
  42. data/app/views/json_ui/garage/actions/_snackbars.json.jbuilder +0 -0
  43. data/app/views/json_ui/garage/actions/_timeouts.json.jbuilder +0 -0
  44. data/app/views/json_ui/garage/actions/_windows.json.jbuilder +0 -0
  45. data/app/views/json_ui/garage/actions/dialogs_oauth_post.json.jbuilder +0 -0
  46. data/app/views/json_ui/garage/forms/basic.json.jbuilder +0 -0
  47. data/app/views/json_ui/garage/forms/basic_post.json.jbuilder +0 -0
  48. data/app/views/json_ui/garage/forms/checkboxes.json.jbuilder +0 -0
  49. data/app/views/json_ui/garage/forms/dynamic_group.json.jbuilder +0 -0
  50. data/app/views/json_ui/garage/forms/dynamic_select.json.jbuilder +0 -0
  51. data/app/views/json_ui/garage/forms/dynamic_select_data.json.jbuilder +0 -0
  52. data/app/views/json_ui/garage/forms/file_upload.json.jbuilder +0 -0
  53. data/app/views/json_ui/garage/forms/floating_submit.json.jbuilder +0 -0
  54. data/app/views/json_ui/garage/forms/generic_post.json.jbuilder +0 -0
  55. data/app/views/json_ui/garage/forms/get_request.json.jbuilder +20 -21
  56. data/app/views/json_ui/garage/forms/index.json.jbuilder +83 -85
  57. data/app/views/json_ui/garage/forms/new_rich_text.json.jbuilder +28 -29
  58. data/app/views/json_ui/garage/forms/pickers.json.jbuilder +41 -43
  59. data/app/views/json_ui/garage/forms/rich_text.json.jbuilder +0 -0
  60. data/app/views/json_ui/garage/forms/submission_flow.json.jbuilder +0 -0
  61. data/app/views/json_ui/garage/forms/submission_flow_post.json.jbuilder +0 -0
  62. data/app/views/json_ui/garage/forms/submission_indicator.json.jbuilder +0 -0
  63. data/app/views/json_ui/garage/forms/submission_indicator_post.json.jbuilder +0 -0
  64. data/app/views/json_ui/garage/forms/text_validation.json.jbuilder +0 -0
  65. data/app/views/json_ui/garage/home/blank.json.jbuilder +0 -0
  66. data/app/views/json_ui/garage/home/slow.json.jbuilder +0 -0
  67. data/app/views/json_ui/garage/lists/autoload_all.json.jbuilder +0 -0
  68. data/app/views/json_ui/garage/lists/autoload_as_needed.json.jbuilder +0 -0
  69. data/app/views/json_ui/garage/lists/chat_ui.json.jbuilder +0 -0
  70. data/app/views/json_ui/garage/lists/fab.json.jbuilder +0 -0
  71. data/app/views/json_ui/garage/lists/reordering.json.jbuilder +0 -0
  72. data/app/views/json_ui/garage/lists/templating.json.jbuilder +0 -0
  73. data/app/views/json_ui/garage/notifications/action_cable.json.jbuilder +26 -0
  74. data/app/views/json_ui/garage/notifications/index.json.jbuilder +5 -1
  75. data/app/views/json_ui/garage/notifications/web_socket.json.jbuilder +0 -0
  76. data/app/views/json_ui/garage/pages/flat_centered.json.jbuilder +0 -0
  77. data/app/views/json_ui/garage/pages/full_width.json.jbuilder +0 -0
  78. data/app/views/json_ui/garage/pages/full_width_height.json.jbuilder +0 -0
  79. data/app/views/json_ui/garage/pages/index.json.jbuilder +0 -0
  80. data/app/views/json_ui/garage/pages/layout.json.jbuilder +0 -0
  81. data/app/views/json_ui/garage/pages/loading_indicator.json.jbuilder +0 -0
  82. data/app/views/json_ui/garage/pages/nav_buttons.json.jbuilder +0 -0
  83. data/app/views/json_ui/garage/pages/nested_scroll.json.jbuilder +0 -0
  84. data/app/views/json_ui/garage/pages/tab_bar.json.jbuilder +0 -0
  85. data/app/views/json_ui/garage/panels/_styled.json.jbuilder +0 -0
  86. data/app/views/json_ui/garage/panels/card.json.jbuilder +0 -0
  87. data/app/views/json_ui/garage/panels/carousel.json.jbuilder +0 -0
  88. data/app/views/json_ui/garage/panels/custom.json.jbuilder +0 -0
  89. data/app/views/json_ui/garage/panels/flow.json.jbuilder +0 -0
  90. data/app/views/json_ui/garage/panels/horizontal.json.jbuilder +0 -0
  91. data/app/views/json_ui/garage/panels/index.json.jbuilder +0 -0
  92. data/app/views/json_ui/garage/panels/outlined.json.jbuilder +0 -0
  93. data/app/views/json_ui/garage/panels/responsive.json.jbuilder +0 -0
  94. data/app/views/json_ui/garage/panels/split.json.jbuilder +0 -0
  95. data/app/views/json_ui/garage/panels/vertical.json.jbuilder +0 -0
  96. data/app/views/json_ui/garage/services/dynamic_text.json.jbuilder +0 -0
  97. data/app/views/json_ui/garage/services/image.json.jbuilder +0 -0
  98. data/app/views/json_ui/garage/services/index.json.jbuilder +0 -0
  99. data/app/views/json_ui/garage/tables/_autoload_section.json.jbuilder +0 -0
  100. data/app/views/json_ui/garage/tables/autoload_all.json.jbuilder +0 -0
  101. data/app/views/json_ui/garage/tables/autoload_as_needed.json.jbuilder +0 -0
  102. data/app/views/json_ui/garage/tables/export_import.json.jbuilder +0 -0
  103. data/app/views/json_ui/garage/tables/horizontal_scroll.json.jbuilder +0 -0
  104. data/app/views/json_ui/garage/tables/index.json.jbuilder +0 -0
  105. data/app/views/json_ui/garage/tables/layout.json.jbuilder +0 -0
  106. data/app/views/json_ui/garage/views/banners.json.jbuilder +0 -0
  107. data/app/views/json_ui/garage/views/calendar_data.json.jbuilder +0 -0
  108. data/app/views/json_ui/garage/views/charts.json.jbuilder +0 -0
  109. data/app/views/json_ui/garage/views/icons.json.jbuilder +0 -0
  110. data/app/views/json_ui/garage/views/images.json.jbuilder +0 -0
  111. data/app/views/json_ui/garage/views/index.json.jbuilder +0 -0
  112. data/app/views/json_ui/garage/views/links.json.jbuilder +0 -0
  113. data/app/views/json_ui/garage/views/map_cluster_data.json.jbuilder +0 -0
  114. data/app/views/json_ui/garage/views/map_data.json.jbuilder +0 -0
  115. data/app/views/json_ui/garage/views/misc.json.jbuilder +0 -0
  116. data/app/views/json_ui/garage/views/texts.json.jbuilder +0 -0
  117. data/config/routes.rb +0 -0
  118. data/lib/generators/glib/install_generator.rb +0 -0
  119. data/lib/generators/templates/20191017062519_create_texts.rb +0 -0
  120. data/lib/generators/templates/20191024063257_add_scope_to_texts.rb +0 -0
  121. data/lib/generators/templates/20191112095018_add_lang_to_texts.rb +0 -0
  122. data/lib/generators/templates/20191126071051_create_active_storage_tables.active_storage.rb +0 -0
  123. data/lib/generators/templates/database.yml +0 -0
  124. data/lib/generators/templates/dynamic_text.rb +0 -0
  125. data/lib/glib-web.rb +0 -0
  126. data/lib/glib/crypt.rb +0 -0
  127. data/lib/glib/crypt/utils.rb +0 -0
  128. data/lib/glib/dynamic_text.rb +0 -0
  129. data/lib/glib/dynamic_text/config.rb +0 -0
  130. data/lib/glib/engine.rb +0 -0
  131. data/lib/glib/json_crawler.rb +0 -0
  132. data/lib/glib/json_crawler/action_crawler.rb +0 -0
  133. data/lib/glib/json_crawler/action_crawlers/action_http.rb +0 -0
  134. data/lib/glib/json_crawler/action_crawlers/forms_submit.rb +0 -0
  135. data/lib/glib/json_crawler/action_crawlers/menu.rb +0 -0
  136. data/lib/glib/json_crawler/action_crawlers/nav_initiate.rb +0 -0
  137. data/lib/glib/json_crawler/action_crawlers/run_multiple.rb +0 -0
  138. data/lib/glib/json_crawler/action_crawlers/windows_open.rb +0 -0
  139. data/lib/glib/json_crawler/coverage.rb +0 -0
  140. data/lib/glib/json_crawler/http.rb +0 -0
  141. data/lib/glib/mailer_tester.rb +0 -0
  142. data/lib/glib/value.rb +0 -0
  143. data/lib/glib/version.rb +0 -0
  144. data/lib/tasks/db.rake +0 -0
  145. metadata +4 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 447bcfaf2d83ed28b408d031d3e432be855228e928ea6d8a360c799ae8165d03
4
- data.tar.gz: 369e66c38dcae535bfff9b077ea64763bf42705ad3f72d264c27070a263d5662
3
+ metadata.gz: '096278d9b11151bcb169ba83f5c62c080471bb076f8ea3d34913e898a9537382'
4
+ data.tar.gz: bb831b31d185198292f251cbc3e9ab4536b1c4f3e3a28ceb32a5c7b76c25cba6
5
5
  SHA512:
6
- metadata.gz: a023dc6ebb3d9e34a9d584a1a965d132042b8dad6c849305650ee9671a48ffe05686a686f7227cf3338d40168cdfb336ac3f41e2c264f09e71f9e2c8238e8b54
7
- data.tar.gz: 92a215ad853da45033527e2ff824ca16a92ae3a737fb0217516101f5d226b1bbc0aab4fd1e443f85375fa52eafc38c6027d7cea24b8ee5e84faa013ce568f710
6
+ metadata.gz: fcbb3bded93e840d4db717c74a78bd16537e405bdc2262343274604f9940d0b768256e6df5e01225d9f699d422693f5030e0156e5b9a596a4b685575355e8347
7
+ data.tar.gz: 99c46875985b061cea7e7932bb2a86c7b1d0f613c205ec15207cf212f1703df44eb6a03bffd81a5dfbd64e5b5a89b09d5f18ca830d48b2d95b6e8260bca065e0
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -95,10 +95,18 @@ module Glib
95
95
  end
96
96
  end
97
97
 
98
+ module Cables
99
+ class Push < Action
100
+ string :channel
101
+ string :event
102
+ end
103
+ end
104
+
98
105
  module Timeouts
99
106
  class Set < Action
100
107
  int :interval # Milliseconds
101
108
  action :onTimeout
109
+ bool :repeat
102
110
  end
103
111
 
104
112
  # FUTURE
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -11,6 +11,7 @@ module Glib
11
11
  menu :rightButtons
12
12
  menu :editButtons
13
13
  menu :chips
14
+ singleton_array :styleClass, :styleClasses
14
15
 
15
16
  # def editButtons(block)
16
17
  # json.editButtons do
File without changes
@@ -201,9 +201,17 @@ module Glib
201
201
  raise "Invalid properties: #{options.keys}" if options.size > 0
202
202
  end
203
203
 
204
- def onLoad(options = {})
205
- json.onLoad do
206
- yield @action_builder
204
+ # def onLoad(options = {})
205
+ # json.onLoad do
206
+ # yield @action_builder
207
+ # end
208
+ # end
209
+
210
+ def on(options = {})
211
+ if (on_load = options[:load])
212
+ json.onLoad do
213
+ on_load.call @action_builder
214
+ end
207
215
  end
208
216
  end
209
217
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -2,27 +2,26 @@ json.title 'Forms'
2
2
 
3
3
  data = params[:user] || {}
4
4
 
5
- json_ui_page json do |page|
6
- render "#{@path_prefix}/nav_menu", json: json, page: page
7
-
8
- page.form url: json_ui_garage_url(path: 'forms/get_request'), method: 'get', padding: glib_json_padding_body, childViews: ->(form) do
9
- # TODO: Potential improvement:
10
- # Use `reload` behaviour instead of `open` (i.e. don't keep adding URL to history).
11
- # Probably introduce a flag to panels_form so developer can enable/disable this behaviour.
12
- form.h3 text: "Hello #{ data[:name] }"
13
- form.spacer height: 6
14
- form.label text: 'On the web, upon submit, URL needs to change on the browser'
15
- form.spacer height: 10
16
- form.fields_text name: 'user[name]', width: 'matchParent', label: 'Name'
17
-
18
- # form.panels_split width: 'matchParent', rightViews: ->(split) do
19
- # split.button text: 'Submit', onClick: ->(action) { action.forms_submit }
20
- # end
21
-
22
- form.panels_split width: 'matchParent', content: ->(split) do
23
- split.right childViews: ->(right) do
24
- right.button text: 'Submit', onClick: ->(action) { action.forms_submit }
25
- end
5
+ page = json_ui_page json
6
+ render "#{@path_prefix}/nav_menu", json: json, page: page
7
+
8
+ page.form url: json_ui_garage_url(path: 'forms/get_request'), method: 'get', padding: glib_json_padding_body, childViews: ->(form) do
9
+ # TODO: Potential improvement:
10
+ # Use `reload` behaviour instead of `open` (i.e. don't keep adding URL to history).
11
+ # Probably introduce a flag to panels_form so developer can enable/disable this behaviour.
12
+ form.h3 text: "Hello #{ data[:name] }"
13
+ form.spacer height: 6
14
+ form.label text: 'On the web, upon submit, URL needs to change on the browser'
15
+ form.spacer height: 10
16
+ form.fields_text name: 'user[name]', width: 'matchParent', label: 'Name'
17
+
18
+ # form.panels_split width: 'matchParent', rightViews: ->(split) do
19
+ # split.button text: 'Submit', onClick: ->(action) { action.forms_submit }
20
+ # end
21
+
22
+ form.panels_split width: 'matchParent', content: ->(split) do
23
+ split.right childViews: ->(right) do
24
+ right.button text: 'Submit', onClick: ->(action) { action.forms_submit }
26
25
  end
27
26
  end
28
27
  end
@@ -1,110 +1,108 @@
1
1
  json.title 'Forms'
2
2
 
3
- json_ui_page json do |page|
4
- render "#{@path_prefix}/nav_menu", json: json, page: page, top_nav: true
3
+ page = json_ui_page json
4
+ render "#{@path_prefix}/nav_menu", json: json, page: page, top_nav: true
5
5
 
6
- page.list sections: [
7
- ->(section) do
8
- section.header padding: glib_json_padding_list, childViews: ->(header) do
9
- header.h2 text: 'Submission Logics'
10
- end
11
-
12
- section.rows builder: ->(template) do
13
- template.thumbnail title: 'Basic Logic', onClick: ->(action) do
14
- action.windows_open url: json_ui_garage_url(path: 'forms/basic')
15
- end
16
- template.thumbnail title: "Submission Flow (timestamp: #{DateTime.current.to_i})", onClick: ->(action) do
17
- action.windows_open url: json_ui_garage_url(path: 'forms/submission_flow')
18
- end
19
- template.thumbnail title: "Submission Indicator", onClick: ->(action) do
20
- action.windows_open url: json_ui_garage_url(path: 'forms/submission_indicator')
21
- end
22
- template.thumbnail title: 'GET Request', onClick: ->(action) do
23
- action.windows_open url: json_ui_garage_url(path: 'forms/get_request')
24
- end
6
+ page.list sections: [
7
+ ->(section) do
8
+ section.header padding: glib_json_padding_list, childViews: ->(header) do
9
+ header.h2 text: 'Submission Logics'
10
+ end
25
11
 
12
+ section.rows builder: ->(template) do
13
+ template.thumbnail title: 'Basic Logic', onClick: ->(action) do
14
+ action.windows_open url: json_ui_garage_url(path: 'forms/basic')
26
15
  end
27
- end, ->(section) do
28
- section.header padding: glib_json_padding_list, childViews: ->(header) do
29
- header.h2 text: 'Form Logics'
16
+ template.thumbnail title: "Submission Flow (timestamp: #{DateTime.current.to_i})", onClick: ->(action) do
17
+ action.windows_open url: json_ui_garage_url(path: 'forms/submission_flow')
18
+ end
19
+ template.thumbnail title: "Submission Indicator", onClick: ->(action) do
20
+ action.windows_open url: json_ui_garage_url(path: 'forms/submission_indicator')
21
+ end
22
+ template.thumbnail title: 'GET Request', onClick: ->(action) do
23
+ action.windows_open url: json_ui_garage_url(path: 'forms/get_request')
30
24
  end
31
25
 
32
- section.rows builder: ->(template) do
33
- template.thumbnail title: 'Text Validation', onClick: ->(action) do
34
- action.windows_open url: json_ui_garage_url(path: 'forms/text_validation')
35
- end
36
- template.thumbnail title: 'Show/Hide', onClick: ->(action) do
37
- action.windows_open url: json_ui_garage_url(path: 'forms/show_hide')
38
- end
39
- template.thumbnail title: 'Conditional Value', onClick: ->(action) do
40
- action.windows_open url: json_ui_garage_url(path: 'forms/conditional_value')
41
- end
26
+ end
27
+ end, ->(section) do
28
+ section.header padding: glib_json_padding_list, childViews: ->(header) do
29
+ header.h2 text: 'Form Logics'
30
+ end
42
31
 
32
+ section.rows builder: ->(template) do
33
+ template.thumbnail title: 'Text Validation', onClick: ->(action) do
34
+ action.windows_open url: json_ui_garage_url(path: 'forms/text_validation')
35
+ end
36
+ template.thumbnail title: 'Show/Hide', onClick: ->(action) do
37
+ action.windows_open url: json_ui_garage_url(path: 'forms/show_hide')
43
38
  end
44
- end, ->(section) do
45
- section.header padding: glib_json_padding_list, childViews: ->(header) do
46
- header.h2 text: 'Form Fields'
39
+ template.thumbnail title: 'Conditional Value', onClick: ->(action) do
40
+ action.windows_open url: json_ui_garage_url(path: 'forms/conditional_value')
47
41
  end
48
42
 
49
- section.rows builder: ->(template) do
50
- template.thumbnail title: 'Pickers', onClick: ->(action) do
51
- action.windows_open url: json_ui_garage_url(path: 'forms/pickers')
52
- end
53
- template.thumbnail title: 'Select Fields', onClick: ->(action) do
54
- action.windows_open url: json_ui_garage_url(path: 'forms/selects')
55
- end
56
- template.thumbnail title: 'File Upload', onClick: ->(action) do
57
- action.windows_open url: json_ui_garage_url(path: 'forms/file_upload')
58
- end
59
- template.thumbnail title: 'Floating Submit', onClick: ->(action) do
60
- action.windows_open url: json_ui_garage_url(path: 'forms/floating_submit')
61
- end
43
+ end
44
+ end, ->(section) do
45
+ section.header padding: glib_json_padding_list, childViews: ->(header) do
46
+ header.h2 text: 'Form Fields'
47
+ end
62
48
 
49
+ section.rows builder: ->(template) do
50
+ template.thumbnail title: 'Pickers', onClick: ->(action) do
51
+ action.windows_open url: json_ui_garage_url(path: 'forms/pickers')
63
52
  end
64
- end, ->(section) do
65
- section.header padding: glib_json_padding_list, childViews: ->(header) do
66
- header.h2 text: 'Styling'
53
+ template.thumbnail title: 'Select Fields', onClick: ->(action) do
54
+ action.windows_open url: json_ui_garage_url(path: 'forms/selects')
67
55
  end
68
- section.rows builder: ->(template) do
69
- template.thumbnail title: 'Text Boxes', onClick: ->(action) do
70
- action.windows_open url: json_ui_garage_url(path: 'forms/styled_boxes')
71
- end
56
+ template.thumbnail title: 'File Upload', onClick: ->(action) do
57
+ action.windows_open url: json_ui_garage_url(path: 'forms/file_upload')
72
58
  end
73
- end, ->(section) do
74
- section.header padding: glib_json_padding_list, childViews: ->(header) do
75
- header.h2 text: 'Web Only'
59
+ template.thumbnail title: 'Floating Submit', onClick: ->(action) do
60
+ action.windows_open url: json_ui_garage_url(path: 'forms/floating_submit')
76
61
  end
77
62
 
78
- section.rows builder: ->(template) do
79
- template.thumbnail title: 'Rich Text Editor', onClick: ->(action) do
80
- action.windows_open url: json_ui_garage_url(path: 'forms/rich_text')
81
- end
63
+ end
64
+ end, ->(section) do
65
+ section.header padding: glib_json_padding_list, childViews: ->(header) do
66
+ header.h2 text: 'Styling'
67
+ end
68
+ section.rows builder: ->(template) do
69
+ template.thumbnail title: 'Text Boxes', onClick: ->(action) do
70
+ action.windows_open url: json_ui_garage_url(path: 'forms/styled_boxes')
82
71
  end
72
+ end
73
+ end, ->(section) do
74
+ section.header padding: glib_json_padding_list, childViews: ->(header) do
75
+ header.h2 text: 'Web Only'
76
+ end
83
77
 
84
- section.rows builder: ->(template) do
85
- template.thumbnail title: 'New Rich Text Editor', onClick: ->(action) do
86
- action.windows_open url: json_ui_garage_url(path: 'forms/new_rich_text')
87
- end
88
-
78
+ section.rows builder: ->(template) do
79
+ template.thumbnail title: 'Rich Text Editor', onClick: ->(action) do
80
+ action.windows_open url: json_ui_garage_url(path: 'forms/rich_text')
89
81
  end
90
- end, ->(section) do
91
- section.header padding: glib_json_padding_list, childViews: ->(header) do
92
- header.h2 text: 'Experimental (not required yet)'
82
+ end
83
+
84
+ section.rows builder: ->(template) do
85
+ template.thumbnail title: 'New Rich Text Editor', onClick: ->(action) do
86
+ action.windows_open url: json_ui_garage_url(path: 'forms/new_rich_text')
93
87
  end
94
88
 
95
- section.rows builder: ->(template) do
96
- template.thumbnail title: 'Dynamic Group', onClick: ->(action) do
97
- action.windows_open url: json_ui_garage_url(path: 'forms/dynamic_group')
98
- end
99
- template.thumbnail title: 'Dynamic Select', onClick: ->(action) do
100
- action.windows_open url: json_ui_garage_url(path: 'forms/dynamic_select')
101
- end
102
- template.thumbnail title: 'Checkboxes', onClick: ->(action) do
103
- action.windows_open url: json_ui_garage_url(path: 'forms/checkboxes')
104
- end
89
+ end
90
+ end, ->(section) do
91
+ section.header padding: glib_json_padding_list, childViews: ->(header) do
92
+ header.h2 text: 'Experimental (not required yet)'
93
+ end
105
94
 
95
+ section.rows builder: ->(template) do
96
+ template.thumbnail title: 'Dynamic Group', onClick: ->(action) do
97
+ action.windows_open url: json_ui_garage_url(path: 'forms/dynamic_group')
98
+ end
99
+ template.thumbnail title: 'Dynamic Select', onClick: ->(action) do
100
+ action.windows_open url: json_ui_garage_url(path: 'forms/dynamic_select')
101
+ end
102
+ template.thumbnail title: 'Checkboxes', onClick: ->(action) do
103
+ action.windows_open url: json_ui_garage_url(path: 'forms/checkboxes')
106
104
  end
107
- end
108
- ]
109
105
 
110
- end
106
+ end
107
+ end
108
+ ]
@@ -1,40 +1,39 @@
1
1
  json.title 'Forms'
2
2
 
3
- json_ui_page json do |page|
4
- render "#{@path_prefix}/nav_menu", json: json, page: page
3
+ page = json_ui_page json
4
+ render "#{@path_prefix}/nav_menu", json: json, page: page
5
5
 
6
- page.form url: json_ui_garage_url(path: 'forms/basic_post'), method: 'post', padding: { top: 12, left: 20, right: 20, bottom: 12 }, childViews: ->(form) do
7
- form.fields_text name: 'user[name]', width: 'matchParent', label: 'Name'
6
+ page.form url: json_ui_garage_url(path: 'forms/basic_post'), method: 'post', padding: { top: 12, left: 20, right: 20, bottom: 12 }, childViews: ->(form) do
7
+ form.fields_text name: 'user[name]', width: 'matchParent', label: 'Name'
8
8
 
9
- # images = [
10
- # {
11
- # value: "eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBFQT09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--193dc0d939b9558fc4973fafbba91d989cbb04d4",
12
- # fileUrl: "https://imageserver-demo.herokuapp.com/image/itinerarybuilder-demo/o6CKzNt67PWnkPdUEnWMt7pr?h=100&w=100"
13
- # }
14
- # ]
15
- # form.fields_richText name: 'user[bio]', width: 'matchParent', label: 'Content', images: images, value: '<p>Test {{image1}}</p>'
9
+ # images = [
10
+ # {
11
+ # value: "eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBFQT09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--193dc0d939b9558fc4973fafbba91d989cbb04d4",
12
+ # fileUrl: "https://imageserver-demo.herokuapp.com/image/itinerarybuilder-demo/o6CKzNt67PWnkPdUEnWMt7pr?h=100&w=100"
13
+ # }
14
+ # ]
15
+ # form.fields_richText name: 'user[bio]', width: 'matchParent', label: 'Content', images: images, value: '<p>Test {{image1}}</p>'
16
16
 
17
- json.child! do
18
- json.view 'fields/newRichText-v1'
19
- json.width 'matchParent'
20
- json.label 'Content'
21
- json.name 'user[bio]'
22
- json.value '<p>Test {{image1}}</p>'
17
+ json.child! do
18
+ json.view 'fields/newRichText-v1'
19
+ json.width 'matchParent'
20
+ json.label 'Content'
21
+ json.name 'user[bio]'
22
+ json.value '<p>Test {{image1}}</p>'
23
23
 
24
- json.images do
25
- json.child! do
26
- json.value "eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBFQT09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--193dc0d939b9558fc4973fafbba91d989cbb04d4"
27
- # json.fileTitle "hita i hanom hg.jpg"
28
- json.fileUrl "https://imageserver-demo.herokuapp.com/image/itinerarybuilder-demo/o6CKzNt67PWnkPdUEnWMt7pr?h=100&w=100"
29
- end
30
- end
31
-
32
- json.imageUploader do
33
- json.accepts(fileType: "image/*", maxFileSize: 5000)
34
- json.directUploadUrl rails_direct_uploads_url
24
+ json.images do
25
+ json.child! do
26
+ json.value "eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBFQT09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--193dc0d939b9558fc4973fafbba91d989cbb04d4"
27
+ # json.fileTitle "hita i hanom hg.jpg"
28
+ json.fileUrl "https://imageserver-demo.herokuapp.com/image/itinerarybuilder-demo/o6CKzNt67PWnkPdUEnWMt7pr?h=100&w=100"
35
29
  end
36
30
  end
37
31
 
38
- form.button text: 'Submit', onClick: ->(action) { action.forms_submit }
32
+ json.imageUploader do
33
+ json.accepts(fileType: "image/*", maxFileSize: 5000)
34
+ json.directUploadUrl rails_direct_uploads_url
35
+ end
39
36
  end
37
+
38
+ form.button text: 'Submit', onClick: ->(action) { action.forms_submit }
40
39
  end
@@ -1,48 +1,46 @@
1
1
  json.title 'Forms'
2
2
 
3
- json_ui_page json do |page|
4
- render "#{@path_prefix}/nav_menu", json: json, page: page
5
-
6
- page.form url: json_ui_garage_url(path: 'forms/generic_post'), method: 'post', padding: glib_json_padding_body, childViews: ->(form) do
7
- form.h2 text: 'Radio Group'
8
- form.spacer height: 6
9
- form.h4 text: 'Gender'
10
- form.fields_radioGroup name: 'user[gender]', value: 'F', childViews: ->(group) do
11
- group.fields_radio value: '', label: 'Unknown'
12
- group.fields_radio value: 'M', label: 'Male'
13
- group.fields_radio value: 'F', label: 'Female'
14
- end
15
-
16
- form.spacer height: 20
17
- form.h2 text: 'Single Checkbox'
18
- form.fields_check name: 'user[age_range]', value: '16+', checkValue: '16+', uncheckValue: '0-16', label: 'I am over 16 (has default value)'
19
- form.fields_check name: 'user[employer]', checkValue: 1, label: 'I am an employer (no default value)'
20
- form.fields_check name: 'user[enabled]', checkValue: true, label: 'Enable', styleClass: 'switch', value: 'true'
21
-
22
- form.spacer height: 20
23
- form.h2 text: 'Date/Time'
24
- form.spacer height: 6
25
- form.fields_date name: 'user[date]', width: 'matchParent', label: 'Date', min: '2010-01-01', max: '2012-01-01', value: '2010-02-01'
26
- form.fields_datetime name: 'user[date_time]', width: 'matchParent', label: 'Date Time', min: '2018-06-09T00:00', max: '2018-06-17T00:00', value: '2018-06-15T19:30'
27
-
28
- form.spacer height: 20
29
- form.h2 text: 'Country'
30
- form.spacer height: 6
31
- region_field = { name: 'user[city]', label: 'City' }
32
- form.fields_country name: 'user[country]', width: 'matchParent', label: 'Country', region: region_field
33
-
34
- form.spacer height: 20
35
- form.h2 text: 'Map'
36
- form.spacer height: 6
37
- form.fields_location name: 'user[address]', width: 'matchParent', label: 'Type an address', value: 'Sydney Harbour Bridge',
38
- autocompleteOptions: { componentRestrictions: { country: 'au' }, types: ['(cities)'] },
39
- latitudeField: { view: 'fields/text', name: 'user[latitude]', label: 'Lat', value: -33.8523063, readOnly: true },
40
- longitudeField: { view: 'fields/text', name: 'user[longitude]', label: 'Long', value: 151.21078710000006, readOnly: true },
41
- zoomField: { view: 'fields/text', name: 'user[zoom]', label: 'Zoom' }
42
-
43
- form.spacer height: 20
44
- form.fields_submit text: 'Submit'
45
-
3
+ page = json_ui_page json
4
+ render "#{@path_prefix}/nav_menu", json: json, page: page
5
+
6
+ page.form url: json_ui_garage_url(path: 'forms/generic_post'), method: 'post', padding: glib_json_padding_body, childViews: ->(form) do
7
+ form.h2 text: 'Radio Group'
8
+ form.spacer height: 6
9
+ form.h4 text: 'Gender'
10
+ form.fields_radioGroup name: 'user[gender]', value: 'F', childViews: ->(group) do
11
+ group.fields_radio value: '', label: 'Unknown'
12
+ group.fields_radio value: 'M', label: 'Male'
13
+ group.fields_radio value: 'F', label: 'Female'
46
14
  end
47
15
 
16
+ form.spacer height: 20
17
+ form.h2 text: 'Single Checkbox'
18
+ form.fields_check name: 'user[age_range]', value: '16+', checkValue: '16+', uncheckValue: '0-16', label: 'I am over 16 (has default value)'
19
+ form.fields_check name: 'user[employer]', checkValue: 1, label: 'I am an employer (no default value)'
20
+ form.fields_check name: 'user[enabled]', checkValue: true, label: 'Enable', styleClass: 'switch', value: 'true'
21
+
22
+ form.spacer height: 20
23
+ form.h2 text: 'Date/Time'
24
+ form.spacer height: 6
25
+ form.fields_date name: 'user[date]', width: 'matchParent', label: 'Date', min: '2010-01-01', max: '2012-01-01', value: '2010-02-01'
26
+ form.fields_datetime name: 'user[date_time]', width: 'matchParent', label: 'Date Time', min: '2018-06-09T00:00', max: '2018-06-17T00:00', value: '2018-06-15T19:30'
27
+
28
+ form.spacer height: 20
29
+ form.h2 text: 'Country'
30
+ form.spacer height: 6
31
+ region_field = { name: 'user[city]', label: 'City' }
32
+ form.fields_country name: 'user[country]', width: 'matchParent', label: 'Country', region: region_field
33
+
34
+ form.spacer height: 20
35
+ form.h2 text: 'Map'
36
+ form.spacer height: 6
37
+ form.fields_location name: 'user[address]', width: 'matchParent', label: 'Type an address', value: 'Sydney Harbour Bridge',
38
+ autocompleteOptions: { componentRestrictions: { country: 'au' }, types: ['(cities)'] },
39
+ latitudeField: { view: 'fields/text', name: 'user[latitude]', label: 'Lat', value: -33.8523063, readOnly: true },
40
+ longitudeField: { view: 'fields/text', name: 'user[longitude]', label: 'Long', value: 151.21078710000006, readOnly: true },
41
+ zoomField: { view: 'fields/text', name: 'user[zoom]', label: 'Zoom' }
42
+
43
+ form.spacer height: 20
44
+ form.fields_submit text: 'Submit'
45
+
48
46
  end
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,26 @@
1
+ page = json_ui_page json
2
+
3
+ # Implement a page that shows how ActionCable works in json_ui
4
+
5
+ # 1. Example for list
6
+ # column.panels_list actionCable: socket_config, width: 'matchParent', firstSection: ->(section) do
7
+ # section.rows objects: @messages, builder: -> (row, message, index) do
8
+ # render 'conversations/message', row: row, message: message, user: current_user
9
+ # end
10
+ # end
11
+
12
+ # 2. Example for textarea
13
+ # - TODO: Put onKeyUp in Textarea class in app/helpers/glib/json_ui/view_builder/fields.rb
14
+ # - TODO: Implement onKeyUp in glib-web-npm
15
+ # - TODO: Implement cables_push in glib-web-npm
16
+ # form.fields_textarea prop: :content, width: 'matchParent', label: 'Message', onKeyUp: ->(action) do
17
+ # action.cables_push channel: 'message', event: 'typing'
18
+ # end
19
+
20
+ # 3. Example for online status
21
+ # - TODO: Implement "repeat: true" in glib-web-npm
22
+ # page.on load: ->(action) do
23
+ # action.timeouts_set interval: 10000, repeat: true, onTimeout: ->(subaction) do
24
+ # subaction.cables_push channel: 'message', event: 'online'
25
+ # end
26
+ # end
@@ -25,8 +25,12 @@ page.list firstSection: ->(section) do
25
25
  end
26
26
  end
27
27
 
28
- template.thumbnail title: 'WebSocket Real-time Update', onClick: ->(action) do
28
+ template.thumbnail title: 'Phoenix WebSocket Real-time Update', onClick: ->(action) do
29
29
  action.windows_open url: json_ui_garage_url(path: 'notifications/web_socket')
30
30
  end
31
+
32
+ template.thumbnail title: 'ActionCable Real-time Update', onClick: ->(action) do
33
+ action.windows_open url: json_ui_garage_url(path: 'notifications/action_cable')
34
+ end
31
35
  end
32
36
  end
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
data/config/routes.rb CHANGED
File without changes
File without changes
File without changes
File without changes
data/lib/glib-web.rb CHANGED
File without changes
data/lib/glib/crypt.rb CHANGED
File without changes
File without changes
File without changes
File without changes
data/lib/glib/engine.rb CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
data/lib/glib/value.rb CHANGED
File without changes
data/lib/glib/version.rb CHANGED
File without changes
data/lib/tasks/db.rake CHANGED
File without changes
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glib-web
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.47
4
+ version: 0.5.48
5
5
  platform: ruby
6
6
  authors:
7
7
  - ''
@@ -157,6 +157,7 @@ files:
157
157
  - app/views/json_ui/garage/lists/index.json.jbuilder
158
158
  - app/views/json_ui/garage/lists/reordering.json.jbuilder
159
159
  - app/views/json_ui/garage/lists/templating.json.jbuilder
160
+ - app/views/json_ui/garage/notifications/action_cable.json.jbuilder
160
161
  - app/views/json_ui/garage/notifications/android_post.json.jbuilder
161
162
  - app/views/json_ui/garage/notifications/index.json.jbuilder
162
163
  - app/views/json_ui/garage/notifications/web_socket.json.jbuilder
@@ -253,7 +254,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
253
254
  - !ruby/object:Gem::Version
254
255
  version: '0'
255
256
  requirements: []
256
- rubygems_version: 3.1.4
257
+ rubyforge_project:
258
+ rubygems_version: 2.7.6
257
259
  signing_key:
258
260
  specification_version: 4
259
261
  summary: ''