Guten Morgen Leute,verloren Punkt-Werkzeug-tipps auf Liniendiagramm (Chart.js) nach je Ajax neu zu zeichnen und verwüstete ältere Line-Chart Diagramm
Ich zeichne ein Line-Diagramm mit Punkten und Tooltips Diagramm mit .js, und um das von Ajax verursachte Flackern zu stoppen, zerstöre ich mein altes Liniendiagramm und erstelle es neu. Meine Tooltips funktionieren jedoch nicht! Ich bin nicht sicher, was das verursacht, und jede Hilfe würde geschätzt werden. Sie können meinen Code unten finden.
Das ist mein Ajax-Aufruf - abgefeuert durch den Wert einer Dropdown-Auswahl zu ändern:
var data;
$('#KurveWatt').change(function(){
var y = this.value;
if(y == 'kW/Tag')
{
var urlajax = '/php/lineChartTag.php';
}
else if(y == 'kW/Woche')
{
urlajax = '/php/lineChartWoche.php';
}
else
{
urlajax = '/php/lineChartStd.php';
}
$.ajax({
cache: false,
type: 'POST',
dataType: 'json',
url: urlajax,
success: function(data){
updateChart(data.labels, data.points);
window.myLine.destroy();
window.myChart.destroy();
},
});
});
Und dies ist die Funktion, die das Line-Diagramm mit neuem Ajax Daten neu gezeichnet:
function updateChart(labels, points){
var canvas = $("#wattStd")[0].getContext("2d");
var data = {
labels: labels,
datasets: [
{
label: "kW/Std. aktuell",
fillColor : "transparent",
strokeColor : "#ff9900",
pointColor : "#ff9900",
pointStrokeColor : "#fff",
pointHighlightFill : "#fff",
pointHighlightStroke : "#ff9900",
data: points
}
]
};
myChart = new Chart(canvas)
.Line(data, {
responsive: true,
animation: true
});
}
Und das "Original" line-Diagramm, das durch Eingabe der Seite angezeigt wird:
var lineChart = {
labels : <?php echo $LClabel; ?>,
datasets : [
{
label: "kW/Std. aktuell",
fillColor : "transparent",
strokeColor : "#ff9900",
pointColor : "#ff9900",
pointStrokeColor : "#fff",
pointHighlightFill : "#fff",
pointHighlightStroke : "#ff9900",
data : <?php echo $LCdata; ?>
}
]
}
Und jetzt - Endlich - die Sequenz, das zeichnet die Linie-Diagramm:
var wattStd = document.getElementById("wattStd").getContext("2d");
window.myLine = new Chart(wattStd).Line(lineChart, {
responsive: false
});
im HTML-Area "KurveWatt"
<p class="headline">Verlaufsdiagramm Einspeisung nach <select id="KurveWatt" name="messwert">
<option class="kw" id="std" selected>kW/Std</option>
<option class="kw" id="tag">kW/Tag</option>
<option class="kw" id="woche">kW/Woche</option>
<option class="kw" id="monat">kW/Monat</option>
<option class="kw" id="jahr">kW/Jahr</option>
</select></p>
Und der HTML-Bereich mit der Leinwand die Line-Chart:
<div class="kurveWatt" id="watt_std">
<div>
<canvas id="wattStd" width="970" height="165"></canvas>
</div>
</div>
Meine tiefste Entschuldigung, ich sah gerade Ihre Bearbeitung, und ich kann nicht scheinen, meine Antwort zu löschen (Problem an meinem Ende, stelle ich mir vor). Ich werde das sofort beheben. – RhysO
Hallo SyntaxBit, ja - war meine erste Frage hier und es dauerte eine Weile, um herauszufinden, wie dies funktioniert mit Hinzufügen eines Code-Block ... aber wie Sie sehen können - ich habe es gemacht :-) –
Vielen Dank @JoergZimmermann Wäre es auch möglich, mir den HTML-Bereich zu geben, mit dem du dein JavaScript referenzierst? (Dies scheint eine ID von 'KurveWatt' zu haben) und auch das 'WattStd'-Element. Vielen Dank. – RhysO