ActivityFeed 组件 — sgcHTML | eSeGeCe

ActivityFeed

TsgcHTMLComponent_ActivityFeed — 渲染一个实时的、按最新优先排序的活动信息流,具有相对时间戳和带外 WebSocket 推送功能,适用于 Delphi、C++ Builder 和 .NET。

TsgcHTMLComponent_ActivityFeed

使用 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

AddActivity(aActor, aAction, aTarget, aColor, aIcon, aActorAvatarURL) 追加一个条目并返回 TsgcHTMLActivityItem

环形缓冲区

MaxItems 限制保留的条目数量;一旦达到上限,最旧的条目会自动被丢弃。

相对时间

ShowRelativeTime 渲染类似“3 分钟前”样式的时间戳,并在客户端保持实时更新;关闭时则回退使用 TimeFormat

实时推送

GetItemFragmentHTML / GetLastItemFragmentHTML 构建供 PushFragment / BroadcastFragment 使用的带外 htmx 片段,使新活动无需刷新即可出现。

空状态

EmptyTextItems 为空时显示的占位文本;GetEmptyFragmentHTML 将其重新渲染为推送片段。

布局

Title 为信息流命名,Compact 收紧行间距,HTML 返回信息流及其作用域 CSS 和脚本。

继续探索

在线帮助此组件的完整 API 参考和使用指南。
所有 sgcHTML 组件浏览 80 多个组件的完整功能矩阵。
下载免费试用版30 天试用版附带 60.HTML 演示项目。
价格Single、Team 和 Site 授权,均含完整源代码。

准备好开始了吗?

下载免费试用版,开始在 Delphi、C++ Builder 和 .NET 中构建 Web 界面。