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
    125 Posts 33 Posters 9.3k Views 31 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.
    • H Offline
      harry08 Bronze Member @ook
      last edited by

      @ook
      Hi, I have the same problem.
      Running on a MacBook Air with newest OS.

      1 Reply Last reply Reply Quote 0
      • brechtvbB Offline
        brechtvb Bronze Member @Strulian
        last edited by

        @Strulian Hello

        i was hoping to implement this myself, but the public available api from spotify does not allow to download anything - for obvious reasons.

        I don’t think suunto today allows to store large data on the watch itself (although a race s already has 32gb free storage).

        For Garmin, spotify made the app themselves. Perhaps Suunto can persuade spotify to make the app themselves.

        But, another thing is lacking: we cannot link wireless earbuds with the Race S/2.

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

          Hello @harry08 .

          would like to have small portions of the UI visible depending on logic.

          The uiViewSet element is exactly what you are looking for. It allows you to programmatically switch portions of a template without duplicating everything

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

            @ook @harry08

            Is anyone else having trouble taking screenshots?

            This is an unfortunate bug in the latest release (as mentioned in our simulator post). No ETA on the fix, but the dev team is aware of this issue 😌

            1 Reply Last reply Reply Quote 0
            • Nikolai SimonovN Offline
              Nikolai Simonov @SuuntoPartnerTeam
              last edited by

              @SuuntoPartnerTeam

              Is there any way to restrict installation to certain devices via the manifest or somewhere else?

              For example, my app is designed only for watches that support entering user settings, and I want to prevent it from being installed via the SuuntoPlus Store on devices that don’t support them (like the Suunto 9 Baro or non-PRO Peak models).

              Suunto Race 2 Ti
              Suunto Race
              Suunto 9 Baro

              Suunto Aqua
              Suunto Wings

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

                @Egika Honestly, this is the first time our forum team has seen icons used in that way and we don’t know what could have changed to make your formatting (with an added <div class="f-ico"></div> around) only work in the simulator. You might just have to implement additional setText() logic in your code. The Dynamic Icons example may be of use.

                Raimo JärviR 1 Reply Last reply Reply Quote 1
                • Manuel ExtremeM Offline
                  Manuel Extreme Silver Members
                  last edited by

                  I hope it’s not too stupid: where can I find the documentation?

                  Vertical 2 v2.53.42

                  Nikolai SimonovN 1 Reply Last reply Reply Quote 0
                  • Nikolai SimonovN Offline
                    Nikolai Simonov @Manuel Extreme
                    last edited by

                    @Manuel-Extreme cmd+shift+P -> suuntoPlus: open documentation

                    Suunto Race 2 Ti
                    Suunto Race
                    Suunto 9 Baro

                    Suunto Aqua
                    Suunto Wings

                    Manuel ExtremeM 1 Reply Last reply Reply Quote 1
                    • Manuel ExtremeM Offline
                      Manuel Extreme Silver Members @Nikolai Simonov
                      last edited by

                      @Nikolai-Simonov I knew it… I knew it was stupid 😄 I’m not familiar with VS Code…

                      Vertical 2 v2.53.42

                      1 Reply Last reply Reply Quote 0
                      • Raimo JärviR Offline
                        Raimo Järvi @SuuntoPartnerTeam
                        last edited by

                        @SuuntoPartnerTeam Why wouldn’t it work, @egika is doing basically the same as this example in documentation: <eval input="/Settings/Unit/UnitsMode" outputFormat="keyValue 0=Metric!|1=Imperial!" />. Just with icon font and different texts in keyValue formatter. This for example works fine in my Vertical:

                        <div class="f-ico" style="top:calc(50% - 50%e);left:calc(50% - 50%e);">
                          <eval input="/Fusion/Altitude/PressureTrend"
                              outputFormat="keyValue 1=&#xF280;|2=&#xF281;|3=&#xF282;|4=&#xF283;|5=&#xF284;|6=&#xF285;|7=&#xF286;|8=&#xF287;|9=&#xF288;" />
                        </div>
                        

                        If input value is not one of the expected values for some reason, changing formatting method doesn’t help.

                        Pragmatic Programmer

                        EgikaE 1 Reply Last reply Reply Quote 2
                        • Manuel ExtremeM Offline
                          Manuel Extreme Silver Members
                          last edited by

                          I built an app that measures all my swim drills (when arms aren’t used), but I discovered that the distance measured by the app cannot be added to the distance tracked by the device… so it’s not possible to save the swim workout with the combined distance of the automatically recorded data and the drills tracked by the app.
                          Is that correct?

                          Vertical 2 v2.53.42

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

                            @suuntopartnerteam In the examples I noticed that I could pass parameters to the html file from the getUserInterface() function.

                            I’m trying to pass the default index of a uiViewSet like this:

                            main.js

                            function getUserInterface(input) {
                              return { 
                                template: "t",
                                uiViewSet:{index: input}
                               };
                            }
                            

                            t.html

                            <uiView onLoad="navigate('#uiViewSet1', {zapp_uiViewSet_index});">
                            

                            This works fine in the simulator, but the watch crashes immediately when I select the app, The logs show a syntax error 5 as well.
                            If I add {zapp_uiViewSet_index} to a textfield, I noticed that te simulator resolves it to a value like 1, 2 etc, while the watch resolves it as the string “{zapp_uiViewSet_index}”

                            Is there any way to achieve this by passing parameters to the html file?

                            Suunto Vertical Titanium Solar
                            OnePlus Nord 4

                            S Raimo JärviR 2 Replies Last reply Reply Quote 0
                            • EgikaE Offline
                              Egika Platinum Member @Raimo Järvi
                              last edited by Egika

                              @Raimo-Järvi said in [Question] No stupid questions - ask anything here:

                              @SuuntoPartnerTeam Why wouldn’t it work, @egika is doing basically the same as this example in documentation: <eval input="/Settings/Unit/UnitsMode" outputFormat="keyValue 0=Metric!|1=Imperial!" />. Just with icon font and different texts in keyValue formatter. This for example works fine in my Vertical:

                              <div class="f-ico" style="top:calc(50% - 50%e);left:calc(50% - 50%e);">
                                <eval input="/Fusion/Altitude/PressureTrend"
                                    outputFormat="keyValue 1=&#xF280;|2=&#xF281;|3=&#xF282;|4=&#xF283;|5=&#xF284;|6=&#xF285;|7=&#xF286;|8=&#xF287;|9=&#xF288;" />
                              </div>
                              

                              If input value is not one of the expected values for some reason, changing formatting method doesn’t help.

                              Hi Raimo!
                              Good to see you here!

                              Just found the difference: I was using class=“f-ico-l” (no idea if there ever was an L version of the icons.
                              This does not work. with class=“f-ico” it is working as designed.

                              t6, S6, Elementum Terra, Ambit 3 Sapphire, Spartan Ultra Copper, Traverse Alpha, S7 Graphite LE, S9B Ambassador, S9P Titanium, S9PP Titanium, Vertical All Black, Race Titanium Charcoal, Race S Titanium Courtney, Run Lime, Race 2, Vertical 2 Titanium

                              1 Reply Last reply Reply Quote 1
                              • B Offline
                                B4sti2n
                                last edited by

                                Hello,
                                First of all, thank you for giving us the opportunity to create our own apps !
                                I’d like to create an improved ghost runner app, with the possibility to choose a previous activity (or a gpx file from a friend from example), and run against this activity.
                                Is there a way to retrieve the GPX data from the navigated route ?
                                I saw that I can use /Navigation/Routes/NavigatedRoute/DistanceToDestination or /Navigation/Routes/NavigatedRoute/Position to get the position relative to the navigated route, but I would also need the timestamps of the navigated route.

                                Is there a way to achieve that ?

                                Thanks

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

                                  Update: it works since new watch update (option to enable touch screen during activity).

                                  @SuuntoPartnerTeam

                                  I’m having trouble getting this to work on my device 😕. I then found this comment to see if I can figure it out but no.
                                  It works fine in the simulator, but not on my Suunto Race S.

                                  Here’s the relevant part of my code:
                                  <uiViewSet id=“prevIntSet” onTap=“$.put(‘/Zapp/{zapp_index}/Event’, 2, null, ‘int32’)”>

                                  In my JavaScript, I handle event ID 2 and update a variable that switches between different uiViewSet views. However, it seems like the tap interaction isn’t triggering anything on the watch.

                                  I also checked the settings on my Race S but couldn’t find anything that might be blocking this behavior.
                                  One thing I noticed: when the screen dims, tapping doesn’t seem to do anything at all—except on the map screen, where it wakes the display. This makes me wonder if there’s a setting or limitation that completely disables tap events in a SuuntoPlus app.

                                  Has anyone encountered this or knows if there’s a specific setting I might be missing?

                                  Thanks in advance!

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

                                    @surfboomerang No comment on getting the runtime token working outside of <eval>, but in case it’s of any help, an alternative, more standard solution might be:

                                    function getUserInterface() {
                                      output.index = ??? // here or somewhere else'
                                      return { 
                                        template: "t"
                                       };
                                    }
                                    
                                    

                                    and

                                    <uiView onLoad="
                                      function change(idx) {
                                        navigate('#uiViewSet1', idx)
                                      }
                                      $.get('Zapp/{zapp_index}/Output/index', change);
                                    ">
                                    
                                    1 Reply Last reply Reply Quote 1
                                    • S Offline
                                      SuuntoPartnerTeam @Thibault B.
                                      last edited by

                                      @Thibault-B. Are you absolutely sure you have touch enabled? Sounds like you are doing an exercise which has the touch options ‘Map Only’, ‘On’ or ‘Off’ and yours is on ‘Map Only’. You can switch it to ‘On’ either via ‘Exercise options’ before starting the exercise or by holding the down button during the exercise to open the control panel.

                                      And just for clarity, this works on the original Race:

                                      <uiViewSet id="uiViewSet1" onTap="$.put('/Zapp/{zapp_index}/Event', 2, null, 'int32')"
                                           style="top: 50%; left: 50%; width: 150px; height: 150px; background-color: red;">
                                            <div>lol</div>
                                            <div>lel</div>
                                          </uiViewSet>
                                      
                                      function onEvent(_inp, _out, event) {
                                        if (event == 2) {
                                          next("#uiViewSet1", event);
                                        }
                                      }
                                      

                                      As an aside, this is also why using touch events is a bit problematic, since they often aren’t ‘On’ for many watch users.

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

                                        @suuntopartnerteam I am working with a sprite map currently and have two approaches where I would need some guidance on:

                                        Is it better to have a bigger sprite map with different permutations of individual elements or is it better to have a smaller map with each element as individual sprite but more <img> tags in the HTML?

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

                                          Update: it works since new watch update (option to enable touch screen during activity).

                                          @SuuntoPartnerTeam Thanks for your reply.

                                          I tested your code in a fresh default project created from scratch. It works correctly in the simulator, but still not on my Suunto Race S.

                                          I also reviewed the watch settings. The only options that seem potentially related to the touchscreen are “Do Not Disturb” and display settings (AOD, full wake-up), and both are configured correctly.

                                          In my case, the touch event is not critical—it’s mainly a nice-to-have feature used to manually cycle through data, which already rotates automatically every few seconds.

                                          1 Reply Last reply Reply Quote 0
                                          • Raimo JärviR Offline
                                            Raimo Järvi @surfboomerang
                                            last edited by

                                            @surfboomerang said in [Question] No stupid questions - ask anything here:

                                            I’m trying to pass the default index of a uiViewSet like this:

                                            main.js

                                            function getUserInterface(input) {
                                              return { 
                                                template: "t",
                                                uiViewSet:{index: input}
                                               };
                                            }
                                            

                                            This is assigning all input resource values (i.e an array) to index, perhaps that’s not what you’re looking for? You could use an individual input or output value, e.g.:

                                            function getUserInterface(_input, output) {
                                              return { 
                                                template: "t",
                                                uiViewSet: { index: output.index }
                                              };
                                            }
                                            

                                            There also seems to be some string case conversion going on, I only get it to work if I use all lowercase {zapp_uiviewset_index} in HTML.

                                            Perhaps the more standard solution in the previous answer is better, but using input or output values is also possible.

                                            Also, if you return uiViewSet:{index: input}, the minified JavaScript code will be: return{template:'t',uiViewSet:{index:input}}. This seems incorrect, because input variable doesn’t exist in the minified code. Maybe there’s no use case for this, but looks like a JavaScript conversion / minifier bug anyway.

                                            Pragmatic Programmer

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

                                            Suunto Terms | Privacy Policy