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 +4 -4
- data/CHANGELOG.md +35 -2
- data/lib/ecoportal/api/common/content/array_model.rb +4 -0
- data/lib/ecoportal/api/v2/page/component/action.rb +13 -0
- data/lib/ecoportal/api/v2/page/component/action_field.rb +4 -0
- data/lib/ecoportal/api/v2/page/component/checklist_field.rb +4 -0
- data/lib/ecoportal/api/v2/page/component/checklist_item.rb +4 -0
- data/lib/ecoportal/api/v2/page/component/date_field.rb +4 -0
- data/lib/ecoportal/api/v2/page/component/file.rb +4 -0
- data/lib/ecoportal/api/v2/page/component/files_field.rb +4 -0
- data/lib/ecoportal/api/v2/page/component/gauge_field.rb +3 -0
- data/lib/ecoportal/api/v2/page/component/geo_coordinates.rb +4 -0
- data/lib/ecoportal/api/v2/page/component/geo_field.rb +4 -0
- data/lib/ecoportal/api/v2/page/component/images_field.rb +5 -1
- data/lib/ecoportal/api/v2/page/component/people_field.rb +4 -0
- data/lib/ecoportal/api/v2/page/component/plain_text_field.rb +4 -0
- data/lib/ecoportal/api/v2/page/component/reference_field.rb +11 -0
- data/lib/ecoportal/api/v2/page/component/rich_text_field.rb +17 -0
- data/lib/ecoportal/api/v2/page/component/selection_field.rb +6 -0
- data/lib/ecoportal/api/v2/page/component/tag_field.rb +4 -0
- data/lib/ecoportal/api/v2/page/section.rb +2 -3
- data/lib/ecoportal/api/v2/page/stages.rb +5 -5
- data/lib/ecoportal/api/v2/page.rb +1 -1
- data/lib/ecoportal/api/v2/pages.rb +1 -1
- data/lib/ecoportal/api/v2/registers.rb +52 -19
- data/lib/ecoportal/api/v2_version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fb1c34f7a92da53d66d3274e36401d853d62054e53706515dcc62d4f5a5447e7
|
4
|
+
data.tar.gz: 6443519538afe51f6e41544ad4be7ca652379fb1b812add8a45655e00467b853
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
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
|
|
@@ -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
|
@@ -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>]
|
@@ -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(": ", ' ') if str
|
21
|
+
str = str.gsub(""", '"') if str
|
22
|
+
str = str.gsub("&", '&') 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(
|
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 ||=
|
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
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
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
|
@@ -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
|
-
|
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
|
72
|
-
|
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
|
-
|
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
|
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.
|
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:
|
11
|
+
date: 2022-01-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|