xsdk-scaffold-rails 0.1.6 → 0.1.10

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