patron search results
authorphasefx <phasefx@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Wed, 6 Jul 2005 05:52:48 +0000 (05:52 +0000)
committerphasefx <phasefx@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Wed, 6 Jul 2005 05:52:48 +0000 (05:52 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@1058 dcc99617-32d9-48b4-a31d-7c20da2025e4

Evergreen/staff_client/chrome/content/evergreen/patron/patron_search.js
Evergreen/staff_client/chrome/content/evergreen/patron/patron_search_results.js [new file with mode: 0644]
Evergreen/staff_client/chrome/content/evergreen/patron/patron_search_results.xul [new file with mode: 0644]
Evergreen/staff_client/chrome/content/evergreen/patron/patron_search_results_overlay.xul [new file with mode: 0644]

index 93e91c5..d701749 100644 (file)
@@ -10,12 +10,32 @@ function patron_search_init(p) {
                        'onload' : patron_search_init_after_clamshell(p) 
                }
        );
+
+       p.w.crazy_search = function (crazy_search_hash) {
+               return patron_search( p.w, crazy_search_hash );
+       };
+}
+
+function patron_search(search_win, crazy_search_hash) {
+       sdump('D_PATRON_SEARCH',arg_dump(arguments));
+       var result = [];
+       try {
+               result = user_request(
+                       'open-ils.actor',
+                       'open-ils.actor.patron.search.advanced',
+                       [ G.auth_ses[0], crazy_search_hash ]
+               )[0];
+               sdump('D_PATRON_SEARCH','result.length = ' + result.length + '\n');
+       } catch(E) {
+               handle_error(E);
+       }
+       return result;
 }
 
 function patron_search_init_after_clamshell(p) {
        sdump('D_PATRON_SEARCH',arg_dump(arguments));
        return function (clamshell_w) {
-               var form = spawn_patron_search_form(
+               p.w.search_form = spawn_patron_search_form(
                        clamshell_w.document, 
                        'new_iframe', 
                        clamshell_w.first_deck, {
@@ -23,8 +43,14 @@ function patron_search_init_after_clamshell(p) {
                        }
                );
 
-               clamshell_w.new_card_in_second_deck(
-                       'chrome://evergreen/content/main/about.xul', {}); 
+               p.w.result_tree = spawn_patron_search_results(
+                       clamshell_w.document, 
+                       'new_iframe', 
+                       clamshell_w.second_deck, {
+                               'onload' : patron_init_after_patron_search_results(p)
+                       }
+               );
+
        };
 }
 
@@ -33,8 +59,44 @@ function patron_init_after_patron_search_form(p) {
        return function(form_w) {
                form_w.register_search_callback(
                        function (ev) {
-                               alert('Submitted: ' + 
+                               sdump('D_PATRON_SEARCH','Submitted: ' + 
                                        js2JSON(form_w.crazy_search_hash) + '\n');
+                               if (p.w.crazy_search) {
+                                       p.w.result_tree.add_patrons(
+                                               p.w.crazy_search( form_w.crazy_search_hash )
+                                       );
+                               }
+                       }
+               );
+       };
+}
+
+function patron_init_after_patron_search_results(p) {
+       sdump('D_PATRON_SEARCH',arg_dump(arguments));
+       return function(results_w) {
+               results_w.register_patron_select_callback(
+                       function (ev) {
+                               alert('Selected: ' + 
+                                       js2JSON(results_w.selection_id) + '\n');
+                       }
+               );
+               results_w.register_flesh_patron_function(
+                       function (treeitem) {
+                               sdump('D_PATRON_SEARCH',arg_dump(arguments));
+                               user_async_request(
+                                       'open-ils.actor',
+                                       'open-ils.actor.user.fleshed.retrieve',
+                                       [ G.auth_ses[0], treeitem.getAttribute('record_id') ],
+                                       function (request) {
+                                               sdump('D_PATRON_SEARCH',arg_dump(arguments));
+                                               try {
+                                                       var patron = request.getResultObject();
+                                                       results_w.map_patron_to_cols( patron, treeitem );
+                                               } catch(E) {
+                                                       sdump('D_ERROR',js2JSON(E) + '\n');
+                                               }
+                                       }
+                               );
                        }
                );
        };
diff --git a/Evergreen/staff_client/chrome/content/evergreen/patron/patron_search_results.js b/Evergreen/staff_client/chrome/content/evergreen/patron/patron_search_results.js
new file mode 100644 (file)
index 0000000..9b35bb0
--- /dev/null
@@ -0,0 +1,85 @@
+sdump('D_TRACE','Loading patron_search_results.js\n');
+
+function patron_search_results_init(p) {
+       sdump('D_PATRON_SEARCH_RESULTS',"TESTING: patron_search_results.js: " + mw.G['main_test_variable'] + '\n');
+
+       p.w.patron_cols = [
+               { 
+                       'id' : 'id_col', 'label' : getString('au_label_id'), 'flex' : 1, 
+                       'primary' : true, 'hidden' : false, 'fm_field_render' : '.id()'
+               },
+               { 
+                       'id' : 'prefix_col', 'label' : getString('au_label_prefix'), 'flex' : 1, 
+                       'primary' : false, 'hidden' : false, 'fm_field_render' : '.prefix()'
+               },
+               { 
+                       'id' : 'family_name_col', 'label' : getString('au_label_family_name'), 'flex' : 1, 
+                       'primary' : false, 'hidden' : false, 'fm_field_render' : '.family_name()'
+               },
+               { 
+                       'id' : 'first_given_name_col', 'label' : getString('au_label_first_given_name'), 'flex' : 1, 
+                       'primary' : false, 'hidden' : false, 'fm_field_render' : '.first_given_name()'
+               },
+               { 
+                       'id' : 'second_given_name_col', 'label' : getString('au_label_second_given_name'), 'flex' : 1, 
+                       'primary' : false, 'hidden' : false, 'fm_field_render' : '.second_given_name()'
+               },
+               { 
+                       'id' : 'suffix_col', 'label' : getString('au_label_suffix'), 'flex' : 1, 
+                       'primary' : false, 'hidden' : false, 'fm_field_render' : '.suffix()'
+               }
+       ];
+
+        p.w.tree_win = spawn_paged_tree(
+                p.w.document, 'new_iframe', p.paged_tree, { 
+                       'cols' : p.w.patron_cols,
+                       'onload' : patron_search_results_init_after_paged_tree(p) 
+               }
+        );
+
+       p.w.register_patron_select_callback = function (f) {
+               p.w._patron_select_callback = f;
+       }
+
+       p.w.register_flesh_patron_function = function (f) {
+               p.w._flesh_patron_function = f;
+       }
+
+       p.w.map_patron_to_cols = function (patron, treeitem) {
+               patron_search_results_map_patron_to_cols(p, patron, treeitem);  
+       }
+
+        if (p.onload) {
+                try {
+                        sdump('D_TRACE','trying psuedo-onload...\n');
+                        p.onload(p.w);
+                } catch(E) {
+                        sdump('D_ERROR', js2JSON(E) + '\n' );
+                }
+        }
+
+}
+
+function patron_search_results_init_after_paged_tree(p) {
+       return function (tree_win) {
+               tree_win.register_select_callback( p.w._patron_select_callback );
+               tree_win.register_flesh_row_function( p.w._flesh_patron_function );
+               p.w.add_patrons = tree_win.add_rows;
+       };
+}
+
+function patron_search_results_map_patron_to_cols(p, patron, treeitem) {
+       var cols = new Array();
+       for (var i = 0; i < p.w.patron_cols.length; i++) {
+               var hash = p.w.patron_cols[i];
+               var cmd = 'patron'+hash.fm_field_render;
+               var col = '';
+               try {
+                       col = eval( cmd );
+               } catch(E) {
+                       sdump('D_ERROR',js2JSON(E) + '\n');
+               }
+               cols.push( col );
+       }
+       p.w.tree_win.map_cols_to_treeitem( cols, treeitem );
+}
diff --git a/Evergreen/staff_client/chrome/content/evergreen/patron/patron_search_results.xul b/Evergreen/staff_client/chrome/content/evergreen/patron/patron_search_results.xul
new file mode 100644 (file)
index 0000000..af4f7ec
--- /dev/null
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<!-- Clamlication: Evergreen Staff Client -->
+
+<!-- Localization -->
+<!DOCTYPE page SYSTEM "chrome://evergreen/locale/patron_search_results.dtd">
+
+<page id="patron_search_results_win"
+       orient="vertical" style="overflow: auto" width="800" height="500"
+       sizemode="maximized" persist="width height" 
+       onload="params.w = window; params.paged_tree = 'PatronSearchResults_pagedtree'; params.app = 'PatronSearchResults'; mw.OpenILS_init(params);"
+       onunload="mw.OpenILS_exit(params);"
+       xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+       <!-- Stylesheets -->
+       <?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+       <?xml-stylesheet href="chrome://evergreen/skin/evergreen.css" type="text/css"?>
+       <?xml-stylesheet href="chrome://evergreen/skin/patron_search_results.css" type="text/css"?>
+       
+       <!-- Overlays for this XUL file -->
+       <?xul-overlay href="chrome://evergreen/content/patron/patron_search_results_overlay.xul"?>
+
+       <!-- XUL'ified abstraction for logic to attach to widgets -->
+       <commandset id="PatronSearchResults_cmds" />
+
+       <!-- Accelerator Keys (Accessor Keys are in DTD's) -->
+       <keyset id="PatronSearchResults_keys" />
+
+       <!-- Layout to be filled in by overlays and javascript -->
+       <box id="PatronSearchResults_main" />
+
+</page>
+
diff --git a/Evergreen/staff_client/chrome/content/evergreen/patron/patron_search_results_overlay.xul b/Evergreen/staff_client/chrome/content/evergreen/patron/patron_search_results_overlay.xul
new file mode 100644 (file)
index 0000000..a8c1c10
--- /dev/null
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<!DOCTYPE overlay SYSTEM "chrome://evergreen/locale/patron_search_results.dtd">
+<overlay id="patron_search_results_overlay" 
+       xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+<commandset id="PatronSearchResults_cmds">
+
+       <command id="cmd_broken" oncommand="
+               alert('Not Yet Implemented'); "/>
+
+</commandset>
+
+<!-- main widget for patron_search_results -->
+<box id="PatronSearchResults_main" flex="1" orient="horizontal">
+       <box id="PatronSearchResults_pagedtree" flex="1" orient="horizontal"/>
+</box>
+
+<!-- Accelerator Keys (Accessor Keys are in DTD's) -->
+<keyset id="PatronSearchResults_keys">
+</keyset>
+
+</overlay>