glib-web 0.17.0 → 0.18.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a3408746883480d7dab22a76683d03de859c62f766e99b2fac1b1a629e5a7804
4
- data.tar.gz: 429eca98ab5b70592e209917779e87742821880c53d057bd21f49bfb355a1f7f
3
+ metadata.gz: 7ea3b32fee4311cabc939b7d63eab32160af8cf49d198e545d7e0788e0ab6b0d
4
+ data.tar.gz: f140508641634224a36c4d2d16faab221c457457bb9f3c5d43a81217ff491758
5
5
  SHA512:
6
- metadata.gz: a7333639d20f585a61267eddf04fdf77261d4c8c62355031eb878077f203f2346d50be2b9e1ae009b369edf29407b8960c09c7ae9bce613374a9ee1eb6c60085
7
- data.tar.gz: b9f37f67f46b83d8fe859458a1e4b97345d4617e730ea102bc849d5ba5808829db730673a77a36ab8bd1f5e1525fe70eadfc9a1ee37e2c54159a06d56579a619
6
+ metadata.gz: d030ad0dd5d45d4a2cbb588643704b3584065406c10b3de2cf1b98738550bf45fcc69fb3856af44085e0032e2b5b283af1256fc0f8f969d6057aff735f2c3f73
7
+ data.tar.gz: 175f050a7acca85506161613f19aa41933334e5a8a1bf001029d98c3a33ad02682cadfa3a6f650bb2dcf06c87ddce3828b0779d7b05e12eb616564da87407b9f
@@ -23,6 +23,7 @@ class Glib::JsonUi::ActionBuilder
23
23
  end
24
24
 
25
25
  class Get < AbstractHttp
26
+ string :historyUrl
26
27
  end
27
28
 
28
29
  class Post < AbstractHttp
@@ -64,7 +64,7 @@ module Glib
64
64
  end
65
65
 
66
66
  class Page
67
- attr_reader :json, :context, :view_builder, :action_builder, :menu_builder
67
+ attr_reader :json, :context, :view_builder, :sview_builder, :action_builder, :menu_builder
68
68
  attr_reader :list_section_builder, :table_section_builder, :drawer_content_builder
69
69
 
70
70
  # See Panels::Form
@@ -75,6 +75,7 @@ module Glib
75
75
  @context = context
76
76
 
77
77
  @view_builder = ViewBuilder.new(json, self, true)
78
+ @sview_builder = ViewBuilder.new(json, self, false)
78
79
  @action_builder = ActionBuilder.new(json, self, false)
79
80
  @menu_builder = MenuBuilder.new(json, self)
80
81
 
@@ -112,6 +113,9 @@ module Glib
112
113
  json.set! name, value
113
114
  end
114
115
  end
116
+ if options[:custom]
117
+ json.set!(:custom) { options[:custom].call(sview_builder) }
118
+ end
115
119
  options[:content]&.call drawer_content_builder
116
120
  end
117
121
  end
@@ -175,7 +179,7 @@ module Glib
175
179
 
176
180
  def form(options = {})
177
181
  form = Glib::JsonUi::ViewBuilder::Panels::Form.new(json, self)
178
- form.childViews(->(view_builder) {})
182
+ form.childViews(->(view_builder) { })
179
183
  panel_options = options.slice!(:url, :method, :local, :onSubmit, :paramNameForFormData, :model)
180
184
 
181
185
  json.fullPageForm do
@@ -211,18 +215,18 @@ module Glib
211
215
  raise "Invalid properties: #{options.keys}" if options.size > 0
212
216
  end
213
217
 
214
- # def onLoad(options = {})
215
- # json.onLoad do
216
- # yield @action_builder
217
- # end
218
- # end
219
-
220
218
  def on(options = {})
221
219
  if (on_load = options[:load])
222
220
  json.onLoad do
223
221
  on_load.call @action_builder
224
222
  end
225
223
  end
224
+
225
+ if (on_refocus = options[:refocus])
226
+ json.onRefocus do
227
+ on_refocus.call @action_builder
228
+ end
229
+ end
226
230
  end
227
231
  end
228
232
  end
@@ -0,0 +1,8 @@
1
+ name = params[:name]
2
+ action.components_update targetId: 'greeting', views: ->(update) do
3
+ update.panels_vertical childViews: ->(vertical) do
4
+ vertical.label text: "Hello #{name},"
5
+ vertical.spacer height: 8
6
+ vertical.label text: 'Nice to meet you'
7
+ end
8
+ end
@@ -28,7 +28,9 @@ page.list sections: [
28
28
  template.thumbnail title: 'Dirty Prompt', onClick: ->(action) do
29
29
  action.windows_open url: json_ui_garage_url(path: 'forms/dirty_prompt')
30
30
  end
31
-
31
+ template.thumbnail title: 'Partial Update', onClick: ->(action) do
32
+ action.windows_open url: json_ui_garage_url(path: 'forms/partial_update')
33
+ end
32
34
  end
33
35
  end, ->(section) do
34
36
  section.header padding: glib_json_padding_list, childViews: ->(header) do
@@ -5,11 +5,10 @@ data = params[:user] || {}
5
5
  page = json_ui_page json
6
6
  render "#{@path_prefix}/nav_menu", json: json, page: page
7
7
 
8
- # page.form url: json_ui_garage_url(path: 'forms/get_request'), method: 'get', padding: glib_json_padding_body, childViews: ->(form) do
9
8
  page.scroll childViews: ->(scroll) do
10
9
  scroll.panels_form \
11
10
  width: 'matchParent',
12
- url: json_ui_garage_url(path: 'forms/get_request'),
11
+ url: json_ui_garage_url(path: 'forms/page_update_on_response'),
13
12
  method: 'get',
14
13
  padding: glib_json_padding_body,
15
14
  childViews: ->(form) do
@@ -34,7 +33,7 @@ page.scroll childViews: ->(scroll) do
34
33
 
35
34
  scroll.panels_form \
36
35
  width: 'matchParent',
37
- url: json_ui_garage_url(path: 'forms/get_request'),
36
+ url: json_ui_garage_url(path: 'forms/page_update_on_response'),
38
37
  method: 'post',
39
38
  padding: glib_json_padding_body,
40
39
  childViews: ->(form) do
@@ -0,0 +1,51 @@
1
+ json.title 'Forms'
2
+
3
+ page = json_ui_page json
4
+ render "#{@path_prefix}/nav_menu", json: json, page: page
5
+
6
+ page.scroll childViews: ->(scroll) do
7
+ scroll.panels_vertical padding: glib_json_padding_body, childViews: ->(vertical) do
8
+ scroll.h2 text: 'Partial update'
9
+ scroll.spacer height: 8
10
+ scroll.label text: 'The content below will be updated. This is a more efficient alternative to windows_reload.'
11
+ scroll.spacer height: 8
12
+ scroll.label text: 'The updated content should be committed to the page history as the user navigates back and forward.'
13
+ scroll.spacer height: 18
14
+ scroll.panels_vertical id: 'greeting', childViews: ->(inner) do
15
+ inner.label text: 'Hello'
16
+ end
17
+ end
18
+
19
+ scroll.spacer height: 18
20
+ scroll.hr width: 'matchParent'
21
+
22
+ scroll.panels_form url: json_ui_garage_url(path: 'forms/partial_update_response'), method: 'post', padding: glib_json_padding_body, childViews: ->(form) do
23
+ scroll.h2 text: 'Update via POST request'
24
+ scroll.spacer height: 8
25
+ scroll.fields_text name: 'name', width: 'matchParent', label: 'Name', value: 'Jane'
26
+ scroll.spacer height: 8
27
+ scroll.fields_submit text: 'Submit'
28
+ end
29
+
30
+ scroll.spacer height: 18
31
+ scroll.hr width: 'matchParent'
32
+
33
+ scroll.panels_vertical padding: glib_json_padding_body, childViews: ->(vertical) do
34
+ vertical.h2 text: 'Update via GET request'
35
+
36
+ vertical.spacer height: 8
37
+ vertical.button text: 'Update', onClick: ->(action) do
38
+ action.http_get url: json_ui_garage_url(path: 'forms/partial_update_response'), formData: { name: 'John' }, historyUrl: json_ui_garage_url(path: 'forms/partial_update', name: 'John')
39
+ end
40
+ vertical.spacer height: 18
41
+ end
42
+
43
+ end
44
+
45
+ if params[:name].present?
46
+ page.on load: ->(action) do
47
+ render "#{@path_prefix}/forms/partial_update_execute", action: action
48
+ end, refocus: ->(action) do
49
+ render "#{@path_prefix}/forms/partial_update_execute", action: action
50
+ end
51
+ end
@@ -0,0 +1,3 @@
1
+ json_ui_response_with_view json do |action|
2
+ render "#{@path_prefix}/forms/partial_update_execute", action: action
3
+ end
@@ -8,6 +8,7 @@ module Glib
8
8
  if (json = (@http.get args['url'], action, args.except('url'))) && (left_drawer = json['leftDrawer'])
9
9
  crawl left_drawer['header']&.[]('childViews')
10
10
  crawl left_drawer['rows']
11
+ crawl left_drawer['custom']&.[]('childViews')
11
12
  end
12
13
 
13
14
  if (on_load = (args.fetch('onLoad', nil)))
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.17.0
4
+ version: 0.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ''
@@ -144,6 +144,7 @@ files:
144
144
  - app/views/json_ui/garage/actions/index.json.jbuilder
145
145
  - app/views/json_ui/garage/forms/_alert_post_data.json.jbuilder
146
146
  - app/views/json_ui/garage/forms/_conditional_banner.json.jbuilder
147
+ - app/views/json_ui/garage/forms/_partial_update_execute.json.jbuilder
147
148
  - app/views/json_ui/garage/forms/_read_more_text.json.jbuilder
148
149
  - app/views/json_ui/garage/forms/basic.json.jbuilder
149
150
  - app/views/json_ui/garage/forms/basic_post.json.jbuilder
@@ -164,6 +165,8 @@ files:
164
165
  - app/views/json_ui/garage/forms/online_participant1.json.jbuilder
165
166
  - app/views/json_ui/garage/forms/online_participant2.json.jbuilder
166
167
  - app/views/json_ui/garage/forms/page_update_on_response.json.jbuilder
168
+ - app/views/json_ui/garage/forms/partial_update.json.jbuilder
169
+ - app/views/json_ui/garage/forms/partial_update_response.json.jbuilder
167
170
  - app/views/json_ui/garage/forms/payments.json.jbuilder
168
171
  - app/views/json_ui/garage/forms/pickers.json.jbuilder
169
172
  - app/views/json_ui/garage/forms/ratings.json.jbuilder