summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
Diffstat (limited to 'internal')
-rw-r--r--internal/globalfilter/filter.go31
-rw-r--r--internal/tui/filterstack.go17
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 {