向视觉对象添加显示警告图标
在 Power BI 视觉对象中,显示警告图标可以通知用户可能的问题或错误。 在许多情况下,显示警告图标可能很有用,例如:
当值超出纬度或经度有效范围时,地图视觉对象可以显示警告图标。
饼图视觉对象在显示与正值混合的负值时可以显示警告图标。
计算无穷大值时,笛卡尔图可以显示警告图标。 例如,如果 Y 为零,当 X 除以 Y 时,结果为无穷大。
当图标出现时,用户可以将鼠标悬停在该图标上,以查看警告消息的标题。
当用户选择警告图标时,弹出窗口中会显示一条描述问题的消息。
创建警告图标
你可以创建一个警告图标,使其包含针对自定义视觉对象的自定义消息。 是否引发警告图标由你决定。 如以下示例所示,当显示警告图标时,视觉对象将继续发挥作用。
添加对更新方法的调用
若要将显示警告图标添加到视觉对象上,请调用 displayWarningIcon
方法。 该方法是 IVisualHost
的一部分,使用 powerbi-visuals-api
公开。
将以下导入添加到文件:
import powerbiVisualsApi from "powerbi-visuals-api";
添加导入内容后,再添加一个条件,用于确定何时显示警告图标。 请使用本文中的示例来查看两个可选条件。
示例 1:检查语言兼容性
本地化用于显示客户母语的视觉对象,该语言取决于操作系统的设置。
在此示例中,视觉对象会将视觉对象的语言(设置为美式英语)与操作系统的语言进行比较。 如果语言不匹配,将显示警告图标。
if (this.locale != 'en-US') {
this.host.displayWarningIcon('Language inconsistency', 'This visual supports only US English. For the visual to work as expected, set your browser's language to US English.');
}
示例 2:比较相邻列中的颜色
在此示例中,当相邻的两列具有相同的颜色时,将出现显示警告图标。
getColumnColorByIndex
方法循环访问所有列。 如果两个相邻列具有相同的颜色,则会显示警告图标。
let category = options.dataViews[0].categorical.categories[0];
let dataValue = options.dataViews[0].categorical.values[0];
let colorPalette = this.host.colorPalette;
for (let i = 0, len = Math.max(category.values.length, dataValue.values.length); i < len-1; i++) {
const color1: string = getColumnColorByIndex(category, i, colorPalette);
const color2: string = getColumnColorByIndex(category, i+1, colorPalette);
if (color1 == color2) {
this.host.displayWarningIcon('Adjacent columns have the same color.', 'Columns that are next to each other have the same color. To change a column's color, use the data colors option in the Format tab.');
}
}
注意事项和限制
某些错误和警告不是由视觉对象引起的。 例如,“值太多。未显示所有数据”错误源自 Power BI 服务。 此类错误和警告会在视觉对象的调用之前完成传播。 它们优先于源自视觉对象代码的错误。 如果在加载数据时出现错误,则在运行视觉对象的代码并满足显示警告图标条件之前,视觉对象将显示该错误,而不是显示警告图标错误。
在每次视觉对象呈现时(例如,将新数据拖动到视觉对象中时),都会清除显示警告。 呈现视觉对象后,将调用视觉对象的
update()
方法。 因此,如果基于在更新方法中检查的条件引发视觉对象的警告,则每次呈现该视觉对象时,只要满足条件,便会再次显示该警告。调整视觉对象的大小不会影响警告图标。
以下限制是指显示图标文本:
标题的最大长度为 70 个字符
文本的最大长度为 2000 个字符
文本仅显示为纯文本