import { List } from "@material-ui/core"; import AssessmentIcon from "@material-ui/icons/Assessment"; import BugReportIcon from "@material-ui/icons/BugReport"; import BuildIcon from "@material-ui/icons/Build"; import CloudDownloadIcon from "@material-ui/icons/CloudDownload"; import CommuteIcon from "@material-ui/icons/Commute"; import DirectionsCarIcon from "@material-ui/icons/DirectionsCar"; import HomeIcon from "@material-ui/icons/Home"; import SettingsInputCompositeIcon from "@material-ui/icons/SettingsInputComposite"; import { default as React, useEffect, useState } from "react"; import { getStaticDashboardSubmenu } from "../../services/staticDashboards"; import { hasRole, Permissions } from "../../utils/roles"; import { useUserContext } from "../Contexts/UserContext"; import SupersetDashboardList from "../SupersetDashboardList/SupersetDashboardList"; import { ExpandableSideMenuItem, MenuItem } from "./MenuItem"; const menuData = [ { label: "Home", to: "/home", icon: , roles: [], }, { label: "Deployments", to: "/packages", icon: , rolesPerProvider: Permissions.FiskerMagnaRead, }, { label: "Vehicles", to: "/vehicles", icon: , rolesPerProvider: Permissions.FiskerMagnaRead, }, { label: "Issues", to: "/issues", icon: , rolesPerProvider: Permissions.FiskerRead, }, { label: "Fleets", to: "/fleets", icon: , rolesPerProvider: Permissions.FiskerRead, }, { label: "Datascope", to: null, icon: , rolesPerProvider: Permissions.FiskerMagnaRead, component: SupersetDashboardList, submenus: getStaticDashboardSubmenu(Permissions.FiskerMagnaRead), }, { label: "Suppliers", to: "/suppliers", icon: , rolesPerProvider: Permissions.FiskerSupplierAdmin, }, { label: "Tools", to: "/tools/certificates/add", icon: , rolesPerProvider: Permissions.FiskerTools, submenus: [ { label: "Certificate", to: "/tools/certificates/add", rolesPerProvider: Permissions.FiskerCertificate, }, { label: "Security.dll", to: "/tools/security-dll", rolesPerProvider: Permissions.Magna, }, { label: "SMS", to: "/tools/sms/send", rolesPerProvider: Permissions.FiskerCreate, }, ], }, ]; const SideMenu = () => { const { groups, providers } = useUserContext(); const [menu, setMenu] = useState(menuData); useEffect(() => { filterMenu(groups, providers, setMenu); }, [groups, providers]); return ( {menu.map((item, index) => { const key = `menu-${index}`; if (item.submenus) return ; return ; })} ); }; const reduceMenu = (data, groups, providers) => { return data.reduce((result, item) => { if (hasRole(groups, item.rolesPerProvider, providers)) { if (item.submenus) { item.submenus = reduceMenu(item.submenus, groups, providers); } result.push(item); } return result; }, []); } const filterMenu = (groups, providers, setMenu) => { const filteredMenu = reduceMenu(menuData, groups, providers); setMenu(filteredMenu); }; export default SideMenu;