Webix Report Manager ожидает общий URL для загрузки и сохранения отчётов:
view:"reports", url:"remote/data"
Более подробную информацию о роутах и параметрах читайте в статье Работа с сервером.
Если у вас нет бэкенд сервера или ваш проект требует нестандартной логики, вы можете кастомизировать сервис Backend.
Report Manager ожидает JSON данные, где каждый элемент массива - объект со следующими полями:
Пример данных
id: 22
name: "Company per region"
text: "{
"desc":"Created on 10/28/2020",
"data":"companies",
"joins":[...],
"query":"",
"columns":[{"id":"companies.region_id","name":"Region",...],
"group":{"by":[{"id":"companies.region_id"}],"columns":[...]},
"buckets":
[{"column":"sales.product","options":[{"id":"Drinks",
"values":["black tea","espresso","latte","green tea"]},{"id":"Other"}]}],
"meta":{"freeze":1},"sort":null}",
updated: "2020-10-29T12:38:14Z"
У Report Manager есть следующие сервисы для работы с данными:
1. Local
const local = $$("reports").getService("local");
const modules = local.getModules(); // получаем отчёты
3. Charts
const charts = $$("reports").getService("charts");
charts.getTypes(); // получаем массив типов чартов
/*
[
{id: "line", value: "Line", icon: "mdi mdi-chart-line"},
{id: "spline", value: "Spline", icon: "mdi mdi-chart-bell-curve-cumulative"},
{id: "area", value: "Area", icon: "mdi mdi-chart-areaspline"},
// другие типы
]
*/
2. Helpers
const helpers = $$("reports").getService("helpers");
// проверяем, содержит ли поле какие-либо символы, кроме цифр
helpers.hasNonDigits(input);
3. Backend
const back = $$("reports").getService("backend");
back.getModels().then((data) => console.log(data));
Смотрите папку models исходного кода, чтобы познакомиться с сигнатурами методов.
Модуль - это конфигурация отчёта. Все модули хранятся в коллекции данных. Чтобы получить коллекцию, вызовите метод getModules() у сервиса Local.
const modules = $$("myReports").getService("local").getModules();
Чтобы убедиться в том, что коллекция уже загружена, используйте метод waitData, который возвращает промис:
Получаем первый модуль
const modules = $$("myReports").getService("local").getModules();
modules.waitData.then(function(){
modules.getItem(modules.getFirstId()); // получаем первый модуль
});
С помощью сериализации коллекции можно получить массив всех модулей:
Сериализация коллекции модулей
const modules = $$("myReports").getService("local").getModules();
modules.waitData.then(function(){
const arr = modules.serialize(); // получаем массив модулей
/*[
{
id: 22
name: "Company per region"
text: "{
"desc":"Created on 10/28/2020",
"data":"companies",
"joins":[...],
"query":"",
"columns":[{"id":"companies.region_id","name":"Region",...],
"group":{"by":[{"id":"companies.region_id"}],"columns":[...]},
"buckets":
[{"column":"sales.product","options":[{"id":"Drinks",
"values":["black tea","espresso","latte","green tea"]},{"id":"Other"}]}],
"meta":{"freeze":1},"sort":null}",
updated: "2020-10-29T12:38:14Z"
},
...
]*/
});
Модели - это источники данных. Все модели хранятся в коллекции данных. Чтобы получить коллекцию, вызовите метод getModels() у сервиса Local. Метод принимает 1 параметр:
$$("myReports").getService("local").getModels().then(sources => {
// делаем что-либо с моделями
});
Метод возвращает хэш источников данных:
Пример данных
{
companies: {id: "companies", name: "Companies", data: [...], refs: [...]},
persons: {id: "persons", name: "Persons", data: [...], refs: [...]},
products: {id: "products", name: "Products", data: [...], [...]},
sales: {id: "sales", name: "Sales", data: [...], refs: [...]}
}
Запросы используются для фильтрации отчётов. Все запросы хранятся в коллекции данных. Чтобы получить коллекцию, вызовите метод getQueries() у сервиса Local.
const queries = $$("myReports").getService("local").getQueries();
Чтобы убедиться в том, что коллекция уже загружена, используйте метод waitData, который возвращает промис:
Получаем первый запрос
const queries = $$("myReports").getService("local").getQueries();
queries.waitData.then(function(){
queries.getItem(queries.getFirstId()); // получаем первый запрос
});
С помощью сериализации коллекции можно получить массив всех запросов:
Сериализация коллекции запросов
const queries = $$("myReports").getService("local").getQueries();
queries.waitData.then(function(){
const arr = queries.serialize(); // получаем массив запросов
/*[
{
id: 20,
models: ["companies", "persons"],
name: "myFilter",
text: { ...конфиг запроса },
value: "myFilter"
},
...
]*/
});
Related sample: Report Manager: Data Operations
Наверх