glib-web 0.5.39 → 0.5.40
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/helpers/glib/json_ui/abstract_builder.rb +8 -0
- data/app/helpers/glib/json_ui/list_builders.rb +12 -13
- data/app/helpers/glib/json_ui/view_builder.rb +2 -0
- data/app/helpers/glib/json_ui/view_builder/fields.rb +6 -0
- data/app/helpers/glib/json_ui/view_builder/panels.rb +10 -0
- data/app/views/json_ui/garage/forms/conditional_value.json.jbuilder +36 -0
- data/app/views/json_ui/garage/forms/index.json.jbuilder +3 -0
- data/app/views/json_ui/garage/forms/show_hide.json.jbuilder +0 -0
- data/app/views/json_ui/garage/lists/edit_actions.json.jbuilder +12 -1
- data/app/views/json_ui/garage/lists/index.json.jbuilder +1 -1
- data/app/views/json_ui/garage/views/index.json.jbuilder +3 -0
- data/app/views/json_ui/garage/views/map_cluster_data.json.jbuilder +38 -0
- data/app/views/json_ui/garage/views/maps.json.jbuilder +31 -0
- data/app/views/json_ui/garage/views/misc.json.jbuilder +4 -4
- metadata +4 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8b928a561f073b490adf1ea7cd8f5bfbf0da713c3cb580bc70384ea6c21579af
|
4
|
+
data.tar.gz: fe3fc8437847278266fd2d50cb0fb0501305a582e76f8d4696979d3375559d48
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 39a4149930f9ce32a68a91fae80a6589d9829f6efffc3d62578750258cd54163e5cc05115ad476276cd0a4992f190c25626d578813d827aac2936b4054ee127e
|
7
|
+
data.tar.gz: d890dec1c65fb22290234d16d88597fe39d54700009ce6d55f96cb69823167f01dc4fabc709828712a52e5e2a9165c01dbc7df29761f1dbfb095566a03679c66
|
@@ -263,6 +263,14 @@ module Glib
|
|
263
263
|
end
|
264
264
|
end
|
265
265
|
|
266
|
+
def self.menu(propName)
|
267
|
+
define_method(propName) do |value|
|
268
|
+
json.set! propName do
|
269
|
+
value.call(page.menu_builder)
|
270
|
+
end
|
271
|
+
end
|
272
|
+
end
|
273
|
+
|
266
274
|
def self.singleton_array(singletonName, arrayName)
|
267
275
|
array arrayName
|
268
276
|
|
@@ -7,23 +7,22 @@ module Glib
|
|
7
7
|
end
|
8
8
|
|
9
9
|
class AbstractTemplate < JsonUiElement
|
10
|
-
|
11
|
-
|
10
|
+
menu :leftButtons
|
11
|
+
menu :rightButtons
|
12
|
+
menu :editButtons
|
13
|
+
menu :chips
|
14
|
+
|
15
|
+
# def editButtons(block)
|
16
|
+
# json.editButtons do
|
12
17
|
# block.call page.menu_builder
|
13
18
|
# end
|
14
19
|
# end
|
15
20
|
|
16
|
-
def
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
end
|
21
|
-
|
22
|
-
def chips(block)
|
23
|
-
json.chips do
|
24
|
-
block.call page.menu_builder
|
25
|
-
end
|
26
|
-
end
|
21
|
+
# def chips(block)
|
22
|
+
# json.chips do
|
23
|
+
# block.call page.menu_builder
|
24
|
+
# end
|
25
|
+
# end
|
27
26
|
end
|
28
27
|
|
29
28
|
class Standard < AbstractTemplate
|
@@ -30,6 +30,7 @@ module Glib
|
|
30
30
|
hash :padding
|
31
31
|
singleton_array :styleClass, :styleClasses
|
32
32
|
hash :showIf
|
33
|
+
hash :valueIf
|
33
34
|
hash :analytics
|
34
35
|
|
35
36
|
# def initialize(json, page)
|
@@ -157,6 +158,7 @@ module Glib
|
|
157
158
|
float :longitude
|
158
159
|
int :zoom
|
159
160
|
string :dataUrl
|
161
|
+
bool :cluster
|
160
162
|
end
|
161
163
|
|
162
164
|
class Chip < View
|
@@ -43,6 +43,7 @@ class Glib::JsonUi::ViewBuilder
|
|
43
43
|
# @name ||= form.field_name(prop)
|
44
44
|
# @value ||= form.field_value(prop)
|
45
45
|
# end
|
46
|
+
|
46
47
|
end
|
47
48
|
|
48
49
|
# Override
|
@@ -53,6 +54,9 @@ class Glib::JsonUi::ViewBuilder
|
|
53
54
|
@label ||= form.field_label(@prop, @label_args || {})
|
54
55
|
@hint ||= form.hint_label(@prop, @hint_args || {})
|
55
56
|
@placeholder ||= form.placeholder_label(@prop, @placeholder_args || {})
|
57
|
+
|
58
|
+
@validation ||= form.field_validation(@prop)
|
59
|
+
|
56
60
|
end
|
57
61
|
json.name @name
|
58
62
|
json.value @value if @value
|
@@ -63,6 +67,8 @@ class Glib::JsonUi::ViewBuilder
|
|
63
67
|
# - Placeholder gets hidden when there is input which may be confusing
|
64
68
|
# - Placeholder competes with label for space
|
65
69
|
json.placeholder @placeholder if @placeholder
|
70
|
+
|
71
|
+
json.validation @validation if @validation
|
66
72
|
end
|
67
73
|
|
68
74
|
end
|
@@ -41,6 +41,16 @@ class Glib::JsonUi::ViewBuilder
|
|
41
41
|
I18n.t("dt_models.#{@model_name}.#{prop}.placeholder", args.merge(default: nil))
|
42
42
|
end
|
43
43
|
|
44
|
+
def field_validation(prop)
|
45
|
+
validations = {}
|
46
|
+
@model.class.validators_on(prop).each do |validator|
|
47
|
+
if validator.kind == :presence
|
48
|
+
validations[:required] = { message: 'Required' }
|
49
|
+
end
|
50
|
+
end
|
51
|
+
validations
|
52
|
+
end
|
53
|
+
|
44
54
|
def url(url)
|
45
55
|
@url = url
|
46
56
|
end
|
@@ -0,0 +1,36 @@
|
|
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.spacer height: 20
|
8
|
+
form.h2 text: 'Date'
|
9
|
+
form.spacer height: 6
|
10
|
+
form.fields_date name: 'user[date_start]', width: 'matchParent', label: 'Start Date', min: '2010-01-01', max: '2012-01-01', value: '2010-02-01'
|
11
|
+
form.fields_date name: 'user[date_end]', width: 'matchParent', label: 'End Date', min: '2010-01-01', max: '2012-01-01', valueIf: {
|
12
|
+
"+": [
|
13
|
+
{
|
14
|
+
"var": 'user[date_start]'
|
15
|
+
},
|
16
|
+
24 * 3600
|
17
|
+
]
|
18
|
+
}
|
19
|
+
|
20
|
+
form.spacer height: 20
|
21
|
+
form.h2 text: 'Date/Time'
|
22
|
+
form.spacer height: 6
|
23
|
+
form.fields_datetime name: 'user[datetime_start]', width: 'matchParent', label: 'Start Date', min: '2010-01-01', max: '2012-01-01', value: '2010-02-01T01:00'
|
24
|
+
form.fields_datetime name: 'user[datetime_end]', width: 'matchParent', label: 'End Date', min: '2010-01-01', max: '2012-01-01', valueIf: {
|
25
|
+
"+": [
|
26
|
+
{
|
27
|
+
"var": 'user[datetime_start]'
|
28
|
+
},
|
29
|
+
3600
|
30
|
+
]
|
31
|
+
}
|
32
|
+
|
33
|
+
form.spacer height: 20
|
34
|
+
form.fields_submit text: 'Submit'
|
35
|
+
form.spacer height: 40
|
36
|
+
end
|
@@ -36,6 +36,9 @@ json_ui_page json do |page|
|
|
36
36
|
template.thumbnail title: 'Show/Hide', onClick: ->(action) do
|
37
37
|
action.windows_open url: json_ui_garage_url(path: 'forms/show_hide')
|
38
38
|
end
|
39
|
+
template.thumbnail title: 'Conditional Value', onClick: ->(action) do
|
40
|
+
action.windows_open url: json_ui_garage_url(path: 'forms/conditional_value')
|
41
|
+
end
|
39
42
|
|
40
43
|
end
|
41
44
|
end, ->(section) do
|
File without changes
|
@@ -5,7 +5,18 @@ json_ui_page json do |page|
|
|
5
5
|
|
6
6
|
page.list firstSection: ->(section) do
|
7
7
|
section.rows builder: ->(template) do
|
8
|
-
template.thumbnail title: 'Click menu (web) or swipe left (Android/iOS)',
|
8
|
+
template.thumbnail title: 'Click menu (web) or swipe left (Android/iOS)', leftButtons: ->(menu) do
|
9
|
+
menu.button styleClass: 'icon', icon: 'check_box', onClick: ->(subaction) do
|
10
|
+
subaction.dialogs_alert message: 'Tick/untick'
|
11
|
+
end
|
12
|
+
end, rightButtons: ->(menu) do
|
13
|
+
menu.button styleClass: 'icon', icon: 'share', onClick: ->(subaction) do
|
14
|
+
subaction.dialogs_alert message: 'Share'
|
15
|
+
end
|
16
|
+
menu.button styleClass: 'icon', icon: 'open_in_new', onClick: ->(subaction) do
|
17
|
+
subaction.dialogs_alert message: 'Open'
|
18
|
+
end
|
19
|
+
end, editButtons: ->(menu) do
|
9
20
|
menu.button text: 'Edit', onClick: ->(action) do
|
10
21
|
action.dialogs_alert message: 'Perform action'
|
11
22
|
end
|
@@ -8,7 +8,7 @@ json_ui_page json do |page|
|
|
8
8
|
template.thumbnail icon: 'list', title: 'Templating', onClick: ->(action) do
|
9
9
|
action.windows_open url: json_ui_garage_url(path: 'lists/templating')
|
10
10
|
end
|
11
|
-
template.thumbnail title: '
|
11
|
+
template.thumbnail title: 'Action Buttons', onClick: ->(action) do
|
12
12
|
action.windows_open url: json_ui_garage_url(path: 'lists/edit_actions')
|
13
13
|
end
|
14
14
|
template.thumbnail title: 'FAB (Floating Action Button)', onClick: ->(action) do
|
@@ -22,6 +22,9 @@ json_ui_page json do |page|
|
|
22
22
|
template.thumbnail title: 'Banners', onClick: ->(action) do
|
23
23
|
action.windows_open url: json_ui_garage_url(path: 'views/banners')
|
24
24
|
end
|
25
|
+
template.thumbnail title: 'Maps', onClick: ->(action) do
|
26
|
+
action.windows_open url: json_ui_garage_url(path: 'views/maps')
|
27
|
+
end
|
25
28
|
template.thumbnail title: 'Misc', onClick: ->(action) do
|
26
29
|
action.windows_open url: json_ui_garage_url(path: 'views/misc')
|
27
30
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
|
2
|
+
json.pins do
|
3
|
+
locations = [
|
4
|
+
{ lat: -31.56391, lng: 147.154312 },
|
5
|
+
{ lat: -33.718234, lng: 150.363181 },
|
6
|
+
{ lat: -33.727111, lng: 150.371124 },
|
7
|
+
{ lat: -33.848588, lng: 151.209834 },
|
8
|
+
{ lat: -33.851702, lng: 151.216968 },
|
9
|
+
{ lat: -34.671264, lng: 150.863657 },
|
10
|
+
{ lat: -35.304724, lng: 148.662905 },
|
11
|
+
{ lat: -36.817685, lng: 175.699196 },
|
12
|
+
{ lat: -36.828611, lng: 175.790222 },
|
13
|
+
{ lat: -37.75, lng: 145.116667 },
|
14
|
+
{ lat: -37.759859, lng: 145.128708 },
|
15
|
+
{ lat: -37.765015, lng: 145.133858 },
|
16
|
+
{ lat: -37.770104, lng: 145.143299 },
|
17
|
+
{ lat: -37.7737, lng: 145.145187 },
|
18
|
+
{ lat: -37.774785, lng: 145.137978 },
|
19
|
+
{ lat: -37.819616, lng: 144.968119 },
|
20
|
+
{ lat: -38.330766, lng: 144.695692 },
|
21
|
+
{ lat: -39.927193, lng: 175.053218 },
|
22
|
+
{ lat: -41.330162, lng: 174.865694 },
|
23
|
+
{ lat: -42.734358, lng: 147.439506 },
|
24
|
+
{ lat: -42.734358, lng: 147.501315 },
|
25
|
+
{ lat: -42.735258, lng: 147.438 },
|
26
|
+
{ lat: -43.999792, lng: 170.463352 },
|
27
|
+
];
|
28
|
+
|
29
|
+
locations.each do |location|
|
30
|
+
json.child! do
|
31
|
+
json.latitude location[:lat]
|
32
|
+
json.longitude location[:lng]
|
33
|
+
json.infoWindow do
|
34
|
+
json.title "TEST #{rand(1000)}"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
json.title 'Views'
|
2
|
+
|
3
|
+
json_ui_page json do |page|
|
4
|
+
render "#{@path_prefix}/nav_menu", json: json, page: page
|
5
|
+
|
6
|
+
page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
|
7
|
+
scroll.spacer height: 20
|
8
|
+
scroll.h2 text: 'Map with Markers'
|
9
|
+
scroll.spacer height: 6
|
10
|
+
scroll.map \
|
11
|
+
width: 'matchParent',
|
12
|
+
latitude: 13.4837,
|
13
|
+
longitude: 144.7917,
|
14
|
+
zoom: 11,
|
15
|
+
height: 250,
|
16
|
+
dataUrl: json_ui_garage_url(path: 'views/map_data')
|
17
|
+
|
18
|
+
scroll.spacer height: 20
|
19
|
+
scroll.h2 text: 'Map with Clustered Markers'
|
20
|
+
scroll.spacer height: 6
|
21
|
+
scroll.map \
|
22
|
+
width: 'matchParent',
|
23
|
+
latitude: -42.162376,
|
24
|
+
longitude: 172.671437,
|
25
|
+
zoom: 7,
|
26
|
+
height: 480,
|
27
|
+
cluster: true,
|
28
|
+
dataUrl: json_ui_garage_url(path: 'views/map_cluster_data')
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
@@ -20,10 +20,10 @@ json_ui_page json do |page|
|
|
20
20
|
scroll.datetime value: 1.week.ago, format: 'YYYY-MM-DD'
|
21
21
|
scroll.datetime value: DateTime.current, format: 'hh:mm:ss', tick: true
|
22
22
|
|
23
|
-
scroll.spacer height: 20
|
24
|
-
scroll.h2 text: 'Map'
|
25
|
-
scroll.spacer height: 6
|
26
|
-
scroll.map width: 'matchParent', latitude: 13.4837, longitude: 144.7917, zoom: 11, height: 250, dataUrl: json_ui_garage_url(path: 'views/map_data')
|
23
|
+
# scroll.spacer height: 20
|
24
|
+
# scroll.h2 text: 'Map'
|
25
|
+
# scroll.spacer height: 6
|
26
|
+
# scroll.map width: 'matchParent', latitude: 13.4837, longitude: 144.7917, zoom: 11, height: 250, dataUrl: json_ui_garage_url(path: 'views/map_data')
|
27
27
|
|
28
28
|
scroll.spacer height: 20
|
29
29
|
scroll.h2 text: 'Calendar'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: glib-web
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.40
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ''
|
@@ -125,6 +125,7 @@ files:
|
|
125
125
|
- app/views/json_ui/garage/forms/basic.json.jbuilder
|
126
126
|
- app/views/json_ui/garage/forms/basic_post.json.jbuilder
|
127
127
|
- app/views/json_ui/garage/forms/checkboxes.json.jbuilder
|
128
|
+
- app/views/json_ui/garage/forms/conditional_value.json.jbuilder
|
128
129
|
- app/views/json_ui/garage/forms/dynamic_group.json.jbuilder
|
129
130
|
- app/views/json_ui/garage/forms/dynamic_select.json.jbuilder
|
130
131
|
- app/views/json_ui/garage/forms/dynamic_select_data.json.jbuilder
|
@@ -197,7 +198,9 @@ files:
|
|
197
198
|
- app/views/json_ui/garage/views/images.json.jbuilder
|
198
199
|
- app/views/json_ui/garage/views/index.json.jbuilder
|
199
200
|
- app/views/json_ui/garage/views/links.json.jbuilder
|
201
|
+
- app/views/json_ui/garage/views/map_cluster_data.json.jbuilder
|
200
202
|
- app/views/json_ui/garage/views/map_data.json.jbuilder
|
203
|
+
- app/views/json_ui/garage/views/maps.json.jbuilder
|
201
204
|
- app/views/json_ui/garage/views/markdowns.json.jbuilder
|
202
205
|
- app/views/json_ui/garage/views/misc.json.jbuilder
|
203
206
|
- app/views/json_ui/garage/views/texts.json.jbuilder
|