Загрузка данных для виджета дашборда

Для настройки загрузки данных, у виджета нужно настроить поля runtimeConfig.sourceConfigGetter и designtimeConfig.sourceConfigGetter. Подробнее о том, как настраивать sourceConfigGetter написано в статье "Загрузка данных для плеера/конструктора фреймов".

Для виджетов дашборда нужно организовать загрузку следующим образом:

  1. runtimeConfig.sourceConfigGetter - грузит настоящие данные с использованием бизнес-логики.
  2. designtimeConfig.sourceConfigGetter - возвращает демо-данные, без использования бизнес-логики.

Фильтрация данных

В sourceConfigGetter третьим параметром приходит фильтр. Для виджетов дашбордов есть параметры фильтрации, которые декларируется платформой и должна поддерживаться всеми виджетами, которые могут обработать эти фильтры.

Платформенные фильтры описаны в интерфейсе IDashboardWidgetFilter: * organization: string - Id выбранной организации * date: Date - Дата начала периода * dateTo: Date - Дата окончания периода

Интерфейс IDashboardWidgetFilter находится в библиотеке Dashboard/interface.

Локальные фильтры и сортировка

У виджетов могут присутствовать собственные фильтры или сортировки. Например фильтр по дате в виджете с графиком или сортировка в шапке таблицы.

Локальные фильтры/сортировки и т.д. виджет сохраняет и читает самостоятельно. Чтение данных должно находиться в предзагрузке данных. Хранить данные нужно в пользовательских параметрах по ключу <my-parameter-name>_<widgetId>.

widgetId - идентификатор инстанса виджета. Приходит 1 параметром в sourceConfigGetter и передается в опциях в шаблон виджета.

Пример идентификатора: sorting_73e8d99a-86b3-467c-8087-844350e82a96, где:

  • sorting - название параметра;
  • 73e8d99a-86b3-467c-8087-844350e82a96 - идентификатор инстанса виджета.
// TypeScript
import {USER} from 'ParametersWebAPI/Scope';

function sourceConfigGetter(widgetId: string): object {
    const config = {
        type: 'custom',
        loadDataMethod(): Promise<number> {
            const sortingParam = 'sorting_' + widgetId;

            return USER.load([sortingParam]).then((result) => {
                const sorting = result.get('sortingParam');
                ...
            });
        }
    };
    return {
        value: config
    };
}
export default sourceConfigGetter;