Гибридная библиотека диаграмм javascript на стороне сервера и на стороне клиента? - PullRequest
5 голосов
/ 15 апреля 2011

Существует ли библиотека для создания одинаковых диаграмм для одних и тех же данных, как в Java, так и в Javascript?

Моя задача заключается в следующем:

  • отобразить несколько ярких динамических диаграмм в браузере , лучше с динамическими всплывающими подсказками, масштабированием и т. д. (я имею в виду Javascript здесь)
  • и генерируйте те же (или достаточно похожие) диаграммы на стороне сервера, в Java, для автоматической отправкиих в электронных письмах (в этом сценарии вообще нет браузера).

Я бы хотел избежать взаимодействия с Flash для iPhone.

Есть статический серверсо стороны диаграмм, таких как Eastwood / JFreeChart, но я бы хотел сделать их более живыми в браузере.

Да, я могу перезагрузить статические изображения через Ajax.Есть ли другие варианты?

Ответы [ 2 ]

9 голосов

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


Используйте JavaScript, это здорово!

Вот ваша формула успеха: d3.js+jsdom+Rhino+Batik

В частности:

  1. Создайте свои графики, используя некоторую удобную библиотеку JavaScript, такую ​​как d3.js .

  2. Используйте jsdom для запуска d3 на стороне сервера.Jsdom - это чистая библиотека JS, и, как известно, над ней работает d3.

  3. Запустите jsdom и d3 внутри Rhino - движок JavaScript, встроенный в вашу любимую JVMс 1,6 ( уу, JSR-223! ).Хотя я предлагаю вам обновить его до последней версии ( Это на Maven Central, аккуратно! ).Я думаю, Node.JS может работать лучше, но я предполагаю, что вы застряли с Java.

    Также обратите внимание, что есть более старый, более зрелый и специфичный для Rhino серверный DOMреализация - EnvJs ( требует Rhino 1.7R2, а не R3 ) .Вы можете попробовать это, если jsdom не работает для вас.

  4. Используйте Батик , чтобы растеризовать SVG, сгенерированный d3. Batik даже поддерживает скрипты внутри SVG через Rhino. Это означает, что вы можете создавать интерактивные диаграммы на стороне сервера, если хотите.Я также использовал его на практике и имел большой опыт работы с ним.

Весь подход , как известно, работает на стороне сервера с Node.JS какJS engine и ImageMagick в качестве растеризатора , но я не вижу причин, по которым он не будет работать и для вас.


Кстати, если вы все сделаете, дайте мне знать.

2 голосов
/ 05 ноября 2014

Простите за действительно поздний ответ, но как насчет использования Highcharts ?Я ищу ссылку, которая дает вам больше информации, поскольку я набираю это, но Highcharts предоставляет функцию «экспорта» на стороне сервера.По сути, он позволяет вам загружать копию изображения, фактически не требуя браузера.

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

Более подробная информация здесь: http://www.highcharts.com/component/content/article/2-articles/news/52-serverside-generated-charts

И

здесь: https://github.com/one2team/highcharts-serverside-export

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...