fix: do only after ot
This commit is contained in:
@@ -15,6 +15,12 @@ interface DeviceLogsModalProps {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const toYYYYMMDD = (d: Date) => d.toISOString().slice(0, 10);
|
const toYYYYMMDD = (d: Date) => d.toISOString().slice(0, 10);
|
||||||
|
const shiftYYYYMMDD = (value: string, days: number) => {
|
||||||
|
const d = new Date(`${value}T00:00:00Z`);
|
||||||
|
if (Number.isNaN(d.getTime())) return value;
|
||||||
|
d.setUTCDate(d.getUTCDate() + days);
|
||||||
|
return toYYYYMMDD(d);
|
||||||
|
};
|
||||||
|
|
||||||
type LogLevel = "info" | "warn" | "error" | "debug" | "fatal" | "unknown";
|
type LogLevel = "info" | "warn" | "error" | "debug" | "fatal" | "unknown";
|
||||||
|
|
||||||
@@ -133,6 +139,24 @@ export const DeviceLogsModal = ({
|
|||||||
const yesterday = new Date(today.getTime() - 24 * 60 * 60 * 1000);
|
const yesterday = new Date(today.getTime() - 24 * 60 * 60 * 1000);
|
||||||
const [dateFrom, setDateFrom] = useState(toYYYYMMDD(yesterday));
|
const [dateFrom, setDateFrom] = useState(toYYYYMMDD(yesterday));
|
||||||
const [dateTo, setDateTo] = useState(toYYYYMMDD(today));
|
const [dateTo, setDateTo] = useState(toYYYYMMDD(today));
|
||||||
|
const dateToMin = shiftYYYYMMDD(dateFrom, 1);
|
||||||
|
const dateFromMax = shiftYYYYMMDD(dateTo, -1);
|
||||||
|
|
||||||
|
const handleDateFromChange = (value: string) => {
|
||||||
|
setDateFrom(value);
|
||||||
|
if (!dateTo || dateTo <= value) {
|
||||||
|
setDateTo(shiftYYYYMMDD(value, 1));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleDateToChange = (value: string) => {
|
||||||
|
if (value <= dateFrom) {
|
||||||
|
toast.info("Дата 'До' должна быть позже даты 'От'");
|
||||||
|
setDateTo(shiftYYYYMMDD(dateFrom, 1));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
setDateTo(value);
|
||||||
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!open || !deviceUuid) return;
|
if (!open || !deviceUuid) return;
|
||||||
@@ -235,16 +259,22 @@ export const DeviceLogsModal = ({
|
|||||||
label="От"
|
label="От"
|
||||||
size="small"
|
size="small"
|
||||||
value={dateFrom}
|
value={dateFrom}
|
||||||
onChange={(e) => setDateFrom(e.target.value)}
|
onChange={(e) => handleDateFromChange(e.target.value)}
|
||||||
slotProps={{ inputLabel: { shrink: true } }}
|
slotProps={{
|
||||||
|
inputLabel: { shrink: true },
|
||||||
|
htmlInput: { max: dateFromMax },
|
||||||
|
}}
|
||||||
/>
|
/>
|
||||||
<TextField
|
<TextField
|
||||||
type="date"
|
type="date"
|
||||||
label="До"
|
label="До"
|
||||||
size="small"
|
size="small"
|
||||||
value={dateTo}
|
value={dateTo}
|
||||||
onChange={(e) => setDateTo(e.target.value)}
|
onChange={(e) => handleDateToChange(e.target.value)}
|
||||||
slotProps={{ inputLabel: { shrink: true } }}
|
slotProps={{
|
||||||
|
inputLabel: { shrink: true },
|
||||||
|
htmlInput: { min: dateToMin },
|
||||||
|
}}
|
||||||
/>
|
/>
|
||||||
<Button
|
<Button
|
||||||
variant="outlined"
|
variant="outlined"
|
||||||
|
|||||||
Reference in New Issue
Block a user