glimmer-libui-cc-graphs_and_charts 0.2.2 → 0.2.3
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 +4 -0
- data/README.md +6 -2
- data/VERSION +1 -1
- data/glimmer-libui-cc-graphs_and_charts.gemspec +3 -3
- data/lib/glimmer/view/bar_chart.rb +57 -15
- 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: c3b89df50fd8dd9d1670fd4e54568fdf90538dfb8a1566bbb7431826c8578f2e
|
4
|
+
data.tar.gz: 52820e7aaef7a1edbead1748cc33fc50408d7dd8a7763a93db53154cf4232752
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5d5ab5c841bd63fc6154b326cd8ff7cb175dd727292a6bfbd95082274f42127f850a321de30224099904064c8809228d5a063cf353cb0296eb31e675b4e227e9
|
7
|
+
data.tar.gz: b690434592d74c43929567d856771528e4e31792d575682983838a4fe619fd319f0935e594f8413f2ad7904b59b4ac13ff345e665de570edcdbeb9ef354b7248
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## 0.2.3
|
4
|
+
|
5
|
+
- Automatically scale number of `bar_chart` horizontal grid markers so that if the chart width gets small enough for them to run into each other, less of them are displayed
|
6
|
+
|
3
7
|
## 0.2.2
|
4
8
|
|
5
9
|
- Display `bar_chart` axis labels `x_axis_label` and `y_axis_label`
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Graphs and Charts 0.2.
|
1
|
+
# Graphs and Charts 0.2.3 (Alpha)
|
2
2
|
## [Glimmer DSL for LibUI](https://github.com/AndyObtiva/glimmer-dsl-libui) Custom Controls
|
3
3
|
[](http://badge.fury.io/rb/glimmer-libui-cc-graphs_and_charts)
|
4
4
|
[](https://gitter.im/AndyObtiva/glimmer?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
@@ -14,7 +14,7 @@ Graphs and Charts (Custom Controls) for [Glimmer DSL for LibUI](https://github.c
|
|
14
14
|
Add this line to Bundler `Gemfile`:
|
15
15
|
|
16
16
|
```ruby
|
17
|
-
gem 'glimmer-libui-cc-graphs_and_charts', '~> 0.2.
|
17
|
+
gem 'glimmer-libui-cc-graphs_and_charts', '~> 0.2.3'
|
18
18
|
```
|
19
19
|
|
20
20
|
Run:
|
@@ -50,6 +50,8 @@ You can then nest `bar_chart` under `window` or some container like `vertical_bo
|
|
50
50
|
bar_chart(
|
51
51
|
width: 900,
|
52
52
|
height: 300,
|
53
|
+
x_axis_label: 'Month',
|
54
|
+
y_axis_label: 'New Customer Accounts',
|
53
55
|
values: {
|
54
56
|
'Jan' => 30,
|
55
57
|
'Feb' => 49,
|
@@ -87,6 +89,8 @@ class BasicBarChart
|
|
87
89
|
@bar_chart = bar_chart(
|
88
90
|
width: 900,
|
89
91
|
height: 300,
|
92
|
+
x_axis_label: 'Month',
|
93
|
+
y_axis_label: 'New Customer Accounts',
|
90
94
|
values: {
|
91
95
|
'Jan' => 30,
|
92
96
|
'Feb' => 49,
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.3
|
@@ -2,16 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: glimmer-libui-cc-graphs_and_charts 0.2.
|
5
|
+
# stub: glimmer-libui-cc-graphs_and_charts 0.2.3 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "glimmer-libui-cc-graphs_and_charts".freeze
|
9
|
-
s.version = "0.2.
|
9
|
+
s.version = "0.2.3".freeze
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib".freeze]
|
13
13
|
s.authors = ["Andy Maleh".freeze]
|
14
|
-
s.date = "2024-01-
|
14
|
+
s.date = "2024-01-03"
|
15
15
|
s.description = "Graphs and Charts (Custom Controls) for Glimmer DSL for LibUI, like Line Graph.".freeze
|
16
16
|
s.email = "andy.am@gmail.com".freeze
|
17
17
|
s.extra_rdoc_files = [
|
@@ -121,8 +121,9 @@ module Glimmer
|
|
121
121
|
@grid_marker_number_values = nil
|
122
122
|
@grid_marker_numbers = nil
|
123
123
|
@chart_stroke_marker_values = nil
|
124
|
-
@
|
124
|
+
@y_axis_mod_values = nil
|
125
125
|
@y_value_max = nil
|
126
|
+
@bars_data = nil
|
126
127
|
end
|
127
128
|
|
128
129
|
def calculate_dynamic_options
|
@@ -183,7 +184,7 @@ module Glimmer
|
|
183
184
|
@grid_marker_number_values ||= []
|
184
185
|
# @grid_marker_numbers ||= []
|
185
186
|
@chart_stroke_marker_values ||= []
|
186
|
-
@
|
187
|
+
@y_axis_mod_values ||= []
|
187
188
|
y_axis_grid_marker_points.each_with_index do |marker_point, index|
|
188
189
|
@grid_marker_number_values[index] ||= begin
|
189
190
|
value = (y_axis_grid_marker_points.size - index).to_i
|
@@ -199,11 +200,11 @@ module Glimmer
|
|
199
200
|
color_hash[:thickness] = (index != y_axis_grid_marker_points.size - 1 ? 2 : 1) if color_hash[:thickness].nil?
|
200
201
|
end
|
201
202
|
chart_stroke_marker_value = @chart_stroke_marker_values[index]
|
202
|
-
@
|
203
|
-
mod_value_multiplier = ((y_axis_grid_marker_points.size /
|
203
|
+
@y_axis_mod_values[index] ||= begin
|
204
|
+
mod_value_multiplier = ((y_axis_grid_marker_points.size / y_axis_max_marker_count) + 1)
|
204
205
|
[(5 * mod_value_multiplier), 1].max
|
205
206
|
end
|
206
|
-
mod_value = @
|
207
|
+
mod_value = @y_axis_mod_values[index]
|
207
208
|
comparison_value = (mod_value > 2) ? 0 : 1
|
208
209
|
if mod_value > 2
|
209
210
|
if grid_marker_number_value % mod_value == comparison_value
|
@@ -284,19 +285,24 @@ module Glimmer
|
|
284
285
|
}
|
285
286
|
}
|
286
287
|
end
|
287
|
-
|
288
|
-
|
288
|
+
|
289
|
+
def y_axis_max_marker_count
|
290
|
+
[(0.15*height_drawable).to_i, 1].max
|
289
291
|
end
|
290
292
|
|
291
293
|
def bars
|
292
|
-
|
294
|
+
@bars_data = calculate_bars_data
|
295
|
+
@bars_data.each do |bar_data|
|
296
|
+
bar(bar_data)
|
297
|
+
end
|
298
|
+
x_axis_grid_markers(@bars_data)
|
299
|
+
end
|
300
|
+
|
301
|
+
def calculate_bars_data
|
302
|
+
values.each_with_index.map do |(x_value, y_value), index|
|
293
303
|
x = chart_y_axis_label_padding_width + chart_grid_marker_padding_width + chart_padding_width + (index * bar_width_including_padding) + bar_padding_width
|
294
304
|
bar_height = y_value * y_resolution
|
295
305
|
y = height - chart_grid_marker_padding_height - chart_x_axis_label_padding_height - chart_padding_height - bar_height
|
296
|
-
rectangle(x, y, bar_width, bar_height) {
|
297
|
-
fill chart_color_bar
|
298
|
-
}
|
299
|
-
|
300
306
|
x_axis_grid_marker_text = x_value.to_s
|
301
307
|
grid_marker_number_font = marker_font
|
302
308
|
x_axis_grid_marker_text_size = estimate_width_of_text(x_axis_grid_marker_text, grid_marker_number_font)
|
@@ -304,9 +310,45 @@ module Glimmer
|
|
304
310
|
x_axis_grid_marker_x = middle_of_bar_x - x_axis_grid_marker_text_size/2.0
|
305
311
|
middle_of_x_axis_grid_marker_padding = height - chart_grid_marker_padding_height/2.0 - chart_x_axis_label_padding_height
|
306
312
|
x_axis_grid_marker_y = middle_of_x_axis_grid_marker_padding - chart_font_marker_text[:size]/2.0 - 7.0
|
307
|
-
|
308
|
-
|
309
|
-
|
313
|
+
{
|
314
|
+
index: index,
|
315
|
+
x: x,
|
316
|
+
y: y,
|
317
|
+
bar_width: bar_width,
|
318
|
+
bar_height: bar_height,
|
319
|
+
x_axis_grid_marker_x: x_axis_grid_marker_x,
|
320
|
+
x_axis_grid_marker_y: x_axis_grid_marker_y,
|
321
|
+
x_axis_grid_marker_text: x_axis_grid_marker_text,
|
322
|
+
x_axis_grid_marker_text_size: x_axis_grid_marker_text_size,
|
323
|
+
}
|
324
|
+
end
|
325
|
+
end
|
326
|
+
|
327
|
+
def bar(bar_data)
|
328
|
+
rectangle(bar_data[:x], bar_data[:y], bar_data[:bar_width], bar_data[:bar_height]) {
|
329
|
+
fill chart_color_bar
|
330
|
+
}
|
331
|
+
end
|
332
|
+
|
333
|
+
def x_axis_grid_markers(bars_data)
|
334
|
+
skip_count = 0
|
335
|
+
collision_detected = true
|
336
|
+
while collision_detected
|
337
|
+
collision_detected = bars_data.each_with_index.any? do |bar_data, index|
|
338
|
+
next if index == 0
|
339
|
+
last_bar_text_data = bars_data[index - 1]
|
340
|
+
bar_data[:x_axis_grid_marker_x] < (last_bar_text_data[:x_axis_grid_marker_x] + last_bar_text_data[:x_axis_grid_marker_text_size] + 5)
|
341
|
+
end
|
342
|
+
if collision_detected
|
343
|
+
skip_count += 1
|
344
|
+
bars_data = bars_data.each_with_index.select {|bar_data, index| index % (skip_count+1) == 0 }.map(&:first)
|
345
|
+
end
|
346
|
+
end
|
347
|
+
x_axis_grid_marker_font = marker_font
|
348
|
+
bars_data.each do |bar_data|
|
349
|
+
text(bar_data[:x_axis_grid_marker_x], bar_data[:x_axis_grid_marker_y], bar_data[:x_axis_grid_marker_text_size]) {
|
350
|
+
string(bar_data[:x_axis_grid_marker_text]) {
|
351
|
+
font x_axis_grid_marker_font
|
310
352
|
color chart_color_marker_text
|
311
353
|
}
|
312
354
|
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: glimmer-libui-cc-graphs_and_charts
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andy Maleh
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-01-
|
11
|
+
date: 2024-01-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: glimmer-dsl-libui
|