diff options
author | Yorhel <git@yorhel.nl> | 2010-11-28 10:17:23 +0100 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2010-11-28 10:17:23 +0100 |
commit | 21ce1b44379f914a36c3b8335cc93aa21d96c9b3 (patch) | |
tree | d78046ebfc26282534255afe0737ad5a175a1b81 | |
parent | ae6657dffb48220f7d6df47658a21ee9177ae99d (diff) |
Release filter selector: Added original language filter
I'm surprised I haven't been able to find a combination of filters that
would generate an SQL query that would run more than 300ms or so.
PostgreSQL is amazing!
-rw-r--r-- | ChangeLog | 2 | ||||
-rw-r--r-- | data/lang.txt | 7 | ||||
-rw-r--r-- | data/script.js | 11 | ||||
-rw-r--r-- | lib/VNDB/DB/Releases.pm | 6 | ||||
-rw-r--r-- | lib/VNDB/Handler/Releases.pm | 2 |
5 files changed, 19 insertions, 9 deletions
@@ -1,6 +1,6 @@ 2.14 - ? - Improved filter selection interface for the release and VN browser - - New release filters: voiced and animation + - New release filters: voiced, animation and original language - New VN filters: length, "has anime" and original language - Apply search query and filters when changing first char - Added Atom feeds for the recent announcements, changes and posts diff --git a/data/lang.txt b/data/lang.txt index 447b417c..588ecc63 100644 --- a/data/lang.txt +++ b/data/lang.txt @@ -3814,6 +3814,13 @@ cs*: Jazyky hu*: Nyelvek nl : Taal +:_rbrowse_olang +en : Original language +ru*: +cs*: +hu*: +nl : Originele taal + :_rbrowse_resolution en : Screen resolution ru : Разрешение экрана diff --git a/data/script.js b/data/script.js index 48bc4241..27f20f6b 100644 --- a/data/script.js +++ b/data/script.js @@ -2005,12 +2005,13 @@ function filReleases() { [ 'date_after', mt('_rbrowse_dateafter'), dateLoad(null, filSelectField), function (c) { return [c.date_val] }, dateSet ], [ 'date_before', mt('_rbrowse_datebefore'), dateLoad(null, filSelectField), function (c) { return [c.date_val] }, dateSet ] ], - [ mt('_rbrowse_minage'), filFSelect('minage', mt('_rbrowse_minage'), 15, ages) ], - [ mt('_rbrowse_language'), filFSelect('lang', mt('_rbrowse_language'), 20, lang) ], + [ mt('_rbrowse_minage'), filFSelect('minage', mt('_rbrowse_minage'), 15, ages) ], + [ mt('_rbrowse_language'), filFSelect('lang', mt('_rbrowse_language'), 20, lang) ], + [ mt('_rbrowse_olang'), filFSelect('olang', mt('_rbrowse_olang'), 20, lang) ], [ mt('_rbrowse_resolution'), filFSelect('resolution', mt('_rbrowse_resolution'), 15, resolutions) ], - [ mt('_rbrowse_platform'), filFSelect('plat', mt('_rbrowse_platform'), 20, plat) ], - [ mt('_rbrowse_medium'), filFSelect('med', mt('_rbrowse_medium'), 10, med) ], - [ mt('_rbrowse_voiced'), filFSelect('voiced', mt('_rbrowse_voiced'), 5, voi) ], + [ mt('_rbrowse_platform'), filFSelect('plat', mt('_rbrowse_platform'), 20, plat) ], + [ mt('_rbrowse_medium'), filFSelect('med', mt('_rbrowse_medium'), 10, med) ], + [ mt('_rbrowse_voiced'), filFSelect('voiced', mt('_rbrowse_voiced'), 5, voi) ], [ mt('_rbrowse_animation'), filFSelect('ani_story', mt('_rbrowse_ani_story'), 5, ani), filFSelect('ani_ero', mt('_rbrowse_ani_ero'), 5, ani) diff --git a/lib/VNDB/DB/Releases.pm b/lib/VNDB/DB/Releases.pm index 04ced9a1..b0fb9a89 100644 --- a/lib/VNDB/DB/Releases.pm +++ b/lib/VNDB/DB/Releases.pm @@ -11,7 +11,7 @@ our @EXPORT = qw|dbReleaseGet dbReleaseRevisionInsert|; # Options: id vid pid rev unreleased page results what med sort reverse date_before date_after -# plat lang type minage search resolution freeware doujin voiced ani_story ani_ero +# plat lang olang type minage search resolution freeware doujin voiced ani_story ani_ero # What: extended changes vn producers platforms media # Sort: title released minage sub dbReleaseGet { @@ -38,7 +38,9 @@ sub dbReleaseGet { defined $o{ani_ero} ? ( 'rr.ani_ero IN(!l)' => [ ref $o{ani_ero} ? $o{ani_ero} : [$o{ani_ero}] ] ) : (), defined $o{unreleased} ? ( 'rr.released !s ?' => [ $o{unreleased} ? '>' : '<=', strftime('%Y%m%d', gmtime) ] ) : (), $o{lang} ? ( - 'rr.id IN(SELECT irl.rid FROM releases_lang irl JOIN releases ir ON ir.latest = irl.rid WHERE irl.lang IN(!l))', => [ ref $o{lang} ? $o{lang} : [ $o{lang} ] ] ) : (), + 'rr.id IN(SELECT irl.rid FROM releases_lang irl JOIN releases ir ON ir.latest = irl.rid WHERE irl.lang IN(!l))' => [ ref $o{lang} ? $o{lang} : [ $o{lang} ] ] ) : (), + $o{olang} ? ( + 'rr.id IN(SELECT irv.rid FROM releases_vn irv JOIN releases ir ON ir.latest = irv.rid JOIN vn v ON irv.vid = v.id WHERE v.c_olang && ARRAY[!l]::language[])' => [ ref $o{olang} ? $o{olang} : [ $o{olang} ] ] ) : (), $o{plat} ? ( 'rr.id IN(SELECT irp.rid FROM releases_platforms irp JOIN releases ir ON ir.latest = irp.rid WHERE irp.platform IN(!l))' => [ ref $o{plat} ? $o{plat} : [ $o{plat} ] ] ) : (), $o{med} ? ( diff --git a/lib/VNDB/Handler/Releases.pm b/lib/VNDB/Handler/Releases.pm index c8e6154b..e2a18e1a 100644 --- a/lib/VNDB/Handler/Releases.pm +++ b/lib/VNDB/Handler/Releases.pm @@ -492,7 +492,7 @@ sub browse { ); return 404 if $f->{_err}; - my $fil = fil_parse $f->{fil}, qw|type patch freeware doujin date_before date_after minage lang resolution plat med voiced ani_story ani_ero|; + my $fil = fil_parse $f->{fil}, qw|type patch freeware doujin date_before date_after minage lang olang resolution plat med voiced ani_story ani_ero|; _fil_compat($self, $fil); $f->{fil} = fil_serialize($fil); |