import React, { useMemo } from "react"; import { first, includes } from "lodash"; import Menu from "antd/lib/menu"; import Link from "@/components/Link"; import PlainButton from "@/components/PlainButton"; import HelpTrigger from "@/components/HelpTrigger"; import CreateDashboardDialog from "@/components/dashboards/CreateDashboardDialog"; import { useCurrentRoute } from "@/components/ApplicationArea/Router"; import { Auth, currentUser } from "@/services/auth"; import settingsMenu from "@/services/settingsMenu"; import logoUrl from "@/assets/images/redash_icon_small.png"; import DesktopOutlinedIcon from "@ant-design/icons/DesktopOutlined"; import CodeOutlinedIcon from "@ant-design/icons/CodeOutlined"; import AlertOutlinedIcon from "@ant-design/icons/AlertOutlined"; import PlusOutlinedIcon from "@ant-design/icons/PlusOutlined"; import QuestionCircleOutlinedIcon from "@ant-design/icons/QuestionCircleOutlined"; import SettingOutlinedIcon from "@ant-design/icons/SettingOutlined"; import VersionInfo from "./VersionInfo"; import "./DesktopNavbar.less"; function NavbarSection({ children, ...props }) { return ( {children} ); } function useNavbarActiveState() { const currentRoute = useCurrentRoute(); return useMemo( () => ({ dashboards: includes( [ "Dashboards.List", "Dashboards.Favorites", "Dashboards.My", "Dashboards.ViewOrEdit", "Dashboards.LegacyViewOrEdit", ], currentRoute.id ), queries: includes( [ "Queries.List", "Queries.Favorites", "Queries.Archived", "Queries.My", "Queries.View", "Queries.New", "Queries.Edit", ], currentRoute.id ), dataSources: includes(["DataSources.List"], currentRoute.id), alerts: includes(["Alerts.List", "Alerts.New", "Alerts.View", "Alerts.Edit"], currentRoute.id), }), [currentRoute.id] ); } export default function DesktopNavbar() { const firstSettingsTab = first(settingsMenu.getAvailableItems()); const activeState = useNavbarActiveState(); const canCreateQuery = currentUser.hasPermission("create_query"); const canCreateDashboard = currentUser.hasPermission("create_dashboard"); const canCreateAlert = currentUser.hasPermission("list_alerts"); return ( ); }