Ich versuche d3.js liquid fill gauge in meiner angular2 Webapp zu verwenden, aber der Clippath funktioniert nicht, was bedeutet, dass überhaupt keine Welle erzeugt wird.d3.js Füllstandsanzeige Clip-Pfad funktioniert nicht
Seit angular2 Typoskript läuft, so zwicken ich etwas Syntaxfehler zu beheben. Das Code-Snippet des Clip-Pfads ist wie folgt.
// The clipping wave area.
var clipArea = d3.svg.area()
.x(function(d) { return waveScaleX(d[0]); }) // it was d.x in js version
.y0(function(d) { return waveScaleY(Math.sin(Math.PI*2*config.waveOffset*-1 + Math.PI*2*(1-config.waveCount) + d[1]*2*Math.PI));}) // it was d.y in js version
.y1(function(d) { return (fillCircleRadius*2 + waveHeight); });
var waveGroup = gaugeGroup.append("defs")
.append("clipPath")
.attr("id", "clipWave" + elementId);
var wave = waveGroup.append("path")
.datum(data)
.attr("d", clipArea)
.attr("T", 0);
// The inner circle with the clipping wave attached.
var fillCircleGroup = gaugeGroup.append("g")
.attr("clip-path", "url(#clipWave" + elementId + ")"); //clippath not working
fillCircleGroup.append("circle")
.attr("cx", radius)
.attr("cy", radius)
.attr("r", fillCircleRadius)
.style("fill", config.waveColor);
Ich habe keine Ahnung, wie es zu beheben ist. Ist es möglich, die Änderung return waveScaleX(d.x)
zu return waveScaleX(d[0])
schlägt es fehl? Aber Typoskript akzeptiert die frühere Syntax nicht.
Wie sehen Ihre Daten aus? Welcher Fehler ist das Maschinenschreiben? – Mark
@Mark, wenn ich 'd.x' verwende, ist der Typoskript Fehler' Eigenschaft 'x' existiert nicht auf Typ [Nummer, Nummer] '. Das 'data' ist ein Array, das wie' var data = []; für (var i = 0; i <= 40 * waveClipCount; i ++) {data.push ({x: i/(40 * waveClipCount), y: (i/(40))}); } ' –
Also, ich kam gerade auf diese Frage zurück. Ich habe wirklich versucht, Ihren Fehler in [diesem Beispiel] zu reproduzieren (http://plnkr.co/edit/hO43jixKR7D3IHWdmV29?p=preview). Ich habe typescript und angular2 (release candidate) verwendet und kann die Fehler nicht replizieren. – Mark