From cc13eb211d5d12d0396e908286cba1ed791bcadf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E7=94=B5=E8=8A=BD=E8=A1=A3?= Date: Mon, 5 Oct 2026 14:33:30 -0400 Subject: [PATCH] WIP essentials 14 --- activity_feed.go | 137 ++++++++++++++++++ activity_feed_test.go | 92 ++++++++++++ messages_essentials.go | 6 + resizable_panel_group_test.go | 5 +- .../snapshots/darwin/activity_feed-dark.png | Bin 0 -> 30238 bytes .../snapshots/darwin/activity_feed-light.png | Bin 0 -> 29704 bytes 6 files changed, 239 insertions(+), 1 deletion(-) create mode 100644 activity_feed.go create mode 100644 activity_feed_test.go create mode 100644 testdata/snapshots/darwin/activity_feed-dark.png create mode 100644 testdata/snapshots/darwin/activity_feed-light.png diff --git a/activity_feed.go b/activity_feed.go new file mode 100644 index 0000000..c0406b1 --- /dev/null +++ b/activity_feed.go @@ -0,0 +1,137 @@ +package mujica + +import ( + "cmp" + "log/slog" + "time" + + "github.com/egoist/mygo/ui" + + "mujicaui/icons" + "mujicaui/theme" +) + +// Activity is one event of an ActivityFeed: Actor did Action to Object at Time. +type Activity struct { + ID string + Actor string + Action string + Object string + Time time.Time +} + +// ActivityFeedOptions configure an ActivityFeed. +type ActivityFeedOptions struct { + // Location decides which day an event falls on; nil is time.Local. + Location *time.Location + // Today fixes the day called Today; zero uses the clock. + Today Date +} + +// activityRow is a day header (item -1) or an event. +type activityRow struct { + day Date + item int +} + +// activityFeedCache keeps the grouped rows until the count, first or last event, or location changes. +type activityFeedCache struct { + n int + first, last string + loc *time.Location + rows []activityRow + scroll ui.ScrollState + sized bool +} + +// ActivityFeed lists events grouped by day, newest first as given, building only the rows in view. +func ActivityFeed(c *ui.Context, items []Activity, opts ActivityFeedOptions) *ui.Element { + loc := cmp.Or(opts.Location, time.Local) + for _, a := range items { + if a.ID == "" || a.Actor == "" || a.Action == "" || a.Time.IsZero() { + panic("mujica: ActivityFeed event needs an ID, Actor, Action and Time") + } + } + k := Tokens(c) + d := Density(c) + sc := ui.Scroll(c).MinHeight(0).Role(ui.RoleList).Label(msg(c, "activity_feed.label")) + if len(items) == 0 { + sc.Children(func() { + EmptyState(c, EmptyStateOptions{Title: msg(c, "activity_feed.empty"), Description: msg(c, "activity_feed.empty_hint"), Icon: icons.Must("clock")}) + }) + return sc + } + cache := *ui.Local(sc, "activity_feed", func() *activityFeedCache { return &activityFeedCache{} }) + sc.TrackScroll(&cache.scroll) + if cache.n != len(items) || cache.first != items[0].ID || cache.last != items[len(items)-1].ID || cache.loc != loc { + cache.n, cache.first, cache.last, cache.loc = len(items), items[0].ID, items[len(items)-1].ID, loc + cache.rows = cache.rows[:0] + var prev Date + for i, a := range items { + if day := DateOf(a.Time.In(loc)); day != prev || i == 0 { + cache.rows = append(cache.rows, activityRow{day: day, item: -1}) + prev = day + } + cache.rows = append(cache.rows, activityRow{item: i}) + } + slog.Debug("mujica: activity_feed grouped", "events", len(items), "rows", len(cache.rows)) + } + rowH := d.ControlHeight() + 2*d.Unit() + view := sc.Bounds() + if view.H == 0 && !cache.sized { + // Unmeasured: build again once the box has its height. + cache.sized = true + c.Invalidate() + } + first := max(0, int(cache.scroll.Y/rowH)-2) + last := min(len(cache.rows), int((cache.scroll.Y+max(view.H, rowH))/rowH)+3) + today := datetimeToday(c, opts.Today) + sc.Children(func() { + ui.Box(c).FillWidth().Height(rowH * float32(len(cache.rows))).Children(func() { + for r := first; r < last; r++ { + row := cache.rows[r] + box := ui.Row(c).Key(r).Absolute().Left(0).Right(0).Top(rowH*float32(r)).Height(rowH). + AlignItems(ui.Center).Gap(d.Unit()*3).Padding(0, d.Unit()*3) + if row.item < 0 { + activityFeedHeader(c, k, box, row.day, today) + continue + } + activityFeedEvent(c, k, box, items[row.item], loc) + } + }) + }) + return sc +} + +// activityFeedHeader is a day's title: Today, Yesterday or the date, over an ornament rule. +func activityFeedHeader(c *ui.Context, k theme.Tokens, box *ui.Element, day, today Date) { + label := datetimeDayLabel(c, day) + switch day { + case today: + label = msg(c, "activity_feed.today") + case today.AddDays(-1): + label = msg(c, "activity_feed.yesterday") + } + box.Role(ui.RoleText).AlignItems(ui.End).Padding(0, Density(c).Unit()*3, Density(c).Unit(), Density(c).Unit()*3) + box.Draw(func(p *ui.Painter, r ui.Rect) { p.Fill(ui.Rect{X: r.X, Y: r.Y + r.H - 1, W: r.W, H: 1}, k.Ornament, 0) }) + box.Children(func() { + ui.Text(c, label).Font(theme.SerifFont).FontSize(FontSize(c, theme.CaptionSize+1)).FontWeight(600).TextColor(k.Text).SingleLine() + }) +} + +// activityFeedEvent is one event: avatar, "Actor action Object", and the time. +func activityFeedEvent(c *ui.Context, k theme.Tokens, box *ui.Element, a Activity, loc *time.Location) { + when := a.Time.In(loc).Format("15:04") + box.Role(ui.RoleListItem).Label(a.Actor + " " + a.Action + " " + a.Object + ", " + when) + box.Children(func() { + Avatar(c, a.Actor, AvatarOptions{Size: 28}) + ui.Row(c).Grow(1).Shrink(1).MinWidth(0).Gap(4).Children(func() { + ui.Text(c, a.Actor).Bold().TextColor(k.Text).SingleLine().Shrink(0) + ui.Text(c, a.Action).TextColor(k.TextMuted).SingleLine().Shrink(0) + if a.Object != "" { + ui.Text(c, a.Object).TextColor(k.AccentText).SingleLine().Shrink(1).Ellipsis("…") + } + }) + ui.Text(c, when).TextColor(k.TextMuted).FontSize(FontSize(c, theme.CaptionSize)).FontFeatures("tnum").SingleLine() + }) +} diff --git a/activity_feed_test.go b/activity_feed_test.go new file mode 100644 index 0000000..2d408de --- /dev/null +++ b/activity_feed_test.go @@ -0,0 +1,92 @@ +package mujica + +import ( + "strconv" + "testing" + "time" + + "github.com/egoist/mygo/ui" +) + +func feedItems(n int) []Activity { + base := time.Date(2026, 10, 5, 18, 0, 0, 0, time.UTC) + out := make([]Activity, n) + for i := range out { + out[i] = Activity{ID: strconv.Itoa(i), Actor: "Mira", Action: "edited", Object: "Doc " + strconv.Itoa(i), Time: base.Add(-time.Duration(i) * 5 * time.Hour)} + } + return out +} + +func TestActivityFeedGroupsByDay(t *testing.T) { + items := feedItems(6) // 18:00, 13:00, 08:00, 03:00 on the 5th, then 22:00 and 17:00 on the 4th + tt := ui.NewTester(func(c *ui.Context) { + Use(c, Settings{}) + ActivityFeed(c, items, ActivityFeedOptions{Location: time.UTC, Today: Date{2026, 10, 5}}).Size(600, 500) + }, 640, 540) + tt.Frame() + for _, s := range []string{"Today", "Yesterday", "Mira edited Doc 0, 18:00", "Mira edited Doc 4, 22:00"} { + if _, ok := tt.Find(s); !ok { + t.Errorf("missing %q in %q", s, tt.Texts()) + } + } + today, _ := tt.Find("Today") + yest, _ := tt.Find("Yesterday") + doc3, _ := tt.Find("Mira edited Doc 3, 03:00") + doc4, _ := tt.Find("Mira edited Doc 4, 22:00") + if !(today.Y < doc3.Y && doc3.Y < yest.Y && yest.Y < doc4.Y) { + t.Fatalf("order: today %v, doc3 %v, yesterday %v, doc4 %v", today, doc3, yest, doc4) + } + // Another zone moves 03:00 UTC to the previous day. + tt2 := ui.NewTester(func(c *ui.Context) { + Use(c, Settings{Locale: ZhCN}) + ActivityFeed(c, items, ActivityFeedOptions{Location: time.FixedZone("W", -5*3600), Today: Date{2026, 10, 5}}).Size(600, 500) + }, 640, 540) + tt2.Frame() + if _, ok := tt2.Find("Mira edited Doc 3, 22:00"); !ok || !tt2.HasText("今天") || !tt2.HasText("昨天") { + t.Fatalf("zone texts %q", tt2.Texts()) + } +} + +func TestActivityFeedVirtualizesAndEmpty(t *testing.T) { + items := feedItems(100000) + tt := ui.NewTester(func(c *ui.Context) { + Use(c, Settings{}) + ActivityFeed(c, items, ActivityFeedOptions{Location: time.UTC, Today: Date{2026, 10, 5}}).Size(600, 400) + }, 640, 440) + tt.Frame() + if n := len(tt.Texts()); n == 0 || n > 120 { + t.Fatalf("built %d texts for 100000 events", n) + } + tt.Scroll(100, 100, 0, 2000000) + tt.Frame() + if _, ok := tt.Find("Mira edited Doc 0, 18:00"); ok { + t.Fatal("first event still built after scrolling far") + } + tt3 := ui.NewTester(func(c *ui.Context) { + Use(c, Settings{}) + ActivityFeed(c, nil, ActivityFeedOptions{}).Size(400, 300) + }, 440, 340) + if !tt3.HasText("No activity yet") { + t.Fatalf("empty: %q", tt3.Texts()) + } + defer func() { + if recover() == nil { + t.Fatal("event without ID accepted") + } + }() + ui.NewTester(func(c *ui.Context) { + Use(c, Settings{}) + ActivityFeed(c, []Activity{{Actor: "x"}}, ActivityFeedOptions{}) + }, 200, 100) +} + +func TestActivityFeedSnapshot(t *testing.T) { + items := feedItems(5) + items[1].Actor, items[1].Action, items[1].Object = "Lin", "commented on", "Quarterly report" + items[3].Actor, items[3].Action, items[3].Object = "Sakiko", "approved", "Merge request !42" + snapshot(t, "activity_feed", 520, 320, func(c *ui.Context) { + ui.Column(c).Padding(12).Children(func() { + ActivityFeed(c, items, ActivityFeedOptions{Location: time.UTC, Today: Date{2026, 10, 5}}).Size(496, 296) + }) + }) +} diff --git a/messages_essentials.go b/messages_essentials.go index 5c9e9d2..4c8abe1 100644 --- a/messages_essentials.go +++ b/messages_essentials.go @@ -36,6 +36,12 @@ func init() { "dock_panel.zone3": {"Bottom dock", "底部停靠区"}, "dock_panel.hint": {"Drag to an edge, or Shift+Alt+arrow, to dock", "拖到边缘,或按 Shift+Alt+方向键停靠"}, + "activity_feed.label": {"Activity", "活动"}, + "activity_feed.today": {"Today", "今天"}, + "activity_feed.yesterday": {"Yesterday", "昨天"}, + "activity_feed.empty": {"No activity yet", "暂无活动"}, + "activity_feed.empty_hint": {"Changes people make will show here.", "成员的操作会显示在这里。"}, + "qr_code.label": {"QR code", "二维码"}, "qr_code.too_long": {"Text too long for a QR code", "文字过长,无法生成二维码"}, }) diff --git a/resizable_panel_group_test.go b/resizable_panel_group_test.go index 7deb347..6c56463 100644 --- a/resizable_panel_group_test.go +++ b/resizable_panel_group_test.go @@ -106,7 +106,10 @@ func TestResizablePanelGroupRejects(t *testing.T) { } }() s := tc.sizes - ui.NewTester(func(c *ui.Context) { Use(c, Settings{}); ResizablePanelGroup(c, &s, tc.panels, ResizablePanelGroupOptions{}) }, 300, 200) + ui.NewTester(func(c *ui.Context) { + Use(c, Settings{}) + ResizablePanelGroup(c, &s, tc.panels, ResizablePanelGroupOptions{}) + }, 300, 200) }() } } diff --git a/testdata/snapshots/darwin/activity_feed-dark.png b/testdata/snapshots/darwin/activity_feed-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..b6a09e59ef2a5fccdd493a958373c20afe16a30e GIT binary patch literal 30238 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 T90lOHuYV~ksLPkjntk|hBe3>2 literal 0 HcmV?d00001 diff --git a/testdata/snapshots/darwin/activity_feed-light.png b/testdata/snapshots/darwin/activity_feed-light.png new file mode 100644 index 0000000000000000000000000000000000000000..9e259713a51160a90f639697d08bfd8ef385ea5f GIT binary patch literal 29704 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