]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Evergreen/staff_client/chrome/content/evergreen/patron/patron_display.js
circ_tree
[working/Evergreen.git] / Evergreen / staff_client / chrome / content / evergreen / patron / patron_display.js
1 sdump('D_TRACE','Loading patron_display.js\n');
2
3 function patron_display_init(p) {
4         sdump('D_PATRON_DISPLAY',"TESTING: patron_display.js: " + mw.G['main_test_variable'] + '\n');
5         sdump('D_TRACE_ENTER',arg_dump(arguments));
6
7         p.w.set_patron = function (au) {
8                 return p.w._patron = au;
9         }
10         p.w.display_patron = function (au) {
11                 if (au) p.w.set_patron(au);
12                 if (p.w.status_w)
13                         p.w.status_w.display_patron();
14                 if (p.w.contact_w)
15                         p.w.contact_w.display_patron();
16                 return render_fm(p.w.document, { 'au' : p.w._patron });
17         };
18         p.w.retrieve_patron_via_barcode = function (barcode) {
19                 if (!barcode) barcode = patron_get_barcode( p.w._patron );
20                 p.w.set_patron( retrieve_patron_by_barcode( barcode ) );
21                 return p.w.display_patron();
22         }
23         p.w.retrieve_patron_via_id = function (id) {
24                 p.w.set_patron( retrieve_patron_by_id( id ) );
25                 return p.w.display_patron();
26         }
27         p.w.refresh = function() {
28                 p.w.retrieve_patron_via_id( p.w._patron.id() );
29         }
30
31         if (p.patron) {
32                 if (typeof(p.patron) == 'object') {
33                         p.w._patron = p.patron;
34                         p.w.display_patron();
35                 } else
36                         p.w.retrieve_patron_via_barcode( p.patron );
37         }
38
39         p.w.clamshell = spawn_clamshell( 
40                 p.w.document, 'new_iframe', p.clamshell, {
41                         'horizontal' : true,
42                         'onload' : patron_display_init_after_clamshell(p) 
43                 }
44         );
45
46         sdump('D_TRACE_EXIT',arg_dump(arguments));
47         return;
48 }
49
50 function patron_display_init_after_clamshell(p) {
51         sdump('D_PATRON_DISPLAY',arg_dump(arguments));
52         return function (clamshell_w) {
53                 p.w.inner_clamshell = spawn_clamshell_vertical( 
54                         clamshell_w.document, 
55                         'new_iframe', 
56                         clamshell_w.first_deck, {
57                                 'vertical' : true,
58                                 'onload' : patron_display_init_after_inner_clamshell(p)
59                         }
60                 );
61                 p.w.item_tree = spawn_circ_tree( 
62                         clamshell_w.document, 
63                         'new_iframe', 
64                         clamshell_w.second_deck, {
65                                 'paged_tree_onload' : patron_display_init_after_item_tree_paged_tree(p),
66                                 'onload' : patron_display_init_after_item_tree(p)
67                         }
68                 );
69
70
71                 return;
72         };
73
74 }
75
76 function patron_display_init_after_item_tree_paged_tree(p) {
77         sdump('D_PATRON_DISPLAY',arg_dump(arguments));
78         return function (tree_win) {
79                 sdump('D_TRACE','<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n');
80                 if (p.w._patron) {
81                         sdump('D_TRACE','>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n');
82                         if (!p.w._patron.checkouts()) patron_get_checkouts( p.w._patron );
83                         for (var i = 0; i < p.w._patron.checkouts().length; i++) {
84                                 p.w.item_tree.add_circs( [ i ] );
85                         }
86                 }
87         };
88 };
89
90 function patron_display_init_after_inner_clamshell(p) {
91         sdump('D_PATRON_DISPLAY',arg_dump(arguments));
92         return function (clamshell_w) {
93                 sdump('D_PATRON_DISPLAY',arg_dump(arguments));
94                 p.w.status_w = spawn_patron_display_status(
95                         clamshell_w.document, 
96                         'new_iframe', 
97                         clamshell_w.first_deck, {
98                                 'patron' : p.w._patron
99                         }
100                 );
101                 p.w.contact_w = spawn_patron_display_contact(
102                         clamshell_w.document, 
103                         'new_iframe', 
104                         clamshell_w.second_deck, {
105                                 'patron' : p.w._patron
106                         }
107                 );
108                 return;
109         };
110 }
111
112 function patron_display_init_after_item_tree(p) {
113         sdump('D_PATRON_DISPLAY',arg_dump(arguments));
114         return function (item_tree_w) {
115                 sdump('D_PATRON_DISPLAY',arg_dump(arguments));
116                 item_tree_w.register_circ_select_callback(
117                         function (ev) {
118                                 sdump('D_PATRON_DISPLAY','Firing circ_select_callback\n');
119                                 var circs = get_list_from_tree_selection( item_tree_w.tree_win.tree );
120                                 /* grab cover art for selected item? */
121                         }
122                 );
123                 item_tree_w.register_flesh_circ_function(
124                         function (treeitem) {
125                                 sdump('D_PATRON_DISPLAY',arg_dump(arguments));
126                                 /* A little kludgy if the patron's checkouts change while the list is being navigated, but since
127                                 there is no network traffic, it may be worth clearing and rebuilding the tree when updating */
128                                 var record_id = treeitem.getAttribute('record_id'); 
129                                 item_tree_w.map_circ_to_cols( p.w._patron.checkouts()[ record_id ], treeitem );
130                         }
131                 );
132                 item_tree_w.register_context_builder(
133                         function (ev) {
134                                 /* add check-in and renew options */
135                                 empty_widget(item_tree_w.tree_win.popup);
136                                 var circs = get_list_from_tree_selection( item_tree_w.tree_win.tree );
137                                 var menuitem = item_tree_w.tree_win.document.createElement('menuitem');
138                                 item_tree_w.tree_win.popup.appendChild( menuitem );
139                                 menuitem.setAttribute('label','Open in OPAC');
140                                 menuitem.addEventListener(
141                                         'command',
142                                         function (ev) {
143                                                 for (var i = 0; i < circs.length; i++) {
144                                                         spawn_circ_display(
145                                                                 p.w.app_shell,'new_tab','main_tabbox', 
146                                                                 { 
147                                                                         'circ' : retrieve_circ_by_id( 
148                                                                                 circs[i].getAttribute('record_id') 
149                                                                         )
150                                                                 }
151                                                         );
152                                                 }
153                                         },
154                                         false
155                                 );
156                         }
157                 );
158         };
159 }