You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: plans/PlotlyJS_2_28_Parity.md
+43-55Lines changed: 43 additions & 55 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
## Summary
4
4
5
-
Plotly.NET has been targeting plotly.js 2.28.0 since the bundle was bumped in commit `62a96500`. The bulk of the work — encoded typed array support across all trace types and the F# Chart API — was completed in a long series of commits tracked in [EncodedArraySupport.md](EncodedArraySupport.md). This document identifies the **remaining gaps** needed for full 2.28.0 parity and lays out a plan to close them.
5
+
Plotly.NET has been targeting plotly.js 2.28.0 since the bundle was bumped in commit `62a96500`. The bulk of the work — encoded typed array support across all trace types and the F# Chart API — was completed in a long series of commits tracked in [EncodedArraySupport.md](EncodedArraySupport.md). The remaining C# domain-surface gaps were closed afterwards, so this document now serves as a completion record for the 2.28.0 parity work.
The fixes are JS-runtime-only and do not require Plotly.NET changes — they are resolved by shipping the updated `plotly-2.28.0.min.js` bundle, which is already in place.
28
28
29
-
## Current Implementation Status
29
+
## Final Implementation Status
30
30
31
31
| Feature | F# Trace Layer | F# Chart API | C# Wrapper | Tests | Status |
**Priority: Low** — niche feature for pages with many WebGL contexts. Plotly.NET charts are typically rendered one-at-a-time in HTML, but notebook and multi-chart scenarios could benefit.
69
+
No dedicated Plotly.NET surface was needed. Users can inject the `virtual-webgl` script through `DisplayOptions.AdditionalHeadTags`, which is sufficient for the plotly.js integration model.
70
70
71
-
Scope:
72
-
73
-
- determine how plotly.js exposes this option (likely a config-level flag or a separate script include)
74
-
- if it is a config option: add it to `Config.fs` as `?VirtualWebGL: bool`
75
-
- if it is a script include: add support in `DisplayOptions` to inject the virtual-webgl script tag before the plotly.js bundle
76
-
- add minimal test coverage
77
-
78
-
Files to change (depending on mechanism):
79
-
80
-
-`src/Plotly.NET/Config/Config.fs` — if config-level
81
-
-`src/Plotly.NET/DisplayOptions/DisplayOptions.fs` — if script-level
82
-
- corresponding C# surface if applicable
71
+
### Sankey encoded arrays at Chart API level
83
72
84
-
Note: This requires further investigation of the plotly.js implementation ([#6784](https://github.com/plotly/plotly.js/pull/6784)) to determine the exact integration point. May be purely client-side and not need a Plotly.NET wrapper at all.
85
-
86
-
### Commit K: Sankey encoded arrays at Chart API level
87
-
88
-
**Priority: Medium** — trace-level encoded support already exists; this is about exposing it ergonomically at the Chart API.
73
+
Implemented on the trace layer, F# chart layer, and exposed to C# through the wrapper surface.
**Priority: Low** — `Dimension.initParallel` already supports `ValuesEncoded`, so users can build encoded dimensions manually. This is a convenience-only gap.
92
+
Implemented on the F# chart layer and mirrored to C#.
107
93
108
94
Scope:
109
95
110
96
- add `Chart.ParallelCoord(keyValuesEncoded = ...)` and `Chart.ParallelCategories(keyValuesEncoded = ...)` overloads
111
97
- delegate to existing `Dimension.initParallel(ValuesEncoded = ...)` internally
112
98
- add tests
113
99
114
-
### Commit M: C# surface projection (Phase H3)
100
+
### C# surface projection (Phase H3)
101
+
102
+
Implemented. The foundational encoded chart roots were added earlier, and the missing domain helpers were completed by adding:
115
103
116
-
**Priority: High** — blocks any C# consumer from using encoded arrays through the idiomatic API.
Plotly.NET now has full planned parity with plotly.js 2.28.0:
158
141
159
-
Commits I and K are independent and can be developed in parallel. Commit M (C# surface) is the largest remaining effort. Commit J requires upstream investigation and may turn out to be unnecessary for the Plotly.NET surface.
142
+
- bundled plotly.js 2.28.0 runtime
143
+
- encoded typed arrays across trace layers and chart APIs
0 commit comments