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,25 +1,25 @@
1
- module Glib
2
- module JsonUi
3
- module ResponseHelper
4
- def json_ui_response(json)
5
- __json_ui_analytics(json)
6
-
7
- json.onResponse do
8
- response = Response.new(json, self)
9
- yield response.action_builder
10
- end
11
- end
12
-
13
- class Response
14
- attr_reader :action_builder
15
-
16
- def initialize(json, context)
17
- @json = json
18
- @context = context
19
-
20
- @action_builder = ActionBuilder.new(json, self, false)
21
- end
22
- end
23
- end
24
- end
25
- end
1
+ module Glib
2
+ module JsonUi
3
+ module ResponseHelper
4
+ def json_ui_response(json)
5
+ __json_ui_analytics(json)
6
+
7
+ json.onResponse do
8
+ response = Response.new(json, self)
9
+ yield response.action_builder
10
+ end
11
+ end
12
+
13
+ class Response
14
+ attr_reader :action_builder
15
+
16
+ def initialize(json, context)
17
+ @json = json
18
+ @context = context
19
+
20
+ @action_builder = ActionBuilder.new(json, self, false)
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -1,32 +1,32 @@
1
- module Glib
2
- module JsonUi
3
- module SplitBuilders
4
-
5
- class Content < AbstractBuilder
6
- def initialize(json, page, template)
7
- super json, page
8
- @template = template
9
- end
10
-
11
- def left(options = {})
12
- json.left do
13
- page.vertical_content(options)
14
- end
15
- end
16
-
17
- def center(options = {})
18
- json.center do
19
- page.vertical_content(options)
20
- end
21
- end
22
-
23
- def right(options = {})
24
- json.right do
25
- page.vertical_content(options)
26
- end
27
- end
28
- end
29
-
30
- end
31
- end
32
- end
1
+ module Glib
2
+ module JsonUi
3
+ module SplitBuilders
4
+
5
+ class Content < AbstractBuilder
6
+ def initialize(json, page, template)
7
+ super json, page
8
+ @template = template
9
+ end
10
+
11
+ def left(options = {})
12
+ json.left do
13
+ page.vertical_content(options)
14
+ end
15
+ end
16
+
17
+ def center(options = {})
18
+ json.center do
19
+ page.vertical_content(options)
20
+ end
21
+ end
22
+
23
+ def right(options = {})
24
+ json.right do
25
+ page.vertical_content(options)
26
+ end
27
+ end
28
+ end
29
+
30
+ end
31
+ end
32
+ end
@@ -1,47 +1,47 @@
1
- module Glib
2
- module JsonUi
3
- module StylingHelper
4
-
5
- ### Padding
6
-
7
- def glib_json_padding_body
8
- { top: 12, left: 20, right: 20, bottom: 12 }
9
- end
10
-
11
- def glib_json_padding_list
12
- { top: 12, bottom: 12, left: 16, right: 16 }
13
- end
14
-
15
- ###
16
-
17
-
18
-
19
- ### Image
20
-
21
- def glib_json_image_standard_url
22
- 'https://cdn-images-1.medium.com/max/1200/1*Qc0XxYm-qAZL-7tjjlNfrg.png'
23
- end
24
-
25
- def glib_json_image_avatar_url
26
- 'https://www.wpjournalist.nl/wp-content/uploads/2019/03/avatar-jongen-voorbeeld-1.jpg'
27
- end
28
-
29
- def glib_json_image_blob_key
30
- 'o6CKzNt67PWnkPdUEnWMt7pr'
31
- end
32
-
33
- ###
34
-
35
-
36
-
37
- ### Color
38
-
39
- def glib_color_panel_background
40
- '#b3bac2'
41
- end
42
-
43
- ###
44
-
45
- end
46
- end
47
- end
1
+ module Glib
2
+ module JsonUi
3
+ module StylingHelper
4
+
5
+ ### Padding
6
+
7
+ def glib_json_padding_body
8
+ { top: 12, left: 20, right: 20, bottom: 12 }
9
+ end
10
+
11
+ def glib_json_padding_list
12
+ { top: 12, bottom: 12, left: 16, right: 16 }
13
+ end
14
+
15
+ ###
16
+
17
+
18
+
19
+ ### Image
20
+
21
+ def glib_json_image_standard_url
22
+ 'https://cdn-images-1.medium.com/max/1200/1*Qc0XxYm-qAZL-7tjjlNfrg.png'
23
+ end
24
+
25
+ def glib_json_image_avatar_url
26
+ 'https://www.wpjournalist.nl/wp-content/uploads/2019/03/avatar-jongen-voorbeeld-1.jpg'
27
+ end
28
+
29
+ def glib_json_image_blob_key
30
+ 'o6CKzNt67PWnkPdUEnWMt7pr'
31
+ end
32
+
33
+ ###
34
+
35
+
36
+
37
+ ### Color
38
+
39
+ def glib_color_panel_background
40
+ '#b3bac2'
41
+ end
42
+
43
+ ###
44
+
45
+ end
46
+ end
47
+ end
@@ -1,74 +1,74 @@
1
- module Glib
2
- module JsonUi
3
- module TableBuilders
4
- class Template < AbstractBuilder
5
- def method_missing(m, *args)
6
- add_element_to_array 'template', m, *args
7
- end
8
-
9
- class AbstractTemplate < JsonUiElement
10
-
11
- def editButtons(block)
12
- json.editButtons do
13
- block.call page.menu_builder
14
- end
15
- end
16
-
17
- end
18
-
19
- class Default < AbstractTemplate
20
- views :cellViews
21
- action :onClick
22
- array :colSpans
23
- array :colStyles
24
- end
25
- end
26
-
27
- class Section < AbstractBuilder
28
- def initialize(json, page, template)
29
- super json, page
30
- @template = template
31
- end
32
-
33
- def header(options = {})
34
- json.header do
35
- json.backgroundColor options[:backgroundColor]
36
- json.cellViews do
37
- options[:cellViews]&.call page.view_builder
38
- end
39
- end
40
- end
41
-
42
- def rows(options = {})
43
- block = options.delete(:builder)
44
- json.rows do
45
- if (objects = options.delete(:objects))
46
- objects.each_with_index do |object, index|
47
- block&.call @template, object, index
48
- end
49
- else
50
- block&.call @template
51
- end
52
- end
53
-
54
- raise "Invalid properties: #{options.keys}" if options.size > 0
55
- end
56
-
57
- # def rows(array = nil)
58
- # template = page.table_template_builder
59
- # json.rows do
60
- # if array
61
- # array.each do |row|
62
- # yield template, row
63
- # end
64
- # else
65
- # yield template
66
- # end
67
- # end
68
- # end
69
-
70
- end
71
-
72
- end
73
- end
74
- end
1
+ module Glib
2
+ module JsonUi
3
+ module TableBuilders
4
+ class Template < AbstractBuilder
5
+ def method_missing(m, *args)
6
+ add_element_to_array 'template', m, *args
7
+ end
8
+
9
+ class AbstractTemplate < JsonUiElement
10
+
11
+ def editButtons(block)
12
+ json.editButtons do
13
+ block.call page.menu_builder
14
+ end
15
+ end
16
+
17
+ end
18
+
19
+ class Default < AbstractTemplate
20
+ views :cellViews
21
+ action :onClick
22
+ array :colSpans
23
+ array :colStyles
24
+ end
25
+ end
26
+
27
+ class Section < AbstractBuilder
28
+ def initialize(json, page, template)
29
+ super json, page
30
+ @template = template
31
+ end
32
+
33
+ def header(options = {})
34
+ json.header do
35
+ json.backgroundColor options[:backgroundColor]
36
+ json.cellViews do
37
+ options[:cellViews]&.call page.view_builder
38
+ end
39
+ end
40
+ end
41
+
42
+ def rows(options = {})
43
+ block = options.delete(:builder)
44
+ json.rows do
45
+ if (objects = options.delete(:objects))
46
+ objects.each_with_index do |object, index|
47
+ block&.call @template, object, index
48
+ end
49
+ else
50
+ block&.call @template
51
+ end
52
+ end
53
+
54
+ raise "Invalid properties: #{options.keys}" if options.size > 0
55
+ end
56
+
57
+ # def rows(array = nil)
58
+ # template = page.table_template_builder
59
+ # json.rows do
60
+ # if array
61
+ # array.each do |row|
62
+ # yield template, row
63
+ # end
64
+ # else
65
+ # yield template
66
+ # end
67
+ # end
68
+ # end
69
+
70
+ end
71
+
72
+ end
73
+ end
74
+ end
@@ -1,209 +1,209 @@
1
- module Glib
2
- module JsonUi
3
- class ViewBuilder < AbstractBuilder
4
- def initialize(json, page, multiple)
5
- super(json, page)
6
-
7
- @multiple = multiple
8
- end
9
-
10
- def add_view(name, *args)
11
- if @multiple
12
- add_element_to_array_v1 'view', name, *args
13
- else
14
- add_singleton_element_v1 'view', name, *args
15
- end
16
- end
17
-
18
- def add_singleton_view(name, *args)
19
- add_singleton_element 'view', name, *args
20
- end
21
-
22
- def method_missing(m, *args)
23
- add_view m, *args
24
- end
25
-
26
- class View < JsonUiElement
27
- length :width
28
- length :height
29
- color :backgroundColor
30
- hash :padding
31
- singleton_array :styleClass, :styleClasses
32
- hash :showIf
33
- hash :valueIf
34
- hash :analytics
35
-
36
- # def initialize(json, page)
37
- # super(json, page)
38
-
39
- # # Can be improved by making it configurable site-wide.
40
- # @analyticsEnabled = true
41
- # end
42
-
43
- # def analytics(value)
44
- # if value.is_a?(String)
45
- # @analyticsEnabled = true
46
- # @analyticsId = value
47
- # else
48
- # @analyticsEnabled = value == true
49
- # end
50
- # end
51
-
52
- # # Override
53
- # def created
54
- # # if @analyticsEnabled
55
- # # context = page.context
56
- # # json.analytics do
57
- # # content = @analyticsId || (@text || @icon)&.gsub(/\s+/, '_')&.downcase || 'nil'
58
- # # json.namePrefix [context.controller_name, context.action_name, content].join('_')
59
- # # end
60
- # # end
61
-
62
- # json.analytics do
63
- # if @analyticsEnabled
64
- # if @analyticsId
65
- # json.placement @analyticsId
66
- # end
67
- # else
68
- # json.disabled true
69
- # end
70
- # end
71
- # end
72
-
73
- end
74
-
75
- ### View definitions
76
-
77
- class AbstractText < View
78
- string :textAlign
79
- text :text
80
- color :color
81
- end
82
-
83
- class H1 < AbstractText
84
- end
85
-
86
- class H2 < AbstractText
87
- end
88
-
89
- class H3 < AbstractText
90
- end
91
-
92
- class H4 < AbstractText
93
- end
94
-
95
- class H5 < AbstractText
96
- end
97
-
98
- class H6 < AbstractText
99
- end
100
-
101
- class P < AbstractText
102
- end
103
-
104
- class Markdown < AbstractText
105
- bool :previewVideo
106
- end
107
-
108
- class Html < AbstractText
109
- end
110
-
111
- class Label < AbstractText
112
- hash :actionCable
113
- # string :format
114
- action :onClick
115
- end
116
-
117
- class Image < View
118
- string :url
119
- string :base64Data
120
- action :onClick
121
- string :fit
122
- end
123
-
124
- class Avatar < View
125
- string :url
126
- action :onClick
127
- end
128
-
129
- class Icon < View
130
- icon :spec
131
- action :onClick
132
- end
133
-
134
- # class Banner < View
135
- # icon :icon
136
- # string :text
137
- # end
138
-
139
- class Button < View
140
- icon :icon, cache: true
141
- string :text, cache: true
142
- action :onClick
143
- color :color
144
- end
145
-
146
- class Fab < View
147
- icon :icon
148
- action :onClick
149
- end
150
-
151
- class Hr < View
152
- color :color
153
- end
154
-
155
- class Spacer < View
156
- end
157
-
158
- class Map < View
159
- float :latitude
160
- float :longitude
161
- int :zoom
162
- string :dataUrl
163
- bool :cluster
164
- end
165
-
166
- class Chip < View
167
- string :text
168
- action :onClick
169
- end
170
-
171
- class Calendar < View
172
- string :dataUrl
173
- end
174
-
175
- class TabBar < View
176
- color :color
177
-
178
- def buttons(block)
179
- json.buttons do
180
- block.call page.menu_builder
181
- end
182
- end
183
- end
184
-
185
- class AppBar < View
186
- color :color
187
-
188
- # def leftButtons(block)
189
- # json.leftButtons do
190
- # block.call page.menu_builder
191
- # end
192
- # end
193
-
194
- def rightButtons(block)
195
- json.rightButtons do
196
- block.call page.menu_builder
197
- end
198
- end
199
- end
200
-
201
- class Datetime < View
202
- date_time :value
203
- string :format
204
- bool :tick
205
- end
206
-
207
- end
208
- end
209
- end
1
+ module Glib
2
+ module JsonUi
3
+ class ViewBuilder < AbstractBuilder
4
+ def initialize(json, page, multiple)
5
+ super(json, page)
6
+
7
+ @multiple = multiple
8
+ end
9
+
10
+ def add_view(name, *args)
11
+ if @multiple
12
+ add_element_to_array_v1 'view', name, *args
13
+ else
14
+ add_singleton_element_v1 'view', name, *args
15
+ end
16
+ end
17
+
18
+ def add_singleton_view(name, *args)
19
+ add_singleton_element 'view', name, *args
20
+ end
21
+
22
+ def method_missing(m, *args)
23
+ add_view m, *args
24
+ end
25
+
26
+ class View < JsonUiElement
27
+ length :width
28
+ length :height
29
+ color :backgroundColor
30
+ hash :padding
31
+ singleton_array :styleClass, :styleClasses
32
+ hash :showIf
33
+ hash :valueIf
34
+ hash :analytics
35
+
36
+ # def initialize(json, page)
37
+ # super(json, page)
38
+
39
+ # # Can be improved by making it configurable site-wide.
40
+ # @analyticsEnabled = true
41
+ # end
42
+
43
+ # def analytics(value)
44
+ # if value.is_a?(String)
45
+ # @analyticsEnabled = true
46
+ # @analyticsId = value
47
+ # else
48
+ # @analyticsEnabled = value == true
49
+ # end
50
+ # end
51
+
52
+ # # Override
53
+ # def created
54
+ # # if @analyticsEnabled
55
+ # # context = page.context
56
+ # # json.analytics do
57
+ # # content = @analyticsId || (@text || @icon)&.gsub(/\s+/, '_')&.downcase || 'nil'
58
+ # # json.namePrefix [context.controller_name, context.action_name, content].join('_')
59
+ # # end
60
+ # # end
61
+
62
+ # json.analytics do
63
+ # if @analyticsEnabled
64
+ # if @analyticsId
65
+ # json.placement @analyticsId
66
+ # end
67
+ # else
68
+ # json.disabled true
69
+ # end
70
+ # end
71
+ # end
72
+
73
+ end
74
+
75
+ ### View definitions
76
+
77
+ class AbstractText < View
78
+ string :textAlign
79
+ text :text
80
+ color :color
81
+ end
82
+
83
+ class H1 < AbstractText
84
+ end
85
+
86
+ class H2 < AbstractText
87
+ end
88
+
89
+ class H3 < AbstractText
90
+ end
91
+
92
+ class H4 < AbstractText
93
+ end
94
+
95
+ class H5 < AbstractText
96
+ end
97
+
98
+ class H6 < AbstractText
99
+ end
100
+
101
+ class P < AbstractText
102
+ end
103
+
104
+ class Markdown < AbstractText
105
+ bool :previewVideo
106
+ end
107
+
108
+ class Html < AbstractText
109
+ end
110
+
111
+ class Label < AbstractText
112
+ hash :actionCable
113
+ # string :format
114
+ action :onClick
115
+ end
116
+
117
+ class Image < View
118
+ string :url
119
+ string :base64Data
120
+ action :onClick
121
+ string :fit
122
+ end
123
+
124
+ class Avatar < View
125
+ string :url
126
+ action :onClick
127
+ end
128
+
129
+ class Icon < View
130
+ icon :spec
131
+ action :onClick
132
+ end
133
+
134
+ # class Banner < View
135
+ # icon :icon
136
+ # string :text
137
+ # end
138
+
139
+ class Button < View
140
+ icon :icon, cache: true
141
+ string :text, cache: true
142
+ action :onClick
143
+ color :color
144
+ end
145
+
146
+ class Fab < View
147
+ icon :icon
148
+ action :onClick
149
+ end
150
+
151
+ class Hr < View
152
+ color :color
153
+ end
154
+
155
+ class Spacer < View
156
+ end
157
+
158
+ class Map < View
159
+ float :latitude
160
+ float :longitude
161
+ int :zoom
162
+ string :dataUrl
163
+ bool :cluster
164
+ end
165
+
166
+ class Chip < View
167
+ string :text
168
+ action :onClick
169
+ end
170
+
171
+ class Calendar < View
172
+ string :dataUrl
173
+ end
174
+
175
+ class TabBar < View
176
+ color :color
177
+
178
+ def buttons(block)
179
+ json.buttons do
180
+ block.call page.menu_builder
181
+ end
182
+ end
183
+ end
184
+
185
+ class AppBar < View
186
+ color :color
187
+
188
+ # def leftButtons(block)
189
+ # json.leftButtons do
190
+ # block.call page.menu_builder
191
+ # end
192
+ # end
193
+
194
+ def rightButtons(block)
195
+ json.rightButtons do
196
+ block.call page.menu_builder
197
+ end
198
+ end
199
+ end
200
+
201
+ class Datetime < View
202
+ date_time :value
203
+ string :format
204
+ bool :tick
205
+ end
206
+
207
+ end
208
+ end
209
+ end