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

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

Организация загрузки для виджетов дашборда:

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

Обработка ошибки загрузки данных

В случае возникновения ошибки, при загрузке данных, инстанс ошибки придет в виджет вместо данных. Разработчик виджета должен обработать эту ошибку.

Размеры виджета

В sourceConfigGetter вторым парметром приходят свойства виджета. Для виджетов дашборда в свойства добавляются размеры виджета:

  • widgetWidth: number - ширина виджета
  • widgetHeight: number - высота виджета

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

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

Платформенные фильтры описаны в интерфейсе IDashboardWidgetFilter:

  • organization: string - Id выбранной организации
  • date: Date - Дата начала периода
  • dateTo: Date - Дата окончания периода
  • employees: number - Id выбранного сотрудника/отдела

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

Если вам необходимо получить текущее значение фильтра, например в обработчике titleClickCallback, вы можете воспользоваться классом filterController из библиотеки Dashboard/Loader.

Пример получения текущего значения фильтра:

// TypeScript
import {filterController} from 'Dashboard/Loader';

export default function titleClickCallback(): void {
    const filter = filterController.getFilter();
    ...
}

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

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

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

widgetId - идентификатор инстанса виджета. Приходит первым параметром в 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;