You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							996 lines
						
					
					
						
							58 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							996 lines
						
					
					
						
							58 KiB
						
					
					
				
								// Code generated by templ - DO NOT EDIT.
							 | 
						|
								
							 | 
						|
								// templ: version: v0.3.960
							 | 
						|
								package app
							 | 
						|
								
							 | 
						|
								//lint:file-ignore SA4006 This context is only used if a nested component is present.
							 | 
						|
								
							 | 
						|
								import "github.com/a-h/templ"
							 | 
						|
								import templruntime "github.com/a-h/templ/runtime"
							 | 
						|
								
							 | 
						|
								import "fmt"
							 | 
						|
								import "github.com/seaweedfs/seaweedfs/weed/admin/dash"
							 | 
						|
								import "github.com/seaweedfs/seaweedfs/weed/util"
							 | 
						|
								
							 | 
						|
								func TopicDetails(data dash.TopicDetailsData) templ.Component {
							 | 
						|
									return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
							 | 
						|
										templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
							 | 
						|
										if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
							 | 
						|
											return templ_7745c5c3_CtxErr
							 | 
						|
										}
							 | 
						|
										templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
							 | 
						|
										if !templ_7745c5c3_IsBuffer {
							 | 
						|
											defer func() {
							 | 
						|
												templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
							 | 
						|
												if templ_7745c5c3_Err == nil {
							 | 
						|
													templ_7745c5c3_Err = templ_7745c5c3_BufErr
							 | 
						|
												}
							 | 
						|
											}()
							 | 
						|
										}
							 | 
						|
										ctx = templ.InitializeContext(ctx)
							 | 
						|
										templ_7745c5c3_Var1 := templ.GetChildren(ctx)
							 | 
						|
										if templ_7745c5c3_Var1 == nil {
							 | 
						|
											templ_7745c5c3_Var1 = templ.NopComponent
							 | 
						|
										}
							 | 
						|
										ctx = templ.ClearChildren(ctx)
							 | 
						|
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<div class=\"container-fluid\"><div class=\"row\"><div class=\"col-12\"><!-- Header --><div class=\"d-flex justify-content-between align-items-center mb-4\"><div><nav aria-label=\"breadcrumb\"><ol class=\"breadcrumb\"><li class=\"breadcrumb-item\"><a href=\"/mq/topics\">Topics</a></li><li class=\"breadcrumb-item active\" aria-current=\"page\">")
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										var templ_7745c5c3_Var2 string
							 | 
						|
										templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(data.TopicName)
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 17, Col: 102}
							 | 
						|
										}
							 | 
						|
										_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2))
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "</li></ol></nav><h1 class=\"h3 mb-0\">Topic Details: ")
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										var templ_7745c5c3_Var3 string
							 | 
						|
										templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(data.TopicName)
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 20, Col: 74}
							 | 
						|
										}
							 | 
						|
										_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3))
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "</h1></div><small class=\"text-muted\">Last updated: ")
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										var templ_7745c5c3_Var4 string
							 | 
						|
										templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(data.LastUpdated.Format("2006-01-02 15:04:05"))
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 22, Col: 107}
							 | 
						|
										}
							 | 
						|
										_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4))
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "</small></div><!-- Summary Cards --><div class=\"row mb-4\"><div class=\"col-md-2\"><div class=\"card text-center\"><div class=\"card-body\"><h5 class=\"card-title\">Partitions</h5><h3 class=\"text-primary\">")
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										var templ_7745c5c3_Var5 string
							 | 
						|
										templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d", len(data.Partitions)))
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 31, Col: 97}
							 | 
						|
										}
							 | 
						|
										_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5))
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "</h3></div></div></div><div class=\"col-md-2\"><div class=\"card text-center\"><div class=\"card-body\"><h5 class=\"card-title\">Schema Fields</h5><h3 class=\"text-info\">")
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										var templ_7745c5c3_Var6 string
							 | 
						|
										templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d", len(data.KeySchema)+len(data.ValueSchema)))
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 39, Col: 117}
							 | 
						|
										}
							 | 
						|
										_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6))
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "</h3></div></div></div><div class=\"col-md-2\"><div class=\"card text-center\"><div class=\"card-body\"><h5 class=\"card-title\">Total Messages</h5><h3 class=\"text-success\">")
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										var templ_7745c5c3_Var7 string
							 | 
						|
										templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d", data.MessageCount))
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 47, Col: 94}
							 | 
						|
										}
							 | 
						|
										_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7))
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 7, "</h3></div></div></div><div class=\"col-md-2\"><div class=\"card text-center\"><div class=\"card-body\"><h5 class=\"card-title\">Total Size</h5><h3 class=\"text-warning\">")
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										var templ_7745c5c3_Var8 string
							 | 
						|
										templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(util.BytesToHumanReadable(uint64(data.TotalSize)))
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 55, Col: 107}
							 | 
						|
										}
							 | 
						|
										_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8))
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, "</h3></div></div></div><div class=\"col-md-2\"><div class=\"card text-center\"><div class=\"card-body\"><h5 class=\"card-title\">Publishers</h5><h3 class=\"text-success\">")
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										var templ_7745c5c3_Var9 string
							 | 
						|
										templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d", len(data.Publishers)))
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 63, Col: 97}
							 | 
						|
										}
							 | 
						|
										_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var9))
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "</h3></div></div></div><div class=\"col-md-2\"><div class=\"card text-center\"><div class=\"card-body\"><h5 class=\"card-title\">Subscribers</h5><h3 class=\"text-info\">")
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										var templ_7745c5c3_Var10 string
							 | 
						|
										templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d", len(data.Subscribers)))
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 71, Col: 95}
							 | 
						|
										}
							 | 
						|
										_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var10))
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 10, "</h3></div></div></div></div><!-- Consumer Group Offsets Summary --><div class=\"row mb-4\"><div class=\"col-md-12\"><div class=\"card text-center\"><div class=\"card-body\"><h5 class=\"card-title\">Consumer Group Offsets</h5><h3 class=\"text-warning\">")
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										var templ_7745c5c3_Var11 string
							 | 
						|
										templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d", len(data.ConsumerGroupOffsets)))
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 83, Col: 107}
							 | 
						|
										}
							 | 
						|
										_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var11))
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, "</h3><p class=\"text-muted\">Saved consumer progress checkpoints</p></div></div></div></div><!-- Topic Information --><div class=\"row mb-4\"><div class=\"col-md-6\"><div class=\"card\"><div class=\"card-header\"><h5 class=\"mb-0\">Topic Information</h5></div><div class=\"card-body\"><dl class=\"row\"><dt class=\"col-sm-4\">Namespace:</dt><dd class=\"col-sm-8\">")
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										var templ_7745c5c3_Var12 string
							 | 
						|
										templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinStringErrs(data.Namespace)
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 100, Col: 72}
							 | 
						|
										}
							 | 
						|
										_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12))
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "</dd><dt class=\"col-sm-4\">Name:</dt><dd class=\"col-sm-8\">")
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										var templ_7745c5c3_Var13 string
							 | 
						|
										templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.JoinStringErrs(data.Name)
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 102, Col: 67}
							 | 
						|
										}
							 | 
						|
										_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var13))
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "</dd><dt class=\"col-sm-4\">Full Name:</dt><dd class=\"col-sm-8\">")
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										var templ_7745c5c3_Var14 string
							 | 
						|
										templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.JoinStringErrs(data.TopicName)
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 104, Col: 72}
							 | 
						|
										}
							 | 
						|
										_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var14))
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 14, "</dd><dt class=\"col-sm-4\">Created:</dt><dd class=\"col-sm-8\">")
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										var templ_7745c5c3_Var15 string
							 | 
						|
										templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.JoinStringErrs(data.CreatedAt.Format("2006-01-02 15:04:05"))
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 106, Col: 102}
							 | 
						|
										}
							 | 
						|
										_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var15))
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, "</dd></dl></div></div></div><div class=\"col-md-6\"><div class=\"card\"><div class=\"card-header d-flex justify-content-between align-items-center\"><h5 class=\"mb-0\"><i class=\"fas fa-clock me-2\"></i>Retention Policy</h5><button type=\"button\" class=\"btn btn-sm btn-outline-primary\" onclick=\"showEditRetentionModal()\"><i class=\"fas fa-edit me-1\"></i>Edit</button></div><div class=\"card-body\"><dl class=\"row\"><dt class=\"col-sm-4\">Status:</dt><dd class=\"col-sm-8\">")
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										if data.Retention.Enabled {
							 | 
						|
											templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, "<span class=\"badge bg-success\">Enabled</span>")
							 | 
						|
											if templ_7745c5c3_Err != nil {
							 | 
						|
												return templ_7745c5c3_Err
							 | 
						|
											}
							 | 
						|
										} else {
							 | 
						|
											templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "<span class=\"badge bg-secondary\">Disabled</span>")
							 | 
						|
											if templ_7745c5c3_Err != nil {
							 | 
						|
												return templ_7745c5c3_Err
							 | 
						|
											}
							 | 
						|
										}
							 | 
						|
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 18, "</dd><dt class=\"col-sm-4\">Duration:</dt><dd class=\"col-sm-8\">")
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										if data.Retention.Enabled {
							 | 
						|
											templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "<span class=\"text-success\">")
							 | 
						|
											if templ_7745c5c3_Err != nil {
							 | 
						|
												return templ_7745c5c3_Err
							 | 
						|
											}
							 | 
						|
											var templ_7745c5c3_Var16 string
							 | 
						|
											templ_7745c5c3_Var16, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d", data.Retention.DisplayValue))
							 | 
						|
											if templ_7745c5c3_Err != nil {
							 | 
						|
												return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 135, Col: 95}
							 | 
						|
											}
							 | 
						|
											_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var16))
							 | 
						|
											if templ_7745c5c3_Err != nil {
							 | 
						|
												return templ_7745c5c3_Err
							 | 
						|
											}
							 | 
						|
											templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, " ")
							 | 
						|
											if templ_7745c5c3_Err != nil {
							 | 
						|
												return templ_7745c5c3_Err
							 | 
						|
											}
							 | 
						|
											var templ_7745c5c3_Var17 string
							 | 
						|
											templ_7745c5c3_Var17, templ_7745c5c3_Err = templ.JoinStringErrs(data.Retention.DisplayUnit)
							 | 
						|
											if templ_7745c5c3_Err != nil {
							 | 
						|
												return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 135, Col: 124}
							 | 
						|
											}
							 | 
						|
											_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var17))
							 | 
						|
											if templ_7745c5c3_Err != nil {
							 | 
						|
												return templ_7745c5c3_Err
							 | 
						|
											}
							 | 
						|
											templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "</span>")
							 | 
						|
											if templ_7745c5c3_Err != nil {
							 | 
						|
												return templ_7745c5c3_Err
							 | 
						|
											}
							 | 
						|
										} else {
							 | 
						|
											templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, "<span class=\"text-muted\">No retention configured</span>")
							 | 
						|
											if templ_7745c5c3_Err != nil {
							 | 
						|
												return templ_7745c5c3_Err
							 | 
						|
											}
							 | 
						|
										}
							 | 
						|
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "</dd></dl></div></div></div></div><!-- Schema Information --><div class=\"row mb-4\"><div class=\"col-12\"><div class=\"card\"><div class=\"card-header\"><h5 class=\"mb-0\">Schema Definition</h5></div><div class=\"card-body\">")
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										if len(data.KeySchema) == 0 && len(data.ValueSchema) == 0 {
							 | 
						|
											templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "<p class=\"text-muted\">No schema information available</p>")
							 | 
						|
											if templ_7745c5c3_Err != nil {
							 | 
						|
												return templ_7745c5c3_Err
							 | 
						|
											}
							 | 
						|
										} else {
							 | 
						|
											templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "<div class=\"table-responsive\"><table class=\"table table-sm\"><thead><tr><th>Field</th><th>Type</th><th>Required</th><th>Schema Part</th></tr></thead> <tbody>")
							 | 
						|
											if templ_7745c5c3_Err != nil {
							 | 
						|
												return templ_7745c5c3_Err
							 | 
						|
											}
							 | 
						|
											for _, field := range data.KeySchema {
							 | 
						|
												templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 26, "<tr><td><code>")
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												var templ_7745c5c3_Var18 string
							 | 
						|
												templ_7745c5c3_Var18, templ_7745c5c3_Err = templ.JoinStringErrs(field.Name)
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 171, Col: 77}
							 | 
						|
												}
							 | 
						|
												_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var18))
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 27, "</code></td><td><span class=\"badge bg-secondary\">")
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												var templ_7745c5c3_Var19 string
							 | 
						|
												templ_7745c5c3_Var19, templ_7745c5c3_Err = templ.JoinStringErrs(field.Type)
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 172, Col: 104}
							 | 
						|
												}
							 | 
						|
												_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var19))
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 28, "</span></td><td>")
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												if field.Required {
							 | 
						|
													templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 29, "<i class=\"fas fa-check text-success\"></i>")
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
												} else {
							 | 
						|
													templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 30, "<i class=\"fas fa-times text-muted\"></i>")
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
												}
							 | 
						|
												templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 31, "</td><td><span class=\"badge bg-primary\">Key</span></td></tr>")
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
											}
							 | 
						|
											for _, field := range data.ValueSchema {
							 | 
						|
												templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 32, "<tr><td><code>")
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												var templ_7745c5c3_Var20 string
							 | 
						|
												templ_7745c5c3_Var20, templ_7745c5c3_Err = templ.JoinStringErrs(field.Name)
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 185, Col: 77}
							 | 
						|
												}
							 | 
						|
												_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var20))
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 33, "</code></td><td><span class=\"badge bg-secondary\">")
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												var templ_7745c5c3_Var21 string
							 | 
						|
												templ_7745c5c3_Var21, templ_7745c5c3_Err = templ.JoinStringErrs(field.Type)
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 186, Col: 104}
							 | 
						|
												}
							 | 
						|
												_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var21))
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 34, "</span></td><td>")
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												if field.Required {
							 | 
						|
													templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 35, "<i class=\"fas fa-check text-success\"></i>")
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
												} else {
							 | 
						|
													templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 36, "<i class=\"fas fa-times text-muted\"></i>")
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
												}
							 | 
						|
												templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 37, "</td><td><span class=\"badge bg-info\">Value</span></td></tr>")
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
											}
							 | 
						|
											templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 38, "</tbody></table></div>")
							 | 
						|
											if templ_7745c5c3_Err != nil {
							 | 
						|
												return templ_7745c5c3_Err
							 | 
						|
											}
							 | 
						|
										}
							 | 
						|
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 39, "</div></div></div></div><!-- Partitions Table --><div class=\"card\"><div class=\"card-header d-flex justify-content-between align-items-center\"><h5 class=\"mb-0\">Partitions</h5><div><button class=\"btn btn-sm btn-outline-secondary\" onclick=\"exportPartitionsCSV()\"><i class=\"fas fa-download me-1\"></i>Export CSV</button></div></div><div class=\"card-body\">")
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										if len(data.Partitions) == 0 {
							 | 
						|
											templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 40, "<div class=\"text-center py-4\"><i class=\"fas fa-server fa-3x text-muted mb-3\"></i><h5>No Partitions Found</h5><p class=\"text-muted\">No partitions are configured for this topic.</p></div>")
							 | 
						|
											if templ_7745c5c3_Err != nil {
							 | 
						|
												return templ_7745c5c3_Err
							 | 
						|
											}
							 | 
						|
										} else {
							 | 
						|
											templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 41, "<div class=\"table-responsive\"><table class=\"table table-striped\" id=\"partitionsTable\"><thead><tr><th>Partition ID</th><th>Leader Broker</th><th>Follower Broker</th><th>Messages</th><th>Size</th><th>Last Data Time</th><th>Created</th></tr></thead> <tbody>")
							 | 
						|
											if templ_7745c5c3_Err != nil {
							 | 
						|
												return templ_7745c5c3_Err
							 | 
						|
											}
							 | 
						|
											for _, partition := range data.Partitions {
							 | 
						|
												templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 42, "<tr><td><span class=\"badge bg-primary\">")
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												var templ_7745c5c3_Var22 string
							 | 
						|
												templ_7745c5c3_Var22, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d", partition.ID))
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 241, Col: 115}
							 | 
						|
												}
							 | 
						|
												_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var22))
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 43, "</span></td><td><strong>")
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												var templ_7745c5c3_Var23 string
							 | 
						|
												templ_7745c5c3_Var23, templ_7745c5c3_Err = templ.JoinStringErrs(partition.LeaderBroker)
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 244, Col: 83}
							 | 
						|
												}
							 | 
						|
												_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var23))
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 44, "</strong></td><td>")
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												if partition.FollowerBroker != "" {
							 | 
						|
													templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 45, "<span class=\"text-muted\">")
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
													var templ_7745c5c3_Var24 string
							 | 
						|
													templ_7745c5c3_Var24, templ_7745c5c3_Err = templ.JoinStringErrs(partition.FollowerBroker)
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 248, Col: 106}
							 | 
						|
													}
							 | 
						|
													_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var24))
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
													templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 46, "</span>")
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
												} else {
							 | 
						|
													templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 47, "<span class=\"text-muted\">None</span>")
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
												}
							 | 
						|
												templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 48, "</td><td>")
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												var templ_7745c5c3_Var25 string
							 | 
						|
												templ_7745c5c3_Var25, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d", partition.MessageCount))
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 253, Col: 94}
							 | 
						|
												}
							 | 
						|
												_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var25))
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 49, "</td><td>")
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												var templ_7745c5c3_Var26 string
							 | 
						|
												templ_7745c5c3_Var26, templ_7745c5c3_Err = templ.JoinStringErrs(util.BytesToHumanReadable(uint64(partition.TotalSize)))
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 254, Col: 107}
							 | 
						|
												}
							 | 
						|
												_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var26))
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 50, "</td><td>")
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												if !partition.LastDataTime.IsZero() {
							 | 
						|
													templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 51, "<span class=\"text-muted\">")
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
													var templ_7745c5c3_Var27 string
							 | 
						|
													templ_7745c5c3_Var27, templ_7745c5c3_Err = templ.JoinStringErrs(partition.LastDataTime.Format("2006-01-02 15:04:05"))
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 257, Col: 134}
							 | 
						|
													}
							 | 
						|
													_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var27))
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
													templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 52, "</span>")
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
												} else {
							 | 
						|
													templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 53, "<span class=\"text-muted\">Never</span>")
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
												}
							 | 
						|
												templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 54, "</td><td><span class=\"text-muted\">")
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												var templ_7745c5c3_Var28 string
							 | 
						|
												templ_7745c5c3_Var28, templ_7745c5c3_Err = templ.JoinStringErrs(partition.CreatedAt.Format("2006-01-02 15:04:05"))
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 263, Col: 127}
							 | 
						|
												}
							 | 
						|
												_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var28))
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 55, "</span></td></tr>")
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
											}
							 | 
						|
											templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 56, "</tbody></table></div>")
							 | 
						|
											if templ_7745c5c3_Err != nil {
							 | 
						|
												return templ_7745c5c3_Err
							 | 
						|
											}
							 | 
						|
										}
							 | 
						|
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 57, "</div></div><!-- Publishers and Subscribers --><div class=\"row mb-4\"><div class=\"col-12\"><div class=\"card\"><div class=\"card-header\"><h5 class=\"mb-0\">Active Publishers <span class=\"badge bg-success\">")
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										var templ_7745c5c3_Var29 string
							 | 
						|
										templ_7745c5c3_Var29, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d", len(data.Publishers)))
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 279, Col: 138}
							 | 
						|
										}
							 | 
						|
										_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var29))
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 58, "</span></h5></div><div class=\"card-body\">")
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										if len(data.Publishers) == 0 {
							 | 
						|
											templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 59, "<div class=\"alert alert-info mb-0\"><i class=\"fas fa-info-circle\"></i> No active publishers found for this topic.</div>")
							 | 
						|
											if templ_7745c5c3_Err != nil {
							 | 
						|
												return templ_7745c5c3_Err
							 | 
						|
											}
							 | 
						|
										} else {
							 | 
						|
											templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 60, "<div class=\"table-responsive\"><table class=\"table table-sm\"><thead><tr><th>Publisher</th><th>Partition</th><th>Broker</th><th>Status</th><th>Published</th><th>Acknowledged</th><th>Last Seen</th></tr></thead> <tbody>")
							 | 
						|
											if templ_7745c5c3_Err != nil {
							 | 
						|
												return templ_7745c5c3_Err
							 | 
						|
											}
							 | 
						|
											for _, publisher := range data.Publishers {
							 | 
						|
												templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 61, "<tr><td>")
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												var templ_7745c5c3_Var30 string
							 | 
						|
												templ_7745c5c3_Var30, templ_7745c5c3_Err = templ.JoinStringErrs(publisher.PublisherName)
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 303, Col: 84}
							 | 
						|
												}
							 | 
						|
												_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var30))
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 62, "</td><td><span class=\"badge bg-primary\">")
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												var templ_7745c5c3_Var31 string
							 | 
						|
												templ_7745c5c3_Var31, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d", publisher.PartitionID))
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 304, Col: 132}
							 | 
						|
												}
							 | 
						|
												_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var31))
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 63, "</span></td><td>")
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												var templ_7745c5c3_Var32 string
							 | 
						|
												templ_7745c5c3_Var32, templ_7745c5c3_Err = templ.JoinStringErrs(publisher.Broker)
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 305, Col: 77}
							 | 
						|
												}
							 | 
						|
												_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var32))
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 64, "</td><td>")
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												if publisher.IsActive {
							 | 
						|
													templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 65, "<span class=\"badge bg-success\">Active</span>")
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
												} else {
							 | 
						|
													templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 66, "<span class=\"badge bg-secondary\">Inactive</span>")
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
												}
							 | 
						|
												templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 67, "</td><td>")
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												if publisher.LastPublishedOffset > 0 {
							 | 
						|
													templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 68, "<span class=\"text-muted\">")
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
													var templ_7745c5c3_Var33 string
							 | 
						|
													templ_7745c5c3_Var33, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d", publisher.LastPublishedOffset))
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 315, Col: 138}
							 | 
						|
													}
							 | 
						|
													_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var33))
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
													templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 69, "</span>")
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
												} else {
							 | 
						|
													templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 70, "<span class=\"text-muted\">-</span>")
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
												}
							 | 
						|
												templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 71, "</td><td>")
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												if publisher.LastAckedOffset > 0 {
							 | 
						|
													templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 72, "<span class=\"text-muted\">")
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
													var templ_7745c5c3_Var34 string
							 | 
						|
													templ_7745c5c3_Var34, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d", publisher.LastAckedOffset))
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 322, Col: 134}
							 | 
						|
													}
							 | 
						|
													_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var34))
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
													templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 73, "</span>")
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
												} else {
							 | 
						|
													templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 74, "<span class=\"text-muted\">-</span>")
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
												}
							 | 
						|
												templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 75, "</td><td>")
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												if !publisher.LastSeenTime.IsZero() {
							 | 
						|
													templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 76, "<span class=\"text-muted\">")
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
													var templ_7745c5c3_Var35 string
							 | 
						|
													templ_7745c5c3_Var35, templ_7745c5c3_Err = templ.JoinStringErrs(publisher.LastSeenTime.Format("15:04:05"))
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 329, Col: 131}
							 | 
						|
													}
							 | 
						|
													_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var35))
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
													templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 77, "</span>")
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
												} else {
							 | 
						|
													templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 78, "<span class=\"text-muted\">-</span>")
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
												}
							 | 
						|
												templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 79, "</td></tr>")
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
											}
							 | 
						|
											templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 80, "</tbody></table></div>")
							 | 
						|
											if templ_7745c5c3_Err != nil {
							 | 
						|
												return templ_7745c5c3_Err
							 | 
						|
											}
							 | 
						|
										}
							 | 
						|
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 81, "</div></div></div></div><div class=\"row mb-4\"><div class=\"col-12\"><div class=\"card\"><div class=\"card-header\"><h5 class=\"mb-0\">Active Subscribers <span class=\"badge bg-info\">")
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										var templ_7745c5c3_Var36 string
							 | 
						|
										templ_7745c5c3_Var36, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d", len(data.Subscribers)))
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 349, Col: 137}
							 | 
						|
										}
							 | 
						|
										_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var36))
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 82, "</span></h5></div><div class=\"card-body\">")
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										if len(data.Subscribers) == 0 {
							 | 
						|
											templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 83, "<div class=\"alert alert-info mb-0\"><i class=\"fas fa-info-circle\"></i> No active subscribers found for this topic.</div>")
							 | 
						|
											if templ_7745c5c3_Err != nil {
							 | 
						|
												return templ_7745c5c3_Err
							 | 
						|
											}
							 | 
						|
										} else {
							 | 
						|
											templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 84, "<div class=\"table-responsive\"><table class=\"table table-sm\"><thead><tr><th>Consumer Group</th><th>Consumer ID</th><th>Partition</th><th>Broker</th><th>Status</th><th>Received</th><th>Acknowledged</th><th>Last Seen</th></tr></thead> <tbody>")
							 | 
						|
											if templ_7745c5c3_Err != nil {
							 | 
						|
												return templ_7745c5c3_Err
							 | 
						|
											}
							 | 
						|
											for _, subscriber := range data.Subscribers {
							 | 
						|
												templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 85, "<tr><td>")
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												var templ_7745c5c3_Var37 string
							 | 
						|
												templ_7745c5c3_Var37, templ_7745c5c3_Err = templ.JoinStringErrs(subscriber.ConsumerGroup)
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 374, Col: 85}
							 | 
						|
												}
							 | 
						|
												_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var37))
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 86, "</td><td>")
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												var templ_7745c5c3_Var38 string
							 | 
						|
												templ_7745c5c3_Var38, templ_7745c5c3_Err = templ.JoinStringErrs(subscriber.ConsumerID)
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 375, Col: 82}
							 | 
						|
												}
							 | 
						|
												_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var38))
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 87, "</td><td><span class=\"badge bg-primary\">")
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												var templ_7745c5c3_Var39 string
							 | 
						|
												templ_7745c5c3_Var39, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d", subscriber.PartitionID))
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 376, Col: 133}
							 | 
						|
												}
							 | 
						|
												_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var39))
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 88, "</span></td><td>")
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												var templ_7745c5c3_Var40 string
							 | 
						|
												templ_7745c5c3_Var40, templ_7745c5c3_Err = templ.JoinStringErrs(subscriber.Broker)
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 377, Col: 78}
							 | 
						|
												}
							 | 
						|
												_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var40))
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 89, "</td><td>")
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												if subscriber.IsActive {
							 | 
						|
													templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 90, "<span class=\"badge bg-success\">Active</span>")
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
												} else {
							 | 
						|
													templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 91, "<span class=\"badge bg-secondary\">Inactive</span>")
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
												}
							 | 
						|
												templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 92, "</td><td>")
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												if subscriber.LastReceivedOffset > 0 {
							 | 
						|
													templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 93, "<span class=\"text-muted\">")
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
													var templ_7745c5c3_Var41 string
							 | 
						|
													templ_7745c5c3_Var41, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d", subscriber.LastReceivedOffset))
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 387, Col: 138}
							 | 
						|
													}
							 | 
						|
													_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var41))
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
													templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 94, "</span>")
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
												} else {
							 | 
						|
													templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 95, "<span class=\"text-muted\">-</span>")
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
												}
							 | 
						|
												templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 96, "</td><td>")
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												if subscriber.CurrentOffset > 0 {
							 | 
						|
													templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 97, "<span class=\"text-muted\">")
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
													var templ_7745c5c3_Var42 string
							 | 
						|
													templ_7745c5c3_Var42, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d", subscriber.CurrentOffset))
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 394, Col: 133}
							 | 
						|
													}
							 | 
						|
													_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var42))
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
													templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 98, "</span>")
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
												} else {
							 | 
						|
													templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 99, "<span class=\"text-muted\">-</span>")
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
												}
							 | 
						|
												templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 100, "</td><td>")
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												if !subscriber.LastSeenTime.IsZero() {
							 | 
						|
													templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 101, "<span class=\"text-muted\">")
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
													var templ_7745c5c3_Var43 string
							 | 
						|
													templ_7745c5c3_Var43, templ_7745c5c3_Err = templ.JoinStringErrs(subscriber.LastSeenTime.Format("15:04:05"))
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 401, Col: 132}
							 | 
						|
													}
							 | 
						|
													_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var43))
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
													templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 102, "</span>")
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
												} else {
							 | 
						|
													templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 103, "<span class=\"text-muted\">-</span>")
							 | 
						|
													if templ_7745c5c3_Err != nil {
							 | 
						|
														return templ_7745c5c3_Err
							 | 
						|
													}
							 | 
						|
												}
							 | 
						|
												templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 104, "</td></tr>")
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
											}
							 | 
						|
											templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 105, "</tbody></table></div>")
							 | 
						|
											if templ_7745c5c3_Err != nil {
							 | 
						|
												return templ_7745c5c3_Err
							 | 
						|
											}
							 | 
						|
										}
							 | 
						|
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 106, "</div></div></div></div><!-- Consumer Group Offsets --><div class=\"row mb-4\"><div class=\"col-12\"><div class=\"card\"><div class=\"card-header\"><h5 class=\"mb-0\">Consumer Group Offsets <span class=\"badge bg-warning\">")
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										var templ_7745c5c3_Var44 string
							 | 
						|
										templ_7745c5c3_Var44, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d", len(data.ConsumerGroupOffsets)))
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 422, Col: 153}
							 | 
						|
										}
							 | 
						|
										_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var44))
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 107, "</span></h5></div><div class=\"card-body\">")
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										if len(data.ConsumerGroupOffsets) == 0 {
							 | 
						|
											templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 108, "<div class=\"alert alert-info mb-0\"><i class=\"fas fa-info-circle\"></i> No consumer group offsets found for this topic.</div>")
							 | 
						|
											if templ_7745c5c3_Err != nil {
							 | 
						|
												return templ_7745c5c3_Err
							 | 
						|
											}
							 | 
						|
										} else {
							 | 
						|
											templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 109, "<div class=\"table-responsive\"><table class=\"table table-sm\"><thead><tr><th>Consumer Group</th><th>Partition</th><th>Offset</th><th>Last Updated</th></tr></thead> <tbody>")
							 | 
						|
											if templ_7745c5c3_Err != nil {
							 | 
						|
												return templ_7745c5c3_Err
							 | 
						|
											}
							 | 
						|
											for _, offset := range data.ConsumerGroupOffsets {
							 | 
						|
												templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 110, "<tr><td><span class=\"badge bg-secondary\">")
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												var templ_7745c5c3_Var45 string
							 | 
						|
												templ_7745c5c3_Var45, templ_7745c5c3_Err = templ.JoinStringErrs(offset.ConsumerGroup)
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 444, Col: 114}
							 | 
						|
												}
							 | 
						|
												_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var45))
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 111, "</span></td><td><span class=\"badge bg-primary\">")
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												var templ_7745c5c3_Var46 string
							 | 
						|
												templ_7745c5c3_Var46, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d", offset.PartitionID))
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 447, Col: 129}
							 | 
						|
												}
							 | 
						|
												_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var46))
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 112, "</span></td><td><strong>")
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												var templ_7745c5c3_Var47 string
							 | 
						|
												templ_7745c5c3_Var47, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d", offset.Offset))
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 450, Col: 101}
							 | 
						|
												}
							 | 
						|
												_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var47))
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 113, "</strong></td><td><span class=\"text-muted\">")
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												var templ_7745c5c3_Var48 string
							 | 
						|
												templ_7745c5c3_Var48, templ_7745c5c3_Err = templ.JoinStringErrs(offset.LastUpdated.Format("2006-01-02 15:04:05"))
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/topic_details.templ`, Line: 453, Col: 134}
							 | 
						|
												}
							 | 
						|
												_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var48))
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
												templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 114, "</span></td></tr>")
							 | 
						|
												if templ_7745c5c3_Err != nil {
							 | 
						|
													return templ_7745c5c3_Err
							 | 
						|
												}
							 | 
						|
											}
							 | 
						|
											templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 115, "</tbody></table></div>")
							 | 
						|
											if templ_7745c5c3_Err != nil {
							 | 
						|
												return templ_7745c5c3_Err
							 | 
						|
											}
							 | 
						|
										}
							 | 
						|
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 116, "</div></div></div></div></div></div></div><script>\n        function exportPartitionsCSV() {\n            const table = document.getElementById('partitionsTable');\n            if (!table) return;\n            \n            let csv = 'Partition ID,Leader Broker,Follower Broker,Messages,Size,Last Data Time,Created\\n';\n            \n            const rows = table.querySelectorAll('tbody tr');\n            rows.forEach(row => {\n                const cells = row.querySelectorAll('td');\n                if (cells.length >= 7) {\n                    const rowData = [\n                        cells[0].querySelector('.badge')?.textContent || '',\n                        cells[1].querySelector('strong')?.textContent || '',\n                        cells[2].textContent || '',\n                        cells[3].textContent || '',\n                        cells[4].textContent || '',\n                        cells[5].querySelector('span')?.textContent || '',\n                        cells[6].querySelector('span')?.textContent || ''\n                    ];\n                    csv += rowData.map(field => `\"${field.replace(/\"/g, '\"\"')}\"`).join(',') + '\\n';\n                }\n            });\n            \n            const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });\n            const link = document.createElement('a');\n            const url = URL.createObjectURL(blob);\n            link.setAttribute('href', url);\n            link.setAttribute('download', 'topic_partitions.csv');\n            link.style.visibility = 'hidden';\n            document.body.appendChild(link);\n            link.click();\n            document.body.removeChild(link);\n        }\n\n        // Edit retention functions\n        function showEditRetentionModal() {\n            const modal = new bootstrap.Modal(document.getElementById('editRetentionModal'));\n            \n            // Get current retention values from the page\n            const currentEnabled = document.querySelector('dd .badge.bg-success') !== null;\n            const currentDurationElement = document.querySelector('dd .text-success');\n            \n            let currentValue = 7;\n            let currentUnit = 'days';\n            \n            if (currentEnabled && currentDurationElement) {\n                const durationText = currentDurationElement.textContent.trim();\n                const parts = durationText.split(' ');\n                if (parts.length >= 2) {\n                    currentValue = parseInt(parts[0]) || 7;\n                    currentUnit = parts[1].toLowerCase();\n                    // Handle plural forms\n                    if (currentUnit.endsWith('s')) {\n                        currentUnit = currentUnit.slice(0, -1);\n                    }\n                    // Map to our dropdown values\n                    if (currentUnit === 'hour') {\n                        currentUnit = 'hours';\n                    } else if (currentUnit === 'day') {\n                        currentUnit = 'days';\n                    }\n                }\n            }\n            \n            // Set current values in the modal\n            document.getElementById('editEnableRetention').checked = currentEnabled;\n            document.getElementById('editRetentionValue').value = currentValue;\n            document.getElementById('editRetentionUnit').value = currentUnit;\n            \n            // Show/hide retention fields based on current state\n            toggleEditRetentionFields();\n            \n            modal.show();\n        }\n\n        function toggleEditRetentionFields() {\n            const enableRetention = document.getElementById('editEnableRetention');\n            const retentionFields = document.getElementById('editRetentionFields');\n            \n            if (enableRetention.checked) {\n                retentionFields.style.display = 'block';\n            } else {\n                retentionFields.style.display = 'none';\n            }\n        }\n\n        function updateRetention() {\n            const form = document.getElementById('editRetentionForm');\n            const formData = new FormData(form);\n            \n            // Get topic details from the page\n            const topicName = document.querySelector('h1').textContent.replace('Topic Details: ', '');\n            const parts = topicName.split('.');\n            \n            if (parts.length < 2) {\n                alert('Invalid topic name format');\n                return;\n            }\n            \n            const namespace = parts[0];\n            const name = parts.slice(1).join('.');\n            \n            // Convert form data to JSON\n            const data = {\n                namespace: namespace,\n                name: name,\n                retention: {\n                    enabled: formData.get('editEnableRetention') === 'on',\n                    retention_seconds: 0\n                }\n            };\n\n            // Calculate retention seconds if enabled\n            if (data.retention.enabled) {\n                const retentionValue = parseInt(formData.get('editRetentionValue'));\n                const retentionUnit = formData.get('editRetentionUnit');\n                \n                if (retentionUnit === 'hours') {\n                    data.retention.retention_seconds = retentionValue * 3600;\n                } else if (retentionUnit === 'days') {\n                    data.retention.retention_seconds = retentionValue * 86400;\n                }\n            }\n\n            // Show loading state\n            const updateButton = document.querySelector('#editRetentionModal .btn-primary');\n            updateButton.disabled = true;\n            updateButton.innerHTML = '<i class=\"fas fa-spinner fa-spin me-1\"></i>Updating...';\n\n            // Send API request\n            fetch('/api/mq/topics/retention/update', {\n                method: 'POST',\n                headers: {\n                    'Content-Type': 'application/json',\n                },\n                body: JSON.stringify(data)\n            })\n            .then(response => response.json())\n            .then(result => {\n                if (result.error) {\n                    alert('Failed to update retention: ' + result.error);\n                } else {\n                    alert('Retention policy updated successfully!');\n                    // Close modal and refresh page\n                    const modal = bootstrap.Modal.getInstance(document.getElementById('editRetentionModal'));\n                    modal.hide();\n                    window.location.reload();\n                }\n            })\n            .catch(error => {\n                alert('Failed to update retention: ' + error.message);\n            })\n            .finally(() => {\n                // Reset button state\n                updateButton.disabled = false;\n                updateButton.innerHTML = '<i class=\"fas fa-save me-1\"></i>Update Retention';\n            });\n        }\n    </script><!-- Edit Retention Modal --><div class=\"modal fade\" id=\"editRetentionModal\" tabindex=\"-1\" role=\"dialog\"><div class=\"modal-dialog modal-lg\" role=\"document\"><div class=\"modal-content\"><div class=\"modal-header\"><h5 class=\"modal-title\"><i class=\"fas fa-edit me-2\"></i>Edit Retention Policy</h5><button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\"></button></div><div class=\"modal-body\"><form id=\"editRetentionForm\"><div class=\"card\"><div class=\"card-header\"><h6 class=\"mb-0\"><i class=\"fas fa-clock me-2\"></i>Retention Configuration</h6></div><div class=\"card-body\"><div class=\"form-check mb-3\"><input class=\"form-check-input\" type=\"checkbox\" id=\"editEnableRetention\" name=\"editEnableRetention\" onchange=\"toggleEditRetentionFields()\"> <label class=\"form-check-label\" for=\"editEnableRetention\">Enable data retention</label></div><div id=\"editRetentionFields\" style=\"display: none;\"><div class=\"row\"><div class=\"col-md-6\"><div class=\"mb-3\"><label for=\"editRetentionValue\" class=\"form-label\">Retention Duration</label> <input type=\"number\" class=\"form-control\" id=\"editRetentionValue\" name=\"editRetentionValue\" min=\"1\" value=\"7\"></div></div><div class=\"col-md-6\"><div class=\"mb-3\"><label for=\"editRetentionUnit\" class=\"form-label\">Unit</label> <select class=\"form-control\" id=\"editRetentionUnit\" name=\"editRetentionUnit\"><option value=\"hours\">Hours</option> <option value=\"days\" selected>Days</option></select></div></div></div><div class=\"alert alert-info\"><i class=\"fas fa-info-circle me-2\"></i> Data older than this duration will be automatically purged to save storage space.</div></div></div></div></form></div><div class=\"modal-footer\"><button type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Cancel</button> <button type=\"button\" class=\"btn btn-primary\" onclick=\"updateRetention()\"><i class=\"fas fa-save me-1\"></i>Update Retention</button></div></div></div></div>")
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										return nil
							 | 
						|
									})
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								var _ = templruntime.GeneratedTemplate
							 |