diff --git a/ui-common/src/components/ServiceMapModal/ServiceMapModal.tsx b/ui-common/src/components/ServiceMapModal/ServiceMapModal.tsx index 176075cb9..9ea86c681 100644 --- a/ui-common/src/components/ServiceMapModal/ServiceMapModal.tsx +++ b/ui-common/src/components/ServiceMapModal/ServiceMapModal.tsx @@ -47,14 +47,11 @@ const LegentLabel: React.FC = ({ color, name }) => { } -const protocols = [ - { key: "HTTP", value: "HTTP", component: }, - { key: "HTTP/2", value: "HTTP/2", component: }, - { key: "gRPC", value: "gRPC", component: }, - { key: "GQL", value: "GQL", component: }, - { key: "AMQP", value: "AMQP", component: }, - { key: "KAFKA", value: "KAFKA", component: }, - { key: "REDIS", value: "REDIS", component: },] +type ProtocolType = { + key: string; + value: string; + component: JSX.Element; +}; interface ServiceMapModalProps { @@ -68,7 +65,7 @@ export const ServiceMapModal: React.FC = ({ isOpen, onClos const commonClasses = useCommonStyles(); const [isLoading, setIsLoading] = useState(true); const [graphData, setGraphData] = useState({ nodes: [], edges: [] }); - const [checkedProtocols, setCheckedProtocols] = useState(protocols.map(x => x.key)) + const [checkedProtocols, setCheckedProtocols] = useState([]) const [checkedServices, setCheckedServices] = useState([]) const [serviceMapApiData, setServiceMapApiData] = useState({ edges: [], nodes: [] }) const [servicesSearchVal, setServicesSearchVal] = useState("") @@ -120,6 +117,14 @@ export const ServiceMapModal: React.FC = ({ isOpen, onClos .map((edge) => { return { key: edge.label, value: edge.label } }) .sort((a, b) => { return a.key.localeCompare(b.key) }), []) + const getProtocolsForFilter = useMemo(() => { + return serviceMapApiData.edges.reduce((returnArr, currentValue, currentIndex, array) => { + if (!returnArr.find(prot => prot.key === currentValue.protocol.abbr)) + returnArr.push({ key: currentValue.protocol.abbr, value: currentValue.protocol.abbr, component: }) + return returnArr + }, new Array()) + }, [serviceMapApiData]) + const getServicesForFilter = useMemo(() => { const resolved = mapToKeyValForFilter(serviceMapApiData.nodes?.filter(x => x.resolved)) const unResolved = mapToKeyValForFilter(serviceMapApiData.nodes?.filter(x => !x.resolved)) @@ -150,6 +155,12 @@ export const ServiceMapModal: React.FC = ({ isOpen, onClos // eslint-disable-next-line react-hooks/exhaustive-deps }, [getServicesForFilter]) + useEffect(() => { + if (checkedProtocols.length === 0) { + setCheckedProtocols(getProtocolsForFilter.map(x => x.key)) + } + }, [getProtocolsForFilter]) + useEffect(() => { getServiceMapData() }, [getServiceMapData]) @@ -212,7 +223,7 @@ export const ServiceMapModal: React.FC = ({ isOpen, onClos PROTOCOLS  ({checkedProtocols.length}) -