From c12f6dcbcb246ba30ecd8a556fe6a02246cd5ee9 Mon Sep 17 00:00:00 2001 From: Jordi Enric Date: Fri, 15 Aug 2025 11:30:30 +0200 Subject: [PATCH] wip customhelpers --- .../Settings/Logs/Logs.DatePickers.tsx | 143 +++++++++++++----- 1 file changed, 108 insertions(+), 35 deletions(-) diff --git a/apps/studio/components/interfaces/Settings/Logs/Logs.DatePickers.tsx b/apps/studio/components/interfaces/Settings/Logs/Logs.DatePickers.tsx index b4a7010cce6..09dcf81797f 100644 --- a/apps/studio/components/interfaces/Settings/Logs/Logs.DatePickers.tsx +++ b/apps/studio/components/interfaces/Settings/Logs/Logs.DatePickers.tsx @@ -12,6 +12,8 @@ import { useCurrentOrgPlan } from 'hooks/misc/useCurrentOrgPlan' import { Button, ButtonProps, + Input, + Input_Shadcn_, PopoverContent_Shadcn_, PopoverTrigger_Shadcn_, Popover_Shadcn_, @@ -236,6 +238,91 @@ export const LogsDatePicker = ({ return true } + /** + * Custom Helper State + */ + const [generatedCustomHelpers, setGeneratedCustomHelpers] = useState([]) + const hasGeneratedCustomHelpers = generatedCustomHelpers.length > 0 + const [customHelperValue, setCustomHelperValue] = useState('') + + useEffect(() => { + // Reset the custom helper value on unmount + return () => { + setCustomHelperValue('') + } + }, []) + + const handleCustomHelperChange = (e: React.ChangeEvent) => { + const val = e.target.value + setCustomHelperValue(val) + + if (val.length === 0) { + setGeneratedCustomHelpers([]) + return + } + + // find the number in the string + const number = val.match(/\d+/)?.[0] + if (!number) return + + const generateHelper = ({ + value, + unit, + }: { + value: number + unit: 'minute' | 'hour' | 'day' + }): DatetimeHelper => { + return { + text: `Last ${value} ${unit}s`, + calcTo: () => { + return dayjs().add(+value, unit).toISOString() + }, + calcFrom: () => { + return dayjs().subtract(+value, unit).toISOString() + }, + availableIn: ['free', 'team', 'enterprise'], + } + } + + setGeneratedCustomHelpers([ + generateHelper({ value: +number, unit: 'minute' }), + generateHelper({ value: +number, unit: 'hour' }), + generateHelper({ value: +number, unit: 'day' }), + ]) + } + + function HelperList({ helpers }: { helpers: DatetimeHelper[] }) { + return helpers.map((helper) => ( + + )) + } + return ( @@ -252,41 +339,27 @@ export const LogsDatePicker = ({ portal={true} {...popoverContentProps} > - - {helpers.map((helper) => ( - - ))} - +
+ + + {hasGeneratedCustomHelpers ? ( + + ) : ( + + )} + +