]> git.evergreen-ils.org Git - Evergreen.git/blob - Evergreen/staff_client/chrome/content/evergreen/patron/patron_display.js
simplify things by not using commands with "cloned" objects. Might be easier to...
[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_CONSTRUCTOR',arg_dump(arguments));
6
7
8         // gives: p.clamshell, p.right_panel, p.left_panel, p.inner_left_clamshell, p.inner_top_panel, p.inner_bottom_panel
9         patron_display_clamshell_init(p);
10
11         // gives: p.patron_items, p.redraw_patron_items
12         patron_display_patron_items_init(p);
13
14         p.set_patron = function (au) {
15                 return p._patron = au;
16         }
17
18         p.display_patron = function (au) {
19                 if (au) p.set_patron(au);
20                 p.redraw_patron_items();
21                 return render_fm(p.w.document, { 'au' : p._patron });
22         }
23
24         p.retrieve_patron_via_barcode = function (barcode) {
25                 if (!barcode) barcode = patron_get_barcode( p._patron );
26                 p.set_patron( retrieve_patron_by_barcode( barcode ) );
27                 return p.display_patron();
28         }
29
30         p.retrieve_patron_via_id = function (id) {
31                 p.set_patron( retrieve_patron_by_id( id ) );
32                 return p.display_patron();
33         }
34
35         p.refresh = function() {
36                 if (p._patron) p.retrieve_patron_via_id( p._patron.id() );
37         }
38
39         p.commandset_node.getElementsByAttribute('id','cmd_patron_refresh')[0].addEventListener(
40                 'command',
41                 function (ev) {
42                         p.refresh();
43                 },
44                 false
45         );
46
47         function gen_func(i) {
48                 // because otherwise i would be 5 for each closure
49                 return function(ev) {
50                         dump('i = ' + i + '\n');
51                         p.clamshell.set_second_deck(i);
52                 };
53         }
54         var cmds = [ 'cmd_patron_checkout', 'cmd_patron_items', 'cmd_patron_holds', 
55                 'cmd_patron_bills', 'cmd_patron_edit', 'cmd_patron_info' ]
56         for (var i in cmds) {
57                 p.commandset_node.getElementsByAttribute('id',cmds[i])[0].addEventListener(
58                         'command',
59                         gen_func(i),
60                         false
61                 );
62         }
63
64         if (p.patron) {
65                 if (typeof(p.patron) == 'object') {
66                         p._patron = p.patron;
67                         p.display_patron();
68                 } else
69                         p.retrieve_patron_via_barcode( p.patron );
70         }
71
72         sdump('D_TRACE_EXIT',arg_dump(arguments));
73         return p;
74 }
75
76 function patron_display_clamshell_init(p) {
77         p.clamshell = clam_shell_init( { 'w' : p.w, 'node' : p.clamshell_node, 'debug' : p.app } );
78         p.left_panel = p.clamshell.first_deck;
79         p.right_panel = p.clamshell.second_deck;
80
81         p.inner_left_clamshell = clam_shell_init( { 'w' : p.w, 'node' : p.left_panel.firstChild, 'debug' : p.app } );
82         p.inner_top_panel = p.inner_left_clamshell.first_deck;
83         p.inner_bottom_panel = p.inner_left_clamshell.second_deck;
84 }
85
86 function patron_display_patron_items_init(p) {
87         p.patron_items = patron_items_init( { 'w' : p.w, 'node' : p.patron_items_node, 'popupset_node' : p.popupset_node, 'debug' : p.app } );
88
89         p.redraw_patron_items = function() {
90                 p.patron_items.clear_patron_items();
91                 if (!p._patron.checkouts()) patron_get_checkouts( p._patron );
92                 for (var i = 0; i < p._patron.checkouts().length; i++) {
93                         p.patron_items.add_patron_items( [ i ] );
94                 }
95         }
96
97         p.patron_items.register_patron_items_select_callback(
98                 function (ev) {
99                         sdump('D_PATRON_DISPLAY','Firing patron_items_select_callback\n');
100                         var patron_items = get_list_from_tree_selection( p.patron_items.paged_tree.tree );
101                         /* grab cover art for selected item? */
102                 }
103         );
104         p.patron_items.register_flesh_patron_items_function(
105                 function (treeitem) {
106                         sdump('D_PATRON_DISPLAY','Firing flesh_patron_items_function\n');
107                         var record_id = treeitem.getAttribute('record_id'); 
108                         p.patron_items.map_patron_items_to_cols( p._patron.checkouts()[ record_id ], treeitem );
109                 }
110         );
111         p.patron_items.register_context_builder(
112                 function (ev) {
113                         sdump('D_PATRON_DISPLAY','Firing context_builder\n');
114                         empty_widget(p.patron_items.paged_tree.popup);
115                         var patron_items = get_list_from_tree_selection( p.patron_items.paged_tree.tree );
116                         var menuitem;
117
118                         /*** RENEW ***/
119                         menuitem = p.patron_items.paged_tree.w.document.createElement('menuitem');
120                         p.patron_items.paged_tree.popup.appendChild( menuitem );
121                         menuitem.setAttribute('label',getString('circ.context_renew'));
122                         menuitem.addEventListener(
123                                 'command',
124                                 function (ev) {
125                                         sdump('D_PATRON_DISPLAY','Firing renew context\n');
126                                         for (var i = 0; i < patron_items.length; i++) {
127                                                 try {
128                                                         var idx = patron_items[i].getAttribute('record_id'); 
129                                                         var circ = p._patron.checkouts()[ idx ].circ;
130                                                         alert( js2JSON(renew_by_circ_id( circ.id() )) );
131                                                 } catch(E) {
132                                                         alert(E);
133                                                 }
134                                         }
135                                 },
136                                 false
137                         );
138
139                         /*** CHECKIN ***/
140                         menuitem = p.patron_items.paged_tree.w.document.createElement('menuitem');
141                         p.patron_items.paged_tree.popup.appendChild( menuitem );
142                         menuitem.setAttribute('label',getString('circ.context_checkin'));
143                         menuitem.addEventListener(
144                                 'command',
145                                 function (ev) {
146                                         sdump('D_PATRON_DISPLAY','Firing checkin context\n');
147                                         for (var i = 0; i < patron_items.length; i++) {
148                                                 try {
149                                                         var idx = patron_items[i].getAttribute('record_id'); 
150                                                         var copy = p._patron.checkouts()[ idx ].copy;
151                                                         alert( js2JSON(checkin_by_copy_barcode( copy.barcode() )) );
152                                                 } catch(E) {
153                                                         alert(E);
154                                                 }
155                                         }
156                                 },
157                                 false
158                         );
159
160                         /* separator */
161                         menuitem = p.patron_items.paged_tree.w.document.createElement('menuseparator');
162                         p.patron_items.paged_tree.popup.appendChild( menuitem );
163                         
164
165                         /*** COPY EDITOR ***/
166                         menuitem = p.patron_items.paged_tree.w.document.createElement('menuitem');
167                         p.patron_items.paged_tree.popup.appendChild( menuitem );
168                         menuitem.setAttribute('label',getString('circ.context_edit'));
169                         menuitem.addEventListener(
170                                 'command',
171                                 function (ev) {
172                                         for (var i = 0; i < patron_items.length; i++) {
173                                                 sdump('D_PATRON_DISPLAY','Firing copy edit context\n');
174                                         }
175                                 },
176                                 false
177                         );
178
179                         /*** OPAC ***/
180                         menuitem = p.patron_items.paged_tree.w.document.createElement('menuitem');
181                         p.patron_items.paged_tree.popup.appendChild( menuitem );
182                         menuitem.setAttribute('label',getString('circ.context_opac'));
183                         menuitem.addEventListener(
184                                 'command',
185                                 function (ev) {
186                                         for (var i = 0; i < patron_items.length; i++) {
187                                                 sdump('D_PATRON_DISPLAY','Firing opac context\n');
188                                         }
189                                 },
190                                 false
191                         );
192                         
193                 }
194         );
195 }
196
197