xsdk-scaffold-rails 0.1.5 → 0.1.9

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: 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