X-Git-Url: http://git.rot13.org/?p=angular-drzb;a=blobdiff_plain;f=angular-server.pl;fp=angular-server.pl;h=94c84ad2352a8e28748ce4aa633352afd285cc99;hp=0e38168da4180d0a7328bee6ae3382351c52f527;hb=9327a0307eaba6f6e5fb552852ee399eb72ea175;hpb=39e4203cab6bea4279c604afb76a18a9ec44ef8e diff --git a/angular-server.pl b/angular-server.pl index 0e38168..94c84ad 100755 --- a/angular-server.pl +++ b/angular-server.pl @@ -262,7 +262,29 @@ if ( doc.user.organization != '' ) { } }q|, reduce => q| function(keys,values,rereduce) { return sum(values); } |, - } + }, + authors => { + map => q| +function(doc) { + if ( doc.work.persons ) { + doc.work.persons.forEach( function(person) { + emit(person.surname+person.firstname , + person + ); + }); + } + if ( doc.work.symposium_works ) { + doc.work.symposium_works.forEach( function(work) { + work.persons.forEach( function(person) { + emit(person.surname+person.firstname , + person + ); + }); + }); + } +} + |, + }, } }; $json = _couchdb_get($url) @@ -271,6 +293,17 @@ if ( doc.user.organization != '' ) { if ( $format eq 'key_array' ) { # array of keys sorted by value $json->{rows} = [ map { $_->{key} } sort { $b->{value} <=> $a->{value} } @{ $json->{rows} } ]; + } elsif ( $format eq 'key_distinct' ) { + + my $found; + $json->{rows} = [ grep { $found->{ $_->{key} }++ == 1 } @{ $json->{rows} } ]; + $json->{distinct_rows} = scalar @{ $json->{rows} }; + warn "## distinct stats ", dump( $found ); + + } elsif ( $format ) { + + die "unknown format: $format"; + } $view_cache->{$url}->{time} = time();