- {fetching && qualitySettingsFetching ? (
-
-
-
- ) : (
-
-
- {backNavigation}
-
-
- {title}
- {tabs}
-
-
-
-
- )}
+
+
+ {backNavigation}
+
+
+ {title}
+ {tabs}
+
+
+
+
);
}
diff --git a/cvat-ui/src/components/quality-control/styles.scss b/cvat-ui/src/components/quality-control/styles.scss
index 6149d317d105..70a8e2fcea81 100644
--- a/cvat-ui/src/components/quality-control/styles.scss
+++ b/cvat-ui/src/components/quality-control/styles.scss
@@ -115,10 +115,11 @@ $excluded-background: #d9d9d973;
}
}
-.cvat-quality-control-loading {
+.cvat-quality-control-loading, .cvat-quality-control-page-error {
position: absolute;
- right: 50%;
- margin-top: 20%;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
}
.cvat-quality-control-overview-tab {
diff --git a/cvat-ui/src/components/quality-control/task-quality/allocation-table.tsx b/cvat-ui/src/components/quality-control/task-quality/allocation-table.tsx
index 363d08374001..914909bc90c1 100644
--- a/cvat-ui/src/components/quality-control/task-quality/allocation-table.tsx
+++ b/cvat-ui/src/components/quality-control/task-quality/allocation-table.tsx
@@ -2,7 +2,6 @@
//
// SPDX-License-Identifier: MIT
-import { range } from 'lodash';
import React, { useState } from 'react';
import { useHistory } from 'react-router';
import { useSelector } from 'react-redux';
@@ -15,14 +14,18 @@ import { Key } from 'antd/lib/table/interface';
import Icon, { DeleteOutlined } from '@ant-design/icons';
import { RestoreIcon } from 'icons';
-import { Task, Job, FramesMetaData } from 'cvat-core-wrapper';
+import {
+ Task, FramesMetaData, TaskValidationLayout, QualitySettings,
+} from 'cvat-core-wrapper';
import CVATTooltip from 'components/common/cvat-tooltip';
import { sorter } from 'utils/quality';
interface Props {
task: Task;
- gtJob: Job;
+ gtJobId: number;
gtJobMeta: FramesMetaData;
+ validationLayout: TaskValidationLayout;
+ qualitySettings: QualitySettings;
onDeleteFrames: (frames: number[]) => void;
onRestoreFrames: (frames: number[]) => void;
}
@@ -33,52 +36,9 @@ interface RowData {
active: boolean;
}
-interface TableRowData extends RowData {
- key: Key;
-}
-
-// Temporary solution: this function is necessary in one of plugins which imports it directly from CVAT code
-// Further this solution should be re-designed
-// Until then, *DO NOT RENAME/REMOVE* this exported function
-export function getAllocationTableContents(gtJobMeta: FramesMetaData, gtJob: Job): TableRowData[] {
- // A workaround for meta "includedFrames" using source data numbers
- // TODO: remove once meta is migrated to relative frame numbers
-
- const jobFrameNumbers = gtJobMeta.getDataFrameNumbers().map((dataFrameNumber: number) => (
- gtJobMeta.getJobRelativeFrameNumber(dataFrameNumber) + gtJob.startFrame
- ));
-
- const jobDataSegmentFrameNumbers = range(
- gtJobMeta.startFrame, gtJobMeta.stopFrame + 1, gtJobMeta.frameStep,
- );
-
- let includedIndex = 0;
- const result: TableRowData[] = [];
- for (let index = 0; index < jobDataSegmentFrameNumbers.length; ++index) {
- const dataFrameID = jobDataSegmentFrameNumbers[index];
-
- if (gtJobMeta.includedFrames && !gtJobMeta.includedFrames.includes(dataFrameID)) {
- continue;
- }
-
- const frameID = jobFrameNumbers[includedIndex];
-
- result.push({
- key: frameID,
- frame: frameID,
- name: gtJobMeta.frames[index]?.name ?? gtJobMeta.frames[0].name,
- active: !(frameID in gtJobMeta.deletedFrames),
- });
-
- ++includedIndex;
- }
-
- return result;
-}
-
function AllocationTable(props: Readonly