]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/xul/staff_client/server/patron/holds.js
682c8a309e331d1d0944d2cff9fa48b76177f643
[Evergreen.git] / Open-ILS / xul / staff_client / server / patron / holds.js
1 dump('entering patron.holds.js\n');
2
3 if (typeof patron == 'undefined') patron = {};
4 patron.holds = 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.holds.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.hold_columns( 
22                         { 
23                                 'title' : { 'hidden' : false, 'flex' : '3' },
24                                 'request_time' : { 'hidden' : false },
25                                 'pickup_lib_shortname' : { 'hidden' : false },
26                                 'hold_type' : { 'hidden' : false },
27                                 'current_copy' : { 'hidden' : false },
28                                 'capture_time' : { 'hidden' : false },
29                         } 
30                 );
31
32                 JSAN.use('util.list'); obj.list = new util.list('holds_list');
33                 obj.list.init(
34                         {
35                                 'columns' : columns,
36                                 'map_row_to_column' : circ.util.std_map_row_to_column(),
37                                 'retrieve_row' : function(params) {
38                                         var row = params.row;
39                                         try {
40                                                 switch(row.my.ahr.hold_type()) {
41                                                         case 'M' :
42                                                                 row.my.mvr = obj.network.request(
43                                                                         api.MODS_SLIM_METARECORD_RETRIEVE.app,
44                                                                         api.MODS_SLIM_METARECORD_RETRIEVE.method,
45                                                                         [ row.my.ahr.target() ]
46                                                                 );
47                                                         break;
48                                                         default:
49                                                                 row.my.mvr = obj.network.request(
50                                                                         api.MODS_SLIM_RECORD_RETRIEVE.app,
51                                                                         api.MODS_SLIM_RECORD_RETRIEVE.method,
52                                                                         [ row.my.ahr.target() ]
53                                                                 );
54                                                                 row.my.acp = obj.network.simple_request(
55                                                                         'FM_ACP_RETRIEVE', [ row.my.ahr.current_copy() ]
56                                                                 );
57                                                         break;
58                                                 }
59                                         } catch(E) {
60                                                 obj.error.sdump('D_ERROR','retrieve_row: ' + E );
61                                         }
62                                         if (typeof params.on_retrieve == 'function') {
63                                                 params.on_retrieve(row);
64                                         }
65                                         return row;
66                                 }
67                         }
68                 );
69                 
70                 JSAN.use('util.controller'); obj.controller = new util.controller();
71                 obj.controller.init(
72                         {
73                                 'control_map' : {
74                                         'cmd_broken' : [
75                                                 ['command'],
76                                                 function() { alert('Not Yet Implemented'); }
77                                         ],
78                                         'cmd_holds_print' : [
79                                                 ['command'],
80                                                 function() {
81                                                         dump( js2JSON( obj.list.dump() ) + '\n');
82                                                         alert( js2JSON( obj.list.dump() ) + '\n');
83                                                 }
84                                         ],
85                                         'cmd_holds_edit' : [
86                                                 ['command'],
87                                                 function() {
88                                                 }
89                                         ],
90                                         'cmd_holds_cancel' : [
91                                                 ['command'],
92                                                 function() {
93                                                 }
94                                         ],
95                                         'cmd_show_catalog' : [
96                                                 ['command'],
97                                                 function() {
98                                                 }
99                                         ],
100                                 }
101                         }
102                 );
103
104                 obj.retrieve();
105
106         },
107
108         'retrieve' : function() {
109                 var obj = this;
110                 if (window.xulG && window.xulG.holds) {
111                         obj.holds = window.xulG.holds;
112                 } else {
113                         obj.holds = obj.network.request(
114                                 api.FM_AHR_RETRIEVE.app,
115                                 api.FM_AHR_RETRIEVE.method,
116                                 [ obj.session, obj.patron_id ]
117                         );
118                                 
119                 }
120
121                 function gen_list_append(hold) {
122                         return function() {
123                                 obj.list.append(
124                                         {
125                                                 'row' : {
126                                                         'my' : {
127                                                                 'ahr' : hold,
128                                                         }
129                                                 }
130                                         }
131                                 );
132                         };
133                 }
134
135                 JSAN.use('util.exec'); var exec = new util.exec();
136                 var rows = [];
137                 for (var i in obj.holds) {
138                         rows.push( gen_list_append(obj.holds[i]) );
139                 }
140                 exec.chain( rows );
141         },
142 }
143
144 dump('exiting patron.holds.js\n');