#highcharts #collapse #organization
Вопрос:
Я использую Highcharts для создания организационных диаграмм, как в приведенном примере : https://jsfiddle.net/vegaelce/7rb6esqt/
Можно ли добавить функцию «свернуть», как в организационной диаграмме Google ? В следующем примере https://jsfiddle.net/vegaelce/kb2gted4 когда вы дважды нажимаете на ячейку «Майк» или «Джим», она сворачивает все ячейки выше. Мне нужно воспроизвести эквивалентный режим с помощью Highcharts, у вас есть идея сделать это ? (в Google API режим сворачивания включен с помощью
allowCollapse:true
Спасибо
Ответ №1:
В Highcharts нет такой встроенной функции, но вы можете добавить ее, используя событие щелчка и методы отображения/скрытия. Пример:
plotOptions: {
series: {
point: {
events: {
click: function() {
const operateChildren = (point, operation) => {
point.linksFrom.forEach(link => {
link.graphic[operation]();
link.toNode.graphic[operation]();
operateChildren(link.toNode, operation);
});
};
if (this.linksFrom amp;amp; this.linksFrom[0]) {
if (this.linksFrom[0].graphic.visibility === 'hidden') {
operateChildren(this, 'show');
} else {
operateChildren(this, 'hide');
}
}
}
}
}
}
},
tooltip: {
formatter: function(tooltip) {
if (this.point.graphic.visibility !== 'hidden') {
return tooltip.defaultFormatter.call(this, tooltip);
}
return false;
}
}
Живая демонстрация: https://jsfiddle.net/Черная метка/dp03gq6a/
Ссылка на API:
https://api.highcharts.com/class-reference/Highcharts.SVGElement#показать
https://api.highcharts.com/class-reference/Highcharts.SVGElement#скрыть
Комментарии:
1. Большое спасибо за эту функцию. У меня есть 2 дополнительных запроса об этой функции : в следующем примере можно ли «перерисовать» диаграмму после того, как узел сложен/развернут (чтобы оптимизировать оставшееся пространство и перестроить узлы) ? Другие вопросы : можно ли выделить от узла до родителя высокого уровня, когда мышь наведена на узел ? Я видел, что в файле highchart.css что-то подобное сделано, но только для предыдущего родителя и ребенка. Еще раз спасибо за вашу помощь
2. Привет @vegaelce, не могли бы вы создать для этого новый вопрос SO? Я думаю, что для остальных будет лучше разделить эти две темы.