Skip to content

Commit 8b67154

Browse files
committed
adds from/to fields for ticket searching
1 parent 15c9bf0 commit 8b67154

File tree

3 files changed

+90
-24
lines changed

3 files changed

+90
-24
lines changed

package-lock.json

Lines changed: 18 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@
1818
"@fortawesome/react-fontawesome": "^0.2.0",
1919
"react": "^18.2.0",
2020
"react-dom": "^18.2.0",
21-
"react-router-dom": "^6.27.0"
21+
"react-router-dom": "^6.27.0",
22+
"use-debounce": "^10.0.4"
2223
},
2324
"devDependencies": {
2425
"@types/react": "^18.2.66",

src/components/userLookup.tsx

Lines changed: 70 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import { useLoaderData, useNavigate } from "react-router-dom";
2121
import { NameExpand } from "./nameExpand";
2222
import { Ticket } from "../types/ticket";
2323
import { TicketModal } from "./ticketmodal";
24+
import { useDebounce } from "use-debounce";
2425

2526
type ActiveLookupType = {
2627
updateUser: (_args: UpdateUserArguments) => void;
@@ -426,44 +427,94 @@ const UserTickets = (props: { ckey: string }) => {
426427
const [activePage, setActivePage] = useState(1);
427428
const [errored, setErrored] = useState(false);
428429

429-
const glob = useContext(GlobalContext);
430+
const [fromDate, setFromDate] = useState<Date>();
431+
const [toDate, setToDate] = useState<Date>();
432+
433+
const [debouncedFrom] = useDebounce(fromDate, 500);
434+
const [debouncedTo] = useDebounce(toDate, 500);
435+
436+
const glob = useContext(GlobalContext)!;
437+
438+
const { updateAndShowToast } = glob;
439+
440+
const { ckey } = props;
441+
442+
const encodeDate = (date: Date) => {
443+
return date.toISOString().slice(0, 19).replace("T", " ");
444+
};
430445

431446
useEffect(() => {
432447
if (page != activePage) {
433448
setTicketData(undefined);
434449
}
435-
if (!tickets && !errored) {
436-
callApi(`/Ticket/User/${props.ckey}/?page=${page}`).then((value) => {
437-
if (value.status != 200) {
438-
glob?.updateAndShowToast("No more tickets.");
439-
if (page == 1) {
440-
setErrored(true);
441-
} else {
442-
setPage(page - 1);
450+
451+
if ((debouncedFrom && !debouncedTo) || (!debouncedFrom && debouncedTo))
452+
return;
453+
454+
if (!errored) {
455+
let dateString = "";
456+
if (debouncedFrom && debouncedTo) {
457+
const to = new Date(debouncedTo);
458+
to.setUTCHours(23, 59, 59);
459+
dateString = `&from=${encodeDate(debouncedFrom)}&to=${encodeDate(to)}`;
460+
}
461+
callApi(`/Ticket/User/${ckey}/?page=${page}${dateString}`).then(
462+
(value) => {
463+
if (value.status != 200) {
464+
updateAndShowToast("No more tickets.");
465+
if (page == 1) {
466+
setErrored(true);
467+
} else {
468+
setPage(page - 1);
469+
}
470+
return;
443471
}
444-
return;
445-
}
446472

447-
value.json().then((json) => {
448-
setTicketData(json);
449-
setActivePage(page);
450-
});
451-
});
473+
value.json().then((json) => {
474+
setTicketData(json);
475+
setActivePage(page);
476+
});
477+
}
478+
);
452479
}
453480
}, [
454-
tickets,
455481
setTicketData,
456482
page,
457483
setPage,
458-
props,
484+
ckey,
459485
activePage,
460486
setActivePage,
461-
glob,
487+
updateAndShowToast,
462488
errored,
489+
490+
debouncedFrom,
491+
debouncedTo,
463492
]);
464493

465494
return (
466495
<div className="flex flex-col gap-2">
496+
<div className="flex flex-row justify-center gap-3">
497+
<div className="flex flex-row gap-1">
498+
From:
499+
<input
500+
type="date"
501+
onChange={(val) => {
502+
const date = val.target.valueAsDate;
503+
if (date) setFromDate(date);
504+
}}
505+
/>
506+
</div>
507+
<div className="flex flex-row gap-1">
508+
To:
509+
<input
510+
type="date"
511+
onChange={(val) => {
512+
const date = val.target.valueAsDate;
513+
if (date) setToDate(date);
514+
}}
515+
/>
516+
</div>
517+
</div>
467518
<div className="flex flex-row justify-center gap-3">
468519
{page > 1 && (
469520
<LinkColor

0 commit comments

Comments
 (0)