Skip to content

Commit cfe8928

Browse files
Annotators display fix
1 parent 9fdd153 commit cfe8928

File tree

4 files changed

+19
-12
lines changed

4 files changed

+19
-12
lines changed

src/components/projects/projectId/labeling/sessionId/main-component/LabelingMainComponent.tsx

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { UserRole } from "@/src/types/shared/sidebar";
77
import { LabelingSuiteManager } from "@/src/util/classes/labeling/manager";
88
import { SessionManager } from "@/src/util/classes/labeling/session-manager";
99
import { UserManager } from "@/src/util/classes/labeling/user-manager";
10-
import { DUMMY_HUDDLE_ID, getDefaultLabelingSuiteSettings, parseLabelingLink } from "@/src/util/components/projects/projectId/labeling/labeling-main-component-helper";
10+
import { DUMMY_HUDDLE_ID, getDefaultLabelingSuiteSettings, parseLabelingLink, prepareRLADataForRole } from "@/src/util/components/projects/projectId/labeling/labeling-main-component-helper";
1111
import { useLazyQuery } from "@apollo/client";
1212
import { useRouter } from "next/router";
1313
import { useCallback, useEffect, useState } from "react";
@@ -152,7 +152,7 @@ export default function LabelingMainComponent() {
152152
}, [projectId]);
153153

154154
useEffect(() => {
155-
if (!projectId || allUsers.length == 0 || !router.query.sessionId) return;
155+
if (!projectId || allUsers.length == 0 || !router.query.sessionId || !user) return;
156156
if (router.query.sessionId == DUMMY_HUDDLE_ID) return;
157157
if (!SessionManager.currentRecordId) return;
158158
if (SessionManager.currentRecordId == "deleted") return;
@@ -174,9 +174,10 @@ export default function LabelingMainComponent() {
174174
]).subscribe(([tokenized, record, rla]) => {
175175
dispatch(updateRecordRequests('token', tokenized.data.tokenizeRecord));
176176
dispatch(updateRecordRequests('record', record.data.recordByRecordId));
177-
dispatch(updateRecordRequests('rla', rla?.data?.recordByRecordId?.recordLabelAssociations));
177+
const rlas = rla['data']?.['recordByRecordId']?.['recordLabelAssociations']['edges'].map(e => e.node);;
178+
dispatch(updateRecordRequests('rla', prepareRLADataForRole(rlas, user, userDisplayId, userDisplayRole)));
178179
});
179-
}, [SessionManager.currentRecordId]);
180+
}, [SessionManager.currentRecordId, user]);
180181

181182
useEffect(() => {
182183
if (!rlas || !user) return;
@@ -303,8 +304,12 @@ export default function LabelingMainComponent() {
303304

304305
function prepareTasksForRole(taskData: LabelingTask[], userDisplayRole): LabelingTask[] {
305306
if (user?.role != UserRole.ANNOTATOR && userDisplayRole != UserRole.ANNOTATOR) return taskData;
306-
if (!JSON.parse(localStorage.getItem('huddleData'))) return null;
307-
const taskId = JSON.parse(localStorage.getItem('huddleData')).allowedTask;
307+
let taskId;
308+
if (userDisplayRole != UserRole.ENGINEER) {
309+
taskId = JSON.parse(localStorage.getItem('huddleData'))?.allowedTask;
310+
} else {
311+
taskId = JSON.parse(localStorage.getItem('huddleData')).allowedTask;
312+
}
308313
if (!taskId) return null;
309314
else return taskData.filter(t => t.id == taskId);
310315
}
@@ -324,7 +329,8 @@ export default function LabelingMainComponent() {
324329
} else if (['payload_finished', 'weak_supervision_finished', 'rla_created', 'rla_deleted'].includes(msgParts[1])) {
325330
const recordId = SessionManager.currentRecordId ?? record.id;
326331
refetchRla({ variables: { projectId, recordId: recordId } }).then((result) => {
327-
dispatch(updateRecordRequests('rla', result?.data?.recordByRecordId?.recordLabelAssociations));
332+
const rlas = result['data']?.['recordByRecordId']?.['recordLabelAssociations']['edges'].map(e => e.node);;
333+
dispatch(updateRecordRequests('rla', prepareRLADataForRole(rlas, user, userDisplayId, userDisplayRole)));
328334
});
329335
} else if (['access_link_changed', 'access_link_removed'].includes(msgParts[1])) {
330336
if (router.pathname.includes(msgParts[3]) && SessionManager.labelingLinkData) {

src/reduxStore/states/pages/labeling.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ const labelingSlice = createSlice({
8080
state.recordRequests.record = postProcessRecordByRecordId(data);
8181
break;
8282
case 'rla':
83-
state.recordRequests.rla = postProcessRla(data);
83+
state.recordRequests.rla = data;
8484
if (RecordManager.ignoreRlas(state.recordRequests.rla)) return;
8585
LabelingSuiteManager.somethingLoading = false;
8686
break;

src/util/classes/labeling/session-manager.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ export class SessionManager {
122122
}
123123

124124
public static getAllowedTask(): string {
125-
return this.huddleData.allowedTask;
125+
return this.huddleData?.allowedTask;
126126
}
127127
public static initMeOnDestruction() {
128128
this.labelingLinkData = null;

src/util/components/projects/projectId/labeling/labeling-main-component-helper.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { User } from "@/src/types/shared/general";
55
import { UserRole } from "@/src/types/shared/sidebar";
66
import { SessionManager } from "@/src/util/classes/labeling/session-manager";
77
import { LabelSource } from "@/submodules/javascript-functions/enums/enums";
8-
import { countOccurrences } from "@/submodules/javascript-functions/general";
8+
import { countOccurrences, jsonCopy } from "@/submodules/javascript-functions/general";
99

1010
export const ONE_DAY = 86400000; // 24 * 60 * 60 * 1000;
1111
export const DUMMY_HUDDLE_ID = "00000000-0000-0000-0000-000000000000";
@@ -148,7 +148,8 @@ export function prepareRLADataForRole(rlaData: any[], user: User, displayUserId:
148148
if (user.role != UserRole.ANNOTATOR && userDisplayRole != UserRole.ANNOTATOR) return rlaData;
149149
const currentSourceId = SessionManager.getSourceId();
150150
const allowedTask = SessionManager.getAllowedTask();
151-
rlaData.forEach((rla) => {
151+
const rlaDataCopy = jsonCopy(rlaData);
152+
rlaDataCopy.forEach((rla) => {
152153
if ((rla.sourceId && rla.sourceId == currentSourceId)) {
153154
rla.sourceType = LabelSource.MANUAL;
154155
rla.sourceId = null;
@@ -158,5 +159,5 @@ export function prepareRLADataForRole(rlaData: any[], user: User, displayUserId:
158159
rla.id = "x";
159160
}
160161
});
161-
return rlaData.filter(rla => rla.id != "x");
162+
return rlaDataCopy.filter(rla => rla.id != "x");
162163
}

0 commit comments

Comments
 (0)