1- import {
2- createSignal ,
3- untrack ,
4- createEffect ,
5- For ,
6- Setter ,
7- Show ,
8- } from "solid-js" ;
1+ import { createSignal , untrack , For , Setter , Show , createMemo } from "solid-js" ;
92import { FilterToggle } from "~/components/filter-toggle" ;
103import { Toolbar } from "~/components/toolbar" ;
114import { useMonitor } from "~/context/monitor-provider" ;
@@ -14,7 +7,6 @@ import { LogFilterObject, filterLogs } from "~/lib/console/filter-logs";
147import { LogLevelFilter } from "~/components/console/log-level-filter" ;
158import { NoLogs } from "~/components/console/no-logs" ;
169import { LogEvent } from "~/components/console/log-event" ;
17- import type { LogEvent as ILogEvent } from "~/lib/proto/logs" ;
1810import { VirtualList } from "~/components/virtual-list" ;
1911
2012export default function Console ( ) {
@@ -45,40 +37,15 @@ export default function Console() {
4537
4638 const [ filter , setFilter ] = createStore < LogFilterObject > ( initialFilters ( ) ) ;
4739
48- const [ filteredLogs , setFilteredLogs ] = createSignal < ILogEvent [ ] > ( [ ] ) ;
49-
50- // If the filter changes we want to do a full filter on the list
51- createEffect ( ( ) => {
52- setFilteredLogs (
53- filterLogs (
54- untrack ( ( ) => monitorData ) ,
55- filter ,
56- untrack ( ( ) => monitorData . logs ) ,
57- ) ,
58- ) ;
59- } ) ;
40+ const filteredLogs = createMemo ( ( ) =>
41+ filterLogs (
42+ untrack ( ( ) => monitorData ) ,
43+ filter ,
44+ monitorData . logs ,
45+ ) ,
46+ ) ;
6047
6148 // If there is new logs coming in, we only want to perform filtering on the newly received logs
62- createEffect ( ( oldLength : number ) => {
63- const newLength = monitorData . logs . length ;
64-
65- // Partial filter
66- if ( newLength > oldLength ) {
67- const metadata = untrack ( ( ) => monitorData ) ;
68- const alreadyFilteredLogs = untrack ( ( ) => filteredLogs ( ) ) ;
69- setFilteredLogs (
70- alreadyFilteredLogs . concat (
71- filterLogs (
72- metadata ,
73- untrack ( ( ) => filter ) ,
74- monitorData . logs . slice ( oldLength - 1 , newLength - 1 ) ,
75- ) ,
76- ) ,
77- ) ;
78- }
79-
80- return newLength ;
81- } , 0 ) ;
8249
8350 const resetFilter = ( ) => setFilter ( initialFilters ) ;
8451
0 commit comments