ecoportal-api-v2 0.8.20 → 0.8.24

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: 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