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