1 sdump('D_TRACE','Loading patron_bills.js\n');
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));
7 p.patron_bills_cols = [
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($$)'
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()'
19 'id' : 'money', 'label' : getString('bills_money_label'), 'flex' : 0,
20 'primary' : false, 'hidden' : false, 'fm_class' : 'mbts',
21 'fm_field_render' : 'money_box($$)'
24 'id' : 'current_pay', 'label' : getString('bills_current_payment_label'), 'flex' : 0,
25 'render_xul' : 'textbox'
29 p.list_box = list_box_init( { 'w' : p.w, 'node' : p.node, 'cols' : p.patron_bills_cols, 'debug' : p.app } );
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);
36 p.clear_patron_bills = p.list_box.clear_rows;
38 sdump('D_TRACE_EXIT',arg_dump(arguments));
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');
48 var listhead = p.w.document.createElement('listhead');
49 p.listbox.appendChild( listhead );
51 var listcols = p.w.document.createElement('listcols');
52 p.listbox.appendChild( listcols );
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 );
63 for (var i = 0; i < p.cols.length; i++ ) {
65 var listheader = p.w.document.createElement('listheader');
66 listhead.appendChild( listheader );
67 listheader.setAttribute('label', p.cols[i].label);
69 var listcol = p.w.document.createElement('listcol');
70 listcols.appendChild( listcol );
71 listcol.setAttribute('flex', p.cols[i].flex);
74 p.add_row = function (cols, params) {
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] );
84 /* if (window.navigator.userAgent.match( /Firefox/ )) */ {
85 sdump('D_FIREFOX','Kludge: Setting label on listitem\n');
86 listitem.setAttribute('label',' ');
89 for (var i = 0; i < cols.length; i++) {
92 dump('listitem.append. i = ' + i + ' cols[i] = ' + cols[i] + '\n');
93 listitem.appendChild( cols[i] );
95 sdump('D_ERROR', cols[i] + '\n' + E + '\n');
100 p.clear_rows = function () {
101 while( p.listbox.getRowCount() > 0 ) { p.listbox.removeItemAt(0); }
107 function patron_bills_add_patron_bills(p, bills) {
108 sdump('D_PATRON_BILLS',arg_dump(arguments,{1:true}));
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));
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');
185 function gen_timeout_add_row( cols, mbts ) {
186 return function() { p.list_box.add_row( cols, { 'record_id' : mbts.id() } ) };
189 var obj_string ='mbts';
191 setTimeout( function(){p.list_box.clear_rows();}, 0 );
193 for (var i = 0; i < bills.length; i++) {
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');
207 if (hash.fm_field_render) {
210 switch( hash.fm_class ) {
211 case 'mvr' : obj_string = 'mvr'; break;
213 var cmd = parse_render_string( obj_string, hash.fm_field_render );
214 sdump('D_PATRON_BILLS','cmd = ' + cmd + '\n');
217 sdump('D_PATRON_BILLS','eval = ' + col + '\n');
219 sdump('D_ERROR',E + '\n');
221 if (typeof(col) == 'string') {
222 listcell.setAttribute('label',col);
224 listcell.appendChild( col );
227 if (hash.render_xul) {
228 var xul = p.w.document.createElement( hash.render_xul );
229 listcell.appendChild( xul );
231 cols.push( listcell );
233 setTimeout( gen_timeout_add_row( cols, mbts), 0);