glib-web 0.2.2 → 0.2.3
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/controllers/concerns/application/json/libs.rb +33 -0
- data/app/views/json_ui/garage/_nav_menu.json.jbuilder +49 -127
- data/app/views/json_ui/garage/actions/index.json.jbuilder +2 -2
- data/app/views/json_ui/garage/forms/index.json.jbuilder +1 -1
- data/app/views/json_ui/garage/forms/submission_flow.json.jbuilder +1 -1
- data/app/views/json_ui/garage/home/index.json.jbuilder +1 -1
- data/app/views/json_ui/garage/lists/index.json.jbuilder +1 -1
- data/app/views/json_ui/garage/pages/index.json.jbuilder +1 -1
- data/app/views/json_ui/garage/pages/tab_bar.json.jbuilder +1 -1
- data/app/views/json_ui/garage/panels/card.json.jbuilder +3 -3
- data/app/views/json_ui/garage/panels/index.json.jbuilder +1 -1
- data/app/views/json_ui/garage/views/basic.json.jbuilder +3 -3
- data/app/views/json_ui/garage/views/images.json.jbuilder +7 -7
- data/app/views/json_ui/garage/views/index.json.jbuilder +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f28df42b84aa95f3f0b7a62edc043922c794088b
|
4
|
+
data.tar.gz: 15fcac1a3f3ff687de3282bec0e8cbe6b5cdc633
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1c5964f043ccf8d63df46718435865515652e7d484b01decb790bce8eacc49812dc3e348c92fbcd446077869764991f604a97dbc0254128ca2da200007eb145a
|
7
|
+
data.tar.gz: 68be8065f0f8d9f1b18e142643c7355d91d8e5b6be608958abb5ad30c9e0f0619b1b9d0353c3014c39b5eddf4cd41670cf8cff58c1ceeb23e3ecbf430c3856e9
|
@@ -3,8 +3,41 @@ module Concerns::Application::Json::Libs
|
|
3
3
|
|
4
4
|
included do
|
5
5
|
extend ClassMethods
|
6
|
+
|
7
|
+
helper_method :json_ui_app_bundle_id, :json_ui_app_build_version, :json_ui_app_device_os
|
8
|
+
helper_method :json_ui_app_is_android?, :json_ui_app_is_ios?, :json_ui_app_is_web?
|
9
|
+
end
|
10
|
+
|
11
|
+
def json_ui_app_bundle_id
|
12
|
+
@json_ui_app_bundle_id ||= request.headers['JsonUiApp-Bundle-Id']
|
13
|
+
end
|
14
|
+
|
15
|
+
def json_ui_app_build_version
|
16
|
+
@json_ui_app_build_version ||= request.headers['JsonUiApp-Build-Version']
|
17
|
+
@json_ui_app_build_version = params[:build_version] if @json_ui_app_build_version.nil? && Rails.env.development? # For easy testing
|
18
|
+
@json_ui_app_build_version
|
19
|
+
end
|
20
|
+
|
21
|
+
def json_ui_app_device_os
|
22
|
+
@json_ui_app_device_os ||= request.headers['JsonUiApp-Device-Os']
|
23
|
+
@json_ui_app_device_os = params[:device_os] if @json_ui_app_device_os.nil? && Rails.env.development? # For easy testing
|
24
|
+
@json_ui_app_device_os || 'web'
|
6
25
|
end
|
7
26
|
|
27
|
+
def json_ui_app_is_android?
|
28
|
+
json_ui_app_device_os == 'android'
|
29
|
+
end
|
30
|
+
|
31
|
+
def json_ui_app_is_ios?
|
32
|
+
json_ui_app_device_os == 'ios'
|
33
|
+
end
|
34
|
+
|
35
|
+
def json_ui_app_is_web?
|
36
|
+
json_ui_app_device_os == 'web'
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
|
8
41
|
module ClassMethods
|
9
42
|
|
10
43
|
def json_libs_init(options)
|
@@ -1,131 +1,53 @@
|
|
1
1
|
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
header
|
6
|
-
|
7
|
-
|
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.h1 text: 'App', onClick: ->(action) do
|
7
|
+
# action.windows_open url: json_ui_garage_url
|
8
|
+
action.windows_open url: root_url
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
drawer.rows builder: ->(menu) do
|
13
|
+
|
14
|
+
menu.button text: 'Menu', onClick: ->(action) do
|
15
|
+
action.windows_open url: json_ui_garage_url
|
16
|
+
end
|
17
|
+
|
18
|
+
menu.button text: 'Pages', onClick: ->(action) do
|
19
|
+
action.windows_open url: json_ui_garage_url(path: 'pages/index')
|
20
|
+
end
|
21
|
+
|
22
|
+
menu.button text: 'Lists', onClick: ->(action) do
|
23
|
+
action.windows_open url: json_ui_garage_url(path: 'lists/index')
|
24
|
+
end
|
25
|
+
|
26
|
+
menu.button text: 'Forms', onClick: ->(action) do
|
27
|
+
action.windows_open url: json_ui_garage_url(path: 'forms/index')
|
28
|
+
end
|
29
|
+
|
30
|
+
menu.button text: 'Panels', onClick: ->(action) do
|
31
|
+
action.windows_open url: json_ui_garage_url(path: 'panels/index')
|
32
|
+
end
|
33
|
+
|
34
|
+
menu.button text: 'Views', onClick: ->(action) do
|
35
|
+
action.windows_open url: json_ui_garage_url(path: 'views/index')
|
36
|
+
end
|
37
|
+
|
38
|
+
menu.button text: 'Actions', onClick: ->(action) do
|
39
|
+
action.windows_open url: json_ui_garage_url(path: 'actions/index')
|
40
|
+
end
|
41
|
+
|
42
|
+
menu.button text: 'Diagnostics', onClick: ->(action) do
|
43
|
+
action.dialogs_alert message: %{
|
44
|
+
Bundle ID: #{json_ui_app_bundle_id || '<unknown>'}
|
45
|
+
App Version: #{json_ui_app_build_version || '<unknown>'}
|
46
|
+
Device OS: #{json_ui_app_device_os}
|
47
|
+
}
|
48
|
+
end
|
49
|
+
|
8
50
|
end
|
9
51
|
end
|
10
|
-
|
11
|
-
drawer.rows builder: ->(menu) do
|
12
|
-
|
13
|
-
menu.button text: 'Menu', onClick: ->(action) do
|
14
|
-
action.windows_open url: json_ui_garage_url
|
15
|
-
end
|
16
|
-
|
17
|
-
menu.button text: 'Pages', onClick: ->(action) do
|
18
|
-
action.windows_open url: json_ui_garage_url(path: 'pages/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: 'Panels', onClick: ->(action) do
|
30
|
-
action.windows_open url: json_ui_garage_url(path: 'panels/index')
|
31
|
-
end
|
32
|
-
|
33
|
-
menu.button text: 'Views', onClick: ->(action) do
|
34
|
-
action.windows_open url: json_ui_garage_url(path: 'views/index')
|
35
|
-
end
|
36
|
-
|
37
|
-
menu.button text: 'Actions', onClick: ->(action) do
|
38
|
-
action.windows_open url: json_ui_garage_url(path: 'actions/index')
|
39
|
-
end
|
40
|
-
|
41
|
-
menu.button text: 'Diagnostics', onClick: ->(action) do
|
42
|
-
action.dialogs_alert message: 'JSON UI v1.0'
|
43
|
-
end
|
44
|
-
|
45
|
-
end
|
52
|
+
|
46
53
|
end
|
47
|
-
|
48
|
-
# json.leftDrawer do
|
49
|
-
# # json.items do
|
50
|
-
# # json.child! do
|
51
|
-
# # json.icon do
|
52
|
-
# # json.materialName 'home'
|
53
|
-
# # end
|
54
|
-
# # json.text 'Home'
|
55
|
-
# # json.onClick do
|
56
|
-
# # json.action 'windows/open-v1'
|
57
|
-
# # json.url json_ui_garage_url
|
58
|
-
# # end
|
59
|
-
# # end
|
60
|
-
# # end
|
61
|
-
|
62
|
-
# # json.items do
|
63
|
-
# # json.child! do
|
64
|
-
# # json.text 'Pages'
|
65
|
-
# # json.onClick do
|
66
|
-
# # json.action 'windows/open-v1'
|
67
|
-
# # json.url json_ui_garage_url(path: 'pages/index')
|
68
|
-
# # end
|
69
|
-
# # end
|
70
|
-
# # end
|
71
|
-
|
72
|
-
# # json.items do
|
73
|
-
# # json.child! do
|
74
|
-
# # json.text 'Lists'
|
75
|
-
# # json.onClick do
|
76
|
-
# # json.action 'windows/open-v1'
|
77
|
-
# # json.url json_ui_garage_url(path: 'lists/index')
|
78
|
-
# # end
|
79
|
-
# # end
|
80
|
-
# # end
|
81
|
-
|
82
|
-
# # json.items do
|
83
|
-
# # json.child! do
|
84
|
-
# # json.text 'Forms'
|
85
|
-
# # json.onClick do
|
86
|
-
# # json.action 'windows/open-v1'
|
87
|
-
# # json.url json_ui_garage_url(path: 'forms/index')
|
88
|
-
# # end
|
89
|
-
# # end
|
90
|
-
# # end
|
91
|
-
|
92
|
-
# # json.items do
|
93
|
-
# # json.child! do
|
94
|
-
# # json.text 'Panels'
|
95
|
-
# # json.onClick do
|
96
|
-
# # json.action 'windows/open-v1'
|
97
|
-
# # json.url json_ui_garage_url(path: 'panels/index')
|
98
|
-
# # end
|
99
|
-
# # end
|
100
|
-
# # end
|
101
|
-
|
102
|
-
# # json.items do
|
103
|
-
# # json.child! do
|
104
|
-
# # json.text 'Views'
|
105
|
-
# # json.onClick do
|
106
|
-
# # json.action 'windows/open-v1'
|
107
|
-
# # json.url json_ui_garage_url(path: 'views/index')
|
108
|
-
# # end
|
109
|
-
# # end
|
110
|
-
# # end
|
111
|
-
|
112
|
-
# # json.items do
|
113
|
-
# # json.child! do
|
114
|
-
# # json.text 'Actions'
|
115
|
-
# # json.onClick do
|
116
|
-
# # json.action 'windows/open-v1'
|
117
|
-
# # json.url json_ui_garage_url(path: 'actions/index')
|
118
|
-
# # end
|
119
|
-
# # end
|
120
|
-
# # end
|
121
|
-
|
122
|
-
# # json.items do
|
123
|
-
# # json.child! do
|
124
|
-
# # json.text 'Diagnostics'
|
125
|
-
# # json.onClick do
|
126
|
-
# # json.action 'dialogs/alert-v1'
|
127
|
-
# # json.message 'JSON UI v1.0'
|
128
|
-
# # end
|
129
|
-
# # end
|
130
|
-
# # end
|
131
|
-
# end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
json.title 'Actions'
|
2
2
|
|
3
3
|
json_ui_page json do |page|
|
4
|
-
render "#{@path_prefix}/nav_menu", json: json, page: page
|
4
|
+
render "#{@path_prefix}/nav_menu", json: json, page: page, top_nav: true
|
5
5
|
|
6
6
|
# page.header padding: { top: 12, bottom: 12, left: 16, right: 16 }, childViews: ->(header) do
|
7
7
|
# header.label text: "Timestamp: #{DateTime.current.to_i}"
|
@@ -54,7 +54,7 @@ json_ui_page json do |page|
|
|
54
54
|
end, ->(section) do
|
55
55
|
section.header padding: { top: 12, bottom: 12, left: 16, right: 16 }, childViews: ->(header) do
|
56
56
|
header.h3 text: 'Reload'
|
57
|
-
header.
|
57
|
+
header.spacer height: 6
|
58
58
|
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.'
|
59
59
|
end
|
60
60
|
|
@@ -6,7 +6,7 @@ json_ui_page json do |page|
|
|
6
6
|
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
|
7
7
|
form.fields_radioGroup name: 'user[flow]', childViews: ->(group) do
|
8
8
|
group.h3 text: 'Flow'
|
9
|
-
group.
|
9
|
+
group.spacer height: 6
|
10
10
|
group.fields_radio value: 'close_reload', label: 'close+reload - useful for form submission in mobile apps'
|
11
11
|
group.fields_radio value: 'open', label: 'open - useful for form submission in web app'
|
12
12
|
group.fields_radio value: 'close_alert', label: 'close+alert - useful for non-model form (e.g. contact us) in both mobile/web'
|
@@ -1,7 +1,7 @@
|
|
1
1
|
json.title 'Menu'
|
2
2
|
|
3
3
|
json_ui_page json do |page|
|
4
|
-
render "#{@path_prefix}/nav_menu", json: json, page: page
|
4
|
+
render "#{@path_prefix}/nav_menu", json: json, page: page, top_nav: true
|
5
5
|
|
6
6
|
page.list firstSection: ->(section) do
|
7
7
|
section.rows builder: ->(template) do
|
@@ -1,7 +1,7 @@
|
|
1
1
|
json.title 'Lists'
|
2
2
|
|
3
3
|
json_ui_page json do |page|
|
4
|
-
render "#{@path_prefix}/nav_menu", json: json, page: page
|
4
|
+
render "#{@path_prefix}/nav_menu", json: json, page: page, top_nav: true
|
5
5
|
|
6
6
|
page.list firstSection: ->(section) do
|
7
7
|
section.rows builder: ->(template) do
|
@@ -1,7 +1,7 @@
|
|
1
1
|
json.title 'Pages'
|
2
2
|
|
3
3
|
json_ui_page json do |page|
|
4
|
-
render "#{@path_prefix}/nav_menu", json: json, page: page
|
4
|
+
render "#{@path_prefix}/nav_menu", json: json, page: page, top_nav: true
|
5
5
|
|
6
6
|
page.list firstSection: ->(section) do
|
7
7
|
section.rows builder: ->(template) do
|
@@ -18,7 +18,7 @@ json_ui_page json do |page|
|
|
18
18
|
page.scroll padding: {top: 12, left: 20, right: 20, bottom: 12}, childViews: ->(scroll) do
|
19
19
|
scroll.label text: "Tab index #{params[:tab].to_i} selected"
|
20
20
|
|
21
|
-
scroll.
|
21
|
+
scroll.spacer height: 10
|
22
22
|
|
23
23
|
100.times do |i|
|
24
24
|
scroll.label text: "Line #{i + 1}"
|
@@ -6,17 +6,17 @@ json_ui_page json do |page|
|
|
6
6
|
page.scroll backgroundColor: '#fafafa', padding: { top: 12, bottom: 12, left: 16, right: 16 }, childViews: ->(scroll) do
|
7
7
|
scroll.panels_card width: 'matchParent', padding: { top: 12, bottom: 12, left: 16, right: 16 }, childViews: ->(card) do
|
8
8
|
card.h1 text: 'With Default Layout'
|
9
|
-
card.
|
9
|
+
card.spacer height: 6
|
10
10
|
card.button text: 'Button1'
|
11
11
|
card.button text: 'Button2'
|
12
12
|
card.button text: 'Button3'
|
13
13
|
end
|
14
14
|
|
15
|
-
scroll.
|
15
|
+
scroll.spacer height: 20
|
16
16
|
|
17
17
|
scroll.panels_card width: 'matchParent', padding: { top: 12, bottom: 12, left: 16, right: 16 }, childViews: ->(card) do
|
18
18
|
card.h1 text: 'With Child Panel'
|
19
|
-
card.
|
19
|
+
card.spacer height: 6
|
20
20
|
card.panels_horizontal backgroundColor: '#b3bac2', childViews: ->(panel) do
|
21
21
|
panel.button text: 'Button1'
|
22
22
|
panel.button text: 'Button2'
|
@@ -1,7 +1,7 @@
|
|
1
1
|
json.title 'Panels'
|
2
2
|
|
3
3
|
json_ui_page json do |page|
|
4
|
-
render "#{@path_prefix}/nav_menu", json: json, page: page
|
4
|
+
render "#{@path_prefix}/nav_menu", json: json, page: page, top_nav: true
|
5
5
|
|
6
6
|
page.list firstSection: ->(section) do
|
7
7
|
section.rows builder: ->(template) do
|
@@ -5,13 +5,13 @@ json_ui_page json do |page|
|
|
5
5
|
|
6
6
|
page.scroll padding: body_padding, childViews: ->(scroll) do
|
7
7
|
scroll.h2 text: 'Map'
|
8
|
-
scroll.
|
8
|
+
scroll.spacer height: 6
|
9
9
|
scroll.map width: 'matchParent', latitude: 13.4837, longitude: 144.7917, zoom: 11, height: 250, dataUrl: json_ui_garage_url(path: 'views/map_data')
|
10
10
|
|
11
11
|
# TODO: Implement in vuejs
|
12
|
-
scroll.
|
12
|
+
scroll.spacer height: 20
|
13
13
|
scroll.h2 text: 'Calendar'
|
14
|
-
scroll.
|
14
|
+
scroll.spacer height: 6
|
15
15
|
scroll.calendar width: 'matchParent', height: 500, dataUrl: json_ui_garage_url(path: 'views/calendar_data')
|
16
16
|
|
17
17
|
end
|
@@ -5,22 +5,22 @@ json_ui_page json do |page|
|
|
5
5
|
|
6
6
|
page.scroll padding: body_padding, childViews: ->(scroll) do
|
7
7
|
scroll.h2 text: 'Avatar'
|
8
|
-
scroll.
|
8
|
+
scroll.spacer height: 6
|
9
9
|
scroll.avatar url: 'https://www.wpjournalist.nl/wp-content/uploads/2019/03/avatar-jongen-voorbeeld-1.jpg'
|
10
10
|
|
11
|
-
scroll.
|
11
|
+
scroll.spacer height: 20
|
12
12
|
scroll.h2 text: 'Image with URL'
|
13
|
-
scroll.
|
13
|
+
scroll.spacer height: 6
|
14
14
|
scroll.image width: 100, url: @sample_image_url
|
15
15
|
|
16
|
-
scroll.
|
16
|
+
scroll.spacer height: 20
|
17
17
|
scroll.h2 text: 'Image with base64 data'
|
18
|
-
scroll.
|
18
|
+
scroll.spacer height: 6
|
19
19
|
scroll.image height: 100, base64Data: 'data:image/gif;base64,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'
|
20
20
|
|
21
|
-
scroll.
|
21
|
+
scroll.spacer height: 20
|
22
22
|
scroll.h2 text: 'QR Code as base64 image'
|
23
|
-
scroll.
|
23
|
+
scroll.spacer height: 6
|
24
24
|
if defined? RQRCode
|
25
25
|
qr_content = { version: 1, message: 'This is a test' }
|
26
26
|
qr = RQRCode::QRCode.new(qr_content.to_json)
|
@@ -1,7 +1,7 @@
|
|
1
1
|
json.title 'Views'
|
2
2
|
|
3
3
|
json_ui_page json do |page|
|
4
|
-
render "#{@path_prefix}/nav_menu", json: json, page: page
|
4
|
+
render "#{@path_prefix}/nav_menu", json: json, page: page, top_nav: true
|
5
5
|
|
6
6
|
page.list firstSection: ->(section) do
|
7
7
|
section.rows builder: ->(template) do
|