chart_bibz 0.1.0 → 0.1.1
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/lib/chart_bibz.rb +1 -0
- data/lib/chart_bibz/helpers/chart_helper.rb +17 -1
- data/lib/chart_bibz/version.rb +3 -1
- data/lib/chart_bibz/view_components/application_view_component.rb +22 -1
- data/lib/chart_bibz/view_components/canvas_view_component.rb +34 -3
- data/lib/chart_bibz/view_components/chart_view_component.rb +31 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8340301db148379344f907087206294a3f9936ab872e7ba093224fba40623d5a
|
4
|
+
data.tar.gz: 9bec2b998ced586af65237ccd0667da5658cafdb8a25c205debe670fdc0601e0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bfe263f9fe1f7ae798630a32c82af6b8b3e95b058bad2b93afbb6bfa8f9d89e41376bbda4d411af4cc908c47bdc1b923c8f35a515b24c611773003405f2259b1
|
7
|
+
data.tar.gz: 996431bc8d191d857c75554de16c1f458d19c37cf4e60239432f56b917c30cf5c0ee3d9d6d89ff5bb702e937216f685584a464586d481b7fa1f4156310ca3452
|
data/lib/chart_bibz.rb
CHANGED
@@ -1,8 +1,24 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
# The Main module
|
3
4
|
module ChartBibz
|
5
|
+
# Add the Helpers module to Chart Bibz
|
4
6
|
module Helpers
|
5
|
-
|
7
|
+
# Helper for chart bibz
|
8
|
+
module ChartHelper
|
9
|
+
# Generate the html of the canvas
|
10
|
+
#
|
11
|
+
# @example Generate the canvas
|
12
|
+
# chart {datasets: {data: [1,2,3]}}, {type: :bar}, {class: "My-chart"}
|
13
|
+
#
|
14
|
+
# @see ChartBibz::ViewComponents::ChartViewComponent#initialize
|
15
|
+
#
|
16
|
+
# @param [Hash] data
|
17
|
+
# @param [Hash] options
|
18
|
+
# @param [Hash] html_options
|
19
|
+
# @return [String] HTML
|
20
|
+
#
|
21
|
+
# @api public
|
6
22
|
def chart(data = {}, options = {}, html_options = {})
|
7
23
|
ChartBibz::ViewComponents::ChartViewComponent.new(data, options, html_options).render
|
8
24
|
end
|
data/lib/chart_bibz/version.rb
CHANGED
@@ -1,16 +1,37 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module ChartBibz
|
4
|
+
# A batch of view components
|
4
5
|
module ViewComponents
|
5
|
-
|
6
|
+
# The view components base
|
7
|
+
class ApplicationViewComponent
|
6
8
|
include ActionView::Helpers::TagHelper
|
7
9
|
include ActionView::Helpers::CaptureHelper
|
8
10
|
include ActionView::Helpers::TextHelper
|
9
11
|
include ActionView::Helpers::TranslationHelper
|
12
|
+
|
13
|
+
# ActionView::Helpers::TagHelper need of this
|
14
|
+
#
|
15
|
+
# @example
|
16
|
+
# tag.div "content"
|
17
|
+
#
|
18
|
+
# @param [Object] output_buffer
|
19
|
+
# @return [Object] the output_buffer
|
20
|
+
#
|
21
|
+
# @api public
|
10
22
|
attr_accessor :output_buffer
|
11
23
|
|
12
24
|
protected
|
13
25
|
|
26
|
+
# Create a list of classes in a string
|
27
|
+
#
|
28
|
+
# @example Generate the canves
|
29
|
+
# join_classes(["test1", "test2"], :test3, "test4")
|
30
|
+
#
|
31
|
+
# @param [String, Symbol, Hash] classes The class names
|
32
|
+
# @return [String] The list of the classes
|
33
|
+
#
|
34
|
+
# @api semipublic
|
14
35
|
def join_classes(*classes)
|
15
36
|
klasses = Array(classes).flatten.map(&:to_s).compact.uniq.reject(&:blank?)
|
16
37
|
klasses.empty? ? nil : klasses
|
@@ -5,33 +5,64 @@ module ChartBibz
|
|
5
5
|
# Generate the canvas view through the render method
|
6
6
|
class CanvasViewComponent < ApplicationViewComponent
|
7
7
|
# Constants
|
8
|
-
WIDTH = 400
|
9
|
-
HEIGHT = 400
|
10
8
|
|
11
|
-
#
|
9
|
+
WIDTH = 400 # Default width for the html canvas
|
10
|
+
HEIGHT = 400 # Default height for the html canvas
|
11
|
+
|
12
|
+
# Only html_options can be passed
|
13
|
+
#
|
14
|
+
# @example
|
15
|
+
# ChartBibz::ViewComponents::CanvasViewComponent.new(class: 'test')
|
16
|
+
#
|
17
|
+
# @param [Hash] args The html options
|
12
18
|
# @return [void]
|
19
|
+
#
|
20
|
+
# @api public
|
13
21
|
def initialize(args = {})
|
14
22
|
@args = args
|
15
23
|
end
|
16
24
|
|
17
25
|
# Generate the html canvas
|
26
|
+
#
|
27
|
+
# @example
|
28
|
+
# ChartBibz::ViewComponents::CanvasViewComponent.new(class:
|
29
|
+
# 'test').render
|
30
|
+
#
|
18
31
|
# @return [String] The html canvas
|
32
|
+
#
|
33
|
+
# @api public
|
19
34
|
def render
|
20
35
|
tag.canvas(**html_options)
|
21
36
|
end
|
22
37
|
|
38
|
+
# Get the id
|
39
|
+
#
|
40
|
+
# @example
|
41
|
+
# ChartBibz::ViewComponents::CanvasViewComponent.new(class: 'test').id
|
42
|
+
#
|
23
43
|
# @return [String] The canvas html id
|
44
|
+
#
|
45
|
+
# @api public
|
24
46
|
def id
|
25
47
|
html_options[:id]
|
26
48
|
end
|
27
49
|
|
28
50
|
private
|
29
51
|
|
52
|
+
# Get all html options
|
53
|
+
#
|
30
54
|
# @return [String] The canvas html attributes
|
55
|
+
#
|
56
|
+
# @api private
|
31
57
|
def html_options
|
32
58
|
@html_options ||= base_html_options.merge(@args).merge(class: join_classes('chart-bibz', @args[:class]))
|
33
59
|
end
|
34
60
|
|
61
|
+
# Get the html options base
|
62
|
+
#
|
63
|
+
# @return [String] The canvas html attributes
|
64
|
+
#
|
65
|
+
# @api private
|
35
66
|
def base_html_options
|
36
67
|
{ id: "chart-#{Random.uuid}", width: WIDTH, height: HEIGHT, role: 'img' }
|
37
68
|
end
|
@@ -7,6 +7,11 @@ module ChartBibz
|
|
7
7
|
# @see CanvasViewComponent#id
|
8
8
|
delegate :id, to: :canvas
|
9
9
|
|
10
|
+
# Need of CanvasViewComponent to work
|
11
|
+
#
|
12
|
+
# @example
|
13
|
+
# ChartBibz::ViewComponents::ChartViewComponent.new(data, options, html_options)
|
14
|
+
#
|
10
15
|
# @param data [Hash] the chartjs data
|
11
16
|
# @param options [Hash] the chartjs options
|
12
17
|
# @option options [Symbol] :type The chart type [:bar, :line, ...]
|
@@ -16,24 +21,45 @@ module ChartBibz
|
|
16
21
|
# @option html_options [String] :class The class of the canvas
|
17
22
|
#
|
18
23
|
# @return [void]
|
24
|
+
#
|
25
|
+
# @api public
|
19
26
|
def initialize(data = {}, options = {}, html_options = {})
|
20
27
|
@data = data
|
21
28
|
@options = options
|
22
29
|
@html_options = html_options
|
23
30
|
end
|
24
31
|
|
32
|
+
# Generate the html canvas
|
33
|
+
#
|
34
|
+
# @example
|
35
|
+
# ChartBibz::ViewComponents::ChartViewComponent.new(data, options, html_options).render
|
36
|
+
#
|
37
|
+
# @see ChartBibz::ViewComponents::CanvasViewComponent#canvas
|
25
38
|
# @return [String] The canvas html
|
39
|
+
#
|
40
|
+
# @api public
|
26
41
|
delegate :render, to: :canvas
|
27
42
|
|
43
|
+
# Get the Canvas with new html_options
|
44
|
+
#
|
45
|
+
# @example
|
46
|
+
# ChartBibz::ViewComponents::ChartViewComponent.new(data, options, html_options).canvas
|
47
|
+
#
|
28
48
|
# @see CanvasViewComponent
|
29
49
|
# @return [Object] The canvas object
|
50
|
+
#
|
51
|
+
# @api public
|
30
52
|
def canvas
|
31
53
|
@canvas ||= CanvasViewComponent.new(new_html_options)
|
32
54
|
end
|
33
55
|
|
34
56
|
private
|
35
57
|
|
58
|
+
# Update html_options
|
59
|
+
#
|
36
60
|
# @return [Hash] The new html options with the data attributes
|
61
|
+
#
|
62
|
+
# @api private
|
37
63
|
def new_html_options
|
38
64
|
@html_options['data-cb-data'] = @data.to_json
|
39
65
|
@html_options['data-cb-type'] = @options.delete(:type) || :bar
|
@@ -42,6 +68,11 @@ module ChartBibz
|
|
42
68
|
@html_options
|
43
69
|
end
|
44
70
|
|
71
|
+
# Create an aria lable
|
72
|
+
#
|
73
|
+
# @return [String]
|
74
|
+
#
|
75
|
+
# @api private
|
45
76
|
def aria_label
|
46
77
|
@options[:title].nil? ? 'Chart' : "Chart of #{@options[:title]}"
|
47
78
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chart_bibz
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas HUMMEL
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-01-
|
11
|
+
date: 2021-01-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: overcommit
|
@@ -142,6 +142,20 @@ dependencies:
|
|
142
142
|
- - ">="
|
143
143
|
- !ruby/object:Gem::Version
|
144
144
|
version: '0'
|
145
|
+
- !ruby/object:Gem::Dependency
|
146
|
+
name: yard
|
147
|
+
requirement: !ruby/object:Gem::Requirement
|
148
|
+
requirements:
|
149
|
+
- - ">="
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: '0'
|
152
|
+
type: :development
|
153
|
+
prerelease: false
|
154
|
+
version_requirements: !ruby/object:Gem::Requirement
|
155
|
+
requirements:
|
156
|
+
- - ">="
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: '0'
|
145
159
|
description: ChartJs with ruby.
|
146
160
|
email:
|
147
161
|
- thomas@hummel.link
|