Usare l'incorporamento in più fasi
Le API di analisi incorporata di Power BI powerbi.load
e report.render
possono migliorare l'esperienza degli utenti finali offrendo agli sviluppatori maggiore flessibilità per l'incorporamento dei report in più fasi.
In genere, si carica un report incorporato usando powerbi.embed
:
let report = powerbi.embed(embedContainer, embedConfig);
Il report incorporato carica ed esegue il rendering nell'interfaccia utente. L'utente finale visualizza quindi tutte le interazioni con il report sottoposto a rendering. Ad esempio, se si applica uno stato del filtro dei dati, l'utente finale vede che il filtro dei dati diventa effettivo dopo il rendering del report.
Per nascondere queste interazioni agli utenti finali, le API powerbi.load
e report.render
suddividere il processo di incorporamento in fasi. La funzione powerbi.load
carica il report in modo da poter interagire con gli elementi prima che gli utenti finali visualizzino i risultati. La funzione report.render
visualizza quindi il report.
Carico
La funzione powerbi.load
carica il report ma non lo esegue, quindi le interazioni possono verificarsi prima che l'utente finale visualizzi i risultati. Ad esempio, è possibile usare powerbi.load
con report.getPages
e quindi specificare quale pagina visualizzare l'utente finale. In alternativa, è possibile usare page.getVisuals
e quindi decidere quali oggetti visivi visualizzare o nascondere.
Come powerbi.embed
, la funzione powerbi.load
richiede un elemento HTML e un oggetto IEmbedConfiguration.
Al termine del caricamento, viene generato un evento 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() {
...
});
Rendere
Se si usa powerbi.load
, è necessario chiamare la funzione report.render
nella funzione del gestore eventi loaded
, dopo aver eseguito il codice. Usare report.render
per continuare il rendering del report e visualizzare il report incorporato.
Un evento rendered
viene generato al termine del rendering del report.
report.on('loaded', function() {
report.render();
});
report.on('rendered', () => {
...
});
Per altre informazioni sulla gestione degli eventi, vedere Come gestire gli eventi.
Esempio
Nell'esempio di codice seguente viene caricato un report, vengono impostati i filtri e quindi viene eseguito il rendering del report filtrato.
// 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();
});
Considerazioni e limitazioni
L'incorporamento in più fasi può rallentare il rendering del report, quindi assicurarsi di usarlo correttamente e solo quando è necessario.
È possibile chiamare le API seguenti dopo aver caricato il report e prima di chiamare report.render
:
Metodo | Azione |
---|---|
BookmarksManager.getBookmarks, BookmarksManager.apply | Ottenere e applicare segnalibri. L'acquisizione di segnalibri non è supportata. |
report.updateSettings | Aggiornare le impostazioni del report. |
Report.applyTheme | Applicare il tema del report. |
Report.getFilters, Report.setFilters, Report.removeFilters | Ottenere, impostare e rimuovere i filtri del report. |
Report.getPages | Ottenere le pagine del report. |
Page.setActive | Impostare la pagina del report attiva. |
Page.getFilters, Page.setFilters, Page.removeFilters | Ottenere, impostare e rimuovere filtri di pagina. |
Page.getVisuals | Ottenere oggetti visivi di pagina. |
Visual.getFilters, Visual.setFilters, Visual.removeFilters | Ottenere, impostare e rimuovere filtri visivi. |
Visual.getSlicerState, Visual.setSlicerState | Ottenere e impostare lo stato del filtro dei dati visivo. |