Crossfilter / dc.table 按时间戳排序

Crossfilter / dc.table sorting by Timestamp

我想按时间戳降序对我的 table 进行排序,但在这个字段中我的测试用例是升序的。

我怎样做相反的事情? 我希望我能解释我的问题。

  //------------------------table------------------------------------
    var TestCaseDim2 = perfData.dimension(function (d) {
        return d.TestCase;
    });
  
    dc.dataTable('#data-table')
    .dimension(TestCaseDim2)
        .group(function (d) {
            return d.Timestamp.bold().fontcolor("darkblue");
        })
    .columns([

        function (d) { return d.SerialNumber;},  
        function (d) { return d.Result;},
        ])
        .width(get2ndWindowSize())
        .order(d3.descending )
        .size(700)
        .renderlet(function (table) {
        table.selectAll('.dc-table-group').classed('info', true);
        });

希望有人能帮助我。

在您的 JSFiddle 示例中,我相信但不确定在您的组中您的测试脚本是按测试用例排序的,因为这是您在数据上使用的维度 table。

真正的问题是,在 dc.js 数据 table 中,您无法分别控制组的顺序和组内的顺序。组内的排序基于维度返回的顺序,组的顺序由组的文本确定。两者都是升序或降序,具体取决于您在 dataTable.order.

中的设置

那么,我们该怎么办?我建议在要在组内排序的 属性 上定义维度,然后如有必要,通过翻转维度上的 top/bottom 函数来反转维度排序的方向:

var perfData = crossfilter(data);
var testScriptDim = perfData.dimension(function (d) {
  return d.testscript;
});
testScriptDim.top = testScriptDim.bottom;

dc.dataTable('#data-table')
  .dimension(testScriptDim)
    .group(function (d) {
      return d.date.bold().fontcolor("darkblue");
    })
    .columns([
      function (d) { return d.testscript; },
      function (d) { return d.duration; },
      function (d) { return d.clickcount; }
    ])
    .size(100) 
    .order(d3.descending)
    .renderlet(function (table) {
      table.selectAll('.dc-table-group').classed('info', true);
    });

这是您的 JSFiddle 的更新版本,我认为它可以满足您的需求:https://jsfiddle.net/esjewett/xzrp0ggv/1/