@@ -21,6 +21,7 @@ import { LogLine } from '../../types';
2121import { useSettings } from '../../hooks' ;
2222import FilterInput from '../FilterInput' ;
2323import ModNameSelect from './ModNameSelect' ;
24+ import LogTypeSelect from './LogTypeSelect' ;
2425import PageContainer from '../PageContainer' ;
2526import { useRecoilState } from 'recoil' ;
2627import { logLinesState } from '../../store' ;
@@ -63,6 +64,9 @@ const useStyles = makeStyles(({ palette, spacing }) => ({
6364 header : {
6465 backgroundColor : 'white' ,
6566 } ,
67+ typeSelectHeader : {
68+ width : 150 ,
69+ } ,
6670 modSelectHeader : {
6771 width : 150 ,
6872 } ,
@@ -100,6 +104,7 @@ const OwmlLog: React.FunctionComponent = () => {
100104
101105 const [ paginatedLines , setPaginatedLines ] = useState < LogLine [ ] > ( [ ] ) ;
102106 const [ selectedModName , setSelectedModName ] = useState < string > ( '' ) ;
107+ const [ selectedLogType , setSelectedLogType ] = useState < string > ( '' ) ;
103108 const [ filter , setFilter ] = useState ( '' ) ;
104109 const [ page , setPage ] = useState < number > ( 0 ) ;
105110
@@ -122,16 +127,19 @@ const OwmlLog: React.FunctionComponent = () => {
122127 const lowerCaseFilter = filter . toLowerCase ( ) ;
123128 const isFilteringByName = filter !== '' ;
124129 const isFilteringByMod = selectedModName !== '' ;
130+ const isFilteringByType = selectedLogType !== '' ;
125131
126132 let filteredLines : LogLine [ ] = [ ] ;
127- if ( isFilteringByName || isFilteringByMod ) {
133+ if ( isFilteringByName || isFilteringByMod || isFilteringByType ) {
128134 filteredLines = logLines . filter ( ( line ) => {
129135 const isFromSelectedMod =
130136 ! isFilteringByMod || line . modName === selectedModName ;
137+ const isFromSelectedType =
138+ ! isFilteringByType || line . type === selectedLogType ;
131139 const isMatchWithFilter =
132140 ! isFilteringByName ||
133141 line . text . toLowerCase ( ) . includes ( lowerCaseFilter ) ;
134- return isMatchWithFilter && isFromSelectedMod ;
142+ return isMatchWithFilter && isFromSelectedMod && isFromSelectedType ;
135143 } ) ;
136144 } else {
137145 filteredLines = logLines ;
@@ -152,12 +160,12 @@ const OwmlLog: React.FunctionComponent = () => {
152160 hasHiddenLines . current = logLines . length !== lines . length ;
153161
154162 setPaginatedLines ( lines ) ;
155- } , [ filter , logLines , selectedModName , page , logLinesLimit ] ) ;
163+ } , [ filter , logLines , selectedModName , selectedLogType , page , logLinesLimit ] ) ;
156164
157165 useEffect ( ( ) => {
158166 debugConsole . log ( 'useEffect: LogsPage pagination reset' ) ;
159167 setPage ( 0 ) ;
160- } , [ filter , selectedModName ] ) ;
168+ } , [ filter , selectedModName , selectedLogType ] ) ;
161169
162170 function handlePreviousPageClick ( ) {
163171 setPage ( ( prevPage ) => prevPage + 1 ) ;
@@ -201,6 +209,13 @@ const OwmlLog: React.FunctionComponent = () => {
201209 </ IconButton >
202210 </ Tooltip >
203211 </ LogCell >
212+ < LogCell className = { styles . typeSelectHeader } >
213+ < LogTypeSelect
214+ value = { selectedLogType }
215+ onChange = { setSelectedLogType }
216+ logLines = { logLines }
217+ />
218+ </ LogCell >
204219 < LogCell className = { styles . modSelectHeader } >
205220 < ModNameSelect
206221 value = { selectedModName }
0 commit comments