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;