From 9970de587530f7868f1f88f93321caee4bf68d4f Mon Sep 17 00:00:00 2001
From: dbs <dbs@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Date: Thu, 8 Jul 2010 15:32:59 +0000
Subject: [PATCH] Reclaim cataloguing real estate by hiding unnecessary rows in
 fixed field grid editor

The fixed field grid editor currently shows blank rows for fixed field
attributes that don't apply to the currently displayed MARC record type. We
can hide these rows and offer more screen real estate for the MARC record
proper.


git-svn-id: svn://svn.open-ils.org/ILS/trunk@16884 dcc99617-32d9-48b4-a31d-7c20da2025e4
---
 Open-ILS/xul/staff_client/server/cat/marcedit.js | 32 +++++++++++++++++++++++-
 1 file changed, 31 insertions(+), 1 deletion(-)

diff --git a/Open-ILS/xul/staff_client/server/cat/marcedit.js b/Open-ILS/xul/staff_client/server/cat/marcedit.js
index 673ad55bb3..32e7031e73 100644
--- a/Open-ILS/xul/staff_client/server/cat/marcedit.js
+++ b/Open-ILS/xul/staff_client/server/cat/marcedit.js
@@ -346,7 +346,7 @@ function setFocusToNextTag (row, direction) {
     while (direction == 'up' ? row = row.previousSibling : row = row.nextSibling) {
         var children = row.childNodes;
         for (var i = 0; i <  children.length; i++) {
-			// This would be way cleaner with dojo.query()
+            // This would be way cleaner with dojo.query()
             if (row.className  == 'marcDatafieldRow') {
                 // marcSubfield lives in hbox.hbox.textbox
                 var hboxKids = children[i].childNodes;
@@ -1124,6 +1124,36 @@ function toggleFFE () {
 function changeFFEditor (type) {
     var grid = document.getElementById('leaderGrid');
     grid.setAttribute('type',type);
+
+    // Hide FFEditor rows that we don't need for our current type
+    // Again, this would be easier with dojo
+    var row_list = grid.childNodes;
+    var rows;
+    for (var i = 0; i < row_list.length; i++) {
+        if (row_list[i].nodeType && row_list[i].tagName == 'rows') {
+            rows = row_list[i];
+        }
+    }
+
+    // If all of the labels for a given row do not include our
+    // desired type in their set attribute, we can hide that row
+    row_list = rows.childNodes;
+    for (var i = 0; i < row_list.length; i++) {
+        if (row_list[i].nodeType && row_list[i].tagName == 'row') {
+            var label_list = row_list[i].childNodes;
+            var found_type = false;
+            for (var j = 0; j < label_list.length; j++) {
+                if (label_list[j].nodeType && 
+                        label_list[j].tagName == 'label' && 
+                        label_list[j].getAttribute('set').indexOf(type) != -1) {
+                    found_type = true;
+                }
+            }
+            if (!found_type) {
+                row_list[i].hidden = true;
+            }
+        }
+    }
 }
 
 function fillFixedFields (rec) {
-- 
2.11.0