Personalizowanie układu raportu
Za pomocą niestandardowego układu raportu można osadzić raport usługi Power BI z innym układem niż to, co zostało zapisane w oryginalnym raporcie. Podczas definiowania niestandardowego układu raportu można różnić rozmiar strony raportu i kontrolować rozmiar, położenie i widoczność wizualizacji na stronie.
Omówienie układu niestandardowego
Aby utworzyć niestandardowy układ raportu, zdefiniuj obiekt układu niestandardowego i przekaż go do obiektu ustawień w konfiguracji osadzania.
W obiekcie ustawień ustaw layoutType
na models.LayoutType.Custom
i ustaw customLayout
na niestandardowy obiekt układu:
let embedConfig = {
...
settings: {
layoutType: models.LayoutType.Custom
customLayout: {...}
}
};
Aby uzyskać więcej informacji na temat ustawień raportu, zobacz Konfigurowanie ustawień raportu.
Jak zdefiniować niestandardowy układ raportu
Każdy niestandardowy układ raportu jest reprezentowany przez niestandardowy obiekt układu zdefiniowany w celu określenia rozmiaru strony, skalowania kanwy i układu stron. W układzie stron można określić układ wizualizacji dla każdej wizualizacji i domyślny układ wizualizacji raportu.
Definicja niestandardowego interfejsu układu
Użyj interfejsu ICustomLayout
, aby zdefiniować obiekt układu niestandardowego:
interface ICustomLayout {
pageSize?: IPageSize;
displayOption?: DisplayOption;
pagesLayout?: PagesLayout;
}
Interfejs ICustomLayout ma następujące właściwości:
pageSize
— obiektIPageSize
, który definiuje rozmiar strony obszaru kanwy dla raportu.interface IPageSize { type: PageSizeType; }
Obiekt
IPageSize
używa wyliczeniaPageSizeType
w celu ustawienia rozmiaru strony:enum PageSizeType { Widescreen, Standard, Cortana, Letter, Custom }
displayOption
— wyliczenieDisplayOption
, które kontroluje sposób skalowania kanwy w celu dopasowania do ramki.enum DisplayOption { FitToPage, FitToWidth, ActualSize }
pagesLayout
— obiektPagesLayout
, który kontroluje układ każdej wizualizacji na stronie. Ta właściwość mapuje nazwę strony na obiektPageLayout
. Aby uzyskać więcej informacji, zobacz Definiowanie układu stron.type PagesLayout = { [key: string]: IPageLayout; }
Definiowanie układu stron
Użyj interfejsu IPageLayout
, aby zdefiniować obiekt układu stron. Interfejs umożliwia zdefiniowanie mapy układu wizualizacji, która mapuje każdą nazwę wizualizacji na nowy obiekt układu i domyślny układ wizualizacji. Definiowanie układu stron jest opcjonalne. Jeśli nie podasz układu raportu, usługa Power BI zastosuje domyślny układ do raportu. Oznacza to, że domyślny układ ma zastosowanie do wszystkich wizualizacji, które nie są określone w obiekcie układu wizualizacji. Na przykład możesz początkowo ukryć wszystkie wizualizacje w raporcie, a następnie wyświetlić wybrane wizualizacje w wybranym układzie.
interface IPageLayout {
defaultLayout: IVisualLayout,
visualsLayout: { [key: string]: IVisualLayout; };
}
Interfejs IPageLayout
defaultLayout
— obiektIVisualLayout
, który definiuje domyślny układ wizualizacji. Domyślny układ jest automatycznie stosowany do wszystkich wizualizacji na stronie raportu.defaultLayout?: IVisualLayout
visualsLayout
— obiektVisualsLayout
definiujący mapę między nazwami wizualizacji a układami wizualnymi na stronie raportu.visualsLayout: VisualsLayout
VisualsLayout = { [key: string]: IVisualLayout; }
Definiowanie układu wizualizacji
Aby zdefiniować układ wizualizacji, użyj interfejsu IVisualLayout
, aby utworzyć obiekt układu wizualizacji i ustawić jego położenie, rozmiar i widoczność.
interface IVisualLayout {
x?: number;
y?: number;
z?: number;
width?: number;
height?: number;
displayState?: IVisualContainerDisplayState;
}
Interfejs IVisualLayout ma następujące właściwości:
x
,y
,z
— definiuje współrzędne x, y i z wizualizacji.width
,height
— definiuje szerokość i wysokość wizualizacji.displayState
— obiektIVisualContainerDisplayState
, który definiuje widoczność wizualizacji.interface IVisualContainerDisplayState { mode: VisualContainerDisplayMode; }
Obiekt
IVisualContainerDisplayState
używa wyliczeniaVisualContainerDisplayMode
w celu ustawienia widoczności:enum VisualContainerDisplayMode { Visible, Hidden }
Aktualizowanie układu
Aby zaktualizować układ raportu, gdy raport jest już załadowany, użyj metody report.updateSettings
. Aby uzyskać więcej informacji, zobacz Aktualizowanie ustawień raportu w czasie wykonywania.
Przykład
W tym kompletnym przykładzie kodu pokazano, jak osadzić raport z niestandardowym układem raportu. Wszystkie wizualizacje są ukryte z wyjątkiem dwóch wizualizacji: VisualContainer1 i VisualContainer2. visualContainer1 ma nowy układ, położenie i rozmiar, podczas gdy VisualContainer2 jest widoczny z domyślnym układem raportu.
// 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);