2016-06-13 9 views
0

Zusätzliche Frage auf die Antwort gestutzt hier: Truncate text in d3d3.js bilevel Partition - Text Zustand auf klicken äußersten Ring

.text(function (d) { 
if(d.name.length > 5) 
    return d.name.substring(0,5)+'...'; 
else 
    return d.name;      
}); 

Ich möchte eine Bedingung hinzuzufügen, wo, wenn der Text ein Etikett in der ist äußerster Ring einer bilevel partition chart wird der Text nicht mehr abgeschnitten.

Mögliche Lösung wäre etwas wie hinzufügen: wenn äußerste Ring angeklickt wird, zeichnen Sie den Text neu.

Edit: Leider habe ich vergessen zu erwähnen, dass diese Bedingung nur passieren sollte, wenn der äußerste Ring angeklickt wird. Daher wird der Text zunächst abgeschnitten, und wenn der äußerste Ring vergrößert wird, wird die Kürzung entfernt.

inside function click(d): 
    if d.depth >= 3 { 
     modify firstLine, remove code that shortens the text 
    } 
    else if other d.depth is clicked { 
     keep/revert back to the same code 
    } 

Antwort

0

Sie müssen Ihre Daten für die äußerste Ebene überprüfen und fügen Sie einen Scheck in den gleichen Code. oder Sie können Ihrem Ur-Dataset ein zusätzliches Attribut hinzufügen (Say: level) und es dem (root) zuweisen. Sie müssen außerdem jedem Element/Text eine Kennung (ID oder Klasse) hinzufügen.

.on("click", function (d) { 
if(d.level == 'root') 
    d3.select("#ID").text(d.label); 
}); 
+0

sorry für die Verwirrung AKTUALISIERT. Ich habe mit meiner Frage einen Fehler gemacht und ihn modifiziert. aber ich überprüfe immer noch deine Antwort, um zu sehen, ob ich damit arbeiten kann. –

+0

na es würde nicht funktionieren ... Ich habe Änderungen vorgenommen, überprüfen Sie es –