forest_admin_datasource_toolkit 1.0.0.pre.beta.101 → 1.0.0.pre.beta.102

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: 51e0c67456dd07967f7cfdb36b6954b2b7d62c31930cd73498e6e704628185ef
4
- data.tar.gz: f26592628ef5d09bb6bb2f3216c5f19a7f2bcfd74cfe4c66cb2d93786c2f34e4
3
+ metadata.gz: 495f875b6cecfc26c1355cc38e11043a3510e50d1ad8515191dad964f8d9bd74
4
+ data.tar.gz: acafa1e27c47f638d275a7d50caee2dc1574a6dd223b300689b2f81718308bf2
5
5
  SHA512:
6
- metadata.gz: b16e2373a7a631bdf2a3a7e23b5b3eb77430b4e2d3e02ed533108135132320f264e4a89a2cb910512b3487533f8357b07d37e6b82ceada4cf6c6c963f832dbd0
7
- data.tar.gz: 1583ac50fdb7ddd453f49b481a80dfbdfb94bb733d30c6e6665560e3d721d0d131a9a48b02717410545390f4c16911e90b511bb14c3928dd23280851a9b73d67
6
+ metadata.gz: a3f43f1c7d7398f4f80fd493907b7831072f6f70e28fe74e55a2442cb80b9d2f7e4774119d26d0df9a657b4273d65059c9a098b0fbfee41335ddafb95b30645d
7
+ data.tar.gz: 0040f777cb0c5c812659c27c3bc8d6c5e2cd633c2315fe722fa87b434131608b39b03e7ce9f6ac9b90649241cdf039765cbc4678b870972a6cd2594f85c47387
@@ -63,6 +63,15 @@ module ForestAdminDatasourceToolkit
63
63
  schema[:actions][name] = action
64
64
  end
65
65
 
66
+ def add_chart(name)
67
+ if @schema[:charts].include?(name)
68
+ raise Exceptions::ForestException,
69
+ "Chart #{name} already defined in collection"
70
+ end
71
+
72
+ schema[:charts] << name
73
+ end
74
+
66
75
  def render_chart(_caller, name, _record_id)
67
76
  raise Exceptions::ForestException, "Chart #{name} is not implemented."
68
77
  end
@@ -32,6 +32,15 @@ module ForestAdminDatasourceToolkit
32
32
  @project = project
33
33
  @environment = environment
34
34
  end
35
+
36
+ def to_h
37
+ result = {}
38
+ instance_variables.each do |attribute|
39
+ result[attribute.to_s.delete('@').to_sym] = instance_variable_get(attribute)
40
+ end
41
+
42
+ result
43
+ end
35
44
  end
36
45
  end
37
46
  end
@@ -20,14 +20,14 @@ module ForestAdminDatasourceToolkit
20
20
  @page = page
21
21
  end
22
22
 
23
- def to_h
23
+ def to_h(deeply: true)
24
24
  {
25
- condition_tree: @condition_tree,
25
+ condition_tree: deeply && !@condition_tree.nil? ? @condition_tree.to_h : @condition_tree,
26
26
  search: @search,
27
27
  search_extended: @search_extended,
28
28
  segment: @segment,
29
29
  sort: @sort,
30
- page: @page
30
+ page: deeply && !page.nil? ? @page.to_h : @page
31
31
  }
32
32
  end
33
33
 
@@ -36,7 +36,7 @@ module ForestAdminDatasourceToolkit
36
36
  end
37
37
 
38
38
  def override(args)
39
- args = to_h.merge(args)
39
+ args = to_h(deeply: false).merge(args)
40
40
 
41
41
  Filter.new(**args)
42
42
  end
@@ -9,6 +9,25 @@ module ForestAdminDatasourceToolkit
9
9
  include ForestAdminDatasourceToolkit::Schema::Relations
10
10
  include ForestAdminDatasourceToolkit::Components::Query::ConditionTree
11
11
 
12
+ def self.from_plain_object(json)
13
+ return Filter.new if json.nil? || json.empty?
14
+
15
+ Filter.new(
16
+ condition_tree: ConditionTree::ConditionTreeFactory.from_plain_object(
17
+ json['condition_tree'] || nil
18
+ ),
19
+ page: if json['page'].nil?
20
+ nil
21
+ else
22
+ Page.new(offset: json['page']['offset'], limit: json['page']['limit'])
23
+ end,
24
+ search: json['search'],
25
+ search_extended: json['search_extended'],
26
+ sort: json['sort'].nil? ? nil : Sort.new(json['sort']),
27
+ segment: json['segment']
28
+ )
29
+ end
30
+
12
31
  def self.get_previous_period_filter(filter, timezone)
13
32
  filter.override(condition_tree: filter.condition_tree.replace_leafs do |leaf|
14
33
  case leaf.operator
@@ -13,6 +13,10 @@ module ForestAdminDatasourceToolkit
13
13
  end_index = @limit ? @offset + @limit : nil
14
14
  records[@offset...end_index]
15
15
  end
16
+
17
+ def to_h
18
+ { offset: @offset, limit: @limit }
19
+ end
16
20
  end
17
21
  end
18
22
  end
@@ -34,5 +34,16 @@ module ForestAdminDatasourceToolkit
34
34
  def build_binding_symbol(_connection_name, _binds)
35
35
  raise Exceptions::ForestException, 'this datasource do not support native query.'
36
36
  end
37
+
38
+ def add_chart(chart)
39
+ if @schema[:charts].any? do |c|
40
+ c[:name] == chart[:name]
41
+ end
42
+ raise Exceptions::ForestException,
43
+ "Chart #{chart[:name]} already defined in datasource"
44
+ end
45
+
46
+ @schema[:charts] << chart
47
+ end
37
48
  end
38
49
  end
@@ -1,6 +1,8 @@
1
1
  module ForestAdminDatasourceToolkit
2
2
  module Decorators
3
3
  class CollectionDecorator < Collection
4
+ include ForestAdminDatasourceToolkit::Components::Query
5
+
4
6
  attr_reader :datasource, :child_collection, :last_schema
5
7
  attr_writer :parent
6
8
 
@@ -36,7 +38,7 @@ module ForestAdminDatasourceToolkit
36
38
  end
37
39
 
38
40
  def get_form(caller, name, data = nil, filter = nil, metas = {})
39
- refined_filter = refine_filter(caller, filter)
41
+ refined_filter = refine_filter(caller, filter || Filter.new)
40
42
 
41
43
  @child_collection.get_form(caller, name, data, refined_filter, metas)
42
44
  end
@@ -1,3 +1,3 @@
1
1
  module ForestAdminDatasourceToolkit
2
- VERSION = "1.0.0-beta.101"
2
+ VERSION = "1.0.0-beta.102"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: forest_admin_datasource_toolkit
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.pre.beta.101
4
+ version: 1.0.0.pre.beta.102
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthieu
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2025-05-21 00:00:00.000000000 Z
12
+ date: 2025-05-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport