Copy summary group by call number, add max_lines
authorJeff Godin <jgodin@tadl.org>
Mon, 16 Apr 2012 14:39:34 +0000 (10:39 -0400)
committerJeff Godin <jgodin@tadl.org>
Mon, 16 Apr 2012 14:39:34 +0000 (10:39 -0400)
Group copy summary by call number in addition to circ lib and
copy location.

Also, support setting of max_lines for limiting the number
of call numbers output -- useful for bibs with lots of volumes
at a single library -- to prevent the search results page from
growing too long.

Signed-off-by: Jeff Godin <jgodin@tadl.org>
Open-ILS/web/opac/skin/tadlv3/xml/result/result_table.xml

index c5ff85b..a4caa8d 100644 (file)
 
                                     var item_cnt = 0;
                                     var max_items = 4;
+                                    var max_lines = 3;
                                     var copySummaryObj = new Object();
                                     var count_copies_unavail = 0;
                                     var count_copies_avail = 0;
                                             } else {
                                                 count_copies_avail++;
                                             }
-                                            var cp_circ_lib_txt = cp_circ_lib.getAttribute('name');
-                                            var cp_location_txt = BT.textContent(cp_location);
-                                            // copySummaryObj[cp_circ_lib_txt][cp_location_txt]['count']
-                                            // copySummaryObj[cp_circ_lib_txt][cp_location_txt]['labels']
-                                            // copySummaryObj[cp_circ_lib_txt][cp_location_txt]['reshelving_count']
-                                            var libkey = cp_circ_lib_txt;
-                                            var lockey = cp_location_txt;
+                                            var libkey = cp_circ_lib.getAttribute('name');
+                                            var lockey = BT.textContent(cp_location);
+                                            var cnkey = vol.getAttribute('label');
+
                                             if (!copySummaryObj[libkey]) {
                                                 copySummaryObj[libkey] = new Object();
+                                            }
+                                            if (!copySummaryObj[libkey][lockey]) {
                                                 copySummaryObj[libkey][lockey] = new Object();
-                                                copySummaryObj[libkey][lockey]['labels'] = new Object();
-                                                copySummaryObj[libkey][lockey]['count'] = 0;
-                                                copySummaryObj[libkey][lockey]['reshelving_count'] = 0;
                                             }
-                                            copySummaryObj[libkey][lockey]['count']++;
-                                            copySummaryObj[libkey][lockey]['labels'][vol.getAttribute('label')] = 1;
+                                            if (!copySummaryObj[libkey][lockey][cnkey]) {
+                                                copySummaryObj[libkey][lockey][cnkey] = new Object();
+                                                copySummaryObj[libkey][lockey][cnkey]['count'] = 0;
+                                            }
+                                            copySummaryObj[libkey][lockey][cnkey]['count']++;
 
                                             item_cnt++;
                                             //if (item_cnt >= max_items) {
                                 }
                                 if (numLibs == 0) { return; }
                                 if (numLibs == 1) {
+                                    var lines_output = 0;
                                     var sumdiv = dojo.create('div', { "style": "font-weight: bold;" });
                                     // output the grouped-by-location summary
                                     for (var sumlib in copySummaryObj) {
                                         var atlib = dojo.create('div', null, sumdiv);
                                         atlib.appendChild(dojo.doc.createTextNode('At ' + sumlib));
                                         for (var sumloc in copySummaryObj[sumlib]) {
-                                            // available copies in each location
-                                            var sumcount = copySummaryObj[sumlib][sumloc]['count'];
-                                            var sumreshelving = copySummaryObj[sumlib][sumloc]['reshelving_count'];
-                                            var summary_line = sumcount + ' available in ' + sumloc;
-                                            var locdiv = dojo.create('div', null, sumdiv);
-                                            locdiv.appendChild(dojo.doc.createTextNode(summary_line));
+                                            for (var sumcn in copySummaryObj[sumlib][sumloc]) {
+                                                // available copies in each location, by cn label
+                                                if (max_lines && lines_output >= max_lines) {
+                                                    var morediv = dojo.create('div', { "style": "font-weight: bold;" }, sumdiv);
+                                                    morediv.appendChild(dojo.doc.createTextNode("additional copies available - click title for details"));
+                                                } else {
+                                                    var sumcount = copySummaryObj[sumlib][sumloc][sumcn]['count'];
+                                                    var summary_line = sumcount + ' available in ' + sumloc + ', call number ' + sumcn;
+                                                    var locdiv = dojo.create('div', null, sumdiv);
+                                                    locdiv.appendChild(dojo.doc.createTextNode(summary_line));
+                                                    lines_output++;
+                                                }
+                                            }
                                         }
                                     }
                                     output.appendChild(sumdiv);
                                     for (var libname in copySummaryObj) {
                                         var copycount = 0;
                                         for (var loc in copySummaryObj[libname]) {
-                                            copycount = copycount + copySummaryObj[libname][loc]['count'];
+                                            for (var cn in copySummaryObj[libname][loc]) {
+                                                copycount = copycount + copySummaryObj[libname][loc][cn]['count'];
+                                            }
                                         }
                                     }
                                     var libdiv = dojo.create('div');