feat: Add zero-padding to transaction flow numbering for better alignment

This commit is contained in:
Jose Luis Montañes Ojados
2026-01-19 22:09:45 +01:00
parent b2ff043923
commit 6abea047d1

View File

@@ -1390,6 +1390,14 @@ func (m *Model) updateCallDetailView() {
// --- Transaction Flow --- // --- Transaction Flow ---
var right strings.Builder var right strings.Builder
// Calculate padding needed
digits := len(fmt.Sprintf("%d", len(flow.Packets)))
if digits < 2 {
digits = 2
}
// Pad format string e.g. "%03d."
numFmt := fmt.Sprintf("%%0%dd.", digits)
for i, pkt := range flow.Packets { for i, pkt := range flow.Packets {
arrow := "→" arrow := "→"
arrowStyle := m.styles.ArrowOut arrowStyle := m.styles.ArrowOut
@@ -1428,7 +1436,9 @@ func (m *Model) updateCallDetailView() {
} }
ts := pkt.Timestamp.Format("15:04:05.000") ts := pkt.Timestamp.Format("15:04:05.000")
lineStr := fmt.Sprintf("%d. [%s] %s %s", i+1, ts, arrowStyle.Render(arrow), summaryStyle.Render(pkt.Summary())) // Use pre-calculated format
numStr := fmt.Sprintf(numFmt, i+1)
lineStr := fmt.Sprintf("%s [%s] %s %s", numStr, ts, arrowStyle.Render(arrow), summaryStyle.Render(pkt.Summary()))
if pkt.SDP != nil { if pkt.SDP != nil {
mediaIP := pkt.SDP.GetSDPMediaIP() mediaIP := pkt.SDP.GetSDPMediaIP()
@@ -1494,6 +1504,13 @@ func (m *Model) exportCallToLog(flow *sip.CallFlow, filename string) error {
fmt.Fprintf(f, "Transaction Flow:\n") fmt.Fprintf(f, "Transaction Flow:\n")
fmt.Fprintf(f, "-----------------\n") fmt.Fprintf(f, "-----------------\n")
// Calculate padding needed
digits := len(fmt.Sprintf("%d", len(flow.Packets)))
if digits < 2 {
digits = 2
}
numFmt := fmt.Sprintf("%%0%dd.", digits)
for i, pkt := range flow.Packets { for i, pkt := range flow.Packets {
arrow := "->" arrow := "->"
if len(flow.Packets) > 0 && pkt.SourceIP != flow.Packets[0].SourceIP { if len(flow.Packets) > 0 && pkt.SourceIP != flow.Packets[0].SourceIP {
@@ -1513,8 +1530,10 @@ func (m *Model) exportCallToLog(flow *sip.CallFlow, filename string) error {
dst = fmt.Sprintf("%s (%s)", dst, pkt.DestIP) dst = fmt.Sprintf("%s (%s)", dst, pkt.DestIP)
} }
fmt.Fprintf(f, "%d. [%s] %s %s %s (%s line %d)\n", // Use pre-calculated format
i+1, numStr := fmt.Sprintf(numFmt, i+1)
fmt.Fprintf(f, "%s [%s] %s %s %s (%s line %d)\n",
numStr,
pkt.Timestamp.Format("15:04:05.000"), pkt.Timestamp.Format("15:04:05.000"),
src, arrow, dst, src, arrow, dst,
summary, summary,