labimotion 1.5.0.rc9 → 2.0.0.rc2

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: 34535582f9432712614a74a72a54c4793037627d1b02c1a895233e7bb5fb2b85
4
- data.tar.gz: 7e3e49f67bbb0bdde267f20a9bb214b53906b5154cad98e3985fb2901e9b7489
3
+ metadata.gz: 608624a39eb174198e63db9cde2e4440425aa6bad1c604801c817ea13caea859
4
+ data.tar.gz: c691e2f9e670d301acc2494745e02836bf8ffcb1479c86c747f02ff9fadc6617
5
5
  SHA512:
6
- metadata.gz: 31ac83a6073918c38bfd36dfa8222706282d92ec90c9f4006740c72ef43aa25f5eeead581f72976927ca0ba30028d7c79bbdbb3369137b3cfaaa8980116b526c
7
- data.tar.gz: 4fc728cf883e6d9a3f4fcf54193ab823993e424c2bf6d53fa4d924cfb3efec4b5dfc65ab7a122e19b9ac16e7057f392e93bed88e0f302046f77533d498f89e7c
6
+ metadata.gz: e3c03f09293537ad8993158d1e1871fff2bf6a84ff88d90ca5d55af663fa862df4907a72639a2cdfb4bb7a2371911bf37b146cc97fbf0030945d3c23b5777de9
7
+ data.tar.gz: c746e80182b677d03c5bf06608285441a7b7022fdfcf521aec2aeaab61470d7a774ce059919d35e4b671446890b4055e3707da8b9a7f2fa52b4446fe52fbf655
@@ -30,7 +30,7 @@ module Labimotion
30
30
  source_id: params[:source_id],
31
31
  layer_id: params[:layer_id],
32
32
  field_id: params[:name],
33
- identifier: params[:source_id],
33
+ identifier: SecureRandom.uuid,
34
34
  created_by: current_user.id,
35
35
  properties: declared(params, include_missing: false),
36
36
  }
@@ -21,7 +21,7 @@ module Labimotion
21
21
  process_sample_and_molecule_fields(key, layer)
22
22
  process_reaction_fields(key, layer)
23
23
  process_table_fields(key, layer)
24
- process_voc_fields(key, layer)
24
+ # process_voc_fields(key, layer)
25
25
  end
26
26
 
27
27
  def process_sample_and_molecule_fields(key, layer)
@@ -52,7 +52,7 @@ module Labimotion
52
52
  fields = layer[Labimotion::Prop::FIELDS]
53
53
  fields = fields.select { |f| types.include?(f['type']) } if types
54
54
  fields = fields.select { |f| f['is_voc'] == true } if is_voc
55
- fields.map { |f| [f, fields.index(f)] }
55
+ fields.map { |f| [f, layer[Labimotion::Prop::FIELDS].index(f)] }
56
56
  end
57
57
 
58
58
  def update_sample_or_molecule_field(key, field, idx)
@@ -100,7 +100,6 @@ module Labimotion
100
100
 
101
101
  def update_voc_field(key, field, idx)
102
102
  root_element = get_root_element
103
-
104
103
  case field['source']
105
104
  when Labimotion::Prop::ELEMENT
106
105
  update_element_voc_field(key, field, idx, root_element)
@@ -21,9 +21,10 @@ module Labimotion
21
21
 
22
22
  case voc['source']
23
23
  when Labimotion::Prop::ELEMENT
24
- if voc['identifier'] == 'element.name'
24
+ voc['source_name'] = ElementKlass.find_by(identifier: voc['source_id'])&.label
25
+ # if voc['identifier'] == 'element.name'
25
26
  # voc['source_name'] = ElementKlass.find_by(identifier: voc['source_id'])&.name
26
- end
27
+ # end
27
28
  when Labimotion::Prop::SEGMENT
28
29
  voc['source_name'] = SegmentKlass.find_by(identifier: voc['source_id'])&.label
29
30
  when Labimotion::Prop::DATASET
@@ -113,7 +113,6 @@ module Labimotion
113
113
  params.delete(:properties)
114
114
  update_element_labels(element, params[:user_labels], current_user.id)
115
115
  params.delete(:user_labels)
116
-
117
116
  attributes = declared(params.except(:segments), include_missing: false)
118
117
  properties['pkg'] = Labimotion::Utils.pkg(properties['pkg'])
119
118
  if element.klass_uuid != properties['klass_uuid'] || element.properties != properties || element.name != params[:name]
@@ -124,15 +123,16 @@ module Labimotion
124
123
  properties.delete('flow') unless properties['flow'].nil?
125
124
  properties.delete('flowObject') unless properties['flowObject'].nil?
126
125
  properties.delete('select_options') unless properties['select_options'].nil?
127
-
128
126
  attributes['properties'] = properties
129
127
  attributes['properties']['uuid'] = uuid
130
128
  attributes['uuid'] = uuid
131
129
  attributes['klass_uuid'] = properties['klass_uuid']
132
-
133
130
  element.update(attributes)
134
131
  end
135
132
  element.save_segments(segments: params[:segments], current_user_id: current_user.id)
133
+ element.reload
134
+ new_properties = update_vocabularies(element.properties, current_user, element)
135
+ element.update_column(:properties, new_properties)
136
136
  element
137
137
  rescue StandardError => e
138
138
  Labimotion.log_exception(e, current_user)
@@ -72,7 +72,7 @@ module Labimotion
72
72
  # el_attributes['properties_template'] = response['element_klass']['properties_release']
73
73
  # Labimotion::ElementKlass.create!(el_attributes)
74
74
  attributes['element_klass_id'] = element_klass.id
75
- segment_klass = Labimotion::SegmentKlass.find_by(identifier: attributes['identifier'])
75
+ segment_klass = Labimotion::SegmentKlass.find_by(identifier: attributes['identifier']) if attributes['identifier'].present?
76
76
  if segment_klass.present?
77
77
  if segment_klass['uuid'] == attributes['uuid'] && segment_klass['version'] == attributes['version']
78
78
  return { status: 'success', message: "This segment: #{attributes['label']} has the latest version!" }
@@ -1,6 +1,6 @@
1
1
  [
2
2
  {
3
- "identifier": "atmosphere",
3
+ "identifier": "std-atmosphere",
4
4
  "name": "atmosphere",
5
5
  "label": "Atmosphere",
6
6
  "field_type": "text",
@@ -20,7 +20,7 @@
20
20
  "source": "Standard"
21
21
  },
22
22
  {
23
- "identifier": "calibration",
23
+ "identifier": "std-calibration",
24
24
  "name": "calibration",
25
25
  "label": "Calibration",
26
26
  "field_type": "text",
@@ -40,7 +40,7 @@
40
40
  "source": "Standard"
41
41
  },
42
42
  {
43
- "identifier": "coating",
43
+ "identifier": "std-coating",
44
44
  "name": "coating",
45
45
  "label": "Coating",
46
46
  "field_type": "text",
@@ -60,7 +60,7 @@
60
60
  "source": "Standard"
61
61
  },
62
62
  {
63
- "identifier": "coating_material",
63
+ "identifier": "std-coating_material",
64
64
  "name": "coating_material",
65
65
  "label": "Coating Material",
66
66
  "field_type": "text",
@@ -80,7 +80,7 @@
80
80
  "source": "Standard"
81
81
  },
82
82
  {
83
- "identifier": "wavelength",
83
+ "identifier": "std-wavelength",
84
84
  "name": "wavelength",
85
85
  "label": "Wavelength",
86
86
  "field_type": "text",
@@ -1,8 +1,8 @@
1
1
  [
2
2
  {
3
3
  "id": 1,
4
- "identifier": "dateTime.create",
5
- "name": "Create Time",
4
+ "identifier": "dateTime-create",
5
+ "name": "create_time",
6
6
  "label": "Create Time",
7
7
  "field_type": "datetime",
8
8
  "opid": 9,
@@ -27,8 +27,8 @@
27
27
  },
28
28
  {
29
29
  "id": 2,
30
- "identifier": "dateTime.update",
31
- "name": "Update Time",
30
+ "identifier": "dateTime-update",
31
+ "name": "update_time",
32
32
  "label": "Update Time",
33
33
  "field_type": "datetime",
34
34
  "opid": 9,
@@ -53,9 +53,9 @@
53
53
  },
54
54
  {
55
55
  "id": 4,
56
- "identifier": "user.name",
56
+ "identifier": "user-name",
57
57
  "name": "creator",
58
- "label": "creator",
58
+ "label": "Creator",
59
59
  "field_type": "text",
60
60
  "opid": 9,
61
61
  "term_id": "NCIT_C42628",
@@ -79,8 +79,8 @@
79
79
  },
80
80
  {
81
81
  "id": 2,
82
- "identifier": "element.id",
83
- "name": "Element Id",
82
+ "identifier": "element-id",
83
+ "name": "element_id",
84
84
  "label": "Element Id",
85
85
  "field_type": "text",
86
86
  "opid": 9,
@@ -92,8 +92,8 @@
92
92
  },
93
93
  {
94
94
  "id": 5,
95
- "identifier": "element.name",
96
- "name": "Element Name",
95
+ "identifier": "element-name",
96
+ "name": "element_name",
97
97
  "label": "Element Name",
98
98
  "field_type": "text",
99
99
  "opid": 8,
@@ -105,8 +105,8 @@
105
105
  },
106
106
  {
107
107
  "id": 3,
108
- "identifier": "element.short_label",
109
- "name": "Element Short Label",
108
+ "identifier": "element-short_label",
109
+ "name": "element_short_label",
110
110
  "label": "Element Short Label",
111
111
  "field_type": "text",
112
112
  "opid": 9,
@@ -118,8 +118,8 @@
118
118
  },
119
119
  {
120
120
  "id": 3,
121
- "identifier": "element.class",
122
- "name": "Element Class",
121
+ "identifier": "element-class",
122
+ "name": "element_class",
123
123
  "label": "Element Class",
124
124
  "field_type": "text",
125
125
  "opid": 9,
@@ -78,6 +78,8 @@ module Labimotion
78
78
  field_samples = layer[Labimotion::Prop::FIELDS].select { |ss| ss['type'] == Labimotion::FieldType::DRAG_SAMPLE }
79
79
  field_samples.each do |field|
80
80
  idx = properties[Labimotion::Prop::LAYERS][key][Labimotion::Prop::FIELDS].index(field)
81
+ return if field.is_a?(String) || properties.is_a?(String)
82
+
81
83
  sid = field.dig('value', 'el_id')
82
84
  next if sid.blank?
83
85
 
@@ -100,6 +102,8 @@ module Labimotion
100
102
  field_elements = layer[Labimotion::Prop::FIELDS].select { |ss| ss['type'] == Labimotion::FieldType::DRAG_ELEMENT }
101
103
  field_elements.each do |field|
102
104
  idx = properties[Labimotion::Prop::LAYERS][key][Labimotion::Prop::FIELDS].index(field)
105
+ next if field['value'].is_a?(String)
106
+
103
107
  sid = field.dig('value', 'el_id')
104
108
  next if element.nil? || sid.blank? || sid == element.id
105
109
 
@@ -24,7 +24,7 @@ module Labimotion
24
24
  private
25
25
 
26
26
  def update_layer_vocabularies(layer, key, properties, current_user, element)
27
- field_vocabularies = layer[Labimotion::Prop::FIELDS].select { |field| field['is_voc'] && field['opid'] == 9 }
27
+ field_vocabularies = layer[Labimotion::Prop::FIELDS].select { |field| field['is_voc'] }
28
28
  field_vocabularies.each do |field|
29
29
  idx = layer[Labimotion::Prop::FIELDS].index(field)
30
30
  val = get_vocabulary_value(field, current_user, element)
@@ -51,29 +51,34 @@ module Labimotion
51
51
  def get_system_value(field)
52
52
  current_time = Time.now.strftime('%d/%m/%Y %H:%M')
53
53
  case field['identifier']
54
- when 'dateTime.update'
54
+ when 'dateTime-update'
55
55
  current_time
56
- when 'dateTime.create'
56
+ when 'dateTime-create'
57
57
  current_time if field['value'].blank?
58
58
  end
59
59
  end
60
60
 
61
61
  def get_user_value(field, current_user)
62
- return current_user.name if field['identifier'] == 'user.name' && current_user.present?
62
+ current_user.name if field['identifier'] == 'user-name' && current_user.present?
63
63
  end
64
64
 
65
65
  def get_element_value(field, element)
66
66
  case field['identifier']
67
- when 'element.id'
67
+ when 'element-id'
68
68
  element.id.to_s
69
- when 'element.short_label'
69
+ when 'element-short_label'
70
70
  element.short_label if element.has_attribute?(:short_label)
71
- when 'element.class'
72
- if element.class.name === 'Labimotion::Element'
73
- element.element_klass.label
74
- else
75
- element.class.name
76
- end
71
+ when 'element-name'
72
+ element.name if element.has_attribute?(:name)
73
+ when 'element-class'
74
+ element.class.name === 'Labimotion::Element' ? element.element_klass.label : element.class.name
75
+ else
76
+ ek = element.element_klass
77
+ return if ek.nil? || ek.identifier != field['source_id']
78
+
79
+ el_prop = element.properties
80
+ fields = el_prop[Labimotion::Prop::LAYERS][field['layer_id']][Labimotion::Prop::FIELDS]
81
+ fields.find { |ss| ss['field'] == field['field_id'] }&.dig('value')
77
82
  end
78
83
  end
79
84
 
@@ -88,6 +93,7 @@ module Labimotion
88
93
 
89
94
  def update_field_value(properties, key, idx, val)
90
95
  properties[Labimotion::Prop::LAYERS][key][Labimotion::Prop::FIELDS][idx]['value'] = val
96
+ properties
91
97
  end
92
98
 
93
99
  def load_from_files
@@ -3,7 +3,7 @@
3
3
  module Labimotion
4
4
  class StdLayer < ApplicationRecord
5
5
  acts_as_paranoid
6
- self.table_name = :l_s_lyrs
7
- has_many :l_s_lyrs_tracks, primary_key: 'identifier', foreign_key: 'identifier', class_name: 'Labimotion::StdLayersRevision'
6
+ self.table_name = :layers
7
+ has_many :layer_tracks, primary_key: 'identifier', foreign_key: 'identifier', class_name: 'Labimotion::StdLayersRevision'
8
8
  end
9
9
  end
@@ -3,7 +3,7 @@
3
3
  module Labimotion
4
4
  class StdLayersRevision < ApplicationRecord
5
5
  acts_as_paranoid
6
- self.table_name = :l_s_lyrs_tracks
7
- belongs_to :l_s_lyrs, primary_key: 'identifier', foreign_key: 'identifier', class_name: 'Labimotion::StdLayer'
6
+ self.table_name = :layer_tracks
7
+ belongs_to :layers, primary_key: 'identifier', foreign_key: 'identifier', class_name: 'Labimotion::StdLayer'
8
8
  end
9
9
  end
@@ -2,5 +2,5 @@
2
2
 
3
3
  ## Labimotion Version
4
4
  module Labimotion
5
- VERSION = '1.5.0.rc9'
5
+ VERSION = '2.0.0.rc2'
6
6
  end
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: 1.5.0.rc9
4
+ version: 2.0.0.rc2
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: 2024-11-22 00:00:00.000000000 Z
12
+ date: 2024-12-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails