d3.queue 没有给出输出

d3.queue is not giving an output

这是 page 我试图通过启用交叉过滤使其动态化。 所以问题是他们有多个 API.

对于前两个:TOTAL CASES & DAILY CASES 他们正在使用这个 API and the third one in the top is based on this API

后三个AGEGENDERNATIONALITY来自这个API

在所有 API 中,有一点很常见,那就是日期,但也有一些 API 在某些日期中缺少某些数据,例如存在间隙(某些日期不可用)日期)。

所以我想到根据日期组合所有 JSON API 然后允许交叉筛选,因为我相信我可以在它们之间启用交叉筛选。如果我错了,请纠正我。

就像如果我点击性别女性,因为它会提供有关患者为女性的总病例的信息,因此只有总病例中的确诊病例会发生变化,而恢复的病例和死亡病例不会发生变化,因为数据不可用。所以我想我应该将前 3 个图表和性别、年龄和国籍图表结合在一起。那么Dc js就可以很好的处理各个段之间的过滤(地标相关的案例,人物信息相关的案例)。

第 123 行:

var log = console.log; 

var q = queue()
    .defer(d3.json, "https://api.covid19india.org/data.json")
      .defer(d3.json, "https://api.rootnet.in/covid19-in/unofficial/covid19india.org/statewise/history");

    q.await(function(error, data1, data2) {
      log("==========>");
    log("data1:", error,data1);
    log("data2:", data2);
});

这不起作用,因为我看不到 console.log() 输出。

https://blockbuilder.org/ninjakx/8c48ab6481311aa0452046d66c4d8701

所以我的问题是:

1) 为什么 d3.queue 不起作用?

2) 由于数据有限,建议是否将所有数据组合在一起并允许进行过滤是个好主意。我应该在相同的 api 图表之间进行交叉过滤吗?所以在这种情况下,我将有 2 个部分(与地标相关的案例,与人员信息相关的案例).. 使用DC js我想让它更具交互性并显示更多信息。

d3.queue 已过时

你第一个问题的答案是干脆的:你不需要 d3.queue,在 d3@5 中是 deprecated and removed

从d3@5开始,D3的数据加载APIs使用ES6 Promises而不是异步回调,所以你可以使用Promise.all([...])而不是d3.queue。显然没有办法让新的 API 在以旧方式调用时发出错误,所以它只是默默地失败了。 :-/

编写代码的新方法是

Promise.all([
  d3.json("https://api.covid19india.org/data.json"),
  d3.json("https://api.rootnet.in/covid19-in/unofficial/covid19india.org/statewise/history")
]).then(([data1,data2]) => {
    log("==========>");
    log("data1:", data1);
    log("data2:", data2);
})
.catch(error => log('error', error))

我发现这更容易阅读和理解。一个很好的副作用是,如果您忽略了错误处理(像大多数人一样),您将自动在日志中得到一条明确的消息。

Working fork of your block.

合并多个数据集

你的第二个问题很开放,也许最好把它带到 dc.js users group?

一般来说,很难交叉过滤多个数据集。您将有多个一起重绘的图表组,并且您必须在某些图表上手动添加处理程序以启动、清除过滤器并重绘另一个图表组。

我还没有看到太多执行此操作的仪表板。您必须向用户说明发生了什么。