Personalizzare un layout di report
Con un layout di report personalizzato, è possibile incorporare un report di Power BI con un layout diverso da quello salvato nel report originale. Quando si definisce un layout di report personalizzato, è possibile variare le dimensioni di una pagina del report e controllare le dimensioni, la posizione e la visibilità degli oggetti visivi nella pagina.
Panoramica del layout personalizzato
Per creare un layout di report personalizzato, definire un oggetto layout personalizzato e passarlo all'oggetto impostazioni in una configurazione di incorporamento.
Nell'oggetto impostazioni impostare layoutType
su models.LayoutType.Custom
e impostare customLayout
sull'oggetto layout personalizzato:
let embedConfig = {
...
settings: {
layoutType: models.LayoutType.Custom
customLayout: {...}
}
};
Per altre informazioni sulle impostazioni del report, vedere Configurare le impostazioni del report.
Come definire un layout di report personalizzato
Ogni layout di report personalizzato è rappresentato da un oggetto layout personalizzato definito per specificare le dimensioni della pagina, la scala dell'area di disegno e il layout delle pagine. All'interno del layout delle pagine è possibile specificare un layout visivo per ogni oggetto visivo e un layout visivo predefinito per il report.
Definizione dell'interfaccia di layout personalizzata
Usare l'interfaccia ICustomLayout
per definire un oggetto layout personalizzato:
interface ICustomLayout {
pageSize?: IPageSize;
displayOption?: DisplayOption;
pagesLayout?: PagesLayout;
}
L'interfaccia ICustomLayout ha le proprietà seguenti:
pageSize
- OggettoIPageSize
che definisce le dimensioni della pagina dell'area canvas per il report.interface IPageSize { type: PageSizeType; }
L'oggetto
IPageSize
usa l'enumerazionePageSizeType
per impostare le dimensioni della pagina:enum PageSizeType { Widescreen, Standard, Cortana, Letter, Custom }
displayOption
- EnumerazioneDisplayOption
che controlla come ridimensionare l'area di disegno per adattarsi alla cornice.enum DisplayOption { FitToPage, FitToWidth, ActualSize }
pagesLayout
- OggettoPagesLayout
che controlla il layout per ogni oggetto visivo in una pagina. Questa proprietà esegue il mapping di un nome di pagina a unPageLayout
oggetto. Per altre informazioni, vedere Definire un layout di pagine.type PagesLayout = { [key: string]: IPageLayout; }
Definire un layout di pagine
Usare l'interfaccia IPageLayout
per definire un oggetto layout di pagine. L'interfaccia consente di definire una mappa di layout visivo, che esegue il mapping di ogni nome visivo a un nuovo oggetto layout e a un layout visivo predefinito. La definizione di un layout di pagine è facoltativa. Se non si fornisce un layout per un report, Power BI applica il layout predefinito al report. Ovvero, il layout predefinito è quello che si applica a tutti gli oggetti visivi che non si specificano nell'oggetto layout di oggetti visivi. Ad esempio, è possibile nascondere inizialmente tutti gli oggetti visivi in un report e quindi visualizzare gli oggetti visivi selezionati nel layout desiderato.
interface IPageLayout {
defaultLayout: IVisualLayout,
visualsLayout: { [key: string]: IVisualLayout; };
}
L'interfaccia IPageLayout ha le proprietà seguenti:
defaultLayout
- OggettoIVisualLayout
che definisce il layout visivo predefinito. Il layout predefinito viene applicato automaticamente a tutti gli oggetti visivi della pagina del report.defaultLayout?: IVisualLayout
visualsLayout
- OggettoVisualsLayout
che definisce una mappa tra i nomi visivi e i layout visivi nella pagina del report.visualsLayout: VisualsLayout
VisualsLayout = { [key: string]: IVisualLayout; }
Definire un layout visivo
Per definire un layout visivo, usare l'interfaccia per creare un oggetto layout visivo e impostarne la IVisualLayout
posizione, le dimensioni e la visibilità.
interface IVisualLayout {
x?: number;
y?: number;
z?: number;
width?: number;
height?: number;
displayState?: IVisualContainerDisplayState;
}
L'interfaccia IVisualLayout ha le proprietà seguenti:
x
,,z
:y
definisce le coordinate x, y e z dell'oggetto visivo.width
, :height
definisce la larghezza e l'altezza dell'oggetto visivo.displayState
- OggettoIVisualContainerDisplayState
che definisce la visibilità dell'oggetto visivo.interface IVisualContainerDisplayState { mode: VisualContainerDisplayMode; }
L'oggetto
IVisualContainerDisplayState
usa l'enumerazioneVisualContainerDisplayMode
per impostare la visibilità:enum VisualContainerDisplayMode { Visible, Hidden }
Aggiornare il layout
Per aggiornare il layout del report quando il report è già caricato, usare il report.updateSettings
metodo . Per altre informazioni, vedere Aggiornare le impostazioni del report in fase di esecuzione.
Esempio
Questo esempio di codice completo illustra come incorporare un report con un layout di report personalizzato. Tutti gli oggetti visivi sono nascosti tranne per due oggetti visivi: VisualContainer1 e VisualContainer2. VisualContainer1 ha un nuovo layout, posizione e dimensioni, mentre VisualContainer2 è visibile con il layout predefinito del report.
// Get models. Models contains enums that can be used.
let models = window['powerbi-client'].models;
let embedConfig = {
type: 'report',
id: reportId,
embedUrl: 'https://app.powerbi.com/reportEmbed',
tokenType: models.TokenType.Embed,
accessToken: 'H4...rf',
settings: {
layoutType: models.LayoutType.Custom
customLayout: {
pageSize: {
type: models.PageSizeType.Custom,
width: 1600,
height: 1200
},
displayOption: models.DisplayOption.ActualSize,
pagesLayout: {
"ReportSection1" : {
defaultLayout: {
displayState: {
mode: models.VisualContainerDisplayMode.Hidden
}
},
visualsLayout: {
"VisualContainer1": {
x: 1,
y: 1,
z: 1,
width: 400,
height: 300,
displayState: {
mode: models.VisualContainerDisplayMode.Visible
}
},
"VisualContainer2": {
displayState: {
mode: models.VisualContainerDisplayMode.Visible
}
},
}
}
}
}
}
};
...
// Embed the report and display it within the div container.
let report = powerbi.embed(embedContainer, embedConfig);