From ca161469259582e86544dcb4c176b9d8dca47a3c Mon Sep 17 00:00:00 2001 From: Jason Etheridge Date: Tue, 31 May 2011 15:45:25 -0400 Subject: [PATCH] Let fm_columns use cached data.hash objects for linked fields Signed-off-by: Jason Etheridge Signed-off-by: Dan Scott --- .../staff_client/chrome/content/util/list.js | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) 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 1edabecea3..a125c4d79c 100644 --- a/Open-ILS/xul/staff_client/chrome/content/util/list.js +++ b/Open-ILS/xul/staff_client/chrome/content/util/list.js @@ -1716,6 +1716,7 @@ util.list.prototype = { var col_id = prefix + hint + '_' + my_field.name; var dataobj = hint; var datafield = my_field.name; + var fleshed_display_field; if (column_extras) { if (column_extras['*']) { if (column_extras['*']['dataobj']) { @@ -1729,6 +1730,9 @@ util.list.prototype = { if (column_extras[col_id]['datafield']) { datafield = column_extras[col_id]['datafield']; } + if (column_extras[col_id]['fleshed_display_field']) { + fleshed_display_field = column_extras[col_id]['fleshed_display_field']; + } } } var def = { @@ -1743,7 +1747,24 @@ util.list.prototype = { // my_field.datatype => bool float id int interval link money number org_unit text timestamp if (my_field.datatype == 'link') { def.render = function(my) { - return typeof my[dataobj][datafield]() == 'object' ? my[dataobj][datafield]()[my_field.key]() : my[dataobj][datafield](); + // is the object fleshed? + return my[dataobj][datafield]() && typeof my[dataobj][datafield]() == 'object' + // yes, show the display field + ? my[dataobj][datafield]()[fleshed_display_field||my_field.key]() + // no, do we have its class in data.hash? + : ( typeof data.hash[ my[dataobj].Structure.field_map[datafield].class ] != 'undefined' + // yes, do we have this particular object cached? + ? ( data.hash[ my[dataobj].Structure.field_map[datafield].class ][ my[dataobj][datafield]() ] + // yes, show the display field + ? data.hash[ my[dataobj].Structure.field_map[datafield].class ][ my[dataobj][datafield]() ][ + fleshed_display_field||my_field.key + ]() + // no, just show the raw value + : my[dataobj][datafield]() + ) + // no, just show the raw value + : my[dataobj][datafield]() + ); } } else { def.render = function(my) { return my[dataobj][datafield](); } -- 2.43.2