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.
- checksums.yaml +5 -5
- data/CHANGELOG.md +5 -0
- data/README.md +4 -5
- data/lib/chartkick/version.rb +1 -1
- data/vendor/assets/javascripts/Chart.bundle.js +2611 -2300
- data/vendor/assets/javascripts/chartkick.js +249 -230
- metadata +3 -3
@@ -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.
|
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
|
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
|
-
|
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
|
-
|
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
|
-
|
707
|
-
renderLineChart(chart, "area");
|
697
|
+
defaultExport.prototype.renderAreaChart = function renderAreaChart (chart) {
|
698
|
+
this.renderLineChart(chart, "area");
|
708
699
|
};
|
709
700
|
|
710
|
-
|
711
|
-
renderColumnChart(chart, "bar");
|
701
|
+
defaultExport.prototype.renderBarChart = function renderBarChart (chart) {
|
702
|
+
this.renderColumnChart(chart, "bar");
|
712
703
|
};
|
713
704
|
|
714
|
-
|
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
|
-
|
767
|
-
renderScatterChart(chart, "bubble");
|
757
|
+
defaultExport.prototype.renderBubbleChart = function renderBubbleChart (chart) {
|
758
|
+
this.renderScatterChart(chart, "bubble");
|
768
759
|
};
|
769
760
|
|
770
|
-
|
771
|
-
|
772
|
-
|
773
|
-
|
774
|
-
|
775
|
-
|
776
|
-
|
777
|
-
|
778
|
-
|
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
|
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
|
940
|
+
this.drawChart(chart, series, options);
|
952
941
|
};
|
953
942
|
|
954
|
-
|
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
|
946
|
+
this.drawChart(chart, chart.data, options);
|
958
947
|
};
|
959
948
|
|
960
|
-
|
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
|
975
|
+
this.drawChart(chart, series, options);
|
987
976
|
};
|
988
977
|
|
989
|
-
|
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
|
1022
|
+
this.drawChart(chart, newSeries, options);
|
1034
1023
|
};
|
1035
1024
|
|
1036
|
-
|
1037
|
-
renderColumnChart
|
1025
|
+
defaultExport$1.prototype.renderBarChart = function renderBarChart (chart) {
|
1026
|
+
this.renderColumnChart(chart, "bar");
|
1038
1027
|
};
|
1039
1028
|
|
1040
|
-
|
1041
|
-
renderLineChart
|
1029
|
+
defaultExport$1.prototype.renderAreaChart = function renderAreaChart (chart) {
|
1030
|
+
this.renderLineChart(chart, "areaspline");
|
1042
1031
|
};
|
1043
1032
|
|
1044
|
-
|
1045
|
-
|
1046
|
-
|
1047
|
-
|
1048
|
-
|
1049
|
-
|
1050
|
-
|
1051
|
-
|
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
|
1268
|
-
|
1269
|
-
|
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
|
-
|
1279
|
-
|
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 =
|
1175
|
+
var data = this$1.createDataTable(chart.data, columnType);
|
1296
1176
|
|
1297
|
-
drawChart
|
1177
|
+
this$1.drawChart(chart, this$1.library.visualization.LineChart, data, options);
|
1298
1178
|
});
|
1299
1179
|
};
|
1300
1180
|
|
1301
|
-
|
1302
|
-
|
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
|
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
|
1211
|
+
this$1.drawChart(chart, this$1.library.visualization.PieChart, data, options);
|
1330
1212
|
});
|
1331
1213
|
};
|
1332
1214
|
|
1333
|
-
|
1334
|
-
|
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 =
|
1220
|
+
var data = this$1.createDataTable(chart.data, "string", chart.options.xtype);
|
1337
1221
|
|
1338
|
-
drawChart
|
1222
|
+
this$1.drawChart(chart, this$1.library.visualization.ColumnChart, data, options);
|
1339
1223
|
});
|
1340
1224
|
};
|
1341
1225
|
|
1342
|
-
|
1343
|
-
|
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 =
|
1238
|
+
var data = this$1.createDataTable(chart.data, "string", chart.options.xtype);
|
1353
1239
|
|
1354
|
-
drawChart
|
1240
|
+
this$1.drawChart(chart, this$1.library.visualization.BarChart, data, options);
|
1355
1241
|
});
|
1356
1242
|
};
|
1357
1243
|
|
1358
|
-
|
1359
|
-
|
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 =
|
1259
|
+
var data = this$1.createDataTable(chart.data, columnType);
|
1372
1260
|
|
1373
|
-
drawChart
|
1261
|
+
this$1.drawChart(chart, this$1.library.visualization.AreaChart, data, options);
|
1374
1262
|
});
|
1375
1263
|
};
|
1376
1264
|
|
1377
|
-
|
1378
|
-
|
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
|
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
|
1282
|
+
this$1.drawChart(chart, this$1.library.visualization.GeoChart, data, options);
|
1393
1283
|
});
|
1394
1284
|
};
|
1395
1285
|
|
1396
|
-
|
1397
|
-
|
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
|
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
|
1311
|
+
this$1.drawChart(chart, this$1.library.visualization.ScatterChart, data, options);
|
1420
1312
|
});
|
1421
1313
|
};
|
1422
1314
|
|
1423
|
-
|
1424
|
-
|
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
|
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
|
1336
|
+
this$1.drawChart(chart, this$1.library.visualization.Timeline, data, options);
|
1443
1337
|
});
|
1444
1338
|
};
|
1445
1339
|
|
1446
|
-
|
1447
|
-
|
1448
|
-
|
1449
|
-
|
1450
|
-
|
1451
|
-
|
1452
|
-
|
1453
|
-
|
1454
|
-
|
1455
|
-
|
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
|
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(
|
1643
|
+
addAdapter(window.Chart);
|
1626
1644
|
}
|
1627
1645
|
|
1628
1646
|
if ("Highcharts" in window) {
|
1629
|
-
addAdapter(
|
1647
|
+
addAdapter(window.Highcharts);
|
1630
1648
|
}
|
1631
1649
|
|
1632
1650
|
if (window.google && (window.google.setOnLoadCallback || window.google.charts)) {
|
1633
|
-
addAdapter(
|
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;
|