Admin UI: Add message queue to admin UI (#6958)

* add a menu item "Message Queue"

* add a menu item "Message Queue"
  * move the "brokers" link under it.
  * add "topics", "subscribers". Add pages for them.

* refactor

* show topic details

* admin display publisher and subscriber info

* remove publisher and subscribers from the topic row pull down

* collecting more stats from publishers and subscribers

* fix layout

* fix publisher name

* add local listeners for mq broker and agent

* render consumer group offsets

* remove subscribers from left menu

* topic with retention

* support editing topic retention

* show retention when listing topics

* create bucket

* Update s3_buckets_templ.go

* embed the static assets into the binary

fix https://github.com/seaweedfs/seaweedfs/issues/6964
This commit is contained in:
Chris Lu
2025-07-11 10:19:27 -07:00
committed by GitHub
parent a9e1f00673
commit 51543bbb87
44 changed files with 8296 additions and 1156 deletions

View File

@@ -18,6 +18,9 @@ templ Layout(c *gin.Context, content templ.Component) {
// Detect if we're on a configuration page to keep submenu expanded
currentPath := c.Request.URL.Path
isConfigPage := strings.HasPrefix(currentPath, "/maintenance/config") || currentPath == "/config"
// Detect if we're on a message queue page to keep submenu expanded
isMQPage := strings.HasPrefix(currentPath, "/mq/")
}}
<!DOCTYPE html>
<html lang="en">
@@ -147,6 +150,64 @@ templ Layout(c *gin.Context, content templ.Component) {
</ul>
</div>
</li>
<li class="nav-item">
if isMQPage {
<a class="nav-link" href="#" data-bs-toggle="collapse" data-bs-target="#messageQueueSubmenu" aria-expanded="true" aria-controls="messageQueueSubmenu">
<i class="fas fa-comments me-2"></i>Message Queue
<i class="fas fa-chevron-down ms-auto"></i>
</a>
} else {
<a class="nav-link collapsed" href="#" data-bs-toggle="collapse" data-bs-target="#messageQueueSubmenu" aria-expanded="false" aria-controls="messageQueueSubmenu">
<i class="fas fa-comments me-2"></i>Message Queue
<i class="fas fa-chevron-down ms-auto"></i>
</a>
}
if isMQPage {
<div class="collapse show" id="messageQueueSubmenu">
<ul class="nav flex-column ms-3">
<li class="nav-item">
if currentPath == "/mq/brokers" {
<a class="nav-link py-2 active" href="/mq/brokers">
<i class="fas fa-server me-2"></i>Brokers
</a>
} else {
<a class="nav-link py-2" href="/mq/brokers">
<i class="fas fa-server me-2"></i>Brokers
</a>
}
</li>
<li class="nav-item">
if currentPath == "/mq/topics" {
<a class="nav-link py-2 active" href="/mq/topics">
<i class="fas fa-list-alt me-2"></i>Topics
</a>
} else {
<a class="nav-link py-2" href="/mq/topics">
<i class="fas fa-list-alt me-2"></i>Topics
</a>
}
</li>
</ul>
</div>
} else {
<div class="collapse" id="messageQueueSubmenu">
<ul class="nav flex-column ms-3">
<li class="nav-item">
<a class="nav-link py-2" href="/mq/brokers">
<i class="fas fa-server me-2"></i>Brokers
</a>
</li>
<li class="nav-item">
<a class="nav-link py-2" href="/mq/topics">
<i class="fas fa-list-alt me-2"></i>Topics
</a>
</li>
</ul>
</div>
}
</li>
<li class="nav-item">
<a class="nav-link" href="/metrics">
<i class="fas fa-chart-line me-2"></i>Metrics