Klonowanie wizualizacji

Klonowanie interfejsu API wizualizacji klonuje konkretną wizualizację do aktywnej strony raportu usługi Power BI. Wizualizację można sklonować z dowolnej strony w raporcie do aktywnej strony. Klonowanie wizualizacji umożliwia tworzenie kopii z różnymi układami lub filtrami z oryginalnej wizualizacji.

Jak sklonować wizualizację

Klasa klienta usługi Power BI VisualDescriptor definiuje metodę jako:

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

W interfejsie ICloneVisualRequest:

  • IFilter opisuje filtry, które mają być stosowane do sklonowanej wizualizacji.
  • IVisualLayout definiuje rozmiar i lokalizację sklonowanej wizualizacji.
  • Właściwość autoFocus określa, czy po utworzeniu należy skoncentrować się na sklonowanej wizualizacji.

Interfejs ICloneVisualResponse zwraca nową sklonowaną nazwę wizualizacji lub unikatowy identyfikator.

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

Aby uzyskać listę wszystkich wizualizacji w raporcie, użyj metody getVisuals klasy Page.

Przykłady

Pierwszy przykład kodu klonuje wizualizację z ustawieniami domyślnymi. Pozycja i rozmiar nowej wizualizacji reprezentują najlepsze wysiłki, aby umieścić wizualizację w pustym miejscu na kanwie. Aby określić położenie i rozmiar, użyj drugiego przykładu.

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

Drugi przykład klonuje do nowej wizualizacji z określonym układem i nie koncentruje się na nowej wizualizacji po utworzeniu.

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

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

Trzeci przykład kodu klonuje do nowej wizualizacji z określonym układem i nowymi filtrami.

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

Zagadnienia i ograniczenia

Wizualizację można sklonować tylko wtedy, gdy raport jest w pełni renderowany, więc poczekaj na zdarzenie rendered przed wywołaniem interfejsu API klonowania wizualizacji.