For now it is limited to an interface only, since the using it as a display requires additional work in core, this has the option to add it easily tho
It does some limited error handling in the interface options and show error notices for unsupported / erroneous formulas
It supports nested M2O related field and updates live, as the user updates values, even nested O2M values
It uses a peggy grammar that handles the actual parsing and supports inline binary operators, as well as field references and formula.js function calls
Notes
README is still missing
Here are some example formulas
is_leap_year: CONCATENATE(YEAR({{date_time}}), " ", IF(YEAR({{date_time}}) % 4 == 0, "is a leap year", "is not a leap year"))
Add the calculated fields bundle.
For now it is limited to an interface only, since the using it as a display requires additional work in core, this has the option to add it easily tho
It does some limited error handling in the interface options and show error notices for unsupported / erroneous formulas
It supports nested M2O related field and updates live, as the user updates values, even nested O2M values
It uses a peggy grammar that handles the actual parsing and supports inline binary operators, as well as field references and formula.js function calls
Notes
README
is still missingHere are some example formulas
is_leap_year
:CONCATENATE(YEAR({{date_time}}), " ", IF(YEAR({{date_time}}) % 4 == 0, "is a leap year", "is not a leap year"))
upper_title
:UPPER({{article.title}})
upper_author
:UPPER({{bookmark.created_by.first_name}})