Отображение меток на определенной глубине в древовидной карте Javascript Infovis Toolkit

Я создаю карту дерева с помощью Javascript Infovis Toolkit. с 4 уровнями (Олимпиада > Спорт > Событие > Медали), и я хочу показать сразу три — но только метки для 2/3.

(Например: в виде сверху я бы показал все разные виды спорта и все события внутри видов спорта, но не ярлыки для событий, потому что их слишком много.)

Я использую следующий код, чтобы попытаться скрыть уровни, но он не скрывает их, когда я увеличиваю масштаб.

onPlaceLabel: function(domElement, node){
    if (node._depth == 0) {console.dir(node);}
        if (node._depth > 1) {
            domElement.style.display = 'none';
        } else {
            domElement.style.display = '';          
        }
}

Кажется, что _depth не меняется при увеличении/уменьшении масштаба — это статическое свойство каждого узла.

Возможно, я смогу написать условное выражение, которое изменяет отображаемый уровень глубины на основе текущего узла глубины, установленного в качестве родительского. Кто-нибудь знает, где я это найду?

Спасибо!


person aendrew    schedule 28.07.2012    source источник


Ответы (1)


Догадаться! OnBeforeComputer(); метод выполняет операции с выбранным узлом до того, как все будет вычислено. См. ниже код:

//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 = '';          
        }           
    }
}
person aendrew    schedule 28.07.2012