From: Lebbeous Fogle-Weekley Date: Wed, 2 May 2012 18:01:00 +0000 (-0400) Subject: Fix date sorting in patron-related XUL interfaces X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=c4bfb05af96266a580974c375a4b78045bf1064f;p=evergreen%2Ftadl.git Fix date sorting in patron-related XUL interfaces Null time stamps are now converted to dates in the Middle Paleolithic era so they always sort as the lowest date. Seriously, this is the minimum possible date you can express with a JavaScript date object. Signed-off-by: Lebbeous Fogle-Weekley Signed-off-by: Jason Etheridge --- diff --git a/Open-ILS/xul/staff_client/chrome/content/util/date.js b/Open-ILS/xul/staff_client/chrome/content/util/date.js index cf176271b9..fb95bee5a9 100644 --- a/Open-ILS/xul/staff_client/chrome/content/util/date.js +++ b/Open-ILS/xul/staff_client/chrome/content/util/date.js @@ -46,8 +46,10 @@ util.date.timer_elapsed = function (id) { } util.date.db_date2Date = function (db_date) { - if (!db_date) { return db_date; } - if (typeof window.dojo != 'undefined') { + if (!db_date) { /* we get stringified null at times */ + return new Date(-8640000000000000); /* minimum possible date. + max is this * -1. */ + } else if (typeof window.dojo != 'undefined') { dojo.require('dojo.date.stamp'); return dojo.date.stamp.fromISOString( db_date.replace( /^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[\+-]\d{2})(\d{2})$/, '$1:$2') ); } else { diff --git a/Open-ILS/xul/staff_client/server/patron/util.js b/Open-ILS/xul/staff_client/server/patron/util.js index 19aab0fdf4..30dfa58a69 100644 --- a/Open-ILS/xul/staff_client/server/patron/util.js +++ b/Open-ILS/xul/staff_client/server/patron/util.js @@ -570,6 +570,7 @@ patron.util.std_map_row_to_columns = function(error_value) { var my = row.my; var values = []; + var sort_values = []; var cmd = ''; try { for (var i = 0; i < cols.length; i++) { @@ -578,13 +579,28 @@ patron.util.std_map_row_to_columns = function(error_value) { case 'string' : cmd += 'try { ' + cols[i].render + '; values['+i+'] = v; } catch(E) { values['+i+'] = error_value; }'; break; default: cmd += 'values['+i+'] = "??? '+(typeof cols[i].render)+'"; '; } + switch (typeof cols[i].sort_value) { + case 'function': + try { + sort_values[i] = cols[i].sort_value(my,scratch); + } catch(E) { + sort_values[i] = error_value; + obj.error.sdump('D_COLUMN_RENDER_ERROR',E); + } + break; + case 'string' : + sort_values[i] = JSON2js(cols[i].sort_value); + break; + default: + cmd += 'sort_values['+i+'] = values[' + i + '];'; + } } if (cmd) eval( cmd ); } catch(E) { obj.error.sdump('D_WARN','map_row_to_column: ' + E); if (error_value) { value = error_value; } else { value = ' ' }; } - return values; + return {values: values, sort_values: sort_values}; } }