Suunto app Forum Suunto Community Forum
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login

    [Question] No stupid questions - ask anything here

    Scheduled Pinned Locked Moved Suunto Plus Development
    75 Posts 24 Posters 3.4k Views 24 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • ookO Offline
      ook @Tomas5
      last edited by

      @Tomas5 thanks Tomas I tried your method, it just return 0 to me, but i find out if ur ui is big enough it will able to scroll down,dont have to do anything.

      S 1 Reply Last reply Reply Quote 1
      • Thibault B.T Offline
        Thibault B.
        last edited by

        Hello,

        What I want to do is quite simple but I do lack experience with JS, and it has been a long time since I developed in HTML.

        I would appreciate your help :). I want to override down button press to make a lap type 24, but only if activity is ongoing. If it is paused I want the default behavior (stop activity).

        In my html:

        <userInput>
              <pushButton name="down" onClick="$.put('/Zapp/{zapp_index}/Event', 123, null, 'int32');" />
        </userInput>
        

        In my js:

        function onEvent(input, output, eventId) {
          if (eventId == 123) {
            // Down button was pressed
            $.put('Activity/Trigger', 24);
          }
        }
        

        I was thinking of conditioning the HTML onClick but do not really know how to access necessary variables, etc. I have tried a few things but I am lost.

        U 1 Reply Last reply Reply Quote 0
        • U Offline
          Unpaired8373 @Thibault B.
          last edited by

          @Thibault-B. There is an example in the examples collection. Essentially have a global variable that is set in the start-handler and unset in the stop-handler and then handle the condition in you event

          Thibault B.T 1 Reply Last reply Reply Quote 0
          • Thibault B.T Offline
            Thibault B. @Unpaired8373
            last edited by

            @Unpaired8373 Not sure to get what you mean.

            function onEvent(input, output, eventId) {
              if (eventId == 123 && output.isPaused == 0) {
                // Down button was pressed
                $.put('Activity/Trigger', 24);
              }
            }
            

            It is not triggering the lap but it is not doing anything else and I wanted to default to initial behavior (so I didn’t want an explicit call to stop, which seems anyway not available?).

            Thibault B.T 1 Reply Last reply Reply Quote 0
            • Thibault B.T Offline
              Thibault B. @Thibault B.
              last edited by

              I think the issue is that I override the onClick action, so I should keep it empty if in pause. But I do not know how to do it.

              S 1 Reply Last reply Reply Quote 0
              • surfboomerangS Online
                surfboomerang
                last edited by

                I’m working on an app for speedsurfers :

                f78a673a-e1d4-4991-9c48-b6f793e3c88e-image.png

                I struggle a little bit with the Alpha category.
                According to the gps-speedsurfing rules the Alpha category is the speed over 500m, including a gybe (180 degree turn), and the start and endpoint needs to be within 50m of eachother.

                To determine if there was a gybe, I thought about recording the direction for each second, but I noticed that isn’t available as parameter.
                So the only other option I see is derive the direction from the coordinates, but that includes some calculations.

                Any other ideas?

                Suunto Vertical Titanium Solar
                OnePlus Nord 4

                1 Reply Last reply Reply Quote 0
                • U Offline
                  Unpaired8373
                  last edited by

                  Is it expected that even an example app crashes the watch with a Syntax Error ?

                  After having my own app crash - and almost brick the watch or at least having it perform a fault recovery for a couple of minutes - I thought I reduce the app to a bare minimum and work from there but even that crashes the watch. I then copied the Dynamic Icons example but still get the crash log below:

                  #2670816 22.03.2026 18:43:43 : ERR UI_FRAMEWORK : JS:0x8258be29:SyntaxError: 5
                  #2670817 22.03.2026 18:43:43 : ERR APPLICATION : Thread state: name:ui
                  #2670818 22.03.2026 18:43:43 : ERR APPLICATION : CtxDog n:ui s:0 pc:0 lr:0
                  #2670819 22.03.2026 18:43:43 : ERR APPLICATION : CtxDog n:UI s:1 pc:78e9c lr:81ab1
                  #2670820 22.03.2026 18:43:43 : ERR APPLICATION : CtxDog n:ID s:1 pc:9b6d6 lr:84a15
                  #2670821 22.03.2026 18:43:43 : ERR APPLICATION : CtxDog n:BL s:2 pc:6c324 lr:6c15b
                  #2670822 22.03.2026 18:43:43 : ERR APPLICATION : CtxDog n:nV s:2 pc:6c324 lr:6c15b
                  #2670823 22.03.2026 18:43:43 : ERR APPLICATION : CtxDog n:Nt s:2 pc:6c324 lr:6c15b
                  #2670824 22.03.2026 18:43:43 : ERR APPLICATION : CtxDog n:WI s:2 pc:6c324 lr:6c15b
                  #2670825 22.03.2026 18:43:43 : ERR APPLICATION : CtxDog n:lo s:2 pc:84020 lr:84051
                  #2670826 22.03.2026 18:43:43 : ERR APPLICATION : CtxDog n:Po s:2 pc:6c324 lr:6c15b
                  #2670827 22.03.2026 18:43:43 : ERR APPLICATION : CtxDog n:WB s:2 pc:9b6d6 lr:84a5b
                  #2670828 22.03.2026 18:43:43 : ERR APPLICATION : CtxDog n:Ap s:2 pc:9b6d6 lr:84a5b
                  #2670829 22.03.2026 18:43:43 : ERR APPLICATION : CtxDog n:me s:2 pc:9b6d6 lr:84a5b
                  #2670830 22.03.2026 18:43:43 : ERR APPLICATION : CtxDog n:Tm s:2 pc:b6aca lr:84a15
                  #2670831 22.03.2026 18:43:43 : ERR APPLICATION : CtxDog n:Se s:2 pc:6c324 lr:6c15b
                  #2670832 22.03.2026 18:43:43 : ERR APPLICATION : CtxDog n:hc s:2 pc:6c324 lr:6c051
                  #2670833 22.03.2026 18:43:43 : ERR APPLICATION : CtxDog n:DS s:2 pc:6c324 lr:6c051
                  #2670834 22.03.2026 18:43:43 : ERR APPLICATION : CtxDog n:us s:2 pc:6c320 lr:6c051
                  #2670835 22.03.2026 18:43:43 : TRC UI_FRAMEWORK : wuiDump Assert peFunctionCombiner.cpp:302
                  #2670836 22.03.2026 18:43:43 : EVT MAPS : Tile sz=29840, x17435, y11374, z15
                  #2670837 22.03.2026 18:43:43 : TRC MAPS : Req[0] result: Code=OK
                  #2670838 22.03.2026 18:43:43 : TRC MAPS : Req[0] handle: clientID=1, handle=1153598804039951724, r
                  #2670839 22.03.2026 18:43:43 : EVT TRAININGLAB : TLab: Input source 0 timeout
                  #2670840 22.03.2026 18:43:43 : EVT TRAININGLAB : TLab: Active input source 3
                  #2670841 22.03.2026 18:43:45 : EVT EXT_FLASH : ExtFID 0xc2,0x25,0x39
                  #2670842 22.03.2026 18:43:45 : ERR FAULT : A302:duktapeFunctionCombiner.cpp
                  #2670843 22.03.2026 18:43:45 : EVT BOOTLOOP : Faultcom c:fa017c01 ts:1774201322 n:1774201425
                  

                  As a side-note: I really like the naming of the internal code files 🙂

                  1 Reply Last reply Reply Quote 1
                  • S Offline
                    SuuntoPartnerTeam @Unpaired8373
                    last edited by

                    Hi @Unpaired8373 ,

                    Does the watches JS-runtime support WASM by any chance?

                    Wasm is not available!

                    Is it expected that even an example app crashes the watch with a Syntax Error ? … I then copied the Dynamic Icons example but still get the crash log below

                    That is not expected behaviour 😃 I just now checked the Dynamic Icons example on both a Race 1 and a 9 Peak Pro. Neither crashed during an exercise. Best advice that comes to mind is to first make sure the watch is running the latest firmware.

                    Running JS inside an HTML template can be a bit finicky and seems to have the highest potential for crashes at present.

                    U 1 Reply Last reply Reply Quote 0
                    • S Offline
                      SuuntoPartnerTeam @ook
                      last edited by

                      @ook

                      guys I need help, anyone know how to use the crown/middle button to scroll to the next ui?

                      We do not presently have a way to capture scrolling events, but as you found…

                      i find out if ur ui is big enough it will able to scroll down,dont have to do anything.

                      … the watch will automatically attempt to scroll elements with the crown 🙂

                      1 Reply Last reply Reply Quote 0
                      • S Offline
                        SuuntoPartnerTeam @Thibault B.
                        last edited by SuuntoPartnerTeam

                        @Thibault-B.

                        I think the issue is that I override the onClick action, so I should keep it empty if in pause. But I do not know how to do it.

                        One possible way is to use the uiViewSet in combination with userInput. Simple example:

                        <uiView>
                        
                          <div>
                            <!-- The set allows toggling the capture of 'down' -->
                            <uiViewSet id="test">
                              <!-- First set element -->
                              <div>
                                <userInput>
                                  <!-- systemEvent prints into OUTPUT when running in the simulator -->
                                  <pushButton name="down" onClick="systemEvent('Hello world')"/>
                                </userInput>
                              </div>
                              <!-- Second set element -->
                              <div>
                                <!-- Here nothing gets printed -->
                              </div>
                            </uiViewSet>
                        
                            <!-- Press 'up' to enable/disable the capture of 'down' -->
                            <userInput>
                              <pushButton name="up" onClick="next('#test')"/>
                            </userInput>
                        
                          </div>
                        
                        </uiView>
                        

                        Edit. Just to add, you would probably then want onExercisePause() to do the toggling of the set

                        Thibault B.T 1 Reply Last reply Reply Quote 0
                        • Thibault B.T Offline
                          Thibault B. @SuuntoPartnerTeam
                          last edited by

                          @SuuntoPartnerTeam Nice! Thank you.
                          I toggle the capture in the onExercisePause, onExerciseStart, etc as you recommended in your edit.

                          1 Reply Last reply Reply Quote 1
                          • U Offline
                            Unpaired8373 @SuuntoPartnerTeam
                            last edited by

                            @SuuntoPartnerTeam Thanks for the reply on a Sunday.

                            I am testing with a Race S if that makes a difference. The firmware is the most recent one according to the watch menu (v2.50.28). Also I ran the mountaineering activity (or what it is called in english language setting) with no GPS fix (ignore and continue when prompted).

                            1 Reply Last reply Reply Quote 1
                            • First post
                              Last post

                            Suunto Terms | Privacy Policy