feat: Add zero-padding to transaction flow numbering for better alignment
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user