"use client"; import { Button } from "@/app/_components/ui/button"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from "@/app/_components/ui/tooltip"; import { Popover, PopoverContent, PopoverTrigger, } from "@/app/_components/ui/popover"; import { ChevronDown, Siren } from "lucide-react"; import { IconMessage } from "@tabler/icons-react"; import { useEffect, useRef, useState } from "react"; import type { ITooltipsControl } from "./tooltips"; import MonthSelector from "../month-selector"; import YearSelector from "../year-selector"; import CategorySelector from "../category-selector"; import SourceTypeSelector from "../source-type-selector"; import { ICrimeSourceTypes } from "@/app/_utils/types/map"; // Define the additional tools and features const additionalTooltips = [ { id: "reports" as ITooltipsControl, icon: , label: "Police Report", }, { id: "recents" as ITooltipsControl, icon: , label: "Recent incidents", }, ]; interface AdditionalTooltipsProps { activeControl?: string; onControlChange?: (controlId: ITooltipsControl) => void; selectedYear: number | "all"; setSelectedYear: (year: number | "all") => void; selectedMonth: number | "all"; setSelectedMonth: (month: number | "all") => void; selectedCategory: string | "all"; setSelectedCategory: (category: string | "all") => void; selectedSourceType: ICrimeSourceTypes; setSelectedSourceType: (sourceType: ICrimeSourceTypes) => void; availableYears?: (number | null)[]; availableSourceTypes?: string[]; categories?: string[]; panicButtonTriggered?: boolean; disableYearMonth?: boolean; } export default function AdditionalTooltips({ activeControl, onControlChange, selectedYear, setSelectedYear, selectedMonth, setSelectedMonth, selectedCategory, setSelectedCategory, selectedSourceType = "cbu", setSelectedSourceType, availableYears = [], availableSourceTypes = [], categories = [], panicButtonTriggered = false, disableYearMonth = false, }: AdditionalTooltipsProps) { const [showSelectors, setShowSelectors] = useState(false); const containerRef = useRef(null); const [isClient, setIsClient] = useState(false); const container = isClient ? document.getElementById("root") : null; useEffect(() => { if ( panicButtonTriggered && activeControl !== "alerts" && onControlChange ) { onControlChange("alerts"); } }, [panicButtonTriggered, activeControl, onControlChange]); useEffect(() => { setIsClient(true); }, []); const isControlDisabled = (controlId: ITooltipsControl) => { // When source type is CBU, disable all controls except for layers return selectedSourceType === "cbu" && controlId !== "layers"; }; return ( <> {additionalTooltips.map((control) => { const isButtonDisabled = isControlDisabled(control.id); return ( onControlChange?.(control.id)} disabled={isButtonDisabled} aria-disabled={isButtonDisabled} > {control.icon} {control.label} {isButtonDisabled ? "Not available for CBU data" : control.label} ); })} setShowSelectors(!showSelectors)} > Filters Source: Year: Month: Category: {showSelectors && ( )} > ); }
{isButtonDisabled ? "Not available for CBU data" : control.label}