Personalizar un diseño de informe
Con un diseño de informe personalizado, puede insertar un informe de Power BI con un diseño diferente al guardado en el informe original. Al definir un diseño de informe personalizado, puede variar el tamaño de una página de informe y controlar el tamaño, la posición y la visibilidad de los objetos visuales de la página.
Información general sobre el diseño personalizado
Para crear un diseño de informe personalizado, defina un objeto de diseño personalizado y páselo al objeto de configuración en una configuración de inserción.
En el objeto de configuración, establezca layoutType
en models.LayoutType.Custom
y establezca customLayout
en el objeto de diseño personalizado:
let embedConfig = {
...
settings: {
layoutType: models.LayoutType.Custom
customLayout: {...}
}
};
Para obtener más información sobre la configuración del informe, consulte Configuración de las opciones de informe.
Cómo definir un diseño de informe personalizado
Cada diseño de informe personalizado se representa mediante un objeto de diseño personalizado que se define para especificar el tamaño de página, la escala del lienzo y el diseño de páginas. Dentro del diseño de páginas, puede especificar un diseño visual para cada objeto visual y un diseño visual predeterminado para el informe.
Definición de interfaz de diseño personalizado
Use la interfaz ICustomLayout
para definir un objeto de diseño personalizado:
interface ICustomLayout {
pageSize?: IPageSize;
displayOption?: DisplayOption;
pagesLayout?: PagesLayout;
}
La interfaz ICustomLayout tiene las siguientes propiedades:
pageSize
: objetoIPageSize
que define el tamaño de página del área de lienzo del informe.interface IPageSize { type: PageSizeType; }
El objeto
IPageSize
usa la enumeraciónPageSizeType
para establecer el tamaño de página:enum PageSizeType { Widescreen, Standard, Cortana, Letter, Custom }
displayOption
: enumeraciónDisplayOption
que controla cómo escalar el lienzo para que se ajuste al marco.enum DisplayOption { FitToPage, FitToWidth, ActualSize }
pagesLayout
: un objetoPagesLayout
que controla el diseño de cada objeto visual de una página. Esta propiedad asigna un nombre de página a un objetoPageLayout
. Para obtener más información, vea Definir un diseño de páginas.type PagesLayout = { [key: string]: IPageLayout; }
Definición de un diseño de páginas
Use la interfaz IPageLayout
para definir un objeto de diseño de páginas. La interfaz permite definir un mapa de diseño visual, que asigna cada nombre visual a un nuevo objeto de diseño y un diseño visual predeterminado. Definir un diseño de páginas es opcional. Si no proporciona un diseño para un informe, Power BI aplica el diseño predeterminado al informe. Es decir, el diseño predeterminado es lo que se aplica a todos los objetos visuales que no se especifican en el objeto de diseño de objetos visuales. Por ejemplo, puede ocultar inicialmente todos los objetos visuales de un informe y, a continuación, mostrar los objetos visuales seleccionados en el diseño que prefiera.
interface IPageLayout {
defaultLayout: IVisualLayout,
visualsLayout: { [key: string]: IVisualLayout; };
}
La interfaz
defaultLayout
: objetoIVisualLayout
que define el diseño visual predeterminado. El diseño predeterminado se aplica automáticamente a todos los objetos visuales de la página del informe.defaultLayout?: IVisualLayout
visualsLayout
: objetoVisualsLayout
que define un mapa entre los nombres visuales y los diseños visuales de la página del informe.visualsLayout: VisualsLayout
VisualsLayout = { [key: string]: IVisualLayout; }
Definición de un diseño visual
Para definir un diseño visual, use la interfaz IVisualLayout
para crear un objeto de diseño visual y establecer su posición, tamaño y visibilidad.
interface IVisualLayout {
x?: number;
y?: number;
z?: number;
width?: number;
height?: number;
displayState?: IVisualContainerDisplayState;
}
La interfaz IVisualLayout tiene las siguientes propiedades:
x
,y
,z
: define las coordenadas x, y y z del objeto visual.width
,height
: define el ancho y el alto del objeto visual.displayState
: objetoIVisualContainerDisplayState
que define la visibilidad del objeto visual.interface IVisualContainerDisplayState { mode: VisualContainerDisplayMode; }
El objeto
IVisualContainerDisplayState
usa la enumeraciónVisualContainerDisplayMode
para establecer la visibilidad:enum VisualContainerDisplayMode { Visible, Hidden }
Actualización del diseño
Para actualizar el diseño del informe cuando el informe ya esté cargado, use el método report.updateSettings
. Para obtener más información, consulte Actualizar la configuración del informe en tiempo de ejecución.
Ejemplo
En este ejemplo de código completo se muestra cómo insertar un informe con un diseño de informe personalizado. Todos los objetos visuales están ocultos excepto en dos objetos visuales: visualContainer1 y VisualContainer2. visualContainer1 tiene un nuevo diseño, posición y tamaño, mientras que visualContainer2 está visible con el diseño predeterminado del informe.
// 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);