chartkick 2.3.3 → 2.3.4

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
- * v2.3.4
5
+ * v2.3.5
6
6
  * MIT License
7
7
  */
8
8
 
@@ -371,20 +371,6 @@
371
371
  options.scales.yAxes[0].scaleLabel.labelString = title;
372
372
  };
373
373
 
374
- var drawChart = function(chart, type, data, options) {
375
- if (chart.chart) {
376
- chart.chart.destroy();
377
- }
378
-
379
- chart.element.innerHTML = "<canvas></canvas>";
380
- var ctx = chart.element.getElementsByTagName("CANVAS")[0];
381
- chart.chart = new window.Chart(ctx, {
382
- type: type,
383
- data: data,
384
- options: options
385
- });
386
- };
387
-
388
374
  // http://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb
389
375
  var addOpacity = function(hex, opacity) {
390
376
  var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
@@ -629,9 +615,14 @@
629
615
  return data;
630
616
  };
631
617
 
632
- var renderLineChart = function (chart, chartType) {
618
+ var defaultExport = function defaultExport(library) {
619
+ this.name = "chartjs";
620
+ this.library = library;
621
+ };
622
+
623
+ defaultExport.prototype.renderLineChart = function renderLineChart (chart, chartType) {
633
624
  if (chart.options.xtype === "number") {
634
- return renderScatterChart(chart, chartType, true);
625
+ return this.renderScatterChart(chart, chartType, true);
635
626
  }
636
627
 
637
628
  var chartOptions = {};
@@ -647,10 +638,10 @@
647
638
 
648
639
  options.scales.xAxes[0].type = chart.discrete ? "category" : "time";
649
640
 
650
- drawChart(chart, "line", data, options);
641
+ this.drawChart(chart, "line", data, options);
651
642
  };
652
643
 
653
- var renderPieChart = function (chart) {
644
+ defaultExport.prototype.renderPieChart = function renderPieChart (chart) {
654
645
  var options = merge({}, baseOptions);
655
646
  if (chart.options.donut) {
656
647
  options.cutoutPercentage = 50;
@@ -685,10 +676,10 @@
685
676
  ]
686
677
  };
687
678
 
688
- drawChart(chart, "pie", data, options);
679
+ this.drawChart(chart, "pie", data, options);
689
680
  };
690
681
 
691
- var renderColumnChart = function (chart, chartType) {
682
+ defaultExport.prototype.renderColumnChart = function renderColumnChart (chart, chartType) {
692
683
  var options;
693
684
  if (chartType === "bar") {
694
685
  options = jsOptionsFunc(merge(baseOptions, defaultOptions), hideLegend, setTitle, setBarMin, setBarMax, setStacked, setXtitle, setYtitle)(chart, chart.options);
@@ -700,18 +691,18 @@
700
691
  if (chartType !== "bar") {
701
692
  setLabelSize(chart, data, options);
702
693
  }
703
- drawChart(chart, (chartType === "bar" ? "horizontalBar" : "bar"), data, options);
694
+ this.drawChart(chart, (chartType === "bar" ? "horizontalBar" : "bar"), data, options);
704
695
  };
705
696
 
706
- var renderAreaChart = function (chart) {
707
- renderLineChart(chart, "area");
697
+ defaultExport.prototype.renderAreaChart = function renderAreaChart (chart) {
698
+ this.renderLineChart(chart, "area");
708
699
  };
709
700
 
710
- var renderBarChart = function (chart) {
711
- renderColumnChart(chart, "bar");
701
+ defaultExport.prototype.renderBarChart = function renderBarChart (chart) {
702
+ this.renderColumnChart(chart, "bar");
712
703
  };
713
704
 
714
- var renderScatterChart = function (chart, chartType, lineChart) {
705
+ defaultExport.prototype.renderScatterChart = function renderScatterChart (chart, chartType, lineChart) {
715
706
  chartType = chartType || "line";
716
707
 
717
708
  var options = jsOptions(chart, chart.options);
@@ -760,22 +751,25 @@
760
751
  options.scales.xAxes[0].type = "linear";
761
752
  options.scales.xAxes[0].position = "bottom";
762
753
 
763
- drawChart(chart, chartType, data, options);
754
+ this.drawChart(chart, chartType, data, options);
764
755
  };
765
756
 
766
- var renderBubbleChart = function (chart) {
767
- renderScatterChart(chart, "bubble");
757
+ defaultExport.prototype.renderBubbleChart = function renderBubbleChart (chart) {
758
+ this.renderScatterChart(chart, "bubble");
768
759
  };
769
760
 
770
- var ChartjsAdapter = {
771
- name: "chartjs",
772
- renderLineChart: renderLineChart,
773
- renderPieChart: renderPieChart,
774
- renderColumnChart: renderColumnChart,
775
- renderBarChart: renderBarChart,
776
- renderAreaChart: renderAreaChart,
777
- renderScatterChart: renderScatterChart,
778
- renderBubbleChart: renderBubbleChart
761
+ defaultExport.prototype.drawChart = function drawChart (chart, type, data, options) {
762
+ if (chart.chart) {
763
+ chart.chart.destroy();
764
+ }
765
+
766
+ chart.element.innerHTML = "<canvas></canvas>";
767
+ var ctx = chart.element.getElementsByTagName("CANVAS")[0];
768
+ chart.chart = new this.library(ctx, {
769
+ type: type,
770
+ data: data,
771
+ options: options
772
+ });
779
773
  };
780
774
 
781
775
  var defaultOptions$1 = {
@@ -865,16 +859,6 @@
865
859
 
866
860
  var jsOptions$1 = jsOptionsFunc(defaultOptions$1, hideLegend$1, setTitle$1, setMin$1, setMax$1, setStacked$1, setXtitle$1, setYtitle$1);
867
861
 
868
- var drawChart$1 = function(chart, data, options) {
869
- if (chart.chart) {
870
- chart.chart.destroy();
871
- }
872
-
873
- options.chart.renderTo = chart.element.id;
874
- options.series = data;
875
- chart.chart = new window.Highcharts.Chart(options);
876
- };
877
-
878
862
  var setFormatOptions$1 = function(chart, options, chartType) {
879
863
  var formatOptions = {
880
864
  prefix: chart.options.prefix,
@@ -898,7 +882,12 @@
898
882
  }
899
883
  };
900
884
 
901
- var renderLineChart$1 = function (chart, chartType) {
885
+ var defaultExport$1 = function defaultExport(library) {
886
+ this.name = "highcharts";
887
+ this.library = library;
888
+ };
889
+
890
+ defaultExport$1.prototype.renderLineChart = function renderLineChart (chart, chartType) {
902
891
  chartType = chartType || "spline";
903
892
  var chartOptions = {};
904
893
  if (chartType === "areaspline") {
@@ -948,16 +937,16 @@
948
937
  }
949
938
  }
950
939
 
951
- drawChart$1(chart, series, options);
940
+ this.drawChart(chart, series, options);
952
941
  };
953
942
 
954
- var renderScatterChart$1 = function (chart) {
943
+ defaultExport$1.prototype.renderScatterChart = function renderScatterChart (chart) {
955
944
  var options = jsOptions$1(chart, chart.options, {});
956
945
  options.chart.type = "scatter";
957
- drawChart$1(chart, chart.data, options);
946
+ this.drawChart(chart, chart.data, options);
958
947
  };
959
948
 
960
- var renderPieChart$1 = function (chart) {
949
+ defaultExport$1.prototype.renderPieChart = function renderPieChart (chart) {
961
950
  var chartOptions = merge(defaultOptions$1, {});
962
951
 
963
952
  if (chart.options.colors) {
@@ -983,10 +972,10 @@
983
972
  data: chart.data
984
973
  }];
985
974
 
986
- drawChart$1(chart, series, options);
975
+ this.drawChart(chart, series, options);
987
976
  };
988
977
 
989
- var renderColumnChart$1 = function (chart, chartType) {
978
+ defaultExport$1.prototype.renderColumnChart = function renderColumnChart (chart, chartType) {
990
979
  chartType = chartType || "column";
991
980
  var series = chart.data;
992
981
  var options = jsOptions$1(chart, chart.options), i, j, s, d, rows = [], categories = [];
@@ -1030,77 +1019,30 @@
1030
1019
  newSeries.push(d2);
1031
1020
  }
1032
1021
 
1033
- drawChart$1(chart, newSeries, options);
1022
+ this.drawChart(chart, newSeries, options);
1034
1023
  };
1035
1024
 
1036
- var renderBarChart$1 = function (chart) {
1037
- renderColumnChart$1(chart, "bar");
1025
+ defaultExport$1.prototype.renderBarChart = function renderBarChart (chart) {
1026
+ this.renderColumnChart(chart, "bar");
1038
1027
  };
1039
1028
 
1040
- var renderAreaChart$1 = function (chart) {
1041
- renderLineChart$1(chart, "areaspline");
1029
+ defaultExport$1.prototype.renderAreaChart = function renderAreaChart (chart) {
1030
+ this.renderLineChart(chart, "areaspline");
1042
1031
  };
1043
1032
 
1044
- var HighchartsAdapter = {
1045
- name: "highcharts",
1046
- renderLineChart: renderLineChart$1,
1047
- renderPieChart: renderPieChart$1,
1048
- renderColumnChart: renderColumnChart$1,
1049
- renderBarChart: renderBarChart$1,
1050
- renderAreaChart: renderAreaChart$1,
1051
- renderScatterChart: renderScatterChart$1
1033
+ defaultExport$1.prototype.drawChart = function drawChart (chart, data, options) {
1034
+ if (chart.chart) {
1035
+ chart.chart.destroy();
1036
+ }
1037
+
1038
+ options.chart.renderTo = chart.element.id;
1039
+ options.series = data;
1040
+ chart.chart = new this.library.Chart(options);
1052
1041
  };
1053
1042
 
1054
1043
  var loaded = {};
1055
1044
  var callbacks = [];
1056
1045
 
1057
- var runCallbacks = function () {
1058
- var cb, call;
1059
- for (var i = 0; i < callbacks.length; i++) {
1060
- cb = callbacks[i];
1061
- call = window.google.visualization && ((cb.pack === "corechart" && window.google.visualization.LineChart) || (cb.pack === "timeline" && window.google.visualization.Timeline));
1062
- if (call) {
1063
- cb.callback();
1064
- callbacks.splice(i, 1);
1065
- i--;
1066
- }
1067
- }
1068
- };
1069
-
1070
- var waitForLoaded = function (chart, pack, callback) {
1071
- if (!callback) {
1072
- callback = pack;
1073
- pack = "corechart";
1074
- }
1075
-
1076
- callbacks.push({pack: pack, callback: callback});
1077
-
1078
- if (loaded[pack]) {
1079
- runCallbacks();
1080
- } else {
1081
- loaded[pack] = true;
1082
-
1083
- // https://groups.google.com/forum/#!topic/google-visualization-api/fMKJcyA2yyI
1084
- var loadOptions = {
1085
- packages: [pack],
1086
- callback: runCallbacks
1087
- };
1088
- var config = chart.__config();
1089
- if (config.language) {
1090
- loadOptions.language = config.language;
1091
- }
1092
- if (pack === "corechart" && config.mapsApiKey) {
1093
- loadOptions.mapsApiKey = config.mapsApiKey;
1094
- }
1095
-
1096
- if (window.google.setOnLoadCallback) {
1097
- window.google.load("visualization", "1", loadOptions);
1098
- } else {
1099
- window.google.charts.load("current", loadOptions);
1100
- }
1101
- }
1102
- };
1103
-
1104
1046
  // Set chart options
1105
1047
  var defaultOptions$2 = {
1106
1048
  chartArea: {},
@@ -1197,64 +1139,6 @@
1197
1139
 
1198
1140
  var jsOptions$2 = jsOptionsFunc(defaultOptions$2, hideLegend$2, setTitle$2, setMin$2, setMax$2, setStacked$2, setXtitle$2, setYtitle$2);
1199
1141
 
1200
- // cant use object as key
1201
- var createDataTable$1 = function (series, columnType, xtype) {
1202
- var i, j, s, d, key, rows = [], sortedLabels = [];
1203
- for (i = 0; i < series.length; i++) {
1204
- s = series[i];
1205
-
1206
- for (j = 0; j < s.data.length; j++) {
1207
- d = s.data[j];
1208
- key = (columnType === "datetime") ? d[0].getTime() : d[0];
1209
- if (!rows[key]) {
1210
- rows[key] = new Array(series.length);
1211
- sortedLabels.push(key);
1212
- }
1213
- rows[key][i] = toFloat(d[1]);
1214
- }
1215
- }
1216
-
1217
- var rows2 = [];
1218
- var day = true;
1219
- var value;
1220
- for (j = 0; j < sortedLabels.length; j++) {
1221
- i = sortedLabels[j];
1222
- if (columnType === "datetime") {
1223
- value = new Date(toFloat(i));
1224
- day = day && isDay(value);
1225
- } else if (columnType === "number") {
1226
- value = toFloat(i);
1227
- } else {
1228
- value = i;
1229
- }
1230
- rows2.push([value].concat(rows[i]));
1231
- }
1232
- if (columnType === "datetime") {
1233
- rows2.sort(sortByTime);
1234
- } else if (columnType === "number") {
1235
- rows2.sort(sortByNumberSeries);
1236
- }
1237
-
1238
- if (xtype === "number") {
1239
- rows2.sort(sortByNumberSeries);
1240
-
1241
- for (i = 0; i < rows2.length; i++) {
1242
- rows2[i][0] = toStr(rows2[i][0]);
1243
- }
1244
- }
1245
-
1246
- // create datatable
1247
- var data = new window.google.visualization.DataTable();
1248
- columnType = columnType === "datetime" && day ? "date" : columnType;
1249
- data.addColumn(columnType, "");
1250
- for (i = 0; i < series.length; i++) {
1251
- data.addColumn("number", series[i].name);
1252
- }
1253
- data.addRows(rows2);
1254
-
1255
- return data;
1256
- };
1257
-
1258
1142
  var resize = function (callback) {
1259
1143
  if (window.attachEvent) {
1260
1144
  window.attachEvent("onresize", callback);
@@ -1264,19 +1148,15 @@
1264
1148
  callback();
1265
1149
  };
1266
1150
 
1267
- var drawChart$2 = function(chart, type, data, options) {
1268
- if (chart.chart) {
1269
- chart.chart.clearChart();
1270
- }
1271
-
1272
- chart.chart = new type(chart.element);
1273
- resize(function () {
1274
- chart.chart.draw(data, options);
1275
- });
1151
+ var defaultExport$2 = function defaultExport(library) {
1152
+ this.name = "google";
1153
+ this.library = library;
1276
1154
  };
1277
1155
 
1278
- var renderLineChart$2 = function (chart) {
1279
- waitForLoaded(chart, function () {
1156
+ defaultExport$2.prototype.renderLineChart = function renderLineChart (chart) {
1157
+ var this$1 = this;
1158
+
1159
+ this.waitForLoaded(chart, function () {
1280
1160
  var chartOptions = {};
1281
1161
 
1282
1162
  if (chart.options.curve === false) {
@@ -1292,14 +1172,16 @@
1292
1172
  if (chart.options.xtype === "number") {
1293
1173
  columnType = "number";
1294
1174
  }
1295
- var data = createDataTable$1(chart.data, columnType);
1175
+ var data = this$1.createDataTable(chart.data, columnType);
1296
1176
 
1297
- drawChart$2(chart, window.google.visualization.LineChart, data, options);
1177
+ this$1.drawChart(chart, this$1.library.visualization.LineChart, data, options);
1298
1178
  });
1299
1179
  };
1300
1180
 
1301
- var renderPieChart$2 = function (chart) {
1302
- waitForLoaded(chart, function () {
1181
+ defaultExport$2.prototype.renderPieChart = function renderPieChart (chart) {
1182
+ var this$1 = this;
1183
+
1184
+ this.waitForLoaded(chart, function () {
1303
1185
  var chartOptions = {
1304
1186
  chartArea: {
1305
1187
  top: "10%",
@@ -1321,26 +1203,30 @@
1321
1203
  }
1322
1204
  var options = merge(merge(defaultOptions$2, chartOptions), chart.options.library || {});
1323
1205
 
1324
- var data = new window.google.visualization.DataTable();
1206
+ var data = new this$1.library.visualization.DataTable();
1325
1207
  data.addColumn("string", "");
1326
1208
  data.addColumn("number", "Value");
1327
1209
  data.addRows(chart.data);
1328
1210
 
1329
- drawChart$2(chart, window.google.visualization.PieChart, data, options);
1211
+ this$1.drawChart(chart, this$1.library.visualization.PieChart, data, options);
1330
1212
  });
1331
1213
  };
1332
1214
 
1333
- var renderColumnChart$2 = function (chart) {
1334
- waitForLoaded(chart, function () {
1215
+ defaultExport$2.prototype.renderColumnChart = function renderColumnChart (chart) {
1216
+ var this$1 = this;
1217
+
1218
+ this.waitForLoaded(chart, function () {
1335
1219
  var options = jsOptions$2(chart, chart.options);
1336
- var data = createDataTable$1(chart.data, "string", chart.options.xtype);
1220
+ var data = this$1.createDataTable(chart.data, "string", chart.options.xtype);
1337
1221
 
1338
- drawChart$2(chart, window.google.visualization.ColumnChart, data, options);
1222
+ this$1.drawChart(chart, this$1.library.visualization.ColumnChart, data, options);
1339
1223
  });
1340
1224
  };
1341
1225
 
1342
- var renderBarChart$2 = function (chart) {
1343
- waitForLoaded(chart, function () {
1226
+ defaultExport$2.prototype.renderBarChart = function renderBarChart (chart) {
1227
+ var this$1 = this;
1228
+
1229
+ this.waitForLoaded(chart, function () {
1344
1230
  var chartOptions = {
1345
1231
  hAxis: {
1346
1232
  gridlines: {
@@ -1349,14 +1235,16 @@
1349
1235
  }
1350
1236
  };
1351
1237
  var options = jsOptionsFunc(defaultOptions$2, hideLegend$2, setTitle$2, setBarMin$1, setBarMax$1, setStacked$2, setXtitle$2, setYtitle$2)(chart, chart.options, chartOptions);
1352
- var data = createDataTable$1(chart.data, "string", chart.options.xtype);
1238
+ var data = this$1.createDataTable(chart.data, "string", chart.options.xtype);
1353
1239
 
1354
- drawChart$2(chart, window.google.visualization.BarChart, data, options);
1240
+ this$1.drawChart(chart, this$1.library.visualization.BarChart, data, options);
1355
1241
  });
1356
1242
  };
1357
1243
 
1358
- var renderAreaChart$2 = function (chart) {
1359
- waitForLoaded(chart, function () {
1244
+ defaultExport$2.prototype.renderAreaChart = function renderAreaChart (chart) {
1245
+ var this$1 = this;
1246
+
1247
+ this.waitForLoaded(chart, function () {
1360
1248
  var chartOptions = {
1361
1249
  isStacked: true,
1362
1250
  pointSize: 0,
@@ -1368,14 +1256,16 @@
1368
1256
  if (chart.options.xtype === "number") {
1369
1257
  columnType = "number";
1370
1258
  }
1371
- var data = createDataTable$1(chart.data, columnType);
1259
+ var data = this$1.createDataTable(chart.data, columnType);
1372
1260
 
1373
- drawChart$2(chart, window.google.visualization.AreaChart, data, options);
1261
+ this$1.drawChart(chart, this$1.library.visualization.AreaChart, data, options);
1374
1262
  });
1375
1263
  };
1376
1264
 
1377
- var renderGeoChart = function (chart) {
1378
- waitForLoaded(chart, function () {
1265
+ defaultExport$2.prototype.renderGeoChart = function renderGeoChart (chart) {
1266
+ var this$1 = this;
1267
+
1268
+ this.waitForLoaded(chart, function () {
1379
1269
  var chartOptions = {
1380
1270
  legend: "none",
1381
1271
  colorAxis: {
@@ -1384,17 +1274,19 @@
1384
1274
  };
1385
1275
  var options = merge(merge(defaultOptions$2, chartOptions), chart.options.library || {});
1386
1276
 
1387
- var data = new window.google.visualization.DataTable();
1277
+ var data = new this$1.library.visualization.DataTable();
1388
1278
  data.addColumn("string", "");
1389
1279
  data.addColumn("number", chart.options.label || "Value");
1390
1280
  data.addRows(chart.data);
1391
1281
 
1392
- drawChart$2(chart, window.google.visualization.GeoChart, data, options);
1282
+ this$1.drawChart(chart, this$1.library.visualization.GeoChart, data, options);
1393
1283
  });
1394
1284
  };
1395
1285
 
1396
- var renderScatterChart$2 = function (chart) {
1397
- waitForLoaded(chart, function () {
1286
+ defaultExport$2.prototype.renderScatterChart = function renderScatterChart (chart) {
1287
+ var this$1 = this;
1288
+
1289
+ this.waitForLoaded(chart, function () {
1398
1290
  var chartOptions = {};
1399
1291
  var options = jsOptions$2(chart, chart.options, chartOptions);
1400
1292
 
@@ -1409,19 +1301,21 @@
1409
1301
  }
1410
1302
  }
1411
1303
 
1412
- data = new window.google.visualization.DataTable();
1304
+ data = new this$1.library.visualization.DataTable();
1413
1305
  data.addColumn("number", "");
1414
1306
  for (i = 0; i < series.length; i++) {
1415
1307
  data.addColumn("number", series[i].name);
1416
1308
  }
1417
1309
  data.addRows(rows2);
1418
1310
 
1419
- drawChart$2(chart, window.google.visualization.ScatterChart, data, options);
1311
+ this$1.drawChart(chart, this$1.library.visualization.ScatterChart, data, options);
1420
1312
  });
1421
1313
  };
1422
1314
 
1423
- var renderTimeline = function (chart) {
1424
- waitForLoaded(chart, "timeline", function () {
1315
+ defaultExport$2.prototype.renderTimeline = function renderTimeline (chart) {
1316
+ var this$1 = this;
1317
+
1318
+ this.waitForLoaded(chart, "timeline", function () {
1425
1319
  var chartOptions = {
1426
1320
  legend: "none"
1427
1321
  };
@@ -1431,7 +1325,7 @@
1431
1325
  }
1432
1326
  var options = merge(merge(defaultOptions$2, chartOptions), chart.options.library || {});
1433
1327
 
1434
- var data = new window.google.visualization.DataTable();
1328
+ var data = new this$1.library.visualization.DataTable();
1435
1329
  data.addColumn({type: "string", id: "Name"});
1436
1330
  data.addColumn({type: "date", id: "Start"});
1437
1331
  data.addColumn({type: "date", id: "End"});
@@ -1439,20 +1333,128 @@
1439
1333
 
1440
1334
  chart.element.style.lineHeight = "normal";
1441
1335
 
1442
- drawChart$2(chart, window.google.visualization.Timeline, data, options);
1336
+ this$1.drawChart(chart, this$1.library.visualization.Timeline, data, options);
1443
1337
  });
1444
1338
  };
1445
1339
 
1446
- var GoogleChartsAdapter = {
1447
- name: "google",
1448
- renderLineChart: renderLineChart$2,
1449
- renderPieChart: renderPieChart$2,
1450
- renderColumnChart: renderColumnChart$2,
1451
- renderBarChart: renderBarChart$2,
1452
- renderAreaChart: renderAreaChart$2,
1453
- renderScatterChart: renderScatterChart$2,
1454
- renderGeoChart: renderGeoChart,
1455
- renderTimeline: renderTimeline
1340
+ defaultExport$2.prototype.drawChart = function drawChart (chart, type, data, options) {
1341
+ if (chart.chart) {
1342
+ chart.chart.clearChart();
1343
+ }
1344
+
1345
+ chart.chart = new type(chart.element);
1346
+ resize(function () {
1347
+ chart.chart.draw(data, options);
1348
+ });
1349
+ };
1350
+
1351
+ defaultExport$2.prototype.waitForLoaded = function waitForLoaded (chart, pack, callback) {
1352
+ var this$1 = this;
1353
+
1354
+ if (!callback) {
1355
+ callback = pack;
1356
+ pack = "corechart";
1357
+ }
1358
+
1359
+ callbacks.push({pack: pack, callback: callback});
1360
+
1361
+ if (loaded[pack]) {
1362
+ this.runCallbacks();
1363
+ } else {
1364
+ loaded[pack] = true;
1365
+
1366
+ // https://groups.google.com/forum/#!topic/google-visualization-api/fMKJcyA2yyI
1367
+ var loadOptions = {
1368
+ packages: [pack],
1369
+ callback: function () { this$1.runCallbacks(); }
1370
+ };
1371
+ var config = chart.__config();
1372
+ if (config.language) {
1373
+ loadOptions.language = config.language;
1374
+ }
1375
+ if (pack === "corechart" && config.mapsApiKey) {
1376
+ loadOptions.mapsApiKey = config.mapsApiKey;
1377
+ }
1378
+
1379
+ if (this.library.setOnLoadCallback) {
1380
+ this.library.load("visualization", "1", loadOptions);
1381
+ } else {
1382
+ this.library.charts.load("current", loadOptions);
1383
+ }
1384
+ }
1385
+ };
1386
+
1387
+ defaultExport$2.prototype.runCallbacks = function runCallbacks () {
1388
+ var this$1 = this;
1389
+
1390
+ var cb, call;
1391
+ for (var i = 0; i < callbacks.length; i++) {
1392
+ cb = callbacks[i];
1393
+ call = this$1.library.visualization && ((cb.pack === "corechart" && this$1.library.visualization.LineChart) || (cb.pack === "timeline" && this$1.library.visualization.Timeline));
1394
+ if (call) {
1395
+ cb.callback();
1396
+ callbacks.splice(i, 1);
1397
+ i--;
1398
+ }
1399
+ }
1400
+ };
1401
+
1402
+ // cant use object as key
1403
+ defaultExport$2.prototype.createDataTable = function createDataTable (series, columnType, xtype) {
1404
+ var i, j, s, d, key, rows = [], sortedLabels = [];
1405
+ for (i = 0; i < series.length; i++) {
1406
+ s = series[i];
1407
+
1408
+ for (j = 0; j < s.data.length; j++) {
1409
+ d = s.data[j];
1410
+ key = (columnType === "datetime") ? d[0].getTime() : d[0];
1411
+ if (!rows[key]) {
1412
+ rows[key] = new Array(series.length);
1413
+ sortedLabels.push(key);
1414
+ }
1415
+ rows[key][i] = toFloat(d[1]);
1416
+ }
1417
+ }
1418
+
1419
+ var rows2 = [];
1420
+ var day = true;
1421
+ var value;
1422
+ for (j = 0; j < sortedLabels.length; j++) {
1423
+ i = sortedLabels[j];
1424
+ if (columnType === "datetime") {
1425
+ value = new Date(toFloat(i));
1426
+ day = day && isDay(value);
1427
+ } else if (columnType === "number") {
1428
+ value = toFloat(i);
1429
+ } else {
1430
+ value = i;
1431
+ }
1432
+ rows2.push([value].concat(rows[i]));
1433
+ }
1434
+ if (columnType === "datetime") {
1435
+ rows2.sort(sortByTime);
1436
+ } else if (columnType === "number") {
1437
+ rows2.sort(sortByNumberSeries);
1438
+ }
1439
+
1440
+ if (xtype === "number") {
1441
+ rows2.sort(sortByNumberSeries);
1442
+
1443
+ for (i = 0; i < rows2.length; i++) {
1444
+ rows2[i][0] = toStr(rows2[i][0]);
1445
+ }
1446
+ }
1447
+
1448
+ // create datatable
1449
+ var data = new this.library.visualization.DataTable();
1450
+ columnType = columnType === "datetime" && day ? "date" : columnType;
1451
+ data.addColumn(columnType, "");
1452
+ for (i = 0; i < series.length; i++) {
1453
+ data.addColumn("number", series[i].name);
1454
+ }
1455
+ data.addRows(rows2);
1456
+
1457
+ return data;
1456
1458
  };
1457
1459
 
1458
1460
  var pendingRequests = [], runningRequests = 0, maxRequests = 4;
@@ -1614,7 +1616,23 @@
1614
1616
  return c === p;
1615
1617
  }
1616
1618
 
1617
- function addAdapter(adapter) {
1619
+ function getAdapterType(library) {
1620
+ if (library) {
1621
+ if (library.product === "Highcharts") {
1622
+ return defaultExport$1;
1623
+ } else if (library.setOnLoadCallback || library.charts) {
1624
+ return defaultExport$2;
1625
+ } else if (isFunction(library)) {
1626
+ return defaultExport;
1627
+ }
1628
+ }
1629
+ throw new Error("Unknown adapter");
1630
+ }
1631
+
1632
+ function addAdapter(library) {
1633
+ var adapterType = getAdapterType(library);
1634
+ var adapter = new adapterType(library);
1635
+
1618
1636
  if (adapters.indexOf(adapter) === -1) {
1619
1637
  adapters.push(adapter);
1620
1638
  }
@@ -1622,15 +1640,15 @@
1622
1640
 
1623
1641
  function loadAdapters() {
1624
1642
  if ("Chart" in window) {
1625
- addAdapter(ChartjsAdapter);
1643
+ addAdapter(window.Chart);
1626
1644
  }
1627
1645
 
1628
1646
  if ("Highcharts" in window) {
1629
- addAdapter(HighchartsAdapter);
1647
+ addAdapter(window.Highcharts);
1630
1648
  }
1631
1649
 
1632
1650
  if (window.google && (window.google.setOnLoadCallback || window.google.charts)) {
1633
- addAdapter(GoogleChartsAdapter);
1651
+ addAdapter(window.google);
1634
1652
  }
1635
1653
  }
1636
1654
 
@@ -2119,7 +2137,8 @@
2119
2137
  },
2120
2138
  config: config,
2121
2139
  options: {},
2122
- adapters: adapters
2140
+ adapters: adapters,
2141
+ addAdapter: addAdapter
2123
2142
  };
2124
2143
 
2125
2144
  return Chartkick;