diff --git a/web/src/routes/Export.jsx b/web/src/routes/Export.jsx
index 180a72b45..0a4bd246d 100644
--- a/web/src/routes/Export.jsx
+++ b/web/src/routes/Export.jsx
@@ -1,6 +1,5 @@
-import { h } from 'preact';
import Heading from '../components/Heading';
-import { useState } from 'preact/hooks';
+import { useState, useEffect } from 'preact/hooks';
import useSWR from 'swr';
import Button from '../components/Button';
import axios from 'axios';
@@ -11,6 +10,21 @@ export default function Export() {
const [camera, setCamera] = useState('select');
const [playback, setPlayback] = useState('select');
const [message, setMessage] = useState({ text: '', error: false });
+ const [startDate, setStartDate] = useState('input');
+ const [startTime, setStartTime] = useState('input');
+ const [endDate, setEndDate] = useState('input');
+ const [endTime, setEndTime] = useState('input');
+
+ useEffect(() => {
+ const currentDate = new Date();
+ currentDate.setHours(0, 0, 0, 0);
+ const offsetMs = currentDate.getTimezoneOffset() * 60 * 1000;
+ const localISOTime = (new Date(currentDate.getTime() - offsetMs)).toISOString().slice(0,16);
+ setStartDate(localISOTime);
+ setStartTime("00:00");
+ setEndDate(localISOTime);
+ setEndTime("23:59");
+ }, []);
const onHandleExport = () => {
if (camera == 'select') {
@@ -23,14 +37,21 @@ export default function Export() {
return;
}
- const start = new Date(document.getElementById('start').value).getTime() / 1000;
- const end = new Date(document.getElementById('end').value).getTime() / 1000;
+
- if (!start || !end) {
+ if (!startDate || !startTime || !endDate || !endTime) {
setMessage({ text: 'A start and end time needs to be selected', error: true });
return;
}
+ const start = new Date(`${startDate}T${startTime}`).getTime() / 1000;
+ const end = new Date(`${endDate}T${endTime}`).getTime() / 1000;
+
+ if (end <= start) {
+ setMessage({ text: 'The end time must be after the start time.', error: true });
+ return;
+ }
+
setMessage({ text: 'Successfully started export. View the file in the /exports folder.', error: false });
axios.post(`export/${camera}/start/${start}/end/${end}`, { playback });
};
@@ -71,11 +92,13 @@ export default function Export() {
From:
-
+ setStartDate(e.target.value)}/>
+ setStartTime(e.target.value)}/>
To:
-
+ setEndDate(e.target.value)}/>
+ setEndTime(e.target.value)}/>