chartkick 3.0.1 → 3.0.2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of chartkick might be problematic. Click here for more details.

@@ -2,7 +2,7 @@
2
2
  * Chartkick.js
3
3
  * Create beautiful charts with one line of JavaScript
4
4
  * https://github.com/ankane/chartkick.js
5
- * v3.0.1
5
+ * v3.0.2
6
6
  * MIT License
7
7
  */
8
8
 
@@ -262,6 +262,15 @@
262
262
  return pre + value + (options.suffix || "");
263
263
  }
264
264
 
265
+ function seriesOption(chart, series, option) {
266
+ if (option in series) {
267
+ return series[option];
268
+ } else if (option in chart.options) {
269
+ return chart.options[option];
270
+ }
271
+ return null;
272
+ }
273
+
265
274
  function allZeros(data) {
266
275
  var i, j, d;
267
276
  for (i = 0; i < data.length; i++) {
@@ -594,11 +603,13 @@
594
603
  dataset.stack = s.stack;
595
604
  }
596
605
 
597
- if (chart.options.curve === false) {
606
+ var curve = seriesOption(chart, s, "curve");
607
+ if (curve === false) {
598
608
  dataset.lineTension = 0;
599
609
  }
600
610
 
601
- if (chart.options.points === false) {
611
+ var points = seriesOption(chart, s, "points");
612
+ if (points === false) {
602
613
  dataset.pointRadius = 0;
603
614
  dataset.pointHitRadius = 5;
604
615
  }
@@ -1427,12 +1438,10 @@
1427
1438
  };
1428
1439
 
1429
1440
  defaultExport$2.prototype.runCallbacks = function runCallbacks () {
1430
- var this$1 = this;
1431
-
1432
1441
  var cb, call;
1433
1442
  for (var i = 0; i < callbacks.length; i++) {
1434
1443
  cb = callbacks[i];
1435
- call = this$1.library.visualization && ((cb.pack === "corechart" && this$1.library.visualization.LineChart) || (cb.pack === "timeline" && this$1.library.visualization.Timeline));
1444
+ call = this.library.visualization && ((cb.pack === "corechart" && this.library.visualization.LineChart) || (cb.pack === "timeline" && this.library.visualization.Timeline));
1436
1445
  if (call) {
1437
1446
  cb.callback();
1438
1447
  callbacks.splice(i, 1);
@@ -1599,7 +1608,15 @@
1599
1608
  function addDownloadButton(chart) {
1600
1609
  var element = chart.element;
1601
1610
  var link = document.createElement("a");
1602
- link.download = chart.options.download === true ? "chart.png" : chart.options.download; // https://caniuse.com/download
1611
+
1612
+ var download = chart.options.download;
1613
+ if (download === true) {
1614
+ download = {};
1615
+ } else if (typeof download === "string") {
1616
+ download = {filename: download};
1617
+ }
1618
+ link.download = download.filename || "chart.png"; // https://caniuse.com/download
1619
+
1603
1620
  link.style.position = "absolute";
1604
1621
  link.style.top = "20px";
1605
1622
  link.style.right = "20px";
@@ -1622,7 +1639,7 @@
1622
1639
  var related = e.relatedTarget;
1623
1640
  // check download option again to ensure it wasn't changed
1624
1641
  if ((!related || (related !== this && !childOf(this, related))) && chart.options.download) {
1625
- link.href = chart.toImage();
1642
+ link.href = chart.toImage(download);
1626
1643
  element.appendChild(link);
1627
1644
  }
1628
1645
  });
@@ -1935,6 +1952,10 @@
1935
1952
 
1936
1953
  var refresh = this.options.refresh;
1937
1954
 
1955
+ if (refresh && typeof this.dataSource !== "string") {
1956
+ throw new Error("Data source must be a URL for refresh");
1957
+ }
1958
+
1938
1959
  if (!this.intervalId) {
1939
1960
  if (refresh) {
1940
1961
  this.intervalId = setInterval( function () {
@@ -1953,10 +1974,26 @@
1953
1974
  }
1954
1975
  };
1955
1976
 
1956
- Chart.prototype.toImage = function toImage () {
1977
+ Chart.prototype.toImage = function toImage (download) {
1957
1978
  if (this.adapter === "chartjs") {
1958
- return this.chart.toBase64Image();
1979
+ if (download && download.background && download.background !== "transparent") {
1980
+ // https://stackoverflow.com/questions/30464750/chartjs-line-chart-set-background-color
1981
+ var canvas = this.chart.chart.canvas;
1982
+ var ctx = this.chart.chart.ctx;
1983
+ var tmpCanvas = document.createElement("canvas");
1984
+ var tmpCtx = tmpCanvas.getContext("2d");
1985
+ tmpCanvas.width = ctx.canvas.width;
1986
+ tmpCanvas.height = ctx.canvas.height;
1987
+ tmpCtx.fillStyle = download.background;
1988
+ tmpCtx.fillRect(0, 0, tmpCanvas.width, tmpCanvas.height);
1989
+ tmpCtx.drawImage(canvas, 0, 0);
1990
+ return tmpCanvas.toDataURL("image/png");
1991
+ } else {
1992
+ return this.chart.toBase64Image();
1993
+ }
1959
1994
  } else {
1995
+ // TODO throw error in next major version
1996
+ // throw new Error("Feature only available for Chart.js");
1960
1997
  return null;
1961
1998
  }
1962
1999
  };
@@ -1993,7 +2030,7 @@
1993
2030
  return config;
1994
2031
  };
1995
2032
 
1996
- var LineChart = (function (Chart) {
2033
+ var LineChart = /*@__PURE__*/(function (Chart) {
1997
2034
  function LineChart () {
1998
2035
  Chart.apply(this, arguments);
1999
2036
  }
@@ -2013,7 +2050,7 @@
2013
2050
  return LineChart;
2014
2051
  }(Chart));
2015
2052
 
2016
- var PieChart = (function (Chart) {
2053
+ var PieChart = /*@__PURE__*/(function (Chart) {
2017
2054
  function PieChart () {
2018
2055
  Chart.apply(this, arguments);
2019
2056
  }
@@ -2033,7 +2070,7 @@
2033
2070
  return PieChart;
2034
2071
  }(Chart));
2035
2072
 
2036
- var ColumnChart = (function (Chart) {
2073
+ var ColumnChart = /*@__PURE__*/(function (Chart) {
2037
2074
  function ColumnChart () {
2038
2075
  Chart.apply(this, arguments);
2039
2076
  }
@@ -2053,7 +2090,7 @@
2053
2090
  return ColumnChart;
2054
2091
  }(Chart));
2055
2092
 
2056
- var BarChart = (function (Chart) {
2093
+ var BarChart = /*@__PURE__*/(function (Chart) {
2057
2094
  function BarChart () {
2058
2095
  Chart.apply(this, arguments);
2059
2096
  }
@@ -2073,7 +2110,7 @@
2073
2110
  return BarChart;
2074
2111
  }(Chart));
2075
2112
 
2076
- var AreaChart = (function (Chart) {
2113
+ var AreaChart = /*@__PURE__*/(function (Chart) {
2077
2114
  function AreaChart () {
2078
2115
  Chart.apply(this, arguments);
2079
2116
  }
@@ -2093,7 +2130,7 @@
2093
2130
  return AreaChart;
2094
2131
  }(Chart));
2095
2132
 
2096
- var GeoChart = (function (Chart) {
2133
+ var GeoChart = /*@__PURE__*/(function (Chart) {
2097
2134
  function GeoChart () {
2098
2135
  Chart.apply(this, arguments);
2099
2136
  }
@@ -2113,7 +2150,7 @@
2113
2150
  return GeoChart;
2114
2151
  }(Chart));
2115
2152
 
2116
- var ScatterChart = (function (Chart) {
2153
+ var ScatterChart = /*@__PURE__*/(function (Chart) {
2117
2154
  function ScatterChart () {
2118
2155
  Chart.apply(this, arguments);
2119
2156
  }
@@ -2133,7 +2170,7 @@
2133
2170
  return ScatterChart;
2134
2171
  }(Chart));
2135
2172
 
2136
- var BubbleChart = (function (Chart) {
2173
+ var BubbleChart = /*@__PURE__*/(function (Chart) {
2137
2174
  function BubbleChart () {
2138
2175
  Chart.apply(this, arguments);
2139
2176
  }
@@ -2153,7 +2190,7 @@
2153
2190
  return BubbleChart;
2154
2191
  }(Chart));
2155
2192
 
2156
- var Timeline = (function (Chart) {
2193
+ var Timeline = /*@__PURE__*/(function (Chart) {
2157
2194
  function Timeline () {
2158
2195
  Chart.apply(this, arguments);
2159
2196
  }
@@ -2196,6 +2233,9 @@
2196
2233
  }
2197
2234
  }
2198
2235
  },
2236
+ setDefaultOptions: function (opts) {
2237
+ Chartkick.options = opts;
2238
+ },
2199
2239
  eachChart: function (callback) {
2200
2240
  for (var chartId in Chartkick.charts) {
2201
2241
  if (Chartkick.charts.hasOwnProperty(chartId)) {
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chartkick
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.1
4
+ version: 3.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-08-14 00:00:00.000000000 Z
11
+ date: 2019-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -69,7 +69,7 @@ files:
69
69
  - lib/chartkick/version.rb
70
70
  - vendor/assets/javascripts/Chart.bundle.js
71
71
  - vendor/assets/javascripts/chartkick.js
72
- homepage: https://www.chartkick.com
72
+ homepage: https://chartkick.com
73
73
  licenses:
74
74
  - MIT
75
75
  metadata: {}
@@ -89,7 +89,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
89
89
  version: '0'
90
90
  requirements: []
91
91
  rubyforge_project:
92
- rubygems_version: 2.7.7
92
+ rubygems_version: 2.7.6
93
93
  signing_key:
94
94
  specification_version: 4
95
95
  summary: Create beautiful JavaScript charts with one line of Ruby