patron edit interface. widgets, but no behavior yet
authorphasefx <phasefx@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 22 Jul 2005 01:08:10 +0000 (01:08 +0000)
committerphasefx <phasefx@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 22 Jul 2005 01:08:10 +0000 (01:08 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@1355 dcc99617-32d9-48b4-a31d-7c20da2025e4

Evergreen/staff_client/chrome/content/evergreen/patron/patron_display.js
Evergreen/staff_client/chrome/content/evergreen/patron/patron_edit.js
Evergreen/staff_client/chrome/content/evergreen/patron/patron_utils.js

index f4a9784..e275569 100755 (executable)
@@ -33,6 +33,7 @@ function patron_display_init(p) {
                p.redraw_patron_items();
                p.redraw_patron_holds();
                p.redraw_patron_bills();
+               p.redraw_patron_edit();
                return render_fm(p.w.document, { 'au' : p._patron });
        }
 
@@ -517,7 +518,7 @@ function patron_display_patron_edit_init(p) {
        p.redraw_patron_edit = function() {
                try {
                        p.patron_edit.clear_patron_edit();
-                       p.patron_edit.add_rows( patron_edit_rows() );
+                       p.patron_edit.add_rows( p._patron );
                } catch(E) {
                        sdump('D_ERROR',js2JSON(E) + '\n');
                }
index 2c54f20..148465c 100644 (file)
@@ -24,7 +24,7 @@ function patron_edit_list_box_init( p ) {
                },
                {
                        'id' : 'new_value', 'label' : getString('patron_edit_new_value'), 'flex' : 0, 
-                       'render_xul' : 'textbox'
+                       'fm_class' : 'row', 'fm_field_render' : 'create_entry_widget($$)'
                }
        ];
 
@@ -33,22 +33,21 @@ function patron_edit_list_box_init( p ) {
                p.list_box.clear_rows(); 
        };
 
-       p.add_rows = function (edit) {
-               sdump('D_PATRON_EDIT','p.add_row(' + edit + ')\n');
-               return patron_edit_add_rows(p,edit);
+       p.add_rows = function (au) {
+               sdump('D_PATRON_EDIT','p.add_row(' + au + ')\n');
+               return patron_edit_add_rows(p,au);
        }
-
-       p.add_rows( patron_edit_rows() );
 }
 
-function patron_edit_add_rows(p, edit) {
+function patron_edit_add_rows(p, au) {
        sdump('D_PATRON_EDIT',arg_dump(arguments,{1:true}));
 
-       var au = p._patron;
-
        var obj_string ='au';
 
+       var edit = patron_edit_rows();
+
        function evil_eval( hint, render_code ) {
+               sdump('D_PATRON_EDIT',arg_dump(arguments));
                var cmd = parse_render_string( hint, render_code );
                var col = '';
                sdump('D_PATRON_EDIT','evil_cmd = ' + cmd + '\n');
@@ -61,6 +60,54 @@ function patron_edit_add_rows(p, edit) {
                return col;
        }
 
+       function create_entry_widget(row) {
+               var obj;
+               try {
+                       sdump('D_PATRON_EDIT',arg_dump(arguments));
+                       if (row.rdefault) {
+                               row.rdefault = evil_eval( row.fm_class, row.rdefault );
+                       }
+                       if (row.entry_widget) {
+                               obj = p.w.document.createElement( row.entry_widget );
+                               obj.setAttribute('flex','1');
+                               if (row.entry_widget_attributes) {
+                                       for (var i in row.entry_widget_attributes) {
+                                               obj.setAttribute( i, row.entry_widget_attributes[i] );
+                                       }
+                               }
+                               switch(row.entry_widget) {
+                                       case 'menulist':
+                                               if (row.populate_with) {
+                                                       var menupopup = p.w.document.createElement('menupopup');
+                                                       obj.appendChild( menupopup );
+
+                                                       for (var i in row.populate_with) {
+
+                                                               var menuitem = p.w.document.createElement('menuitem');
+                                                               menupopup.appendChild( menuitem );
+                                                               menuitem.setAttribute('label', i );
+                                                               menuitem.setAttribute('value', row.populate_with[ i ] );
+                                                               if (row.rdefault) {
+                                                                       if ( (row.rdefault == i) || (row.rdefault == row.populate_with[ i ]) ) {
+                                                                               sdump('D_PATRON_EDIT','Selected ' + i + '\n');
+                                                                               menuitem.setAttribute('selected','true');
+                                                                       }
+                                                               }
+                                                       }
+                                               }
+                                               break;
+                                       default:
+                                               if (row.rdefault) obj.setAttribute('value', row.rdefault);
+                                               break;
+                               }
+                       }
+               } catch(E) {
+                       sdump('D_ERROR',E + '\n');
+                       obj = 'error';
+               }
+               return obj;
+       }
+
        setTimeout(
                function() {
 
@@ -95,14 +142,13 @@ function patron_edit_add_rows(p, edit) {
                                                if (typeof(col) == 'string') {
                                                        listcell.setAttribute('label',col);
                                                } else {
-                                                       listcell.appendChild( col );
+                                                       if (col==null) {
+                                                               listcell.setAttribute('label','');
+                                                       } else {
+                                                               listcell.appendChild( col );
+                                                       }
                                                }
                                        }
-                                       if (hash.render_xul) {
-                                               var xul = p.w.document.createElement( hash.render_xul );
-                                               listcell.appendChild( xul );
-                                               if (hash.render_xul == 'checkbox') xul.setAttribute('checked', 'true');
-                                       }
                                        cols.push( listcell );
                                }
 
index 23beee6..b7e6c14 100755 (executable)
@@ -343,140 +343,166 @@ function save_patron( au, f ) {
 function patron_edit_rows() {
        var rows = [
 {
-       'id' : 'active', 'label' : getString('au_active_label'), 'flex' : 1,
-       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.active()'
-},
-{
-       'id' : 'addresses', 'label' : getString('au_addresses_label'), 'flex' : 1,
-       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.addresses()'
+       'id' : 'create_date', 'label' : getString('au_create_date_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.create_date()',
+       'entry_widget' : 'textbox', 'entry_widget_attributes' : { 'readonly' : 'true' }, 'rdefault' : '.create_date()'
 },
 {
-       'id' : 'alert_message', 'label' : getString('au_alert_message_label'), 'flex' : 1,
-       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.alert_message()'
+       'id' : 'expire_date', 'label' : getString('au_expire_date_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.expire_date()',
+       'entry_widget' : 'textbox', 'rdefault' : '.expire_date()'
 },
 {
-       'id' : 'billing_address', 'label' : getString('au_billing_address_label'), 'flex' : 1,
-       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.billing_address()'
+       'id' : 'active', 'label' : getString('au_active_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : 'yesno($$.active())',
+       'entry_widget' : 'menulist', 'populate_with' : { 'Yes' : 1 , 'No' : 0 }, 'rdefault' : '.active()'
 },
 {
        'id' : 'card', 'label' : getString('au_card_label'), 'flex' : 1,
-       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.card()'
+       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.card().barcode()',
+       'entry_widget' : 'button', 'entry_widget_attributes' : { 'label' : 'New Card', 'oncommand' : 'alert("test");' }
 },
 {
-       'id' : 'cards', 'label' : getString('au_cards_label'), 'flex' : 1,
-       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.cards()'
-},
-{
-       'id' : 'create_date', 'label' : getString('au_create_date_label'), 'flex' : 1, 'readonly' : 'true',
-       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.create_date()'
-},
-{
-       'id' : 'day_phone', 'label' : getString('au_day_phone_label'), 'flex' : 1,
-       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.day_phone()'
+       'id' : 'alert_message', 'label' : getString('au_alert_message_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.alert_message()',
+       'entry_widget' : 'textbox', 'rdefault' : '.alert_message()'
 },
 {
-       'id' : 'dob', 'label' : getString('au_dob_label'), 'flex' : 1,
-       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.dob()'
+       'id' : 'ident_type', 'label' : getString('au_ident_type_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : 'mw.G.cit_hash[ $$.ident_type() ].name()',
+       'entry_widget' : 'menulist', 'populate_with' : map_object(mw.G.cit_hash,function(key,value){return [value.name(), key];}), 
+       'rdefault' : '.ident_type()'
 },
 {
-       'id' : 'email', 'label' : getString('au_email_label'), 'flex' : 1,
-       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.email()'
+       'id' : 'ident_value', 'label' : getString('au_ident_value_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.ident_value()',
+       'entry_widget' : 'textbox', 'rdefault' : '.ident_value()'
 },
 {
-       'id' : 'evening_phone', 'label' : getString('au_evening_phone_label'), 'flex' : 1,
-       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.evening_phone()'
+       'id' : 'ident_type2', 'label' : getString('au_ident_type2_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : 'mw.G.cit_hash[ $$.ident_type2() ].name()',
+       'entry_widget' : 'menulist', 'populate_with' : map_object(mw.G.cit_hash,function(key,value){return [value.name(), key];}), 
+       'rdefault' : '.ident_type2()'
 },
 {
-       'id' : 'expire_date', 'label' : getString('au_expire_date_label'), 'flex' : 1,
-       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.expire_date()'
+       'id' : 'ident_value2', 'label' : getString('au_ident_value2_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.ident_value2()',
+       'entry_widget' : 'textbox', 'rdefault' : '.ident_value2()'
 },
 {
        'id' : 'family_name', 'label' : getString('au_family_name_label'), 'flex' : 1,
-       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.family_name()'
+       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.family_name()',
+       'entry_widget' : 'textbox', 'rdefault' : '.family_name()'
 },
 {
        'id' : 'first_given_name', 'label' : getString('au_first_given_name_label'), 'flex' : 1,
-       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.first_given_name()'
+       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.first_given_name()',
+       'entry_widget' : 'textbox', 'rdefault' : '.first_given_name()'
 },
 {
-       'id' : 'home_ou', 'label' : getString('au_home_ou_label'), 'flex' : 1,
-       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.home_ou()'
+       'id' : 'second_given_name', 'label' : getString('au_second_given_name_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.second_given_name()',
+       'entry_widget' : 'textbox', 'rdefault' : '.second_given_name()'
 },
 {
-       'id' : 'ident_type', 'label' : getString('au_ident_type_label'), 'flex' : 1,
-       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.ident_type()'
+       'id' : 'prefix', 'label' : getString('au_prefix_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.prefix()',
+       'entry_widget' : 'menulist', 'entry_widget_attributes' : { 'editable' : 'true' },
+       'populate_with' : { 'Mr.' : 'Mr.' , 'Mrs.' : 'Mrs.' }, 'rdefault' : '.prefix()'
 },
 {
-       'id' : 'ident_type2', 'label' : getString('au_ident_type2_label'), 'flex' : 1,
-       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.ident_type2()'
+       'id' : 'suffix', 'label' : getString('au_suffix_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.suffix()',
+       'entry_widget' : 'menulist', 'entry_widget_attributes' : { 'editable' : 'true' },
+       'populate_with' : { 'Sr.' : 'Sr.' , 'Jr.' : 'Jr.' }, 'rdefault' : '.suffix()'
 },
 {
-       'id' : 'ident_value', 'label' : getString('au_ident_value_label'), 'flex' : 1,
-       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.ident_value()'
+       'id' : 'home_ou', 'label' : getString('au_home_ou_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : 'mw.G.org_tree_hash[ $$.home_ou() ].shortname()',
+       'entry_widget' : 'menulist', 'populate_with' : map_object(mw.G.org_tree_hash,function(key,value){return [value.shortname(), key];}),
+       'rdefault' : '.home_ou()'
 },
 {
-       'id' : 'ident_value2', 'label' : getString('au_ident_value2_label'), 'flex' : 1,
-       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.ident_value2()'
+       'id' : 'profile', 'label' : getString('au_profile_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : 'ap_hash[ $$.profile() ].name()',
+       'entry_widget' : 'menulist', 'populate_with' : map_object(mw.G.ap_hash,function(key,value){return [value.name(), key];}),
+       'rdefault' : '.profile()'
 },
 {
-       'id' : 'mailing_address', 'label' : getString('au_mailing_address_label'), 'flex' : 1,
-       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.mailing_address()'
+       'id' : 'addresses', 'label' : getString('au_addresses_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.addresses().length + " addresses"',
+       'entry_widget' : 'button', 'entry_widget_attributes' : { 'label' : 'Edit' }
 },
 {
-       'id' : 'master_account', 'label' : getString('au_master_account_label'), 'flex' : 1,
-       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.master_account()'
+       'id' : 'day_phone', 'label' : getString('au_day_phone_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.day_phone()',
+       'entry_widget' : 'textbox', 'rdefault' : '.day_phone()'
 },
 {
-       'id' : 'net_access_level', 'label' : getString('au_net_access_level_label'), 'flex' : 1,
-       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.net_access_level()'
+       'id' : 'evening_phone', 'label' : getString('au_evening_phone_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.evening_phone()',
+       'entry_widget' : 'textbox', 'rdefault' : '.evening_phone()'
 },
 {
        'id' : 'other_phone', 'label' : getString('au_other_phone_label'), 'flex' : 1,
-       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.other_phone()'
+       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.other_phone()',
+       'entry_widget' : 'textbox', 'rdefault' : '.other_phone()'
 },
 {
-       'id' : 'passwd', 'label' : getString('au_passwd_label'), 'flex' : 1,
-       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.passwd()'
+       'id' : 'email', 'label' : getString('au_email_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.email()',
+       'entry_widget' : 'textbox', 'rdefault' : '.email()'
 },
 {
-       'id' : 'photo_url', 'label' : getString('au_photo_url_label'), 'flex' : 1,
-       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.photo_url()'
+       'id' : 'dob', 'label' : getString('au_dob_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.dob()',
+       'entry_widget' : 'textbox', 'rdefault' : '.dob()'
 },
 {
-       'id' : 'prefix', 'label' : getString('au_prefix_label'), 'flex' : 1,
-       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.prefix()'
+       'id' : 'master_account', 'label' : getString('au_master_account_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.master_account()',
+       'entry_widget' : 'textbox', 'rdefault' : '.master_account()'
 },
 {
-       'id' : 'profile', 'label' : getString('au_profile_label'), 'flex' : 1,
-       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.profile()'
+       'id' : 'net_access_level', 'label' : getString('au_net_access_level_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.net_access_level()',
+       'entry_widget' : 'textbox', 'rdefault' : '.net_access_level()'
 },
 {
-       'id' : 'second_given_name', 'label' : getString('au_second_given_name_label'), 'flex' : 1,
-       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.second_given_name()'
+       'id' : 'passwd', 'label' : getString('au_passwd_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.passwd()',
+       'entry_widget' : 'textbox', 'rdefault' : '.passwd()'
 },
 {
-       'id' : 'standing', 'label' : getString('au_standing_label'), 'flex' : 1,
-       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.standing()'
+       'id' : 'photo_url', 'label' : getString('au_photo_url_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.photo_url()',
+       'entry_widget' : 'textbox', 'rdefault' : '.photo_url()'
 },
 {
-       'id' : 'stat_cat_entries', 'label' : getString('au_stat_cat_entries_label'), 'flex' : 1,
-       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.stat_cat_entries()'
+       'id' : 'standing', 'label' : getString('au_standing_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : 'mw.G.cst_hash[ $$.standing() ].value()',
+       'entry_widget' : 'menulist', 'populate_with' : map_object(mw.G.cst_hash,function(key,value){return [value.value(), key];}),
+       'rdefault' : '.standing()'
 },
 {
-       'id' : 'suffix', 'label' : getString('au_suffix_label'), 'flex' : 1,
-       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.suffix()'
+       'id' : 'stat_cat_entries', 'label' : getString('au_stat_cat_entries_label'), 'flex' : 1,
+       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.stat_cat_entries().length + " entries"',
+       'entry_widget' : 'button', 'entry_widget_attributes' : { 'label' : 'Edit' }
 },
 {
        'id' : 'survey_responses', 'label' : getString('au_survey_responses_label'), 'flex' : 1,
-       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.survey_responses()'
+       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.survey_responses().length + " responses"',
+       'entry_widget' : 'button', 'entry_widget_attributes' : { 'label' : 'Edit' }
 },
 {
        'id' : 'usrgroup', 'label' : getString('au_usrgroup_label'), 'flex' : 1,
-       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.usrgroup()'
+       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.usrgroup()',
+       'entry_widget' : 'textbox', 'rdefault' : '.usrgroup()'
 },
 {
        'id' : 'usrname', 'label' : getString('au_usrname_label'), 'flex' : 1,
-       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.usrname()'
+       'primary' : false, 'hidden' : false, 'fm_class' : 'au', 'fm_field_render' : '.usrname()',
+       'entry_widget' : 'textbox', 'rdefault' : '.usrname()'
 },
 ];