]> git.evergreen-ils.org Git - Evergreen.git/blob - Evergreen/staff_client/chrome/content/evergreen/patron/patron_bills.js
another take at PatronBills. Different kludge for Firefox. Alert on checkin errors
[Evergreen.git] / Evergreen / staff_client / chrome / content / evergreen / patron / patron_bills.js
1 sdump('D_TRACE','Loading patron_bills.js\n');
2
3 function patron_bills_init(p) {
4         sdump('D_PATRON_BILLS',"TESTING: patron_bills.js: " + mw.G['main_test_variable'] + '\n');
5         sdump('D_CONSTRUCTOR',arg_dump(arguments));
6
7         p.patron_bills_cols = [
8         /*
9                 {
10                         'id' : 'id', 'label' : getString('mbts_id_label'), 'flex' : 1,
11                         'primary' : false, 'hidden' : false, 'fm_class' : 'mbts', 'fm_field_render' : '.id()'
12                 },
13         */
14                 {
15                         'id' : 'xact_dates', 'label' : getString('bills_xact_dates_label'), 'flex' : 1,
16                         'primary' : false, 'hidden' : false, 'fm_class' : 'mbts', 
17                         'fm_field_render' : 'xact_dates_box($$)'
18                 },
19                 {
20                         'id' : 'money', 'label' : getString('bills_money_label'), 'flex' : 1,
21                         'primary' : false, 'hidden' : false, 'fm_class' : 'mbts', 
22                         'fm_field_render' : 'money_box($$)'
23                 },
24         /*
25                 {
26                         'id' : 'total_owed', 'label' : getString('mbts_total_owed_label'), 'flex' : 1,
27                         'primary' : false, 'hidden' : false, 'fm_class' : 'mbts', 'fm_field_render' : '.total_owed()'
28                 },
29                 {
30                         'id' : 'total_paid', 'label' : getString('mbts_total_paid_label'), 'flex' : 1,
31                         'primary' : false, 'hidden' : false, 'fm_class' : 'mbts', 'fm_field_render' : '.total_paid()'
32                 },
33                 {
34                         'id' : 'balance_owed', 'label' : getString('mbts_balance_owed_label'), 'flex' : 1,
35                         'primary' : false, 'hidden' : false, 'fm_class' : 'mbts', 'fm_field_render' : '.balance_owed()'
36                 },
37         */
38                 {
39                         'id' : 'current_pay', 'label' : getString('bills_current_payment_label'), 'flex' : 1, 'render_xul' : 'textbox'
40                 }
41         ];
42
43         p.list_box = list_box_init( { 'w' : p.w, 'node' : p.node, 'cols' : p.patron_bills_cols, 'debug' : p.app } );
44
45
46         p.add_patron_bills = function (bills) {
47                 sdump('D_PATRON_BILLS','p.add_patron_bills(' + bills + ')\n');
48                 return patron_bills_add_patron_bills(p,bills);
49         }
50         p.clear_patron_bills = p.list_box.clear_rows;
51
52         sdump('D_TRACE_EXIT',arg_dump(arguments));
53         return p;
54 }
55
56 function list_box_init( p ) {
57         var listbox = p.w.document.createElement('listbox');
58         p.node.appendChild( listbox );
59         listbox.setAttribute('flex','1');
60         listbox.setAttribute('seltype','multiple');
61
62                 var listhead = p.w.document.createElement('listhead');
63                 listbox.appendChild( listhead );
64
65                 var listcols = p.w.document.createElement('listcols');
66                 listbox.appendChild( listcols );
67
68                         if (window.navigator.userAgent.match( /Firefox/ ))  {
69                                 var listheader = p.w.document.createElement('listheader');
70                                 listhead.appendChild( listheader );
71                                 listheader.setAttribute('label', '');
72                                 var listcol = p.w.document.createElement('listcol');
73                                 listcols.appendChild( listcol );
74                         }
75
76                         for (var i = 0; i < p.cols.length; i++ ) {
77
78                                 var listheader = p.w.document.createElement('listheader');
79                                 listhead.appendChild( listheader );
80                                 listheader.setAttribute('label', p.cols[i].label);
81
82                                 var listcol = p.w.document.createElement('listcol');
83                                 listcols.appendChild( listcol );
84                                 listcol.setAttribute('flex', p.cols[i].flex);
85                         }
86
87         p.add_row = function (cols) {
88
89                 var listitem = p.w.document.createElement('listitem');
90                 listbox.appendChild( listitem );
91                 listitem.setAttribute('allowevents','true');
92
93                 if (window.navigator.userAgent.match( /Firefox/ ))  {
94                         listitem.setAttribute('label','');
95                 }
96
97                 for (var i = 0; i < cols.length; i++) {
98
99                         try {
100                                 listitem.appendChild( cols[i] );
101                         } catch(E) {
102                                 sdump('D_ERROR', cols[i] + '\n' + E + '\n');
103                         }
104                 }
105         }
106
107         p.clear_rows = function () {
108                 var nl = listbox.getElementsByTagName('listitem');
109                 for (var i = 0; i < nl.length; i++) {
110                         listbox.removeChild(nl[i]);
111                 }
112
113         }
114
115         return p;
116 }
117
118 function patron_bills_add_patron_bills(p, bills) {
119         sdump('D_PATRON_BILLS',arg_dump(arguments,{1:true}));
120
121         function xact_dates_box( mbts ) {
122                 var grid = p.w.document.createElement('grid');
123                         var cols = p.w.document.createElement('columns');
124                         grid.appendChild( cols );
125                                 cols.appendChild( p.w.document.createElement('column') );
126                                 cols.appendChild( p.w.document.createElement('column') );
127                         var rows = p.w.document.createElement('rows');
128                         grid.appendChild( rows );
129                                 var row0 = p.w.document.createElement('row');
130                                 rows.appendChild( row0 );
131                                         var label_r0_1 = p.w.document.createElement('label');
132                                         row0.appendChild( label_r0_1 );
133                                         label_r0_1.setAttribute('value',getString('mbts_id_label'));
134                                         var label_r0_2 = p.w.document.createElement('label');
135                                         row0.appendChild( label_r0_2 );
136                                         label_r0_2.setAttribute('value',mbts.id());
137                                 var row1 = p.w.document.createElement('row');
138                                 rows.appendChild( row1 );
139                                         var label_r1_1 = p.w.document.createElement('label');
140                                         row1.appendChild( label_r1_1 );
141                                         label_r1_1.setAttribute('value',getString('mbts_xact_start_label'));
142                                         var label_r1_2 = p.w.document.createElement('label');
143                                         row1.appendChild( label_r1_2 );
144                                         label_r1_2.setAttribute('value',mbts.xact_start().toString().substr(0,10));
145                                 var row2 = p.w.document.createElement('row');
146                                 rows.appendChild( row2 );
147                                         var label_r2_1 = p.w.document.createElement('label');
148                                         row2.appendChild( label_r2_1 );
149                                         label_r2_1.setAttribute('value',getString('mbts_xact_finish_label'));
150                                         var label_r2_2 = p.w.document.createElement('label');
151                                         row2.appendChild( label_r2_2 );
152                                         try { label_r2_2.setAttribute('value',mbts.xact_finish().toString().substr(0,10));
153                                         } catch(E) {}
154
155                 return grid;
156         }
157
158         function money_box( mbts ) {
159                 var grid = p.w.document.createElement('grid');
160                         var cols = p.w.document.createElement('columns');
161                         grid.appendChild( cols );
162                                 cols.appendChild( p.w.document.createElement('column') );
163                                 cols.appendChild( p.w.document.createElement('column') );
164                         var rows = p.w.document.createElement('rows');
165                         grid.appendChild( rows );
166                                 var row1 = p.w.document.createElement('row');
167                                 rows.appendChild( row1 );
168                                         var label_r1_1 = p.w.document.createElement('label');
169                                         row1.appendChild( label_r1_1 );
170                                         label_r1_1.setAttribute('value',getString('mbts_total_owed_label'));
171                                         var label_r1_2 = p.w.document.createElement('label');
172                                         row1.appendChild( label_r1_2 );
173                                         label_r1_2.setAttribute('value',mbts.total_owed());
174                                 var row2 = p.w.document.createElement('row');
175                                 rows.appendChild( row2 );
176                                         var label_r2_1 = p.w.document.createElement('label');
177                                         row2.appendChild( label_r2_1 );
178                                         label_r2_1.setAttribute('value',getString('mbts_total_paid_label'));
179                                         var label_r2_2 = p.w.document.createElement('label');
180                                         row2.appendChild( label_r2_2 );
181                                         label_r2_2.setAttribute('value',mbts.total_paid());
182                                 var row3 = p.w.document.createElement('row');
183                                 rows.appendChild( row3 );
184                                         var label_r3_1 = p.w.document.createElement('label');
185                                         row3.appendChild( label_r3_1 );
186                                         label_r3_1.setAttribute('value',getString('mbts_balance_owed_label'));
187                                         label_r3_1.setAttribute('style','font-weight: bold');
188                                         var label_r3_2 = p.w.document.createElement('label');
189                                         row3.appendChild( label_r3_2 );
190                                         label_r3_2.setAttribute('value',mbts.balance_owed());
191                                         label_r3_2.setAttribute('style','font-weight: bold');
192
193                 return grid;
194         }
195
196         var obj_string ='mbts';
197
198         for (var i = 0; i < bills.length; i++) {
199
200                 var mbts = bills[i];
201
202                 var cols = [];
203
204                 for (var j = 0; j < p.patron_bills_cols.length; j++) {
205                         var hash = p.patron_bills_cols[j];
206                         sdump('D_PATRON_BILLS','Considering ' + js2JSON(hash) + '\n');
207                         var listcell = p.w.document.createElement('listcell');
208                         listcell.setAttribute('pack','start');
209                         listcell.setAttribute('align','start');
210                         listcell.setAttribute('style','border-bottom: black solid thin');
211                         var col = '';
212                         if (hash.fm_field_render) {
213
214                                 var obj = 'mbts';
215                                 switch( hash.fm_class ) {
216                                         case 'mvr' : obj_string = 'mvr'; break;
217                                 }
218                                 var cmd = parse_render_string( obj_string, hash.fm_field_render );
219                                 sdump('D_PATRON_BILLS','cmd = ' + cmd + '\n');
220                                 try {
221                                         col = eval( cmd );
222                                         sdump('D_PATRON_BILLS','eval = ' + col + '\n');
223                                 } catch(E) {
224                                         sdump('D_ERROR',E + '\n');
225                                 }
226                                 if (typeof(col) == 'string') {
227                                         listcell.setAttribute('label',col);
228                                 } else {
229                                         listcell.appendChild( col );
230                                 }
231                         }
232                         if (hash.render_xul) {
233                                 var xul = p.w.document.createElement( hash.render_xul );
234                                 listcell.appendChild( xul );
235                         }
236                         cols.push( listcell );
237                 }
238                 p.list_box.add_row( cols );
239         }
240 }