D3を使用してHTMLテーブルを作成しています。データコレクションに新しいアイテムを追加すると、新しいアイテムがテーブルに正しく追加されます。D3でHTMLテーブルを作成しても既存のデータは更新されません
問題は、コレクション内の既存のオブジェクト(以下のbackgroundJobsコレクション内のオブジェクト)を更新するたびに発生します。テーブルを同期させるためにD3コードを再実行すると、動作しません。何も起こりません。
var visibleColumns = ['Name', 'Start', 'End', 'Status', 'Metadata', 'Errors'];
var table = d3.select('#jobs').append('table');
var thead = table.append('thead');
var tbody = table.append('tbody');
thead.append("tr")
.selectAll("th")
.data(visibleColumns)
.enter()
.append("th")
.text(function (column) { return column; });
function tick() {
var rows = tbody.selectAll("tr")
.data(backgroundJobs, function(d) {
return d.name;
})
.enter()
.append("tr");
var cells = rows.selectAll("td")
.data(function(row) {
return [{column: 'Name', value: row.name},
{column: 'Start', value: row.startedTimestamp},
{column: 'End', value: row.endedTimestamp},
{column: 'Status', value: row.isRunning},
{column: 'Metadata', value: ''},
{column: 'Errors', value: row.errorMsg}];
})
.enter()
.append("td")
.text(function(d) { return d.value; });
}
setInterval(tick, 500);
なぜ「)(rows.order;」コールが含まれていますか? – manu08
テーブル行の順序がbackgroundJobs配列のジョブの順序と一致するようにします。 明示的にソートすることなく、テーブルの最後にすべての新しいジョブ(データ結合に関して「新規」 - 「入力」選択を形成するもの)が追加されます。 – amakhrov