From: Jason Etheridge <jason@esilibrary.com> Date: Tue, 31 May 2011 19:45:25 +0000 (-0400) Subject: Let fm_columns use cached data.hash objects for linked fields X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=ca161469259582e86544dcb4c176b9d8dca47a3c;p=evergreen%2Fmasslnc.git Let fm_columns use cached data.hash objects for linked fields Signed-off-by: Jason Etheridge <jason@esilibrary.com> Signed-off-by: Dan Scott <dan@coffeecode.net> --- 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](); }