redraw <chart type> with no changes is not a noop (svg mocks)
Abierto
Nadie ha tomado este issue todavía.
bug
testing
- Lenguaje dominante
- JavaScript
- Estrellas
- 18.3k
- Forks
- 2k
- Merge medio
- 2 d 12 h
- PR fusionados (30 d)
- 28
Descripción
- We traced it back to 2.24.0 (https://github.com/plotly/plotly.js/releases/tag/v2.24.0), which includes a group of PR's that correspond to the exact same figure types that are failing. For example, in the sunburst PR, there's a line that updates the trace marker color.
- From @alexcjohnson:
- In sunburst/style.js (which is part of the plotting pipeline) we have
if(marker.pattern) { if(!marker.colors || !marker.pattern.shape) marker.color = cdi.color; } else { marker.color = cdi.color; }- ie we’re changing _fullData during plotting. Which is a big no no. So yeah that’s where the noop is being broken, we should avoid that, which I bet in this case means creating a new mock trace object to pass into Drawing.pointStyle(s, trace, gd, pt); rather than modifying this one. But of course since this has been around for a year and a half, this is not a release blocker.
- Also I’ll note, the code in question is in styleOne, meaning that it’ll be called once for every segment of the sunburst… so if you do go with a mock trace object, put the object creation up in style (which only happens once per trace) instead of in styleOne, and styleOne can keep reusing that same object.
If it helps, you’re free to attach new things to the trace object during plotting as long as they start with _. - I’m thinking about things like here where we mock an axis in order to reuse logic from regular axis handling in 3D axes… or here where we mock the entire figure in the course of making a new shrunken version of the figure for rangesliders
- Update after looking into it a bit: The code referenced above is now is
fill_one.js. Added in this commit
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza en fill_one.js y sigue la ruta style/styleOne hasta Drawing.pointStyle(s, trace, gd, pt). Comprueba cómo se gestionan los mocks de SVG y fullData durante los redibujados, especialmente en los tipos de gráficos afectados. Se considera terminado cuando redibujar un gráfico sin cambios deja intactos los datos subyacentes y se comporta como un noop.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- javascript
- Área
- data-visualization
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100