From f56ae55cc4a252992c1fe00ce9f97066cbdfdd2c Mon Sep 17 00:00:00 2001 From: Nick Mowen Date: Thu, 30 Jun 2022 09:36:33 -0600 Subject: [PATCH] Add time picker to events page --- web/src/routes/Events.jsx | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/web/src/routes/Events.jsx b/web/src/routes/Events.jsx index e8807411e..a90ec2ada 100644 --- a/web/src/routes/Events.jsx +++ b/web/src/routes/Events.jsx @@ -20,10 +20,12 @@ import { Download } from '../icons/Download'; import Menu, { MenuItem } from '../components/Menu'; import CalendarIcon from '../icons/Calendar'; import Calendar from '../components/Calendar'; +import ClockIcon from '../icons/Clock'; import Button from '../components/Button'; import Dialog from '../components/Dialog'; -import { fromUnixTime, intervalToDuration, formatDuration } from 'date-fns'; import MultiSelect from '../components/MultiSelect'; +import TimePicker from '../components/TimePicker'; +import { fromUnixTime, intervalToDuration, formatDuration } from 'date-fns'; const API_LIMIT = 25; @@ -58,12 +60,14 @@ export default function Events({ path, ...props }) { labels: props.labels ?? 'all', zones: props.zones ?? 'all', sub_labels: props.sub_labels ?? 'all', + time_range: '00:00,24:00', }); const [state, setState] = useState({ showDownloadMenu: false, showDatePicker: false, showCalendar: false, showPlusConfig: false, + showTimePicker: false, }); const [uploading, setUploading] = useState([]); const [viewEvent, setViewEvent] = useState(); @@ -185,6 +189,8 @@ export default function Events({ path, ...props }) { const datePicker = useRef(); + const timePicker = useRef(); + const downloadButton = useRef(); const onDownloadClick = (e, event) => { @@ -207,6 +213,13 @@ export default function Events({ path, ...props }) { [searchParams, setSearchParams, state, setState] ); + const handleSelectTimeRange = useCallback( + (timeRange) => { + setSearchParams({ ...searchParams, time_range: timeRange}) + }, + [searchParams, setSearchParams] + ); + const onFilter = useCallback( (name, value) => { const updatedParams = { ...searchParams, [name]: value }; @@ -340,6 +353,12 @@ export default function Events({ path, ...props }) { onClick={() => setState({ ...state, showDatePicker: true })} /> +
+ setState({ ...state, showTimePicker: true })} + /> +
{state.showDownloadMenu && ( setState({ ...state, showDownloadMenu: false })} relativeTo={downloadButton}> @@ -421,6 +440,19 @@ export default function Events({ path, ...props }) { /> )} + {state.showTimePicker && ( + setState({ ...state, showTimePicker: false })} + relativeTo={timePicker}> +
+ +
+
+ )} {state.showPlusConfig && (