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
|
-
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
|
-
event = 'online_status'
|
|
8
|
-
second_user = User.second
|
|
9
|
-
|
|
10
|
-
online_socket_config = {
|
|
11
|
-
channel: online_channel,
|
|
12
|
-
filterKey: nil,
|
|
13
|
-
params: {}
|
|
14
|
-
}
|
|
15
|
-
json.actionCable online_socket_config
|
|
16
|
-
|
|
17
|
-
page.on load: ->(action) do
|
|
18
|
-
action.timeouts_set interval: 1000, repeat: true, onTimeout: ->(subaction) do
|
|
19
|
-
subaction.cables_push channel: online_channel, event: event, payload: { status: true, user_id: second_user.id, reset_value: 3 }
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
|
|
24
|
-
scroll.label text: 'Participant Two is now online'
|
|
25
|
-
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
|
+
event = 'online_status'
|
|
8
|
+
second_user = User.second
|
|
9
|
+
|
|
10
|
+
online_socket_config = {
|
|
11
|
+
channel: online_channel,
|
|
12
|
+
filterKey: nil,
|
|
13
|
+
params: {}
|
|
14
|
+
}
|
|
15
|
+
json.actionCable online_socket_config
|
|
16
|
+
|
|
17
|
+
page.on load: ->(action) do
|
|
18
|
+
action.timeouts_set interval: 1000, repeat: true, onTimeout: ->(subaction) do
|
|
19
|
+
subaction.cables_push channel: online_channel, event: event, payload: { status: true, user_id: second_user.id, reset_value: 3 }
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
|
|
24
|
+
scroll.label text: 'Participant Two is now online'
|
|
25
|
+
end
|
|
@@ -1,81 +1,81 @@
|
|
|
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
|
-
|
|
12
|
-
form.h2 text: 'Radio Group'
|
|
13
|
-
form.spacer height: 6
|
|
14
|
-
form.h4 text: 'Gender'
|
|
15
|
-
form.fields_radioGroup name: 'user[gender]', value: 'F', childViews: ->(group) do
|
|
16
|
-
group.fields_radio value: '', label: 'Unknown'
|
|
17
|
-
group.fields_radio value: 'M', label: 'Male'
|
|
18
|
-
group.fields_radio value: 'F', label: 'Female'
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
form.spacer height: 20
|
|
22
|
-
form.h2 text: 'Single Checkbox'
|
|
23
|
-
form.fields_check \
|
|
24
|
-
name: 'user[age_range]',
|
|
25
|
-
value: '16+',
|
|
26
|
-
checkValue: '16+',
|
|
27
|
-
uncheckValue: '0-16',
|
|
28
|
-
label: 'I am over 16 (has default value)'
|
|
29
|
-
form.fields_check \
|
|
30
|
-
name: 'user[employer]',
|
|
31
|
-
checkValue: 1,
|
|
32
|
-
label: 'I am an employer (no default value)'
|
|
33
|
-
|
|
34
|
-
# Use `switch` component instead.
|
|
35
|
-
# form.fields_check \
|
|
36
|
-
# name: 'user[enabled]',
|
|
37
|
-
# styleClass: 'switch',
|
|
38
|
-
# checkValue: true,
|
|
39
|
-
# label: 'Enable',
|
|
40
|
-
# value: 'true'
|
|
41
|
-
|
|
42
|
-
form.spacer height: 20
|
|
43
|
-
form.h2 text: 'Date/Time'
|
|
44
|
-
form.spacer height: 6
|
|
45
|
-
form.fields_date \
|
|
46
|
-
name: 'user[date]',
|
|
47
|
-
width: 'matchParent',
|
|
48
|
-
label: 'Date',
|
|
49
|
-
min: '2010-01-01',
|
|
50
|
-
max: '2012-01-01',
|
|
51
|
-
value: '2010-02-01'
|
|
52
|
-
form.fields_datetime \
|
|
53
|
-
name: 'user[date_time]',
|
|
54
|
-
width: 'matchParent',
|
|
55
|
-
label: 'Date Time',
|
|
56
|
-
min: '2018-06-09T00:00',
|
|
57
|
-
max: '2018-06-17T00:00',
|
|
58
|
-
value: '2018-06-15T19:30'
|
|
59
|
-
|
|
60
|
-
form.spacer height: 20
|
|
61
|
-
form.h2 text: 'Country'
|
|
62
|
-
form.spacer height: 6
|
|
63
|
-
region_field = { name: 'user[city]', label: 'City' }
|
|
64
|
-
form.fields_country name: 'user[country]', width: 'matchParent', label: 'Country', region: region_field
|
|
65
|
-
|
|
66
|
-
form.spacer height: 20
|
|
67
|
-
form.h2 text: 'Map'
|
|
68
|
-
form.spacer height: 6
|
|
69
|
-
form.fields_location \
|
|
70
|
-
name: 'user[address]',
|
|
71
|
-
width: 'matchParent',
|
|
72
|
-
label: 'Type an address',
|
|
73
|
-
value: 'Sydney Harbour Bridge',
|
|
74
|
-
autocompleteOptions: { componentRestrictions: { country: 'au' }, types: ['(cities)'] },
|
|
75
|
-
latitudeField: { view: 'fields/text', name: 'user[latitude]', label: 'Lat', value: -33.8523063, readOnly: true },
|
|
76
|
-
longitudeField: { view: 'fields/text', name: 'user[longitude]', label: 'Long', value: 151.21078710000006, readOnly: true },
|
|
77
|
-
zoomField: { view: 'fields/text', name: 'user[zoom]', label: 'Zoom' }
|
|
78
|
-
|
|
79
|
-
form.spacer height: 20
|
|
80
|
-
form.fields_submit text: 'Submit'
|
|
81
|
-
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
|
+
|
|
12
|
+
form.h2 text: 'Radio Group'
|
|
13
|
+
form.spacer height: 6
|
|
14
|
+
form.h4 text: 'Gender'
|
|
15
|
+
form.fields_radioGroup name: 'user[gender]', value: 'F', childViews: ->(group) do
|
|
16
|
+
group.fields_radio value: '', label: 'Unknown'
|
|
17
|
+
group.fields_radio value: 'M', label: 'Male'
|
|
18
|
+
group.fields_radio value: 'F', label: 'Female'
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
form.spacer height: 20
|
|
22
|
+
form.h2 text: 'Single Checkbox'
|
|
23
|
+
form.fields_check \
|
|
24
|
+
name: 'user[age_range]',
|
|
25
|
+
value: '16+',
|
|
26
|
+
checkValue: '16+',
|
|
27
|
+
uncheckValue: '0-16',
|
|
28
|
+
label: 'I am over 16 (has default value)'
|
|
29
|
+
form.fields_check \
|
|
30
|
+
name: 'user[employer]',
|
|
31
|
+
checkValue: 1,
|
|
32
|
+
label: 'I am an employer (no default value)'
|
|
33
|
+
|
|
34
|
+
# Use `switch` component instead.
|
|
35
|
+
# form.fields_check \
|
|
36
|
+
# name: 'user[enabled]',
|
|
37
|
+
# styleClass: 'switch',
|
|
38
|
+
# checkValue: true,
|
|
39
|
+
# label: 'Enable',
|
|
40
|
+
# value: 'true'
|
|
41
|
+
|
|
42
|
+
form.spacer height: 20
|
|
43
|
+
form.h2 text: 'Date/Time'
|
|
44
|
+
form.spacer height: 6
|
|
45
|
+
form.fields_date \
|
|
46
|
+
name: 'user[date]',
|
|
47
|
+
width: 'matchParent',
|
|
48
|
+
label: 'Date',
|
|
49
|
+
min: '2010-01-01',
|
|
50
|
+
max: '2012-01-01',
|
|
51
|
+
value: '2010-02-01'
|
|
52
|
+
form.fields_datetime \
|
|
53
|
+
name: 'user[date_time]',
|
|
54
|
+
width: 'matchParent',
|
|
55
|
+
label: 'Date Time',
|
|
56
|
+
min: '2018-06-09T00:00',
|
|
57
|
+
max: '2018-06-17T00:00',
|
|
58
|
+
value: '2018-06-15T19:30'
|
|
59
|
+
|
|
60
|
+
form.spacer height: 20
|
|
61
|
+
form.h2 text: 'Country'
|
|
62
|
+
form.spacer height: 6
|
|
63
|
+
region_field = { name: 'user[city]', label: 'City' }
|
|
64
|
+
form.fields_country name: 'user[country]', width: 'matchParent', label: 'Country', region: region_field
|
|
65
|
+
|
|
66
|
+
form.spacer height: 20
|
|
67
|
+
form.h2 text: 'Map'
|
|
68
|
+
form.spacer height: 6
|
|
69
|
+
form.fields_location \
|
|
70
|
+
name: 'user[address]',
|
|
71
|
+
width: 'matchParent',
|
|
72
|
+
label: 'Type an address',
|
|
73
|
+
value: 'Sydney Harbour Bridge',
|
|
74
|
+
autocompleteOptions: { componentRestrictions: { country: 'au' }, types: ['(cities)'] },
|
|
75
|
+
latitudeField: { view: 'fields/text', name: 'user[latitude]', label: 'Lat', value: -33.8523063, readOnly: true },
|
|
76
|
+
longitudeField: { view: 'fields/text', name: 'user[longitude]', label: 'Long', value: 151.21078710000006, readOnly: true },
|
|
77
|
+
zoomField: { view: 'fields/text', name: 'user[zoom]', label: 'Zoom' }
|
|
78
|
+
|
|
79
|
+
form.spacer height: 20
|
|
80
|
+
form.fields_submit text: 'Submit'
|
|
81
|
+
end
|
|
@@ -1,49 +1,49 @@
|
|
|
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
|
-
|
|
12
|
-
form.spacer height: 20
|
|
13
|
-
form.h2 text: 'Full Increments'
|
|
14
|
-
form.spacer height: 6
|
|
15
|
-
form.fields_rating \
|
|
16
|
-
name: 'user[rating_summary1]',
|
|
17
|
-
value: 1,
|
|
18
|
-
color: 'primary'
|
|
19
|
-
|
|
20
|
-
form.spacer height: 20
|
|
21
|
-
form.h2 text: 'Half Increments'
|
|
22
|
-
form.spacer height: 6
|
|
23
|
-
form.fields_rating \
|
|
24
|
-
name: 'user[rating_summary2]',
|
|
25
|
-
value: 1.5,
|
|
26
|
-
halfIncrements: true,
|
|
27
|
-
color: 'secondary'
|
|
28
|
-
|
|
29
|
-
form.spacer height: 20
|
|
30
|
-
form.h2 text: 'Custom Size'
|
|
31
|
-
form.spacer height: 6
|
|
32
|
-
form.fields_rating \
|
|
33
|
-
name: 'user[rating_summary3]',
|
|
34
|
-
value: 2,
|
|
35
|
-
color: 'ternary',
|
|
36
|
-
size: 35
|
|
37
|
-
|
|
38
|
-
form.spacer height: 20
|
|
39
|
-
form.h2 text: 'Read Only'
|
|
40
|
-
form.spacer height: 6
|
|
41
|
-
form.fields_rating \
|
|
42
|
-
name: 'user[rating_summary4]',
|
|
43
|
-
value: 3,
|
|
44
|
-
readOnly: true,
|
|
45
|
-
size: 40
|
|
46
|
-
|
|
47
|
-
form.spacer height: 20
|
|
48
|
-
form.fields_submit text: 'Submit'
|
|
49
|
-
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
|
+
|
|
12
|
+
form.spacer height: 20
|
|
13
|
+
form.h2 text: 'Full Increments'
|
|
14
|
+
form.spacer height: 6
|
|
15
|
+
form.fields_rating \
|
|
16
|
+
name: 'user[rating_summary1]',
|
|
17
|
+
value: 1,
|
|
18
|
+
color: 'primary'
|
|
19
|
+
|
|
20
|
+
form.spacer height: 20
|
|
21
|
+
form.h2 text: 'Half Increments'
|
|
22
|
+
form.spacer height: 6
|
|
23
|
+
form.fields_rating \
|
|
24
|
+
name: 'user[rating_summary2]',
|
|
25
|
+
value: 1.5,
|
|
26
|
+
halfIncrements: true,
|
|
27
|
+
color: 'secondary'
|
|
28
|
+
|
|
29
|
+
form.spacer height: 20
|
|
30
|
+
form.h2 text: 'Custom Size'
|
|
31
|
+
form.spacer height: 6
|
|
32
|
+
form.fields_rating \
|
|
33
|
+
name: 'user[rating_summary3]',
|
|
34
|
+
value: 2,
|
|
35
|
+
color: 'ternary',
|
|
36
|
+
size: 35
|
|
37
|
+
|
|
38
|
+
form.spacer height: 20
|
|
39
|
+
form.h2 text: 'Read Only'
|
|
40
|
+
form.spacer height: 6
|
|
41
|
+
form.fields_rating \
|
|
42
|
+
name: 'user[rating_summary4]',
|
|
43
|
+
value: 3,
|
|
44
|
+
readOnly: true,
|
|
45
|
+
size: 40
|
|
46
|
+
|
|
47
|
+
form.spacer height: 20
|
|
48
|
+
form.fields_submit text: 'Submit'
|
|
49
|
+
end
|
|
@@ -1,40 +1,40 @@
|
|
|
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: { top: 12, left: 20, right: 20, bottom: 12 }, childViews: ->(form) do
|
|
8
|
-
form.fields_text name: 'user[name]', width: 'matchParent', label: 'Name'
|
|
9
|
-
|
|
10
|
-
# images = [
|
|
11
|
-
# {
|
|
12
|
-
# value: "eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBFQT09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--193dc0d939b9558fc4973fafbba91d989cbb04d4",
|
|
13
|
-
# fileUrl: "https://imageserver-demo.herokuapp.com/image/itinerarybuilder-demo/o6CKzNt67PWnkPdUEnWMt7pr?h=100&w=100"
|
|
14
|
-
# }
|
|
15
|
-
# ]
|
|
16
|
-
# form.fields_richText name: 'user[bio]', width: 'matchParent', label: 'Content', images: images, value: '<p>Test {{image1}}</p>'
|
|
17
|
-
|
|
18
|
-
json.child! do
|
|
19
|
-
json.view 'fields/richText-v1'
|
|
20
|
-
json.width 'matchParent'
|
|
21
|
-
json.label 'Content'
|
|
22
|
-
json.name 'user[bio]'
|
|
23
|
-
json.value '<p>Test {{image1}}</p>'
|
|
24
|
-
|
|
25
|
-
json.images do
|
|
26
|
-
json.child! do
|
|
27
|
-
json.value "eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBFQT09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--193dc0d939b9558fc4973fafbba91d989cbb04d4"
|
|
28
|
-
# json.fileTitle "hita i hanom hg.jpg"
|
|
29
|
-
json.fileUrl "https://imageserver-demo.herokuapp.com/image/itinerarybuilder-demo/o6CKzNt67PWnkPdUEnWMt7pr?h=100&w=100"
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
json.imageUploader do
|
|
34
|
-
json.accepts(fileType: "image/*", maxFileSize: 5000)
|
|
35
|
-
json.directUploadUrl rails_direct_uploads_url
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
form.button text: 'Submit', onClick: ->(action) { action.forms_submit }
|
|
40
|
-
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: { top: 12, left: 20, right: 20, bottom: 12 }, childViews: ->(form) do
|
|
8
|
+
form.fields_text name: 'user[name]', width: 'matchParent', label: 'Name'
|
|
9
|
+
|
|
10
|
+
# images = [
|
|
11
|
+
# {
|
|
12
|
+
# value: "eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBFQT09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--193dc0d939b9558fc4973fafbba91d989cbb04d4",
|
|
13
|
+
# fileUrl: "https://imageserver-demo.herokuapp.com/image/itinerarybuilder-demo/o6CKzNt67PWnkPdUEnWMt7pr?h=100&w=100"
|
|
14
|
+
# }
|
|
15
|
+
# ]
|
|
16
|
+
# form.fields_richText name: 'user[bio]', width: 'matchParent', label: 'Content', images: images, value: '<p>Test {{image1}}</p>'
|
|
17
|
+
|
|
18
|
+
json.child! do
|
|
19
|
+
json.view 'fields/richText-v1'
|
|
20
|
+
json.width 'matchParent'
|
|
21
|
+
json.label 'Content'
|
|
22
|
+
json.name 'user[bio]'
|
|
23
|
+
json.value '<p>Test {{image1}}</p>'
|
|
24
|
+
|
|
25
|
+
json.images do
|
|
26
|
+
json.child! do
|
|
27
|
+
json.value "eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBFQT09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--193dc0d939b9558fc4973fafbba91d989cbb04d4"
|
|
28
|
+
# json.fileTitle "hita i hanom hg.jpg"
|
|
29
|
+
json.fileUrl "https://imageserver-demo.herokuapp.com/image/itinerarybuilder-demo/o6CKzNt67PWnkPdUEnWMt7pr?h=100&w=100"
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
json.imageUploader do
|
|
34
|
+
json.accepts(fileType: "image/*", maxFileSize: 5000)
|
|
35
|
+
json.directUploadUrl rails_direct_uploads_url
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
form.button text: 'Submit', onClick: ->(action) { action.forms_submit }
|
|
40
|
+
end
|
|
@@ -1,84 +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
|
-
|
|
75
|
-
form.
|
|
76
|
-
form.
|
|
77
|
-
form.
|
|
78
|
-
|
|
79
|
-
form.
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
form.
|
|
83
|
-
|
|
84
|
-
|
|
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
|