Skip to content

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

public enum VisualCategories
{
    Static,
    Interaction,
    Container,
    Chart
}
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