diff --git a/static-site/app/pathogens/files/page.tsx b/static-site/app/pathogens/files/page.tsx index 87d47012c..5174f800f 100644 --- a/static-site/app/pathogens/files/page.tsx +++ b/static-site/app/pathogens/files/page.tsx @@ -42,6 +42,26 @@ export default function PathogenWorkflowFiles(): React.ReactElement {

{`The 'show full history' link details the temporal history of files for a given pathogen.`} +
+
+ {`We gratefully acknowledge the authors, originating and submitting laboratories of the genetic sequences`} + {` and metadata for sharing their work. This work is made possible by the open sharing of genetic data by`} + {` research groups from all over the world. We gratefully acknowledge their contributions.`} +
+
+ {`Please note that although data generators have generously shared data in an open fashion,`} + {` that does not mean there should be free license to publish on this data.`} + {` Data generators should be cited where possible and collaborations should be sought in some circumstances.`} + {` Please try to avoid scooping someone else's work. Reach out if uncertain.`} +
+
+ {`Some of these files contain Restricted Data from Pathoplexus.`} +
+ {`To use these in your own analysis, please read `} + + Pathoplexus Restricted Data Terms of Use + + {`.`} diff --git a/static-site/components/list-resources/icon-container.tsx b/static-site/components/list-resources/icon-container.tsx index 2b4c097b5..31256125c 100644 --- a/static-site/components/list-resources/icon-container.tsx +++ b/static-site/components/list-resources/icon-container.tsx @@ -4,6 +4,7 @@ import React, { useState } from "react"; import { IconType } from "react-icons"; import { MdFormatListBulleted, MdHistory, MdOutlineWarningAmber } from "react-icons/md"; +import { RiErrorWarningLine } from "react-icons/ri"; import { InternalError } from "../error-boundary"; @@ -57,6 +58,9 @@ export default function IconContainer({ case "bullet-list": Icon = MdFormatListBulleted; break; + case "restricted": + Icon = RiErrorWarningLine; + break; case "out-of-date": Icon = MdOutlineWarningAmber; break; diff --git a/static-site/components/list-resources/individual-resource.tsx b/static-site/components/list-resources/individual-resource.tsx index 1d4069868..3894cf7f1 100644 --- a/static-site/components/list-resources/individual-resource.tsx +++ b/static-site/components/list-resources/individual-resource.tsx @@ -70,6 +70,12 @@ export function IndividualResource({ return null; } + const restricted = resource.restrictedDataWarning ? ( + + + + ) : null; + // If an out of date warning exists then show it. Otherwise show cadence information if it's available let history: React.JSX.Element | null = null; if (resource.outOfDateWarning) { @@ -115,6 +121,7 @@ export function IndividualResource({ /> + {restricted} {history} diff --git a/static-site/components/list-resources/listResourcesApi.tsx b/static-site/components/list-resources/listResourcesApi.tsx index 545a159ab..3e3ce7824 100644 --- a/static-site/components/list-resources/listResourcesApi.tsx +++ b/static-site/components/list-resources/listResourcesApi.tsx @@ -206,6 +206,10 @@ function groupIntermediatesByPathogen( url, lastUpdated, }; + if (nameParts.at(-1)?.includes("restricted")) { + // "restricted" in filename + resourceDetails.restrictedDataWarning = "Warning! This file may contain restricted data. Please refer to Restricted Data Terms of Use linked above."; + } const nDaysOld = _timeDelta(lastUpdated); if (nDaysOld && nDaysOld>365) { resourceDetails.outOfDateWarning = `Warning! This file may be over a year old. Last known update on ${lastUpdated}`; diff --git a/static-site/components/list-resources/resource-group.tsx b/static-site/components/list-resources/resource-group.tsx index 8734cfe56..8102d91cb 100644 --- a/static-site/components/list-resources/resource-group.tsx +++ b/static-site/components/list-resources/resource-group.tsx @@ -377,6 +377,9 @@ function _getMaxResourceWidth( (w: number, r: DisplayNamedResource): number => { /* add the pixels for the display name */ let _w = r.displayName.default.length * namePxPerChar; + if (r.restrictedDataWarning) { + _w += 40; // icon + padding + } if (r.outOfDateWarning) { _w += 40; // icon + padding } else if (r.nVersions && r.updateCadence) { diff --git a/static-site/components/list-resources/types.ts b/static-site/components/list-resources/types.ts index 6f2a7c6c4..fbfc8761f 100644 --- a/static-site/components/list-resources/types.ts +++ b/static-site/components/list-resources/types.ts @@ -77,6 +77,9 @@ export interface Resource { nVersions?: number; updateCadence?: UpdateCadence; + /** Warning is set if the resource potentially uses restricted data. */ + restrictedDataWarning?: string; + /** If the resource is (potentially) out of date (according to the `lastUpdated` property) * the `outOfDateWarning` may be set */ outOfDateWarning?: string;