import { Flex, Slider, Switch, Text, Field, Fieldset, Input, CheckboxCard, CheckboxGroup, Combobox, Portal, useFilter, useListCollection, Wrap, Badge, Separator, HStack, useSlotRecipe } from "@chakra-ui/react"; import { useDashboardStore } from "@/store/useDashboardStore.jsx"; import { useState, useMemo } from "react"; export default function AlertChangeSettings({ widgetId, currentSettings }) { // STYLING const popoverRecipe = useSlotRecipe({ key: "glassPopover" }); const popoverStyles = popoverRecipe(); // STATE MANAGEMENT const updateSettings = useDashboardStore( (state) => state.updateWidgetSettings, ); const [startError, setStartError] = useState(null); const [endError, setEndError] = useState(null); const [selectedVolcanoes, setSelectedVolcanoes] = useState([]); const { startsWith } = useFilter({ sensitivity: "base" }); const { collection, filter, reset } = useListCollection({ initialItems: volcanoes, filter: startsWith, limit: 10, }); // FUNCTIONS const handleValueChange = (details) => { setSelectedVolcanoes(details.value) } return ( {/* SELECTING DATE RANGE */} Date Range Selection {/*line seperator*/} {/* start date */} Start Date { const value = e.target.value; updateSettings(widgetId, { ...currentSettings, startDate: value, }); const dateSelected = new Date(value); const today = new Date(); today.setHours(0, 0, 0, 0); if (value && dateSelected > today) setStartError("Can't Choose a Future Date"); else setStartError(""); }} /> {startError && ( {startError} )} {/* end date */} End Date { const value = e.target.value; updateSettings(widgetId, { ...currentSettings, endDate: value, }); const dateSelected = new Date(value); const today = new Date(); today.setHours(0, 0, 0, 0); if (value && dateSelected > today) setEndError("Can't Choose a Future Date"); else setEndError(""); }} /> {endError && {endError}} {/* FILTERS */} Filters {/*line seperator*/} {/* level increases */} { updateSettings(widgetId, { ...currentSettings, filters: { ...currentSettings.filters, levelIncreases: e.checked, }, }); }} > {/* when removed can't check/uncheck box */} Level Increases {/* level decreases */} { updateSettings(widgetId, { ...currentSettings, filters: { ...currentSettings.filters, levelDecreases: e.checked, }, }); }} > Level Decreases {/* elevated levels */} { updateSettings(widgetId, { ...currentSettings, filters: { ...currentSettings.filters, elevatedLevels: e.checked, }, }); }} > Only Elevated Levels {/* select volcano to filter on */} filter(e.inputValue)} > {selectedVolcanoes.map((volcano) => ( {volcano} ))} Select Volcano (s) {volcanoes.map((item) => ( {item.label} ))} No items found ); } const volcanoes = [ { label: "Mt. St. Helens", value: "helens" }, { label: "Mt. Adams", value: "adams" }, { label: "Rainier", value: "rainier" }, { label: "The Three Sisters", value: "three sisters" }, { label: "Fuego", value: "fuego" }, { label: "Laki Laki", value: "lakilaki" }, { label: "Lewotobi", value: "lewotobi" }, { label: "Karangatang", value: "karangatang" }, { label: "Cotopaxi", value: "cotopaxi" }, { label: "Merapi", value: "merapi" }, { label: "Marapi", value: "marapi" }, { label: "Kick 'Em Jenny", value: "kick em jenny"} ]