Skip to main content

Binding Path Patterns

PatternTypeExampleDescription
<property>SimpletitleBinds to a direct property of the root entity type
<nav>.<property>One-leveldocument.projectNavigates one relationship and reads a property
<nav>.<entity>.<property>Two-levelsystemRequirements.systemRequirement.titleNavigates through a relationship to a child entity’s property
<nav>.<entity>.<nav>.<entity>.<property>Multi-levelsystemRequirements.systemRequirement.designRequirements.designRequirement.titleDeep navigation through multiple relationship levels

Binding Path Structure

diagram

Simple Property Binding

Binds directly to a property of the root entity type defined in sources[].query.from:
columns:
  id:
    width: 80
  title:
    title: User Need
    width: 200
    hasFocus: true
  outlineNumber:
    title: "#"
    width: 80
  description:
    title: Description
    width: 140
Navigates through domain model relationships to access properties of related entities. The binding path mirrors the expansion path defined in sources.
columns:
  systemRequirements.systemRequirement.title:
    title: System Requirement
    width: 180
  systemRequirements.systemRequirement.severity:
    title: Severity
    width: 100
The path segments map to:
  1. systemRequirements — the navigation property name (from domain model relationship direct.name or back.name)
  2. systemRequirement — the entity type name (singular form)
  3. title — the target entity property

Multi-Level Navigation

Deep binding paths traverse multiple relationship levels:
columns:
  systemRequirements.systemRequirement.designRequirements.designRequirement.title:
    title: Design Requirement
    width: 180
Multi-level binding paths must align with the expand definitions in the sources section. If a relationship level is not expanded in the source, its columns will not have data.

Binding Path and Source Expand Alignment

Each level in a binding path must have a corresponding expand entry:
sources:
  - id: main
    model: rtm
    query:
      from: UserNeed
      where: <WHERE>
    expand:
      - name: systemRequirements           # Level 1
        expand:
          - name: designRequirements        # Level 2
            expand:
              - name: hazards               # Level 3

columns:
  title:                                     # Root level
    title: User Need
  systemRequirements.systemRequirement.title: # Level 1
    title: System Requirement
  systemRequirements.systemRequirement.designRequirements.designRequirement.title: # Level 2
    title: Design Requirement
  systemRequirements.systemRequirement.designRequirements.designRequirement.hazards.hazard.title: # Level 3
    title: Hazard

Entity Reference Binding

When binding to a navigation property without specifying a terminal property, the column represents the entire referenced entity. Use display to control what is shown:
columns:
  hazard:
    title: Hazard
    display: title
    list:
      search:
        - title
        - id

Naming Conventions

SegmentConventionExample
Navigation propertycamelCase, pluralsystemRequirements, riskControls
Entity type in pathcamelCase, singularsystemRequirement, riskControl
Terminal propertycamelCasetitle, severity, outlineNumber
Entity type in domain modelPascalCaseUserNeed, SystemRequirement

Complete YAML Example

columns:
  outlineNumber:
    title: "#"
    width: 80
    sort: asc
  title:
    title: User Need
    width: 200
    hasFocus: true
  description:
    title: Description
    width: 140
  systemRequirements.systemRequirement.title:
    title: System Requirement
    width: 180
    columnGroup: sysReq
  systemRequirements.systemRequirement.severity:
    title: Severity
    width: 100
    columnGroup: sysReq
  systemRequirements.systemRequirement.designRequirements.designRequirement.title:
    title: Design Requirement
    width: 180
    columnGroup: desReq
  hazards.hazard.title:
    title: Hazard
    width: 160
    columnGroup: hazards
  hazards.hazard.riskControls.riskControl:
    title: Risk Control
    width: 160
    multiItem: true
    display: title
    columnGroup: riskCtrl

columnGroups:
  sysReq:
    groupName: System Requirements
    groupStyle: darkblue
    headerStyle: blue
  desReq:
    groupName: Design Requirements
    groupStyle: darkgreen
    headerStyle: green
  hazards:
    groupName: Hazards
    groupStyle: darkred
    headerStyle: red
  riskCtrl:
    groupName: Risk Controls
    groupStyle: darkorange
    headerStyle: orange

sources:
  - id: main
    model: rtm
    query:
      from: UserNeed
      where: <WHERE>
    expand:
      - name: systemRequirements
        title: System Requirements
        expand:
          - name: designRequirements
            title: Design Requirements
      - name: hazards
        title: Hazards
        expand:
          - name: riskControls
            title: Risk Controls

Source references: Column Configuration Guide KB article, Core Concepts KB article, whole_rtm.template.yaml, constraints_composing.template.yaml
KB ArticlesSource Code
  • prod-powersheet-src/com.nextedy.powersheet.client/cypress/fixtures/configurations/constraints_composing.template.yaml
  • configContext.ts
  • prod-powersheet-src/com.nextedy.powersheet.client/src/modules/ConfigProvider/types/PowersheetConfig.d.ts
  • prod-powersheet-src/com.nextedy.powersheet.client/src/modules/Powersheet/Powersheet.tsx
  • prod-powersheet-src/com.nextedy.powersheet/src/com/nextedy/powersheet/PowersheetProduct.java