synapse-react-client 4.0.34 → 4.0.35
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/dist/SWC.index.js +1 -1
- package/dist/assets/icons/curie-head.svg +21 -0
- package/dist/components/AccessRequirementList/AccessRequirementList.d.ts +24 -2
- package/dist/components/AccessRequirementList/AccessRequirementList.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/AccessRequirementList.js +108 -106
- package/dist/components/AccessRequirementList/AccessRequirementList.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.js +26 -25
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.js +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.d.ts +6 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.js +55 -54
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.js.map +1 -1
- package/dist/components/DraggableDialog/DraggableDialog.d.ts +2 -1
- package/dist/components/DraggableDialog/DraggableDialog.d.ts.map +1 -1
- package/dist/components/DraggableDialog/DraggableDialog.js +42 -33
- package/dist/components/DraggableDialog/DraggableDialog.js.map +1 -1
- package/dist/components/EntityTreeTable/hooks/useTableColumns.d.ts.map +1 -1
- package/dist/components/EntityTreeTable/hooks/useTableColumns.js +12 -6
- package/dist/components/EntityTreeTable/hooks/useTableColumns.js.map +1 -1
- package/dist/components/ExperimentalMode/ExperimentalMode.js +2 -1
- package/dist/components/ExperimentalMode/ExperimentalMode.js.map +1 -1
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts.map +1 -1
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js +64 -55
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js.map +1 -1
- package/dist/components/StorybookComponentWrapper.d.ts.map +1 -1
- package/dist/components/StorybookComponentWrapper.js +15 -10
- package/dist/components/StorybookComponentWrapper.js.map +1 -1
- package/dist/components/SynapseChat/GridAgentChat.js +6 -6
- package/dist/components/SynapseChat/SynapseChat.d.ts +2 -1
- package/dist/components/SynapseChat/SynapseChat.d.ts.map +1 -1
- package/dist/components/SynapseChat/SynapseChat.js +118 -74
- package/dist/components/SynapseChat/SynapseChat.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChatInteraction.d.ts +3 -1
- package/dist/components/SynapseChat/SynapseChatInteraction.d.ts.map +1 -1
- package/dist/components/SynapseChat/SynapseChatInteraction.js +21 -21
- package/dist/components/SynapseChat/SynapseChatInteraction.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChatMessage.d.ts +1 -0
- package/dist/components/SynapseChat/SynapseChatMessage.d.ts.map +1 -1
- package/dist/components/SynapseChat/SynapseChatMessage.js +9 -8
- package/dist/components/SynapseChat/SynapseChatMessage.js.map +1 -1
- package/dist/components/SynapseChat/SynapsePortalChatDialog.d.ts.map +1 -1
- package/dist/components/SynapseChat/SynapsePortalChatDialog.js +2 -1
- package/dist/components/SynapseChat/SynapsePortalChatDialog.js.map +1 -1
- package/dist/components/TanStackTable/TanStackTableUtils.d.ts.map +1 -1
- package/dist/components/TanStackTable/TanStackTableUtils.js +6 -6
- package/dist/components/TanStackTable/TanStackTableUtils.js.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.d.ts +12 -0
- package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.d.ts.map +1 -0
- package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.js +84 -0
- package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.js.map +1 -0
- package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPage.d.ts.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPage.js +20 -18
- package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPage.js.map +1 -1
- package/dist/components/entity/page/CreatedByModifiedBy.d.ts.map +1 -1
- package/dist/components/entity/page/CreatedByModifiedBy.js +43 -61
- package/dist/components/entity/page/CreatedByModifiedBy.js.map +1 -1
- package/dist/components/entity/page/createdByModifiedByTooltips.d.ts +7 -0
- package/dist/components/entity/page/createdByModifiedByTooltips.d.ts.map +1 -0
- package/dist/components/entity/page/createdByModifiedByTooltips.js +36 -0
- package/dist/components/entity/page/createdByModifiedByTooltips.js.map +1 -0
- package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.d.ts.map +1 -1
- package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js +130 -65
- package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js.map +1 -1
- package/dist/components/widgets/Range.js +8 -2
- package/dist/components/widgets/Range.js.map +1 -1
- package/dist/components/widgets/query-filter/RangeFacetFilter.d.ts.map +1 -1
- package/dist/components/widgets/query-filter/RangeFacetFilter.js +2 -1
- package/dist/components/widgets/query-filter/RangeFacetFilter.js.map +1 -1
- package/dist/components/widgets/query-filter/RangeFacetFilterUI.d.ts.map +1 -1
- package/dist/components/widgets/query-filter/RangeFacetFilterUI.js +19 -19
- package/dist/components/widgets/query-filter/RangeFacetFilterUI.js.map +1 -1
- package/dist/mocks/msw/handlers/fileHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/fileHandlers.js +22 -22
- package/dist/mocks/msw/handlers/fileHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/userProfileHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/userProfileHandlers.js +36 -36
- package/dist/mocks/msw/handlers/userProfileHandlers.js.map +1 -1
- package/dist/mocks/user/mock_user_profile.d.ts +1 -0
- package/dist/mocks/user/mock_user_profile.d.ts.map +1 -1
- package/dist/mocks/user/mock_user_profile.js +45 -45
- package/dist/mocks/user/mock_user_profile.js.map +1 -1
- package/dist/synapse-queries/KeyFactory.d.ts +1 -0
- package/dist/synapse-queries/KeyFactory.d.ts.map +1 -1
- package/dist/synapse-queries/KeyFactory.js +3 -0
- package/dist/synapse-queries/KeyFactory.js.map +1 -1
- package/dist/synapse-queries/dataaccess/index.js +4 -4
- package/dist/synapse-queries/dataaccess/useEDuc.d.ts +13 -1
- package/dist/synapse-queries/dataaccess/useEDuc.d.ts.map +1 -1
- package/dist/synapse-queries/dataaccess/useEDuc.js +67 -49
- package/dist/synapse-queries/dataaccess/useEDuc.js.map +1 -1
- package/dist/synapse-queries/index.js +185 -184
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/APIConstants.d.ts +1 -0
- package/dist/utils/APIConstants.d.ts.map +1 -1
- package/dist/utils/APIConstants.js +2 -2
- package/dist/utils/APIConstants.js.map +1 -1
- package/dist/utils/AppUtils/session/ApplicationSessionManager.d.ts.map +1 -1
- package/dist/utils/AppUtils/session/ApplicationSessionManager.js +20 -19
- package/dist/utils/AppUtils/session/ApplicationSessionManager.js.map +1 -1
- package/dist/utils/featureflag/FeatureFlags.d.ts +1 -0
- package/dist/utils/featureflag/FeatureFlags.d.ts.map +1 -1
- package/dist/utils/featureflag/FeatureFlags.js +1 -1
- package/dist/utils/featureflag/FeatureFlags.js.map +1 -1
- package/dist/utils/functions/RegularExpressions.d.ts +7 -0
- package/dist/utils/functions/RegularExpressions.d.ts.map +1 -1
- package/dist/utils/functions/RegularExpressions.js +5 -4
- package/dist/utils/functions/RegularExpressions.js.map +1 -1
- package/dist/utils/hooks/useIsHydrated.d.ts +9 -0
- package/dist/utils/hooks/useIsHydrated.d.ts.map +1 -0
- package/dist/utils/hooks/useIsHydrated.js +10 -0
- package/dist/utils/hooks/useIsHydrated.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Fragment as e, jsx as t, jsxs as n } from "react/jsx-runtime";
|
|
2
|
+
//#region src/components/entity/page/createdByModifiedByTooltips.tsx
|
|
3
|
+
var r = "This is the user who created this Dataset. This may not be the same person who generated the files in this Dataset, or who originally uploaded these files to Synapse.";
|
|
4
|
+
function i(r) {
|
|
5
|
+
return /* @__PURE__ */ n(e, { children: [
|
|
6
|
+
/* @__PURE__ */ n("p", { children: [
|
|
7
|
+
"This is when the configuration of this ",
|
|
8
|
+
r,
|
|
9
|
+
" was last changed."
|
|
10
|
+
] }),
|
|
11
|
+
/* @__PURE__ */ t("p", { children: "Configuration changes may be triggered by (for example):" }),
|
|
12
|
+
/* @__PURE__ */ n("ul", { children: [/* @__PURE__ */ n("li", { children: ["Editing the name of the ", r] }), /* @__PURE__ */ n("li", { children: ["Updating the schema used by the ", r] })] }),
|
|
13
|
+
/* @__PURE__ */ n("p", { children: [
|
|
14
|
+
"This does NOT reflect changes to the data displayed in the the",
|
|
15
|
+
" ",
|
|
16
|
+
r,
|
|
17
|
+
"."
|
|
18
|
+
] })
|
|
19
|
+
] });
|
|
20
|
+
}
|
|
21
|
+
function a(e) {
|
|
22
|
+
return `This is when the configuration of this ${e} was last changed.`;
|
|
23
|
+
}
|
|
24
|
+
function o(e) {
|
|
25
|
+
return `When data changes, the ${e} is rebuilt to reflect those changes. This is the last time changes were made to the data.`;
|
|
26
|
+
}
|
|
27
|
+
var s = {
|
|
28
|
+
width: "16px",
|
|
29
|
+
height: "16px",
|
|
30
|
+
ml: "4px",
|
|
31
|
+
verticalAlign: "text-bottom"
|
|
32
|
+
};
|
|
33
|
+
//#endregion
|
|
34
|
+
export { r as DATASET_CREATED_BY_TOOLTIP, s as INFO_ICON_SX, o as getTableLastRebuiltTooltip, a as getTableModifiedOnAccessibleLabel, i as getTableModifiedOnTooltip };
|
|
35
|
+
|
|
36
|
+
//# sourceMappingURL=createdByModifiedByTooltips.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createdByModifiedByTooltips.js","names":[],"sources":["../../../../src/components/entity/page/createdByModifiedByTooltips.tsx"],"sourcesContent":["import { SxProps } from '@mui/material'\n\nexport const DATASET_CREATED_BY_TOOLTIP =\n 'This is the user who created this Dataset. ' +\n 'This may not be the same person who generated the files in this Dataset, or who originally uploaded these files to Synapse.'\n\nexport function getTableModifiedOnTooltip(friendlyName: string) {\n return (\n <>\n <p>\n This is when the configuration of this {friendlyName} was last changed.\n </p>\n <p>Configuration changes may be triggered by (for example):</p>\n <ul>\n <li>Editing the name of the {friendlyName}</li>\n <li>Updating the schema used by the {friendlyName}</li>\n </ul>\n <p>\n This does NOT reflect changes to the data displayed in the the{' '}\n {friendlyName}.\n </p>\n </>\n )\n}\n\n// The ReactNode tooltip title does not auto-populate aria-label, so MUI needs a\n// string handed to it explicitly.\nexport function getTableModifiedOnAccessibleLabel(friendlyName: string) {\n return `This is when the configuration of this ${friendlyName} was last changed.`\n}\n\nexport function getTableLastRebuiltTooltip(friendlyName: string) {\n return (\n `When data changes, the ${friendlyName} is rebuilt to reflect those changes. ` +\n `This is the last time changes were made to the data.`\n )\n}\n\nexport const INFO_ICON_SX: SxProps = {\n width: '16px',\n height: '16px',\n ml: '4px',\n verticalAlign: 'text-bottom',\n}\n"],"mappings":";;AAEA,IAAa,IACX;AAGF,SAAgB,EAA0B,GAAsB;CAC9D,OACE,kBAAA,GAAA,EAAA,UAAA;EACE,kBAAC,KAAD,EAAA,UAAA;GAAG;GACuC;GAAa;EACpD,EAAA,CAAA;EACH,kBAAC,KAAD,EAAA,UAAG,2DAA2D,CAAA;EAC9D,kBAAC,MAAD,EAAA,UAAA,CACE,kBAAC,MAAD,EAAA,UAAA,CAAI,4BAAyB,CAAiB,EAAA,CAAA,GAC9C,kBAAC,MAAD,EAAA,UAAA,CAAI,oCAAiC,CAAiB,EAAA,CAAA,CACpD,EAAA,CAAA;EACJ,kBAAC,KAAD,EAAA,UAAA;GAAG;GAC8D;GAC9D;GAAa;EACb,EAAA,CAAA;CACH,EAAA,CAAA;AAEN;AAIA,SAAgB,EAAkC,GAAsB;CACtE,OAAO,0CAA0C,EAAa;AAChE;AAEA,SAAgB,EAA2B,GAAsB;CAC/D,OACE,0BAA0B,EAAa;AAG3C;AAEA,IAAa,IAAwB;CACnC,OAAO;CACP,QAAQ;CACR,IAAI;CACJ,eAAe;AACjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGetEntityTitleBarProperties.d.ts","sourceRoot":"","sources":["../../../../../src/components/entity/page/title_bar/useGetEntityTitleBarProperties.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useGetEntityTitleBarProperties.d.ts","sourceRoot":"","sources":["../../../../../src/components/entity/page/title_bar/useGetEntityTitleBarProperties.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAE,SAAS,EAAY,MAAM,OAAO,CAAA;AAsB3C,MAAM,MAAM,cAAc,GAAG;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,MAAM,GACrB,cAAc,EAAE,CA6OlB"}
|
|
@@ -1,133 +1,198 @@
|
|
|
1
|
+
import "../../../../utils/SynapseConstants.js";
|
|
1
2
|
import { calculateFriendlyFileSize as e } from "../../../../utils/functions/calculateFriendlyFileSize.js";
|
|
2
|
-
import { isEntityRefCollectionView as t,
|
|
3
|
+
import { entityTypeToFriendlyName as ee, isDataset as te, isEntityRefCollectionView as t, isTable as n, isVersionableEntity as ne } from "../../../../utils/functions/EntityTypeUtils.js";
|
|
3
4
|
import { useGetEntityChildren as r } from "../../../../synapse-queries/entity/useGetEntityChildren.js";
|
|
5
|
+
import { useGetQueryResultBundleWithAsyncStatus as i } from "../../../../synapse-queries/entity/useGetQueryResultBundle.js";
|
|
4
6
|
import "../../../../synapse-queries/index.js";
|
|
5
|
-
import { useGetDOIAssociation as
|
|
6
|
-
import a from "
|
|
7
|
-
import o from "
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
7
|
+
import { useGetDOIAssociation as re } from "../../../../synapse-queries/doi/useDOI.js";
|
|
8
|
+
import { formatDate as a } from "../../../../utils/functions/DateFormatter.js";
|
|
9
|
+
import { UserBadge as o } from "../../../UserCard/UserBadge.js";
|
|
10
|
+
import s from "../../../GenericCard/Linkify.js";
|
|
11
|
+
import c from "../../../../utils/hooks/useGetEntityMetadata.js";
|
|
12
|
+
import { INFO_ICON_SX as l, getTableLastRebuiltTooltip as u, getTableModifiedOnAccessibleLabel as ie, getTableModifiedOnTooltip as ae } from "../createdByModifiedByTooltips.js";
|
|
13
|
+
import { useDataCiteUsage as oe } from "./useDataCiteUsage.js";
|
|
14
|
+
import { useGetMentions as d } from "./useGetMentions.js";
|
|
15
|
+
import { CitationsDialog as f } from "./CitationsDialog.js";
|
|
16
|
+
import { CopyToClipboardString as p } from "../../../CopyToClipboardString/CopyToClipboardString.js";
|
|
17
|
+
import { useState as m } from "react";
|
|
18
|
+
import { Box as h, Link as g, Tooltip as _ } from "@mui/material";
|
|
19
|
+
import { Fragment as v, jsx as y, jsxs as b } from "react/jsx-runtime";
|
|
20
|
+
import { DoiObjectType as se, EntityType as x } from "@sage-bionetworks/synapse-client";
|
|
21
|
+
import { InfoTwoTone as S } from "@mui/icons-material";
|
|
22
|
+
import C from "dayjs";
|
|
16
23
|
//#region src/components/entity/page/title_bar/useGetEntityTitleBarProperties.tsx
|
|
17
|
-
function
|
|
18
|
-
let { entityBundle:
|
|
19
|
-
parentId:
|
|
20
|
-
includeTypes: Object.values(
|
|
24
|
+
function w(w, T) {
|
|
25
|
+
let { entityBundle: E, fileHandle: D, downloadAlias: O, isContainer: k, fileHandleStorageInfo: A, uploadDestinationString: j } = c(w, T), [ce, M] = m(!1), [le, N] = m(!1), { data: ue } = r({
|
|
26
|
+
parentId: w,
|
|
27
|
+
includeTypes: Object.values(x),
|
|
21
28
|
includeTotalChildCount: !0
|
|
22
|
-
}, { enabled:
|
|
23
|
-
|
|
29
|
+
}, { enabled: k }), P = E?.entity, F = !!P && n(P), I = E ? ee(E.entityType) : "", { data: L } = i({
|
|
30
|
+
entityId: w,
|
|
31
|
+
query: { sql: `SELECT * FROM ${w}${T ? `.${T}` : ""} LIMIT 0` },
|
|
32
|
+
partMask: 128,
|
|
33
|
+
concreteType: "org.sagebionetworks.repo.model.table.QueryBundleRequest"
|
|
34
|
+
}, { enabled: !!(P && n(P)) }), R = L?.responseBody?.lastUpdatedOn, z = E && !E.doiAssociation && ne(E.entity) && E.entity.isLatestVersion, { data: B } = re({
|
|
35
|
+
id: w,
|
|
24
36
|
version: void 0,
|
|
25
|
-
type:
|
|
26
|
-
}, { enabled:
|
|
37
|
+
type: se.ENTITY
|
|
38
|
+
}, { enabled: z }), V = D?.contentSize && e(D.contentSize), H = A && "location" in A && A.location, U = A && "endpoint" in A && A.endpoint, W = A && "bucket" in A && A.bucket, G = A && "fileKey" in A && A.fileKey, K = A && "url" in A && A.url, q = D?.contentMd5, J = z ? B : E?.doiAssociation, { data: Y } = oe(J?.doiUri), X = J && `https://doi.org/${J?.doiUri}`, de = !!Y && Y.citationCount > 0, Z = ue?.totalChildCount, Q = E?.entity && t(E.entity) ? (E.entity.items ?? []).length : null, { data: $ } = d(w), fe = !!$ && $.length > 0;
|
|
27
39
|
return [
|
|
28
40
|
{
|
|
29
41
|
key: "id",
|
|
30
42
|
title: "SynID",
|
|
31
|
-
value: /* @__PURE__ */
|
|
43
|
+
value: /* @__PURE__ */ y(p, { value: w })
|
|
32
44
|
},
|
|
33
|
-
|
|
45
|
+
V && {
|
|
34
46
|
key: "fileSize",
|
|
35
47
|
title: "Size",
|
|
36
|
-
value:
|
|
48
|
+
value: V
|
|
37
49
|
},
|
|
38
|
-
|
|
50
|
+
Z != null && {
|
|
39
51
|
key: "containerItems",
|
|
40
52
|
title: "Items",
|
|
41
|
-
value:
|
|
53
|
+
value: Z.toLocaleString()
|
|
42
54
|
},
|
|
43
|
-
|
|
55
|
+
Q != null && {
|
|
44
56
|
key: "entityRefCollectionItems",
|
|
45
57
|
title: "Items",
|
|
46
|
-
value:
|
|
58
|
+
value: Q.toLocaleString()
|
|
47
59
|
},
|
|
48
|
-
|
|
60
|
+
X && {
|
|
49
61
|
key: "doi",
|
|
50
62
|
title: "DOI",
|
|
51
|
-
value: /* @__PURE__ */
|
|
52
|
-
value:
|
|
53
|
-
href:
|
|
63
|
+
value: /* @__PURE__ */ y(p, {
|
|
64
|
+
value: X,
|
|
65
|
+
href: X,
|
|
54
66
|
icon: "rounded"
|
|
55
67
|
})
|
|
56
68
|
},
|
|
57
|
-
|
|
69
|
+
de && {
|
|
58
70
|
key: "citations",
|
|
59
71
|
title: "Citations",
|
|
60
|
-
value: /* @__PURE__ */
|
|
61
|
-
onClick: () =>
|
|
62
|
-
children: [
|
|
63
|
-
}), /* @__PURE__ */
|
|
64
|
-
open:
|
|
65
|
-
onClose: () =>
|
|
66
|
-
citations:
|
|
72
|
+
value: /* @__PURE__ */ b(v, { children: [/* @__PURE__ */ b(g, {
|
|
73
|
+
onClick: () => M(!0),
|
|
74
|
+
children: [Y.citationCount.toLocaleString(), Y.citationCount == 500 && "+"]
|
|
75
|
+
}), /* @__PURE__ */ y(f, {
|
|
76
|
+
open: ce,
|
|
77
|
+
onClose: () => M(!1),
|
|
78
|
+
citations: Y.citations
|
|
67
79
|
})] })
|
|
68
80
|
},
|
|
69
|
-
|
|
81
|
+
fe && {
|
|
70
82
|
key: "mentions",
|
|
71
83
|
title: "Mentions",
|
|
72
|
-
value: /* @__PURE__ */
|
|
73
|
-
onClick: () =>
|
|
74
|
-
children:
|
|
75
|
-
}), /* @__PURE__ */
|
|
76
|
-
open:
|
|
77
|
-
onClose: () =>
|
|
78
|
-
citations:
|
|
84
|
+
value: /* @__PURE__ */ b(v, { children: [/* @__PURE__ */ y(g, {
|
|
85
|
+
onClick: () => N(!0),
|
|
86
|
+
children: $.length.toLocaleString()
|
|
87
|
+
}), /* @__PURE__ */ y(f, {
|
|
88
|
+
open: le,
|
|
89
|
+
onClose: () => N(!1),
|
|
90
|
+
citations: $,
|
|
79
91
|
title: "Mentioned in"
|
|
80
92
|
})] })
|
|
81
93
|
},
|
|
82
|
-
|
|
94
|
+
q && {
|
|
83
95
|
key: "fileMd5",
|
|
84
96
|
title: "MD5",
|
|
85
|
-
value: /* @__PURE__ */
|
|
97
|
+
value: /* @__PURE__ */ y(p, { value: q })
|
|
86
98
|
},
|
|
87
|
-
!
|
|
99
|
+
!k && H && {
|
|
88
100
|
key: "fileStorageLocation",
|
|
89
101
|
title: "Storage Location",
|
|
90
|
-
value:
|
|
102
|
+
value: H
|
|
91
103
|
},
|
|
92
|
-
|
|
104
|
+
k && j && {
|
|
93
105
|
key: "uploadDestination",
|
|
94
106
|
title: "Upload Destination",
|
|
95
|
-
value:
|
|
107
|
+
value: j
|
|
96
108
|
},
|
|
97
|
-
|
|
109
|
+
U && {
|
|
98
110
|
key: "externalFileEndpoint",
|
|
99
111
|
title: "Endpoint",
|
|
100
|
-
value:
|
|
112
|
+
value: U
|
|
101
113
|
},
|
|
102
|
-
|
|
114
|
+
K && {
|
|
103
115
|
key: "externalUrl",
|
|
104
116
|
title: "URL",
|
|
105
|
-
value: /* @__PURE__ */
|
|
117
|
+
value: /* @__PURE__ */ y(s, { text: K })
|
|
106
118
|
},
|
|
107
|
-
|
|
119
|
+
W && {
|
|
108
120
|
key: "externalFileBucket",
|
|
109
121
|
title: "Bucket",
|
|
110
|
-
value:
|
|
122
|
+
value: W
|
|
111
123
|
},
|
|
112
|
-
|
|
124
|
+
G && {
|
|
113
125
|
key: "externalFileKey",
|
|
114
126
|
title: "File Key",
|
|
115
|
-
value:
|
|
127
|
+
value: G
|
|
116
128
|
},
|
|
117
|
-
|
|
129
|
+
O && {
|
|
118
130
|
key: "fileAlias",
|
|
119
131
|
title: "Alias",
|
|
120
|
-
value: /* @__PURE__ */
|
|
132
|
+
value: /* @__PURE__ */ b(v, { children: ["Name when downloaded will be: ", /* @__PURE__ */ y(h, {
|
|
121
133
|
sx: {
|
|
122
134
|
display: "inline",
|
|
123
135
|
fontFamily: "monospace"
|
|
124
136
|
},
|
|
125
|
-
children:
|
|
137
|
+
children: O
|
|
126
138
|
})] })
|
|
139
|
+
},
|
|
140
|
+
P && {
|
|
141
|
+
key: "createdBy",
|
|
142
|
+
title: "Created By",
|
|
143
|
+
value: /* @__PURE__ */ b(h, {
|
|
144
|
+
sx: {
|
|
145
|
+
display: "flex",
|
|
146
|
+
alignItems: "center",
|
|
147
|
+
gap: "4px"
|
|
148
|
+
},
|
|
149
|
+
children: [
|
|
150
|
+
/* @__PURE__ */ y(o, { userId: P.createdBy }),
|
|
151
|
+
/* @__PURE__ */ b("span", { children: ["on ", a(C(P.createdOn))] }),
|
|
152
|
+
te(P) && /* @__PURE__ */ y(_, {
|
|
153
|
+
title: "This is the user who created this Dataset. This may not be the same person who generated the files in this Dataset, or who originally uploaded these files to Synapse.",
|
|
154
|
+
children: /* @__PURE__ */ y(S, { sx: l })
|
|
155
|
+
})
|
|
156
|
+
]
|
|
157
|
+
})
|
|
158
|
+
},
|
|
159
|
+
P && {
|
|
160
|
+
key: "modifiedBy",
|
|
161
|
+
title: F ? "Configuration Last Modified" : "Modified By",
|
|
162
|
+
value: /* @__PURE__ */ b(h, {
|
|
163
|
+
sx: {
|
|
164
|
+
display: "flex",
|
|
165
|
+
alignItems: "center",
|
|
166
|
+
gap: "4px"
|
|
167
|
+
},
|
|
168
|
+
children: [
|
|
169
|
+
/* @__PURE__ */ y(o, { userId: P.modifiedBy }),
|
|
170
|
+
/* @__PURE__ */ b("span", { children: ["on ", a(C(P.modifiedOn))] }),
|
|
171
|
+
F && /* @__PURE__ */ y(_, {
|
|
172
|
+
title: ae(I),
|
|
173
|
+
"aria-label": ie(I),
|
|
174
|
+
children: /* @__PURE__ */ y(S, { sx: l })
|
|
175
|
+
})
|
|
176
|
+
]
|
|
177
|
+
})
|
|
178
|
+
},
|
|
179
|
+
R && {
|
|
180
|
+
key: "lastRebuilt",
|
|
181
|
+
title: "Last Rebuilt On",
|
|
182
|
+
value: /* @__PURE__ */ b(h, {
|
|
183
|
+
sx: {
|
|
184
|
+
display: "flex",
|
|
185
|
+
alignItems: "center"
|
|
186
|
+
},
|
|
187
|
+
children: [a(C(R)), /* @__PURE__ */ y(_, {
|
|
188
|
+
title: u(I),
|
|
189
|
+
children: /* @__PURE__ */ y(S, { sx: l })
|
|
190
|
+
})]
|
|
191
|
+
})
|
|
127
192
|
}
|
|
128
193
|
].filter((e) => !!e);
|
|
129
194
|
}
|
|
130
195
|
//#endregion
|
|
131
|
-
export {
|
|
196
|
+
export { w as useGetEntityTitleBarProperties };
|
|
132
197
|
|
|
133
198
|
//# sourceMappingURL=useGetEntityTitleBarProperties.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGetEntityTitleBarProperties.js","names":[],"sources":["../../../../../src/components/entity/page/title_bar/useGetEntityTitleBarProperties.tsx"],"sourcesContent":["import { useGetEntityChildren } from '@/synapse-queries'\nimport { useGetDOIAssociation } from '@/synapse-queries/doi/useDOI'\nimport { calculateFriendlyFileSize } from '@/utils/functions/calculateFriendlyFileSize'\nimport {\n isEntityRefCollectionView,\n isVersionableEntity,\n} from '@/utils/functions/EntityTypeUtils'\nimport useGetEntityMetadata from '@/utils/hooks/useGetEntityMetadata'\nimport { Box, Link } from '@mui/material'\nimport { DoiObjectType, EntityType } from '@sage-bionetworks/synapse-client'\nimport { EntityRefCollectionView } from '@sage-bionetworks/synapse-types'\nimport { ReactNode, useState } from 'react'\nimport CopyToClipboardString from '../../../CopyToClipboardString/CopyToClipboardString'\nimport { CitationsDialog } from './CitationsDialog'\nimport { maxCitationCount, useDataCiteUsage } from './useDataCiteUsage'\nimport { useGetMentions } from './useGetMentions'\nimport Linkify from '@/components/GenericCard/Linkify'\n\nexport type EntityProperty = {\n key: string\n title: string\n value: ReactNode\n}\n\n/**\n * This hook fetches all the entity metadata shown on the Entity page, and transforms the data into an ordered list of\n * render-able key-value pairs.\n * @param entityId\n * @param versionNumber\n */\nexport function useGetEntityTitleBarProperties(\n entityId: string,\n versionNumber?: number,\n): EntityProperty[] {\n const {\n entityBundle: bundle,\n fileHandle: dataFileHandle,\n downloadAlias,\n isContainer,\n fileHandleStorageInfo,\n uploadDestinationString,\n } = useGetEntityMetadata(entityId, versionNumber)\n const [dataCiteCitationsDialogOpen, setDataCiteCitationsDialogOpen] =\n useState(false)\n const [mentionsDialogOpen, setMentionsDialogOpen] = useState(false)\n const { data: entityChildrenResponse } = useGetEntityChildren(\n {\n parentId: entityId,\n includeTypes: Object.values(EntityType),\n includeTotalChildCount: true,\n },\n { enabled: isContainer },\n )\n\n // If this is the latest entity version, show the \"versionless\" DOI if it exists.\n const useFallbackVersionlessDOI =\n bundle &&\n !bundle.doiAssociation &&\n isVersionableEntity(bundle.entity) &&\n bundle.entity.isLatestVersion\n const { data: versionlessDOIAssociation } = useGetDOIAssociation(\n { id: entityId, version: undefined, type: DoiObjectType.ENTITY },\n {\n enabled: useFallbackVersionlessDOI,\n },\n )\n\n const size =\n dataFileHandle?.contentSize &&\n calculateFriendlyFileSize(dataFileHandle.contentSize)\n const storageLocation =\n fileHandleStorageInfo &&\n 'location' in fileHandleStorageInfo &&\n fileHandleStorageInfo.location\n const endpoint =\n fileHandleStorageInfo &&\n 'endpoint' in fileHandleStorageInfo &&\n fileHandleStorageInfo.endpoint\n const bucket =\n fileHandleStorageInfo &&\n 'bucket' in fileHandleStorageInfo &&\n fileHandleStorageInfo.bucket\n const fileKey =\n fileHandleStorageInfo &&\n 'fileKey' in fileHandleStorageInfo &&\n fileHandleStorageInfo.fileKey\n const externalUrl =\n fileHandleStorageInfo &&\n 'url' in fileHandleStorageInfo &&\n fileHandleStorageInfo.url\n\n const md5 = dataFileHandle?.contentMd5\n\n // If there is no version-specific DOI, fall back to the versionless DOI\n const doiAssociation = useFallbackVersionlessDOI\n ? versionlessDOIAssociation\n : bundle?.doiAssociation\n const { data: dataCiteUsage } = useDataCiteUsage(doiAssociation?.doiUri)\n const doi = doiAssociation && `https://doi.org/${doiAssociation?.doiUri}`\n const isDoiUsage = !!dataCiteUsage && dataCiteUsage.citationCount > 0\n const containerItems = entityChildrenResponse?.totalChildCount\n\n const datasetItems =\n bundle?.entity && isEntityRefCollectionView(bundle.entity)\n ? ((bundle?.entity as EntityRefCollectionView).items ?? []).length\n : null\n\n const { data: mentions } = useGetMentions(entityId)\n const isMentions = !!mentions && mentions.length > 0\n return [\n {\n key: 'id',\n title: 'SynID',\n value: <CopyToClipboardString value={entityId} />,\n },\n size && { key: 'fileSize', title: 'Size', value: size },\n containerItems != null && {\n key: 'containerItems',\n title: 'Items',\n value: containerItems.toLocaleString(),\n },\n datasetItems != null && {\n key: 'entityRefCollectionItems',\n title: 'Items',\n value: datasetItems.toLocaleString(),\n },\n doi && {\n key: 'doi',\n title: 'DOI',\n value: <CopyToClipboardString value={doi} href={doi} icon=\"rounded\" />,\n },\n isDoiUsage && {\n key: 'citations',\n title: 'Citations',\n value: (\n <>\n <Link onClick={() => setDataCiteCitationsDialogOpen(true)}>\n {dataCiteUsage.citationCount.toLocaleString()}\n {dataCiteUsage.citationCount == maxCitationCount && '+'}\n </Link>\n <CitationsDialog\n open={dataCiteCitationsDialogOpen}\n onClose={() => setDataCiteCitationsDialogOpen(false)}\n citations={dataCiteUsage.citations}\n />\n </>\n ),\n },\n isMentions && {\n key: 'mentions',\n title: 'Mentions',\n value: (\n <>\n <Link onClick={() => setMentionsDialogOpen(true)}>\n {mentions.length.toLocaleString()}\n </Link>\n <CitationsDialog\n open={mentionsDialogOpen}\n onClose={() => setMentionsDialogOpen(false)}\n citations={mentions}\n title=\"Mentioned in\"\n />\n </>\n ),\n },\n md5 && {\n key: 'fileMd5',\n title: 'MD5',\n value: <CopyToClipboardString value={md5} />,\n },\n !isContainer &&\n storageLocation && {\n key: 'fileStorageLocation',\n title: 'Storage Location',\n value: storageLocation,\n },\n isContainer &&\n uploadDestinationString && {\n key: 'uploadDestination',\n title: 'Upload Destination',\n value: uploadDestinationString,\n },\n endpoint && {\n key: 'externalFileEndpoint',\n title: 'Endpoint',\n value: endpoint,\n },\n externalUrl && {\n key: 'externalUrl',\n title: 'URL',\n value: <Linkify text={externalUrl} />,\n },\n bucket && { key: 'externalFileBucket', title: 'Bucket', value: bucket },\n fileKey && { key: 'externalFileKey', title: 'File Key', value: fileKey },\n downloadAlias && {\n key: 'fileAlias',\n title: 'Alias',\n value: (\n <>\n {'Name when downloaded will be: '}\n <Box sx={{ display: 'inline', fontFamily: 'monospace' }}>\n {downloadAlias}\n </Box>\n </>\n ),\n },\n ].filter(item => !!item) as EntityProperty[]\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useGetEntityTitleBarProperties.js","names":[],"sources":["../../../../../src/components/entity/page/title_bar/useGetEntityTitleBarProperties.tsx"],"sourcesContent":["import { useGetEntityChildren } from '@/synapse-queries'\nimport { useGetDOIAssociation } from '@/synapse-queries/doi/useDOI'\nimport { calculateFriendlyFileSize } from '@/utils/functions/calculateFriendlyFileSize'\nimport {\n isDataset,\n isEntityRefCollectionView,\n isVersionableEntity,\n} from '@/utils/functions/EntityTypeUtils'\nimport useGetEntityMetadata from '@/utils/hooks/useGetEntityMetadata'\nimport { Box, Link, Tooltip } from '@mui/material'\nimport { DoiObjectType, EntityType } from '@sage-bionetworks/synapse-client'\nimport { EntityRefCollectionView } from '@sage-bionetworks/synapse-types'\nimport { ReactNode, useState } from 'react'\nimport CopyToClipboardString from '../../../CopyToClipboardString/CopyToClipboardString'\nimport { CitationsDialog } from './CitationsDialog'\nimport { maxCitationCount, useDataCiteUsage } from './useDataCiteUsage'\nimport { useGetMentions } from './useGetMentions'\nimport Linkify from '@/components/GenericCard/Linkify'\nimport { isTable } from '@/utils/functions/EntityTypeUtils'\nimport { BUNDLE_MASK_LAST_UPDATED_ON } from '@/utils/SynapseConstants'\nimport { useGetQueryResultBundleWithAsyncStatus } from '@/synapse-queries'\nimport { entityTypeToFriendlyName } from '@/utils/functions/EntityTypeUtils'\nimport { UserBadge } from '@/components/UserCard/UserBadge'\nimport { formatDate } from '@/utils/functions/DateFormatter'\nimport { InfoTwoTone } from '@mui/icons-material'\nimport dayjs from 'dayjs'\nimport {\n DATASET_CREATED_BY_TOOLTIP,\n INFO_ICON_SX,\n getTableModifiedOnTooltip,\n getTableModifiedOnAccessibleLabel,\n getTableLastRebuiltTooltip,\n} from '../createdByModifiedByTooltips'\n\nexport type EntityProperty = {\n key: string\n title: string\n value: ReactNode\n}\n\n/**\n * This hook fetches all the entity metadata shown on the Entity page, and transforms the data into an ordered list of\n * render-able key-value pairs.\n * @param entityId\n * @param versionNumber\n */\nexport function useGetEntityTitleBarProperties(\n entityId: string,\n versionNumber?: number,\n): EntityProperty[] {\n const {\n entityBundle: bundle,\n fileHandle: dataFileHandle,\n downloadAlias,\n isContainer,\n fileHandleStorageInfo,\n uploadDestinationString,\n } = useGetEntityMetadata(entityId, versionNumber)\n const [dataCiteCitationsDialogOpen, setDataCiteCitationsDialogOpen] =\n useState(false)\n const [mentionsDialogOpen, setMentionsDialogOpen] = useState(false)\n const { data: entityChildrenResponse } = useGetEntityChildren(\n {\n parentId: entityId,\n includeTypes: Object.values(EntityType),\n includeTotalChildCount: true,\n },\n { enabled: isContainer },\n )\n\n const entity = bundle?.entity\n const isTableLike = !!entity && isTable(entity)\n const friendlyName = bundle ? entityTypeToFriendlyName(bundle.entityType) : ''\n\n const { data: tableQueryResult } = useGetQueryResultBundleWithAsyncStatus(\n {\n entityId,\n query: {\n sql: `SELECT * FROM ${entityId}${versionNumber ? `.${versionNumber}` : ''} LIMIT 0`,\n },\n partMask: BUNDLE_MASK_LAST_UPDATED_ON,\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n },\n { enabled: !!(entity && isTable(entity)) },\n )\n\n const tableLastRebuilt = tableQueryResult?.responseBody?.lastUpdatedOn\n\n // If this is the latest entity version, show the \"versionless\" DOI if it exists.\n const useFallbackVersionlessDOI =\n bundle &&\n !bundle.doiAssociation &&\n isVersionableEntity(bundle.entity) &&\n bundle.entity.isLatestVersion\n const { data: versionlessDOIAssociation } = useGetDOIAssociation(\n { id: entityId, version: undefined, type: DoiObjectType.ENTITY },\n {\n enabled: useFallbackVersionlessDOI,\n },\n )\n\n const size =\n dataFileHandle?.contentSize &&\n calculateFriendlyFileSize(dataFileHandle.contentSize)\n const storageLocation =\n fileHandleStorageInfo &&\n 'location' in fileHandleStorageInfo &&\n fileHandleStorageInfo.location\n const endpoint =\n fileHandleStorageInfo &&\n 'endpoint' in fileHandleStorageInfo &&\n fileHandleStorageInfo.endpoint\n const bucket =\n fileHandleStorageInfo &&\n 'bucket' in fileHandleStorageInfo &&\n fileHandleStorageInfo.bucket\n const fileKey =\n fileHandleStorageInfo &&\n 'fileKey' in fileHandleStorageInfo &&\n fileHandleStorageInfo.fileKey\n const externalUrl =\n fileHandleStorageInfo &&\n 'url' in fileHandleStorageInfo &&\n fileHandleStorageInfo.url\n\n const md5 = dataFileHandle?.contentMd5\n\n // If there is no version-specific DOI, fall back to the versionless DOI\n const doiAssociation = useFallbackVersionlessDOI\n ? versionlessDOIAssociation\n : bundle?.doiAssociation\n const { data: dataCiteUsage } = useDataCiteUsage(doiAssociation?.doiUri)\n const doi = doiAssociation && `https://doi.org/${doiAssociation?.doiUri}`\n const isDoiUsage = !!dataCiteUsage && dataCiteUsage.citationCount > 0\n const containerItems = entityChildrenResponse?.totalChildCount\n\n const datasetItems =\n bundle?.entity && isEntityRefCollectionView(bundle.entity)\n ? ((bundle.entity as EntityRefCollectionView).items ?? []).length\n : null\n\n const { data: mentions } = useGetMentions(entityId)\n const isMentions = !!mentions && mentions.length > 0\n return [\n {\n key: 'id',\n title: 'SynID',\n value: <CopyToClipboardString value={entityId} />,\n },\n size && { key: 'fileSize', title: 'Size', value: size },\n containerItems != null && {\n key: 'containerItems',\n title: 'Items',\n value: containerItems.toLocaleString(),\n },\n datasetItems != null && {\n key: 'entityRefCollectionItems',\n title: 'Items',\n value: datasetItems.toLocaleString(),\n },\n doi && {\n key: 'doi',\n title: 'DOI',\n value: <CopyToClipboardString value={doi} href={doi} icon=\"rounded\" />,\n },\n isDoiUsage && {\n key: 'citations',\n title: 'Citations',\n value: (\n <>\n <Link onClick={() => setDataCiteCitationsDialogOpen(true)}>\n {dataCiteUsage.citationCount.toLocaleString()}\n {dataCiteUsage.citationCount == maxCitationCount && '+'}\n </Link>\n <CitationsDialog\n open={dataCiteCitationsDialogOpen}\n onClose={() => setDataCiteCitationsDialogOpen(false)}\n citations={dataCiteUsage.citations}\n />\n </>\n ),\n },\n isMentions && {\n key: 'mentions',\n title: 'Mentions',\n value: (\n <>\n <Link onClick={() => setMentionsDialogOpen(true)}>\n {mentions.length.toLocaleString()}\n </Link>\n <CitationsDialog\n open={mentionsDialogOpen}\n onClose={() => setMentionsDialogOpen(false)}\n citations={mentions}\n title=\"Mentioned in\"\n />\n </>\n ),\n },\n md5 && {\n key: 'fileMd5',\n title: 'MD5',\n value: <CopyToClipboardString value={md5} />,\n },\n !isContainer &&\n storageLocation && {\n key: 'fileStorageLocation',\n title: 'Storage Location',\n value: storageLocation,\n },\n isContainer &&\n uploadDestinationString && {\n key: 'uploadDestination',\n title: 'Upload Destination',\n value: uploadDestinationString,\n },\n endpoint && {\n key: 'externalFileEndpoint',\n title: 'Endpoint',\n value: endpoint,\n },\n externalUrl && {\n key: 'externalUrl',\n title: 'URL',\n value: <Linkify text={externalUrl} />,\n },\n bucket && { key: 'externalFileBucket', title: 'Bucket', value: bucket },\n fileKey && { key: 'externalFileKey', title: 'File Key', value: fileKey },\n downloadAlias && {\n key: 'fileAlias',\n title: 'Alias',\n value: (\n <>\n {'Name when downloaded will be: '}\n <Box sx={{ display: 'inline', fontFamily: 'monospace' }}>\n {downloadAlias}\n </Box>\n </>\n ),\n },\n entity && {\n key: 'createdBy',\n title: 'Created By',\n value: (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <UserBadge userId={entity.createdBy} />\n <span>on {formatDate(dayjs(entity.createdOn))}</span>\n {isDataset(entity) && (\n <Tooltip title={DATASET_CREATED_BY_TOOLTIP}>\n <InfoTwoTone sx={INFO_ICON_SX} />\n </Tooltip>\n )}\n </Box>\n ),\n },\n entity && {\n key: 'modifiedBy',\n title: isTableLike ? 'Configuration Last Modified' : 'Modified By',\n value: (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: '4px' }}>\n <UserBadge userId={entity.modifiedBy} />\n <span>on {formatDate(dayjs(entity.modifiedOn))}</span>\n {isTableLike && (\n <Tooltip\n title={getTableModifiedOnTooltip(friendlyName)}\n aria-label={getTableModifiedOnAccessibleLabel(friendlyName)}\n >\n <InfoTwoTone sx={INFO_ICON_SX} />\n </Tooltip>\n )}\n </Box>\n ),\n },\n tableLastRebuilt && {\n key: 'lastRebuilt',\n title: 'Last Rebuilt On',\n value: (\n <Box sx={{ display: 'flex', alignItems: 'center' }}>\n {formatDate(dayjs(tableLastRebuilt))}\n <Tooltip title={getTableLastRebuiltTooltip(friendlyName)}>\n <InfoTwoTone sx={INFO_ICON_SX} />\n </Tooltip>\n </Box>\n ),\n },\n ].filter(item => !!item) as EntityProperty[]\n}\n"],"mappings":"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"}
|
|
@@ -81,7 +81,10 @@ function f(f) {
|
|
|
81
81
|
min: e.target.value,
|
|
82
82
|
max: h.max
|
|
83
83
|
}),
|
|
84
|
-
slotProps: { htmlInput: {
|
|
84
|
+
slotProps: { htmlInput: {
|
|
85
|
+
"aria-label": "min",
|
|
86
|
+
autoComplete: "off"
|
|
87
|
+
} }
|
|
85
88
|
}) }, "range_min"), /* @__PURE__ */ a(t, { children: /* @__PURE__ */ a(r, {
|
|
86
89
|
label: "To",
|
|
87
90
|
type: "number",
|
|
@@ -90,7 +93,10 @@ function f(f) {
|
|
|
90
93
|
max: e.target.value,
|
|
91
94
|
min: h.min
|
|
92
95
|
}),
|
|
93
|
-
slotProps: { htmlInput: {
|
|
96
|
+
slotProps: { htmlInput: {
|
|
97
|
+
"aria-label": "max",
|
|
98
|
+
autoComplete: "off"
|
|
99
|
+
} }
|
|
94
100
|
}) }, "range_max")] }),
|
|
95
101
|
/* @__PURE__ */ a(n, {
|
|
96
102
|
size: "small",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Range.js","names":[],"sources":["../../../src/components/widgets/Range.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport dayjs from 'dayjs'\nimport { DatePicker } from '@mui/x-date-pickers'\nimport { Box, Button, TextField } from '@mui/material'\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'\nimport isEmpty from 'lodash-es/isEmpty'\n\ntype ControlType = 'number' | 'date'\n\nexport type RangeValues<T = string | number> = {\n min?: T\n max?: T\n}\n\nexport type RangeProps = {\n type: ControlType\n initialValues?: RangeValues\n className?: string\n errorText?: string\n onApplyClicked: (newValues: RangeValues) => void\n}\n\nexport function Range(props: RangeProps): React.ReactNode {\n const errorText = 'Min value should be less than max value'\n const [error, setError] = useState(false)\n const [values, setValues] = useState(() =>\n props.type === 'number' && props.initialValues\n ? props.initialValues\n : (props.initialValues && {\n min: props.initialValues.min\n ? dayjs(props.initialValues.min).format('YYYY-MM-DD')\n : undefined,\n max: props.initialValues.max\n ? dayjs(props.initialValues.max).format('YYYY-MM-DD')\n : undefined,\n }) || {\n min: undefined,\n max: undefined,\n },\n )\n\n const isValid = (\n { min, max }: RangeValues,\n\n type: ControlType = 'number',\n ) => {\n // Treat null, undefined, and empty string as \"no value\" — one-sided ranges are always valid\n if (isEmpty(min) || isEmpty(max)) {\n setError(false)\n return true\n }\n\n if (type === 'number') {\n if (Number(min) > Number(max)) {\n setError(true)\n return false\n }\n } else if (Date.parse(min as string) > Date.parse(max as string)) {\n setError(true)\n return false\n }\n setError(false)\n return true\n }\n\n const handleAppyChanges = (\n values: RangeValues,\n callBackFn: (newValues: RangeValues) => void,\n type: ControlType = 'number',\n ) => {\n if (isValid(values, type)) {\n // Normalize empty strings to undefined so downstream code receives clean absent values\n callBackFn({\n min: values.min === '' ? undefined : values.min,\n max: values.max === '' ? undefined : values.max,\n })\n }\n }\n\n return (\n <Box\n sx={{\n display: 'flex',\n flexWrap: 'wrap',\n flex: '1 0',\n marginRight: '10px',\n gap: '10px',\n '& .MuiInputBase-root': {\n minWidth: '150px',\n },\n '& .MuiInputBase-root,.MuiButton-root': {\n height: '38px',\n },\n '& .MuiInputLabel-root': {\n color: 'grey.700',\n fontWeight: 400,\n },\n }}\n >\n {props.type === 'date' ? (\n <>\n <Box key=\"range_min\">\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <DatePicker\n enableAccessibleFieldDOMStructure={false}\n label=\"From\"\n slots={{\n textField: TextField,\n }}\n slotProps={{\n textField: {\n error: false,\n inputProps: {\n 'aria-label': 'min',\n },\n },\n }}\n value={values.min ? dayjs(values.min) : null}\n onChange={date =>\n setValues({\n min: date ? dayjs(date).format('YYYY-MM-DD') : undefined,\n max: values.max,\n })\n }\n />\n </LocalizationProvider>\n </Box>\n <Box key=\"range_max\">\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <DatePicker\n enableAccessibleFieldDOMStructure={false}\n label=\"To\"\n slots={{\n textField: TextField,\n }}\n slotProps={{\n textField: {\n error: false,\n inputProps: {\n 'aria-label': 'max',\n },\n },\n }}\n value={values.max ? dayjs(values.max) : null}\n onChange={date =>\n setValues({\n max: date ? dayjs(date).format('YYYY-MM-DD') : undefined,\n min: values.min,\n })\n }\n />\n </LocalizationProvider>\n </Box>\n </>\n ) : (\n <>\n <Box key=\"range_min\">\n <TextField\n label=\"From\"\n type=\"number\"\n value={values.min ?? ''}\n onChange={e =>\n setValues({\n min: e.target.value,\n max: values.max,\n })\n }\n slotProps={{\n htmlInput: { 'aria-label': 'min' },\n }}\n />\n </Box>\n <Box key=\"range_max\">\n <TextField\n label=\"To\"\n type=\"number\"\n value={values.max ?? ''}\n onChange={e =>\n setValues({\n max: e.target.value,\n min: values.min,\n })\n }\n slotProps={{\n htmlInput: { 'aria-label': 'max' },\n }}\n />\n </Box>\n </>\n )}\n <Button\n size=\"small\"\n variant=\"outlined\"\n onClick={() =>\n handleAppyChanges(values, props.onApplyClicked, props.type)\n }\n sx={{\n alignSelf: 'flex-end',\n fontSize: 16,\n }}\n >\n Apply\n </Button>\n {error && (\n <div className=\"SRC-danger-color\">{props.errorText || errorText}</div>\n )}\n </Box>\n )\n}\n"],"mappings":";;;;;;;;;AAuBA,SAAgB,EAAM,GAAoC;CACxD,IACM,CAAC,GAAO,KAAY,EAAS,EAAK,GAClC,CAAC,GAAQ,KAAa,QAC1B,EAAM,SAAS,YAAY,EAAM,gBAC7B,EAAM,gBACL,EAAM,iBAAiB;EACtB,KAAK,EAAM,cAAc,MACrB,EAAM,EAAM,cAAc,GAAG,EAAE,OAAO,YAAY,IAClD,KAAA;EACJ,KAAK,EAAM,cAAc,MACrB,EAAM,EAAM,cAAc,GAAG,EAAE,OAAO,YAAY,IAClD,KAAA;CACN,KAAM;EACJ,KAAK,KAAA;EACL,KAAK,KAAA;CACP,CACN,GAEM,KACJ,EAAE,QAAK,UAEP,IAAoB,aACjB;EAEH,IAAI,EAAQ,CAAG,KAAK,EAAQ,CAAG,GAE7B,OADA,EAAS,EAAK,GACP;EAGT,IAAI,MAAS;OACP,OAAO,CAAG,IAAI,OAAO,CAAG,GAE1B,OADA,EAAS,EAAI,GACN;EACT,OACK,IAAI,KAAK,MAAM,CAAa,IAAI,KAAK,MAAM,CAAa,GAE7D,OADA,EAAS,EAAI,GACN;EAGT,OADA,EAAS,EAAK,GACP;CACT,GAEM,KACJ,GACA,GACA,IAAoB,aACjB;EACH,AAAI,EAAQ,GAAQ,CAAI,KAEtB,EAAW;GACT,KAAK,EAAO,QAAQ,KAAK,KAAA,IAAY,EAAO;GAC5C,KAAK,EAAO,QAAQ,KAAK,KAAA,IAAY,EAAO;EAC9C,CAAC;CAEL;CAEA,OACE,kBAAC,GAAD;EACE,IAAI;GACF,SAAS;GACT,UAAU;GACV,MAAM;GACN,aAAa;GACb,KAAK;GACL,wBAAwB,EACtB,UAAU,QACZ;GACA,wCAAwC,EACtC,QAAQ,OACV;GACA,yBAAyB;IACvB,OAAO;IACP,YAAY;GACd;EACF;YAjBF;GAmBG,EAAM,SAAS,SACd,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;IAAsB,aAAa;cACjC,kBAAC,GAAD;KACE,mCAAmC;KACnC,OAAM;KACN,OAAO,EACL,WAAW,EACb;KACA,WAAW,EACT,WAAW;MACT,OAAO;MACP,YAAY,EACV,cAAc,MAChB;KACF,EACF;KACA,OAAO,EAAO,MAAM,EAAM,EAAO,GAAG,IAAI;KACxC,WAAU,MACR,EAAU;MACR,KAAK,IAAO,EAAM,CAAI,EAAE,OAAO,YAAY,IAAI,KAAA;MAC/C,KAAK,EAAO;KACd,CAAC;IAEJ,CAAA;GACmB,CAAA,EACnB,GAzBI,WAyBJ,GACL,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;IAAsB,aAAa;cACjC,kBAAC,GAAD;KACE,mCAAmC;KACnC,OAAM;KACN,OAAO,EACL,WAAW,EACb;KACA,WAAW,EACT,WAAW;MACT,OAAO;MACP,YAAY,EACV,cAAc,MAChB;KACF,EACF;KACA,OAAO,EAAO,MAAM,EAAM,EAAO,GAAG,IAAI;KACxC,WAAU,MACR,EAAU;MACR,KAAK,IAAO,EAAM,CAAI,EAAE,OAAO,YAAY,IAAI,KAAA;MAC/C,KAAK,EAAO;KACd,CAAC;IAEJ,CAAA;GACmB,CAAA,EACnB,GAzBI,WAyBJ,CACL,EAAA,CAAA,IAEF,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;IACE,OAAM;IACN,MAAK;IACL,OAAO,EAAO,OAAO;IACrB,WAAU,MACR,EAAU;KACR,KAAK,EAAE,OAAO;KACd,KAAK,EAAO;IACd,CAAC;IAEH,WAAW,EACT,WAAW,
|
|
1
|
+
{"version":3,"file":"Range.js","names":[],"sources":["../../../src/components/widgets/Range.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport dayjs from 'dayjs'\nimport { DatePicker } from '@mui/x-date-pickers'\nimport { Box, Button, TextField } from '@mui/material'\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'\nimport isEmpty from 'lodash-es/isEmpty'\n\ntype ControlType = 'number' | 'date'\n\nexport type RangeValues<T = string | number> = {\n min?: T\n max?: T\n}\n\nexport type RangeProps = {\n type: ControlType\n initialValues?: RangeValues\n className?: string\n errorText?: string\n onApplyClicked: (newValues: RangeValues) => void\n}\n\nexport function Range(props: RangeProps): React.ReactNode {\n const errorText = 'Min value should be less than max value'\n const [error, setError] = useState(false)\n const [values, setValues] = useState(() =>\n props.type === 'number' && props.initialValues\n ? props.initialValues\n : (props.initialValues && {\n min: props.initialValues.min\n ? dayjs(props.initialValues.min).format('YYYY-MM-DD')\n : undefined,\n max: props.initialValues.max\n ? dayjs(props.initialValues.max).format('YYYY-MM-DD')\n : undefined,\n }) || {\n min: undefined,\n max: undefined,\n },\n )\n\n const isValid = (\n { min, max }: RangeValues,\n\n type: ControlType = 'number',\n ) => {\n // Treat null, undefined, and empty string as \"no value\" — one-sided ranges are always valid\n if (isEmpty(min) || isEmpty(max)) {\n setError(false)\n return true\n }\n\n if (type === 'number') {\n if (Number(min) > Number(max)) {\n setError(true)\n return false\n }\n } else if (Date.parse(min as string) > Date.parse(max as string)) {\n setError(true)\n return false\n }\n setError(false)\n return true\n }\n\n const handleAppyChanges = (\n values: RangeValues,\n callBackFn: (newValues: RangeValues) => void,\n type: ControlType = 'number',\n ) => {\n if (isValid(values, type)) {\n // Normalize empty strings to undefined so downstream code receives clean absent values\n callBackFn({\n min: values.min === '' ? undefined : values.min,\n max: values.max === '' ? undefined : values.max,\n })\n }\n }\n\n return (\n <Box\n sx={{\n display: 'flex',\n flexWrap: 'wrap',\n flex: '1 0',\n marginRight: '10px',\n gap: '10px',\n '& .MuiInputBase-root': {\n minWidth: '150px',\n },\n '& .MuiInputBase-root,.MuiButton-root': {\n height: '38px',\n },\n '& .MuiInputLabel-root': {\n color: 'grey.700',\n fontWeight: 400,\n },\n }}\n >\n {props.type === 'date' ? (\n <>\n <Box key=\"range_min\">\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <DatePicker\n enableAccessibleFieldDOMStructure={false}\n label=\"From\"\n slots={{\n textField: TextField,\n }}\n slotProps={{\n textField: {\n error: false,\n inputProps: {\n 'aria-label': 'min',\n },\n },\n }}\n value={values.min ? dayjs(values.min) : null}\n onChange={date =>\n setValues({\n min: date ? dayjs(date).format('YYYY-MM-DD') : undefined,\n max: values.max,\n })\n }\n />\n </LocalizationProvider>\n </Box>\n <Box key=\"range_max\">\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <DatePicker\n enableAccessibleFieldDOMStructure={false}\n label=\"To\"\n slots={{\n textField: TextField,\n }}\n slotProps={{\n textField: {\n error: false,\n inputProps: {\n 'aria-label': 'max',\n },\n },\n }}\n value={values.max ? dayjs(values.max) : null}\n onChange={date =>\n setValues({\n max: date ? dayjs(date).format('YYYY-MM-DD') : undefined,\n min: values.min,\n })\n }\n />\n </LocalizationProvider>\n </Box>\n </>\n ) : (\n <>\n <Box key=\"range_min\">\n <TextField\n label=\"From\"\n type=\"number\"\n value={values.min ?? ''}\n onChange={e =>\n setValues({\n min: e.target.value,\n max: values.max,\n })\n }\n slotProps={{\n htmlInput: { 'aria-label': 'min', autoComplete: 'off' },\n }}\n />\n </Box>\n <Box key=\"range_max\">\n <TextField\n label=\"To\"\n type=\"number\"\n value={values.max ?? ''}\n onChange={e =>\n setValues({\n max: e.target.value,\n min: values.min,\n })\n }\n slotProps={{\n htmlInput: { 'aria-label': 'max', autoComplete: 'off' },\n }}\n />\n </Box>\n </>\n )}\n <Button\n size=\"small\"\n variant=\"outlined\"\n onClick={() =>\n handleAppyChanges(values, props.onApplyClicked, props.type)\n }\n sx={{\n alignSelf: 'flex-end',\n fontSize: 16,\n }}\n >\n Apply\n </Button>\n {error && (\n <div className=\"SRC-danger-color\">{props.errorText || errorText}</div>\n )}\n </Box>\n )\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RangeFacetFilter.d.ts","sourceRoot":"","sources":["../../../../src/components/widgets/query-filter/RangeFacetFilter.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAA;AASxE,oBAAY,eAAe;IACzB,OAAO,8CAA8C;IACrD,KAAK,UAAU;IACf,GAAG,KAAK;CACT;AACD,eAAO,MAAM,OAAO;;;GAInB,CAAA;AACD,MAAM,MAAM,qBAAqB,GAAG;IAClC,WAAW,EAAE,sBAAsB,CAAA;IACnC,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B,CAAA;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,
|
|
1
|
+
{"version":3,"file":"RangeFacetFilter.d.ts","sourceRoot":"","sources":["../../../../src/components/widgets/query-filter/RangeFacetFilter.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAA;AASxE,oBAAY,eAAe;IACzB,OAAO,8CAA8C;IACrD,KAAK,UAAU;IACf,GAAG,KAAK;CACT;AACD,eAAO,MAAM,OAAO;;;GAInB,CAAA;AACD,MAAM,MAAM,qBAAqB,GAAG;IAClC,WAAW,EAAE,sBAAsB,CAAA;IACnC,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B,CAAA;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,2CAuD5D"}
|
|
@@ -34,7 +34,8 @@ function p(e) {
|
|
|
34
34
|
columnType: _.columnType,
|
|
35
35
|
hideCollapsible: f,
|
|
36
36
|
onRangeValueSelected: (e) => {
|
|
37
|
-
|
|
37
|
+
let t = (e) => c(e) ? Number.isNaN(e) ? void 0 : String(e) : e;
|
|
38
|
+
p(d, t(e.min), t(e.max));
|
|
38
39
|
},
|
|
39
40
|
onNotSetSelected: () => {
|
|
40
41
|
p(d, t, t);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RangeFacetFilter.js","names":[],"sources":["../../../../src/components/widgets/query-filter/RangeFacetFilter.tsx"],"sourcesContent":["import { getCorrespondingColumnForFacet } from '@/utils/functions/queryUtils'\nimport { FRIENDLY_VALUE_NOT_SET, VALUE_NOT_SET } from '@/utils/SynapseConstants'\nimport { FacetColumnResultRange } from '@sage-bionetworks/synapse-types'\nimport { isNumber } from 'lodash-es'\nimport { useMemo } from 'react'\nimport { useQueryContext } from '../../QueryContext'\nimport { useQueryVisualizationContext } from '../../QueryVisualizationWrapper'\nimport { useSuspenseGetQueryMetadata } from '../../QueryWrapper/useGetQueryMetadata'\nimport { RangeValues } from '../Range'\nimport { RangeFacetFilterUI } from './RangeFacetFilterUI'\n\nexport enum RadioValuesEnum {\n NOT_SET = 'org.sagebionetworks.UNDEFINED_NULL_NOTSET',\n RANGE = 'RANGE',\n ANY = '',\n}\nexport const options = [\n { label: FRIENDLY_VALUE_NOT_SET, value: RadioValuesEnum.NOT_SET },\n { label: 'Any', value: RadioValuesEnum.ANY },\n { label: 'Range', value: RadioValuesEnum.RANGE },\n]\nexport type RangeFacetFilterProps = {\n facetResult: FacetColumnResultRange\n hideCollapsible?: boolean\n}\n\nexport function RangeFacetFilter(props: RangeFacetFilterProps) {\n const { facetResult, hideCollapsible = false } = props\n const { setRangeFacetValue, removeSelectedFacet, getCurrentQueryRequest } =\n useQueryContext()\n\n const { data: queryMetadata } = useSuspenseGetQueryMetadata()\n\n const columnModel = queryMetadata.columnModels\n ? getCorrespondingColumnForFacet(facetResult, queryMetadata.columnModels)\n : undefined\n\n const { getColumnDisplayName } = useQueryVisualizationContext()\n\n const lastQueryRequest = useMemo(\n () => getCurrentQueryRequest(),\n [getCurrentQueryRequest],\n )\n\n if (!columnModel) {\n return <></>\n }\n\n return (\n <RangeFacetFilterUI\n label={getColumnDisplayName(facetResult.columnName, facetResult.jsonPath)}\n facetResult={facetResult}\n columnType={columnModel.columnType}\n hideCollapsible={hideCollapsible}\n onRangeValueSelected={(values: RangeValues) => {\n
|
|
1
|
+
{"version":3,"file":"RangeFacetFilter.js","names":[],"sources":["../../../../src/components/widgets/query-filter/RangeFacetFilter.tsx"],"sourcesContent":["import { getCorrespondingColumnForFacet } from '@/utils/functions/queryUtils'\nimport { FRIENDLY_VALUE_NOT_SET, VALUE_NOT_SET } from '@/utils/SynapseConstants'\nimport { FacetColumnResultRange } from '@sage-bionetworks/synapse-types'\nimport { isNumber } from 'lodash-es'\nimport { useMemo } from 'react'\nimport { useQueryContext } from '../../QueryContext'\nimport { useQueryVisualizationContext } from '../../QueryVisualizationWrapper'\nimport { useSuspenseGetQueryMetadata } from '../../QueryWrapper/useGetQueryMetadata'\nimport { RangeValues } from '../Range'\nimport { RangeFacetFilterUI } from './RangeFacetFilterUI'\n\nexport enum RadioValuesEnum {\n NOT_SET = 'org.sagebionetworks.UNDEFINED_NULL_NOTSET',\n RANGE = 'RANGE',\n ANY = '',\n}\nexport const options = [\n { label: FRIENDLY_VALUE_NOT_SET, value: RadioValuesEnum.NOT_SET },\n { label: 'Any', value: RadioValuesEnum.ANY },\n { label: 'Range', value: RadioValuesEnum.RANGE },\n]\nexport type RangeFacetFilterProps = {\n facetResult: FacetColumnResultRange\n hideCollapsible?: boolean\n}\n\nexport function RangeFacetFilter(props: RangeFacetFilterProps) {\n const { facetResult, hideCollapsible = false } = props\n const { setRangeFacetValue, removeSelectedFacet, getCurrentQueryRequest } =\n useQueryContext()\n\n const { data: queryMetadata } = useSuspenseGetQueryMetadata()\n\n const columnModel = queryMetadata.columnModels\n ? getCorrespondingColumnForFacet(facetResult, queryMetadata.columnModels)\n : undefined\n\n const { getColumnDisplayName } = useQueryVisualizationContext()\n\n const lastQueryRequest = useMemo(\n () => getCurrentQueryRequest(),\n [getCurrentQueryRequest],\n )\n\n if (!columnModel) {\n return <></>\n }\n\n return (\n <RangeFacetFilterUI\n label={getColumnDisplayName(facetResult.columnName, facetResult.jsonPath)}\n facetResult={facetResult}\n columnType={columnModel.columnType}\n hideCollapsible={hideCollapsible}\n onRangeValueSelected={(values: RangeValues) => {\n // Normalize numbers to strings; drop NaN (lodash isNumber(NaN) === true, so it must be filtered explicitly).\n const toApiValue = (v: string | number | undefined) => {\n if (isNumber(v)) return Number.isNaN(v) ? undefined : String(v)\n return v\n }\n setRangeFacetValue(\n facetResult,\n toApiValue(values.min),\n toApiValue(values.max),\n )\n }}\n onNotSetSelected={() => {\n setRangeFacetValue(facetResult, VALUE_NOT_SET, VALUE_NOT_SET)\n }}\n onAnySelected={() => {\n const selectedFacet = lastQueryRequest.query.selectedFacets?.find(\n selectedFacet =>\n selectedFacet.columnName === facetResult.columnName &&\n selectedFacet.jsonPath === facetResult.jsonPath,\n )\n if (selectedFacet) {\n removeSelectedFacet(selectedFacet)\n }\n }}\n />\n )\n}\n"],"mappings":";;;;;;;;;;;;AAWA,IAAY,IAAL,yBAAA,GAAA;QACL,EAAA,UAAA,6CACA,EAAA,QAAA,SACA,EAAA,MAAA;AACF,EAAA,CAAA,CAAA,GACa,IAAU;CACrB;EAAE,OAAO;EAAwB,OAAA;CAA+B;CAChE;EAAE,OAAO;EAAO,OAAA;CAA2B;CAC3C;EAAE,OAAO;EAAS,OAAA;CAA6B;AACjD;AAMA,SAAgB,EAAiB,GAA8B;CAC7D,IAAM,EAAE,gBAAa,qBAAkB,OAAU,GAC3C,EAAE,uBAAoB,wBAAqB,8BAC/C,EAAgB,GAEZ,EAAE,MAAM,MAAkB,EAA4B,GAEtD,IAAc,EAAc,eAC9B,EAA+B,GAAa,EAAc,YAAY,IACtE,KAAA,GAEE,EAAE,4BAAyB,EAA6B,GAExD,IAAmB,QACjB,EAAuB,GAC7B,CAAC,CAAsB,CACzB;CAMA,OAJK,IAKH,kBAAC,GAAD;EACE,OAAO,EAAqB,EAAY,YAAY,EAAY,QAAQ;EAC3D;EACb,YAAY,EAAY;EACP;EACjB,uBAAuB,MAAwB;GAE7C,IAAM,KAAc,MACd,EAAS,CAAC,IAAU,OAAO,MAAM,CAAC,IAAI,KAAA,IAAY,OAAO,CAAC,IACvD;GAET,EACE,GACA,EAAW,EAAO,GAAG,GACrB,EAAW,EAAO,GAAG,CACvB;EACF;EACA,wBAAwB;GACtB,EAAmB,GAAa,GAAe,CAAa;EAC9D;EACA,qBAAqB;GACnB,IAAM,IAAgB,EAAiB,MAAM,gBAAgB,MAC3D,MACE,EAAc,eAAe,EAAY,cACzC,EAAc,aAAa,EAAY,QAC3C;GACA,AAAI,KACF,EAAoB,CAAa;EAErC;CACD,CAAA,IAlCM,kBAAA,GAAA,CAAI,CAAA;AAoCf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RangeFacetFilterUI.d.ts","sourceRoot":"","sources":["../../../../src/components/widgets/query-filter/RangeFacetFilterUI.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AAG5D,OAAO,EAAS,WAAW,EAAE,MAAM,UAAU,CAAA;AAI7C,oBAAY,eAAe;IACzB,OAAO,8CAA8C;IACrD,KAAK,UAAU;IACf,GAAG,KAAK;CACT;AACD,eAAO,MAAM,OAAO;;;GAInB,CAAA;AACD,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE;QACX,6GAA6G;QAC7G,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,4GAA4G;QAC5G,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,WAAW,CAAC,EAAE,MAAM,CAAA;KACrB,CAAA;IACD,UAAU,EAAE,UAAU,CAAA;IACtB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,oBAAoB,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAA;IACnD,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,aAAa,EAAE,MAAM,IAAI,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM,EAAE,YAAY,OAAO,oBAO7D,CAAA;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,qBAAqB,
|
|
1
|
+
{"version":3,"file":"RangeFacetFilterUI.d.ts","sourceRoot":"","sources":["../../../../src/components/widgets/query-filter/RangeFacetFilterUI.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AAG5D,OAAO,EAAS,WAAW,EAAE,MAAM,UAAU,CAAA;AAI7C,oBAAY,eAAe;IACzB,OAAO,8CAA8C;IACrD,KAAK,UAAU;IACf,GAAG,KAAK;CACT;AACD,eAAO,MAAM,OAAO;;;GAInB,CAAA;AACD,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE;QACX,6GAA6G;QAC7G,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,4GAA4G;QAC5G,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,WAAW,CAAC,EAAE,MAAM,CAAA;KACrB,CAAA;IACD,UAAU,EAAE,UAAU,CAAA;IACtB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,oBAAoB,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAA;IACnD,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,aAAa,EAAE,MAAM,IAAI,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM,EAAE,YAAY,OAAO,oBAO7D,CAAA;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,qBAAqB,2CA4J9D"}
|
|
@@ -24,8 +24,8 @@ var p = /* @__PURE__ */ function(e) {
|
|
|
24
24
|
}
|
|
25
25
|
], h = (e, t) => t ? "" : e === "org.sagebionetworks.UNDEFINED_NULL_NOTSET" ? "org.sagebionetworks.UNDEFINED_NULL_NOTSET" : "RANGE";
|
|
26
26
|
function g(e) {
|
|
27
|
-
let { label: p, facetResult: g, hideCollapsible: _ = !1, columnType: v, onAnySelected: y, onNotSetSelected: b, onRangeValueSelected: x } = e, [S, C] = i(!1), { columnMin: w, columnMax: T, selectedMin: E, selectedMax: D } = g, O = !E && !D, k = E
|
|
28
|
-
switch (
|
|
27
|
+
let { label: p, facetResult: g, hideCollapsible: _ = !1, columnType: v, onAnySelected: y, onNotSetSelected: b, onRangeValueSelected: x } = e, [S, C] = i(!1), { columnMin: w, columnMax: T, selectedMin: E, selectedMax: D } = g, O = !E && !D, k = E === "org.sagebionetworks.UNDEFINED_NULL_NOTSET" ? void 0 : E, A = D === "org.sagebionetworks.UNDEFINED_NULL_NOTSET" ? void 0 : D, j = k || w, M = A || T, N = v === "DOUBLE" ? "number" : "date", P = (e) => {
|
|
28
|
+
switch (I(e), e) {
|
|
29
29
|
case "RANGE": break;
|
|
30
30
|
case "org.sagebionetworks.UNDEFINED_NULL_NOTSET":
|
|
31
31
|
b();
|
|
@@ -34,7 +34,7 @@ function g(e) {
|
|
|
34
34
|
y();
|
|
35
35
|
break;
|
|
36
36
|
}
|
|
37
|
-
}, [
|
|
37
|
+
}, [F, I] = i(h(E ?? "", O));
|
|
38
38
|
return /* @__PURE__ */ d("div", { children: [/* @__PURE__ */ u(t, {
|
|
39
39
|
isCollapsed: S,
|
|
40
40
|
label: p,
|
|
@@ -43,45 +43,45 @@ function g(e) {
|
|
|
43
43
|
}), /* @__PURE__ */ d(a, {
|
|
44
44
|
in: !S,
|
|
45
45
|
children: [/* @__PURE__ */ u(c, {
|
|
46
|
-
value:
|
|
47
|
-
onChange: (e, t) =>
|
|
46
|
+
value: F,
|
|
47
|
+
onChange: (e, t) => P(t),
|
|
48
48
|
children: m.map(({ value: e, label: t }) => /* @__PURE__ */ u(o, {
|
|
49
49
|
control: /* @__PURE__ */ u(s, {}),
|
|
50
50
|
label: t,
|
|
51
51
|
value: e
|
|
52
52
|
}, e))
|
|
53
|
-
}),
|
|
53
|
+
}), F === "RANGE" && (w && T && w === T ? /* @__PURE__ */ u("label", { children: T }) : /* @__PURE__ */ d(l, { children: [
|
|
54
54
|
v === "INTEGER" && (w && T ? /* @__PURE__ */ u(r, {
|
|
55
55
|
domain: [w, T],
|
|
56
56
|
initialValues: {
|
|
57
|
-
min: parseInt(
|
|
58
|
-
max: parseInt(
|
|
57
|
+
min: parseInt(j ?? w),
|
|
58
|
+
max: parseInt(M ?? T)
|
|
59
59
|
},
|
|
60
60
|
step: 1,
|
|
61
61
|
onApplyClicked: x,
|
|
62
62
|
children: ">"
|
|
63
63
|
}, "RangeSlider") : /* @__PURE__ */ u(n, {
|
|
64
64
|
type: "number",
|
|
65
|
-
initialValues:
|
|
66
|
-
min:
|
|
67
|
-
max:
|
|
65
|
+
initialValues: j || M ? {
|
|
66
|
+
min: j ? parseInt(j) : void 0,
|
|
67
|
+
max: M ? parseInt(M) : void 0
|
|
68
68
|
} : void 0,
|
|
69
69
|
onApplyClicked: x
|
|
70
70
|
}, "Range")),
|
|
71
71
|
v === "DATE" && /* @__PURE__ */ u(n, {
|
|
72
|
-
initialValues:
|
|
73
|
-
min:
|
|
74
|
-
max:
|
|
72
|
+
initialValues: k || A || w || T ? {
|
|
73
|
+
min: k ?? (w ? f(parseInt(w)).toString() : void 0),
|
|
74
|
+
max: A ?? (T ? f(parseInt(T)).toString() : void 0)
|
|
75
75
|
} : void 0,
|
|
76
|
-
type:
|
|
76
|
+
type: N,
|
|
77
77
|
onApplyClicked: x
|
|
78
78
|
}, "Range"),
|
|
79
79
|
v === "DOUBLE" && /* @__PURE__ */ u(n, {
|
|
80
|
-
initialValues:
|
|
81
|
-
min:
|
|
82
|
-
max:
|
|
80
|
+
initialValues: j || M ? {
|
|
81
|
+
min: j ? parseFloat(j) : void 0,
|
|
82
|
+
max: M ? parseFloat(M) : void 0
|
|
83
83
|
} : void 0,
|
|
84
|
-
type:
|
|
84
|
+
type: N,
|
|
85
85
|
onApplyClicked: x
|
|
86
86
|
}, "Range")
|
|
87
87
|
] }))]
|