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