mirror of
https://github.com/kubeshark/kubeshark.git
synced 2025-06-28 17:19:44 +00:00
service filter (#324)
This commit is contained in:
parent
fd48cc6d87
commit
aa3510e936
@ -19,7 +19,8 @@ interface EntriesListProps {
|
|||||||
setNoMoreDataBottom: (flag: boolean) => void;
|
setNoMoreDataBottom: (flag: boolean) => void;
|
||||||
methodsFilter: Array<string>;
|
methodsFilter: Array<string>;
|
||||||
statusFilter: Array<string>;
|
statusFilter: Array<string>;
|
||||||
pathFilter: string
|
pathFilter: string;
|
||||||
|
serviceFilter: string;
|
||||||
listEntryREF: any;
|
listEntryREF: any;
|
||||||
onScrollEvent: (isAtBottom:boolean) => void;
|
onScrollEvent: (isAtBottom:boolean) => void;
|
||||||
scrollableList: boolean;
|
scrollableList: boolean;
|
||||||
@ -32,7 +33,7 @@ enum FetchOperator {
|
|||||||
|
|
||||||
const api = new Api();
|
const api = new Api();
|
||||||
|
|
||||||
export const EntriesList: React.FC<EntriesListProps> = ({entries, setEntries, focusedEntryId, setFocusedEntryId, connectionOpen, noMoreDataTop, setNoMoreDataTop, noMoreDataBottom, setNoMoreDataBottom, methodsFilter, statusFilter, pathFilter, listEntryREF, onScrollEvent, scrollableList}) => {
|
export const EntriesList: React.FC<EntriesListProps> = ({entries, setEntries, focusedEntryId, setFocusedEntryId, connectionOpen, noMoreDataTop, setNoMoreDataTop, noMoreDataBottom, setNoMoreDataBottom, methodsFilter, statusFilter, pathFilter, serviceFilter, listEntryREF, onScrollEvent, scrollableList}) => {
|
||||||
|
|
||||||
const [loadMoreTop, setLoadMoreTop] = useState(false);
|
const [loadMoreTop, setLoadMoreTop] = useState(false);
|
||||||
const [isLoadingTop, setIsLoadingTop] = useState(false);
|
const [isLoadingTop, setIsLoadingTop] = useState(false);
|
||||||
@ -54,10 +55,11 @@ export const EntriesList: React.FC<EntriesListProps> = ({entries, setEntries, fo
|
|||||||
const filterEntries = useCallback((entry) => {
|
const filterEntries = useCallback((entry) => {
|
||||||
if(methodsFilter.length > 0 && !methodsFilter.includes(entry.method.toLowerCase())) return;
|
if(methodsFilter.length > 0 && !methodsFilter.includes(entry.method.toLowerCase())) return;
|
||||||
if(pathFilter && entry.path?.toLowerCase()?.indexOf(pathFilter) === -1) return;
|
if(pathFilter && entry.path?.toLowerCase()?.indexOf(pathFilter) === -1) return;
|
||||||
|
if(serviceFilter && entry.service?.toLowerCase()?.indexOf(serviceFilter) === -1) return;
|
||||||
if(statusFilter.includes(StatusType.SUCCESS) && entry.statusCode >= 400) return;
|
if(statusFilter.includes(StatusType.SUCCESS) && entry.statusCode >= 400) return;
|
||||||
if(statusFilter.includes(StatusType.ERROR) && entry.statusCode < 400) return;
|
if(statusFilter.includes(StatusType.ERROR) && entry.statusCode < 400) return;
|
||||||
return entry;
|
return entry;
|
||||||
},[methodsFilter, pathFilter, statusFilter])
|
},[methodsFilter, pathFilter, statusFilter, serviceFilter])
|
||||||
|
|
||||||
const filteredEntries = useMemo(() => {
|
const filteredEntries = useMemo(() => {
|
||||||
return entries.filter(filterEntries);
|
return entries.filter(filterEntries);
|
||||||
|
@ -11,14 +11,17 @@ interface FiltersProps {
|
|||||||
setStatusFilter: (methods: Array<string>) => void;
|
setStatusFilter: (methods: Array<string>) => void;
|
||||||
pathFilter: string
|
pathFilter: string
|
||||||
setPathFilter: (val: string) => void;
|
setPathFilter: (val: string) => void;
|
||||||
|
serviceFilter: string
|
||||||
|
setServiceFilter: (val: string) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const Filters: React.FC<FiltersProps> = ({methodsFilter, setMethodsFilter, statusFilter, setStatusFilter, pathFilter, setPathFilter}) => {
|
export const Filters: React.FC<FiltersProps> = ({methodsFilter, setMethodsFilter, statusFilter, setStatusFilter, pathFilter, setPathFilter, serviceFilter, setServiceFilter}) => {
|
||||||
|
|
||||||
return <div className={styles.container}>
|
return <div className={styles.container}>
|
||||||
<MethodFilter methodsFilter={methodsFilter} setMethodsFilter={setMethodsFilter}/>
|
<MethodFilter methodsFilter={methodsFilter} setMethodsFilter={setMethodsFilter}/>
|
||||||
<StatusTypesFilter statusFilter={statusFilter} setStatusFilter={setStatusFilter}/>
|
<StatusTypesFilter statusFilter={statusFilter} setStatusFilter={setStatusFilter}/>
|
||||||
<PathFilter pathFilter={pathFilter} setPathFilter={setPathFilter}/>
|
<PathFilter pathFilter={pathFilter} setPathFilter={setPathFilter}/>
|
||||||
|
<ServiceFilter serviceFilter={serviceFilter} setServiceFilter={setServiceFilter}/>
|
||||||
</div>;
|
</div>;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -117,3 +120,18 @@ const PathFilter: React.FC<PathFilterProps> = ({pathFilter, setPathFilter}) => {
|
|||||||
</FilterContainer>;
|
</FilterContainer>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
interface ServiceFilterProps {
|
||||||
|
serviceFilter: string;
|
||||||
|
setServiceFilter: (val: string) => void;
|
||||||
|
}
|
||||||
|
|
||||||
|
const ServiceFilter: React.FC<ServiceFilterProps> = ({serviceFilter, setServiceFilter}) => {
|
||||||
|
|
||||||
|
return <FilterContainer>
|
||||||
|
<div className={styles.filterLabel}>Service</div>
|
||||||
|
<div>
|
||||||
|
<TextField value={serviceFilter} variant="outlined" className={styles.filterText} style={{minWidth: '150px'}} onChange={(e: any) => setServiceFilter(e.target.value)}/>
|
||||||
|
</div>
|
||||||
|
</FilterContainer>;
|
||||||
|
};
|
||||||
|
|
||||||
|
@ -58,6 +58,7 @@ export const TrafficPage: React.FC<TrafficPageProps> = ({setAnalyzeStatus, onTLS
|
|||||||
const [methodsFilter, setMethodsFilter] = useState([]);
|
const [methodsFilter, setMethodsFilter] = useState([]);
|
||||||
const [statusFilter, setStatusFilter] = useState([]);
|
const [statusFilter, setStatusFilter] = useState([]);
|
||||||
const [pathFilter, setPathFilter] = useState("");
|
const [pathFilter, setPathFilter] = useState("");
|
||||||
|
const [serviceFilter, setServiceFilter] = useState("");
|
||||||
|
|
||||||
const [tappingStatus, setTappingStatus] = useState(null);
|
const [tappingStatus, setTappingStatus] = useState(null);
|
||||||
|
|
||||||
@ -192,6 +193,8 @@ export const TrafficPage: React.FC<TrafficPageProps> = ({setAnalyzeStatus, onTLS
|
|||||||
setStatusFilter={setStatusFilter}
|
setStatusFilter={setStatusFilter}
|
||||||
pathFilter={pathFilter}
|
pathFilter={pathFilter}
|
||||||
setPathFilter={setPathFilter}
|
setPathFilter={setPathFilter}
|
||||||
|
serviceFilter={serviceFilter}
|
||||||
|
setServiceFilter={setServiceFilter}
|
||||||
/>
|
/>
|
||||||
<div className={styles.container}>
|
<div className={styles.container}>
|
||||||
<EntriesList entries={entries}
|
<EntriesList entries={entries}
|
||||||
@ -206,6 +209,7 @@ export const TrafficPage: React.FC<TrafficPageProps> = ({setAnalyzeStatus, onTLS
|
|||||||
methodsFilter={methodsFilter}
|
methodsFilter={methodsFilter}
|
||||||
statusFilter={statusFilter}
|
statusFilter={statusFilter}
|
||||||
pathFilter={pathFilter}
|
pathFilter={pathFilter}
|
||||||
|
serviceFilter={serviceFilter}
|
||||||
listEntryREF={listEntry}
|
listEntryREF={listEntry}
|
||||||
onScrollEvent={onScrollEvent}
|
onScrollEvent={onScrollEvent}
|
||||||
scrollableList={disableScrollList}
|
scrollableList={disableScrollList}
|
||||||
|
Loading…
Reference in New Issue
Block a user