如何将过滤结果添加到 select 菜单
How to add filter result to select menu
我坚持使用 d3、dc 和 crossfilter 进行我的第一个仪表板项目。找不到解决方案。
"ETCBTC","BUY","0.002325","1.04","0.00241800","0.00104","ETC"
"ETCBTC","SELL","0.002358","1.04","0.00245232","0.00000245","BTC"
"LTCETH","SELL","0.30239","0.006","0.00181434","0.00000181","ETH"
"LTCETH","SELL","0.30239","0.149","0.04505611","0.00004506","ETH"
我在第一列中有不同的交易对,在这个例子中我只需要使用最后一对 BTC 和 ETH。
我找到了可以帮助我做到这一点的过滤器。
问题是我的 select 菜单中需要 BTC 和 ETH 才能应用过滤器。
function show_market_selector(ndx) {
var marketDim = ndx.dimension(dc.pluck("Market"));
var selectorMenu = marketDim.group();
function filterItems(query) {
return ndx.dimension(dc.pluck("Market")).filter(function(el) {
return el.toLowerCase().indexOf(query.toLowerCase()) > 0;
});
}
filterItems("BTC");
var select = dc.selectMenu("#market-selector")
.dimension(marketDim)
.group(selectorMenu);
select.title(function (d){
return "BTC";
});
}
现在我在这个菜单中得到了所有配对。但我的目标只是在 select 菜单中包含 BTC 和 ETH。
希望有人能给我建议。谢谢。
我认为只使用货币作为维度键会更容易:
var currencyDim = ndx.dimension(d => d.Market.slice(3)),
currencyGroup = marketDim.group();
var select = dc.selectMenu("#market-selector")
.dimension(currencyDim)
.group(currencyGroup);
您真的不想在每次调用 filterItems
时都创建一个新维度 - 维度是旨在保留的重量级索引。
dimension.filter()
的名称令人困惑 - 它与 JavaScript 的 Array.prototype.filter()
完全不同,returns 匹配行。相反,它是一个命令式函数,它为该维度设置当前过滤器(并更改所有 other 维度看到的内容)。
如果您需要 "from currency" 维度,那就是
var fromCurrencyDim = ndx.dimension(d => d.Market.slice(0,3))
我坚持使用 d3、dc 和 crossfilter 进行我的第一个仪表板项目。找不到解决方案。
"ETCBTC","BUY","0.002325","1.04","0.00241800","0.00104","ETC"
"ETCBTC","SELL","0.002358","1.04","0.00245232","0.00000245","BTC"
"LTCETH","SELL","0.30239","0.006","0.00181434","0.00000181","ETH"
"LTCETH","SELL","0.30239","0.149","0.04505611","0.00004506","ETH"
我在第一列中有不同的交易对,在这个例子中我只需要使用最后一对 BTC 和 ETH。
我找到了可以帮助我做到这一点的过滤器。
问题是我的 select 菜单中需要 BTC 和 ETH 才能应用过滤器。
function show_market_selector(ndx) {
var marketDim = ndx.dimension(dc.pluck("Market"));
var selectorMenu = marketDim.group();
function filterItems(query) {
return ndx.dimension(dc.pluck("Market")).filter(function(el) {
return el.toLowerCase().indexOf(query.toLowerCase()) > 0;
});
}
filterItems("BTC");
var select = dc.selectMenu("#market-selector")
.dimension(marketDim)
.group(selectorMenu);
select.title(function (d){
return "BTC";
});
}
现在我在这个菜单中得到了所有配对。但我的目标只是在 select 菜单中包含 BTC 和 ETH。
希望有人能给我建议。谢谢。
我认为只使用货币作为维度键会更容易:
var currencyDim = ndx.dimension(d => d.Market.slice(3)),
currencyGroup = marketDim.group();
var select = dc.selectMenu("#market-selector")
.dimension(currencyDim)
.group(currencyGroup);
您真的不想在每次调用 filterItems
时都创建一个新维度 - 维度是旨在保留的重量级索引。
dimension.filter()
的名称令人困惑 - 它与 JavaScript 的 Array.prototype.filter()
完全不同,returns 匹配行。相反,它是一个命令式函数,它为该维度设置当前过滤器(并更改所有 other 维度看到的内容)。
如果您需要 "from currency" 维度,那就是
var fromCurrencyDim = ndx.dimension(d => d.Market.slice(0,3))