SSE リソースを提供する RESTful サービスがあります。HTML テーブルを 3 秒ごとに更新しています。私はそれにdynatableを使用しています。新しい行が追加されると、SSE はクライアントに通知するため、テーブルが更新されます。
これらの新しい行でテーブルを更新しています:
$('#mytable tr:first').after(newRows);
ただし、ダイナテーブルはこれらの新しい行に適用されていません。「process() を呼び出すまで、Dynatable は DOM のテーブルを更新しません」と読みました。そのため、新しい行を挿入した後に dynatable.process() を呼び出そうとしましたが、機能しません。
これが私のテーブルです。最初の 2 行を見てください。スタイル、ゼブラ、フォーマッターは適用されませんでした。
ここに私のJavaScriptコードがあります:
if(typeof(EventSource)!=="undefined") {
var source = new EventSource("SOME_URL/sse");
source.onmessage = function(e) {
if(e.data) {
/* In the CrunchifyTableView method, I'm putting the json result indo table
rows. I'm doing this because if I pass json directly to dynatable, I'm not
able to styling some columns, like "Alerta" column (see image).*/
var newRows = CrunchifyTableView(e.data, "registers");
$('#registers tr:first').after(newRows);
// TODO
// Update dynatable
applyDynaTable(); // I tried reload the dynatable but it's not working
}
};
}
else {
// No support
}
function applyDynatable() {
$('#registers').dynatable({
features: {
paginate: true,
search: false,
recordCount: true,
perPageSelect: false
},
writers: {
'dataEhora': function(record) {
return formatDate(record.dataEhora); // Date formater
}
}
});
}