plotly.js v2.28.0 compatibility needs huge rework of core API
Personne n'a encore pris cette issue.
- Langage dominant
- F#
- Étoiles
- 860
- Forks
- 99
- Merge moyen
- 22 min
- PR mergées (30 j)
- 1
Description
https://github.com/plotly/plotly.js/releases/tag/v2.28.0 introduces an option to set objects for encoded typedarrays for basically all fields that provide data to traces (e.g. x and y for a cartesian plot).
an object with keys dtype, bdata, and optionally shape. In this 3rd form, dtype is one of f8, f4. i4, u4, i2, u2, i1, u1 or u1c for Uint8ClampedArray. In addition to shorthand
dtypeabove one could also use the following forms: float64, float32, int32, uint32, int16, uint16, int8, uint8 or uint8c for Uint8ClampedArray.bdatais either a base64-encoded string or the ArrayBuffer of an integer or float typed array. For either multi-dimensional arrays you must also provide its dimensions separated by comma viashape. For example usingdtype: f4 andshape: 5,100 you can declare a 2-D array that has 5 rows and 100 columns containing float32 values i.e. 4 bits per value.shapeis optional for one dimensional arrays.
Plotly.NET's API is statically typed and currently uses sequences of #IConvertible for these fields. This was a clever trick because this allows setting any of the CLR runtime types Boolean, SByte, Byte, Int16, UInt16, Int32, UInt32, Int64, UInt64, Single, Double, Decimal, DateTime, Char, and String while also making it very easy to serialize.
The new way of setting data_arrays seems to have speed advantages, and is therefore worth to be supported well from our side. A straightforward way of implementing this in the API providing a new type, e.g.
type EncodedTypedArray {
bdata: <string or maybe byte []?>
dtype: <some type abstraction>
shape: <some shape abstraction>
}
this type would also need functionality to encode the base64 string in a way that is understood by plotly.js. Maybe the python implementation's codebase can help here, as they seem to implement these functions as well.
Due to these large changes that also must be reflected on the CSharp lib, support for plotly.js >= v2.28.0 will be moved to the major release of Plotly.NET 6.0
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par le format typed-array de Plotly.js v2.28.0 et comparez-le avec la gestion actuelle de data_array basée sur IConvertible dans la F# API et la CSharp lib. L’implémentation Python peut fournir des indications pour l’encodage ; le travail est terminé lorsque les typed arrays encodés sont pris en charge dans le cadre du travail de compatibilité avec Plotly.NET 6.0.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- csharp, javascript
- Domaine
- api
- Type d'issue
- Fonctionnalité
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 25/100