C3: Compatibilidad con D3 4.0

Creado en 12 abr. 2016  ·  30Comentarios  ·  Fuente: c3js/c3

¿Existe compatibilidad con D3 4.0?

C-feature-request question

Comentario más útil

¿Hay alguna actualización de estos problemas?

Todos 30 comentarios

Acabo de instalar C3 en la versión 0.4.11-rc4 y D3 en la versión 4.0.0-alpha.29 y parece que no funciona. :(

No, no funciona, hay algunos cambios importantes en D3 4.0 y, como tal, será necesario actualizar también las llamadas a c3.js.

Vea aquí para referencia:

la versión 4.0 significa que es una versión principal y no es compatible con versiones anteriores.

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

Interesante. Quizás esta sea una buena oportunidad para reescribir gran parte del código base para que sea más modular, como lo estoy investigando en mi bifurcación de Webpack . Debido a que todo ahora usa importaciones de ES6 con Rollup en D3, podría ser realmente inteligente habilitar cosas como la agitación de árboles con C3 a través de un mejor uso de los módulos.

Dicho esto, no estoy ni cerca de ser un profesional de patrones de diseño JS: si miras mi bifurcación, básicamente acabo de importar cada archivo como CommonJS, siguiendo la forma en que el proceso de concatenación construye la biblioteca. Cualquier sugerencia sobre cómo refactorizar para que sea más modular será muy apreciada.

He estado pensando en bifurcar c3, lo estoy usando mucho para herramientas internas y he mantenido activamente mi propia versión. Tuve que corregir muchos errores y, desafortunadamente, sabía que cualquier confirmación de este repositorio no sería aceptada.

Algunas de las cosas que he agregado son el almacenamiento en caché de atributos y selectores, esto mejoró el rendimiento en dos veces en los métodos de redibujado del gráfico y el procesamiento inicial. También tuve que agregar características como la capacidad de renderizar gráficos de degradado y mejores descripciones emergentes. Innumerables otras correcciones no documentadas que tuve que implementar mientras usaba esta biblioteca.

Tendría sentido tener c3.core y luego se pueden incluir todos los gráficos para producir una compilación súper ajustada, esencialmente solo haciendo que el usuario requiera la biblioteca principal y los gráficos que necesitan, en mi caso solo estoy usando 4 de los gráficos en c3.

Sin mencionar las mejoras de D3-4.0 que podrían incluirse en c3. De todos modos, puedo despotricar sobre esta biblioteca, pero es una de las mejores que hay, pero es triste que no podamos contribuir a esta.

He jugado con c3 y d3 @ v4. Algunos espacios de nombres core d3 ya no existen (d3.behavior, por ejemplo), así que no pude superar eso.

Sin embargo, me las arreglé para obtener algo de dulzura de Rollup reemplazando las tareas concat y d3 smash de c3 para usar las importaciones y exportaciones de ES6. Eso no deja mucho espacio para tres sacudidas, pero no he terminado de retocar.

@abacaj, lo que hice en el pasado fue formar parte de una organización que hice solo para mantener mis proyectos de código abierto y bifurcaciones a largo plazo: https://github.com/huaofoundrie. Si está interesado, dígame y le daré permisos de administrador para que podamos mantener c3 nextgen desde allí.

@abacaj y @amenadiel ¡Hola! Por favor, no se rinda todavía, estoy planeando hacer un gran tramo de trabajo en la cola de problemas y en otros lugares para tratar de sacar 0.4.11 lo antes posible.

Después de eso, realmente buscaremos obtener mucho de lo que ha mencionado en la biblioteca para una nueva versión de funciones, con suerte iterando mucho más rápido en el futuro. Me encantaría que ustedes dos se involucraran de alguna manera ( @abacaj , sus pensamientos sobre: ​​c3.core son acertados, he estado considerando cómo hacer exactamente eso en los últimos días); ¿Hay alguna posibilidad de que esté dispuesto a llevar sus bifurcaciones privadas a alguna parte para que pueda echar un vistazo y tal vez documentar / acreditar lo que ha hecho mientras resuelve cualquier problema que haya encontrado?

¡Gracias! 😄

@aendrew seguro, si está dispuesto a que este proyecto se mueva nuevamente, entonces, por supuesto, mi primera opción sería contribuir al repositorio principal.

@amenadiel Eso es fantástico, ¿te importaría llevar tus experimentos a alguna parte? Sería bueno ver otra versión de cómo podríamos modularizar mejor el código base. Definitivamente lo necesita, estoy tan harto de tener que concatenar continuamente el código fuente ...

Haré un POC uno de estos días

parece que la v4 fue lanzada oficialmente . Sería genial ver esa actualización disponible a través de c3

De acuerdo con @travi , y confirmo, que al menos el primer ejemplo de "Gettingstarted" no funciona con d3 4.0.0. Está bien para mí ahora, uso la versión d3 3.5.0 sugerida por bower, pero sería genial tener todas las versiones actualizadas y funcionando adecuadamente.

@alundiak et al, definitivamente no funcionará como está con 4.0. D3 v4 tiene un espacio de nombres totalmente diferente y de ninguna manera es compatible con versiones anteriores. La actualización a la v4 es una tarea muy sencilla.

Estoy iniciando otros enfoques. La separación de c3 en módulos es6 podría ayudar.

Mi primer enfoque, usar un shim ES6 para d3, es pasar la mayor parte de la prueba, pero hay mucho trabajo por hacer hasta que hagamos que la estructura de carpetas sea coherente con la estructura del módulo.

Al menos Chart, Chartinternal y Axis deben ser tres módulos separados. Algunos métodos estáticos de los módulos mencionados anteriormente deberían convertirse en métodos por sí mismos.

Hice un PR con el resultado de mis experimentos hasta ahora: https://github.com/c3js/c3/pull/1765

Esto no incluye ningún cambio en d3. Ese cambio, que significa usar un esqueleto mínimo de d3 @ 3 y un parche de mono con submódulos d3 @ 4 , se construirá sobre la base de # 1765.

¿Hay alguna actualización de estos problemas?

Sin la actualización a la versión 4 de D4 ya no puedo usar esta biblioteca: /

@Niondir Por curiosidad, ¿por qué es así? V4 no trae grandes cambios en funcionalidad o estabilidad a D3. A menos que desee usar D3 v4 en otro lugar de su proyecto (y la versión de C3 está causando un conflicto), la versión de D3 que usa C3 no debería importar tanto ... De acuerdo, si me equivoco en esta suposición , hágamelo saber, ya que podría aumentar la presión para hacer avanzar la actualización v4.

Independientemente, estoy mirando las extensas relaciones públicas de @amenadiel en # 1765 esta semana y, en última instancia, puedo usar eso como base para actualizar a V4 para C3 v1. Por favor, sean pacientes todos, este es probablemente el problema menos trivial de toda la cola en este momento. 😄

Solo recuerdo algunos problemas con una función merge () faltante en el selector.

@Niondir De acuerdo, la v4 tiene selection.merge , mientras que la v3 no, pero ¿cómo afecta eso su uso diario de la biblioteca? Si no usa D3 fuera de C3, no hay ningún beneficio tangible en usar v4 hasta que actualicemos la biblioteca. No me malinterpretes, hay muchas buenas razones para actualizar a v4 dentro del contexto del desarrollo de C3 (compilaciones personalizadas y tamaño de biblioteca reducido entre ellas), pero desde la perspectiva del usuario final no entiendo el deseo en la actualidad. ¡Cualquier información adicional sobre su caso de uso sería bienvenida! 😄

un problema que hemos querido aprovechar es el análisis de fecha y hora en v4. v3 no admite milisegundos con fidelidad de desplazamiento TZ para fechas ISO-8601, pero v4 sí. usamos los formateadores d3 fuera de c3, pero no podemos aprovechar el análisis mejorado sin cargar ambas versiones.

Saludos @travi , eso es útil. : +1:

Si instala solo d3-time-format como una biblioteca separada y procesa datos con eso, pasándolos a C3, ¿funcionaría? Si no es así, es una buena historia de usuario inicial para empezar.

Admito que ha pasado algún tiempo desde que estaba lo suficientemente profundo en esa parte de nuestro sistema, así que ya no tengo la cabeza en eso, pero parece que eso nos acercaría.

Estoy bastante seguro de que la razón por la que me alejé de actualizar nuestros otros formateadores fue porque no parecía haber una forma de intercambiar el analizador que c3 estaba usando para analizar data.json pasado a .generate() . Si hubiera una manera de obtener tanto con los analizadores v4, creo que sería un buen paso en la dirección correcta para nuestro caso de uso.

Solo lanzo mi caso de uso a la mezcla.

Nuestra implementación requiere el diseño del paquete D3, que se actualizó para funcionar mucho mejor en la versión 4.

Desde el registro de cambios:

El diseño de empaquetado circular, d3.pack, ha sido completamente reescrito para implementar mejor el algoritmo de Wang et al., Corrigiendo errores importantes y mejorando los resultados. El algoritmo de Welzl ahora se usa para calcular el círculo circundante más pequeño exacto para cada padre, en lugar de la respuesta aproximada utilizada por Wang et al.

Estoy buscando implementar C3.js en lugar de intentar escribir gráficos manualmente. Sin embargo, este es un factor decisivo para ese cambio.

No estoy tratando de ser crítico con C3.js en absoluto, reconozco completamente la tarea que sería actualizar a D3 V4. Solo proporcionamos nuestro escenario en caso de que ayude a tomar una decisión sobre este tema en particular.

¡Gracias amigo!

@beaudesigns Saludos, eso es muy útil.

Voy a crear una solicitud de extracción de WIP con lo que he hecho hasta ahora con v1, y podemos trabajar con eso hasta que esté listo para fusionarse. Es cierto que estoy muy ocupado tanto con las elecciones como con el libro en el que estoy trabajando, pero me encantaría que las personas que están dispuestas a ayudar a impulsar esto puedan contribuir.

¿Hay alguna actualización sobre esto? Parece que el trabajo para hacer que C3 sea compatible con D3 v4 se haya estancado un poco.

¿Cuál es el estado de este problema? Tengo Cannot read property 'format' error para D3 4.x

Lo mismo aquí, pero estamos dispuestos a ayudar con la migración si los encargados del mantenimiento nos dicen qué es lo más valioso para ellos en la migración. ¡Gracias de nuevo por el gran trabajo!
Salud,

Estoy trabajando en esto en el n. ° 2246. Aún se necesitan algunas correcciones, pero parece que funciona bien básicamente.

Soporte para D3 v4 agregado por https://github.com/c3js/c3/commit/ccff119809de05a68ff3e33521a79566bf12b903 y debería estar disponible en la versión 0.5.0 .

Encontré un problema en Gauge cuando actualicé C3JS a la última versión. Aquí está https://github.com/c3js/c3/issues/2390

¿Fue útil esta página
0 / 5 - 0 calificaciones