mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-02-03 09:45:22 +03:00
Add time picker to events page
This commit is contained in:
parent
e13715b83a
commit
f56ae55cc4
@ -20,10 +20,12 @@ import { Download } from '../icons/Download';
|
|||||||
import Menu, { MenuItem } from '../components/Menu';
|
import Menu, { MenuItem } from '../components/Menu';
|
||||||
import CalendarIcon from '../icons/Calendar';
|
import CalendarIcon from '../icons/Calendar';
|
||||||
import Calendar from '../components/Calendar';
|
import Calendar from '../components/Calendar';
|
||||||
|
import ClockIcon from '../icons/Clock';
|
||||||
import Button from '../components/Button';
|
import Button from '../components/Button';
|
||||||
import Dialog from '../components/Dialog';
|
import Dialog from '../components/Dialog';
|
||||||
import { fromUnixTime, intervalToDuration, formatDuration } from 'date-fns';
|
|
||||||
import MultiSelect from '../components/MultiSelect';
|
import MultiSelect from '../components/MultiSelect';
|
||||||
|
import TimePicker from '../components/TimePicker';
|
||||||
|
import { fromUnixTime, intervalToDuration, formatDuration } from 'date-fns';
|
||||||
|
|
||||||
const API_LIMIT = 25;
|
const API_LIMIT = 25;
|
||||||
|
|
||||||
@ -58,12 +60,14 @@ export default function Events({ path, ...props }) {
|
|||||||
labels: props.labels ?? 'all',
|
labels: props.labels ?? 'all',
|
||||||
zones: props.zones ?? 'all',
|
zones: props.zones ?? 'all',
|
||||||
sub_labels: props.sub_labels ?? 'all',
|
sub_labels: props.sub_labels ?? 'all',
|
||||||
|
time_range: '00:00,24:00',
|
||||||
});
|
});
|
||||||
const [state, setState] = useState({
|
const [state, setState] = useState({
|
||||||
showDownloadMenu: false,
|
showDownloadMenu: false,
|
||||||
showDatePicker: false,
|
showDatePicker: false,
|
||||||
showCalendar: false,
|
showCalendar: false,
|
||||||
showPlusConfig: false,
|
showPlusConfig: false,
|
||||||
|
showTimePicker: false,
|
||||||
});
|
});
|
||||||
const [uploading, setUploading] = useState([]);
|
const [uploading, setUploading] = useState([]);
|
||||||
const [viewEvent, setViewEvent] = useState();
|
const [viewEvent, setViewEvent] = useState();
|
||||||
@ -185,6 +189,8 @@ export default function Events({ path, ...props }) {
|
|||||||
|
|
||||||
const datePicker = useRef();
|
const datePicker = useRef();
|
||||||
|
|
||||||
|
const timePicker = useRef();
|
||||||
|
|
||||||
const downloadButton = useRef();
|
const downloadButton = useRef();
|
||||||
|
|
||||||
const onDownloadClick = (e, event) => {
|
const onDownloadClick = (e, event) => {
|
||||||
@ -207,6 +213,13 @@ export default function Events({ path, ...props }) {
|
|||||||
[searchParams, setSearchParams, state, setState]
|
[searchParams, setSearchParams, state, setState]
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const handleSelectTimeRange = useCallback(
|
||||||
|
(timeRange) => {
|
||||||
|
setSearchParams({ ...searchParams, time_range: timeRange})
|
||||||
|
},
|
||||||
|
[searchParams, setSearchParams]
|
||||||
|
);
|
||||||
|
|
||||||
const onFilter = useCallback(
|
const onFilter = useCallback(
|
||||||
(name, value) => {
|
(name, value) => {
|
||||||
const updatedParams = { ...searchParams, [name]: value };
|
const updatedParams = { ...searchParams, [name]: value };
|
||||||
@ -340,6 +353,12 @@ export default function Events({ path, ...props }) {
|
|||||||
onClick={() => setState({ ...state, showDatePicker: true })}
|
onClick={() => setState({ ...state, showDatePicker: true })}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
<div ref={timePicker} className="">
|
||||||
|
<ClockIcon
|
||||||
|
className="h-8 w-8 cursor-pointer"
|
||||||
|
onClick={() => setState({ ...state, showTimePicker: true })}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{state.showDownloadMenu && (
|
{state.showDownloadMenu && (
|
||||||
<Menu onDismiss={() => setState({ ...state, showDownloadMenu: false })} relativeTo={downloadButton}>
|
<Menu onDismiss={() => setState({ ...state, showDownloadMenu: false })} relativeTo={downloadButton}>
|
||||||
@ -421,6 +440,19 @@ export default function Events({ path, ...props }) {
|
|||||||
/>
|
/>
|
||||||
</Menu>
|
</Menu>
|
||||||
)}
|
)}
|
||||||
|
{state.showTimePicker && (
|
||||||
|
<Menu
|
||||||
|
className="rounded-t-none"
|
||||||
|
onDismiss={() => setState({ ...state, showTimePicker: false })}
|
||||||
|
relativeTo={timePicker}>
|
||||||
|
<div>
|
||||||
|
<TimePicker
|
||||||
|
onChange={handleSelectTimeRange}
|
||||||
|
timeRange={{ after: searchParams.time_range.split(",")[0], before: searchParams.time_range.split(",")[1] }}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</Menu>
|
||||||
|
)}
|
||||||
{state.showPlusConfig && (
|
{state.showPlusConfig && (
|
||||||
<Dialog>
|
<Dialog>
|
||||||
<div className="p-4">
|
<div className="p-4">
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user