Skip to content

Commit

Permalink
* #35
Browse files Browse the repository at this point in the history
  • Loading branch information
Frank Wiegand committed Nov 5, 2018
1 parent 7d39954 commit 88170ad
Show file tree
Hide file tree
Showing 2 changed files with 71 additions and 6 deletions.
46 changes: 44 additions & 2 deletions Kosmos/lib/Kosmos/Controller/Person.pm
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ use namespace::autoclean;

use File::Basename qw(basename);
use List::MoreUtils qw(uniq);
use LWP::UserAgent;
use XML::LibXML;

BEGIN { extends 'Catalyst::Controller'; }
Expand All @@ -22,11 +23,21 @@ Catalyst Controller.
=cut

my $xml_path = '/home/wiegand/src/hidden-kosmos/xml';

sub index :Path :Args(0) {
my ( $self, $c ) = @_;

my @files = glob '/home/wiegand/src/hidden-kosmos/xml/{parthey_msgermqu1711_1828,nn_msgermqu2124_1827,hufeland_privatbesitz_1829,nn_oktavgfeo79_1828,nn_msgermqu2345_1827,libelt_hs6623ii_1828,patzig_msgermfol841842_1828,riess_f2e1853_1828,nn_n0171w1_1828,willisen_humboldt_1827}*.xml';

my @files;
if ( exists $c->req->params->{file} ) {
my $file = $c->req->params->{file};
$file =~ tr{./}{}d;
$c->detach('/default') unless -e sprintf "%s/%s.TEI-P5.xml", $xml_path, $file;
@files = glob sprintf "%s/%s*.xml", $xml_path, $file;
}
else {
@files = glob "$xml_path/*.xml";
}
$c->forward( 'calc', [ \@files ] );
}

Expand Down Expand Up @@ -177,6 +188,8 @@ sub calc :Private {
forms => [ uniq @{ $persons{$_}->{forms} } ],
} } keys %persons;

$c->forward( 'ehd' );

while ( my ($key, $value) = each %persons ) {
next unless $key =~ m{http://d-nb.info/gnd/};
my ( $gnd ) = $key =~ m{/([^/]+)$};
Expand All @@ -199,6 +212,8 @@ sub calc :Private {
my ( $death ) = $xpc->findnodes('//gndo:dateOfDeath');
$persons{ $key }{ death } = $death->textContent if $death;

$persons{ $key }{ ehd } = $c->stash->{ehd}{$gnd};

for ( $persons{ $key }{ birth }, $persons{ $key }{ death } ) {
next unless $_;
s/^-?0*(\d+).*/$1/;
Expand All @@ -225,6 +240,33 @@ sub normalize_text {
return $s;
}

# edition humboldt digital
sub ehd :Private {
my ( $self, $c ) = @_;
my $ua = LWP::UserAgent->new;
my $res = $ua->get( 'https://edition-humboldt.de/api/v1/beacon.xql' );
return unless $res->is_success;
my $prefix;
my %ehd;
my @lines = split /\n/, $res->decoded_content;
foreach my $line ( @lines ) {
# skip empty lines
next if $line =~ /^\s*$/;

# catch target prefix
if ( $line =~ /^#TARGET:\s*(.*)/ ) {
$prefix = $1;
next;
}

#skip comments;
next if $line =~ /^#/;

($ehd{$line} = $prefix) =~ s/\{ID\}/$line/;
}
$c->stash->{ehd} = \%ehd;
}

__PACKAGE__->meta->make_immutable;

1;
Expand Down
31 changes: 27 additions & 4 deletions Kosmos/root/person/index.tt
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,20 @@

<p>Dieses Personenverzeichnis wurde auf Grundlage der Nachschriften zu Alexander von Humboldts „Kosmos-Vorträgen“ erstellt, die im DTA im Volltext digitalisiert vorliegen. Das Verzeichnis listet alle in den Nachschriften erwähnten Personen auf: In der ersten Spalte sind die Personen nach Namen in der Ansetzungsform der GND gelistet, die zweite Spalte führt alle Vorkommen in den Nachschriften auf; dabei wird zwischen den Nachschriften differenziert und eine Gesamtzahl der Nennungen angegeben. Die Nachschriften aus dem Singakademie-Zyklus (2 Nachschriften) werden durch Rottöne repräsentiert, die aus dem Universitätszyklus (8 Nachschriften) durch Grüntöne. Die dritte Spalte führt alle Namensformen auf, wie sie die Nachschreiber notiert haben (darunter auch entstellende Falschschreibungen u. Ä.) und verlinkt jeweils auf die betreffende Seite im Digitalisat (gleiches Farbschema). Die vierte Spalte enthält einen Link zu den Normdaten (in der Regel GND, gelegentlich auch VIAF oder Wikidata). Insgesamt werden 8861 Mal Personennamen genannt, die auf ca. 900 individuelle Personen verweisen. Davon konnten 765 bislang eindeutig identifiziert mit Normdaten versehen werden.
[<a href="[% base %]person/csv_all">CSV</a>]
<span class="small" style="cursor:pointer" id="toggle-single-stats">[Einzelstatistiken anzeigen]</span>
[% IF c.req.params.file %]
<a class="small" style="color:#337ab7" href="[% base %]person">[Gesamtstatistiken anzeigen]</a>
[% ELSE %]
<span class="small" style="cursor:pointer;color:#337ab7" id="toggle-single-stats">[Einzelstatistiken anzeigen]</span>
[% END %]
</p>
<span style="font-size:smaller">(Stand: [% USE date; date.format(latest, '%Y-%m-%d %H:%M:%S') | html %])</span>
</div>

<div class="row">
<div class="col-md-4">
<p class="bg-info" style="padding:10px">
<b>Alle Dokumente</b> <span style="font-size:smaller">(Stand: [% USE date; date.format(latest, '%Y-%m-%d %H:%M:%S') | html %])</span><br />
<b>[% IF c.req.params.file; c.req.params.file | uri | html; ELSE; 'Alle Dokumente'; END %]</b>
<br />
Auszeichnungen mit <tt>&lt;persName&gt;</tt> insgesamt: [% stat.total | html %]<br />
<tt>&lt;persName&gt;</tt>s mit <tt>@ref</tt>: [% stat.with_ref | html %]<br />
<tt>&lt;persName&gt;</tt>s ohne <tt>@ref</tt>: [% stat.without_ref | html %]<br />
Expand All @@ -23,7 +29,8 @@
[% FOREACH entry IN stat.file.pairs %]
<div class="col-md-4 single-stat" style="display:none">
<p class="bg-info" style="padding:10px">
<b class="[% entry.key | html %]">[% entry.key | html %]</b><br />
<!--<b class="[% entry.key | html %]">[% entry.key | html %]</b> <span class="small">[<span style="cursor:pointer;color:#337ab7" class="d-filter" data-id="[% entry.key %]">Liste filtern</span>]</span><br />-->
<b class="[% entry.key | html %]">[% entry.key | html %]</b> <span class="small">[<a href="[% base %]person?file=[% entry.key | uri | html %]" style="color:#337ab7">Personenliste</a>]</span><br />
Auszeichnungen mit <tt>&lt;persName&gt;</tt> insgesamt: [% entry.value.total | html %]<br />
<tt>&lt;persName&gt;</tt>s mit <tt>@ref</tt>: [% entry.value.with_ref | html %]<br />
<tt>&lt;persName&gt;</tt>s ohne <tt>@ref</tt>: [% entry.value.without_ref | html %]<br />
Expand All @@ -40,6 +47,7 @@
<th>Vorkommen</th>
<th>Vorlageform(en)</th>
<th>Normdaten</th>
<th>externe Links</th>
</tr>
</thead>
<tbody>
Expand Down Expand Up @@ -86,6 +94,11 @@
[% person.key | html %]
[% END %]
</td>
<td>
[% IF person.value.ehd %]
<a href="[% person.value.ehd | html %]">edition humboldt digital</a>
[% END %]
</td>
</tr>
[% END %]
[% FOREACH person IN persons.nognd.hits.pairs %]
Expand Down Expand Up @@ -146,7 +159,7 @@
} );

$(document).ready(function() {
var t = $('#data').dataTable({
var t = $('#data').DataTable({
'pageLength': -1,
'paginate': false,
'bLengthChange': false,
Expand All @@ -162,6 +175,16 @@
$('#toggle-single-stats').click( function() {
$('.single-stat').toggle();
});

$('.d-filter').click( function () {
var id = $(this).data('id');
if ( id == '__all__' ) {
t.columns(1).search('').draw();
}
else {
t.columns(1).search(id).draw();
}
});
});
</script>
[% END %]

0 comments on commit 88170ad

Please sign in to comment.