]> git.evergreen-ils.org Git - Evergreen.git/blob - Evergreen/staff_client/chrome/content/evergreen/patron/patron_edit.js
more ripping of legacy code. seems to work :)
[Evergreen.git] / Evergreen / staff_client / chrome / content / evergreen / patron / patron_edit.js
1 sdump('D_TRACE','Loading patron_edit.js\n');
2
3 function patron_edit_init(p) {
4         sdump('D_PATRON_EDIT',"TESTING: patron_edit.js: " + mw.G['main_test_variable'] + '\n');
5         sdump('D_CONSTRUCTOR',arg_dump(arguments));
6
7         patron_edit_list_box_init( p );
8
9         sdump('D_TRACE_EXIT',arg_dump(arguments));
10         return p;
11 }
12
13 function patron_edit_list_box_init( p ) {
14         p.patron_edit_cols = [
15                 {
16                         'id' : 'fieldname', 'label' : getString('patron_edit_fieldname'), 'flex' : 0,
17                         'primary' : false, 'hidden' : false, 'fm_class' : 'row',
18                         'fm_field_render' : '.label.toString()'
19                 },
20                 {
21                         'id' : 'current_value', 'label' : getString('patron_edit_current_value'), 'flex' : 1,
22                         'primary' : false, 'hidden' : false, 'fm_class' : 'row', 
23                         'fm_field_render' : 'evil_eval(row.fm_class,row.fm_field_render)'
24                 },
25                 {
26                         'id' : 'new_value', 'label' : getString('patron_edit_new_value'), 'flex' : 0, 
27                         'fm_class' : 'row', 'fm_field_render' : 'create_entry_widget($$)'
28                 }
29         ];
30
31         p.list_box = list_box_init( { 'w' : p.w, 'node' : p.node, 'cols' : p.patron_edit_cols, 'debug' : p.app } );
32         p.clear_patron_edit = function () { 
33                 p.list_box.clear_rows(); 
34         };
35
36         p.add_rows = function (au) {
37                 sdump('D_PATRON_EDIT','p.add_row(' + au + ')\n');
38                 return patron_edit_add_rows(p,au);
39         }
40 }
41
42 function patron_edit_add_rows(p, au) {
43         sdump('D_PATRON_EDIT',arg_dump(arguments,{1:true}));
44
45         var obj_string ='au';
46
47         var edit = patron_edit_rows();
48
49         function evil_eval( hint, render_code ) {
50                 sdump('D_PATRON_EDIT',arg_dump(arguments));
51                 var cmd = parse_render_string( hint, render_code );
52                 var col = '';
53                 sdump('D_PATRON_EDIT','evil_cmd = ' + cmd + '\n');
54                 try {
55                         col = eval( cmd );
56                         sdump('D_PATRON_EDIT','evil_eval = ' + col + '\n');
57                 } catch(E) {
58                         sdump('D_ERROR',E + '\n');
59                 }
60                 return col;
61         }
62
63         function create_entry_widget(row) {
64                 var obj;
65                 try {
66                         sdump('D_PATRON_EDIT',arg_dump(arguments));
67                         if (row.rdefault) {
68                                 row.rdefault = evil_eval( row.fm_class, row.rdefault );
69                         }
70                         if (row.entry_widget) {
71                                 obj = p.w.document.createElement( row.entry_widget );
72                                 obj.setAttribute('flex','1');
73                                 if (row.entry_widget_attributes) {
74                                         for (var i in row.entry_widget_attributes) {
75                                                 obj.setAttribute( i, row.entry_widget_attributes[i] );
76                                         }
77                                 }
78                                 switch(row.entry_widget) {
79                                         case 'menulist':
80                                                 if (row.populate_with) {
81                                                         var menupopup = p.w.document.createElement('menupopup');
82                                                         obj.appendChild( menupopup );
83
84                                                         for (var i in row.populate_with) {
85
86                                                                 var menuitem = p.w.document.createElement('menuitem');
87                                                                 menupopup.appendChild( menuitem );
88                                                                 menuitem.setAttribute('label', i );
89                                                                 menuitem.setAttribute('value', row.populate_with[ i ] );
90                                                                 if (row.rdefault) {
91                                                                         if ( (row.rdefault == i) || (row.rdefault == row.populate_with[ i ]) ) {
92                                                                                 sdump('D_PATRON_EDIT','Selected ' + i + '\n');
93                                                                                 menuitem.setAttribute('selected','true');
94                                                                         }
95                                                                 }
96                                                         }
97                                                 }
98                                                 break;
99                                         default:
100                                                 if (row.rdefault) obj.setAttribute('value', row.rdefault);
101                                                 break;
102                                 }
103                         }
104                         if (row.entry_event && row.entry_code) {
105                                 obj.addEventListener( row.entry_event, new Function('ev',row.entry_code), false);
106                         }
107                 } catch(E) {
108                         alert(E + '\n' + js2JSON(E) + '\n');
109                         sdump('D_ERROR',E + '\n');
110                         obj = 'error';
111                 }
112                 return obj;
113         }
114
115         setTimeout(
116                 function() {
117
118                         for (var i = 0; i < edit.length; i++) {
119
120                                 var row = edit[i];
121
122                                 var cols = [];
123
124                                 for (var j = 0; j < p.patron_edit_cols.length; j++) {
125                                         var hash = p.patron_edit_cols[j];
126                                         sdump('D_PATRON_EDIT','Considering ' + js2JSON(hash) + '\n');
127                                         var listcell = p.w.document.createElement('listcell');
128                                         listcell.setAttribute('pack','start');
129                                         listcell.setAttribute('align','start');
130                                         listcell.setAttribute('style','border-left: black solid thin');
131                                         var col = '';
132                                         if (hash.fm_field_render) {
133
134                                                 switch( hash.fm_class ) {
135                                                         case 'row' : obj_string = 'row'; break;
136                                                         case 'au' : obj_string = 'au'; break;
137                                                 }
138                                                 var cmd = parse_render_string( obj_string, hash.fm_field_render );
139                                                 sdump('D_PATRON_EDIT','cmd = ' + cmd + '\n');
140                                                 try {
141                                                         col = eval( cmd );
142                                                         sdump('D_PATRON_EDIT','eval = ' + col + '\n');
143                                                 } catch(E) {
144                                                         sdump('D_ERROR',E + '\n');
145                                                 }
146                                                 if (typeof(col) == 'string') {
147                                                         listcell.setAttribute('label',col);
148                                                 } else {
149                                                         if (col==null) {
150                                                                 listcell.setAttribute('label','');
151                                                         } else {
152                                                                 listcell.appendChild( col );
153                                                         }
154                                                 }
155                                         }
156                                         cols.push( listcell );
157                                 }
158
159                                 if (!row['style']) row['style'] = '';
160                                 if (!row['class']) row['class'] = '';
161                                 var listitem = p.list_box.add_row(
162                                         cols, { 'style' : row['style'], 'class' : row['class'] }
163                                 );
164
165                                 if (p.list_box.apply_to_each_listitem) {
166                                         p.list_box.apply_to_each_listitem( i, listitem );
167                                 }
168                         }
169                 }, 0
170         );
171 }