@databiosphere/findable-ui 50.0.0 → 50.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.release-please-manifest.json +1 -1
- package/CHANGELOG.md +15 -0
- package/lib/common/analytics/entities.d.ts +2 -0
- package/lib/common/analytics/entities.js +2 -0
- package/lib/components/Export/common/tracking.d.ts +8 -0
- package/lib/components/Export/common/tracking.js +12 -0
- package/lib/components/Export/components/ExportToTerra/components/TerraSetUpForm/components/NIHAccountExpiryWarning/nihAccountExpiryWarning.js +2 -2
- package/lib/components/Export/components/ExportToTerra/exportToTerra.d.ts +2 -1
- package/lib/components/Export/components/ExportToTerra/exportToTerra.js +10 -5
- package/lib/components/Export/components/ManifestDownload/components/ManifestDownloadEntity/components/FileManifestDownload/fileManifestDownload.js +7 -1
- package/package.json +1 -1
- package/src/common/analytics/entities.ts +2 -0
- package/src/components/Export/common/tracking.ts +14 -0
- package/src/components/Export/components/ExportToTerra/components/TerraSetUpForm/components/NIHAccountExpiryWarning/nihAccountExpiryWarning.tsx +2 -2
- package/src/components/Export/components/ExportToTerra/exportToTerra.tsx +13 -4
- package/src/components/Export/components/ManifestDownload/components/ManifestDownloadEntity/components/FileManifestDownload/fileManifestDownload.tsx +7 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [50.1.1](https://github.com/DataBiosphere/findable-ui/compare/v50.1.0...v50.1.1) (2026-03-23)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* update NIH account text to NIH Researcher Auth Service (RAS) account ([#835](https://github.com/DataBiosphere/findable-ui/issues/835)) ([b5fbb62](https://github.com/DataBiosphere/findable-ui/commit/b5fbb6277cef7c586b7e4157f509d904fb719e59))
|
|
9
|
+
* update NIH account text to NIH Researcher Auth Service (RAS) account [#4719](https://github.com/DataBiosphere/findable-ui/issues/4719) ([b5fbb62](https://github.com/DataBiosphere/findable-ui/commit/b5fbb6277cef7c586b7e4157f509d904fb719e59))
|
|
10
|
+
|
|
11
|
+
## [50.1.0](https://github.com/DataBiosphere/findable-ui/compare/v50.0.0...v50.1.0) (2026-03-20)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Features
|
|
15
|
+
|
|
16
|
+
* add dataset-specific analytics events for exports ([#831](https://github.com/DataBiosphere/findable-ui/issues/831)) ([aea5262](https://github.com/DataBiosphere/findable-ui/commit/aea526241a92767f51ed7f8540869484502a1478))
|
|
17
|
+
|
|
3
18
|
## [50.0.0](https://github.com/DataBiosphere/findable-ui/compare/v49.6.0...v50.0.0) (2026-03-20)
|
|
4
19
|
|
|
5
20
|
|
|
@@ -5,6 +5,8 @@ export type DataLayer = any;
|
|
|
5
5
|
export declare enum EVENT_NAME {
|
|
6
6
|
BULK_DOWNLOAD_REQUESTED = "bulk_download_requested",
|
|
7
7
|
CHAT_SUBMITTED = "chat_submitted",
|
|
8
|
+
DATASET_ANALYZE_IN_TERRA_REQUESTED = "dataset_analyze_in_terra_requested",
|
|
9
|
+
DATASET_FILE_MANIFEST_REQUESTED = "dataset_file_manifest_requested",
|
|
8
10
|
ENTITY_SELECTED = "entity_selected",
|
|
9
11
|
ENTITY_TABLE_PAGINATED = "entity_table_paginated",
|
|
10
12
|
ENTITY_TABLE_SORTED = "entity_table_sorted",
|
|
@@ -5,6 +5,8 @@ export var EVENT_NAME;
|
|
|
5
5
|
(function (EVENT_NAME) {
|
|
6
6
|
EVENT_NAME["BULK_DOWNLOAD_REQUESTED"] = "bulk_download_requested";
|
|
7
7
|
EVENT_NAME["CHAT_SUBMITTED"] = "chat_submitted";
|
|
8
|
+
EVENT_NAME["DATASET_ANALYZE_IN_TERRA_REQUESTED"] = "dataset_analyze_in_terra_requested";
|
|
9
|
+
EVENT_NAME["DATASET_FILE_MANIFEST_REQUESTED"] = "dataset_file_manifest_requested";
|
|
8
10
|
EVENT_NAME["ENTITY_SELECTED"] = "entity_selected";
|
|
9
11
|
EVENT_NAME["ENTITY_TABLE_PAGINATED"] = "entity_table_paginated";
|
|
10
12
|
EVENT_NAME["ENTITY_TABLE_SORTED"] = "entity_table_sorted";
|
|
@@ -4,6 +4,14 @@
|
|
|
4
4
|
* @param toolName - Tool name.
|
|
5
5
|
*/
|
|
6
6
|
export declare function trackBulkDownloadRequested(entity_name: string, toolName: string): void;
|
|
7
|
+
/**
|
|
8
|
+
* Executes event tracking for the dataset file manifest export.
|
|
9
|
+
*/
|
|
10
|
+
export declare function trackDatasetFileManifestRequested(): void;
|
|
11
|
+
/**
|
|
12
|
+
* Executes event tracking for the dataset Terra export.
|
|
13
|
+
*/
|
|
14
|
+
export declare function trackDatasetExportToTerraRequested(): void;
|
|
7
15
|
/**
|
|
8
16
|
* Executes event tracking for the file manifest export.
|
|
9
17
|
* @param entity_name - Entity (tab) name.
|
|
@@ -12,6 +12,18 @@ export function trackBulkDownloadRequested(entity_name, toolName) {
|
|
|
12
12
|
[EVENT_PARAM.TOOL_NAME]: toolName,
|
|
13
13
|
});
|
|
14
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* Executes event tracking for the dataset file manifest export.
|
|
17
|
+
*/
|
|
18
|
+
export function trackDatasetFileManifestRequested() {
|
|
19
|
+
track(EVENT_NAME.DATASET_FILE_MANIFEST_REQUESTED);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Executes event tracking for the dataset Terra export.
|
|
23
|
+
*/
|
|
24
|
+
export function trackDatasetExportToTerraRequested() {
|
|
25
|
+
track(EVENT_NAME.DATASET_ANALYZE_IN_TERRA_REQUESTED);
|
|
26
|
+
}
|
|
15
27
|
/**
|
|
16
28
|
* Executes event tracking for the file manifest export.
|
|
17
29
|
* @param entity_name - Entity (tab) name.
|
|
@@ -30,7 +30,7 @@ function getExpireTimeInDays(expirationTimestamp) {
|
|
|
30
30
|
*/
|
|
31
31
|
function getExpiryMessage(linkExpired, expirationTimestamp) {
|
|
32
32
|
if (linkExpired) {
|
|
33
|
-
return "Your NIH account link has expired.";
|
|
33
|
+
return "Your NIH Researcher Auth Service (RAS) account link has expired.";
|
|
34
34
|
}
|
|
35
|
-
return `Your NIH account link will expire in ${getExpireTimeInDays(expirationTimestamp)} days.`;
|
|
35
|
+
return `Your NIH Researcher Auth Service (RAS) account link will expire in ${getExpireTimeInDays(expirationTimestamp)} days.`;
|
|
36
36
|
}
|
|
@@ -10,8 +10,9 @@ export interface ExportToTerraProps {
|
|
|
10
10
|
fileSummaryFacetName: string;
|
|
11
11
|
filters: Filters;
|
|
12
12
|
formFacet: FormFacet;
|
|
13
|
+
isDatasetExport?: boolean;
|
|
13
14
|
manifestDownloadFormat?: ManifestDownloadFormat;
|
|
14
15
|
manifestDownloadFormats: ManifestDownloadFormat[];
|
|
15
16
|
speciesFacetName: string;
|
|
16
17
|
}
|
|
17
|
-
export declare const ExportToTerra: ({ ExportForm, ExportToTerraStart, ExportToTerraSuccess, fileManifestState, fileSummaryFacetName, filters, formFacet, manifestDownloadFormat, manifestDownloadFormats, speciesFacetName, }: ExportToTerraProps) => JSX.Element;
|
|
18
|
+
export declare const ExportToTerra: ({ ExportForm, ExportToTerraStart, ExportToTerraSuccess, fileManifestState, fileSummaryFacetName, filters, formFacet, isDatasetExport, manifestDownloadFormat, manifestDownloadFormats, speciesFacetName, }: ExportToTerraProps) => JSX.Element;
|
|
@@ -6,10 +6,10 @@ import { useFileManifestFileCount } from "../../../../hooks/useFileManifest/useF
|
|
|
6
6
|
import { useFileManifestFormat } from "../../../../hooks/useFileManifest/useFileManifestFormat";
|
|
7
7
|
import { useRequestFileLocation } from "../../../../hooks/useRequestFileLocation";
|
|
8
8
|
import { useRequestManifest } from "../../../../hooks/useRequestManifest/useRequestManifest";
|
|
9
|
-
import { trackExportToTerraRequested } from "../../common/tracking";
|
|
9
|
+
import { trackDatasetExportToTerraRequested, trackExportToTerraRequested, } from "../../common/tracking";
|
|
10
10
|
import { ExportToTerraNotStarted } from "./components/ExportToTerraNotStarted/exportToTerraNotStarted";
|
|
11
11
|
import { ExportToTerraReady } from "./components/ExportToTerraReady/exportToTerraReady";
|
|
12
|
-
export const ExportToTerra = ({ ExportForm, ExportToTerraStart, ExportToTerraSuccess, fileManifestState, fileSummaryFacetName, filters, formFacet, manifestDownloadFormat, manifestDownloadFormats, speciesFacetName, }) => {
|
|
12
|
+
export const ExportToTerra = ({ ExportForm, ExportToTerraStart, ExportToTerraSuccess, fileManifestState, fileSummaryFacetName, filters, formFacet, isDatasetExport = false, manifestDownloadFormat, manifestDownloadFormats, speciesFacetName, }) => {
|
|
13
13
|
const { exploreState: { tabValue: entityList }, } = useExploreState();
|
|
14
14
|
useFileManifest(filters, fileSummaryFacetName);
|
|
15
15
|
useFileManifestFileCount(filters, speciesFacetName, fileSummaryFacetName);
|
|
@@ -18,9 +18,14 @@ export const ExportToTerra = ({ ExportForm, ExportToTerraStart, ExportToTerraSuc
|
|
|
18
18
|
const { data, isLoading, run } = useRequestFileLocation(requestUrl, requestMethod);
|
|
19
19
|
const exportURL = useExportToTerraResponseURL(requestParams, data);
|
|
20
20
|
return exportURL ? (_jsx(ExportToTerraReady, { ExportToTerraSuccess: ExportToTerraSuccess, exportURL: exportURL })) : (_jsx(ExportToTerraNotStarted, { ExportTerraForm: ExportForm, ExportToTerraStart: ExportToTerraStart, fileManifestFormatState: fileManifestFormatState, fileManifestState: fileManifestState, formFacet: formFacet, isLoading: isLoading, manifestDownloadFormats: manifestDownloadFormats, onRequestManifest: () => {
|
|
21
|
-
// Execute GA tracking
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
// Execute GA tracking.
|
|
22
|
+
if (isDatasetExport) {
|
|
23
|
+
trackDatasetExportToTerraRequested();
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
trackExportToTerraRequested(entityList);
|
|
27
|
+
}
|
|
28
|
+
// Request manifest.
|
|
24
29
|
run();
|
|
25
30
|
} }));
|
|
26
31
|
};
|
|
@@ -4,6 +4,7 @@ import copy from "copy-to-clipboard";
|
|
|
4
4
|
import { useDownloadStatus } from "../../../../../../../../hooks/useDownloadStatus";
|
|
5
5
|
import { useFileManifestDownload } from "../../../../../../../../hooks/useFileManifest/useFileManifestDownload";
|
|
6
6
|
import { useLoginGuard } from "../../../../../../../../providers/loginGuard/hook";
|
|
7
|
+
import { trackDatasetFileManifestRequested } from "../../../../../../common/tracking";
|
|
7
8
|
import { BUTTON_PROPS } from "../../../../../../../common/Button/constants";
|
|
8
9
|
import { ButtonGroup } from "../../../../../../../common/ButtonGroup/buttonGroup";
|
|
9
10
|
import { ContentCopyIconSmall, DownloadIconSmall, } from "../../../../../../../common/CustomIcon/common/constants";
|
|
@@ -17,7 +18,12 @@ export const FileManifestDownload = ({ filters, }) => {
|
|
|
17
18
|
const { fileName, isIdle, isLoading, manifestURL, requestManifest } = useFileManifestDownload(filters);
|
|
18
19
|
// Prompt user for login before download and copy, if required.
|
|
19
20
|
const { requireLogin } = useLoginGuard();
|
|
20
|
-
return (_jsx(FluidPaper, { children: _jsxs(GridPaper, { children: [_jsx(SectionTitle, { children: "File Manifest" }), _jsxs(TableContainer, { children: [_jsx(Loading, { loading: isLoading, panelStyle: LOADING_PANEL_STYLE.INHERIT }), _jsx(GridTable, { gridTemplateColumns: "auto 1fr", children: _jsx(TableBody, { children: _jsx(TableRow, { children: isIdle || isLoading ? (_jsx(TableCell, { children: _jsx(Tooltip, { ...TOOLTIP_PROPS, title: message, children: _jsx("span", { children: _jsx(Button, { ...BUTTON_PROPS.PRIMARY_CONTAINED, disabled: disabled || isLoading, onClick: () =>
|
|
21
|
+
return (_jsx(FluidPaper, { children: _jsxs(GridPaper, { children: [_jsx(SectionTitle, { children: "File Manifest" }), _jsxs(TableContainer, { children: [_jsx(Loading, { loading: isLoading, panelStyle: LOADING_PANEL_STYLE.INHERIT }), _jsx(GridTable, { gridTemplateColumns: "auto 1fr", children: _jsx(TableBody, { children: _jsx(TableRow, { children: isIdle || isLoading ? (_jsx(TableCell, { children: _jsx(Tooltip, { ...TOOLTIP_PROPS, title: message, children: _jsx("span", { children: _jsx(Button, { ...BUTTON_PROPS.PRIMARY_CONTAINED, disabled: disabled || isLoading, onClick: () => {
|
|
22
|
+
requireLogin(() => {
|
|
23
|
+
trackDatasetFileManifestRequested();
|
|
24
|
+
requestManifest();
|
|
25
|
+
});
|
|
26
|
+
}, children: "Request link" }) }) }) })) : (_jsxs(_Fragment, { children: [manifestURL && (_jsx(TableCell, { children: _jsx(ButtonGroup, { Buttons: [
|
|
21
27
|
_jsx(Button, { download: true, href: manifestURL, children: _jsx(DownloadIconSmall, {}) }, "download"),
|
|
22
28
|
_jsx(Button, { onClick: () => copy(manifestURL), children: _jsx(ContentCopyIconSmall, {}) }, "copy"),
|
|
23
29
|
] }) })), _jsx(TableCell, { children: manifestURL
|
package/package.json
CHANGED
|
@@ -7,6 +7,8 @@ export type DataLayer = any;
|
|
|
7
7
|
export enum EVENT_NAME {
|
|
8
8
|
BULK_DOWNLOAD_REQUESTED = "bulk_download_requested",
|
|
9
9
|
CHAT_SUBMITTED = "chat_submitted",
|
|
10
|
+
DATASET_ANALYZE_IN_TERRA_REQUESTED = "dataset_analyze_in_terra_requested",
|
|
11
|
+
DATASET_FILE_MANIFEST_REQUESTED = "dataset_file_manifest_requested",
|
|
10
12
|
ENTITY_SELECTED = "entity_selected",
|
|
11
13
|
ENTITY_TABLE_PAGINATED = "entity_table_paginated",
|
|
12
14
|
ENTITY_TABLE_SORTED = "entity_table_sorted",
|
|
@@ -17,6 +17,20 @@ export function trackBulkDownloadRequested(
|
|
|
17
17
|
});
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Executes event tracking for the dataset file manifest export.
|
|
22
|
+
*/
|
|
23
|
+
export function trackDatasetFileManifestRequested(): void {
|
|
24
|
+
track(EVENT_NAME.DATASET_FILE_MANIFEST_REQUESTED);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Executes event tracking for the dataset Terra export.
|
|
29
|
+
*/
|
|
30
|
+
export function trackDatasetExportToTerraRequested(): void {
|
|
31
|
+
track(EVENT_NAME.DATASET_ANALYZE_IN_TERRA_REQUESTED);
|
|
32
|
+
}
|
|
33
|
+
|
|
20
34
|
/**
|
|
21
35
|
* Executes event tracking for the file manifest export.
|
|
22
36
|
* @param entity_name - Entity (tab) name.
|
|
@@ -58,9 +58,9 @@ function getExpiryMessage(
|
|
|
58
58
|
expirationTimestamp?: string,
|
|
59
59
|
): string {
|
|
60
60
|
if (linkExpired) {
|
|
61
|
-
return "Your NIH account link has expired.";
|
|
61
|
+
return "Your NIH Researcher Auth Service (RAS) account link has expired.";
|
|
62
62
|
}
|
|
63
|
-
return `Your NIH account link will expire in ${getExpireTimeInDays(
|
|
63
|
+
return `Your NIH Researcher Auth Service (RAS) account link will expire in ${getExpireTimeInDays(
|
|
64
64
|
expirationTimestamp,
|
|
65
65
|
)} days.`;
|
|
66
66
|
}
|
|
@@ -9,7 +9,10 @@ import { useRequestFileLocation } from "../../../../hooks/useRequestFileLocation
|
|
|
9
9
|
import { useRequestManifest } from "../../../../hooks/useRequestManifest/useRequestManifest";
|
|
10
10
|
import { FileManifestState } from "../../../../providers/fileManifestState";
|
|
11
11
|
import { FormFacet, ManifestDownloadFormat } from "../../common/entities";
|
|
12
|
-
import {
|
|
12
|
+
import {
|
|
13
|
+
trackDatasetExportToTerraRequested,
|
|
14
|
+
trackExportToTerraRequested,
|
|
15
|
+
} from "../../common/tracking";
|
|
13
16
|
import { ExportToTerraNotStarted } from "./components/ExportToTerraNotStarted/exportToTerraNotStarted";
|
|
14
17
|
import { ExportToTerraReady } from "./components/ExportToTerraReady/exportToTerraReady";
|
|
15
18
|
|
|
@@ -21,6 +24,7 @@ export interface ExportToTerraProps {
|
|
|
21
24
|
fileSummaryFacetName: string;
|
|
22
25
|
filters: Filters; // Initializes export to terra filters.
|
|
23
26
|
formFacet: FormFacet;
|
|
27
|
+
isDatasetExport?: boolean;
|
|
24
28
|
manifestDownloadFormat?: ManifestDownloadFormat;
|
|
25
29
|
manifestDownloadFormats: ManifestDownloadFormat[];
|
|
26
30
|
speciesFacetName: string;
|
|
@@ -34,6 +38,7 @@ export const ExportToTerra = ({
|
|
|
34
38
|
fileSummaryFacetName,
|
|
35
39
|
filters,
|
|
36
40
|
formFacet,
|
|
41
|
+
isDatasetExport = false,
|
|
37
42
|
manifestDownloadFormat,
|
|
38
43
|
manifestDownloadFormats,
|
|
39
44
|
speciesFacetName,
|
|
@@ -68,9 +73,13 @@ export const ExportToTerra = ({
|
|
|
68
73
|
isLoading={isLoading}
|
|
69
74
|
manifestDownloadFormats={manifestDownloadFormats}
|
|
70
75
|
onRequestManifest={(): void => {
|
|
71
|
-
// Execute GA tracking
|
|
72
|
-
|
|
73
|
-
|
|
76
|
+
// Execute GA tracking.
|
|
77
|
+
if (isDatasetExport) {
|
|
78
|
+
trackDatasetExportToTerraRequested();
|
|
79
|
+
} else {
|
|
80
|
+
trackExportToTerraRequested(entityList);
|
|
81
|
+
}
|
|
82
|
+
// Request manifest.
|
|
74
83
|
run();
|
|
75
84
|
}}
|
|
76
85
|
/>
|
|
@@ -5,6 +5,7 @@ import { Filters } from "../../../../../../../../common/entities";
|
|
|
5
5
|
import { useDownloadStatus } from "../../../../../../../../hooks/useDownloadStatus";
|
|
6
6
|
import { useFileManifestDownload } from "../../../../../../../../hooks/useFileManifest/useFileManifestDownload";
|
|
7
7
|
import { useLoginGuard } from "../../../../../../../../providers/loginGuard/hook";
|
|
8
|
+
import { trackDatasetFileManifestRequested } from "../../../../../../common/tracking";
|
|
8
9
|
import { BUTTON_PROPS } from "../../../../../../../common/Button/constants";
|
|
9
10
|
import { ButtonGroup } from "../../../../../../../common/ButtonGroup/buttonGroup";
|
|
10
11
|
import {
|
|
@@ -59,7 +60,12 @@ export const FileManifestDownload = ({
|
|
|
59
60
|
<Button
|
|
60
61
|
{...BUTTON_PROPS.PRIMARY_CONTAINED}
|
|
61
62
|
disabled={disabled || isLoading}
|
|
62
|
-
onClick={() =>
|
|
63
|
+
onClick={(): void => {
|
|
64
|
+
requireLogin(() => {
|
|
65
|
+
trackDatasetFileManifestRequested();
|
|
66
|
+
requestManifest();
|
|
67
|
+
});
|
|
68
|
+
}}
|
|
63
69
|
>
|
|
64
70
|
Request link
|
|
65
71
|
</Button>
|