Add ability to filter by clicking item

This commit is contained in:
Nicolas Mowen 2024-04-05 09:44:17 -06:00
parent 9f5d555670
commit ebe49869a5

View File

@ -296,6 +296,10 @@ function Logs() {
// eslint-disable-next-line react-hooks/exhaustive-deps // eslint-disable-next-line react-hooks/exhaustive-deps
}, [logLines, logService]); }, [logLines, logService]);
// log filtering
const [filterSeverity, setFilterSeverity] = useState<LogSeverity>();
return ( return (
<div className="size-full p-2 flex flex-col"> <div className="size-full p-2 flex flex-col">
<div className="flex justify-between items-center"> <div className="flex justify-between items-center">
@ -307,6 +311,7 @@ function Logs() {
onValueChange={(value: LogType) => { onValueChange={(value: LogType) => {
if (value) { if (value) {
setLogs([]); setLogs([]);
setFilterSeverity(undefined);
setLogService(value); setLogService(value);
} }
}} // don't allow the severity to be unselected }} // don't allow the severity to be unselected
@ -371,6 +376,15 @@ function Logs() {
: undefined; : undefined;
if (logLine) { if (logLine) {
const line = logLines[idx - logRange.start];
if (filterSeverity && line.severity != filterSeverity) {
return (
<div
ref={idx == logRange.start + 10 ? startLogRef : undefined}
/>
);
}
return ( return (
<LogLineData <LogLineData
key={`${idx}-${logService}`} key={`${idx}-${logService}`}
@ -378,7 +392,8 @@ function Logs() {
idx == logRange.start + 10 ? startLogRef : undefined idx == logRange.start + 10 ? startLogRef : undefined
} }
className={initialScroll ? "" : "invisible"} className={initialScroll ? "" : "invisible"}
line={logLines[idx - logRange.start]} line={line}
onClickSeverity={() => setFilterSeverity(line.severity)}
/> />
); );
} }
@ -395,8 +410,14 @@ type LogLineDataProps = {
startRef?: (node: HTMLDivElement | null) => void; startRef?: (node: HTMLDivElement | null) => void;
className: string; className: string;
line: LogLine; line: LogLine;
onClickSeverity: () => void;
}; };
function LogLineData({ startRef, className, line }: LogLineDataProps) { function LogLineData({
startRef,
className,
line,
onClickSeverity,
}: LogLineDataProps) {
// long log message // long log message
const contentRef = useRef<HTMLDivElement | null>(null); const contentRef = useRef<HTMLDivElement | null>(null);
@ -422,6 +443,7 @@ function LogLineData({ startRef, className, line }: LogLineDataProps) {
<div className="h-full p-1 flex items-center gap-2"> <div className="h-full p-1 flex items-center gap-2">
<div <div
className={`py-[1px] px-1 capitalize text-xs rounded-md cursor-pointer ${severityClassName}`} className={`py-[1px] px-1 capitalize text-xs rounded-md cursor-pointer ${severityClassName}`}
onClick={onClickSeverity}
> >
{line.severity} {line.severity}
</div> </div>