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,91 +1,91 @@
|
|
|
1
|
-
json.title 'Forms'
|
|
2
|
-
|
|
3
|
-
page = json_ui_page json
|
|
4
|
-
|
|
5
|
-
render "#{@path_prefix}/nav_menu", json: json, page: page
|
|
6
|
-
|
|
7
|
-
page.form url: json_ui_garage_url(path: 'forms/generic_post'), method: 'post', padding: glib_json_padding_body, childViews: ->(form) do
|
|
8
|
-
|
|
9
|
-
form.spacer height: 20
|
|
10
|
-
form.h2 text: 'Basic select fields'
|
|
11
|
-
form.spacer height: 6
|
|
12
|
-
languages = {
|
|
13
|
-
'brisbane' => 'Brisbane',
|
|
14
|
-
'canberra' => 'Canberra',
|
|
15
|
-
'melbourne' => 'Melbourne',
|
|
16
|
-
'sydney' => 'Sydney',
|
|
17
|
-
}
|
|
18
|
-
form.fields_select name: 'user[city]', width: 'matchParent', label: 'Primary Language', options: languages.map { |k, v| { value: k, text: v } }, value: 'canberra'
|
|
19
|
-
form.fields_select name: 'user[cities][]', width: 'matchParent', label: 'Preferred Languages', options: languages.map { |k, v| { value: k, text: v } }, value: ['melbourne', 'sydney'], multiple: true
|
|
20
|
-
|
|
21
|
-
form.spacer height: 20
|
|
22
|
-
form.h2 text: 'Select fields with grouping'
|
|
23
|
-
form.spacer height: 6
|
|
24
|
-
form.label text: 'Applicable to select fields with many options'
|
|
25
|
-
form.spacer height: 6
|
|
26
|
-
|
|
27
|
-
languages = {
|
|
28
|
-
"East Asia" => {
|
|
29
|
-
"zh" => "Chinese",
|
|
30
|
-
"ja" => "Japanese",
|
|
31
|
-
"ko" => "Korean",
|
|
32
|
-
},
|
|
33
|
-
"Middle East" => {
|
|
34
|
-
"ar" => 'Arabic',
|
|
35
|
-
"hi" => "Hindi",
|
|
36
|
-
},
|
|
37
|
-
"Europe" => {
|
|
38
|
-
"nl" => "Dutch",
|
|
39
|
-
"en" => "English",
|
|
40
|
-
"fr" => "French",
|
|
41
|
-
"de" => "German",
|
|
42
|
-
"it" => "Italian",
|
|
43
|
-
"pt" => "Portuguese",
|
|
44
|
-
"es" => "Spanish",
|
|
45
|
-
},
|
|
46
|
-
"Eastern Europe" => {
|
|
47
|
-
"ru" => "Russian",
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
options = []
|
|
51
|
-
languages.each do |group, sub|
|
|
52
|
-
options << { type: 'label', text: group }
|
|
53
|
-
options.concat(sub.map { |k, v| { value: k, text: v } })
|
|
54
|
-
options << { type: 'divider' }
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
form.fields_select name: 'user[language]', width: 'matchParent', label: 'Primary Language', options: options, value: 'nl'
|
|
58
|
-
form.fields_select name: 'user[languages][]', width: 'matchParent', label: 'Primary Language', options: options, value: ['ja', 'de'], multiple: true
|
|
59
|
-
|
|
60
|
-
form.spacer height: 20
|
|
61
|
-
form.h2 text: 'Select fields with empty values'
|
|
62
|
-
form.spacer height: 6
|
|
63
|
-
form.label text: 'It is not recommended to use nil because when the value gets submitted, it is not distinguishable from an empty string.'
|
|
64
|
-
form.spacer height: 6
|
|
65
|
-
languages = {
|
|
66
|
-
nil => 'Nil',
|
|
67
|
-
'' => 'Unspecified',
|
|
68
|
-
'specified' => 'Specified',
|
|
69
|
-
}
|
|
70
|
-
form.fields_select name: 'user[empty_default]', width: 'matchParent', label: 'Unspecified Default', options: languages.map { |k, v| { value: k, text: v } }, value: ''
|
|
71
|
-
form.fields_select name: 'user[nil_default]', width: 'matchParent', label: 'Nil Default', options: languages.map { |k, v| { value: k, text: v } }
|
|
72
|
-
form.fields_select name: 'user[mixed_default][]', width: 'matchParent', label: 'Mixed Default', options: languages.map { |k, v| { value: k, text: v } }, value: ['', 'specified', nil], multiple: true
|
|
73
|
-
|
|
74
|
-
form.spacer height: 20
|
|
75
|
-
form.h2 text: 'Timezone selection'
|
|
76
|
-
form.spacer height: 6
|
|
77
|
-
form.label text: 'The select field defaults to the device\'s time zone.'
|
|
78
|
-
form.spacer height: 6
|
|
79
|
-
form.fields_timeZone name: 'user[time_zone]', width: 'matchParent', label: 'Time Zone'
|
|
80
|
-
|
|
81
|
-
# TODO: Remove
|
|
82
|
-
form.spacer height: 20
|
|
83
|
-
form.h2 text: 'Autocomplete (select with manual entry) -- DEPRECATED: Confusing UX, promote bad backend design'
|
|
84
|
-
form.spacer height: 6
|
|
85
|
-
skills = ['Singing', 'Dancing', 'Fighting']
|
|
86
|
-
form.fields_autocomplete name: 'user[skill]', width: 'matchParent', label: 'Skill', options: skills, value: 'Singing'
|
|
87
|
-
form.fields_autocomplete name: 'user[skills][]', width: 'matchParent', label: 'Skills', options: skills, value: ['Dancing', 'Fencing'], multiple: true
|
|
88
|
-
|
|
89
|
-
form.button text: 'Submit', onClick: ->(action) { action.forms_submit }
|
|
90
|
-
|
|
91
|
-
end
|
|
1
|
+
json.title 'Forms'
|
|
2
|
+
|
|
3
|
+
page = json_ui_page json
|
|
4
|
+
|
|
5
|
+
render "#{@path_prefix}/nav_menu", json: json, page: page
|
|
6
|
+
|
|
7
|
+
page.form url: json_ui_garage_url(path: 'forms/generic_post'), method: 'post', padding: glib_json_padding_body, childViews: ->(form) do
|
|
8
|
+
|
|
9
|
+
form.spacer height: 20
|
|
10
|
+
form.h2 text: 'Basic select fields'
|
|
11
|
+
form.spacer height: 6
|
|
12
|
+
languages = {
|
|
13
|
+
'brisbane' => 'Brisbane',
|
|
14
|
+
'canberra' => 'Canberra',
|
|
15
|
+
'melbourne' => 'Melbourne',
|
|
16
|
+
'sydney' => 'Sydney',
|
|
17
|
+
}
|
|
18
|
+
form.fields_select name: 'user[city]', width: 'matchParent', label: 'Primary Language', options: languages.map { |k, v| { value: k, text: v } }, value: 'canberra'
|
|
19
|
+
form.fields_select name: 'user[cities][]', width: 'matchParent', label: 'Preferred Languages', options: languages.map { |k, v| { value: k, text: v } }, value: ['melbourne', 'sydney'], multiple: true
|
|
20
|
+
|
|
21
|
+
form.spacer height: 20
|
|
22
|
+
form.h2 text: 'Select fields with grouping'
|
|
23
|
+
form.spacer height: 6
|
|
24
|
+
form.label text: 'Applicable to select fields with many options'
|
|
25
|
+
form.spacer height: 6
|
|
26
|
+
|
|
27
|
+
languages = {
|
|
28
|
+
"East Asia" => {
|
|
29
|
+
"zh" => "Chinese",
|
|
30
|
+
"ja" => "Japanese",
|
|
31
|
+
"ko" => "Korean",
|
|
32
|
+
},
|
|
33
|
+
"Middle East" => {
|
|
34
|
+
"ar" => 'Arabic',
|
|
35
|
+
"hi" => "Hindi",
|
|
36
|
+
},
|
|
37
|
+
"Europe" => {
|
|
38
|
+
"nl" => "Dutch",
|
|
39
|
+
"en" => "English",
|
|
40
|
+
"fr" => "French",
|
|
41
|
+
"de" => "German",
|
|
42
|
+
"it" => "Italian",
|
|
43
|
+
"pt" => "Portuguese",
|
|
44
|
+
"es" => "Spanish",
|
|
45
|
+
},
|
|
46
|
+
"Eastern Europe" => {
|
|
47
|
+
"ru" => "Russian",
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
options = []
|
|
51
|
+
languages.each do |group, sub|
|
|
52
|
+
options << { type: 'label', text: group }
|
|
53
|
+
options.concat(sub.map { |k, v| { value: k, text: v } })
|
|
54
|
+
options << { type: 'divider' }
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
form.fields_select name: 'user[language]', width: 'matchParent', label: 'Primary Language', options: options, value: 'nl'
|
|
58
|
+
form.fields_select name: 'user[languages][]', width: 'matchParent', label: 'Primary Language', options: options, value: ['ja', 'de'], multiple: true
|
|
59
|
+
|
|
60
|
+
form.spacer height: 20
|
|
61
|
+
form.h2 text: 'Select fields with empty values'
|
|
62
|
+
form.spacer height: 6
|
|
63
|
+
form.label text: 'It is not recommended to use nil because when the value gets submitted, it is not distinguishable from an empty string.'
|
|
64
|
+
form.spacer height: 6
|
|
65
|
+
languages = {
|
|
66
|
+
nil => 'Nil',
|
|
67
|
+
'' => 'Unspecified',
|
|
68
|
+
'specified' => 'Specified',
|
|
69
|
+
}
|
|
70
|
+
form.fields_select name: 'user[empty_default]', width: 'matchParent', label: 'Unspecified Default', options: languages.map { |k, v| { value: k, text: v } }, value: ''
|
|
71
|
+
form.fields_select name: 'user[nil_default]', width: 'matchParent', label: 'Nil Default', options: languages.map { |k, v| { value: k, text: v } }
|
|
72
|
+
form.fields_select name: 'user[mixed_default][]', width: 'matchParent', label: 'Mixed Default', options: languages.map { |k, v| { value: k, text: v } }, value: ['', 'specified', nil], multiple: true
|
|
73
|
+
|
|
74
|
+
form.spacer height: 20
|
|
75
|
+
form.h2 text: 'Timezone selection'
|
|
76
|
+
form.spacer height: 6
|
|
77
|
+
form.label text: 'The select field defaults to the device\'s time zone.'
|
|
78
|
+
form.spacer height: 6
|
|
79
|
+
form.fields_timeZone name: 'user[time_zone]', width: 'matchParent', label: 'Time Zone'
|
|
80
|
+
|
|
81
|
+
# TODO: Remove
|
|
82
|
+
form.spacer height: 20
|
|
83
|
+
form.h2 text: 'Autocomplete (select with manual entry) -- DEPRECATED: Confusing UX, promote bad backend design'
|
|
84
|
+
form.spacer height: 6
|
|
85
|
+
skills = ['Singing', 'Dancing', 'Fighting']
|
|
86
|
+
form.fields_autocomplete name: 'user[skill]', width: 'matchParent', label: 'Skill', options: skills, value: 'Singing'
|
|
87
|
+
form.fields_autocomplete name: 'user[skills][]', width: 'matchParent', label: 'Skills', options: skills, value: ['Dancing', 'Fencing'], multiple: true
|
|
88
|
+
|
|
89
|
+
form.button text: 'Submit', onClick: ->(action) { action.forms_submit }
|
|
90
|
+
|
|
91
|
+
end
|
|
@@ -1,150 +1,150 @@
|
|
|
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 url: json_ui_garage_url(path: 'forms/generic_post'), method: 'post', padding: glib_json_padding_body, childViews: ->(form) do
|
|
7
|
-
form.h1 text: 'Text'
|
|
8
|
-
form.fields_password name: 'user[text1]', width: 'matchParent', label: 'Type "show"', value: ''
|
|
9
|
-
form.label text: 'Typed', showIf: {
|
|
10
|
-
"==": [
|
|
11
|
-
{
|
|
12
|
-
"var": 'user[text1]'
|
|
13
|
-
},
|
|
14
|
-
'show'
|
|
15
|
-
]
|
|
16
|
-
}
|
|
17
|
-
form.label text: 'Type something', showIf: {
|
|
18
|
-
"==": [
|
|
19
|
-
{
|
|
20
|
-
"var": 'user[text1]'
|
|
21
|
-
},
|
|
22
|
-
''
|
|
23
|
-
]
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
form.spacer height: 20
|
|
27
|
-
form.h1 text: 'Textarea'
|
|
28
|
-
form.fields_textarea name: 'user[textarea1]', width: 'matchParent', label: 'Type "show"'
|
|
29
|
-
form.label text: 'Typed', showIf: {
|
|
30
|
-
"==": [
|
|
31
|
-
{
|
|
32
|
-
"var": 'user[textarea1]'
|
|
33
|
-
},
|
|
34
|
-
'show'
|
|
35
|
-
]
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
form.spacer height: 20
|
|
39
|
-
form.h1 text: 'Check'
|
|
40
|
-
form.fields_check name: 'user[check1]', checkValue: 'on', label: 'Show text'
|
|
41
|
-
form.spacer height: 10
|
|
42
|
-
form.label text: 'Checked', showIf: {
|
|
43
|
-
"==": [
|
|
44
|
-
{
|
|
45
|
-
"var": 'user[check1]'
|
|
46
|
-
},
|
|
47
|
-
'on'
|
|
48
|
-
]
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
form.spacer height: 6
|
|
52
|
-
form.fields_check name: 'user[check1]', checkValue: 'on', label: 'Show text'
|
|
53
|
-
form.spacer height: 10
|
|
54
|
-
form.label text: 'Checked', showIf: {
|
|
55
|
-
"==": [
|
|
56
|
-
{
|
|
57
|
-
"var": 'user[check1]'
|
|
58
|
-
},
|
|
59
|
-
'on'
|
|
60
|
-
]
|
|
61
|
-
}
|
|
62
|
-
form.label text: 'Checked', showIf: {
|
|
63
|
-
"!=": [
|
|
64
|
-
{
|
|
65
|
-
"var": 'user[check1]'
|
|
66
|
-
},
|
|
67
|
-
'on'
|
|
68
|
-
]
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
form.spacer height: 20
|
|
72
|
-
form.h1 text: 'Radio Group'
|
|
73
|
-
form.fields_radioGroup name: 'user[radio1]', value: 'F', childViews: ->(group) do
|
|
74
|
-
group.fields_radio value: 'show', label: 'Show'
|
|
75
|
-
group.fields_radio value: 'hide', label: 'Hide'
|
|
76
|
-
group.fields_radio value: '', label: 'Empty'
|
|
77
|
-
end
|
|
78
|
-
form.spacer height: 10
|
|
79
|
-
form.label text: 'Chosen', showIf: {
|
|
80
|
-
"==": [
|
|
81
|
-
{
|
|
82
|
-
"var": 'user[radio1]'
|
|
83
|
-
},
|
|
84
|
-
'show'
|
|
85
|
-
]
|
|
86
|
-
}
|
|
87
|
-
form.label text: 'Unspecified', showIf: {
|
|
88
|
-
"==": [
|
|
89
|
-
{
|
|
90
|
-
"var": 'user[radio1]'
|
|
91
|
-
},
|
|
92
|
-
''
|
|
93
|
-
]
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
form.spacer height: 20
|
|
97
|
-
form.h1 text: 'Select'
|
|
98
|
-
options = ['', 'show', 'hide']
|
|
99
|
-
form.fields_select name: 'user[select1]', width: 'matchParent', label: 'Select "show"', options: options, value: ''
|
|
100
|
-
form.label text: 'Selected', showIf: {
|
|
101
|
-
"==": [
|
|
102
|
-
{
|
|
103
|
-
"var": 'user[select1]'
|
|
104
|
-
},
|
|
105
|
-
'show'
|
|
106
|
-
]
|
|
107
|
-
}
|
|
108
|
-
form.label text: 'Unspecified', showIf: {
|
|
109
|
-
"==": [
|
|
110
|
-
{
|
|
111
|
-
"var": 'user[select1]'
|
|
112
|
-
},
|
|
113
|
-
''
|
|
114
|
-
]
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
form.spacer height: 20
|
|
118
|
-
form.h1 text: 'Combined conditions'
|
|
119
|
-
form.label text: 'Select the same option on both the radio and select fields above'
|
|
120
|
-
form.spacer height: 10
|
|
121
|
-
form.h3 text: 'Same!', showIf: {
|
|
122
|
-
"==": [
|
|
123
|
-
{
|
|
124
|
-
"var": 'user[radio1]'
|
|
125
|
-
},
|
|
126
|
-
{
|
|
127
|
-
"var": 'user[select1]'
|
|
128
|
-
},
|
|
129
|
-
]
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
form.spacer height: 20
|
|
133
|
-
form.h1 text: 'Show/hide another field'
|
|
134
|
-
form.label text: ''
|
|
135
|
-
form.spacer height: 10
|
|
136
|
-
form.fields_check name: 'user[check2]', checkValue: 'on', label: 'Show field'
|
|
137
|
-
form.spacer height: 10
|
|
138
|
-
form.fields_text width: 'matchParent', label: 'Comment (optional)', name: 'user[comment]', value: 'This field should be submitted even when it is hidden', showIf: {
|
|
139
|
-
"==": [
|
|
140
|
-
{
|
|
141
|
-
"var": 'user[check2]'
|
|
142
|
-
},
|
|
143
|
-
'on'
|
|
144
|
-
]
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
form.spacer height: 20
|
|
148
|
-
form.fields_submit text: 'Submit'
|
|
149
|
-
form.spacer height: 40
|
|
150
|
-
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 url: json_ui_garage_url(path: 'forms/generic_post'), method: 'post', padding: glib_json_padding_body, childViews: ->(form) do
|
|
7
|
+
form.h1 text: 'Text'
|
|
8
|
+
form.fields_password name: 'user[text1]', width: 'matchParent', label: 'Type "show"', value: ''
|
|
9
|
+
form.label text: 'Typed', showIf: {
|
|
10
|
+
"==": [
|
|
11
|
+
{
|
|
12
|
+
"var": 'user[text1]'
|
|
13
|
+
},
|
|
14
|
+
'show'
|
|
15
|
+
]
|
|
16
|
+
}
|
|
17
|
+
form.label text: 'Type something', showIf: {
|
|
18
|
+
"==": [
|
|
19
|
+
{
|
|
20
|
+
"var": 'user[text1]'
|
|
21
|
+
},
|
|
22
|
+
''
|
|
23
|
+
]
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
form.spacer height: 20
|
|
27
|
+
form.h1 text: 'Textarea'
|
|
28
|
+
form.fields_textarea name: 'user[textarea1]', width: 'matchParent', label: 'Type "show"'
|
|
29
|
+
form.label text: 'Typed', showIf: {
|
|
30
|
+
"==": [
|
|
31
|
+
{
|
|
32
|
+
"var": 'user[textarea1]'
|
|
33
|
+
},
|
|
34
|
+
'show'
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
form.spacer height: 20
|
|
39
|
+
form.h1 text: 'Check'
|
|
40
|
+
form.fields_check name: 'user[check1]', checkValue: 'on', label: 'Show text'
|
|
41
|
+
form.spacer height: 10
|
|
42
|
+
form.label text: 'Checked', showIf: {
|
|
43
|
+
"==": [
|
|
44
|
+
{
|
|
45
|
+
"var": 'user[check1]'
|
|
46
|
+
},
|
|
47
|
+
'on'
|
|
48
|
+
]
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
form.spacer height: 6
|
|
52
|
+
form.fields_check name: 'user[check1]', checkValue: 'on', label: 'Show text'
|
|
53
|
+
form.spacer height: 10
|
|
54
|
+
form.label text: 'Checked', showIf: {
|
|
55
|
+
"==": [
|
|
56
|
+
{
|
|
57
|
+
"var": 'user[check1]'
|
|
58
|
+
},
|
|
59
|
+
'on'
|
|
60
|
+
]
|
|
61
|
+
}
|
|
62
|
+
form.label text: 'Checked', showIf: {
|
|
63
|
+
"!=": [
|
|
64
|
+
{
|
|
65
|
+
"var": 'user[check1]'
|
|
66
|
+
},
|
|
67
|
+
'on'
|
|
68
|
+
]
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
form.spacer height: 20
|
|
72
|
+
form.h1 text: 'Radio Group'
|
|
73
|
+
form.fields_radioGroup name: 'user[radio1]', value: 'F', childViews: ->(group) do
|
|
74
|
+
group.fields_radio value: 'show', label: 'Show'
|
|
75
|
+
group.fields_radio value: 'hide', label: 'Hide'
|
|
76
|
+
group.fields_radio value: '', label: 'Empty'
|
|
77
|
+
end
|
|
78
|
+
form.spacer height: 10
|
|
79
|
+
form.label text: 'Chosen', showIf: {
|
|
80
|
+
"==": [
|
|
81
|
+
{
|
|
82
|
+
"var": 'user[radio1]'
|
|
83
|
+
},
|
|
84
|
+
'show'
|
|
85
|
+
]
|
|
86
|
+
}
|
|
87
|
+
form.label text: 'Unspecified', showIf: {
|
|
88
|
+
"==": [
|
|
89
|
+
{
|
|
90
|
+
"var": 'user[radio1]'
|
|
91
|
+
},
|
|
92
|
+
''
|
|
93
|
+
]
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
form.spacer height: 20
|
|
97
|
+
form.h1 text: 'Select'
|
|
98
|
+
options = ['', 'show', 'hide']
|
|
99
|
+
form.fields_select name: 'user[select1]', width: 'matchParent', label: 'Select "show"', options: options, value: ''
|
|
100
|
+
form.label text: 'Selected', showIf: {
|
|
101
|
+
"==": [
|
|
102
|
+
{
|
|
103
|
+
"var": 'user[select1]'
|
|
104
|
+
},
|
|
105
|
+
'show'
|
|
106
|
+
]
|
|
107
|
+
}
|
|
108
|
+
form.label text: 'Unspecified', showIf: {
|
|
109
|
+
"==": [
|
|
110
|
+
{
|
|
111
|
+
"var": 'user[select1]'
|
|
112
|
+
},
|
|
113
|
+
''
|
|
114
|
+
]
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
form.spacer height: 20
|
|
118
|
+
form.h1 text: 'Combined conditions'
|
|
119
|
+
form.label text: 'Select the same option on both the radio and select fields above'
|
|
120
|
+
form.spacer height: 10
|
|
121
|
+
form.h3 text: 'Same!', showIf: {
|
|
122
|
+
"==": [
|
|
123
|
+
{
|
|
124
|
+
"var": 'user[radio1]'
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"var": 'user[select1]'
|
|
128
|
+
},
|
|
129
|
+
]
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
form.spacer height: 20
|
|
133
|
+
form.h1 text: 'Show/hide another field'
|
|
134
|
+
form.label text: ''
|
|
135
|
+
form.spacer height: 10
|
|
136
|
+
form.fields_check name: 'user[check2]', checkValue: 'on', label: 'Show field'
|
|
137
|
+
form.spacer height: 10
|
|
138
|
+
form.fields_text width: 'matchParent', label: 'Comment (optional)', name: 'user[comment]', value: 'This field should be submitted even when it is hidden', showIf: {
|
|
139
|
+
"==": [
|
|
140
|
+
{
|
|
141
|
+
"var": 'user[check2]'
|
|
142
|
+
},
|
|
143
|
+
'on'
|
|
144
|
+
]
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
form.spacer height: 20
|
|
148
|
+
form.fields_submit text: 'Submit'
|
|
149
|
+
form.spacer height: 40
|
|
150
|
+
end
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
json.title 'Forms'
|
|
2
|
-
|
|
3
|
-
page = json_ui_page json
|
|
4
|
-
|
|
5
|
-
render "#{@path_prefix}/nav_menu", json: json, page: page
|
|
6
|
-
|
|
7
|
-
page.form url: json_ui_garage_url(path: 'forms/basic_post'), method: 'post', padding: glib_json_padding_body, childViews: ->(form) do
|
|
8
|
-
form.fields_text name: 'user[name]', width: 'matchParent', label: 'Search', placeholder: 'Enter a keyword', styleClasses: ['outlined', 'rounded']
|
|
9
|
-
|
|
10
|
-
form.spacer height: 14
|
|
11
|
-
form.fields_password name: 'user[password]', width: 'matchParent', label: 'Password', placeholder: 'Type your password', styleClass: 'outlined'
|
|
12
|
-
|
|
13
|
-
form.spacer height: 14
|
|
14
|
-
form.fields_textarea name: 'user[bio]', width: 'matchParent', label: 'Bio', placeholder: 'Enter your bio', styleClasses: ['outlined']
|
|
15
|
-
|
|
16
|
-
# form.spacer height: 14
|
|
17
|
-
# form.fields_stripeToken name: 'user[stripe_token_outlined]', width: 'matchParent', publicKey: 'pk_test_TYooMQauvdEDq54NiTphI7jx', styleClass: 'outlined'
|
|
18
|
-
|
|
19
|
-
# form.spacer height: 14
|
|
20
|
-
# form.fields_stripeToken name: 'user[stripe_token_individual]', width: 'matchParent', publicKey: 'pk_test_TYooMQauvdEDq54NiTphI7jx', styleClass: 'individual'
|
|
21
|
-
|
|
22
|
-
form.spacer height: 14
|
|
23
|
-
form.fields_creditCard name: 'user[stripe_token_outlined]', width: 'matchParent', publicKey: 'pk_test_TYooMQauvdEDq54NiTphI7jx', styleClass: 'outlined'
|
|
24
|
-
|
|
25
|
-
form.spacer height: 14
|
|
26
|
-
form.fields_creditCard name: 'user[stripe_token_individual]', width: 'matchParent', publicKey: 'pk_test_TYooMQauvdEDq54NiTphI7jx', styleClass: 'individual'
|
|
27
|
-
|
|
28
|
-
form.spacer height: 14
|
|
29
|
-
form.panels_split width: 'matchParent', content: ->(split) do
|
|
30
|
-
split.right childViews: ->(right) do
|
|
31
|
-
right.fields_submit text: 'Submit'
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
end
|
|
1
|
+
json.title 'Forms'
|
|
2
|
+
|
|
3
|
+
page = json_ui_page json
|
|
4
|
+
|
|
5
|
+
render "#{@path_prefix}/nav_menu", json: json, page: page
|
|
6
|
+
|
|
7
|
+
page.form url: json_ui_garage_url(path: 'forms/basic_post'), method: 'post', padding: glib_json_padding_body, childViews: ->(form) do
|
|
8
|
+
form.fields_text name: 'user[name]', width: 'matchParent', label: 'Search', placeholder: 'Enter a keyword', styleClasses: ['outlined', 'rounded']
|
|
9
|
+
|
|
10
|
+
form.spacer height: 14
|
|
11
|
+
form.fields_password name: 'user[password]', width: 'matchParent', label: 'Password', placeholder: 'Type your password', styleClass: 'outlined'
|
|
12
|
+
|
|
13
|
+
form.spacer height: 14
|
|
14
|
+
form.fields_textarea name: 'user[bio]', width: 'matchParent', label: 'Bio', placeholder: 'Enter your bio', styleClasses: ['outlined']
|
|
15
|
+
|
|
16
|
+
# form.spacer height: 14
|
|
17
|
+
# form.fields_stripeToken name: 'user[stripe_token_outlined]', width: 'matchParent', publicKey: 'pk_test_TYooMQauvdEDq54NiTphI7jx', styleClass: 'outlined'
|
|
18
|
+
|
|
19
|
+
# form.spacer height: 14
|
|
20
|
+
# form.fields_stripeToken name: 'user[stripe_token_individual]', width: 'matchParent', publicKey: 'pk_test_TYooMQauvdEDq54NiTphI7jx', styleClass: 'individual'
|
|
21
|
+
|
|
22
|
+
form.spacer height: 14
|
|
23
|
+
form.fields_creditCard name: 'user[stripe_token_outlined]', width: 'matchParent', publicKey: 'pk_test_TYooMQauvdEDq54NiTphI7jx', styleClass: 'outlined'
|
|
24
|
+
|
|
25
|
+
form.spacer height: 14
|
|
26
|
+
form.fields_creditCard name: 'user[stripe_token_individual]', width: 'matchParent', publicKey: 'pk_test_TYooMQauvdEDq54NiTphI7jx', styleClass: 'individual'
|
|
27
|
+
|
|
28
|
+
form.spacer height: 14
|
|
29
|
+
form.panels_split width: 'matchParent', content: ->(split) do
|
|
30
|
+
split.right childViews: ->(right) do
|
|
31
|
+
right.fields_submit text: 'Submit'
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
end
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
json.title 'Forms'
|
|
2
|
-
|
|
3
|
-
page = json_ui_page json
|
|
4
|
-
|
|
5
|
-
render "#{@path_prefix}/nav_menu", json: json, page: page
|
|
6
|
-
|
|
7
|
-
page.form url: json_ui_garage_url(path: 'forms/submission_flow_post'), method: 'post', padding: { top: 12, left: 20, right: 20, bottom: 12 }, childViews: ->(form) do
|
|
8
|
-
form.fields_radioGroup name: 'user[flow]', childViews: ->(group) do
|
|
9
|
-
group.h3 text: 'Flow'
|
|
10
|
-
group.spacer height: 6
|
|
11
|
-
group.fields_radio value: 'open', label: 'open - useful for form create'
|
|
12
|
-
group.fields_radio value: 'close_with_reload', label: 'closeWithReload - useful for form update'
|
|
13
|
-
group.fields_radio value: 'close_alert', label: 'close+alert - useful for non-model form (e.g. contact us)'
|
|
14
|
-
group.fields_radio value: 'alert_close', label: 'alert+close - useful for non-model form (e.g. contact us)'
|
|
15
|
-
end
|
|
16
|
-
form.button text: 'Submit', onClick: ->(action) { action.forms_submit }
|
|
17
|
-
end
|
|
1
|
+
json.title 'Forms'
|
|
2
|
+
|
|
3
|
+
page = json_ui_page json
|
|
4
|
+
|
|
5
|
+
render "#{@path_prefix}/nav_menu", json: json, page: page
|
|
6
|
+
|
|
7
|
+
page.form url: json_ui_garage_url(path: 'forms/submission_flow_post'), method: 'post', padding: { top: 12, left: 20, right: 20, bottom: 12 }, childViews: ->(form) do
|
|
8
|
+
form.fields_radioGroup name: 'user[flow]', childViews: ->(group) do
|
|
9
|
+
group.h3 text: 'Flow'
|
|
10
|
+
group.spacer height: 6
|
|
11
|
+
group.fields_radio value: 'open', label: 'open - useful for form create'
|
|
12
|
+
group.fields_radio value: 'close_with_reload', label: 'closeWithReload - useful for form update'
|
|
13
|
+
group.fields_radio value: 'close_alert', label: 'close+alert - useful for non-model form (e.g. contact us)'
|
|
14
|
+
group.fields_radio value: 'alert_close', label: 'alert+close - useful for non-model form (e.g. contact us)'
|
|
15
|
+
end
|
|
16
|
+
form.button text: 'Submit', onClick: ->(action) { action.forms_submit }
|
|
17
|
+
end
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
flow = params.require(:user)[:flow] if params[:user]
|
|
3
|
-
json_ui_response json do |action|
|
|
4
|
-
if !flow.present?
|
|
5
|
-
action.dialogs_alert message: 'Please enter all required information'
|
|
6
|
-
else
|
|
7
|
-
case flow
|
|
8
|
-
when 'close_with_reload'
|
|
9
|
-
# action.windows_close onClose: ->(action) do
|
|
10
|
-
# action.windows_reload
|
|
11
|
-
# end
|
|
12
|
-
|
|
13
|
-
action.windows_closeWithReload fallbackUrl: json_ui_garage_url(path: 'forms/index')
|
|
14
|
-
when 'close_alert'
|
|
15
|
-
action.windows_close onClose: ->(action) do
|
|
16
|
-
action.dialogs_alert message: 'Thanks for the submission!'
|
|
17
|
-
end
|
|
18
|
-
when 'alert_close'
|
|
19
|
-
action.dialogs_alert message: 'Thanks for the submission!', onClose: ->(action) do
|
|
20
|
-
action.windows_close
|
|
21
|
-
end
|
|
22
|
-
when 'open'
|
|
23
|
-
action.windows_open url: json_ui_garage_url(path: 'forms/index')
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
1
|
+
|
|
2
|
+
flow = params.require(:user)[:flow] if params[:user]
|
|
3
|
+
json_ui_response json do |action|
|
|
4
|
+
if !flow.present?
|
|
5
|
+
action.dialogs_alert message: 'Please enter all required information'
|
|
6
|
+
else
|
|
7
|
+
case flow
|
|
8
|
+
when 'close_with_reload'
|
|
9
|
+
# action.windows_close onClose: ->(action) do
|
|
10
|
+
# action.windows_reload
|
|
11
|
+
# end
|
|
12
|
+
|
|
13
|
+
action.windows_closeWithReload fallbackUrl: json_ui_garage_url(path: 'forms/index')
|
|
14
|
+
when 'close_alert'
|
|
15
|
+
action.windows_close onClose: ->(action) do
|
|
16
|
+
action.dialogs_alert message: 'Thanks for the submission!'
|
|
17
|
+
end
|
|
18
|
+
when 'alert_close'
|
|
19
|
+
action.dialogs_alert message: 'Thanks for the submission!', onClose: ->(action) do
|
|
20
|
+
action.windows_close
|
|
21
|
+
end
|
|
22
|
+
when 'open'
|
|
23
|
+
action.windows_open url: json_ui_garage_url(path: 'forms/index')
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|