One can easily have thousands of Serial issue items in the database. Currently they are shown in the OPAC and Staff Client in one huge table. Finding and placing a hold on the desired issue number is hard. Also there are performance considerations when showing huge amounts of issues unnecessarily. By filtering the display of issues before they are loaded on screen, we can fulfill those requirements. Changing the default view from huge blob to the most recent items saves DB effort. All these modifications apply only to biblios which have subscriptions and more than AllSerialIssuesDisplayThreshold -system preference items.
Results are filtered by: branch, volume, number/issue, fromDate, toDate. Tricky part is ambiguation in volume, number/issue. This is pulled from the items.enumchron and can have various different ways of spelling. Will add a system preference to define the organisation-wide way of labeling Serial issues. Filtering cannot be done if the enumerations are not reasonably consistent.
Created attachment 22464 [details] [review] Bug 11129 - Filtering Items based on type in opac-detail.pl Currently all Items are always shown on the opac-detail.pl. This is difficult when the amount of Items grows substantially large. Implemented a filter to limit the Items shown (and SELECTed from the DB) based on some typical filters, locationbranch, volume, number, issue, fromDate, toDate. Also streamlined how Serials-data is pulled from the DB to prevent substantial extra work in C4::Items::GetItemsInfo(). C4::Items::GetItemsInfo() extended to support various filters. All modifications: Item filter shown when there are over 50 items (lotsofitems-flag). Filter fields can be changed based on the Biblio type (isSerial-flag). -Volume + Issue + Number available only for serials. Can syspref if Issue-field is used in serial records. Can syspref a regexp to parse the Volume + Number + Issue from the enumeration or chronology field. FromDate and ToDate filter the serial.publisheddate when dealing with serials otherwise target the items.timestamp -column. C4::Items::GetItemsInfo() simplified to include the serial data in the BIG SQL. This makes filtering by publisheddate much more faster. User input validated using HTML5 <input "number"> Business layer validations as well. Unit tests: Serials enumeration and chronology filtering Items date and branch filtering Sponsored by the Joensuu Regional Library
Created attachment 22513 [details] [review] Bug 11129 - Filtering Items based on type in opac-detail.pl Currently all Items are always shown on the opac-detail.pl. This is difficult when the amount of Items grows substantially large. Implemented a filter to limit the Items shown (and SELECTed from the DB) based on some typical filters, locationbranch, volume, number, issue, fromDate, toDate. Also streamlined how Serials-data is pulled from the DB to prevent substantial extra work in C4::Items::GetItemsInfo(). C4::Items::GetItemsInfo() extended to support various filters. All modifications: Item filter shown when there are over 50 items (lotsofitems-flag). Filter fields can be changed based on the Biblio type (isSerial-flag). -Volume + Issue + Number available only for serials. Can syspref if Issue-field is used in serial records. Can syspref a regexp to parse the Volume + Number + Issue from the enumeration or chronology field. FromDate and ToDate filter the serial.publisheddate when dealing with serials otherwise target the items.timestamp -column. C4::Items::GetItemsInfo() simplified to include the serial data in the BIG SQL. This makes filtering by publisheddate much more faster. User input validated using HTML5 <input "number"> Business layer validations as well. Unit tests: Serials enumeration and chronology filtering Items date and branch filtering Sponsored by the Joensuu Regional Library
Created attachment 22566 [details] Manual test plan Attached a manual test plan.
Created attachment 22569 [details] [review] Bug 11129 - Filtering Items based on type in opac-detail.pl Currently all Items are always shown on the opac-detail.pl. This is difficult when the amount of Items grows substantially large. Implemented a filter to limit the Items shown (and SELECTed from the DB) based on some typical filters, locationbranch, volume, number, issue, fromDate, toDate. Also streamlined how Serials-data is pulled from the DB to prevent substantial extra work in C4::Items::GetItemsInfo(). C4::Items::GetItemsInfo() extended to support various filters. All modifications: Item filter shown when there are over 50 items (lotsofitems-flag). Filter fields can be changed based on the Biblio type (isSerial-flag). -Volume + Issue + Number available only for serials. Can syspref if Issue-field is used in serial records. Can syspref a regexp to parse the Volume + Number + Issue from the enumeration or chronology field. FromDate and ToDate filter the serial.publisheddate when dealing with serials otherwise target the items.timestamp -column. C4::Items::GetItemsInfo() simplified to include the serial data in the BIG SQL. This makes filtering by publisheddate much more faster. User input validated using HTML5 <input "number"> Business layer validations as well. Unit tests: Serials enumeration and chronology filtering Items date and branch filtering Sponsored by the Joensuu Regional Library
Sponsored by the Joensuu Regional Library
Created attachment 23172 [details] [review] Bug 11129 - Filtering Items based on type in opac-detail.pl Currently all Items are always shown on the opac-detail.pl. This is difficult when the amount of Items grows substantially large. Implemented a filter to limit the Items shown (and SELECTed from the DB) based on some typical filters, locationbranch, volume, number, issue, fromDate, toDate. Also streamlined how Serials-data is pulled from the DB to prevent substantial extra work in C4::Items::GetItemsInfo(). C4::Items::GetItemsInfo() extended to support various filters. All modifications: Item filter shown when there are over 50 items (lotsofitems-flag). Filter fields can be changed based on the Biblio type (isSerial-flag). -Volume + Issue + Number available only for serials. Can syspref if Issue-field is used in serial records. Can syspref a regexp to parse the Volume + Number + Issue from the enumeration or chronology field. FromDate and ToDate filter the serial.publisheddate when dealing with serials otherwise target the items.timestamp -column. C4::Items::GetItemsInfo() simplified to include the serial data in the BIG SQL. This makes filtering by publisheddate much more faster. User input validated using HTML5 <input "number"> Business layer validations as well. Unit tests: Serials enumeration and chronology filtering Items date and branch filtering Formatted using perltidy and Perl::Critic Sponsored by the Joensuu Regional Library
Created attachment 23205 [details] [review] Bug 11129 - Filtering Items based on type in opac-detail.pl Currently all Items are always shown on the opac-detail.pl. This is difficult when the amount of Items grows substantially large. Implemented a filter to limit the Items shown (and SELECTed from the DB) based on some typical filters, locationbranch, volume, number, issue, fromDate, toDate. Also streamlined how Serials-data is pulled from the DB to prevent substantial extra work in C4::Items::GetItemsInfo(). C4::Items::GetItemsInfo() extended to support various filters. All modifications: Item filter shown when there are over 50 items (lotsofitems-flag). Filter fields can be changed based on the Biblio type (isSerial-flag). -Volume + Issue + Number available only for serials. Can syspref if Issue-field is used in serial records. Can syspref a regexp to parse the Volume + Number + Issue from the enumeration or chronology field. FromDate and ToDate filter the serial.publisheddate when dealing with serials otherwise target the items.timestamp -column. C4::Items::GetItemsInfo() simplified to include the serial data in the BIG SQL. This makes filtering by publisheddate much more faster. User input validated using HTML5 <input "number"> Business layer validations as well. Unit tests: Serials enumeration and chronology filtering Items date and branch filtering Sponsored by the Joensuu Regional Library
Not only doesn't this apply, this approach is completely wrong now. Please look into Koha/RecordProcessor.pm and see bug 11592 as an example of how to move forward with this.