视觉对象 API
- 版本 :2023.1(当前版本)
视觉对象 API
所有视觉对象都以实现 IVisual
接口的类开头。 只要有一个实现 IVisual
接口的类,你就可以按需命名这个类。
备注
视觉对象类名称必须与 pbiviz.json
文件中的 visualClassName
相同。
视觉对象类应实现以下方法,如以下示例所示:
constructor,一个初始化视觉对象状态的标准构造函数
update,用于更新视觉对象的数据
getFormattingModel,返回填充属性窗格(格式设置选项)的格式设置模型,可根据需要在窗格中修改这些属性
destroy,一个用于清理的标准析构函数
TypeScript复制
class MyVisual implements IVisual {
constructor(options: VisualConstructorOptions) { //one time setup code goes here (called once)
}
public update(options: VisualUpdateOptions): void { //code to update your visual goes here (called on all view or data changes)
} public getFormattingModel(): FormattingModel { // returns modern format pane formatting model that contain all format pane components and properties (called on opening format and analytics pane or on editing format properties)
}
public destroy(): void { //one time cleanup code goes here (called once)
}
}
构造函数
在实例化视觉对象时,将调用视觉对象类的 constructor
。 它可用于视觉对象所需的任何设置操作。
TypeScript复制
constructor(options: VisualConstructorOptions)
VisualConstructorOptions
element: HTMLElement
,对将包含视觉对象的 DOM 元素的引用host: IVisualHost
,可用于与视觉对象主机 (Power BI) 进行交互的属性和服务的集合IVisualHost
包含以下服务:createSelectionIdBuilder
,生成并存储视觉对象中可选项目的元数据createSelectionManager
,创建用于在选择状态更改时通知视觉对象主机的通信桥,具体请参阅选择 API。createLocalizationManager
,生成一个管理器来帮助进行本地化allowInteractions: boolean
,一个布尔标志,用于确定视觉对象是否是交互式的applyJsonFilter
,应用特定的筛选器类型,请参阅筛选器 APIpersistProperties
,允许用户创建持久设置并将其与视觉对象定义一起保存,使其在下次重载时可用eventService
,返回一个事件服务来支持 Render 事件storageService
,返回一个服务,以帮助在视觉对象中使用本地存储authenticationService
,生成一个服务以帮助用户进行身份验证tooltipService
,返回一个工具提示服务,以帮助在视觉对象中使用工具提示launchUrl
,帮助在下一个选项卡中启动 URLlocale
,返回一个区域设置字符串,请参阅本地化instanceId
,返回一个字符串来识别当前的视觉对象实例colorPalette
,返回为数据应用颜色所需的 colorPalettefetchMoreData
,支持使用超过标准限制(1000 行)的数据,请参阅提取更多数据switchFocusModeState
,帮助更改焦点模式状态TypeScript复制
export interface IVisualHost extends extensibility.IVisualHost {
createSelectionIdBuilder: () => visuals.ISelectionIdBuilder;
: () => ISelectionManager;
colorPalette: ISandboxExtendedColorPalette;
persistProperties: (changes: VisualObjectInstancesToPersist) => void;
applyJsonFilter: (filter: IFilter[] | IFilter, objectName: string, propertyName: string, action: FilterAction) => void;
tooltipService: ITooltipService;
telemetry: ITelemetryService;
authenticationService: IAuthenticationService;
locale: string;
allowInteractions: boolean;
launchUrl: (url: string) => void;
fetchMoreData: () => boolean;
instanceId: string;
refreshHostData: () => void;
createLocalizationManager: () => ILocalizationManager;
storageService: ILocalVisualStorageService;
eventService: IVisualEventService;
switchFocusModeState: (on: boolean) => void;
}
update
所有视觉对象都必须实现一个公共更新方法,每当数据或主机环境发生变化时,就会调用该方法。
TypeScript复制
public update(options: VisualUpdateOptions): void
VisualUpdateOptions
viewport: IViewport
,应在其中呈现视觉对象的视区的尺寸dataViews: DataView[]
,它是包含呈现视觉对象所需的所有数据的数据视图对象(视觉对象通常使用 DataView 下的分类属性)type: VisualUpdateType
,它是用于指示要更新的数据类型 (Data | Resize | ViewMode | Style | ResizeEnd) 的标志viewMode: ViewMode
,它是用于指示视觉对象的视图模式 (View | Edit | InFocusEdit) 的标志editMode: EditMode
,它是用于指示视觉对象的编辑模式(“默认” | “高级”)的标志(如果视觉对象支持 AdvancedEditMode,则它应仅在“editMode”设置为“高级”时,呈现其高级 UI 控件,请参阅 AdvancedEditMode)operationKind?: VisualDataChangeOperationKind
,它是用于指示数据更改类型(“创建” | “追加”)的标志jsonFilters?: IFilter[]
,应用 json 筛选器的集合isInFocus?: boolean
,指示视觉对象是否处于焦点模式的标志
getFormattingModel(可选)
每次打开属性窗格或用户编辑窗格中的任何属性时,都会调用此方法。 它返回 FormattingModel,其中包含关于属性窗格设计、层次结构、属性和最新格式值的所有信息。
TypeScript复制
getFormattingModel(): visuals.FormattingModel;
destroy(可选)
卸载视觉对象时,将调用销毁函数,该函数可用于清理任务,例如删除事件侦听器。
TypeScript复制
public destroy(): void
提示
Power BI 通常不调用 destroy
,因为删除包含视觉对象的整个 IFrame 更快。