glib-web 0.5.66 → 0.5.67

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 (181) hide show
  1. checksums.yaml +4 -4
  2. data/app/channels/glib/channel/is_typing_channel.rb +34 -28
  3. data/app/channels/glib/channel/online_channel.rb +36 -29
  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 +294 -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 +31 -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 +47 -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 +267 -263
  41. data/app/helpers/glib/json_ui/view_builder/panels.rb +251 -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 +32 -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 +116 -113
  76. data/app/views/json_ui/garage/forms/misc.json.jbuilder +57 -29
  77. data/app/views/json_ui/garage/forms/misc_two.json.jbuilder +61 -0
  78. data/app/views/json_ui/garage/forms/new_rich_text.json.jbuilder +39 -39
  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/home/blank.json.jbuilder +10 -10
  91. data/app/views/json_ui/garage/home/index.json.jbuilder +36 -36
  92. data/app/views/json_ui/garage/home/slow.json.jbuilder +11 -11
  93. data/app/views/json_ui/garage/lists/_autoload_section.json.jbuilder +28 -28
  94. data/app/views/json_ui/garage/lists/autoload_all.json.jbuilder +32 -32
  95. data/app/views/json_ui/garage/lists/autoload_as_needed.json.jbuilder +35 -35
  96. data/app/views/json_ui/garage/lists/chat_ui.json.jbuilder +94 -94
  97. data/app/views/json_ui/garage/lists/edit_actions.json.jbuilder +62 -62
  98. data/app/views/json_ui/garage/lists/fab.json.jbuilder +12 -12
  99. data/app/views/json_ui/garage/lists/index.json.jbuilder +32 -32
  100. data/app/views/json_ui/garage/lists/reordering.json.jbuilder +34 -34
  101. data/app/views/json_ui/garage/lists/templating.json.jbuilder +35 -35
  102. data/app/views/json_ui/garage/notifications/action_cable.json.jbuilder +114 -113
  103. data/app/views/json_ui/garage/notifications/android_post.json.jbuilder +48 -48
  104. data/app/views/json_ui/garage/notifications/index.json.jbuilder +36 -36
  105. data/app/views/json_ui/garage/notifications/web_socket.json.jbuilder +60 -60
  106. data/app/views/json_ui/garage/pages/flat_centered.json.jbuilder +29 -29
  107. data/app/views/json_ui/garage/pages/full_width.json.jbuilder +29 -29
  108. data/app/views/json_ui/garage/pages/full_width_height.json.jbuilder +16 -16
  109. data/app/views/json_ui/garage/pages/index.json.jbuilder +62 -62
  110. data/app/views/json_ui/garage/pages/layout.json.jbuilder +18 -18
  111. data/app/views/json_ui/garage/pages/lifecycle_hooks.json.jbuilder +13 -13
  112. data/app/views/json_ui/garage/pages/loading_indicator.json.jbuilder +10 -10
  113. data/app/views/json_ui/garage/pages/nav_buttons.json.jbuilder +21 -21
  114. data/app/views/json_ui/garage/pages/nested_scroll.json.jbuilder +40 -40
  115. data/app/views/json_ui/garage/pages/tab_bar.json.jbuilder +31 -31
  116. data/app/views/json_ui/garage/panels/_styled.json.jbuilder +78 -78
  117. data/app/views/json_ui/garage/panels/card.json.jbuilder +4 -4
  118. data/app/views/json_ui/garage/panels/carousel.json.jbuilder +37 -37
  119. data/app/views/json_ui/garage/panels/custom.json.jbuilder +17 -17
  120. data/app/views/json_ui/garage/panels/flow.json.jbuilder +49 -49
  121. data/app/views/json_ui/garage/panels/horizontal.json.jbuilder +91 -91
  122. data/app/views/json_ui/garage/panels/index.json.jbuilder +132 -132
  123. data/app/views/json_ui/garage/panels/outlined.json.jbuilder +4 -4
  124. data/app/views/json_ui/garage/panels/responsive.json.jbuilder +98 -98
  125. data/app/views/json_ui/garage/panels/split.json.jbuilder +182 -182
  126. data/app/views/json_ui/garage/panels/vertical.json.jbuilder +55 -55
  127. data/app/views/json_ui/garage/services/dynamic_text.json.jbuilder +13 -13
  128. data/app/views/json_ui/garage/services/image.json.jbuilder +47 -47
  129. data/app/views/json_ui/garage/services/index.json.jbuilder +17 -17
  130. data/app/views/json_ui/garage/tables/_autoload_section.json.jbuilder +16 -16
  131. data/app/views/json_ui/garage/tables/autoload_all.json.jbuilder +43 -43
  132. data/app/views/json_ui/garage/tables/autoload_as_needed.json.jbuilder +50 -50
  133. data/app/views/json_ui/garage/tables/export_import.json.jbuilder +29 -29
  134. data/app/views/json_ui/garage/tables/horizontal_scroll.json.jbuilder +26 -26
  135. data/app/views/json_ui/garage/tables/index.json.jbuilder +25 -25
  136. data/app/views/json_ui/garage/tables/layout.json.jbuilder +40 -40
  137. data/app/views/json_ui/garage/views/_chart_data.json.jbuilder +17 -17
  138. data/app/views/json_ui/garage/views/banners.json.jbuilder +63 -63
  139. data/app/views/json_ui/garage/views/calendar_data.json.jbuilder +30 -30
  140. data/app/views/json_ui/garage/views/charts.json.jbuilder +115 -115
  141. data/app/views/json_ui/garage/views/icon_names.json.jbuilder +1450 -1450
  142. data/app/views/json_ui/garage/views/icons.json.jbuilder +14 -14
  143. data/app/views/json_ui/garage/views/images.json.jbuilder +89 -89
  144. data/app/views/json_ui/garage/views/index.json.jbuilder +64 -64
  145. data/app/views/json_ui/garage/views/links.json.jbuilder +70 -70
  146. data/app/views/json_ui/garage/views/map_cluster_data.json.jbuilder +41 -41
  147. data/app/views/json_ui/garage/views/map_data.json.jbuilder +51 -51
  148. data/app/views/json_ui/garage/views/maps.json.jbuilder +31 -31
  149. data/app/views/json_ui/garage/views/markdowns.json.jbuilder +41 -41
  150. data/app/views/json_ui/garage/views/misc.json.jbuilder +34 -34
  151. data/app/views/json_ui/garage/views/texts.json.jbuilder +44 -44
  152. data/app/views/layouts/json_ui/renderer.html.erb +35 -35
  153. data/config/routes.rb +7 -7
  154. data/lib/generators/glib/install_generator.rb +24 -24
  155. data/lib/generators/templates/20191017062519_create_texts.rb +12 -12
  156. data/lib/generators/templates/20191024063257_add_scope_to_texts.rb +7 -7
  157. data/lib/generators/templates/20191112095018_add_lang_to_texts.rb +7 -7
  158. data/lib/generators/templates/20191126071051_create_active_storage_tables.active_storage.rb +27 -27
  159. data/lib/generators/templates/database.yml +107 -107
  160. data/lib/generators/templates/dynamic_text.rb +2 -2
  161. data/lib/glib-web.rb +9 -9
  162. data/lib/glib/crypt/utils.rb +26 -26
  163. data/lib/glib/dynamic_text/config.rb +21 -21
  164. data/lib/glib/engine.rb +7 -7
  165. data/lib/glib/json_crawler.rb +11 -11
  166. data/lib/glib/json_crawler/action_crawler.rb +23 -23
  167. data/lib/glib/json_crawler/action_crawlers/action_http.rb +11 -11
  168. data/lib/glib/json_crawler/action_crawlers/forms_submit.rb +48 -48
  169. data/lib/glib/json_crawler/action_crawlers/menu.rb +12 -12
  170. data/lib/glib/json_crawler/action_crawlers/nav_initiate.rb +19 -19
  171. data/lib/glib/json_crawler/action_crawlers/run_multiple.rb +13 -13
  172. data/lib/glib/json_crawler/action_crawlers/windows_open.rb +33 -33
  173. data/lib/glib/json_crawler/coverage.rb +20 -20
  174. data/lib/glib/json_crawler/http.rb +120 -120
  175. data/lib/glib/json_crawler/router.rb +98 -98
  176. data/lib/glib/mailer_tester.rb +36 -36
  177. data/lib/glib/test_helpers.rb +52 -52
  178. data/lib/glib/value.rb +7 -7
  179. data/lib/glib/version.rb +5 -5
  180. data/lib/tasks/db.rake +95 -95
  181. metadata +2 -1
@@ -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,232 +1,232 @@
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
- string :id
28
- length :width
29
- length :height
30
- color :backgroundColor
31
- hash :padding
32
- singleton_array :styleClass, :styleClasses
33
- hash :showIf
34
- hash :valueIf
35
- hash :analytics
36
-
37
- # def initialize(json, page)
38
- # super(json, page)
39
-
40
- # # Can be improved by making it configurable site-wide.
41
- # @analyticsEnabled = true
42
- # end
43
-
44
- # def analytics(value)
45
- # if value.is_a?(String)
46
- # @analyticsEnabled = true
47
- # @analyticsId = value
48
- # else
49
- # @analyticsEnabled = value == true
50
- # end
51
- # end
52
-
53
- # # Override
54
- # def created
55
- # # if @analyticsEnabled
56
- # # context = page.context
57
- # # json.analytics do
58
- # # content = @analyticsId || (@text || @icon)&.gsub(/\s+/, '_')&.downcase || 'nil'
59
- # # json.namePrefix [context.controller_name, context.action_name, content].join('_')
60
- # # end
61
- # # end
62
-
63
- # json.analytics do
64
- # if @analyticsEnabled
65
- # if @analyticsId
66
- # json.placement @analyticsId
67
- # end
68
- # else
69
- # json.disabled true
70
- # end
71
- # end
72
- # end
73
-
74
- end
75
-
76
- ### View definitions
77
-
78
- class AbstractText < View
79
- string :textAlign
80
- text :text
81
- color :color
82
- end
83
-
84
- class H1 < AbstractText
85
- end
86
-
87
- class H2 < AbstractText
88
- end
89
-
90
- class H3 < AbstractText
91
- end
92
-
93
- class H4 < AbstractText
94
- end
95
-
96
- class H5 < AbstractText
97
- end
98
-
99
- class H6 < AbstractText
100
- end
101
-
102
- class P < AbstractText
103
- end
104
-
105
- class Markdown < AbstractText
106
- bool :previewVideo
107
- end
108
-
109
- class Html < AbstractText
110
- end
111
-
112
- class Label < AbstractText
113
- hash :actionCable
114
- # string :format
115
- action :onClick
116
- end
117
-
118
- class Image < View
119
- string :url
120
- string :base64Data
121
- action :onClick
122
- string :fit
123
- end
124
-
125
- class Avatar < View
126
- int :size
127
- string :url
128
- action :onClick
129
- end
130
-
131
- class Icon < View
132
- # TODO: Remove later. Deprecated.
133
- icon :spec
134
-
135
- action :onClick
136
- color :color
137
-
138
- def name(value)
139
- @name = value
140
- end
141
-
142
- def size(value)
143
- @size = value
144
- end
145
-
146
- # Override
147
- def created
148
- if @name
149
- json.material do
150
- json.name @name
151
- json.size @size if @size
152
- end
153
- end
154
- end
155
- end
156
-
157
- # class Banner < View
158
- # icon :icon
159
- # string :text
160
- # end
161
-
162
- class Button < View
163
- icon :icon, cache: true
164
- string :text, cache: true
165
- action :onClick
166
- color :color
167
- end
168
-
169
- class Fab < View
170
- icon :icon
171
- action :onClick
172
- end
173
-
174
- class Hr < View
175
- color :color
176
- end
177
-
178
- class Spacer < View
179
- end
180
-
181
- class Map < View
182
- float :latitude
183
- float :longitude
184
- int :zoom
185
- string :dataUrl
186
- bool :cluster
187
- end
188
-
189
- class Chip < View
190
- string :text
191
- action :onClick
192
- end
193
-
194
- class Calendar < View
195
- string :dataUrl
196
- end
197
-
198
- class TabBar < View
199
- color :color
200
-
201
- def buttons(block)
202
- json.buttons do
203
- block.call page.menu_builder
204
- end
205
- end
206
- end
207
-
208
- class AppBar < View
209
- color :color
210
-
211
- # def leftButtons(block)
212
- # json.leftButtons do
213
- # block.call page.menu_builder
214
- # end
215
- # end
216
-
217
- def rightButtons(block)
218
- json.rightButtons do
219
- block.call page.menu_builder
220
- end
221
- end
222
- end
223
-
224
- class Datetime < View
225
- date_time :value
226
- string :format
227
- bool :tick
228
- end
229
-
230
- end
231
- end
232
- 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
+ string :id
28
+ length :width
29
+ length :height
30
+ color :backgroundColor
31
+ hash :padding
32
+ singleton_array :styleClass, :styleClasses
33
+ hash :showIf
34
+ hash :valueIf
35
+ hash :analytics
36
+
37
+ # def initialize(json, page)
38
+ # super(json, page)
39
+
40
+ # # Can be improved by making it configurable site-wide.
41
+ # @analyticsEnabled = true
42
+ # end
43
+
44
+ # def analytics(value)
45
+ # if value.is_a?(String)
46
+ # @analyticsEnabled = true
47
+ # @analyticsId = value
48
+ # else
49
+ # @analyticsEnabled = value == true
50
+ # end
51
+ # end
52
+
53
+ # # Override
54
+ # def created
55
+ # # if @analyticsEnabled
56
+ # # context = page.context
57
+ # # json.analytics do
58
+ # # content = @analyticsId || (@text || @icon)&.gsub(/\s+/, '_')&.downcase || 'nil'
59
+ # # json.namePrefix [context.controller_name, context.action_name, content].join('_')
60
+ # # end
61
+ # # end
62
+
63
+ # json.analytics do
64
+ # if @analyticsEnabled
65
+ # if @analyticsId
66
+ # json.placement @analyticsId
67
+ # end
68
+ # else
69
+ # json.disabled true
70
+ # end
71
+ # end
72
+ # end
73
+
74
+ end
75
+
76
+ ### View definitions
77
+
78
+ class AbstractText < View
79
+ string :textAlign
80
+ text :text
81
+ color :color
82
+ end
83
+
84
+ class H1 < AbstractText
85
+ end
86
+
87
+ class H2 < AbstractText
88
+ end
89
+
90
+ class H3 < AbstractText
91
+ end
92
+
93
+ class H4 < AbstractText
94
+ end
95
+
96
+ class H5 < AbstractText
97
+ end
98
+
99
+ class H6 < AbstractText
100
+ end
101
+
102
+ class P < AbstractText
103
+ end
104
+
105
+ class Markdown < AbstractText
106
+ bool :previewVideo
107
+ end
108
+
109
+ class Html < AbstractText
110
+ end
111
+
112
+ class Label < AbstractText
113
+ hash :actionCable
114
+ # string :format
115
+ action :onClick
116
+ end
117
+
118
+ class Image < View
119
+ string :url
120
+ string :base64Data
121
+ action :onClick
122
+ string :fit
123
+ end
124
+
125
+ class Avatar < View
126
+ int :size
127
+ string :url
128
+ action :onClick
129
+ end
130
+
131
+ class Icon < View
132
+ # TODO: Remove later. Deprecated.
133
+ icon :spec
134
+
135
+ action :onClick
136
+ color :color
137
+
138
+ def name(value)
139
+ @name = value
140
+ end
141
+
142
+ def size(value)
143
+ @size = value
144
+ end
145
+
146
+ # Override
147
+ def created
148
+ if @name
149
+ json.material do
150
+ json.name @name
151
+ json.size @size if @size
152
+ end
153
+ end
154
+ end
155
+ end
156
+
157
+ # class Banner < View
158
+ # icon :icon
159
+ # string :text
160
+ # end
161
+
162
+ class Button < View
163
+ icon :icon, cache: true
164
+ string :text, cache: true
165
+ action :onClick
166
+ color :color
167
+ end
168
+
169
+ class Fab < View
170
+ icon :icon
171
+ action :onClick
172
+ end
173
+
174
+ class Hr < View
175
+ color :color
176
+ end
177
+
178
+ class Spacer < View
179
+ end
180
+
181
+ class Map < View
182
+ float :latitude
183
+ float :longitude
184
+ int :zoom
185
+ string :dataUrl
186
+ bool :cluster
187
+ end
188
+
189
+ class Chip < View
190
+ string :text
191
+ action :onClick
192
+ end
193
+
194
+ class Calendar < View
195
+ string :dataUrl
196
+ end
197
+
198
+ class TabBar < View
199
+ color :color
200
+
201
+ def buttons(block)
202
+ json.buttons do
203
+ block.call page.menu_builder
204
+ end
205
+ end
206
+ end
207
+
208
+ class AppBar < View
209
+ color :color
210
+
211
+ # def leftButtons(block)
212
+ # json.leftButtons do
213
+ # block.call page.menu_builder
214
+ # end
215
+ # end
216
+
217
+ def rightButtons(block)
218
+ json.rightButtons do
219
+ block.call page.menu_builder
220
+ end
221
+ end
222
+ end
223
+
224
+ class Datetime < View
225
+ date_time :value
226
+ string :format
227
+ bool :tick
228
+ end
229
+
230
+ end
231
+ end
232
+ end