labimotion 1.3.0.rc4 → 1.3.0.rc5

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: 99c322d38e4cd89d9983147d40d2ceb98aee8342fe9d036f6757034a52fc8b81
4
- data.tar.gz: ccf53a3066ff47347a29f45594fbac4436fb6161078c56ef5461a672fa99e0db
3
+ metadata.gz: 1544df427f4bbeeac189991d5dba50f8759e4ccc869b864edcee7479ba455bac
4
+ data.tar.gz: 5113e6ceffe6908efb4767cdffc3721131903d07668722e22e6503197bafc181
5
5
  SHA512:
6
- metadata.gz: ce7a434025855de8eafc83450b4bb8808d77e237f306bc5c0f986bdbfb7cc72f46199d615eca43085353af365ea4315ca89f44bedc2ff487dc24d1c69e9a781d
7
- data.tar.gz: fff821b8cf75223a50feb3d630eb229bb709de42c8644e1175cbe5c0cfad7a560e6ac9ca2548bfdecb1f2b6372c1e6ba9739ffbd712f82d017793b61e8b0e85b
6
+ metadata.gz: c1111378004a5bea4f3ac3a1e2056eb3003db3f21dc8887813d97d4a73ffa8df0473b72bd2c3c6450c50ce9b1a30d736303b34c156bb50124ca58ee09e43b151
7
+ data.tar.gz: 8ced73f30bea84693d46de94398e621badda9419d77432da3f81eb6d0aef0fc64c06e41cb80d18859936eeb773fdb77a5a6bc623aff0d6a0effd6132fa603042
@@ -13,6 +13,7 @@ module Labimotion
13
13
  helpers Labimotion::SampleAssociationHelpers
14
14
  helpers Labimotion::GenericHelpers
15
15
  helpers Labimotion::ElementHelpers
16
+ helpers Labimotion::ParamHelpers
16
17
 
17
18
  resource :generic_elements do
18
19
  namespace :klass do
@@ -59,7 +60,6 @@ module Labimotion
59
60
  when 'Dataset'
60
61
  element = Labimotion::Dataset.find(params[:id])
61
62
  end
62
- ## byebug
63
63
  export = Labimotion::ExportElement.new current_user, element, params[:export_format]
64
64
  env['api.format'] = :binary
65
65
  content_type 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
@@ -78,12 +78,7 @@ module Labimotion
78
78
  namespace :create_element_klass do
79
79
  desc 'create Generic Element Klass'
80
80
  params do
81
- requires :name, type: String, desc: 'Element Klass Name'
82
- requires :label, type: String, desc: 'Element Klass Label'
83
- requires :klass_prefix, type: String, desc: 'Element Klass Short Label Prefix'
84
- optional :icon_name, type: String, desc: 'Element Klass Icon Name'
85
- optional :desc, type: String, desc: 'Element Klass Desc'
86
- optional :properties_template, type: Hash, desc: 'Element Klass properties template'
81
+ use :create_element_klass_params
87
82
  end
88
83
  post do
89
84
  authenticate_admin!('elements')
@@ -97,12 +92,7 @@ module Labimotion
97
92
  namespace :update_element_klass do
98
93
  desc 'update Generic Element Klass'
99
94
  params do
100
- requires :id, type: Integer, desc: 'Element Klass ID'
101
- optional :label, type: String, desc: 'Element Klass Label'
102
- optional :klass_prefix, type: String, desc: 'Element Klass Short Label Prefix'
103
- optional :icon_name, type: String, desc: 'Element Klass Icon Name'
104
- optional :desc, type: String, desc: 'Element Klass Desc'
105
- optional :place, type: String, desc: 'Element Klass Place'
95
+ use :update_element_klass_params
106
96
  end
107
97
  post do
108
98
  authenticate_admin!('elements')
@@ -306,6 +296,39 @@ module Labimotion
306
296
  end
307
297
  end
308
298
 
299
+ namespace :upload_klass do
300
+ desc 'upload Generic Klass'
301
+ params do
302
+ use :upload_element_klass_params
303
+ end
304
+ post do
305
+ declared_params = declared(params, include_missing: false)
306
+ attributes = declared_params.merge(
307
+ created_by: current_user.id,
308
+ released_by: current_user.id,
309
+ updated_by: current_user.id,
310
+ is_active: false
311
+ )
312
+ validate_klass(attributes)
313
+ rescue StandardError => e
314
+ Labimotion.log_exception(e, current_user)
315
+ raise e
316
+ end
317
+ end
318
+
319
+ namespace :split do
320
+ desc 'split elements'
321
+ params do
322
+ requires :ui_state, type: Hash, desc: 'Selected elements from the UI'
323
+ end
324
+ post do
325
+ split_elements(params[:ui_state], current_user)
326
+ rescue StandardError => e
327
+ Labimotion.log_exception(e, current_user)
328
+ { error: e.message }
329
+ end
330
+ end
331
+
309
332
  desc 'Return serialized elements of current user'
310
333
  params do
311
334
  optional :collection_id, type: Integer, desc: 'Collection id'
@@ -319,7 +342,6 @@ module Labimotion
319
342
  paginate per_page: 7, offset: 0, max_per_page: 100
320
343
  get do
321
344
  scope = list_serialized_elements(params, current_user)
322
-
323
345
  reset_pagination_page(scope)
324
346
  generic_elements = paginate(scope).map do |element|
325
347
  Labimotion::ElementEntity.represent(
@@ -363,13 +385,7 @@ module Labimotion
363
385
 
364
386
  desc 'Create a element'
365
387
  params do
366
- requires :element_klass, type: Hash
367
- requires :name, type: String
368
- optional :properties, type: Hash
369
- optional :properties_release, type: Hash
370
- optional :collection_id, type: Integer
371
- requires :container, type: Hash
372
- optional :segments, type: Array, desc: 'Segments'
388
+ use :create_element_params
373
389
  end
374
390
  post do
375
391
  begin
@@ -388,12 +404,7 @@ module Labimotion
388
404
 
389
405
  desc 'Update element by id'
390
406
  params do
391
- requires :id, type: Integer, desc: 'element id'
392
- optional :name, type: String
393
- requires :properties, type: Hash
394
- optional :properties_release, type: Hash
395
- requires :container, type: Hash
396
- optional :segments, type: Array, desc: 'Segments'
407
+ use :update_element_params
397
408
  end
398
409
  route_param :id do
399
410
  before do
@@ -415,20 +426,7 @@ module Labimotion
415
426
  raise e
416
427
  end
417
428
  end
418
- end
419
-
420
- namespace :split do
421
- desc 'split elements'
422
- params do
423
- requires :ui_state, type: Hash, desc: 'Selected elements from the UI'
424
- end
425
- post do
426
- split_elements(params[:ui_state], current_user)
427
- rescue StandardError => e
428
- Labimotion.log_exception(e, current_user)
429
- { error: e.message }
430
- end
431
- end
429
+ end
432
430
  end
433
431
  end
434
432
  end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'labimotion/version'
4
+ require 'labimotion/libs/export_element'
5
+
6
+ module Labimotion
7
+ # Generic Element API
8
+ class GenericKlassAPI < Grape::API
9
+
10
+ resource :generic_klass do
11
+ namespace :download_klass do
12
+ desc 'export klass'
13
+ params do
14
+ requires :id, type: Integer, desc: 'element id'
15
+ requires :klass, type: String, desc: 'Klass', values: %w[ElementKlass SegmentKlass DatasetKlass]
16
+ end
17
+ get do
18
+ entity = "Labimotion::#{params[:klass]}".constantize.find_by(id: params[:id])
19
+ entity.update_columns(identifier: SecureRandom.uuid) if entity&.identifier.nil?
20
+ env['api.format'] = :binary
21
+ content_type('application/json')
22
+ filename = URI.escape("LabIMotion_#{params[:klass]}_#{entity.label}-#{Time.new.strftime("%Y%m%d%H%M%S")}.json")
23
+ # header['Content-Disposition'] = "attachment; filename=abc.docx"
24
+ header('Content-Disposition', "attachment; filename=\"#{filename}\"")
25
+ "Labimotion::#{params[:klass]}Entity".constantize.represent(entity)
26
+ # klass.as_json
27
+ rescue StandardError => e
28
+ Labimotion.log_exception(e, current_user)
29
+ {}
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -3,6 +3,7 @@ module Labimotion
3
3
  include Grape::Kaminari
4
4
  helpers Labimotion::GenericHelpers
5
5
  helpers Labimotion::SegmentHelpers
6
+ helpers Labimotion::ParamHelpers
6
7
 
7
8
  resource :segments do
8
9
  namespace :klasses do
@@ -30,11 +31,7 @@ module Labimotion
30
31
  namespace :create_segment_klass do
31
32
  desc 'create Generic Segment Klass'
32
33
  params do
33
- requires :label, type: String, desc: 'Segment Klass Label'
34
- requires :element_klass, type: Integer, desc: 'Element Klass Id'
35
- optional :desc, type: String, desc: 'Segment Klass Desc'
36
- optional :place, type: String, desc: 'Segment Klass Place', default: '100'
37
- optional :properties_template, type: Hash, desc: 'Element Klass properties template'
34
+ use :create_segment_klass_params
38
35
  end
39
36
  after_validation do
40
37
  authenticate_admin!('segments')
@@ -50,11 +47,7 @@ module Labimotion
50
47
  namespace :update_segment_klass do
51
48
  desc 'update Generic Segment Klass'
52
49
  params do
53
- requires :id, type: Integer, desc: 'Segment Klass ID'
54
- optional :label, type: String, desc: 'Segment Klass Label'
55
- optional :desc, type: String, desc: 'Segment Klass Desc'
56
- optional :place, type: String, desc: 'Segment Klass Place', default: '100'
57
- optional :identifier, type: String, desc: 'Segment Identifier'
50
+ use :update_segment_klass_params
58
51
  end
59
52
  after_validation do
60
53
  authenticate_admin!('segments')
@@ -140,6 +133,28 @@ module Labimotion
140
133
  raise e
141
134
  end
142
135
  end
136
+
137
+ namespace :upload_klass do
138
+ desc 'upload Generic Klass'
139
+ params do
140
+ use :upload_segment_klass_params
141
+ end
142
+ post do
143
+ declared_params = declared(params, include_missing: false)
144
+ attributes = declared_params.merge(
145
+ created_by: current_user.id,
146
+ released_by: current_user.id,
147
+ updated_by: current_user.id,
148
+ is_active: false
149
+ )
150
+ attr_klass = params['element_klass'] || {}
151
+ attributes.delete(:element_klass)
152
+ validate_klass(attributes, attr_klass)
153
+ rescue StandardError => e
154
+ Labimotion.log_exception(e, current_user)
155
+ raise e
156
+ end
157
+ end
143
158
  end
144
159
  end
145
160
  end
@@ -294,37 +294,44 @@ module Labimotion
294
294
  raise e
295
295
  end
296
296
 
297
- def create_repo_klass(params, current_user, origin)
298
- response = Labimotion::TemplateHub.fetch_identifier('ElementKlass', params[:identifier], origin)
299
- attributes = response.slice('name', 'label', 'desc', 'icon_name', 'uuid', 'klass_prefix', 'is_generic', 'identifier', 'properties_release', 'version')
300
- attributes['properties_release']['identifier'] = attributes['identifier']
301
- attributes['properties_template'] = attributes['properties_release']
302
- attributes['place'] = ((Labimotion::DatasetKlass.all.length * 10) || 0) + 10
303
- attributes['is_active'] = false
304
- attributes['updated_by'] = current_user.id
305
- attributes['sync_by'] = current_user.id
306
- attributes['sync_time'] = DateTime.now
307
-
297
+ def validate_klass(attributes)
308
298
  element_klass = Labimotion::ElementKlass.find_by(identifier: attributes['identifier'])
309
299
  if element_klass.present?
310
300
  if element_klass['uuid'] == attributes['uuid'] && element_klass['version'] == attributes['version']
311
- { status: 'success', message: "This element: #{attributes['name']} has the latest version!" }
301
+ return { status: 'success', message: "This element: #{attributes['name']} has the latest version!" }
312
302
  else
313
303
  element_klass.update!(attributes)
314
304
  element_klass.create_klasses_revision(current_user)
315
- { status: 'success', message: "This element: [#{attributes['name']}] has been upgraded to the version: #{attributes['version']}!" }
305
+ return { status: 'success', message: "This element: [#{attributes['name']}] has been upgraded to the version: #{attributes['version']}!" }
316
306
  end
317
307
  else
318
308
  exist_klass = Labimotion::ElementKlass.find_by(name: attributes['name'])
319
309
  if exist_klass.present?
320
- { status: 'error', message: "The name [#{attributes['name']}] is already in use." }
310
+ return { status: 'error', message: "The name [#{attributes['name']}] is already in use." }
321
311
  else
322
312
  attributes['created_by'] = current_user.id
323
313
  element_klass = Labimotion::ElementKlass.create!(attributes)
324
314
  element_klass.create_klasses_revision(current_user)
325
- { status: 'success', message: "The element: #{attributes['name']} has been created using version: #{attributes['version']}!" }
315
+ return { status: 'success', message: "The element: #{attributes['name']} has been created using version: #{attributes['version']}!" }
326
316
  end
327
317
  end
318
+
319
+ rescue StandardError => e
320
+ Labimotion.log_exception(e, current_user)
321
+ return { status: 'error', message: e.message }
322
+ end
323
+
324
+ def create_repo_klass(params, current_user, origin)
325
+ response = Labimotion::TemplateHub.fetch_identifier('ElementKlass', params[:identifier], origin)
326
+ attributes = response.slice('name', 'label', 'desc', 'icon_name', 'uuid', 'klass_prefix', 'is_generic', 'identifier', 'properties_release', 'version')
327
+ attributes['properties_release']['identifier'] = attributes['identifier']
328
+ attributes['properties_template'] = attributes['properties_release']
329
+ attributes['place'] = ((Labimotion::ElementKlass.all.length * 10) || 0) + 10
330
+ attributes['is_active'] = false
331
+ attributes['updated_by'] = current_user.id
332
+ attributes['sync_by'] = current_user.id
333
+ attributes['sync_time'] = DateTime.now
334
+ validate_klass(attributes)
328
335
  rescue StandardError => e
329
336
  Labimotion.log_exception(e, current_user)
330
337
  # { error: e.message }
@@ -0,0 +1,97 @@
1
+ # frozen_string_literal: true
2
+ require 'grape'
3
+ require 'labimotion/utils/utils'
4
+ # Helper for associated sample
5
+ module Labimotion
6
+ ## Generic Helpers
7
+ module ParamHelpers
8
+ extend Grape::API::Helpers
9
+ ## Element Klass Params
10
+ params :upload_element_klass_params do
11
+ requires :name, type: String, desc: 'Klass Name'
12
+ optional :label, type: String, desc: 'Klass label'
13
+ optional :desc, type: String, desc: 'Klass desc'
14
+ optional :klass_prefix, type: String, desc: 'Klass klass_prefix'
15
+ optional :icon_name, type: String, desc: 'Klass icon_name'
16
+ requires :properties_template, type: Hash, desc: 'Klass template'
17
+ optional :properties_release, type: Hash, desc: 'Klass release'
18
+ optional :released_at, type: DateTime, desc: 'Klass released_at'
19
+ requires :uuid, type: String, desc: 'Klass uuid'
20
+ requires :place, type: Integer, desc: 'Klass place'
21
+ requires :identifier, type: String, desc: 'Klass identifier'
22
+ optional :sync_time, type: DateTime, desc: 'Klass sync_time'
23
+ optional :version, type: String, desc: 'Klass version'
24
+ end
25
+
26
+ params :create_element_klass_params do
27
+ requires :name, type: String, desc: 'Element Klass Name'
28
+ requires :label, type: String, desc: 'Element Klass Label'
29
+ requires :klass_prefix, type: String, desc: 'Element Klass Short Label Prefix'
30
+ optional :icon_name, type: String, desc: 'Element Klass Icon Name'
31
+ optional :desc, type: String, desc: 'Element Klass Desc'
32
+ optional :properties_template, type: Hash, desc: 'Element Klass properties template'
33
+ end
34
+
35
+ params :update_element_klass_params do
36
+ requires :id, type: Integer, desc: 'Element Klass ID'
37
+ optional :label, type: String, desc: 'Element Klass Label'
38
+ optional :klass_prefix, type: String, desc: 'Element Klass Short Label Prefix'
39
+ optional :icon_name, type: String, desc: 'Element Klass Icon Name'
40
+ optional :desc, type: String, desc: 'Element Klass Desc'
41
+ optional :place, type: String, desc: 'Element Klass Place'
42
+ end
43
+
44
+ ## Element Params
45
+ params :create_element_params do
46
+ requires :element_klass, type: Hash
47
+ requires :name, type: String
48
+ optional :properties, type: Hash
49
+ optional :properties_release, type: Hash
50
+ optional :collection_id, type: Integer
51
+ requires :container, type: Hash
52
+ optional :segments, type: Array, desc: 'Segments'
53
+ end
54
+
55
+ params :update_element_params do
56
+ requires :id, type: Integer, desc: 'element id'
57
+ optional :name, type: String
58
+ requires :properties, type: Hash
59
+ optional :properties_release, type: Hash
60
+ requires :container, type: Hash
61
+ optional :segments, type: Array, desc: 'Segments'
62
+ end
63
+
64
+ ## Segment Klass Params
65
+ params :upload_segment_klass_params do
66
+ requires :label, type: String, desc: 'Klass label'
67
+ optional :desc, type: String, desc: 'Klass desc'
68
+ requires :properties_template, type: Hash, desc: 'Klass template'
69
+ optional :properties_release, type: Hash, desc: 'Klass release'
70
+ optional :released_at, type: DateTime, desc: 'Klass released_at'
71
+ requires :uuid, type: String, desc: 'Klass uuid'
72
+ requires :place, type: Integer, desc: 'Klass place'
73
+ requires :identifier, type: String, desc: 'Klass identifier'
74
+ optional :sync_time, type: DateTime, desc: 'Klass sync_time'
75
+ optional :version, type: String, desc: 'Klass version'
76
+ requires :element_klass, type: Hash do
77
+ use :upload_element_klass_params
78
+ end
79
+ end
80
+
81
+ params :update_segment_klass_params do
82
+ requires :id, type: Integer, desc: 'Segment Klass ID'
83
+ optional :label, type: String, desc: 'Segment Klass Label'
84
+ optional :desc, type: String, desc: 'Segment Klass Desc'
85
+ optional :place, type: String, desc: 'Segment Klass Place', default: '100'
86
+ optional :identifier, type: String, desc: 'Segment Identifier'
87
+ end
88
+
89
+ params :create_segment_klass_params do
90
+ requires :label, type: String, desc: 'Segment Klass Label'
91
+ requires :element_klass, type: Integer, desc: 'Element Klass Id'
92
+ optional :desc, type: String, desc: 'Segment Klass Desc'
93
+ optional :place, type: String, desc: 'Segment Klass Place', default: '100'
94
+ optional :properties_template, type: Hash, desc: 'Element Klass properties template'
95
+ end
96
+ end
97
+ end
@@ -63,45 +63,53 @@ module Labimotion
63
63
  raise e
64
64
  end
65
65
 
66
- def create_repo_klass(params, current_user, origin)
67
- response = Labimotion::TemplateHub.fetch_identifier('SegmentKlass', params[:identifier], origin)
68
- attributes = response.slice('label', 'desc', 'uuid', 'identifier', 'released_at', 'properties_release', 'version')
69
- attributes['properties_release']['identifier'] = attributes['identifier']
70
- attributes['properties_template'] = attributes['properties_release']
71
- attributes['place'] = ((Labimotion::SegmentKlass.all.length * 10) || 0) + 10
72
- attributes['is_active'] = false
73
- attributes['updated_by'] = current_user.id
74
- attributes['sync_by'] = current_user.id
75
- attributes['sync_time'] = DateTime.now
76
- element_klass = Labimotion::ElementKlass.find_by(identifier: response['element_klass']['identifier']) if response.dig('element_klass','identifier').present?
77
- element_klass = Labimotion::ElementKlass.find_by(name: response['element_klass']['name'], is_generic: false) if element_klass.nil?
78
- return { status: 'error', message: "The element [#{response['element_klass']['name']}] does not exist in this instance" } if element_klass.nil?
66
+ def validate_klass(attributes, attr_klass)
67
+ element_klass = Labimotion::ElementKlass.find_by(identifier: attr_klass['identifier']) if attr_klass.dig('identifier').present?
68
+ element_klass = Labimotion::ElementKlass.find_by(name: attr_klass['name'], is_generic: false) if element_klass.nil?
69
+ return { status: 'error', message: "The element [#{attr_klass['name']}] does not exist in this instance" } if element_klass.nil?
79
70
 
80
71
  # el_attributes = response['element_klass'].slice('name', 'label', 'desc', 'uuid', 'identifier', 'icon_name', 'klass_prefix', 'is_generic', 'released_at')
81
72
  # el_attributes['properties_template'] = response['element_klass']['properties_release']
82
73
  # Labimotion::ElementKlass.create!(el_attributes)
83
-
84
74
  attributes['element_klass_id'] = element_klass.id
85
75
  segment_klass = Labimotion::SegmentKlass.find_by(identifier: attributes['identifier'])
86
76
  if segment_klass.present?
87
77
  if segment_klass['uuid'] == attributes['uuid'] && segment_klass['version'] == attributes['version']
88
- { status: 'success', message: "This segment: #{attributes['label']} has the latest version!" }
78
+ return { status: 'success', message: "This segment: #{attributes['label']} has the latest version!" }
89
79
  else
90
80
  segment_klass.update!(attributes)
91
81
  segment_klass.create_klasses_revision(current_user)
92
- { status: 'success', message: "This segment: [#{attributes['label']}] has been upgraded to the version: #{attributes['version']}!" }
82
+ return { status: 'success', message: "This segment: [#{attributes['label']}] has been upgraded to the version: #{attributes['version']}!" }
93
83
  end
94
84
  else
95
85
  exist_klass = Labimotion::SegmentKlass.find_by(label: attributes['label'], element_klass_id: element_klass.id)
96
86
  if exist_klass.present?
97
- { status: 'error', message: "The segment [#{attributes['label']}] is already in use." }
87
+ return { status: 'error', message: "The segment [#{attributes['label']}] is already in use." }
98
88
  else
99
89
  attributes['created_by'] = current_user.id
100
90
  segment_klass = Labimotion::SegmentKlass.create!(attributes)
101
91
  segment_klass.create_klasses_revision(current_user)
102
- { status: 'success', message: "The segment: #{attributes['label']} has been created using version: #{attributes['version']}!" }
92
+ return { status: 'success', message: "The segment: #{attributes['label']} has been created using version: #{attributes['version']}!" }
103
93
  end
104
94
  end
95
+ rescue StandardError => e
96
+ Labimotion.log_exception(e, current_user)
97
+ return { status: 'error', message: e.message }
98
+ end
99
+
100
+ def create_repo_klass(params, current_user, origin)
101
+ response = Labimotion::TemplateHub.fetch_identifier('SegmentKlass', params[:identifier], origin)
102
+ attributes = response.slice('label', 'desc', 'uuid', 'identifier', 'released_at', 'properties_release', 'version')
103
+ attributes['properties_release']['identifier'] = attributes['identifier']
104
+ attributes['properties_template'] = attributes['properties_release']
105
+ attributes['place'] = ((Labimotion::SegmentKlass.all.length * 10) || 0) + 10
106
+ attributes['is_active'] = false
107
+ attributes['updated_by'] = current_user.id
108
+ attributes['sync_by'] = current_user.id
109
+ attributes['sync_time'] = DateTime.now
110
+ attr_klass = response.dig('element_klass', {}) # response['element_klass']
111
+ validate_klass(attributes, attr_klass)
112
+
105
113
  rescue StandardError => e
106
114
  Labimotion.log_exception(e, current_user)
107
115
  raise e
@@ -6,6 +6,12 @@ module Labimotion
6
6
  extend ActiveSupport::Concern
7
7
  included do
8
8
  # has_many :element_klasses_revisions, dependent: :destroy
9
+ before_save :check_identifier
10
+ end
11
+
12
+
13
+ def check_identifier
14
+ self.identifier = identifier || SecureRandom.uuid
9
15
  end
10
16
 
11
17
  def create_klasses_revision(current_user)
@@ -2,5 +2,5 @@
2
2
 
3
3
  ## Labimotion Version
4
4
  module Labimotion
5
- VERSION = '1.3.0.rc4'
5
+ VERSION = '1.3.0.rc5'
6
6
  end
data/lib/labimotion.rb CHANGED
@@ -15,6 +15,7 @@ module Labimotion
15
15
  autoload :Utils, 'labimotion/utils/utils'
16
16
 
17
17
  ######## APIs
18
+ autoload :GenericKlassAPI, 'labimotion/apis/generic_klass_api'
18
19
  autoload :GenericElementAPI, 'labimotion/apis/generic_element_api'
19
20
  autoload :GenericDatasetAPI, 'labimotion/apis/generic_dataset_api'
20
21
  autoload :SegmentAPI, 'labimotion/apis/segment_api'
@@ -48,6 +49,7 @@ module Labimotion
48
49
  autoload :SegmentHelpers, 'labimotion/helpers/segment_helpers'
49
50
  autoload :DatasetHelpers, 'labimotion/helpers/dataset_helpers'
50
51
  autoload :SearchHelpers, 'labimotion/helpers/search_helpers'
52
+ autoload :ParamHelpers, 'labimotion/helpers/param_helpers'
51
53
  autoload :ConverterHelpers, 'labimotion/helpers/converter_helpers'
52
54
  autoload :SampleAssociationHelpers, 'labimotion/helpers/sample_association_helpers'
53
55
  autoload :RepositoryHelpers, 'labimotion/helpers/repository_helpers'
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.3.0.rc4
4
+ version: 1.3.0.rc5
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-04-04 00:00:00.000000000 Z
12
+ date: 2024-04-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -37,6 +37,7 @@ files:
37
37
  - lib/labimotion/apis/converter_api.rb
38
38
  - lib/labimotion/apis/generic_dataset_api.rb
39
39
  - lib/labimotion/apis/generic_element_api.rb
40
+ - lib/labimotion/apis/generic_klass_api.rb
40
41
  - lib/labimotion/apis/labimotion_hub_api.rb
41
42
  - lib/labimotion/apis/segment_api.rb
42
43
  - lib/labimotion/collection/export.rb
@@ -60,6 +61,7 @@ files:
60
61
  - lib/labimotion/helpers/dataset_helpers.rb
61
62
  - lib/labimotion/helpers/element_helpers.rb
62
63
  - lib/labimotion/helpers/generic_helpers.rb
64
+ - lib/labimotion/helpers/param_helpers.rb
63
65
  - lib/labimotion/helpers/repository_helpers.rb
64
66
  - lib/labimotion/helpers/sample_association_helpers.rb
65
67
  - lib/labimotion/helpers/search_helpers.rb