Calculated properties specification

TypeScript type: CalculatedPropertiesSpecification.

This content modifier allows including additional calculated properties into the content.

Attributes

Name Required? Type Default
label Yes string
value Yes ECExpression
priority No number 1000

Attribute: label

Specifies label of the calculated property. Supports localization.

Type string
Is Required Yes
// There's a content rule for returning content of given `bis.Subject` instance. The produced content is customized to
// additionally have a calculated "My Calculated Property" property.
const ruleset: Ruleset = {
  id: "example",
  rules: [{
    ruleType: "Content",
    specifications: [{
      specType: "SelectedNodeInstances",
      calculatedProperties: [{
        label: "My Calculated Property",
        value: `123`,
      }],
    }],
  }],
};

Example of using "label" attribute

Attribute: value

Defines an expression to calculate the value. The expression can use ECInstance and Ruleset Variables symbol contexts.

Type ECExpression
Is Required Yes
// There's a content rule for returning content of given `bis.GeometricElement3d` instance. The produced content is
// customized to additionally have a calculated "Element Volume" property whose value is calculated based on
// element's `BBoxHigh` and `BBoxLow` property values.
const ruleset: Ruleset = {
  id: "example",
  rules: [{
    ruleType: "Content",
    specifications: [{
      specType: "SelectedNodeInstances",
      calculatedProperties: [{
        label: "Element Volume",
        value: "(this.BBoxHigh.x - this.BBoxLow.x) * (this.BBoxHigh.y - this.BBoxLow.y) * (this.BBoxHigh.z - this.BBoxLow.z)",
      }],
    }],
  }],
};

Example of using "value" attribute

Attribute: priority

Assign a custom Field.priority to the property. It's up to the UI component to make sure that priority is respected - properties with higher priority should appear before or above properties with lower priority.

Type number
Is Required No
Default Value 1000
// There's a content rule for returning content of given `bis.Subject` instance. The produced content is customized to
// additionally have a "My Calculated Property" property with priority set to `9999`. This should make the property
// appear at the top in the UI, since generally properties have a priority of `1000`.
const ruleset: Ruleset = {
  id: "example",
  rules: [{
    ruleType: "Content",
    specifications: [{
      specType: "SelectedNodeInstances",
      calculatedProperties: [{
        label: "My Calculated Property",
        value: `123`,
        priority: 9999,
      }],
    }],
  }],
};
priority: 9999 priority: -9999
Example of using "priority" attribute set to 9999 Example of using "priority" attribute set to -9999

Last Updated: 30 November, 2023