Использование поэтапного внедрения
Api встроенной аналитики Power BI powerbi.load
и report.render
могут улучшить взаимодействие с конечными пользователями, предоставив разработчикам больше гибкости для внедрения отчетов на этапе.
Как правило, вы загружаете внедренный отчет с помощью powerbi.embed
:
let report = powerbi.embed(embedContainer, embedConfig);
Внедренный отчет загружает и отрисовывается в пользовательском интерфейсе. Затем конечный пользователь видит любые взаимодействия с отрисованным отчетом. Например, если применить состояние среза, конечный пользователь увидит, что срез вступают в силу после отрисовки отчета.
Чтобы скрыть эти взаимодействия от конечных пользователей, api-интерфейсы powerbi.load
и report.render
разбивают процесс внедрения на этапы. Функция powerbi.load
загружает отчет, чтобы вы могли взаимодействовать с элементами, прежде чем конечные пользователи увидят результаты. Затем функция report.render
отображает отчет.
Груз
Функция powerbi.load
загружает отчет, но не отображает его, поэтому взаимодействие может произойти до того, как конечный пользователь увидит результаты. Например, можно использовать powerbi.load
с report.getPages
, а затем указать, какая страница будет отображаться конечным пользователем. Кроме того, можно использовать page.getVisuals
, а затем решить, какие визуальные элементы будут отображаться или скрываться.
Как и powerbi.embed
, для функции powerbi.load
требуется элемент HTML и объект IEmbedConfigur ation.
По завершении загрузки событие 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() {
...
});
Передавать
Если вы используете 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 | Получение и настройка состояния визуального среза. |