Layout & Visuals
The Layout sub-graph describes the visual presentation layer of an asset — its pages, the visuals placed on each page, how data fields are bound to visual roles (projections), and the filters applied at page or visual scope.
Layout
The root of the visual sub-graph. Contains an ordered list of Page objects.
public class Layout
{
public ICollection<Page> Pages { get; set; }
public ICollection<AdditionalMetadata>? AdditionalMetadata { get; set; }
}
Page
A single canvas/sheet/tab within a report. Pages are ordered by the Order field.
public class Page
{
public string Id { get; set; }
public string FriendlyName { get; set; }
public int Order { get; set; }
public decimal Width { get; set; }
public decimal Height { get; set; }
public bool IsEnabled { get; set; }
public string? PageImagePath { get; set; }
public string? Description { get; set; }
public string? EmbedPageUrlParameter { get; set; }
public string? EmbedPageUrl { get; set; }
public ICollection<Visual> Visuals { get; set; }
public ICollection<Filter> PageLevelFilters { get; set; }
public ICollection<AdditionalMetadata>? AdditionalMetadata { get; set; }
}
| Property | Type | Description |
|---|---|---|
Id |
string |
Unique page identifier |
FriendlyName |
string |
Display name of the page/tab |
Order |
int |
Position in the tab bar (0-based or 1-based, platform-dependent) |
Width |
decimal |
Canvas width in platform units |
Height |
decimal |
Canvas height in platform units |
IsEnabled |
bool |
Whether the page is visible/active |
PageImagePath |
string? |
Path to a thumbnail image (if exported) |
Description |
string? |
Optional description |
EmbedPageUrlParameter |
string? |
URL parameter name used to identify this page in an embed URL |
EmbedPageUrl |
string? |
Full embed URL for this specific page |
Visuals |
ICollection<Visual> |
All top-level visuals placed on this page |
PageLevelFilters |
ICollection<Filter> |
Filters applied to all visuals on this page |
AdditionalMetadata |
ICollection<AdditionalMetadata>? |
Platform-specific extras |
Visual
A single visual element placed on a page — a chart, table, slicer, image, container, etc.
public class Visual
{
public string Id { get; set; }
public string FriendlyName { get; set; }
public VisualCategories Category { get; set; }
public string Type { get; set; }
public string? OpenBIVisualType { get; set; }
public decimal X { get; set; }
public decimal Y { get; set; }
public decimal Z { get; set; }
public decimal Width { get; set; }
public decimal Height { get; set; }
public string? Description { get; set; }
public ICollection<VisualProjection> VisualProjections { get; set; }
public ICollection<Filter> VisualLevelFilters { get; set; }
public ICollection<AdditionalMetadata>? AdditionalMetadata { get; set; }
public ICollection<Visual>? Children { get; set; }
}
| Property | Type | Description |
|---|---|---|
Id |
string |
Unique visual identifier |
FriendlyName |
string |
Display name / title |
Category |
VisualCategories |
Normalized category (see below) |
Type |
string |
Platform-native visual type (e.g. "barChart", "tableEx", "slicer") |
OpenBIVisualType |
string? |
Normalized OpenBI visual type from the platform catalog |
X, Y |
decimal |
Top-left position on the canvas |
Z |
decimal |
Z-order / layer depth |
Width, Height |
decimal |
Dimensions on the canvas |
Description |
string? |
Optional description |
VisualProjections |
ICollection<VisualProjection> |
Data field bindings (roles) |
VisualLevelFilters |
ICollection<Filter> |
Filters applied only to this visual |
Children |
ICollection<Visual>? |
Nested visuals (for Container category) |
AdditionalMetadata |
ICollection<AdditionalMetadata>? |
Platform-specific extras |
VisualCategories
| Value | Meaning |
|---|---|
Static |
Non-interactive display element (image, text box, shape) |
Interaction |
User input control (slicer, filter panel, button) |
Container |
Groups other visuals (group, frame, or navigator container) |
Chart |
Data-bound chart or table |
VisualProjection
Binds a data field (column or measure) to a named role in a visual (e.g. "Values", "X Axis", "Legend").
public class VisualProjection
{
public string ProjectionName { get; set; }
public string? OpenBIProjectionName { get; set; }
public Expression? Expression { get; set; }
public bool IsActive { get; set; }
public string? Type { get; set; }
public bool IsDimension { get; set; }
public bool IsMeasure { get; set; }
public string? IdColumnReference { get; set; }
public int Order { get; set; }
public ICollection<AdditionalMetadata>? AdditionalMetadata { get; set; }
}
| Property | Type | Description |
|---|---|---|
ProjectionName |
string |
Platform-native role name (e.g. "Category", "Values", "X") |
OpenBIProjectionName |
string? |
Normalized role name from the visual type catalog |
Expression |
Expression? |
Inline expression (platform formula or SQL) if the projection is computed, not a direct column ref |
IsActive |
bool |
Whether this projection is currently active |
Type |
string? |
Optional projection type hint |
IsDimension |
bool |
Whether this role carries a dimension (grouping) field |
IsMeasure |
bool |
Whether this role carries a measure (aggregated) field |
IdColumnReference |
string? |
Reference to the source column (TableName.ColumnName or MeasureTable.MeasureName) |
Order |
int |
Position when multiple fields occupy the same role |
AdditionalMetadata |
ICollection<AdditionalMetadata>? |
Platform-specific extras |