713569b44e0ee4fb3cf59f96f5d4a3bb104de7ab
[Evergreen.git] / Open-ILS / xul / staff_client / server / circ / checkin.js
1 dump('entering circ.checkin.js\n');
2
3 if (typeof patron == 'undefined') patron = {};
4 circ.checkin = 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 circ.checkin.prototype = {
12
13         'init' : function( params ) {
14
15                 var obj = this;
16
17                 obj.session = params['session'];
18
19                 JSAN.use('circ.util');
20                 var columns = circ.util.columns( 
21                         { 
22                                 'barcode' : { 'hidden' : false },
23                                 'title' : { 'hidden' : false },
24                                 'status' : { 'hidden' : false },
25                                 //'checkin_status' : { 'hidden' : false },
26                                 'checkin_route_to' : { 'hidden' : false },
27                                 'checkin_text' : { 'hidden' : false, 'flex' : 3 },
28                         } 
29                 );
30                 dump('columns = ' + js2JSON(columns) + '\n');
31
32                 JSAN.use('util.list'); obj.list = new util.list('checkin_list');
33                 obj.list.init(
34                         {
35                                 'columns' : columns,
36                                 'map_row_to_column' : circ.util.std_map_row_to_column(),
37                         }
38                 );
39                 
40                 JSAN.use('util.controller'); obj.controller = new util.controller();
41                 obj.controller.init(
42                         {
43                                 'control_map' : {
44                                         'checkin_barcode_entry_textbox' : [
45                                                 ['keypress'],
46                                                 function(ev) {
47                                                         if (ev.keyCode && ev.keyCode == 13) {
48                                                                 obj.checkin();
49                                                         }
50                                                 }
51                                         ],
52                                         'cmd_broken' : [
53                                                 ['command'],
54                                                 function() { alert('Not Yet Implemented'); }
55                                         ],
56                                         'cmd_checkin_submit_barcode' : [
57                                                 ['command'],
58                                                 function() {
59                                                         obj.checkin();
60                                                 }
61                                         ],
62                                         'cmd_checkin_print' : [
63                                                 ['command'],
64                                                 function() {
65                                                 }
66                                         ],
67                                         'cmd_checkin_reprint' : [
68                                                 ['command'],
69                                                 function() {
70                                                 }
71                                         ],
72                                         'cmd_checkin_done' : [
73                                                 ['command'],
74                                                 function() {
75                                                 }
76                                         ],
77                                 }
78                         }
79                 );
80                 this.controller.view.checkin_barcode_entry_textbox.focus();
81
82         },
83
84         'checkin' : function() {
85                 var obj = this;
86                 try {
87                         var barcode = obj.controller.view.checkin_barcode_entry_textbox.value;
88                         JSAN.use('circ.util');
89                         var checkin = circ.util.checkin_via_barcode(
90                                 obj.session, barcode, obj.patron_id 
91                         );
92                         obj.list.append(
93                                 {
94                                         'row' : {
95                                                 'my' : {
96                                                         'circ' : checkin.circ,
97                                                         'mvr' : checkin.record,
98                                                         'acp' : checkin.copy,
99                                                         'status' : checkin.status,
100                                                         'route_to' : checkin.route_to,
101                                                         'text' : checkin.text,
102                                                 }
103                                         }
104                                 //I could override map_row_to_column here
105                                 }
106                         );
107                         if (typeof obj.on_checkin == 'function') {
108                                 obj.on_checkin(checkin);
109                         }
110                         if (typeof window.xulG == 'object' && typeof window.xulG.on_checkin == 'function') {
111                                 obj.error.sdump('D_CIRC','circ.checkin: Calling external .on_checkin()\n');
112                                 window.xulG.on_checkin(checkin);
113                         } else {
114                                 obj.error.sdump('D_CIRC','circ.checkin: No external .on_checkin()\n');
115                         }
116
117                 } catch(E) {
118                         alert('FIXME: need special alert and error handling\n'
119                                 + js2JSON(E));
120                         if (typeof obj.on_failure == 'function') {
121                                 obj.on_failure(E);
122                         }
123                         if (typeof window.xulG == 'object' && typeof window.xulG.on_failure == 'function') {
124                                 obj.error.sdump('D_CIRC','circ.checkin: Calling external .on_failure()\n');
125                                 window.xulG.on_failure(E);
126                         } else {
127                                 obj.error.sdump('D_CIRC','circ.checkin: No external .on_failure()\n');
128                         }
129                 }
130
131         },
132
133         'on_checkin' : function() {
134                 this.controller.view.checkin_barcode_entry_textbox.value = '';
135                 this.controller.view.checkin_barcode_entry_textbox.focus();
136         },
137
138         'on_failure' : function() {
139                 this.controller.view.checkin_barcode_entry_textbox.select();
140                 this.controller.view.checkin_barcode_entry_textbox.focus();
141         }
142 }
143
144 dump('exiting circ.checkin.js\n');