Изменить тип отчета Birt из скрипта

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

Я создал 4 разных отчета. Бар, Линия, Площадь и Пирог. Я назначил их всем отдельным логическим параметром, который указывает, скрыты они или нет. Затем я читаю из файла Json, какой тип должен отображаться, и изменяю параметр для этого типа на false, чтобы соответствующий отчет был виден.

//... some code before to get myJSONObject

var reportTypeObject = myJSONObject.Reporttype[0];
var type = reportTypeObject.Type;

if(type == "LINE"){
    reportContext.setParameterValue("LineHidden", false);
}else if(type == "BAR"){
    reportContext.setParameterValue("BarHidden", false);
}else if( type == "AREA"){
    reportContext.setParameterValue("AreaHidden", false);
}else if( type == "PIE"){
    reportContext.setParameterValue("PieHidden", false);
}

Проблема заключается в том, что для каждого отдельного типа отчета должна быть предварительно определенная диаграмма. У каждого графика также есть параметр.

Допустим, я хочу 5 графиков на приборной панели. Каждый график должен иметь 4 типа, в которых он может отображаться. Теперь в отчете будет 20 графиков и 20 параметров по одному для каждого графика. Я думаю, что вы все можете согласиться, это не так, как это должно быть решено.

Мой вопрос сейчас:

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

Редактировать:

Мне удалось изменить тип отчета с помощью следующих строк кода:

var chart = reportContext.getDesignHandle().findElement("BarChart").getReportItem().getProperty("chart.instance");
chart.setType("Tube Chart");
chart.setSubType("Side-by-side");

К сожалению, в отладчике это показывает только то, что тип изменился. Фактический тип, который отображается на веб-странице отчета, по-прежнему является гистограммой:(

0 ответов

Другие вопросы по тегам