crossfilter - 按列重新排序数据表

标签 crossfilter dc.js

我想知道是否有任何已知的方法可以有效地将“重新排序”功能添加到我在 dc.js 中的数据表中。如果我的用户在使用图表完成选择后,可以决定根据哪一列对过滤后的行进行排序(例如,通过单击列标题),那就太好了。

任何想法从哪里开始?

非常感谢

最佳答案

这是另一种仅使用标准 jQuery 和 dc.js 的表格排序方法

使用列标题定义表格 html。

<table id="data-table">
  <thead>
    <th class="data-table-col" data-col="a">Field A</th>
    <th class="data-table-col" data-col="b">Field B</th>
    <th class="data-table-col" data-col="c">Field C</th>
  </thead>
</table>

设置 DC.js 数据表。唯一重要的是列配置。使用不动态创建 header 的格式
var dataDim = xf.dimension(function(d) {return d.a;});
var dataTable = dc.dataTable("#data-table")
  .columns([
    function(d) {
      return d.a;
    },
    function(d) {
      return d.b;
    },
    function(d) {
      return d.c;
    }
  ]);

然后,只需将单击事件处理程序附加到列标题并使用 DC.js 对表格进行排序。编辑 - 您还必须更改维度,以便 sortBy 对所有数据进行排序,而不仅仅是显示的数据
$('#data-table').on('click', '.data-table-col', function() {
  var column = $(this).attr("data-col");
  dataDim.dispose();
  dataDim = xf.dimension(function(d) {return d[column];});
  dataTable.dimension(dataDim)
  dataTable.sortBy(function(d) {
    return d[column];
  });
  dataTable.redraw();
});

关于crossfilter - 按列重新排序数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21113513/

相关文章:

javascript - Crossfilter/dc.js 中的假组过滤

javascript - 如何在 DC.js 中将画笔选择四舍五入为 10 或 10k

d3.js - 如何在呈现图表后为 dc.js 图表应用工具提示

d3.js - 如何在 dc.js 饼图切片中添加图标而不是文本

dc.js - 从同一列的数据组创建多个图表

javascript - 是否可以将 html 代码添加到 dc js 中的工具提示中?

javascript - 使用 crossfilter,是否可以在实例化后销毁/删除它?

javascript - 如何减少 Crossfilter 组函数创建的存储桶数量?

javascript - 堆积条形图 : By Type and Quantity

javascript - Crossfilter (d3js/dcjs) 获取组内组大小