aboutsummaryrefslogtreecommitdiff
path: root/src/config.ml
diff options
context:
space:
mode:
Diffstat (limited to 'src/config.ml')
-rw-r--r--src/config.ml94
1 files changed, 0 insertions, 94 deletions
diff --git a/src/config.ml b/src/config.ml
deleted file mode 100644
index f8e20f9..0000000
--- a/src/config.ml
+++ /dev/null
@@ -1,94 +0,0 @@
-(* Model *)
-
-type config = {
- prepare : int;
- tabatas : int;
- cycles : int;
- work : int;
- rest : int;
-}
-
-(* State *)
-
-let config = ref { prepare = 10; tabatas = 4; cycles = 8; work = 20; rest = 10 }
-
-let onStart : (unit -> unit) ref = ref (fun () -> ())
-
-(* Elements *)
-
-let formElt = Document.querySelectorUnsafe "#g-Form"
-
-let prepareElt = Document.querySelectorUnsafe "#g-Form__Prepare"
-
-let tabatasElt = Document.querySelectorUnsafe "#g-Form__Tabatas"
-
-let cyclesElt = Document.querySelectorUnsafe "#g-Form__Cycles"
-
-let workElt = Document.querySelectorUnsafe "#g-Form__Work"
-
-let restElt = Document.querySelectorUnsafe "#g-Form__Rest"
-
-let durationElt = Document.querySelectorUnsafe "#g-Form__DurationValue"
-
-(* Duration *)
-
-let getDuration () =
- let { prepare; tabatas; cycles; work; rest } = !config in
- tabatas * (prepare + (cycles * (work + rest)))
-
-let writeDuration () =
- let duration = getDuration () in
- Element.setInnerText durationElt (Duration.prettyPrint duration)
-
-(* Write to DOM *)
-
-let writeToDom () =
- let () = Element.setValue prepareElt (Js.Int.toString !config.prepare) in
- let () = Element.setValue tabatasElt (Js.Int.toString !config.tabatas) in
- let () = Element.setValue cyclesElt (Js.Int.toString !config.cycles) in
- let () = Element.setValue workElt (Js.Int.toString !config.work) in
- let () = Element.setValue restElt (Js.Int.toString !config.rest) in
- writeDuration ()
-
-(* Update from DOM *)
-
-let listenTo inputElt update =
- Element.addEventListener inputElt "input" (fun e ->
- match
- EventTarget.value (Event.target e) |> Option.flatMap Belt.Int.fromString
- with
- | Some n ->
- let () = config := update !config n in
- writeDuration ()
- | None -> ())
-
-let listenToChanges () =
- let () = listenTo prepareElt (fun config n -> { config with prepare = n }) in
- let () = listenTo tabatasElt (fun config n -> { config with tabatas = n }) in
- let () = listenTo cyclesElt (fun config n -> { config with cycles = n }) in
- let () = listenTo workElt (fun config n -> { config with work = n }) in
- listenTo restElt (fun config n -> { config with rest = n })
-
-(* Setup *)
-
-let setup onTimerStart =
- let () = onStart := onTimerStart in
- let () = writeToDom () in
- listenToChanges ()
-
-(* Start *)
-
-let startTimer () =
- let () = Element.setStyle formElt "display: none" in
- !onStart ()
-
-(* Hide / show *)
-
-let show () = Element.setStyle formElt "display: flex"
-
-let hide () = Element.setStyle formElt "display: none"
-
-let () =
- Element.addEventListener formElt "submit" (fun e ->
- let () = Event.preventDefault e in
- !onStart ())