Рендеринг изображения в браузере или временные изображения?

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

Я использую Gruff Graphs для Ruby для создания диаграмм, но я не знаю, как лучше всего отображать результаты безопасным и защищенным.

Вот некоторые из моих идей/проб:

  1. сохранить график в файл (jpg, png)? проблема: данные доступны всем (нет доступа к cron, чтобы время от времени удалять данные)

  2. рендерить в браузере (должен работать в IE)?

  3. Использовать javascript (Raphaël — библиотека JavaScript) или Google API и вывести отчет в формате PDF (нужен плагин или гем, верно)?

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

Спасибо за любую помощь.


person Muralha    schedule 30.03.2010    source источник


Ответы (4)


Хотя это раздражает, вы всегда можете удалить старые записи как часть процедуры генерации. Это действительно то, что вам нужно сделать, если у вас нет какого-либо средства фоновой работы, такого как cron. Проверка на основе «времени модификации» файла обычно является лучшим способом, но это также приводит к разрыву старых ссылок на изображения.

Подход на основе холста значительно лучше, чем изображения, созданные сервером. Например, используя что-то вроде Flot для построения графиков на основе холста и включения explorercanvas, если это необходимо для совместимости с IE.

person tadman    schedule 30.03.2010

В настоящее время я делаю то же самое и искал грубый способ генерации моих диаграмм на стороне сервера.

Я заставил gruff сгенерировать изображение в моем контроллере и записать изображение в мой общедоступный каталог изображений, а затем просто связать изображение с моего представления.

Тем не менее, графики были статичными изображениями, а мне хотелось чего-то более динамичного.

В итоге я использовал подключаемый модуль Highcharts jQuery (http://www.highcharts.com/), чтобы генерировать мои графики на стороне просмотра. (Намного лучше!)

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

Все дело в мнении, конечно! :)

person Dustin M.    schedule 30.03.2010

Я использовал gruff, и он очень медленный и потребляет слишком много памяти. Если вы не сильно меняете chrat, хорошей идеей будет использовать gruff с некоторым кэшированием, вы можете выполнять кэширование страниц или кэширование фрагментов http://guides.rubyonrails.org/caching_with_rails.htm, но я бы рекомендовал вам использовать API Google, есть гем для упрощения работы, http://rubygems.org/gems/googlecharts. Если вам нужно, чтобы пользователи загружали диаграмму, я не думаю, что это хорошая идея использовать graphael или другие для создания диаграмм.

person Boris Barroso    schedule 31.03.2010

Спасибо за все материалы.

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

Еще раз спасибо всем за помощь.

person Muralha    schedule 04.04.2010