summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2021-01-03 10:45:26 +0100
committerYorhel <git@yorhel.nl>2021-01-03 10:45:28 +0100
commitceea93df7af8b17513a399a5a1c903bb66c7ad61 (patch)
treee1ea775b60a660ed43aac6357571086b359bd1b2
parent65e36750ec6ed95d82529146887dd82b2e9dde1c (diff)
AdvSearch: Only autocomplete referenced anime
Fixes https://vndb.org/t14995.53 point 1
-rw-r--r--elm/AdvSearch/Anime.elm4
-rw-r--r--elm/Lib/Autocomplete.elm6
-rw-r--r--elm/VNEdit.elm2
-rw-r--r--lib/VNWeb/Misc/ElmAnime.pm8
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
');