Ok - disregard my comment on the seconds, was a little bit to hasty there. Here is a gist <https://gist.github.com/madsflensted/083e8555ada9db4c8b324f7e79eabd0f> that will fetch the time from your API and decode it.
On Tue, Jun 14, 2016 at 9:50 PM, Mads Flensted-Urech <[email protected] > wrote: > 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.
