克隆视觉对象

克隆视觉对象 API 将特定视觉对象克隆到 Power BI 报表的活动页中。 可以将报表中的任何页面的视觉对象克隆到活动页。 通过克隆视觉对象,可以使用原始视觉对象中的不同布局或筛选器创建副本。

如何克隆视觉对象

Power BI 客户端 VisualDescriptor 类,将 clone 方法定义为:

clone(request: models.ICloneVisualRequest = {}): Promise<ICloneVisualResponse>

ICloneVisualRequest 接口中:

  • IFilter 描述要应用于克隆视觉对象的筛选器。
  • IVisualLayout 定义克隆的视觉对象的大小和位置。
  • autoFocus 属性确定创建后是否将焦点放在克隆的视觉对象上。

ICloneVisualResponse 接口返回新的克隆视觉名称或唯一标识符。

interface ICloneVisualRequest {
  // The filters to apply to the new visual. Default: source visual filters.
  filters?: IFilter[];

  // The layout to apply to the new visual.
  // Default: a best effort to put the new visual in an empty space on the canvas.
  layout?: IVisualLayout;

  // Focus on the new visual after creation.
  // If autoFocus is set to false, no scrolling will occur.
  // Default: true.
  autoFocus?: boolean;
}

interface ICloneVisualResponse {
  // New visual name.
  visualName: string;
}

若要获取报表中所有视觉对象的列表,请使用 类的 Page 方法。

例子

第一个代码示例使用默认设置克隆视觉对象。 新视觉对象的位置和大小表示最好地将视觉对象放入画布上的空白空间。 若要指定位置和大小,请使用第二个示例。

    let clonedVisual = await visual.clone();
    console.log(clonedVisual.name);

第二个示例克隆到具有特定布局的新视觉对象,在创建后不会专注于新视觉对象。

    let cloneRequest = {
        layout: { 
            height: 300, 
            width: 600,
            x: 150, 
            y: 250 
        },
        autoFocus: false
    };

    let clonedVisual = await visual.clone(cloneRequest);
    console.log(clonedVisual.name);

第三个代码示例克隆到具有特定布局和新筛选器的新视觉对象。

    const basicFilter = {
      $schema: "http://powerbi.com/product/schema#basic",
      target: {
        table: "Store",
        column: "Count"
      },
      operator: "In",
      values: [1, 2, 3, 4],
      filterType: models.FilterType.BasicFilter
    };

    let cloneRequest = {
        layout: { x: 150, y: 250 },
        filters: [basicFilter]
    };

    let clonedVisual = await visual.clone(cloneRequest);
    console.log(clonedVisual.name);

注意事项和限制

仅当报表完全呈现时,才能克隆视觉对象,因此请在调用克隆视觉 API 之前等待 rendered 事件。