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.