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
  • 955 solar Software: 15.15 Beta; CIQ: 4.4.4

    Activity: Trail Running

    "distanteToNextPoint" and "distanceToDestination" shows "!Name"

    Others variables work fine

    Thanks!

  • Can you make a few more clones? I have so many more fields I'd like to create and the limit of four per activity is too low. 

  • If you can live with having 4 or 6 fields on one page, you could use Appbuilder 5+

  • Hi! Any chance to get support for Edge 840?

  • I'm using:
    If( (Lapcount+1) mod 2 eq 1, 'Play (' + format(((Lapcount+2)/2), '%.0f') + ')', 'Pause (' + format(((Lapcount+2)/2-0.5), '%.0f') + ')' )
    To have a real lap counter that differentiates between active and pause phases and counts the first phase as 1 not 0, problem is using "resume later" completely messes that counter up: reset to "1" and therefore being out of sync with the "play / pause" phases (if I stop in a "pause" phase).

    Garmins internal lap counter keeps it's value even after "resume later". Is this an IQ limitation or fixable with the data field?

    Appbuilder seems to do it's own counting and forgets that after "resume later" can I get the value from Garmins counter instead that keeps it's memory after resuming?

  • Garmins internal lap counter keeps it's value even after "resume later". Is this an IQ limitation or fixable with the data field?

    Appbuilder seems to do it's own counting and forgets that after "resume later" can I get the value from Garmins counter instead that keeps it's memory after resuming?

    As I wrote in the other thread, "Resume Later" isn't supported by AppBuilder (none of the app's state is saved / restored.)

    It is a Connect IQ limitation that lap stats are not directly available to Connect IQ apps. What is available are lap / workout *events* (e.g. a lap / workout step has been triggered), and it's up to a CIQ app to keep track of lap metrics on its own.

    So to fix this problem, I would have to add support for "Resume Later". Also as mentioned in the other thread, even Garmin's own Running Power CIQ data field lacks support for "Resume Later". You'll see that if you set Lap Power or Average Power as a metric in that app, "Resume Later" will totally mess that value up.

  • Hi,
    
    I have installed AppBuilder 5 and AppBuilder 5+ to display and record RE on my Garmin fenix 6X. 
    It works nicely but I have one observation. Both data fields obviously write RE to the fit file.
    I can see the RE graphs in GC on my mobile phone. However, in GC on my PC,
    I can only see the RE graphs for AppBuilder 5 but not for AppBuilder 5+. One question: Is it possible to write the average RE for the whole run to the fit file? Best regards, Oliver
  • However, in GC on my PC,
    I can only see the RE graphs for AppBuilder 5 but not for AppBuilder 5+.

    Garmin has had lots of issues over the years with Connect IQ developer FIT fields being visible in the Connect app but not the website or vice versa. I don't have the thread handy, but somebody reported this issue recently, IIRC. You might want to get in touch with Garmin support (e.g. [email protected])

    One question: Is it possible to write the average RE for the whole run to the fit file?

    1) Calculate the average RE. For some metrics, the avg() function works fine for this. For other metrics (e.g. pace/speed), not so much (in the case of speed, using distance / time is a much better approach)

    2) Use the recordsummary() to record the average RE to the FIT field as a summary field (which applies to the entire activity.)

    Similarly, if you have a way to calculate the lap average RE(perhaps using lapavg()), you can use recordlap() to record that value as a lap field

  • I use AppBuilder 5+. Do I need to sacrifice a field to make use of recordsummary() or lapavg()?

  • No, you can use the semicolon (";") operator to evaluate multiple expressions for the same field. Only the final expression will be displayed. You can also use setv and getv to define the expression for your metric once, and reuse the same value several times in your formula.

    e.g. Let's say I have some weird calculated metric which is defined as 1/2 * hr. Suppose I want to record the activity average value, lap average value and current value (which will also be displayed).

    setv(1, 1/2 * hr); recordsummary(avg(getv(1))); recordlap(lapavg(getv(1))); record(getv(1))