xsdk-scaffold-rails 0.1.5 → 0.1.9

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: a74cad8d98a8df248f79c1d710ace09c66a2392c5e3bcf4668e86d68596e2ddc
4
- data.tar.gz: ad0dc5bbeb6790674a0f85f5263341fde64370732d8c090e3065f7e6d864bd9a
3
+ metadata.gz: 4de7a337b36092618e2f8c4d13b22cac4b6427a7ab4b3631c03236f9cbd9735b
4
+ data.tar.gz: 338b0258c5a76e1cab60ec800080352317f695546ef5957e04985b73e8157ee5
5
5
  SHA512:
6
- metadata.gz: 823c9c9c86b3fda4f9b062c1ce5bdfa75bbf2140fd1d1f19772f89908ea0f73e6ae59055ca1250a29989d78ffe954fc7f66d9981e3ead71f96acc45c093b9c04
7
- data.tar.gz: ab30c2621e46ff55efcb9ea0cef893d1f7a4d8c7f42cb56e5203b5785ae73133f70f0567696274ec6426a4edfdb9ef9aa90bc20708167d3ae15e7ad2e4c0b80a
6
+ metadata.gz: aa6ffd5f544cdbb8fd943b9c076f958644bc2841010d058e9c4a57d0688d166f180df6a2a9fe5d2513fa93b6db1bcb2860bc013442bb024f6944cb43007a50a6
7
+ data.tar.gz: 820733e0d444a5cdcb03564d8611c3cb763859d4343edead5f6668db425ac18694160fce65a2a9f83e1a2da373b24a8110b807f22182a7b02ab146b58e02c204
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- xsdk-scaffold-rails (0.1.5)
4
+ xsdk-scaffold-rails (0.1.7)
5
5
  activerecord (>= 6.0.0)
6
6
  pg (>= 1.1)
7
7
 
@@ -7,7 +7,7 @@ module Xsdk
7
7
  @clazz = clazz
8
8
  @foreign_keys = get_foreign_key_map(clazz)
9
9
  @only_schema = @options[:only_schema]
10
- @default_values = @options.try(:[], :default) || {}
10
+ @default_values = @options.try(:[], :default) || {}
11
11
  end
12
12
 
13
13
  def as_json(*)
@@ -25,9 +25,13 @@ module Xsdk
25
25
  def paginate(data)
26
26
  per_page = @options[:itemsPerPage]
27
27
  page = @options[:page] - 1
28
+ sort = @options[:sortBy]
29
+ direction = @options[:sortDesc]
30
+ order_string = sort.map.with_index { |k, idx| "#{sorting_map[k.to_sym]} #{direction[idx] ? 'DESC' : 'ASC'}" }
28
31
  data.limit(per_page)
29
32
  .offset(page * per_page)
30
- .as_json(methods: enum_methods, except: keys_to_exclude, include: has_many_include)
33
+ .order(order_string)
34
+ .as_json(methods: methods + enum_methods, except: keys_to_exclude, include: has_many_include)
31
35
  end
32
36
 
33
37
  def keys_to_exclude
@@ -101,7 +105,7 @@ module Xsdk
101
105
  subschema: get_subschema(c),
102
106
  show_new_record: get_if_can_show_new_record(c),
103
107
  entity_name: get_entity_name(c),
104
- default: get_default_value(c)
108
+ default: get_default_value(c)
105
109
  }
106
110
  end
107
111
  headers << { text: 'Azioni', value: 'actions', type: '', in_form: false, in_table: true }
@@ -116,7 +120,7 @@ module Xsdk
116
120
  subschema = nil
117
121
  ax = associations.with_indifferent_access
118
122
  if ax.key?(c) && (ax[c][:association_type] == :has_many)
119
- child_options = '{}'
123
+ child_options = { options: {}.to_json }
120
124
  child_options = { options: ax[c][:options].to_json } if ax[c][:options].present?
121
125
  begin
122
126
  datatable = "#{ax[c][:clazz]}Datatable".constantize
@@ -133,9 +137,9 @@ module Xsdk
133
137
  subschema
134
138
  end
135
139
 
136
- def get_default_value(c)
137
- @default_values[c]
138
- end
140
+ def get_default_value(c)
141
+ @default_values[c]
142
+ end
139
143
 
140
144
  def get_enum_cols(c)
141
145
  arr = []
@@ -159,8 +163,12 @@ module Xsdk
159
163
  end
160
164
  end
161
165
 
166
+ def transient_columns
167
+ @options[:transient_columns] || {}
168
+ end
169
+
162
170
  def columns
163
- @clazz.column_names - %w[created_at updated_at]
171
+ @clazz.column_names - %w[created_at updated_at] + transient_columns.keys
164
172
  end
165
173
 
166
174
  def table_columns
@@ -175,6 +183,10 @@ module Xsdk
175
183
  []
176
184
  end
177
185
 
186
+ def methods
187
+ []
188
+ end
189
+
178
190
  def get_table(c)
179
191
  ax = associations.with_indifferent_access
180
192
  if @foreign_keys.key?(c)
@@ -201,6 +213,8 @@ module Xsdk
201
213
  @foreign_keys[c][0][:class_name].constantize.model_name.human.capitalize
202
214
  elsif ax.key?(c) && (ax[c][:association_type] == :has_many)
203
215
  ax[c][:clazz].model_name.human.capitalize
216
+ elsif transient_columns.key?(c)
217
+ transient_columns[c][:text]
204
218
  else
205
219
  @clazz.human_attribute_name(c).capitalize
206
220
  end
@@ -214,6 +228,8 @@ module Xsdk
214
228
  'has_many'
215
229
  elsif @clazz.defined_enums.key?(c)
216
230
  'enum'
231
+ elsif transient_columns.key?(c)
232
+ transient_columns[c][:type]
217
233
  else
218
234
  @clazz.type_for_attribute(c).type
219
235
  end
@@ -246,6 +262,20 @@ module Xsdk
246
262
  def associations
247
263
  {}
248
264
  end
265
+
266
+ def sorting_map
267
+ build_headers.map do |h|
268
+ if h[:type] == 'foreign_key'
269
+ [h[:table_value].to_sym, "#{h[:table]}.#{h[:source]}"]
270
+ elsif h[:type] == 'enum'
271
+ ["#{h[:value]}_text".to_sym, "#{h[:table]}.#{h[:table_value]}"]
272
+ elsif h[:type].nil? || h[:value] == 'actions'
273
+ [nil]
274
+ else
275
+ [h[:value].to_sym, "#{h[:table]}.#{h[:table_value]}"]
276
+ end
277
+ end.filter { |a| a[0] }.to_h
278
+ end
249
279
  end
250
280
  end
251
281
  end
@@ -1,7 +1,7 @@
1
1
  module Xsdk
2
2
  module Scaffold
3
3
  module Rails
4
- VERSION = "0.1.5"
4
+ VERSION = "0.1.9"
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xsdk-scaffold-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Davide Croci
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-06-17 00:00:00.000000000 Z
11
+ date: 2021-08-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord