glib-web 0.5.83 → 0.5.84

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 (190) hide show
  1. checksums.yaml +4 -4
  2. data/app/channels/glib/channel/is_typing_channel.rb +34 -34
  3. data/app/channels/glib/channel/online_channel.rb +36 -36
  4. data/app/controllers/concerns/glib/analytics/funnel.rb +61 -61
  5. data/app/controllers/concerns/glib/auth/policy.rb +149 -149
  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 +18 -18
  18. data/app/helpers/glib/forms_helper.rb +15 -15
  19. data/app/helpers/glib/json_ui/abstract_builder.rb +309 -309
  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/iap.rb +15 -15
  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 +38 -38
  27. data/app/helpers/glib/json_ui/action_builder.rb +140 -140
  28. data/app/helpers/glib/json_ui/analytics_helper.rb +17 -17
  29. data/app/helpers/glib/json_ui/dynamic_field_builders.rb +25 -25
  30. data/app/helpers/glib/json_ui/generic_builders.rb +28 -28
  31. data/app/helpers/glib/json_ui/list_builders.rb +110 -110
  32. data/app/helpers/glib/json_ui/menu_builder.rb +96 -94
  33. data/app/helpers/glib/json_ui/page_helper.rb +221 -221
  34. data/app/helpers/glib/json_ui/response_helper.rb +25 -25
  35. data/app/helpers/glib/json_ui/styling_helper.rb +55 -55
  36. data/app/helpers/glib/json_ui/table_builders.rb +74 -74
  37. data/app/helpers/glib/json_ui/view_builder/banners.rb +26 -26
  38. data/app/helpers/glib/json_ui/view_builder/charts.rb +33 -33
  39. data/app/helpers/glib/json_ui/view_builder/fields.rb +291 -291
  40. data/app/helpers/glib/json_ui/view_builder/iap.rb +11 -11
  41. data/app/helpers/glib/json_ui/view_builder/panels.rb +258 -258
  42. data/app/helpers/glib/json_ui/view_builder.rb +248 -247
  43. data/app/helpers/glib/urls_helper.rb +12 -12
  44. data/app/models/concerns/glib/soft_deletable.rb +68 -68
  45. data/app/models/glib/active_storage/attachment.rb +9 -9
  46. data/app/models/glib/active_storage/blob.rb +9 -9
  47. data/app/models/glib/application_record.rb +18 -18
  48. data/app/models/glib/dynamic_text_record.rb +9 -9
  49. data/app/models/glib/text.rb +95 -95
  50. data/app/policies/glib/application_policy.rb +191 -191
  51. data/app/validators/email_typo_validator.rb +38 -38
  52. data/app/validators/email_validator.rb +7 -7
  53. data/app/validators/url_validator.rb +20 -20
  54. data/app/views/json_ui/garage/_nav_menu.json.jbuilder +70 -70
  55. data/app/views/json_ui/garage/actions/_dialogs.json.jbuilder +104 -104
  56. data/app/views/json_ui/garage/actions/_http.json.jbuilder +24 -24
  57. data/app/views/json_ui/garage/actions/_panels.json.jbuilder +18 -18
  58. data/app/views/json_ui/garage/actions/_reload.json.jbuilder +17 -17
  59. data/app/views/json_ui/garage/actions/_sheets.json.jbuilder +18 -18
  60. data/app/views/json_ui/garage/actions/_snackbars.json.jbuilder +33 -33
  61. data/app/views/json_ui/garage/actions/_timeouts.json.jbuilder +24 -24
  62. data/app/views/json_ui/garage/actions/_windows.json.jbuilder +24 -24
  63. data/app/views/json_ui/garage/actions/dialogs_oauth_post.json.jbuilder +6 -6
  64. data/app/views/json_ui/garage/actions/index.json.jbuilder +24 -24
  65. data/app/views/json_ui/garage/forms/_alert_post_data.json.jbuilder +10 -10
  66. data/app/views/json_ui/garage/forms/basic.json.jbuilder +21 -21
  67. data/app/views/json_ui/garage/forms/basic_post.json.jbuilder +8 -8
  68. data/app/views/json_ui/garage/forms/checkboxes.json.jbuilder +43 -43
  69. data/app/views/json_ui/garage/forms/conditional_value.json.jbuilder +36 -36
  70. data/app/views/json_ui/garage/forms/dynamic_group.json.jbuilder +39 -39
  71. data/app/views/json_ui/garage/forms/dynamic_select.json.jbuilder +24 -24
  72. data/app/views/json_ui/garage/forms/dynamic_select_data.json.jbuilder +38 -38
  73. data/app/views/json_ui/garage/forms/file_upload.json.jbuilder +37 -37
  74. data/app/views/json_ui/garage/forms/floating_submit.json.jbuilder +19 -19
  75. data/app/views/json_ui/garage/forms/generic_post.json.jbuilder +3 -3
  76. data/app/views/json_ui/garage/forms/get_request.json.jbuilder +27 -27
  77. data/app/views/json_ui/garage/forms/index.json.jbuilder +116 -116
  78. data/app/views/json_ui/garage/forms/new_rich_text.json.jbuilder +40 -40
  79. data/app/views/json_ui/garage/forms/online_participant1.json.jbuilder +25 -25
  80. data/app/views/json_ui/garage/forms/online_participant2.json.jbuilder +25 -25
  81. data/app/views/json_ui/garage/forms/payments.json.jbuilder +34 -34
  82. data/app/views/json_ui/garage/forms/pickers.json.jbuilder +81 -81
  83. data/app/views/json_ui/garage/forms/ratings.json.jbuilder +49 -49
  84. data/app/views/json_ui/garage/forms/rich_text.json.jbuilder +40 -40
  85. data/app/views/json_ui/garage/forms/selects.json.jbuilder +91 -91
  86. data/app/views/json_ui/garage/forms/show_hide.json.jbuilder +150 -150
  87. data/app/views/json_ui/garage/forms/styled_boxes.json.jbuilder +35 -35
  88. data/app/views/json_ui/garage/forms/submission_flow.json.jbuilder +17 -17
  89. data/app/views/json_ui/garage/forms/submission_flow_post.json.jbuilder +26 -26
  90. data/app/views/json_ui/garage/forms/submission_indicator.json.jbuilder +63 -63
  91. data/app/views/json_ui/garage/forms/submission_indicator_post.json.jbuilder +25 -25
  92. data/app/views/json_ui/garage/forms/text_validation.json.jbuilder +65 -65
  93. data/app/views/json_ui/garage/forms/timers.json.jbuilder +120 -120
  94. data/app/views/json_ui/garage/home/blank.json.jbuilder +10 -10
  95. data/app/views/json_ui/garage/home/index.json.jbuilder +36 -36
  96. data/app/views/json_ui/garage/home/slow.json.jbuilder +11 -11
  97. data/app/views/json_ui/garage/lists/_autoload_section.json.jbuilder +30 -30
  98. data/app/views/json_ui/garage/lists/autoload_all.json.jbuilder +32 -32
  99. data/app/views/json_ui/garage/lists/autoload_as_needed.json.jbuilder +35 -35
  100. data/app/views/json_ui/garage/lists/chat_ui.json.jbuilder +94 -94
  101. data/app/views/json_ui/garage/lists/edit_actions.json.jbuilder +62 -62
  102. data/app/views/json_ui/garage/lists/fab.json.jbuilder +12 -12
  103. data/app/views/json_ui/garage/lists/index.json.jbuilder +38 -38
  104. data/app/views/json_ui/garage/lists/reordering.json.jbuilder +34 -34
  105. data/app/views/json_ui/garage/lists/templating.json.jbuilder +35 -35
  106. data/app/views/json_ui/garage/notifications/action_cable.json.jbuilder +114 -114
  107. data/app/views/json_ui/garage/notifications/android_post.json.jbuilder +48 -48
  108. data/app/views/json_ui/garage/notifications/index.json.jbuilder +36 -36
  109. data/app/views/json_ui/garage/notifications/web_socket.json.jbuilder +60 -60
  110. data/app/views/json_ui/garage/pages/flat_centered.json.jbuilder +29 -29
  111. data/app/views/json_ui/garage/pages/full_width.json.jbuilder +29 -29
  112. data/app/views/json_ui/garage/pages/full_width_height.json.jbuilder +16 -16
  113. data/app/views/json_ui/garage/pages/index.json.jbuilder +62 -62
  114. data/app/views/json_ui/garage/pages/layout.json.jbuilder +18 -18
  115. data/app/views/json_ui/garage/pages/lifecycle_hooks.json.jbuilder +13 -13
  116. data/app/views/json_ui/garage/pages/loading_indicator.json.jbuilder +10 -10
  117. data/app/views/json_ui/garage/pages/nav_buttons.json.jbuilder +21 -21
  118. data/app/views/json_ui/garage/pages/nested_scroll.json.jbuilder +40 -40
  119. data/app/views/json_ui/garage/pages/tab_bar.json.jbuilder +66 -31
  120. data/app/views/json_ui/garage/panels/_styled.json.jbuilder +78 -78
  121. data/app/views/json_ui/garage/panels/card.json.jbuilder +4 -4
  122. data/app/views/json_ui/garage/panels/carousel.json.jbuilder +38 -38
  123. data/app/views/json_ui/garage/panels/custom.json.jbuilder +17 -17
  124. data/app/views/json_ui/garage/panels/flow.json.jbuilder +59 -59
  125. data/app/views/json_ui/garage/panels/horizontal.json.jbuilder +91 -91
  126. data/app/views/json_ui/garage/panels/index.json.jbuilder +138 -138
  127. data/app/views/json_ui/garage/panels/outlined.json.jbuilder +4 -4
  128. data/app/views/json_ui/garage/panels/responsive.json.jbuilder +98 -98
  129. data/app/views/json_ui/garage/panels/split.json.jbuilder +182 -182
  130. data/app/views/json_ui/garage/panels/ul.json.jbuilder +33 -33
  131. data/app/views/json_ui/garage/panels/vertical.json.jbuilder +55 -55
  132. data/app/views/json_ui/garage/panels/web.json.jbuilder +15 -15
  133. data/app/views/json_ui/garage/services/dynamic_text.json.jbuilder +13 -13
  134. data/app/views/json_ui/garage/services/image.json.jbuilder +47 -47
  135. data/app/views/json_ui/garage/services/index.json.jbuilder +17 -17
  136. data/app/views/json_ui/garage/tables/_autoload_section.json.jbuilder +16 -16
  137. data/app/views/json_ui/garage/tables/autoload_all.json.jbuilder +43 -43
  138. data/app/views/json_ui/garage/tables/autoload_as_needed.json.jbuilder +50 -50
  139. data/app/views/json_ui/garage/tables/export_import.json.jbuilder +29 -29
  140. data/app/views/json_ui/garage/tables/horizontal_scroll.json.jbuilder +26 -26
  141. data/app/views/json_ui/garage/tables/index.json.jbuilder +25 -25
  142. data/app/views/json_ui/garage/tables/layout.json.jbuilder +40 -40
  143. data/app/views/json_ui/garage/views/_chart_data.json.jbuilder +17 -17
  144. data/app/views/json_ui/garage/views/banners.json.jbuilder +67 -63
  145. data/app/views/json_ui/garage/views/calendar_data.json.jbuilder +30 -30
  146. data/app/views/json_ui/garage/views/charts.json.jbuilder +115 -115
  147. data/app/views/json_ui/garage/views/controls.json.jbuilder +37 -37
  148. data/app/views/json_ui/garage/views/iap.json.jbuilder +21 -21
  149. data/app/views/json_ui/garage/views/icon_names.json.jbuilder +1450 -1450
  150. data/app/views/json_ui/garage/views/icons.json.jbuilder +15 -15
  151. data/app/views/json_ui/garage/views/images.json.jbuilder +89 -89
  152. data/app/views/json_ui/garage/views/index.json.jbuilder +83 -83
  153. data/app/views/json_ui/garage/views/links.json.jbuilder +70 -70
  154. data/app/views/json_ui/garage/views/map_cluster_data.json.jbuilder +41 -41
  155. data/app/views/json_ui/garage/views/map_data.json.jbuilder +51 -51
  156. data/app/views/json_ui/garage/views/maps.json.jbuilder +31 -31
  157. data/app/views/json_ui/garage/views/markdowns.json.jbuilder +41 -41
  158. data/app/views/json_ui/garage/views/misc.json.jbuilder +34 -34
  159. data/app/views/json_ui/garage/views/progress.json.jbuilder +31 -31
  160. data/app/views/json_ui/garage/views/texts.json.jbuilder +35 -35
  161. data/app/views/layouts/json_ui/renderer.html.erb +35 -35
  162. data/config/routes.rb +7 -7
  163. data/lib/generators/glib/install_generator.rb +24 -24
  164. data/lib/generators/templates/20191017062519_create_texts.rb +12 -12
  165. data/lib/generators/templates/20191024063257_add_scope_to_texts.rb +7 -7
  166. data/lib/generators/templates/20191112095018_add_lang_to_texts.rb +7 -7
  167. data/lib/generators/templates/20191126071051_create_active_storage_tables.active_storage.rb +27 -27
  168. data/lib/generators/templates/database.yml +107 -107
  169. data/lib/generators/templates/dynamic_text.rb +2 -2
  170. data/lib/glib/crypt/utils.rb +26 -26
  171. data/lib/glib/dynamic_text/config.rb +21 -21
  172. data/lib/glib/engine.rb +7 -7
  173. data/lib/glib/json_crawler/action_crawler.rb +23 -23
  174. data/lib/glib/json_crawler/action_crawlers/action_http.rb +11 -11
  175. data/lib/glib/json_crawler/action_crawlers/forms_submit.rb +48 -48
  176. data/lib/glib/json_crawler/action_crawlers/menu.rb +12 -12
  177. data/lib/glib/json_crawler/action_crawlers/nav_initiate.rb +19 -19
  178. data/lib/glib/json_crawler/action_crawlers/run_multiple.rb +13 -13
  179. data/lib/glib/json_crawler/action_crawlers/windows_open.rb +33 -33
  180. data/lib/glib/json_crawler/coverage.rb +20 -20
  181. data/lib/glib/json_crawler/http.rb +120 -120
  182. data/lib/glib/json_crawler/router.rb +90 -90
  183. data/lib/glib/json_crawler.rb +11 -11
  184. data/lib/glib/mailer_tester.rb +36 -36
  185. data/lib/glib/test_helpers.rb +52 -52
  186. data/lib/glib/value.rb +7 -7
  187. data/lib/glib/version.rb +5 -5
  188. data/lib/glib-web.rb +9 -9
  189. data/lib/tasks/db.rake +95 -95
  190. metadata +2 -3
@@ -1,247 +1,248 @@
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 Switch < View
175
- string :text, cache: true
176
- bool :enabled
177
-
178
- action :onEnabled
179
- action :onDisabled
180
- end
181
-
182
- class Hr < View
183
- color :color
184
- end
185
-
186
- class Spacer < View
187
- end
188
-
189
- class Map < View
190
- float :latitude
191
- float :longitude
192
- int :zoom
193
- string :dataUrl
194
- bool :cluster
195
- end
196
-
197
- class Chip < View
198
- string :text
199
- action :onClick
200
- end
201
-
202
- class Calendar < View
203
- string :dataUrl
204
- end
205
-
206
- class TabBar < View
207
- color :color
208
-
209
- def buttons(block)
210
- json.buttons do
211
- block.call page.menu_builder
212
- end
213
- end
214
- end
215
-
216
- class AppBar < View
217
- color :color
218
- panels_builder :content, :logo
219
-
220
- # def leftButtons(block)
221
- # json.leftButtons do
222
- # block.call page.menu_builder
223
- # end
224
- # end
225
-
226
- def rightButtons(block)
227
- json.rightButtons do
228
- block.call page.menu_builder
229
- end
230
- end
231
- end
232
-
233
- class Datetime < View
234
- date_time :value
235
- string :format
236
- bool :tick
237
- end
238
-
239
- class ProgressBar < View
240
- float :value
241
- color :color
242
- color :backgroundColor
243
- bool :reversed
244
- end
245
- end
246
- end
247
- 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 Switch < View
175
+ string :text, cache: true
176
+ bool :enabled
177
+
178
+ action :onEnabled
179
+ action :onDisabled
180
+ end
181
+
182
+ class Hr < View
183
+ color :color
184
+ end
185
+
186
+ class Spacer < View
187
+ end
188
+
189
+ class Map < View
190
+ float :latitude
191
+ float :longitude
192
+ int :zoom
193
+ string :dataUrl
194
+ bool :cluster
195
+ end
196
+
197
+ class Chip < View
198
+ string :text
199
+ action :onClick
200
+ end
201
+
202
+ class Calendar < View
203
+ string :dataUrl
204
+ end
205
+
206
+ class TabBar < View
207
+ int :height
208
+ color :color
209
+
210
+ def buttons(block)
211
+ json.buttons do
212
+ block.call page.menu_builder
213
+ end
214
+ end
215
+ end
216
+
217
+ class AppBar < View
218
+ color :color
219
+ panels_builder :content, :logo
220
+
221
+ # def leftButtons(block)
222
+ # json.leftButtons do
223
+ # block.call page.menu_builder
224
+ # end
225
+ # end
226
+
227
+ def rightButtons(block)
228
+ json.rightButtons do
229
+ block.call page.menu_builder
230
+ end
231
+ end
232
+ end
233
+
234
+ class Datetime < View
235
+ date_time :value
236
+ string :format
237
+ bool :tick
238
+ end
239
+
240
+ class ProgressBar < View
241
+ float :value
242
+ color :color
243
+ color :backgroundColor
244
+ bool :reversed
245
+ end
246
+ end
247
+ end
248
+ end
@@ -1,12 +1,12 @@
1
- module Glib
2
- module UrlsHelper
3
- def glib_url_current(new_params)
4
- url_for(params.to_unsafe_h.merge(new_params.merge(only_path: false)))
5
- end
6
-
7
- def glib_url_equals_current?(url)
8
- route = Rails.application.routes.recognize_path(url)
9
- route[:controller] == controller_name && route[:action] == action_name
10
- end
11
- end
12
- end
1
+ module Glib
2
+ module UrlsHelper
3
+ def glib_url_current(new_params)
4
+ url_for(params.to_unsafe_h.merge(new_params.merge(only_path: false)))
5
+ end
6
+
7
+ def glib_url_equals_current?(url)
8
+ route = Rails.application.routes.recognize_path(url)
9
+ route[:controller] == controller_name && route[:action] == action_name
10
+ end
11
+ end
12
+ end
@@ -1,68 +1,68 @@
1
- module Glib
2
- module SoftDeletable
3
- extend ActiveSupport::Concern
4
-
5
- included do
6
- default_scope { where(deleted_at: nil) }
7
- scope :with_deleted, -> { unscope(where: :deleted_at) }
8
-
9
- # "Soft delete" - set deleted_at if it is nil, actually destroy the record
10
- # if forced.
11
- #
12
- # @param force [Boolean]
13
- def destroy(force = nil)
14
- return force_destroy_record if force == :force
15
- return self if deleted?
16
-
17
- soft_destroy_record
18
- end
19
-
20
- # Revive a soft-deleted record and associated records if soft-deleted,
21
- # otherwise return self
22
- def revive
23
- return self unless deleted?
24
-
25
- ActiveRecord::Base.transaction do
26
- update(deleted_at: nil)
27
- revive_associated_records
28
- end
29
- end
30
-
31
- # Whether or not a record is deleted
32
- def deleted?
33
- deleted_at.present?
34
- end
35
-
36
- private
37
- def force_destroy_record
38
- ActiveRecord::Base.transaction do
39
- destroy_associated_records(:force)
40
- method(:destroy).super_method.call
41
- end
42
- end
43
-
44
- def soft_destroy_record
45
- ActiveRecord::Base.transaction do
46
- destroy_associated_records
47
- update(deleted_at: Time.zone.now)
48
- end
49
- end
50
-
51
- def destroy_associated_records(force = nil)
52
- associated_records.each { |r| r.destroy(force) }
53
- end
54
-
55
- def revive_associated_records
56
- associated_records.each(&:revive)
57
- end
58
-
59
- # This should return an array of all associated records of an object that
60
- # should be soft deleted with it (i.e. those that have dependent: :destroy
61
- # set). In principle we could figure this out automatically but in the
62
- # interest of simplicity we'll just define it manually for each class.
63
- def associated_records
64
- []
65
- end
66
- end
67
- end
68
- end
1
+ module Glib
2
+ module SoftDeletable
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ default_scope { where(deleted_at: nil) }
7
+ scope :with_deleted, -> { unscope(where: :deleted_at) }
8
+
9
+ # "Soft delete" - set deleted_at if it is nil, actually destroy the record
10
+ # if forced.
11
+ #
12
+ # @param force [Boolean]
13
+ def destroy(force = nil)
14
+ return force_destroy_record if force == :force
15
+ return self if deleted?
16
+
17
+ soft_destroy_record
18
+ end
19
+
20
+ # Revive a soft-deleted record and associated records if soft-deleted,
21
+ # otherwise return self
22
+ def revive
23
+ return self unless deleted?
24
+
25
+ ActiveRecord::Base.transaction do
26
+ update(deleted_at: nil)
27
+ revive_associated_records
28
+ end
29
+ end
30
+
31
+ # Whether or not a record is deleted
32
+ def deleted?
33
+ deleted_at.present?
34
+ end
35
+
36
+ private
37
+ def force_destroy_record
38
+ ActiveRecord::Base.transaction do
39
+ destroy_associated_records(:force)
40
+ method(:destroy).super_method.call
41
+ end
42
+ end
43
+
44
+ def soft_destroy_record
45
+ ActiveRecord::Base.transaction do
46
+ destroy_associated_records
47
+ update(deleted_at: Time.zone.now)
48
+ end
49
+ end
50
+
51
+ def destroy_associated_records(force = nil)
52
+ associated_records.each { |r| r.destroy(force) }
53
+ end
54
+
55
+ def revive_associated_records
56
+ associated_records.each(&:revive)
57
+ end
58
+
59
+ # This should return an array of all associated records of an object that
60
+ # should be soft deleted with it (i.e. those that have dependent: :destroy
61
+ # set). In principle we could figure this out automatically but in the
62
+ # interest of simplicity we'll just define it manually for each class.
63
+ def associated_records
64
+ []
65
+ end
66
+ end
67
+ end
68
+ end
@@ -1,9 +1,9 @@
1
- module Glib
2
- module ActiveStorage
3
- class Attachment < ::ActiveStorage::Attachment
4
- if Glib::DynamicText::Config.database_url.present?
5
- connects_to database: { writing: :dynamic_text, reading: :dynamic_text }
6
- end
7
- end
8
- end
9
- end
1
+ module Glib
2
+ module ActiveStorage
3
+ class Attachment < ::ActiveStorage::Attachment
4
+ if Glib::DynamicText::Config.database_url.present?
5
+ connects_to database: { writing: :dynamic_text, reading: :dynamic_text }
6
+ end
7
+ end
8
+ end
9
+ end