Data Field: AppBuilder

By user request, this app lets you define your own data field, based on a simple math formula like cadence / 2.

If you want to get fancy, there's conditional expressions (like IF in Excel), functions for data analysis (like MIN and AVG), and the data field can also display the text of your choice. The resulting data can be (optionally) written to the activity FIT file.

With AppBuilder, you can implement almost any field that involves math, such as: calculating normalized power and saving the data to the FIT activity file, showing the average pace for even-numbered laps, or recording the amount of time you sprinted.

Full documentation and examples here:
http://ciq-appbuilder.blogspot.com/

AppBuilder 5:
Now with new features! AppBuilder 5 is a completely new app, so please check it out in the store if you are interested in any of the new features.
https://apps.garmin.com/en-US/apps/fd690281-9c22-4fee-a81e-3b7f39aa67c5

- Store up to four formulas per app. Switch between formulas directly on the watch, without using a phone or PC. With four clone apps, you can store up to 16 formulas total
- User variables. Allows for powerful formulas where information can be stored at one point, like the start of a lap, and used later. e.g. Lap elevation change
- Improved timeavg() options. Allows for simpler, more flexible normalized power function
- More functions and variables

4 clones of AppBuilder are available in the store, so you can have 2 formulas in the same activity
  • got 2 problems...

    timeavg((altitude - prev(altitude)) / (timer - prev(timer)),20) *3600

    will this show a rolling 20s average of altimeters per hour?

    and

    formatdecimal(((avg(power)*timer)/1000), 1)

    intended to show me the overall energy in kJ.

    but as the timer always runs, the result changes even if I stop..

    how can I achieve that only the "active-time" is used for the calculation?

    and the average power, does mean the average with or without zero?

  • got 2 problems...

    timeavg((altitude - prev(altitude)) / (timer - prev(timer)),20) *3600

    will this show a rolling 20s average of altimeters per hour?

    and

    formatdecimal(((avg(power)*timer)/1000), 1)

    intended to show me the overall energy in kJ.

    but as the timer always runs, the result changes even if I stop..

    how can I achieve that only the "active-time" is used for the calculation?

    and the average power, does mean the average with or without zero?

  • but as the timer always runs, the result changes even if I stop..

    Set „Autopause=when stopped“. This stops the activity timer when speed=0.

  • thanks. but where to set? same line, separated by ";"?

  • Autopause is to set on the device itself.
    To find under „Auto Functions“.

    Which device are you using?

  • Hi, thanks, yes, already did. Using Fenix 6 pro...

    Now I found the easiest way, sometimes we have to think less complicated Slight smile

    // simply accumulate the measured power each second and divide by 1000

    // To avoid overflow, I do not accumulate Joule but each 10 Joule

    // and finally divide by 100 when showing the result

    setv(1,sum(power)/10);formatdecimal(getv(1)/100,1)

    ... works like charme Slight smile

    BUT: I like to add a BEEP each 500 kJoule, using the following:

    setv(1,sum(power)/10);formatdecimal(getv(1)/100,1);setv(2,sum(power) mod 500000);when(getv(2) lt 2000,0,0,2)

    Does not work at all!!! Even the displayed value is affected, how can this be? Do I have to use 2 seperate datafields for this??

  • Hi FlowState, any chance you can add the 7 series to the compatible devices list?

    Thanks

  • Any days ago, the AppBuilder 5 has been dissapeared from the store. I need it. Any suggestions or similar app? Thanks

  • Still in the store as far as I can see.  It has not been updated for the 7 series so, depending on where you are looking for it, it may be being filtered out as not compatible??

  • Could you pass me the link? Thanks in advance