]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/xul/staff_client/server/patron/items.js
api param fix. toward list selection
[Evergreen.git] / Open-ILS / xul / staff_client / server / patron / items.js
1 dump('entering patron.items.js\n');
2
3 if (typeof patron == 'undefined') patron = {};
4 patron.items = function (params) {
5
6         JSAN.use('util.error'); this.error = new util.error();
7         JSAN.use('util.network'); this.network = new util.network();
8         this.OpenILS = {}; JSAN.use('OpenILS.data'); this.OpenILS.data = new OpenILS.data(); this.OpenILS.data.init({'via':'stash'});
9 }
10
11 patron.items.prototype = {
12
13         'init' : function( params ) {
14
15                 var obj = this;
16
17                 obj.session = params['session'];
18                 obj.patron_id = params['patron_id'];
19
20                 JSAN.use('circ.util');
21                 var columns = circ.util.columns( 
22                         { 
23                                 'title' : { 'hidden' : false, 'flex' : '3' },
24                                 'due_date' : { 'hidden' : false },
25                                 'renewal_remaining' : { 'hidden' : false },
26                         } 
27                 );
28
29                 JSAN.use('util.list'); obj.list = new util.list('items_list');
30                 obj.list.init(
31                         {
32                                 'columns' : columns,
33                                 'map_row_to_column' : circ.util.std_map_row_to_column(),
34                                 'retrieve_row' : function(params) {
35
36                                         var row = params.row;
37
38                                         var funcs = [
39                                                 
40                                                 function() {
41
42                                                         row.my.mvr = obj.network.request(
43                                                                 api.mods_slim_record_retrieve_via_copy.app,
44                                                                 api.mods_slim_record_retrieve_via_copy.method,
45                                                                 [ row.my.circ.target_copy() ]
46                                                         );
47
48                                                 },
49                                                 
50                                                 function() {
51
52
53                                                         row.my.acp = obj.network.request(
54                                                                 api.fm_acp_retrieve.app,
55                                                                 api.fm_acp_retrieve.method,
56                                                                 [ row.my.circ.target_copy() ]
57                                                         );
58
59                                                 },
60
61                                                 function() {
62
63                                                         if (typeof params.on_retrieve == 'function') {
64                                                                 params.on_retrieve(row);
65                                                         }
66
67                                                 },
68                                         ];
69
70                                         JSAN.use('util.exec'); var exec = new util.exec();
71                                         exec.on_error = function(E) {
72                                                 //var err = 'items chain: ' + js2JSON(E);
73                                                 //obj.error.sdump('D_ERROR',err);
74                                                 return true; /* keep going */
75                                         }
76                                         exec.chain( funcs );
77
78                                         return row;
79                                 },
80                                 'on_select' : function(ev) {
81                                         JSAN.use('util.functional');
82                                         var sel = obj.list.retrieve_selection();
83                                         var list = util.functional.map_list(
84                                                 sel,
85                                                 function(o) { return o.getAttribute('retrieve_id'); }
86                                         );
87                                         if (typeof obj.on_select == 'function') {
88                                                 obj.on_select(list);
89                                         }
90                                         if (typeof window.xulG == 'object' && typeof window.xulG.on_select == 'function') {
91                                                 obj.error.sdump('D_PATRON','patron.items: Calling external .on_select()\n');
92                                                 window.xulG.on_select(list);
93                                         } else {
94                                                 obj.error.sdump('D_PATRON','patron.items: No external .on_select()\n');
95                                         }
96                                 },
97                         }
98                 );
99                 
100                 JSAN.use('util.controller'); obj.controller = new util.controller();
101                 obj.controller.init(
102                         {
103                                 'control_map' : {
104                                         'cmd_broken' : [
105                                                 ['command'],
106                                                 function() { alert('Not Yet Implemented'); }
107                                         ],
108                                         'cmd_item_print' : [
109                                                 ['command'],
110                                                 function() {
111                                                 }
112                                         ],
113                                         'cmd_item_claimed_returned' : [
114                                                 ['command'],
115                                                 function() {
116                                                 }
117                                         ],
118                                         'cmd_item_renew' : [
119                                                 ['command'],
120                                                 function() {
121                                                 }
122                                         ],
123                                         'cmd_item_checkin' : [
124                                                 ['command'],
125                                                 function() {
126                                                 }
127                                         ],
128                                         'cmd_show_catalog' : [
129                                                 ['command'],
130                                                 function() {
131                                                 }
132                                         ],
133                                 }
134                         }
135                 );
136
137                 obj.retrieve();
138
139         },
140
141         'retrieve' : function() {
142                 var obj = this;
143                 if (window.xulG && window.xulG.checkouts) {
144                         obj.checkouts = window.xulG.checkouts;
145                 } else {
146                         obj.checkouts = obj.network.request(
147                                 api.fm_circ_retrieve_via_user.app,
148                                 api.fm_circ_retrieve_via_user.method,
149                                 [ obj.session, obj.patron_id ]
150                         );
151                                 
152                 }
153
154                 function gen_list_append(checkout) {
155                         return function() {
156                                 obj.list.append(
157                                         {
158                                                 'retrieve_id' : checkout.id(),
159                                                 'row' : {
160                                                         'my' : {
161                                                                 'circ' : checkout,
162                                                         }
163                                                 },
164                                         }
165                                 );
166                         };
167                 }
168
169                 JSAN.use('util.exec'); var exec = new util.exec();
170                 var rows = [];
171                 for (var i in obj.checkouts) {
172                         rows.push( gen_list_append(obj.checkouts[i]) );
173                 }
174                 exec.chain( rows );
175         },
176
177         'on_select' : function() {
178                 obj.controller.view.cmd_patron_retrieve.setAttribute('disabled','false');
179                 obj.controller.view.cmd_search_form.setAttribute('disabled','false');
180                 obj.retrieve_ids = list;
181         }
182 }
183
184 dump('exiting patron.items.js\n');