gruff 0.10.0-java → 0.13.0-java
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/.gitignore +1 -0
- data/.rubocop.yml +24 -4
- data/.rubocop_todo.yml +94 -42
- data/.travis.yml +3 -6
- data/CHANGELOG.md +35 -0
- data/README.md +10 -1
- data/assets/fonts/LICENSE.txt +202 -0
- data/assets/fonts/Roboto-Bold.ttf +0 -0
- data/assets/fonts/Roboto-Regular.ttf +0 -0
- data/gruff.gemspec +8 -3
- data/lib/gruff.rb +8 -3
- data/lib/gruff/accumulator_bar.rb +0 -2
- data/lib/gruff/area.rb +2 -6
- data/lib/gruff/bar.rb +35 -35
- data/lib/gruff/base.rb +295 -188
- data/lib/gruff/bezier.rb +0 -4
- data/lib/gruff/bullet.rb +12 -14
- data/lib/gruff/dot.rb +8 -33
- data/lib/gruff/helper/bar_conversion.rb +34 -19
- data/lib/gruff/helper/bar_value_label.rb +68 -0
- data/lib/gruff/histogram.rb +25 -25
- data/lib/gruff/line.rb +29 -26
- data/lib/gruff/mini/bar.rb +1 -1
- data/lib/gruff/mini/legend.rb +9 -4
- data/lib/gruff/mini/pie.rb +1 -2
- data/lib/gruff/mini/side_bar.rb +1 -2
- data/lib/gruff/net.rb +19 -20
- data/lib/gruff/patch/rmagick.rb +22 -24
- data/lib/gruff/patch/string.rb +7 -4
- data/lib/gruff/photo_bar.rb +12 -16
- data/lib/gruff/pie.rb +19 -30
- data/lib/gruff/renderer/bezier.rb +4 -3
- data/lib/gruff/renderer/circle.rb +4 -3
- data/lib/gruff/renderer/dash_line.rb +4 -3
- data/lib/gruff/renderer/dot.rb +4 -3
- data/lib/gruff/renderer/ellipse.rb +4 -3
- data/lib/gruff/renderer/line.rb +14 -5
- data/lib/gruff/renderer/polygon.rb +5 -4
- data/lib/gruff/renderer/polyline.rb +4 -3
- data/lib/gruff/renderer/rectangle.rb +3 -2
- data/lib/gruff/renderer/renderer.rb +31 -38
- data/lib/gruff/renderer/text.rb +39 -9
- data/lib/gruff/scatter.rb +30 -44
- data/lib/gruff/scene.rb +0 -1
- data/lib/gruff/side_bar.rb +60 -45
- data/lib/gruff/side_stacked_bar.rb +30 -19
- data/lib/gruff/spider.rb +18 -17
- data/lib/gruff/stacked_area.rb +8 -7
- data/lib/gruff/stacked_bar.rb +28 -18
- data/lib/gruff/store/{base_data.rb → basic_data.rb} +9 -7
- data/lib/gruff/store/custom_data.rb +8 -6
- data/lib/gruff/store/store.rb +6 -5
- data/lib/gruff/store/xy_data.rb +10 -7
- data/lib/gruff/version.rb +1 -1
- metadata +36 -9
- data/Rakefile +0 -23
- data/docker/Dockerfile +0 -14
- data/docker/build.sh +0 -4
- data/docker/launch.sh +0 -4
- data/lib/gruff/helper/bar_value_label_mixin.rb +0 -30
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module Gruff
|
|
4
|
-
# @private
|
|
5
4
|
class Store
|
|
6
|
-
|
|
5
|
+
# @private
|
|
6
|
+
class BasicData < Struct.new(:label, :points, :color)
|
|
7
7
|
def initialize(label, points, color)
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
super(label.to_s, Array(points), color)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def empty?
|
|
12
|
+
points.empty?
|
|
11
13
|
end
|
|
12
14
|
|
|
13
15
|
def columns
|
|
@@ -22,9 +24,9 @@ module Gruff
|
|
|
22
24
|
points.compact.max
|
|
23
25
|
end
|
|
24
26
|
|
|
25
|
-
def normalize(
|
|
27
|
+
def normalize(minimum:, spread:)
|
|
26
28
|
norm_points = points.map do |point|
|
|
27
|
-
point.nil? ? nil : (point.to_f -
|
|
29
|
+
point.nil? ? nil : (point.to_f - minimum.to_f) / spread
|
|
28
30
|
end
|
|
29
31
|
|
|
30
32
|
self.class.new(label, norm_points, color)
|
|
@@ -2,12 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
module Gruff
|
|
4
4
|
class Store
|
|
5
|
+
# @private
|
|
5
6
|
class CustomData < Struct.new(:label, :points, :color, :custom)
|
|
6
7
|
def initialize(label, points, color, custom = nil)
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
super(label.to_s, Array(points), color, custom)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def empty?
|
|
12
|
+
points.empty?
|
|
11
13
|
end
|
|
12
14
|
|
|
13
15
|
def columns
|
|
@@ -22,9 +24,9 @@ module Gruff
|
|
|
22
24
|
points.compact.max
|
|
23
25
|
end
|
|
24
26
|
|
|
25
|
-
def normalize(
|
|
27
|
+
def normalize(minimum:, spread:)
|
|
26
28
|
norm_points = points.map do |point|
|
|
27
|
-
point.nil? ? nil : (point.to_f -
|
|
29
|
+
point.nil? ? nil : (point.to_f - minimum.to_f) / spread
|
|
28
30
|
end
|
|
29
31
|
|
|
30
32
|
self.class.new(label, norm_points, color, custom)
|
data/lib/gruff/store/store.rb
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module Gruff
|
|
4
|
+
# @private
|
|
4
5
|
class Store
|
|
5
6
|
attr_reader :data, :norm_data
|
|
6
7
|
|
|
@@ -15,10 +16,10 @@ module Gruff
|
|
|
15
16
|
@data << @data_class.new(*args)
|
|
16
17
|
end
|
|
17
18
|
|
|
18
|
-
def normalize(
|
|
19
|
+
def normalize(**keywords)
|
|
19
20
|
unless @normalized
|
|
20
21
|
@data.each do |data_row|
|
|
21
|
-
@norm_data << data_row.normalize(
|
|
22
|
+
@norm_data << data_row.normalize(**keywords)
|
|
22
23
|
end
|
|
23
24
|
|
|
24
25
|
@normalized = true
|
|
@@ -26,7 +27,7 @@ module Gruff
|
|
|
26
27
|
end
|
|
27
28
|
|
|
28
29
|
def empty?
|
|
29
|
-
@data.empty?
|
|
30
|
+
@data.all?(&:empty?)
|
|
30
31
|
end
|
|
31
32
|
|
|
32
33
|
def length
|
|
@@ -56,11 +57,11 @@ module Gruff
|
|
|
56
57
|
end
|
|
57
58
|
|
|
58
59
|
def sort_data!
|
|
59
|
-
@data = @data.sort_by { |a| -a.points.
|
|
60
|
+
@data = @data.sort_by { |a| -a.points.sum(&:to_f) }
|
|
60
61
|
end
|
|
61
62
|
|
|
62
63
|
def sort_norm_data!
|
|
63
|
-
@norm_data = @norm_data.sort_by { |a| -a.points.
|
|
64
|
+
@norm_data = @norm_data.sort_by { |a| -a.points.sum(&:to_f) }
|
|
64
65
|
end
|
|
65
66
|
|
|
66
67
|
def reverse!
|
data/lib/gruff/store/xy_data.rb
CHANGED
|
@@ -2,12 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
module Gruff
|
|
4
4
|
class Store
|
|
5
|
+
# @private
|
|
5
6
|
class XYData < Struct.new(:label, :y_points, :color, :x_points)
|
|
6
7
|
def initialize(label, y_points, color, x_points = nil)
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
self.color = color
|
|
10
|
-
self.x_points = Array(x_points) if x_points
|
|
8
|
+
x_points = Array(x_points) if x_points
|
|
9
|
+
super(label.to_s, Array(y_points), color, x_points)
|
|
11
10
|
end
|
|
12
11
|
|
|
13
12
|
def x_points
|
|
@@ -18,6 +17,10 @@ module Gruff
|
|
|
18
17
|
x_points.zip(y_points)
|
|
19
18
|
end
|
|
20
19
|
|
|
20
|
+
def empty?
|
|
21
|
+
y_points.empty?
|
|
22
|
+
end
|
|
23
|
+
|
|
21
24
|
def columns
|
|
22
25
|
y_points.length
|
|
23
26
|
end
|
|
@@ -40,12 +43,12 @@ module Gruff
|
|
|
40
43
|
x_points.compact.max
|
|
41
44
|
end
|
|
42
45
|
|
|
43
|
-
def normalize(
|
|
46
|
+
def normalize(minimum_x:, minimum_y:, spread_x:, spread_y:)
|
|
44
47
|
norm_x_points = x_points.map do |x|
|
|
45
|
-
x.nil? ? nil : (x.to_f -
|
|
48
|
+
x.nil? ? nil : (x.to_f - minimum_x.to_f) / spread_x
|
|
46
49
|
end
|
|
47
50
|
norm_y_points = y_points.map do |y|
|
|
48
|
-
y.nil? ? nil : (y.to_f -
|
|
51
|
+
y.nil? ? nil : (y.to_f - minimum_y.to_f) / spread_y
|
|
49
52
|
end
|
|
50
53
|
|
|
51
54
|
self.class.new(label, norm_y_points, color, norm_x_points)
|
data/lib/gruff/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: gruff
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.13.0
|
|
5
5
|
platform: java
|
|
6
6
|
authors:
|
|
7
7
|
- Geoffrey Grosenbach
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date:
|
|
12
|
+
date: 2021-05-09 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -53,6 +53,20 @@ dependencies:
|
|
|
53
53
|
- - ">="
|
|
54
54
|
- !ruby/object:Gem::Version
|
|
55
55
|
version: '0'
|
|
56
|
+
- !ruby/object:Gem::Dependency
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - ">="
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0'
|
|
62
|
+
name: parallel
|
|
63
|
+
type: :development
|
|
64
|
+
prerelease: false
|
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
66
|
+
requirements:
|
|
67
|
+
- - ">="
|
|
68
|
+
- !ruby/object:Gem::Version
|
|
69
|
+
version: '0'
|
|
56
70
|
- !ruby/object:Gem::Dependency
|
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
|
58
72
|
requirements:
|
|
@@ -67,6 +81,20 @@ dependencies:
|
|
|
67
81
|
- - ">="
|
|
68
82
|
- !ruby/object:Gem::Version
|
|
69
83
|
version: '0'
|
|
84
|
+
- !ruby/object:Gem::Dependency
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - ">="
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '0'
|
|
90
|
+
name: simplecov
|
|
91
|
+
type: :development
|
|
92
|
+
prerelease: false
|
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
94
|
+
requirements:
|
|
95
|
+
- - ">="
|
|
96
|
+
- !ruby/object:Gem::Version
|
|
97
|
+
version: '0'
|
|
70
98
|
- !ruby/object:Gem::Dependency
|
|
71
99
|
requirement: !ruby/object:Gem::Requirement
|
|
72
100
|
requirements:
|
|
@@ -99,13 +127,12 @@ files:
|
|
|
99
127
|
- Gemfile
|
|
100
128
|
- MIT-LICENSE
|
|
101
129
|
- README.md
|
|
102
|
-
-
|
|
130
|
+
- assets/fonts/LICENSE.txt
|
|
131
|
+
- assets/fonts/Roboto-Bold.ttf
|
|
132
|
+
- assets/fonts/Roboto-Regular.ttf
|
|
103
133
|
- assets/plastik/blue.png
|
|
104
134
|
- assets/plastik/green.png
|
|
105
135
|
- assets/plastik/red.png
|
|
106
|
-
- docker/Dockerfile
|
|
107
|
-
- docker/build.sh
|
|
108
|
-
- docker/launch.sh
|
|
109
136
|
- gruff.gemspec
|
|
110
137
|
- init.rb
|
|
111
138
|
- lib/gruff.rb
|
|
@@ -117,7 +144,7 @@ files:
|
|
|
117
144
|
- lib/gruff/bullet.rb
|
|
118
145
|
- lib/gruff/dot.rb
|
|
119
146
|
- lib/gruff/helper/bar_conversion.rb
|
|
120
|
-
- lib/gruff/helper/
|
|
147
|
+
- lib/gruff/helper/bar_value_label.rb
|
|
121
148
|
- lib/gruff/helper/stacked_mixin.rb
|
|
122
149
|
- lib/gruff/histogram.rb
|
|
123
150
|
- lib/gruff/line.rb
|
|
@@ -148,7 +175,7 @@ files:
|
|
|
148
175
|
- lib/gruff/spider.rb
|
|
149
176
|
- lib/gruff/stacked_area.rb
|
|
150
177
|
- lib/gruff/stacked_bar.rb
|
|
151
|
-
- lib/gruff/store/
|
|
178
|
+
- lib/gruff/store/basic_data.rb
|
|
152
179
|
- lib/gruff/store/custom_data.rb
|
|
153
180
|
- lib/gruff/store/store.rb
|
|
154
181
|
- lib/gruff/store/xy_data.rb
|
|
@@ -169,7 +196,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
169
196
|
requirements:
|
|
170
197
|
- - ">="
|
|
171
198
|
- !ruby/object:Gem::Version
|
|
172
|
-
version:
|
|
199
|
+
version: 2.4.0
|
|
173
200
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
174
201
|
requirements:
|
|
175
202
|
- - ">="
|
data/Rakefile
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'bundler/gem_tasks'
|
|
4
|
-
require 'rake/testtask'
|
|
5
|
-
require 'rake/clean'
|
|
6
|
-
|
|
7
|
-
CLEAN.concat %w[pkg test/output/*]
|
|
8
|
-
|
|
9
|
-
desc 'Run tests'
|
|
10
|
-
task default: :test
|
|
11
|
-
|
|
12
|
-
task gem: :build
|
|
13
|
-
|
|
14
|
-
Rake::TestTask.new
|
|
15
|
-
|
|
16
|
-
namespace :test do
|
|
17
|
-
desc 'Run mini tests'
|
|
18
|
-
task mini: :clean do
|
|
19
|
-
Dir['test/test_mini*'].each do |file|
|
|
20
|
-
system "ruby #{file}"
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
data/docker/Dockerfile
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
FROM ubuntu:18.04
|
|
2
|
-
|
|
3
|
-
RUN apt update && apt install -y gcc libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev \
|
|
4
|
-
libmagickwand-dev wget git pkg-config && \
|
|
5
|
-
wget https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.1.tar.gz && \
|
|
6
|
-
tar xvzf ruby-2.7.1.tar.gz && \
|
|
7
|
-
cd ruby-2.7.1 && \
|
|
8
|
-
./configure --prefix=/usr --disable-install-rdoc && \
|
|
9
|
-
make -j install && \
|
|
10
|
-
cd .. && rm -rf ruby-2.7.1 && \
|
|
11
|
-
gem install bundler -v 1.17.3 && \
|
|
12
|
-
/usr/bin/bundle config set --local path 'vendor/bundle'
|
|
13
|
-
|
|
14
|
-
WORKDIR /opt/gruff
|
data/docker/build.sh
DELETED
data/docker/launch.sh
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
# @private
|
|
4
|
-
module Gruff::Base::BarValueLabelMixin
|
|
5
|
-
class BarValueLabel
|
|
6
|
-
attr_accessor :coordinates, :values
|
|
7
|
-
|
|
8
|
-
def initialize(size, bar_width)
|
|
9
|
-
@coordinates = Array.new(size)
|
|
10
|
-
@values = Hash.new(0)
|
|
11
|
-
@bar_width = bar_width
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def prepare_rendering(format)
|
|
15
|
-
@coordinates.each_with_index do |(left_x, left_y, right_x, _right_y), index|
|
|
16
|
-
value = @values[index]
|
|
17
|
-
val = (format || '%.2f') % value
|
|
18
|
-
y = value >= 0 ? left_y - 30 : left_y + 12
|
|
19
|
-
yield left_x + (right_x - left_x) / 2, y, val.commify
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def prepare_sidebar_rendering(format)
|
|
24
|
-
@coordinates.each_with_index do |(_left_x, _left_y, right_x, right_y), index|
|
|
25
|
-
val = (format || '%.2f') % @values[index]
|
|
26
|
-
yield right_x + 40, right_y - @bar_width / 2, val.commify
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|