glib-web 0.5.52 → 0.5.53

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 (173) hide show
  1. checksums.yaml +4 -4
  2. data/app/channels/glib/channel/is_typing_channel.rb +28 -28
  3. data/app/controllers/concerns/glib/analytics/funnel.rb +61 -61
  4. data/app/controllers/concerns/glib/auth/policy.rb +148 -148
  5. data/app/controllers/concerns/glib/json/dynamic_text.rb +126 -126
  6. data/app/controllers/concerns/glib/json/libs.rb +144 -144
  7. data/app/controllers/concerns/glib/json/new_dynamic_text.rb +122 -122
  8. data/app/controllers/concerns/glib/json/transformation.rb +11 -11
  9. data/app/controllers/concerns/glib/json/traversal.rb +92 -92
  10. data/app/controllers/concerns/glib/json/ui.rb +88 -88
  11. data/app/controllers/concerns/glib/json/validation.rb +13 -13
  12. data/app/controllers/glib/home_controller.rb +16 -16
  13. data/app/helpers/glib/app_feature_support_helper.rb +16 -16
  14. data/app/helpers/glib/dynamic_images_helper.rb +55 -55
  15. data/app/helpers/glib/dynamic_texts_helper.rb +42 -42
  16. data/app/helpers/glib/enum_helper.rb +8 -8
  17. data/app/helpers/glib/forms_helper.rb +15 -15
  18. data/app/helpers/glib/json_ui/abstract_builder.rb +294 -294
  19. data/app/helpers/glib/json_ui/action_builder.rb +140 -140
  20. data/app/helpers/glib/json_ui/action_builder/dialogs.rb +58 -58
  21. data/app/helpers/glib/json_ui/action_builder/http.rb +39 -39
  22. data/app/helpers/glib/json_ui/action_builder/sheets.rb +15 -15
  23. data/app/helpers/glib/json_ui/action_builder/snackbars.rb +41 -41
  24. data/app/helpers/glib/json_ui/action_builder/windows.rb +26 -26
  25. data/app/helpers/glib/json_ui/analytics_helper.rb +17 -17
  26. data/app/helpers/glib/json_ui/dynamic_field_builders.rb +25 -25
  27. data/app/helpers/glib/json_ui/generic_builders.rb +28 -28
  28. data/app/helpers/glib/json_ui/list_builders.rb +109 -109
  29. data/app/helpers/glib/json_ui/menu_builder.rb +94 -94
  30. data/app/helpers/glib/json_ui/page_helper.rb +221 -221
  31. data/app/helpers/glib/json_ui/response_helper.rb +25 -25
  32. data/app/helpers/glib/json_ui/split_builders.rb +32 -32
  33. data/app/helpers/glib/json_ui/styling_helper.rb +47 -47
  34. data/app/helpers/glib/json_ui/table_builders.rb +74 -74
  35. data/app/helpers/glib/json_ui/view_builder.rb +209 -209
  36. data/app/helpers/glib/json_ui/view_builder/banners.rb +25 -25
  37. data/app/helpers/glib/json_ui/view_builder/charts.rb +33 -33
  38. data/app/helpers/glib/json_ui/view_builder/fields.rb +240 -240
  39. data/app/helpers/glib/json_ui/view_builder/panels.rb +250 -250
  40. data/app/helpers/glib/urls_helper.rb +12 -7
  41. data/app/models/glib/active_storage/attachment.rb +9 -9
  42. data/app/models/glib/active_storage/blob.rb +9 -9
  43. data/app/models/glib/application_record.rb +18 -18
  44. data/app/models/glib/dynamic_text_record.rb +9 -9
  45. data/app/models/glib/text.rb +95 -95
  46. data/app/policies/glib/application_policy.rb +161 -161
  47. data/app/validators/email_typo_validator.rb +38 -38
  48. data/app/validators/email_validator.rb +7 -7
  49. data/app/validators/url_validator.rb +20 -20
  50. data/app/views/json_ui/garage/_nav_menu.json.jbuilder +70 -70
  51. data/app/views/json_ui/garage/actions/_dialogs.json.jbuilder +104 -104
  52. data/app/views/json_ui/garage/actions/_http.json.jbuilder +24 -24
  53. data/app/views/json_ui/garage/actions/_reload.json.jbuilder +17 -17
  54. data/app/views/json_ui/garage/actions/_sheets.json.jbuilder +18 -18
  55. data/app/views/json_ui/garage/actions/_snackbars.json.jbuilder +33 -33
  56. data/app/views/json_ui/garage/actions/_timeouts.json.jbuilder +18 -18
  57. data/app/views/json_ui/garage/actions/_windows.json.jbuilder +24 -24
  58. data/app/views/json_ui/garage/actions/dialogs_oauth_post.json.jbuilder +6 -6
  59. data/app/views/json_ui/garage/actions/index.json.jbuilder +22 -22
  60. data/app/views/json_ui/garage/forms/_alert_post_data.json.jbuilder +6 -6
  61. data/app/views/json_ui/garage/forms/basic.json.jbuilder +21 -21
  62. data/app/views/json_ui/garage/forms/basic_post.json.jbuilder +8 -8
  63. data/app/views/json_ui/garage/forms/checkboxes.json.jbuilder +43 -43
  64. data/app/views/json_ui/garage/forms/conditional_value.json.jbuilder +36 -36
  65. data/app/views/json_ui/garage/forms/dynamic_group.json.jbuilder +39 -39
  66. data/app/views/json_ui/garage/forms/dynamic_select.json.jbuilder +22 -22
  67. data/app/views/json_ui/garage/forms/dynamic_select_data.json.jbuilder +38 -38
  68. data/app/views/json_ui/garage/forms/file_upload.json.jbuilder +32 -32
  69. data/app/views/json_ui/garage/forms/floating_submit.json.jbuilder +19 -19
  70. data/app/views/json_ui/garage/forms/generic_post.json.jbuilder +3 -3
  71. data/app/views/json_ui/garage/forms/get_request.json.jbuilder +27 -27
  72. data/app/views/json_ui/garage/forms/index.json.jbuilder +108 -108
  73. data/app/views/json_ui/garage/forms/new_rich_text.json.jbuilder +39 -39
  74. data/app/views/json_ui/garage/forms/pickers.json.jbuilder +46 -46
  75. data/app/views/json_ui/garage/forms/rich_text.json.jbuilder +40 -40
  76. data/app/views/json_ui/garage/forms/selects.json.jbuilder +70 -70
  77. data/app/views/json_ui/garage/forms/show_hide.json.jbuilder +105 -105
  78. data/app/views/json_ui/garage/forms/styled_boxes.json.jbuilder +36 -36
  79. data/app/views/json_ui/garage/forms/submission_flow.json.jbuilder +17 -17
  80. data/app/views/json_ui/garage/forms/submission_flow_post.json.jbuilder +24 -24
  81. data/app/views/json_ui/garage/forms/submission_indicator.json.jbuilder +63 -63
  82. data/app/views/json_ui/garage/forms/submission_indicator_post.json.jbuilder +25 -25
  83. data/app/views/json_ui/garage/forms/text_validation.json.jbuilder +59 -59
  84. data/app/views/json_ui/garage/home/blank.json.jbuilder +11 -11
  85. data/app/views/json_ui/garage/home/index.json.jbuilder +32 -32
  86. data/app/views/json_ui/garage/home/slow.json.jbuilder +11 -11
  87. data/app/views/json_ui/garage/lists/_autoload_section.json.jbuilder +28 -28
  88. data/app/views/json_ui/garage/lists/autoload_all.json.jbuilder +32 -32
  89. data/app/views/json_ui/garage/lists/autoload_as_needed.json.jbuilder +35 -35
  90. data/app/views/json_ui/garage/lists/chat_ui.json.jbuilder +93 -93
  91. data/app/views/json_ui/garage/lists/edit_actions.json.jbuilder +54 -54
  92. data/app/views/json_ui/garage/lists/fab.json.jbuilder +12 -12
  93. data/app/views/json_ui/garage/lists/index.json.jbuilder +32 -32
  94. data/app/views/json_ui/garage/lists/reordering.json.jbuilder +34 -34
  95. data/app/views/json_ui/garage/lists/templating.json.jbuilder +35 -35
  96. data/app/views/json_ui/garage/notifications/action_cable.json.jbuilder +97 -97
  97. data/app/views/json_ui/garage/notifications/android_post.json.jbuilder +48 -48
  98. data/app/views/json_ui/garage/notifications/index.json.jbuilder +36 -36
  99. data/app/views/json_ui/garage/notifications/web_socket.json.jbuilder +60 -60
  100. data/app/views/json_ui/garage/pages/flat_centered.json.jbuilder +29 -29
  101. data/app/views/json_ui/garage/pages/full_width.json.jbuilder +29 -29
  102. data/app/views/json_ui/garage/pages/full_width_height.json.jbuilder +16 -16
  103. data/app/views/json_ui/garage/pages/index.json.jbuilder +58 -58
  104. data/app/views/json_ui/garage/pages/layout.json.jbuilder +18 -18
  105. data/app/views/json_ui/garage/pages/loading_indicator.json.jbuilder +10 -10
  106. data/app/views/json_ui/garage/pages/nav_buttons.json.jbuilder +21 -21
  107. data/app/views/json_ui/garage/pages/nested_scroll.json.jbuilder +40 -40
  108. data/app/views/json_ui/garage/pages/tab_bar.json.jbuilder +27 -27
  109. data/app/views/json_ui/garage/panels/_styled.json.jbuilder +78 -78
  110. data/app/views/json_ui/garage/panels/card.json.jbuilder +4 -4
  111. data/app/views/json_ui/garage/panels/carousel.json.jbuilder +37 -37
  112. data/app/views/json_ui/garage/panels/custom.json.jbuilder +17 -17
  113. data/app/views/json_ui/garage/panels/flow.json.jbuilder +49 -49
  114. data/app/views/json_ui/garage/panels/horizontal.json.jbuilder +91 -91
  115. data/app/views/json_ui/garage/panels/index.json.jbuilder +132 -132
  116. data/app/views/json_ui/garage/panels/outlined.json.jbuilder +4 -4
  117. data/app/views/json_ui/garage/panels/responsive.json.jbuilder +98 -98
  118. data/app/views/json_ui/garage/panels/split.json.jbuilder +182 -182
  119. data/app/views/json_ui/garage/panels/vertical.json.jbuilder +50 -50
  120. data/app/views/json_ui/garage/services/dynamic_text.json.jbuilder +13 -13
  121. data/app/views/json_ui/garage/services/image.json.jbuilder +47 -47
  122. data/app/views/json_ui/garage/services/index.json.jbuilder +17 -17
  123. data/app/views/json_ui/garage/tables/_autoload_section.json.jbuilder +16 -16
  124. data/app/views/json_ui/garage/tables/autoload_all.json.jbuilder +43 -43
  125. data/app/views/json_ui/garage/tables/autoload_as_needed.json.jbuilder +50 -50
  126. data/app/views/json_ui/garage/tables/export_import.json.jbuilder +29 -29
  127. data/app/views/json_ui/garage/tables/horizontal_scroll.json.jbuilder +26 -26
  128. data/app/views/json_ui/garage/tables/index.json.jbuilder +25 -25
  129. data/app/views/json_ui/garage/tables/layout.json.jbuilder +36 -36
  130. data/app/views/json_ui/garage/views/_chart_data.json.jbuilder +17 -17
  131. data/app/views/json_ui/garage/views/banners.json.jbuilder +63 -63
  132. data/app/views/json_ui/garage/views/calendar_data.json.jbuilder +30 -30
  133. data/app/views/json_ui/garage/views/charts.json.jbuilder +115 -115
  134. data/app/views/json_ui/garage/views/icons.json.jbuilder +1450 -1450
  135. data/app/views/json_ui/garage/views/images.json.jbuilder +89 -89
  136. data/app/views/json_ui/garage/views/index.json.jbuilder +54 -54
  137. data/app/views/json_ui/garage/views/links.json.jbuilder +70 -70
  138. data/app/views/json_ui/garage/views/map_cluster_data.json.jbuilder +41 -41
  139. data/app/views/json_ui/garage/views/map_data.json.jbuilder +51 -51
  140. data/app/views/json_ui/garage/views/maps.json.jbuilder +31 -31
  141. data/app/views/json_ui/garage/views/markdowns.json.jbuilder +41 -41
  142. data/app/views/json_ui/garage/views/misc.json.jbuilder +34 -34
  143. data/app/views/json_ui/garage/views/texts.json.jbuilder +44 -44
  144. data/app/views/layouts/json_ui/renderer.html.erb +35 -35
  145. data/config/routes.rb +7 -7
  146. data/lib/generators/glib/install_generator.rb +24 -24
  147. data/lib/generators/templates/20191017062519_create_texts.rb +12 -12
  148. data/lib/generators/templates/20191024063257_add_scope_to_texts.rb +7 -7
  149. data/lib/generators/templates/20191112095018_add_lang_to_texts.rb +7 -7
  150. data/lib/generators/templates/20191126071051_create_active_storage_tables.active_storage.rb +27 -27
  151. data/lib/generators/templates/database.yml +107 -107
  152. data/lib/generators/templates/dynamic_text.rb +2 -2
  153. data/lib/glib-web.rb +9 -9
  154. data/lib/glib/crypt/utils.rb +26 -26
  155. data/lib/glib/dynamic_text/config.rb +21 -21
  156. data/lib/glib/engine.rb +7 -7
  157. data/lib/glib/json_crawler.rb +11 -11
  158. data/lib/glib/json_crawler/action_crawler.rb +23 -23
  159. data/lib/glib/json_crawler/action_crawlers/action_http.rb +11 -11
  160. data/lib/glib/json_crawler/action_crawlers/forms_submit.rb +48 -48
  161. data/lib/glib/json_crawler/action_crawlers/menu.rb +12 -12
  162. data/lib/glib/json_crawler/action_crawlers/nav_initiate.rb +19 -19
  163. data/lib/glib/json_crawler/action_crawlers/run_multiple.rb +13 -13
  164. data/lib/glib/json_crawler/action_crawlers/windows_open.rb +33 -33
  165. data/lib/glib/json_crawler/coverage.rb +20 -20
  166. data/lib/glib/json_crawler/http.rb +120 -120
  167. data/lib/glib/json_crawler/router.rb +98 -98
  168. data/lib/glib/mailer_tester.rb +36 -36
  169. data/lib/glib/test_helpers.rb +52 -52
  170. data/lib/glib/value.rb +7 -7
  171. data/lib/glib/version.rb +5 -5
  172. data/lib/tasks/db.rake +95 -95
  173. metadata +3 -8
@@ -1,11 +1,11 @@
1
- sleep 0.5
2
-
3
- json.title 'Menu'
4
-
5
- json_ui_page json do |page|
6
- render "#{@path_prefix}/nav_menu", json: json, page: page, top_nav: false
7
-
8
- page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
9
- scroll.label text: 'Blank page'
10
- end
11
- end
1
+ sleep 0.5
2
+
3
+ json.title 'Menu'
4
+
5
+ json_ui_page json do |page|
6
+ render "#{@path_prefix}/nav_menu", json: json, page: page, top_nav: false
7
+
8
+ page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
9
+ scroll.label text: 'Blank page'
10
+ end
11
+ end
@@ -1,32 +1,32 @@
1
- json.title 'Menu'
2
-
3
- json_ui_page json do |page|
4
- render "#{@path_prefix}/nav_menu", json: json, page: page, top_nav: true
5
-
6
- page.list firstSection: ->(section) do
7
- section.rows builder: ->(template) do
8
- template.thumbnail title: 'Pages', onClick: ->(action) do
9
- action.windows_open url: json_ui_garage_url(path: 'pages/index')
10
- end
11
- template.thumbnail title: 'Lists', onClick: ->(action) do
12
- action.windows_open url: json_ui_garage_url(path: 'lists/index')
13
- end
14
- template.thumbnail title: 'Forms', onClick: ->(action) do
15
- action.windows_open url: json_ui_garage_url(path: 'forms/index')
16
- end
17
- template.thumbnail title: 'Panels', onClick: ->(action) do
18
- action.windows_open url: json_ui_garage_url(path: 'panels/index')
19
- end
20
- template.thumbnail title: 'Views', onClick: ->(action) do
21
- action.windows_open url: json_ui_garage_url(path: 'views/index')
22
- end
23
- template.thumbnail title: 'Actions', onClick: ->(action) do
24
- action.windows_open url: json_ui_garage_url(path: 'actions/index')
25
- end
26
- template.thumbnail title: 'Tables (Web Only)', onClick: ->(action) do
27
- action.windows_open url: json_ui_garage_url(path: 'tables/index')
28
- end
29
- end
30
-
31
- end
32
- end
1
+ json.title 'Menu'
2
+
3
+ json_ui_page json do |page|
4
+ render "#{@path_prefix}/nav_menu", json: json, page: page, top_nav: true
5
+
6
+ page.list firstSection: ->(section) do
7
+ section.rows builder: ->(template) do
8
+ template.thumbnail title: 'Pages', onClick: ->(action) do
9
+ action.windows_open url: json_ui_garage_url(path: 'pages/index')
10
+ end
11
+ template.thumbnail title: 'Lists', onClick: ->(action) do
12
+ action.windows_open url: json_ui_garage_url(path: 'lists/index')
13
+ end
14
+ template.thumbnail title: 'Forms', onClick: ->(action) do
15
+ action.windows_open url: json_ui_garage_url(path: 'forms/index')
16
+ end
17
+ template.thumbnail title: 'Panels', onClick: ->(action) do
18
+ action.windows_open url: json_ui_garage_url(path: 'panels/index')
19
+ end
20
+ template.thumbnail title: 'Views', onClick: ->(action) do
21
+ action.windows_open url: json_ui_garage_url(path: 'views/index')
22
+ end
23
+ template.thumbnail title: 'Actions', onClick: ->(action) do
24
+ action.windows_open url: json_ui_garage_url(path: 'actions/index')
25
+ end
26
+ template.thumbnail title: 'Tables (Web Only)', onClick: ->(action) do
27
+ action.windows_open url: json_ui_garage_url(path: 'tables/index')
28
+ end
29
+ end
30
+
31
+ end
32
+ end
@@ -1,11 +1,11 @@
1
- sleep 2.0
2
-
3
- json.title 'Menu'
4
-
5
- json_ui_page json do |page|
6
- render "#{@path_prefix}/nav_menu", json: json, page: page, top_nav: false
7
-
8
- page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
9
- scroll.label text: 'Blank page'
10
- end
11
- end
1
+ sleep 2.0
2
+
3
+ json.title 'Menu'
4
+
5
+ json_ui_page json do |page|
6
+ render "#{@path_prefix}/nav_menu", json: json, page: page, top_nav: false
7
+
8
+ page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
9
+ scroll.label text: 'Blank page'
10
+ end
11
+ end
@@ -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,93 +1,93 @@
1
- json.title 'Lists'
2
-
3
- liked = params[:liked] == 'true'
4
-
5
- page = json_ui_page json
6
- render "#{@path_prefix}/nav_menu", json: json, page: page
7
-
8
- json.phoenixSocket({
9
- "socket" => {
10
- "endpoint" => "/socket/websocket",
11
- "params" => {
12
- vsn: '2.0.0',
13
- token: 'TOKEN'
14
- }
15
- },
16
- "topic" => "rooms",
17
- "events" => [],
18
- # "events" => ["new_link_added"],
19
- # "header" => {
20
- # "user_id" => 2,
21
- # "prev_item_id" => nil,
22
- # "last_item_id" => nil
23
- # }
24
- })
25
-
26
- list_ws = { topic: 'rooms', events: ['comments_updated'] }
27
- page.list phoenixSocket: list_ws, firstSection: ->(section) do
28
- section.header padding: { top: 12, left: 16, right: 16, bottom: 12 }, childViews: ->(header) do
29
- header.h3 text: 'Chat with John Doe'
30
- end
31
-
32
- section.rows builder: ->(template) do
33
- # template.thumbnail title: "windows/reload (timestamp: #{DateTime.current.to_i}) -- #{liked}", onClick: ->(action) do
34
- # action.windows_reload
35
- # end, onLongPress: ->(action) do
36
- # action.sheets_select message: "Context Menu (#{DateTime.current.to_i})", buttons: ->(menu) do
37
- # if liked
38
- # menu.button text: 'Cancel 👍', onClick: ->(subaction) do
39
- # subaction.windows_reload url: json_ui_garage_url(path: 'lists/chat', liked: false)
40
- # end
41
- # else
42
- # menu.button text: 'Give 👍', onClick: ->(subaction) do
43
- # subaction.windows_reload url: json_ui_garage_url(path: 'lists/chat', liked: true)
44
- # end
45
- # end
46
- # end
47
- # end
48
-
49
- template.commentOutgoing subtitle: 'Hey!', subsubtitle: l(10.minutes.ago, format: :short), imageUrl: glib_json_image_standard_url, chips: ->(menu) do
50
- menu.button text: '😊 2', styleClass: 'info'
51
- end
52
-
53
- template.commentOutgoing subtitle: 'How are you?', subsubtitle: l(DateTime.current, format: :short)
54
-
55
- template.commentIncoming title: 'John Doe', subtitle: 'Very well', subsubtitle: l(7.minutes.ago, format: :short), imageUrl: glib_json_image_standard_url, chips: ->(menu) do
56
- menu.button text: "👍 #{liked ? 2 : 1}"
57
- end, onLongPress: ->(action) do
58
- action.sheets_select message: 'Context Menu', buttons: ->(menu) do
59
- if liked
60
- menu.button text: 'Cancel 👍', onClick: ->(subaction) do
61
- subaction.windows_reload url: json_ui_garage_url(path: 'lists/chat_ui', liked: false)
62
- end
63
- else
64
- menu.button text: 'Give 👍', onClick: ->(subaction) do
65
- subaction.windows_reload url: json_ui_garage_url(path: 'lists/chat_ui', liked: true)
66
- end
67
- end
68
- end
69
- end
70
- end
71
- end
72
-
73
- page.footer padding: { top: 12, left: 16, right: 16, bottom: 12 }, childViews: ->(footer) do
74
- 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
75
- json.action "ws/push"
76
- json.topic "rooms"
77
- json.event "create_comment"
78
- json.payload({
79
- "room_id": "30",
80
- "user_id": "2"
81
- })
82
-
83
- end, childViews: ->(form) do
84
- form.fields_text name: 'user[message]', width: 'matchParent', label: 'Message'
85
-
86
- form.panels_split width: 'matchParent', content: ->(split) do
87
- split.right childViews: ->(right) do
88
- right.button text: 'Submit', onClick: ->(action) { action.forms_submit }
89
- end
90
- end
91
- end
92
-
93
- end
1
+ json.title 'Lists'
2
+
3
+ liked = params[:liked] == 'true'
4
+
5
+ page = json_ui_page json
6
+ render "#{@path_prefix}/nav_menu", json: json, page: page
7
+
8
+ json.phoenixSocket({
9
+ "socket" => {
10
+ "endpoint" => "/socket/websocket",
11
+ "params" => {
12
+ vsn: '2.0.0',
13
+ token: 'TOKEN'
14
+ }
15
+ },
16
+ "topic" => "rooms",
17
+ "events" => [],
18
+ # "events" => ["new_link_added"],
19
+ # "header" => {
20
+ # "user_id" => 2,
21
+ # "prev_item_id" => nil,
22
+ # "last_item_id" => nil
23
+ # }
24
+ })
25
+
26
+ list_ws = { topic: 'rooms', events: ['comments_updated'] }
27
+ page.list phoenixSocket: list_ws, firstSection: ->(section) do
28
+ section.header padding: { top: 12, left: 16, right: 16, bottom: 12 }, childViews: ->(header) do
29
+ header.h3 text: 'Chat with John Doe'
30
+ end
31
+
32
+ section.rows builder: ->(template) do
33
+ # template.thumbnail title: "windows/reload (timestamp: #{DateTime.current.to_i}) -- #{liked}", onClick: ->(action) do
34
+ # action.windows_reload
35
+ # end, onLongPress: ->(action) do
36
+ # action.sheets_select message: "Context Menu (#{DateTime.current.to_i})", buttons: ->(menu) do
37
+ # if liked
38
+ # menu.button text: 'Cancel 👍', onClick: ->(subaction) do
39
+ # subaction.windows_reload url: json_ui_garage_url(path: 'lists/chat', liked: false)
40
+ # end
41
+ # else
42
+ # menu.button text: 'Give 👍', onClick: ->(subaction) do
43
+ # subaction.windows_reload url: json_ui_garage_url(path: 'lists/chat', liked: true)
44
+ # end
45
+ # end
46
+ # end
47
+ # end
48
+
49
+ template.commentOutgoing subtitle: 'Hey!', subsubtitle: l(10.minutes.ago, format: :short), imageUrl: glib_json_image_standard_url, chips: ->(menu) do
50
+ menu.button text: '😊 2', styleClass: 'info'
51
+ end
52
+
53
+ template.commentOutgoing subtitle: 'How are you?', subsubtitle: l(DateTime.current, format: :short)
54
+
55
+ template.commentIncoming title: 'John Doe', subtitle: 'Very well', subsubtitle: l(7.minutes.ago, format: :short), imageUrl: glib_json_image_standard_url, chips: ->(menu) do
56
+ menu.button text: "👍 #{liked ? 2 : 1}"
57
+ end, onLongPress: ->(action) do
58
+ action.sheets_select message: 'Context Menu', buttons: ->(menu) do
59
+ if liked
60
+ menu.button text: 'Cancel 👍', onClick: ->(subaction) do
61
+ subaction.windows_reload url: json_ui_garage_url(path: 'lists/chat_ui', liked: false)
62
+ end
63
+ else
64
+ menu.button text: 'Give 👍', onClick: ->(subaction) do
65
+ subaction.windows_reload url: json_ui_garage_url(path: 'lists/chat_ui', liked: true)
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
72
+
73
+ page.footer padding: { top: 12, left: 16, right: 16, bottom: 12 }, childViews: ->(footer) do
74
+ 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
75
+ json.action "ws/push"
76
+ json.topic "rooms"
77
+ json.event "create_comment"
78
+ json.payload({
79
+ "room_id": "30",
80
+ "user_id": "2"
81
+ })
82
+
83
+ end, childViews: ->(form) do
84
+ form.fields_text name: 'user[message]', width: 'matchParent', label: 'Message'
85
+
86
+ form.panels_split width: 'matchParent', content: ->(split) do
87
+ split.right childViews: ->(right) do
88
+ right.button text: 'Submit', onClick: ->(action) { action.forms_submit }
89
+ end
90
+ end
91
+ end
92
+
93
+ end