summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2010-11-28 10:17:23 +0100
committerYorhel <git@yorhel.nl>2010-11-28 10:17:23 +0100
commit21ce1b44379f914a36c3b8335cc93aa21d96c9b3 (patch)
treed78046ebfc26282534255afe0737ad5a175a1b81
parentae6657dffb48220f7d6df47658a21ee9177ae99d (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--ChangeLog2
-rw-r--r--data/lang.txt7
-rw-r--r--data/script.js11
-rw-r--r--lib/VNDB/DB/Releases.pm6
-rw-r--r--lib/VNDB/Handler/Releases.pm2
5 files changed, 19 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog
index 276f4fc7..84aafaec 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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);