glib-web 0.17.0 → 1.0.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a3408746883480d7dab22a76683d03de859c62f766e99b2fac1b1a629e5a7804
4
- data.tar.gz: 429eca98ab5b70592e209917779e87742821880c53d057bd21f49bfb355a1f7f
3
+ metadata.gz: 80ae3a9683db62d27d22bf05176090b8af70a0782c4d2a0153cb50101fa5adff
4
+ data.tar.gz: 883174575ec4cbea3a71ff9c78115eefea6b69fee4a8f436788e276ebef7abc4
5
5
  SHA512:
6
- metadata.gz: a7333639d20f585a61267eddf04fdf77261d4c8c62355031eb878077f203f2346d50be2b9e1ae009b369edf29407b8960c09c7ae9bce613374a9ee1eb6c60085
7
- data.tar.gz: b9f37f67f46b83d8fe859458a1e4b97345d4617e730ea102bc849d5ba5808829db730673a77a36ab8bd1f5e1525fe70eadfc9a1ee37e2c54159a06d56579a619
6
+ metadata.gz: 3f1e13ac700cea79e5e3d2935fb63ecd4779a3b1cb88be841afc29f055dfa60461146ef2f6f54c96e15483dcc92a3b08bf0bf5a44b9dbfca7634ec38513499bd
7
+ data.tar.gz: 4355e0719ae9f94d59157012d5750b352e81ede14dc5240d22b613dde3e742f91e296c83c6d4f19bb664253a778c4278794f70c9b1bcbfd68e9f221e9725dec7
@@ -29,6 +29,12 @@ class Glib::JsonUi::ActionBuilder
29
29
  string :fullscreen # mobile, always
30
30
  length :width
31
31
 
32
+ # def initialize(json, page)
33
+ # @json = json
34
+ # page.current_form = nil
35
+ # @page = page
36
+ # end
37
+
32
38
  # Future plan
33
39
  # panels_builder :content, :body, :footer
34
40
  end
@@ -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[:body]
117
+ json.set!(:body) { options[:body].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
@@ -142,6 +142,8 @@ class Glib::JsonUi::ViewBuilder
142
142
 
143
143
  class RichText < Text
144
144
  array :images
145
+ hash :imageUploader
146
+ string :produce # html or markdown
145
147
  end
146
148
 
147
149
  class Country < AbstractField
@@ -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
@@ -20,13 +20,14 @@ page.form url: json_ui_garage_url(path: 'forms/basic_post'), method: 'post', pad
20
20
  json.width 'matchParent'
21
21
  json.label 'Content'
22
22
  json.name 'user[bio]'
23
- json.value '<p>Test {{image1}}</p>'
23
+ json.value "<p>Test <img src='{{image1}}'</p>"
24
+ json.produce 'html'
24
25
 
25
26
  json.images do
26
27
  json.child! do
27
- json.value "eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBFQT09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--193dc0d939b9558fc4973fafbba91d989cbb04d4"
28
+ json.value 'eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBFQT09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--193dc0d939b9558fc4973fafbba91d989cbb04d4'
28
29
  # json.fileTitle "hita i hanom hg.jpg"
29
- json.fileUrl "https://imageserver-demo.herokuapp.com/image/itinerarybuilder-demo/o6CKzNt67PWnkPdUEnWMt7pr?h=100&w=100"
30
+ json.fileUrl 'https://imageserver-demo.herokuapp.com/image/itinerarybuilder-demo/o6CKzNt67PWnkPdUEnWMt7pr?h=100&w=100'
30
31
  end
31
32
  end
32
33
 
@@ -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['body']&.[]('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: 1.0.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