Substituir mensagens de erro padrão
Você pode ocultar as mensagens de erro padrão da análise inserida do Power BI em relatórios e, em vez disso, mostrar mensagens de erro personalizadas que se ajustem ao design do aplicativo.
Por exemplo, você pode substituir essa caixa de diálogo de erro padrão:
Com esta caixa de diálogo de erro personalizada:
Como substituir erros
Para usar mensagens de erro personalizadas, primeiro oculte as mensagens de erro padrão da análise inserida do Power BI definindo a propriedade hideErrors powerbi.embed(element, config)
também inclui outras configurações e opções. Para obter mais informações, consulte Definir configurações de relatório.
let config = {
type: 'report',
tokenType: models.TokenType.Embed,
accessToken: accessToken,
embedUrl: embedUrl,
id: embedReportId,
permissions: permissions,
settings: {
hideErrors: true
}
};
Quando você oculta as mensagens de erro padrão, as caixas de diálogo de erro e as mensagens não aparecem mais se ocorrerem erros. Para que os usuários do aplicativo obtenham respostas consistentes e úteis quando ocorrem erros, você é responsável por lidar com eventos de erro.
Para lidar com erros, primeiro obtenha os erros escutando no evento error
:
report.off("error");
report.on("error", function(event) {
// Handle errors
});
A propriedade level
na interface IError permite especificar quais tipos de erros manipular:
interface IError {
message: string;
detailedMessage?: string;
errorCode?: string;
level?: TraceType;
technicalDetails?: ITechnicalDetails;
}
enum TraceType {
Information = 0,
Verbose = 1,
Warning = 2,
Error = 3,
ExpectedError = 4,
UnexpectedError = 5,
Fatal = 6,
}
Fatal
erros são o tipo de erro mais grave, pois não respondem ao relatório. Certifique-se de lidar com Fatal
erros para impedir que os usuários finais enfrentem relatórios sem resposta ou interrompidos sem mensagens de erro.
Exemplo
O exemplo de código a seguir demonstra como você pode substituir erros ouvindo e tratando eventos de error
. O exemplo não mostra as funções newAccessToken
ou error.detailedMessage
. Implemente suas próprias funções quando indicado.
// Embed the loadConfiguration that hides the default errors.
let config = {
type: 'report',
tokenType: models.TokenType.Embed,
accessToken: accessToken,
embedUrl: embedUrl,
id: embedReportId,
permissions: permissions,
settings: {
hideErrors: true
}
};
// Get a reference to the embedded report HTML element.
let embedContainer = $('#embedContainer')[0];
// Embed the report and display it within the div container.
let report = powerbi.embed(embedContainer, config);
// Set report.off to remove any pre-existing error event handler.
report.off("error");
// Set report.on to add the new error event handler.
report.on("error", function(event) {
const error = event.detail;
// If the error level isn't Fatal, log the error and continue.
if (error.level !== models.TraceType.Fatal) {
console.error(error);
return;
}
// If the Fatal error is TokenExpired, refresh the token.
if (error.message === models.CommonErrorCode.TokenExpired) {
// Implement your own function here.
let newAccessToken = refreshToken();
// Set the new access token.
report.setAccessToken(newAccessToken);
} else {
// If the error isn't TokenExpired, show the custom
// dialog with detailed error message in the iframe.
// Implement your own function here.
showError(error.detailedMessage);
}
});