ecoportal-api-v2 0.8.20 → 0.8.24

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: dcd685a294969e210f94f8b8728fec32a94372d349064e14f9a59e24429b7753
4
- data.tar.gz: d1c8b4ddf1bcd9b3ac2203c6f1bb293aafcfc6de1d58dde79c7b425c87fe444b
3
+ metadata.gz: fb1c34f7a92da53d66d3274e36401d853d62054e53706515dcc62d4f5a5447e7
4
+ data.tar.gz: 6443519538afe51f6e41544ad4be7ca652379fb1b812add8a45655e00467b853
5
5
  SHA512:
6
- metadata.gz: 145593ad0fe8adf038c9565bafdeee1497e13ed165c45f8a40572463ff9fffb2bcb3eec8834595eab7b89efc6274ca9c1352ff7dd043ec6c632bdff8a01a2793
7
- data.tar.gz: 7b8bbb9a4ef83eb033005f5898254f4d67d1fd5e095453f111a4fe350e9ff30236bf0effc4a79c36edf72519a305f1f9596a5ac61dc99a0bdc06a2b5f74b7e1b
6
+ metadata.gz: e55afda3b52bc454997937bb18a523a993069497df4aa2104d434bf345f992e2ea0a08ecc06db0911427ccc634d79cbeddc1f2c7b6ef6bd929868807d06ebec8
7
+ data.tar.gz: 143157a46e72041e54aace3f0c28a9f056295c2ddd41e3358a3472a4e6b447faa2486a8782fe3961b42e7f93627d88749af68da1c3d753ca1bc85273a87b2abc
data/CHANGELOG.md CHANGED
@@ -1,14 +1,47 @@
1
1
  # Change Log
2
2
  All notable changes to this project will be documented in this file.
3
3
 
4
- ## [0.8.20] - 2021-10-xx
4
+ ## [0.8.24] - 2022-01-05
5
5
 
6
6
  ### Added
7
+ ### Changed
8
+
9
+ ### Fixed
10
+ - `Ecoportal::API::V2::Page#stages?` do not generate an object to this purpose
11
+ - `Ecoportal::API::V2::Registers#search` fix typo in print feedback
12
+
13
+ ## [0.8.23] - 2021-12-24
14
+
15
+ ### Added
16
+ - `Ecoportal::API::V2::Registers#search` added more feedback on what is going on
17
+
18
+ ## [0.8.22] - 2021-12-23
19
+
20
+ ### Fixed
21
+ - `Ecoportal::API::V2::Page::Section#add_component` was not using correctly `before` and `after`
22
+ - It was not correctly translating them into the existing component
23
+
24
+ ## [0.8.21] - 2021-12-15
25
+
26
+ ### Added
27
+ - To children of `Ecoportal::API::V2::Page::Component` added method `#to_s` (for exporting)
28
+ - `Ecoportal::API::V2::Page::Component::ReferenceField`
29
+ - added `#references` (the lookup results)
30
+ - added `#reference_ids` (the `ids` of the referenced oozes)
31
+
32
+ ### Changed
33
+ - Re-exposed `Ecoportal::API::V2::Stages#ordered`
34
+
35
+ ### Fixed
36
+ - `Ecoportal::API::V2::Page::Component::ImagesField#images` typo in `klass`
37
+
38
+ ## [0.8.20] - 2021-12-09
39
+
7
40
  ### Changed
8
41
  - `Ecoportal::API::V2::Pages::PageStage#permits` removed
9
42
  - The reason is that it should be changed using the `Stage#permits` instead
10
43
  - Upgraded `ecoportal-api` gem dependency
11
-
44
+
12
45
  ### Fixed
13
46
  - `Ecoportal::API::V2::Page::Stage#sections` typo
14
47
 
@@ -55,6 +55,10 @@ module Ecoportal
55
55
  doc.tap {|d| d.uniq! if uniq?}
56
56
  end
57
57
 
58
+ def to_s(delimiter: "|")
59
+ map(&:to_s).join(delimiter)
60
+ end
61
+
58
62
  # @see #_items
59
63
  # @return [Array] a **copy** of the `Array` elements
60
64
  def to_a
@@ -29,6 +29,19 @@ module Ecoportal
29
29
  passthrough :duration_in_days, read_only: true
30
30
  passarray :file_container_ids
31
31
 
32
+ def to_s
33
+ stat = case
34
+ when overdue
35
+ "Overdue"
36
+ when complete
37
+ "Complete"
38
+ else
39
+ "Pending"
40
+ end
41
+ assignee = assigned_person_member["name"] || assigned_person_member["email"]
42
+ "#{name}, #{created_at.to_s}, #{stat}, #{assignee}"
43
+ end
44
+
32
45
  end
33
46
  end
34
47
  end
@@ -30,6 +30,10 @@ module Ecoportal
30
30
  end
31
31
  end
32
32
 
33
+ def to_s(delimiter: "\n")
34
+ ordered_tasks.map(&:to_s).join(delimiter)
35
+ end
36
+
33
37
  # Quick config helper
34
38
  # @param conf [Symbol, Array<Symbol>]
35
39
  # - `:requires` required number of completed actions
@@ -24,6 +24,10 @@ module Ecoportal
24
24
  end
25
25
  end
26
26
 
27
+ def to_s(delimiter: "\n")
28
+ ordered_items.map(&:to_s).compact.join(delimiter)
29
+ end
30
+
27
31
  private
28
32
 
29
33
  def fix_item_weights!
@@ -19,6 +19,10 @@ module Ecoportal
19
19
  passthrough :label
20
20
  passthrough :weight
21
21
  passboolean :checked
22
+
23
+ def to_s
24
+ checked ? label : nil
25
+ end
22
26
  end
23
27
  end
24
28
  end
@@ -34,6 +34,10 @@ module Ecoportal
34
34
  doc["create_event"] = !!value
35
35
  end
36
36
 
37
+ def to_s
38
+ value.to_s
39
+ end
40
+
37
41
  # Quick config helper
38
42
  # @param conf [Symbol, Array<Symbol>]
39
43
  # - `:time` to show time
@@ -19,6 +19,10 @@ module Ecoportal
19
19
  passthrough :file_size, :content_type, :token, read_only: true
20
20
  passthrough :file_container_id
21
21
  passdate :file_update_at, read_only: true
22
+
23
+ def to_s
24
+ file_container_id
25
+ end
22
26
  end
23
27
  end
24
28
  end
@@ -24,6 +24,10 @@ module Ecoportal
24
24
  end
25
25
  end
26
26
 
27
+ def to_s(delimiter: "\n")
28
+ ordered_files.map(&:to_s).join(delimiter)
29
+ end
30
+
27
31
  private
28
32
 
29
33
  def fix_file_positions!
@@ -26,6 +26,9 @@ module Ecoportal
26
26
  end
27
27
  end
28
28
 
29
+ def to_s
30
+ value.to_s
31
+ end
29
32
  end
30
33
  end
31
34
  end
@@ -5,6 +5,10 @@ module Ecoportal
5
5
  class Component
6
6
  class GeoCoordinates < Common::Content::DoubleModel
7
7
  passthrough :lat, :lon
8
+
9
+ def to_s
10
+ "#{lat},#{lon}" if lat & lon
11
+ end
8
12
  end
9
13
  end
10
14
  end
@@ -6,6 +6,10 @@ module Ecoportal
6
6
  class GeoField < Page::Component
7
7
  passthrough :address
8
8
  embeds_one :coordinates, klass: "Ecoportal::API::V2::Page::Component::GeoCoordinates"
9
+
10
+ def to_s
11
+ coordinates.to_s
12
+ end
9
13
  end
10
14
  end
11
15
  end
@@ -15,7 +15,11 @@ module Ecoportal
15
15
 
16
16
  passthrough :layout
17
17
  passboolean :strech, :no_popup, :hide_options
18
- embeds_many :images, klass: "Ecoportal::API::V2::Page::Image", order_key: :weight
18
+ embeds_many :images, klass: "Ecoportal::API::V2::Page::Component::Image", order_key: :weight
19
+
20
+ def to_s
21
+ images.count
22
+ end
19
23
 
20
24
  # Quick config helper
21
25
  # @param conf [Symbol, Array<Symbol>]
@@ -40,6 +40,10 @@ module Ecoportal
40
40
  viewable_fields.delete!(field_id)
41
41
  end
42
42
 
43
+ def to_s(delimiter: "\n")
44
+ people_ids.join(delimiter)
45
+ end
46
+
43
47
  # Quick config helper
44
48
  # @param conf [Symbol, Array<Symbol>]
45
49
  # - `:snapshot` to set mode to `snapshot`
@@ -9,6 +9,10 @@ module Ecoportal
9
9
  passthrough :max_length
10
10
  passboolean :exact_index
11
11
 
12
+ def to_s
13
+ value
14
+ end
15
+
12
16
  # Quick config helper
13
17
  # @param conf [Symbol, Array<Symbol>]
14
18
  # - `:multiline` multi line mode
@@ -5,10 +5,21 @@ module Ecoportal
5
5
  class Component
6
6
  class ReferenceField < Page::Component
7
7
  passthrough :register_id
8
+ passarray :references
8
9
  passboolean :hide_create, :hide_attach
9
10
  passboolean :hide_metadata, :hide_dashboards
10
11
  passboolean :display_fields, :display_fields_in_lookup
11
12
 
13
+ def reference_ids
14
+ references.map do |ref|
15
+ ref["id"]
16
+ end
17
+ end
18
+
19
+ def to_s(delimiter: "\n")
20
+ reference_ids.to_a.join(delimiter)
21
+ end
22
+
12
23
  # Quick config helper
13
24
  # @param conf [Symbol, Array<Symbol>]
14
25
  # - `:show_fields` specify if the public register fields should be shown (requires `register_id`)
@@ -5,6 +5,23 @@ module Ecoportal
5
5
  class Component
6
6
  class RichTextField < Page::Component
7
7
  passthrough :content
8
+
9
+ HTML_TAGS_REX = /<("[^"]*"|'[^']*'|[^'">])*>/
10
+
11
+ def to_s
12
+ remove_html_tags(content)
13
+ end
14
+
15
+ private
16
+
17
+ def remove_html_tags(str)
18
+ str = str.gsub(HTML_TAGS_REX, ' ') if str
19
+ str = str.gsub(/[^[:print:]]/, '') if str
20
+ str = str.gsub(":&nbsp;", ' ') if str
21
+ str = str.gsub("&#34;", '"') if str
22
+ str = str.gsub("&amp;", '&') if str
23
+ str
24
+ end
8
25
  end
9
26
  end
10
27
  end
@@ -63,6 +63,12 @@ module Ecoportal
63
63
  end
64
64
  end
65
65
 
66
+ def to_s(name: true, delimiter: "\n")
67
+ [selected].flatten.compact.map do |opt|
68
+ name ? opt.name : opt.value
69
+ end.join(delimiter)
70
+ end
71
+
66
72
  # Quick config helper
67
73
  # @param conf [Symbol, Array<Symbol>]
68
74
  # - `:flat` to display in flat mode
@@ -7,6 +7,10 @@ module Ecoportal
7
7
  passboolean :single_select, :use_defaults
8
8
  passthrough :tag_tree_id, :button_text
9
9
 
10
+ def to_s(delimiter: "\n")
11
+ root.tags.to_s(delimiter: delimiter)
12
+ end
13
+
10
14
  # Quick config helper
11
15
  # @param conf [Symbol, Array<Symbol>]
12
16
  # - `:multiple` to allow multiple selection
@@ -137,7 +137,7 @@ module Ecoportal
137
137
  if before
138
138
  before_fld = to_component(before, side: side)
139
139
  elsif after
140
- after_fld = to_component(afterm, side: side)
140
+ after_fld = to_component(after, side: side)
141
141
  end
142
142
 
143
143
  if split?
@@ -145,7 +145,6 @@ module Ecoportal
145
145
  else
146
146
  ids_ary = component_ids
147
147
  end
148
-
149
148
  ids_ary.insert_one(field.id, before: before_fld&.id, after: after_fld&.id)
150
149
  self
151
150
  end
@@ -168,7 +167,7 @@ module Ecoportal
168
167
 
169
168
  fields.find do |fld|
170
169
  found = nil
171
- found ||= !!value if value.is_a?(Ecoportal::API::V2::Page::Component)
170
+ found ||= fld.id == value.id if value.is_a?(Ecoportal::API::V2::Page::Component)
172
171
  found ||= fld.id == value
173
172
  found ||= same_string?(fld.label, value)
174
173
  end
@@ -19,11 +19,11 @@ module Ecoportal
19
19
  end
20
20
  end
21
21
 
22
- #def ordered
23
- # self.sort_by.with_index do |stage, index|
24
- # [stage.ordering, index]
25
- # end
26
- #end
22
+ def ordered
23
+ self.sort_by.with_index do |stage, index|
24
+ [stage.ordering, index]
25
+ end
26
+ end
27
27
 
28
28
  end
29
29
  end
@@ -51,7 +51,7 @@ module Ecoportal
51
51
  end
52
52
 
53
53
  def stages?
54
- self.stages.count > 0
54
+ self.doc["stages"] && (self.stages.count > 0)
55
55
  end
56
56
 
57
57
  # @return [String] with feedback, if for this page instance, there are any of:
@@ -49,7 +49,7 @@ module Ecoportal
49
49
  # Requests to update an existing page via api.
50
50
  # @note It won't launch the update unless there are changes
51
51
  # @param doc [Hash, Page] data that at least contains an `id` (internal or external) of the target page.
52
- # @return [Response] an object with the api response.
52
+ # @return [Ecoportal::API::Common::Response] an object with the api response.
53
53
  def update(doc)
54
54
  body = get_body(doc) # , level: "page"
55
55
  # Launch only if there are changes
@@ -1,3 +1,4 @@
1
+ require 'base64'
1
2
  module Ecoportal
2
3
  module API
3
4
  class V2
@@ -42,18 +43,7 @@ module Ecoportal
42
43
  # @return [Ecoportal::API::V2::Registers, Ecoportal::API::V2::Registers::SearchResults]
43
44
  def search(register_id, options = {})
44
45
  only_first = options.delete(:only_first)
45
- # supply a query string
46
- # or a filter array (copy/paste from dev tools in the browser)
47
- options = {query: nil, filters: []}.update(options)
48
- options = {}.tap do |ret|
49
- options.each do |key, value|
50
- if key == :filters && value.any?
51
- ret[key] = {filters: value}.to_json
52
- else
53
- ret[key] = value if key
54
- end
55
- end
56
- end
46
+ options = build_options(options)
57
47
 
58
48
  if only_first
59
49
  response = client.get("/registers/#{register_id}/search", params: options)
@@ -62,19 +52,23 @@ module Ecoportal
62
52
  end
63
53
 
64
54
  cursor_id = nil
65
- results = 0
55
+ results = 0; total = nil
66
56
  loop do
67
57
  options.update(cursor_id: cursor_id) if cursor_id
68
58
  response = client.get("/registers/#{register_id}/search", params: options)
69
59
  raise "Request failed - Status #{response.status}: #{response.body}" unless response.success?
70
60
 
71
- data = response.body["data"]
72
- unless (total = data["total"]) == 0
61
+ data = response.body["data"]
62
+ total ||= data["total"]
63
+ if total != data["total"]
64
+ msg = "Change of total in search results. Probably due to changes that affect the filter (register: #{register_id}):"
65
+ print_search_status(msg, total, results, cursor_id, data, options)
66
+ #total = data["total"]
67
+ end
68
+
69
+ unless total == 0
73
70
  results += data["results"].length
74
- percent = results * 100 / total
75
- msg = "Registers SEARCH"
76
- print "#{msg}: #{percent.round}% (of #{total})\r"
77
- $stdout.flush
71
+ print_progress(results, total)
78
72
  end
79
73
 
80
74
  data["results"].each do |result|
@@ -83,12 +77,51 @@ module Ecoportal
83
77
  end
84
78
 
85
79
  break if total <= results
80
+ unless data["cursor_id"]
81
+ msg = "Possible error... finishing search for lack of cursor_id in response:"
82
+ print_search_status(msg, total, results, cursor_id, data, options)
83
+ end
86
84
  break unless (cursor_id = data["cursor_id"])
87
85
  end
88
86
  self
89
87
  end
90
88
 
89
+ private
90
+
91
+ def build_options(options)
92
+ # supply a query string
93
+ # or a filter array (copy/paste from dev tools in the browser)
94
+ options = {query: nil, filters: []}.update(options)
95
+ {}.tap do |ret|
96
+ options.each do |key, value|
97
+ if key == :filters && value.any?
98
+ ret[key] = {filters: value}.to_json
99
+ else
100
+ ret[key] = value if key
101
+ end
102
+ end
103
+ end
104
+ end
105
+
106
+ def print_search_status(msg, total, results, cursor_id, data, options)
107
+ msg += "\n"
108
+ msg += " • Original total: #{total}\n"
109
+ msg += " • Current total: #{data&.dig("total")}\n"
110
+ msg += " • Total results retrieved: #{results}\n"
111
+ msg += " • Cursor id: #{cursor_id} (#{Base64.decode64(cursor_id)})\n"
112
+ msg += " • Current cursor results: #{data["results"]&.length}\n"
113
+ msg += " • Next id: #{data["cursor_id"]} (#{Base64.decode64(data["cursor_id"])})\n" if data["cursor_id"]
114
+ msg += " • Options:"
115
+ puts msg
116
+ pp options
117
+ end
91
118
 
119
+ def print_progress(results, total)
120
+ percent = results * 100 / total
121
+ msg = "Registers SEARCH"
122
+ print "#{msg}: #{percent.round}% (of #{total})\r"
123
+ $stdout.flush
124
+ end
92
125
  end
93
126
  end
94
127
  end
@@ -1,5 +1,5 @@
1
1
  module Ecoportal
2
2
  module API
3
- GEM2_VERSION = "0.8.20"
3
+ GEM2_VERSION = "0.8.24"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ecoportal-api-v2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.20
4
+ version: 0.8.24
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oscar Segura
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-12-08 00:00:00.000000000 Z
11
+ date: 2022-01-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler