JSON в дизайнере и рендеринг на беке
Добавлено: 08 июн 2021, 03:03
Доброго времени суток,
пытаюсь построить следующую схему работы - на фронте загружается дизайнер к которому автоматически подгружается небольшой набор данных в формате json нужной структуры. Пользователь строит отчет, сохраняет его. Позже на беке открывается данный шаблон и вместо указанного источника данных подставляются данные с большим количество объектов в той же структуре что и данные для фронта, рендерится и сохраняется отчет на большой выборке данных.
Удалось сделать следующее - на фронте подключить пустой дизайнер, добавить мышкой json файл как источник данных, построить отчет, сохранить. А потом на беке(nodejs) следующим кодом заменить данные на массив данных большей структуры и построить отчет.
Указанная схема работает, строиться отчет по заданной структуре но на большем объеме данных. Но мне нужно чтобы при загрузке дизайнера пользователю не нужно было добавлять файл вручную, а он загружался автоматически.
Я попробовал на фронте действовать в таком же духе как и на фронте:
Данные подключаются, я строю и сохраняю отчет, но на беке при рендеренге с тем же кодом строится пустой отчет. Как я понимаю при таком добавлении не создаются сущности resource database, и они храниться уже в несколько другой структуре в шаблоне. Но подход на беке и фронте одинаковый, возможно ли построить такой вариант?
Напрашивается еще один способ - как-то на фронте имитировать действия пользователя и подключить програмно json как файл. Поискал на форуме, попробовал безуспешно использовать такие функции
обе не удалось подключить, пишет "TypeError: Stimulsoft.Base.StiJsonToDataSetConverter.GetDataSet is not a function".
Возможно также есть какой-то другой способ "собрать" такую связку с рендерингом отчета на беке.
Заранее спасибо!
пытаюсь построить следующую схему работы - на фронте загружается дизайнер к которому автоматически подгружается небольшой набор данных в формате json нужной структуры. Пользователь строит отчет, сохраняет его. Позже на беке открывается данный шаблон и вместо указанного источника данных подставляются данные с большим количество объектов в той же структуре что и данные для фронта, рендерится и сохраняется отчет на большой выборке данных.
Удалось сделать следующее - на фронте подключить пустой дизайнер, добавить мышкой json файл как источник данных, построить отчет, сохранить. А потом на беке(nodejs) следующим кодом заменить данные на массив данных большей структуры и построить отчет.
Код: Выделить всё
var report = new Stimulsoft.Report.StiReport();
report.loadFile("r1.mrt");
report.dictionary.databases.clear();
var dataSet = new Stimulsoft.System.Data.DataSet("data");
dataSet.readJson(JSON.stringify(fullData));
report.dictionary.databases.clear();
report.regData("data", "data", dataSet);
report.renderAsync(function () {
report.saveDocumentFile("r_1.mdc");
});
Я попробовал на фронте действовать в таком же духе как и на фронте:
Код: Выделить всё
var report = new Stimulsoft.Report.StiReport();
var dataSet = new Stimulsoft.System.Data.DataSet("JSON");
dataSet.readJson(JSON.stringify(demoData));
report.regData("JSON", "JSON", dataSet);
Напрашивается еще один способ - как-то на фронте имитировать действия пользователя и подключить програмно json как файл. Поискал на форуме, попробовал безуспешно использовать такие функции
Код: Выделить всё
var dataSet = Stimulsoft.Base.StiJsonToDataSetConverter.GetDataSetFromFile(textFile);
var dataSet = Stimulsoft.Base.StiJsonToDataSetConverter.GetDataSet(json);
Возможно также есть какой-то другой способ "собрать" такую связку с рендерингом отчета на беке.
Заранее спасибо!