mirror of
https://github.com/blakeblackshear/frigate.git
synced 2025-07-16 13:47:07 +02:00
Update UI and then run api call (#10460)
This commit is contained in:
parent
61c4ed9f12
commit
8d85a69203
@ -128,6 +128,40 @@ export default function Events() {
|
|||||||
|
|
||||||
// review status
|
// review status
|
||||||
|
|
||||||
|
const markAllItemsAsReviewed = useCallback(
|
||||||
|
async (currentItems: ReviewSegment[]) => {
|
||||||
|
if (currentItems.length == 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const severity = currentItems[0].severity;
|
||||||
|
updateSegments(
|
||||||
|
(data: ReviewSegment[] | undefined) => {
|
||||||
|
if (!data) {
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
const newData = [...data];
|
||||||
|
|
||||||
|
newData.forEach((seg) => {
|
||||||
|
if (seg.severity == severity) {
|
||||||
|
seg.has_been_reviewed = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return newData;
|
||||||
|
},
|
||||||
|
{ revalidate: false, populateCache: true },
|
||||||
|
);
|
||||||
|
|
||||||
|
await axios.post(`reviews/viewed`, {
|
||||||
|
ids: currentItems?.map((seg) => seg.id),
|
||||||
|
});
|
||||||
|
reloadData();
|
||||||
|
},
|
||||||
|
[reloadData, updateSegments],
|
||||||
|
);
|
||||||
|
|
||||||
const markItemAsReviewed = useCallback(
|
const markItemAsReviewed = useCallback(
|
||||||
async (review: ReviewSegment) => {
|
async (review: ReviewSegment) => {
|
||||||
const resp = await axios.post(`reviews/viewed`, { ids: [review.id] });
|
const resp = await axios.post(`reviews/viewed`, { ids: [review.id] });
|
||||||
@ -299,6 +333,7 @@ export default function Events() {
|
|||||||
startTime={startTime}
|
startTime={startTime}
|
||||||
setSeverity={setSeverity}
|
setSeverity={setSeverity}
|
||||||
markItemAsReviewed={markItemAsReviewed}
|
markItemAsReviewed={markItemAsReviewed}
|
||||||
|
markAllItemsAsReviewed={markAllItemsAsReviewed}
|
||||||
onOpenReview={setSelectedReviewId}
|
onOpenReview={setSelectedReviewId}
|
||||||
pullLatestData={reloadData}
|
pullLatestData={reloadData}
|
||||||
updateFilter={onUpdateFilter}
|
updateFilter={onUpdateFilter}
|
||||||
|
@ -47,6 +47,7 @@ type EventViewProps = {
|
|||||||
startTime?: number;
|
startTime?: number;
|
||||||
setSeverity: (severity: ReviewSeverity) => void;
|
setSeverity: (severity: ReviewSeverity) => void;
|
||||||
markItemAsReviewed: (review: ReviewSegment) => void;
|
markItemAsReviewed: (review: ReviewSegment) => void;
|
||||||
|
markAllItemsAsReviewed: (currentItems: ReviewSegment[]) => void;
|
||||||
onOpenReview: (reviewId: string) => void;
|
onOpenReview: (reviewId: string) => void;
|
||||||
pullLatestData: () => void;
|
pullLatestData: () => void;
|
||||||
updateFilter: (filter: ReviewFilter) => void;
|
updateFilter: (filter: ReviewFilter) => void;
|
||||||
@ -61,6 +62,7 @@ export default function EventView({
|
|||||||
startTime,
|
startTime,
|
||||||
setSeverity,
|
setSeverity,
|
||||||
markItemAsReviewed,
|
markItemAsReviewed,
|
||||||
|
markAllItemsAsReviewed,
|
||||||
onOpenReview,
|
onOpenReview,
|
||||||
pullLatestData,
|
pullLatestData,
|
||||||
updateFilter,
|
updateFilter,
|
||||||
@ -265,6 +267,7 @@ export default function EventView({
|
|||||||
filter={filter}
|
filter={filter}
|
||||||
timeRange={timeRange}
|
timeRange={timeRange}
|
||||||
markItemAsReviewed={markItemAsReviewed}
|
markItemAsReviewed={markItemAsReviewed}
|
||||||
|
markAllItemsAsReviewed={markAllItemsAsReviewed}
|
||||||
onSelectReview={onSelectReview}
|
onSelectReview={onSelectReview}
|
||||||
pullLatestData={pullLatestData}
|
pullLatestData={pullLatestData}
|
||||||
/>
|
/>
|
||||||
@ -301,6 +304,7 @@ type DetectionReviewProps = {
|
|||||||
filter?: ReviewFilter;
|
filter?: ReviewFilter;
|
||||||
timeRange: { before: number; after: number };
|
timeRange: { before: number; after: number };
|
||||||
markItemAsReviewed: (review: ReviewSegment) => void;
|
markItemAsReviewed: (review: ReviewSegment) => void;
|
||||||
|
markAllItemsAsReviewed: (currentItems: ReviewSegment[]) => void;
|
||||||
onSelectReview: (id: string, ctrl: boolean) => void;
|
onSelectReview: (id: string, ctrl: boolean) => void;
|
||||||
pullLatestData: () => void;
|
pullLatestData: () => void;
|
||||||
};
|
};
|
||||||
@ -314,6 +318,7 @@ function DetectionReview({
|
|||||||
filter,
|
filter,
|
||||||
timeRange,
|
timeRange,
|
||||||
markItemAsReviewed,
|
markItemAsReviewed,
|
||||||
|
markAllItemsAsReviewed,
|
||||||
onSelectReview,
|
onSelectReview,
|
||||||
pullLatestData,
|
pullLatestData,
|
||||||
}: DetectionReviewProps) {
|
}: DetectionReviewProps) {
|
||||||
@ -348,18 +353,6 @@ function DetectionReview({
|
|||||||
|
|
||||||
const [hasUpdate, setHasUpdate] = useState(false);
|
const [hasUpdate, setHasUpdate] = useState(false);
|
||||||
|
|
||||||
const markAllReviewed = useCallback(async () => {
|
|
||||||
if (!currentItems) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
await axios.post(`reviews/viewed`, {
|
|
||||||
ids: currentItems?.map((seg) => seg.id),
|
|
||||||
});
|
|
||||||
setHasUpdate(false);
|
|
||||||
pullLatestData();
|
|
||||||
}, [currentItems, pullLatestData]);
|
|
||||||
|
|
||||||
// timeline interaction
|
// timeline interaction
|
||||||
|
|
||||||
const { alignStartDateToTimeline } = useEventUtils(
|
const { alignStartDateToTimeline } = useEventUtils(
|
||||||
@ -505,7 +498,10 @@ function DetectionReview({
|
|||||||
<Button
|
<Button
|
||||||
className="text-white"
|
className="text-white"
|
||||||
variant="select"
|
variant="select"
|
||||||
onClick={markAllReviewed}
|
onClick={() => {
|
||||||
|
setHasUpdate(false);
|
||||||
|
markAllItemsAsReviewed(currentItems ?? []);
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
Mark these items as reviewed
|
Mark these items as reviewed
|
||||||
</Button>
|
</Button>
|
||||||
|
Loading…
Reference in New Issue
Block a user