updated js

This commit is contained in:
pvictor 2020-03-04 23:49:50 +01:00
parent 8f56dca2b9
commit 88b63408c9
1 changed files with 42 additions and 27 deletions

View File

@ -35,27 +35,39 @@ HTMLWidgets.widget({
chartContext, chartContext,
opts opts
) { ) {
var select = {}; var options = opts;
for (var i = 0; i < opts.selectedDataPoints.length; i++) { var nonEmpty = opts.selectedDataPoints.filter(function (el) {
if (typeof opts.selectedDataPoints[i] === "undefined") { return el !== null && el.length > 0;
continue; });
//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")) { if (is_single(options)) {
var name = opts.w.config.series[i].name; select = select[Object.keys(select)[0]];
select[name] = getSelection(opts, i);
} else {
select[i] = getSelection(opts, i);
} }
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) { 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") { if (chartContext.w.config.xaxis.type == "datetime") {
id = id + ":apex_datetime"; id = id + ":apex_datetime";
} }
@ -123,28 +135,27 @@ function get_widget(id) {
return widgetObj; return widgetObj;
} }
function is_single(opts) { function is_single(options) {
var typeLabels = ["pie", "radialBar", "donut"]; var typeLabels = ["pie", "radialBar", "donut"];
var lab = typeLabels.indexOf(opts.w.config.chart.type) > -1; var lab = typeLabels.indexOf(options.w.config.chart.type) > -1;
var single = opts.w.config.series.length == 1; var single = options.w.config.series.length == 1;
return lab | single; return lab | single;
} }
function getSelection(opts, serieIndex) { function getSelection(options, serieIndex) {
var typeLabels = ["pie", "radialBar", "donut"]; var typeLabels = ["pie", "radialBar", "donut"];
var typeXY = ["scatter", "bubble"]; var typeXY = ["scatter", "bubble"];
var selected; var selected;
if (typeLabels.indexOf(opts.w.config.chart.type) > -1) { if (typeLabels.indexOf(options.w.config.chart.type) > -1) {
var labels = opts.w.config.labels; var labels = options.w.config.labels;
selected = opts.selectedDataPoints[serieIndex].map(function(index) { selected = options.selectedDataPoints[serieIndex].map(function(index) {
return labels[index]; return labels[index];
}); });
} else { } else {
var data = opts.w.config.series[serieIndex].data; var data = options.w.config.series[serieIndex].data;
console.log(opts.selectedDataPoints); selected = options.selectedDataPoints[serieIndex].map(function(index) {
selected = opts.selectedDataPoints[serieIndex].map(function(index) {
var val = data[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")) { if (val.hasOwnProperty("x")) {
val = val.x; val = val.x;
} else { } else {
@ -154,7 +165,8 @@ function getSelection(opts, serieIndex) {
return val; return val;
}); });
} }
if (typeXY.indexOf(opts.w.config.chart.type) > -1) { console.log(selected);
if (typeXY.indexOf(options.w.config.chart.type) > -1) {
selected = { selected = {
x: selected.map(function(obj) { x: selected.map(function(obj) {
return obj.x; return obj.x;
@ -164,6 +176,9 @@ function getSelection(opts, serieIndex) {
}) })
}; };
} }
if (typeof selected == "undefined") {
selected = null;
}
return selected; return selected;
} }