glib-web 0.6.1 → 0.6.2

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 (194) 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 -96
  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 +49 -49
  39. data/app/helpers/glib/json_ui/view_builder/fields.rb +296 -296
  40. data/app/helpers/glib/json_ui/view_builder/iap.rb +11 -11
  41. data/app/helpers/glib/json_ui/view_builder/panels.rb +262 -262
  42. data/app/helpers/glib/json_ui/view_builder.rb +262 -262
  43. data/app/helpers/glib/urls_helper.rb +12 -12
  44. data/app/models/concerns/glib/soft_deletable.rb +73 -73
  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 +72 -72
  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 +27 -27
  69. data/app/views/json_ui/garage/forms/conditional_value.json.jbuilder +38 -38
  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 +120 -120
  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 +89 -89
  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 +154 -154
  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/submit_on_change.json.jbuilder +28 -28
  93. data/app/views/json_ui/garage/forms/text_validation.json.jbuilder +65 -65
  94. data/app/views/json_ui/garage/forms/timers.json.jbuilder +120 -120
  95. data/app/views/json_ui/garage/home/blank.json.jbuilder +10 -10
  96. data/app/views/json_ui/garage/home/index.json.jbuilder +36 -36
  97. data/app/views/json_ui/garage/home/slow.json.jbuilder +11 -11
  98. data/app/views/json_ui/garage/lists/_autoload_section.json.jbuilder +30 -30
  99. data/app/views/json_ui/garage/lists/autoload_all.json.jbuilder +32 -32
  100. data/app/views/json_ui/garage/lists/autoload_as_needed.json.jbuilder +35 -35
  101. data/app/views/json_ui/garage/lists/autoload_as_needed_responsive_columns.json.jbuilder +27 -27
  102. data/app/views/json_ui/garage/lists/chat_ui.json.jbuilder +94 -94
  103. data/app/views/json_ui/garage/lists/edit_actions.json.jbuilder +62 -62
  104. data/app/views/json_ui/garage/lists/fab.json.jbuilder +12 -12
  105. data/app/views/json_ui/garage/lists/index.json.jbuilder +41 -41
  106. data/app/views/json_ui/garage/lists/reordering.json.jbuilder +34 -34
  107. data/app/views/json_ui/garage/lists/templating.json.jbuilder +35 -35
  108. data/app/views/json_ui/garage/notifications/action_cable.json.jbuilder +114 -114
  109. data/app/views/json_ui/garage/notifications/android_post.json.jbuilder +48 -48
  110. data/app/views/json_ui/garage/notifications/index.json.jbuilder +36 -36
  111. data/app/views/json_ui/garage/notifications/web_socket.json.jbuilder +60 -60
  112. data/app/views/json_ui/garage/pages/flat_centered.json.jbuilder +29 -29
  113. data/app/views/json_ui/garage/pages/full_width.json.jbuilder +29 -29
  114. data/app/views/json_ui/garage/pages/full_width_height.json.jbuilder +16 -16
  115. data/app/views/json_ui/garage/pages/index.json.jbuilder +62 -62
  116. data/app/views/json_ui/garage/pages/layout.json.jbuilder +18 -18
  117. data/app/views/json_ui/garage/pages/lifecycle_hooks.json.jbuilder +13 -13
  118. data/app/views/json_ui/garage/pages/loading_indicator.json.jbuilder +10 -10
  119. data/app/views/json_ui/garage/pages/nav_buttons.json.jbuilder +21 -21
  120. data/app/views/json_ui/garage/pages/nested_scroll.json.jbuilder +40 -40
  121. data/app/views/json_ui/garage/pages/tab_bar.json.jbuilder +92 -92
  122. data/app/views/json_ui/garage/panels/_styled.json.jbuilder +78 -78
  123. data/app/views/json_ui/garage/panels/card.json.jbuilder +4 -4
  124. data/app/views/json_ui/garage/panels/carousel.json.jbuilder +38 -38
  125. data/app/views/json_ui/garage/panels/custom.json.jbuilder +17 -17
  126. data/app/views/json_ui/garage/panels/flow.json.jbuilder +59 -59
  127. data/app/views/json_ui/garage/panels/horizontal.json.jbuilder +101 -101
  128. data/app/views/json_ui/garage/panels/index.json.jbuilder +138 -138
  129. data/app/views/json_ui/garage/panels/outlined.json.jbuilder +4 -4
  130. data/app/views/json_ui/garage/panels/responsive.json.jbuilder +98 -98
  131. data/app/views/json_ui/garage/panels/split.json.jbuilder +182 -182
  132. data/app/views/json_ui/garage/panels/ul.json.jbuilder +33 -33
  133. data/app/views/json_ui/garage/panels/vertical.json.jbuilder +55 -55
  134. data/app/views/json_ui/garage/panels/web.json.jbuilder +15 -15
  135. data/app/views/json_ui/garage/services/dynamic_text.json.jbuilder +13 -13
  136. data/app/views/json_ui/garage/services/image.json.jbuilder +47 -47
  137. data/app/views/json_ui/garage/services/index.json.jbuilder +17 -17
  138. data/app/views/json_ui/garage/tables/_autoload_section.json.jbuilder +16 -16
  139. data/app/views/json_ui/garage/tables/autoload_all.json.jbuilder +43 -43
  140. data/app/views/json_ui/garage/tables/autoload_as_needed.json.jbuilder +50 -50
  141. data/app/views/json_ui/garage/tables/export_import.json.jbuilder +29 -29
  142. data/app/views/json_ui/garage/tables/horizontal_scroll.json.jbuilder +26 -26
  143. data/app/views/json_ui/garage/tables/index.json.jbuilder +25 -25
  144. data/app/views/json_ui/garage/tables/layout.json.jbuilder +40 -40
  145. data/app/views/json_ui/garage/views/_chart_data.json.jbuilder +17 -17
  146. data/app/views/json_ui/garage/views/banners.json.jbuilder +67 -67
  147. data/app/views/json_ui/garage/views/calendar_data.json.jbuilder +30 -30
  148. data/app/views/json_ui/garage/views/charts.json.jbuilder +125 -125
  149. data/app/views/json_ui/garage/views/controls.json.jbuilder +60 -60
  150. data/app/views/json_ui/garage/views/iap.json.jbuilder +21 -21
  151. data/app/views/json_ui/garage/views/icon_names.json.jbuilder +1450 -1450
  152. data/app/views/json_ui/garage/views/icons.json.jbuilder +15 -15
  153. data/app/views/json_ui/garage/views/images.json.jbuilder +89 -89
  154. data/app/views/json_ui/garage/views/index.json.jbuilder +83 -83
  155. data/app/views/json_ui/garage/views/links.json.jbuilder +70 -70
  156. data/app/views/json_ui/garage/views/map_cluster_data.json.jbuilder +41 -41
  157. data/app/views/json_ui/garage/views/map_data.json.jbuilder +51 -51
  158. data/app/views/json_ui/garage/views/maps.json.jbuilder +31 -31
  159. data/app/views/json_ui/garage/views/markdowns.json.jbuilder +41 -41
  160. data/app/views/json_ui/garage/views/misc.json.jbuilder +34 -34
  161. data/app/views/json_ui/garage/views/progress.json.jbuilder +31 -31
  162. data/app/views/json_ui/garage/views/texts.json.jbuilder +35 -35
  163. data/app/views/layouts/json_ui/renderer.html.erb +35 -35
  164. data/config/routes.rb +7 -7
  165. data/lib/generators/glib/install_generator.rb +24 -24
  166. data/lib/generators/templates/20191017062519_create_texts.rb +12 -12
  167. data/lib/generators/templates/20191024063257_add_scope_to_texts.rb +7 -7
  168. data/lib/generators/templates/20191112095018_add_lang_to_texts.rb +7 -7
  169. data/lib/generators/templates/20191126071051_create_active_storage_tables.active_storage.rb +27 -27
  170. data/lib/generators/templates/database.yml +107 -107
  171. data/lib/generators/templates/dynamic_text.rb +2 -2
  172. data/lib/glib/crypt/utils.rb +26 -26
  173. data/lib/glib/crypt.rb +0 -0
  174. data/lib/glib/dynamic_text/config.rb +21 -21
  175. data/lib/glib/dynamic_text.rb +0 -0
  176. data/lib/glib/engine.rb +7 -7
  177. data/lib/glib/json_crawler/action_crawler.rb +23 -23
  178. data/lib/glib/json_crawler/action_crawlers/action_http.rb +11 -11
  179. data/lib/glib/json_crawler/action_crawlers/forms_submit.rb +48 -48
  180. data/lib/glib/json_crawler/action_crawlers/menu.rb +12 -12
  181. data/lib/glib/json_crawler/action_crawlers/nav_initiate.rb +19 -19
  182. data/lib/glib/json_crawler/action_crawlers/run_multiple.rb +13 -13
  183. data/lib/glib/json_crawler/action_crawlers/windows_open.rb +33 -33
  184. data/lib/glib/json_crawler/coverage.rb +20 -20
  185. data/lib/glib/json_crawler/http.rb +120 -120
  186. data/lib/glib/json_crawler/router.rb +95 -90
  187. data/lib/glib/json_crawler.rb +11 -11
  188. data/lib/glib/mailer_tester.rb +36 -36
  189. data/lib/glib/test_helpers.rb +52 -52
  190. data/lib/glib/value.rb +7 -7
  191. data/lib/glib/version.rb +5 -5
  192. data/lib/glib-web.rb +9 -9
  193. data/lib/tasks/db.rake +95 -95
  194. metadata +1 -1
@@ -1,262 +1,262 @@
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
- hash :tooltip
37
-
38
- # def initialize(json, page)
39
- # super(json, page)
40
-
41
- # # Can be improved by making it configurable site-wide.
42
- # @analyticsEnabled = true
43
- # end
44
-
45
- # def analytics(value)
46
- # if value.is_a?(String)
47
- # @analyticsEnabled = true
48
- # @analyticsId = value
49
- # else
50
- # @analyticsEnabled = value == true
51
- # end
52
- # end
53
-
54
- # # Override
55
- # def created
56
- # # if @analyticsEnabled
57
- # # context = page.context
58
- # # json.analytics do
59
- # # content = @analyticsId || (@text || @icon)&.gsub(/\s+/, '_')&.downcase || 'nil'
60
- # # json.namePrefix [context.controller_name, context.action_name, content].join('_')
61
- # # end
62
- # # end
63
-
64
- # json.analytics do
65
- # if @analyticsEnabled
66
- # if @analyticsId
67
- # json.placement @analyticsId
68
- # end
69
- # else
70
- # json.disabled true
71
- # end
72
- # end
73
- # end
74
-
75
- end
76
-
77
- ### View definitions
78
-
79
- class AbstractText < View
80
- string :textAlign
81
- text :text
82
- color :color
83
- end
84
-
85
- class H1 < AbstractText
86
- action :onClick
87
- end
88
-
89
- class H2 < AbstractText
90
- action :onClick
91
- end
92
-
93
- class H3 < AbstractText
94
- action :onClick
95
- end
96
-
97
- class H4 < AbstractText
98
- action :onClick
99
- end
100
-
101
- class H5 < AbstractText
102
- action :onClick
103
- end
104
-
105
- class H6 < AbstractText
106
- action :onClick
107
- end
108
-
109
- class P < AbstractText
110
- end
111
-
112
- class Markdown < AbstractText
113
- bool :previewVideo
114
- end
115
-
116
- class Html < AbstractText
117
- end
118
-
119
- class Label < AbstractText
120
- hash :actionCable
121
- # string :format
122
- action :onClick
123
- end
124
-
125
- class Image < View
126
- string :url
127
- string :base64Data
128
- action :onClick
129
- string :fit
130
- end
131
-
132
- class Avatar < View
133
- int :size
134
- string :url
135
- action :onClick
136
- end
137
-
138
- class Icon < View
139
- # TODO: Remove later. Deprecated.
140
- icon :spec
141
-
142
- action :onClick
143
- color :color
144
-
145
- def name(value)
146
- @name = value
147
- end
148
-
149
- def size(value)
150
- @size = value
151
- end
152
-
153
- # Override
154
- def created
155
- if @name
156
- json.material do
157
- json.name @name
158
- json.size @size if @size
159
- end
160
- end
161
- end
162
- end
163
-
164
- # class Banner < View
165
- # icon :icon
166
- # string :text
167
- # end
168
-
169
- class Button < View
170
- icon :icon, cache: true
171
- string :text, cache: true
172
- action :onClick
173
- color :color
174
- bool :disabled
175
- end
176
-
177
- class Fab < View
178
- icon :icon
179
- action :onClick
180
- end
181
-
182
- class Switch < View
183
- string :text, cache: true
184
- bool :enabled
185
-
186
- action :onEnabled
187
- action :onDisabled
188
- end
189
-
190
- class Hr < View
191
- color :color
192
- end
193
-
194
- class Spacer < View
195
- end
196
-
197
- class Map < View
198
- float :latitude
199
- float :longitude
200
- int :zoom
201
- string :dataUrl
202
- bool :cluster
203
- end
204
-
205
- class Chip < View
206
- string :text
207
- action :onClick
208
-
209
- string :badgeContent
210
- color :badgeColor
211
- end
212
-
213
- class Calendar < View
214
- string :dataUrl
215
- end
216
-
217
- class TabBar < View
218
- int :height
219
- color :color
220
-
221
- def buttons(block)
222
- json.buttons do
223
- block.call page.menu_builder
224
- end
225
- end
226
- end
227
-
228
- class AppBar < View
229
- color :color
230
- panels_builder :content, :logo
231
- string :imageUrl
232
- action :onCLick
233
- bool :showTitle
234
-
235
- # def leftButtons(block)
236
- # json.leftButtons do
237
- # block.call page.menu_builder
238
- # end
239
- # end
240
-
241
- def rightButtons(block)
242
- json.rightButtons do
243
- block.call page.menu_builder
244
- end
245
- end
246
- end
247
-
248
- class Datetime < View
249
- date_time :value
250
- string :format
251
- bool :tick
252
- end
253
-
254
- class ProgressBar < View
255
- float :value
256
- color :color
257
- color :backgroundColor
258
- bool :reversed
259
- end
260
- end
261
- end
262
- 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
+ hash :tooltip
37
+
38
+ # def initialize(json, page)
39
+ # super(json, page)
40
+
41
+ # # Can be improved by making it configurable site-wide.
42
+ # @analyticsEnabled = true
43
+ # end
44
+
45
+ # def analytics(value)
46
+ # if value.is_a?(String)
47
+ # @analyticsEnabled = true
48
+ # @analyticsId = value
49
+ # else
50
+ # @analyticsEnabled = value == true
51
+ # end
52
+ # end
53
+
54
+ # # Override
55
+ # def created
56
+ # # if @analyticsEnabled
57
+ # # context = page.context
58
+ # # json.analytics do
59
+ # # content = @analyticsId || (@text || @icon)&.gsub(/\s+/, '_')&.downcase || 'nil'
60
+ # # json.namePrefix [context.controller_name, context.action_name, content].join('_')
61
+ # # end
62
+ # # end
63
+
64
+ # json.analytics do
65
+ # if @analyticsEnabled
66
+ # if @analyticsId
67
+ # json.placement @analyticsId
68
+ # end
69
+ # else
70
+ # json.disabled true
71
+ # end
72
+ # end
73
+ # end
74
+
75
+ end
76
+
77
+ ### View definitions
78
+
79
+ class AbstractText < View
80
+ string :textAlign
81
+ text :text
82
+ color :color
83
+ end
84
+
85
+ class H1 < AbstractText
86
+ action :onClick
87
+ end
88
+
89
+ class H2 < AbstractText
90
+ action :onClick
91
+ end
92
+
93
+ class H3 < AbstractText
94
+ action :onClick
95
+ end
96
+
97
+ class H4 < AbstractText
98
+ action :onClick
99
+ end
100
+
101
+ class H5 < AbstractText
102
+ action :onClick
103
+ end
104
+
105
+ class H6 < AbstractText
106
+ action :onClick
107
+ end
108
+
109
+ class P < AbstractText
110
+ end
111
+
112
+ class Markdown < AbstractText
113
+ bool :previewVideo
114
+ end
115
+
116
+ class Html < AbstractText
117
+ end
118
+
119
+ class Label < AbstractText
120
+ hash :actionCable
121
+ # string :format
122
+ action :onClick
123
+ end
124
+
125
+ class Image < View
126
+ string :url
127
+ string :base64Data
128
+ action :onClick
129
+ string :fit
130
+ end
131
+
132
+ class Avatar < View
133
+ int :size
134
+ string :url
135
+ action :onClick
136
+ end
137
+
138
+ class Icon < View
139
+ # TODO: Remove later. Deprecated.
140
+ icon :spec
141
+
142
+ action :onClick
143
+ color :color
144
+
145
+ def name(value)
146
+ @name = value
147
+ end
148
+
149
+ def size(value)
150
+ @size = value
151
+ end
152
+
153
+ # Override
154
+ def created
155
+ if @name
156
+ json.material do
157
+ json.name @name
158
+ json.size @size if @size
159
+ end
160
+ end
161
+ end
162
+ end
163
+
164
+ # class Banner < View
165
+ # icon :icon
166
+ # string :text
167
+ # end
168
+
169
+ class Button < View
170
+ icon :icon, cache: true
171
+ string :text, cache: true
172
+ action :onClick
173
+ color :color
174
+ bool :disabled
175
+ end
176
+
177
+ class Fab < View
178
+ icon :icon
179
+ action :onClick
180
+ end
181
+
182
+ class Switch < View
183
+ string :text, cache: true
184
+ bool :enabled
185
+
186
+ action :onEnabled
187
+ action :onDisabled
188
+ end
189
+
190
+ class Hr < View
191
+ color :color
192
+ end
193
+
194
+ class Spacer < View
195
+ end
196
+
197
+ class Map < View
198
+ float :latitude
199
+ float :longitude
200
+ int :zoom
201
+ string :dataUrl
202
+ bool :cluster
203
+ end
204
+
205
+ class Chip < View
206
+ string :text
207
+ action :onClick
208
+
209
+ string :badgeContent
210
+ color :badgeColor
211
+ end
212
+
213
+ class Calendar < View
214
+ string :dataUrl
215
+ end
216
+
217
+ class TabBar < View
218
+ int :height
219
+ color :color
220
+
221
+ def buttons(block)
222
+ json.buttons do
223
+ block.call page.menu_builder
224
+ end
225
+ end
226
+ end
227
+
228
+ class AppBar < View
229
+ color :color
230
+ panels_builder :content, :logo
231
+ string :imageUrl
232
+ action :onCLick
233
+ bool :showTitle
234
+
235
+ # def leftButtons(block)
236
+ # json.leftButtons do
237
+ # block.call page.menu_builder
238
+ # end
239
+ # end
240
+
241
+ def rightButtons(block)
242
+ json.rightButtons do
243
+ block.call page.menu_builder
244
+ end
245
+ end
246
+ end
247
+
248
+ class Datetime < View
249
+ date_time :value
250
+ string :format
251
+ bool :tick
252
+ end
253
+
254
+ class ProgressBar < View
255
+ float :value
256
+ color :color
257
+ color :backgroundColor
258
+ bool :reversed
259
+ end
260
+ end
261
+ end
262
+ 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,73 +1,73 @@
1
- # To use this, simply:
2
- # - Include the module
3
- # - Add this migration: `add_column :model, :deleted_at, :datetime, null: true`
4
- #
5
- # After that, any call to `destroy` will automatically be a soft-deletion.
6
- module Glib
7
- module SoftDeletable
8
- extend ActiveSupport::Concern
9
-
10
- included do
11
- default_scope { where(deleted_at: nil) }
12
- scope :with_deleted, -> { unscope(where: :deleted_at) }
13
-
14
- # "Soft delete" - set deleted_at if it is nil, actually destroy the record
15
- # if forced.
16
- #
17
- # @param force [Boolean]
18
- def destroy(force = nil)
19
- return force_destroy_record if force == :force
20
- return self if deleted?
21
-
22
- soft_destroy_record
23
- end
24
-
25
- # Revive a soft-deleted record and associated records if soft-deleted,
26
- # otherwise return self
27
- def revive
28
- return self unless deleted?
29
-
30
- ActiveRecord::Base.transaction do
31
- update(deleted_at: nil)
32
- revive_associated_records
33
- end
34
- end
35
-
36
- # Whether or not a record is deleted
37
- def deleted?
38
- deleted_at.present?
39
- end
40
-
41
- private
42
- def force_destroy_record
43
- ActiveRecord::Base.transaction do
44
- destroy_associated_records(:force)
45
- method(:destroy).super_method.call
46
- end
47
- end
48
-
49
- def soft_destroy_record
50
- ActiveRecord::Base.transaction do
51
- destroy_associated_records
52
- update(deleted_at: Time.zone.now)
53
- end
54
- end
55
-
56
- def destroy_associated_records(force = nil)
57
- associated_records.each { |r| r.destroy(force) }
58
- end
59
-
60
- def revive_associated_records
61
- associated_records.each(&:revive)
62
- end
63
-
64
- # This should return an array of all associated records of an object that
65
- # should be soft deleted with it (i.e. those that have dependent: :destroy
66
- # set). In principle we could figure this out automatically but in the
67
- # interest of simplicity we'll just define it manually for each class.
68
- def associated_records
69
- []
70
- end
71
- end
72
- end
73
- end
1
+ # To use this, simply:
2
+ # - Include the module
3
+ # - Add this migration: `add_column :model, :deleted_at, :datetime, null: true`
4
+ #
5
+ # After that, any call to `destroy` will automatically be a soft-deletion.
6
+ module Glib
7
+ module SoftDeletable
8
+ extend ActiveSupport::Concern
9
+
10
+ included do
11
+ default_scope { where(deleted_at: nil) }
12
+ scope :with_deleted, -> { unscope(where: :deleted_at) }
13
+
14
+ # "Soft delete" - set deleted_at if it is nil, actually destroy the record
15
+ # if forced.
16
+ #
17
+ # @param force [Boolean]
18
+ def destroy(force = nil)
19
+ return force_destroy_record if force == :force
20
+ return self if deleted?
21
+
22
+ soft_destroy_record
23
+ end
24
+
25
+ # Revive a soft-deleted record and associated records if soft-deleted,
26
+ # otherwise return self
27
+ def revive
28
+ return self unless deleted?
29
+
30
+ ActiveRecord::Base.transaction do
31
+ update(deleted_at: nil)
32
+ revive_associated_records
33
+ end
34
+ end
35
+
36
+ # Whether or not a record is deleted
37
+ def deleted?
38
+ deleted_at.present?
39
+ end
40
+
41
+ private
42
+ def force_destroy_record
43
+ ActiveRecord::Base.transaction do
44
+ destroy_associated_records(:force)
45
+ method(:destroy).super_method.call
46
+ end
47
+ end
48
+
49
+ def soft_destroy_record
50
+ ActiveRecord::Base.transaction do
51
+ destroy_associated_records
52
+ update(deleted_at: Time.zone.now)
53
+ end
54
+ end
55
+
56
+ def destroy_associated_records(force = nil)
57
+ associated_records.each { |r| r.destroy(force) }
58
+ end
59
+
60
+ def revive_associated_records
61
+ associated_records.each(&:revive)
62
+ end
63
+
64
+ # This should return an array of all associated records of an object that
65
+ # should be soft deleted with it (i.e. those that have dependent: :destroy
66
+ # set). In principle we could figure this out automatically but in the
67
+ # interest of simplicity we'll just define it manually for each class.
68
+ def associated_records
69
+ []
70
+ end
71
+ end
72
+ end
73
+ end