diff options
author | Yorhel <git@yorhel.nl> | 2020-12-13 11:55:41 +0100 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2020-12-13 11:55:41 +0100 |
commit | c52d6069ede8f995cc5d2eb09f93dbe66c2cfea7 (patch) | |
tree | e9b978c4d069d944165841a2f4d57df7961957a7 /elm | |
parent | 5348ad6ecf86ba6c840a55567bebaba4a944adb0 (diff) |
AdvSearch: Merge character sex & sex-spoiler filters
Diffstat (limited to 'elm')
-rw-r--r-- | elm/AdvSearch/Fields.elm | 19 | ||||
-rw-r--r-- | elm/AdvSearch/Set.elm | 55 |
2 files changed, 37 insertions, 37 deletions
diff --git a/elm/AdvSearch/Fields.elm b/elm/AdvSearch/Fields.elm index 3bace2bb..82f5fa3e 100644 --- a/elm/AdvSearch/Fields.elm +++ b/elm/AdvSearch/Fields.elm @@ -239,8 +239,7 @@ type FieldModel | FMLength (AS.Model Int) | FMRole (AS.Model String) | FMBlood (AS.Model String) - | FMSexChar (AS.Model String) - | FMSexSpoil (AS.Model String) + | FMSex (AS.SexModel) | FMMedium (AS.Model String) | FMVoiced (AS.Model Int) | FMAniEro (AS.Model Int) @@ -276,8 +275,7 @@ type FieldMsg | FSLength (AS.Msg Int) | FSRole (AS.Msg String) | FSBlood (AS.Msg String) - | FSSexChar (AS.Msg String) - | FSSexSpoil (AS.Msg String) + | FSSex AS.SexMsg | FSMedium (AS.Msg String) | FSVoiced (AS.Msg Int) | FSAniEro (AS.Msg Int) @@ -380,8 +378,8 @@ fields = , f C "Role" 1 FMRole AS.init AS.roleFromQuery , f C "Age" 0 FMAge AR.ageInit AR.ageFromQuery - , f C "Sex" 2 FMSexChar AS.init (AS.sexFromQuery AS.SexChar) - , f C "Sex (spoiler)" 0 FMSexSpoil AS.init (AS.sexFromQuery AS.SexSpoil) + , 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) , f C "" 0 FMTrait AI.init (AI.fromQuery 0) , f C "" 0 FMTrait AI.init (AI.fromQuery 1) @@ -440,8 +438,7 @@ fieldUpdate dat msg_ (num, dd, model) = (FSLength msg, FMLength m) -> maps FMLength (AS.update msg m) (FSRole msg, FMRole m) -> maps FMRole (AS.update msg m) (FSBlood msg, FMBlood m) -> maps FMBlood (AS.update msg m) - (FSSexChar msg, FMSexChar m) -> maps FMSexChar (AS.update msg m) - (FSSexSpoil msg, FMSexSpoil m) -> maps FMSexSpoil (AS.update msg m) + (FSSex msg, FMSex m) -> maps FMSex (AS.sexUpdate msg m) (FSMedium msg, FMMedium m) -> maps FMMedium (AS.update msg m) (FSVoiced msg, FMVoiced m) -> maps FMVoiced (AS.update msg m) (FSAniEro msg, FMAniEro m) -> maps FMAniEro (AS.update msg m) @@ -502,8 +499,7 @@ fieldView dat (_, dd, model) = FMLength m -> f FSLength (AS.lengthView m) FMRole m -> f FSRole (AS.roleView m) FMBlood m -> f FSBlood (AS.bloodView m) - FMSexChar m -> f FSSexChar (AS.sexView AS.SexChar m) - FMSexSpoil m -> f FSSexSpoil (AS.sexView AS.SexSpoil m) + FMSex m -> f FSSex (AS.sexView m) FMMedium m -> f FSMedium (AS.mediumView m) FMVoiced m -> f FSVoiced (AS.voicedView m) FMAniEro m -> f FSAniEro (AS.animatedView False m) @@ -543,8 +539,7 @@ fieldToQuery dat (_, _, model) = FMLength m -> AS.toQuery (QInt 5) m FMRole m -> AS.toQuery (QStr 2) m FMBlood m -> AS.toQuery (QStr 3) m - FMSexChar m -> AS.toQuery (QStr 4) m - FMSexSpoil m -> AS.toQuery (QStr 5) m + FMSex (s,m) -> AS.toQuery (QStr (if s then 5 else 4)) m FMMedium m -> AS.toQuery (QStr 11) m FMVoiced m -> AS.toQuery (QInt 12) m FMAniEro m -> AS.toQuery (QInt 13) m diff --git a/elm/AdvSearch/Set.elm b/elm/AdvSearch/Set.elm index cbb7c6b8..a3000a3b 100644 --- a/elm/AdvSearch/Set.elm +++ b/elm/AdvSearch/Set.elm @@ -230,36 +230,41 @@ bloodFromQuery = fromQuery (\q -> -- Sex / gender -type SexType - = SexChar -- chars sex - | SexSpoil -- chars sex-spoil - | SexGender -- staff gender - -sexView stype model = - let lbl = case stype of - SexChar -> "Sex" - SexSpoil -> "Spoiler-sex" - SexGender -> "Gender" - in +type alias SexModel = (Bool, Model String) + +type SexMsg = SexSpoil | SexSel (Msg String) + +sexInit spoil dat = init dat |> Tuple.mapSecond (\m -> (spoil,m)) + +sexFromQuery spoil dat qf = Maybe.map (Tuple.mapSecond (\m -> (spoil,m))) <| fromQuery (\q -> + case (spoil, q) of + (False, QStr 4 op v) -> Just (op, v) + (True, QStr 5 op v) -> Just (op, v) + _ -> Nothing) dat qf + +sexUpdate msg (spoil,model) = + case msg of + SexSpoil -> (not spoil, model) + SexSel m -> (spoil, update m model) + +sexView (spoil,model) = ( case Set.toList model.sel of - [] -> b [ class "grayedout" ] [ text lbl ] - [v] -> span [ class "nowrap" ] [ lblPrefix model, text <| lbl ++ ": " ++ Maybe.withDefault "" (lookup v GT.genders) ] - l -> span [] [ lblPrefix model, text <| lbl ++ " (" ++ String.fromInt (List.length l) ++ ")" ] + [] -> b [ class "grayedout" ] [ text "Sex" ] + [v] -> span [ class "nowrap" ] [ lblPrefix model, text <| "Sex: " ++ Maybe.withDefault "" (lookup v GT.genders) ] + l -> span [] [ lblPrefix model, text <| "Sex (" ++ String.fromInt (List.length l) ++ ")" ] , \() -> - [ div [ class "advheader" ] - [ h3 [] [ text lbl ] - , opts model False True ] - , ul [] <| List.map (\(l,t) -> if stype == SexGender && l == "b" then text "" else li [] [ linkRadio (Set.member l model.sel) (Sel l) [ text t ] ]) GT.genders + [ div [ class "advheader", style "width" "280px" ] + [ h3 [] [ text "Sex" ] + , div [ class "opts" ] + [ Html.map SexSel (optsMode model False True) + , a [ href "#", onClickD SexSpoil ] [ text <| if spoil then "spoilers" else "no spoilers" ] + , linkRadio model.neg (SexSel << Neg) [ text "invert" ] + ] + ] + , ul [] <| List.map (\(l,t) -> li [] [ linkRadio (Set.member l model.sel) (SexSel << Sel l) [ text t ] ]) GT.genders ] ) -sexFromQuery stype = fromQuery (\q -> - case (stype, q) of - (SexChar, QStr 4 op v) -> Just (op, v) - (SexSpoil, QStr 5 op v) -> Just (op, v) - -- TODO: SexGender - _ -> Nothing) - |