From: phasefx Date: Sun, 17 Jul 2005 15:19:23 +0000 (+0000) Subject: original legacy (ie. prototype) cat code X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=d0d5759a1f711491bc9d1b70140cbcc822be1453;p=Evergreen.git original legacy (ie. prototype) cat code git-svn-id: svn://svn.open-ils.org/ILS/trunk@1242 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Evergreen/staff_client/chrome/content/evergreen/cat/browse_list.js b/Evergreen/staff_client/chrome/content/evergreen/cat/browse_list.js new file mode 100644 index 0000000000..e0654dd191 --- /dev/null +++ b/Evergreen/staff_client/chrome/content/evergreen/cat/browse_list.js @@ -0,0 +1,662 @@ +// find_this_id = document id + +var org_shortname2id = {}; +var my_treerow; +var browse_meter_per = 0; +var orgs_with_copies = []; +var orgs_with_copies_hash = {}; + +function my_init() { + timer_init('cat'); + dump('TESTING: browse_list.js: ' + mw.G['main_test_variable'] + '\n'); + var tc = document.getElementById('browse_list_tree_children'); + build_tree_branch(tc,mw.G['org_tree'],true); + my_treerow = document.getElementById( 'org_unit_' + mw.G.user_ou.shortname() ).firstChild; + document.getElementById('browse_meter').value = 0; + document.getElementById('browse_meter').setAttribute('real', '0.0'); + gather_copies(); + //populate_tree(); +} + +function refresh_browse_list() { + dump('=-=-=-=-=-=-=-=-=\n\n\nrefresh_browse_list()\n'); + // Prune tree + var nl = document.getElementsByTagName('treeitem'); + for (var i = 0; i < nl.length; i++) { + var v_treeitem = nl[i]; + if (v_treeitem.getAttribute('object_type') == 'volume') { + var org_treechildren = v_treeitem.parentNode; + var org_treeitem = org_treechildren.parentNode; + org_treeitem.removeChild(org_treechildren); + var org_treerow = org_treeitem.firstChild; + org_treerow.childNodes[1].setAttribute('label','0'); + org_treerow.childNodes[2].setAttribute('label','0'); + } + } + document.getElementById('browse_meter').value = 0; + document.getElementById('browse_meter').setAttribute('real', '0.0'); + gather_copies(); +} + +function button_toggle_my_libraries(ev) { + // label = Hide My Libraries + // alt_label = Show My Libraries + var target = document.getElementById('browse_list_button1'); + if (!target) { dump('eh?\n'); return; } + swap_attributes('browse_list_button1','label','alt_label'); + var toggle = cycle_attribute( target,'toggle', [ '1', '2' ] ); + for (var i in mw.G.my_orgs) { + var lib = mw.G.my_orgs[i]; + var item = document.getElementById('org_unit_'+lib.shortname()); + if (item) { + if (toggle == '2') { + hide_branch(item); + } else { + unhide_branch(item); + } + } + } +} + +function button_toggle_libraries(ev) { + // label = Show Other Libraries With Copies + // alt_label = Show Just My Libraries + var target = document.getElementById('browse_list_button2'); + if (!target) { dump('eh?\n'); return; } + swap_attributes('browse_list_button2','label','alt_label'); + var toggle = cycle_attribute( target,'toggle',['1','2'] ); + if (toggle == '1') { + dump('Showing just my libraries...\n'); + /*hide_branch( document.getElementById('org_unit_PINES') ); + for (var i = 0; i < mw.G.my_orgs.length; i++) { + unhide_branch( + document.getElementById( 'org_unit_' + mw.G.my_orgs[i].shortname() ) + ); + }*/ + var nl = document.getElementsByTagName('treeitem'); + for (var i = 0; i < nl.length; i++) { + var item = nl[i]; + if (item.getAttribute('id').substr(0,9) != 'org_unit_') continue; + if (mw.G.my_orgs_hash[ item.getAttribute('myid') ]) { + //item.setAttribute('hidden','false'); + unhide_branch(item); + } else { + //item.setAttribute('hidden','true'); + hide_branch(item); + } + } + } else { + dump('Showing other libraries with copies...\n'); + var nl = document.getElementsByTagName('treeitem'); + for (var i = 0; i < nl.length; i++) { + var item = nl[i]; + if (item.getAttribute('copies') == 'true') { + //item.setAttribute('hidden','false'); + //dump('\tunhiding ' + item.getAttribute('id') + '\n'); + unhide_branch(item); + } else { + //item.setAttribute('hidden','true'); + //dump('\thiding ' + item.getAttribute('id') + '\n'); + //hide_branch(item); + } + } + + } +} + +function unhide_branch(item,do_open,do_copies) { + if (item.getAttribute('id') == 'org_unit_PINES') { return; } + //dump('Unhiding ' + item.getAttribute('id') + '\n'); + item.setAttribute('hidden','false'); + if (do_open) { + item.setAttribute('open','true'); + } + if (do_copies) { + item.setAttribute('copies','true'); + } + if (item.parentNode && item.parentNode.setAttribute) { + var id = item.parentNode.getAttribute('id'); + if (id.substr(0,7) != 'browse_' && id != 'org_unit_PINES') { + unhide_branch(item.parentNode,do_open,do_copies); + } + } +} + +function hide_branch(item,do_open,do_copies) { + if (item.getAttribute('id') == 'org_unit_PINES') { return; } + //dump('Hiding ' + item.getAttribute('id') + '\n'); + item.setAttribute('hidden','true'); + if (do_open) { + item.setAttribute('open','false'); + } + if (do_copies) { + item.setAttribute('copies','true'); + } + if (item.parentNode && item.parentNode.setAttribute) { + var id = item.parentNode.getAttribute('id'); + if (id.substr(0,7) != 'browse_' && id != 'org_unit_PINES') { + hide_branch(item.parentNode,do_open,do_copies); + } + } +} + +function gather_copies() { + // loop the libs + dump('Hello : ' + timer_elapsed('world') + '\n'); +/* user_async_request( + 'open-ils.cat', + 'open-ils.cat.asset.copy_tree.global.retrieve', + [ mw.G['auth_ses'][0], find_this_id ], + gather_copies_callback + ); +*/ + var orgs_with_copies = user_request( + 'open-ils.cat', + 'open-ils.cat.actor.org_unit.retrieve_by_title', + [ find_this_id ] + )[0]; + for (var i = 0; i < orgs_with_copies.length; i++) { + orgs_with_copies_hash[ orgs_with_copies[i] ] = true; + } + var bucket = new Array(); + for (var i = 0; i < mw.G.my_orgs.length; i++ ) { + //if (find_id_object_in_list( mw.G.aout_list, mw.G.my_orgs[i].ou_type() ).can_have_vols() == '0') + if ( mw.G.aout_list[ mw.G.my_orgs[i].ou_type() ].can_have_vols() == '0') + continue; + if ( ! orgs_with_copies_hash[ mw.G.my_orgs[i].id() ] ) continue; + bucket.push( mw.G.my_orgs[i].id() ); + } + document.getElementById('browse_libs').setAttribute('value','Retrieving my copies...'); + user_async_request( + 'open-ils.cat', + 'open-ils.cat.asset.copy_tree.retrieve', + [ mw.G['auth_ses'][0], find_this_id, bucket ], + function (request) { + gather_copies_callback(request); + document.getElementById('browse_libs').setAttribute('value','Retrieving copies from other libraries...'); + gather_other_copies(); + } + ); + dump('((((((((((((((((( Count = ' + counter_incr('world') + '\n'); +} + +function gather_other_copies() { + var w_s = 10; var c_s = 0; + var bucket = new Array(); + + var nl = document.getElementsByTagName('treeitem'); + for (var i = 0; i < nl.length; i++) { + var item = nl[i]; + if (item.getAttribute('can_have_vols') == '0') continue; + //if ( find_id_object_in_list( mw.G.my_orgs, item.getAttribute('myid') ) ) { continue; } + if ( mw.G.my_orgs_hash[ item.getAttribute('myid') ] ) { continue; } + if ( ! orgs_with_copies_hash[ item.getAttribute('myid') ] ) continue; + bucket.push( item.getAttribute('myid') ); + if (++c_s >= w_s) { + user_async_request( + 'open-ils.cat', + 'open-ils.cat.asset.copy_tree.retrieve', + [ mw.G['auth_ses'][0], find_this_id, bucket ], + gather_copies_callback + ); + dump('((((((((((((((((( Count = ' + counter_incr('world') + '\n'); + bucket = new Array(); + c_s = 0; + } + } + if (bucket.length > 0) { + user_async_request( + 'open-ils.cat', + 'open-ils.cat.asset.copy_tree.retrieve', + [ mw.G['auth_ses'][0], find_this_id, bucket ], + gather_copies_callback + ); + dump('((((((((((((((((( Count = ' + counter_incr('world') + '\n'); + } + browse_meter_per = 100 / counter_peek('world'); + dump(timer_elapsed('world') + ' : World : ' + timer_elapsed('gather') + '\n'); +} + +function find_my_treerow_index() { + var nl = document.getElementById('browse_list_tree').getElementsByTagName('treerow'); + var count = 0; + //dump('find_my_treerow: count = ' + count + ' nl.length = ' + nl.length + '\n'); + for (var i = 0; i < nl.length; i++) { + var row = nl[i]; + var item = row.parentNode; + if (item.getAttribute('id') == 'org_unit_' + mw.G.user_ou.shortname() ) { + return count; + } + var open_attr = item.getAttribute('open'); + var hidden_prop = item.hidden; + //dump('id = ' + item.getAttribute('id') + ' hidden_attr = ' + hidden_attr + ' hidden_prop = ' + hidden_prop + '\n'); + if (hidden_prop.toString() == 'false' && open_attr.toString() == 'true') { + count++; + } + } + return 0; +} + +function gather_copies_callback(request) { + dump('gather_copies_callback : ' + timer_elapsed('gather') + ' : ' + ' count = ' + counter_incr('gather') + '\n'); + var result = request.getResultObject(); + var n_volumes = 0; var n_copies = 0; var flag = false; + //dump('copybrowser result = ' + js2JSON(result) + '\n=-=-=\n'); + for (var y in result) { + if (result[y] && (typeof(result[y])=='object')) { + var volume = result[y]; n_volumes++; + //dump('\nvolume = ' + js2JSON(volume) + '\n'); + dump(' volume id = ' + volume.id() + '\n'); + var lib = find_ou( mw.G.org_tree, volume.owning_lib() ); + //dump('lib = ' + js2JSON(lib) + '\n'); + if ( lib.shortname() == mw.G.user_ou.shortname() ) { flag = true; } + var callnumber = volume.label(); + var copies = volume.copies(); + //dump('\tcopies = ' + js2JSON(copies) + '\n'); + var item = document.getElementById('org_unit_'+lib.shortname()); + if (!item) { dump('skipping\n'); continue; } + + var item_row = item.firstChild; + var volumes_treecell; + if (item_row.childNodes.length == 1) { + volumes_treecell = document.createElement('treecell'); + volumes_treecell.setAttribute('label','0'); + item_row.appendChild(volumes_treecell); + } else { + volumes_treecell = item_row.childNodes[1]; + } + volumes_treecell.setAttribute( + 'label', + parseInt(volumes_treecell.getAttribute('label')) + 1 + ); + + var copies_treecell; + if (item_row.childNodes.length < 3) { + copies_treecell = document.createElement('treecell'); + copies_treecell.setAttribute('label','0'); + item_row.appendChild(copies_treecell); + } else { + copies_treecell = item_row.childNodes[2]; + } + copies_treecell.setAttribute( + 'label', + parseInt(copies_treecell.getAttribute('label')) + copies.length + ); + + + var cn_treechildren; + var nl = item.getElementsByTagName('treechildren'); + //unhide_branch(item,false,true); + item.setAttribute('copies',true); + if (nl.length == 0) { + cn_treechildren = document.createElement('treechildren'); + item.appendChild(cn_treechildren); + } else { + cn_treechildren = nl[0]; + } + + var cn_treeitem = document.createElement('treeitem'); + cn_treeitem.setAttribute('container','true'); + cn_treeitem.setAttribute('open','true'); + cn_treeitem.setAttribute('object_type','volume'); + cn_treeitem.setAttribute('volume_id',volume.id()); + cn_treeitem.setAttribute('callnumber',volume.label()); + cn_treeitem.setAttribute('ou_id',lib.id()); + + cn_treechildren.appendChild(cn_treeitem); + + var cn_treerow = document.createElement('treerow'); + cn_treeitem.appendChild(cn_treerow); + + var cn_treecell = document.createElement('treecell'); + cn_treecell.setAttribute('label',callnumber); + cn_treerow.appendChild(cn_treecell); + + var treechildren = document.createElement('treechildren'); + cn_treeitem.appendChild(treechildren); + //dump( 'org_unit_'+lib+' item = '+item.tagName+'\n'); + for (var j = 0; j < copies.length; j++) { + var copy = copies[j]; n_copies++; + //dump('barcode: ' + copy.barcode() + '\n'); + + var treeitem = document.createElement('treeitem'); + treeitem.setAttribute('open','true'); + treeitem.setAttribute('container','true'); + treeitem.setAttribute('class','barcode_row'); + treeitem.setAttribute('object_type','copy'); + treeitem.setAttribute('ou_shortname',lib.shortname()); + treeitem.setAttribute('ou_id',lib.id()); + treeitem.setAttribute('callnumber',callnumber); + treeitem.setAttribute('barcode',copy.barcode()); + treeitem.setAttribute('copy_id',copy.id()); + treeitem.setAttribute('volume_id',volume.id()); + //treeitem.setAttribute('copy',js2JSON(copy)); + treechildren.appendChild(treeitem); + + var treerow = document.createElement('treerow'); + treeitem.appendChild(treerow); + + var list = [ + copy.barcode() , '', '', lib.shortname() , callnumber , copy.copy_number() , + //find_id_object_in_list( mw.G.acpl_list, copy.location() ).name() , + mw.G.acpl_hash[ copy.location() ].name() , + //find_ou( mw.G.org_tree, copy.circ_lib() ).shortname() , + mw.G.org_tree_hash[ copy.circ_lib() ].shortname(), + yesno( copy.circulate() ) , yesno( copy.ref() ) , + yesno( copy.opac_visible() ) , copy.circ_as_type() , copy.circ_modifier() , + copy.loan_duration() , copy.fine_level() , copy.create_date() , + copy.creator() , copy.edit_date() , copy.editor() , copy.deposit() , + copy.deposit_amount() , copy.price() , copy.status() + ]; + + for (var i = 0; i < list.length; i++ ) { + var treecell = document.createElement('treecell'); + treecell.setAttribute('label',list[i]); + treerow.appendChild(treecell); + } + + } + } else { + dump('gather_copies problem: ' + result[y] + '\n'); + //throw(result[0]); + } + } + var tree = document.getElementById('browse_list_tree'); + if (tree.currentIndex != -1) { + //dump('currentIndex != -1 = ' + tree.currentIndex + '\n'); + //tree.treeBoxObject.scrollToRow( tree.currentIndex ); + tree.treeBoxObject.ensureRowIsVisible( tree.currentIndex ); + } else if (flag) { + //dump('currentIndex == -1\n'); + var find = find_my_treerow_index(); + dump('find = ' + find + ' n_volumes = ' + n_volumes + ' n_copies = ' + n_copies + '\n'); + //alert('find = ' + find + ' n_volumes = ' + n_volumes + ' n_copies = ' + n_copies + '\n'); + if (find > 0) { + find = find + n_volumes + n_copies; + tree.view.selection.select( find ); + } + //tree.treeBoxObject.ensureRowIsVisible( find ); + } + var meter = document.getElementById('browse_meter'); + var real = parseFloat( meter.getAttribute('real') ) + browse_meter_per; + meter.setAttribute('real',real); + meter.value = Math.ceil( real ); + if ( counter_peek('gather') == counter_peek('world') ) { + document.getElementById('browse_libs').setAttribute('value','Finished'); + document.getElementById('browse_libs').setAttribute('hidden','true'); + meter.value = 100; + meter.setAttribute('hidden','true'); + } + dump('gather callback done : ' + timer_elapsed('gather') + '\n'); +} + + +function build_tree_branch(treechildren,org,hide) { + var id = org.id(); + var name = org.name(); + var shortname = org.shortname(); org_shortname2id[shortname] = id; + var children = org.children(); + var flag = mw.G.aout_hash[ org.ou_type() ].can_have_vols() == '1'; + var item = make_treeitem('org_unit_' + shortname, name, flag); + item.setAttribute('hidden',hide); + item.setAttribute('ou_id',org.id()); + //if ( find_id_object_in_list( mw.G.my_orgs, id ) ) { + if ( mw.G.my_orgs_hash[ id ] ) { + item.setAttribute('open','true'); + item.setAttribute('hidden','false'); + item.setAttribute('myorg','true'); + } + item.setAttribute( + 'can_have_vols', + //find_id_object_in_list( mw.G.aout_list, org.ou_type() ).can_have_vols() + mw.G.aout_hash[ org.ou_type() ].can_have_vols() + ); + item.setAttribute( 'myid', org.id() ); + if (children && (children.length > 0)) { + var n_treechildren = document.createElement('treechildren'); + for (var i in children) { + var child = children[i]; + build_tree_branch(n_treechildren, child, true); + } + item.appendChild(n_treechildren); + } + treechildren.appendChild(item); +} + +function make_treeitem(id,name,flag) { + var treeitem = document.createElement('treeitem'); + treeitem.setAttribute('id',id); + treeitem.setAttribute('container','true'); + var treerow = make_treerow(name,flag); + treeitem.appendChild(treerow); + treeitem.setAttribute('object_type','org_unit'); + return treeitem; +} + +function make_treerow(name,flag) { + var treerow = document.createElement('treerow'); + var treecell = document.createElement('treecell'); + treecell.setAttribute('label',name); + treerow.appendChild(treecell); + treecell = document.createElement('treecell'); + if (flag) treecell.setAttribute('label',0); + treerow.appendChild(treecell); + treecell = document.createElement('treecell'); + if (flag) treecell.setAttribute('label',0); + treerow.appendChild(treecell); + + return treerow; +} + +function get_selected_rows_by_object_type(tree,object_type) { + var items = get_list_from_tree_selection(tree); + var command = "filter_list(items, function (obj) { return obj.getAttribute('object_type') == '" + object_type + "'; } );"; + return eval(command); +} + +function build_CopyBrowser_Context(ev) { + dump('build_CopyBrowser_Context: ev.target.tagName = ' + ev.target.tagName + '\n'); + dump('this = ' + this.tagName + '\n'); + + var popup = document.getElementById('browse_menu'); + empty_widget(popup); + + var volume_flag = 0; var copy_flag = 0; var library_flag = 0; + + var hitlist = document.getElementById('browse_list_tree'); + var start = new Object(); var end = new Object(); + var numRanges = hitlist.view.selection.getRangeCount(); + for (var t=0; t 0) { + var menuitem = document.createElement('menuitem'); + popup.appendChild(menuitem); + menuitem.setAttribute('label','Add Volumes'); + menuitem.setAttribute('command','cmd_volume_add'); + popup.appendChild( document.createElement( 'menuseparator' ) ); + } + if (volume_flag > 0) { + var menuitem = document.createElement('menuitem'); + popup.appendChild(menuitem); + if (volume_flag > 1) { + menuitem.setAttribute('label','Edit Volumes'); + } else { + menuitem.setAttribute('label','Edit Volume'); + } + menuitem.setAttribute('command','cmd_volume_edit'); + popup.appendChild( document.createElement( 'menuseparator' ) ); + menuitem = document.createElement('menuitem'); + popup.appendChild(menuitem); + menuitem.setAttribute('label','Add Copies'); + menuitem.setAttribute('command','cmd_copy_add'); + menuitem = document.createElement('menuitem'); + popup.appendChild( document.createElement( 'menuseparator' ) ); + } + if (copy_flag > 0) { + var menuitem = document.createElement('menuitem'); + popup.appendChild(menuitem); + if (copy_flag > 1) { + menuitem.setAttribute('label','Edit Copies'); + } else { + menuitem.setAttribute('label','Edit Copy'); + } + menuitem.setAttribute('command','cmd_copy_edit'); + popup.appendChild( document.createElement( 'menuseparator' ) ); + } + if (volume_flag > 0) { + var menuitem = document.createElement('menuitem'); + popup.appendChild(menuitem); + if (volume_flag > 1) { + menuitem.setAttribute('label','Delete Volumes'); + } else { + menuitem.setAttribute('label','Delete Volume'); + } + menuitem.setAttribute('command','cmd_volume_delete'); + popup.appendChild( document.createElement( 'menuseparator' ) ); + + } + if (copy_flag > 0) { + var menuitem = document.createElement('menuitem'); + popup.appendChild(menuitem); + if (copy_flag > 1) { + menuitem.setAttribute('label','Delete Copies'); + } else { + menuitem.setAttribute('label','Delete Copy'); + } + menuitem.setAttribute('command','cmd_copy_delete'); + popup.appendChild( document.createElement( 'menuseparator' ) ); + } + + var menuitem = document.createElement('menuitem'); + popup.appendChild(menuitem); + menuitem.setAttribute('label','Refresh Listing'); + menuitem.setAttribute('command','cmd_refresh'); +} + +function volume_add(tab,params) { + dump('trying to volume_add()\n'); + params['shortcut'] = 'volume_add'; + var w; + //var items = get_selected_rows(tree); + var items = get_list_from_tree_selection(params.tree); + items = filter_list( + items, + function (obj) { + return obj.getAttribute('object_type') == 'org_unit'; + } + ); + var chrome = 'chrome://evergreen/content/cat/volume_copy_add_wizard.xul'; + if (tab) { + parentWindow.new_tab('main_tabbox'); + w = parentWindow.replace_tab('main_tabbox','Add Volume',chrome); + } else { + w = mw.new_window( chrome ); + } + dump('setting use_this_tree\n'); + w.tree_items = items; + w.record_id = find_this_id; + w.params = params; +} + +function copy_add(tab,params) { + dump('trying to copy_add()\n'); + params['shortcut'] = 'copy_add'; + var w; + //var items = get_selected_rows(tree); + var items = get_list_from_tree_selection(params.tree); + items = filter_list( + items, + function (obj) { + return obj.getAttribute('object_type') == 'volume'; + } + ); + var chrome = 'chrome://evergreen/content/cat/copy_add_wizard.xul'; + if (tab) { + parentWindow.new_tab('main_tabbox'); + w = parentWindow.replace_tab('main_tabbox','Add Copy',chrome); + } else { + w = mw.new_window( chrome ); + } + dump('setting use_this_tree\n'); + w.tree_items = items; + w.record_id = find_this_id; + w.params = params; +} + +function volume_edit(tab,params) { + dump('trying to volume_edit()\n'); + params['shortcut'] = 'volume_edit'; + var w; + //var items = get_selected_rows(tree); + var items = get_list_from_tree_selection(params.tree); + items = filter_list( + items, + function (obj) { + return obj.getAttribute('object_type') == 'volume'; + } + ); + var chrome = 'chrome://evergreen/content/cat/volume_edit_wizard.xul'; + if (tab) { + parentWindow.new_tab('main_tabbox'); + w = parentWindow.replace_tab('main_tabbox','Edit Volumes',chrome); + } else { + w = mw.new_window( chrome ); + } + dump('setting use_this_tree\n'); + w.tree_items = items; + w.record_id = find_this_id; + w.params = params; + +} + +function volume_delete(tab,params) { + var volumes = get_selected_rows_by_object_type(params.tree,'volume'); + var cn_list = []; + for (var i = 0; i < volumes.length; i++) { + var cn = new acn(); + cn.id( volumes[i].getAttribute('volume_id') ); + cn.isdeleted( '1' ); + cn_list.push( cn ); + } + var result = user_request( + 'open-ils.cat', + 'open-ils.cat.asset.volume_tree.fleshed.batch.update', + [ mw.G['auth_ses'][0], cn_list] + ); + dump('volume_tree.fleshed.batch.update result: ' + js2JSON(result) + '\n'); + refresh_browse_list(); +} + +function copy_delete(tab,params) { + var copies = get_selected_rows_by_object_type(params.tree,'copy'); + var cn_list = []; + for (var i = 0; i < copies.length; i++) { + var cn = new acn(); + cn.id( copies[i].getAttribute('volume_id') ); + + var cp = new acp(); + cp.id( copies[i].getAttribute('copy_id') ); + cp.isdeleted( '1' ); + + cn.copies( [ cp ] ); + cn_list.push( cn ); + } + var result = user_request( + 'open-ils.cat', + 'open-ils.cat.asset.volume_tree.fleshed.batch.update', + [ mw.G['auth_ses'][0], cn_list] + ); + dump('volume_tree.fleshed.batch.update result: ' + js2JSON(result) + '\n'); + refresh_browse_list(); +} diff --git a/Evergreen/staff_client/chrome/content/evergreen/cat/browse_list.xul b/Evergreen/staff_client/chrome/content/evergreen/cat/browse_list.xul new file mode 100644 index 0000000000..0084facd37 --- /dev/null +++ b/Evergreen/staff_client/chrome/content/evergreen/cat/browse_list.xul @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Evergreen/staff_client/chrome/content/evergreen/cat/browse_list_overlay.xul b/Evergreen/staff_client/chrome/content/evergreen/cat/browse_list_overlay.xul new file mode 100644 index 0000000000..6fd2212c3b --- /dev/null +++ b/Evergreen/staff_client/chrome/content/evergreen/cat/browse_list_overlay.xul @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Evergreen/staff_client/chrome/content/evergreen/cat/cat_overlay.xul b/Evergreen/staff_client/chrome/content/evergreen/cat/cat_overlay.xul new file mode 100644 index 0000000000..1640a46aef --- /dev/null +++ b/Evergreen/staff_client/chrome/content/evergreen/cat/cat_overlay.xul @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Evergreen/staff_client/chrome/content/evergreen/cat/copy_add_wizard.xul b/Evergreen/staff_client/chrome/content/evergreen/cat/copy_add_wizard.xul new file mode 100644 index 0000000000..dbe8abb498 --- /dev/null +++ b/Evergreen/staff_client/chrome/content/evergreen/cat/copy_add_wizard.xul @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Evergreen/staff_client/chrome/content/evergreen/cat/copy_display.xul b/Evergreen/staff_client/chrome/content/evergreen/cat/copy_display.xul new file mode 100644 index 0000000000..ccb841c321 --- /dev/null +++ b/Evergreen/staff_client/chrome/content/evergreen/cat/copy_display.xul @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/Evergreen/staff_client/chrome/content/evergreen/cat/copy_edit.js b/Evergreen/staff_client/chrome/content/evergreen/cat/copy_edit.js new file mode 100644 index 0000000000..9e1e0d9cdd --- /dev/null +++ b/Evergreen/staff_client/chrome/content/evergreen/cat/copy_edit.js @@ -0,0 +1,89 @@ +var cn_list; + +function copy_edit_init() { + dump('entering my_init for copy_edit.js\n'); + dump('TESTING: copy_edit.js: ' + mw.G['main_test_variable'] + '\n'); + dump('Gathering copies to put in the acn object...\n'); + var list = get_list_from_tree_selection( params.tree ); + dump('list.length = ' + list.length + '\n'); + var filtered_list = filter_list( + list, + function (obj) { + return (obj.getAttribute('object_type') == 'copy'); + } + ); + dump('filtered_list.length = ' + filtered_list.length + '\n'); + var id_mapped_list = map_list( + filtered_list, + function (obj) { + return obj.getAttribute('copy_id'); + } + ); + dump('id_mapped_list.length = ' + id_mapped_list.length + '\n'); + var result = user_request( + 'open-ils.search', + 'open-ils.search.asset.copy.fleshed.batch.retrieve', + [ id_mapped_list ] + )[0]; + dump('result.length = ' + result.length + '\n'); + cn_list = new Array(); + for (var i in result) { + cn_list[i] = new acn(); + cn_list[i].label( filtered_list[i].getAttribute('callnumber') ); + cn_list[i].owning_lib( filtered_list[i].getAttribute('ou_id') ); + cn_list[i].copies( [ result[i] ] ); + } + dump('cn_list = ' + js2JSON(cn_list) + '\n'); + spawn_copy_editor(); +} + +function spawn_copy_editor() { + dump('trying to spawn_copy_editor()\n'); + var params = { 'select_all' : false }; + var chrome = 'chrome://evergreen/content/cat/copy.xul'; + var frame = document.getElementById('copy_edit_frame'); + frame.setAttribute('src',chrome); + frame.setAttribute('flex','1'); + frame.contentWindow.cn_list = cn_list; + frame.contentWindow.mw = mw; + frame.contentWindow.real_parentWindow = this; + frame.contentWindow.parentWindow = parentWindow; + frame.contentWindow.params = params; +} + +function save_edited_copies() { + //dump('trying to save ====================================================================================\n\n\n'); + //dump('cn_list = ' + js2JSON(cn_list) + '\n\n'); + var copies = []; + for (var i = 0; i < cn_list.length; i++) { + var cn_copies = cn_list[i].copies(); + for (var j = 0; j < cn_copies.length; j++) { + copies.push( cn_copies[j] ); + } + } + //dump('copies = ' + js2JSON(copies) + '\n\n'); + try { + var result = user_request( + 'open-ils.cat', + 'open-ils.cat.asset.copy.fleshed.batch.update', + [ mw.G.auth_ses[0], copies ] + )[0]; + if (result == '1') { + alert('Successfully updated these copies.\n'); + } else { + throw('There was an error updating the copies.\n'); + } + dump('Result = ' + js2JSON(result) + '\n'); + refresh_spawning_browse_list(); + } catch(E) { + handle_error(E); + } +} + +function refresh_spawning_browse_list() { + try { + params.refresh_func(); + } catch(E) { + dump('refresh_spawning_browse_list error: ' + js2JSON(E) + '\n'); + } +} diff --git a/Evergreen/staff_client/chrome/content/evergreen/cat/copy_edit.xul b/Evergreen/staff_client/chrome/content/evergreen/cat/copy_edit.xul new file mode 100644 index 0000000000..268721c32c --- /dev/null +++ b/Evergreen/staff_client/chrome/content/evergreen/cat/copy_edit.xul @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Evergreen/staff_client/chrome/content/evergreen/cat/copy_edit_overlay.xul b/Evergreen/staff_client/chrome/content/evergreen/cat/copy_edit_overlay.xul new file mode 100644 index 0000000000..8e9d987cb9 --- /dev/null +++ b/Evergreen/staff_client/chrome/content/evergreen/cat/copy_edit_overlay.xul @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Evergreen/staff_client/chrome/content/evergreen/cat/marc_fixed.js b/Evergreen/staff_client/chrome/content/evergreen/cat/marc_fixed.js new file mode 100644 index 0000000000..9ec8342dcc --- /dev/null +++ b/Evergreen/staff_client/chrome/content/evergreen/cat/marc_fixed.js @@ -0,0 +1,149 @@ +function pad_fixed(value,field) { + var padding = ''; + if (field == '008') { + for (var i = value.length; i<40; i++) { + padding = padding + ' '; + } + } else if (field == 'LDR') { + for (var i = value.length; i<24; i++) { + padding = padding + ' '; + } + } + return padding; +} + + +function handle_fixed_change(ev) { + dump('Entering handle_fixed_change\n'); + if (ev.target.tagName != 'textbox') { dump('early exit\n'); return; } + var t = ev.target; + var field = t.getAttribute('field'); + var spos = t.getAttribute('spos'); + var epos = t.getAttribute('epos'); + var size = t.getAttribute('size'); + if ( (epos - spos + 1) != size ) { + dump('Invalid fixed field DTD: field='+field+' spos='+spos+ + ' epos='+epos+' size='+size+'\n'); + alert('Invalid fixed field DTD: field='+field+' spos='+spos+ + ' epos='+epos+' size='+size+'\n'); + } + if (t.value.length > size) { + t.value = t.value.substr(0,size); + } else if (t.value.length < size) { + var padding = ''; + for (var i = 0; i<(size-t.value.length); i++) { + padding = padding + ' '; + } + t.value = t.value + padding; + } + var fixed = find_textbox('ctrl_rows', field); + //dump('length of fixed: ' + fixed.value.length + '\n'); + fixed.value = fixed.value + pad_fixed(fixed.value,field); + dump('length of fixed: ' + fixed.value.length + '\n'); + + //dump('field='+field+' spos='+spos+' epos='+epos+' size='+size+' t="'+t.value+'"\n'); + dump('replacing "'+fixed.value+'"\n'); + fixed.value = fixed.value.substr(0,spos) + t.value + fixed.value.substr(1+Number(epos)); + dump(' with "'+fixed.value+'"\n'); +} + +function find_textbox(where, field) { + var rows = document.getElementById(where).childNodes; + var ideal_sibling; + for (var r in rows) { + if (typeof(rows[r])=='object') { + //dump(r + ':' + rows[r] + '\n'); + var t = rows[r].childNodes[0].firstChild; + if (t.value == field) { + return rows[r].childNodes[1].firstChild; + } else if (t.value < field) { + ideal_sibling = rows[r]; + } + } + } + var new_r = build_ctrl_row('ctrl_' + new_row_id--); + new_r.setAttribute('notempty','true'); + new_r.setAttribute('newnode','true'); + if (ideal_sibling.nextSibling) { + rows.insertBefore(new_r,ideal_sibling.nextSibling); + } else { + rows.appendChild(new_r); + } + new_r.childNodes[0].firstChild.value = field; + new_r.childNodes[1].firstChild.value = padding; + return new_r.childNodes[1].firstChild; +} + +function fixed_fields_update_all(grid) { + var g = document.getElementById(grid); + var nl = g.getElementsByTagName('textbox'); + for (var i in nl) { + if (typeof(nl[i])=='object') { + var t = nl[i]; + var field = t.getAttribute('field'); + var spos = t.getAttribute('spos'); + var epos = t.getAttribute('epos'); + var size = t.getAttribute('size'); + var data = find_textbox('ctrl_rows',field); + data.value = data.value + pad_fixed(data.value,field); + t.value = data.value.substr(spos,size); + } + } +} + + +function fixed_fields_hide_all(grid) { + var g = document.getElementById(grid); + var nl = g.getElementsByTagName('label'); + for (var i in nl) { + if (typeof(nl[i])=='object') { + nl[i].setAttribute('hidden','true'); + } + } + nl = g.getElementsByTagName('textbox'); + for (var i in nl) { + if (typeof(nl[i])=='object') { + nl[i].setAttribute('hidden','true'); + } + } +} + +function fixed_fields_show_all(grid) { + var g = document.getElementById(grid); + var nl = g.getElementsByTagName('label'); + for (var i in nl) { + if (typeof(nl[i])=='object') { + nl[i].setAttribute('hidden','false'); + } + } + nl = g.getElementsByTagName('textbox'); + for (var i in nl) { + if (typeof(nl[i])=='object') { + nl[i].setAttribute('hidden','false'); + } + } +} + +function fixed_fields_show_only(grid,attr) { + fixed_fields_hide_all(grid); + fixed_fields_update_all(grid); + var g = document.getElementById(grid); + var nl = g.getElementsByTagName('label'); + for (var i in nl) { + if (typeof(nl[i])=='object') { + if (nl[i].getAttribute(attr) == 'true') { + nl[i].setAttribute('hidden','false'); + } + } + } + nl = g.getElementsByTagName('textbox'); + for (var i in nl) { + if (typeof(nl[i])=='object') { + if (nl[i].getAttribute(attr) == 'true') { + nl[i].setAttribute('hidden','false'); + } + } + } +} + + diff --git a/Evergreen/staff_client/chrome/content/evergreen/cat/marc_keys.js b/Evergreen/staff_client/chrome/content/evergreen/cat/marc_keys.js new file mode 100644 index 0000000000..a7026380ca --- /dev/null +++ b/Evergreen/staff_client/chrome/content/evergreen/cat/marc_keys.js @@ -0,0 +1,221 @@ +function handle_keyup(ev) { + if (ev.target.tagName != 'textbox') { return; } + //dump('keyCode:' + ev.keyCode + ' charCode:' + ev.charCode + ' shift:' + ev.shiftKey + ' ctrl:' + ev.ctrlKey + ' meta:' + ev.metaKey + '\n'); + resizeWrapper(ev.target); +} + +function handle_keypress(ev) { + dump('keyCode:' + ev.keyCode + ' charCode:' + ev.charCode + ' shift:' + ev.shiftKey + ' ctrl:' + ev.ctrlKey + ' meta:' + ev.metaKey + '\n'); + if (ev.target.tagName != 'textbox') { return; } + var rstatus = false; + if (ev.charCode) { + switch(ev.charCode) { + case 100: + if (ev.ctrlKey) { /* control+d */ + rstatus = handle_key_c_d(ev); + } + break; + } + } else if (ev.keyCode) { + switch(ev.keyCode) { + case 13: /* enter */ + case 77: /* mac enter */ + rstatus = handle_key_enter(ev); + break; + case 46: + if (ev.ctrlKey) { /* control+del */ + rstatus = handle_key_c_del(ev); + } + break; + case 9: + if (ev.shiftKey) { /* shift+tab */ + rstatus = navigate_col_left(ev.target,true); + } else { /* tab */ + rstatus = navigate_col_right(ev.target,true); + } + break; + } + } + resizeWrapper(ev.target); + if (rstatus) { + ev.preventDefault(); + } + return rstatus; +} + +function handle_key_c_d(ev) { + if (ev.target.tagName != 'textbox') { return; } + var t = ev.target; + if ((ev.ctrlKey)&&(ev.charCode==100)&&(t.getAttribute('subfields')=='true')) { + var n_ev = document.createEvent("KeyEvents"); + if (n_ev) { /* the best way... fake a keypress */ + n_ev.initKeyEvent("keypress", 1, 1, null, 0, 0, 0, 0, 0, 8225); + t.inputField.dispatchEvent(n_ev); + } else { /* this destroys the widget's undo buffer */ + var s_start = t.selectionStart; var s_end = t.selectionEnd; + var first_half = t.value.substr(0,s_start); + var second_half = t.value.substr(s_end); + t.value = first_half + String.fromCharCode(8225) + second_half; + t.setSelectionRange(s_start+1,s_start+1); + } + return true; + } else { + return false; + } +} + +function handle_key_c_del(ev) { + // rows (rows) -> row (r) -> wrapper (w) -> textbox (t) + if (ev.target.tagName != 'textbox') { return; } + var t = ev.target; + var r = t.parentNode.parentNode; + if ((ev.ctrlKey)&&(ev.keyCode==46)) { + r.setAttribute('hidden','true'); + handle_tag_change(ev); + if (! navigate_row_down(t,which_col_am_i(t),false) ) { + navigate_row_up(t,which_col_am_i(t),false); + dump("let's go up\n"); + } + return true; + } else { + return false; + } +} + +var new_row_id = -1; +function handle_key_enter(ev) { + // rows (rows) -> row (r) -> wrapper (w) -> textbox (t) + if (ev.target.tagName != 'textbox') { return; } + var t = ev.target; + if ((ev.keyCode == 13) || (ev.keyCode == 77)) { + if (ev.ctrlKey) { // add new row + var new_r = build_data_row('data_' + new_row_id--); + new_r.setAttribute('notempty','true'); + new_r.setAttribute('newnode','true'); + var w = t.parentNode; + var r = w.parentNode; + var rows = r.parentNode; + var sibling_row; + if (ev.shiftKey) { + sibling_row = r; + } else { + sibling_row = r.nextSibling; + } + if (sibling_row) { + rows.insertBefore(new_r,sibling_row); + } else { + rows.appendChild(new_r); + } + var c = new_r.childNodes; + apply_event_listeners(c,'data'); + c[1].firstChild.value = ' '; // indicator 1 + c[2].firstChild.value = ' '; // indicator 2 + c[0].firstChild.focus(); + return true; + } else { // move to next row + navigate_row_down(t,which_col_am_i(t),true); + return true; + } + } else { + return false; + } +} + +function which_col_am_i(t) { + var r = t.parentNode.parentNode; + for (var i in r.childNodes) { + if (t == r.childNodes[i].firstChild) { + return i; + } + } +} + +function nextSibling_not_hidden(e) { + var s = e.nextSibling; + while ((s)&&(s.getAttribute('hidden')=='true')) { + s = s.nextSibling; + } + return s; +} + +function previousSibling_not_hidden(e) { + var s = e.previousSibling; + while ((s)&&(s.getAttribute('hidden')=='true')) { + s = s.previousSibling; + } + return s; +} + +function navigate_row_down(t,c,wrap) { + // rows -> row (r) -> wrapper -> textbox (t) + var r = t.parentNode.parentNode; + var sibling_row = nextSibling_not_hidden(r); + if (sibling_row) { + sibling_row.childNodes[c].firstChild.focus(); + if (c == 0) { + sibling_row.childNodes[c].firstChild.select(); + } + } else { + if (wrap) { + r.parentNode.firstChild.childNodes[c].firstChild.focus(); + } else { + return false; + } + } + return true; +} + +function navigate_row_up(t,c,wrap) { + // rows -> row (r) -> wrapper -> textbox (t) + var r = t.parentNode.parentNode; + var sibling_row = previousSibling_not_hidden(r); + if (sibling_row) { + sibling_row.childNodes[c].firstChild.focus(); + } else { + if (wrap) { + r.parentNode.lastChild.childNodes[c].firstChild.focus(); + } else { + return false; + } + } + return true; +} + +function navigate_col_left(t,wrap) { + // rows -> row -> wrapper (w) -> textbox (t) + var w = t.parentNode; + var sibling_wrapper = w.previousSibling; + if (sibling_wrapper) { + sibling_wrapper.firstChild.focus(); + if (sibling_wrapper.parentNode.childNodes[3] != sibling_wrapper) { + sibling_wrapper.firstChild.select(); + } + } else { + if (wrap) { + return navigate_row_up(t,3,false); + } else { + return false; + } + } + return true; +} + +function navigate_col_right(t,wrap) { + // rows -> row -> wrapper (w) -> textbox (t) + var w = t.parentNode; + var sibling_wrapper = w.nextSibling; + if (sibling_wrapper) { + sibling_wrapper.firstChild.focus(); + if (sibling_wrapper.parentNode.childNodes[3] != sibling_wrapper) { + sibling_wrapper.firstChild.select(); + } + } else { + if (wrap) { + return navigate_row_down(t,0); + } else { + return false; + } + } + return true; +} + diff --git a/Evergreen/staff_client/chrome/content/evergreen/cat/marc_overlay.xul b/Evergreen/staff_client/chrome/content/evergreen/cat/marc_overlay.xul new file mode 100644 index 0000000000..641fc9bf3b --- /dev/null +++ b/Evergreen/staff_client/chrome/content/evergreen/cat/marc_overlay.xul @@ -0,0 +1,936 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Evergreen/staff_client/chrome/content/evergreen/cat/record_list_overlay.xul b/Evergreen/staff_client/chrome/content/evergreen/cat/record_list_overlay.xul new file mode 100644 index 0000000000..85718abe62 --- /dev/null +++ b/Evergreen/staff_client/chrome/content/evergreen/cat/record_list_overlay.xul @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Evergreen/staff_client/chrome/content/evergreen/cat/volume_edit_overlay.xul b/Evergreen/staff_client/chrome/content/evergreen/cat/volume_edit_overlay.xul new file mode 100644 index 0000000000..087b7b2774 --- /dev/null +++ b/Evergreen/staff_client/chrome/content/evergreen/cat/volume_edit_overlay.xul @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + +