glib-web 0.5.69 → 0.5.70

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 (183) hide show
  1. checksums.yaml +4 -4
  2. data/app/channels/glib/channel/is_typing_channel.rb +34 -34
  3. data/app/channels/glib/channel/online_channel.rb +36 -36
  4. data/app/controllers/concerns/glib/analytics/funnel.rb +61 -61
  5. data/app/controllers/concerns/glib/auth/policy.rb +148 -148
  6. data/app/controllers/concerns/glib/json/dynamic_text.rb +126 -126
  7. data/app/controllers/concerns/glib/json/libs.rb +149 -149
  8. data/app/controllers/concerns/glib/json/new_dynamic_text.rb +122 -122
  9. data/app/controllers/concerns/glib/json/transformation.rb +11 -11
  10. data/app/controllers/concerns/glib/json/traversal.rb +92 -92
  11. data/app/controllers/concerns/glib/json/ui.rb +88 -88
  12. data/app/controllers/concerns/glib/json/validation.rb +13 -13
  13. data/app/controllers/glib/home_controller.rb +54 -54
  14. data/app/helpers/glib/app_feature_support_helper.rb +16 -16
  15. data/app/helpers/glib/dynamic_images_helper.rb +55 -55
  16. data/app/helpers/glib/dynamic_texts_helper.rb +42 -42
  17. data/app/helpers/glib/enum_helper.rb +8 -8
  18. data/app/helpers/glib/forms_helper.rb +15 -15
  19. data/app/helpers/glib/json_ui/abstract_builder.rb +309 -294
  20. data/app/helpers/glib/json_ui/action_builder.rb +140 -140
  21. data/app/helpers/glib/json_ui/action_builder/dialogs.rb +58 -58
  22. data/app/helpers/glib/json_ui/action_builder/http.rb +39 -39
  23. data/app/helpers/glib/json_ui/action_builder/panels.rb +14 -14
  24. data/app/helpers/glib/json_ui/action_builder/sheets.rb +15 -15
  25. data/app/helpers/glib/json_ui/action_builder/snackbars.rb +41 -41
  26. data/app/helpers/glib/json_ui/action_builder/windows.rb +33 -31
  27. data/app/helpers/glib/json_ui/analytics_helper.rb +17 -17
  28. data/app/helpers/glib/json_ui/dynamic_field_builders.rb +25 -25
  29. data/app/helpers/glib/json_ui/generic_builders.rb +28 -28
  30. data/app/helpers/glib/json_ui/list_builders.rb +110 -110
  31. data/app/helpers/glib/json_ui/menu_builder.rb +94 -94
  32. data/app/helpers/glib/json_ui/page_helper.rb +221 -221
  33. data/app/helpers/glib/json_ui/response_helper.rb +25 -25
  34. data/app/helpers/glib/json_ui/split_builders.rb +32 -32
  35. data/app/helpers/glib/json_ui/styling_helper.rb +55 -47
  36. data/app/helpers/glib/json_ui/table_builders.rb +74 -74
  37. data/app/helpers/glib/json_ui/view_builder.rb +232 -232
  38. data/app/helpers/glib/json_ui/view_builder/banners.rb +26 -26
  39. data/app/helpers/glib/json_ui/view_builder/charts.rb +33 -33
  40. data/app/helpers/glib/json_ui/view_builder/fields.rb +278 -267
  41. data/app/helpers/glib/json_ui/view_builder/panels.rb +252 -251
  42. data/app/helpers/glib/urls_helper.rb +12 -12
  43. data/app/models/glib/active_storage/attachment.rb +9 -9
  44. data/app/models/glib/active_storage/blob.rb +9 -9
  45. data/app/models/glib/application_record.rb +18 -18
  46. data/app/models/glib/dynamic_text_record.rb +9 -9
  47. data/app/models/glib/text.rb +95 -95
  48. data/app/policies/glib/application_policy.rb +161 -161
  49. data/app/validators/email_typo_validator.rb +38 -38
  50. data/app/validators/email_validator.rb +7 -7
  51. data/app/validators/url_validator.rb +20 -20
  52. data/app/views/json_ui/garage/_nav_menu.json.jbuilder +70 -70
  53. data/app/views/json_ui/garage/actions/_dialogs.json.jbuilder +104 -104
  54. data/app/views/json_ui/garage/actions/_http.json.jbuilder +24 -24
  55. data/app/views/json_ui/garage/actions/_panels.json.jbuilder +18 -18
  56. data/app/views/json_ui/garage/actions/_reload.json.jbuilder +17 -17
  57. data/app/views/json_ui/garage/actions/_sheets.json.jbuilder +18 -18
  58. data/app/views/json_ui/garage/actions/_snackbars.json.jbuilder +33 -33
  59. data/app/views/json_ui/garage/actions/_timeouts.json.jbuilder +24 -24
  60. data/app/views/json_ui/garage/actions/_windows.json.jbuilder +24 -24
  61. data/app/views/json_ui/garage/actions/dialogs_oauth_post.json.jbuilder +6 -6
  62. data/app/views/json_ui/garage/actions/index.json.jbuilder +24 -24
  63. data/app/views/json_ui/garage/forms/_alert_post_data.json.jbuilder +6 -6
  64. data/app/views/json_ui/garage/forms/basic.json.jbuilder +21 -21
  65. data/app/views/json_ui/garage/forms/basic_post.json.jbuilder +8 -8
  66. data/app/views/json_ui/garage/forms/checkboxes.json.jbuilder +43 -43
  67. data/app/views/json_ui/garage/forms/conditional_value.json.jbuilder +36 -36
  68. data/app/views/json_ui/garage/forms/dynamic_group.json.jbuilder +39 -39
  69. data/app/views/json_ui/garage/forms/dynamic_select.json.jbuilder +22 -22
  70. data/app/views/json_ui/garage/forms/dynamic_select_data.json.jbuilder +38 -38
  71. data/app/views/json_ui/garage/forms/file_upload.json.jbuilder +37 -32
  72. data/app/views/json_ui/garage/forms/floating_submit.json.jbuilder +19 -19
  73. data/app/views/json_ui/garage/forms/generic_post.json.jbuilder +3 -3
  74. data/app/views/json_ui/garage/forms/get_request.json.jbuilder +27 -27
  75. data/app/views/json_ui/garage/forms/index.json.jbuilder +113 -116
  76. data/app/views/json_ui/garage/forms/new_rich_text.json.jbuilder +39 -39
  77. data/app/views/json_ui/garage/forms/{misc_two.json.jbuilder → online_participant1.json.jbuilder} +25 -21
  78. data/app/views/json_ui/garage/forms/online_participant2.json.jbuilder +25 -0
  79. data/app/views/json_ui/garage/forms/pickers.json.jbuilder +79 -79
  80. data/app/views/json_ui/garage/forms/ratings.json.jbuilder +49 -49
  81. data/app/views/json_ui/garage/forms/rich_text.json.jbuilder +40 -40
  82. data/app/views/json_ui/garage/forms/selects.json.jbuilder +83 -83
  83. data/app/views/json_ui/garage/forms/show_hide.json.jbuilder +130 -130
  84. data/app/views/json_ui/garage/forms/styled_boxes.json.jbuilder +35 -35
  85. data/app/views/json_ui/garage/forms/submission_flow.json.jbuilder +17 -17
  86. data/app/views/json_ui/garage/forms/submission_flow_post.json.jbuilder +26 -26
  87. data/app/views/json_ui/garage/forms/submission_indicator.json.jbuilder +63 -63
  88. data/app/views/json_ui/garage/forms/submission_indicator_post.json.jbuilder +25 -25
  89. data/app/views/json_ui/garage/forms/text_validation.json.jbuilder +81 -81
  90. data/app/views/json_ui/garage/forms/timers.json.jbuilder +120 -0
  91. data/app/views/json_ui/garage/home/blank.json.jbuilder +10 -10
  92. data/app/views/json_ui/garage/home/index.json.jbuilder +36 -36
  93. data/app/views/json_ui/garage/home/slow.json.jbuilder +11 -11
  94. data/app/views/json_ui/garage/lists/_autoload_section.json.jbuilder +28 -28
  95. data/app/views/json_ui/garage/lists/autoload_all.json.jbuilder +32 -32
  96. data/app/views/json_ui/garage/lists/autoload_as_needed.json.jbuilder +35 -35
  97. data/app/views/json_ui/garage/lists/chat_ui.json.jbuilder +94 -94
  98. data/app/views/json_ui/garage/lists/edit_actions.json.jbuilder +62 -62
  99. data/app/views/json_ui/garage/lists/fab.json.jbuilder +12 -12
  100. data/app/views/json_ui/garage/lists/index.json.jbuilder +32 -32
  101. data/app/views/json_ui/garage/lists/reordering.json.jbuilder +34 -34
  102. data/app/views/json_ui/garage/lists/templating.json.jbuilder +35 -35
  103. data/app/views/json_ui/garage/notifications/action_cable.json.jbuilder +114 -114
  104. data/app/views/json_ui/garage/notifications/android_post.json.jbuilder +48 -48
  105. data/app/views/json_ui/garage/notifications/index.json.jbuilder +36 -36
  106. data/app/views/json_ui/garage/notifications/web_socket.json.jbuilder +60 -60
  107. data/app/views/json_ui/garage/pages/flat_centered.json.jbuilder +29 -29
  108. data/app/views/json_ui/garage/pages/full_width.json.jbuilder +29 -29
  109. data/app/views/json_ui/garage/pages/full_width_height.json.jbuilder +16 -16
  110. data/app/views/json_ui/garage/pages/index.json.jbuilder +62 -62
  111. data/app/views/json_ui/garage/pages/layout.json.jbuilder +18 -18
  112. data/app/views/json_ui/garage/pages/lifecycle_hooks.json.jbuilder +13 -13
  113. data/app/views/json_ui/garage/pages/loading_indicator.json.jbuilder +10 -10
  114. data/app/views/json_ui/garage/pages/nav_buttons.json.jbuilder +21 -21
  115. data/app/views/json_ui/garage/pages/nested_scroll.json.jbuilder +40 -40
  116. data/app/views/json_ui/garage/pages/tab_bar.json.jbuilder +31 -31
  117. data/app/views/json_ui/garage/panels/_styled.json.jbuilder +78 -78
  118. data/app/views/json_ui/garage/panels/card.json.jbuilder +4 -4
  119. data/app/views/json_ui/garage/panels/carousel.json.jbuilder +37 -37
  120. data/app/views/json_ui/garage/panels/custom.json.jbuilder +17 -17
  121. data/app/views/json_ui/garage/panels/flow.json.jbuilder +59 -49
  122. data/app/views/json_ui/garage/panels/horizontal.json.jbuilder +91 -91
  123. data/app/views/json_ui/garage/panels/index.json.jbuilder +132 -132
  124. data/app/views/json_ui/garage/panels/outlined.json.jbuilder +4 -4
  125. data/app/views/json_ui/garage/panels/responsive.json.jbuilder +98 -98
  126. data/app/views/json_ui/garage/panels/split.json.jbuilder +182 -182
  127. data/app/views/json_ui/garage/panels/vertical.json.jbuilder +55 -55
  128. data/app/views/json_ui/garage/services/dynamic_text.json.jbuilder +13 -13
  129. data/app/views/json_ui/garage/services/image.json.jbuilder +47 -47
  130. data/app/views/json_ui/garage/services/index.json.jbuilder +17 -17
  131. data/app/views/json_ui/garage/tables/_autoload_section.json.jbuilder +16 -16
  132. data/app/views/json_ui/garage/tables/autoload_all.json.jbuilder +43 -43
  133. data/app/views/json_ui/garage/tables/autoload_as_needed.json.jbuilder +50 -50
  134. data/app/views/json_ui/garage/tables/export_import.json.jbuilder +29 -29
  135. data/app/views/json_ui/garage/tables/horizontal_scroll.json.jbuilder +26 -26
  136. data/app/views/json_ui/garage/tables/index.json.jbuilder +25 -25
  137. data/app/views/json_ui/garage/tables/layout.json.jbuilder +40 -40
  138. data/app/views/json_ui/garage/views/_chart_data.json.jbuilder +17 -17
  139. data/app/views/json_ui/garage/views/banners.json.jbuilder +63 -63
  140. data/app/views/json_ui/garage/views/calendar_data.json.jbuilder +30 -30
  141. data/app/views/json_ui/garage/views/charts.json.jbuilder +115 -115
  142. data/app/views/json_ui/garage/views/icon_names.json.jbuilder +1450 -1450
  143. data/app/views/json_ui/garage/views/icons.json.jbuilder +14 -14
  144. data/app/views/json_ui/garage/views/images.json.jbuilder +89 -89
  145. data/app/views/json_ui/garage/views/index.json.jbuilder +64 -64
  146. data/app/views/json_ui/garage/views/links.json.jbuilder +70 -70
  147. data/app/views/json_ui/garage/views/map_cluster_data.json.jbuilder +41 -41
  148. data/app/views/json_ui/garage/views/map_data.json.jbuilder +51 -51
  149. data/app/views/json_ui/garage/views/maps.json.jbuilder +31 -31
  150. data/app/views/json_ui/garage/views/markdowns.json.jbuilder +41 -41
  151. data/app/views/json_ui/garage/views/misc.json.jbuilder +34 -34
  152. data/app/views/json_ui/garage/views/texts.json.jbuilder +44 -44
  153. data/app/views/layouts/json_ui/renderer.html.erb +35 -35
  154. data/config/routes.rb +7 -7
  155. data/lib/generators/glib/install_generator.rb +24 -24
  156. data/lib/generators/templates/20191017062519_create_texts.rb +12 -12
  157. data/lib/generators/templates/20191024063257_add_scope_to_texts.rb +7 -7
  158. data/lib/generators/templates/20191112095018_add_lang_to_texts.rb +7 -7
  159. data/lib/generators/templates/20191126071051_create_active_storage_tables.active_storage.rb +27 -27
  160. data/lib/generators/templates/database.yml +107 -107
  161. data/lib/generators/templates/dynamic_text.rb +2 -2
  162. data/lib/glib-web.rb +9 -9
  163. data/lib/glib/crypt/utils.rb +26 -26
  164. data/lib/glib/dynamic_text/config.rb +21 -21
  165. data/lib/glib/engine.rb +7 -7
  166. data/lib/glib/json_crawler.rb +11 -11
  167. data/lib/glib/json_crawler/action_crawler.rb +23 -23
  168. data/lib/glib/json_crawler/action_crawlers/action_http.rb +11 -11
  169. data/lib/glib/json_crawler/action_crawlers/forms_submit.rb +48 -48
  170. data/lib/glib/json_crawler/action_crawlers/menu.rb +12 -12
  171. data/lib/glib/json_crawler/action_crawlers/nav_initiate.rb +19 -19
  172. data/lib/glib/json_crawler/action_crawlers/run_multiple.rb +13 -13
  173. data/lib/glib/json_crawler/action_crawlers/windows_open.rb +33 -33
  174. data/lib/glib/json_crawler/coverage.rb +20 -20
  175. data/lib/glib/json_crawler/http.rb +120 -120
  176. data/lib/glib/json_crawler/router.rb +98 -98
  177. data/lib/glib/mailer_tester.rb +36 -36
  178. data/lib/glib/test_helpers.rb +52 -52
  179. data/lib/glib/value.rb +7 -7
  180. data/lib/glib/version.rb +5 -5
  181. data/lib/tasks/db.rake +95 -95
  182. metadata +6 -4
  183. data/app/views/json_ui/garage/forms/misc.json.jbuilder +0 -71
@@ -1,28 +1,28 @@
1
-
2
- # json.rows do
3
- # batch_count = 30
4
- # batch_count.times do |i|
5
- # index = page * batch_count + i
6
- # json.child! do
7
- # json.template 'thumbnail'
8
- # json.title "Item #{index}"
9
- # end
10
- # end
11
- # end
12
-
13
- # section = json_ui_section json
14
-
15
- section = page.list_section_builder
16
- section.rows builder: ->(row) do
17
- batch_count = 30
18
- batch_count.times do |i|
19
- index = page_index * batch_count + i
20
- if local_assigns[:reorder]
21
- row.thumbnail title: "Item #{index}", onReorder: ->(action) do
22
- action.dialogs_notification title: "Item #{index}"
23
- end, paramNameForFormData: 'message', paramNameForNewIndex: 'new_index'
24
- else
25
- row.thumbnail title: "Item #{index}"
26
- end
27
- end
28
- end
1
+
2
+ # json.rows do
3
+ # batch_count = 30
4
+ # batch_count.times do |i|
5
+ # index = page * batch_count + i
6
+ # json.child! do
7
+ # json.template 'thumbnail'
8
+ # json.title "Item #{index}"
9
+ # end
10
+ # end
11
+ # end
12
+
13
+ # section = json_ui_section json
14
+
15
+ section = page.list_section_builder
16
+ section.rows builder: ->(row) do
17
+ batch_count = 30
18
+ batch_count.times do |i|
19
+ index = page_index * batch_count + i
20
+ if local_assigns[:reorder]
21
+ row.thumbnail title: "Item #{index}", onReorder: ->(action) do
22
+ action.dialogs_notification title: "Item #{index}"
23
+ end, paramNameForFormData: 'message', paramNameForNewIndex: 'new_index'
24
+ else
25
+ row.thumbnail title: "Item #{index}"
26
+ end
27
+ end
28
+ end
@@ -1,32 +1,32 @@
1
-
2
- page_index = params[:page].to_i
3
- next_page = {
4
- url: json_ui_garage_url(path: 'lists/autoload_all', page: page_index + 1, section_only: 'v1'),
5
- autoload: 'all'
6
- }
7
-
8
- page = json_ui_page json
9
-
10
- if params[:section_only].present?
11
- sleep 1
12
-
13
- json.nextPage next_page if page_index < 3
14
- json.sections do
15
- json.child! do
16
- render 'json_ui/garage/lists/autoload_section', page: page, page_index: page_index
17
- end
18
- end
19
- else
20
- json.title 'Lists'
21
-
22
- render "#{@path_prefix}/nav_menu", json: json, page: page
23
-
24
- page.list nextPage: next_page, firstSection: ->(section) do
25
- render 'json_ui/garage/lists/autoload_section', page: page, page_index: page_index
26
- end, onScrollToBottom: ->(action) do
27
- action.snackbars_alert message: 'Scrolled to Bottom'
28
- end, onScrollToTop: ->(action) do
29
- action.snackbars_alert message: 'Scrolled to Top'
30
- end
31
-
32
- end
1
+
2
+ page_index = params[:page].to_i
3
+ next_page = {
4
+ url: json_ui_garage_url(path: 'lists/autoload_all', page: page_index + 1, section_only: 'v1'),
5
+ autoload: 'all'
6
+ }
7
+
8
+ page = json_ui_page json
9
+
10
+ if params[:section_only].present?
11
+ sleep 1
12
+
13
+ json.nextPage next_page if page_index < 3
14
+ json.sections do
15
+ json.child! do
16
+ render 'json_ui/garage/lists/autoload_section', page: page, page_index: page_index
17
+ end
18
+ end
19
+ else
20
+ json.title 'Lists'
21
+
22
+ render "#{@path_prefix}/nav_menu", json: json, page: page
23
+
24
+ page.list nextPage: next_page, firstSection: ->(section) do
25
+ render 'json_ui/garage/lists/autoload_section', page: page, page_index: page_index
26
+ end, onScrollToBottom: ->(action) do
27
+ action.snackbars_alert message: 'Scrolled to Bottom'
28
+ end, onScrollToTop: ->(action) do
29
+ action.snackbars_alert message: 'Scrolled to Top'
30
+ end
31
+
32
+ end
@@ -1,35 +1,35 @@
1
-
2
- page_index = params[:page].to_i
3
- next_page = {
4
- url: json_ui_garage_url(path: 'lists/autoload_as_needed', page: page_index + 1, section_only: 'v1'),
5
- autoload: 'asNeeded'
6
- }
7
-
8
- page = json_ui_page json
9
-
10
- # TODO: Cater
11
- # - for SEO: one URL for a standalone page and one URL for pagination only
12
- # - for generic approach, e.g. excluding nav_menu when there is no change
13
- if params[:section_only].present?
14
- sleep 1
15
-
16
- json.nextPage next_page if page_index < 3
17
- json.sections do
18
- json.child! do
19
- render 'json_ui/garage/lists/autoload_section', page: page, page_index: page_index
20
- end
21
- end
22
- else
23
- json.title 'Lists'
24
-
25
- render "#{@path_prefix}/nav_menu", json: json, page: page
26
-
27
- page.list nextPage: next_page, firstSection: ->(section) do
28
- render 'json_ui/garage/lists/autoload_section', page: page, page_index: page_index
29
- end, onScrollToBottom: ->(action) do
30
- action.snackbars_alert message: 'Scrolled to Bottom'
31
- end, onScrollToTop: ->(action) do
32
- action.snackbars_alert message: 'Scrolled to Top'
33
- end
34
-
35
- end
1
+
2
+ page_index = params[:page].to_i
3
+ next_page = {
4
+ url: json_ui_garage_url(path: 'lists/autoload_as_needed', page: page_index + 1, section_only: 'v1'),
5
+ autoload: 'asNeeded'
6
+ }
7
+
8
+ page = json_ui_page json
9
+
10
+ # TODO: Cater
11
+ # - for SEO: one URL for a standalone page and one URL for pagination only
12
+ # - for generic approach, e.g. excluding nav_menu when there is no change
13
+ if params[:section_only].present?
14
+ sleep 1
15
+
16
+ json.nextPage next_page if page_index < 3
17
+ json.sections do
18
+ json.child! do
19
+ render 'json_ui/garage/lists/autoload_section', page: page, page_index: page_index
20
+ end
21
+ end
22
+ else
23
+ json.title 'Lists'
24
+
25
+ render "#{@path_prefix}/nav_menu", json: json, page: page
26
+
27
+ page.list nextPage: next_page, firstSection: ->(section) do
28
+ render 'json_ui/garage/lists/autoload_section', page: page, page_index: page_index
29
+ end, onScrollToBottom: ->(action) do
30
+ action.snackbars_alert message: 'Scrolled to Bottom'
31
+ end, onScrollToTop: ->(action) do
32
+ action.snackbars_alert message: 'Scrolled to Top'
33
+ end
34
+
35
+ end
@@ -1,94 +1,94 @@
1
- json.title 'Lists'
2
-
3
- liked = params[:liked] == 'true'
4
-
5
- page = json_ui_page json
6
-
7
- render "#{@path_prefix}/nav_menu", json: json, page: page
8
-
9
- json.phoenixSocket({
10
- "socket" => {
11
- "endpoint" => "/socket/websocket",
12
- "params" => {
13
- vsn: '2.0.0',
14
- token: 'TOKEN'
15
- }
16
- },
17
- "topic" => "rooms",
18
- "events" => [],
19
- # "events" => ["new_link_added"],
20
- # "header" => {
21
- # "user_id" => 2,
22
- # "prev_item_id" => nil,
23
- # "last_item_id" => nil
24
- # }
25
- })
26
-
27
- list_ws = { topic: 'rooms', events: ['comments_updated'] }
28
- page.list phoenixSocket: list_ws, firstSection: ->(section) do
29
- section.header padding: { top: 12, left: 16, right: 16, bottom: 12 }, childViews: ->(header) do
30
- header.h3 text: 'Chat with John Doe'
31
- end
32
-
33
- section.rows builder: ->(template) do
34
- # template.thumbnail title: "windows/reload (timestamp: #{DateTime.current.to_i}) -- #{liked}", onClick: ->(action) do
35
- # action.windows_reload
36
- # end, onLongPress: ->(action) do
37
- # action.sheets_select message: "Context Menu (#{DateTime.current.to_i})", buttons: ->(menu) do
38
- # if liked
39
- # menu.button text: 'Cancel 👍', onClick: ->(subaction) do
40
- # subaction.windows_reload url: json_ui_garage_url(path: 'lists/chat', liked: false)
41
- # end
42
- # else
43
- # menu.button text: 'Give 👍', onClick: ->(subaction) do
44
- # subaction.windows_reload url: json_ui_garage_url(path: 'lists/chat', liked: true)
45
- # end
46
- # end
47
- # end
48
- # end
49
-
50
- template.commentOutgoing subtitle: 'Hey!', subsubtitle: l(10.minutes.ago, format: :short), imageUrl: glib_json_image_standard_url, chips: ->(menu) do
51
- menu.button text: '😊 2', styleClass: 'info'
52
- end
53
-
54
- template.commentOutgoing subtitle: 'How are you?', subsubtitle: l(DateTime.current, format: :short)
55
-
56
- template.commentIncoming title: 'John Doe', subtitle: 'Very well', subsubtitle: l(7.minutes.ago, format: :short), imageUrl: glib_json_image_standard_url, chips: ->(menu) do
57
- menu.button text: "👍 #{liked ? 2 : 1}"
58
- end, onLongPress: ->(action) do
59
- action.sheets_select message: 'Context Menu', buttons: ->(menu) do
60
- if liked
61
- menu.button text: 'Cancel 👍', onClick: ->(subaction) do
62
- subaction.windows_reload url: json_ui_garage_url(path: 'lists/chat_ui', liked: false)
63
- end
64
- else
65
- menu.button text: 'Give 👍', onClick: ->(subaction) do
66
- subaction.windows_reload url: json_ui_garage_url(path: 'lists/chat_ui', liked: true)
67
- end
68
- end
69
- end
70
- end
71
- end
72
- end
73
-
74
- page.footer padding: { top: 12, left: 16, right: 16, bottom: 12 }, childViews: ->(footer) do
75
- footer.panels_form width: 'matchParent', url: json_ui_garage_url(path: 'forms/basic_post'), method: 'post', padding: glib_json_padding_body, paramNameForFormData: 'formData', onSubmit: ->(action) do
76
- json.action "ws/push"
77
- json.topic "rooms"
78
- json.event "create_comment"
79
- json.payload({
80
- "room_id": "30",
81
- "user_id": "2"
82
- })
83
-
84
- end, childViews: ->(form) do
85
- form.fields_text name: 'user[message]', width: 'matchParent', label: 'Message'
86
-
87
- form.panels_split width: 'matchParent', content: ->(split) do
88
- split.right childViews: ->(right) do
89
- right.button text: 'Submit', onClick: ->(action) { action.forms_submit }
90
- end
91
- end
92
- end
93
-
94
- end
1
+ json.title 'Lists'
2
+
3
+ liked = params[:liked] == 'true'
4
+
5
+ page = json_ui_page json
6
+
7
+ render "#{@path_prefix}/nav_menu", json: json, page: page
8
+
9
+ json.phoenixSocket({
10
+ "socket" => {
11
+ "endpoint" => "/socket/websocket",
12
+ "params" => {
13
+ vsn: '2.0.0',
14
+ token: 'TOKEN'
15
+ }
16
+ },
17
+ "topic" => "rooms",
18
+ "events" => [],
19
+ # "events" => ["new_link_added"],
20
+ # "header" => {
21
+ # "user_id" => 2,
22
+ # "prev_item_id" => nil,
23
+ # "last_item_id" => nil
24
+ # }
25
+ })
26
+
27
+ list_ws = { topic: 'rooms', events: ['comments_updated'] }
28
+ page.list phoenixSocket: list_ws, firstSection: ->(section) do
29
+ section.header padding: { top: 12, left: 16, right: 16, bottom: 12 }, childViews: ->(header) do
30
+ header.h3 text: 'Chat with John Doe'
31
+ end
32
+
33
+ section.rows builder: ->(template) do
34
+ # template.thumbnail title: "windows/reload (timestamp: #{DateTime.current.to_i}) -- #{liked}", onClick: ->(action) do
35
+ # action.windows_reload
36
+ # end, onLongPress: ->(action) do
37
+ # action.sheets_select message: "Context Menu (#{DateTime.current.to_i})", buttons: ->(menu) do
38
+ # if liked
39
+ # menu.button text: 'Cancel 👍', onClick: ->(subaction) do
40
+ # subaction.windows_reload url: json_ui_garage_url(path: 'lists/chat', liked: false)
41
+ # end
42
+ # else
43
+ # menu.button text: 'Give 👍', onClick: ->(subaction) do
44
+ # subaction.windows_reload url: json_ui_garage_url(path: 'lists/chat', liked: true)
45
+ # end
46
+ # end
47
+ # end
48
+ # end
49
+
50
+ template.commentOutgoing subtitle: 'Hey!', subsubtitle: l(10.minutes.ago, format: :short), imageUrl: glib_json_image_standard_url, chips: ->(menu) do
51
+ menu.button text: '😊 2', styleClass: 'info'
52
+ end
53
+
54
+ template.commentOutgoing subtitle: 'How are you?', subsubtitle: l(DateTime.current, format: :short)
55
+
56
+ template.commentIncoming title: 'John Doe', subtitle: 'Very well', subsubtitle: l(7.minutes.ago, format: :short), imageUrl: glib_json_image_standard_url, chips: ->(menu) do
57
+ menu.button text: "👍 #{liked ? 2 : 1}"
58
+ end, onLongPress: ->(action) do
59
+ action.sheets_select message: 'Context Menu', buttons: ->(menu) do
60
+ if liked
61
+ menu.button text: 'Cancel 👍', onClick: ->(subaction) do
62
+ subaction.windows_reload url: json_ui_garage_url(path: 'lists/chat_ui', liked: false)
63
+ end
64
+ else
65
+ menu.button text: 'Give 👍', onClick: ->(subaction) do
66
+ subaction.windows_reload url: json_ui_garage_url(path: 'lists/chat_ui', liked: true)
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
72
+ end
73
+
74
+ page.footer padding: { top: 12, left: 16, right: 16, bottom: 12 }, childViews: ->(footer) do
75
+ footer.panels_form width: 'matchParent', url: json_ui_garage_url(path: 'forms/basic_post'), method: 'post', padding: glib_json_padding_body, paramNameForFormData: 'formData', onSubmit: ->(action) do
76
+ json.action "ws/push"
77
+ json.topic "rooms"
78
+ json.event "create_comment"
79
+ json.payload({
80
+ "room_id": "30",
81
+ "user_id": "2"
82
+ })
83
+
84
+ end, childViews: ->(form) do
85
+ form.fields_text name: 'user[message]', width: 'matchParent', label: 'Message'
86
+
87
+ form.panels_split width: 'matchParent', content: ->(split) do
88
+ split.right childViews: ->(right) do
89
+ right.button text: 'Submit', onClick: ->(action) { action.forms_submit }
90
+ end
91
+ end
92
+ end
93
+
94
+ end
@@ -1,62 +1,62 @@
1
- json.title 'Lists'
2
-
3
- page_index = params[:page].to_i
4
- if page_index > 2
5
- page_index = 2
6
- end
7
- page = json_ui_page json
8
- render "#{@path_prefix}/nav_menu", json: json, page: page
9
-
10
- page.list firstSection: ->(section) do
11
- section.rows builder: ->(template) do
12
- template.thumbnail \
13
- title: 'Click menu (web) or swipe left (Android/iOS)',
14
- subtitle: "Page index: #{page_index}",
15
- leftButtons: ->(menu) do
16
- menu.button styleClass: 'icon', icon: 'check_box', onClick: ->(subaction) do
17
- subaction.dialogs_alert message: 'Tick/untick'
18
- end
19
- end, rightButtons: ->(menu) do
20
- menu.button styleClass: 'icon', icon: 'share', onClick: ->(subaction) do
21
- subaction.dialogs_alert message: 'Share'
22
- end
23
- menu.button styleClass: 'icon', icon: 'open_in_new', onClick: ->(subaction) do
24
- subaction.dialogs_alert message: 'Open'
25
- end
26
- end, editButtons: ->(menu) do
27
- menu.button text: "Edit (ID: #{page_index})", onClick: ->(action) do
28
- action.dialogs_alert message: 'Perform Edit action'
29
- end
30
- menu.button text: 'Delete', onClick: ->(action) do
31
- action.dialogs_alert message: 'Perform Delete action'
32
- end
33
- end, onClick: ->(action) do
34
- action.windows_open url: json_ui_garage_url(path: 'lists/edit_actions', page: page_index + 1)
35
- end
36
-
37
- template.thumbnail title: 'Long press to get an alert', onLongPress: ->(action) do
38
- action.dialogs_alert message: 'This is an alert'
39
- end
40
-
41
- template.thumbnail title: 'Long press to see menu', onLongPress: ->(action) do
42
- action.sheets_select message: 'Context Menu', buttons: ->(menu) do
43
- menu.button icon: 'edit', text: 'Edit', onClick: ->(subaction) do
44
- subaction.dialogs_alert message: 'Perform action'
45
- end
46
- menu.button icon: 'delete', text: 'Delete', onClick: ->(subaction) do
47
- subaction.dialogs_alert message: 'Perform action'
48
- end
49
- end
50
- end
51
-
52
- # template.thumbnail title: 'Long press to see menu', contextButtons: ->(menu) do
53
- # menu.button text: 'Edit', onClick: ->(action) do
54
- # action.dialogs_alert message: 'Perform action'
55
- # end
56
- # menu.button text: 'Delete', onClick: ->(action) do
57
- # action.dialogs_alert message: 'Perform action'
58
- # end
59
- # end
60
- end
61
-
62
- end
1
+ json.title 'Lists'
2
+
3
+ page_index = params[:page].to_i
4
+ if page_index > 2
5
+ page_index = 2
6
+ end
7
+ page = json_ui_page json
8
+ render "#{@path_prefix}/nav_menu", json: json, page: page
9
+
10
+ page.list firstSection: ->(section) do
11
+ section.rows builder: ->(template) do
12
+ template.thumbnail \
13
+ title: 'Click menu (web) or swipe left (Android/iOS)',
14
+ subtitle: "Page index: #{page_index}",
15
+ leftButtons: ->(menu) do
16
+ menu.button styleClass: 'icon', icon: 'check_box', onClick: ->(subaction) do
17
+ subaction.dialogs_alert message: 'Tick/untick'
18
+ end
19
+ end, rightButtons: ->(menu) do
20
+ menu.button styleClass: 'icon', icon: 'share', onClick: ->(subaction) do
21
+ subaction.dialogs_alert message: 'Share'
22
+ end
23
+ menu.button styleClass: 'icon', icon: 'open_in_new', onClick: ->(subaction) do
24
+ subaction.dialogs_alert message: 'Open'
25
+ end
26
+ end, editButtons: ->(menu) do
27
+ menu.button text: "Edit (ID: #{page_index})", onClick: ->(action) do
28
+ action.dialogs_alert message: 'Perform Edit action'
29
+ end
30
+ menu.button text: 'Delete', onClick: ->(action) do
31
+ action.dialogs_alert message: 'Perform Delete action'
32
+ end
33
+ end, onClick: ->(action) do
34
+ action.windows_open url: json_ui_garage_url(path: 'lists/edit_actions', page: page_index + 1)
35
+ end
36
+
37
+ template.thumbnail title: 'Long press to get an alert', onLongPress: ->(action) do
38
+ action.dialogs_alert message: 'This is an alert'
39
+ end
40
+
41
+ template.thumbnail title: 'Long press to see menu', onLongPress: ->(action) do
42
+ action.sheets_select message: 'Context Menu', buttons: ->(menu) do
43
+ menu.button icon: 'edit', text: 'Edit', onClick: ->(subaction) do
44
+ subaction.dialogs_alert message: 'Perform action'
45
+ end
46
+ menu.button icon: 'delete', text: 'Delete', onClick: ->(subaction) do
47
+ subaction.dialogs_alert message: 'Perform action'
48
+ end
49
+ end
50
+ end
51
+
52
+ # template.thumbnail title: 'Long press to see menu', contextButtons: ->(menu) do
53
+ # menu.button text: 'Edit', onClick: ->(action) do
54
+ # action.dialogs_alert message: 'Perform action'
55
+ # end
56
+ # menu.button text: 'Delete', onClick: ->(action) do
57
+ # action.dialogs_alert message: 'Perform action'
58
+ # end
59
+ # end
60
+ end
61
+
62
+ end