Встраивание виджетов в HTML
-
Автоматическое встраивание панелей визуализаций и виджетов в Web-страницы сторонних сайтов осуществляется загрузочным скриптом(JavaScript бутстрапом), который необходимо встроить в тело HTML страницы тегом
<script>
),<script type="text/javascript" src="https://cubisio.online/datacube/api/WidgetController.jsb"> </script>
Скрипт выполняет встраивание виджета внутрь
<div>
контейнера, если задан атрибутjsb="DataCube.Api.Widget"
.<div id="myWidgetContainer" jsb="DataCube.Api.Widget" wsid="b7b26ecd6f48692c61475f5e14b8c89c" wid="357e8cb6a0c388786b7ab40e8539c011" auto="true" oncreatewidget="function(widget){ console.log(widget); }" onmessage="function(msg, data){ ... }"> </div>
Параметры встраиваемого виджета:
jsb
- название бина jsBeans, управляющего встроенным виджетом;wsid
- идентификатор рабочей области пользователя;wid
- идентификатор виджета;auto
- флаг автоматического запуска отрисовки виджета после инициализации;oncreatewidget
- функция обработчик события создания виджета;onmessage
- функция обработчик событий виджета.
Методы для управления встраиваемым виджетом:
-
Получение контейнера (объекта с API) управления виджетами -
widgetContainer = JSB.getInstance(containerBeanName)
, где:containerBeanName
- имя бина контейнера виджетов;widgetContainer
- возвращаемое значение, объект контейнера виджетов.
-
Асинхронное получение объекта виджета (c API управления) -
widgetContainer.lookupWidget(widgetId, widgetCallback)
, где:widgetContainer
- объект контейнера виджетов;widgetId
- уникальный идентификатор виджета;widgetCallback
- callback-функция, первым аргументом которой передается объект виджета (объет с API управления виджетом) -function(widget){...}
;widget
- объект виджета.
JSB.getInstance('DataCube.Api.WidgetController') .lookupWidget('357e8cb6a0c388786b7ab40e8539c011', function(widget){ ... });
-
Обновление и перерисовка виджета -
widget.refresh()
, где:widget
- объект виджета.
-
Обновление и перерисовка всех виджетов на странице с учетом изменённого глобального фильтра -
widget.refreshAll()
, где:widget
- объект виджета.
-
Установка сортировки данных, используемых виджетом -
widget.setSort(sort)
, где:sort
- параметры сортировки в форме JSON объекта{fieldName: sortType, ...}
;fieldName
- имя поля;sortType
- тип сортировки (1
- по возрастанию;-1
- по убыванию).
-
Добавление условия фильтрации -
filterId = widget.addFilter(filterDesc)
, где:widget
- объект виджета;filterDesc
- объект описания условия фильтрации по полю в формате{ "type": filterType, "op": comparationOperator, "field": fieldName, "value": filterValue, }
;filterType
- логический оператор фильтрации (одно из значений:$or
,$and
);comparationOperator
- оператор сравнения поля среза (одно из значений:$eq
,$ne
,$lt
,$lte
,$gt
,$gte
,$like
, `$ilike``);fieldName
- имя поля для фильтрации;filterValue
- значение для фильтрации;filterId
- возвращаемое значение, идентификатор фильтра.
var myFilterId = widget.addFilter({ type: '$and', // логический оператор фильтра op: '$lte', // оператор сравнения поля среза field: 'count', // название поля среза value: 1 // значение });
-
Удаление фильтра -
widget.removeFilter(filterId)
, где:widget
- объект виджета;filterId
- идентификатор фильтра.
-
Проверка на существование подобного фильтра -
filterExists = widget.hasFilter(filterDesc)
, где:widget
- объект виджета;filterDesc
- объект описания условия фильтрации (формат см. методaddFilter
);filterExists
- возвращаемое булево значение (истина, если фильтр задан).
-
Удаление всех фильтров -
widget.clearFilters()
, где:widget
- объект виджета.
-
Асинхронное получение объекта панели визуализации, на которой размещен виджет (c API управления панелью) -
dashboard = widget.getDashboard()
, где:widget
- объект виджета;dashboard
- возвращаемое значение, объект панели визуализации.
-
Перечисление всех виджетов, размещенных на панели визуализации -
dashboard.enumWidgets(widgetsCallback)
, где:dashboard
- объект панели визуализации;widgetsCallback
- callback-функция, которой первым аргументом передается объект с виджетами -function(idWidgetMap){...}
,idWidgetMap
- объект с виджетами, сопоставление идентификаторов и объектов виджетов{widgetId: widget, ...}
;widgetId
- уникальный идентификатор виджета;widget
- объект виджета.
dashboard.enumWidgets(function(wMap){ for(var wId in wMap){ console.log(wId + ':' + wMap[wId].getName()); } });