ActivityFeed
TsgcHTMLComponent_ActivityFeed — 渲染一个实时的、按最新优先排序的活动信息流,具有相对时间戳和带外 WebSocket 推送功能,适用于 Delphi、C++ Builder 和 .NET。
TsgcHTMLComponent_ActivityFeed — 渲染一个实时的、按最新优先排序的活动信息流,具有相对时间戳和带外 WebSocket 推送功能,适用于 Delphi、C++ Builder 和 .NET。
使用 AddActivity 推送活动,读取 HTML 完成首次渲染,然后通过 WebSocket 片段实时推送新条目。
TsgcHTMLComponent_ActivityFeed
Bootstrap 5 列表 + 作用域 CSS + 实时相对时间脚本
Delphi, C++ Builder, .NET
为每个条目调用 AddActivity,读取 HTML 生成初始页面,然后使用 GetLastItemFragmentHTML 通过 WebSocket 以带外片段的形式推送新条目。
uses
sgcHTML_Enums, sgcHTML_Component_ActivityFeed;
var
oFeed: TsgcHTMLComponent_ActivityFeed;
begin
oFeed := TsgcHTMLComponent_ActivityFeed.Create(nil);
try
oFeed.FeedID := 'timeline';
oFeed.Title := 'Recent Activity';
oFeed.MaxItems := 30;
oFeed.AddActivity('Ana', 'closed', 'ticket #482', hcSuccess, 'bi bi-check-circle');
oFeed.AddActivity('Marc', 'commented on', 'invoice #1190', hcPrimary);
WebModule.Response := oFeed.HTML; // feed list + scoped CSS + live relative-time script
finally
oFeed.Free;
end;
end;
// Push a new item live to connected clients (out-of-band htmx fragment):
oFeed.AddActivity('Ana', 'approved', 'purchase order #77', hcSuccess);
Engine.BroadcastFragment(oFeed.GetLastItemFragmentHTML);
// includes: sgcHTML_Enums.hpp, sgcHTML_Component_ActivityFeed.hpp
TsgcHTMLComponent_ActivityFeed *oFeed = new TsgcHTMLComponent_ActivityFeed(NULL);
try
{
oFeed->FeedID = "timeline";
oFeed->Title = "Recent Activity";
oFeed->MaxItems = 30;
oFeed->AddActivity("Ana", "closed", "ticket #482", hcSuccess, "bi bi-check-circle");
oFeed->AddActivity("Marc", "commented on", "invoice #1190", hcPrimary);
String html = oFeed->HTML; // feed list + scoped CSS + live relative-time script
}
__finally
{
delete oFeed;
}
using esegece.sgcWebSockets;
var feed = new TsgcHTMLComponent_ActivityFeed();
feed.FeedID = "timeline";
feed.Title = "Recent Activity";
feed.MaxItems = 30;
feed.AddActivity("Ana", "closed", "ticket #482", TsgcHTMLColor.hcSuccess, "bi bi-check-circle");
feed.AddActivity("Marc", "commented on", "invoice #1190", TsgcHTMLColor.hcPrimary);
string html = feed.HTML; // feed list + scoped CSS + live relative-time script
// Push a new item live to connected clients (out-of-band htmx fragment):
feed.AddActivity("Ana", "approved", "purchase order #77", TsgcHTMLColor.hcSuccess);
engine.BroadcastFragment(feed.GetLastItemFragmentHTML());
您最常使用的成员。
AddActivity(aActor, aAction, aTarget, aColor, aIcon, aActorAvatarURL) 追加一个条目并返回 TsgcHTMLActivityItem。
MaxItems 限制保留的条目数量;一旦达到上限,最旧的条目会自动被丢弃。
ShowRelativeTime 渲染类似“3 分钟前”样式的时间戳,并在客户端保持实时更新;关闭时则回退使用 TimeFormat。
GetItemFragmentHTML / GetLastItemFragmentHTML 构建供 PushFragment / BroadcastFragment 使用的带外 htmx 片段,使新活动无需刷新即可出现。
EmptyText 是 Items 为空时显示的占位文本;GetEmptyFragmentHTML 将其重新渲染为推送片段。
Title 为信息流命名,Compact 收紧行间距,HTML 返回信息流及其作用域 CSS 和脚本。