From 2ec3d39ac89b4bcf9416c25451a92adebf1e7cf8 Mon Sep 17 00:00:00 2001 From: phasefx Date: Fri, 22 Jul 2005 01:08:10 +0000 Subject: [PATCH] patron edit interface. widgets, but no behavior yet git-svn-id: svn://svn.open-ils.org/ILS/trunk@1355 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../content/evergreen/patron/patron_display.js | 3 +- .../chrome/content/evergreen/patron/patron_edit.js | 76 ++++++++-- .../content/evergreen/patron/patron_utils.js | 160 ++++++++++++--------- 3 files changed, 156 insertions(+), 83 deletions(-) diff --git a/Evergreen/staff_client/chrome/content/evergreen/patron/patron_display.js b/Evergreen/staff_client/chrome/content/evergreen/patron/patron_display.js index f4a9784a8f..e27556977d 100755 --- a/Evergreen/staff_client/chrome/content/evergreen/patron/patron_display.js +++ b/Evergreen/staff_client/chrome/content/evergreen/patron/patron_display.js @@ -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'); } diff --git a/Evergreen/staff_client/chrome/content/evergreen/patron/patron_edit.js b/Evergreen/staff_client/chrome/content/evergreen/patron/patron_edit.js index 2c54f20bd1..148465c2c4 100644 --- a/Evergreen/staff_client/chrome/content/evergreen/patron/patron_edit.js +++ b/Evergreen/staff_client/chrome/content/evergreen/patron/patron_edit.js @@ -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 ); } diff --git a/Evergreen/staff_client/chrome/content/evergreen/patron/patron_utils.js b/Evergreen/staff_client/chrome/content/evergreen/patron/patron_utils.js index 23beee66a1..b7e6c14350 100755 --- a/Evergreen/staff_client/chrome/content/evergreen/patron/patron_utils.js +++ b/Evergreen/staff_client/chrome/content/evergreen/patron/patron_utils.js @@ -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()' }, ]; -- 2.11.0