2016-12-14 2 views
0

Ich versuche eine kleine Anwendung über d3plus.js zu bauen. Das Ziel ist es, eine Netzwerkvisualisierung zu verwenden, um eine Reihe von Knoten zu zeigen, die PDF-Dateien darstellen. Wenn auf den Knoten geklickt wird, sollte ein Fenster mit der PDF-Datei erscheinen.Wie kann ich einen Pfad zu open.window() onclick -Ereignis in d3plus/javascript übergeben?

Ich habe herausgefunden, wie man die window.open() -Funktion verwendet und es funktioniert, wenn ich den Pfad direkt in die window.open() -Funktion schreibe (fx "docs/somepdf.pdf").

Mein Problem besteht nun darin, die Pfadzeichenfolge von den sample_data an die Funktion window.open zu übergeben.

Kann mir jemand bitte sagen, was ich hier falsch mache?

<script src="//d3plus.org/js/d3.js"></script> 
<script src="//d3plus.org/js/d3plus.js"></script> 

<div id="viz"></div> 

<script> 
    // create list of node positions 
    var sample_data = [ 
    {"name": "alpha", "size": 10, "path": "docs/Tan - 1999 - Text mining The state of the art and the challeng.pdf"}, 
    {"name": "beta", "size": 12, "path": ""}, 
    {"name": "gamma", "size": 30, "path": ""}, 
    {"name": "delta", "size": 26, "path": ""}, 
    {"name": "epsilon", "size": 12, "path": ""}, 
    {"name": "zeta", "size": 26, "path": ""}, 
    {"name": "theta", "size": 11, "path": ""}, 
    {"name": "eta", "size": 24, "path": ""} 
    ] 
    var connections = [ 
    {"source": "alpha", "target": "beta"}, 
    {"source": "alpha", "target": "gamma"}, 
    {"source": "beta", "target": "delta"}, 
    {"source": "beta", "target": "epsilon"}, 
    {"source": "zeta", "target": "gamma"}, 
    {"source": "theta", "target": "gamma"}, 
    {"source": "eta", "target": "gamma"} 
    ] 
    // instantiate d3plus 
    var visualization = d3plus.viz() 
    .container("#viz") 
    .type("network") 
    .edges(connections) 
    .size("size") 
    .id("name") 
    .tooltip(["name", "size"]).mouse({     
     "move": false,      // key will also take custom function 
     "click": function(){window.open("path", '_blank', 'fullscreen=yes')}  
    }) 
    .draw() 
</script> 

Antwort

2

Das Problem ist, dass Sie „Pfad“ als String und nicht als Attribut des Knotens bereitzustellen.

Versuchen Sie, Ihre mouse Methode ändern:

.mouse({     
    "move": false, 
    "click": function(node){window.open(node.path, '_blank', 'fullscreen=yes')}  
}) 

bei der ähnlichen Arbeitsbeispiel Werfen Sie einen Blick: http://jsfiddle.net/v1fvhpvx/14/

+0

Thanks a lot! Ich kann sehen, dass Sie ein Student sind, der studiert, um ein Softwareentwickler zu sein. Ich werde bald mit einem Doktortitel in Angewandter Maschinelles Lernen und Text Mining fertig sein und ich habe viele Ideen für die Softwareentwicklung. Wären Sie daran interessiert, Gedanken und Ideen als Ausgangspunkt für eine zukünftige Zusammenarbeit auszutauschen? –

Verwandte Themen