para 0.12.1 → 0.12.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/stylesheets/para/admin/src/_sorting.scss +5 -2
- data/app/javascripts/para/admin/job-tracker.js +2 -2
- data/app/javascripts/para/index.js +0 -2
- data/lib/para/attribute_field/base.rb +7 -4
- data/lib/para/model_field_parsers/relations.rb +36 -27
- data/lib/para/version.rb +1 -1
- metadata +2 -3
- data/app/javascripts/para/lib/page-loading.js +0 -42
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e5f4c1a9a889b3800d615452bda318bac05fc3d49b88c612af3cd2a714cb3fe8
|
4
|
+
data.tar.gz: a665a5affd7b2a3938baf185c41221eed335b42be7dabf8ff1d17145212dfecb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7a71ed497361f0b442965a7331159d9c2c2dfd7f745674f8698f446e1a6651f3bdfacd96f314f2e00d657ba13390f55ca317221aca45284d6770419bd820be79
|
7
|
+
data.tar.gz: 6e1bb4347edeacd0f067dc401e77ce72926ed9ae9d4e61326799376d3ca7063db196a275c58b79d96c29e21ba5004d56f8cdbb976c98dfac22f91522b352955a
|
@@ -31,12 +31,15 @@
|
|
31
31
|
content: "\f0dc";
|
32
32
|
opacity: .3;
|
33
33
|
}
|
34
|
+
|
34
35
|
.sort_link.asc:before {
|
35
|
-
content: "\
|
36
|
+
content: "\f0d8";
|
36
37
|
}
|
38
|
+
|
37
39
|
.sort_link.desc:before {
|
38
|
-
content: "\
|
40
|
+
content: "\f0d7";
|
39
41
|
}
|
42
|
+
|
40
43
|
.sort_link.asc.disabled:before,
|
41
44
|
.sort_link.desc.disabled:before {
|
42
45
|
opacity: .1;
|
@@ -22,11 +22,11 @@ function trackProgressFor(element, jobStatusUrl) {
|
|
22
22
|
}
|
23
23
|
|
24
24
|
document.documentElement.addEventListener('turbo:frame-load', function(e) {
|
25
|
-
if (e.target.id
|
25
|
+
if (e.target.id !== 'para_admin_modal') return;
|
26
26
|
|
27
27
|
loadedElement = e.target.childNodes[0];
|
28
28
|
|
29
|
-
var jobStatusUrl = loadedElement
|
29
|
+
var jobStatusUrl = loadedElement?.dataset?.jobStatusUrl;
|
30
30
|
if (!jobStatusUrl) return;
|
31
31
|
|
32
32
|
trackProgressFor(loadedElement, jobStatusUrl);
|
@@ -56,6 +56,10 @@ module Para
|
|
56
56
|
|
57
57
|
reference = model.reflect_on_all_associations.find do |association|
|
58
58
|
association.foreign_key == name
|
59
|
+
rescue ArgumentError
|
60
|
+
# This can happen when the association is polymorphic and the foreign key can't
|
61
|
+
# be determined, in this case, we just ignore the association.
|
62
|
+
false
|
59
63
|
end
|
60
64
|
|
61
65
|
if reference
|
@@ -75,12 +79,11 @@ module Para
|
|
75
79
|
true
|
76
80
|
end
|
77
81
|
|
78
|
-
#
|
79
82
|
def searchable?
|
80
83
|
options[:searchable] != false && (
|
81
|
-
[
|
84
|
+
%i[string text].include?(type.to_sym) && !name.match(/password/)
|
82
85
|
) && (
|
83
|
-
!model.respond_to?(:ransackable_attributes) ||
|
86
|
+
!model.respond_to?(:ransackable_attributes) ||
|
84
87
|
model.ransackable_attributes.include?(name.to_s)
|
85
88
|
)
|
86
89
|
end
|
@@ -94,7 +97,7 @@ module Para
|
|
94
97
|
def field_options
|
95
98
|
self.class._field_options.each_with_object({}) do |params, hash|
|
96
99
|
value = send(params[:method_name])
|
97
|
-
hash[params[:key]] = value if value
|
100
|
+
hash[params[:key]] = value if !value.nil? || params[:options][:allow_nil]
|
98
101
|
end
|
99
102
|
end
|
100
103
|
|
@@ -42,8 +42,10 @@ module Para
|
|
42
42
|
# attributes mappings above
|
43
43
|
next if AttributeField::RelationField == fields_hash[name]
|
44
44
|
|
45
|
-
|
46
|
-
|
45
|
+
unless through_polymorphic_reflection?(reflection)
|
46
|
+
# Remove foreign key, if existing, from fields
|
47
|
+
fields_hash.delete(reflection.foreign_key.to_s)
|
48
|
+
end
|
47
49
|
|
48
50
|
# Do not process polymorphic belongs to for now ...
|
49
51
|
if reflection.options[:polymorphic] == true
|
@@ -52,27 +54,25 @@ module Para
|
|
52
54
|
end
|
53
55
|
|
54
56
|
if model.nested_attributes_options[name]
|
55
|
-
if reflection.collection?
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
remove_counter_cache_column!(name, reflection)
|
57
|
+
fields_hash[name] = if reflection.collection?
|
58
|
+
AttributeField::NestedManyField.new(
|
59
|
+
model, name: name, type: 'has_many', field_type: 'nested_many'
|
60
|
+
)
|
61
|
+
else
|
62
|
+
AttributeField::NestedOneField.new(
|
63
|
+
model, name: name, type: 'belongs_to', field_type: 'nested_one'
|
64
|
+
)
|
65
|
+
end
|
66
|
+
elsif reflection.collection?
|
67
|
+
remove_counter_cache_column!(name, reflection)
|
67
68
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
end
|
69
|
+
fields_hash[name] = AttributeField::HasManyField.new(
|
70
|
+
model, name: name, type: 'has_many', field_type: 'multi_select'
|
71
|
+
)
|
72
|
+
elsif !reflection.options[:through]
|
73
|
+
fields_hash[name] = AttributeField::BelongsToField.new(
|
74
|
+
model, name: name, type: 'belongs_to', field_type: 'selectize'
|
75
|
+
)
|
76
76
|
end
|
77
77
|
end
|
78
78
|
end
|
@@ -84,14 +84,23 @@ module Para
|
|
84
84
|
return unless (inverse_relation = reflection.inverse_of)
|
85
85
|
return unless (counter_name = inverse_relation.options[:counter_cache])
|
86
86
|
|
87
|
-
counter_name = if String
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
87
|
+
counter_name = if counter_name.is_a?(String)
|
88
|
+
counter_name
|
89
|
+
else
|
90
|
+
"#{name}_count"
|
91
|
+
end
|
92
92
|
|
93
93
|
fields_hash.delete(counter_name)
|
94
94
|
end
|
95
|
+
|
96
|
+
def through_polymorphic_reflection?(reflection)
|
97
|
+
reflection.through_reflection? && (
|
98
|
+
(
|
99
|
+
reflection.through_reflection.options[:polymorphic] &&
|
100
|
+
!reflection.through_reflection.options[:source_type]
|
101
|
+
) || through_polymorphic_reflection?(reflection.through_reflection)
|
102
|
+
)
|
103
|
+
end
|
95
104
|
end
|
96
105
|
end
|
97
106
|
end
|
data/lib/para/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: para
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.12.
|
4
|
+
version: 0.12.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Valentin Ballestrino
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-07-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: active_decorator
|
@@ -487,7 +487,6 @@ files:
|
|
487
487
|
- app/javascripts/para/inputs/multi-select-input.js
|
488
488
|
- app/javascripts/para/inputs/nested_many.js
|
489
489
|
- app/javascripts/para/lib/fetch.js
|
490
|
-
- app/javascripts/para/lib/page-loading.js
|
491
490
|
- app/javascripts/para/plugins-includes.js.erb
|
492
491
|
- app/javascripts/para/simple_form_extension/colorpicker.js
|
493
492
|
- app/javascripts/para/simple_form_extension/datetimepicker.js
|
@@ -1,42 +0,0 @@
|
|
1
|
-
Para.PageLoading = class PageLoading {
|
2
|
-
constructor() {
|
3
|
-
this.start = this.start.bind(this);
|
4
|
-
this.stop = this.stop.bind(this);
|
5
|
-
}
|
6
|
-
|
7
|
-
start() {
|
8
|
-
return this.addLoadingMarkup();
|
9
|
-
}
|
10
|
-
|
11
|
-
stop() {
|
12
|
-
return this.removeLoadingMarkup();
|
13
|
-
}
|
14
|
-
|
15
|
-
addLoadingMarkup() {
|
16
|
-
$('<div/>', {
|
17
|
-
class: 'loading-overlay',
|
18
|
-
'data-loading-overlay': true
|
19
|
-
}).prependTo('body');
|
20
|
-
|
21
|
-
$('<div/>', {
|
22
|
-
class: 'loading-spinner',
|
23
|
-
'data-loading-spinner': true
|
24
|
-
}).prependTo('body');
|
25
|
-
}
|
26
|
-
|
27
|
-
removeLoadingMarkup() {
|
28
|
-
$('[data-loading-overlay]').remove();
|
29
|
-
return $('[data-loading-spinner]').remove();
|
30
|
-
}
|
31
|
-
|
32
|
-
};
|
33
|
-
|
34
|
-
// Global loading manager allowing to
|
35
|
-
Para.loadingManager = new Para.PageLoading();
|
36
|
-
|
37
|
-
$(document).on('turbo:before-fetch-request', Para.loadingManager.start);
|
38
|
-
|
39
|
-
$(document).on('turbo:load turbo:frame-load turbo:before-stream-render turbo:frame-missing turbo:fetch-request-error', function() {
|
40
|
-
Para.loadingManager.stop();
|
41
|
-
return $('body').on('submit', '[data-para-form]:not([data-remote])', Para.loadingManager.start);
|
42
|
-
});
|