Mostrando etiquetas a uma certa profundidade em um Javascript Infovis Toolkit Treemap
-
13-12-2019 - |
Pergunta
Eu estou criando um treemap com o Javascript Infovis Toolkit com 4 níveis (jogos Olímpicos > Esporte > > Evento > Medalhas) e estou querendo mostrar três de uma vez — mas apenas rótulos para 2/3.
(Por exemplo:Na vista superior, gostaria de mostrar todos os diferentes Esportes, e todos os eventos dentro do esporte, mas não os rótulos para os eventos, porque existem muitas).
Eu estou usando o seguinte código para tentar esconder os níveis, mas não un-esconde-los quando eu zoom.
onPlaceLabel: function(domElement, node){
if (node._depth == 0) {console.dir(node);}
if (node._depth > 1) {
domElement.style.display = 'none';
} else {
domElement.style.display = '';
}
}
Parece que _depth não se altera quando você zoom in/out — é uma propriedade estática de cada nó.
Que eu seja capaz de escrever uma condicional que altera o nível de profundidade para mostrar com base na profundidade atual conjunto de nós como pai.Alguém sabe onde eu poderia encontrar que?
Obrigado!
Solução
Percebi isso!O onBeforeComputer();método operações no nó selecionado antes de tudo é calculado.Veja abaixo o código:
//sets the selected node depth as the .currentParentDepth
onBeforeCompute : function(node){
if (typeof this.currentParentDepth === "undefined") {
this.currentParentDepth = 0;
}
else {
this.currentParentDepth = node._depth;
}
},
onPlaceLabel: function(domElement, node){
if (this.currentParentDepth == 0) {
if (node._depth > 1) {
domElement.style.display = 'none';
} else {
domElement.style.display = '';
}
} else if (this.currentParentDepth == 1) {
if (node._depth > 2) {
domElement.style.display = 'none';
} else {
domElement.style.display = '';
}
}
}