[open-ils-commits] r17359 - trunk/Open-ILS/xul/staff_client/server/cat (dbs)

svn at svn.open-ils.org svn at svn.open-ils.org
Fri Aug 27 10:10:29 EDT 2010


Author: dbs
Date: 2010-08-27 10:10:27 -0400 (Fri, 27 Aug 2010)
New Revision: 17359

Modified:
   trunk/Open-ILS/xul/staff_client/server/cat/spine_labels.js
Log:
Split spine labels between the alpha and numeric part of the LC subclass

Some sites jam the alpha and numberic parts of the LC subclass together;
for example "QA76.76" instead of "QA 76.76". Without the space, Evergreen
was not inserting a line break. This commit will insert a line break
automatically if the first element of a call number contains 1 to 3 alpha
characters followed immediately by 1 or more numbers.

This should not affect Dewey or most other classification systems, but will
have the effect of making call numbers split as follows:

Given "QA76.76 S93 1998", generate:

QA
76.76
S93
1998


Modified: trunk/Open-ILS/xul/staff_client/server/cat/spine_labels.js
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/cat/spine_labels.js	2010-08-27 01:19:26 UTC (rev 17358)
+++ trunk/Open-ILS/xul/staff_client/server/cat/spine_labels.js	2010-08-27 14:10:27 UTC (rev 17359)
@@ -153,6 +153,9 @@
                 names = String(volume.label()).split(/\s+/);
             }
             var j = 0;
+            var name_cnt = 0;
+            /* for LC, split between classification subclass letters and numbers */
+            var lc_class_re = /^([A-Z]{1,3})([0-9]+.*?$)/i;
             while (j < label_cfg.spine_length || j < label_cfg.pocket_length) {
                 var hb2 = document.createElement('hbox'); label_node.appendChild(hb2);
                 
@@ -171,9 +174,21 @@
                     tb.setAttribute('name','spine');
                     var spine_row_id = 'acn_' + volume.id() + '_spine_' + j;
                     tb.setAttribute('id',spine_row_id);
+
                     var name = names.shift();
                     if (name) {
                         name = String( name );
+
+                        /* Split LC subclass between alpha and numeric part */
+                        if (name_cnt == 0) {
+                            var lc_class_match = lc_class_re.exec(name);
+                            if (lc_class_match && lc_class_match.length > 1) {
+                                name = lc_class_match[1];
+                                names = [lc_class_match[2]].concat(names);
+                            }
+                            name_cnt = 1;
+                        }
+
                         /* if the name is greater than the label width... */
                         if (name.length > label_cfg.spine_width) {
                             /* then try to split it on periods */



More information about the open-ils-commits mailing list