labimotion 2.1.0.rc8 → 2.1.0.rc9

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1ded6e04ed88c0888ce184a58663ac2f91bbeb00f8e8e67f1feb70f6d53a3a39
4
- data.tar.gz: e7cc351ed12b84cc6dad32705bdb0297addb5a9400445c72cbb4fdf7417c8bb6
3
+ metadata.gz: e6d531f720a6e62743918a54244a11e0487e36e832df383cc40606a4ede20241
4
+ data.tar.gz: 8eea6d130958617f8bf7cabe2c439c3053b768c93c292c41852f13d20116ca2b
5
5
  SHA512:
6
- metadata.gz: 440d75c561f6ca9754f346bbdaf8da71efe2402a3ac569eb673ac24de94a654cbd45af1ef8d19edde2f9dfb488e9f1d692931eab9e8b3c77f1ba6a1858a93458
7
- data.tar.gz: e86ff2f885489b280616f42d21806a33047cd2257296149ac56763efcb42e0d24b1ae303fce30d108b3431f0259b3204c2e223037321b0f2ee4908038f8ab73a
6
+ metadata.gz: ed51beb0f134c8e36e1b588f7263270448902d8bf1b17be03fc44b63f0129fcc1992606a2248c957cecd446cf7c6124babdabf515e0834f684dfc9d927254c5b
7
+ data.tar.gz: 1ec3c99f675ce7c32d3a497117504441da819e26073ac6aa50720e55c3ca255497b4d79919f65f8062f0eee2ee9b8f39ff723cacbe011a729434680e25a4931d
@@ -2,12 +2,25 @@
2
2
  require 'grape'
3
3
 
4
4
  module Labimotion
5
- ## ElementHelpers
5
+ ## ConverterHelpers
6
6
  module ConverterHelpers
7
7
  extend Grape::API::Helpers
8
8
 
9
- def demo(params)
10
- ### TODO: implement demo
9
+ # Update the general_description field in the container's extended_metadata
10
+ def self.update_general_description(container, current_user, date: nil, time: nil)
11
+ return unless container.present?
12
+
13
+ desc = container.extended_metadata['general_description']
14
+
15
+ general_desc = desc if desc.present? && desc.is_a?(Hash)
16
+ general_desc = JSON.parse(container.extended_metadata['general_description']) if desc.present? && desc.is_a?(String)
17
+ general_desc = {} unless general_desc.is_a?(Hash)
18
+ general_desc['creator'] = current_user.name if current_user.present?
19
+ general_desc['date'] = date if date.present?
20
+ general_desc['time'] = time if time.present?
21
+
22
+ container.extended_metadata['general_description'] = general_desc.to_json
23
+ container.save!
11
24
  end
12
25
  end
13
26
  end
@@ -6,6 +6,7 @@ require 'json'
6
6
  require 'date'
7
7
  require 'labimotion/version'
8
8
  require 'labimotion/utils/utils'
9
+ require 'labimotion/helpers/converter_helpers'
9
10
 
10
11
  # rubocop: disable Metrics/AbcSize
11
12
  # rubocop: disable Metrics/MethodLength
@@ -228,6 +229,19 @@ module Labimotion
228
229
  def self.update_ds(dataset, dsr, current_user = nil) # rubocop: disable Metrics/PerceivedComplexity
229
230
  layers = dataset.properties[Labimotion::Prop::LAYERS] || {}
230
231
  new_prop = dataset.properties
232
+
233
+ container = dataset.element
234
+
235
+ # Extract and update general description fields
236
+ general_dsr = dsr.select { |ds| ds[:layer] == 'general' }
237
+ if general_dsr.present?
238
+ date = general_dsr.find { |ds| ds[:field] == 'date' }&.dig(:value)
239
+ time = general_dsr.find { |ds| ds[:field] == 'time' }&.dig(:value)
240
+ Labimotion::ConverterHelpers.update_general_description(container, current_user, date: date, time: time)
241
+ else
242
+ Labimotion::ConverterHelpers.update_general_description(container, current_user)
243
+ end
244
+
231
245
  dsr.each do |ds|
232
246
  layer = layers[ds[:layer]]
233
247
  next if layer.blank? || layer[Labimotion::Prop::FIELDS].blank?
@@ -4,6 +4,7 @@ require 'labimotion/libs/dataset_builder'
4
4
  require 'labimotion/version'
5
5
  require 'labimotion/utils/mapper_utils'
6
6
  require 'labimotion/utils/utils'
7
+ require 'labimotion/helpers/converter_helpers'
7
8
 
8
9
  module Labimotion
9
10
  ## NmrMapper
@@ -61,6 +62,7 @@ module Labimotion
61
62
 
62
63
  def update_ds(_cid, obj, current_user, element)
63
64
  dataset = obj[:dataset]
65
+ process_general_description(obj, current_user, element)
64
66
  dataset.properties = process_prop(obj, current_user, element)
65
67
  dataset.save!
66
68
  end
@@ -106,6 +108,17 @@ module Labimotion
106
108
  new_prop
107
109
  end
108
110
 
111
+ def process_general_description(obj, current_user, element)
112
+ container = obj[:dataset]&.element
113
+ return unless container.present?
114
+
115
+ dt = obj[:metadata]&.dig('DATE')
116
+ date = Labimotion::MapperUtils.format_timestamp(dt, 'date') if dt.present?
117
+ time = Labimotion::MapperUtils.format_timestamp(dt, 'time') if dt.present?
118
+
119
+ Labimotion::ConverterHelpers.update_general_description(container, current_user, date: date, time: time)
120
+ end
121
+
109
122
  def process_prop(obj, current_user, element)
110
123
  new_prop = obj[:dataset].properties
111
124
  new_prop
@@ -2,5 +2,5 @@
2
2
 
3
3
  ## Labimotion Version
4
4
  module Labimotion
5
- VERSION = '2.1.0.rc8'
5
+ VERSION = '2.1.0.rc9'
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: 2.1.0.rc8
4
+ version: 2.1.0.rc9
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: 2025-11-02 00:00:00.000000000 Z
12
+ date: 2025-11-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: caxlsx