diff --git a/inst/htmlwidgets/apexcharter.js b/inst/htmlwidgets/apexcharter.js
index 87895a7..8f2b700 100644
--- a/inst/htmlwidgets/apexcharter.js
+++ b/inst/htmlwidgets/apexcharter.js
@@ -35,27 +35,39 @@ HTMLWidgets.widget({
chartContext,
opts
) {
- var select = {};
- for (var i = 0; i < opts.selectedDataPoints.length; i++) {
- if (typeof opts.selectedDataPoints[i] === "undefined") {
- continue;
+ var options = opts;
+ var nonEmpty = opts.selectedDataPoints.filter(function (el) {
+ return el !== null && el.length > 0;
+ });
+ //console.log(chartContext);
+ if (nonEmpty.length > 0) {
+ var select = {};
+ for (var i = 0; i < opts.selectedDataPoints.length; i++) {
+ if (typeof opts.selectedDataPoints[i] === "undefined") {
+ continue;
+ }
+ var selection = getSelection(options, i);
+ if (selection !== null) {
+ if (opts.w.config.series[i].hasOwnProperty("name")) {
+ var name = opts.w.config.series[i].name;
+ select[name] = selection;
+ } else {
+ select[i] = selection;
+ }
+ }
}
- if (opts.w.config.series[i].hasOwnProperty("name")) {
- var name = opts.w.config.series[i].name;
- select[name] = getSelection(opts, i);
- } else {
- select[i] = getSelection(opts, i);
+ if (is_single(options)) {
+ select = select[Object.keys(select)[0]];
}
+ Shiny.setInputValue(x.shinyEvents.click.inputId, select);
+ } else {
+ Shiny.setInputValue(x.shinyEvents.click.inputId, null);
}
- if (is_single(opts)) {
- select = select[Object.keys(select)[0]];
- }
- Shiny.setInputValue(x.shinyEvents.click.inputId, select);
};
}
- if (x.shinyEvents.hasOwnProperty("zoom")) {
+ if (x.shinyEvents.hasOwnProperty("zoomed")) {
ax_opts.chart.events.zoomed = function(chartContext, xaxis, yaxis) {
- var id = x.shinyEvents.zoom.inputId;
+ var id = x.shinyEvents.zoomed.inputId;
if (chartContext.w.config.xaxis.type == "datetime") {
id = id + ":apex_datetime";
}
@@ -123,28 +135,27 @@ function get_widget(id) {
return widgetObj;
}
-function is_single(opts) {
+function is_single(options) {
var typeLabels = ["pie", "radialBar", "donut"];
- var lab = typeLabels.indexOf(opts.w.config.chart.type) > -1;
- var single = opts.w.config.series.length == 1;
+ var lab = typeLabels.indexOf(options.w.config.chart.type) > -1;
+ var single = options.w.config.series.length == 1;
return lab | single;
}
-function getSelection(opts, serieIndex) {
+function getSelection(options, serieIndex) {
var typeLabels = ["pie", "radialBar", "donut"];
var typeXY = ["scatter", "bubble"];
var selected;
- if (typeLabels.indexOf(opts.w.config.chart.type) > -1) {
- var labels = opts.w.config.labels;
- selected = opts.selectedDataPoints[serieIndex].map(function(index) {
+ if (typeLabels.indexOf(options.w.config.chart.type) > -1) {
+ var labels = options.w.config.labels;
+ selected = options.selectedDataPoints[serieIndex].map(function(index) {
return labels[index];
});
} else {
- var data = opts.w.config.series[serieIndex].data;
- console.log(opts.selectedDataPoints);
- selected = opts.selectedDataPoints[serieIndex].map(function(index) {
+ var data = options.w.config.series[serieIndex].data;
+ selected = options.selectedDataPoints[serieIndex].map(function(index) {
var val = data[index];
- if (typeXY.indexOf(opts.w.config.chart.type) < 0) {
+ if (typeXY.indexOf(options.w.config.chart.type) < 0) {
if (val.hasOwnProperty("x")) {
val = val.x;
} else {
@@ -154,7 +165,8 @@ function getSelection(opts, serieIndex) {
return val;
});
}
- if (typeXY.indexOf(opts.w.config.chart.type) > -1) {
+ console.log(selected);
+ if (typeXY.indexOf(options.w.config.chart.type) > -1) {
selected = {
x: selected.map(function(obj) {
return obj.x;
@@ -164,6 +176,9 @@ function getSelection(opts, serieIndex) {
})
};
}
+ if (typeof selected == "undefined") {
+ selected = null;
+ }
return selected;
}