holds interface
authorphasefx <phasefx@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Sun, 17 Jul 2005 21:23:56 +0000 (21:23 +0000)
committerphasefx <phasefx@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Sun, 17 Jul 2005 21:23:56 +0000 (21:23 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@1249 dcc99617-32d9-48b4-a31d-7c20da2025e4

Evergreen/staff_client/Makefile
Evergreen/staff_client/chrome/content/evergreen/Open-ILS/OpenILS_scripts_overlay.xul
Evergreen/staff_client/chrome/content/evergreen/circ/circ_utils.js
Evergreen/staff_client/chrome/content/evergreen/patron/patron_display.js
Evergreen/staff_client/chrome/content/evergreen/patron/patron_display.xul
Evergreen/staff_client/chrome/content/evergreen/patron/patron_display_overlay.xul
Evergreen/staff_client/chrome/content/evergreen/patron/patron_holds.js [new file with mode: 0644]
Evergreen/staff_client/chrome/locale/en-US/evergreen/OpenILS.properties

index ff792fb..bf05ed1 100644 (file)
@@ -44,9 +44,11 @@ patron:
        (cat chrome/content/evergreen/main/paged_tree_overlay.xul | sed s/paged_tree/patron_items/g | sed s/PagedTree/PatronItems/g > chrome/content/evergreen/patron/patron_items_overlay.xul )
        (cat chrome/content/evergreen/main/paged_tree_overlay.xul | sed s/paged_tree/patron_search_results/g | sed s/PagedTree/PatronSearchResults/g > chrome/content/evergreen/patron/patron_search_results_overlay.xul )
        (cat chrome/content/evergreen/main/paged_tree_overlay.xul | sed s/paged_tree/patron_checkout_items/g | sed s/PagedTree/PatronCheckoutItems/g > chrome/content/evergreen/patron/patron_checkout_items_overlay.xul )
+       (cat chrome/content/evergreen/main/paged_tree_overlay.xul | sed s/paged_tree/patron_holds/g | sed s/PagedTree/PatronHolds/g > chrome/content/evergreen/patron/patron_holds_overlay.xul )
        (cp chrome/locale/en-US/evergreen/paged_tree.dtd chrome/locale/en-US/evergreen/patron_items.dtd)
        (cp chrome/locale/en-US/evergreen/paged_tree.dtd chrome/locale/en-US/evergreen/patron_search_results.dtd)
        (cp chrome/locale/en-US/evergreen/paged_tree.dtd chrome/locale/en-US/evergreen/patron_checkout_items.dtd)
+       (cp chrome/locale/en-US/evergreen/paged_tree.dtd chrome/locale/en-US/evergreen/patron_holds.dtd)
 
 circ:
        (cat chrome/content/evergreen/main/paged_tree_overlay.xul | sed s/paged_tree/checkin_items/g | sed s/PagedTree/CheckinItems/g > chrome/content/evergreen/circ/checkin_items_overlay.xul )
@@ -70,6 +72,7 @@ clean:
        rm -f chrome/content/evergreen/patron/patron_items_overlay.xul chrome/locale/en-US/evergreen/patron_items.dtd
        rm -f chrome/content/evergreen/patron/patron_search_results_overlay.xul chrome/locale/en-US/evergreen/patron_search_results.dtd
        rm -f chrome/content/evergreen/patron/patron_checkout_items_overlay.xul chrome/locale/en-US/evergreen/patron_checkout_items.dtd
+       rm -f chrome/content/evergreen/patron/patron_holds_overlay.xul chrome/locale/en-US/evergreen/patron_holds.dtd
        rm -f chrome/content/evergreen/circ/checkin_items_overlay.xul chrome/locale/en-US/evergreen/checkin_items.dtd
        rm -f chrome/content/evergreen/conf/client_config.xml
        rm -f chrome/content/evergreen/util/fieldmapper.js
index 96ee868..3329f7b 100644 (file)
@@ -18,6 +18,7 @@
                <script src="chrome://evergreen/content/patron/patron_display.js" />
                <script src="chrome://evergreen/content/patron/patron_checkout_items.js" />
                <script src="chrome://evergreen/content/patron/patron_items.js" />
+               <script src="chrome://evergreen/content/patron/patron_holds.js" />
                <script src="chrome://evergreen/content/circ/circ_utils.js" />
                <script src="chrome://evergreen/content/circ/checkin.js" />
                <script src="chrome://evergreen/content/circ/checkin_items.js" />
index 87f94e0..83fd050 100644 (file)
@@ -71,6 +71,88 @@ function renew_by_circ_id(id) {
        }
 }
 
+function hold_cols() {
+       var cols = [
+{
+       'id' : 'capture_time', 'label' : getString('ahr_capture_time_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : false, 'fm_class' : 'ahr', 'fm_field_render' : '.capture_time()'
+},
+{
+       'id' : 'current_copy', 'label' : getString('ahr_current_copy_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : true, 'fm_class' : 'ahr', 'fm_field_render' : '.current_copy()'
+},
+{
+       'id' : 'email_notify', 'label' : getString('ahr_email_notify_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : false, 'fm_class' : 'ahr', 'fm_field_render' : '.email_notify()'
+},
+{
+       'id' : 'expire_time', 'label' : getString('ahr_expire_time_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : false, 'fm_class' : 'ahr', 'fm_field_render' : '.expire_time()'
+},
+{
+       'id' : 'fulfillment_time', 'label' : getString('ahr_fulfillment_time_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : false, 'fm_class' : 'ahr', 'fm_field_render' : '.fulfillment_time()'
+},
+{
+       'id' : 'hold_type', 'label' : getString('ahr_hold_type_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : false, 'fm_class' : 'ahr', 'fm_field_render' : '.hold_type()'
+},
+{
+       'id' : 'holdable_formats', 'label' : getString('ahr_holdable_formats_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : true, 'fm_class' : 'ahr', 'fm_field_render' : '.holdable_formats()'
+},
+{
+       'id' : 'id', 'label' : getString('ahr_id_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : true, 'fm_class' : 'ahr', 'fm_field_render' : '.id()'
+},
+{
+       'id' : 'ischanged', 'label' : getString('ahr_ischanged_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : true, 'fm_class' : 'ahr', 'fm_field_render' : '.ischanged()'
+},
+{
+       'id' : 'isdeleted', 'label' : getString('ahr_isdeleted_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : true, 'fm_class' : 'ahr', 'fm_field_render' : '.isdeleted()'
+},
+{
+       'id' : 'isnew', 'label' : getString('ahr_isnew_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : true, 'fm_class' : 'ahr', 'fm_field_render' : '.isnew()'
+},
+{
+       'id' : 'phone_notify', 'label' : getString('ahr_phone_notify_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : true, 'fm_class' : 'ahr', 'fm_field_render' : '.phone_notify()'
+},
+{
+       'id' : 'pickup_lib', 'label' : getString('ahr_pickup_lib_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : true, 'fm_class' : 'ahr', 'fm_field_render' : '.pickup_lib()'
+},
+{
+       'id' : 'prev_check_time', 'label' : getString('ahr_prev_check_time_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : true, 'fm_class' : 'ahr', 'fm_field_render' : '.prev_check_time()'
+},
+{
+       'id' : 'request_time', 'label' : getString('ahr_request_time_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : true, 'fm_class' : 'ahr', 'fm_field_render' : '.request_time()'
+},
+{
+       'id' : 'requestor', 'label' : getString('ahr_requestor_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : true, 'fm_class' : 'ahr', 'fm_field_render' : '.requestor()'
+},
+{
+       'id' : 'selection_depth', 'label' : getString('ahr_selection_depth_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : true, 'fm_class' : 'ahr', 'fm_field_render' : '.selection_depth()'
+},
+{
+       'id' : 'target', 'label' : getString('ahr_target_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : true, 'fm_class' : 'ahr', 'fm_field_render' : '.target()'
+},
+{
+       'id' : 'usr', 'label' : getString('ahr_usr_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : true, 'fm_class' : 'ahr', 'fm_field_render' : '.usr()'
+}
+       ];
+       return cols;
+}
+
 function checkin_cols() {
        var cols = [
                {
index 707245c..c03f7e5 100755 (executable)
@@ -14,14 +14,18 @@ function patron_display_init(p) {
        // gives: p.patron_checkout_items, p.redraw_patron_checkout_items
        patron_display_patron_checkout_items_init(p);
 
+       // gives: p.patron_holds, p.redraw_patron_holds
+       patron_display_patron_holds_init(p);
+
        p.set_patron = function (au) {
                return p._patron = au;
        }
 
        p.display_patron = function (au) {
                if (au) p.set_patron(au);
-               p.redraw_patron_items();
                p.redraw_patron_checkout_items();
+               p.redraw_patron_items();
+               p.redraw_patron_holds();
                return render_fm(p.w.document, { 'au' : p._patron });
        }
 
@@ -96,7 +100,7 @@ function patron_display_clamshell_init(p) {
 }
 
 function patron_display_patron_items_init(p) {
-       p.patron_items = patron_items_init( { 'w' : p.w, 'node' : p.patron_items_node, 'popupset_node' : p.popupset_node, 'debug' : p.app } );
+       p.patron_items = patron_items_init( { 'w' : p.w, 'node' : p.patron_items_node, 'debug' : p.app } );
 
        p.redraw_patron_items = function() {
                p.patron_items.clear_patron_items();
@@ -213,7 +217,7 @@ function patron_display_patron_items_init(p) {
 }
 
 function patron_display_patron_checkout_items_init(p) {
-       p.patron_checkout_items = patron_checkout_items_init( { 'w' : p.w, 'node' : p.patron_checkout_items_node, 'popupset_node' : p.popupset_node, 'debug' : p.app } );
+       p.patron_checkout_items = patron_checkout_items_init( { 'w' : p.w, 'node' : p.patron_checkout_items_node, 'debug' : p.app } );
        var tb = p.patron_checkout_items_node.getElementsByAttribute('id','patron_checkout_barcode_entry_textbox')[0];
        var submit_button = p.patron_checkout_items_node.getElementsByAttribute('id','patron_checkout_submit_barcode_button')[0];
 
@@ -365,4 +369,72 @@ function patron_display_patron_checkout_items_init(p) {
        );
 }
 
+function patron_display_patron_holds_init(p) {
+       p.patron_holds = patron_holds_init( { 'w' : p.w, 'node' : p.patron_holds_node, 'debug' : p.app } );
+
+       p.redraw_patron_holds = function() {
+               p.patron_holds.clear_patron_holds();
+               if (!p._patron.hold_requests()) patron_get_holds( p._patron );
+               for (var i = 0; i < p._patron.hold_requests().length; i++) {
+                       p.patron_holds.add_patron_holds( [ i ] );
+               }
+       }
+
+       p.patron_holds.register_patron_holds_select_callback(
+               function (ev) {
+                       sdump('D_PATRON_DISPLAY','Firing patron_holds_select_callback\n');
+                       sdump('D_PATRON_DISPLAY','ev.target = ' + ev.target + '\n');
+                       var patron_holds = get_list_from_tree_selection( p.patron_holds.paged_tree.tree );
+                       /* grab cover art for selected item? */
+               }
+       );
+       p.patron_holds.register_flesh_patron_holds_function(
+               function (treeitem) {
+                       sdump('D_PATRON_DISPLAY','Firing flesh_patron_holds_function\n');
+                       var record_id = treeitem.getAttribute('record_id'); 
+                       p.patron_holds.map_patron_holds_to_cols( p._patron.hold_requests()[ record_id ], treeitem );
+               }
+       );
+       p.patron_holds.register_item_context_builder(
+               function (ev) {
+                       sdump('D_PATRON_DISPLAY','Firing context_builder for patron_holds\n');
+                       sdump('D_PATRON_DISPLAY','ev.target = ' + ev.target + '\np.patron_holds.paged_tree.popup = ' + p.patron_holds.paged_tree.popup + '\n');
+                       empty_widget(p.patron_holds.paged_tree.popup);
+                       var patron_holds = get_list_from_tree_selection( p.patron_holds.paged_tree.tree );
+                       sdump('D_PATRON_DISPLAY','patron_holds.length = ' + patron_holds.length + '\n');
+
+                       /*** COPY EDITOR ***/
+                       var menuitem_pi_ce = p.patron_holds.paged_tree.w.document.createElement('menuitem');
+                       p.patron_holds.paged_tree.popup.appendChild( menuitem_pi_ce );
+                       menuitem_pi_ce.setAttribute('label',getString('circ.context_edit'));
+                       menuitem_pi_ce.addEventListener(
+                               'command',
+                               function (ev) {
+                                       sdump('D_PATRON_DISPLAY','Firing copy editor context for patron_holds\n');
+                                       for (var i = 0; i < patron_holds.length; i++) {
+                                               sdump('D_PATRON_DISPLAY','Firing copy edit context\n');
+                                       }
+                               },
+                               false
+                       );
+
+                       /*** OPAC ***/
+                       var menuitem_pi_o = p.patron_holds.paged_tree.w.document.createElement('menuitem');
+                       p.patron_holds.paged_tree.popup.appendChild( menuitem_pi_o );
+                       menuitem_pi_o.setAttribute('label',getString('circ.context_opac'));
+                       menuitem_pi_o.addEventListener(
+                               'command',
+                               function (ev) {
+                                       sdump('D_PATRON_DISPLAY','Firing opac context for patron_holds\n');
+                                       for (var i = 0; i < patron_holds.length; i++) {
+                                               sdump('D_PATRON_DISPLAY','Firing opac context\n');
+                                       }
+                               },
+                               false
+                       );
+                       
+               }
+       );
+}
+
 
index 61f7fd2..4e27008 100755 (executable)
@@ -7,15 +7,20 @@
 <page id="patron_display_win"
        orient="vertical" style="overflow: auto" width="800" height="500"
        sizemode="maximized" persist="width height" 
-       onload="params.w = window; 
-               params.app = 'PatronDisplay'; 
-               params.clamshell_node = document.getElementById('ClamShell_main');
-               params.patron_items_node = document.getElementById('PatronItems_main');
-               params.patron_checkout_items_node = document.getElementById('PatronCheckoutItems_main');
-               params.commandset_node = document.getElementById('universal_cmds');
-               mw.focus_widget( document, 'patron_checkout_barcode_entry_textbox' );
-               mw.OpenILS_init(params);"
-       onunload="mw.OpenILS_exit(params);"
+       onload="try {
+                       params.w = window; 
+                       params.app = 'PatronDisplay'; 
+                       params.clamshell_node = document.getElementById('ClamShell_main');
+                       params.patron_items_node = document.getElementById('PatronItems_main');
+                       params.patron_checkout_items_node = document.getElementById('PatronCheckoutItems_main');
+                       params.patron_holds_node = document.getElementById('PatronHolds_main');
+                       params.commandset_node = document.getElementById('universal_cmds');
+                       mw.focus_widget( document, 'patron_checkout_barcode_entry_textbox' );
+                       mw.OpenILS_init(params);
+               } catch(E) {
+                       alert(E);
+               }"
+       onunload="try { mw.OpenILS_exit(params); } catch(E) { alert(E); }"
        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
 
        <script>mw.sdump('D_TRACE','Loading patron_display.xul\n');</script>
index ce07547..26f7014 100755 (executable)
@@ -10,6 +10,7 @@
        <?xul-overlay href="chrome://evergreen/content/patron/patron_checkout_items_overlay.xul"?>
        <?xul-overlay href="chrome://evergreen/content/patron/patron_display_status_overlay.xul"?>
        <?xul-overlay href="chrome://evergreen/content/patron/patron_display_contact_overlay.xul"?>
+       <?xul-overlay href="chrome://evergreen/content/patron/patron_holds_overlay.xul"?>
 
 <commandset id="universal_cmds">
 
                <caption id="cssdgb2c" label="&patron_navbar.items;"/>
                <box id="PatronItems_main" />
        </groupbox>
-       <box id="PatronHolds_main"><label value="holds" /></box>
+       <groupbox id="cssdgb3">
+               <caption id="cssdgb3c" label="&patron_navbar.items;"/>
+               <box id="PatronHolds_main" />
+       </groupbox>
        <box id="PatronBills_main"><label value="bills" /></box>
        <box id="PatronEdit_main"><label value="edit" /></box>
        <box id="PatronInfo_main"><label value="info" /></box>
diff --git a/Evergreen/staff_client/chrome/content/evergreen/patron/patron_holds.js b/Evergreen/staff_client/chrome/content/evergreen/patron/patron_holds.js
new file mode 100644 (file)
index 0000000..880087c
--- /dev/null
@@ -0,0 +1,64 @@
+sdump('D_TRACE','Loading patron_holds.js\n');
+
+function patron_holds_init(p) {
+       sdump('D_PATRON_HOLDS',"TESTING: patron_holds.js: " + mw.G['main_test_variable'] + '\n');
+       sdump('D_CONSTRUCTOR',arg_dump(arguments));
+
+       p.patron_holds_cols = hold_cols();
+
+       p.paged_tree = paged_tree_init( { 'w' : p.w, 'node' : p.node, 'cols' : p.patron_holds_cols, 'hide_nav' : true, 'hits_per_page' : '9999', 'debug' : p.app } );
+       p.add_patron_holds = p.paged_tree.add_rows;
+       p.clear_patron_holds = p.paged_tree.clear_tree;
+
+       p.register_patron_holds_select_callback = function (f) {
+               sdump('D_PATRON_HOLDS','p.register_patron_holds_select_callback(' + f + ')\n');
+               p.paged_tree.register_select_callback( f );
+       }
+
+       p.register_flesh_patron_holds_function = function (f) {
+               sdump('D_PATRON_HOLDS','p.register_flesh_patron_holds_function(' + f + ')\n');
+               p.paged_tree.register_flesh_row_function( f );
+       }
+
+       p.register_item_context_builder = function (f) {
+               sdump('D_PATRON_HOLDS','p.register_context_builder(' + f + ')\n');
+               p.paged_tree.register_context_builder( f );
+       }
+
+       p.map_patron_holds_to_cols = function (patron_holds, treeitem) {
+               sdump('D_PATRON_HOLDS','p.map_patron_holds_to_cols( ' + patron_holds + ',' + treeitem + ')\n');
+               patron_holds_tree_map_patron_holds_to_cols(p, patron_holds, treeitem);  
+       }
+
+       sdump('D_TRACE_EXIT',arg_dump(arguments));
+       return p;
+}
+
+function patron_holds_tree_map_patron_holds_to_cols(p, patron_holds, treeitem) {
+       sdump('D_PATRON_HOLDS',arg_dump(arguments,{1:true}));
+       sdump('D_TRACE_ENTER',arg_dump(arguments));
+       var cols = new Array();
+       for (var i = 0; i < p.patron_holds_cols.length; i++) {
+               var hash = p.patron_holds_cols[i];
+               sdump('D_PATRON_HOLDS','Considering ' + js2JSON(hash) + '\n');
+               var obj_string = 'patron_holds';
+               switch( hash.fm_class ) {
+                       case 'acp' : obj_string = 'patron_holds.copy'; break;
+                       case 'circ' : obj_string = 'patron_holds.circ'; break;
+                       case 'mvr' : obj_string = 'patron_holds.record'; break;
+               }
+               var cmd = parse_render_string( obj_string, hash.fm_field_render );
+               sdump('D_PATRON_HOLDS','cmd = ' + cmd + '\n');
+               var col = '';
+               try {
+                       col = eval( cmd );
+                       sdump('D_PATRON_HOLDS','eval = ' + col + '\n');
+               } catch(E) {
+                       sdump('D_ERROR',js2JSON(E) + '\n');
+               }
+               cols.push( col );
+       }
+       sdump('D_PATRON_HOLDS','cols = ' + js2JSON(cols) + '\n');
+       p.paged_tree.map_cols_to_treeitem( cols, treeitem );
+       sdump('D_TRACE_EXIT',arg_dump(arguments));
+}
index 0a8ec7b..fdd7c1b 100644 (file)
@@ -60,3 +60,23 @@ circ_label_due_date=Due Date
 mvr_label_title=Title
 mvr_label_author=Author
 
+ahr_capture_time_label=Capture Time
+ahr_current_copy_label=Current Copy
+ahr_email_notify_label=Email Notify
+ahr_expire_time_label=Expire Time
+ahr_fulfillment_time_label=Fulfillment Time
+ahr_hold_type_label=Hold Type
+ahr_holdable_formats_label=Holdable Formats
+ahr_id_label=Id
+ahr_ischanged_label=Ischanged
+ahr_isdeleted_label=Isdeleted
+ahr_isnew_label=Isnew
+ahr_phone_notify_label=Phone Notify
+ahr_pickup_lib_label=Pickup Lib
+ahr_prev_check_time_label=Prev Check Time
+ahr_request_time_label=Request Time
+ahr_requestor_label=Requestor
+ahr_selection_depth_label=Selection Depth
+ahr_target_label=Target
+ahr_usr_label=Usr
+