1 sdump('D_TRACE','Loading patron_edit.js\n');
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));
7 patron_edit_list_box_init( p );
9 sdump('D_TRACE_EXIT',arg_dump(arguments));
13 function patron_edit_list_box_init( p ) {
14 p.patron_edit_cols = [
16 'id' : 'fieldname', 'label' : getString('patron_edit_fieldname'), 'flex' : 0,
17 'primary' : false, 'hidden' : false, 'fm_class' : 'row',
18 'fm_field_render' : '.label.toString()'
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)'
26 'id' : 'new_value', 'label' : getString('patron_edit_new_value'), 'flex' : 0,
27 'fm_class' : 'row', 'fm_field_render' : 'create_entry_widget($$)'
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();
36 p.add_rows = function (au) {
37 sdump('D_PATRON_EDIT','p.add_row(' + au + ')\n');
38 return patron_edit_add_rows(p,au);
42 function patron_edit_add_rows(p, au) {
43 sdump('D_PATRON_EDIT',arg_dump(arguments,{1:true}));
47 var edit = patron_edit_rows();
49 function evil_eval( hint, render_code ) {
50 sdump('D_PATRON_EDIT',arg_dump(arguments));
51 var cmd = parse_render_string( hint, render_code );
53 sdump('D_PATRON_EDIT','evil_cmd = ' + cmd + '\n');
56 sdump('D_PATRON_EDIT','evil_eval = ' + col + '\n');
58 sdump('D_ERROR',E + '\n');
63 function create_entry_widget(row) {
66 sdump('D_PATRON_EDIT',arg_dump(arguments));
68 row.rdefault = evil_eval( row.fm_class, row.rdefault );
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] );
78 switch(row.entry_widget) {
80 if (row.populate_with) {
81 var menupopup = p.w.document.createElement('menupopup');
82 obj.appendChild( menupopup );
84 for (var i in row.populate_with) {
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 ] );
91 if ( (row.rdefault == i) || (row.rdefault == row.populate_with[ i ]) ) {
92 sdump('D_PATRON_EDIT','Selected ' + i + '\n');
93 menuitem.setAttribute('selected','true');
100 if (row.rdefault) obj.setAttribute('value', row.rdefault);
105 sdump('D_ERROR',E + '\n');
114 for (var i = 0; i < edit.length; i++) {
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');
128 if (hash.fm_field_render) {
130 switch( hash.fm_class ) {
131 case 'row' : obj_string = 'row'; break;
132 case 'au' : obj_string = 'au'; break;
134 var cmd = parse_render_string( obj_string, hash.fm_field_render );
135 sdump('D_PATRON_EDIT','cmd = ' + cmd + '\n');
138 sdump('D_PATRON_EDIT','eval = ' + col + '\n');
140 sdump('D_ERROR',E + '\n');
142 if (typeof(col) == 'string') {
143 listcell.setAttribute('label',col);
146 listcell.setAttribute('label','');
148 listcell.appendChild( col );
152 cols.push( listcell );
155 var listitem = p.list_box.add_row(
159 if (p.list_box.apply_to_each_listitem) {
160 p.list_box.apply_to_each_listitem( i, listitem );