]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Evergreen/staff_client/chrome/content/evergreen/patron/patron_bills.js
listbox and firefox bug, bill interface incomplete
[working/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' : 'checkbox', 'label' : ' ', 'flex' : 0, 'render_xul' : 'checkbox'
11                 },
12         */
13                 {
14                         'id' : 'id', 'label' : getString('mbts_id_label'), 'flex' : 1,
15                         'primary' : false, 'hidden' : false, 'fm_class' : 'mbts', 'fm_field_render' : '.id()'
16                 },
17                 {
18                         'id' : 'xact_start', 'label' : getString('mbts_xact_start_label'), 'flex' : 1,
19                         'primary' : false, 'hidden' : false, 'fm_class' : 'mbts', 'fm_field_render' : '.xact_start().toString().substr(0,10);'
20                 },
21                 {
22                         'id' : 'xact_finish', 'label' : getString('mbts_xact_finish_label'), 'flex' : 1,
23                         'primary' : false, 'hidden' : false, 'fm_class' : 'mbts', 'fm_field_render' : '.xact_finish().toString().substr(0,10);'
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                         'id' : 'current_pay', 'label' : getString('bills_current_payment_label'), 'flex' : 1, 'render_xul' : 'textbox'
39                 }
40         ];
41
42         p.list_box = list_box_init( { 'w' : p.w, 'node' : p.node, 'cols' : p.patron_bills_cols, 'debug' : p.app } );
43
44
45         p.add_patron_bills = function (bills) {
46                 sdump('D_PATRON_BILLS','p.add_patron_bills(' + bills + ')\n');
47                 return patron_bills_add_patron_bills(p,bills);
48         }
49         p.clear_patron_bills = p.list_box.clear_rows;
50
51         sdump('D_TRACE_EXIT',arg_dump(arguments));
52         return p;
53 }
54
55 function list_box_init( p ) {
56         var listbox = p.w.document.createElement('listbox');
57         p.node.appendChild( listbox );
58         listbox.setAttribute('flex','1');
59
60                 var listhead = p.w.document.createElement('listhead');
61                 listbox.appendChild( listhead );
62
63                 var listcols = p.w.document.createElement('listcols');
64                 listbox.appendChild( listcols );
65
66                         for (var i = 0; i < p.cols.length; i++ ) {
67
68                                 var listheader = p.w.document.createElement('listheader');
69                                 listhead.appendChild( listheader );
70                                 listheader.setAttribute('label', p.cols[i].label);
71
72                                 var listcol = p.w.document.createElement('listcol');
73                                 listcols.appendChild( listcol );
74                                 listcol.setAttribute('flex', p.cols[i].flex);
75                         }
76
77         p.add_row = function (cols) {
78
79                 var listitem = p.w.document.createElement('listitem');
80                 listbox.appendChild( listitem );
81                 listitem.setAttribute('allowevents','true');
82                 var idx = 0;
83                 if (typeof(cols[0]) == 'string') {
84
85                         listitem.setAttribute('label',cols[0]);
86                         idx = 1;
87                 }
88                 for (var i = idx; i < cols.length; i++) {
89
90                         try {
91                                 listitem.appendChild( cols[i] );
92                         } catch(E) {
93                                 sdump('D_ERROR', cols[i] + '\n' + E + '\n');
94                         }
95                 }
96         }
97
98         p.clear_rows = function () {
99                 var nl = listbox.getElementsByTagName('listitem');
100                 for (var i = 0; i < nl.length; i++) {
101                         listbox.removeChild(nl[i]);
102                 }
103
104         }
105
106         return p;
107 }
108
109 function patron_bills_add_patron_bills(p, bills) {
110         sdump('D_PATRON_BILLS',arg_dump(arguments,{1:true}));
111
112         var obj_string ='mbts';
113
114         for (var i = 0; i < bills.length; i++) {
115
116                 var mbts = bills[i];
117
118                 var cols = [];
119
120                 for (var j = 0; j < p.patron_bills_cols.length; j++) {
121                         var hash = p.patron_bills_cols[j];
122                         sdump('D_PATRON_BILLS','Considering ' + js2JSON(hash) + '\n');
123                         var listcell = p.w.document.createElement('listcell');
124                         var col = '';
125                         if (hash.fm_field_render) {
126
127                                 var obj = 'mbts';
128                                 switch( hash.fm_class ) {
129                                         case 'mvr' : obj_string = 'mvr'; break;
130                                 }
131                                 var cmd = parse_render_string( obj_string, hash.fm_field_render );
132                                 sdump('D_PATRON_BILLS','cmd = ' + cmd + '\n');
133                                 try {
134                                         col = eval( cmd );
135                                         sdump('D_PATRON_BILLS','eval = ' + col + '\n');
136                                 } catch(E) {
137                                         sdump('D_ERROR',js2JSON(E) + '\n');
138                                 }
139                                 listcell.setAttribute('label',col);
140                         }
141                         if (hash.render_xul) {
142                                 var xul = p.w.document.createElement( hash.render_xul );
143                                 listcell.appendChild( xul );
144                         }
145                         if ( (j == 0) && (window.navigator.userAgent.match( /Firefox/ )) ) {
146                                 cols.push( col );
147                         } else {
148                                 cols.push( listcell );
149                         }
150                 }
151                 p.list_box.add_row( cols );
152         }
153 }