Computed Values
Values can not only be entered by users, they can be computed, as well. This is how it's done:
{
id: "field1",
label: "Field 1",
type: "number"
},
{
id: "field2",
label: "Field 2",
type: "number"
},
{
id: "sum",
label: "Summary of both fields",
type: "number",
isDisabled: true,
computedValue: (data) => {
let result = 0;
if (data.field1) result = result + Number(data.field1);
if (data.field2) result = result + Number(data.field2);
return result !== 0 ? result : "";
}
}
The same can be done on individiual collection entries, all you need to do is take itemData
instead of data
:
{
id: "maths",
label: "Maths",
type: "collection",
init: true,
fields: [
{
id: "factor1",
label: "Factor 1",
type: "number"
},
{
id: "factor2",
label: "Factor 2",
type: "number"
},
{
id: "result",
label: "Result of Factor 1 x Factor 2",
type: "number",
isDisabled: true,
computedValue: (data, itemData) => {
let result = 0;
if (itemData.factor1 && itemData.factor2) {
result = Number(itemData.factor1) * Number(itemData.factor2);
}
return result !== 0 ? result : "";
}
}
]
}