summaryrefslogtreecommitdiff
path: root/elm
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2022-07-31 17:07:48 +0200
committerYorhel <git@yorhel.nl>2022-07-31 17:07:49 +0200
commit691797f62bdc6df8307f6bd47b9ca14dda8920d7 (patch)
tree52a50373bf865faca97a64b22905824f3879dc24 /elm
parentec20437fc576d156eb8ccec7ac49a01fecf76add (diff)
Add VN development status field
https://vndb.org/t18854
Diffstat (limited to 'elm')
-rw-r--r--elm/AdvSearch/Fields.elm6
-rw-r--r--elm/AdvSearch/Set.elm23
-rw-r--r--elm/VNEdit.elm7
3 files changed, 36 insertions, 0 deletions
diff --git a/elm/AdvSearch/Fields.elm b/elm/AdvSearch/Fields.elm
index d0a02d51..fa08f585 100644
--- a/elm/AdvSearch/Fields.elm
+++ b/elm/AdvSearch/Fields.elm
@@ -290,6 +290,7 @@ type FieldModel
| FMRPlatform (AS.Model String)
| FMVPlatform (AS.Model String)
| FMLength (AS.Model Int)
+ | FMDevStatus (AS.Model Int)
| FMRole (AS.Model String)
| FMBlood (AS.Model String)
| FMSex (AS.SexModel)
@@ -335,6 +336,7 @@ type FieldMsg
| FSRPlatform (AS.Msg String)
| FSVPlatform (AS.Msg String)
| FSLength (AS.Msg Int)
+ | FSDevStatus (AS.Msg Int)
| FSRole (AS.Msg String)
| FSBlood (AS.Msg String)
| FSSex AS.SexMsg
@@ -431,6 +433,7 @@ fields =
, f V "My Labels" 0 FMLabel AS.init AS.labelFromQuery
, l V "My List" 0 [(QInt 65 Eq 1, "On my list"), (QInt 65 Ne 1, "Not on my list")]
, f V "Length" 0 FMLength AS.init AS.lengthFromQuery
+ , f V "Development status" 0 FMDevStatus AS.init AS.devStatusFromQuery
, f V "Release date" 0 FMRDate AD.init AD.fromQuery
, f V "Popularity" 0 FMPopularity AR.popularityInit AR.popularityFromQuery
, f V "Rating" 0 FMRating AR.ratingInit AR.ratingFromQuery
@@ -554,6 +557,7 @@ fieldUpdate dat msg_ (num, dd, model) =
(FSRPlatform msg,FMRPlatform m)-> maps FMRPlatform(AS.update msg m)
(FSVPlatform msg,FMVPlatform m)-> maps FMVPlatform(AS.update msg m)
(FSLength msg, FMLength m) -> maps FMLength (AS.update msg m)
+ (FSDevStatus msg,FMDevStatus m)-> maps FMDevStatus(AS.update msg m)
(FSRole msg, FMRole m) -> maps FMRole (AS.update msg m)
(FSBlood msg, FMBlood m) -> maps FMBlood (AS.update msg m)
(FSSex msg, FMSex m) -> maps FMSex (AS.sexUpdate msg m)
@@ -622,6 +626,7 @@ fieldView dat (_, dd, model) =
FMVPlatform m -> f FSVPlatform (AS.platformView False m)
FMRPlatform m -> f FSRPlatform (AS.platformView True m)
FMLength m -> f FSLength (AS.lengthView m)
+ FMDevStatus m -> f FSDevStatus (AS.devStatusView m)
FMRole m -> f FSRole (AS.roleView m)
FMBlood m -> f FSBlood (AS.bloodView m)
FMSex m -> f FSSex (AS.sexView m)
@@ -671,6 +676,7 @@ fieldToQuery dat (_, _, model) =
FMRPlatform m-> AS.toQuery (QStr 4) m
FMVPlatform m-> AS.toQuery (QStr 4) m
FMLength m -> AS.toQuery (QInt 5) m
+ FMDevStatus m-> AS.toQuery (QInt 66) m
FMRole m -> AS.toQuery (QStr 2) m
FMBlood m -> AS.toQuery (QStr 3) m
FMSex (s,m) -> AS.toQuery (QStr (if s then 5 else 4)) m
diff --git a/elm/AdvSearch/Set.elm b/elm/AdvSearch/Set.elm
index b787b7e4..68984fcc 100644
--- a/elm/AdvSearch/Set.elm
+++ b/elm/AdvSearch/Set.elm
@@ -216,6 +216,29 @@ lengthFromQuery = fromQuery (\q ->
+-- Development status
+
+devStatusView model =
+ ( case Set.toList model.sel of
+ [] -> b [ class "grayedout" ] [ text "Status" ]
+ [v] -> span [ class "nowrap" ] [ lblPrefix model, text <| Maybe.withDefault "" (lookup v GT.devStatus) ]
+ l -> span [] [ lblPrefix model, text <| "Length (" ++ String.fromInt (List.length l) ++ ")" ]
+ , \() ->
+ [ div [ class "advheader" ]
+ [ h3 [] [ text "Development status" ]
+ , opts model False True ]
+ , ul [] <| List.map (\(l,t) -> li [] [ linkRadio (Set.member l model.sel) (Sel l) [ text t ] ]) GT.devStatus
+ ]
+ )
+
+devStatusFromQuery = fromQuery (\q ->
+ case q of
+ QInt 66 op v -> Just (op, v)
+ _ -> Nothing)
+
+
+
+
-- Character role
roleView model =
diff --git a/elm/VNEdit.elm b/elm/VNEdit.elm
index fe2808ac..18d1faf2 100644
--- a/elm/VNEdit.elm
+++ b/elm/VNEdit.elm
@@ -55,6 +55,7 @@ type alias Model =
, titles : List GVE.RecvTitles
, alias : String
, desc : TP.Model
+ , devStatus : Int
, olang : String
, length : Int
, lWikidata : Maybe Int
@@ -91,6 +92,7 @@ init d =
, titles = d.titles
, alias = d.alias
, desc = TP.bbcode d.desc
+ , devStatus = d.devstatus
, olang = d.olang
, length = d.length
, lWikidata = d.l_wikidata
@@ -126,6 +128,7 @@ encode model =
, locked = model.editsum.locked
, titles = model.titles
, alias = model.alias
+ , devstatus = model.devStatus
, desc = model.desc.data
, olang = model.olang
, length = model.length
@@ -161,6 +164,7 @@ type Msg
| Submitted GApi.Response
| Alias String
| Desc TP.Msg
+ | DevStatus Int
| Length Int
| LWikidata (Maybe Int)
| LRenai String
@@ -224,6 +228,7 @@ update msg model =
InvalidEnable -> ({ model | invalidDis = False }, Cmd.none)
Alias s -> ({ model | alias = s, dupVNs = [] }, Cmd.none)
Desc m -> let (nm,nc) = TP.update m model.desc in ({ model | desc = nm }, Cmd.map Desc nc)
+ DevStatus b-> ({ model | devStatus = b }, Cmd.none)
Length n -> ({ model | length = n }, Cmd.none)
LWikidata n-> ({ model | lWikidata = n }, Cmd.none)
LRenai s -> ({ model | lRenai = s }, Cmd.none)
@@ -398,6 +403,8 @@ view model =
[ TP.view "desc" model.desc Desc 600 (style "height" "180px" :: onInvalid (Invalid General) :: GVE.valDesc) [ b [ class "standout" ] [ text "English please!" ] ]
, text "Short description of the main story. Please do not include spoilers, and don't forget to list the source in case you didn't write the description yourself."
]
+ , formField "devstatus::Development status"
+ [ inputSelect "devstatus" model.devStatus DevStatus [] GT.devStatus ]
, formField "length::Length"
[ inputSelect "length" model.length Length [] GT.vnLengths
, text " (only displayed if there are no length votes)" ]