如何在D3中进行初始布局排序后重新排序?

时间:2014-04-16 23:05:31

标签: javascript sorting d3.js

我的初始布局如下:

var filteredPartition = d3.layout.partition().sort(function (a, b) { return d3.ascending(a.fileType, b.fileType); })
    .sort(function (a, b) { return d3.descending(a.dateAccessed, b.dateAccessed); })
    .value(function (d) { return d.size; })
    .children(function (d) { /*some code that only adds specific children*/ }

因此布局最初按fileType排序,然后按dateAccessed排序,只添加特定的子项。

然后我允许通过提供滚动来添加子项,因此我有一个更新函数,现在转换为新的布局(并且应用程序从此时开始使用此布局):

partition = d3.layout.partition().sort(function (a, b) { return d3.ascending(a.fileType, b.filetype); }).sort(function (a, b) { return d3.descending(a.name, b.name); })
              .children(function (d) { /* add in new children */ })
                .value(function (d) { return d.size; });

我想允许用户选择"排序"和"然后按"排序选项,但我有两个问题:

  1. 如果用户选择新的排序组合,我不想每次重新计算布局,因为我相信这会对性能产生影响 - 我将如何重新排序现有的&#34 ;分区"布局变量?
  2. 我发现,如果我尝试重新排序(通过排序为新的布局,因为我现在不知道该怎么做)它没有太大变化 - 是否存在干扰从默认排序?我应该将排序重置为null然后重新排序吗?
  3. 非常感谢!

0 个答案:

没有答案