dc.js 使用 filesaver.js 筛选 table 导出
dc.js filtered table export using filesaver.js
我正在尝试使用 FileSaver.js.
导出 dc.js 过滤的 table 数据
我使用以下基于 的代码,这很好,除了它导出所有字段(但过滤正常),而我只需要 table 特定字段,这只是其中的一部分字段加 2 计算。
d3.select('#download')
.on('click', function() {
var blob = new Blob([d3.csv.format(dateDim.top(Infinity))], {type: "text/csv;charset=utf-8"});
saveAs(blob, DateT + '.csv');
});
有什么方法可以指向 table 而不是那个维度?
谢谢。
编辑:下面的工作代码
d3.select('#download')
.on('click', function() {
var data = MYTABLEDIM.top(Infinity);
{
data = data.map(function(d) {
var row = {};
MYTABLENAME.columns().forEach(function(c) {
row[MYTABLENAME._doColumnHeaderFormat(c)] = MYTABLENAME._doColumnValueFormat(c, d);
});
return row;
});
}
var blob = new Blob([d3.csv.format(data)], {type: "text/csv;charset=utf-8"});
saveAs(blob, 'data.csv');
});
好问题。
实际上可以根据列定义格式化数据,方法是使用一些未记录的数据方法 table。
我更新了 the example,增加了一个单选按钮来选择要下载的数据。
这里是转换和下载在 table 中编码的数据的代码:
d3.select('#download')
.on('click', function() {
var data = nameDim.top(Infinity);
data = data.map(function(d) {
var row = {};
table.columns().forEach(function(c, i) {
// if you're using the "original method" for specifying columns,
// use i to index an array of names, instead of table._doColumnHeaderFormat(c)
row[table._doColumnHeaderFormat(c)] = table._doColumnValueFormat(c, d);
});
return row;
});
var blob = new Blob([d3.csv.format(data)], {type: "text/csv;charset=utf-8"});
saveAs(blob, 'data.csv');
});
Basically, when the table
radio is selected, we'll transform the data row-by-row using the same functions that the table uses to format its data.
行将按照原始数据的顺序排列,而不是像 table 那样排序。 (严格来说,the columns may not be in the same order either)。这将是一项更大的努力,并且可能需要 dc.js 中的新功能。但这没有任何变化。希望对您有所帮助!
我正在尝试使用 FileSaver.js.
导出 dc.js 过滤的 table 数据我使用以下基于
d3.select('#download')
.on('click', function() {
var blob = new Blob([d3.csv.format(dateDim.top(Infinity))], {type: "text/csv;charset=utf-8"});
saveAs(blob, DateT + '.csv');
});
有什么方法可以指向 table 而不是那个维度?
谢谢。
编辑:下面的工作代码
d3.select('#download')
.on('click', function() {
var data = MYTABLEDIM.top(Infinity);
{
data = data.map(function(d) {
var row = {};
MYTABLENAME.columns().forEach(function(c) {
row[MYTABLENAME._doColumnHeaderFormat(c)] = MYTABLENAME._doColumnValueFormat(c, d);
});
return row;
});
}
var blob = new Blob([d3.csv.format(data)], {type: "text/csv;charset=utf-8"});
saveAs(blob, 'data.csv');
});
好问题。
实际上可以根据列定义格式化数据,方法是使用一些未记录的数据方法 table。
我更新了 the example,增加了一个单选按钮来选择要下载的数据。
这里是转换和下载在 table 中编码的数据的代码:
d3.select('#download')
.on('click', function() {
var data = nameDim.top(Infinity);
data = data.map(function(d) {
var row = {};
table.columns().forEach(function(c, i) {
// if you're using the "original method" for specifying columns,
// use i to index an array of names, instead of table._doColumnHeaderFormat(c)
row[table._doColumnHeaderFormat(c)] = table._doColumnValueFormat(c, d);
});
return row;
});
var blob = new Blob([d3.csv.format(data)], {type: "text/csv;charset=utf-8"});
saveAs(blob, 'data.csv');
});
Basically, when the table
radio is selected, we'll transform the data row-by-row using the same functions that the table uses to format its data.
行将按照原始数据的顺序排列,而不是像 table 那样排序。 (严格来说,the columns may not be in the same order either)。这将是一项更大的努力,并且可能需要 dc.js 中的新功能。但这没有任何变化。希望对您有所帮助!