Skip to content

Commit 1299860

Browse files
Switching between available links
1 parent ffd5f9a commit 1299860

File tree

3 files changed

+18
-6
lines changed

3 files changed

+18
-6
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -339,13 +339,13 @@ export default function LabelingMainComponent() {
339339
}, [handleWebsocketNotification, projectId]);
340340

341341
return (<div className={`h-full bg-white flex flex-col ${LabelingSuiteManager.somethingLoading ? style.wait : ''}`}>
342-
<NavigationBarTop absoluteWarning={absoluteWarning} />
342+
<NavigationBarTop absoluteWarning={absoluteWarning} lockedLink={lockedLink} />
343343
<div className="flex-grow overflow-y-auto" style={{ height: 'calc(100vh - 194px)' }}>
344344
{!lockedLink && <>
345345
{settings.task.show && (user?.role != UserRole.ANNOTATOR && userDisplayRole != UserRole.ANNOTATOR) && <LabelingSuiteTaskHeader />}
346346
<LabelingSuiteLabeling />
347347
{settings.overviewTable.show && SessionManager.currentRecordId !== "deleted" && <LabelingSuiteOverviewTable />}</>}
348348
</div>
349-
<NavigationBarBottom />
349+
{!lockedLink ? <NavigationBarBottom /> : <div className="relative flex-shrink-0 bg-white shadow-sm flex justify-between items-center h-16"></div>}
350350
</div>)
351351
}

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

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { selectUser } from "@/src/reduxStore/states/general";
22
import { selectAvailableLinks, selectDisplayUserRole, selectSelectedLink, selectUserDisplayId, selectUserIconsData, setAvailableLinks, setHoverGroupDict, setSelectedLink, setUserDisplayId } from "@/src/reduxStore/states/pages/labeling";
33
import { selectProjectId } from "@/src/reduxStore/states/project";
4-
import { LabelingLinkType, UserType } from "@/src/types/components/projects/projectId/labeling/labeling-main-component";
4+
import { LabelingLinkType, NavigationBarTopProps, UserType } from "@/src/types/components/projects/projectId/labeling/labeling-main-component";
55
import { UserRole } from "@/src/types/shared/sidebar";
66
import { SessionManager } from "@/src/util/classes/labeling/session-manager";
77
import { TOOLTIPS_DICT } from "@/src/util/tooltip-constants";
@@ -14,8 +14,9 @@ import Dropdown2 from "@/submodules/react-components/components/Dropdown2";
1414
import { useEffect } from "react";
1515
import { useLazyQuery } from "@apollo/client";
1616
import { AVAILABLE_LABELING_LINKS } from "@/src/services/gql/queries/labeling";
17+
import { parseLinkFromText } from "@/src/util/shared/link-parser-helper";
1718

18-
export default function NavigationBarTop(props: { absoluteWarning?: string }) {
19+
export default function NavigationBarTop(props: NavigationBarTopProps) {
1920
const router = useRouter();
2021
const dispatch = useDispatch();
2122

@@ -56,6 +57,12 @@ export default function NavigationBarTop(props: { absoluteWarning?: string }) {
5657
router.push(`/projects/${projectId}/labeling/${SessionManager.labelingLinkData.huddleId}?pos=${SessionManager.huddleData.linkData.requestedPos}&type=${SessionManager.huddleData.linkData.linkType}`);
5758
}
5859

60+
function dropdownSelectLink(option: any) {
61+
dispatch(setSelectedLink(option));
62+
const linkData = parseLinkFromText(option.link);
63+
router.push(`${linkData.route}?pos=${linkData.queryParams.pos}&type=${linkData.queryParams.type}`)
64+
}
65+
5966
return (<>
6067
{user && <div className="w-full px-4 border-gray-200 border-b h-16">
6168
<div className="relative flex-shrink-0 bg-white shadow-sm flex justify-between items-center h-full">
@@ -100,8 +107,8 @@ export default function NavigationBarTop(props: { absoluteWarning?: string }) {
100107

101108
</>) : (<div className="flex justify-center items-center overflow-visible">
102109
<span className="mr-2"> Available Tasks:</span>
103-
<Dropdown2 options={availableLinks && availableLinks.length > 0 ? availableLinks : ['No links available']} disabled={availableLinks?.length == 0}
104-
buttonName={selectedLink ? selectedLink.name : 'Select slice'} selectedOption={(option: any) => dispatch(setSelectedLink(option))} />
110+
<Dropdown2 options={availableLinks && availableLinks.length > 0 ? availableLinks : ['No links available']} disabled={availableLinks?.length == 0 || props.lockedLink}
111+
buttonName={selectedLink ? selectedLink.name : 'Select slice'} selectedOption={(option: any) => dropdownSelectLink(option)} />
105112
</div>)}
106113
</div>
107114
{props.absoluteWarning && <div className="left-0 right-0 flex items-center justify-center pointer-events-none top-4 z-100">

src/types/components/projects/projectId/labeling/labeling-main-component.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,9 @@ export enum LabelingPageParts {
4444
MANUAL = 'MANUAL',
4545
WEAK_SUPERVISION = 'WEAK_SUPERVISION',
4646
INFORMATION_SOURCE = 'INFORMATION_SOURCE',
47+
}
48+
49+
export type NavigationBarTopProps = {
50+
absoluteWarning: boolean;
51+
lockedLink: boolean;
4752
}

0 commit comments

Comments
 (0)