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.
68 lines
2.2 KiB
TypeScript
68 lines
2.2 KiB
TypeScript
// Copyright (C) 2020 Intel 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: (
|
|
job: any,
|
|
states: any[],
|
|
frameNumber: number,
|
|
frameData: any | null,
|
|
minZ: number,
|
|
maxZ: number,
|
|
colors: string[],
|
|
) =>
|
|
createAction(BoundariesActionTypes.RESET_AFTER_ERROR, {
|
|
job,
|
|
states,
|
|
frameNumber,
|
|
frameData,
|
|
minZ,
|
|
maxZ,
|
|
colors,
|
|
}),
|
|
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, frameNumber, frameData, minZ, maxZ, colors));
|
|
} else {
|
|
dispatch(boundariesActions.resetAfterError(null, [], 0, null, 0, 0, []));
|
|
}
|
|
} catch (error) {
|
|
dispatch(boundariesActions.throwResetError());
|
|
}
|
|
};
|
|
}
|
|
|
|
export type BoundariesActions = ActionUnion<typeof boundariesActions>;
|