From 51d81230947d067dcfa91143051cdc2a59aab470 Mon Sep 17 00:00:00 2001 From: phasefx Date: Sat, 18 Jun 2005 06:25:08 +0000 Subject: [PATCH] some refactoring git-svn-id: svn://svn.open-ils.org/ILS/trunk@847 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../chrome/content/evergreen/util/error.js | 35 ++ .../chrome/content/evergreen/util/fm_utils.js | 90 ++++ .../content/evergreen/util/functional.js | 80 +++ .../chrome/content/evergreen/util/util.js | 497 ------------------ .../content/evergreen/util/util_overlay.xul | 7 +- .../chrome/content/evergreen/util/validate.js | 54 ++ .../chrome/content/evergreen/util/widgets.js | 286 ++++++++++ 7 files changed, 551 insertions(+), 498 deletions(-) create mode 100644 Evergreen/staff_client/chrome/content/evergreen/util/error.js create mode 100644 Evergreen/staff_client/chrome/content/evergreen/util/fm_utils.js create mode 100644 Evergreen/staff_client/chrome/content/evergreen/util/functional.js create mode 100644 Evergreen/staff_client/chrome/content/evergreen/util/validate.js create mode 100644 Evergreen/staff_client/chrome/content/evergreen/util/widgets.js diff --git a/Evergreen/staff_client/chrome/content/evergreen/util/error.js b/Evergreen/staff_client/chrome/content/evergreen/util/error.js new file mode 100644 index 0000000000..ca02b74ef2 --- /dev/null +++ b/Evergreen/staff_client/chrome/content/evergreen/util/error.js @@ -0,0 +1,35 @@ +sdump('D_TRACE',"Loading error.js\n"); + +var sdump_levels = { + 'D_TRACE' : true, + 'D_AUTH' : false, + 'D_UTIL' : false, + 'D_EXPLODE' : false, + 'D_PRINT' : false, + 'D_SES' : true +}; + +function sdump(level,msg) { + try { + if (sdump_levels[level]) + debug(msg); + } catch(E) {} +} + +function handle_error(E) { + var s = ''; + if (instanceOf(E,ex)) { + s += E.err_msg(); + //s += '\n\n=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n\n'; + //s += 'This error was anticipated.\n\n'; + //s += js2JSON(E).substr(0,200) + '...\n\n'; + if (snd_bad) snd_bad(); + } else { + s += '\n\n=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n\n'; + s += 'This is a bug that we will fix later.\n\n'; + s += js2JSON(E).substr(0,200) + '\n\n'; + if (snd_really_bad) snd_really_bad(); + } + s_alert(s); +} + diff --git a/Evergreen/staff_client/chrome/content/evergreen/util/fm_utils.js b/Evergreen/staff_client/chrome/content/evergreen/util/fm_utils.js new file mode 100644 index 0000000000..9656ed5dea --- /dev/null +++ b/Evergreen/staff_client/chrome/content/evergreen/util/fm_utils.js @@ -0,0 +1,90 @@ +sdump('D_TRACE','Loading fm_utils.js\n'); + +function get_my_orgs(user_ou) { + + // self and ancestors + var current_item_id = user_ou.id(); + //sdump('D_FM_UTILS','mw.G[user_ou] = ' + js2JSON(mw.G['user_ou']) + '\n'); + //sdump('D_FM_UTILS','current_item_id = ' + current_item_id + '\n'); + var item_ou; var my_orgs = {}; var other_orgs = {}; + while( item_ou = find_ou(mw.G['org_tree'],current_item_id) ) { + //sdump('D_FM_UTILS','\titem_ou = ' + js2JSON(item_ou) + '\n'); + my_orgs[ item_ou.id() ] = item_ou; + current_item_id = item_ou.parent_ou(); + if (!current_item_id) { break; } + } + + current_item_id = user_ou.id(); + //sdump('D_FM_UTILS','self & ancestors : my_orgs = <<<'+js2JSON(my_orgs)+'>>>\n'); + // descendants + var my_children; + var find_ou_result = find_ou(mw.G['org_tree'],current_item_id); + if (find_ou_result) { + my_children = find_ou_result.children() } + else { + sdump('D_FM_UTILS','ERROR: find_ou(org_tree,'+current_item_id+') returned with no properties\n'); + }; + //sdump('D_FM_UTILS','my_children: ' + my_children + ' : ' + js2JSON(my_children) + '\n'); + if (my_children) { + for (var i = 0; i < my_children.length; i++) { + var my_child = my_children[i]; + my_orgs[ my_child.id() ] = my_child; + //sdump('D_FM_UTILS','my_child.children(): ' + my_child.children() + ' : ' + js2JSON(my_child.children()) + '\n'); + if (my_child.children() != null) { + for (var j = 0; j < my_child.children().length; j++) { + var my_gchild = my_child.children()[j]; + my_orgs[ my_gchild.id() ] = my_gchild; + } + } + } + } + //sdump('D_FM_UTILS','& descendants : my_orgs = <<<'+js2JSON(my_orgs)+'>>>\n'); + return my_orgs; +} + +function get_other_orgs(org,other_orgs) { +} + +function flatten_ou_branch(branch) { + //sdump('D_FM_UTILS','flatten: branch = ' + js2JSON(branch) + '\n'); + var my_array = new Array(); + my_array.push( branch ); + for (var i in branch.children() ) { + var child = branch.children()[i]; + if (child != null) { + var temp_array = flatten_ou_branch(child); + for (var j in temp_array) { + my_array.push( temp_array[j] ); + } + } + } + return my_array; +} + +function find_ou(tree,id) { + if (typeof(id)=='object') { id = id.id(); } + if (tree.id()==id) { + return tree; + } + for (var i in tree.children()) { + var child = tree.children()[i]; + ou = find_ou( child, id ); + if (ou) { return ou; } + } + return null; +} + +function find_ou_by_shortname(tree,sn) { + var ou = new aou(); + if (tree.shortname()==sn) { + return tree; + } + for (var i in tree.children()) { + var child = tree.children()[i]; + ou = find_ou_by_shortname( child, sn ); + if (ou) { return ou; } + } + return null; +} + + diff --git a/Evergreen/staff_client/chrome/content/evergreen/util/functional.js b/Evergreen/staff_client/chrome/content/evergreen/util/functional.js new file mode 100644 index 0000000000..ff99b27e7b --- /dev/null +++ b/Evergreen/staff_client/chrome/content/evergreen/util/functional.js @@ -0,0 +1,80 @@ +sdump('D_FUNCTIONAL',"Loading functional.js\n"); + +function filter_list(list,f) { + var new_list = []; + for (var i in list) { + var t = f( list[i] ); + if (t) new_list.push( list[i] ); + } + return new_list; +} + +function find_list(list,f) { + for (var i in list) { + var t = f( list[i] ); + if (t) return list[i]; + } + return null; +} + +function map_list(list,f) { + var new_list = []; + for (var i in list) { + new_list.push( f( list[i] ) ); + } + return new_list; +} + +function map_object_to_list(obj,f) { + var new_list = []; + for (var i in obj) { + new_list.push( f( obj, i ) ); + } + return new_list; +} + +function convert_object_list_to_hash(list) { + var my_hash = new Object(); + if (list) { + for (var i = 0; i < list.length; i++) { + my_hash[ list[i].id() ] = list[i]; + } + } + return my_hash; +} + +function find_id_object_in_list(list,id) { + //sdump('D_FUNCTIONAL','find_id_object_in_list(' + js2JSON(list).substr(0,20) + '... ,' + id + ')\n'); + if (list) { + for (var i = 0; i < list.length; i++ ) { + try { + if ( list[i].id() == id ) { + return list[i]; + } + } catch(E) { + sdump('D_FUNCTIONAL','find_id_object_in_list error, i = ' + i + ' typeof(list[i]) = ' + typeof(list[i]) + ' list[i] = ' + js2JSON(list[i]) + ' : ' + js2JSON(E) + '\n'); + } + } + } + //sdump('D_FUNCTIONAL','not found\n'); + return null; +} + +function find_attr_object_in_list(list,attr,value) { + if (list) { + for (var i = 0; i < list.length; i++ ) { + sdump('D_FUNCTIONAL','find_attr_object_in_list: i = ' + i + ' id = ' + list[i].id() + '\n'); + try { + var command = 'list[' + i + '].'+attr+'() == ' + value; + if ( eval(command) ) { + return list[i]; + } + } catch(E) { + sdump('D_FUNCTIONAL','find_attr_object_in_list error, i = ' + i + ' typeof(list[i]) = ' + typeof(list[i]) + ' list[i] = ' + js2JSON(list[i]) + ' : list = ' + js2JSON(list) + ' : ' + js2JSON(E) + '\n'); + } + } + } + return null; +} + + diff --git a/Evergreen/staff_client/chrome/content/evergreen/util/util.js b/Evergreen/staff_client/chrome/content/evergreen/util/util.js index f9c987a5d3..876d9fe718 100644 --- a/Evergreen/staff_client/chrome/content/evergreen/util/util.js +++ b/Evergreen/staff_client/chrome/content/evergreen/util/util.js @@ -2,40 +2,6 @@ sdump('D_TRACE','Loading util.js\n'); var timer = {}; var counter = {}; -var treeitem_id = 0; - -var sdump_levels = { - 'D_TRACE' : true, - 'D_AUTH' : false, - 'D_UTIL' : false, - 'D_EXPLODE' : false, - 'D_PRINT' : false, - 'D_SES' : true -}; - -function sdump(level,msg) { - try { - if (sdump_levels[level]) - debug(msg); - } catch(E) {} -} - -function handle_error(E) { - var s = ''; - if (instanceOf(E,ex)) { - s += E.err_msg(); - //s += '\n\n=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n\n'; - //s += 'This error was anticipated.\n\n'; - //s += js2JSON(E).substr(0,200) + '...\n\n'; - snd_bad() - } else { - s += '\n\n=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n\n'; - s += 'This is a bug that we will fix later.\n\n'; - s += js2JSON(E).substr(0,200) + '\n\n'; - snd_really_bad(); - } - s_alert(s); -} function string_to_array(s) { var my_array = []; @@ -45,112 +11,6 @@ function string_to_array(s) { return my_array; } -function textbox_checkdigit(ev) { - if ( check_checkdigit( ev.target.value ) ) { - sdump('D_UTIL', 'success\n'); - return true; - } else { - sdump('D_UTIL', 'failure\n'); - ev.preventDefault(); - ev.stopPropagation(); - return false; - } -} - -function check_checkdigit(barcode) { - - var stripped_barcode = barcode.slice(0,-1); - var checkdigit = barcode.slice(-1); - - sdump('D_UTIL', '\n\n=-=***=-=\n\ncheck_checkdigit: barcode = ' + barcode + ' barcode stripped = ' + stripped_barcode + ' checkdigit = ' + checkdigit + '\n'); - - var sum = 0; var mul = 2; - - var b_array = string_to_array( stripped_barcode ).reverse(); - sdump('D_UTIL', '\tb_array = ' + b_array + '\n'); - - for (var i in b_array) { - var digit = parseInt( b_array[i] ); - sdump('D_UTIL', '\t\tdigit = ' + digit + '\n'); - - var product = digit * mul; - if (mul == 2) { mul = 1; } else { mul = 2; } - - var p_array = string_to_array( product.toString() ); - sdump('D_UTIL', '\t\tp_array = ' + p_array + '\n'); - - for (var j in p_array) { - var n = parseInt( p_array[j] ); - sdump('D_UTIL', '\t\t\tn = ' + n + '\n'); - sum += n; - } - } - - sdump('D_UTIL', '\tsum = ' + sum + '\n'); - - var s_array = string_to_array( sum.toString() ); - var calculated_checkdigit = s_array.pop(); - if (calculated_checkdigit > 0) calculated_checkdigit = 10 - calculated_checkdigit; - sdump('D_UTIL', '\tcalculated checkdigit = ' + calculated_checkdigit + '\n\n=-=***=-=\n\n'); - - return ( calculated_checkdigit == checkdigit ); -} - -function fake_tab_for_textboxes(w,current) { - var flag = false; var next_one; - if (typeof(w)!='object') { - w = document.getElementById(w); - } - sdump('D_UTIL', 'fake_tab_for_textboxes: Current ' + current + '\n'); - var nl = w.getElementsByTagName('textbox'); - //var nl = document.getElementsByTagName('textbox'); - sdump('D_UTIL', 'fake_tab_for_textboxes: nl.length = ' + nl.length + '\n'); - for (var i = 0; i < nl.length; i++) { - sdump('D_UTIL', 'fake_tab_for_textboxes: Considering ' + nl[i] + '...\n'); - if (flag && !next_one) { - sdump('D_UTIL', 'fake_tab_for_textboxes: Setting next_one ' + nl[i] + '\n'); - next_one = nl[i]; - } - if (nl[i] === current) { - sdump('D_UTIL','fake_tab_for_textboxes: Found current\n'); - flag = true; - } - } - if (!next_one) { - sdump('D_UTIL','fake_tab_for_textboxes: Out of loop, Setting next_one ' + nl[0] + '\n'); - next_one = nl[0]; - } - if (next_one) { - next_one.focus(); next_one.select(); - } else { - sdump('D_UTIL','fake_tab_for_textboxes: next_one not set\n'); - } -} - -function get_list_from_tree_selection(tree_w) { - sdump('D_UTIL','entering get_list_from_tree...\n'); - var hitlist; - if (typeof(tree_w) != 'object') { - hitlist = document.getElementById(tree_w); - } else { - hitlist = tree_w; - } - var list = []; - var start = new Object(); - var end = new Object(); - var numRanges = hitlist.view.selection.getRangeCount(); - for (var t=0; t