C3: D3 4.0-Kompatibilität

Erstellt am 12. Apr. 2016  ·  30Kommentare  ·  Quelle: c3js/c3

Gibt es Kompatibilität mit D3 4.0?

C-feature-request question

Hilfreichster Kommentar

Gibt es Updates zu diesem Problem?

Alle 30 Kommentare

Ich habe gerade C3 auf Version 0.4.11-rc4 und D3 auf Version 4.0.0-alpha.29 installiert und es scheint nicht zu funktionieren. :(

Nein, es funktioniert nicht. In D3 4.0 gibt es einige wichtige Änderungen. Daher müssen auch die Aufrufe von c3.js aktualisiert werden.

Siehe hier als Referenz:

Version 4.0 bedeutet, dass es sich um eine Hauptversion handelt und nicht abwärtskompatibel ist.

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

Interessant. Vielleicht ist dies eine gute Gelegenheit, einen Großteil der Codebasis modularer umzuschreiben, beispielsweise wenn ich an meiner Webpack-Gabel recherchiere . Da jetzt alles ES6-Importe mit Rollup in D3 verwendet, ist es möglicherweise sehr klug, Dinge wie das Schütteln von Bäumen mit C3 durch eine bessere Verwendung von Modulen zu ermöglichen.

Das heißt, ich bin bei weitem nicht in der Nähe eines JS-Design-Pattern-Profis - wenn Sie sich meine Gabel ansehen, habe ich im Grunde jede Datei als CommonJS importiert, wobei ich mich daran halte, wie der Verkettungsprozess die Bibliothek erstellt. Vorschläge zur Umgestaltung, um modularer zu sein, sind sehr willkommen.

Ich habe darüber nachgedacht, c3 zu forken, ich benutze es stark für interne Tools und habe meine eigene Version davon aktiv gepflegt. Ich musste viele Fehler darin beheben und wusste leider, dass jegliche Zusagen für dieses Repo nicht akzeptiert werden würden.

Einige der Dinge, die ich hinzugefügt habe, sind das Zwischenspeichern von Attributen und Selektoren. Dies hat die Leistung der Diagramm-Neuzeichnungsmethoden und des anfänglichen Renderns um das Zweifache verbessert. Ich musste auch Funktionen wie die Fähigkeit zum Rendern von Verlaufsdiagrammen und bessere QuickInfos hinzufügen. Unzählige andere undokumentierte Korrekturen, die ich bei der Verwendung dieser Bibliothek implementieren musste.

Es wäre sinnvoll, c3.core zu haben, und dann können alle Diagramme eingeschlossen werden, um einen super schlanken Build zu erstellen. Im Wesentlichen muss der Benutzer nur die Kernbibliothek und die benötigten Diagramme benötigen. In meinem Fall verwende ich nur 4 der Diagramme in c3.

Ganz zu schweigen von den Verbesserungen von D3-4.0, die in c3 enthalten sein könnten. Wie auch immer, ich kann über diese Bibliothek schimpfen, aber sie ist eine der besten da draußen, nur traurig, dass wir nicht zu dieser beitragen können.

Ich habe mit c3 und d3 @ v4 herumgespielt. Einige Kern-D3-Namespaces existieren nicht mehr (z. B. d3.behavior), sodass ich nicht darüber hinwegkommen konnte.

Ich schaffe es jedoch, etwas Rollup-Süße zu erzielen, indem ich die Concat- und D3-Smash-Aufgaben von c3 ersetze, um ES6-Importe und -Exporte zu verwenden. Das lässt nicht viel Platz für drei Schütteln, aber ich bin noch nicht fertig mit Basteln.

@abacaj Was ich in der Vergangenheit getan habe, war der https://github.com/huaofoundrie. Wenn Sie interessiert sind, sagen Sie es mir und ich gebe Ihnen Administratorrechte, damit wir von dort aus c3 nextgen erhalten können

@abacaj und @amenadiel Hi! Bitte geben Sie noch nicht ganz auf - ich habe vor, eine riesige Tranche von Arbeiten an der Problemwarteschlange und anderswo durchzuführen, um wirklich zu versuchen, 0.4.11 so schnell wie möglich herauszubringen.

Danach werden wir wirklich versuchen, viel von dem, was Sie erwähnt haben, für eine neue Feature-Version in die Bibliothek zu bringen, und hoffentlich viel schneller in die Zukunft iterieren. Ich würde euch beide gerne irgendwie @abacaj , eure Gedanken zu: c3.core sind genau richtig, ich habe in den letzten Tagen darüber nachgedacht, wie genau das zu tun ist); Gibt es eine Chance, dass Sie bereit sind, Ihre privaten Gabeln irgendwohin zu schieben, damit ich einen Blick darauf werfen und vielleicht dokumentieren / gutschreiben kann, was Sie getan haben, während Sie auf Probleme stoßen, auf die Sie gestoßen sind?

Vielen Dank! 😄

@aendrew sicher, wenn Sie bereit sind, dieses Projekt wieder in Gang zu bringen, dann wäre meine erste Wahl natürlich, zum Haupt-Repo beizutragen.

@amenadiel Das ist fantastisch - würde es Ihnen etwas

Ich werde eines Tages einen POC machen

sieht aus wie v4 wurde offiziell veröffentlicht . Es wäre großartig zu sehen, dass das Update über c3 verfügbar gemacht wird

Stimmen Sie mit das allererste "Erste Schritte" -Beispiel mit d3 4.0.0 nicht funktioniert. Es ist jetzt in Ordnung für mich, ich verwende die vorgeschlagene Version d3 3.5.0 von bower, aber es wäre großartig, wenn alle Versionen auf dem neuesten Stand wären und ordnungsgemäß funktionieren.

@alundiak et al., es wird definitiv nicht so funktionieren wie es ist mit 4.0. D3 v4 hat einen völlig anderen Namespace und ist in keiner Weise abwärtskompatibel. Das Aktualisieren auf Version 4 ist eine nicht triviale Aufgabe.

Ich beginne einen anderen Ansatz. Die Trennung von c3 in es6-Module könnte hilfreich sein.

Meine ersten Ansätze mit einem ES6-Shim für d3 bestehen den größten Teil des Tests, aber es gibt noch viel Arbeit, bis wir die Ordnerstruktur mit der Modulstruktur kohärent machen.

Mindestens Chart, Chartinternal und Axis sollten drei getrennte Module sein. Einige statische Methoden der oben genannten Module sollten zu eigenständigen Methoden werden.

Ich habe mit dem Ergebnis meiner bisherigen Experimente eine PR gemacht: https://github.com/c3js/c3/pull/1765

Dies beinhaltet keine Änderung an d3. Diese Änderung, dh die Verwendung eines minimalen d3 @ 3- Skeletts und eines Affen-Patches mit d3 @ 4- Submodulen, wird auf der Grundlage von # 1765 erstellt.

Gibt es Updates zu diesem Problem?

Ohne das Update auf Version 4 von D4 kann ich diese Bibliothek nicht mehr verwenden: /

@Niondir Aus Neugier, warum ist das so? V4 bringt keine großen Änderungen in der Funktionalität oder Stabilität von D3. Sofern Sie D3 v4 nicht an anderer Stelle in Ihrem Projekt verwenden möchten (und die Version von C3 einen Konflikt verursacht), sollte die von C3 verwendete Version von D3 nicht so wichtig sein ... Zugegeben, wenn ich mich in dieser Annahme irre Bitte lassen Sie mich wissen, da dies den Druck erhöhen könnte, das v4-Upgrade voranzutreiben.

Unabhängig davon schaue ich mir

Ich erinnere mich nur an einige Probleme mit einer fehlenden merge () - Funktion im Selektor.

@Niondir Okay, v4 hat selection.merge , v3 nicht - aber wie wirkt sich das auf Ihre tägliche Nutzung der Bibliothek aus? Wenn Sie D3 nicht außerhalb von C3 verwenden, hat die Verwendung von v4 keinen greifbaren Vorteil, bis wir die Bibliothek aktualisieren. Verstehen Sie mich nicht falsch, es gibt viele gute Gründe für uns, im Rahmen der Entwicklung von C3 (benutzerdefinierte Builds und reduzierte Bibliotheksgröße) auf v4 zu aktualisieren, aber aus Sicht des Endbenutzers verstehe ich das nicht Wunsch zur Zeit. Weitere Informationen zu Ihrem Anwendungsfall sind herzlich willkommen! 😄

Ein Problem, das wir nutzen wollten, ist das Parsen von Datum und Uhrzeit in Version 4. v3 unterstützt keine Millisekunden mit TZ-Offset-Wiedergabetreue für ISO-8601-Daten, v4 jedoch. Wir verwenden die d3-Formatierer außerhalb von c3, können jedoch die verbesserte Analyse nicht nutzen, ohne beide Versionen zu laden.

Prost @travi , das ist hilfreich. : +1:

Wenn Sie nur d3-time-format als separate Bibliothek installieren und damit Daten verarbeiten und an C3 übergeben würden, würde das funktionieren? Wenn nicht, ist dies eine gute erste User Story für uns.

Ich gebe zu, dass es einige Zeit her ist, dass ich tief genug in diesem Teil unseres Systems war, also habe ich es nicht mehr so ​​gut im Kopf, aber das scheint uns nahe zu bringen.

Ich bin mir ziemlich sicher, dass ich mich von der Aktualisierung unserer anderen Formatierer zurückgezogen habe, weil es anscheinend keine Möglichkeit gab, den Parser auszutauschen, den c3 zum Parsen von data.json hat, der an .generate() . Wenn es eine Möglichkeit gäbe, mit den v4-Parsern so viel zu erreichen, wäre dies meiner Meinung nach ein guter Schritt in die richtige Richtung für unseren Anwendungsfall.

Wirf einfach meinen Anwendungsfall in die Mischung.

Unsere Implementierung erfordert das D3 Pack Layout, das aktualisiert wurde, um in Version 4 viel besser zu funktionieren.

Aus dem Changelog:

Das Layout für das Packen von Kreisen, d3.pack, wurde komplett neu geschrieben, um den Algorithmus von Wang et al. Besser zu implementieren, größere Fehler zu beheben und die Ergebnisse zu verbessern! Der Welzl-Algorithmus wird nun verwendet, um den exakt kleinsten umschließenden Kreis für jeden Elternteil zu berechnen, anstatt die von Wang et al.

Ich möchte C3.js implementieren, anstatt zu versuchen, Diagramme manuell zu schreiben. Dies ist jedoch ein Deal Breaker für diesen Schalter.

Ich versuche überhaupt nicht, C3.js gegenüber kritisch zu sein. Ich erkenne die Aufgabe, ein Upgrade auf D3 V4 durchzuführen, voll und ganz. Nur unser Szenario für den Fall, dass es Ihnen hilft, eine Entscheidung zu diesem speziellen Thema zu treffen.

Danke Kerl!

@beaudesigns Prost, das ist sehr hilfreich.

Ich werde eine WIP-Pull-Anfrage mit dem erstellen, was ich bisher mit v1 gemacht habe, und wir können das abarbeiten, bis es zum Zusammenführen bereit ist. Ich bin zwar sowohl mit der Wahl als auch mit dem Buch, an dem ich arbeite, verrückt beschäftigt, würde es aber lieben, wenn Leute, die bereit sind, dies voranzutreiben, dazu beitragen können.

Gibt es ein Update dazu? Es scheint, als ob die Arbeit, C3 mit D3 v4 kompatibel zu machen, etwas ins Stocken geraten ist.

Wie ist der Status dieses Problems? Ich habe Cannot read property 'format' Fehler für D3 4.x.

Das Gleiche gilt hier, aber wir sind bereit, bei der Migration zu helfen, wenn die Betreuer uns mitteilen, was für sie bei der Migration am wertvollsten ist. Nochmals vielen Dank für die tolle Arbeit!
Prost,

Ich arbeite daran in # 2246. Es sind noch einige Korrekturen erforderlich, aber es sieht im Grunde gut aus.

Unterstützung für D3 v4, hinzugefügt von https://github.com/c3js/c3/commit/ccff119809de05a68ff3e33521a79566bf12b903 und sollte in der Version 0.5.0 verfügbar sein.

Ich habe ein Problem in Gauge gefunden, als ich C3JS auf den neuesten Stand gebracht habe. Hier ist es https://github.com/c3js/c3/issues/2390

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen