У меня есть диаграмма, которая имеет несколько строк, каждая из которых нанесена на ее собственную ось y.Сообщите, если линия скрыта
Я пытаюсь настроить его так, чтобы, когда линия скрыта через легенду, также скрыта ось, на которой она находится. Мой план состоит в том, чтобы добавить прослушиватель кликов к холсту и оттуда отключить или включить всю ось в зависимости от состояния линии.
Моя проблема заключается в определении того, скрыта ли строка или нет. Свойство dataset.hidden
представляется только релевантным, если скрытое значение в dataset._meta
не определено. Я пытался создать код с этим в виду:
ctx.onclick = function(){
var changed = false;
for(var j = 0;j < scatterChart.options.scales.yAxes.length;j++){
var oldVal = scatterChart.options.scales.yAxes[j].display;
var hidden = false;
var isHiddenDataSet = scatterChart.data.datasets[j].hidden;
if(isHiddenDataSet){
hidden = true;
}
var isHiddenMeta = scatterChart.data.datasets[j]._meta[0].hidden;
if(isHiddenMeta != null){
hidden = isHiddenMeta;
}
scatterChart.options.scales.yAxes[j].display = !hidden;
changed = changed || oldVal == scatterChart.options.scales.yAxes[j].display;
}
if(changed){
scatterChart.update();
}
}
Этот код работал для моего оригинального теста, что есть только один график, но терпит неудачу, если есть более чем один график на странице в качестве индекса объекта данных в _meta
Изменения от графика до графика.
Есть ли способ определить, скрыт ли набор данных?
'_meta' не работает, ожидая при работе с более чем одной диаграммой. Не могли бы вы попробовать заменить '_meta [0]' на '_meta [Object.keys (scatterChart.data.datasets [j] ._ meta) [0]]'? – tektiv
@tektiv Это выполняет свою работу. Я подумал, что есть какой-то рефлексивный ответ, но не был уверен, как это сделать. – Fr33dan