You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

76 lines
2.5 KiB
TypeScript

// Copyright (C) 2020-2022 Intel Corporation
// Copyright (C) 2022 CVAT.ai Corporation
//
// SPDX-License-Identifier: MIT
import {
ActionUnion, createAction, ThunkAction, ThunkDispatch,
} from 'utils/redux';
import { getCore } from 'cvat-core-wrapper';
import { LogType } from 'cvat-logger';
import { computeZRange } from './annotation-actions';
const cvat = getCore();
export enum BoundariesActionTypes {
RESET_AFTER_ERROR = 'RESET_AFTER_ERROR',
THROW_RESET_ERROR = 'THROW_RESET_ERROR',
}
export const boundariesActions = {
resetAfterError: (payload?: {
job: any;
states: any[];
openTime: number;
frameNumber: number;
frameFilename: string;
frameHasRelatedContext: boolean;
colors: string[];
filters: string[];
frameData: any;
minZ: number;
maxZ: number;
}) => createAction(BoundariesActionTypes.RESET_AFTER_ERROR, payload),
throwResetError: () => createAction(BoundariesActionTypes.THROW_RESET_ERROR),
};
export function resetAfterErrorAsync(): ThunkAction {
return async (dispatch: ThunkDispatch, getState): Promise<void> => {
try {
const state = getState();
const job = state.annotation.job.instance;
if (job) {
const currentFrame = state.annotation.player.frame.number;
const { showAllInterpolationTracks } = state.settings.workspace;
const frameNumber = Math.max(Math.min(job.stopFrame, currentFrame), job.startFrame);
const states = await job.annotations.get(frameNumber, showAllInterpolationTracks, []);
const frameData = await job.frames.get(frameNumber);
const [minZ, maxZ] = computeZRange(states);
const colors = [...cvat.enums.colors];
await job.logger.log(LogType.restoreJob);
dispatch(boundariesActions.resetAfterError({
job,
states,
openTime: state.annotation.job.openTime || Date.now(),
frameNumber,
frameFilename: frameData.filename,
frameHasRelatedContext: frameData.hasRelatedContext,
colors,
filters: [],
frameData,
minZ,
maxZ,
}));
}
} catch (error) {
dispatch(boundariesActions.throwResetError());
}
};
}
export type BoundariesActions = ActionUnion<typeof boundariesActions>;