diff --git a/cvat-ui/src/actions/grades-actions.ts b/cvat-ui/src/actions/grades-actions.ts index ddf39c0a80e9..f3e0f249aa2a 100644 --- a/cvat-ui/src/actions/grades-actions.ts +++ b/cvat-ui/src/actions/grades-actions.ts @@ -162,23 +162,55 @@ export const loadingGradesAsync = front_distance: mapGradeValue(result?.laser_front_scan?.angles?.distance), front_top_bot_angle_diff: mapGradeValue(result?.laser_front_scan?.angles?.top_bot_angle_diff), front_left_right_angle_diff: mapGradeValue(result?.laser_front_scan?.angles?.left_right_angle_diff), - front_top_outer_top_inner_angle_diff: mapGradeValue(result?.laser_front_scan?.angles?.top_outer_top_inner_angle_diff), - front_bot_outer_bot_inner_angle_diff: mapGradeValue(result?.laser_front_scan?.angles?.bot_outer_bot_inner_angle_diff), - front_left_outer_left_inner_angle_diff: mapGradeValue(result?.laser_front_scan?.angles?.left_outer_left_inner_angle_diff), - front_right_outer_right_inner_angle_diff: mapGradeValue(result?.laser_front_scan?.angles?.right_outer_right_inner_angle_diff), - front_vertical_distance_diff: mapGradeValue(result?.laser_front_scan?.angles?.vertical_distance_diff), - front_horizontal_distance_diff: mapGradeValue(result?.laser_front_scan?.angles?.horizontal_distance_diff), + front_top_outer_top_inner_angle_diff: mapGradeValue( + result?.laser_front_scan?.angles?.top_outer_top_inner_angle_diff, + ), + front_bot_outer_bot_inner_angle_diff: mapGradeValue( + result?.laser_front_scan?.angles?.bot_outer_bot_inner_angle_diff, + ), + front_left_outer_left_inner_angle_diff: mapGradeValue( + result?.laser_front_scan?.angles?.left_outer_left_inner_angle_diff, + ), + front_right_outer_right_inner_angle_diff: mapGradeValue( + result?.laser_front_scan?.angles?.right_outer_right_inner_angle_diff, + ), + front_vertical_distance_diff: mapGradeValue( + result?.laser_front_scan?.angles?.vertical_distance_diff, + ), + front_horizontal_distance_diff: mapGradeValue( + result?.laser_front_scan?.angles?.horizontal_distance_diff, + ), back_opposite_angle: mapGradeValue(result?.laser_back_scan?.angles?.opposite_angle), back_inner_outer_angle: mapGradeValue(result?.laser_back_scan?.angles?.inner_outer_angle), back_distance: mapGradeValue(result?.laser_back_scan?.angles?.distance), back_top_bot_angle_diff: mapGradeValue(result?.laser_back_scan?.angles?.top_bot_angle_diff), back_left_right_angle_diff: mapGradeValue(result?.laser_back_scan?.angles?.left_right_angle_diff), - back_top_outer_top_inner_angle_diff: mapGradeValue(result?.laser_back_scan?.angles?.top_outer_top_inner_angle_diff), - back_bot_outer_bot_inner_angle_diff: mapGradeValue(result?.laser_back_scan?.angles?.bot_outer_bot_inner_angle_diff), - back_left_outer_left_inner_angle_diff: mapGradeValue(result?.laser_back_scan?.angles?.left_outer_left_inner_angle_diff), - back_right_outer_right_inner_angle_diff: mapGradeValue(result?.laser_back_scan?.angles?.right_outer_right_inner_angle_diff), + back_top_outer_top_inner_angle_diff: mapGradeValue( + result?.laser_back_scan?.angles?.top_outer_top_inner_angle_diff, + ), + back_bot_outer_bot_inner_angle_diff: mapGradeValue( + result?.laser_back_scan?.angles?.bot_outer_bot_inner_angle_diff, + ), + back_left_outer_left_inner_angle_diff: mapGradeValue( + result?.laser_back_scan?.angles?.left_outer_left_inner_angle_diff, + ), + back_right_outer_right_inner_angle_diff: mapGradeValue( + result?.laser_back_scan?.angles?.right_outer_right_inner_angle_diff, + ), back_vertical_distance_diff: mapGradeValue(result?.laser_back_scan?.angles?.vertical_distance_diff), - back_horizontal_distance_diff: mapGradeValue(result?.laser_back_scan?.angles?.horizontal_distance_diff), + back_horizontal_distance_diff: mapGradeValue( + result?.laser_back_scan?.angles?.horizontal_distance_diff, + ), + front_boosted_centering_laser_grade: mapGradeValue( + result?.laser_front_scan?.boosted_grades?.center, + ), + front_boosted_corners_laser_grade: mapGradeValue(result?.laser_front_scan?.boosted_grades?.corner), + front_boosted_edges_laser_grade: mapGradeValue(result?.laser_front_scan?.boosted_grades?.edge), + front_boosted_surface_laser_grade: mapGradeValue(result?.laser_front_scan?.boosted_grades?.surface), + back_boosted_centering_laser_grade: mapGradeValue(result?.laser_back_scan?.boosted_grades?.center), + back_boosted_corners_laser_grade: mapGradeValue(result?.laser_back_scan?.boosted_grades?.corner), + back_boosted_edges_laser_grade: mapGradeValue(result?.laser_back_scan?.boosted_grades?.edge), + back_boosted_surface_laser_grade: mapGradeValue(result?.laser_back_scan?.boosted_grades?.surface), }), ); } catch (error) { @@ -284,13 +316,37 @@ export const submitAnnotationFrameToGradeAsync = [`${input.orientation}_inner_outer_angle`]: mapGradeValue(data?.angles?.inner_outer_angle), [`${input.orientation}_distance`]: mapGradeValue(data?.angles?.distance), [`${input.orientation}_top_bot_angle_diff`]: mapGradeValue(data?.angles?.top_bot_angle_diff), - [`${input.orientation}_left_right_angle_diff`]: mapGradeValue(data?.angles?.left_right_angle_diff), - [`${input.orientation}_top_outer_top_inner_angle_diff`]: mapGradeValue(data?.angles?.top_outer_top_inner_angle_diff), - [`${input.orientation}_bot_outer_bot_inner_angle_diff`]: mapGradeValue(data?.angles?.bot_outer_bot_inner_angle_diff), - [`${input.orientation}_left_outer_left_inner_angle_diff`]: mapGradeValue(data?.angles?.left_outer_left_inner_angle_diff), - [`${input.orientation}_right_outer_right_inner_angle_diff`]: mapGradeValue(data?.angles?.right_outer_right_inner_angle_diff), - [`${input.orientation}_vertical_distance_diff`]: mapGradeValue(data?.angles?.vertical_distance_diff), - [`${input.orientation}_horizontal_distance_diff`]: mapGradeValue(data?.angles?.horizontal_distance_diff), + [`${input.orientation}_left_right_angle_diff`]: mapGradeValue( + data?.angles?.left_right_angle_diff, + ), + [`${input.orientation}_top_outer_top_inner_angle_diff`]: mapGradeValue( + data?.angles?.top_outer_top_inner_angle_diff, + ), + [`${input.orientation}_bot_outer_bot_inner_angle_diff`]: mapGradeValue( + data?.angles?.bot_outer_bot_inner_angle_diff, + ), + [`${input.orientation}_left_outer_left_inner_angle_diff`]: mapGradeValue( + data?.angles?.left_outer_left_inner_angle_diff, + ), + [`${input.orientation}_right_outer_right_inner_angle_diff`]: mapGradeValue( + data?.angles?.right_outer_right_inner_angle_diff, + ), + [`${input.orientation}_vertical_distance_diff`]: mapGradeValue( + data?.angles?.vertical_distance_diff, + ), + [`${input.orientation}_horizontal_distance_diff`]: mapGradeValue( + data?.angles?.horizontal_distance_diff, + ), + [`${input.orientation}_boosted_centering_laser_grade`]: mapGradeValue( + data?.boosted_grades?.center, + ), + [`${input.orientation}_boosted_corners_laser_grade`]: mapGradeValue( + data?.boosted_grades?.corner, + ), + [`${input.orientation}_boosted_edges_laser_grade`]: mapGradeValue(data?.boosted_grades?.edge), + [`${input.orientation}_boosted_surface_laser_grade`]: mapGradeValue( + data?.boosted_grades?.surface, + ), }), ); } diff --git a/cvat-ui/src/components/annotation-page/grades-form/grades-form-advanced-controls.tsx b/cvat-ui/src/components/annotation-page/grades-form/grades-form-advanced-controls.tsx index f627caa597c1..534a6480d7e4 100644 --- a/cvat-ui/src/components/annotation-page/grades-form/grades-form-advanced-controls.tsx +++ b/cvat-ui/src/components/annotation-page/grades-form/grades-form-advanced-controls.tsx @@ -13,12 +13,14 @@ interface Props { onGenerateRawRobogrades(): void; enhancedRobogradesVisibility: boolean; robogradesVisibility: boolean; + boostedRobogradesVisibility: boolean; rawRobogradesVisibility: boolean; centeringAnglesVisibility: boolean; handleEnhancedRobogradesVisibility(): void; handleRobogradesVisibility(): void; handleRawRobogradesVisibility(): void; handleCenteringAnglesVisibility(): void; + handleBoostedRobogradesVisibility(): void; } function GradesFormAdvancedControls({ @@ -26,12 +28,14 @@ function GradesFormAdvancedControls({ onGenerateRawRobogrades, enhancedRobogradesVisibility, robogradesVisibility, + boostedRobogradesVisibility, rawRobogradesVisibility, centeringAnglesVisibility, handleEnhancedRobogradesVisibility, handleRobogradesVisibility, handleRawRobogradesVisibility, handleCenteringAnglesVisibility, + handleBoostedRobogradesVisibility, }: Props): JSX.Element { const [isExpanded, setIsExpanded] = useState(false); @@ -70,6 +74,10 @@ function GradesFormAdvancedControls({  Centering Angles +
+ +  Boosted Robogrades +
)} diff --git a/cvat-ui/src/components/annotation-page/grades-form/grades-form.tsx b/cvat-ui/src/components/annotation-page/grades-form/grades-form.tsx index 169482763e93..4989d77ca0e5 100644 --- a/cvat-ui/src/components/annotation-page/grades-form/grades-form.tsx +++ b/cvat-ui/src/components/annotation-page/grades-form/grades-form.tsx @@ -56,6 +56,8 @@ export function GradesForm({ task }: Props): JSX.Element | null { const [computedHumanBackTotal, setComputedHumanBackTotal] = useState(0); const [computedRobogradesFrontTotal, setComputedRobogradesFrontTotal] = useState(0); const [computedRobogradesBackTotal, setComputedRobogradesBackTotal] = useState(0); + const [computedBoostedRobogradesFrontTotal, setComputedBoostedRobogradesFrontTotal] = useState(0); + const [computedBoostedRobogradesBackTotal, setComputedBoostedRobogradesBackTotal] = useState(0); const [computedRawRobogradesFrontTotal, setComputedRawRobogradesFrontTotal] = useState(0); const [computedRawRobogradesBackTotal, setComputedRawRobogradesBackTotal] = useState(0); const [computedLowestTotal, setComputedLowestTotal] = useState(0); @@ -63,6 +65,7 @@ export function GradesForm({ task }: Props): JSX.Element | null { const [robogradesVisibility, setRobogradesVisibility] = useState(true); const [rawRobogradesVisibility, setRawRobogradesVisibility] = useState(true); const [centeringAnglesVisibility, setCenteringAnglesVisibility] = useState(true); + const [boostedRobogradesVisibility, setBoostedRobogradesVisibility] = useState(true); const frameFilename = useSelector((state: CombinedState) => state.annotation.player.frame.filename); const frameOptions = useMemo(() => { const options = parseFilename(frameFilename); @@ -180,6 +183,22 @@ export function GradesForm({ task }: Props): JSX.Element | null { formRef.current?.getFieldValue('back_surface_laser_grade'), ]), ); + setComputedBoostedRobogradesFrontTotal( + computeTotal([ + formRef.current?.getFieldValue('front_boosted_centering_laser_grade'), + formRef.current?.getFieldValue('front_boosted_edges_laser_grade'), + formRef.current?.getFieldValue('front_boosted_corners_laser_grade'), + formRef.current?.getFieldValue('front_boosted_surface_laser_grade'), + ]), + ); + setComputedBoostedRobogradesBackTotal( + computeTotal([ + formRef.current?.getFieldValue('back_boosted_centering_laser_grade'), + formRef.current?.getFieldValue('back_boosted_edges_laser_grade'), + formRef.current?.getFieldValue('back_boosted_corners_laser_grade'), + formRef.current?.getFieldValue('back_boosted_surface_laser_grade'), + ]), + ); setComputedRawRobogradesFrontTotal( computeTotal([ formRef.current?.getFieldValue('front_raw_centering_grade'), @@ -274,6 +293,22 @@ export function GradesForm({ task }: Props): JSX.Element | null { values?.back_surface_laser_grade, ]), ); + setComputedBoostedRobogradesFrontTotal( + computeTotal([ + values?.front_boosted_centering_laser_grade, + values?.front_boosted_edges_laser_grade, + values?.front_boosted_corners_laser_grade, + values?.front_boosted_surface_laser_grade, + ]), + ); + setComputedBoostedRobogradesBackTotal( + computeTotal([ + values?.back_boosted_centering_laser_grade, + values?.back_boosted_edges_laser_grade, + values?.back_boosted_corners_laser_grade, + values?.back_boosted_surface_laser_grade, + ]), + ); setComputedRawRobogradesFrontTotal( computeTotal([ values?.front_raw_centering_grade, @@ -371,13 +406,19 @@ export function GradesForm({ task }: Props): JSX.Element | null { values?.back_overall_predicted_grade, ), }, + { + gradeType: 'Boosted Robogrades', + totalFront: computedBoostedRobogradesFrontTotal, + totalBack: computedBoostedRobogradesBackTotal, + totalOverall: computeTotalOverall(computedBoostedRobogradesFrontTotal, computedBoostedRobogradesBackTotal), + }, ]; return (
- +
@@ -651,15 +692,23 @@ export function GradesForm({ task }: Props): JSX.Element | null {
Centering:  - {values?.[`${frameOptions.orientation}_raw_centering_grade`]} + { + values?.[ + `${frameOptions.orientation}_raw_centering_grade` + ] + }
{`(angle: ${computeRawGradePercentile( - values?.[`${frameOptions.orientation}_raw_angle_dif`]?.[1], + values?.[ + `${frameOptions.orientation}_raw_angle_dif` + ]?.[1], )}, center: ${computeRawGradePercentile( - values?.[`${frameOptions.orientation}_raw_center_dif`]?.[1], + values?.[ + `${frameOptions.orientation}_raw_center_dif` + ]?.[1], )})`}
@@ -670,6 +719,73 @@ export function GradesForm({ task }: Props): JSX.Element | null { ) : null} + + {boostedRobogradesVisibility ? ( + + + + + Front of Card + + + + + + + + + + + + + + + + + + + + + + + + + + Back of Card + + + + + + + + + + + + + + + + + + + + + + + + + + + ) : null} + @@ -704,7 +820,9 @@ export function GradesForm({ task }: Props): JSX.Element | null {
- Top Inner / Bottom Inner Angle:  + + Top Inner / Bottom Inner Angle:  + {values?.[`${frameOptions.orientation}_top_bot_angle_diff`]} @@ -712,7 +830,9 @@ export function GradesForm({ task }: Props): JSX.Element | null {
- Left Inner / Right Inner Angle:  + + Left Inner / Right Inner Angle:  + {values?.[`${frameOptions.orientation}_left_right_angle_diff`]} @@ -720,33 +840,57 @@ export function GradesForm({ task }: Props): JSX.Element | null {
- Top Outer / Top Inner Angle:  + + Top Outer / Top Inner Angle:  + - {values?.[`${frameOptions.orientation}_top_outer_top_inner_angle_diff`]} + { + values?.[ + `${frameOptions.orientation}_top_outer_top_inner_angle_diff` + ] + }
- Bottom Outer / Bottom Inner Angle:  + + Bottom Outer / Bottom Inner Angle:  + - {values?.[`${frameOptions.orientation}_bot_outer_bot_inner_angle_diff`]} + { + values?.[ + `${frameOptions.orientation}_bot_outer_bot_inner_angle_diff` + ] + }
- Left Outer / Left Inner Angle:  + + Left Outer / Left Inner Angle:  + - {values?.[`${frameOptions.orientation}_left_outer_left_inner_angle_diff`]} + { + values?.[ + `${frameOptions.orientation}_left_outer_left_inner_angle_diff` + ] + }
- Right Outer / Right Inner Angle:  + + Right Outer / Right Inner Angle:  + - {values?.[`${frameOptions.orientation}_right_outer_right_inner_angle_diff`]} + { + values?.[ + `${frameOptions.orientation}_right_outer_right_inner_angle_diff` + ] + }
@@ -770,7 +914,7 @@ export function GradesForm({ task }: Props): JSX.Element | null {
- ) : null } + ) : null}
diff --git a/cvat-ui/src/reducers/grades-reducer.ts b/cvat-ui/src/reducers/grades-reducer.ts index efa0e472553b..5a5480c9a908 100644 --- a/cvat-ui/src/reducers/grades-reducer.ts +++ b/cvat-ui/src/reducers/grades-reducer.ts @@ -75,6 +75,14 @@ const defaultState: GradesState = { back_right_outer_right_inner_angle_diff: 0, back_vertical_distance_diff: 0, back_horizontal_distance_diff: 0, + front_boosted_centering_laser_grade: 0, + front_boosted_corners_laser_grade: 0, + front_boosted_edges_laser_grade: 0, + front_boosted_surface_laser_grade: 0, + back_boosted_centering_laser_grade: 0, + back_boosted_corners_laser_grade: 0, + back_boosted_edges_laser_grade: 0, + back_boosted_surface_laser_grade: 0, }, }; diff --git a/cvat-ui/src/reducers/interfaces.ts b/cvat-ui/src/reducers/interfaces.ts index 1a094b23297b..202dce932113 100644 --- a/cvat-ui/src/reducers/interfaces.ts +++ b/cvat-ui/src/reducers/interfaces.ts @@ -108,14 +108,17 @@ export interface TasksState { }; }; checkedTasks: Record; - pendingJobs: Record; + pendingJobs: Record< + string, + { + status: any; + frame: any; + taskId: any; + certId: any; + orderId: any; + error?: any; + } + >; } export interface ExportState { @@ -569,8 +572,8 @@ export interface AnnotationState { filters: any[]; resetGroupFlag: boolean; history: { - undo: [ string, number ][]; - redo: [ string, number ][]; + undo: [string, number][]; + redo: [string, number][]; }; saving: { forceExit: boolean; @@ -783,6 +786,14 @@ export interface GradesState { back_back_right_outer_right_inner_angle_diff: number; back_back_vertical_distance_diff: number; back_back_horizontal_distance_diff: number; + front_boosted_centering_laser_grade: number; + front_boosted_corners_laser_grade: number; + front_boosted_edges_laser_grade: number; + front_boosted_surface_laser_grade: number; + back_boosted_centering_laser_grade: number; + back_boosted_corners_laser_grade: number; + back_boosted_edges_laser_grade: number; + back_boosted_surface_laser_grade: number; }; }