Clonare un oggetto visivo

L'API Clona oggetto visivo clona un oggetto visivo specifico nella pagina attiva di un report di Power BI. È possibile clonare un oggetto visivo da qualsiasi pagina del report nella pagina attiva. La clonazione di un oggetto visivo consente di creare copie con layout o filtri diversi dall'oggetto visivo originale.

Come clonare un oggetto visivo

Il client di Power BI visualDescriptor classe definisce il metodo clone come:

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

Nell'interfaccia ICloneVisualRequest :

  • IFilter descrive i filtri da applicare all'oggetto visivo clonato.
  • IVisualLayout definisce le dimensioni e la posizione dell'oggetto visivo clonato.
  • La proprietà autoFocus determina se concentrarsi sull'oggetto visivo clonato dopo la creazione.

L'interfaccia ICloneVisualResponse restituisce il nuovo nome visivo clonato o l'identificatore univoco.

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

Per ottenere un elenco di tutti gli oggetti visivi in un report, usare il metodo getVisuals della classe Page.

Esempi

Il primo esempio di codice clona un oggetto visivo con le impostazioni predefinite. La posizione e le dimensioni del nuovo oggetto visivo rappresentano uno sforzo ottimale per inserire un oggetto visivo in uno spazio vuoto nell'area di disegno. Per specificare la posizione e le dimensioni, usare il secondo esempio.

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

Il secondo esempio clona in un nuovo oggetto visivo con un layout specifico e non si concentra sul nuovo oggetto visivo dopo la creazione.

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

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

Il terzo esempio di codice clona in un nuovo oggetto visivo con un layout specifico e nuovi filtri.

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

Considerazioni e limitazioni

È possibile clonare un oggetto visivo solo se il rendering del report è stato eseguito completamente, quindi attendere l'evento rendered prima di chiamare l'API Clona oggetto visivo.