pageflow-linkmap-page 2.4.0 → 2.5.0
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 +10 -6
- data/app/assets/javascript/pageflow/linkmap_page/editor/models/page_configuration_mixin.js +2 -3
- data/app/jobs/pageflow/linkmap_page/process_source_image_file_job.rb +4 -0
- data/app/models/pageflow/linkmap_page/masked_image_file.rb +4 -0
- data/app/models/pageflow/linkmap_page/processed_image_file.rb +9 -0
- data/lib/pageflow/linkmap_page/paperclip_processors/colors.rb +1 -0
- data/lib/pageflow/linkmap_page/version.rb +1 -1
- data/pageflow-linkmap-page.gemspec +4 -1
- data/spec/factories/image_file.rb +6 -0
- data/spec/models/pageflow/linkmap_page/color_map_file_spec.rb +21 -1
- data/spec/models/pageflow/linkmap_page/masked_image_file_spec.rb +49 -1
- data/spec/pageflow/linkmap_page/paperclip_processors/colors_spec.rb +36 -2
- data/spec/support/config/active_job.rb +11 -0
- data/spec/support/config/timecop.rb +11 -0
- metadata +22 -6
- data/spec/support/config/resque.rb +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 20fd794281e40b28b10018b90477fbb17bdac8444e406dca532d0e0fb6b59368
|
4
|
+
data.tar.gz: 0ae08ee96055ef4ceb0e005eeb3f498d9640a46cfcdf28e830bef5541dc41b8a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 356ef2fe7137f4e8050a584923dbe76408937241bbcfa02697b5cef01818f7b21bd0b565e8baa3265f6d313c9355be84dbdbf6692e76790638b4bb0f5c787808
|
7
|
+
data.tar.gz: 8fa009d774f3f2db7e5f66e9bbc1573e6dca6fa6a8c83cd0fc726773d1ac0c151303616247a9cf95fc0c43b95eff00a2c75ebba4e2536ba1280da5d82ab318e8
|
data/CHANGELOG.md
CHANGED
@@ -1,14 +1,18 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
-
### Version 2.
|
3
|
+
### Version 2.5.0
|
4
4
|
|
5
|
-
2019-
|
5
|
+
2019-07-24
|
6
6
|
|
7
|
-
[Compare changes](https://github.com/codevise/pageflow-linkmap-page/compare/2-
|
7
|
+
[Compare changes](https://github.com/codevise/pageflow-linkmap-page/compare/2-4-stable...v2.5.0)
|
8
8
|
|
9
|
-
-
|
10
|
-
|
9
|
+
- Make processing jobs wait for prerequisites. Prevent cases where
|
10
|
+
masked processing already starts before image file has finished
|
11
|
+
uploading.
|
12
|
+
([#62](https://github.com/codevise/pageflow-linkmap-page/pull/62))
|
13
|
+
- Fix specs depending on color parsing with ImageMagick 6.9
|
14
|
+
([#61](https://github.com/codevise/pageflow-linkmap-page/pull/61))
|
11
15
|
|
12
16
|
See
|
13
|
-
[2-
|
17
|
+
[2-4-stable branch](https://github.com/codevise/pageflow-linkmap-page/blob/2-4-stable/CHANGELOG.md)
|
14
18
|
for previous changes.
|
@@ -19,13 +19,12 @@
|
|
19
19
|
this.listenTo(
|
20
20
|
this,
|
21
21
|
'change:' + attribute +
|
22
|
-
' change:linkmap_color_map_file_id'
|
23
|
-
' change:linkmap_color_map_file_id:ready',
|
22
|
+
' change:linkmap_color_map_file_id',
|
24
23
|
function() {
|
25
24
|
var colorMapFile = colorMapFiles().get(this.get('linkmap_color_map_file_id'));
|
26
25
|
var imageFile = pageflow.imageFiles.get(this.get(attribute));
|
27
26
|
|
28
|
-
if (imageFile && colorMapFile
|
27
|
+
if (imageFile && colorMapFile) {
|
29
28
|
this.setReference('linkmap_masked_' + attribute,
|
30
29
|
maskedImageFiles().findOrCreateBy({
|
31
30
|
source_image_file_id: imageFile.id,
|
@@ -6,8 +6,12 @@ module Pageflow
|
|
6
6
|
include StateMachineJob
|
7
7
|
|
8
8
|
def perform_with_result(file, _options)
|
9
|
+
return :error if file.prerequisite_files.any?(&:failed?)
|
10
|
+
return :pending unless file.prerequisite_files.all?(&:ready?)
|
11
|
+
|
9
12
|
file.attachment = file.source_image_file.attachment
|
10
13
|
file.save!
|
14
|
+
|
11
15
|
:ok
|
12
16
|
end
|
13
17
|
end
|
@@ -23,6 +23,7 @@ module Pageflow
|
|
23
23
|
|
24
24
|
job ProcessSourceImageFileJob do
|
25
25
|
on_enter 'processing'
|
26
|
+
result :pending, retry_after: 3.seconds
|
26
27
|
result ok: 'processed'
|
27
28
|
result error: 'processing_failed'
|
28
29
|
end
|
@@ -52,9 +53,17 @@ module Pageflow
|
|
52
53
|
processed?
|
53
54
|
end
|
54
55
|
|
56
|
+
def failed?
|
57
|
+
processing_failed?
|
58
|
+
end
|
59
|
+
|
55
60
|
def basename
|
56
61
|
'unused'
|
57
62
|
end
|
63
|
+
|
64
|
+
def prerequisite_files
|
65
|
+
[source_image_file]
|
66
|
+
end
|
58
67
|
end
|
59
68
|
end
|
60
69
|
end
|
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
|
19
19
|
spec.required_ruby_version = '~> 2.1'
|
20
20
|
|
21
|
-
spec.add_runtime_dependency 'pageflow', '~> 14.x'
|
21
|
+
spec.add_runtime_dependency 'pageflow', '~> 14.3.x'
|
22
22
|
spec.add_runtime_dependency 'pageflow-external-links', '~> 2.x'
|
23
23
|
|
24
24
|
spec.add_development_dependency 'bundler', ['>= 1.0', '< 3']
|
@@ -39,4 +39,7 @@ Gem::Specification.new do |spec|
|
|
39
39
|
|
40
40
|
# Semantic versioning rake tasks
|
41
41
|
spec.add_development_dependency 'semmy', '~> 1.0'
|
42
|
+
|
43
|
+
# Freeze time in tests
|
44
|
+
spec.add_development_dependency 'timecop', '~> 0.7.1'
|
42
45
|
end
|
@@ -2,6 +2,12 @@ FactoryBot.modify do
|
|
2
2
|
fixtures = Pageflow::LinkmapPage::Engine.root.join('spec', 'support', 'fixtures')
|
3
3
|
|
4
4
|
factory :image_file do
|
5
|
+
trait :not_yet_uploaded do
|
6
|
+
attachment { nil }
|
7
|
+
file_name { 'image.jpg' }
|
8
|
+
state { 'uploading' }
|
9
|
+
end
|
10
|
+
|
5
11
|
trait :red_fixture do
|
6
12
|
attachment { File.open(fixtures.join('red.png')) }
|
7
13
|
end
|
@@ -2,11 +2,31 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
module Pageflow
|
4
4
|
module LinkmapPage
|
5
|
-
describe ColorMapFile,
|
5
|
+
describe ColorMapFile, perform_jobs: :except_enqued_at do
|
6
6
|
let(:red_from_palette) { 'f65b57' }
|
7
7
|
let(:green_from_palette) { '69a77b' }
|
8
8
|
|
9
9
|
describe 'process' do
|
10
|
+
it 're-schedules job if source image file is not uploaded yet' do
|
11
|
+
image_file = create(:image_file, :not_yet_uploaded)
|
12
|
+
color_map_file = create(:color_map_file, source_image_file: image_file)
|
13
|
+
|
14
|
+
color_map_file.process
|
15
|
+
|
16
|
+
expect(ProcessSourceImageFileJob)
|
17
|
+
.to have_been_enqueued.at(3.seconds.from_now)
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'fails if source image file failed' do
|
21
|
+
image_file = create(:image_file, :uploading_failed)
|
22
|
+
color_map_file = create(:color_map_file, source_image_file: image_file)
|
23
|
+
|
24
|
+
color_map_file.process
|
25
|
+
color_map_file.reload
|
26
|
+
|
27
|
+
expect(color_map_file).to be_failed
|
28
|
+
end
|
29
|
+
|
10
30
|
it 'remaps colors to fixed palette' do
|
11
31
|
image_file = create(:image_file, :red_fixture)
|
12
32
|
color_map_file = create(:color_map_file, source_image_file: image_file)
|
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
module Pageflow
|
4
4
|
module LinkmapPage
|
5
|
-
describe MaskedImageFile,
|
5
|
+
describe MaskedImageFile, perform_jobs: :except_enqued_at do
|
6
6
|
let :color_map_file do
|
7
7
|
color_map_image_file = create(:image_file, :color_map_fixture)
|
8
8
|
|
@@ -29,6 +29,54 @@ module Pageflow
|
|
29
29
|
let(:color_of_source_image) { '#ff0000' }
|
30
30
|
|
31
31
|
describe 'process' do
|
32
|
+
it 're-schedules job if source image file is not uploaded yet' do
|
33
|
+
image_file = create(:image_file, :not_yet_uploaded)
|
34
|
+
masked_image_file = create(:masked_image_file,
|
35
|
+
color_map_file: color_map_file,
|
36
|
+
source_image_file: image_file)
|
37
|
+
|
38
|
+
masked_image_file.process
|
39
|
+
|
40
|
+
expect(ProcessSourceImageFileJob)
|
41
|
+
.to have_been_enqueued.at(3.seconds.from_now)
|
42
|
+
end
|
43
|
+
|
44
|
+
it 're-schedules job if color map file is not ready yet' do
|
45
|
+
color_map_file = create(:color_map_file, state: 'processing')
|
46
|
+
masked_image_file = create(:masked_image_file,
|
47
|
+
color_map_file: color_map_file,
|
48
|
+
source_image_file: single_color_source_image_file)
|
49
|
+
|
50
|
+
masked_image_file.process
|
51
|
+
|
52
|
+
expect(ProcessSourceImageFileJob)
|
53
|
+
.to have_been_enqueued.at(3.seconds.from_now)
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'fails if source image file failed' do
|
57
|
+
image_file = create(:image_file, :uploading_failed)
|
58
|
+
masked_image_file = create(:masked_image_file,
|
59
|
+
color_map_file: color_map_file,
|
60
|
+
source_image_file: image_file)
|
61
|
+
|
62
|
+
masked_image_file.process
|
63
|
+
masked_image_file.reload
|
64
|
+
|
65
|
+
expect(masked_image_file).to be_failed
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'fails if color map file failed' do
|
69
|
+
color_map_file = create(:color_map_file, state: 'processing_failed')
|
70
|
+
masked_image_file = create(:masked_image_file,
|
71
|
+
color_map_file: color_map_file,
|
72
|
+
source_image_file: single_color_source_image_file)
|
73
|
+
|
74
|
+
masked_image_file.process
|
75
|
+
masked_image_file.reload
|
76
|
+
|
77
|
+
expect(masked_image_file).to be_failed
|
78
|
+
end
|
79
|
+
|
32
80
|
it 'creates images for each color in color map masked to the area of that color' do
|
33
81
|
masked_image_file = create(:masked_image_file,
|
34
82
|
color_map_file: color_map_file,
|
@@ -9,13 +9,47 @@ module Pageflow
|
|
9
9
|
output = <<-OUTPUT.unindent
|
10
10
|
# ImageMagick pixel enumeration: 3,1,255,srgba
|
11
11
|
0,0: (246,91,87,1) #F65B57 srgba(246,91,87,1)
|
12
|
-
1,0: (105,167,123,1) #
|
12
|
+
1,0: (105,167,123,1) #69A77B66 srgba(105,167,123,0.4)
|
13
|
+
OUTPUT
|
14
|
+
|
15
|
+
result = Colors::ConvertOutput.parse_unique_colors(output)
|
16
|
+
|
17
|
+
expect(result).to eq(%w(69a77b66 f65b57))
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'filters out transparent color' do
|
21
|
+
output = <<-OUTPUT.unindent
|
22
|
+
# ImageMagick pixel enumeration: 3,1,255,srgba
|
23
|
+
0,0: (246,91,87,1) #F65B57 srgba(246,91,87,1)
|
13
24
|
2,0: (0,0,0,0) #00000000 none
|
14
25
|
OUTPUT
|
15
26
|
|
16
27
|
result = Colors::ConvertOutput.parse_unique_colors(output)
|
17
28
|
|
18
|
-
expect(result).to eq(%w(
|
29
|
+
expect(result).to eq(%w(f65b57))
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'removes trailing FF of rgba string added between ImageMagick 6.7 and 6.9' do
|
33
|
+
output = <<-OUTPUT.unindent
|
34
|
+
# ImageMagick pixel enumeration: 589,1,65535,srgba
|
35
|
+
0,0: (0,30069,48573,65535) #0075BDFF srgba(0,117,189,1)
|
36
|
+
1,0: (257,30069,48573,65535) #0175BDFF srgba(1,117,189,1)
|
37
|
+
OUTPUT
|
38
|
+
|
39
|
+
result = Colors::ConvertOutput.parse_unique_colors(output)
|
40
|
+
|
41
|
+
expect(result).to eq(%w(0075bd 0175bd))
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'does not remove trailing FF of rgb string ' do
|
45
|
+
output = <<-OUTPUT.unindent
|
46
|
+
# ImageMagick pixel enumeration: 589,1,65535,srgba
|
47
|
+
0,0: (0,30069,48573,65535) #0075FF srgba(0,117,255,1)
|
48
|
+
OUTPUT
|
49
|
+
|
50
|
+
result = Colors::ConvertOutput.parse_unique_colors(output)
|
51
|
+
|
52
|
+
expect(result).to eq(%w(0075ff))
|
19
53
|
end
|
20
54
|
end
|
21
55
|
|
@@ -0,0 +1,11 @@
|
|
1
|
+
RSpec.configure do |config|
|
2
|
+
config.before(:each) do |example|
|
3
|
+
ActiveJob::Base.queue_adapter = :test
|
4
|
+
queue_adapter = ActiveJob::Base.queue_adapter
|
5
|
+
|
6
|
+
queue_adapter.perform_enqueued_jobs = !!example.metadata[:perform_jobs]
|
7
|
+
|
8
|
+
queue_adapter.perform_enqueued_at_jobs = (example.metadata[:perform_jobs] &&
|
9
|
+
example.metadata[:perform_jobs] != :except_enqued_at)
|
10
|
+
end
|
11
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pageflow-linkmap-page
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Codevise Solutions Ltd.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-07-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pageflow
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 14.x
|
19
|
+
version: 14.3.x
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 14.x
|
26
|
+
version: 14.3.x
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: pageflow-external-links
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -184,6 +184,20 @@ dependencies:
|
|
184
184
|
- - "~>"
|
185
185
|
- !ruby/object:Gem::Version
|
186
186
|
version: '1.0'
|
187
|
+
- !ruby/object:Gem::Dependency
|
188
|
+
name: timecop
|
189
|
+
requirement: !ruby/object:Gem::Requirement
|
190
|
+
requirements:
|
191
|
+
- - "~>"
|
192
|
+
- !ruby/object:Gem::Version
|
193
|
+
version: 0.7.1
|
194
|
+
type: :development
|
195
|
+
prerelease: false
|
196
|
+
version_requirements: !ruby/object:Gem::Requirement
|
197
|
+
requirements:
|
198
|
+
- - "~>"
|
199
|
+
- !ruby/object:Gem::Version
|
200
|
+
version: 0.7.1
|
187
201
|
description:
|
188
202
|
email:
|
189
203
|
- info@codevise.de
|
@@ -328,9 +342,10 @@ files:
|
|
328
342
|
- spec/pageflow/linkmap_page/paperclip_processors/colors_spec.rb
|
329
343
|
- spec/pageflow/linkmap_page/progress_spec.rb
|
330
344
|
- spec/spec_helper.rb
|
345
|
+
- spec/support/config/active_job.rb
|
331
346
|
- spec/support/config/devise.rb
|
332
347
|
- spec/support/config/factory_bot.rb
|
333
|
-
- spec/support/config/
|
348
|
+
- spec/support/config/timecop.rb
|
334
349
|
- spec/support/fixtures/black_dots.png
|
335
350
|
- spec/support/fixtures/color_map.png
|
336
351
|
- spec/support/fixtures/dots_and_lines.png
|
@@ -374,9 +389,10 @@ test_files:
|
|
374
389
|
- spec/pageflow/linkmap_page/paperclip_processors/colors_spec.rb
|
375
390
|
- spec/pageflow/linkmap_page/progress_spec.rb
|
376
391
|
- spec/spec_helper.rb
|
392
|
+
- spec/support/config/active_job.rb
|
377
393
|
- spec/support/config/devise.rb
|
378
394
|
- spec/support/config/factory_bot.rb
|
379
|
-
- spec/support/config/
|
395
|
+
- spec/support/config/timecop.rb
|
380
396
|
- spec/support/fixtures/black_dots.png
|
381
397
|
- spec/support/fixtures/color_map.png
|
382
398
|
- spec/support/fixtures/dots_and_lines.png
|