diff options
author | Yorhel <git@yorhel.nl> | 2021-01-03 10:45:26 +0100 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2021-01-03 10:45:28 +0100 |
commit | ceea93df7af8b17513a399a5a1c903bb66c7ad61 (patch) | |
tree | e1ea775b60a660ed43aac6357571086b359bd1b2 | |
parent | 65e36750ec6ed95d82529146887dd82b2e9dde1c (diff) |
AdvSearch: Only autocomplete referenced anime
Fixes https://vndb.org/t14995.53 point 1
-rw-r--r-- | elm/AdvSearch/Anime.elm | 4 | ||||
-rw-r--r-- | elm/Lib/Autocomplete.elm | 6 | ||||
-rw-r--r-- | elm/VNEdit.elm | 2 | ||||
-rw-r--r-- | lib/VNWeb/Misc/ElmAnime.pm | 8 |
4 files changed, 11 insertions, 9 deletions
diff --git a/elm/AdvSearch/Anime.elm b/elm/AdvSearch/Anime.elm index efd021f9..1e713676 100644 --- a/elm/AdvSearch/Anime.elm +++ b/elm/AdvSearch/Anime.elm @@ -29,7 +29,7 @@ init dat = let (ndat, sel) = S.init dat in ( { ndat | objid = ndat.objid + 1 } , { sel = { sel | single = False } - , conf = { wrap = Search, id = "advsearch_anime" ++ String.fromInt ndat.objid, source = A.animeSource } + , conf = { wrap = Search, id = "advsearch_anime" ++ String.fromInt ndat.objid, source = A.animeSource True } , search = A.init "" } ) @@ -59,7 +59,7 @@ fromQuery dat qf = S.fromQuery (\q -> |> Maybe.map (\(ndat,sel) -> ( { ndat | objid = ndat.objid+1 } , { sel = { sel | single = False } - , conf = { wrap = Search, id = "advsearch_anime" ++ String.fromInt ndat.objid, source = A.animeSource } + , conf = { wrap = Search, id = "advsearch_anime" ++ String.fromInt ndat.objid, source = A.animeSource True } , search = A.init "" } )) diff --git a/elm/Lib/Autocomplete.elm b/elm/Lib/Autocomplete.elm index d1d974b1..45a67fa1 100644 --- a/elm/Lib/Autocomplete.elm +++ b/elm/Lib/Autocomplete.elm @@ -188,9 +188,9 @@ charSource = } -animeSource : SourceConfig m GApi.ApiAnimeResult -animeSource = - { source = Endpoint (\s -> GA.send { search = s }) +animeSource : Bool -> SourceConfig m GApi.ApiAnimeResult +animeSource ref = + { source = Endpoint (\s -> GA.send { search = s, ref = ref }) <| \x -> case x of GApi.AnimeResult e -> Just e _ -> Nothing diff --git a/elm/VNEdit.elm b/elm/VNEdit.elm index 9051a85a..4d15f393 100644 --- a/elm/VNEdit.elm +++ b/elm/VNEdit.elm @@ -142,7 +142,7 @@ vnConfig : A.Config Msg GApi.ApiVNResult vnConfig = { wrap = VNSearch, id = "relationadd", source = A.vnSource } animeConfig : A.Config Msg GApi.ApiAnimeResult -animeConfig = { wrap = AnimeSearch, id = "animeadd", source = A.animeSource } +animeConfig = { wrap = AnimeSearch, id = "animeadd", source = A.animeSource False } staffConfig : A.Config Msg GApi.ApiStaffResult staffConfig = { wrap = StaffSearch, id = "staffadd", source = A.staffSource } diff --git a/lib/VNWeb/Misc/ElmAnime.pm b/lib/VNWeb/Misc/ElmAnime.pm index 97260dd4..7910e18e 100644 --- a/lib/VNWeb/Misc/ElmAnime.pm +++ b/lib/VNWeb/Misc/ElmAnime.pm @@ -2,8 +2,9 @@ package VNWeb::Misc::ElmAnime; use VNWeb::Prelude; -elm_api Anime => undef, { search => {} }, sub { - my $q = shift->{search}; +elm_api Anime => undef, { search => {}, ref => { anybool => 1 } }, sub { + my($d) = @_; + my $q = $d->{search}; my $qs = sql_like $q; elm_AnimeResult tuwf->dbPagei({ results => 15, page => 1 }, @@ -14,7 +15,8 @@ elm_api Anime => undef, { search => {} }, sub { sql('SELECT 1+substr_score(lower(title_romaji),', \$qs, '), id FROM anime WHERE title_romaji ILIKE', \"%$qs%"), sql('SELECT 10+substr_score(lower(title_kanji),', \$qs, '), id FROM anime WHERE title_kanji ILIKE', \"%$qs%"), ), ') x(prio, id) - JOIN anime a ON a.id = x.id + JOIN anime a ON a.id = x.id', + $d->{ref} ? 'WHERE EXISTS(SELECT 1 FROM vn_anime va WHERE va.aid = a.id)' : (), ' GROUP BY a.id, a.title_romaji, a.title_kanji ORDER BY MIN(x.prio), a.title_romaji '); |