]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Evergreen/staff_client/chrome/content/evergreen/patron/patron_edit.js
148465c2c49360ba7804f09ee3cb7f080212a7de
[working/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                 } catch(E) {
105                         sdump('D_ERROR',E + '\n');
106                         obj = 'error';
107                 }
108                 return obj;
109         }
110
111         setTimeout(
112                 function() {
113
114                         for (var i = 0; i < edit.length; i++) {
115
116                                 var row = edit[i];
117
118                                 var cols = [];
119
120                                 for (var j = 0; j < p.patron_edit_cols.length; j++) {
121                                         var hash = p.patron_edit_cols[j];
122                                         sdump('D_PATRON_EDIT','Considering ' + js2JSON(hash) + '\n');
123                                         var listcell = p.w.document.createElement('listcell');
124                                         listcell.setAttribute('pack','start');
125                                         listcell.setAttribute('align','start');
126                                         listcell.setAttribute('style','border-left: black solid thin');
127                                         var col = '';
128                                         if (hash.fm_field_render) {
129
130                                                 switch( hash.fm_class ) {
131                                                         case 'row' : obj_string = 'row'; break;
132                                                         case 'au' : obj_string = 'au'; break;
133                                                 }
134                                                 var cmd = parse_render_string( obj_string, hash.fm_field_render );
135                                                 sdump('D_PATRON_EDIT','cmd = ' + cmd + '\n');
136                                                 try {
137                                                         col = eval( cmd );
138                                                         sdump('D_PATRON_EDIT','eval = ' + col + '\n');
139                                                 } catch(E) {
140                                                         sdump('D_ERROR',E + '\n');
141                                                 }
142                                                 if (typeof(col) == 'string') {
143                                                         listcell.setAttribute('label',col);
144                                                 } else {
145                                                         if (col==null) {
146                                                                 listcell.setAttribute('label','');
147                                                         } else {
148                                                                 listcell.appendChild( col );
149                                                         }
150                                                 }
151                                         }
152                                         cols.push( listcell );
153                                 }
154
155                                 var listitem = p.list_box.add_row(
156                                         cols, {}
157                                 );
158
159                                 if (p.list_box.apply_to_each_listitem) {
160                                         p.list_box.apply_to_each_listitem( i, listitem );
161                                 }
162                         }
163                 }, 0
164         );
165 }