glib-web 0.3.0 → 0.3.1

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
  SHA1:
3
- metadata.gz: 88b1d9b7003edc234ba88cce7d35f5e36f884984
4
- data.tar.gz: e9af1f62d108767b64137910b0ef7beeb39a5577
3
+ metadata.gz: f4565ecc5336a937378291a2da6bda57a1653fcb
4
+ data.tar.gz: 683fceedfb9f9488f06113a19707a4dc83ab895a
5
5
  SHA512:
6
- metadata.gz: 7acfef633d39da9867f25f57f820fdcd4cf311340f8fbab9a41841328edf00333cf8b532ca158bdd56c5b968ee7ffb8f8e5e9bc9bf64d7384bf0f117a950162f
7
- data.tar.gz: 6e008f5246a55f16c2f6acbdca998b8affce920aa2e857511a52a30e010fd1e0aa8c33aa32fe1a4fd103db73229abd9fbd0c16bafda3684294aa25b05ad5f51f
6
+ metadata.gz: a652b793dd21095afe8dda2b293d1bdd501a4191e06154adb46f8693a656edd39ddea07f85aa1a0e52d1d5eb70c31a22248a541675138f54e710818dc9e9fdb6
7
+ data.tar.gz: eb2e5b6dd40994b1d0e0f6bcdd7ea02ab93d379c3d25e7816bffa3e677130d6ff3027f38bd385135376fb9d65ed93fbef06fdfe6998647eaa197d4fb3781a481
@@ -54,6 +54,40 @@ module Concerns::Application::Json::Libs
54
54
  after_action :__json_transformation_commit
55
55
  after_action :__json_validate_perform
56
56
  end
57
+
58
+ def json_libs_set_locale
59
+ before_action do
60
+ # Need to explicitly fallback to EN
61
+ I18n.locale = params[:_locale] || :en
62
+ rescue
63
+ I18n.locale = :en
64
+ end
65
+ end
66
+
67
+ def json_libs_force_json_ui
68
+ before_action do
69
+ if params[:_render] != 'v1'
70
+ redirect_to url_for(params.to_unsafe_h.merge(_render: 'v1'))
71
+ end
72
+ end
73
+ end
74
+
75
+ def json_libs_rescue_csrf
76
+ rescue_from ActionController::InvalidAuthenticityToken do |exception|
77
+ sign_out(:user)
78
+
79
+ respond_to do |format|
80
+ format.json do
81
+ render json: {
82
+ onResponse: {
83
+ action: 'windows/open-v1',
84
+ url: root_url
85
+ }
86
+ }
87
+ end
88
+ end
89
+ end
90
+ end
57
91
 
58
92
  end
59
93
  end
@@ -110,11 +110,25 @@ class Glib::JsonUi::ViewBuilder
110
110
  end
111
111
 
112
112
  class Table < View
113
+ hash :nextPage
114
+ hash :export
115
+ hash :import
116
+
113
117
  def firstSection(block)
114
118
  json.sections [1] do
115
119
  block.call page.table_section_builder
116
120
  end
117
121
  end
122
+
123
+ def sections(blocks)
124
+ json.sections do
125
+ blocks.each do |block|
126
+ json.child! do
127
+ block.call page.table_section_builder
128
+ end
129
+ end
130
+ end
131
+ end
118
132
  end
119
133
 
120
134
  class Scroll < View
@@ -148,6 +162,7 @@ class Glib::JsonUi::ViewBuilder
148
162
  class Horizontal < View
149
163
  views :childViews
150
164
  string :distribution
165
+ string :align
151
166
  end
152
167
 
153
168
  class Carousel < View
@@ -43,27 +43,32 @@ module Glib
43
43
 
44
44
  class H1 < View
45
45
  string :text
46
- # action :onClick
46
+ color :color
47
47
  end
48
48
 
49
49
  class H2 < View
50
50
  string :text
51
+ color :color
51
52
  end
52
53
 
53
54
  class H3 < View
54
55
  string :text
56
+ color :color
55
57
  end
56
58
 
57
59
  class H4 < View
58
60
  string :text
61
+ color :color
59
62
  end
60
63
 
61
64
  class P < View
62
65
  string :text
66
+ color :color
63
67
  end
64
68
 
65
69
  class Label < View
66
70
  string :text
71
+ color :color
67
72
  action :onClick
68
73
  end
69
74
 
@@ -129,6 +134,19 @@ module Glib
129
134
  block.call page.menu_builder
130
135
  end
131
136
  end
137
+
138
+ # def options(options)
139
+ # current_url = page.context.request.base_url + page.context.request.fullpath
140
+
141
+ # buttons ->(menu) do
142
+ # options.each do |tab|
143
+ # menu.button text: tab[:text], disabled: tab[:url] == current_url, onClick: ->(action) do
144
+ # action.windows_reload url: tab[:url]
145
+ # end
146
+ # end
147
+ # end
148
+ # end
149
+
132
150
  end
133
151
 
134
152
  end
@@ -34,6 +34,10 @@ if local_assigns[:top_nav] || json_ui_app_is_web?
34
34
  action.windows_open url: json_ui_garage_url(path: 'actions/index')
35
35
  end
36
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
+
37
41
  menu.divider
38
42
  menu.label text: 'Misc Menu'
39
43
 
@@ -37,7 +37,7 @@ json_ui_page json do |page|
37
37
  end
38
38
 
39
39
  template.thumbnail title: 'dialogs/open', onClick: ->(action) do
40
- action.dialogs_open url: json_ui_garage_url(path: 'forms/basic')
40
+ action.dialogs_open url: json_ui_garage_url(path: 'forms/basic', mode: 'dialog')
41
41
  end
42
42
 
43
43
  template.thumbnail title: 'dialogs/snackbar (Legacy)', onClick: ->(action) do
@@ -7,7 +7,11 @@ json_ui_page json do |page|
7
7
  form.fields_text name: 'user[name]', width: 'matchParent', label: 'Name'
8
8
  form.fields_password name: 'user[password]', width: 'matchParent', label: 'Password'
9
9
 
10
- form.panels_split width: 'matchParent', rightViews: ->(split) do
10
+ form.panels_split width: 'matchParent', leftViews: ->(split) do
11
+ if params[:mode] == 'dialog'
12
+ split.button styleClass: 'link', text: 'cancel', onClick: ->(action) { action.dialogs_close }
13
+ end
14
+ end, rightViews: ->(split) do
11
15
  split.button text: 'Submit', onClick: ->(action) { action.forms_submit }
12
16
  end
13
17
  end
@@ -23,6 +23,9 @@ json_ui_page json do |page|
23
23
  template.thumbnail title: 'Actions', onClick: ->(action) do
24
24
  action.windows_open url: json_ui_garage_url(path: 'actions/index')
25
25
  end
26
+ template.thumbnail title: 'Tables (Web Only)', onClick: ->(action) do
27
+ action.windows_open url: json_ui_garage_url(path: 'tables/index')
28
+ end
26
29
  end
27
30
 
28
31
  end
@@ -2,6 +2,7 @@
2
2
  page_index = params[:page].to_i
3
3
  next_page = {
4
4
  url: json_ui_garage_url(path: 'lists/infinite_scroll', page: page_index + 1, section_only: 'v1'),
5
+ # TODO: rename, e.g. autoloadAsNeeded vs autoloadAll
5
6
  autoLoad: true
6
7
  }
7
8
 
@@ -52,9 +52,6 @@ json_ui_page json do |page|
52
52
  template.thumbnail title: 'List', subtitle: 'Rows without columns', onClick: ->(action) do
53
53
  action.windows_open url: json_ui_garage_url(path: 'lists/index')
54
54
  end
55
- template.thumbnail title: 'Table (Web only)', subtitle: 'Rows with columns', onClick: ->(action) do
56
- action.windows_open url: json_ui_garage_url(path: 'panels/table')
57
- end
58
55
 
59
56
  end
60
57
  end, ->(section) do
@@ -0,0 +1,13 @@
1
+
2
+ batch_count = 30
3
+ items = (1..batch_count)
4
+ section = page.table_section_builder
5
+ section.rows objects: items, builder: ->(row, item, index) do
6
+ row.default cellViews: ->(cell) do
7
+ column_indexes.each do |i|
8
+ cell.label text: "Data #{page_index * batch_count + item}"
9
+ end
10
+ end, onClick: ->(action) do
11
+ action.windows_open url: json_ui_garage_url(path: 'home/blank')
12
+ end
13
+ end
@@ -0,0 +1,38 @@
1
+
2
+ page_index = params[:page].to_i
3
+ next_page = {
4
+ url: json_ui_garage_url(path: 'tables/autoload_all', page: page_index + 1, section_only: 'v1'),
5
+ autoload: 'all'
6
+ }
7
+
8
+ column_indexes = (1..3)
9
+ # TODO: Cater
10
+ # - for SEO: one URL for a standalone page and one URL for pagination only
11
+ # - for generic approach, e.g. excluding nav_menu when there is no change
12
+ if params[:section_only].present?
13
+ json.nextPage next_page if page_index < 3
14
+ json_ui_page json do |page|
15
+ json.sections do
16
+ json.child! do
17
+ render 'json_ui/garage/tables/autoload_section', page: page, page_index: page_index, column_indexes: column_indexes
18
+ end
19
+ end
20
+ end
21
+ else
22
+ json.title 'Tables'
23
+
24
+ json_ui_page json do |page|
25
+ render "#{@path_prefix}/nav_menu", json: json, page: page
26
+
27
+ page.table nextPage: next_page, firstSection: ->(section) do
28
+ section.header cellViews: ->(header) do
29
+ column_indexes.each do |i|
30
+ header.label text: "Heading#{i}"
31
+ end
32
+ end
33
+
34
+ render "#{@path_prefix}/tables/autoload_section", page: page, page_index: page_index, column_indexes: column_indexes
35
+ end
36
+ end
37
+
38
+ end
@@ -0,0 +1,31 @@
1
+ json.title 'Tables'
2
+
3
+ json_ui_page json do |page|
4
+ render "#{@path_prefix}/nav_menu", json: json, page: page
5
+
6
+ page.table export: { label: 'Export', fileName: 'output' }, import: { submitUrl: json_ui_garage_url(path: 'forms/generic_post'), paramName: 'user' }, firstSection: ->(section) do
7
+ section.header cellViews: ->(header) do
8
+ header.label text: 'field1'
9
+ header.label text: 'field2'
10
+ header.label text: 'field3'
11
+ header.label text: 'field4'
12
+ header.label text: 'field5'
13
+ header.label text: 'field6'
14
+ end
15
+
16
+ items = [1, 2, 3]
17
+ section.rows objects: items, builder: ->(row, item, index) do
18
+ row.default cellViews: ->(cell) do
19
+ cell.label text: "Data #{item}"
20
+ cell.label text: "Data 'A' #{item}"
21
+ cell.label text: 'Data "B"' + " #{item}"
22
+ cell.label text: "Data , #{item}"
23
+ cell.label text: "Line A#{item}\nLine B#{item}"
24
+ cell.label text: "Line A#{item}\rLine B#{item}"
25
+ end, onClick: ->(action) do
26
+ action.windows_open url: json_ui_garage_url(path: 'home/blank')
27
+ end
28
+ end
29
+ end
30
+
31
+ end
@@ -1,21 +1,22 @@
1
- json.title 'Panels'
1
+ json.title 'Tables'
2
2
 
3
3
  json_ui_page json do |page|
4
4
  render "#{@path_prefix}/nav_menu", json: json, page: page
5
5
 
6
+ column_indexes = (1..20)
6
7
  page.table firstSection: ->(section) do
7
8
  section.header cellViews: ->(header) do
8
- header.label text: 'Heading1'
9
- header.label text: 'Heading2'
10
- header.label text: 'Heading3'
9
+ column_indexes.each do |i|
10
+ header.label text: "Heading#{i}"
11
+ end
11
12
  end
12
13
 
13
14
  items = [1, 2, 3]
14
15
  section.rows objects: items, builder: ->(row, item, index) do
15
16
  row.default cellViews: ->(cell) do
16
- cell.label text: "Data #{item}"
17
- cell.label text: "Data #{item}"
18
- cell.label text: "Data #{item}"
17
+ column_indexes.each do |i|
18
+ cell.label text: "Data #{item}"
19
+ end
19
20
  end, onClick: ->(action) do
20
21
  action.windows_open url: json_ui_garage_url(path: 'home/blank')
21
22
  end
@@ -0,0 +1,20 @@
1
+ json.title 'Tables'
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 firstSection: ->(section) do
7
+ section.rows builder: ->(template) do
8
+ template.thumbnail title: 'Horizontal Scroll', onClick: ->(action) do
9
+ action.windows_open url: json_ui_garage_url(path: 'tables/horizontal_scroll')
10
+ end
11
+ template.thumbnail title: 'Exportable', onClick: ->(action) do
12
+ action.windows_open url: json_ui_garage_url(path: 'tables/exportable')
13
+ end
14
+ template.thumbnail title: 'Autoload All', onClick: ->(action) do
15
+ action.windows_open url: json_ui_garage_url(path: 'tables/autoload_all')
16
+ end
17
+ end
18
+
19
+ end
20
+ end
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.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - ''
@@ -91,8 +91,12 @@ files:
91
91
  - app/views/json_ui/garage/panels/index.json.jbuilder
92
92
  - app/views/json_ui/garage/panels/responsive.json.jbuilder
93
93
  - app/views/json_ui/garage/panels/split.json.jbuilder
94
- - app/views/json_ui/garage/panels/table.json.jbuilder
95
94
  - app/views/json_ui/garage/panels/vertical.json.jbuilder
95
+ - app/views/json_ui/garage/tables/_autoload_section.json.jbuilder
96
+ - app/views/json_ui/garage/tables/autoload_all.json.jbuilder
97
+ - app/views/json_ui/garage/tables/exportable.json.jbuilder
98
+ - app/views/json_ui/garage/tables/horizontal_scroll.json.jbuilder
99
+ - app/views/json_ui/garage/tables/index.json.jbuilder
96
100
  - app/views/json_ui/garage/views/banners.json.jbuilder
97
101
  - app/views/json_ui/garage/views/calendar_data.json.jbuilder
98
102
  - app/views/json_ui/garage/views/carousels.json.jbuilder