diff options
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/globalfilter/filter.go | 31 | ||||
| -rw-r--r-- | internal/tui/filterstack.go | 17 |
2 files changed, 27 insertions, 21 deletions
diff --git a/internal/globalfilter/filter.go b/internal/globalfilter/filter.go index afc2698..ab3b0fb 100644 --- a/internal/globalfilter/filter.go +++ b/internal/globalfilter/filter.go @@ -176,21 +176,24 @@ func (f Filter) IsActive() bool { return false } +// Summary returns a compact human-readable description of the active filter +// predicates, e.g. "syscall~read pid=1234". Returns "all" when no predicates +// are set. func (f Filter) Summary() string { parts := make([]string, 0, 10) if f.ErrorsOnly { parts = append(parts, "errors") } - parts = appendStringSummary(parts, "syscall", f.Syscall) - parts = appendStringSummary(parts, "comm", f.Comm) - parts = appendStringSummary(parts, "file", f.File) - parts = appendNumericSummary(parts, "pid", f.PID, false) - parts = appendNumericSummary(parts, "tid", f.TID, false) - parts = appendNumericSummary(parts, "fd", f.FD, false) - parts = appendNumericSummary(parts, "latency", f.LatencyNs, true) - parts = appendNumericSummary(parts, "gap", f.GapNs, true) - parts = appendNumericSummary(parts, "bytes", f.Bytes, false) - parts = appendNumericSummary(parts, "ret", f.RetVal, false) + parts = AppendStringSummary(parts, "syscall", f.Syscall) + parts = AppendStringSummary(parts, "comm", f.Comm) + parts = AppendStringSummary(parts, "file", f.File) + parts = AppendNumericSummary(parts, "pid", f.PID, false) + parts = AppendNumericSummary(parts, "tid", f.TID, false) + parts = AppendNumericSummary(parts, "fd", f.FD, false) + parts = AppendNumericSummary(parts, "latency", f.LatencyNs, true) + parts = AppendNumericSummary(parts, "gap", f.GapNs, true) + parts = AppendNumericSummary(parts, "bytes", f.Bytes, false) + parts = AppendNumericSummary(parts, "ret", f.RetVal, false) if len(parts) == 0 { return "all" } @@ -218,7 +221,9 @@ func ParseDurationNs(input string) (int64, error) { return d.Nanoseconds(), nil } -func appendStringSummary(parts []string, name string, sf *StringFilter) []string { +// AppendStringSummary appends a "name~pattern" token to parts when the filter +// is non-nil and non-empty, then returns the updated slice. +func AppendStringSummary(parts []string, name string, sf *StringFilter) []string { if sf == nil { return parts } @@ -229,7 +234,9 @@ func appendStringSummary(parts []string, name string, sf *StringFilter) []string return append(parts, fmt.Sprintf("%s~%s", name, pattern)) } -func appendNumericSummary(parts []string, name string, nf *NumericFilter, duration bool) []string { +// AppendNumericSummary appends a "nameOPvalue" token to parts when the filter +// is non-nil, formatting the value as a duration string when duration is true. +func AppendNumericSummary(parts []string, name string, nf *NumericFilter, duration bool) []string { if nf == nil { return parts } diff --git a/internal/tui/filterstack.go b/internal/tui/filterstack.go index 3aadea3..dbd26a0 100644 --- a/internal/tui/filterstack.go +++ b/internal/tui/filterstack.go @@ -1,10 +1,7 @@ package tui import ( - "fmt" - "strconv" "strings" - "time" "ior/internal/globalfilter" ) @@ -132,6 +129,9 @@ func globalFilterActionLabel(prev, next globalfilter.Filter, action string) stri return strings.Join(parts, " ") } +// appendStringFilterChange appends a change token to parts for a string +// filter field. It emits "clear name" when the filter is removed, or delegates +// to globalfilter.AppendStringSummary for the canonical "name~pattern" format. func appendStringFilterChange(parts []string, name string, prev, next *globalfilter.StringFilter) []string { if sameStringFilter(prev, next) { return parts @@ -139,9 +139,12 @@ func appendStringFilterChange(parts []string, name string, prev, next *globalfil if next == nil || strings.TrimSpace(next.Pattern) == "" { return append(parts, "clear "+name) } - return append(parts, fmt.Sprintf("%s~%s", name, strings.TrimSpace(next.Pattern))) + return globalfilter.AppendStringSummary(parts, name, next) } +// appendNumericFilterChange appends a change token to parts for a numeric +// filter field. It emits "clear name" when the filter is removed, or delegates +// to globalfilter.AppendNumericSummary for the canonical "nameOPvalue" format. func appendNumericFilterChange(parts []string, name string, prev, next *globalfilter.NumericFilter, duration bool) []string { if sameNumericFilter(prev, next) { return parts @@ -149,11 +152,7 @@ func appendNumericFilterChange(parts []string, name string, prev, next *globalfi if next == nil { return append(parts, "clear "+name) } - value := strconv.FormatInt(next.Value, 10) - if duration { - value = time.Duration(next.Value).String() - } - return append(parts, fmt.Sprintf("%s%s%s", name, globalfilter.CompareOpSymbol(next.Op), value)) + return globalfilter.AppendNumericSummary(parts, name, next, duration) } func sameStringFilter(a, b *globalfilter.StringFilter) bool { |
