From fb4854d0aa958fe3c5c43c0274b2856750c48dfa Mon Sep 17 00:00:00 2001 From: Tatiana Date: Mon, 19 Aug 2024 18:39:25 -0700 Subject: [PATCH] Fix: handle empty "Files and Links" tab in patient view --- src/pages/patientView/PatientViewPage.tsx | 5 ++ src/pages/patientView/PatientViewPageTabs.tsx | 37 +++++------ .../patientView/resources/ResourcesTab.tsx | 35 +++++++++++ .../components/resources/ResourceTable.tsx | 62 +++++++++++-------- 4 files changed, 95 insertions(+), 44 deletions(-) diff --git a/src/pages/patientView/PatientViewPage.tsx b/src/pages/patientView/PatientViewPage.tsx index 6eac869b2b8..575385709b4 100644 --- a/src/pages/patientView/PatientViewPage.tsx +++ b/src/pages/patientView/PatientViewPage.tsx @@ -277,6 +277,11 @@ export class PatientViewPageInner extends React.Component< @computed get shouldShowResources(): boolean { + const tabId: string = this.urlWrapper.activeTabId; + if (tabId === 'filesAndLinks') { + return true; + } + if (this.pageStore.resourceIdToResourceData.isComplete) { return _.some( this.pageStore.resourceIdToResourceData.result, diff --git a/src/pages/patientView/PatientViewPageTabs.tsx b/src/pages/patientView/PatientViewPageTabs.tsx index 3bb9ec80efa..f8f29d0496e 100644 --- a/src/pages/patientView/PatientViewPageTabs.tsx +++ b/src/pages/patientView/PatientViewPageTabs.tsx @@ -553,24 +553,25 @@ export function tabs( ); - tabs.push( - -
- -
-
- ); + if (pageComponent.shouldShowResources) + tabs.push( + +
+ +
+
+ ); tabs.push( [this.props.store.resourceIdToResourceData], + render: () => { + const shouldShowNoResource = () => { + if (this.props.store.resourceIdToResourceData.isComplete) { + return !_.some( + this.props.store.resourceIdToResourceData.result, + data => data.length > 0 + ); + } + return true; + }; + + if (shouldShowNoResource()) { + return ( +
+

+ Resources for {this.props.store.patientId} +

+ +
+ ); + } else { + return null; + } + }, + }); + render() { return (
@@ -136,6 +170,7 @@ export default class ResourcesTab extends React.Component< {this.patientResources.component} {this.sampleResources.component} {this.studyResources.component} + {this.showNoResource.component}
); diff --git a/src/shared/components/resources/ResourceTable.tsx b/src/shared/components/resources/ResourceTable.tsx index 2939bb7c33d..53e20061e9a 100644 --- a/src/shared/components/resources/ResourceTable.tsx +++ b/src/shared/components/resources/ResourceTable.tsx @@ -58,38 +58,48 @@ const ResourceTable = observer( Resource - Description + {resourceTable.data.length > 0 && Description} - {resourceTable.data.map(resource => ( + {resourceTable.data.length === 0 ? ( - - openResource(resource)}> - {icon(resource)} - {resource.resourceDefinition.displayName || - resource.url} - + + There are no results - - - - Open in new window - - - {resource.resourceDefinition.description} - ))} + ) : ( + resourceTable.data.map(resource => ( + + + openResource(resource)}> + {icon(resource)} + {resource.resourceDefinition + .displayName || resource.url} + + + + + + Open in new window + + + + {resource.resourceDefinition.description} + + + )) + )} );