C3: Совместимость с D3 4.0

Созданный на 12 апр. 2016  ·  30Комментарии  ·  Источник: c3js/c3

Есть ли совместимость с D3 4.0?

C-feature-request question

Самый полезный комментарий

есть ли обновления по этой проблеме?

Все 30 Комментарий

Я только что установил C3 на версию 0.4.11-rc4 и D3 на версию 4.0.0-alpha.29 и, похоже, это не работает. :(

Нет, это не работает. В D3 4.0 внесены некоторые критические изменения, поэтому также потребуется обновить вызовы c3.js.

См. Здесь для справки:

версия 4.0 означает, что это основной выпуск и не имеет обратной совместимости.

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

Интересно. Возможно, это хорошая возможность переписать большую часть кодовой базы, сделав ее более модульной, как, например, я занимаюсь своим форком Webpack . Поскольку все теперь используют импорт ES6 с Rollup в D3, было бы действительно разумно включить такие вещи, как встряхивание дерева с C3, за счет более эффективного использования модулей.

Тем не менее, я далеко не профессионал по шаблонам проектирования JS - если вы посмотрите на мою вилку, я просто импортировал каждый файл как CommonJS, следя за тем, как процесс конкатенации создает библиотеку. Мы будем очень благодарны за любые предложения о том, как сделать рефакторинг более модульным.

Я подумывал о разветвлении c3, я активно использую его для внутренних инструментов и активно поддерживаю свою собственную версию. Мне пришлось исправить в нем много ошибок, и, к сожалению, я знал, что любые фиксации в этом репо останутся неприемлемыми.

Некоторые из вещей, которые я добавил, - это кеширование атрибутов и селекторов, что в два раза повысило производительность методов перерисовки диаграммы и начальной визуализации. Мне также пришлось добавить такие функции, как возможность отображать диаграммы градиентов и улучшенные всплывающие подсказки. Бесчисленное множество других недокументированных исправлений, которые мне пришлось реализовать при использовании этой библиотеки.

Было бы разумно иметь c3.core, а затем можно было бы включить все диаграммы для создания супер-экономичной сборки, по сути, имея только то, что пользователю требуется только основная библиотека и необходимые диаграммы, в моем случае я использую только 4 из графики в c3.

Не говоря уже об улучшениях D3-4.0, которые могут быть включены в c3. В любом случае я могу разглагольствовать об этой библиотеке, но она одна из лучших, просто жаль, что мы не можем внести свой вклад в эту.

Я играл с c3 и d3 @ v4. Некоторые основные пространства имен d3 больше не существуют (например, d3.behavior), поэтому я не мог обойтись без этого.

Однако мне удалось получить некоторую сладость Rollup, заменив задачи concat и d3 smash в c3 на использование импорта и экспорта ES6. Это не оставляет много места для трех встряхиваний, но я не закончил возиться.

@abacaj то, что я делал в прошлом, было https://github.com/huaofoundrie. Если вам интересно, скажите мне, и я дам вам права администратора, чтобы мы могли управлять c3 nextgen оттуда

@abacaj и @amenadiel Привет! Пожалуйста, не сдавайтесь прямо сейчас - я планирую проделать огромную работу над очередью задач и в других местах, чтобы действительно попытаться выпустить 0.4.11 как можно скорее.

После этого мы действительно будем стремиться перенести многое из того, что вы упомянули, в библиотеку для новой версии функции, надеясь, что итерация будет намного быстрее в будущем. Я бы хотел как-то вовлечь вас двоих (

Спасибо! 😄

@aendrew, конечно, если вы хотите снова запустить этот проект, тогда, конечно, я первым

@amenadiel Это фантастика - не могли бы вы

Я сделаю POC на днях

похоже, v4 был официально выпущен . было бы здорово, если бы это обновление стало доступным через c3

Согласитесь с @travi , и я подтверждаю, что, по крайней мере, самый первый пример "Gettingstarted" не работает с d3 4.0.0. Теперь это нормально для меня, я использую предложенную версию d3 3.5.0 от bower, но было бы здорово, если бы все версии были актуальными и работали должным образом.

@alundiak et al, он определенно не будет работать как есть с 4.0. D3 v4 имеет совершенно другое пространство имен и никоим образом не имеет обратной совместимости. Обновление до v4 - очень нетривиальная задача.

Начинаю другие подходы. Может помочь разделение c3 на модули es6.

Мой первый подход, использующий прокладку ES6 для d3, проходит большую часть теста, но предстоит еще много работы, пока мы не сделаем структуру папок согласованной со структурой модуля.

По крайней мере, Chart, Chartinternal и Axis должны быть тремя отдельными модулями. Некоторые статические методы вышеупомянутых модулей должны стать методами сами по себе.

Я сделал пиар с результатом своих экспериментов: https://github.com/c3js/c3/pull/1765

Это не включает никаких изменений в d3. Это изменение, которое означает использование минимального скелета d3 @ 3 и исправление его подмодулей d3 @ 4 , будет построено на основе # 1765.

есть ли обновления по этой проблеме?

Без обновления D4 до версии 4 я больше не могу использовать эту библиотеку: /

@Niondir Из любопытства, почему это так? V4 не вносит серьезных изменений в функциональность или стабильность D3. Если вы не хотите использовать D3 v4 в другом месте вашего проекта (а версия C3 вызывает конфликт), версия D3, которую использует C3, не должна иметь большого значения ... Конечно, если я ошибаюсь в этом предположении , пожалуйста, дайте мне знать, так как это может усилить давление на продвижение обновления до версии 4.

Тем не @amenadiel на # 1765 на этой неделе и могу в конечном итоге использовать его как основу для обновления до V4 для C3 v1. Пожалуйста, проявите терпение, сейчас это, наверное, наименее тривиальная проблема во всей очереди. 😄

Я просто помню некоторые проблемы с отсутствующей функцией merge () в селекторе.

@Niondir Хорошо, в v4 есть selection.merge , а в v3 нет, но как это повлияет на ваше повседневное использование библиотеки? Если вы не используете D3 вне C3, не будет ощутимой пользы от использования v4, пока мы не обновим библиотеку. Не поймите меня неправильно, у нас есть много веских причин для обновления до версии 4 в контексте разработки C3 (пользовательские сборки и уменьшенный размер библиотеки среди них), но с точки зрения конечного пользователя я не понимаю желание в настоящее время. Мы будем рады получить любую дополнительную информацию о вашем сценарии использования! 😄

одна проблема, которой мы хотели воспользоваться, - это синтаксический анализ даты и времени в версии 4. v3 не поддерживает миллисекунды с точностью смещения TZ для дат ISO-8601, но v4 поддерживает. мы действительно используем средства форматирования d3 вне c3, но не можем воспользоваться преимуществами улучшенного синтаксического анализа без загрузки обеих версий.

Ура, @travi , это полезно. : +1:

Если бы вы установили только d3-time-format как отдельную библиотеку и обработали с ней данные, передав их в C3, это сработало бы? Если нет, то это хорошая начальная пользовательская история, с которой мы можем начать.

Я признаю, что прошло какое-то время с тех пор, как я достаточно глубоко погрузился в эту часть нашей системы, поэтому я больше не думаю об этом, но похоже, что это приблизит нас.

Я почти уверен, что причина, по которой я отказался от обновления других наших форматировщиков, заключалась в том, что, похоже, не было способа заменить парсер, который c3 использовал для анализа data.json переданного в .generate() . если бы существовал способ получить столько с помощью парсеров v4, я думаю, это был бы хороший шаг в правильном направлении для нашего варианта использования.

Просто добавлю мой вариант использования.

Наша реализация требует макета пакета D3, который был обновлен для улучшения работы в версии 4.

Из журнала изменений:

Макет упаковки кругов, d3.pack, был полностью переписан, чтобы лучше реализовать алгоритм Ванга и др., Исправить основные ошибки и улучшить результаты! Алгоритм Вельцля теперь используется для вычисления точного наименьшего окружающего круга для каждого родителя, а не для приблизительного ответа, используемого Ван и др.

Я изучаю реализацию C3.js вместо того, чтобы писать диаграммы вручную. Однако это нарушитель сделки для этого переключателя.

Я вообще не пытаюсь критиковать C3.js, я полностью осознаю задачу, которая будет заключаться в обновлении до D3 V4. Просто предоставим наш сценарий на случай, если он поможет принять решение по этой конкретной проблеме.

Спасибо, парень!

@beaudesigns Ура, это очень полезно.

Я собираюсь создать запрос на перенос WIP с тем, что я сделал до сих пор с v1, и мы можем работать над этим, пока он не будет готов к слиянию. По общему признанию, я безумно занят как выборами, так и книгой, над которой я работаю, но был бы рад, если бы люди, которые готовы помочь продвинуть это вперед, могли внести свой вклад.

Есть ли обновления по этому поводу? Похоже, что работа по обеспечению совместимости C3 с D3 v4 немного застопорилась.

Каков статус этого вопроса? У меня Cannot read property 'format' ошибка для D3 4.x

То же самое и здесь, но мы готовы помочь в миграции, если сопровождающие сообщат нам, что для них наиболее ценно в миграции. Еще раз спасибо за отличную работу!
Привет,

Я работаю над этим в # 2246. По-прежнему необходимы некоторые исправления, но в основном все работает хорошо.

Поддержка D3 v4 добавлена https://github.com/c3js/c3/commit/ccff119809de05a68ff3e33521a79566bf12b903 и должна быть доступна в выпуске 0.5.0 .

обнаружил одну проблему в Gauge, когда обновил C3JS до последней версии. Вот https://github.com/c3js/c3/issues/2390

Была ли эта страница полезной?
0 / 5 - 0 рейтинги