Я использую базовый DataTable dc.js с данными CrossFilter и пытаюсь сортировать его через атрибут Value, который является числом, но я получаю нечетное упорядочение данных.Crossfilter + dc.js DataTable не сортируется правильно
Вот является JSFiddle показывая вопрос - http://jsfiddle.net/DonalRafferty83/97mwyp0u/4/
Я настроил мои размеры CrossFilter следующим образом:
var ndx = crossfilter(data);
var parseDate = d3.time.format("%d/%m/%Y").parse;
data.forEach(function(d) {
d.date = parseDate(d.InDate);
d.Value = parseFloat(d.Value).toFixed(2);
});
var dateDim = ndx.dimension(function(d) {return d.date;});
var typeDim = ndx.dimension(function(d) {return d.Type;});
А потом я создаю DataTable следующим образом:
var datatable = dc.dataTable("#dc-data-table");
datatable
.dimension(dateDim)
.group(function(d) {return "";})
.size(data.length)
// dynamic columns creation using an array of closures
.columns([
function(d) { return d.Id; },
function(d) {return d.Indate;},
function(d) {return d.Type;},
function(d) {return d.Category;},
function(d) {return d.Value;}
]).sortBy(function(d) {
return d.Value;
})
.order(d3.descending);
Здесь как вы можете заказать заказ, так как вы можете заказать до 4000.46, что неверно:
Это известная проблема с CrossDilter/dc.js? Или что-то я делаю неправильно? Может быть, мне нужно манипулировать моими данными, чтобы они работали правильно?
Благодаря Этан, шокирует, что я пропустил это! Он работает, однако, в моем реальном наборе данных, который содержит более 100 тыс. Записей, большое значение подкрадывается вверху таблицы, например, 1.9 появляется в верхней части таблицы, а затем значение сортируется правильно, поэтому его значение равно 1.9, затем 4000 3904 и т. Д., Я не могу воспроизвести его поддельными данными, поэтому его длинный снимок, но просто интересно, могли бы вы увидеть что-то подобное раньше и знать об исправлении? –
У вас когда-либо было значение null/undefined в вашем измерении даты? Это похоже на то, что может произойти, когда значение размера перекрестного фильтра естественно не упорядочено. –
Спасибо, я просмотрю данные, чтобы увидеть, есть ли что-то в этом месте –