From 5dc124b621ab05ba7dbde306a557947197941228 Mon Sep 17 00:00:00 2001 From: Sébastien Dailly Date: Sun, 27 Feb 2022 13:06:59 +0100 Subject: JS Update --- motus/js/fieldList.ml | 17 ++++++++++++----- motus/js/initialize.ml | 8 ++------ motus/js/next.ml | 2 +- motus/js/reload.ml | 2 +- 4 files changed, 16 insertions(+), 13 deletions(-) (limited to 'motus') diff --git a/motus/js/fieldList.ml b/motus/js/fieldList.ml index 428f364..26b89bb 100644 --- a/motus/js/fieldList.ml +++ b/motus/js/fieldList.ml @@ -61,6 +61,7 @@ let make : int -> (int * Jstr.t * Motus_lib.Validity.t) E.send -> elements = let validity = get_validity_from_element input in change_sender (i, El.prop El.Prop.value input, validity) ) (El.as_target input); + Ev.listen Ev.click (fun _ -> @@ -82,13 +83,17 @@ let set_with_props : State.proposition -> elements -> Motus_lib.Criteria.t list -> unit = fun current_prop fields rules -> let i = ref 0 in + List.iter2 current_prop fields ~f:(fun prop field -> - (* Check if we have a rule for this letter *) let wellplaced = - List.exists rules ~f:(function - | Motus_lib.Criteria.Contain (_, Some i') when !i = i' -> true - | _ -> false ) + match prop with + | None -> false + | Some v -> + let c = String.get (Jstr.to_string (fst v)) 0 in + let contain = Motus_lib.Criteria.Contain (c, Some !i) in + List.mem contain ~set:rules in + incr i; match (wellplaced, El.children field, prop) with @@ -101,12 +106,14 @@ let set_with_props : | _, hd :: _, None -> El.set_class (Jstr.v "wellplaced") false hd; El.set_class (Jstr.v "misplaced") false hd; - El.set_class (Jstr.v "missing") false hd + El.set_class (Jstr.v "missing") false hd; + El.set_at (Jstr.v "readonly") (Some (Jstr.v "false")) hd | false, hd :: _, Some (letter, validity) -> El.set_prop El.Prop.value letter hd; El.set_class (Jstr.v "wellplaced") false hd; El.set_class (Jstr.v "misplaced") false hd; El.set_class (Jstr.v "missing") false hd; + El.set_at (Jstr.v "readonly") (Some (Jstr.v "false")) hd; El.set_class (get_class validity) true hd | _, [], _ -> () ) diff --git a/motus/js/initialize.ml b/motus/js/initialize.ml index b721343..6a277df 100644 --- a/motus/js/initialize.ml +++ b/motus/js/initialize.ml @@ -40,12 +40,8 @@ let get_proposition : word |> String.to_seq |> Seq.map (fun c -> - let wellplaced = - List.exists rules ~f:(function - | Motus_lib.Criteria.Contain (_, Some i') when !i = i' -> - true - | _ -> false ) - in + let contain = Criteria.Contain (c, Some !i) in + let wellplaced = List.mem contain ~set:rules in incr i; let validity = match wellplaced with diff --git a/motus/js/next.ml b/motus/js/next.ml index e6baf51..f26aa86 100644 --- a/motus/js/next.ml +++ b/motus/js/next.ml @@ -37,4 +37,4 @@ let process : t -> State.state -> State.state = | None -> new_state | Some prop -> FieldList.set_with_props prop state.fields new_state.rules; - State.{ new_state with rules; current_prop = prop } + State.{ new_state with current_prop = prop } diff --git a/motus/js/reload.ml b/motus/js/reload.ml index ee9ab37..912141d 100644 --- a/motus/js/reload.ml +++ b/motus/js/reload.ml @@ -34,5 +34,5 @@ let process : t -> State.state -> State.state = match current_prop with | None -> new_state | Some prop -> - FieldList.set_with_props prop state.fields new_state.rules; + FieldList.set_with_props prop new_state.fields new_state.rules; State.{ new_state with current_prop = prop } -- cgit v1.2.3