From: Dan Pearl Date: Fri, 5 Feb 2016 20:34:31 +0000 (-0500) Subject: LC1352542 - Printing LC Spine Labels format problem X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=refs%2Fheads%2Fuser%2Fdpearl%2FLP1352542_spine_labels2;p=working%2FEvergreen.git LC1352542 - Printing LC Spine Labels format problem A reference was mis-coded in the javascript, so the special case code written for LC handling was never executed. In addition, call number parsing was improved to produce better results. Signed-off-by: Dan Pearl --- diff --git a/Open-ILS/xul/staff_client/server/cat/spine_labels.js b/Open-ILS/xul/staff_client/server/cat/spine_labels.js index 7822c90e46..2f5dcdd2d7 100644 --- a/Open-ILS/xul/staff_client/server/cat/spine_labels.js +++ b/Open-ILS/xul/staff_client/server/cat/spine_labels.js @@ -2,7 +2,7 @@ try { if (typeof JSAN == 'undefined') { throw( $("commonStrings").getString('common.jsan.missing') ); } JSAN.errorLevel = "die"; // none, warn, or die - JSAN.addRepository('/xul/server/'); + JSAN.addRepository('/xul/rel_2_8_3/server/'); JSAN.use('util.error'); g.error = new util.error(); g.error.sdump('D_TRACE','my_init() for spine_labels.xul'); @@ -71,7 +71,7 @@ } catch(E) { try { - g.error.standard_unexpected_error_alert('/xul/server/cat/spine_labels.xul',E); + g.error.standard_unexpected_error_alert('/xul/rel_2_8_3/server/cat/spine_labels.xul',E); } catch(F) { alert('FIXME: ' + js2JSON(E)); } @@ -161,7 +161,6 @@ function generate_labels(volume, label_node, label_cfg, override) { var names; var callnum; - if (override && volume.id() == override.acn) { /* If we're calling ourself, we'll have an altered label */ callnum = String(override.label); @@ -169,37 +168,39 @@ /* take the call number and split it on whitespace */ callnum = String(volume.label()); } + /* handle spine labels differently if using LC */ - if (volume.label_class() == 3) { - /* for LC, split between classification subclass letters and numbers */ - var lc_class_re = /^([A-Z]{1,3})([0-9]+.*?)$/i; - var lc_class_match = lc_class_re.exec(callnum); - if (lc_class_match && lc_class_match.length > 1) { - callnum = lc_class_match[1] + ' ' + lc_class_match[2]; - } + var lab_class = volume.label_class(); + if (lab_class.id() == 3) { + /* Establish a pattern where every return value should be isolated on its own line + on the spine label: subclass letters, subclass numbers, cutter numbers, trailing stuff (date) */ + var patt1 = /^([A-Z]{1,3})\s*(\d+(?:\.\d+)?)\s*(\.[A-Z]\d*)\s*([A-Z]\d*)?\s*(\d\d\d\d(?:-\d\d\d\d)?)?\s*(.*)$/i; + var result = callnum.match(patt1); + if (result) { + callnum = result.slice(1).join('\t'); + } else { + callnum = callnum.split(/\s+/).join('\t'); + } - /* for LC, split between Cutter numbers */ - var lc_cutter_re = /^(.*)(\.[A-Z]{1}[0-9]+.*?)$/ig; - var lc_cutter_match = lc_cutter_re.exec(callnum); - if (lc_cutter_match && lc_cutter_match.length > 1) { - callnum = ''; - for (var i = 1; i < lc_cutter_match.length; i++) { - callnum += lc_cutter_match[i] + ' '; - } - } + /* If result is null, leave callnum alone. Can't parse this malformed call num */ + } else { + callnum = callnum.split(/\s+/).join('\t'); } /* Only add the prefixes and suffixes once */ if (!override || volume.id() != override.acn) { if (volume.prefix()) { - callnum = volume.prefix() + ' ' + callnum; + callnum = volume.prefix() + '\t' + callnum; } if (volume.suffix()) { - callnum += ' ' + volume.suffix(); + callnum += '\t' + volume.suffix(); } } - names = callnum.split(/\s+/); + /* At this point, the call number pieces are separated by tab characters. This allows + * some space-containing constructs like "v. 1" to appear on one line + */ + names = callnum.split('\t'); var j = 0; while (j < label_cfg.spine_length || j < label_cfg.pocket_length) { var hb2 = document.createElement('hbox'); label_node.appendChild(hb2); @@ -530,7 +531,7 @@ } var plw = Number($('plw').value) || 28; var pll = Number($('pll').value) || 9; /* pocket label width and length */ var html = ""; - html += "" + html += "" html += ""; html += "Spine Labels\n"; var nl = document.getElementsByAttribute('name','template'); diff --git a/docs/RELEASE_NOTES_NEXT/Cataloging/spine_label.adoc b/docs/RELEASE_NOTES_NEXT/Cataloging/spine_label.adoc new file mode 100644 index 0000000000..b515bab3c3 --- /dev/null +++ b/docs/RELEASE_NOTES_NEXT/Cataloging/spine_label.adoc @@ -0,0 +1,4 @@ +Spine Label Formatting +^^^^^^^^^^^^^^^^^^^^^^ +The spine label formatting for LC-class call numbers did not format correctly. +This has been fixed.