Argh. Fix date comparisons again.
Comparing them by their default toString() is no good, because that compares
months in alphabetical order. Use our own dateToString() instead.
diff --git a/render.js b/render.js
index 1f920fd..8cd2f7d 100644
--- a/render.js
+++ b/render.js
@@ -921,21 +921,25 @@
var wantvals = [];
for (var valuei in values) {
if (ingrid.types[keycol] === T_NUM) {
- wantvals.push(parseFloat(values[valuei]).toString());
+ wantvals.push(parseFloat(values[valuei]));
} else if (ingrid.types[keycol] === T_DATE ||
ingrid.types[keycol] === T_DATETIME) {
- wantvals.push(myParseDate(values[valuei]).toString());
+ wantvals.push(dateTimeToStr(myParseDate(values[valuei])));
} else {
- wantvals.push(values[valuei].toString());
+ wantvals.push(values[valuei]);
}
}
for (var rowi in ingrid.data) {
var row = ingrid.data[rowi];
- var cell = row[keycol].toString();
+ var cell = row[keycol];
if (cell == undefined) {
cell = null;
}
+ var keytype = ingrid.types[keycol];
+ if (keytype == T_DATE || keytype == T_DATETIME) {
+ cell = dateTimeToStr(cell);
+ }
var found = 0;
for (var valuei in wantvals) {
if (op == '=' && cell == wantvals[valuei]) {
diff --git a/t/trender.js b/t/trender.js
index 214fca7..6c51da7 100644
--- a/t/trender.js
+++ b/t/trender.js
@@ -265,17 +265,20 @@
var rawdata = [
['a', 'b', 'c'],
['2013/01/02', '2', 3],
- ['1977/11/14', '3.5', 1]
+ ['2013/04/14', '3.5', 1]
];
afterquery.exec('filter=b=2', rawdata, function(grid) {
WVPASSEQ(grid.data, [[new Date(2013,0,2), 2, 3]]);
});
- afterquery.exec('filter=a=1977-11-14', rawdata, function(grid) {
- WVPASSEQ(grid.data, [[new Date(1977,10,14), 3.5, 1]]);
+ afterquery.exec('filter=a=2013-4-14', rawdata, function(grid) {
+ WVPASSEQ(grid.data, [[new Date(2013,3,14), 3.5, 1]]);
});
- afterquery.exec('filter=a>1977-11-14', rawdata, function(grid) {
+ afterquery.exec('filter=a<2013-04-14', rawdata, function(grid) {
WVPASSEQ(grid.data, [[new Date(2013,0,2), 2, 3]]);
});
+ afterquery.exec('filter=a>2013-01-02', rawdata, function(grid) {
+ WVPASSEQ(grid.data, [[new Date(2013,3,14), 3.5, 1]]);
+ });
});
wvtest('group', function() {