rcharts 0.1.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.
Files changed (51) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +99 -0
  4. data/Rakefile +21 -0
  5. data/app/helpers/rcharts/graph_helper/axes/axis_element/styles.rb +91 -0
  6. data/app/helpers/rcharts/graph_helper/axes/axis_element.rb +89 -0
  7. data/app/helpers/rcharts/graph_helper/axes/label_element.rb +32 -0
  8. data/app/helpers/rcharts/graph_helper/axes/tick_element.rb +38 -0
  9. data/app/helpers/rcharts/graph_helper/axes.rb +8 -0
  10. data/app/helpers/rcharts/graph_helper/categories/bar_builder.rb +32 -0
  11. data/app/helpers/rcharts/graph_helper/categories/bar_segment_element.rb +49 -0
  12. data/app/helpers/rcharts/graph_helper/categories/bars_element.rb +52 -0
  13. data/app/helpers/rcharts/graph_helper/categories/category_builder.rb +115 -0
  14. data/app/helpers/rcharts/graph_helper/element.rb +65 -0
  15. data/app/helpers/rcharts/graph_helper/element_builder.rb +42 -0
  16. data/app/helpers/rcharts/graph_helper/graph/axes.rb +41 -0
  17. data/app/helpers/rcharts/graph_helper/graph/axis/caster.rb +45 -0
  18. data/app/helpers/rcharts/graph_helper/graph/axis/positioning.rb +66 -0
  19. data/app/helpers/rcharts/graph_helper/graph/axis/ticks.rb +66 -0
  20. data/app/helpers/rcharts/graph_helper/graph/axis.rb +86 -0
  21. data/app/helpers/rcharts/graph_helper/graph/calculator.rb +91 -0
  22. data/app/helpers/rcharts/graph_helper/graph/composition.rb +35 -0
  23. data/app/helpers/rcharts/graph_helper/graph/options.rb +33 -0
  24. data/app/helpers/rcharts/graph_helper/graph.rb +8 -0
  25. data/app/helpers/rcharts/graph_helper/graph_builder.rb +270 -0
  26. data/app/helpers/rcharts/graph_helper/legend_entry_builder.rb +46 -0
  27. data/app/helpers/rcharts/graph_helper/rule_element.rb +68 -0
  28. data/app/helpers/rcharts/graph_helper/series/area_element.rb +50 -0
  29. data/app/helpers/rcharts/graph_helper/series/path.rb +153 -0
  30. data/app/helpers/rcharts/graph_helper/series/path_element.rb +72 -0
  31. data/app/helpers/rcharts/graph_helper/series/point.rb +58 -0
  32. data/app/helpers/rcharts/graph_helper/series/scatter_element.rb +87 -0
  33. data/app/helpers/rcharts/graph_helper/series/series_builder.rb +145 -0
  34. data/app/helpers/rcharts/graph_helper/tooltips/entry_builder.rb +47 -0
  35. data/app/helpers/rcharts/graph_helper/tooltips/foreign_object_element.rb +84 -0
  36. data/app/helpers/rcharts/graph_helper/tooltips/hover_target_element.rb +39 -0
  37. data/app/helpers/rcharts/graph_helper/tooltips/marker_element.rb +38 -0
  38. data/app/helpers/rcharts/graph_helper/tooltips/tooltip_builder.rb +44 -0
  39. data/app/helpers/rcharts/graph_helper/tooltips/tooltip_element.rb +45 -0
  40. data/app/helpers/rcharts/graph_helper.rb +249 -0
  41. data/lib/generators/rcharts/install/install_generator.rb +13 -0
  42. data/lib/generators/rcharts/install/templates/rcharts.css +392 -0
  43. data/lib/rcharts/engine.rb +25 -0
  44. data/lib/rcharts/percentage.rb +36 -0
  45. data/lib/rcharts/type/percentage.rb +20 -0
  46. data/lib/rcharts/type/symbol.rb +29 -0
  47. data/lib/rcharts/type.rb +9 -0
  48. data/lib/rcharts/version.rb +6 -0
  49. data/lib/rcharts.rb +52 -0
  50. data/lib/tasks/rcharts_tasks.rake +6 -0
  51. metadata +107 -0
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RCharts
4
+ class Percentage # :nodoc:
5
+ attr_reader :value
6
+
7
+ def self.wrap(value)
8
+ value.is_a?(Percentage) ? value : new(value)
9
+ end
10
+
11
+ def self.unwrap(value)
12
+ value.is_a?(Percentage) ? value.value : value
13
+ end
14
+
15
+ def initialize(value)
16
+ @value = value.to_f
17
+ end
18
+
19
+ MAX = new(100.0)
20
+ MIN = new(0.0)
21
+
22
+ def ==(other)
23
+ value == self.class.unwrap(other)
24
+ end
25
+
26
+ %i[+ - * /].each do |operator|
27
+ define_method operator do |other|
28
+ self.class.new(value.public_send(operator, self.class.unwrap(other)))
29
+ end
30
+ end
31
+
32
+ def to_s
33
+ "#{value}%"
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RCharts
4
+ module Type
5
+ class Percentage < ActiveModel::Type::Float # :nodoc:
6
+ def type
7
+ :percentage
8
+ end
9
+
10
+ private
11
+
12
+ def cast_value(value)
13
+ case value
14
+ when RCharts::Percentage then value
15
+ else RCharts::Percentage.new(super)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RCharts
4
+ module Type
5
+ class Symbol < ActiveModel::Type::Value # :nodoc:
6
+ include ActiveModel::Type::Helpers::Immutable
7
+
8
+ def type
9
+ :symbol
10
+ end
11
+
12
+ def serialize(value)
13
+ case value
14
+ when ::String then value.to_sym
15
+ else super.to_sym
16
+ end
17
+ end
18
+
19
+ private
20
+
21
+ def cast_value(value)
22
+ case value
23
+ when Symbol then value
24
+ else value.to_s.to_sym
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rcharts/type/percentage'
4
+ require 'rcharts/type/symbol'
5
+
6
+ module RCharts
7
+ module Type # :nodoc:
8
+ end
9
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RCharts
4
+ # Fake comment to trigger workflow
5
+ VERSION = '0.1.0'
6
+ end
data/lib/rcharts.rb ADDED
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rcharts/version'
4
+ require 'rcharts/engine'
5
+
6
+ # = \RCharts
7
+ #
8
+ # \RCharts is a simple but highly extensible and customizable framework for rendering charts with Action View.
9
+ # Unlike many other charting libraries, \RCharts produces charts with non-uniform scaling without resorting to any
10
+ # client-side rendering, so that the browser has enough information to be able to resize the chart itself.
11
+ # You can then progressively enhance this baseline functionality to achieve things like panning and zooming,
12
+ # without needing to consider how and when the chart is rendered.
13
+ #
14
+ # To get started rendering charts, see GraphHelper.
15
+ module RCharts
16
+ extend ActiveSupport::Autoload
17
+
18
+ mattr_accessor :series_color_classes, default: %w[blue red green orange purple]
19
+ mattr_accessor :series_symbols, default: %w[● ■ ◆ ▲ ▼]
20
+
21
+ autoload :Percentage
22
+ autoload :Type
23
+
24
+ # Returns a color class based on the index.
25
+ # You can set the color classes using <tt>Rails.application.config.rcharts.series_color_classes=</tt>.
26
+ #
27
+ # module MyApplication
28
+ # class Application < Rails::Application
29
+ # config.rcharts.series_color_classes = %w[blue red green]
30
+ # end
31
+ # end
32
+ #
33
+ # RCharts.color_class_for(1) # => 'red'
34
+ def self.color_class_for(index)
35
+ series_color_classes[index % series_color_classes.size]
36
+ end
37
+
38
+ # Returns a symbol based on the index.
39
+ # You can set the symbols using <tt>Rails.application.config.rcharts.series_symbols=</tt>.
40
+ # Symbols are characters like ●, ■, ◆, ▲, ▼.
41
+ #
42
+ # module MyApplication
43
+ # class Application < Rails::Application
44
+ # config.rcharts.series_symbols = %w[● ■ ◆ ▲ ▼]
45
+ # end
46
+ # end
47
+ #
48
+ # RCharts.symbol_for(1) # => '■'
49
+ def self.symbol_for(index)
50
+ series_symbols[index % series_symbols.size]
51
+ end
52
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ desc 'Copy over the stylesheet'
4
+ task 'rcharts:install' => :environment do
5
+ Rails::Command.invoke :generate, ['rcharts:install']
6
+ end
metadata ADDED
@@ -0,0 +1,107 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rcharts
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Justin Malčić
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: rails
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: 8.1.1
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: 8.1.1
26
+ description: Helpers to generate different kinds of SVG charts from arbitrary data.
27
+ email:
28
+ - j.malcic@me.com
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - MIT-LICENSE
34
+ - README.md
35
+ - Rakefile
36
+ - app/helpers/rcharts/graph_helper.rb
37
+ - app/helpers/rcharts/graph_helper/axes.rb
38
+ - app/helpers/rcharts/graph_helper/axes/axis_element.rb
39
+ - app/helpers/rcharts/graph_helper/axes/axis_element/styles.rb
40
+ - app/helpers/rcharts/graph_helper/axes/label_element.rb
41
+ - app/helpers/rcharts/graph_helper/axes/tick_element.rb
42
+ - app/helpers/rcharts/graph_helper/categories/bar_builder.rb
43
+ - app/helpers/rcharts/graph_helper/categories/bar_segment_element.rb
44
+ - app/helpers/rcharts/graph_helper/categories/bars_element.rb
45
+ - app/helpers/rcharts/graph_helper/categories/category_builder.rb
46
+ - app/helpers/rcharts/graph_helper/element.rb
47
+ - app/helpers/rcharts/graph_helper/element_builder.rb
48
+ - app/helpers/rcharts/graph_helper/graph.rb
49
+ - app/helpers/rcharts/graph_helper/graph/axes.rb
50
+ - app/helpers/rcharts/graph_helper/graph/axis.rb
51
+ - app/helpers/rcharts/graph_helper/graph/axis/caster.rb
52
+ - app/helpers/rcharts/graph_helper/graph/axis/positioning.rb
53
+ - app/helpers/rcharts/graph_helper/graph/axis/ticks.rb
54
+ - app/helpers/rcharts/graph_helper/graph/calculator.rb
55
+ - app/helpers/rcharts/graph_helper/graph/composition.rb
56
+ - app/helpers/rcharts/graph_helper/graph/options.rb
57
+ - app/helpers/rcharts/graph_helper/graph_builder.rb
58
+ - app/helpers/rcharts/graph_helper/legend_entry_builder.rb
59
+ - app/helpers/rcharts/graph_helper/rule_element.rb
60
+ - app/helpers/rcharts/graph_helper/series/area_element.rb
61
+ - app/helpers/rcharts/graph_helper/series/path.rb
62
+ - app/helpers/rcharts/graph_helper/series/path_element.rb
63
+ - app/helpers/rcharts/graph_helper/series/point.rb
64
+ - app/helpers/rcharts/graph_helper/series/scatter_element.rb
65
+ - app/helpers/rcharts/graph_helper/series/series_builder.rb
66
+ - app/helpers/rcharts/graph_helper/tooltips/entry_builder.rb
67
+ - app/helpers/rcharts/graph_helper/tooltips/foreign_object_element.rb
68
+ - app/helpers/rcharts/graph_helper/tooltips/hover_target_element.rb
69
+ - app/helpers/rcharts/graph_helper/tooltips/marker_element.rb
70
+ - app/helpers/rcharts/graph_helper/tooltips/tooltip_builder.rb
71
+ - app/helpers/rcharts/graph_helper/tooltips/tooltip_element.rb
72
+ - lib/generators/rcharts/install/install_generator.rb
73
+ - lib/generators/rcharts/install/templates/rcharts.css
74
+ - lib/rcharts.rb
75
+ - lib/rcharts/engine.rb
76
+ - lib/rcharts/percentage.rb
77
+ - lib/rcharts/type.rb
78
+ - lib/rcharts/type/percentage.rb
79
+ - lib/rcharts/type/symbol.rb
80
+ - lib/rcharts/version.rb
81
+ - lib/tasks/rcharts_tasks.rake
82
+ homepage: https://buildingatlas.github.io/rcharts/
83
+ licenses:
84
+ - MIT
85
+ metadata:
86
+ homepage_uri: https://buildingatlas.github.io/rcharts/
87
+ source_code_uri: https://github.com/BuildingAtlas/rcharts
88
+ changelog_uri: https://github.com/BuildingAtlas/rcharts/releases
89
+ rubygems_mfa_required: 'true'
90
+ rdoc_options: []
91
+ require_paths:
92
+ - lib
93
+ required_ruby_version: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: 3.4.0
98
+ required_rubygems_version: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ requirements: []
104
+ rubygems_version: 3.6.9
105
+ specification_version: 4
106
+ summary: Responsive SVG charting for Action View.
107
+ test_files: []