glib-web 0.5.44 → 0.5.45

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 (171) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/concerns/glib/analytics/funnel.rb +61 -61
  3. data/app/controllers/concerns/glib/auth/policy.rb +148 -148
  4. data/app/controllers/concerns/glib/json/dynamic_text.rb +126 -126
  5. data/app/controllers/concerns/glib/json/libs.rb +144 -144
  6. data/app/controllers/concerns/glib/json/new_dynamic_text.rb +122 -122
  7. data/app/controllers/concerns/glib/json/transformation.rb +11 -11
  8. data/app/controllers/concerns/glib/json/traversal.rb +87 -87
  9. data/app/controllers/concerns/glib/json/ui.rb +88 -88
  10. data/app/controllers/concerns/glib/json/validation.rb +13 -13
  11. data/app/controllers/glib/home_controller.rb +16 -16
  12. data/app/helpers/glib/app_feature_support_helper.rb +16 -16
  13. data/app/helpers/glib/dynamic_images_helper.rb +55 -55
  14. data/app/helpers/glib/dynamic_texts_helper.rb +42 -42
  15. data/app/helpers/glib/enum_helper.rb +8 -8
  16. data/app/helpers/glib/forms_helper.rb +15 -15
  17. data/app/helpers/glib/json_ui/abstract_builder.rb +294 -294
  18. data/app/helpers/glib/json_ui/action_builder.rb +131 -131
  19. data/app/helpers/glib/json_ui/action_builder/dialogs.rb +58 -58
  20. data/app/helpers/glib/json_ui/action_builder/http.rb +39 -39
  21. data/app/helpers/glib/json_ui/action_builder/sheets.rb +15 -15
  22. data/app/helpers/glib/json_ui/action_builder/snackbars.rb +41 -41
  23. data/app/helpers/glib/json_ui/action_builder/windows.rb +26 -26
  24. data/app/helpers/glib/json_ui/analytics_helper.rb +17 -17
  25. data/app/helpers/glib/json_ui/dynamic_field_builders.rb +25 -25
  26. data/app/helpers/glib/json_ui/generic_builders.rb +28 -28
  27. data/app/helpers/glib/json_ui/list_builders.rb +104 -104
  28. data/app/helpers/glib/json_ui/menu_builder.rb +94 -94
  29. data/app/helpers/glib/json_ui/page_helper.rb +213 -213
  30. data/app/helpers/glib/json_ui/response_helper.rb +25 -25
  31. data/app/helpers/glib/json_ui/split_builders.rb +32 -32
  32. data/app/helpers/glib/json_ui/styling_helper.rb +47 -47
  33. data/app/helpers/glib/json_ui/table_builders.rb +74 -74
  34. data/app/helpers/glib/json_ui/view_builder.rb +208 -208
  35. data/app/helpers/glib/json_ui/view_builder/banners.rb +24 -24
  36. data/app/helpers/glib/json_ui/view_builder/charts.rb +33 -33
  37. data/app/helpers/glib/json_ui/view_builder/fields.rb +236 -235
  38. data/app/helpers/glib/json_ui/view_builder/panels.rb +250 -250
  39. data/app/helpers/glib/urls_helper.rb +7 -7
  40. data/app/models/glib/active_storage/attachment.rb +9 -9
  41. data/app/models/glib/active_storage/blob.rb +9 -9
  42. data/app/models/glib/application_record.rb +18 -18
  43. data/app/models/glib/dynamic_text_record.rb +9 -9
  44. data/app/models/glib/text.rb +95 -95
  45. data/app/policies/glib/application_policy.rb +161 -161
  46. data/app/validators/email_typo_validator.rb +38 -38
  47. data/app/validators/email_validator.rb +7 -7
  48. data/app/validators/url_validator.rb +20 -20
  49. data/app/views/json_ui/garage/_nav_menu.json.jbuilder +70 -70
  50. data/app/views/json_ui/garage/actions/_dialogs.json.jbuilder +104 -104
  51. data/app/views/json_ui/garage/actions/_http.json.jbuilder +24 -24
  52. data/app/views/json_ui/garage/actions/_reload.json.jbuilder +17 -17
  53. data/app/views/json_ui/garage/actions/_sheets.json.jbuilder +18 -18
  54. data/app/views/json_ui/garage/actions/_snackbars.json.jbuilder +33 -33
  55. data/app/views/json_ui/garage/actions/_timeouts.json.jbuilder +18 -18
  56. data/app/views/json_ui/garage/actions/_windows.json.jbuilder +24 -24
  57. data/app/views/json_ui/garage/actions/dialogs_oauth_post.json.jbuilder +6 -6
  58. data/app/views/json_ui/garage/actions/index.json.jbuilder +22 -22
  59. data/app/views/json_ui/garage/forms/_alert_post_data.json.jbuilder +6 -6
  60. data/app/views/json_ui/garage/forms/basic.json.jbuilder +21 -21
  61. data/app/views/json_ui/garage/forms/basic_post.json.jbuilder +8 -8
  62. data/app/views/json_ui/garage/forms/checkboxes.json.jbuilder +43 -43
  63. data/app/views/json_ui/garage/forms/conditional_value.json.jbuilder +36 -36
  64. data/app/views/json_ui/garage/forms/dynamic_group.json.jbuilder +56 -56
  65. data/app/views/json_ui/garage/forms/dynamic_select.json.jbuilder +25 -25
  66. data/app/views/json_ui/garage/forms/dynamic_select_data.json.jbuilder +38 -38
  67. data/app/views/json_ui/garage/forms/file_upload.json.jbuilder +65 -65
  68. data/app/views/json_ui/garage/forms/floating_submit.json.jbuilder +31 -31
  69. data/app/views/json_ui/garage/forms/generic_post.json.jbuilder +3 -3
  70. data/app/views/json_ui/garage/forms/get_request.json.jbuilder +28 -28
  71. data/app/views/json_ui/garage/forms/index.json.jbuilder +110 -110
  72. data/app/views/json_ui/garage/forms/new_rich_text.json.jbuilder +40 -40
  73. data/app/views/json_ui/garage/forms/pickers.json.jbuilder +48 -48
  74. data/app/views/json_ui/garage/forms/rich_text.json.jbuilder +40 -40
  75. data/app/views/json_ui/garage/forms/selects.json.jbuilder +70 -70
  76. data/app/views/json_ui/garage/forms/show_hide.json.jbuilder +105 -105
  77. data/app/views/json_ui/garage/forms/styled_boxes.json.jbuilder +36 -36
  78. data/app/views/json_ui/garage/forms/submission_flow.json.jbuilder +17 -17
  79. data/app/views/json_ui/garage/forms/submission_flow_post.json.jbuilder +24 -24
  80. data/app/views/json_ui/garage/forms/submission_indicator.json.jbuilder +63 -63
  81. data/app/views/json_ui/garage/forms/submission_indicator_post.json.jbuilder +25 -25
  82. data/app/views/json_ui/garage/forms/text_validation.json.jbuilder +57 -22
  83. data/app/views/json_ui/garage/home/blank.json.jbuilder +11 -11
  84. data/app/views/json_ui/garage/home/index.json.jbuilder +32 -32
  85. data/app/views/json_ui/garage/home/slow.json.jbuilder +11 -11
  86. data/app/views/json_ui/garage/lists/_autoload_section.json.jbuilder +28 -28
  87. data/app/views/json_ui/garage/lists/autoload_all.json.jbuilder +32 -32
  88. data/app/views/json_ui/garage/lists/autoload_as_needed.json.jbuilder +35 -35
  89. data/app/views/json_ui/garage/lists/chat_ui.json.jbuilder +93 -93
  90. data/app/views/json_ui/garage/lists/edit_actions.json.jbuilder +54 -54
  91. data/app/views/json_ui/garage/lists/fab.json.jbuilder +12 -12
  92. data/app/views/json_ui/garage/lists/index.json.jbuilder +32 -32
  93. data/app/views/json_ui/garage/lists/reordering.json.jbuilder +24 -24
  94. data/app/views/json_ui/garage/lists/templating.json.jbuilder +35 -35
  95. data/app/views/json_ui/garage/notifications/android_post.json.jbuilder +48 -48
  96. data/app/views/json_ui/garage/notifications/index.json.jbuilder +32 -32
  97. data/app/views/json_ui/garage/notifications/web_socket.json.jbuilder +60 -60
  98. data/app/views/json_ui/garage/pages/flat_centered.json.jbuilder +29 -29
  99. data/app/views/json_ui/garage/pages/full_width.json.jbuilder +29 -29
  100. data/app/views/json_ui/garage/pages/full_width_height.json.jbuilder +16 -16
  101. data/app/views/json_ui/garage/pages/index.json.jbuilder +58 -58
  102. data/app/views/json_ui/garage/pages/layout.json.jbuilder +18 -18
  103. data/app/views/json_ui/garage/pages/loading_indicator.json.jbuilder +10 -10
  104. data/app/views/json_ui/garage/pages/nav_buttons.json.jbuilder +21 -21
  105. data/app/views/json_ui/garage/pages/nested_scroll.json.jbuilder +40 -40
  106. data/app/views/json_ui/garage/pages/tab_bar.json.jbuilder +27 -27
  107. data/app/views/json_ui/garage/panels/_styled.json.jbuilder +78 -78
  108. data/app/views/json_ui/garage/panels/card.json.jbuilder +4 -4
  109. data/app/views/json_ui/garage/panels/carousel.json.jbuilder +37 -37
  110. data/app/views/json_ui/garage/panels/custom.json.jbuilder +17 -17
  111. data/app/views/json_ui/garage/panels/flow.json.jbuilder +49 -49
  112. data/app/views/json_ui/garage/panels/horizontal.json.jbuilder +91 -91
  113. data/app/views/json_ui/garage/panels/index.json.jbuilder +132 -132
  114. data/app/views/json_ui/garage/panels/outlined.json.jbuilder +4 -4
  115. data/app/views/json_ui/garage/panels/responsive.json.jbuilder +98 -98
  116. data/app/views/json_ui/garage/panels/split.json.jbuilder +182 -182
  117. data/app/views/json_ui/garage/panels/vertical.json.jbuilder +50 -50
  118. data/app/views/json_ui/garage/services/dynamic_text.json.jbuilder +13 -13
  119. data/app/views/json_ui/garage/services/image.json.jbuilder +47 -47
  120. data/app/views/json_ui/garage/services/index.json.jbuilder +17 -17
  121. data/app/views/json_ui/garage/tables/_autoload_section.json.jbuilder +16 -16
  122. data/app/views/json_ui/garage/tables/autoload_all.json.jbuilder +43 -43
  123. data/app/views/json_ui/garage/tables/autoload_as_needed.json.jbuilder +50 -50
  124. data/app/views/json_ui/garage/tables/export_import.json.jbuilder +29 -29
  125. data/app/views/json_ui/garage/tables/horizontal_scroll.json.jbuilder +26 -26
  126. data/app/views/json_ui/garage/tables/index.json.jbuilder +25 -25
  127. data/app/views/json_ui/garage/tables/layout.json.jbuilder +36 -36
  128. data/app/views/json_ui/garage/views/_chart_data.json.jbuilder +17 -17
  129. data/app/views/json_ui/garage/views/banners.json.jbuilder +63 -63
  130. data/app/views/json_ui/garage/views/calendar_data.json.jbuilder +30 -30
  131. data/app/views/json_ui/garage/views/charts.json.jbuilder +115 -115
  132. data/app/views/json_ui/garage/views/icons.json.jbuilder +1450 -1450
  133. data/app/views/json_ui/garage/views/images.json.jbuilder +89 -89
  134. data/app/views/json_ui/garage/views/index.json.jbuilder +54 -54
  135. data/app/views/json_ui/garage/views/links.json.jbuilder +70 -70
  136. data/app/views/json_ui/garage/views/map_cluster_data.json.jbuilder +41 -41
  137. data/app/views/json_ui/garage/views/map_data.json.jbuilder +51 -51
  138. data/app/views/json_ui/garage/views/maps.json.jbuilder +31 -31
  139. data/app/views/json_ui/garage/views/markdowns.json.jbuilder +41 -41
  140. data/app/views/json_ui/garage/views/misc.json.jbuilder +34 -34
  141. data/app/views/json_ui/garage/views/texts.json.jbuilder +41 -41
  142. data/app/views/layouts/json_ui/renderer.html.erb +35 -35
  143. data/config/routes.rb +7 -7
  144. data/lib/generators/glib/install_generator.rb +24 -24
  145. data/lib/generators/templates/20191017062519_create_texts.rb +12 -12
  146. data/lib/generators/templates/20191024063257_add_scope_to_texts.rb +7 -7
  147. data/lib/generators/templates/20191112095018_add_lang_to_texts.rb +7 -7
  148. data/lib/generators/templates/20191126071051_create_active_storage_tables.active_storage.rb +27 -27
  149. data/lib/generators/templates/database.yml +107 -107
  150. data/lib/generators/templates/dynamic_text.rb +2 -2
  151. data/lib/glib-web.rb +9 -9
  152. data/lib/glib/crypt/utils.rb +26 -26
  153. data/lib/glib/dynamic_text/config.rb +21 -21
  154. data/lib/glib/engine.rb +7 -7
  155. data/lib/glib/json_crawler.rb +11 -11
  156. data/lib/glib/json_crawler/action_crawler.rb +23 -23
  157. data/lib/glib/json_crawler/action_crawlers/action_http.rb +11 -11
  158. data/lib/glib/json_crawler/action_crawlers/forms_submit.rb +48 -48
  159. data/lib/glib/json_crawler/action_crawlers/menu.rb +12 -12
  160. data/lib/glib/json_crawler/action_crawlers/nav_initiate.rb +19 -19
  161. data/lib/glib/json_crawler/action_crawlers/run_multiple.rb +13 -13
  162. data/lib/glib/json_crawler/action_crawlers/windows_open.rb +33 -33
  163. data/lib/glib/json_crawler/coverage.rb +20 -20
  164. data/lib/glib/json_crawler/http.rb +120 -120
  165. data/lib/glib/json_crawler/router.rb +96 -96
  166. data/lib/glib/mailer_tester.rb +36 -36
  167. data/lib/glib/test_helpers.rb +40 -40
  168. data/lib/glib/value.rb +7 -7
  169. data/lib/glib/version.rb +5 -5
  170. data/lib/tasks/db.rake +95 -95
  171. metadata +3 -2
@@ -1,13 +1,13 @@
1
- json.title 'Dynamic Text Service'
2
-
3
- json_ui_page json do |page|
4
- render "#{@path_prefix}/nav_menu", json: json, page: page
5
-
6
- page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
7
- scroll.h3 text: dt_json('.hello', name: 'John')
8
- scroll.spacer height: 6
9
- scroll.label text: dt_json('.greeting')
10
- scroll.label text: dt_json('.greeting_with_image')
11
- end
12
-
13
- end
1
+ json.title 'Dynamic Text Service'
2
+
3
+ json_ui_page json do |page|
4
+ render "#{@path_prefix}/nav_menu", json: json, page: page
5
+
6
+ page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
7
+ scroll.h3 text: dt_json('.hello', name: 'John')
8
+ scroll.spacer height: 6
9
+ scroll.label text: dt_json('.greeting')
10
+ scroll.label text: dt_json('.greeting_with_image')
11
+ end
12
+
13
+ end
@@ -1,47 +1,47 @@
1
- json.title 'Image Service'
2
-
3
- # See https://docs.imgix.com/apis/url/size/fit#clip
4
- page = json_ui_page json
5
- render "#{@path_prefix}/nav_menu", json: json, page: page
6
-
7
- page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
8
- bucket = 'itinerarybuilder-demo'
9
-
10
- # TODO: This needs fixing
11
- scroll.h1 text: 'Original size'
12
- scroll.spacer height: 6
13
- scroll.image url: dynamic_image_url(glib_json_image_blob_key, bucket: bucket, width: nil, height: nil)
14
-
15
- scroll.h1 text: 'fit: clip (default) to width'
16
- scroll.spacer height: 6
17
- scroll.image url: dynamic_image_url(glib_json_image_blob_key, bucket: bucket, width: 100, height: nil)
18
-
19
- scroll.spacer height: 20
20
- scroll.h1 text: 'fit: clip (default) to height'
21
- scroll.spacer height: 6
22
- scroll.image url: dynamic_image_url(glib_json_image_blob_key, bucket: bucket, width: nil, height: 100)
23
-
24
- scroll.spacer height: 20
25
- scroll.h1 text: 'fit: crop to width'
26
- scroll.spacer height: 6
27
- scroll.image url: dynamic_image_url(glib_json_image_blob_key, bucket: bucket, fit: 'crop', width: 100, height: nil)
28
-
29
- scroll.spacer height: 20
30
- scroll.h1 text: 'fit: crop to height'
31
- scroll.spacer height: 6
32
- scroll.image url: dynamic_image_url(glib_json_image_blob_key, bucket: bucket, fit: 'crop', width: nil, height: 100)
33
-
34
- # Currently this doesn't behave the same way as https://docs.imgix.com/apis/url/size/fit#fill
35
- #
36
- # scroll.spacer height: 20
37
- # scroll.h1 text: 'fit: fill to width'
38
- # scroll.spacer height: 6
39
- # scroll.image url: dynamic_image_url(glib_json_image_blob_key, bucket: bucket, fit: 'fill', width: 2000, height: nil)
40
-
41
- # Currently this doesn't behave the same way as https://docs.imgix.com/apis/url/size/fit#fill
42
- #
43
- # scroll.spacer height: 20
44
- # scroll.h1 text: 'fit: fill to height'
45
- # scroll.spacer height: 6
46
- # scroll.image url: dynamic_image_url(glib_json_image_blob_key, bucket: bucket, fit: 'fill', width: nil, height: 2000)
47
- end
1
+ json.title 'Image Service'
2
+
3
+ # See https://docs.imgix.com/apis/url/size/fit#clip
4
+ page = json_ui_page json
5
+ render "#{@path_prefix}/nav_menu", json: json, page: page
6
+
7
+ page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
8
+ bucket = 'itinerarybuilder-demo'
9
+
10
+ # TODO: This needs fixing
11
+ scroll.h1 text: 'Original size'
12
+ scroll.spacer height: 6
13
+ scroll.image url: dynamic_image_url(glib_json_image_blob_key, bucket: bucket, width: nil, height: nil)
14
+
15
+ scroll.h1 text: 'fit: clip (default) to width'
16
+ scroll.spacer height: 6
17
+ scroll.image url: dynamic_image_url(glib_json_image_blob_key, bucket: bucket, width: 100, height: nil)
18
+
19
+ scroll.spacer height: 20
20
+ scroll.h1 text: 'fit: clip (default) to height'
21
+ scroll.spacer height: 6
22
+ scroll.image url: dynamic_image_url(glib_json_image_blob_key, bucket: bucket, width: nil, height: 100)
23
+
24
+ scroll.spacer height: 20
25
+ scroll.h1 text: 'fit: crop to width'
26
+ scroll.spacer height: 6
27
+ scroll.image url: dynamic_image_url(glib_json_image_blob_key, bucket: bucket, fit: 'crop', width: 100, height: nil)
28
+
29
+ scroll.spacer height: 20
30
+ scroll.h1 text: 'fit: crop to height'
31
+ scroll.spacer height: 6
32
+ scroll.image url: dynamic_image_url(glib_json_image_blob_key, bucket: bucket, fit: 'crop', width: nil, height: 100)
33
+
34
+ # Currently this doesn't behave the same way as https://docs.imgix.com/apis/url/size/fit#fill
35
+ #
36
+ # scroll.spacer height: 20
37
+ # scroll.h1 text: 'fit: fill to width'
38
+ # scroll.spacer height: 6
39
+ # scroll.image url: dynamic_image_url(glib_json_image_blob_key, bucket: bucket, fit: 'fill', width: 2000, height: nil)
40
+
41
+ # Currently this doesn't behave the same way as https://docs.imgix.com/apis/url/size/fit#fill
42
+ #
43
+ # scroll.spacer height: 20
44
+ # scroll.h1 text: 'fit: fill to height'
45
+ # scroll.spacer height: 6
46
+ # scroll.image url: dynamic_image_url(glib_json_image_blob_key, bucket: bucket, fit: 'fill', width: nil, height: 2000)
47
+ end
@@ -1,17 +1,17 @@
1
- json.title 'Dynamic Texts'
2
-
3
- page = json_ui_page json
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: 'Dynamic Text', onClick: ->(action) do
9
- action.windows_open url: json_ui_garage_url(path: 'services/dynamic_text')
10
- end
11
-
12
- template.thumbnail title: 'Image', onClick: ->(action) do
13
- action.windows_open url: json_ui_garage_url(path: 'services/image')
14
- end
15
- end
16
-
17
- end
1
+ json.title 'Dynamic Texts'
2
+
3
+ page = json_ui_page json
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: 'Dynamic Text', onClick: ->(action) do
9
+ action.windows_open url: json_ui_garage_url(path: 'services/dynamic_text')
10
+ end
11
+
12
+ template.thumbnail title: 'Image', onClick: ->(action) do
13
+ action.windows_open url: json_ui_garage_url(path: 'services/image')
14
+ end
15
+ end
16
+
17
+ end
@@ -1,16 +1,16 @@
1
- batch_count = 30
2
- items = (1..batch_count)
3
- section = page.table_section_builder
4
- section.rows objects: items, builder: ->(row, item, index) do
5
- row.default colStyles: [{ width: 36 }, {}, {}, {}, { width: 36 }], cellViews: ->(cell) do
6
- cell.label text: ''
7
-
8
- column_indexes.each do |i|
9
- cell.label text: "Data #{page_index * batch_count + item}-#{i}"
10
- end
11
-
12
- cell.label text: ''
13
- end, onClick: ->(action) do
14
- action.windows_open url: json_ui_garage_url(path: 'home/blank')
15
- end
16
- end
1
+ batch_count = 30
2
+ items = (1..batch_count)
3
+ section = page.table_section_builder
4
+ section.rows objects: items, builder: ->(row, item, index) do
5
+ row.default colStyles: [{ width: 36 }, {}, {}, {}, { width: 36 }], cellViews: ->(cell) do
6
+ cell.label text: ''
7
+
8
+ column_indexes.each do |i|
9
+ cell.label text: "Data #{page_index * batch_count + item}-#{i}"
10
+ end
11
+
12
+ cell.label text: ''
13
+ end, onClick: ->(action) do
14
+ action.windows_open url: json_ui_garage_url(path: 'home/blank')
15
+ end
16
+ end
@@ -1,43 +1,43 @@
1
-
2
- page_index = params[:page].to_i
3
- next_page = {
4
- url: json_ui_garage_url(path: 'tables/autoload_all', page: page_index + 1, section_only: 'v1'),
5
- autoload: 'all'
6
- }
7
-
8
- column_indexes = (1..3)
9
- # TODO: Cater
10
- # - for SEO: one URL for a standalone page and one URL for pagination only
11
- # - for generic approach, e.g. excluding nav_menu when there is no change
12
- if params[:section_only].present?
13
- sleep 1
14
-
15
- json.nextPage next_page if page_index < 3
16
- json_ui_page json do |page|
17
- json.sections do
18
- json.child! do
19
- render 'json_ui/garage/tables/autoload_section', page: page, page_index: page_index, column_indexes: column_indexes
20
- end
21
- end
22
- end
23
- else
24
- json.title 'Tables'
25
-
26
- page = json_ui_page json
27
- render "#{@path_prefix}/nav_menu", json: json, page: page
28
-
29
- page.table nextPage: next_page, firstSection: ->(section) do
30
- section.header cellViews: ->(header) do
31
- column_indexes.each do |i|
32
- header.label text: "Heading#{i}"
33
- end
34
- end
35
-
36
- render "#{@path_prefix}/tables/autoload_section", page: page, page_index: page_index, column_indexes: column_indexes
37
- end, onScrollToBottom: ->(action) do
38
- action.snackbars_alert message: 'Scrolled to Bottom'
39
- end, onScrollToTop: ->(action) do
40
- action.snackbars_alert message: 'Scrolled to Top'
41
- end
42
-
43
- end
1
+
2
+ page_index = params[:page].to_i
3
+ next_page = {
4
+ url: json_ui_garage_url(path: 'tables/autoload_all', page: page_index + 1, section_only: 'v1'),
5
+ autoload: 'all'
6
+ }
7
+
8
+ column_indexes = (1..3)
9
+ # TODO: Cater
10
+ # - for SEO: one URL for a standalone page and one URL for pagination only
11
+ # - for generic approach, e.g. excluding nav_menu when there is no change
12
+ if params[:section_only].present?
13
+ sleep 1
14
+
15
+ json.nextPage next_page if page_index < 3
16
+ json_ui_page json do |page|
17
+ json.sections do
18
+ json.child! do
19
+ render 'json_ui/garage/tables/autoload_section', page: page, page_index: page_index, column_indexes: column_indexes
20
+ end
21
+ end
22
+ end
23
+ else
24
+ json.title 'Tables'
25
+
26
+ page = json_ui_page json
27
+ render "#{@path_prefix}/nav_menu", json: json, page: page
28
+
29
+ page.table nextPage: next_page, firstSection: ->(section) do
30
+ section.header cellViews: ->(header) do
31
+ column_indexes.each do |i|
32
+ header.label text: "Heading#{i}"
33
+ end
34
+ end
35
+
36
+ render "#{@path_prefix}/tables/autoload_section", page: page, page_index: page_index, column_indexes: column_indexes
37
+ end, onScrollToBottom: ->(action) do
38
+ action.snackbars_alert message: 'Scrolled to Bottom'
39
+ end, onScrollToTop: ->(action) do
40
+ action.snackbars_alert message: 'Scrolled to Top'
41
+ end
42
+
43
+ end
@@ -1,50 +1,50 @@
1
-
2
- col_index = params[:col].to_i
3
- page_index = params[:page].to_i
4
- next_page = {
5
- url: json_ui_garage_url(path: 'tables/autoload_as_needed', page: page_index + 1, col: col_index, section_only: 'v1'),
6
- autoload: 'asNeeded'
7
- }
8
-
9
- page = json_ui_page json
10
- column_begin = (col_index * 3) + 1
11
- column_end = column_begin + 2
12
- column_indexes = (column_begin..column_end)
13
-
14
- if params[:section_only].present?
15
- sleep 1
16
-
17
- json.nextPage next_page if page_index < 3
18
- json.sections do
19
- json.child! do
20
- render 'json_ui/garage/tables/autoload_section', page: page, page_index: page_index, column_indexes: column_indexes
21
- end
22
- end
23
- else
24
- json.title 'Tables'
25
-
26
- render "#{@path_prefix}/nav_menu", json: json, page: page
27
-
28
- page.table nextPage: next_page, firstSection: ->(section) do
29
- section.header cellViews: ->(header) do
30
- header.button icon: "chevron_left", styleClass: 'icon', onClick: ->(action) do
31
- action.windows_reload url: json_ui_garage_url(path: 'tables/autoload_as_needed', page: 0, col: col_index - 1)
32
- end
33
-
34
- column_indexes.each do |i|
35
- header.label text: "Heading#{i}"
36
- end
37
-
38
- header.button icon: "chevron_right", styleClass: 'icon', onClick: ->(action) do
39
- action.windows_reload url: json_ui_garage_url(path: 'tables/autoload_as_needed', page: 0, col: col_index + 1)
40
- end
41
- end
42
-
43
- render "#{@path_prefix}/tables/autoload_section", page: page, page_index: page_index, column_indexes: column_indexes
44
- end, onScrollToBottom: ->(action) do
45
- action.snackbars_alert message: 'Scrolled to Bottom'
46
- end, onScrollToTop: ->(action) do
47
- action.snackbars_alert message: 'Scrolled to Top'
48
- end
49
-
50
- end
1
+
2
+ col_index = params[:col].to_i
3
+ page_index = params[:page].to_i
4
+ next_page = {
5
+ url: json_ui_garage_url(path: 'tables/autoload_as_needed', page: page_index + 1, col: col_index, section_only: 'v1'),
6
+ autoload: 'asNeeded'
7
+ }
8
+
9
+ page = json_ui_page json
10
+ column_begin = (col_index * 3) + 1
11
+ column_end = column_begin + 2
12
+ column_indexes = (column_begin..column_end)
13
+
14
+ if params[:section_only].present?
15
+ sleep 1
16
+
17
+ json.nextPage next_page if page_index < 3
18
+ json.sections do
19
+ json.child! do
20
+ render 'json_ui/garage/tables/autoload_section', page: page, page_index: page_index, column_indexes: column_indexes
21
+ end
22
+ end
23
+ else
24
+ json.title 'Tables'
25
+
26
+ render "#{@path_prefix}/nav_menu", json: json, page: page
27
+
28
+ page.table nextPage: next_page, firstSection: ->(section) do
29
+ section.header cellViews: ->(header) do
30
+ header.button icon: "chevron_left", styleClass: 'icon', onClick: ->(action) do
31
+ action.windows_reload url: json_ui_garage_url(path: 'tables/autoload_as_needed', page: 0, col: col_index - 1)
32
+ end
33
+
34
+ column_indexes.each do |i|
35
+ header.label text: "Heading#{i}"
36
+ end
37
+
38
+ header.button icon: "chevron_right", styleClass: 'icon', onClick: ->(action) do
39
+ action.windows_reload url: json_ui_garage_url(path: 'tables/autoload_as_needed', page: 0, col: col_index + 1)
40
+ end
41
+ end
42
+
43
+ render "#{@path_prefix}/tables/autoload_section", page: page, page_index: page_index, column_indexes: column_indexes
44
+ end, onScrollToBottom: ->(action) do
45
+ action.snackbars_alert message: 'Scrolled to Bottom'
46
+ end, onScrollToTop: ->(action) do
47
+ action.snackbars_alert message: 'Scrolled to Top'
48
+ end
49
+
50
+ end
@@ -1,29 +1,29 @@
1
- json.title 'Tables'
2
-
3
- page = json_ui_page json
4
- render "#{@path_prefix}/nav_menu", json: json, page: page
5
-
6
- page.table export: { label: 'Export', fileName: 'output' }, import: { submitUrl: json_ui_garage_url(path: 'forms/generic_post'), paramName: 'user' }, firstSection: ->(section) do
7
- section.header cellViews: ->(header) do
8
- header.label text: 'field1'
9
- header.label text: 'field2'
10
- header.label text: 'field3'
11
- header.label text: 'field4'
12
- header.label text: 'field5'
13
- header.label text: 'field6'
14
- end
15
-
16
- items = [1, 2, 3]
17
- section.rows objects: items, builder: ->(row, item, index) do
18
- row.default cellViews: ->(cell) do
19
- cell.label text: "Data #{item}"
20
- cell.label text: "Data 'A' #{item}"
21
- cell.label text: 'Data "B"' + " #{item}"
22
- cell.label text: "Data , #{item}"
23
- cell.label text: "Line A#{item}\nLine B#{item}"
24
- cell.label text: "Line A#{item}\rLine B#{item}"
25
- end, onClick: ->(action) do
26
- action.windows_open url: json_ui_garage_url(path: 'home/blank')
27
- end
28
- end
29
- end
1
+ json.title 'Tables'
2
+
3
+ page = json_ui_page json
4
+ render "#{@path_prefix}/nav_menu", json: json, page: page
5
+
6
+ page.table export: { label: 'Export', fileName: 'output' }, import: { submitUrl: json_ui_garage_url(path: 'forms/generic_post'), paramName: 'user' }, firstSection: ->(section) do
7
+ section.header cellViews: ->(header) do
8
+ header.label text: 'field1'
9
+ header.label text: 'field2'
10
+ header.label text: 'field3'
11
+ header.label text: 'field4'
12
+ header.label text: 'field5'
13
+ header.label text: 'field6'
14
+ end
15
+
16
+ items = [1, 2, 3]
17
+ section.rows objects: items, builder: ->(row, item, index) do
18
+ row.default cellViews: ->(cell) do
19
+ cell.label text: "Data #{item}"
20
+ cell.label text: "Data 'A' #{item}"
21
+ cell.label text: 'Data "B"' + " #{item}"
22
+ cell.label text: "Data , #{item}"
23
+ cell.label text: "Line A#{item}\nLine B#{item}"
24
+ cell.label text: "Line A#{item}\rLine B#{item}"
25
+ end, onClick: ->(action) do
26
+ action.windows_open url: json_ui_garage_url(path: 'home/blank')
27
+ end
28
+ end
29
+ end
@@ -1,26 +1,26 @@
1
- json.title 'Tables'
2
-
3
- json_ui_page json do |page|
4
- render "#{@path_prefix}/nav_menu", json: json, page: page
5
-
6
- column_indexes = (1..20)
7
- page.table firstSection: ->(section) do
8
- section.header cellViews: ->(header) do
9
- column_indexes.each do |i|
10
- header.label text: "Heading#{i}"
11
- end
12
- end
13
-
14
- items = [1, 2, 3]
15
- section.rows objects: items, builder: ->(row, item, index) do
16
- row.default cellViews: ->(cell) do
17
- column_indexes.each do |i|
18
- cell.label text: "Data #{item}"
19
- end
20
- end, onClick: ->(action) do
21
- action.windows_open url: json_ui_garage_url(path: 'home/blank')
22
- end
23
- end
24
- end
25
-
26
- end
1
+ json.title 'Tables'
2
+
3
+ json_ui_page json do |page|
4
+ render "#{@path_prefix}/nav_menu", json: json, page: page
5
+
6
+ column_indexes = (1..20)
7
+ page.table firstSection: ->(section) do
8
+ section.header cellViews: ->(header) do
9
+ column_indexes.each do |i|
10
+ header.label text: "Heading#{i}"
11
+ end
12
+ end
13
+
14
+ items = [1, 2, 3]
15
+ section.rows objects: items, builder: ->(row, item, index) do
16
+ row.default cellViews: ->(cell) do
17
+ column_indexes.each do |i|
18
+ cell.label text: "Data #{item}"
19
+ end
20
+ end, onClick: ->(action) do
21
+ action.windows_open url: json_ui_garage_url(path: 'home/blank')
22
+ end
23
+ end
24
+ end
25
+
26
+ end