Hi Eduardo. the easiest way to get one-time configuration from the JS world is via the progamWithFlags , see the docs here: http://package.elm-lang.org/packages/elm-lang/html/1.0.0/Html-App#programWithFlags
I know it is not a direct answer to your question of making HTTP requests. But it may get you going. Otherwise follow the HTTP section of the Elm guide <http://guide.elm-lang.org/architecture/effects/http.html> I just briefly looked over your code, and it seems that you are really only using the *seconds* to update your model, so you could probably get by with simply JSON decoding the seconds returned from your API. On Tue, Jun 14, 2016 at 6:35 PM, Eduardo Cuducos <[email protected]> wrote: > Hi all, > > I'm a newbie in Elm — and I already love it. Is this list suitable for > beginners with (probably the silliest) doubts? If not, my apologies, delete > this email and move on ; ) > > I'm writing a stopwatch > <https://github.com/cuducos/cunhajacaiu/blob/elm/cunhajacaiu/static/elm/Stopwatch.elm> > to study Elm — replacing something in a legacy tiny project that used to be > in ReactJS. (In other news: this study project made me write a webassets > filter to compile Elm > <https://twitter.com/cuducos/status/742698891343204353> files, hello > Python world). > > The stopwatch itself is working fine. I load it in the proper DOM element > and it starts counting seconds, minutes, hours, days etc… > > However I would like to set a starting count for the stopwatch — that is > to say, instead of staring with* 0 days, 0 hours, 0 minutes and 0 seconds*, > I would like it to start with (for example) *33 days, 20 hours, 17 > minutes and 45 seconds*. > > I would load this data from an API > <http://www.cunhajacaiu.com.br/api/stopwatch/> (JSON) or from the DOM > itself: > > <div id="stopwatch" > data-days="57" > data-hours="13" > data-minutes="7" > data-seconds="2"> > ... > </div> > > First I thought that loading from the API was easier, but to run the HTTP > request and parse the JSON was a bit troublesome for a beginner. > > Then I tried to use *ports*: I defined a ports module, but couldn't get > my types right. For examples, one of the things I tried: > > -- snippet from ports module > port load : { days: Int , hours: Int , minutes: Int , seconds: Int } -> Cmd > > Got me: > > 4| port load : { days: Int , hours: Int , minutes: Int , seconds: Int } -> > Cmd > > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > You are saying it should be: > > { days : Int, hours : Int, minutes : Int, seconds : Int } > -> Platform.Cmd.Cmd > > But you need to use the particular format described here: > <http://guide.elm-lang.org/effect_managers/> > > And honestly I couldn't figure out how this URL would help me. > > Just in case, In my Javascript I had: > > var stopwatchContainer = document.getElementById('stopwatch'); > if (stopwatchContainer !== null) { > var app = Elm.Stopwatch.embed(stopwatchContainer); > app.ports.load.send(stopwatchContainer.dataset); > } > > Any idea on how to implement that (whether it is via API or ports)? > Replies, links, chats, pair programming, pull requests… anything is more > than welcomed ; ) > > Many thanks, > > Eduardo Cuducos > http://cuducos.me/ > > -- > You received this message because you are subscribed to the Google Groups > "Elm Discuss" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Elm Discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
