fix: button expertise view tiap study

This commit is contained in:
mario
2025-04-15 03:06:17 +00:00
parent 841f84bfdb
commit ca84179aa6
5 changed files with 41 additions and 106 deletions

View File

@@ -26,6 +26,8 @@ const SidePanelWithServices = ({
const [sidePanelOpen, setSidePanelOpen] = useState(activeTabIndexProp !== null);
const [activeTabIndex, setActiveTabIndex] = useState(activeTabIndexProp);
const [tabs, setTabs] = useState(tabsProp ?? panelService.getPanels(side));
const [studyInstanceUID, setStudyInstanceUID] = useState('');
const [lastActivatedStudyUID, setLastActivatedStudyUID] = useState('');
const handleActiveTabIndexChange = useCallback(({ activeTabIndex }) => {
setActiveTabIndex(activeTabIndex);
@@ -71,23 +73,33 @@ const SidePanelWithServices = ({
const activatePanelSubscription = panelService.subscribe(
panelService.EVENTS.ACTIVATE_PANEL,
(activatePanelEvent: Types.ActivatePanelEvent) => {
// Handle the `-exp` suffix logic
const isExpertisePanel = activatePanelEvent.panelId.endsWith('-exp');
const isExpertisePanel = activatePanelEvent.panelId.includes('-exp-');
const realPanelID = isExpertisePanel
? activatePanelEvent.panelId.replace(/-exp$/, '')
? activatePanelEvent.panelId.split('-exp-')[0]
: activatePanelEvent.panelId;
// studyInstanceUID = take from activatePanelEvent.panelId after '-exp-
setStudyInstanceUID(isExpertisePanel ? activatePanelEvent.panelId.split('-exp-')[1] : null);
const tabIndex = tabs.findIndex(tab => tab.id === realPanelID);
if (isExpertisePanel && side === 'right') {
const shouldOpen = !sidePanelOpen; // Use sidePanelOpen to determine toggle state
setSidePanelOpen(shouldOpen);
// Extract study UID from the panel ID
const currentStudyUID = activatePanelEvent.panelId.split('-exp-')[1];
if (shouldOpen) {
setActiveTabIndex(tabIndex !== -1 ? tabIndex : null);
} else {
setActiveTabIndex(null);
}
// Toggle logic - close if same study is clicked again, open if different study
if (currentStudyUID === lastActivatedStudyUID && sidePanelOpen) {
// Same study - close panel
setSidePanelOpen(false);
setActiveTabIndex(null);
setLastActivatedStudyUID('');
} else {
// Different study or panel was closed - open panel with new study
setSidePanelOpen(true);
setActiveTabIndex(tabIndex !== -1 ? tabIndex : null);
setStudyInstanceUID(currentStudyUID);
setLastActivatedStudyUID(currentStudyUID);
}
} else if (tabIndex !== -1) {
setActiveTabIndex(tabIndex);
}
@@ -97,7 +109,7 @@ const SidePanelWithServices = ({
return () => {
activatePanelSubscription.unsubscribe();
};
}, [tabs, sidePanelOpen, panelService]);
}, [tabs, sidePanelOpen, panelService, lastActivatedStudyUID]);
return (
<SidePanel
@@ -110,6 +122,7 @@ const SidePanelWithServices = ({
onActiveTabIndexChange={handleActiveTabIndexChange}
expandedWidth={expandedWidth}
servicesManager={servicesManager} // Pass servicesManager ke SidePanel
studyInstanceUID={studyInstanceUID}
/>
);
};