glib-web 0.5.71 → 0.5.72
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.
- checksums.yaml +4 -4
- data/app/channels/glib/channel/is_typing_channel.rb +34 -34
- data/app/channels/glib/channel/online_channel.rb +36 -36
- data/app/controllers/concerns/glib/analytics/funnel.rb +61 -61
- data/app/controllers/concerns/glib/auth/policy.rb +148 -148
- data/app/controllers/concerns/glib/json/dynamic_text.rb +126 -126
- data/app/controllers/concerns/glib/json/libs.rb +149 -149
- data/app/controllers/concerns/glib/json/new_dynamic_text.rb +122 -122
- data/app/controllers/concerns/glib/json/transformation.rb +11 -11
- data/app/controllers/concerns/glib/json/traversal.rb +92 -92
- data/app/controllers/concerns/glib/json/ui.rb +88 -88
- data/app/controllers/concerns/glib/json/validation.rb +13 -13
- data/app/controllers/glib/home_controller.rb +54 -54
- data/app/helpers/glib/app_feature_support_helper.rb +16 -16
- data/app/helpers/glib/dynamic_images_helper.rb +55 -55
- data/app/helpers/glib/dynamic_texts_helper.rb +42 -42
- data/app/helpers/glib/enum_helper.rb +18 -8
- data/app/helpers/glib/forms_helper.rb +15 -15
- data/app/helpers/glib/json_ui/abstract_builder.rb +309 -309
- data/app/helpers/glib/json_ui/action_builder.rb +140 -140
- data/app/helpers/glib/json_ui/action_builder/dialogs.rb +58 -58
- data/app/helpers/glib/json_ui/action_builder/http.rb +39 -39
- data/app/helpers/glib/json_ui/action_builder/panels.rb +14 -14
- data/app/helpers/glib/json_ui/action_builder/sheets.rb +15 -15
- data/app/helpers/glib/json_ui/action_builder/snackbars.rb +41 -41
- data/app/helpers/glib/json_ui/action_builder/windows.rb +33 -33
- data/app/helpers/glib/json_ui/analytics_helper.rb +17 -17
- data/app/helpers/glib/json_ui/dynamic_field_builders.rb +25 -25
- data/app/helpers/glib/json_ui/generic_builders.rb +28 -28
- data/app/helpers/glib/json_ui/list_builders.rb +110 -110
- data/app/helpers/glib/json_ui/menu_builder.rb +94 -94
- data/app/helpers/glib/json_ui/page_helper.rb +221 -221
- data/app/helpers/glib/json_ui/response_helper.rb +25 -25
- data/app/helpers/glib/json_ui/split_builders.rb +32 -32
- data/app/helpers/glib/json_ui/styling_helper.rb +55 -55
- data/app/helpers/glib/json_ui/table_builders.rb +74 -74
- data/app/helpers/glib/json_ui/view_builder.rb +240 -240
- data/app/helpers/glib/json_ui/view_builder/banners.rb +26 -26
- data/app/helpers/glib/json_ui/view_builder/charts.rb +33 -33
- data/app/helpers/glib/json_ui/view_builder/fields.rb +278 -279
- data/app/helpers/glib/json_ui/view_builder/panels.rb +256 -256
- data/app/helpers/glib/urls_helper.rb +12 -12
- data/app/models/glib/active_storage/attachment.rb +9 -9
- data/app/models/glib/active_storage/blob.rb +9 -9
- data/app/models/glib/application_record.rb +18 -18
- data/app/models/glib/dynamic_text_record.rb +9 -9
- data/app/models/glib/text.rb +95 -95
- data/app/policies/glib/application_policy.rb +161 -161
- data/app/validators/email_typo_validator.rb +38 -38
- data/app/validators/email_validator.rb +7 -7
- data/app/validators/url_validator.rb +20 -20
- data/app/views/json_ui/garage/_nav_menu.json.jbuilder +70 -70
- data/app/views/json_ui/garage/actions/_dialogs.json.jbuilder +104 -104
- data/app/views/json_ui/garage/actions/_http.json.jbuilder +24 -24
- data/app/views/json_ui/garage/actions/_panels.json.jbuilder +18 -18
- data/app/views/json_ui/garage/actions/_reload.json.jbuilder +17 -17
- data/app/views/json_ui/garage/actions/_sheets.json.jbuilder +18 -18
- data/app/views/json_ui/garage/actions/_snackbars.json.jbuilder +33 -33
- data/app/views/json_ui/garage/actions/_timeouts.json.jbuilder +24 -24
- data/app/views/json_ui/garage/actions/_windows.json.jbuilder +24 -24
- data/app/views/json_ui/garage/actions/dialogs_oauth_post.json.jbuilder +6 -6
- data/app/views/json_ui/garage/actions/index.json.jbuilder +24 -24
- data/app/views/json_ui/garage/forms/_alert_post_data.json.jbuilder +6 -6
- data/app/views/json_ui/garage/forms/basic.json.jbuilder +21 -21
- data/app/views/json_ui/garage/forms/basic_post.json.jbuilder +8 -8
- data/app/views/json_ui/garage/forms/checkboxes.json.jbuilder +43 -43
- data/app/views/json_ui/garage/forms/conditional_value.json.jbuilder +36 -36
- data/app/views/json_ui/garage/forms/dynamic_group.json.jbuilder +39 -39
- data/app/views/json_ui/garage/forms/dynamic_select.json.jbuilder +24 -22
- data/app/views/json_ui/garage/forms/dynamic_select_data.json.jbuilder +38 -38
- data/app/views/json_ui/garage/forms/file_upload.json.jbuilder +32 -37
- data/app/views/json_ui/garage/forms/floating_submit.json.jbuilder +19 -19
- data/app/views/json_ui/garage/forms/generic_post.json.jbuilder +3 -3
- data/app/views/json_ui/garage/forms/get_request.json.jbuilder +27 -27
- data/app/views/json_ui/garage/forms/index.json.jbuilder +113 -113
- data/app/views/json_ui/garage/forms/new_rich_text.json.jbuilder +39 -39
- data/app/views/json_ui/garage/forms/online_participant1.json.jbuilder +25 -25
- data/app/views/json_ui/garage/forms/online_participant2.json.jbuilder +25 -25
- data/app/views/json_ui/garage/forms/pickers.json.jbuilder +81 -81
- data/app/views/json_ui/garage/forms/ratings.json.jbuilder +49 -49
- data/app/views/json_ui/garage/forms/rich_text.json.jbuilder +40 -40
- data/app/views/json_ui/garage/forms/selects.json.jbuilder +91 -84
- data/app/views/json_ui/garage/forms/show_hide.json.jbuilder +130 -130
- data/app/views/json_ui/garage/forms/styled_boxes.json.jbuilder +35 -35
- data/app/views/json_ui/garage/forms/submission_flow.json.jbuilder +17 -17
- data/app/views/json_ui/garage/forms/submission_flow_post.json.jbuilder +26 -26
- data/app/views/json_ui/garage/forms/submission_indicator.json.jbuilder +63 -63
- data/app/views/json_ui/garage/forms/submission_indicator_post.json.jbuilder +25 -25
- data/app/views/json_ui/garage/forms/text_validation.json.jbuilder +81 -81
- data/app/views/json_ui/garage/forms/timers.json.jbuilder +120 -120
- data/app/views/json_ui/garage/home/blank.json.jbuilder +10 -10
- data/app/views/json_ui/garage/home/index.json.jbuilder +36 -36
- data/app/views/json_ui/garage/home/slow.json.jbuilder +11 -11
- data/app/views/json_ui/garage/lists/_autoload_section.json.jbuilder +28 -28
- data/app/views/json_ui/garage/lists/autoload_all.json.jbuilder +32 -32
- data/app/views/json_ui/garage/lists/autoload_as_needed.json.jbuilder +35 -35
- data/app/views/json_ui/garage/lists/chat_ui.json.jbuilder +94 -94
- data/app/views/json_ui/garage/lists/edit_actions.json.jbuilder +62 -62
- data/app/views/json_ui/garage/lists/fab.json.jbuilder +12 -12
- data/app/views/json_ui/garage/lists/index.json.jbuilder +38 -38
- data/app/views/json_ui/garage/lists/reordering.json.jbuilder +34 -34
- data/app/views/json_ui/garage/lists/templating.json.jbuilder +35 -35
- data/app/views/json_ui/garage/notifications/action_cable.json.jbuilder +114 -114
- data/app/views/json_ui/garage/notifications/android_post.json.jbuilder +48 -48
- data/app/views/json_ui/garage/notifications/index.json.jbuilder +36 -36
- data/app/views/json_ui/garage/notifications/web_socket.json.jbuilder +60 -60
- data/app/views/json_ui/garage/pages/flat_centered.json.jbuilder +29 -29
- data/app/views/json_ui/garage/pages/full_width.json.jbuilder +29 -29
- data/app/views/json_ui/garage/pages/full_width_height.json.jbuilder +16 -16
- data/app/views/json_ui/garage/pages/index.json.jbuilder +62 -62
- data/app/views/json_ui/garage/pages/layout.json.jbuilder +18 -18
- data/app/views/json_ui/garage/pages/lifecycle_hooks.json.jbuilder +13 -13
- data/app/views/json_ui/garage/pages/loading_indicator.json.jbuilder +10 -10
- data/app/views/json_ui/garage/pages/nav_buttons.json.jbuilder +21 -21
- data/app/views/json_ui/garage/pages/nested_scroll.json.jbuilder +40 -40
- data/app/views/json_ui/garage/pages/tab_bar.json.jbuilder +31 -31
- data/app/views/json_ui/garage/panels/_styled.json.jbuilder +78 -78
- data/app/views/json_ui/garage/panels/card.json.jbuilder +4 -4
- data/app/views/json_ui/garage/panels/carousel.json.jbuilder +37 -37
- data/app/views/json_ui/garage/panels/custom.json.jbuilder +17 -17
- data/app/views/json_ui/garage/panels/flow.json.jbuilder +59 -59
- data/app/views/json_ui/garage/panels/horizontal.json.jbuilder +91 -91
- data/app/views/json_ui/garage/panels/index.json.jbuilder +138 -134
- data/app/views/json_ui/garage/panels/outlined.json.jbuilder +4 -4
- data/app/views/json_ui/garage/panels/responsive.json.jbuilder +98 -98
- data/app/views/json_ui/garage/panels/split.json.jbuilder +182 -182
- data/app/views/json_ui/garage/panels/ul.json.jbuilder +33 -0
- data/app/views/json_ui/garage/panels/vertical.json.jbuilder +55 -55
- data/app/views/json_ui/garage/panels/web.json.jbuilder +15 -15
- data/app/views/json_ui/garage/services/dynamic_text.json.jbuilder +13 -13
- data/app/views/json_ui/garage/services/image.json.jbuilder +47 -47
- data/app/views/json_ui/garage/services/index.json.jbuilder +17 -17
- data/app/views/json_ui/garage/tables/_autoload_section.json.jbuilder +16 -16
- data/app/views/json_ui/garage/tables/autoload_all.json.jbuilder +43 -43
- data/app/views/json_ui/garage/tables/autoload_as_needed.json.jbuilder +50 -50
- data/app/views/json_ui/garage/tables/export_import.json.jbuilder +29 -29
- data/app/views/json_ui/garage/tables/horizontal_scroll.json.jbuilder +26 -26
- data/app/views/json_ui/garage/tables/index.json.jbuilder +25 -25
- data/app/views/json_ui/garage/tables/layout.json.jbuilder +40 -40
- data/app/views/json_ui/garage/views/_chart_data.json.jbuilder +17 -17
- data/app/views/json_ui/garage/views/banners.json.jbuilder +63 -63
- data/app/views/json_ui/garage/views/calendar_data.json.jbuilder +30 -30
- data/app/views/json_ui/garage/views/charts.json.jbuilder +115 -115
- data/app/views/json_ui/garage/views/controls.json.jbuilder +37 -37
- data/app/views/json_ui/garage/views/icon_names.json.jbuilder +1450 -1450
- data/app/views/json_ui/garage/views/icons.json.jbuilder +15 -14
- data/app/views/json_ui/garage/views/images.json.jbuilder +89 -89
- data/app/views/json_ui/garage/views/index.json.jbuilder +67 -67
- data/app/views/json_ui/garage/views/links.json.jbuilder +70 -70
- data/app/views/json_ui/garage/views/map_cluster_data.json.jbuilder +41 -41
- data/app/views/json_ui/garage/views/map_data.json.jbuilder +51 -51
- data/app/views/json_ui/garage/views/maps.json.jbuilder +31 -31
- data/app/views/json_ui/garage/views/markdowns.json.jbuilder +41 -41
- data/app/views/json_ui/garage/views/misc.json.jbuilder +34 -34
- data/app/views/json_ui/garage/views/texts.json.jbuilder +35 -35
- data/app/views/layouts/json_ui/renderer.html.erb +35 -35
- data/config/routes.rb +7 -7
- data/lib/generators/glib/install_generator.rb +24 -24
- data/lib/generators/templates/20191017062519_create_texts.rb +12 -12
- data/lib/generators/templates/20191024063257_add_scope_to_texts.rb +7 -7
- data/lib/generators/templates/20191112095018_add_lang_to_texts.rb +7 -7
- data/lib/generators/templates/20191126071051_create_active_storage_tables.active_storage.rb +27 -27
- data/lib/generators/templates/database.yml +107 -107
- data/lib/generators/templates/dynamic_text.rb +2 -2
- data/lib/glib-web.rb +9 -9
- data/lib/glib/crypt/utils.rb +26 -26
- data/lib/glib/dynamic_text/config.rb +21 -21
- data/lib/glib/engine.rb +7 -7
- data/lib/glib/json_crawler.rb +11 -11
- data/lib/glib/json_crawler/action_crawler.rb +23 -23
- data/lib/glib/json_crawler/action_crawlers/action_http.rb +11 -11
- data/lib/glib/json_crawler/action_crawlers/forms_submit.rb +48 -48
- data/lib/glib/json_crawler/action_crawlers/menu.rb +12 -12
- data/lib/glib/json_crawler/action_crawlers/nav_initiate.rb +19 -19
- data/lib/glib/json_crawler/action_crawlers/run_multiple.rb +13 -13
- data/lib/glib/json_crawler/action_crawlers/windows_open.rb +33 -33
- data/lib/glib/json_crawler/coverage.rb +20 -20
- data/lib/glib/json_crawler/http.rb +120 -120
- data/lib/glib/json_crawler/router.rb +98 -98
- data/lib/glib/mailer_tester.rb +36 -36
- data/lib/glib/test_helpers.rb +52 -52
- data/lib/glib/value.rb +7 -7
- data/lib/glib/version.rb +5 -5
- data/lib/tasks/db.rake +95 -95
- metadata +3 -3
|
@@ -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,55 +1,55 @@
|
|
|
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
|
-
def glib_color_success
|
|
44
|
-
'#4caf50'
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def glib_color_error
|
|
48
|
-
'#ff5252'
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
###
|
|
52
|
-
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
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
|
+
def glib_color_success
|
|
44
|
+
'#4caf50'
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def glib_color_error
|
|
48
|
+
'#ff5252'
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
###
|
|
52
|
+
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
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,240 +1,240 @@
|
|
|
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
|
-
|
|
219
|
-
# def leftButtons(block)
|
|
220
|
-
# json.leftButtons do
|
|
221
|
-
# block.call page.menu_builder
|
|
222
|
-
# end
|
|
223
|
-
# end
|
|
224
|
-
|
|
225
|
-
def rightButtons(block)
|
|
226
|
-
json.rightButtons do
|
|
227
|
-
block.call page.menu_builder
|
|
228
|
-
end
|
|
229
|
-
end
|
|
230
|
-
end
|
|
231
|
-
|
|
232
|
-
class Datetime < View
|
|
233
|
-
date_time :value
|
|
234
|
-
string :format
|
|
235
|
-
bool :tick
|
|
236
|
-
end
|
|
237
|
-
|
|
238
|
-
end
|
|
239
|
-
end
|
|
240
|
-
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
|
+
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
|
+
|
|
219
|
+
# def leftButtons(block)
|
|
220
|
+
# json.leftButtons do
|
|
221
|
+
# block.call page.menu_builder
|
|
222
|
+
# end
|
|
223
|
+
# end
|
|
224
|
+
|
|
225
|
+
def rightButtons(block)
|
|
226
|
+
json.rightButtons do
|
|
227
|
+
block.call page.menu_builder
|
|
228
|
+
end
|
|
229
|
+
end
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
class Datetime < View
|
|
233
|
+
date_time :value
|
|
234
|
+
string :format
|
|
235
|
+
bool :tick
|
|
236
|
+
end
|
|
237
|
+
|
|
238
|
+
end
|
|
239
|
+
end
|
|
240
|
+
end
|