diff --git a/client/src/components/Widgets/AlertChanges.jsx b/client/src/components/Widgets/AlertChanges.jsx
index 497e008..5b84f40 100644
--- a/client/src/components/Widgets/AlertChanges.jsx
+++ b/client/src/components/Widgets/AlertChanges.jsx
@@ -155,6 +155,16 @@ export default function AlertChanges({ settings, widgetID }) {
Green: "alertGreen",
};
+ const options = {
+ year: "numeric",
+ month: "short",
+ day: "numeric",
+ hour: "numeric",
+ minute: "2-digit",
+ second: "2-digit",
+ timeZoneName: "short"
+ };
+
if (isLoading)
return (
@@ -195,172 +205,174 @@ export default function AlertChanges({ settings, widgetID }) {
{(collapsible) => (
- <>
-
+
+
-
+ {volcano[0]}
+
+
+ {new Date(volcano[1][0]?.alert_start_date_local)
+ .toLocaleString('en-US', options)
+ }
+
+
+
+
-
- {volcano[0]}
-
-
- {volcano[1][0]?.alert_start_date_local}
-
-
-
-
- {volcano[1][0]?.change_type === "increase" ? (
-
- ) : (
-
- )}
-
-
- {volcano[1][0]?.alert_level_name}
-
+ {volcano[1][0]?.alert_level_name}
+
+
+ {volcano[1][0]?.change_type === "increase" ? (
+
+ ) : (
+
+ )}
-
-
-
-
- {volcano[1]?.map((object, index) => (
-
-
-
- {object?.alert_scheme_domain ===
- "terrestrial" && }
- {object?.alert_scheme_domain === "aviation" && (
-
- )}
- {object?.alert_scheme_domain === "maritime" && (
-
- )}
-
-
- {object?.change_type === "increase" ? (
-
- ) : (
-
- )}
-
-
-
-
-
-
- {object?.alert_start_date_local}
-
-
- {object?.alert_level_name}
-
-
-
- Alert Scale:{" "}
-
- {Array.from(
- {
- length:
- Number(object?.alert_scheme_highest) -
- Number(object?.alert_scheme_lowest) +
- 1,
- },
- (v, i) =>
- Number(object?.alert_scheme_lowest) + i,
- ).map((num) => (
-
- {num}
-
- ))}
-
-
-
-
-
- ))}
-
-
- >
+
+
)}
+
+
+
+ {volcano[1]?.map((object, index) => (
+
+
+
+ {object?.alert_scheme_domain ===
+ "terrestrial" && }
+ {object?.alert_scheme_domain === "aviation" && (
+
+ )}
+ {object?.alert_scheme_domain === "maritime" && (
+
+ )}
+
+
+ {object?.change_type === "increase" ? (
+
+ ) : (
+
+ )}
+
+
+
+
+
+
+ {new Date(object?.alert_start_date_local)
+ .toLocaleString('en-US', {...options, timeZone: 'UTC'})
+ }
+
+
+ {object?.alert_level_name}
+
+
+
+ Alert Scale:{" "}
+
+ {Array.from(
+ {
+ length:
+ Number(object?.alert_scheme_highest) -
+ Number(object?.alert_scheme_lowest) +
+ 1,
+ },
+ (v, i) =>
+ Number(object?.alert_scheme_lowest) + i,
+ ).map((num) => (
+
+ {num}
+
+ ))}
+
+
+
+
+
+ ))}
+
+
);
else if (thisWidget?.size === "small")
diff --git a/client/src/components/Widgets/settings/AlertChangeSettings.jsx b/client/src/components/Widgets/settings/AlertChangeSettings.jsx
index 9b4d4cc..0c2a090 100644
--- a/client/src/components/Widgets/settings/AlertChangeSettings.jsx
+++ b/client/src/components/Widgets/settings/AlertChangeSettings.jsx
@@ -1,63 +1,130 @@
-import {Flex, Slider, Switch, Text, Field, Fieldset, Input, CheckboxCard, CheckboxGroup} from "@chakra-ui/react";
-import {useDashboardStore} from "@/store/useDashboardStore.jsx";
-import { useState } from "react";
+import {
+ Flex,
+ Slider,
+ Switch,
+ Text,
+ Field,
+ Fieldset,
+ Input,
+ CheckboxCard,
+ CheckboxGroup,
+ Combobox,
+ Portal,
+ useFilter,
+ useListCollection,
+ Wrap,
+ Badge
+} from "@chakra-ui/react";
+import { useDashboardStore } from "@/store/useDashboardStore.jsx";
+import { useState, useMemo } from "react";
-export default function IvansAlertsSettings({ widgetId, currentSettings }) {
- const updateSettings = useDashboardStore(state => state.updateWidgetSettings);
+export default function AlertChangeSettings({ widgetId, currentSettings }) {
+ const updateSettings = useDashboardStore(
+ (state) => state.updateWidgetSettings,
+ );
const [startError, setStartError] = useState(null);
const [endError, setEndError] = useState(null);
console.log("currentSettings:", currentSettings);
+ const [selectedVolcanoes, setSelectedVolcanoes] = useState([]);
+ const { startsWith } = useFilter({ sensitivity: "base" });
+
+ const { collection, filter, reset } = useListCollection({
+ initialItems: volcanoes,
+ filter: startsWith,
+ limit: 10,
+ });
+
+ const handleValueChange = (details) => {
+ setSelectedVolcanoes(details.value)
+ }
+
return (
-
+
{/* SELECTING DATE RANGE */}
- Date Range Selection
+
+ Date Range Selection
+
{/*line seperator*/}
{/* start date */}
-
- Start Date
+
+
+ Start Date
+
- {
const value = e.target.value;
- updateSettings(widgetId, {...currentSettings, startDate: 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");
+ if (value && dateSelected > today)
+ setStartError("Can't Choose a Future Date");
else setStartError("");
}}
/>
- {startError && {startError}}
+ {startError && (
+ {startError}
+ )}
{/* end date */}
-
- End Date
+
+
+ End Date
+
- {
const value = e.target.value;
- updateSettings(widgetId, {...currentSettings, endDate: 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");
+ if (value && dateSelected > today)
+ setEndError("Can't Choose a Future Date");
else setEndError("");
}}
/>
@@ -67,61 +134,156 @@ export default function IvansAlertsSettings({ widgetId, currentSettings }) {
- {/* FILTER ON CHANGE TYPE */}
+ {/* FILTERS */}
- Filters
+
+ Filters
+
{/*line seperator*/}
- {
- updateSettings(widgetId, {...currentSettings, filters: {...currentSettings.filters, levelIncreases: e.checked}})
+ onCheckedChange={(e) => {
+ updateSettings(widgetId, {
+ ...currentSettings,
+ filters: {
+ ...currentSettings.filters,
+ levelIncreases: e.checked,
+ },
+ });
}}
>
{/* when removed can't check/uncheck box */}
- Level Increases
+
+ Level Increases
+
- {
- updateSettings(widgetId, {...currentSettings, filters: {...currentSettings.filters, levelDecreases: e.checked}})
+ onCheckedChange={(e) => {
+ updateSettings(widgetId, {
+ ...currentSettings,
+ filters: {
+ ...currentSettings.filters,
+ levelDecreases: e.checked,
+ },
+ });
}}
>
- Level Decreases
+
+ Level Decreases
+
- {
- updateSettings(widgetId, {...currentSettings, filters: {...currentSettings.filters, elevatedLevels: e.checked}})
+ onCheckedChange={(e) => {
+ updateSettings(widgetId, {
+ ...currentSettings,
+ filters: {
+ ...currentSettings.filters,
+ elevatedLevels: e.checked,
+ },
+ });
}}
>
- Only Elevated Levels
+
+ 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
+
+
+
+
-
- )
-}
\ No newline at end of file
+
+ );
+}
+
+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"}
+]
\ No newline at end of file
diff --git a/client/src/constants/widgetRegistry.jsx b/client/src/constants/widgetRegistry.jsx
index 79a9c19..1ce5689 100644
--- a/client/src/constants/widgetRegistry.jsx
+++ b/client/src/constants/widgetRegistry.jsx
@@ -102,7 +102,8 @@ export const WIDGET_REGISTRY = {
filters: {
levelIncreases: true,
levelDecreases: true,
- elevatedLevels: false, // will filter to show only volcanoes in their 2nd highest to highest al
+ elevatedLevels: false, // will filter to show only volcanoes in their top 2 highest alert levels
+ volcanoes: 'all', // filter on what volcanoes to display, defaults to 'all' instead of listing every volc
},
},
allowedSizes: {