Relayout not provided with event data after mousewheel zoom
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- JavaScript
- Sterne
- 18.3k
- Forks
- 2k
- Ø Merge
- 2 T. 12 Std.
- Gemergte PRs (30 T.)
- 28
Beschreibung
This may well be related to #5698, but that is a few years old and I'm not entirely sure this is the same behaviour, partly because that issue reports two things.
The mousewheel based zoom fires the plotly_relayout event, but after some interactions the event data is empty. When not empty it seems to lag behind what is being displayed.
Tested using the script below. After rotation with a click drag, the zoom with the mouse wheel scroll hits the "No scene data found" found the first time through, suggesting that the scene has not changed despite it changing visually on screen. The subsequent mouse wheel scrolls report the scene data. A single click, being careful not to drag, then reports a different value, suggesting the data provided by relayout on the mouse wheel scroll zoom is lagging behind the new scene position.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Zoom test</title>
<script src="https://cdn.plot.ly/plotly-latest.js" charset="utf-8"></script>
</head>
<body>
<div id="3D_figure"></div>
<script>
var data = [{
type: "mesh3d",
x: [0, 1, 2, 0],
y: [0, 0, 1, 2],
z: [0, 2, 0, 1],
i: [0, 0, 0, 1],
j: [1, 2, 3, 2],
k: [2, 3, 1, 3],
intensity: [0, 0.33, 0.66, 1],
colorscale: [
[0, 'rgb(255, 0, 0)'],
[0.5, 'rgb(0, 255, 0)'],
[1, 'rgb(0, 0, 255)']
]
}];
Plotly.newPlot('3D_figure', data, {});
var top_level_div= document.getElementById('3D_figure');
top_level_div.on('plotly_relayout', (data) => {
if(( typeof data === 'undefined') || !('scene.camera' in data)){
console.log("No scene data found");
}else{
console.log(data['scene.camera'].eye.x);
}
});
</script>
</body>
</html>
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne damit, das bereitgestellte HTML-Beispiel zu reproduzieren und das plotly_relayout-Ereignis während des 3D-Zoomens mit dem Mausrad nachzuverfolgen, insbesondere nach Rotations- und Klickinteraktionen. Vergleiche die ausgegebenen scene.camera-Daten mit der auf dem Bildschirm angezeigten Kameraposition. Erledigt ist es, wenn das Ereignis nach jeder Zoom-Interaktion konsistent die aktualisierten Kameradaten meldet, statt leere oder verzögerte Werte.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- javascript
- Bereich
- data-visualization, frontend
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 38/100