Comments 12
По моим наблюдениям, в постах с ссылкой на демо не бывает подобных комментариев.
+4
и все-таки генерить html на php не самый лучший вариант. JSON вам в помощь… Небольшой запрос к серверу json в ответ. Опираемся на этот ответ, строим диаграмму. И ничего лишнего. Никакого php внутри html. Все чисто и красиво, сервер обменивается с клиентом только данными. К слову так работает большинство библиотек для построения графиков.
+2
а никакого php внутри html и нет. json — красивый формат и нами само собой часто применяемый в задачах подобной той, которую очевидно вы имели ввиду (когда нужно передать клиентскому скрипту только данные). однако, конкретно в данном случае мы имеем дело с стандартным сайтом, который отдаёт пользователю html страницы, в которые необходимо встроить графику (без дополнительного запроса). вариант передать данные для клиентского скрипта в одном (вместе с html) ответе сервера по-моему очевидный и проще чем делать дополнительный запрос для json. всё это если я правильно вас понял конечно же.
+2
json не просто красивый формат, он очень удобен, когда нужно куда-то передать данные. Вы формируете много js объектов в виде строк, этого можно легко избежать если сформировать исходный массив таким образом, чтобы при преобразовании из json в js сразу получился необходимый объект. Мне кажется, в данном случае три строки дополнительного запроса к серверу экономят время на конкатенации строк на стороне сервера, да и код выглядит чище. Впрочем, это мое мнение, оно может не совпадать с мнением большинства, я как-то привык уже оперировать ООП подходом в создании сайтов и не редко усложняю простые вещи, бывает и такое :)
0
В свое время игрался с Raphael для рисования диаграмм. В процессе понял, что никакого упрощения библиотека не приносит в процесс разработки. Возится с ней стоит только тогда, когда требуется поддержка IE6-8. Иначе проще написать все на чистом Canvas или с помощью библиотеки canvasquery.com, которая является всего-лишь удобной оберткой над родным API (позволяет использовать chaining наподобие jQuery, добавлять обработчики событий и прочее):
cq(640, 480).drawImage(image, 0, 0).fillStyle("#ff0000").fillRect(64, 64, 32, 32).blur().appendTo("body");
+1
На gRaphael все проще:
Ну и демо: cash.pihel.jino.ru/?act=analiz
window.onload = function () {
var r = Raphael("holder");
var pie = r.g.piechart(
120, 140, 100,
[35349.7,41085],
{legend: ["%%.% – Расход (35349.7р.)", "%%.% - Приход (41085р.)"],
legendpos: "east"});
pie.hover(function () {
this.sector.stop();
this.sector.scale(1.1, 1.1, this.cx, this.cy);
if (this.label) {
this.label[0].stop();
this.label[0].scale(1.5);
this.label[1].attr({"font-weight": 800});
}
}, function () {
this.sector.animate({scale: [1, 1, this.cx, this.cy]}, 500, "bounce");
if (this.label) {
this.label[0].animate({scale: 1}, 500, "bounce");
this.label[1].attr({"font-weight": 400});
}
});
};
Ну и демо: cash.pihel.jino.ru/?act=analiz
0
Это только в случае, если внешний вид диаграммы не принципиален. А если понадобится точное соответствие с дизайном, то на допиливание gRaphael понадобится больше времени, чем на написание с нуля.
+1
Согласен. Обычный Raphael представляет всё же более базовый функционал, с помощью которого нам показалось проще добиться «точного соответствия дизайну». Частично согласен также и с мнением wa_Nadoo, в том что возможно ещё проще на «Canvas или с помощью библиотеки canvasquery.com». Однако в нашем случае важна была скорость разработки (как можно быстрее получить первый рабочий прототип) и кроссбраузерность проекта (IE 6-8 в т.ч.). В этих условиях приняли решение положиться на Raphael и не пожалели.
+1
Sign up to leave a comment.
Пример круговой диаграммы в SVG средствами Raphael и PHP