META API and META UI must have support for dynamic computed values and conditions.
For example some model fields are required only under some conditions. Or UI should display some value computed from data model.
Also data model must be reactive - change of value initializes computation of all dependencies. This applies mainly to META UI when live data model can updated in real-time.
For this purpose I suggest to create simple "scripting" language which should work as simple expression language - like expressions in table processors. It is based on same principle but instead of cell names we can use variables.
Example:
{
"@doctype": "@meta.object",
"methods": ["GET"],
"properties": {
"first_name": "...",
"last_name": "...",
"isCustomer": {
"type": "@meta.boolean",
"label": "Is customer"
},
"company_name": {
"type": "@meta.text",
"label": "Company name",
"required_if": "$isCustomer == true"
},
"birthdate": {
"type": "@meta.date",
"label": "Date of birth"
},
"age": {
"type": "@meta.expression",
"label": "Age",
"expression": "now() - $birthdate"
}
}
}