glib-web 0.5.97 → 0.5.98
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 +149 -149
- 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 -18
- 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/dialogs.rb +58 -58
- data/app/helpers/glib/json_ui/action_builder/http.rb +39 -39
- data/app/helpers/glib/json_ui/action_builder/iap.rb +15 -15
- 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 +38 -38
- data/app/helpers/glib/json_ui/action_builder.rb +140 -140
- 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 +96 -96
- 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/styling_helper.rb +55 -55
- data/app/helpers/glib/json_ui/table_builders.rb +74 -74
- data/app/helpers/glib/json_ui/view_builder/banners.rb +26 -26
- data/app/helpers/glib/json_ui/view_builder/charts.rb +49 -49
- data/app/helpers/glib/json_ui/view_builder/fields.rb +296 -296
- data/app/helpers/glib/json_ui/view_builder/iap.rb +11 -11
- data/app/helpers/glib/json_ui/view_builder/panels.rb +262 -262
- data/app/helpers/glib/json_ui/view_builder.rb +256 -253
- data/app/helpers/glib/urls_helper.rb +12 -12
- data/app/models/concerns/glib/soft_deletable.rb +73 -73
- 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 +191 -191
- 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 +72 -72
- 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 +10 -10
- 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 +27 -27
- data/app/views/json_ui/garage/forms/conditional_value.json.jbuilder +38 -38
- 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 -24
- 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 +37 -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 +120 -120
- data/app/views/json_ui/garage/forms/new_rich_text.json.jbuilder +40 -40
- 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/payments.json.jbuilder +34 -34
- data/app/views/json_ui/garage/forms/pickers.json.jbuilder +89 -89
- 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 -91
- data/app/views/json_ui/garage/forms/show_hide.json.jbuilder +150 -150
- 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/submit_on_change.json.jbuilder +28 -28
- data/app/views/json_ui/garage/forms/text_validation.json.jbuilder +65 -65
- 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 +30 -30
- 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/autoload_as_needed_responsive_columns.json.jbuilder +27 -27
- 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 +41 -41
- 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 +92 -92
- 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 +38 -38
- 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 +101 -101
- data/app/views/json_ui/garage/panels/index.json.jbuilder +138 -138
- 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 -33
- 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 +67 -67
- data/app/views/json_ui/garage/views/calendar_data.json.jbuilder +30 -30
- data/app/views/json_ui/garage/views/charts.json.jbuilder +125 -125
- data/app/views/json_ui/garage/views/controls.json.jbuilder +60 -60
- data/app/views/json_ui/garage/views/iap.json.jbuilder +21 -21
- data/app/views/json_ui/garage/views/icon_names.json.jbuilder +1450 -1450
- data/app/views/json_ui/garage/views/icons.json.jbuilder +15 -15
- data/app/views/json_ui/garage/views/images.json.jbuilder +89 -89
- data/app/views/json_ui/garage/views/index.json.jbuilder +83 -83
- 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/progress.json.jbuilder +31 -31
- 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/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/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 +90 -90
- data/lib/glib/json_crawler.rb +11 -11
- 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/glib-web.rb +9 -9
- data/lib/tasks/db.rake +95 -95
- metadata +2 -3
|
@@ -1,63 +1,63 @@
|
|
|
1
|
-
json.title 'Forms'
|
|
2
|
-
|
|
3
|
-
page = json_ui_page json
|
|
4
|
-
render "#{@path_prefix}/nav_menu", json: json, page: page
|
|
5
|
-
|
|
6
|
-
page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
|
|
7
|
-
scroll.panels_form width: 'matchParent', styleClasses: ['card', 'outlined'], padding: glib_json_padding_body, url: json_ui_garage_url(path: 'forms/submission_indicator_post'), method: 'post', childViews: ->(form) do
|
|
8
|
-
form.label text: 'These buttons get disabled on submit'
|
|
9
|
-
form.spacer height: 14
|
|
10
|
-
form.button text: 'Normal Button', onClick: ->(action) { action.forms_submit }
|
|
11
|
-
form.spacer height: 14
|
|
12
|
-
form.fields_submit text: 'Submit Button'
|
|
13
|
-
|
|
14
|
-
form.fab icon: 'send', onClick: ->(action) { action.forms_submit }
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
scroll.spacer height: 14
|
|
18
|
-
|
|
19
|
-
scroll.panels_form width: 'matchParent', styleClasses: ['card', 'outlined'], padding: glib_json_padding_body, url: json_ui_garage_url(path: 'forms/submission_indicator_post', mode: 'slow_open'), method: 'post', childViews: ->(form) do
|
|
20
|
-
form.fields_submit text: 'Submit button with slow window/open'
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
scroll.spacer height: 14
|
|
24
|
-
|
|
25
|
-
scroll.panels_form width: 'matchParent', styleClasses: ['card', 'outlined'], padding: glib_json_padding_body, url: json_ui_garage_url(path: 'forms/submission_indicator_post', mode: 'slow_openWeb'), method: 'post', childViews: ->(form) do
|
|
26
|
-
form.fields_submit text: 'Submit button with slow window/openWeb'
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
scroll.spacer height: 14
|
|
30
|
-
|
|
31
|
-
scroll.panels_form width: 'matchParent', styleClasses: ['card', 'outlined'], padding: glib_json_padding_body, url: json_ui_garage_url(path: 'forms/submission_indicator_post', mode: 'timeout_once'), method: 'post', childViews: ->(form) do
|
|
32
|
-
form.fields_submit text: 'Submit Button with timeouts/set once'
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
scroll.spacer height: 14
|
|
36
|
-
|
|
37
|
-
scroll.panels_form width: 'matchParent', styleClasses: ['card', 'outlined'], padding: glib_json_padding_body, url: json_ui_garage_url(path: 'forms/submission_indicator_post', mode: 'timeout_chain', count: 0), method: 'post', childViews: ->(form) do
|
|
38
|
-
form.fields_submit text: 'Submit Button with timeouts/set chain'
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
# This needs to be long enough that the FAB is roughly at the bottom of a mobile screen.
|
|
42
|
-
# Ideally the spacer can expand dynamically depending on available space.
|
|
43
|
-
scroll.spacer height: 400
|
|
44
|
-
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
# page.form url: json_ui_garage_url(path: 'forms/submission_indicator_post'), method: 'post', padding: { top: 12, left: 20, right: 20, bottom: 12 }, childViews: ->(form) do
|
|
48
|
-
# form.label text: 'These buttons get disabled on submit'
|
|
49
|
-
# form.spacer height: 10
|
|
50
|
-
# form.button text: 'Normal Button', onClick: ->(action) { action.forms_submit }
|
|
51
|
-
# form.spacer height: 10
|
|
52
|
-
# form.fields_submit text: 'Submit Button'
|
|
53
|
-
|
|
54
|
-
# # This needs to be long enough that the FAB is roughly at the bottom of a mobile screen.
|
|
55
|
-
# # Ideally the spacer can expand dynamically depending on available space.
|
|
56
|
-
# form.spacer height: 400
|
|
57
|
-
|
|
58
|
-
# form.fab icon: 'send', onClick: ->(action) { action.forms_submit }
|
|
59
|
-
# end
|
|
60
|
-
|
|
61
|
-
# page.form url: json_ui_garage_url(path: 'forms/submission_indicator_post', timeout: true), method: 'post', padding: { top: 12, left: 20, right: 20, bottom: 12 }, childViews: ->(form) do
|
|
62
|
-
# form.fields_submit text: 'Submit Button with Timeout'
|
|
63
|
-
# end
|
|
1
|
+
json.title 'Forms'
|
|
2
|
+
|
|
3
|
+
page = json_ui_page json
|
|
4
|
+
render "#{@path_prefix}/nav_menu", json: json, page: page
|
|
5
|
+
|
|
6
|
+
page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
|
|
7
|
+
scroll.panels_form width: 'matchParent', styleClasses: ['card', 'outlined'], padding: glib_json_padding_body, url: json_ui_garage_url(path: 'forms/submission_indicator_post'), method: 'post', childViews: ->(form) do
|
|
8
|
+
form.label text: 'These buttons get disabled on submit'
|
|
9
|
+
form.spacer height: 14
|
|
10
|
+
form.button text: 'Normal Button', onClick: ->(action) { action.forms_submit }
|
|
11
|
+
form.spacer height: 14
|
|
12
|
+
form.fields_submit text: 'Submit Button'
|
|
13
|
+
|
|
14
|
+
form.fab icon: 'send', onClick: ->(action) { action.forms_submit }
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
scroll.spacer height: 14
|
|
18
|
+
|
|
19
|
+
scroll.panels_form width: 'matchParent', styleClasses: ['card', 'outlined'], padding: glib_json_padding_body, url: json_ui_garage_url(path: 'forms/submission_indicator_post', mode: 'slow_open'), method: 'post', childViews: ->(form) do
|
|
20
|
+
form.fields_submit text: 'Submit button with slow window/open'
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
scroll.spacer height: 14
|
|
24
|
+
|
|
25
|
+
scroll.panels_form width: 'matchParent', styleClasses: ['card', 'outlined'], padding: glib_json_padding_body, url: json_ui_garage_url(path: 'forms/submission_indicator_post', mode: 'slow_openWeb'), method: 'post', childViews: ->(form) do
|
|
26
|
+
form.fields_submit text: 'Submit button with slow window/openWeb'
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
scroll.spacer height: 14
|
|
30
|
+
|
|
31
|
+
scroll.panels_form width: 'matchParent', styleClasses: ['card', 'outlined'], padding: glib_json_padding_body, url: json_ui_garage_url(path: 'forms/submission_indicator_post', mode: 'timeout_once'), method: 'post', childViews: ->(form) do
|
|
32
|
+
form.fields_submit text: 'Submit Button with timeouts/set once'
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
scroll.spacer height: 14
|
|
36
|
+
|
|
37
|
+
scroll.panels_form width: 'matchParent', styleClasses: ['card', 'outlined'], padding: glib_json_padding_body, url: json_ui_garage_url(path: 'forms/submission_indicator_post', mode: 'timeout_chain', count: 0), method: 'post', childViews: ->(form) do
|
|
38
|
+
form.fields_submit text: 'Submit Button with timeouts/set chain'
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# This needs to be long enough that the FAB is roughly at the bottom of a mobile screen.
|
|
42
|
+
# Ideally the spacer can expand dynamically depending on available space.
|
|
43
|
+
scroll.spacer height: 400
|
|
44
|
+
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# page.form url: json_ui_garage_url(path: 'forms/submission_indicator_post'), method: 'post', padding: { top: 12, left: 20, right: 20, bottom: 12 }, childViews: ->(form) do
|
|
48
|
+
# form.label text: 'These buttons get disabled on submit'
|
|
49
|
+
# form.spacer height: 10
|
|
50
|
+
# form.button text: 'Normal Button', onClick: ->(action) { action.forms_submit }
|
|
51
|
+
# form.spacer height: 10
|
|
52
|
+
# form.fields_submit text: 'Submit Button'
|
|
53
|
+
|
|
54
|
+
# # This needs to be long enough that the FAB is roughly at the bottom of a mobile screen.
|
|
55
|
+
# # Ideally the spacer can expand dynamically depending on available space.
|
|
56
|
+
# form.spacer height: 400
|
|
57
|
+
|
|
58
|
+
# form.fab icon: 'send', onClick: ->(action) { action.forms_submit }
|
|
59
|
+
# end
|
|
60
|
+
|
|
61
|
+
# page.form url: json_ui_garage_url(path: 'forms/submission_indicator_post', timeout: true), method: 'post', padding: { top: 12, left: 20, right: 20, bottom: 12 }, childViews: ->(form) do
|
|
62
|
+
# form.fields_submit text: 'Submit Button with Timeout'
|
|
63
|
+
# end
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
sleep 0.5
|
|
2
|
-
|
|
3
|
-
json_ui_response json do |action|
|
|
4
|
-
case params[:mode]
|
|
5
|
-
when 'timeout_once'
|
|
6
|
-
action.timeouts_set interval: 2000, onTimeout: ->(subaction) do
|
|
7
|
-
subaction.dialogs_alert message: 'Success!'
|
|
8
|
-
end
|
|
9
|
-
when 'timeout_chain'
|
|
10
|
-
count = params[:count].to_i
|
|
11
|
-
if count > 3
|
|
12
|
-
action.dialogs_alert message: 'Success!'
|
|
13
|
-
else
|
|
14
|
-
action.timeouts_set interval: 500, onTimeout: ->(subaction) do
|
|
15
|
-
subaction.http_post url: json_ui_garage_url(path: 'forms/submission_indicator_post', mode: 'timeout_chain', count: count + 1)
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
when 'slow_open'
|
|
19
|
-
action.windows_open url: json_ui_garage_url(path: 'home/slow')
|
|
20
|
-
when 'slow_openWeb'
|
|
21
|
-
action.windows_openWeb url: 'https://www.google.com'
|
|
22
|
-
else
|
|
23
|
-
action.dialogs_alert message: 'Success!'
|
|
24
|
-
end
|
|
25
|
-
end
|
|
1
|
+
sleep 0.5
|
|
2
|
+
|
|
3
|
+
json_ui_response json do |action|
|
|
4
|
+
case params[:mode]
|
|
5
|
+
when 'timeout_once'
|
|
6
|
+
action.timeouts_set interval: 2000, onTimeout: ->(subaction) do
|
|
7
|
+
subaction.dialogs_alert message: 'Success!'
|
|
8
|
+
end
|
|
9
|
+
when 'timeout_chain'
|
|
10
|
+
count = params[:count].to_i
|
|
11
|
+
if count > 3
|
|
12
|
+
action.dialogs_alert message: 'Success!'
|
|
13
|
+
else
|
|
14
|
+
action.timeouts_set interval: 500, onTimeout: ->(subaction) do
|
|
15
|
+
subaction.http_post url: json_ui_garage_url(path: 'forms/submission_indicator_post', mode: 'timeout_chain', count: count + 1)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
when 'slow_open'
|
|
19
|
+
action.windows_open url: json_ui_garage_url(path: 'home/slow')
|
|
20
|
+
when 'slow_openWeb'
|
|
21
|
+
action.windows_openWeb url: 'https://www.google.com'
|
|
22
|
+
else
|
|
23
|
+
action.dialogs_alert message: 'Success!'
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
json.title 'Forms'
|
|
2
|
-
|
|
3
|
-
page = json_ui_page json
|
|
4
|
-
render "#{@path_prefix}/nav_menu", json: json, page: page
|
|
5
|
-
|
|
6
|
-
page.scroll childViews: ->(scroll) do
|
|
7
|
-
scroll.panels_form \
|
|
8
|
-
url: json_ui_garage_url(path: 'forms/generic_post'),
|
|
9
|
-
method: 'post',
|
|
10
|
-
padding: glib_json_padding_body,
|
|
11
|
-
childViews: ->(form) do
|
|
12
|
-
form.spacer height: 20
|
|
13
|
-
form.h2 text: 'Single Checkbox'
|
|
14
|
-
form.fields_check \
|
|
15
|
-
name: 'user[age_range]',
|
|
16
|
-
value: '16+',
|
|
17
|
-
checkValue: '16+',
|
|
18
|
-
uncheckValue: '0-16',
|
|
19
|
-
label: 'I am over 16 (has default value)',
|
|
20
|
-
submitOnChange: true
|
|
21
|
-
form.fields_check \
|
|
22
|
-
name: 'user[employer]',
|
|
23
|
-
checkValue: 1,
|
|
24
|
-
label: 'I am an employer (no default value)',
|
|
25
|
-
submitOnChange: true
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
end
|
|
1
|
+
json.title 'Forms'
|
|
2
|
+
|
|
3
|
+
page = json_ui_page json
|
|
4
|
+
render "#{@path_prefix}/nav_menu", json: json, page: page
|
|
5
|
+
|
|
6
|
+
page.scroll childViews: ->(scroll) do
|
|
7
|
+
scroll.panels_form \
|
|
8
|
+
url: json_ui_garage_url(path: 'forms/generic_post'),
|
|
9
|
+
method: 'post',
|
|
10
|
+
padding: glib_json_padding_body,
|
|
11
|
+
childViews: ->(form) do
|
|
12
|
+
form.spacer height: 20
|
|
13
|
+
form.h2 text: 'Single Checkbox'
|
|
14
|
+
form.fields_check \
|
|
15
|
+
name: 'user[age_range]',
|
|
16
|
+
value: '16+',
|
|
17
|
+
checkValue: '16+',
|
|
18
|
+
uncheckValue: '0-16',
|
|
19
|
+
label: 'I am over 16 (has default value)',
|
|
20
|
+
submitOnChange: true
|
|
21
|
+
form.fields_check \
|
|
22
|
+
name: 'user[employer]',
|
|
23
|
+
checkValue: 1,
|
|
24
|
+
label: 'I am an employer (no default value)',
|
|
25
|
+
submitOnChange: true
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
end
|
|
@@ -1,65 +1,65 @@
|
|
|
1
|
-
json.title 'Forms'
|
|
2
|
-
|
|
3
|
-
page = json_ui_page json
|
|
4
|
-
render "#{@path_prefix}/nav_menu", json: json, page: page
|
|
5
|
-
|
|
6
|
-
page.form \
|
|
7
|
-
url: json_ui_garage_url(path: 'forms/generic_post'),
|
|
8
|
-
method: 'post',
|
|
9
|
-
padding: glib_json_padding_body,
|
|
10
|
-
childViews: ->(form) do
|
|
11
|
-
form.fields_email \
|
|
12
|
-
name: 'user[email]',
|
|
13
|
-
width: 'matchParent',
|
|
14
|
-
label: 'Email'
|
|
15
|
-
|
|
16
|
-
form.fields_url \
|
|
17
|
-
name: 'user[url]',
|
|
18
|
-
width: 'matchParent',
|
|
19
|
-
label: 'URL'
|
|
20
|
-
|
|
21
|
-
form.fields_number \
|
|
22
|
-
name: 'user[number]',
|
|
23
|
-
width: 'matchParent',
|
|
24
|
-
label: 'Number',
|
|
25
|
-
validation: { required: { message: 'Required' } },
|
|
26
|
-
leftText: 'USD',
|
|
27
|
-
rightText: '.00'
|
|
28
|
-
|
|
29
|
-
form.fields_phone \
|
|
30
|
-
name: 'user[phone1]',
|
|
31
|
-
width: 'matchParent',
|
|
32
|
-
label: 'Phone field'
|
|
33
|
-
|
|
34
|
-
form.fields_phone \
|
|
35
|
-
name: 'user[phone2]',
|
|
36
|
-
width: 'matchParent',
|
|
37
|
-
label: 'Phone field with Australia as the default country',
|
|
38
|
-
disableAutoDetect: true, # Disable country auto detect by user IP
|
|
39
|
-
defaultCountry: 'AU' # ISO Country code, see: https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes
|
|
40
|
-
|
|
41
|
-
form.fields_password \
|
|
42
|
-
name: 'user[password]',
|
|
43
|
-
width: 'matchParent',
|
|
44
|
-
label: 'Password',
|
|
45
|
-
hint: 'Should contain at least 6 characters',
|
|
46
|
-
leftIcon: 'lock'
|
|
47
|
-
|
|
48
|
-
form.fields_textarea \
|
|
49
|
-
name: 'user[textarea]',
|
|
50
|
-
width: 'matchParent',
|
|
51
|
-
label: 'Textarea with maxLength',
|
|
52
|
-
maxLength: 50,
|
|
53
|
-
validation: { required: { message: 'Required' } }
|
|
54
|
-
|
|
55
|
-
options = ['male', 'female'].map { |i| { text: i.humanize, value: i } }
|
|
56
|
-
form.fields_select \
|
|
57
|
-
name: 'user[gender]',
|
|
58
|
-
width: 'matchParent',
|
|
59
|
-
label: 'Gender',
|
|
60
|
-
validation: { required: { message: 'Required' } },
|
|
61
|
-
options: options
|
|
62
|
-
|
|
63
|
-
form.spacer height: 30
|
|
64
|
-
form.fields_submit text: 'Submit'
|
|
65
|
-
end
|
|
1
|
+
json.title 'Forms'
|
|
2
|
+
|
|
3
|
+
page = json_ui_page json
|
|
4
|
+
render "#{@path_prefix}/nav_menu", json: json, page: page
|
|
5
|
+
|
|
6
|
+
page.form \
|
|
7
|
+
url: json_ui_garage_url(path: 'forms/generic_post'),
|
|
8
|
+
method: 'post',
|
|
9
|
+
padding: glib_json_padding_body,
|
|
10
|
+
childViews: ->(form) do
|
|
11
|
+
form.fields_email \
|
|
12
|
+
name: 'user[email]',
|
|
13
|
+
width: 'matchParent',
|
|
14
|
+
label: 'Email'
|
|
15
|
+
|
|
16
|
+
form.fields_url \
|
|
17
|
+
name: 'user[url]',
|
|
18
|
+
width: 'matchParent',
|
|
19
|
+
label: 'URL'
|
|
20
|
+
|
|
21
|
+
form.fields_number \
|
|
22
|
+
name: 'user[number]',
|
|
23
|
+
width: 'matchParent',
|
|
24
|
+
label: 'Number',
|
|
25
|
+
validation: { required: { message: 'Required' } },
|
|
26
|
+
leftText: 'USD',
|
|
27
|
+
rightText: '.00'
|
|
28
|
+
|
|
29
|
+
form.fields_phone \
|
|
30
|
+
name: 'user[phone1]',
|
|
31
|
+
width: 'matchParent',
|
|
32
|
+
label: 'Phone field'
|
|
33
|
+
|
|
34
|
+
form.fields_phone \
|
|
35
|
+
name: 'user[phone2]',
|
|
36
|
+
width: 'matchParent',
|
|
37
|
+
label: 'Phone field with Australia as the default country',
|
|
38
|
+
disableAutoDetect: true, # Disable country auto detect by user IP
|
|
39
|
+
defaultCountry: 'AU' # ISO Country code, see: https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes
|
|
40
|
+
|
|
41
|
+
form.fields_password \
|
|
42
|
+
name: 'user[password]',
|
|
43
|
+
width: 'matchParent',
|
|
44
|
+
label: 'Password',
|
|
45
|
+
hint: 'Should contain at least 6 characters',
|
|
46
|
+
leftIcon: 'lock'
|
|
47
|
+
|
|
48
|
+
form.fields_textarea \
|
|
49
|
+
name: 'user[textarea]',
|
|
50
|
+
width: 'matchParent',
|
|
51
|
+
label: 'Textarea with maxLength',
|
|
52
|
+
maxLength: 50,
|
|
53
|
+
validation: { required: { message: 'Required' } }
|
|
54
|
+
|
|
55
|
+
options = ['male', 'female'].map { |i| { text: i.humanize, value: i } }
|
|
56
|
+
form.fields_select \
|
|
57
|
+
name: 'user[gender]',
|
|
58
|
+
width: 'matchParent',
|
|
59
|
+
label: 'Gender',
|
|
60
|
+
validation: { required: { message: 'Required' } },
|
|
61
|
+
options: options
|
|
62
|
+
|
|
63
|
+
form.spacer height: 30
|
|
64
|
+
form.fields_submit text: 'Submit'
|
|
65
|
+
end
|
|
@@ -1,120 +1,120 @@
|
|
|
1
|
-
json.title 'Forms'
|
|
2
|
-
|
|
3
|
-
page = json_ui_page json
|
|
4
|
-
render "#{@path_prefix}/nav_menu", json: json, page: page
|
|
5
|
-
|
|
6
|
-
online_channel = 'OnlineChannel'
|
|
7
|
-
first_user = User.first
|
|
8
|
-
second_user = User.second
|
|
9
|
-
|
|
10
|
-
page.form url: json_ui_garage_url(path: 'forms/generic_post'), method: 'post', padding: glib_json_padding_body, childViews: ->(form) do
|
|
11
|
-
form.spacer height: 20
|
|
12
|
-
form.h2 text: 'Standard (Backward)'
|
|
13
|
-
form.spacer height: 6
|
|
14
|
-
form.fields_timer \
|
|
15
|
-
width: 160,
|
|
16
|
-
styleClasses: ['outlined'],
|
|
17
|
-
label: 'Timer',
|
|
18
|
-
name: 'user[timer]',
|
|
19
|
-
value: 60,
|
|
20
|
-
min: 30
|
|
21
|
-
|
|
22
|
-
form.spacer height: 20
|
|
23
|
-
form.h2 text: 'Stop Watch (Forward)'
|
|
24
|
-
form.spacer height: 6
|
|
25
|
-
form.fields_timer \
|
|
26
|
-
width: 160,
|
|
27
|
-
styleClasses: ['outlined'],
|
|
28
|
-
label: 'Stop Watch',
|
|
29
|
-
name: 'user[stop_watch]',
|
|
30
|
-
value: 10,
|
|
31
|
-
max: 20,
|
|
32
|
-
forward: true
|
|
33
|
-
|
|
34
|
-
form.spacer height: 20
|
|
35
|
-
form.h2 text: 'Reset timer by ActionCable'
|
|
36
|
-
online_participant1_config = {
|
|
37
|
-
channel: online_channel,
|
|
38
|
-
filterKey: first_user.id
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
form.fields_timer \
|
|
42
|
-
width: 120,
|
|
43
|
-
actionCable: online_participant1_config,
|
|
44
|
-
name: 'user[online_timer1]',
|
|
45
|
-
value: 3,
|
|
46
|
-
min: 0
|
|
47
|
-
|
|
48
|
-
form.label \
|
|
49
|
-
text: 'Participant One is online',
|
|
50
|
-
color: glib_color_success,
|
|
51
|
-
showIf: {
|
|
52
|
-
">": [
|
|
53
|
-
{
|
|
54
|
-
"var": 'user[online_timer1]'
|
|
55
|
-
},
|
|
56
|
-
0
|
|
57
|
-
]
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
form.label \
|
|
61
|
-
text: 'Participant One is offline',
|
|
62
|
-
color: glib_color_error,
|
|
63
|
-
showIf: {
|
|
64
|
-
"<=": [
|
|
65
|
-
{
|
|
66
|
-
"var": 'user[online_timer1]'
|
|
67
|
-
},
|
|
68
|
-
0
|
|
69
|
-
]
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
form.spacer height: 10
|
|
73
|
-
form.label text: 'Open Participant One', onClick: ->(action) do
|
|
74
|
-
action.windows_openWeb url: json_ui_garage_url(path: 'forms/online_participant1')
|
|
75
|
-
end
|
|
76
|
-
form.spacer height: 20
|
|
77
|
-
|
|
78
|
-
online_participant2_config = {
|
|
79
|
-
channel: online_channel,
|
|
80
|
-
filterKey: second_user.id
|
|
81
|
-
}
|
|
82
|
-
form.fields_timer \
|
|
83
|
-
width: 120,
|
|
84
|
-
actionCable: online_participant2_config,
|
|
85
|
-
name: 'user[online_timer2]',
|
|
86
|
-
value: 3,
|
|
87
|
-
min: 0
|
|
88
|
-
|
|
89
|
-
form.label \
|
|
90
|
-
text: 'Participant Two is online',
|
|
91
|
-
color: glib_color_success,
|
|
92
|
-
showIf: {
|
|
93
|
-
">": [
|
|
94
|
-
{
|
|
95
|
-
"var": 'user[online_timer2]'
|
|
96
|
-
},
|
|
97
|
-
0
|
|
98
|
-
]
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
form.label \
|
|
102
|
-
text: 'Participant Two is offline',
|
|
103
|
-
color: glib_color_error,
|
|
104
|
-
showIf: {
|
|
105
|
-
"<=": [
|
|
106
|
-
{
|
|
107
|
-
"var": 'user[online_timer2]'
|
|
108
|
-
},
|
|
109
|
-
0
|
|
110
|
-
]
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
form.spacer height: 10
|
|
114
|
-
form.label text: 'Open Participant Two', onClick: ->(action) do
|
|
115
|
-
action.windows_openWeb url: json_ui_garage_url(path: 'forms/online_participant2')
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
form.spacer height: 40
|
|
119
|
-
form.fields_submit text: 'Submit'
|
|
120
|
-
end
|
|
1
|
+
json.title 'Forms'
|
|
2
|
+
|
|
3
|
+
page = json_ui_page json
|
|
4
|
+
render "#{@path_prefix}/nav_menu", json: json, page: page
|
|
5
|
+
|
|
6
|
+
online_channel = 'OnlineChannel'
|
|
7
|
+
first_user = User.first
|
|
8
|
+
second_user = User.second
|
|
9
|
+
|
|
10
|
+
page.form url: json_ui_garage_url(path: 'forms/generic_post'), method: 'post', padding: glib_json_padding_body, childViews: ->(form) do
|
|
11
|
+
form.spacer height: 20
|
|
12
|
+
form.h2 text: 'Standard (Backward)'
|
|
13
|
+
form.spacer height: 6
|
|
14
|
+
form.fields_timer \
|
|
15
|
+
width: 160,
|
|
16
|
+
styleClasses: ['outlined'],
|
|
17
|
+
label: 'Timer',
|
|
18
|
+
name: 'user[timer]',
|
|
19
|
+
value: 60,
|
|
20
|
+
min: 30
|
|
21
|
+
|
|
22
|
+
form.spacer height: 20
|
|
23
|
+
form.h2 text: 'Stop Watch (Forward)'
|
|
24
|
+
form.spacer height: 6
|
|
25
|
+
form.fields_timer \
|
|
26
|
+
width: 160,
|
|
27
|
+
styleClasses: ['outlined'],
|
|
28
|
+
label: 'Stop Watch',
|
|
29
|
+
name: 'user[stop_watch]',
|
|
30
|
+
value: 10,
|
|
31
|
+
max: 20,
|
|
32
|
+
forward: true
|
|
33
|
+
|
|
34
|
+
form.spacer height: 20
|
|
35
|
+
form.h2 text: 'Reset timer by ActionCable'
|
|
36
|
+
online_participant1_config = {
|
|
37
|
+
channel: online_channel,
|
|
38
|
+
filterKey: first_user.id
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
form.fields_timer \
|
|
42
|
+
width: 120,
|
|
43
|
+
actionCable: online_participant1_config,
|
|
44
|
+
name: 'user[online_timer1]',
|
|
45
|
+
value: 3,
|
|
46
|
+
min: 0
|
|
47
|
+
|
|
48
|
+
form.label \
|
|
49
|
+
text: 'Participant One is online',
|
|
50
|
+
color: glib_color_success,
|
|
51
|
+
showIf: {
|
|
52
|
+
">": [
|
|
53
|
+
{
|
|
54
|
+
"var": 'user[online_timer1]'
|
|
55
|
+
},
|
|
56
|
+
0
|
|
57
|
+
]
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
form.label \
|
|
61
|
+
text: 'Participant One is offline',
|
|
62
|
+
color: glib_color_error,
|
|
63
|
+
showIf: {
|
|
64
|
+
"<=": [
|
|
65
|
+
{
|
|
66
|
+
"var": 'user[online_timer1]'
|
|
67
|
+
},
|
|
68
|
+
0
|
|
69
|
+
]
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
form.spacer height: 10
|
|
73
|
+
form.label text: 'Open Participant One', onClick: ->(action) do
|
|
74
|
+
action.windows_openWeb url: json_ui_garage_url(path: 'forms/online_participant1')
|
|
75
|
+
end
|
|
76
|
+
form.spacer height: 20
|
|
77
|
+
|
|
78
|
+
online_participant2_config = {
|
|
79
|
+
channel: online_channel,
|
|
80
|
+
filterKey: second_user.id
|
|
81
|
+
}
|
|
82
|
+
form.fields_timer \
|
|
83
|
+
width: 120,
|
|
84
|
+
actionCable: online_participant2_config,
|
|
85
|
+
name: 'user[online_timer2]',
|
|
86
|
+
value: 3,
|
|
87
|
+
min: 0
|
|
88
|
+
|
|
89
|
+
form.label \
|
|
90
|
+
text: 'Participant Two is online',
|
|
91
|
+
color: glib_color_success,
|
|
92
|
+
showIf: {
|
|
93
|
+
">": [
|
|
94
|
+
{
|
|
95
|
+
"var": 'user[online_timer2]'
|
|
96
|
+
},
|
|
97
|
+
0
|
|
98
|
+
]
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
form.label \
|
|
102
|
+
text: 'Participant Two is offline',
|
|
103
|
+
color: glib_color_error,
|
|
104
|
+
showIf: {
|
|
105
|
+
"<=": [
|
|
106
|
+
{
|
|
107
|
+
"var": 'user[online_timer2]'
|
|
108
|
+
},
|
|
109
|
+
0
|
|
110
|
+
]
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
form.spacer height: 10
|
|
114
|
+
form.label text: 'Open Participant Two', onClick: ->(action) do
|
|
115
|
+
action.windows_openWeb url: json_ui_garage_url(path: 'forms/online_participant2')
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
form.spacer height: 40
|
|
119
|
+
form.fields_submit text: 'Submit'
|
|
120
|
+
end
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
sleep 0.5
|
|
2
|
-
|
|
3
|
-
json.title 'Menu'
|
|
4
|
-
|
|
5
|
-
page = json_ui_page json
|
|
6
|
-
render "#{@path_prefix}/nav_menu", json: json, page: page, top_nav: false
|
|
7
|
-
|
|
8
|
-
page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
|
|
9
|
-
scroll.label text: 'Blank page'
|
|
10
|
-
end
|
|
1
|
+
sleep 0.5
|
|
2
|
+
|
|
3
|
+
json.title 'Menu'
|
|
4
|
+
|
|
5
|
+
page = json_ui_page json
|
|
6
|
+
render "#{@path_prefix}/nav_menu", json: json, page: page, top_nav: false
|
|
7
|
+
|
|
8
|
+
page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
|
|
9
|
+
scroll.label text: 'Blank page'
|
|
10
|
+
end
|