amcharts.rb 3.4.7.2 → 3.4.7.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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NmJlMzQ3NWNjYWY3NTQxMWJiOTc5ZWJjYzkzMWYzMTBhZjg5OWM2NQ==
4
+ NGUwZDE5ZDNkOGZhYWFmZDQ3NDY4YWExODUzMGJmZDcxMzkzZGMzYw==
5
5
  data.tar.gz: !binary |-
6
- NjcxOGRiMmMzNDY5NGFkM2E0OGQyZWNmMWY5MDE5Nzk5YmI0ZjQ4NA==
6
+ ZTMzZWE0ZDgxMWNkMTYyNjYxZGIzZjEzM2NhYzgzOWYyZGFkYzQzYw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NDFiZDJiZGI4M2MyMzUzMWE2MmQwNzgxNjU2Y2IxNzYwNDFhMmNkODMyZWVj
10
- OWU4YThiMmE2Y2I0NThjMzkzYTBiNWE3ZmMwZWNjNThmOTEzNWUwMDZiM2Nm
11
- NGRmNDk3YTYwNzU5M2E5Mjg2ODUxNjNhY2UxYzcxYjgwYmQ2NDc=
9
+ MTMyYmM1N2U4YTE5OTg5ZmU1MjZhYTc1YzY2Y2U3YTVmNGY2NzNmZTJkM2U0
10
+ ODExMDMwMDEyOWJkZDQ1ZjBjMDg0NDcxMzA5ZDFmYmNlMTk0ZjZjN2Y3OWZh
11
+ N2Y1NTk0YTIwYjFhMDY1NjNkYzQ3ZTI0OTA4MDQzNmQxZjQ3NDk=
12
12
  data.tar.gz: !binary |-
13
- MDQzYmI5N2ZmMWM0Y2E0YWE5Y2M3NTFkYjE4MjVhZmQxZTk2MDA1MGVkMGU4
14
- Y2ExNWEwNWM3OTYyOTgyMWI3ZGYzNTI4MTVkNjg0NWU3NThkMzI4YzQ1NGQ2
15
- NTJiYjY5NGRhYzNhOGYwMzUxMGMyNzdjZWUzZDdmODc3MDFhNGQ=
13
+ OTU2NTIyM2UwYjg3MzllNjMyOTJjZjcxZGIwMTg5MzExM2RhOWQwZTM5ODI2
14
+ MmFmZWU0NzM4NjZjZWZlNjhlM2VhYjcxNDExNTFjZDljN2FmOGExNTY1NTQ0
15
+ YjNhNTkwNDQ4OTczODViNjc5ZGUzZTVlYmU1NWI4NTc0NmFhMmQ=
@@ -1,4 +1,10 @@
1
1
  AmCharts.RB.Helpers = {
2
+ create_unit: function(num, unit)
3
+ {
4
+ // If the number doesn't end with a unit already, add the given one
5
+ return num.toString().match(/\d$/) ? num + unit : num;
6
+ },
7
+
2
8
  add_container_if_needed: function(id, width, height)
3
9
  {
4
10
  var container = document.getElementById(id);
@@ -7,8 +13,8 @@ AmCharts.RB.Helpers = {
7
13
  container = document.createElement("DIV");
8
14
  container.className = 'chart';
9
15
  container.id = id;
10
- container.style.width = width + 'px';
11
- container.style.height = height + 'px';
16
+ if (width) container.style.width = this.create_unit(width, 'px');
17
+ container.style.height = this.create_unit(height, 'px');
12
18
 
13
19
  // Add the container before the last script
14
20
  var scripts = document.getElementsByTagName('script');
@@ -19,7 +25,7 @@ AmCharts.RB.Helpers = {
19
25
  return container;
20
26
  },
21
27
 
22
- add_blanket: function(container, width, height)
28
+ add_blanket: function(container)
23
29
  {
24
30
  var wrapper = document.createElement("DIV"),
25
31
  blanket = document.createElement("DIV"),
@@ -29,8 +35,8 @@ AmCharts.RB.Helpers = {
29
35
 
30
36
  wrapper.className = 'chart-wrapper';
31
37
  wrapper.id = container.id + "_wrapper";
32
- wrapper.style.width = width + 'px';
33
- wrapper.style.minHeight = height + 'px';
38
+ wrapper.style.width = container.style.width;
39
+ wrapper.style.minHeight = container.style.height;
34
40
 
35
41
  container.style.width = '100%';
36
42
  blanket.className = 'chart-blanket';
@@ -4,7 +4,14 @@ module AmCharts
4
4
  # Load necessary JS and CSSfiles, without loading one more than once
5
5
  @loaded_amchart_files ||= { js: [], css: []}
6
6
 
7
- js_files = ['amcharts', "amcharts/#{chart.type}"] - @loaded_amchart_files[:js]
7
+ js_files = ['amcharts', "amcharts/#{chart.type}"]
8
+
9
+ if chart.export?
10
+ js_files.concat(%w(amcharts/exporting/amexport amcharts/exporting/rgbcolor amcharts/exporting/canvg amcharts/exporting/filesaver))
11
+ js_files.concat(%w(amcharts/exporting/jspdf amcharts/exporting/jspdf.plugin.addimage)) if chart.export.pdf?
12
+ end
13
+
14
+ js_files -= @loaded_amchart_files[:js]
8
15
  css_files = ['amcharts'] - @loaded_amchart_files[:css]
9
16
 
10
17
  @loaded_amchart_files[:js] += js_files
@@ -4,5 +4,5 @@ chart.remoteProvider = new AmCharts.RB.RemoteJSONProvider(chart, data_source, pa
4
4
  chart.remoteProvider.load();
5
5
  <% end %>
6
6
  <% if builder.chart.loading_indicator? %>
7
- <%= builder.render_js 'listener', locals: { type: :dataUpdated, method: 'AmCharts.RB.Helpers.hide_loading_indicator' } %>
7
+ <%= builder.render_js 'listener', locals: { type: :dataUpdated, method: 'AmCharts.RB.Helpers.hide_loading_indicator', var_name: 'chart' } %>
8
8
  <% end %>
@@ -0,0 +1,11 @@
1
+ var exportConfig = {};
2
+ <% builder.render_settings(export, 'exportConfig') %>
3
+ <% export.menus.each.with_index do |m, i| %>
4
+ var menu = {};
5
+ <% if i == 0 %>
6
+ exportConfig.menuItems = [];
7
+ <% end %>
8
+ <% builder.render_settings(m, 'menu') %>
9
+ exportConfig.menuItems.push(menu);
10
+ <% end %>
11
+ chart.exportConfig = exportConfig;
@@ -1,4 +1,5 @@
1
1
  var legend = new AmCharts.AmLegend;
2
2
  <% builder.render_settings(legend, 'legend') %>
3
3
  <%= yield(legend, 'legend') rescue nil %>
4
+ <% builder.render_listeners(legend, 'legend') %>
4
5
  chart.addLegend(legend, <%= builder.to_js(div) %>);
@@ -1 +1,5 @@
1
- chart.addListener(<%= builder.to_js(type.to_s) %>, function() { return <%= method %>.apply(null, [chart]) });
1
+ <%= var_name %>.addListener(<%= builder.to_js(type.to_s) %>, function() {
2
+ args = Array.prototype.slice.call(arguments);
3
+ args.unshift(chart);
4
+ return <%= method %>.apply(null, args)
5
+ });
@@ -1,6 +1,6 @@
1
1
  // If the container element doesn't already exist, create it
2
- var container = AmCharts.RB.Helpers.add_container_if_needed('<%= container %>', <%= chart.width %>, <%= chart.height %>);
3
- AmCharts.RB.Helpers.add_blanket(container, <%= chart.width %>, <%= chart.height %>)
2
+ var container = AmCharts.RB.Helpers.add_container_if_needed('<%= container %>', <%= builder.to_js chart.width %>, <%= builder.to_js chart.height %>);
3
+ AmCharts.RB.Helpers.add_blanket(container)
4
4
  <% if chart.loading_indicator? %>
5
5
  AmCharts.RB.Helpers.add_loading_indicator(container, <%= builder.to_js(:chart_data_loading) %>, '<%= escape_javascript asset_path('amcharts/loading.gif') %>');
6
6
  <% end %>
@@ -33,6 +33,8 @@ AmCharts.ready(function() {
33
33
 
34
34
  <% builder.render_listeners %>
35
35
 
36
+ <% builder.render_export %>
37
+
36
38
  chart.write('<%= container %>');
37
39
 
38
40
  <% builder.render_data_source %>
data/lib/amcharts.rb CHANGED
@@ -3,17 +3,18 @@ require "amcharts/version"
3
3
  require_relative '../app/helpers/amcharts/amcharts_helper'
4
4
 
5
5
  module AmCharts
6
- autoload :Axis, 'amcharts/axis'
7
- autoload :Chart, 'amcharts/chart'
8
- autoload :ChartBuilder, 'amcharts/chart_builder'
9
- autoload :Cursor, 'amcharts/cursor'
10
- autoload :DataSource, 'amcharts/data_source'
11
- autoload :Graph, 'amcharts/graph'
12
- autoload :Legend, 'amcharts/legend'
13
- autoload :Listener, 'amcharts/listener'
14
- autoload :ScrollBar, 'amcharts/scroll_bar'
15
- autoload :Settings, 'amcharts/settings'
16
- autoload :UsesSettings, 'amcharts/uses_settings'
6
+ autoload :Axis, 'amcharts/axis'
7
+ autoload :Chart, 'amcharts/chart'
8
+ autoload :ChartBuilder, 'amcharts/chart_builder'
9
+ autoload :Cursor, 'amcharts/cursor'
10
+ autoload :DataSource, 'amcharts/data_source'
11
+ autoload :ExportSettings, 'amcharts/export_settings'
12
+ autoload :Graph, 'amcharts/graph'
13
+ autoload :Legend, 'amcharts/legend'
14
+ autoload :Listener, 'amcharts/listener'
15
+ autoload :ScrollBar, 'amcharts/scroll_bar'
16
+ autoload :Settings, 'amcharts/settings'
17
+ autoload :UsesSettings, 'amcharts/uses_settings'
17
18
 
18
19
  ActiveSupport::Inflector.inflections do |inflect|
19
20
  inflect.acronym "AmCharts"
@@ -15,7 +15,7 @@ module AmCharts
15
15
 
16
16
  attr_accessor :data_provider, :data_source, :container
17
17
  attr_accessor :width, :height, :loading_indicator
18
- attr_reader :titles, :graphs, :legends, :data, :settings, :listeners, :legend_div
18
+ attr_reader :titles, :graphs, :legends, :data, :settings, :listeners, :legend_div, :export
19
19
 
20
20
  def initialize(*data, &block)
21
21
  @data = data.flatten
@@ -24,6 +24,7 @@ module AmCharts
24
24
  @legends = Collection[Legend]
25
25
  @listeners = Collection[Listener]
26
26
  @settings = Settings.new
27
+ @export = ExportSettings.new
27
28
  @titles = []
28
29
  update_settings(&block) if block_given?
29
30
  end
@@ -58,6 +59,15 @@ module AmCharts
58
59
  "AmCharts.Am#{type.to_s.titleize}Chart()"
59
60
  end
60
61
 
62
+ def export?
63
+ !@export.empty?
64
+ end
65
+
66
+ def export(&block)
67
+ yield @export if block_given?
68
+ @export
69
+ end
70
+
61
71
  def add_title(text, options = {})
62
72
  @titles << [text, options.reverse_merge(size: 13, bold: true, alpha: 1, color: '#000000')]
63
73
  end
@@ -72,12 +72,17 @@ module AmCharts
72
72
  end
73
73
  end
74
74
 
75
- def render_listeners()
76
- chart.listeners.each do |listener|
77
- concat render_js('listener', locals: { type: listener.type, method: listener.method })
75
+ def render_listeners(object = chart, var_name = 'chart')
76
+ object.listeners.each do |listener|
77
+ concat render_js('listener', locals: { type: listener.type, method: listener.method, var_name: var_name })
78
78
  end
79
79
  end
80
80
 
81
+ def render_export
82
+ return if chart.export.empty?
83
+ concat render_js('export', object: chart.export)
84
+ end
85
+
81
86
  private
82
87
 
83
88
  def method_missing(*args, &block)
@@ -0,0 +1,48 @@
1
+ require 'amcharts/uses_settings'
2
+
3
+ module AmCharts
4
+ class ExportSettings
5
+ class Menu
6
+ include UsesSettings
7
+
8
+ def initialize(*)
9
+ super
10
+
11
+ if defined? Rails
12
+ @settings.icon ||= ActionController::Base.helpers.asset_path('amcharts/export.png')
13
+ end
14
+ end
15
+
16
+ def formats
17
+ formats = []
18
+ formats << @settings[:format].to_s.downcase.to_sym if @settings[:format]
19
+
20
+ if @settings[:items]
21
+ @settings[:items].each do |i|
22
+ formats << i[:format].to_s.downcase.to_sym if i[:format]
23
+ end
24
+ end
25
+
26
+ formats
27
+ end
28
+ end
29
+
30
+ attr_reader :settings, :menus
31
+
32
+ def initialize(&block)
33
+ @settings = Settings.new
34
+ @menus = Collection[Menu]
35
+ instance_exec(self, &block) if block_given?
36
+ end
37
+
38
+ def pdf?
39
+ return false if menus.empty?
40
+ menus.flat_map(&:formats).any?{ |f| f == :pdf }
41
+ end
42
+ private
43
+
44
+ def method_missing(name, *args, &block)
45
+ @settings.send(name, *args, &block)
46
+ end
47
+ end
48
+ end
@@ -1,5 +1,17 @@
1
1
  module AmCharts
2
2
  class Legend
3
- include UsesSettings
3
+ attr_reader :settings, :listeners
4
+
5
+ def initialize(&block)
6
+ @settings = Settings.new
7
+ @listeners = Collection[Listener]
8
+ instance_exec(self, &block) if block_given?
9
+ end
10
+
11
+ private
12
+
13
+ def method_missing(name, *args, &block)
14
+ @settings.send(name, *args, &block)
15
+ end
4
16
  end
5
17
  end
@@ -1,3 +1,5 @@
1
+ require 'amcharts/settings'
2
+
1
3
  module AmCharts
2
4
  module UsesSettings
3
5
  attr_reader :settings
@@ -1,3 +1,3 @@
1
1
  module AmCharts
2
- VERSION = "3.4.7.2"
2
+ VERSION = "3.4.7.3"
3
3
  end
@@ -1,10 +1,10 @@
1
1
  /*
2
2
  *= require amcharts
3
- *= require amstock
4
- *= require funnel
5
- *= require gauge
6
- *= require pie
7
- *= require radar
8
- *= require serial
9
- *= require xy
3
+ *= require amcharts/amstock
4
+ *= require amcharts/funnel
5
+ *= require amcharts/gauge
6
+ *= require amcharts/pie
7
+ *= require amcharts/radar
8
+ *= require amcharts/serial
9
+ *= require amcharts/xy
10
10
  */
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: amcharts.rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.7.2
4
+ version: 3.4.7.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Vandersluis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-07 00:00:00.000000000 Z
11
+ date: 2014-04-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  type: :runtime
@@ -152,6 +152,7 @@ files:
152
152
  - app/views/amcharts/_collection.erb
153
153
  - app/views/amcharts/_data.erb
154
154
  - app/views/amcharts/_data_source.erb
155
+ - app/views/amcharts/_export.erb
155
156
  - app/views/amcharts/_legend.erb
156
157
  - app/views/amcharts/_listener.erb
157
158
  - app/views/amcharts/_object.erb
@@ -175,6 +176,7 @@ files:
175
176
  - lib/amcharts/chart_builder/literal.rb
176
177
  - lib/amcharts/cursor.rb
177
178
  - lib/amcharts/data_source.rb
179
+ - lib/amcharts/export_settings.rb
178
180
  - lib/amcharts/graph.rb
179
181
  - lib/amcharts/legend.rb
180
182
  - lib/amcharts/listener.rb
@@ -194,6 +196,7 @@ files:
194
196
  - vendor/assets/images/amcharts/eraserIcon.gif
195
197
  - vendor/assets/images/amcharts/eraserIconH.gif
196
198
  - vendor/assets/images/amcharts/export.png
199
+ - vendor/assets/images/amcharts/exportBlack.png
197
200
  - vendor/assets/images/amcharts/exportWhite.png
198
201
  - vendor/assets/images/amcharts/lens.png
199
202
  - vendor/assets/images/amcharts/lensWhite.png