summaryrefslogtreecommitdiff
path: root/elm
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2022-10-27 14:09:47 +0200
committerYorhel <git@yorhel.nl>2022-10-27 14:09:47 +0200
commitdb0310f80cea1a7bdf354bd90abf58a1247f86e7 (patch)
treeb30bea16b3d4c0b85413ec6bd7cb8530bc3d16b8 /elm
parent36e50f041e8fd207e906cdc2ea1ef1a37ed46fa6 (diff)
Add exclude lie trait filter to advanced search + expose lie field in API2
Diffstat (limited to 'elm')
-rw-r--r--elm/AdvSearch/Fields.elm16
-rw-r--r--elm/AdvSearch/Traits.elm19
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" ]