Small OPAC serial holdings display changes
authordbwells <dbwells@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Thu, 12 Aug 2010 13:41:54 +0000 (13:41 +0000)
committerdbwells <dbwells@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Thu, 12 Aug 2010 13:41:54 +0000 (13:41 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/branches/seials-integration@17187 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/perlmods/OpenILS/Application/Search/Serial.pm
Open-ILS/web/opac/skin/default/js/rdetail.js

index d1b7700..cd1d48a 100644 (file)
@@ -109,14 +109,14 @@ Given a bib record ID, returns a hash of holdings statements
 #      note            => "Given a bibliographic record ID, return MFHD holdings"
 #);
 
-sub bib_to_mfhd {
+sub bib_to_svr {
        my ($self, $client, $bib) = @_;
        
-       my $mfhd;
+       my $svrs;
 
        my $e = OpenILS::Utils::CStoreEditor->new();
     # TODO: 'deleted' ssub support
-    my $sdists = $e->search_serial_distribution([{ "+ssub" => {"record_entry" => $bib} }, { "flesh" => 1, "flesh_fields" => {'sdist' => [ "record_entry", "basic_summary", "supplement_summary", "index_summary" ]}, "join" => {"ssub" => {}} }]);
+    my $sdists = $e->search_serial_distribution([{ "+ssub" => {"record_entry" => $bib} }, { "flesh" => 1, "flesh_fields" => {'sdist' => [ "record_entry", "holding_lib", "basic_summary", "supplement_summary", "index_summary" ]}, "join" => {"ssub" => {}} }]);
        my $sres = $e->search_serial_record_entry([{ record => $bib, deleted => 'f', "+sdist" => {"id" => undef} }, { "join" => {"sdist" => { 'type' => 'left' }} }]);
        if (!ref $sres and !ref $sdists) {
                return undef;
@@ -130,7 +130,7 @@ sub bib_to_mfhd {
         } else {
             $svr = Fieldmapper::serial::virtual_record->new;
             $svr->sre_id(-1);
-            $svr->location(-1); #TODO: location support
+            $svr->location($_->holding_lib->name);
             $svr->owning_lib($_->holding_lib);
             $svr->basic_holdings([]);
             $svr->supplement_holdings([]);
@@ -166,20 +166,23 @@ sub bib_to_mfhd {
                 push(@{$svr->index_holdings_add}, $_->index_summary->textual_holdings);
             }
         }
-        push(@$mfhd, $svr);
+        push(@$svrs, $svr);
        }
        foreach (@$sres) {
-               push(@$mfhd, $mfhd_parser->generate_svr($_->id, $_->marc, $_->owning_lib));
+               push(@$svrs, $mfhd_parser->generate_svr($_->id, $_->marc, $_->owning_lib));
        }
 
-       return $mfhd;
+    # do a basic location sort for simple predictability
+    @$svrs = sort { $a->location cmp $b->location } @$svrs;
+
+       return $svrs;
 }
 
 __PACKAGE__->register_method(
-       method  => "bib_to_mfhd",
+       method  => "bib_to_svr",
        api_name        => "open-ils.search.serial.record.bib.retrieve",
        argc            => 1, 
-       note            => "Given a bibliographic record ID, return MFHD holdings"
+       note            => "Given a bibliographic record ID, return holdings in svr form"
 );
 
 1;
index de6568c..41d836c 100644 (file)
@@ -298,10 +298,17 @@ function _holdingsDrawMFHD(holdings, entryNum) {
                entryNumString = ' [Entry #'+entryNumInc+'] ';
        }
 
-       dojo.place("<table style='width: 100%;'><caption id='mfhdHoldingsCaption" + entryNum + "' class='rdetail_header color_1'>" +
-               dojo.string.substitute(opac_strings.HOLDINGS_TABLE_CAPTION, [hloc]) +
+       var refNode;
+       if (entryNum > 0) {
+               refNode = 'rdetail_holdings_table_' + (entryNum - 1);
+       } else {
+               refNode = 'rdetail_details_table';
+       }
+
+       dojo.place("<table style='width: 100%;' id='rdetail_holdings_table_"+entryNum+"'><caption id='mfhdHoldingsCaption" + entryNum + "' class='rdetail_header color_1'>" +
+               dojo.string.substitute(opac_strings.HOLDINGS_TABLE_CAPTION, [hloc]) + entryNumString +
                "</caption><tbody id='rdetail_holdings_tbody_" + entryNum +
-               "'></tbody></table>", "rdetail_details_table", "after"
+               "'></tbody></table>", refNode, "after"
        );
        if (hb.length > 0) { _holdingsDrawMFHDEntry(entryNum, opac_strings.BASIC_HOLDINGS, hb); }
        if (hba.length > 0) { _holdingsDrawMFHDEntry(entryNum, opac_strings.BASIC_HOLDINGS_ADD, hba); }