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 +4 -4
- data/Gemfile.lock +1 -1
- data/lib/xsdk/scaffold/rails/base_datatable.rb +38 -8
- data/lib/xsdk/scaffold/rails/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4de7a337b36092618e2f8c4d13b22cac4b6427a7ab4b3631c03236f9cbd9735b
|
4
|
+
data.tar.gz: 338b0258c5a76e1cab60ec800080352317f695546ef5957e04985b73e8157ee5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aa6ffd5f544cdbb8fd943b9c076f958644bc2841010d058e9c4a57d0688d166f180df6a2a9fe5d2513fa93b6db1bcb2860bc013442bb024f6944cb43007a50a6
|
7
|
+
data.tar.gz: 820733e0d444a5cdcb03564d8611c3cb763859d4343edead5f6668db425ac18694160fce65a2a9f83e1a2da373b24a8110b807f22182a7b02ab146b58e02c204
|
data/Gemfile.lock
CHANGED
@@ -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
|
-
|
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
|
-
.
|
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
|
-
|
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
|
-
|
137
|
-
|
138
|
-
|
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
|
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.
|
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-
|
11
|
+
date: 2021-08-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|