From bd545bef5249aa3b22e9bfd04308a35be262d655 Mon Sep 17 00:00:00 2001 From: pines Date: Sat, 30 Sep 2006 09:21:57 +0000 Subject: [PATCH] option for using one eval per row for lists git-svn-id: svn://svn.open-ils.org/ILS/trunk@6289 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../xul/staff_client/chrome/content/util/list.js | 68 +++++++++++------ .../staff_client/server/patron/search_result.js | 2 +- Open-ILS/xul/staff_client/server/patron/util.js | 87 ++++++++++++++-------- 3 files changed, 103 insertions(+), 54 deletions(-) diff --git a/Open-ILS/xul/staff_client/chrome/content/util/list.js b/Open-ILS/xul/staff_client/chrome/content/util/list.js index ef69cae34d..894eae90f4 100644 --- a/Open-ILS/xul/staff_client/chrome/content/util/list.js +++ b/Open-ILS/xul/staff_client/chrome/content/util/list.js @@ -30,6 +30,7 @@ util.list.prototype = { JSAN.use('util.widgets'); if (typeof params.map_row_to_column == 'function') obj.map_row_to_column = params.map_row_to_column; + if (typeof params.map_row_to_columns == 'function') obj.map_row_to_columns = params.map_row_to_columns; if (typeof params.retrieve_row == 'function') obj.retrieve_row = params.retrieve_row; obj.prebuilt = false; @@ -640,40 +641,61 @@ util.list.prototype = { var obj = this; var s = ''; util.widgets.remove_children(treerow); - for (var i = 0; i < this.columns.length; i++) { - var treecell = document.createElement('treecell'); - var label = ''; - if (params.skip_columns && (params.skip_columns.indexOf(i) != -1)) { - treecell.setAttribute('label',label); - treerow.appendChild( treecell ); - s += ('treecell = ' + treecell + ' with label = ' + label + '\n'); - continue; - } - if (params.skip_all_columns_except && (params.skip_all_columns_except.indexOf(i) == -1)) { + + if (typeof params.map_row_to_column == 'function' || typeof this.map_row_to_column == 'function') { + + for (var i = 0; i < this.columns.length; i++) { + var treecell = document.createElement('treecell'); + var label = ''; + if (params.skip_columns && (params.skip_columns.indexOf(i) != -1)) { + treecell.setAttribute('label',label); + treerow.appendChild( treecell ); + s += ('treecell = ' + treecell + ' with label = ' + label + '\n'); + continue; + } + if (params.skip_all_columns_except && (params.skip_all_columns_except.indexOf(i) == -1)) { + treecell.setAttribute('label',label); + treerow.appendChild( treecell ); + s += ('treecell = ' + treecell + ' with label = ' + label + '\n'); + continue; + } + + if (typeof params.map_row_to_column == 'function') { + + label = params.map_row_to_column(params.row,this.columns[i]); + + } else if (typeof this.map_row_to_column == 'function') { + + label = this.map_row_to_column(params.row,this.columns[i]); + + } treecell.setAttribute('label',label); treerow.appendChild( treecell ); s += ('treecell = ' + treecell + ' with label = ' + label + '\n'); - continue; } - if (typeof params.map_row_to_column == 'function') { + } else if (typeof params.map_row_to_columns == 'function' || typeof this.map_row_to_columns == 'function') { - label = params.map_row_to_column(params.row,this.columns[i]); + var labels = []; - } else { + if (typeof params.map_row_to_columns == 'function') { - if (typeof this.map_row_to_column == 'function') { + labels = params.map_row_to_columns(params.row,this.columns); - label = this.map_row_to_column(params.row,this.columns[i]); - - } else { + } else if (typeof this.map_row_to_columns == 'function') { - throw('No map_row_to_column function'); + labels = this.map_row_to_columns(params.row,this.columns); - } } - treecell.setAttribute('label',label); - treerow.appendChild( treecell ); - s += ('treecell = ' + treecell + ' with label = ' + label + '\n'); + for (var i = 0; i < labels.length; i++) { + var treecell = document.createElement('treecell'); + treecell.setAttribute('label',labels[i]); + treerow.appendChild( treecell ); + s += ('treecell = ' + treecell + ' with label = ' + labels[i] + '\n'); + } + + } else { + + throw('No row to column mapping function.'); } this.error.sdump('D_LIST',s); }, diff --git a/Open-ILS/xul/staff_client/server/patron/search_result.js b/Open-ILS/xul/staff_client/server/patron/search_result.js index bf78f52341..ed18d86b0a 100644 --- a/Open-ILS/xul/staff_client/server/patron/search_result.js +++ b/Open-ILS/xul/staff_client/server/patron/search_result.js @@ -43,7 +43,7 @@ patron.search_result.prototype = { obj.list.init( { 'columns' : columns, - 'map_row_to_column' : patron.util.std_map_row_to_column(), + 'map_row_to_columns' : patron.util.std_map_row_to_columns(), 'retrieve_row' : function(params) { var id = params.retrieve_id; var au_obj = patron.util.retrieve_au_via_id( ses(), id, diff --git a/Open-ILS/xul/staff_client/server/patron/util.js b/Open-ILS/xul/staff_client/server/patron/util.js index 8b9ba9162c..b73e1da3af 100644 --- a/Open-ILS/xul/staff_client/server/patron/util.js +++ b/Open-ILS/xul/staff_client/server/patron/util.js @@ -4,7 +4,8 @@ if (typeof patron == 'undefined') var patron = {}; patron.util = {}; patron.util.EXPORT_OK = [ - 'columns', 'mbts_columns', 'mb_columns', 'mp_columns', 'std_map_row_to_column', 'retrieve_au_via_id', 'retrieve_fleshed_au_via_id', 'retrieve_fleshed_au_via_barcode', 'set_penalty_css', 'retrieve_name_via_id' + 'columns', 'mbts_columns', 'mb_columns', 'mp_columns', 'std_map_row_to_column', 'std_map_row_to_columns', + 'retrieve_au_via_id', 'retrieve_fleshed_au_via_id', 'retrieve_fleshed_au_via_barcode', 'set_penalty_css', 'retrieve_name_via_id' ]; patron.util.EXPORT_TAGS = { ':all' : patron.util.EXPORT_OK }; @@ -265,121 +266,121 @@ patron.util.columns = function(modify,params) { var c = [ { 'persist' : 'hidden width ordinal', 'id' : 'barcode', 'label' : 'Barcode', 'flex' : 1, - 'primary' : false, 'hidden' : true, 'render' : 'my.au.card().barcode()' + 'primary' : false, 'hidden' : true, 'render' : 'v = my.au.card().barcode(); v;' }, { 'persist' : 'hidden width ordinal', 'id' : 'usrname', 'label' : 'Login Name', 'flex' : 1, - 'primary' : false, 'hidden' : true, 'render' : 'my.au.usrname()' + 'primary' : false, 'hidden' : true, 'render' : 'v = my.au.usrname(); v;' }, { 'persist' : 'hidden width ordinal', 'id' : 'profile', 'label' : 'Group', 'flex' : 1, - 'primary' : false, 'hidden' : true, 'render' : 'obj.OpenILS.data.hash.pgt[ my.au.profile() ].name()' + 'primary' : false, 'hidden' : true, 'render' : 'v = obj.OpenILS.data.hash.pgt[ my.au.profile() ].name(); v;' }, { 'persist' : 'hidden width ordinal', 'id' : 'active', 'label' : getString('staff.au_label_active'), 'flex' : 1, - 'primary' : false, 'hidden' : true, 'render' : 'get_bool( my.au.active() ) ? "Yes" : "No"' + 'primary' : false, 'hidden' : true, 'render' : 'v = get_bool( my.au.active() ) ? "Yes" : "No"; v;' }, { 'persist' : 'hidden width ordinal', 'id' : 'barred', 'label' : 'Barred', 'flex' : 1, - 'primary' : false, 'hidden' : true, 'render' : 'get_bool( my.au.barred() ) ? "Yes" : "No"' + 'primary' : false, 'hidden' : true, 'render' : 'v = get_bool( my.au.barred() ) ? "Yes" : "No"; v;' }, { 'persist' : 'hidden width ordinal', 'id' : 'id', 'label' : getString('staff.au_label_id'), 'flex' : 1, - 'primary' : false, 'hidden' : true, 'render' : 'my.au.id()' + 'primary' : false, 'hidden' : true, 'render' : 'v = my.au.id(); v;' }, { 'persist' : 'hidden width ordinal', 'id' : 'prefix', 'label' : getString('staff.au_label_prefix'), 'flex' : 1, - 'primary' : false, 'hidden' : true, 'render' : 'my.au.prefix()' + 'primary' : false, 'hidden' : true, 'render' : 'v = my.au.prefix(); v;' }, { 'persist' : 'hidden width ordinal', 'id' : 'family_name', 'label' : getString('staff.au_label_family_name'), 'flex' : 1, - 'primary' : false, 'hidden' : true, 'render' : 'my.au.family_name()' + 'primary' : false, 'hidden' : true, 'render' : 'v = my.au.family_name(); v;' }, { 'persist' : 'hidden width ordinal', 'id' : 'first_given_name', 'label' : getString('staff.au_label_first_given_name'), 'flex' : 1, - 'primary' : false, 'hidden' : true, 'render' : 'my.au.first_given_name()' + 'primary' : false, 'hidden' : true, 'render' : 'v = my.au.first_given_name(); v;' }, { 'persist' : 'hidden width ordinal', 'id' : 'second_given_name', 'label' : getString('staff.au_label_second_given_name'), 'flex' : 1, - 'primary' : false, 'hidden' : true, 'render' : 'my.au.second_given_name()' + 'primary' : false, 'hidden' : true, 'render' : 'v = my.au.second_given_name(); v;' }, { 'persist' : 'hidden width ordinal', 'id' : 'suffix', 'label' : getString('staff.au_label_suffix'), 'flex' : 1, - 'primary' : false, 'hidden' : true, 'render' : 'my.au.suffix()' + 'primary' : false, 'hidden' : true, 'render' : 'v = my.au.suffix(); v;' }, { 'persist' : 'hidden width ordinal', 'id' : 'alert_message', 'label' : 'Alert', 'flex' : 1, - 'primary' : false, 'hidden' : true, 'render' : 'my.au.alert_message()' + 'primary' : false, 'hidden' : true, 'render' : 'v = my.au.alert_message(); v;' }, { 'persist' : 'hidden width ordinal', 'id' : 'claims_returned_count', 'label' : 'Returns Claimed', 'flex' : 1, - 'primary' : false, 'hidden' : true, 'render' : 'my.au.claims_returned_count()', + 'primary' : false, 'hidden' : true, 'render' : 'v = my.au.claims_returned_count(); v;', 'sort_type' : 'number', }, { 'persist' : 'hidden width ordinal', 'id' : 'create_date', 'label' : 'Created On', 'flex' : 1, - 'primary' : false, 'hidden' : true, 'render' : 'my.au.create_date()' + 'primary' : false, 'hidden' : true, 'render' : 'v = my.au.create_date(); v;' }, { 'persist' : 'hidden width ordinal', 'id' : 'expire_date', 'label' : 'Expires On', 'flex' : 1, - 'primary' : false, 'hidden' : true, 'render' : 'my.au.expire_date().substr(0,10)' + 'primary' : false, 'hidden' : true, 'render' : 'v = my.au.expire_date().substr(0,10); v;' }, { 'persist' : 'hidden width ordinal', 'id' : 'home_ou', 'label' : 'Home Lib', 'flex' : 1, - 'primary' : false, 'hidden' : true, 'render' : 'obj.OpenILS.data.hash.aou[ my.au.home_ou() ].shortname()' + 'primary' : false, 'hidden' : true, 'render' : 'v = obj.OpenILS.data.hash.aou[ my.au.home_ou() ].shortname(); v;' }, { 'persist' : 'hidden width ordinal', 'id' : 'credit_forward_balance', 'label' : 'Credit', 'flex' : 1, - 'primary' : false, 'hidden' : true, 'render' : 'my.au.credit_forward_balance()', + 'primary' : false, 'hidden' : true, 'render' : 'v = my.au.credit_forward_balance(); v;', 'sort_type' : 'money', }, { 'persist' : 'hidden width ordinal', 'id' : 'day_phone', 'label' : 'Day Phone', 'flex' : 1, - 'primary' : false, 'hidden' : true, 'render' : 'my.au.day_phone()' + 'primary' : false, 'hidden' : true, 'render' : 'v = my.au.day_phone(); v;' }, { 'persist' : 'hidden width ordinal', 'id' : 'evening_phone', 'label' : 'Evening Phone', 'flex' : 1, - 'primary' : false, 'hidden' : true, 'render' : 'my.au.evening_phone()' + 'primary' : false, 'hidden' : true, 'render' : 'v = my.au.evening_phone(); v;' }, { 'persist' : 'hidden width ordinal', 'id' : 'other_phone', 'label' : 'Other Phone', 'flex' : 1, - 'primary' : false, 'hidden' : true, 'render' : 'my.au.other_phone()' + 'primary' : false, 'hidden' : true, 'render' : 'v = my.au.other_phone(); v;' }, { 'persist' : 'hidden width ordinal', 'id' : 'email', 'label' : 'Email', 'flex' : 1, - 'primary' : false, 'hidden' : true, 'render' : 'my.au.email()' + 'primary' : false, 'hidden' : true, 'render' : 'v = my.au.email(); v;' }, { 'persist' : 'hidden width ordinal', 'id' : 'dob', 'label' : 'Birth Date', 'flex' : 1, - 'primary' : false, 'hidden' : true, 'render' : 'my.au.dob().substr(0,10)' + 'primary' : false, 'hidden' : true, 'render' : 'v = my.au.dob().substr(0,10); v;' }, { 'persist' : 'hidden width ordinal', 'id' : 'ident_type', 'label' : 'Ident Type', 'flex' : 1, - 'primary' : false, 'hidden' : true, 'render' : 'obj.OpenILS.data.hash.cit[ my.au.ident_type() ].name()' + 'primary' : false, 'hidden' : true, 'render' : 'v = obj.OpenILS.data.hash.cit[ my.au.ident_type() ].name(); v;' }, { 'persist' : 'hidden width ordinal', 'id' : 'ident_value', 'label' : 'Ident Value', 'flex' : 1, - 'primary' : false, 'hidden' : true, 'render' : 'my.au.ident_value()' + 'primary' : false, 'hidden' : true, 'render' : 'v = my.au.ident_value(); v;' }, { 'persist' : 'hidden width ordinal', 'id' : 'ident_type2', 'label' : 'Ident Type 2', 'flex' : 1, - 'primary' : false, 'hidden' : true, 'render' : 'obj.OpenILS.data.hash.cit[ my.au.ident_type2() ].name()' + 'primary' : false, 'hidden' : true, 'render' : 'v = obj.OpenILS.data.hash.cit[ my.au.ident_type2() ].name(); v;' }, { 'persist' : 'hidden width ordinal', 'id' : 'ident_value2', 'label' : 'Ident Value 2', 'flex' : 1, - 'primary' : false, 'hidden' : true, 'render' : 'my.au.ident_value2()' + 'primary' : false, 'hidden' : true, 'render' : 'v = my.au.ident_value2(); v;' }, { 'persist' : 'hidden width ordinal', 'id' : 'net_access_level', 'label' : 'Net Access', 'flex' : 1, - 'primary' : false, 'hidden' : true, 'render' : 'my.au.net_access_level()' + 'primary' : false, 'hidden' : true, 'render' : 'v = my.au.net_access_level(); v;' }, { 'persist' : 'hidden width ordinal', 'id' : 'master_account', 'label' : 'Group Lead', 'flex' : 1, - 'primary' : false, 'hidden' : true, 'render' : 'get_bool( my.au.master_account() ) ? "Yes" : "No"' + 'primary' : false, 'hidden' : true, 'render' : 'v = get_bool( my.au.master_account() ) ? "Yes" : "No"; v;' }, { 'persist' : 'hidden width ordinal', 'id' : 'usrgroup', 'label' : 'Group ID', 'flex' : 1, - 'primary' : false, 'hidden' : true, 'render' : 'my.au.usrgroup()' + 'primary' : false, 'hidden' : true, 'render' : 'v = my.au.usrgroup(); v;' }, ]; for (var i = 0; i < c.length; i++) { @@ -435,6 +436,32 @@ patron.util.std_map_row_to_column = function(error_value) { } } +patron.util.std_map_row_to_columns = function(error_value) { + return function(row,cols) { + // row contains { 'my' : { 'au' : {} } } + // cols contains all of the objects listed above in columns + + var obj = {}; obj.OpenILS = {}; + JSAN.use('util.error'); obj.error = new util.error(); + JSAN.use('OpenILS.data'); obj.OpenILS.data = new OpenILS.data(); obj.OpenILS.data.init({'via':'stash'}); + JSAN.use('util.date'); JSAN.use('util.money'); + + var my = row.my; + var values = []; + var cmd = ''; + try { + for (var i = 0; i < cols.length; i++) { + cmd += cols[i].render + '; values['+i+'] = v; '; + } + eval( cmd ); + } catch(E) { + obj.error.sdump('D_WARN','map_row_to_column: ' + E); + if (error_value) { value = error_value; } else { value = ' ' }; + } + return values; + } +} + patron.util.retrieve_au_via_id = function(session, id, f) { JSAN.use('util.network'); var network = new util.network(); -- 2.11.0