#reactjs #powerbi #powerbi-embedded #powerbi-custom-visuals
#reactjs #powerbi #powerbi-встроенный #powerbi-пользовательские визуальные эффекты
Вопрос:
Я использую встроенный пакет power bi для встраивания отчета power bi — https://github.com/microsoft/powerbi-client-react
Отчет встроен в режим редактирования, поэтому пользователь может создавать или редактировать отчет. Теперь у меня есть кнопка сохранения, и как только пользователь внесет изменения в отчет power bi, я хотел бы сохранить отчет в базе данных. Можете ли вы сказать мне, как я могу вызвать событие отчета. Похоже, что разрешенные события сохранения не работают.
Кроме того, если мне нужно получить экземпляр отчета после того, как пользователь внес изменения или создал отчет, как я могу снова получить экземпляр отчета, чтобы отразить новые изменения?
<PowerBIEmbed
embedConfig = {{
type: 'report', // Supported types: report, dashboard, tile, visual and qna
id: '<Report Id>',
embedUrl: '<Embed Url>',
accessToken: '<Access Token>',
tokenType: models.TokenType.Embed,
viewMode: models.ViewMode.Edit,
settings: {
panes: {
filters: {
expanded: false,
visible: false
}
},
background: models.BackgroundType.Transparent,
}
}}
eventHandlers = {
new Map([
['loaded', function () {console.log('Report loaded');}],
['rendered', function () {console.log('Report rendered');}],
['error', function (event) {console.log(event.detail);}]
])
}
cssClassName = { "report-style-class" }
getEmbeddedComponent = { (embeddedReport) => {
this.report = embeddedReport as Report;
}}
/>
Отчет внедряется правильно, но теперь, после того, как кто-то внес изменения, как мне снова получить обновленный экземпляр отчета, чтобы я мог получить визуальные элементы и сохранить его в базе данных?
Ответ №1:
В настоящее время power-client-react не поддерживает создание нового отчета. Но вы можете отредактировать существующий отчет и сохранить его как новый отчет, используя эту библиотеку. Для этого необходимо выполнить следующие шаги:
-
Сгенерировать токен встраивания:
-
Если изменения отчета должны быть сохранены как новый отчет, передайте следующее тело JSON в запросе generate embedded token:
{ "accessLevel": "Edit", "allowSaveAs": "true", }
-
Если изменения отчета должны быть сохранены в том же отчете, передайте следующее тело JSON в запросе generate embedded token:
{ "accessLevel": "Edit", }
-
-
Встроенный отчет — добавьте эти конфигурации в ваш объект embedConfig:
viewMode: models.ViewMode.Edit, permissions: models.Permissions.All,
-
Обработайте «сохраненное» событие:
-
Если изменения отчета должны быть сохранены как новый отчет, добавьте следующий обработчик событий в свою карту EventHandlers, чтобы получить новый идентификатор отчета, а затем внедрите новый отчет, чтобы получить его экземпляр:
['saved', function (event) { var newReportId = event.detail.reportObjectId); }]
-
Если изменения отчета должны быть сохранены в том же отчете, добавьте следующий обработчик событий в свою карту EventHandlers, чтобы убедиться, что изменения были сохранены:
['saved', function (event) { console.log("Report saved"); }]
-
-
Сохраните отчет:
-
Программно: добавьте кнопку сохранения в свое приложение, если вы хотите сохранить изменения при событии нажатия кнопки, и вызовите следующую функцию в прослушивателе щелчков:
-
Если изменения отчета должны быть сохранены как новый отчет
function saveReport() { var saveAsParameters = { name: "<name_of_new_report>" }; this.report.saveAs(saveAsParameters); }
-
Если изменения отчета должны быть сохранены в том же отчете
this.report.save();
-
-
Встроенный интерфейс Power BI:
- Если изменения отчета должны быть сохранены как новый отчет:
- Нажмите на выпадающий список «Файл» в верхнем левом углу> Нажмите «Сохранить как»> Введите имя вашего нового отчета > Нажмите «Сохранить»
- Если изменения отчета должны быть сохранены в том же отчете:
- Нажмите на выпадающий список «Файл» в верхнем левом углу> Нажмите «Сохранить»
- Если изменения отчета должны быть сохранены как новый отчет:
-
Примечание: событие «сохранено» запускается при завершении операции сохранения и возвращает объект Json, содержащий новый идентификатор отчета, имя отчета, старый идентификатор отчета (если он был) и если операция была SaveAs или save. Затем вы можете использовать этот newReportId для создания URL-адреса для встраивания и токена для встраивания отчета и получения экземпляра отчета.
Вы можете обратиться к GitHub wiki, чтобы создать новый отчет.
Найдите полную статью в Microsoft Docs.
Комментарии:
1. Итак, в настоящее время мой экземпляр отчета находится в this.report после встраивания отчета. Итак, что теперь пользователь внес изменения в отчет, например, удалил визуальные элементы и добавил новые визуальные элементы. Будет ли экземпляр this.report содержать все новые изменения, внесенные пользователем?
2. @Anant_Kumar Итак, в настоящее время мой экземпляр отчета находится в this.report после встраивания отчета. Итак, что теперь пользователь внес изменения в отчет, например, удалил визуальные элементы и добавил новые визуальные элементы. Будет ли экземпляр this.report содержать все новые изменения, внесенные пользователем?