Автоматическое встраивание панелей визуализаций и виджетов в 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());
}
});