Add css for loading visual hint to plotly figure div
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 18.8k
- Forks
- 2.8k
- Ø Merge
- 16 Std. 26 Min.
- Gemergte PRs (30 T.)
- 21
Beschreibung
On a slow Internet connection, when loading a webpage with a plotly figure getting plotly from the cdn (created with include_plotlyjs=False), there is no visual indication that the figure is loading, the page is just empty and frozen until the figure is rendered. An alternative would be to add a loading div which would contain a rotating circle when the plotly fig div is rotating.
Here is an example of code (courtesy of @GaelVaroquaux)
Current plotly figure
<html>
<head><meta charset="utf-8" /></head>
<body>
<div>
<script type="text/javascript">window.PlotlyConfig = {MathJaxConfig: 'local'};</script>
<script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
<div id="5ce67915-186c-4a00-9800-072154c9af49" class="plotly-graph-div" style="height:100%; width:100%;"></div>
<script type="text/javascript">
window.PLOTLYENV=window.PLOTLYENV || {};
if (document.getElementById("5ce67915-186c-4a00-9800-072154c9af49")) {
Plotly.newPlot(
'5ce67915-186c-4a00-9800-072154c9af49',
[{"type": "scatter", "x": [1, 2], "y": [2, 2]}],
{"template": {}},
{"responsive": true}
)
};
</script>
</div>
</body>
</html>
and adding the loading component
<html>
<head><meta charset="utf-8" /></head>
<body>
<div>
<style>
div.plotly-graph-loading {text-align: center; display: none;}
@keyframes spinner-border {
to { transform: rotate(360deg); }
}
div.plotly-graph-div:empty + div.plotly-graph-loading {
margin: -50% auto 0 auto;
display: block;
width: 3rem;
height: 3rem;
vertical-align: text-bottom;
border: .4rem solid #222;
border-right-color: transparent;
border-radius: 50%;
animation: spinner-border 1s linear infinite;
}
</style>
<div id="5ce67915-186c-4a00-9800-072154c9af49" class="plotly-graph-div" style="height:100%; width:100%;"></div>
<div class="plotly-graph-loading" role="status"></div>
<script type="text/javascript">window.PlotlyConfig = {MathJaxConfig: 'local'};</script>
<script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
<script type="text/javascript">
window.PLOTLYENV=window.PLOTLYENV || {};
if (document.getElementById("5ce67915-186c-4a00-9800-072154c9af49")) {
Plotly.newPlot(
'5ce67915-186c-4a00-9800-072154c9af49',
[{"type": "scatter", "x": [1, 2], "y": [2, 2]}],
{"template": {}},
{"responsive": true}
)
};
</script>
</div>
</body>
</html>
This is a small addition but it can be helpful to show that something will happen. What do you think @nicolaskruchten @jonmease? I'm happy to make a PR but wanted to discuss it with you first.
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
Finde den Code, der das Plotly-Figure-div und das umgebende HTML erzeugt, und vergleiche ihn dann mit der im Issue gezeigten Loading-Komponente. Überprüfe das Ergebnis mit einem langsamen CDN-Ladevorgang: Eine leere Figure sollte einen Ladeindikator anzeigen, der verschwindet, sobald Plotly die Figure rendert.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- css, html, python
- Bereich
- data-visualization, frontend
- Issue-Typ
- Feature
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- Ein halber Tag
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 45/100