xsdk-scaffold-rails 0.1.6 → 0.1.10

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: fea489586a3ed39ac4e314a7aeb60083a3226c3654b5f0e5e466bbf02159aaa0
4
- data.tar.gz: 0c7c053dde2236f935cc1026f127e4a91026e8c5c4cd66d3dcef05f8571bd72f
3
+ metadata.gz: 75d85ae55d8bef8eadbb1af2b40f558c60279d31408c2378220bf73ea398eada
4
+ data.tar.gz: ba396e8dc6effc8787e6ed885d77e65ddfd8c56979dd899d8fc86f1da69b7f0d
5
5
  SHA512:
6
- metadata.gz: fbd4186e4eae066437757891985e5f6997dd5cc991aac8802b175e1fea40efa5d94476772297eddc6979345dc9699f2bacbcee45ec4c1f40f4caf1751dd5efc6
7
- data.tar.gz: cf3f89d3d4ec4f37052f77dc1601622ef9c88d0ea08e71b39fad8f6f5af83eb45d2e0896f0d53233af11db6ca1be70c58b5154f02777592ce61a78f34d66c53e
6
+ metadata.gz: fe6202b413534c5c6df73eea0f073cfba20c12ad5fc04c7bf580df61699f869c7d32746e36c540d82458f19976b7076a390a51b820d1f76a3503d46c85ce3a21
7
+ data.tar.gz: 00d7b44019557ea04c309a91ddbb6753cacf37abc5e04f12849e1e1274fb5d2dad72067ed119aba86ab9f100319ef6619c671146a0ab10064b16b4eee771842c
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- xsdk-scaffold-rails (0.1.6)
4
+ xsdk-scaffold-rails (0.1.10)
5
5
  activerecord (>= 6.0.0)
6
6
  pg (>= 1.1)
7
7
 
@@ -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
@@ -85,7 +89,7 @@ module Xsdk
85
89
 
86
90
  # Build columns
87
91
  def build_headers
88
- headers = columns.map do |c|
92
+ headers = columns_orderd.map do |c|
89
93
  {
90
94
  value: c, # warehouse_id
91
95
  table_value: get_table_value(c), # "mag1"
@@ -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
@@ -163,6 +167,14 @@ module Xsdk
163
167
  @options[:transient_columns] || {}
164
168
  end
165
169
 
170
+ def column_name_ordered_list
171
+ []
172
+ end
173
+
174
+ def columns_orderd
175
+ column_name_ordered_list + (columns - column_name_ordered_list)
176
+ end
177
+
166
178
  def columns
167
179
  @clazz.column_names - %w[created_at updated_at] + transient_columns.keys
168
180
  end
@@ -179,6 +191,10 @@ module Xsdk
179
191
  []
180
192
  end
181
193
 
194
+ def methods
195
+ []
196
+ end
197
+
182
198
  def get_table(c)
183
199
  ax = associations.with_indifferent_access
184
200
  if @foreign_keys.key?(c)
@@ -254,6 +270,20 @@ module Xsdk
254
270
  def associations
255
271
  {}
256
272
  end
273
+
274
+ def sorting_map
275
+ build_headers.map do |h|
276
+ if h[:type] == 'foreign_key'
277
+ [h[:table_value].to_sym, "#{h[:table]}.#{h[:source]}"]
278
+ elsif h[:type] == 'enum'
279
+ ["#{h[:value]}_text".to_sym, "#{h[:table]}.#{h[:table_value]}"]
280
+ elsif h[:type].nil? || h[:value] == 'actions'
281
+ [nil]
282
+ else
283
+ [h[:value].to_sym, "#{h[:table]}.#{h[:table_value]}"]
284
+ end
285
+ end.filter { |a| a[0] }.to_h
286
+ end
257
287
  end
258
288
  end
259
289
  end
@@ -1,7 +1,7 @@
1
1
  module Xsdk
2
2
  module Scaffold
3
3
  module Rails
4
- VERSION = "0.1.6"
4
+ VERSION = "0.1.10"
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.6
4
+ version: 0.1.10
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-28 00:00:00.000000000 Z
11
+ date: 2021-11-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord