Методы глубокой настройки
Фильтры
В этом разделе фильтры описаны с точки зрения разработчика. Пользовательский опыт работы с фильтрами подробно описан в разделе Фильтры Пользовательской документации.
На платформе Digital Q.Sensor BI реализованы три типа фильтров.
| Тип фильтра | Область действия по умолчанию | Отображение на интерфейсе |
|---|---|---|
| Глобальный | Весь дашборд |
|
| chartFilters | График, на котором фильтр был установлен |
|
| privateFilter | График, на котором фильтр был установлен | На интерфейсе не отображаются. |
Обратите внимание, что в списке фильтров на вкладке "Связь с фильтрами дашборда" не будут отображаться те фильтры типа
chartFilters, которые были заданы вручную для специальных нужд (например, для дриллдаунов или кнопок типа "Слайдер") с помощью JS кода.
Фильтры типов chartFilters и privateFilters по области действия являются локальными. Фильтры типа chartFilters чаще всего применяются непосредственно для фильтрации данных, а фильтры типа privateFilters - для реализации дриллдаунов.
| Метод | Пример |
|---|---|
| chartFilterMap: Возвращает объект со значениями локальных фильтров типа chartFilter | this.chartFilterMap |
| setChartFilters: Устанавливает переданные значения в качестве локальных фильтров типа chartFilter @Param array chartFilters[] @Param boolean applyInstantly @Param number delay | this.setChartFilters([{field: 'field 1', value: 'value 1'}]) |
| privateFilters: Возвращает массив объектов с локальными фильтрами типа privateFilter | this.privateFilters |
| setPrivateFilters: Устанавливает переданные значения в качестве локальных фильтров типа privateFilter @Param array privateFilters[] @Param number maxFilterNumber | this.setPrivateFilters([{ field: 'field 1', value: 'value 1' }]); |
| dropPrivateFilters: Удаляет все текущие фильтры типа privateFilter | this.dropPrivateFilters |
| clearPrivateFilters: Удаляет последний установленный фильтр типа privateFilter | this.clearPrivateFilters |
| filterList: Возвращает список глобальных фильтров, применённых на дашборде | this.filterList |
| setFilters: Обновляет текущий список глобальных фильтров, добавляя новые значения в конец @Param array globalFilters[] @Param boolean updateDashboard | this.setFilters([{field: 'field 1', value: 'value 1'}], true) |
| setDashboardFilters: Обновляет текущий список глобальных фильтров, удаляя при этом предыдущие значения @Param array globalFilters[] @Param boolean updateDashboard @Param number delay | this.setDashboardFilters([{field: 'field 1', value: 'value 1'}], true, 0) |
chartFilterMap
Метод chartFilterMap возвращает объект со значениями локальных фильтров типа chartFilter, где ключами являются поля фильтров, а значениями - их значения.
Пример использования
// Пусть массив локальных фильтров типа chartFilter на текущий момент выглядит следующим образом
// chartFilters = [
// { field: 'date', value: '2024-01-01' },
// { field: 'category', value: 'продажи' },
// { field: 'region', value: 'Северо-Запад' }
// ];
// Вызываем метод chartFilterMap
console.log(this.chartFilterMap)
// Результат:
// { date: '2024-01-01', category: 'продажи', region: 'Северо-Запад' }setChartFilters
Метод chartFilterMap используется для установки фильтров типа chartFilter. Он позволяет передавать фильтры для графика, опционально задавая задержку перед их применением.
Параметры
-
chartFilters(обязательный, массив объектов): Массив фильтров графика. Каждый элемент массива представляет собой объект с информацией о фильтре (пары вида{field: 'field 1', value: 'value 1'}). По умолчанию равен пустому массиву. -
applyInstantly(необязательный, boolean): Флаг, определяющий, нужно ли применить фильтры сразу -trueили с задержкой -false. По умолчанию равенtrue. -
delay(необязательный, number): Задержка (в миллисекундах) перед применением фильтров. По умолчанию равна 1000 миллисекунд (1 секунда).
Примеры использования
// Пример 1: Применение фильтров графика сразу
this.setChartFilters([{ field: 'date', value: '2024-01-01' }, { field: 'category', value: 'продажи' }]);
// Пример 2: Применение фильтров с задержкой в 2 секунды
this.setChartFilters([{ field: 'date', value: '2024-01-01' }, { field: 'category', value: 'продажи' }], false, 2000);privateFilters
Метод privateFilters возвращает массив объектов со значениями локальных фильтров типа privateFilters.
Пример использования
// Пусть массив локальных фильтров типа privateFilters на текущий момент выглядит следующим образом
// privateFilters = [
// { field: 'date', value: '2024-01-01' },
// { field: 'region', value: 'Северо-Запад' }
// ];
// Вызываем метод privateFilters
console.log(this.privateFilters)
// Результат:
// [{ field: 'date', value: '2024-01-01' }, { field: 'region', value: 'Северо-Запад' }]setPrivateFilters
Метод setPrivateFilters используется для установки фильтров типа privateFilter, если на текущий момент их количество не больше указанного (по умолчанию - 1). Иначе текущие значения не изменяются.
Параметры
-
privateFilters(обязательный, массив объектов): Массив фильтров графика. Каждый элемент массива представляет собой объект с информацией о фильтре (пары вида{field: 'field name', value: 'value'}). По умолчанию равен пустому массиву. -
maxFilterNumber(необязательный, number): Максимальное количество фильтров типа privateFilter, которое может быть установлено. Если текущее количество фильтров графика достигло или превысило это значение, новые фильтры не будут добавлены. По умолчанию устанавливается 1.
Примеры использования
// Пример 1:
this.setPrivateFilters([{ field: 'date', value: '2024-01-01' }]);
// Пример 2:
this.setPrivateFilters([{ field: 'region', value: 'Северо-Запад' }, { field: 'category', value: 'продажи' }], 3);dropPrivateFilters
Метод dropPrivateFilters используется для удаления всех значений фильтров типа privateFilter.
Пример использования
// Пусть массив локальных фильтров типа privateFilters на текущий момент выглядит следующим образом
// privateFilters = [
// { field: 'date', value: '2024-01-01' },
// { field: 'region', value: 'Северо-Запад' }
// ];
// Вызываем метод dropPrivateFilters, а затем выводим массив с privateFilters в консоль
this.dropPrivateFilters
console.log(this.privateFilters)
// Результат:
// []clearPrivateFilters
Метод clearPrivateFilters используется для удаления последнего значения фильтра типа privateFilter.
Пример использования
// Пусть массив локальных фильтров типа privateFilters на текущий момент выглядит следующим образом
// privateFilters = [
// { field: 'date', value: '2024-01-01' },
// { field: 'region', value: 'Северо-Запад' }
// ];
// Вызываем метод clearPrivateFilters, а затем выводим массив с privateFilters в консоль
this.clearPrivateFilters
console.log(this.privateFilters)
// Результат:
// [{ field: 'date', value: '2024-01-01' }]filterList
Метод filterList возвращает массив объектов, в котором содержится текущий список глобальных фильтров, применённых на дашборде.
Пример использования
// Пусть массив глобальных фильтров выглядит следующим образом
// globalFilters = [
// { field: 'date', value: '2024-01-01' },
// { field: 'region', value: 'Северо-Запад' }
// ];
// Вызываем метод filterList
console.log(this.filterList)
// Результат:
// [{ field: 'date', value: '2024-01-01' }, { field: 'region', value: 'Северо-Запад' }]setFilters
Метод setFilters обновляет массив глобальных фильтров, применённых на дашборде. Новые фильтры добавляются в конец массива.
Параметры
-
globalFilters(обязательный, массив объектов): Массив фильтров глобальных фильтров. Каждый элемент массива представляет собой объект с информацией о фильтре (пары вида{field: 'field name', value: 'value'}). По умолчанию равен пустому массиву. -
updateDashboard(необязательный, boolean): Флаг, отвечающий за обновление графиков дашборда после добавления фильтров. По умолчанию устанавливается значениеfalse.
Пример использования
// Пусть массив глобальных фильтров выглядит следующим образом
// globalFilters = [
// { field: 'date', value: '2024-01-01' },
// { field: 'region', value: 'Северо-Запад' }
// ];
// Вызываем метод setFilters и выводим в консоль список глобальных фильтров
this.setFilters([{field: 'field 1', value: 'value 1'}], true)
console.log(this.filterList)
// Результат:
// [{ field: 'date', value: '2024-01-01' }, { field: 'region', value: 'Северо-Запад' }, {field: 'field 1', value: 'value 1'}]setDashboardFilters
Метод setDashboardFilters перезаписывает массив глобальных фильтров, применённых на дашборде. Старые значения удаляются.
Параметры
-
globalFilters(обязательный, массив объектов): Массив фильтров глобальных фильтров. Каждый элемент массива представляет собой объект с информацией о фильтре (пары вида{field: 'field name', value: 'value'}). По умолчанию равен пустому массиву. -
updateDashboard(необязательный, boolean): Флаг, отвечающий за обновление графиков дашборда после добавления фильтров. По умолчанию устанавливается значениеfalse. -
delay(number): Время задержки перед применением фильтров в миллисекундах. По умолчанию установлено в 30 миллисекунд.
Пример использования
// Пусть массив глобальных фильтров выглядит следующим образом
// globalFilters = [
// { field: 'date', value: '2024-01-01' },
// { field: 'region', value: 'Северо-Запад' }
// ];
// Вызываем метод setDashboardFilters и выводим в консоль список глобальных фильтров
this.setDashboardFilters([{field: 'field 1', value: 'value 1'}], true, 0)
console.log(this.filterList)
// Результат:
// [{field: 'field 1', value: 'value 1'}]Графики
| Метод | Пример |
|---|---|
| name: Возвращает текущий заголовок графика | this.name |
| qs$title: Устанавливает новый заголовок графика | this.qs$title = 'Динамика за год' |
| qs$dashboardTitle: Возвращает текущий заголовок дашборда | this.qs$dashboardTitle |
| qs$dashboardTitle: Устанавливает новый заголовок дашборда | this.qs$dashboardTitle = 'Показатели по Отделам' |
| setOnChartClick: Устанавливает обработчик события клика на график @Param function handleClick | this.setOnChartClick((instance) => console.log(instance.name)) |
| setOnChartDblClick: Устанавливает обработчик события двойного клика на график @Param function handleClick | this.setOnChartDblClick((instance) => console.log(instance.name)) |
| setOnChartDataZoom: Устанавливает обработчик события изменения масштаба данных на графике @Param function handleDataZoomChange | this.setOnChartDataZoom((instance) => console.log(instance.data)) |
| openLink: Открывает новую вкладку браузера с указанным URL-адресом. @Param string link | this.openLink('https://example.com') |
| navigateTo: Используется для перехода к другому дашборду на платформе. @Param string dashboardSysName @Param array globalFilters | this.navigateTo('test_dashboard', [{ field: 'date', value: '2024-01-01' }, { field: 'category', value: 'продажи' }]) |
name
Метод name возвращает текущий заголовок графика.
Пример использования
// Пусть на данный момент заголовком графика является "Динамика"
// Вызываем метод name
console.log(this.name)
// Результат:
// 'Динамика'qs$title
Метод qs$title устанавливает новый заголовок графика.
Пример использования
// Пусть на данный момент заголовком графика является "Динамика"
// Меняем заголовок графика на "Динамика за год" и выводим в консоль
this.qs$title = 'Динамика за год'
console.log(this.qs$title)
// Результат:
// 'Динамика за год'qs$dashboardTitle
Метод qs$dashboardTitle возвращает текущий заголовок дашборда.
Пример использования
// Пусть на данный момент заголовком графика является "Показатели"
// Вызываем метод qs$dashboardTitle
console.log(this.qs$dashboardTitle)
// Результат:
// 'Показатели'qs$dashboardTitle
Метод qs$dashboardTitle устанавливает новый заголовок дашборда.
Пример использования
// Пусть на данный момент заголовком графика является "Показатели"
// Меняем заголовок графика на "Показатели по Отделам" и выводим в консоль
this.qs$dashboardTitle = 'Показатели по Отделам'
console.log(this.qs$dashboardTitle)
// Результат:
// 'Показатели по Отделам'setOnChartClick
Метод setOnChartClick устанавливает обработчик события клика на график.
Параметры
handleClick(обязательный, функция): Функция, которая будет вызвана при клике на график.
Пример использования
// Предположим, у нас есть функция handleClick, которую мы хотим использовать в качестве обработчика клика на графике
// Устанавливаем обработчик клика на графике
this.setOnChartClick(handleClick)
// Короткие функции можно передавать непосредственно при вызове метода:
this.setOnChartClick(() => console.log('Вы нажали на график'))setOnChartDblClick
Метод setOnChartDblClick устанавливает обработчик события двойного клика на график.
Параметры
handleClick(обязательный, функция): Функция, которая будет вызвана при двойном клике на график.
Пример использования
// Предположим, у нас есть функция handleClick, которую мы хотим использовать в качестве обработчика двойного клика на графике
// Устанавливаем обработчик двойного клика на графике
this.setOnChartDblClick(handleClick)
// Короткие функции можно передавать непосредственно при вызове метода:
this.setOnChartDblClick(() => console.log('Вы дважды нажали на график'))setOnChartDataZoom
Метод setOnChartDataZoom устанавливает обработчик события изменения масштаба данных на графике.
Параметры
handleDataZoomChange(обязательный, функция): Функция, которая будет вызвана при изменении масштаба данных на графике.
Пример использования
// Предположим, у нас есть функция handleDataZoomChange, которую мы хотим использовать в качестве изменения масштаба данных на графике
// Устанавливаем обработчик изменения масштаба данных на графике
this.setOnChartDataZoom(handleDataZoomChange)
// Короткие функции можно передавать непосредственно при вызове метода:
this.setOnChartDataZoom(() => console.log('Вы изменили масштаб данных на графике'))openLink
Метод openLink открывает новую вкладку браузера с указанным URL-адресом.
Параметры
link(обязательный, строка): URL-адрес, который необходимо открыть в новой вкладке браузера.
Пример использования
// Вызываем метод openLink, чтобы открыть URL-адрес в новом окне браузера
this.openLink('https://example.com')navigateTo
Метод navigateTo открывает в новой вкладке дашборд с указанным системным именем.
Параметры
navigateTo(обязательный, строка): Системное имя дашборда, на который вы хотите перейти.globalFilters(необязательный, массив): Массив глобальных фильтров, которые будут применены на дашборде, на который вы переходите.external(необязательный, boolean): Флаг, который определяет, будет ли новый дашборд всегда открываться в новой вкладке. Если целевой дашброд уже открыт в одной из вкладок Дизайнера дашбордов, то при установленном значенииfalse, откроется уже существующая вкладка, иначе - будет создана новая.
Пример использования
// Предположим, на платформе есть дашборд с системным именем "test_dashboard"
// Вызываем метод navigateTo для перехода на этот дашборд
this.navigateTo('test_dashboard', [{ field: 'date', value: '2024-01-01' }, { field: 'category', value: 'продажи' }])Разное
| Метод | Пример |
|---|---|
| sendMessage: @Param string text @Param Object options: { string severity, string summary } | this.sendMessage("Сообщение", { severity: "warn", summary: "Внимание" }) |
| _messageService.add: @Param Object options: {string severity, string summary, string detail, boolean sticky } | this._messageService.add({ severity: "info", summary: "Внимание", detail: "Сообщение", sticky: true }) |
sendMessage
Метод sendMessage используется для отображения всплывающих сообщений в правом нижнем углу дашборда.
Параметры
-
text(обязательный): Строка, содержащая текст сообщения, которое будет отображаться во всплывающем окне. -
options(необязательный): Объект, содержащий дополнительные параметры для настройки внешнего вида и поведения всплывающего сообщения. Этот параметр позволяет указать уровень серьезности и настроить заголовок всплывающего окна.-
severity(необязательный): Указывает уровень серьезности сообщения. Он определяет визуальный стиль и иконку, связанную с сообщением. Возможные значения:errorдля сообщений об ошибке иwarnдля предупреждений. Если не предоставлен, уровень серьезности по умолчанию устанавливается какerror. -
summary(необязательный): Устанавливает заголовок всплывающего окна. Этот параметр позволяет настроить заголовок, отображаемый над содержимым сообщения. Если не предоставлен, заголовок по умолчанию устанавливается на основе уровня серьезности.
-
Примеры использования
// Отображение сообщения об ошибке с настройками по умолчанию
this.sendMessage("Сообщение об ошибке");
// Отображение предупреждения с пользовательским уровнем серьезности и заголовком
this.sendMessage("Заполните все обязательные поля", { severity: "warn", summary: "Предупреждение" });
// Отображение информационного сообщения с пользовательским заголовком
this.sendMessage("Данные могут подгружаться долго, не переживайте c:", { summary: "Информация" });_messageService.add
Метод _messageService.add напрямую вызывает внутренний сервис сообщений платформы для отображения всплывающих уведомлений в правом нижнем углу дашборда.
Параметры
options(обязательный): Объект, содержащий параметры для настройки внешнего вида и поведения всплывающего сообщения:severity(необязательный): Указывает уровень серьезности сообщения. Определяет визуальный стиль и иконку, связанную с уведомлением. Возможные значения:success,info,warn,error. Если не указано, по умолчанию используетсяerror.summary(необязательный): Заголовок всплывающего окна, который будет отображаться над основным текстом.detail(необязательный): Основной текст уведомления, который отобразится во всплывающем окне.sticky(необязательный): Определяет, будет ли уведомление закрываться автоматически (false) или оставаться закреплённым (true).
Пример использования
// Отображение сообщения с предупреждением, заголовком и основным текстом
this._messageService.add({
severity: "warn",
summary: "Предупреждение",
detail: "Произошла ошибка",
sticky: true
});