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
  • So working my way backwards, the pieces of this code seem to work if I test them on their own, but I get an IQ error when I try to load the whole lot. I am guessing it is just too much for the watch. I've shrunk it multiple ways but nothing seems to be enough. One version attached. Running it through the validator seems ok, but my FR935 doesn't seem to like the code and complains with a !name. Any suggestions will be much appreciated. :-)

    Big Version

    setv(8,lastlap(lapavg(nonzero(speed))));setv(9,lapavg(nonzero(speed)));setv(10,avg(nonzero(speed)));setv(11,nonzero(speed));setv(if(LapCount gt 0,if(LapCount neq getv(6),7,null),null),getv(8));setv(1,if(LapCount gt 1,if(getv(8) gt getv(7),'+','-'),' '));setv(2,if(LapCount gt 0,if(getv(9) gt getv(8),'+','-'),' '));setv(3,if(getv(11) gt getv(9),'+','-'));setv(4,if(getv(11) gt getv(10),'+','-'));setv(5,if(getv(9) gt getv(10),'+','-'));setv(if(LapCount neq getv(6),6,null),LapCount);if(timer_raw eq 0,'5DP1-Test-4.2',getv(1)+getv(2)+getv(3)+formatpace(getv(11))+getv(4)+getv(5))

    Shrunk Version

    setv(8,lastlap(lapavg(nonzero(speed))));setv(9,lapavg(nonzero(speed)));setv(10,avg(nonzero(speed)));setv(if(LapCount gt 0,if(LapCount neq getv(6),7,null),null),getv(8));setv(1,if(LapCount gt 1,if(getv(8) gt getv(7),'+','-'),' '));setv(6,LapCount);getv(1)+if(LapCount gt 0,if(getv(9) gt getv(8),'+','-'),' ')+if(nonzero(speed) gt getv(9),'+','-')+formatpace(nonzero(speed))+if(nonzero(speed) gt getv(10),'+','-')+if(getv(9) gt getv(10),'+','-')

    Code

    !3AWYAAAAAAAAACAgCAgEOAQEEAQEuAQEbAggJAgIBDgEBBAEBGwIAEwgKAgIBDgEBBQEBGwIAEwgLAgIBDgEBGwIAEwIdCAAAFwIdCAYBGgEAEQgHAgABAAMCAAEAAwgIARoBARsCABMIAQIdCAEAFwgIARoBCAcBGgEAFwQrAAQtAAEAAwQgAAEAAwEbAgATCAICHQgAABcICQEaAQgIARoBABcEKwAELQABAAMEIAABAAMBGwIAEwgDCAsBGgEICQEaAQAXBCsABC0AAQADARsCABMIBAgLARoBCAoBGgEAFwQrAAQtAAEAAwEbAgATCAUICQEaAQgKARoBABcEKwAELQABAAMBGwIAEwIdCAYBGgEAEQgGAgABAAMCHQEbAgATAwEIAAAPBDVEUDEtVGVzdC00LjIACAEBGgEIAgEaAQAGCAMBGgEABggLARoBAScBAAYIBAEaAQAGCAUBGgEABgEAAwAT

  • my FR935 doesn't seem to like the code

    Sorry, FR935 doesn't support encoded formulas bc it doesn't have enough memory

  • Cheers. My FR935 is about 5 years old. Any recommendations on new models that work well with AppBuilder? FR9X5 vs Fenix vs Others?