-
Notifications
You must be signed in to change notification settings - Fork 0
Archive Trac docs calc
madscatt edited this page Jun 20, 2026
·
1 revision
Legacy Trac archive page imported from
docs_calc. Source: https://genapp.rocks/wiki/wiki/docs_calc. Review age, links, and examples before treating as current.
-
currently in genappalpha rev 1096 or greater
-
calculated fields compute values dynamically during user input
-
example
,{
"role" : "input"
,"id" : "m"
,"label" : "mass [kg]"
,"type" : "float"
,"required" : "true"
,"help" : "Enter the mass in kilograms"
}
,{
"role" : "input"
,"id" : "c"
,"label" : "Speed of light [m/s]"
,"type" : "float"
,"default" : 299792458
,"required" : "true"
,"help" : "Enter the speed of light in meters/second"
}
,{
"role" : "input"
,"readonly" : "true"
,"id" : "E"
,"label" : "Energy [J]"
,"type" : "text"
,"calc" : "m*c^2"
}
- will dynamically update the field "E" when "m" or "c" are changed based upon the calculation E=m*c^2
- any id or numeric value should be able to be used
- a calculation can be made on a calculated field
- e.g. we could add to the above example
,{
"role" : "input"
,"readonly" : "true"
,"id" : "logE"
,"label" : "log Energy [J]"
,"type" : "text"
,"calc" : "log(E)"
}
- to also get the log of E
- circular references and syntax errors will generate an error at runtime
- we plan to push this to the generation phase for early checking
-
- : addition
-
- : subtraction
-
- : multiplication
- / : division
- !^ : exponentiation
- abs(x) : absolute value
- acos(x) : arccosine
- asin(x) : arcsine
- atan(x) : arctangent
- atan2(y,x) : tangent of y over x
- ceil(x) : integer round up
- cos(x) : cosine
- exp(x) : e to the power of x
- floor(x) : integer round down
- log(x) : natural log
- max(x,y,...) : maximum
- min(x,y,,..) : minimum
- pow(x,y) : raise x to the y power
- random() : random # between 0 & 1
- round(x) : round to nearest integer
- sin(x) : sine
- sqrt(x) : square root
- tan(x) : tangent
- calculated fields can be used under repeaters (genappalpha rev >= 1112)
- id's will be taken from the top level (not under a repeater) if they exist
- if the id does not exist at the top level, the one from the same level will be used.
- e.g. this will provide a separate calculation for each repeater count
{
"role" : "input"
,"id" : "ir1"
,"label" : "do calcs"
,"type" : "integer"
,"repeater" : "true"
}
,{
"role" : "input"
,"id" : "m"
,"label" : "mass [kg]"
,"type" : "float"
,"required" : "true"
,"help" : "Enter the mass in kilograms"
,"repeat" : "ir1"
}
,{
"role" : "input"
,"id" : "c"
,"label" : "Speed of light [m/s]"
,"type" : "float"
,"default" : 299792458
,"required" : "true"
,"help" : "Enter the speed of light in meters/second"
,"repeat" : "ir1"
}
,{
"role" : "input"
,"readonly" : "true"
,"id" : "e"
,"label" : "Energy [J]"
,"type" : "text"
,"calc" : "m*c^2"
,"repeat" : "ir1"
}
- and this will also work
{
"role" : "input"
,"id" : "c"
,"label" : "Speed of light [m/s]"
,"type" : "float"
,"default" : 299792458
,"required" : "true"
,"help" : "Enter the speed of light in meters/second"
}
,{
"role" : "input"
,"id" : "ir1"
,"label" : "do calcs"
,"type" : "integer"
,"repeater" : "true"
}
,{
"role" : "input"
,"id" : "m"
,"label" : "mass [kg]"
,"type" : "float"
,"required" : "true"
,"help" : "Enter the mass in kilograms"
,"repeat" : "ir1"
}
,{
"role" : "input"
,"readonly" : "true"
,"id" : "e"
,"label" : "Energy [J]"
,"type" : "text"
,"calc" : "m*c^2"
,"repeat" : "ir1"
}
- you can not currently mix id's under different repeaters or repeater levels
- if you have a structure that you would like supported, please get in touch