mendraw/synthetic

Synthetic Mendix data objects for external API data.

Creates fake ListValue, ObjectItem, ListAttributeValue etc. that satisfy the interface expected by Mendix chart/grid widgets, allowing external API data (e.g. CoinGecko) to be rendered through real Mendix marketplace widgets.

Synthetic constructors validate that parallel value lists contain exactly one value per object item and fail immediately with a descriptive error when the lengths differ.

let items = synthetic.object_items(3)
let lv = synthetic.list_value(items)
let attr = synthetic.list_attribute(items, [1.0, 2.0, 3.0], float.to_string, "Decimal")

Types

Represents a synthetic association value.

pub type Association

Represents a synthetic chart series configuration.

pub type ChartSeries

Represents a JavaScript array containing a known Gleam value type.

pub type JsArray(value)

Represents a synthetic static text template.

pub type TextTemplate

Values

pub fn association(
  items items: List(mendix.ObjectItem),
  targets targets: List(mendix.ObjectItem),
) -> Association

Create a synthetic association linking items to target items. get(sourceItem) returns { value: targetItem }. Used for DynamicDataGrid referenceRow/referenceColumn.

pub fn chart_series_static(
  data_source data_source: list_value.ListValue,
  x_attr x_attr: list_attribute.ListAttributeValue,
  y_attr y_attr: list_attribute.ListAttributeValue,
  name name: TextTemplate,
  aggregation aggregation: String,
  interpolation interpolation: String,
  line_style line_style: String,
  line_color line_color: String,
  bar_color bar_color: String,
) -> ChartSeries

Build a static chart series config object for Line/Area/Column/TimeSeries. Returns a JS object with { dataSet:“static”, staticDataSource, … }.

pub fn list_attribute(
  items items: List(mendix.ObjectItem),
  values values: List(a),
  display_fn display_fn: fn(a) -> String,
  attr_type attr_type: String,
) -> list_attribute.ListAttributeValue

Create a synthetic ListAttributeValue. get(item) returns an EditableValue with the corresponding value.

  • items: ObjectItems (must match list_value items)
  • values: parallel list of values, one per item
  • display_fn: converts a value to display string
  • attr_type: Mendix attribute type (“Decimal”, “String”, “DateTime”, etc.)
pub fn list_expression(
  items items: List(mendix.ObjectItem),
  values values: List(a),
) -> list_attribute.ListExpressionValue

Create a list-bound expression value. get(item) returns { status: “available”, value: val }.

pub fn list_text_template(
  items items: List(mendix.ObjectItem),
  values values: List(String),
) -> list_attribute.ListExpressionValue

Create a list-bound text template. get(item) returns { status: “available”, value: “text for this item” }.

pub fn list_value(
  items items: List(mendix.ObjectItem),
) -> list_value.ListValue

Create a synthetic ListValue from a list of ObjectItems. Status is “available”, mutation methods are no-ops.

pub fn object_item(id id: String) -> mendix.ObjectItem

Create a single synthetic ObjectItem with the given id

pub fn object_items(count count: Int) -> List(mendix.ObjectItem)

Create N synthetic ObjectItems with ids “synth_0”, “synth_1”, …

pub fn text_template(value value: String) -> TextTemplate

Create a static text template (not bound to a datasource). Returns { value: text } matching Mendix textTemplate shape.

pub fn to_js_array(items items: List(value)) -> JsArray(value)

Convert a Gleam List to a JS Array. Needed for chart widget lines/series props which expect JS arrays.

Search Document