From ca7597c20545ce1d4cdc7c453c347421b3f2e9ba Mon Sep 17 00:00:00 2001 From: Brian Hicks Date: Mon, 17 Feb 2020 20:08:21 -0600 Subject: [PATCH] simple layout --- src/Constraint.elm | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/src/Constraint.elm b/src/Constraint.elm index 80f130d..d7cf12e 100644 --- a/src/Constraint.elm +++ b/src/Constraint.elm @@ -15,23 +15,54 @@ type Model , positions : Dict Int Float -- margin, in pixels, to leave around comments - , margin : Int + , margin : Float } init : { heights : Dict Int Float , attachments : Dict Int Float - , margin : Int + , margin : Float } -> Model init { heights, attachments, margin } = Model { heights = heights , attachments = attachments - , positions = attachments + , positions = Dict.empty , margin = margin } + |> solveWithoutFocus + + +solveWithoutFocus : Model -> Model +solveWithoutFocus (Model guts) = + Model + { guts + | positions = + guts.attachments + |> Dict.toList + |> List.sortBy Tuple.second + |> List.foldl + (\( id, idealPosition ) ( finalPositions, progressLine ) -> + let + height = + Dict.get id guts.heights + |> Maybe.withDefault 0 + in + if Debug.log "ideal position" idealPosition >= Debug.log "progress line" progressLine then + ( Dict.insert id idealPosition finalPositions + , idealPosition + height + guts.margin + ) + + else + ( Dict.insert id progressLine finalPositions + , progressLine + height + guts.margin + ) + ) + ( Dict.empty, 0 ) + |> Tuple.first + } positions : Model -> Dict Int Float