From 23601934340fa2440019af13f073474d90ca40e2 Mon Sep 17 00:00:00 2001 From: dbs Date: Fri, 9 Jul 2010 21:58:33 +0000 Subject: [PATCH] dojo == elegant; refactor cursor up/down and hide fixed fields in MARC editor git-svn-id: svn://svn.open-ils.org/ILS/trunk@16903 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/xul/staff_client/server/cat/marcedit.js | 72 +++++++----------------- 1 file changed, 20 insertions(+), 52 deletions(-) diff --git a/Open-ILS/xul/staff_client/server/cat/marcedit.js b/Open-ILS/xul/staff_client/server/cat/marcedit.js index 912d2e63a..1f6916445 100644 --- a/Open-ILS/xul/staff_client/server/cat/marcedit.js +++ b/Open-ILS/xul/staff_client/server/cat/marcedit.js @@ -384,35 +384,23 @@ function createCheckbox (attrs) { // For control fields, use the first editable text box // For data fields, focus on the first subfield text box 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() - if (row.className == 'marcDatafieldRow') { - // marcSubfield lives in hbox.hbox.textbox - var hboxKids = children[i].childNodes; - if (children[i].tagName == 'hbox') { - for (var j = 0; j < hboxKids.length; j++) { - var msfBoxKids = hboxKids[j].childNodes; - if (hboxKids[j].className == 'marcSubfieldBox') { - for (var k = 0; k < msfBoxKids.length; k++) { - if (msfBoxKids[k].className == 'plain marcSubfield') { - msfBoxKids[k].focus(); - return false; - } - } - - } - } - } - } else { - if (children[i].tagName == 'textbox') { - children[i].focus(); - return false; - } - } + var keep_looking = true; + while (keep_looking && (direction == 'up' ? row = row.previousSibling : row = row.nextSibling)) { + // Is it a datafield? + dojo.query('hbox hbox textbox', row).forEach(function(node, index, arr) { + node.focus(); + keep_looking = false; + }); + + // No, it's a control field; use the first textbox + if (keep_looking) { + dojo.query('textbox', row).forEach(function(node, index, arr) { + node.focus(); + keep_looking = false; + }); } } + return true; } @@ -1167,34 +1155,14 @@ function changeFFEditor (type) { 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; - } + dojo.query('rows row', grid).forEach(function(node, index, arr) { + if (dojo.query('label[set~=' + type + ']', node).length == 0) { + node.hidden = true; } - } + }); + } function fillFixedFields (rec) { -- 2.11.0