import React, { useContext, useEffect, useState } from "react"; import { getLayout } from "../../src/layouts/AppLayout"; import { Spinner, Flex, Heading, Stack, Text, Spacer, IconButton, Editable, EditableInput, EditablePreview, Button, } from "@chakra-ui/react"; import Scrollable from "../../src/components/Scrollable"; import RangeSelector from "../../src/components/RangeSelector"; import useDashboard from "../../src/core/hooks/useDashboard"; import { useRouter, useSubscriptions } from "../../src/core/hooks"; import { BiTrash } from "react-icons/bi"; import OverlayContext from "../../src/core/providers/OverlayProvider/context"; import SubscriptionReport from "../../src/components/SubscriptionReport"; import { v4 } from "uuid"; import { DRAWER_TYPES } from "../../src/core/providers/OverlayProvider/constants"; import Page404 from "../../src/components/FourOFour"; import { BsGear } from "react-icons/bs"; const HOUR_KEY = "Hourly"; const DAY_KEY = "Daily"; const MINUTE_KEY = "Minutes"; let timeMap = {}; timeMap[DAY_KEY] = "month"; timeMap[HOUR_KEY] = "week"; timeMap[MINUTE_KEY] = "day"; const Analytics = () => { const { toggleAlert } = useContext(OverlayContext); const [timeRange, setTimeRange] = useState(timeMap[MINUTE_KEY]); const router = useRouter(); const overlay = useContext(OverlayContext); const { dashboardId } = router.params; const { dashboardCache, dashboardLinksCache, deleteDashboard, updateDashboard, } = useDashboard(dashboardId); const { subscriptionsCache } = useSubscriptions(); useEffect(() => { if (typeof window !== "undefined") { if (dashboardCache?.data?.data?.resource_data?.name) { document.title = dashboardCache?.data?.data?.resource_data?.name; } else { document.title = `Dashboard`; } } }, [dashboardCache?.data?.data?.resource_data?.name]); const updateCallback = ({ name }) => { updateDashboard.mutate({ id: dashboardCache.data.id, dashboard: { dashboard_id: dashboardCache.data.id, name: name, subscription_cache: dashboardCache.data.resource_data.subscription_setting, }, }); }; if ( dashboardCache.isLoading || dashboardLinksCache.isLoading || subscriptionsCache.isLoading ) return ; if ( dashboardCache.isLoadingError && dashboardCache?.error?.response?.status === 404 ) { return ; } const plotMinW = "250px"; return ( updateCallback({ name: nextValue, }) } > } variant="ghost" colorScheme="red" size="sm" onClick={() => toggleAlert(() => deleteDashboard.mutate())} /> { setTimeRange(timeMap[e]); }} /> overlay.toggleDrawer({ type: DRAWER_TYPES.NEW_DASHBOARD_ITEM, props: dashboardCache.data.resource_data, }) } size="md" colorScheme="blue" variant="outline" icon={} /> <> {Object.keys(dashboardLinksCache.data.data).map((key) => { const s3PresignedURLs = dashboardLinksCache.data.data[key]; const name = subscriptionsCache.data.subscriptions.find( (subscription) => subscription.id === key )?.label; return ( {name ?? ""} ); })} {dashboardCache.data.resource_data.subscription_settings[0] === undefined && ( )} ); }; Analytics.getLayout = getLayout; export default Analytics;