glib-web 0.5.5
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 +7 -0
- data/app/controllers/concerns/glib/auth/policy.rb +148 -0
- data/app/controllers/concerns/glib/json/dynamic_text.rb +126 -0
- data/app/controllers/concerns/glib/json/libs.rb +144 -0
- data/app/controllers/concerns/glib/json/new_dynamic_text.rb +122 -0
- data/app/controllers/concerns/glib/json/transformation.rb +11 -0
- data/app/controllers/concerns/glib/json/traversal.rb +85 -0
- data/app/controllers/concerns/glib/json/ui.rb +70 -0
- data/app/controllers/concerns/glib/json/validation.rb +13 -0
- data/app/controllers/glib/home_controller.rb +16 -0
- data/app/helpers/glib/app_feature_support_helper.rb +16 -0
- data/app/helpers/glib/dynamic_images_helper.rb +52 -0
- data/app/helpers/glib/dynamic_texts_helper.rb +42 -0
- data/app/helpers/glib/forms_helper.rb +15 -0
- data/app/helpers/glib/json_ui/abstract_builder.rb +281 -0
- data/app/helpers/glib/json_ui/action_builder.rb +81 -0
- data/app/helpers/glib/json_ui/action_builder/dialogs.rb +58 -0
- data/app/helpers/glib/json_ui/action_builder/http.rb +19 -0
- data/app/helpers/glib/json_ui/action_builder/sheets.rb +15 -0
- data/app/helpers/glib/json_ui/action_builder/snackbars.rb +41 -0
- data/app/helpers/glib/json_ui/action_builder/windows.rb +25 -0
- data/app/helpers/glib/json_ui/dynamic_field_builders.rb +25 -0
- data/app/helpers/glib/json_ui/generic_builders.rb +28 -0
- data/app/helpers/glib/json_ui/list_builders.rb +87 -0
- data/app/helpers/glib/json_ui/menu_builder.rb +52 -0
- data/app/helpers/glib/json_ui/page_helper.rb +187 -0
- data/app/helpers/glib/json_ui/response_helper.rb +23 -0
- data/app/helpers/glib/json_ui/split_builders.rb +32 -0
- data/app/helpers/glib/json_ui/styling_helper.rb +25 -0
- data/app/helpers/glib/json_ui/table_builders.rb +74 -0
- data/app/helpers/glib/json_ui/view_builder.rb +185 -0
- data/app/helpers/glib/json_ui/view_builder/banners.rb +24 -0
- data/app/helpers/glib/json_ui/view_builder/charts.rb +33 -0
- data/app/helpers/glib/json_ui/view_builder/fields.rb +213 -0
- data/app/helpers/glib/json_ui/view_builder/panels.rb +219 -0
- data/app/models/glib/active_storage/attachment.rb +9 -0
- data/app/models/glib/active_storage/blob.rb +9 -0
- data/app/models/glib/dynamic_text_record.rb +9 -0
- data/app/models/glib/text.rb +96 -0
- data/app/policies/glib/application_policy.rb +164 -0
- data/app/validators/email_typo_validator.rb +38 -0
- data/app/validators/email_validator.rb +7 -0
- data/app/validators/url_validator.rb +20 -0
- data/app/views/app/views/json_ui/vue/renderer.html.erb +35 -0
- data/app/views/json_ui/garage/_nav_menu.json.jbuilder +71 -0
- data/app/views/json_ui/garage/actions/_dialogs.json.jbuilder +104 -0
- data/app/views/json_ui/garage/actions/_http.json.jbuilder +18 -0
- data/app/views/json_ui/garage/actions/_reload.json.jbuilder +17 -0
- data/app/views/json_ui/garage/actions/_sheets.json.jbuilder +19 -0
- data/app/views/json_ui/garage/actions/_snackbars.json.jbuilder +33 -0
- data/app/views/json_ui/garage/actions/_timeouts.json.jbuilder +18 -0
- data/app/views/json_ui/garage/actions/_windows.json.jbuilder +24 -0
- data/app/views/json_ui/garage/actions/dialogs_oauth_post.json.jbuilder +6 -0
- data/app/views/json_ui/garage/actions/index.json.jbuilder +23 -0
- data/app/views/json_ui/garage/forms/_alert_post_data.json.jbuilder +7 -0
- data/app/views/json_ui/garage/forms/basic.json.jbuilder +34 -0
- data/app/views/json_ui/garage/forms/basic_post.json.jbuilder +8 -0
- data/app/views/json_ui/garage/forms/checkboxes.json.jbuilder +44 -0
- data/app/views/json_ui/garage/forms/dynamic_group.json.jbuilder +41 -0
- data/app/views/json_ui/garage/forms/dynamic_select.json.jbuilder +25 -0
- data/app/views/json_ui/garage/forms/dynamic_select_data.json.jbuilder +38 -0
- data/app/views/json_ui/garage/forms/file_upload.json.jbuilder +58 -0
- data/app/views/json_ui/garage/forms/floating_submit.json.jbuilder +31 -0
- data/app/views/json_ui/garage/forms/generic_post.json.jbuilder +3 -0
- data/app/views/json_ui/garage/forms/get_request.json.jbuilder +28 -0
- data/app/views/json_ui/garage/forms/index.json.jbuilder +101 -0
- data/app/views/json_ui/garage/forms/pickers.json.jbuilder +46 -0
- data/app/views/json_ui/garage/forms/rich_text.json.jbuilder +40 -0
- data/app/views/json_ui/garage/forms/selects.json.jbuilder +70 -0
- data/app/views/json_ui/garage/forms/show_hide.json.jbuilder +88 -0
- data/app/views/json_ui/garage/forms/styled_boxes.json.jbuilder +32 -0
- data/app/views/json_ui/garage/forms/submission_flow.json.jbuilder +17 -0
- data/app/views/json_ui/garage/forms/submission_flow_post.json.jbuilder +24 -0
- data/app/views/json_ui/garage/forms/submission_indicator.json.jbuilder +63 -0
- data/app/views/json_ui/garage/forms/submission_indicator_post.json.jbuilder +25 -0
- data/app/views/json_ui/garage/forms/text_validation.json.jbuilder +22 -0
- data/app/views/json_ui/garage/home/blank.json.jbuilder +11 -0
- data/app/views/json_ui/garage/home/index.json.jbuilder +32 -0
- data/app/views/json_ui/garage/home/slow.json.jbuilder +11 -0
- data/app/views/json_ui/garage/lists/_infinite_scroll_section.json.jbuilder +20 -0
- data/app/views/json_ui/garage/lists/edit_actions.json.jbuilder +19 -0
- data/app/views/json_ui/garage/lists/fab.json.jbuilder +14 -0
- data/app/views/json_ui/garage/lists/index.json.jbuilder +23 -0
- data/app/views/json_ui/garage/lists/infinite_scroll.json.jbuilder +38 -0
- data/app/views/json_ui/garage/lists/templating.json.jbuilder +35 -0
- data/app/views/json_ui/garage/notifications/index.json.jbuilder +18 -0
- data/app/views/json_ui/garage/notifications/web_socket.json.jbuilder +60 -0
- data/app/views/json_ui/garage/pages/flat_centered.json.jbuilder +29 -0
- data/app/views/json_ui/garage/pages/full_width.json.jbuilder +29 -0
- data/app/views/json_ui/garage/pages/full_width_height.json.jbuilder +16 -0
- data/app/views/json_ui/garage/pages/index.json.jbuilder +47 -0
- data/app/views/json_ui/garage/pages/layout.json.jbuilder +19 -0
- data/app/views/json_ui/garage/pages/loading_indicator.json.jbuilder +10 -0
- data/app/views/json_ui/garage/pages/nav_buttons.json.jbuilder +21 -0
- data/app/views/json_ui/garage/pages/tab_bar.json.jbuilder +27 -0
- data/app/views/json_ui/garage/panels/_styled.json.jbuilder +78 -0
- data/app/views/json_ui/garage/panels/card.json.jbuilder +4 -0
- data/app/views/json_ui/garage/panels/carousel.json.jbuilder +16 -0
- data/app/views/json_ui/garage/panels/custom.json.jbuilder +17 -0
- data/app/views/json_ui/garage/panels/flow.json.jbuilder +49 -0
- data/app/views/json_ui/garage/panels/horizontal.json.jbuilder +91 -0
- data/app/views/json_ui/garage/panels/index.json.jbuilder +132 -0
- data/app/views/json_ui/garage/panels/outlined.json.jbuilder +4 -0
- data/app/views/json_ui/garage/panels/responsive.json.jbuilder +88 -0
- data/app/views/json_ui/garage/panels/split.json.jbuilder +183 -0
- data/app/views/json_ui/garage/panels/vertical.json.jbuilder +50 -0
- data/app/views/json_ui/garage/services/dynamic_text.json.jbuilder +13 -0
- data/app/views/json_ui/garage/services/image.json.jbuilder +47 -0
- data/app/views/json_ui/garage/services/index.json.jbuilder +17 -0
- data/app/views/json_ui/garage/tables/_autoload_section.json.jbuilder +13 -0
- data/app/views/json_ui/garage/tables/autoload_all.json.jbuilder +38 -0
- data/app/views/json_ui/garage/tables/autoload_as_needed.json.jbuilder +39 -0
- data/app/views/json_ui/garage/tables/export_import.json.jbuilder +29 -0
- data/app/views/json_ui/garage/tables/horizontal_scroll.json.jbuilder +26 -0
- data/app/views/json_ui/garage/tables/index.json.jbuilder +26 -0
- data/app/views/json_ui/garage/tables/layout.json.jbuilder +38 -0
- data/app/views/json_ui/garage/views/_chart_data.json.jbuilder +17 -0
- data/app/views/json_ui/garage/views/banners.json.jbuilder +51 -0
- data/app/views/json_ui/garage/views/calendar_data.json.jbuilder +30 -0
- data/app/views/json_ui/garage/views/carousels.json.jbuilder +37 -0
- data/app/views/json_ui/garage/views/charts.json.jbuilder +115 -0
- data/app/views/json_ui/garage/views/images.json.jbuilder +89 -0
- data/app/views/json_ui/garage/views/index.json.jbuilder +48 -0
- data/app/views/json_ui/garage/views/links.json.jbuilder +70 -0
- data/app/views/json_ui/garage/views/map_data.json.jbuilder +43 -0
- data/app/views/json_ui/garage/views/markdowns.json.jbuilder +41 -0
- data/app/views/json_ui/garage/views/misc.json.jbuilder +34 -0
- data/app/views/json_ui/garage/views/texts.json.jbuilder +41 -0
- data/app/views/layouts/json_ui/renderer.html.erb +32 -0
- data/config/routes.rb +8 -0
- data/lib/generators/glib/install_generator.rb +24 -0
- data/lib/generators/templates/20191017062519_create_texts.rb +12 -0
- data/lib/generators/templates/20191024063257_add_scope_to_texts.rb +7 -0
- data/lib/generators/templates/20191112095018_add_lang_to_texts.rb +7 -0
- data/lib/generators/templates/20191126071051_create_active_storage_tables.active_storage.rb +27 -0
- data/lib/generators/templates/database.yml +107 -0
- data/lib/generators/templates/dynamic_text.rb +2 -0
- data/lib/glib-web.rb +8 -0
- data/lib/glib/crypt.rb +1 -0
- data/lib/glib/crypt/utils.rb +26 -0
- data/lib/glib/dynamic_text.rb +1 -0
- data/lib/glib/dynamic_text/config.rb +21 -0
- data/lib/glib/engine.rb +7 -0
- data/lib/glib/json_crawler.rb +10 -0
- data/lib/glib/json_crawler/action_crawler.rb +20 -0
- data/lib/glib/json_crawler/action_crawlers/action_http.rb +14 -0
- data/lib/glib/json_crawler/action_crawlers/forms_submit.rb +48 -0
- data/lib/glib/json_crawler/action_crawlers/menu.rb +12 -0
- data/lib/glib/json_crawler/action_crawlers/nav_initiate.rb +15 -0
- data/lib/glib/json_crawler/action_crawlers/windows_open.rb +28 -0
- data/lib/glib/json_crawler/coverage.rb +20 -0
- data/lib/glib/json_crawler/http.rb +120 -0
- data/lib/glib/json_crawler/router.rb +86 -0
- data/lib/glib/test_helpers.rb +40 -0
- data/lib/glib/value.rb +7 -0
- data/lib/glib/version.rb +5 -0
- data/lib/tasks/db.rake +95 -0
- metadata +246 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
class EmailTypoValidator < ActiveModel::EachValidator
|
|
2
|
+
COMMON_FORMAT = {
|
|
3
|
+
'\.\.' => '.',
|
|
4
|
+
'\.con\z' => '.com',
|
|
5
|
+
'\.coj\z' => '.com',
|
|
6
|
+
'\.vom\z' => '.com',
|
|
7
|
+
'\.xom\z' => '.com',
|
|
8
|
+
'\.com[a-z]\z' => '.com',
|
|
9
|
+
'\.con\.' => '.com.',
|
|
10
|
+
'\.orf\z' => '.org',
|
|
11
|
+
'\.orf\.' => '.org.',
|
|
12
|
+
'@hitmail\.' => '@hotmail.',
|
|
13
|
+
'@htomail\.' => '@hotmail.',
|
|
14
|
+
'@hotnail\.' => '@hotmail.',
|
|
15
|
+
'@hotmil\.' => '@hotmail.',
|
|
16
|
+
'@hotmal\.' => '@hotmail.',
|
|
17
|
+
'@hoymail\.' => '@hotmail.',
|
|
18
|
+
'@hormail\.' => '@hotmail.',
|
|
19
|
+
'@hotmsil\.' => '@hotmail.',
|
|
20
|
+
'@gail\.' => '@gmail.',
|
|
21
|
+
'@gnail\.' => '@gmail.',
|
|
22
|
+
'@gmil\.' => '@gmail.',
|
|
23
|
+
'@gmal\.' => '@gmail.',
|
|
24
|
+
'@gmai\.' => '@gmail.',
|
|
25
|
+
'@yahho\.' => '@yahoo.',
|
|
26
|
+
'@yaho\.' => '@yahoo.',
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
def validate_each(record, attribute, value)
|
|
30
|
+
COMMON_FORMAT.keys.each do |format_key|
|
|
31
|
+
regex = Regexp.new(format_key)
|
|
32
|
+
if match = regex.match(value)
|
|
33
|
+
record.errors.add(attribute, "Invalid, replace #{match[0]} with #{COMMON_FORMAT[format_key]}")
|
|
34
|
+
break
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
class UrlValidator < ActiveModel::EachValidator
|
|
2
|
+
def validate_each(record, attribute, value)
|
|
3
|
+
schemes = ['https', 'http']
|
|
4
|
+
|
|
5
|
+
begin
|
|
6
|
+
uri = URI.parse(value)
|
|
7
|
+
host = uri && uri.host
|
|
8
|
+
scheme = uri && uri.scheme
|
|
9
|
+
|
|
10
|
+
valid_scheme = host && scheme && schemes.include?(scheme)
|
|
11
|
+
valid_raw_url = scheme && value.match?(URI::regexp([scheme]))
|
|
12
|
+
|
|
13
|
+
unless valid_raw_url && valid_scheme
|
|
14
|
+
record.errors.add(attribute, :invalid)
|
|
15
|
+
end
|
|
16
|
+
rescue URI::InvalidURIError
|
|
17
|
+
record.errors.add(attribute, :invalid)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<!-- Deprecated. Use layouts instead
|
|
2
|
+
<!DOCTYPE html>
|
|
3
|
+
<html>
|
|
4
|
+
|
|
5
|
+
<head>
|
|
6
|
+
<meta charset="utf-8" />
|
|
7
|
+
<meta content="width=device-width, initial-scale=1, shrink-to-fit=no" name="viewport" />
|
|
8
|
+
|
|
9
|
+
<title>App</title>
|
|
10
|
+
<%= csrf_meta_tags %>
|
|
11
|
+
|
|
12
|
+
<%= javascript_pack_tag 'vue_renderer', defer: true %>
|
|
13
|
+
<%#= javascript_include_tag 'vue_renderer_extras', defer: true %>
|
|
14
|
+
|
|
15
|
+
<%= stylesheet_pack_tag 'vue_renderer' %>
|
|
16
|
+
<% if (custom_css_path = options[:custom_css_path]) %>
|
|
17
|
+
<%= stylesheet_link_tag custom_css_path, media: 'all' %>
|
|
18
|
+
<% end %>
|
|
19
|
+
|
|
20
|
+
<link href="https://fonts.googleapis.com/css?family=Material+Icons" rel="stylesheet" />
|
|
21
|
+
</head>
|
|
22
|
+
|
|
23
|
+
<body>
|
|
24
|
+
<noscript>Please enable JavaScript to view this web site.</noscript>
|
|
25
|
+
<div id="app"></div>
|
|
26
|
+
|
|
27
|
+
<script>
|
|
28
|
+
var __page = <%= raw @__json_ui_orig_page%>;
|
|
29
|
+
</script>
|
|
30
|
+
|
|
31
|
+
<% locals[:footer_block]&.call %>
|
|
32
|
+
</body>
|
|
33
|
+
|
|
34
|
+
</html>
|
|
35
|
+
-->
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
|
|
2
|
+
if local_assigns[:top_nav] || json_ui_app_is_web?
|
|
3
|
+
|
|
4
|
+
page.leftDrawer content: ->(drawer) do
|
|
5
|
+
drawer.header childViews: ->(header) do
|
|
6
|
+
header.button text: 'App', styleClasses: ['link', 'logo'], onClick: ->(action) do
|
|
7
|
+
action.windows_open url: root_url
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
drawer.rows builder: ->(menu) do
|
|
12
|
+
|
|
13
|
+
menu.button text: 'Pages', onClick: ->(action) do
|
|
14
|
+
action.windows_open url: json_ui_garage_url(path: 'pages/index')
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
menu.button text: 'Panels', onClick: ->(action) do
|
|
18
|
+
action.windows_open url: json_ui_garage_url(path: 'panels/index')
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
menu.button text: 'Lists', onClick: ->(action) do
|
|
22
|
+
action.windows_open url: json_ui_garage_url(path: 'lists/index')
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
menu.button text: 'Forms', onClick: ->(action) do
|
|
26
|
+
action.windows_open url: json_ui_garage_url(path: 'forms/index')
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
menu.button text: 'Views', onClick: ->(action) do
|
|
30
|
+
action.windows_open url: json_ui_garage_url(path: 'views/index')
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
menu.button text: 'Actions', onClick: ->(action) do
|
|
34
|
+
action.windows_open url: json_ui_garage_url(path: 'actions/index')
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
menu.button text: 'Tables (Web Only)', onClick: ->(action) do
|
|
38
|
+
action.windows_open url: json_ui_garage_url(path: 'tables/index')
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
menu.button text: 'Services', onClick: ->(action) do
|
|
42
|
+
action.windows_open url: json_ui_garage_url(path: 'services/index')
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
menu.divider
|
|
46
|
+
menu.label text: 'Misc Menu'
|
|
47
|
+
|
|
48
|
+
menu.button icon: 'notifications', text: 'Notifications', onClick: ->(action) do
|
|
49
|
+
action.windows_open url: json_ui_garage_url(path: 'notifications/index')
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
menu.button icon: 'list', text: 'UI Elements', onClick: ->(action) do
|
|
53
|
+
action.windows_open url: json_ui_garage_url
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
menu.button icon: 'refresh', text: 'Reload', onClick: ->(action) do
|
|
57
|
+
action.windows_reload
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
menu.button icon: { name: 'zoom_in', badge: '!' }, text: 'Diagnostics', onClick: ->(action) do
|
|
61
|
+
action.dialogs_alert message: %{
|
|
62
|
+
Bundle ID: #{json_ui_app_bundle_id || '<unknown>'}
|
|
63
|
+
App Version: #{json_ui_app_build_version || '<unknown>'}
|
|
64
|
+
Device OS: #{json_ui_app_device_os}
|
|
65
|
+
}
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
end
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
|
|
2
|
+
section.header padding: glib_json_padding_list, childViews: ->(header) do
|
|
3
|
+
header.h3 text: 'Dialogs'
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
section.rows builder: ->(template) do
|
|
7
|
+
template.thumbnail title: 'dialogs/alert', onClick: ->(action) do
|
|
8
|
+
action.dialogs_alert message: 'This is an alert dialog', onClose: ->(action) do
|
|
9
|
+
action.snackbars_alert message: 'Closed'
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# markdown = '# h1 Heading' + "\n" +
|
|
14
|
+
# '## h2 Heading' + "\n" +
|
|
15
|
+
# '### h3 Heading' + "\n" +
|
|
16
|
+
# '#### h4 Heading' + "\n" +
|
|
17
|
+
# '##### h5 Heading' + "\n" +
|
|
18
|
+
# '###### h6 Heading' + "\n" +
|
|
19
|
+
# "\n" +
|
|
20
|
+
# '## Emphasis' + "\n" +
|
|
21
|
+
# "\n" +
|
|
22
|
+
# '**This is bold text**' + "\n" +
|
|
23
|
+
# "\n" +
|
|
24
|
+
# '__This is bold text__' + "\n" +
|
|
25
|
+
# "\n" +
|
|
26
|
+
# '*This is italic text*' + "\n" +
|
|
27
|
+
# "\n" +
|
|
28
|
+
# '_This is italic text_' + "\n" +
|
|
29
|
+
# "\n" +
|
|
30
|
+
# '~~Strikethrough~~' + "\n"
|
|
31
|
+
# template.thumbnail title: 'dialogs/alert with markdown', onClick: ->(action) do
|
|
32
|
+
# action.dialogs_alert message: markdown, message_format: 'markdown'
|
|
33
|
+
# end
|
|
34
|
+
|
|
35
|
+
# template.thumbnail title: 'dialogs/confirm (Experimental)', onClick: ->(action) do
|
|
36
|
+
# action.dialogs_confirm message: 'This is a confirm dialog', onCancel: ->(action) do
|
|
37
|
+
# action.snackbars_alert message: 'Canceled'
|
|
38
|
+
# end, onConfirm: ->(action) do
|
|
39
|
+
# action.snackbars_alert message: 'Confirmed'
|
|
40
|
+
# end
|
|
41
|
+
# end
|
|
42
|
+
|
|
43
|
+
# TODO: Deprecate
|
|
44
|
+
template.thumbnail title: 'dialogs/option (Deprecated)', onClick: ->(action) do
|
|
45
|
+
# TODO: Rename to `dialogs/menu`
|
|
46
|
+
action.dialogs_options message: 'Select one', buttons: ->(menu) do
|
|
47
|
+
menu.button text: 'Option1', onClick: ->(action) do
|
|
48
|
+
action.dialogs_alert message: 'Option 1'
|
|
49
|
+
end
|
|
50
|
+
menu.button text: 'Option2', onClick: ->(action) do
|
|
51
|
+
action.dialogs_alert message: 'Option 2'
|
|
52
|
+
end
|
|
53
|
+
menu.button text: 'Cancel'
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
markdown = '## Emphasis' + "\n" +
|
|
58
|
+
'**This is bold text**' + "\n" +
|
|
59
|
+
"\n" +
|
|
60
|
+
'*This is italic text*' + "\n" +
|
|
61
|
+
"\n" +
|
|
62
|
+
'~~Strikethrough~~' + "\n"
|
|
63
|
+
template.thumbnail title: 'dialogs/show', onClick: ->(action) do
|
|
64
|
+
action.dialogs_show content: ->(dialog) do
|
|
65
|
+
dialog.body padding: glib_json_padding_body, childViews: ->(body) do
|
|
66
|
+
body.markdown text: markdown
|
|
67
|
+
|
|
68
|
+
body.panels_split width: 'matchParent', content: ->(split) do
|
|
69
|
+
split.right childViews: ->(right) do
|
|
70
|
+
right.button text: 'OK', onClick: ->(subaction) { subaction.dialogs_close }
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
template.thumbnail title: 'dialogs/open', onClick: ->(action) do
|
|
78
|
+
action.dialogs_open url: json_ui_garage_url(path: 'forms/basic', mode: 'dialog')
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
template.thumbnail title: 'dialogs/oauth', onClick: ->(action) do
|
|
82
|
+
if respond_to?(:user_facebook_omniauth_authorize_url)
|
|
83
|
+
provider = {
|
|
84
|
+
name: 'facebook',
|
|
85
|
+
webRequestUrl: user_facebook_omniauth_authorize_url(format: nil, _render: nil),
|
|
86
|
+
requestUrl: user_facebook_omniauth_authorize_url(format: nil),
|
|
87
|
+
clientId: Devise.omniauth_configs[:facebook].strategy[:client_id],
|
|
88
|
+
permissions: Devise.omniauth_configs[:facebook].strategy[:scope],
|
|
89
|
+
redirectUrl: user_facebook_omniauth_callback_url(format: nil)
|
|
90
|
+
}
|
|
91
|
+
action.dialogs_oauth provider: provider, providerParamName: 'session[oauth_provider]', callbackUrlParamName: 'session[[oauth_callback_url]', onSuccess: ->(subaction) do
|
|
92
|
+
subaction.http_post url: json_ui_garage_url(path: 'actions/dialogs_oauth_post'), formData: {
|
|
93
|
+
authenticity_token: form_authenticity_token
|
|
94
|
+
}
|
|
95
|
+
end
|
|
96
|
+
else
|
|
97
|
+
action.dialogs_alert message: 'To enable this, set up omniauth using devise'
|
|
98
|
+
# E.g.
|
|
99
|
+
# Add `devise :omniauthable, omniauth_providers: %i[facebook]` to user.rb
|
|
100
|
+
# Add `gem 'omniauth-facebook'` to Gemfile
|
|
101
|
+
# Add `config.omniauth :facebook` to devise.rb
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
|
|
2
|
+
section.header padding: glib_json_padding_list, childViews: ->(header) do
|
|
3
|
+
header.h3 text: 'HTTP'
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
section.rows builder: ->(template) do
|
|
7
|
+
template.thumbnail title: 'http/post', onClick: ->(action) do
|
|
8
|
+
action.http_post url: json_ui_garage_url(path: 'forms/basic_post'), formData: { 'user[name]' => 'New Joe' }
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
template.thumbnail title: 'http/patch', onClick: ->(action) do
|
|
12
|
+
action.http_patch url: json_ui_garage_url(path: 'forms/basic_post'), formData: { 'user[name]' => 'Edit Joe' }
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
template.thumbnail title: 'http/delete', onClick: ->(action) do
|
|
16
|
+
action.http_delete url: json_ui_garage_url(path: 'forms/basic_post'), formData: { 'user[name]' => 'Delete Joe' }
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
section.header padding: glib_json_padding_list, childViews: ->(header) do
|
|
2
|
+
header.h3 text: 'Reload'
|
|
3
|
+
header.spacer height: 6
|
|
4
|
+
header.label text: 'Reload does not open a new page/screen. Click reload a few times, then click back and notice that it goes back to the page before the reload.'
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
section.rows builder: ->(template) do
|
|
8
|
+
template.thumbnail title: "windows/reload (timestamp: #{DateTime.current.to_i})", onClick: ->(action) do
|
|
9
|
+
action.windows_reload
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
reload_counter = params[:reload_counter].to_i
|
|
13
|
+
reload_counter = 0 if reload_counter > 5
|
|
14
|
+
template.thumbnail title: "windows/reload with URL (counter: #{reload_counter})", onClick: ->(action) do
|
|
15
|
+
action.windows_reload url: json_ui_garage_url(path: 'actions/index', reload_counter: reload_counter + 1)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
|
|
2
|
+
section.header padding: glib_json_padding_list, childViews: ->(header) do
|
|
3
|
+
header.h3 text: 'Sheets'
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
section.rows builder: ->(template) do
|
|
7
|
+
template.thumbnail title: 'sheets/select', onClick: ->(action) do
|
|
8
|
+
action.sheets_select message: 'Select one', buttons: ->(menu) do
|
|
9
|
+
menu.button text: 'Option1', onClick: ->(subaction) do
|
|
10
|
+
subaction.dialogs_alert message: 'Option 1'
|
|
11
|
+
end
|
|
12
|
+
menu.button text: 'Option2', onClick: ->(subaction) do
|
|
13
|
+
subaction.dialogs_alert message: 'Option 2'
|
|
14
|
+
end
|
|
15
|
+
menu.button text: 'Cancel'
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
|
|
2
|
+
section.header padding: glib_json_padding_list, childViews: ->(header) do
|
|
3
|
+
header.h3 text: 'Snackbars'
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
section.rows builder: ->(template) do
|
|
7
|
+
template.thumbnail title: 'snackbars/alert', onClick: ->(action) do
|
|
8
|
+
action.snackbars_alert message: 'This is an alert snackbar', onClose: ->(action) do
|
|
9
|
+
action.dialogs_alert message: 'Closed'
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# template.thumbnail title: 'snackbars/alert with markdown', onClick: ->(action) do
|
|
14
|
+
# action.snackbars_alert message: 'This is an *alert* snackbar', message_format: 'markdown'
|
|
15
|
+
# end
|
|
16
|
+
|
|
17
|
+
template.thumbnail title: 'snackbars/select', onClick: ->(action) do
|
|
18
|
+
action.snackbars_select message: 'Select one', buttons: ->(menu) do
|
|
19
|
+
menu.button text: 'Option1', onClick: ->(subaction) do
|
|
20
|
+
subaction.dialogs_alert message: 'Option 1'
|
|
21
|
+
end
|
|
22
|
+
menu.button text: 'Option2', onClick: ->(subaction) do
|
|
23
|
+
subaction.dialogs_alert message: 'Option 2'
|
|
24
|
+
end
|
|
25
|
+
menu.button text: 'Cancel'
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
template.thumbnail title: 'snackbars with styling', onClick: ->(action) do
|
|
30
|
+
action.snackbars_alert message: 'This is a styled snackbar', verticalPosition: 'top', styleClass: 'success'
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
|
|
2
|
+
section.header padding: glib_json_padding_list, childViews: ->(header) do
|
|
3
|
+
header.h3 text: 'Timeouts'
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
section.rows builder: ->(template) do
|
|
7
|
+
template.thumbnail title: 'timeouts/set', onClick: ->(action) do
|
|
8
|
+
action.timeouts_set interval: 1000, onTimeout: ->(subaction) do
|
|
9
|
+
subaction.snackbars_alert message: 'Timeout elapsed'
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# section.rows builder: ->(template) do
|
|
15
|
+
# template.thumbnail title: 'timeouts/clear', onClick: ->(action) do
|
|
16
|
+
# action.windows_open url: json_ui_garage_url(path: 'home/blank')
|
|
17
|
+
# end
|
|
18
|
+
# end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
|
|
2
|
+
section.header padding: glib_json_padding_list, childViews: ->(header) do
|
|
3
|
+
header.h3 text: 'Windows'
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
section.rows builder: ->(template) do
|
|
7
|
+
template.thumbnail title: 'windows/close', onClick: ->(action) do
|
|
8
|
+
action.windows_close onClose: ->(subaction) do
|
|
9
|
+
subaction.dialogs_alert message: 'Previous window closed'
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
section.rows builder: ->(template) do
|
|
15
|
+
template.thumbnail title: 'windows/open', onClick: ->(action) do
|
|
16
|
+
action.windows_open url: json_ui_garage_url(path: 'home/blank')
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
section.rows builder: ->(template) do
|
|
21
|
+
template.thumbnail title: 'windows/openWeb', onClick: ->(action) do
|
|
22
|
+
action.windows_openWeb url: 'http://www.google.com'
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
json.title 'Actions'
|
|
2
|
+
|
|
3
|
+
json_ui_page json do |page|
|
|
4
|
+
render "#{@path_prefix}/nav_menu", json: json, page: page, top_nav: true
|
|
5
|
+
|
|
6
|
+
page.list sections: [
|
|
7
|
+
->(section) do
|
|
8
|
+
render "#{@path_prefix}/actions/dialogs", section: section
|
|
9
|
+
end, ->(section) do
|
|
10
|
+
render "#{@path_prefix}/actions/snackbars", section: section
|
|
11
|
+
end, ->(section) do
|
|
12
|
+
render "#{@path_prefix}/actions/sheets", section: section
|
|
13
|
+
end, ->(section) do
|
|
14
|
+
render "#{@path_prefix}/actions/windows", section: section
|
|
15
|
+
end, ->(section) do
|
|
16
|
+
render "#{@path_prefix}/actions/timeouts", section: section
|
|
17
|
+
end, ->(section) do
|
|
18
|
+
render "#{@path_prefix}/actions/http", section: section
|
|
19
|
+
end, ->(section) do
|
|
20
|
+
render "#{@path_prefix}/actions/reload", section: section
|
|
21
|
+
end
|
|
22
|
+
]
|
|
23
|
+
end
|