Files
Amir Raminfar f17b758fdf feat: add inverse/exclude filter to log search (#4690)
Co-authored-by: lingfish <jason@lucid.net.au>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 14:31:03 +00:00

28 lines
915 B
TypeScript

import { ComplexLogEntry, type LogMessage, type LogEntry } from "@/models/LogEntry";
export function useVisibleFilter(visibleKeys: Ref<Map<string[], boolean>>) {
const { isSearching, inverseFilter } = useSearchFilter();
function filteredPayload(messages: Ref<LogEntry<LogMessage>[]>) {
return computed(() => {
return messages.value
.map((d) => {
if (d instanceof ComplexLogEntry) {
return ComplexLogEntry.fromLogEvent(d, visibleKeys);
} else {
return d;
}
})
.filter((d) => {
if (isSearching.value && d instanceof ComplexLogEntry) {
const hasMark = Object.values(d.message).some((v) => JSON.stringify(v)?.includes("<mark>"));
return inverseFilter.value ? !hasMark : hasMark;
} else {
return true;
}
});
});
}
return { filteredPayload };
}