From b87e2ede7e98f0a401db6d91b58c9bdf17e41292 Mon Sep 17 00:00:00 2001 From: erickson Date: Thu, 13 Sep 2007 21:34:52 +0000 Subject: [PATCH] added the myopac holds batch select code/unselect UI and code. implemented batch hold cancelling code. later comes freezing/thawing git-svn-id: svn://svn.open-ils.org/ILS/trunk@7778 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/web/opac/common/js/utils.js | 20 ++++++ Open-ILS/web/opac/locale/en-US/opac.dtd | 9 +++ Open-ILS/web/opac/skin/default/js/myopac.js | 78 +++++++++++++++++++++- .../opac/skin/default/xml/myopac/myopac_holds.xml | 29 +++++++- 4 files changed, 134 insertions(+), 2 deletions(-) diff --git a/Open-ILS/web/opac/common/js/utils.js b/Open-ILS/web/opac/common/js/utils.js index 079ad73d08..19c484c5ce 100644 --- a/Open-ILS/web/opac/common/js/utils.js +++ b/Open-ILS/web/opac/common/js/utils.js @@ -681,4 +681,24 @@ function debugFMObject(obj) { } +function getTableRows(tbody) { + var rows = []; + if(!tbody) return rows; + var children = tbody.childNodes; + if(!children) return rows; + + for(var i = 0; i < children.length; i++) { + var child = children[i]; + if(child.nodeName.match(/^tr$/i)) + rows.push(child); + } + return rows; +} + +function getObjectKeys(obj) { + keys = [] + for(var k in obj) + keys.push(k) + return keys; +} diff --git a/Open-ILS/web/opac/locale/en-US/opac.dtd b/Open-ILS/web/opac/locale/en-US/opac.dtd index bb1762edad..5151aa5d9e 100644 --- a/Open-ILS/web/opac/locale/en-US/opac.dtd +++ b/Open-ILS/web/opac/locale/en-US/opac.dtd @@ -203,6 +203,15 @@ avoid using bookbags all together. Thank you."> + + + + + + + + + diff --git a/Open-ILS/web/opac/skin/default/js/myopac.js b/Open-ILS/web/opac/skin/default/js/myopac.js index 888986b78c..bbcf6bb06c 100644 --- a/Open-ILS/web/opac/skin/default/js/myopac.js +++ b/Open-ILS/web/opac/skin/default/js/myopac.js @@ -294,14 +294,18 @@ function myOPACShowHolds() { var req = new Request(FETCH_HOLDS, G.user.session, G.user.id()); req.callback(myOPACDrawHolds); req.send(); + $('myopac_holds_actions_none').selected = true; } var holdsTemplateRowOrig; var holdsTemplateRow; +var myopacForceHoldsRedraw = false; function myOPACDrawHolds(r) { var tbody = $("myopac_holds_tbody"); - if(holdsTemplateRow) return; + if(holdsTemplateRow && !myopacForceHoldsRedraw) return; + myopacForceHoldsRedraw = false; + if(holdsTemplateRowOrig) { holdsTemplateRow = holdsTemplateRowOrig; removeChildren(tbody); @@ -349,6 +353,8 @@ function myOPACDrawHolds(r) { hideMe($n(row, 'myopac_hold_unfrozen_false')) } + $n(row, 'myopac_holds_selected_chkbx').checked = false; + unHideMe(row); myOPACDrawHoldTitle(h); @@ -1298,4 +1304,74 @@ function myHandleRenewResponse(r) { } +/* myopac_holds_checkbx */ +function myopacSelectAllHolds() { + var rows = getTableRows($("myopac_holds_tbody")); + for(var i = 0; i < rows.length; i++) { + cb = $n(rows[i], 'myopac_holds_selected_chkbx'); + if(cb) cb.checked = true; + } +} + +function myopacSelectNoneHolds() { + var rows = getTableRows($("myopac_holds_tbody")); + for(var i = 0; i < rows.length; i++) { + cb = $n(rows[i], 'myopac_holds_selected_chkbx'); + if(cb) cb.checked = false; + } +} + +function myopacSelectedHoldsRows() { + var r = []; + var rows = getTableRows($("myopac_holds_tbody")); + for(var i = 0; i < rows.length; i++) { + cb = $n(rows[i], 'myopac_holds_selected_chkbx'); + if(cb && cb.checked) + r.push(rows[i]); + } + return r; +} + +var myopacCancelledHolds = 0; +var myopacTotalHoldsToCancel = 0; +function myopacDoHoldAction() { + switch(getSelectorVal($('myopac_holds_actions'))) { + case 'cancel': + myopacBatchCancelHold(); + break; + } +} + +function myopacBatchCancelHold() { + if(!confirmId('myopac.holds.cancel.confirm')) return; + + + myopacCancelledHolds = 0; + var rows = myopacSelectedHoldsRows(); + myopacTotalHoldsToCancel = rows.length; + if(myopacTotalHoldsToCancel == 0) return; + + unHideMe($('myopac_holds_processing')); + hideMe($('myopac_holds_main_table')); + + for(var i = 0; i < rows.length; i++) { + var row = rows[i]; + id = row.id.replace(/.*_(\d+)$/, '$1'); + _debug("cancelling hold " + i); + var req = new Request(CANCEL_HOLD, G.user.session, id); + req.callback(myopacBatchCancelHoldCallback); + req.send(); + } +} + +function myopacBatchCancelHoldCallback(r) { + r.getResultObject(); + if(++myopacCancelledHolds >= myopacTotalHoldsToCancel) { + hideMe($('myopac_holds_processing')); + unHideMe($('myopac_holds_main_table')); + holdCache = {}; + myopacForceHoldsRedraw = true; + myOPACShowHolds(); + } +} diff --git a/Open-ILS/web/opac/skin/default/xml/myopac/myopac_holds.xml b/Open-ILS/web/opac/skin/default/xml/myopac/myopac_holds.xml index a2764210e5..878142349b 100644 --- a/Open-ILS/web/opac/skin/default/xml/myopac/myopac_holds.xml +++ b/Open-ILS/web/opac/skin/default/xml/myopac/myopac_holds.xml @@ -3,7 +3,27 @@ - +
+ + +
+ +
+ + &myopac.holds.cancel.confirm; + &myopac.holds.freeze.confirm; + &myopac.holds.thaw.confirm; + + + +
&myopac.holds.processing;
+ + @@ -14,6 +34,12 @@ + + @@ -54,6 +80,7 @@ +
&common.status; &myopac.holds.unfrozen; &myopac.holds.frozen.until;&common.select; + (&common.all;/&common.none;) + &myopac.holds.edit.cancel;