Клонирование визуального элемента

Клонирование визуального API клонирует определенный визуальный элемент на активную страницу отчета Power BI. Вы можете клонировать визуальный элемент из любой страницы отчета на активную страницу. Клонирование визуального элемента позволяет создавать копии с различными макетами или фильтрами из исходного визуального элемента.

Клонирование визуального элемента

Класс клиента Power BI Client VisualDescriptor определяет метод следующим образом:

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;
}

Чтобы получить список всех визуальных элементов в отчете, используйте метод getVisuals класса 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);

Рекомендации и ограничения

Клонировать визуальный элемент можно только в том случае, если отчет полностью отрисован, поэтому дождитесь события rendered перед вызовом Клонированного визуального API.