numberDisplay - 按最大键过滤
numberDisplay - filter by max key
我有一个 dc.js 仪表板,其中包含按月/期间分组的历史人数、疾病等信息。仪表板的用户希望在顶部的数字显示中看到最近一个月的数据(例如人数、患病率等)。
我的数据:
var data= [
{ "Month": "01/02/2014","Period": 201402,"Heads": 15123,"SchedHours":146000,"Sickness": 0,},
{ "Month": "01/03/2014","Period": 201403,"Heads": 15100,"SchedHours": 146000,"Sickness": 0,},
{ "Month": "01/04/2014","Period": 201404,"Heads": 14900,"SchedHours": 146000,"Sickness": 0,},
{ "Month": "01/05/2014","Period": 201405,"Heads": 14800,"SchedHours": 146000,"Sickness": 0,},
{ "Month": "01/06/2014","Period": 201406,"Heads": 14750,"SchedHours": 146000,"Sickness": 0,},
{ "Month": "01/07/2014","Period": 201407,"Heads": 14720,"SchedHours": 146000,"Sickness": 0,},
{ "Month": "01/08/2014","Period": 201408,"Heads": 14000,"SchedHours": 146000,"Sickness": 0,},
{ "Month": "01/09/2014","Period": 201409,"Heads": 13750,"SchedHours": 146000,"Sickness": 0,},
{ "Month": "01/10/2014","Period": 201410,"Heads": 13500,"SchedHours": 146000,"Sickness": 0,},
{ "Month": "01/11/2014","Period": 201411,"Heads": 13200,"SchedHours": 146000,"Sickness": 0,},
....]
当仪表板首次使用变量加载时,我可以弄清楚默认情况下如何执行此操作:
maxPeriod = dimPeriod.top(1)[0].Period;
但我正在努力弄清楚如何更新上面的变量以更新 numberDisplay 以始终对其进行过滤以按最大周期或月份显示头像。
我目前正在使用 Gordon 在另一个问题中提供的函数显示最新的 "Heads" 数量:
function choose_bin(group, key) {
return {
value: function() {
return group.all().filter(kv => kv.key === key)[0].value;
}
}
}
那我的群是:
var latestMonth = choose_bin(groupHeads3, maxPeriod);
和数字显示:
numberChart
.group(latestMonth)
.valueAccessor(x => (x))
.formatNumber(d3.format(".0f"));
我有一个显示问题的基本 jsfiddle(应用过滤器后,值为 0):https://jsfiddle.net/kevinelphick/mzpoe555/2/
我的目标是根据折线图中过滤的最高周期更新正面值。我还希望包括最高周期值之前的月份,并提供两者的比较以显示趋势。
提前谢谢你。
你只是在运行时没有计算足够的东西。每次查询该组时,您都需要计算 maxPeriod
以及之后的所有内容。你可能想做这样的事情(如果你把它放到你的 JSFiddle 中就可以了:
var latestMonth = {
all: function() {
maxPeriod = dimPeriod.top(1)[0].Period;
return [choose_bin(groupHeads3, maxPeriod).value()]
}
}
我有一个 dc.js 仪表板,其中包含按月/期间分组的历史人数、疾病等信息。仪表板的用户希望在顶部的数字显示中看到最近一个月的数据(例如人数、患病率等)。
我的数据:
var data= [
{ "Month": "01/02/2014","Period": 201402,"Heads": 15123,"SchedHours":146000,"Sickness": 0,},
{ "Month": "01/03/2014","Period": 201403,"Heads": 15100,"SchedHours": 146000,"Sickness": 0,},
{ "Month": "01/04/2014","Period": 201404,"Heads": 14900,"SchedHours": 146000,"Sickness": 0,},
{ "Month": "01/05/2014","Period": 201405,"Heads": 14800,"SchedHours": 146000,"Sickness": 0,},
{ "Month": "01/06/2014","Period": 201406,"Heads": 14750,"SchedHours": 146000,"Sickness": 0,},
{ "Month": "01/07/2014","Period": 201407,"Heads": 14720,"SchedHours": 146000,"Sickness": 0,},
{ "Month": "01/08/2014","Period": 201408,"Heads": 14000,"SchedHours": 146000,"Sickness": 0,},
{ "Month": "01/09/2014","Period": 201409,"Heads": 13750,"SchedHours": 146000,"Sickness": 0,},
{ "Month": "01/10/2014","Period": 201410,"Heads": 13500,"SchedHours": 146000,"Sickness": 0,},
{ "Month": "01/11/2014","Period": 201411,"Heads": 13200,"SchedHours": 146000,"Sickness": 0,},
....]
当仪表板首次使用变量加载时,我可以弄清楚默认情况下如何执行此操作:
maxPeriod = dimPeriod.top(1)[0].Period;
但我正在努力弄清楚如何更新上面的变量以更新 numberDisplay 以始终对其进行过滤以按最大周期或月份显示头像。
我目前正在使用 Gordon 在另一个问题中提供的函数显示最新的 "Heads" 数量:
function choose_bin(group, key) {
return {
value: function() {
return group.all().filter(kv => kv.key === key)[0].value;
}
}
}
那我的群是:
var latestMonth = choose_bin(groupHeads3, maxPeriod);
和数字显示:
numberChart
.group(latestMonth)
.valueAccessor(x => (x))
.formatNumber(d3.format(".0f"));
我有一个显示问题的基本 jsfiddle(应用过滤器后,值为 0):https://jsfiddle.net/kevinelphick/mzpoe555/2/
我的目标是根据折线图中过滤的最高周期更新正面值。我还希望包括最高周期值之前的月份,并提供两者的比较以显示趋势。
提前谢谢你。
你只是在运行时没有计算足够的东西。每次查询该组时,您都需要计算 maxPeriod
以及之后的所有内容。你可能想做这样的事情(如果你把它放到你的 JSFiddle 中就可以了:
var latestMonth = {
all: function() {
maxPeriod = dimPeriod.top(1)[0].Period;
return [choose_bin(groupHeads3, maxPeriod).value()]
}
}