metrics-graphics-rails 2.6.0 → 2.6.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 414e349e7a3ee325ee22b0a9fef9ae49117caa81
4
- data.tar.gz: 525efe1e105d0c1eedaea8420e4bef11e945a3fe
3
+ metadata.gz: a83deabed39bb80b745da7fb1f8300d01f557e08
4
+ data.tar.gz: 945b01a3e9af84501713a184aa7f04b4a2d8e061
5
5
  SHA512:
6
- metadata.gz: 9112160a45f0c0a3f6fded6c50de609c8d910802a7b561bae0c90075700a92abb39c402db364a8196c90fdaa03f8ae3c075740f2919c68f170893cb4edb9bea8
7
- data.tar.gz: 3919603f2e851a988a6bfbf014cb5f3cf51598a40ccb28a9d59b3bf372b5ea4c046dddd5ee0da56c51845d830f919dbf45dc778aaa4ea3cd09930d041fb90a29
6
+ metadata.gz: 5e49f65f6b0707d3ad6b387f947b2e0d7c0095b5c87e6b7d03facd84b94ee1e139cf276c13de96f06d6e257b5e4b2eaee43cf7d624114cb2d9e625b72f988a04
7
+ data.tar.gz: 00d5b5bade199a922bc8cb7d47c11b3962bbd1eefafdaf86b05a895731a072738bcb7f9560033a4d811536e10fbc2acc4661f8c07a15fe0458f0d139ff6eb2d2
data/README.md CHANGED
@@ -3,7 +3,7 @@ metrics-graphics-rails
3
3
 
4
4
  [metrics-graphics](https://github.com/mozilla/metrics-graphics) is a library optimized for concise, principled data graphics and layouts. See more in [metricsgraphicsjs.org](http://metricsgraphicsjs.org)
5
5
 
6
- The **metrics-graphics-rails** provides metrics-graphics for Rails and the assets pipeline.
6
+ The **metrics-graphics-rails** provides metrics-graphics v2.6.0 for Rails and the assets pipeline.
7
7
 
8
8
  ## Usage
9
9
 
@@ -45,7 +45,7 @@ From the [metrics-graphics example](http://metricsgraphicsjs.org/):
45
45
 
46
46
  This graph can be rendered in a Rails view template with this helper:
47
47
 
48
- = metrics_graphic_for data, title: "Downloads", description: "This graphic shows a time-series of downloads.", width: 600, height: 250, target: '#downloads', x_accessor: 'date', y_accessor: 'value', time_format: '%Y-%m-%d'
48
+ = metrics_graphic_for data, target: '#downloads', title: "Downloads", description: "This graphic shows a time-series of downloads.", width: 600, height: 250, x_accessor: 'date', y_accessor: 'value', time_format: '%Y-%m-%d'
49
49
 
50
50
  where ``data`` is an Array of Hashes of points with a ``date`` and a ``value`` keys and values. Ex: ``[{date: '2014-11-01', value: 12}, {date: '2014-11-02', value: 18}]``
51
51
 
@@ -55,6 +55,20 @@ where ``data`` is an Array of Hashes of points with a ``date`` and a ``value`` k
55
55
 
56
56
  `metrics_graphic_for` helper supports multiple-lined graphs generation. Just pass data as an Array of Arrays in the same format as for single-lined graphs and it should work as a charm.
57
57
 
58
+ ### Markers
59
+
60
+ `metrics_graphic_for` helper supports markers. Just pass marker data as an Array with the `markers` option like this:
61
+
62
+ = metrics_graphic_for data, target: '#downloads', markers: markers
63
+
64
+ where ``markers`` is an Array of Hashes of markers with ``date`` and a ``label`` keys and values. Ex: ``[{date: '2014-11-01', label: 'look here!'}, {date: '2014-11-02', label: 'look there!'}]``
65
+
66
+ ### Other options
67
+
68
+ Do you want to use any *metrics-graphics* option not included in `metrics_graphic_for` view helper? Just pass them as a Hash in the `:extra_options` attribute like this:
69
+
70
+ = metrics_graphic_for data, target: '#downloads', extra_options: { min_y: 100, max_y: 200 }
71
+
58
72
  ## Versioning
59
73
 
60
74
  metrics-graphics-rails 2.6.0 == metrics-graphics 2.6.0
@@ -1,3 +1,3 @@
1
1
  module MetricsGraphicsRails
2
- VERSION = '2.6.0'
2
+ VERSION = '2.6.0.1'
3
3
  end
@@ -2,25 +2,28 @@ require 'json'
2
2
 
3
3
  module MetricsGraphicsRails
4
4
  module ViewHelpers
5
- # TODO: generalize for extra options
6
5
  def metrics_graphic_for(data, options = {})
7
- json_data = data.to_json
8
- target = options.fetch(:target)
9
- x_accessor = options.fetch(:x_accessor) { :date }
10
- y_accessor = options.fetch(:y_accessor) { :value }
11
- title = options.fetch(:title)
12
- description = options.fetch(:description) { '' }
13
- width = options.fetch(:width) { 600 }
14
- height = options.fetch(:height) { 250 }
15
- time_format = options.fetch(:time_format) { '%Y-%m-%d' }
16
- is_multiple = data.first.is_a?(Array)
17
- extra_options = options[:extra_options] || {}
18
- extra_options_to_options = extra_options.map{ |k,v| "#{k}: #{v}," }.join('')
6
+ @data = data
7
+ json_data = data.to_json
8
+ @target = options.fetch(:target)
9
+ @x_accessor = options.fetch(:x_accessor) { :date }
10
+ @y_accessor = options.fetch(:y_accessor) { :value }
11
+ title = options.fetch(:title)
12
+ description = options.fetch(:description) { '' }
13
+ width = options.fetch(:width) { 600 }
14
+ height = options.fetch(:height) { 250 }
15
+ @time_format = options.fetch(:time_format) { '%Y-%m-%d' }
16
+ # Markers is an array of hashes with 'date' and 'label' keys
17
+ @markers = options.fetch(:markers) { [] }
18
+ @is_multiple = data.first.is_a?(Array)
19
+ @extra_options = options[:extra_options] || {}
19
20
 
20
21
  javascript_tag <<-SCRIPT
21
22
  var data = #{json_data};
22
23
 
23
- #{convert_data_js(data, x_accessor, time_format, is_multiple)}
24
+ #{convert_data_js}
25
+
26
+ #{markers}
24
27
 
25
28
  MG.data_graphic({
26
29
  title: "#{title}",
@@ -28,25 +31,46 @@ module MetricsGraphicsRails
28
31
  data: data,
29
32
  width: #{width},
30
33
  height: #{height},
31
- target: '#{target}',
34
+ target: '#{@target}',
32
35
  #{extra_options_to_options}
33
- x_accessor: '#{x_accessor}',
34
- y_accessor: '#{y_accessor}'
36
+ #{markers_option}
37
+ x_accessor: '#{@x_accessor}',
38
+ y_accessor: '#{@y_accessor}'
35
39
  });
36
40
  SCRIPT
37
41
  end
38
42
 
39
43
  private
40
44
 
41
- def convert_data_js(data, x_accessor, time_format, is_multiple)
42
- if is_multiple
45
+ def extra_options_to_options
46
+ @extra_options.map{ |k,v| "#{k}: #{v}," }.join("\n ")
47
+ end
48
+
49
+ def convert_data_js
50
+ if @is_multiple
43
51
  <<-CONVERT
44
52
  for (var i = 0; i < data.length; i++) {
45
- data[i] = MG.convert.date(data[i], '#{x_accessor}', '#{time_format}');
53
+ data[i] = MG.convert.date(data[i], '#{@x_accessor}', '#{@time_format}');
46
54
  }
47
55
  CONVERT
48
56
  else
49
- "MG.convert.date(data, '#{x_accessor}', '#{time_format}');"
57
+ "MG.convert.date(data, '#{@x_accessor}', '#{@time_format}');"
58
+ end
59
+ end
60
+
61
+ def markers
62
+ if @markers.present?
63
+ markers_json = @markers.to_json
64
+
65
+ "var markers = #{markers_json};\n\n
66
+ MG.convert.date(markers, 'date', '%Y-%m-%dT%H:%M:%S.%LZ');"
67
+
68
+ end
69
+ end
70
+
71
+ def markers_option
72
+ if @markers.present?
73
+ "markers: markers,"
50
74
  end
51
75
  end
52
76
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metrics-graphics-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.0
4
+ version: 2.6.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Gil
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-23 00:00:00.000000000 Z
11
+ date: 2015-09-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties