diff options
author | Yorhel <git@yorhel.nl> | 2022-10-27 14:09:47 +0200 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2022-10-27 14:09:47 +0200 |
commit | db0310f80cea1a7bdf354bd90abf58a1247f86e7 (patch) | |
tree | b30bea16b3d4c0b85413ec6bd7cb8530bc3d16b8 /elm | |
parent | 36e50f041e8fd207e906cdc2ea1ef1a37ed46fa6 (diff) |
Add exclude lie trait filter to advanced search + expose lie field in API2
Diffstat (limited to 'elm')
-rw-r--r-- | elm/AdvSearch/Fields.elm | 16 | ||||
-rw-r--r-- | elm/AdvSearch/Traits.elm | 19 |
2 files changed, 23 insertions, 12 deletions
diff --git a/elm/AdvSearch/Fields.elm b/elm/AdvSearch/Fields.elm index ac3dbcca..b40f2b32 100644 --- a/elm/AdvSearch/Fields.elm +++ b/elm/AdvSearch/Fields.elm @@ -490,13 +490,15 @@ fields = , f C "Birthday" 0 FMBirthday AB.init AB.fromQuery , f C "Sex" 2 FMSex (AS.sexInit False) (AS.sexFromQuery False) , f C "" 0 FMSex (AS.sexInit True) (AS.sexFromQuery True) - , f C "Traits" 3 FMTrait AI.init (AI.fromQuery -1 True) - , f C "" 0 FMTrait AI.init (AI.fromQuery 0 True) - , f C "" 0 FMTrait AI.init (AI.fromQuery 1 True) - , f C "" 0 FMTrait AI.init (AI.fromQuery 2 True) - , f C "" 0 FMTrait AI.init (AI.fromQuery 0 False) - , f C "" 0 FMTrait AI.init (AI.fromQuery 1 False) - , f C "" 0 FMTrait AI.init (AI.fromQuery 2 False) + , f C "Traits" 3 FMTrait AI.init (AI.fromQuery -1 True False) + , f C "" 0 FMTrait AI.init (AI.fromQuery 0 True False) + , f C "" 0 FMTrait AI.init (AI.fromQuery 1 True False) + , f C "" 0 FMTrait AI.init (AI.fromQuery 2 True False) + , f C "" 0 FMTrait AI.init (AI.fromQuery 2 True True) + , f C "" 0 FMTrait AI.init (AI.fromQuery 0 False False) + , f C "" 0 FMTrait AI.init (AI.fromQuery 1 False False) + , f C "" 0 FMTrait AI.init (AI.fromQuery 2 False False) + , f C "" 0 FMTrait AI.init (AI.fromQuery 2 False True) , f C "Blood type" 0 FMBlood AS.init AS.bloodFromQuery , f C "Height" 0 FMHeight AR.heightInit AR.heightFromQuery , f C "Weight" 0 FMWeight AR.weightInit AR.weightFromQuery diff --git a/elm/AdvSearch/Traits.elm b/elm/AdvSearch/Traits.elm index 75289926..371a528e 100644 --- a/elm/AdvSearch/Traits.elm +++ b/elm/AdvSearch/Traits.elm @@ -19,12 +19,14 @@ type alias Model = , search : A.Model GApi.ApiTraitResult , spoiler : Int , inherit : Bool + , exclie : Bool } type Msg = Sel (S.Msg Int) | Spoiler | Inherit Bool + | ExcLie Bool | Search (A.Msg GApi.ApiTraitResult) @@ -37,6 +39,7 @@ init dat = , search = A.init "" , spoiler = dat.defaultSpoil , inherit = True + , exclie = False } ) @@ -45,8 +48,9 @@ update : Data -> Msg -> Model -> (Data, Model, Cmd Msg) update dat msg model = case msg of Sel m -> (dat, { model | sel = S.update m model.sel }, Cmd.none) - Spoiler -> (dat, { model | spoiler = if model.spoiler < 2 then model.spoiler + 1 else 0 }, Cmd.none) + Spoiler -> (dat, { model | spoiler = if model.spoiler < 2 then model.spoiler + 1 else 0, exclie = False }, Cmd.none) Inherit b -> (dat, { model | inherit = b }, Cmd.none) + ExcLie b -> (dat, { model | exclie = b }, Cmd.none) Search m -> let (nm, c, res) = A.update model.conf m model.search in case res of @@ -59,13 +63,13 @@ update dat msg model = toQuery m = S.toQuery (\o t -> let id = if m.inherit then 13 else 15 - in if m.spoiler == 0 then QInt id o t else QTuple id o t m.spoiler) m.sel + in if m.spoiler == 0 && not m.exclie then QInt id o t else QTuple id o t ((if m.exclie then 3 else 0) + m.spoiler)) m.sel -fromQuery spoil inherit dat q = +fromQuery spoil inherit exclie dat q = let id = if inherit then 13 else 15 f qr = case qr of QInt x op t -> if id == x && spoil == 0 then Just (op, t) else Nothing - QTuple x op t v -> if id == x && v == spoil then Just (op, t) else Nothing + QTuple x op t v -> if id == x && modBy 3 v == spoil && exclie == ((v // 3) == 1) then Just (op, t) else Nothing _ -> Nothing in S.fromQuery f dat q |> Maybe.map (\(ndat,sel) -> @@ -75,6 +79,7 @@ fromQuery spoil inherit dat q = , search = A.init "" , spoiler = spoil , inherit = inherit + , exclie = exclie } )) @@ -98,7 +103,11 @@ view dat model = [ text <| if model.spoiler == 0 then "no spoilers" else if model.spoiler == 1 then "minor spoilers" else "major spoilers" ] , linkRadio model.sel.neg (Sel << S.Neg) [ text "invert" ] ] - , div [ class "opts" ] [ span [] [], linkRadio model.inherit Inherit [ text "child traits" ] ] + , div [ class "opts" ] + [ if model.spoiler < 2 then span [] [] else + linkRadio model.exclie ExcLie [ text "exclude lies" ] + , linkRadio model.inherit Inherit [ text "child traits" ] + ] ] , ul [] <| List.map (\t -> li [ style "overflow" "hidden", style "text-overflow" "ellipsis" ] |