ActivityFeed

TsgcHTMLComponent_ActivityFeed — Delphi、C++ Builder、.NET で、相対タイムスタンプと WebSocket によるアウトオブバンドプッシュを備えた、新着順のライブアクティビティフィードをレンダリングします。

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());

主なプロパティとメソッド

最もよく使うメンバーです。

Items / AddActivity

AddActivity(aActor, aAction, aTarget, aColor, aIcon, aActorAvatarURL) は 1 件のエントリを追加し、TsgcHTMLActivityItem を返します。

Ring buffer

MaxItems は保持するエントリ数の上限を設定します。上限に達すると、最も古い項目が自動的に削除されます。

Relative time

ShowRelativeTime は「3 分前」のようなタイムスタンプをレンダリングし、クライアント側でライブに更新し続けます。オフの場合は TimeFormat がフォールバックになります。

Live push

GetItemFragmentHTML / GetLastItemFragmentHTML は、PushFragment / BroadcastFragment 用のアウトオブバンド htmx フラグメントを構築します。これにより、新しいアクティビティがリロードなしで表示されます。

Empty state

EmptyText は Items が空の間に表示されるプレースホルダーです。GetEmptyFragmentHTML はそれをプッシュフラグメントとして再レンダリングします。

Layout

Title はフィードのラベルを設定し、Compact は行間隔を詰めます。HTML はフィードとそのスコープ付き CSS およびスクリプトを返します。

さらに詳しく

オンラインヘルプこのコンポーネントの完全な API リファレンスと使用ガイドです。
すべての sgcHTML コンポーネント80 以上のコンポーネントの全機能マトリックスを閲覧できます。
無料体験版のダウンロード30 日間の体験版には 60.HTML デモプロジェクトが付属します。
価格完全なソースコード付きの Single、Team、Site ライセンス。
最もお得な選択: All-AccesseSeGeCe の全製品にプレミアムサポートが付いて、年間 €1,059 からご利用いただけます。
All-Access の価格を見る

始める準備はできましたか?

無料体験版をダウンロードして、Delphi、C++ Builder、.NET の Web アプリにライブアクティビティフィードを追加しましょう。