Поэтапное внедрение
Встроенная аналитика powerbi.load
и report.render
API Power BI может улучшить взаимодействие с конечными пользователями, предоставляя разработчикам большую гибкость при поэтапном внедрении отчетов.
Как правило, внедренный отчет загружается с помощью powerbi.embed
:
let report = powerbi.embed(embedContainer, embedConfig);
Внедренный отчет загружается и отображается в пользовательском интерфейсе. Затем конечный пользователь видит все взаимодействия с отчетом, отображаемым для просмотра. Например, если вы применяете состояние среза, конечный пользователь увидит, что срез вступит в силу после подготовки отчета к просмотру.
Чтобы скрыть эти взаимодействия от конечных пользователей, powerbi.load
API и report.render
разбивают процесс внедрения на этапы. Функция powerbi.load
загружает отчет, чтобы вы могли взаимодействовать с элементами до того, как конечные пользователи увидят результаты. Затем report.render
функция отображает отчет.
Загрузить
Функция powerbi.load
загружает отчет, но не отображает его, поэтому взаимодействие может произойти до того, как конечный пользователь увидит результаты. Например, можно использовать powerbi.load
с report.getPages
, а затем указать страницу для отображения конечного пользователя. Или можно использовать page.getVisuals
, а затем выбрать визуальные элементы для отображения или скрытия.
Как и powerbi.embed
, powerbi.load
для функции требуется элемент HTML и объект IEmbedConfiguration .
После завершения загрузки возникает loaded
событие.
let config = {
...
};
// Get a reference to the embedded report HTML element.
let embedContainer = $('#embedContainer')[0];
// Load the report in the container.
let report = powerbi.load(embedContainer, config);
report.on('loaded', function() {
...
});
Render
При использовании powerbi.load
необходимо вызвать функцию report.render
в функции обработчика loaded
событий после выполнения кода. Используйте для report.render
продолжения подготовки отчета к просмотру и отображения внедренного отчета.
Событие rendered
срабатывает после завершения подготовки отчета к просмотру.
report.on('loaded', function() {
report.render();
});
report.on('rendered', () => {
...
});
Дополнительные сведения об обработке событий см. в разделе Обработка событий.
Пример
В следующем примере кода выполняется загрузка отчета, установка фильтров, а затем отрисовка отфильтрованного отчета.
// Build the config object.
let config = {
type: 'report',
tokenType: TokenType.Embed,
accessToken: ...,
embedUrl: ...,
id: ...,
...
};
// Get a reference to the embedded report HTML element.
let embedContainer = $('#embedContainer')[0];
// Load the report in the container.
let report = powerbi.load(embedContainer, config);
...
report.on('loaded', async () => {
await report.setFilters(filters);
report.render();
});
Ограничения
Поэтапное внедрение может замедлить подготовку отчета, поэтому используйте его правильно и только тогда, когда это необходимо.
Вы можете вызвать следующие API после загрузки отчета и перед вызовом report.render
:
Метод | Действие |
---|---|
BookmarksManager.getBookmarks, BookmarksManager.apply | Получение и применение закладок. Запись закладок не поддерживается. |
Report.updateSettings | Обновление параметров отчета. |
Report.applyTheme | Примените тему отчета. |
Report.getFilters, Report.setFilters, Report.removeFilters | Получение, установка и удаление фильтров отчетов. |
Report.getPages | Получение страниц отчета. |
Page.setActive | Задайте активную страницу отчета. |
Page.getFilters, Page.setFilters, Page.removeFilters | Получение, установка и удаление фильтров страниц. |
Page.getVisuals | Получение визуальных элементов страницы. |
Visual.getFilters, Visual.setFilters, Visual.removeFilters | Получение, установка и удаление визуальных фильтров. |
Visual.getSlicerState, Visual.setSlicerState | Получение и установка состояния визуального среза. |