X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=web%2Fhtdocs%2Fdetails%2Ffull.mc;h=dd48c28e50532e80279d6722d4b2bcacd27b2c8d;hb=08e11c0116f3a7d6277c3641ec9a962d8bedff06;hp=a316624c8da20b0368bc69da163d7c2288851c98;hpb=45a43605d0df16b4321ab931650d3b122bdb1916;p=irspy-moved-to-github.git diff --git a/web/htdocs/details/full.mc b/web/htdocs/details/full.mc index a316624..dd48c28 100644 --- a/web/htdocs/details/full.mc +++ b/web/htdocs/details/full.mc @@ -1,9 +1,9 @@ -%# $Id: full.mc,v 1.18 2006-12-05 17:37:26 mike Exp $ +%# $Id: full.mc,v 1.22 2007-02-02 11:31:30 mike Exp $ <%args> $id <%perl> -my $conn = new ZOOM::Connection("localhost:3313/IR-Explain---1"); +my $conn = new ZOOM::Connection("localhost:8018/IR-Explain---1"); $conn->option(elementSetName => "zeerex"); my $qid = $id; $qid =~ s/"/\\"/g; @@ -29,6 +29,9 @@ if ($n == 0) { "e:serverInfo/e:authentication/e:user" ], [ "Password (if needed)" => "e:serverInfo/e:authentication/e:password" ], + [ "Server ID" => 'i:status/i:serverImplementationId/@value' ], + [ "Server Name" => 'i:status/i:serverImplementationName/@value' ], + [ "Server Version" => 'i:status/i:serverImplementationVersion/@value' ], [ Description => "e:databaseInfo/e:description", lang => "en", primary => "true" ], [ Author => "e:databaseInfo/e:author" ], @@ -43,12 +46,7 @@ if ($n == 0) { [ "Implementation Name" => "i:status/i:implementationName" ], [ "Implementation Version" => "i:status/i:implementationVersion" ], [ "Reliability" => \&calc_reliability, $xc ], - [ "Services" => sub { " -### IRSpy does not yet check for search, present, delSet, -concurrentOperations, namedResultSets, etc. and store the information -is a usable form. This information should probably be harvested from -the Init Response. -" } ], + [ "Services" => \&calc_init_options, $xc ], [ "Bib-1 Use attributes" => \&calc_ap, $xc, "bib-1" ], [ "Dan-1 Use attributes" => \&calc_ap, $xc, "dan-1" ], [ "Operators" => \&calc_boolean, $xc ], @@ -91,31 +89,45 @@ sub calc_reliability { return "$nok/$nall = " . int(100*$nok/$nall) . "%"; } +sub calc_init_options { + my($xc) = @_; + + my @ops; + my @nodes = $xc->findnodes('e:configInfo/e:supports/@type'); + foreach my $node (@nodes) { + my $type = $node->value(); + if ($type =~ s/^z3950_//) { + push @ops, $type; + } + } + + return join(", ", @ops); +} + sub calc_ap { my($xc, $set) = @_; - my $expr = 'e:indexInfo/e:index/e:map/e:attr[ + my $expr = 'e:indexInfo/e:index[@search = "true"]/e:map/e:attr[ @set = "'.$set.'" and @type = "1"]'; - my @bib1nodes = $xc->findnodes($expr); - my $nbib1 = @bib1nodes; - return "[none]" if $nbib1 == 0; + my @nodes = $xc->findnodes($expr); + my $n = @nodes; + return "[none]" if $n == 0; my $res = ""; my($first, $last); - @bib1nodes = sort { $a->findvalue(".") <=> $b->findvalue(".") } @bib1nodes; - foreach my $node (@bib1nodes) { + @nodes = sort { $a->findvalue(".") <=> $b->findvalue(".") } @nodes; + foreach my $node (@nodes) { my $ap .= $node->findvalue("."); if (!defined $first) { - $first = $ap; - } elsif (!defined $last || $last == $ap-1) { - $last = $ap; + $first = $last = $ap; + } elsif ($ap == $last+1) { + $last++; } else { # Got a complete range $res .= ", " if $res ne ""; $res .= "$first"; - $res .= "-$last" if defined $last; - $first = $ap; - $last = undef; + $res .= "-$last" if $last > $first; + $first = $last = $ap; } } @@ -123,10 +135,10 @@ sub calc_ap { if (defined $first) { $res .= ", " if $res ne ""; $res .= "$first"; - $res .= "-$last" if defined $last; + $res .= "-$last" if $last > $first; } - return "$nbib1 access points: $res"; + return "$n access points: $res"; } sub calc_boolean {