Добавление диаграмм на страницу возможно с помощью макроса diag. Макрос отображает диаграмму, основываясь на заданных пользователем входных данных. Кроме того, возможно задание в качестве входных данных результата выборки из базы, формируемое макросом dataset.
Данные для диаграммы передаются макросу diag с помощью параметра data. Настройки отображения данных задаются с помощью параметра options. Синтаксис, подробное описание и примеры этих параметров описаны здесь.
Возможны следующие варианты входных данных:
Входные данные представляют собой перечисление значений, по которым строится диаграмма, например:
{diag:data="[[[1, 20], [2, 22.5], [3, 30]]]"}
Результат:
Этот способ подходит для описания сложных и/или больших по объему входных данных
{json:name="data1"} [ { "label": "IE", "data": 24.43}, { "label": "Firefox", "data": 42.9}, { "label": "Chrome", "data": 25.6}, { "label": "Safari", "data": 4.1}, { "label": "Opera", "data": 2.6} ] {json} {json:name="options1"} { "series": { "pie": { "show": true } } } {json} {diag:data="data1"|options="options1"}
Результат:
В таком варианте данные для построения диаграммы берутся непосредственно из базы данных, с использованием макроса dataset (набор данных).
Project Kaiser позволяет строить два вида диаграмм, основанных на наборах данных:
На текущий момент программа не предоставляет наборов данных, подходящих для построения диаграмм первого типа. Для построения круговых диаграмм структура набора данных должна удовлетворять некоторым необходимым условиям. Для примера рассмотрим вариант диаграммы, отображающей количество задач у каждого исполнителя в проекте с ID=13751.
Кроме того, для отображения круговой диаграммы необходимо указать для макроса diag параметр options, указывающий на объект определенного типа (см. пример)
{dataset:name="com.triniforce.document.datasets.meta.Tasks"|id="dataset1"} {param:name="parent_id"|value="13751"} {group-by:field="assignee_name"} {header} {afield:name="assignee_name"|func="avg"|id="label"}, {afield:name="assignee_name"|func="count"|id="data"} {header} {dbody} {dbody} {group-by} {dataset} {json:name="options1"} { "series": { "pie": { "show": true } } } {json} {diag:data="dataset1"|options="options1"|width="250px"|height="160px"}
Результат: