Как добавить дашборд во внешний портал через iframe:
Копируем ссылку на дашборд: в Dashboard Designer на вкладке Главная выбираем Ссылка – Дашборд.
В HTML внешнего портала вставляем код
Блок кода language xml <iframe src="XXX" style="position: absolute; height: 100%; width: 100%; border: none;"></iframe>
,где XXX это ссылка на дашборд.
Как скрыть панель верхнюю:
Копируем ссылку на дашборд: в Dashboard Designer на вкладке Главная выбираем Ссылка – Дашборд.
В ссылке вместо showNav=true пишем showNav=false.
Как выбрать конкретный лист (по умолчанию):
Копируем ссылку на лист: в Dashboard Designer на вкладке Главная выбираем Ссылка – Текущий лист.
В скопированной ссылке в конце добавляем &showNav=true.
Как выбрать конкретный лист (из внешнего портала):
С помощью JavaScript найти нужный элемент iframe и в нем клик по листу с помощью: getElementById("IFRAME_ID").contentWindow.document.getElementById("va-sheet-tabs").children[LIST_INDEX].click(), где IFRAME_ID – это id элемента iframe, а LIST_INDEX – это номер листа, который нужно выбрать (0 – это первый лист, 1 – это второй, 2 – третий и т.д.)
Как из внешнего портала установить фильтр:
С помощью JavaScript найти нужный элемент iframe и в нем вызывать функцию через VisApi: getElementById("IFRAME_ID").contentWindow.visApi().setFilterSelectedValues(“WIDGET_ID”, [[“VALUE”]]);, где IFRAME_ID – это id элемента iframe, WIDGET_ID – это id виджета, в котором нужно установить фильтр, VALUE – это значение.
Как подписаться на событие изменение фильтра и передать во внешний портал
Подписаться на изменение фильтра можно с помощью функции-подписки:
visApi().onSelectedValuesChangedListener({guid: "XXX", widgetGuid: "YYY" }, function (event) {
// посылаем сообщение во внешний портал, об изменения выбранного значения в фильтре
window.parent.postMessage({ message: "filter_changed", event: event }, "*");
});
, где XXX – это случайный уникальный guid события, а YYY – это ID виджета, на который хотим подписаться.
Во внешнем портале с помощью JavaScript подписываемся на получение сообщения об изменении фильтра: addEventListener("message", function(event) {
if (event.data != null && event.data.message === "filter_changed") {
var selectedValues = event.data.event.selectedValues; // выбранные значения
}
});