C3: Compatibilité D3 4.0

Créé le 12 avr. 2016  ·  30Commentaires  ·  Source: c3js/c3

Existe-t-il une compatibilité avec D3 4.0?

C-feature-request question

Commentaire le plus utile

y a-t-il des mises à jour à ce problème?

Tous les 30 commentaires

Je viens d'installer C3 sur la version 0.4.11-rc4 et D3 sur la version 4.0.0-alpha.29 et il semble que cela ne fonctionne pas. :(

Non, cela ne fonctionne pas, il y a des changements majeurs dans D3 4.0 et en tant que tels, il faudra également mettre à jour les appels c3.js.

Voir ici pour référence:

la version 4.0 signifie qu'il s'agit d'une version majeure et non rétrocompatible.

https://github.com/visfest/topics2015/blob/master/d3-v4.md

Intéressant. C'est peut-être une bonne opportunité de réécrire une grande partie de la base de code pour qu'elle soit plus modulaire, comme je fais des recherches sur mon fork de Webpack . Parce que tout utilise maintenant les importations ES6 avec Rollup dans D3, il pourrait être très intelligent d'activer des choses comme le tremblement d'arbre avec C3 grâce à une meilleure utilisation des modules.

Cela dit, je suis loin d'être un pro du modèle de conception JS - si vous regardez mon fork, j'ai essentiellement importé chaque fichier en tant que CommonJS, en gardant à l'esprit comment le processus de concaténation construit la bibliothèque. Toute suggestion de refactorisation pour être plus modulaire serait très appréciée.

J'ai envisagé de forger c3, je l'utilise beaucoup pour les outils internes et j'en ai activement maintenu ma propre version. J'ai dû corriger de nombreux bogues et, malheureusement, je savais que toute validation de ce dépôt ne serait pas acceptée.

Certaines des choses que j'ai ajoutées sont la mise en cache des attributs et des sélecteurs, cette performance améliorée de deux fois sur les méthodes de redessinage des graphiques et le rendu initial. J'ai également dû ajouter des fonctionnalités telles que la possibilité de rendre des graphiques en dégradé et de meilleures info-bulles. D'innombrables autres correctifs non documentés que j'ai dû implémenter lors de l'utilisation de cette bibliothèque.

Il serait logique d'avoir c3.core et ensuite tous les graphiques peuvent être inclus pour produire une version super lean, ne demandant essentiellement à l'utilisateur que la bibliothèque de base et les graphiques dont il a besoin, dans mon cas, je n'utilise que 4 des graphiques en c3.

Sans parler des améliorations D3-4.0 qui pourraient être incluses dans c3. Quoi qu'il en soit, je peux parler de cette bibliothèque, mais c'est l'une des meilleures, juste triste de ne pas pouvoir contribuer à celle-ci.

J'ai joué avec c3 et d3 @ v4. Certains espaces de noms de base d3 n'existent plus (d3.behavior, par exemple), donc je ne pouvais pas aller au-delà.

Cependant, je parviens à obtenir un peu de douceur Rollup en remplaçant les tâches concat et d3 smash de c3 pour utiliser les importations et les exportations ES6. Cela ne laisse pas beaucoup de place pour trois secousses, mais je n'ai pas fini de bricoler.

@abacaj, ce que j'ai fait dans le passé, c'était de me créée juste pour organiser mes projets open source et mes forks à long terme: https://github.com/huaofoundrie. Si vous êtes intéressé, dites-le moi et je vous donnerai les autorisations d'administrateur afin que nous puissions continuer à c3 nextgen à partir de là

@abacaj et @amenadiel Salut! S'il vous plaît, n'abandonnez pas encore tout à fait - je prévois de faire une énorme tranche de travail sur la file d'attente des problèmes et ailleurs pour vraiment essayer de faire sortir la 0.4.11 dès que possible.

Après cela, nous chercherons vraiment à obtenir une grande partie de ce que vous avez mentionné dans la bibliothèque pour une nouvelle version de fonctionnalité, espérons-le, beaucoup plus rapidement dans le futur. J'adorerais vous impliquer d'une manière ou d'une autre ( @abacaj , vos pensées concernant c3.core sont parfaites, j'ai réfléchi à la façon de faire exactement cela ces derniers jours); Quelle chance que vous soyez prêt à pousser vos fourches privées quelque part afin que je puisse jeter un coup d'œil et peut-être documenter / créditer ce que vous avez fait tout en résolvant les problèmes que vous avez rencontrés?

Merci! 😄

@aendrew bien sûr, si vous êtes prêt à

@amenadiel C'est fantastique - cela vous dérangerait-il de pousser vos expériences quelque part? Ce serait bien de voir une autre interprétation de la façon dont nous pourrions éventuellement mieux modulariser la base de code. Il en a vraiment besoin, j'en ai tellement marre de devoir continuellement concaténer le code source ...

Je ferai un POC un de ces jours

ressemble à la v4 a été officiellement publiée . ce serait formidable de voir cette mise à jour disponible via c3

D'accord avec @travi , et je confirme, qu'au moins le tout premier exemple de "démarrage" ne fonctionne pas avec d3 4.0.0. C'est bon pour moi maintenant, j'utilise la version suggérée de d3 3.5.0 par bower, mais ce serait bien d'avoir toute la version à jour et de fonctionner correctement.

@alundiak et al, cela ne fonctionnera certainement pas tel quel avec 4.0. D3 v4 a un espace de noms totalement différent et n'est en aucun cas rétrocompatible. La mise à jour vers la v4 est une tâche très non triviale.

Je commence une autre approche. Séparer c3 en modules es6 peut aider.

Ma première approche, en utilisant un shim ES6 pour d3, passe la majeure partie du test, mais il y a beaucoup de travail à faire jusqu'à ce que nous rendions la structure des dossiers cohérente avec la structure du module.

Au moins Chart, Chartinternal et Axis doivent être trois modules séparés. Certaines méthodes statiques des modules mentionnés ci-dessus devraient devenir des méthodes à elles seules.

J'ai fait un PR avec le résultat de mes expériences jusqu'à présent: https://github.com/c3js/c3/pull/1765

Cela n'inclut aucune modification de d3. Ce changement, qui signifie utiliser un squelette minimal d3 @ 3 et le patcher avec des sous-modules d3 @ 4 , sera construit sur la base de # 1765.

y a-t-il des mises à jour à ce problème?

Sans la mise à jour vers la version 4 de D4, je ne peux plus utiliser cette bibliothèque: /

@Niondir Par curiosité, pourquoi est-ce le cas? La V4 n'apporte pas d'énormes changements de fonctionnalité ou de stabilité à D3. À moins que vous ne souhaitiez utiliser D3 v4 ailleurs dans votre projet (et que la version de C3 provoque un conflit), la version de D3 utilisée par C3 ne devrait pas avoir autant d'importance ... Certes, si je me trompe dans cette hypothèse , veuillez me le faire savoir car cela pourrait augmenter la pression pour faire avancer la mise à niveau v4.

Quoi qu'il en soit, je regarde le vaste PR de @amenadiel au # 1765 cette semaine, et je

Je me souviens juste de quelques problèmes avec une fonction merge () manquante sur le sélecteur.

@Niondir D'accord, la v4 a selection.merge , alors que la v3 ne le fait pas - mais comment cela affecte -t-il votre utilisation quotidienne de la bibliothèque? Si vous n'utilisez pas D3 en dehors de C3, il n'y a aucun avantage tangible à utiliser la v4 jusqu'à ce que nous mettions à jour la bibliothèque. Ne vous méprenez pas, il y a beaucoup de bonnes raisons pour nous de mettre à jour vers la v4 dans le contexte du développement de C3 (builds personnalisés et taille de bibliothèque réduite parmi eux), mais du point de vue de l'utilisateur final, je ne comprends pas le désir à l'heure actuelle. Toute information supplémentaire sur votre cas d'utilisation serait la bienvenue! 😄

un problème dont nous voulions profiter est l'analyse datetime dans la v4. La v3 ne prend pas en charge la milliseconde avec la fidélité de décalage TZ pour les dates ISO-8601, contrairement à la v4. nous utilisons les formateurs d3 en dehors de c3, mais ne pouvons pas profiter de l'analyse améliorée sans charger les deux versions.

Cheers @travi , c'est utile. : +1:

Si vous n'installiez que d3-time-format tant que bibliothèque séparée et que vous traitiez les données avec cela, en les transmettant à C3, cela fonctionnerait-il? Si ce n'est pas le cas, c'est une bonne première user story pour nous.

J'admets que cela fait un certain temps que je n'ai pas été assez profond dans cette partie de notre système, donc je n'ai plus la tête aussi bien, mais cela semble nous rapprocher.

Je suis assez certain que la raison pour laquelle j'ai renoncé à mettre à jour nos autres formateurs était qu'il ne semblait pas y avoir de moyen de permuter l'analyseur que c3 utilisait pour analyser data.json passé à .generate() . s'il y avait un moyen d'en obtenir autant en utilisant les analyseurs v4, je pense que ce serait un bon pas dans la bonne direction pour notre cas d'utilisation.

Je jette juste mon cas d'utilisation dans le mix.

Notre implémentation nécessite la mise en page du pack D3 qui a été mise à jour pour fonctionner beaucoup mieux dans la version 4.

Depuis le journal des modifications:

La mise en page du cercle, d3.pack, a été complètement réécrite pour mieux implémenter l'algorithme de Wang et al., Corrigeant les bugs majeurs et améliorant les résultats! L'algorithme de Welzl est maintenant utilisé pour calculer le plus petit cercle englobant exact pour chaque parent, plutôt que la réponse approximative utilisée par Wang et al.

Je cherche à implémenter C3.js au lieu d'essayer d'écrire des graphiques manuellement. C'est un facteur décisif pour ce commutateur.

Je n'essaie pas du tout de critiquer C3.js, je reconnais pleinement la tâche que ce serait de passer à D3 V4. Fournir simplement notre scénario au cas où cela aiderait à prendre une décision sur ce problème particulier.

Merci mec!

@beaudesigns Cheers, c'est très utile.

Je vais créer une pull request WIP avec ce que j'ai fait jusqu'à présent avec la v1, et nous pouvons travailler dessus jusqu'à ce qu'il soit prêt à fusionner. Je suis certes très occupé à la fois par l'élection et par le livre sur lequel je travaille, mais j'adorerais que les gens qui sont prêts à aider à faire avancer les choses puissent contribuer.

Y a-t-il une mise à jour à ce sujet? Il semble que le travail pour rendre C3 compatible avec D3 v4 soit un peu bloqué.

Quel est le statut de ce problème? J'ai une erreur Cannot read property 'format' pour D3 4.x

Même chose ici, mais nous sommes prêts à aider à la migration si les responsables nous disent ce qui leur est le plus précieux dans la migration. Merci encore pour l'excellent travail!
À votre santé,

Je travaille là-dessus dans # 2246. Quelques correctifs sont encore nécessaires, mais semble bien fonctionner dans l'ensemble.

Prise en charge de D3 v4 ajoutée par https://github.com/c3js/c3/commit/ccff119809de05a68ff3e33521a79566bf12b903 et devrait être disponible dans la version 0.5.0 .

trouvé un problème dans Gauge lorsque j'ai mis à jour C3JS au dernier. Le voici https://github.com/c3js/c3/issues/2390

Cette page vous a été utile?
0 / 5 - 0 notes