Spacetree con JavaScript

Sommario
È qui che ha chiamato questo plugin albero spaziale sviluppato in Javascript che ci permette di visualizzare le informazioni sotto forma di albero, in modo dinamico e intuitivo, da strutture organizzative o directory informative albero spaziale lo fa.

  • 1- Per prima cosa creiamo il nostro JSON, è colui che conterrà tutti i dati da visualizzare nel nostro albero, dobbiamo stare attenti a stabilire la corretta struttura e mantenere il rapporto di padre e figlio nel nostro JSON.
var json = {
id: "nodo02",
nome: "0.2",
dati: {},
figli: [{
id: "nodo13",
nome: "1.3",
dati: {},… .
  • 2 - Creiamo l'istanza del componente albero spaziale e lo associamo ad un selettore in questo caso l'id di un elemento:

var st = nuovo $ jit.ST ({
injectInto: 'infovis',…
  • 3 - Aggiungiamo alcune opzioni aggiuntive come la durata dell'animazione e la distanza tra ciascun nodo padre e il suo figlio:

durata: 800,
transizione: $ jit.Trans.Quart.easeInOut,
livelloDistanza: 50,
  • 4 - Quindi impostiamo lo stile per i nodi e gli assi; altezza, lunghezza, colore e tipo di forma che può variare da rettangolare a circolare, è importante ricordare che per ogni nodo avere uno stile individuale l'opzione sovrascrivibile deve avere il valore vero:

Non dare: {
altezza: 20,
larghezza: 60,
tipo: 'rettangolo',
colore: '#aaa',
sovrascrivibile: vero
},

Bordo: {
tipo: 'bezier',
sovrascrivibile: vero
},
  • 5 - Con il metodo onCreateLabel Assegniamo tutti gli eventi e gestori del nostro albero, oltre a poter assegnare stili alle etichette in ogni nodo:

onCreateLabel: function (label, node) {
etichetta.id = nodo.id;
label.innerHTML = node.name;
label.onclick = function() {
if (normal.checked) {
st.onclick (node.id);
} altro {
st.setRoot (node.id, 'animato');
}
};
var stile = etichetta.stile;
stile.larghezza = 60 + 'px';
stile.altezza = 17 + 'px';
style.cursor = 'puntatore';
style.color = '# 333';
style.fontSize = '0.8em';
style.textAlign = 'centro';
style.paddingTop = '3px';
},
  • 6 - Con il metodo suBeforePlotNode le proprietà di un nodo vengono modificate prima di essere disegnate, ad esempio cambiando il colore di un nodo a seconda della sua posizione o del numero di figli che ha.

onBeforePlotNode: function (nodo) {

if (nodo.selezionato) {

node.data.$ color = "# ff7";

}

altro {

cancella node.data $ color;

if (! node.anySubnode ("exist")) {

conteggio var = 0;

node.eachSubnode (funzione (n) {count ++;});

node.data $ color = ['#aaa', '#baa', '#caa', '#daa', '#eaa', '#faa'] [count];

}

}

},

  • 7 - Con il metodo suBeforePlotLine le proprietà degli assi vengono modificate prima di essere disegnate:

onBeforePlotLine: function (adj) {
if (adj.nodeFrom.selected && adj.nodeTo.selected) {
adj.data $ color = "#eed";
adj.data $ lineWidth = 3;
}
altro {
cancella adj.data $ color;
cancella adj.data $ lineWidth;
}
}
});
  • 8 - Infine carichiamo i dati JSON:
st.loadJSON (json);
Il risultato finale sarebbe il seguente:

Ecco il codice sorgente completo che puoi provare tu stesso:
 var st = new $ jit.ST ({injectInto: 'infovis', durata: 800, transizione: $ jit.Trans.Quart.easeInOut, levelDistance: 50, Navigazione: {enable: true, panning: true}, Nodo: { altezza: 20, larghezza: 60, tipo: 'rettangolo', colore: '#aaa', sovrascrivibile: vero}, Edge: {tipo: 'bezier', sovrascrivibile: vero}, onBeforeCompute: funzione (nodo) {Log.write ("loading" + node.name);}, onAfterCompute: function () {Log.write ("done");}, onCreateLabel: function (label, node) {label.id = node.id; label.innerHTML = node.name; label.onclick = function () {if (normal.checked) {st.onclick (node.id);} else {st.setRoot (node.id, 'animate');}}; var style = label.style; style.width = 60 + 'px'; style.height = 17 + 'px'; style.cursor = 'pointer'; style.color = '# 333'; style.fontSize = '0.8em'; style.textAlign = 'center'; style.paddingTop = '3px';}, onBeforePlotNode: function (node) {if (node.selected) {node.data. $ color = "# ff7";} else {cancella nodo. data. $ color; if (! node.anySubnode ("exist")) {var count = 0; node.eachSubn ode (funzione (n) {conta ++; }); node.data $ color = ['#aaa', '#baa', '#caa', '#daa', '#eaa', '#faa'] [count]; }}}, onBeforePlotLine: function (adj) {if (adj.nodeFrom.selected && adj.nodeTo.selected) {adj.data.$ color = "#eed"; adj.data $ lineWidth = 3; } else {cancella dati adj.$ color; cancella adj.data $ lineWidth; }}}); st.loadJSON (json); st.calcolo (); st.geom.translate (nuovo $ jit.Complex (-200, 0), "corrente"); st.onclick (st.root); 
Ti è piaciuto e hai aiutato questo Tutorial?Puoi premiare l'autore premendo questo pulsante per dargli un punto positivo

Aiuterete lo sviluppo del sito, condividere la pagina con i tuoi amici

wave wave wave wave wave