labimotion 2.1.1 → 2.2.0.rc1
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/lib/labimotion/apis/generic_element_api.rb +2 -2
- data/lib/labimotion/collection/import.rb +3 -3
- data/lib/labimotion/helpers/element_helpers.rb +5 -9
- data/lib/labimotion/helpers/param_helpers.rb +0 -4
- data/lib/labimotion/libs/converter.rb +1 -2
- data/lib/labimotion/libs/data/layer/StdDataset.json +212 -0
- data/lib/labimotion/libs/dataset_builder.rb +1 -2
- data/lib/labimotion/models/concerns/datasetable.rb +2 -3
- data/lib/labimotion/models/concerns/generic_klass_revisions.rb +3 -2
- data/lib/labimotion/version.rb +1 -1
- metadata +5 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4397eed28e8f2c6f0e21e022191d842dbb7a42000a2efe72731a89ab8bf9e77b
|
|
4
|
+
data.tar.gz: 3ae429541da0f787d6d0f544307b5acfbf3e922d83c7fc7cd27e47738eb5880e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 12a5d77d600daaf1a45640ab5ff7d253a608cd683fac28a5286019a7990e85cb7c1f0c957240fab625d3dbb703196dcb918b652bcc86457c6ac88cc085990ea0
|
|
7
|
+
data.tar.gz: 28453642570e3e177c0c2684590cdb715016c4043645d9f2e097eca0a4f41e9e3ff30564df8a0b7d5800bfb36a2fd224aa40cb91a107a2bc53adddc1db133070
|
|
@@ -474,7 +474,7 @@ module Labimotion
|
|
|
474
474
|
detail_levels: ElementDetailLevelCalculator.new(user: current_user, element: element).detail_levels,
|
|
475
475
|
policy: @element_policy
|
|
476
476
|
),
|
|
477
|
-
attachments:
|
|
477
|
+
attachments: attach_thumbnail(element&.attachments)
|
|
478
478
|
}
|
|
479
479
|
rescue StandardError => e
|
|
480
480
|
Labimotion.log_exception(e, current_user)
|
|
@@ -517,7 +517,7 @@ module Labimotion
|
|
|
517
517
|
element,
|
|
518
518
|
detail_levels: ElementDetailLevelCalculator.new(user: current_user, element: element).detail_levels,
|
|
519
519
|
),
|
|
520
|
-
attachments:
|
|
520
|
+
attachments: attach_thumbnail(element&.attachments),
|
|
521
521
|
}
|
|
522
522
|
rescue StandardError => e
|
|
523
523
|
Labimotion.log_exception(e, current_user)
|
|
@@ -69,7 +69,7 @@ module Labimotion
|
|
|
69
69
|
|
|
70
70
|
dataset = Labimotion::Dataset.create!(
|
|
71
71
|
fields.slice(
|
|
72
|
-
'properties', 'properties_release'
|
|
72
|
+
'properties', 'properties_release'
|
|
73
73
|
).merge(
|
|
74
74
|
## created_by: current_user_id,
|
|
75
75
|
element: element,
|
|
@@ -112,7 +112,7 @@ module Labimotion
|
|
|
112
112
|
|
|
113
113
|
segment = Labimotion::Segment.create!(
|
|
114
114
|
fields.slice(
|
|
115
|
-
'properties', 'properties_release'
|
|
115
|
+
'properties', 'properties_release'
|
|
116
116
|
).merge(
|
|
117
117
|
created_by: current_user_id,
|
|
118
118
|
element: element,
|
|
@@ -149,7 +149,7 @@ module Labimotion
|
|
|
149
149
|
|
|
150
150
|
element = Labimotion::Element.create!(
|
|
151
151
|
fields.slice(
|
|
152
|
-
'name', 'properties', 'properties_release'
|
|
152
|
+
'name', 'properties', 'properties_release'
|
|
153
153
|
).merge(
|
|
154
154
|
created_by: current_user_id,
|
|
155
155
|
element_klass: element_klass,
|
|
@@ -82,18 +82,16 @@ module Labimotion
|
|
|
82
82
|
klass_uuid: klass[:uuid],
|
|
83
83
|
properties: properties,
|
|
84
84
|
properties_release: params[:properties_release],
|
|
85
|
-
|
|
86
|
-
created_by: current_user.id
|
|
85
|
+
created_by: current_user.id,
|
|
87
86
|
}
|
|
88
87
|
element = Labimotion::Element.new(attributes)
|
|
89
88
|
|
|
90
|
-
|
|
91
|
-
element.collections << all_coll
|
|
92
|
-
|
|
93
|
-
if params[:collection_id] && params[:collection_id] != all_coll.id
|
|
89
|
+
if params[:collection_id]
|
|
94
90
|
collection = current_user.collections.find(params[:collection_id])
|
|
95
91
|
element.collections << collection
|
|
96
92
|
end
|
|
93
|
+
all_coll = Collection.get_all_collection_for_user(current_user.id)
|
|
94
|
+
element.collections << all_coll
|
|
97
95
|
element.save!
|
|
98
96
|
element.properties = update_sample_association(params[:properties], current_user, element)
|
|
99
97
|
# element.properties = update_vocabularies(_properties, current_user, element)
|
|
@@ -118,8 +116,7 @@ module Labimotion
|
|
|
118
116
|
params.delete(:user_labels)
|
|
119
117
|
attributes = declared(params.except(:segments), include_missing: false)
|
|
120
118
|
properties['pkg'] = Labimotion::Utils.pkg(properties['pkg'])
|
|
121
|
-
|
|
122
|
-
if element.klass_uuid != properties['klass_uuid'] || element.properties != properties || element.name != params[:name] || element.metadata != metadata
|
|
119
|
+
if element.klass_uuid != properties['klass_uuid'] || element.properties != properties || element.name != params[:name]
|
|
123
120
|
properties['klass'] = 'Element'
|
|
124
121
|
uuid = SecureRandom.uuid
|
|
125
122
|
properties['uuid'] = uuid
|
|
@@ -131,7 +128,6 @@ module Labimotion
|
|
|
131
128
|
attributes['properties']['uuid'] = uuid
|
|
132
129
|
attributes['uuid'] = uuid
|
|
133
130
|
attributes['klass_uuid'] = properties['klass_uuid']
|
|
134
|
-
attributes['metadata'] = metadata
|
|
135
131
|
attributes['updated_at'] = Time.current
|
|
136
132
|
element.update_columns(attributes)
|
|
137
133
|
end
|
|
@@ -13,7 +13,6 @@ module Labimotion
|
|
|
13
13
|
optional :desc, type: String, desc: 'Klass desc'
|
|
14
14
|
optional :klass_prefix, type: String, desc: 'Klass klass_prefix'
|
|
15
15
|
optional :icon_name, type: String, desc: 'Klass icon_name'
|
|
16
|
-
optional :metadata, type: Hash, desc: 'Klass metadata'
|
|
17
16
|
requires :properties_template, type: Hash, desc: 'Klass template'
|
|
18
17
|
optional :properties_release, type: Hash, desc: 'Klass release'
|
|
19
18
|
optional :released_at, type: DateTime, desc: 'Klass released_at'
|
|
@@ -30,7 +29,6 @@ module Labimotion
|
|
|
30
29
|
requires :klass_prefix, type: String, desc: 'Element Klass Short Label Prefix'
|
|
31
30
|
optional :icon_name, type: String, desc: 'Element Klass Icon Name'
|
|
32
31
|
optional :desc, type: String, desc: 'Element Klass Desc'
|
|
33
|
-
optional :metadata, type: Hash, desc: 'Element Klass metadata'
|
|
34
32
|
optional :properties_template, type: Hash, desc: 'Element Klass properties template'
|
|
35
33
|
end
|
|
36
34
|
|
|
@@ -71,7 +69,6 @@ module Labimotion
|
|
|
71
69
|
params :upload_segment_klass_params do
|
|
72
70
|
requires :label, type: String, desc: 'Klass label'
|
|
73
71
|
optional :desc, type: String, desc: 'Klass desc'
|
|
74
|
-
optional :metadata, type: Hash, desc: 'Klass metadata'
|
|
75
72
|
requires :properties_template, type: Hash, desc: 'Klass template'
|
|
76
73
|
optional :properties_release, type: Hash, desc: 'Klass release'
|
|
77
74
|
optional :released_at, type: DateTime, desc: 'Klass released_at'
|
|
@@ -98,7 +95,6 @@ module Labimotion
|
|
|
98
95
|
requires :element_klass, type: Integer, desc: 'Element Klass Id'
|
|
99
96
|
optional :desc, type: String, desc: 'Segment Klass Desc'
|
|
100
97
|
optional :place, type: String, desc: 'Segment Klass Place', default: '100'
|
|
101
|
-
optional :metadata, type: Hash, desc: 'Klass metadata'
|
|
102
98
|
optional :properties_template, type: Hash, desc: 'Element Klass properties template'
|
|
103
99
|
end
|
|
104
100
|
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
{
|
|
2
|
+
"layers": {
|
|
3
|
+
"std_general": {
|
|
4
|
+
"wf": false,
|
|
5
|
+
"key": "std_general",
|
|
6
|
+
"std": true,
|
|
7
|
+
"cols": 4,
|
|
8
|
+
"color": "default",
|
|
9
|
+
"label": "Standard General description",
|
|
10
|
+
"style": "panel_generic_heading",
|
|
11
|
+
"fields": [
|
|
12
|
+
{
|
|
13
|
+
"type": "text",
|
|
14
|
+
"field": "title",
|
|
15
|
+
"label": "title",
|
|
16
|
+
"default": "",
|
|
17
|
+
"ontology": {
|
|
18
|
+
"id": "afo:class:http://purl.allotrope.org/ontologies/result#AFR_0001080",
|
|
19
|
+
"iri": "http://purl.allotrope.org/ontologies/result#AFR_0001080",
|
|
20
|
+
"type": "class",
|
|
21
|
+
"label": "title",
|
|
22
|
+
"obo_id": "AFR:0001080",
|
|
23
|
+
"short_form": "AFR_0001080",
|
|
24
|
+
"description": [
|
|
25
|
+
"A title is a prefix or suffix added to a personal name. A title can be a title of honor, that is a title bestowed as an award, a honorary title (academic), that is a recognition of contributions by a non-employee or employee, a hereditary title, that is a title that remains in a family or a job title, that is a designation of a person's position in an organization. [Wikipedia]"
|
|
26
|
+
],
|
|
27
|
+
"ontology_name": "afo",
|
|
28
|
+
"ontology_prefix": "AFO"
|
|
29
|
+
},
|
|
30
|
+
"position": 1,
|
|
31
|
+
"required": false,
|
|
32
|
+
"sub_fields": [],
|
|
33
|
+
"text_sub_fields": []
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"type": "text",
|
|
37
|
+
"field": "data_type",
|
|
38
|
+
"label": "Type of the data ",
|
|
39
|
+
"default": "",
|
|
40
|
+
"readonly": true,
|
|
41
|
+
"position": 2,
|
|
42
|
+
"required": false,
|
|
43
|
+
"sub_fields": [],
|
|
44
|
+
"description": "Ontologies!!!! type of entity",
|
|
45
|
+
"placeholder": "e.g. sample or reaction analysis",
|
|
46
|
+
"text_sub_fields": []
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"type": "text",
|
|
50
|
+
"field": "date",
|
|
51
|
+
"label": "date",
|
|
52
|
+
"default": "",
|
|
53
|
+
"position": 3,
|
|
54
|
+
"required": false,
|
|
55
|
+
"sub_fields": [],
|
|
56
|
+
"text_sub_fields": []
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"type": "text",
|
|
60
|
+
"field": "time",
|
|
61
|
+
"label": "starting time",
|
|
62
|
+
"default": "",
|
|
63
|
+
"position": 4,
|
|
64
|
+
"required": false,
|
|
65
|
+
"sub_fields": [],
|
|
66
|
+
"text_sub_fields": []
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"type": "text",
|
|
70
|
+
"field": "contributor",
|
|
71
|
+
"label": "contributor",
|
|
72
|
+
"default": "",
|
|
73
|
+
"position": 5,
|
|
74
|
+
"required": false,
|
|
75
|
+
"sub_fields": [],
|
|
76
|
+
"description": "",
|
|
77
|
+
"text_sub_fields": []
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"type": "text",
|
|
81
|
+
"field": "creator",
|
|
82
|
+
"label": "creator",
|
|
83
|
+
"default": "",
|
|
84
|
+
"position": 6,
|
|
85
|
+
"required": false,
|
|
86
|
+
"sub_fields": [],
|
|
87
|
+
"description": "the person who upload the analysis",
|
|
88
|
+
"text_sub_fields": []
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"type": "text",
|
|
92
|
+
"field": "operator",
|
|
93
|
+
"label": "operator",
|
|
94
|
+
"default": "",
|
|
95
|
+
"position": 7,
|
|
96
|
+
"required": false,
|
|
97
|
+
"sub_fields": [],
|
|
98
|
+
"text_sub_fields": []
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"type": "text",
|
|
102
|
+
"field": "comments",
|
|
103
|
+
"label": "comments",
|
|
104
|
+
"default": "",
|
|
105
|
+
"position": 8,
|
|
106
|
+
"required": false,
|
|
107
|
+
"sub_fields": [],
|
|
108
|
+
"text_sub_fields": []
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"opid": 8,
|
|
112
|
+
"type": "text",
|
|
113
|
+
"field": "Producer",
|
|
114
|
+
"label": "Producer of the sample",
|
|
115
|
+
"is_voc": true,
|
|
116
|
+
"source": "Segment",
|
|
117
|
+
"default": "",
|
|
118
|
+
"field_id": "Producer",
|
|
119
|
+
"layer_id": "bsi",
|
|
120
|
+
"ontology": {
|
|
121
|
+
"id": "schema:property:https://schema.org/producer",
|
|
122
|
+
"iri": "https://schema.org/producer",
|
|
123
|
+
"type": "property",
|
|
124
|
+
"label": "producer",
|
|
125
|
+
"obo_id": "schema:producer",
|
|
126
|
+
"short_form": "schema_producer",
|
|
127
|
+
"description": [
|
|
128
|
+
"The person or organization who produced the work (e.g. music album, movie, TV/radio series etc.)."
|
|
129
|
+
],
|
|
130
|
+
"ontology_name": "schema",
|
|
131
|
+
"ontology_prefix": "schema"
|
|
132
|
+
},
|
|
133
|
+
"position": 9,
|
|
134
|
+
"source_id": "dce363d5-56d0-4324-9914-0476be999016",
|
|
135
|
+
"identifier": "357b7cd3-ca47-49e0-be47-154d907c2cf5",
|
|
136
|
+
"sub_fields": [],
|
|
137
|
+
"text_sub_fields": []
|
|
138
|
+
}
|
|
139
|
+
],
|
|
140
|
+
"position": -2,
|
|
141
|
+
"condition": "",
|
|
142
|
+
"wf_position": 0
|
|
143
|
+
},
|
|
144
|
+
"std_sample_details": {
|
|
145
|
+
"wf": false,
|
|
146
|
+
"key": "std_sample_details",
|
|
147
|
+
"cols": 3,
|
|
148
|
+
"std": true,
|
|
149
|
+
"color": "none",
|
|
150
|
+
"label": "Standard Sample details",
|
|
151
|
+
"style": "panel_generic_heading",
|
|
152
|
+
"fields": [
|
|
153
|
+
{
|
|
154
|
+
"type": "text",
|
|
155
|
+
"field": "label",
|
|
156
|
+
"label": "label",
|
|
157
|
+
"default": "",
|
|
158
|
+
"position": 1,
|
|
159
|
+
"required": false,
|
|
160
|
+
"sub_fields": [],
|
|
161
|
+
"text_sub_fields": []
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"type": "text",
|
|
165
|
+
"field": "id",
|
|
166
|
+
"label": "id",
|
|
167
|
+
"default": "",
|
|
168
|
+
"position": 2,
|
|
169
|
+
"required": false,
|
|
170
|
+
"sub_fields": [],
|
|
171
|
+
"text_sub_fields": []
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"type": "text",
|
|
175
|
+
"field": "amount",
|
|
176
|
+
"label": "amount",
|
|
177
|
+
"default": "",
|
|
178
|
+
"position": 3,
|
|
179
|
+
"required": false,
|
|
180
|
+
"sub_fields": [],
|
|
181
|
+
"text_sub_fields": []
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
"type": "text",
|
|
185
|
+
"field": "volume",
|
|
186
|
+
"label": "volume",
|
|
187
|
+
"default": "",
|
|
188
|
+
"position": 4,
|
|
189
|
+
"required": false,
|
|
190
|
+
"sub_fields": [],
|
|
191
|
+
"text_sub_fields": []
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
"type": "text",
|
|
195
|
+
"field": "size",
|
|
196
|
+
"label": "size",
|
|
197
|
+
"default": "",
|
|
198
|
+
"position": 5,
|
|
199
|
+
"required": false,
|
|
200
|
+
"sub_fields": [],
|
|
201
|
+
"text_sub_fields": []
|
|
202
|
+
}
|
|
203
|
+
],
|
|
204
|
+
"position": -1,
|
|
205
|
+
"timeRecord": "",
|
|
206
|
+
"wf_position": 0
|
|
207
|
+
}
|
|
208
|
+
},
|
|
209
|
+
"version": "0.1",
|
|
210
|
+
"select_options": {
|
|
211
|
+
}
|
|
212
|
+
}
|
|
@@ -29,7 +29,6 @@ module Labimotion
|
|
|
29
29
|
properties: ods.properties,
|
|
30
30
|
properties_release: ods.properties_release,
|
|
31
31
|
klass_uuid: ods.klass_uuid,
|
|
32
|
-
metadata: ods.metadata || {}
|
|
33
32
|
)
|
|
34
33
|
end
|
|
35
34
|
|
|
@@ -50,8 +49,8 @@ module Labimotion
|
|
|
50
49
|
props = Labimotion::VocabularyHandler.update_vocabularies(props, dataset_args[:current_user], dataset_args[:element])
|
|
51
50
|
|
|
52
51
|
ds = Labimotion::Dataset.find_by(element_type: self.class.name, element_id: id)
|
|
53
|
-
if ds.present? && (ds.klass_uuid != klass.uuid || ds.properties != props
|
|
54
|
-
ds.update!(properties_release: klass.properties_release, uuid: uuid, dataset_klass_id: dataset_klass_id, properties: props, klass_uuid: klass.uuid
|
|
52
|
+
if ds.present? && (ds.klass_uuid != klass.uuid || ds.properties != props)
|
|
53
|
+
ds.update!(properties_release: klass.properties_release, uuid: uuid, dataset_klass_id: dataset_klass_id, properties: props, klass_uuid: klass.uuid)
|
|
55
54
|
end
|
|
56
55
|
return if ds.present?
|
|
57
56
|
|
|
@@ -9,6 +9,7 @@ module Labimotion
|
|
|
9
9
|
before_save :check_identifier
|
|
10
10
|
end
|
|
11
11
|
|
|
12
|
+
|
|
12
13
|
def check_identifier
|
|
13
14
|
self.identifier = identifier || SecureRandom.uuid if self.has_attribute?(:identifier)
|
|
14
15
|
end
|
|
@@ -33,7 +34,7 @@ module Labimotion
|
|
|
33
34
|
properties_release: properties_release,
|
|
34
35
|
released_at: DateTime.now,
|
|
35
36
|
updated_by: current_user&.id,
|
|
36
|
-
released_by: current_user&.id
|
|
37
|
+
released_by: current_user&.id,
|
|
37
38
|
}
|
|
38
39
|
|
|
39
40
|
self.update!(klass_attributes)
|
|
@@ -45,7 +46,7 @@ module Labimotion
|
|
|
45
46
|
created_by: updated_by,
|
|
46
47
|
properties_release: properties_release,
|
|
47
48
|
released_at: released_at,
|
|
48
|
-
metadata: metadata
|
|
49
|
+
metadata: metadata
|
|
49
50
|
}
|
|
50
51
|
attributes["#{self.class.name.underscore.split('/').last}_id"] = id
|
|
51
52
|
"#{self.class.name}esRevision".constantize.create(attributes)
|
data/lib/labimotion/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: labimotion
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.2.0.rc1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Chia-Lin Lin
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date:
|
|
12
|
+
date: 2025-12-25 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: caxlsx
|
|
@@ -98,6 +98,7 @@ files:
|
|
|
98
98
|
- lib/labimotion/helpers/vocabulary_helpers.rb
|
|
99
99
|
- lib/labimotion/libs/attachment_handler.rb
|
|
100
100
|
- lib/labimotion/libs/converter.rb
|
|
101
|
+
- lib/labimotion/libs/data/layer/StdDataset.json
|
|
101
102
|
- lib/labimotion/libs/data/mapper/Chemwiki.json
|
|
102
103
|
- lib/labimotion/libs/data/mapper/Source.json
|
|
103
104
|
- lib/labimotion/libs/data/vocab/Standard.json
|
|
@@ -182,9 +183,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
182
183
|
version: '3.4'
|
|
183
184
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
184
185
|
requirements:
|
|
185
|
-
- - "
|
|
186
|
+
- - ">"
|
|
186
187
|
- !ruby/object:Gem::Version
|
|
187
|
-
version:
|
|
188
|
+
version: 1.3.1
|
|
188
189
|
requirements: []
|
|
189
190
|
rubygems_version: 3.1.6
|
|
190
191
|
signing_key:
|