@gen3/frontend 0.12.65 → 0.12.67
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/dts/components/Content/FormContent.d.ts +2 -1
- package/dist/dts/components/Content/FormContent.d.ts.map +1 -1
- package/dist/dts/components/Content/FormContent.js +2 -2
- package/dist/dts/components/Content/FormContent.js.map +1 -1
- package/dist/dts/components/facets/EnumFacet.js +1 -2
- package/dist/dts/components/facets/EnumFacet.js.map +1 -1
- package/dist/dts/components/facets/FacetControlsHeader.d.ts.map +1 -1
- package/dist/dts/components/facets/FacetControlsHeader.js +2 -2
- package/dist/dts/components/facets/FacetControlsHeader.js.map +1 -1
- package/dist/dts/components/facets/FacetEnumList.d.ts.map +1 -1
- package/dist/dts/components/facets/FacetEnumList.js +18 -7
- package/dist/dts/components/facets/FacetEnumList.js.map +1 -1
- package/dist/dts/components/facets/components.d.ts +1 -1
- package/dist/dts/components/facets/components.d.ts.map +1 -1
- package/dist/dts/components/facets/components.js +1 -1
- package/dist/dts/components/facets/components.js.map +1 -1
- package/dist/dts/components/facets/createFacetCard.d.ts.map +1 -1
- package/dist/dts/components/facets/createFacetCard.js +1 -1
- package/dist/dts/components/facets/createFacetCard.js.map +1 -1
- package/dist/dts/components/facets/createFacetCard.unit.test.d.ts +2 -0
- package/dist/dts/components/facets/createFacetCard.unit.test.d.ts.map +1 -0
- package/dist/dts/components/facets/createFacetCard.unit.test.js +56 -0
- package/dist/dts/components/facets/createFacetCard.unit.test.js.map +1 -0
- package/dist/dts/components/facets/utils.d.ts.map +1 -1
- package/dist/dts/components/facets/utils.js +1 -0
- package/dist/dts/components/facets/utils.js.map +1 -1
- package/dist/dts/components/facets/utils.unit.test.js +40 -2
- package/dist/dts/components/facets/utils.unit.test.js.map +1 -1
- package/dist/dts/features/CohortBuilder/QueryExpression/LogicalOperatorLabel.d.ts +8 -0
- package/dist/dts/features/CohortBuilder/QueryExpression/LogicalOperatorLabel.d.ts.map +1 -0
- package/dist/dts/features/CohortBuilder/QueryExpression/LogicalOperatorLabel.js +4 -0
- package/dist/dts/features/CohortBuilder/QueryExpression/LogicalOperatorLabel.js.map +1 -0
- package/dist/dts/features/CohortBuilder/QueryExpression/QueryExpression.d.ts +2 -1
- package/dist/dts/features/CohortBuilder/QueryExpression/QueryExpression.d.ts.map +1 -1
- package/dist/dts/features/CohortBuilder/QueryExpression/QueryExpression.js +2 -1
- package/dist/dts/features/CohortBuilder/QueryExpression/QueryExpression.js.map +1 -1
- package/dist/dts/features/CohortBuilder/QueryExpression/QueryExpressionContext.d.ts +1 -0
- package/dist/dts/features/CohortBuilder/QueryExpression/QueryExpressionContext.d.ts.map +1 -1
- package/dist/dts/features/CohortBuilder/QueryExpression/QueryExpressionContext.js +1 -0
- package/dist/dts/features/CohortBuilder/QueryExpression/QueryExpressionContext.js.map +1 -1
- package/dist/dts/features/CohortBuilder/QueryExpression/QueryExpressionSection.d.ts.map +1 -1
- package/dist/dts/features/CohortBuilder/QueryExpression/QueryExpressionSection.js +4 -3
- package/dist/dts/features/CohortBuilder/QueryExpression/QueryExpressionSection.js.map +1 -1
- package/dist/dts/features/CohortBuilder/QueryExpression/QueryExpressionSection.unit.test.d.ts +2 -0
- package/dist/dts/features/CohortBuilder/QueryExpression/QueryExpressionSection.unit.test.d.ts.map +1 -0
- package/dist/dts/features/CohortBuilder/QueryExpression/QueryExpressionSection.unit.test.js +72 -0
- package/dist/dts/features/CohortBuilder/QueryExpression/QueryExpressionSection.unit.test.js.map +1 -0
- package/dist/dts/features/CohortBuilder/QueryExpression/QueryRepresentation.d.ts +1 -0
- package/dist/dts/features/CohortBuilder/QueryExpression/QueryRepresentation.d.ts.map +1 -1
- package/dist/dts/features/CohortBuilder/QueryExpression/QueryRepresentation.js +39 -28
- package/dist/dts/features/CohortBuilder/QueryExpression/QueryRepresentation.js.map +1 -1
- package/dist/dts/features/CohortBuilder/QueryExpression/QueryRepresentation.unit.test.d.ts +2 -0
- package/dist/dts/features/CohortBuilder/QueryExpression/QueryRepresentation.unit.test.d.ts.map +1 -0
- package/dist/dts/features/CohortBuilder/QueryExpression/QueryRepresentation.unit.test.js +38 -0
- package/dist/dts/features/CohortBuilder/QueryExpression/QueryRepresentation.unit.test.js.map +1 -0
- package/dist/dts/features/DiscoveryForms/{StudyRegistrationAccessRequest → GenericRegistrationAccessRequest}/FormContentViews.d.ts +3 -2
- package/dist/dts/features/DiscoveryForms/GenericRegistrationAccessRequest/FormContentViews.d.ts.map +1 -0
- package/dist/dts/features/DiscoveryForms/{StudyRegistrationAccessRequest → GenericRegistrationAccessRequest}/FormContentViews.js +3 -3
- package/dist/dts/features/DiscoveryForms/GenericRegistrationAccessRequest/FormContentViews.js.map +1 -0
- package/dist/dts/features/DiscoveryForms/{StudyRegistrationAccessRequest → GenericRegistrationAccessRequest}/FormContentViews.stories.d.ts +3 -1
- package/dist/dts/features/DiscoveryForms/GenericRegistrationAccessRequest/FormContentViews.stories.d.ts.map +1 -0
- package/dist/dts/features/DiscoveryForms/{StudyRegistrationAccessRequest → GenericRegistrationAccessRequest}/FormContentViews.stories.js +1 -1
- package/dist/dts/features/DiscoveryForms/GenericRegistrationAccessRequest/FormContentViews.stories.js.map +1 -0
- package/dist/dts/features/DiscoveryForms/GenericRegistrationAccessRequest/GenericRegistrationAccessRequestOutcome.d.ts +7 -0
- package/dist/dts/features/DiscoveryForms/GenericRegistrationAccessRequest/GenericRegistrationAccessRequestOutcome.d.ts.map +1 -0
- package/dist/dts/features/DiscoveryForms/{StudyRegistrationAccessRequest/StudyRegistrationAccessRequestOutcome.js → GenericRegistrationAccessRequest/GenericRegistrationAccessRequestOutcome.js} +3 -3
- package/dist/dts/features/DiscoveryForms/GenericRegistrationAccessRequest/GenericRegistrationAccessRequestOutcome.js.map +1 -0
- package/dist/dts/features/DiscoveryForms/GenericRegistrationAccessRequest/index.d.ts +8 -0
- package/dist/dts/features/DiscoveryForms/GenericRegistrationAccessRequest/index.d.ts.map +1 -0
- package/dist/dts/features/DiscoveryForms/GenericRegistrationAccessRequest/index.js +10 -0
- package/dist/dts/features/DiscoveryForms/GenericRegistrationAccessRequest/index.js.map +1 -0
- package/dist/dts/features/DiscoveryForms/GenericRegistrationAccessRequest/types.d.ts +35 -0
- package/dist/dts/features/DiscoveryForms/GenericRegistrationAccessRequest/types.d.ts.map +1 -0
- package/dist/dts/features/DiscoveryForms/GenericRegistrationAccessRequest/types.js.map +1 -0
- package/dist/dts/features/DiscoveryForms/GenericRegistrationAccessRequest/useGenericRegistration.d.ts +12 -0
- package/dist/dts/features/DiscoveryForms/GenericRegistrationAccessRequest/useGenericRegistration.d.ts.map +1 -0
- package/dist/dts/features/DiscoveryForms/{StudyRegistrationAccessRequest/useStudyRegistration.js → GenericRegistrationAccessRequest/useGenericRegistration.js} +31 -44
- package/dist/dts/features/DiscoveryForms/GenericRegistrationAccessRequest/useGenericRegistration.js.map +1 -0
- package/dist/dts/features/Study/StudyDetails/StudyDetailsHeaderButtons.d.ts.map +1 -1
- package/dist/dts/features/Study/StudyDetails/StudyDetailsHeaderButtons.js +40 -35
- package/dist/dts/features/Study/StudyDetails/StudyDetailsHeaderButtons.js.map +1 -1
- package/dist/dts/features/Workspace/utils.js +1 -1
- package/dist/dts/features/Workspace/utils.js.map +1 -1
- package/dist/dts/pages/StudyForms/StudyRegistrationAccessRequest/data.d.ts +2 -2
- package/dist/dts/pages/StudyForms/StudyRegistrationAccessRequest/data.d.ts.map +1 -1
- package/dist/dts/pages/StudyForms/StudyRegistrationAccessRequest/data.js +3 -3
- package/dist/dts/pages/StudyForms/StudyRegistrationAccessRequest/data.js.map +1 -1
- package/dist/dts/pages/StudyForms/StudyRegistrationAccessRequest/index.d.ts +6 -6
- package/dist/dts/pages/StudyForms/StudyRegistrationAccessRequest/index.d.ts.map +1 -1
- package/dist/dts/pages/StudyForms/StudyRegistrationAccessRequest/index.js +5 -5
- package/dist/dts/pages/StudyForms/StudyRegistrationAccessRequest/index.js.map +1 -1
- package/dist/dts/pages/StudyForms/VLMDSubmissionAccessRequest/data.d.ts +4 -0
- package/dist/dts/pages/StudyForms/VLMDSubmissionAccessRequest/data.d.ts.map +1 -0
- package/dist/dts/pages/StudyForms/VLMDSubmissionAccessRequest/data.js +32 -0
- package/dist/dts/pages/StudyForms/VLMDSubmissionAccessRequest/data.js.map +1 -0
- package/dist/dts/pages/StudyForms/VLMDSubmissionAccessRequest/index.d.ts +9 -0
- package/dist/dts/pages/StudyForms/VLMDSubmissionAccessRequest/index.d.ts.map +1 -0
- package/dist/dts/pages/StudyForms/VLMDSubmissionAccessRequest/index.js +12 -0
- package/dist/dts/pages/StudyForms/VLMDSubmissionAccessRequest/index.js.map +1 -0
- package/dist/index/cjs/{QueryPanel-DNGXxrpC.js → QueryPanel-aGaJfxNv.js} +2 -2
- package/dist/index/cjs/{QueryPanel-DNGXxrpC.js.map → QueryPanel-aGaJfxNv.js.map} +1 -1
- package/dist/index/cjs/{index-7sUtTikC.js → index-Br1lKHDn.js} +199 -99
- package/dist/index/cjs/index-Br1lKHDn.js.map +1 -0
- package/dist/index/cjs/index.js +1 -1
- package/dist/index/esm/{QueryPanel-C3JVntIb.js → QueryPanel-C0nNrzSx.js} +2 -2
- package/dist/index/esm/{QueryPanel-C3JVntIb.js.map → QueryPanel-C0nNrzSx.js.map} +1 -1
- package/dist/index/esm/{index-B_0ks9Pi.js → index-CDgLCUE3.js} +201 -101
- package/dist/index/esm/index-CDgLCUE3.js.map +1 -0
- package/dist/index/esm/index.js +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/pages/cjs/{CohortBuilder-DircXqXL.js → CohortBuilder-rF69uCsJ.js} +2 -2
- package/dist/pages/cjs/{CohortBuilder-DircXqXL.js.map → CohortBuilder-rF69uCsJ.js.map} +1 -1
- package/dist/pages/cjs/{QueryPanel-qYWbo2Cb.js → QueryPanel-JOL_9n8f.js} +2 -2
- package/dist/pages/cjs/{QueryPanel-qYWbo2Cb.js.map → QueryPanel-JOL_9n8f.js.map} +1 -1
- package/dist/pages/cjs/{index-BQzYPjdE.js → index-Dbd5m3GQ.js} +200 -100
- package/dist/pages/cjs/index-Dbd5m3GQ.js.map +1 -0
- package/dist/pages/cjs/index.js +1 -1
- package/dist/pages/esm/{CohortBuilder-CI9PAFLd.js → CohortBuilder-D3EM-FLr.js} +2 -2
- package/dist/pages/esm/{CohortBuilder-CI9PAFLd.js.map → CohortBuilder-D3EM-FLr.js.map} +1 -1
- package/dist/pages/esm/{QueryPanel-BEqldpr5.js → QueryPanel-0Znj4lFa.js} +2 -2
- package/dist/pages/esm/{QueryPanel-BEqldpr5.js.map → QueryPanel-0Znj4lFa.js.map} +1 -1
- package/dist/pages/esm/{index-BoZwM5wd.js → index-CxrByAhv.js} +202 -102
- package/dist/pages/esm/index-CxrByAhv.js.map +1 -0
- package/dist/pages/esm/index.js +1 -1
- package/dist/pages.d.ts +1 -0
- package/package.json +4 -3
- package/dist/dts/features/DiscoveryForms/StudyRegistrationAccessRequest/FormContentViews.d.ts.map +0 -1
- package/dist/dts/features/DiscoveryForms/StudyRegistrationAccessRequest/FormContentViews.js.map +0 -1
- package/dist/dts/features/DiscoveryForms/StudyRegistrationAccessRequest/FormContentViews.stories.d.ts.map +0 -1
- package/dist/dts/features/DiscoveryForms/StudyRegistrationAccessRequest/FormContentViews.stories.js.map +0 -1
- package/dist/dts/features/DiscoveryForms/StudyRegistrationAccessRequest/StudyRegistrationAccessRequestOutcome.d.ts +0 -7
- package/dist/dts/features/DiscoveryForms/StudyRegistrationAccessRequest/StudyRegistrationAccessRequestOutcome.d.ts.map +0 -1
- package/dist/dts/features/DiscoveryForms/StudyRegistrationAccessRequest/StudyRegistrationAccessRequestOutcome.js.map +0 -1
- package/dist/dts/features/DiscoveryForms/StudyRegistrationAccessRequest/index.d.ts +0 -7
- package/dist/dts/features/DiscoveryForms/StudyRegistrationAccessRequest/index.d.ts.map +0 -1
- package/dist/dts/features/DiscoveryForms/StudyRegistrationAccessRequest/index.js +0 -11
- package/dist/dts/features/DiscoveryForms/StudyRegistrationAccessRequest/index.js.map +0 -1
- package/dist/dts/features/DiscoveryForms/StudyRegistrationAccessRequest/types.d.ts +0 -20
- package/dist/dts/features/DiscoveryForms/StudyRegistrationAccessRequest/types.d.ts.map +0 -1
- package/dist/dts/features/DiscoveryForms/StudyRegistrationAccessRequest/types.js.map +0 -1
- package/dist/dts/features/DiscoveryForms/StudyRegistrationAccessRequest/useStudyRegistration.d.ts +0 -11
- package/dist/dts/features/DiscoveryForms/StudyRegistrationAccessRequest/useStudyRegistration.d.ts.map +0 -1
- package/dist/dts/features/DiscoveryForms/StudyRegistrationAccessRequest/useStudyRegistration.js.map +0 -1
- package/dist/index/cjs/index-7sUtTikC.js.map +0 -1
- package/dist/index/esm/index-B_0ks9Pi.js.map +0 -1
- package/dist/pages/cjs/index-BQzYPjdE.js.map +0 -1
- package/dist/pages/esm/index-BoZwM5wd.js.map +0 -1
- /package/dist/dts/features/DiscoveryForms/{StudyRegistrationAccessRequest → GenericRegistrationAccessRequest}/types.js +0 -0
|
@@ -10,7 +10,7 @@ import _, { toString, capitalize as capitalize$1, isArray, omitBy, some, isNumbe
|
|
|
10
10
|
import Link from 'next/link';
|
|
11
11
|
import { FaExternalLinkAlt, FaExclamationTriangle, FaExclamation, FaQuestion, FaAngleDoubleLeft, FaAngleDoubleRight, FaCaretDown, FaEyeSlash, FaEye, FaExclamationCircle, FaPencilAlt, FaUndo, FaPlus, FaCircle, FaVideo, FaRegQuestionCircle, FaGraduationCap, FaUser, FaRegStopCircle } from 'react-icons/fa';
|
|
12
12
|
import { Icon } from '@iconify-icon/react';
|
|
13
|
-
import { useCoreSelector, selectUserDetails, selectUserAuthStatus, isAuthenticated, WorkspaceStatus, useGetAuthzResourcesQuery, useUserRequestQuery, useCreateRequestMutation, getRemoteSupportServiceRegistry, isHttpStatusError, GEN3_COMMONS_NAME, useAskQuestionMutation, useGetAggsQuery, Accessibility, useGetStatsAggregationsQuery, fieldNameToLabel, isObject as isObject$1, isIncludes, selectAvailableCohorts, useLazyGetObjectIdsQuery, EmptyFilterSet as EmptyFilterSet$1, selectCurrentCohortFilters, useCustomRangeQuery, usePrevious, selectCohortFilters, filterSetToOperation, useCoreDispatch, selectAllCohorts as selectAllCohorts$1, selectCurrentCohort as selectCurrentCohort$1, setCurrentCohortId as setCurrentCohortId$1, updateCohortName as updateCohortName$1, createNewCohort as createNewCohort$1, duplicateCohort, removeCohort as removeCohort$1, setCohortFilter as setCohortFilter$1, updateCohortFilter as updateCohortFilter$1, removeCohortFilter as removeCohortFilter$1, clearCohortFilters as clearCohortFilters$1, handleOperation, buildNestedFilterForOperation, selectCurrentCohortId, selectCurrentCohortModified, selectCurrentCohortSaved, setCohortIndexFilters, toggleCohortBuilderCategoryFilter, selectCohortFilterExpanded, setCohortFilterCombineMode, selectCohortFilterCombineMode, selectCurrentCohortName, selectShouldShareFilters, selectSharedFilters, useLazyGetCountsQuery, selectIndexFilters, isOperationWithField, extractEnumFilterValue, selectIndexedFilterByName, isOperatorWithFieldAndArrayOfOperands, trimFirstfieldNameToLabel, setShouldShareFilters, CohortStorage, createAppStore, GEN3_API, GEN3_FENCE_API, useIsUserLoggedIn, GEN3_DOMAIN, DataLibraryStoreMode, useDataLibrary, buildListItemsGroupedByDataset, extractFileDatasetsInRecords, useGetMDSQuery,
|
|
13
|
+
import { useCoreSelector, selectUserDetails, selectUserAuthStatus, isAuthenticated, WorkspaceStatus, useGetAuthzResourcesQuery, useUserRequestQuery, useCreateRequestMutation, getRemoteSupportServiceRegistry, isHttpStatusError, GEN3_COMMONS_NAME, useAskQuestionMutation, useGetAggsQuery, Accessibility, useGetStatsAggregationsQuery, fieldNameToLabel, isObject as isObject$1, isIncludes, selectAvailableCohorts, useLazyGetObjectIdsQuery, EmptyFilterSet as EmptyFilterSet$1, selectCurrentCohortFilters, useCustomRangeQuery, usePrevious, selectCohortFilters, filterSetToOperation, useCoreDispatch, selectAllCohorts as selectAllCohorts$1, selectCurrentCohort as selectCurrentCohort$1, setCurrentCohortId as setCurrentCohortId$1, updateCohortName as updateCohortName$1, createNewCohort as createNewCohort$1, duplicateCohort, removeCohort as removeCohort$1, setCohortFilter as setCohortFilter$1, updateCohortFilter as updateCohortFilter$1, removeCohortFilter as removeCohortFilter$1, clearCohortFilters as clearCohortFilters$1, handleOperation, buildNestedFilterForOperation, selectCurrentCohortId, selectCurrentCohortModified, selectCurrentCohortSaved, setCohortIndexFilters, toggleCohortBuilderCategoryFilter, selectCohortFilterExpanded, setCohortFilterCombineMode, selectCohortFilterCombineMode, selectCurrentCohortName, selectShouldShareFilters, selectSharedFilters, useLazyGetCountsQuery, selectIndexFilters, isOperationWithField, extractEnumFilterValue, selectIndexedFilterByName, isOperatorWithFieldAndArrayOfOperands, trimFirstfieldNameToLabel, setShouldShareFilters, CohortStorage, createAppStore, GEN3_API, GEN3_FENCE_API, selectAuthzMappingData, userHasMethodForServiceOnResource as userHasMethodForServiceOnResource$1, useIsUserLoggedIn, GEN3_DOMAIN, DataLibraryStoreMode, useDataLibrary, buildListItemsGroupedByDataset, extractFileDatasetsInRecords, useGetMDSQuery, useGetAggMDSQuery, useGetIndexAggMDSQuery, useGetRawDataAndTotalCountsQuery, humanify, selectCart, selectCartItem, removeItemsFromCart, CART_LIMIT, addItemsToCart, isJSONValue, showModal, Modals, downloadFromGuppyToBlob, downloadJSONDataFromGuppy, coreStore, fetchJSONDataFromURL, GEN3_MANIFEST_API, useGetCountsQuery, isIntersection, useGeneralGQLQuery, convertFilterSetToGqlFilter, customQueryStrForField, selectAllCohortFiltersCollapsed, toggleCohortBuilderAllFilters, getGen3AppId, createAppApiForRTKQ, useGetDictionaryQuery, hideModal, GEN3_GUPPY_API, HttpMethod, groupSharedFields, useGetCSRFQuery, useGetCredentialsQuery, useRemoveCredentialMutation, useAddNewCredentialMutation, selectCurrentModal, useGetAuthzMappingsQuery, useGetExternalLoginsQuery, useGetLoginProvidersQuery, GEN3_REDIRECT_URL, useGetProjectsDetailsQuery, useGetSubmissionsQuery, useLaunchWorkspaceMutation, useTerminateWorkspaceMutation, useGetWorkspacePayModelsQuery, selectActiveWorkspaceStatus, setRequestedWorkspaceStatus, RequestedWorkspaceStatus, setActiveWorkspaceStatus, isFetchBaseQueryError, isSerializedError, normalizeRtkError, setActiveWorkspace, getCurrentTimestamp, selectWorkspaceStatusFromService, selectRequestedWorkspaceStatus, selectActiveWorkspaceId, useGetWorkspaceOptionsQuery, useGetWorkspaceStatusQuery, GEN3_WORKSPACE_API, useSetCurrentPayModelMutation, PodStatus, PodConditionType, isWorkspaceRunningOrStopping, isCohortItem, isFileItem, fetchFencePresignedURL, HTTPError, HTTPUserFriendlyErrorMessages, getFederatedLoginStatus, queryMultipleMDSRecords, extractIndexFromDataLibraryCohort, isFilterSet, getNumberOfItemsInDatalist, isAdditionalDataItem, useLazyGetCrosswalkDataQuery, selectHeadersWithCSRFToken, selectCSRFToken } from '@gen3/core';
|
|
14
14
|
import { useDeepCompareMemo, useDeepCompareEffect, useDeepCompareCallback } from 'use-deep-compare';
|
|
15
15
|
import 'swr';
|
|
16
16
|
import { getCookie } from 'cookies-next';
|
|
@@ -21,7 +21,7 @@ import { notifications, cleanNotifications, showNotification } from '@mantine/no
|
|
|
21
21
|
import { useResizeObserver, useElementSize, useClickOutside, useScrollIntoView, useDisclosure, useDidUpdate, mergeRefs, useReducedMotion, useDebouncedValue, useViewportSize, useMediaQuery, useLocalStorage, useClipboard, useFullscreenDocument, getHotkeyHandler } from '@mantine/hooks';
|
|
22
22
|
import { modals } from '@mantine/modals';
|
|
23
23
|
import Markdown from 'react-markdown';
|
|
24
|
-
import { MdLogin, MdInfo, MdClose, MdKeyboardArrowUp, MdKeyboardArrowDown, MdPlayArrow, MdArrowDropDown, MdAddCircle, MdRemoveCircle, MdSearch, MdDownload, MdTrendingDown, MdReplay, MdHorizontalSplit, MdOutlineHorizontalSplit, MdBarChart, MdAdd, MdContentCopy, MdOutlineArrowBack, MdOutlineArrowForward, MdWarning, MdExpandLess, MdExpandMore, MdFlip, MdLockOutline, MdLibraryAdd, MdKeyboardDoubleArrowLeft, MdOutlineWatchLater, MdOutlineLockOpen, MdOutlineLock, MdUndo, MdDragIndicator, MdShoppingCart, MdPerson, MdSave, MdGroup, MdOutlineBarChart, MdOutlineSearch, MdFormatQuote, MdDelete, MdOutlineRemoveCircle } from 'react-icons/md';
|
|
24
|
+
import { MdLogin, MdInfo, MdClose, MdKeyboardArrowUp, MdKeyboardArrowDown, MdPlayArrow, MdArrowDropDown, MdAddCircle, MdRemoveCircle, MdSearch, MdDownload, MdTrendingDown, MdReplay, MdHorizontalSplit, MdOutlineHorizontalSplit, MdBarChart, MdAdd, MdContentCopy, MdOutlineArrowBack, MdOutlineArrowForward, MdWarning, MdExpandLess, MdExpandMore, MdSettings, MdFlip, MdLockOutline, MdLibraryAdd, MdKeyboardDoubleArrowLeft, MdOutlineWatchLater, MdOutlineLockOpen, MdOutlineLock, MdUndo, MdDragIndicator, MdShoppingCart, MdPerson, MdSave, MdGroup, MdOutlineBarChart, MdOutlineSearch, MdFormatQuote, MdDelete, MdOutlineRemoveCircle } from 'react-icons/md';
|
|
25
25
|
import { AiOutlineLogin, AiOutlineDash } from 'react-icons/ai';
|
|
26
26
|
import { PiDotsThreeCircleThin, PiTrash, PiSparkleFill, PiCaretUpFill, PiCaretDownFill, PiCaretUpDownFill, PiCaretCircleDownFill } from 'react-icons/pi';
|
|
27
27
|
import Head from 'next/head';
|
|
@@ -1825,7 +1825,7 @@ function hashCode(str) {
|
|
|
1825
1825
|
* @param {string} props.keyString - For mantine form to identify elements
|
|
1826
1826
|
* @param {FormContentProps['form']} props.form - @mantine/form useForm() object
|
|
1827
1827
|
* @returns {JSX.Element} A JSX element that renders the content dynamically based on the input type and properties.
|
|
1828
|
-
*/ const FormContent = ({ text, label, initialValue, dropdownData, description, placeholder, disabled, required, tooltip, className = '', type = ContentType.Text, keyString, form })=>{
|
|
1828
|
+
*/ const FormContent = ({ text, label, initialValue, dropdownData, description, placeholder, disabled, required, tooltip, className = '', autosize = false, type = ContentType.Text, keyString, form })=>{
|
|
1829
1829
|
//code for tooltips on form items
|
|
1830
1830
|
let inputContainer;
|
|
1831
1831
|
if (tooltip) {
|
|
@@ -1951,7 +1951,8 @@ function hashCode(str) {
|
|
|
1951
1951
|
disabled: disabled || form.submitting,
|
|
1952
1952
|
required: required,
|
|
1953
1953
|
inputContainer: inputContainer,
|
|
1954
|
-
...form.getInputProps(keyString)
|
|
1954
|
+
...form.getInputProps(keyString),
|
|
1955
|
+
autosize: autosize
|
|
1955
1956
|
}, form.key(keyString));
|
|
1956
1957
|
}
|
|
1957
1958
|
default:
|
|
@@ -8551,6 +8552,7 @@ const OverflowTooltippedLabel = ({ children, label, className = 'flex-grow font-
|
|
|
8551
8552
|
|
|
8552
8553
|
const QueryExpressionContext = /*#__PURE__*/ React__default.createContext({
|
|
8553
8554
|
displayOnly: false,
|
|
8555
|
+
showLogicalOperators: false,
|
|
8554
8556
|
fieldsAreFlat: true,
|
|
8555
8557
|
cohortId: null,
|
|
8556
8558
|
cohortName: 'default',
|
|
@@ -8611,6 +8613,12 @@ const QueryExpressionsExpandedContext = /*#__PURE__*/ React__default.createConte
|
|
|
8611
8613
|
()=>null
|
|
8612
8614
|
]);
|
|
8613
8615
|
|
|
8616
|
+
const LogicalOperatorLabel = ({ operator, className = '' })=>/*#__PURE__*/ jsx("span", {
|
|
8617
|
+
className: `flex items-center justify-center px-1 text-xs font-bold uppercase text-base-darkest ${className}`,
|
|
8618
|
+
"data-testid": `query-logical-operator-${operator}`,
|
|
8619
|
+
children: operator
|
|
8620
|
+
});
|
|
8621
|
+
|
|
8614
8622
|
const RemoveButton$1 = ({ value })=>/*#__PURE__*/ jsx(ActionIcon, {
|
|
8615
8623
|
size: "xs",
|
|
8616
8624
|
color: "base.0",
|
|
@@ -8672,9 +8680,23 @@ const isRangeOperation = (x)=>{
|
|
|
8672
8680
|
const isNestedFilter = (x)=>{
|
|
8673
8681
|
return 'path' in x;
|
|
8674
8682
|
};
|
|
8675
|
-
const
|
|
8683
|
+
const buildSetOperation = (field, operator, operands, combineMode)=>combineMode === 'and' ? {
|
|
8684
|
+
operator: 'and',
|
|
8685
|
+
operands: operands.map((value)=>({
|
|
8686
|
+
operator,
|
|
8687
|
+
field,
|
|
8688
|
+
operands: [
|
|
8689
|
+
value
|
|
8690
|
+
]
|
|
8691
|
+
}))
|
|
8692
|
+
} : {
|
|
8693
|
+
operator,
|
|
8694
|
+
field,
|
|
8695
|
+
operands
|
|
8696
|
+
};
|
|
8697
|
+
const IncludeExcludeQueryElement = ({ index, field, path, operator, operands, displayOnly = false, combineMode = 'or' })=>{
|
|
8676
8698
|
const [queryExpressionsExpanded, setQueryExpressionsExpanded] = useContext(QueryExpressionsExpandedContext);
|
|
8677
|
-
const { cohortId: currentCohortId, useRemoveFilter, useUpdateFilters, shouldShowSummary, fieldsAreFlat } = useContext(QueryExpressionContext);
|
|
8699
|
+
const { cohortId: currentCohortId, useRemoveFilter, useUpdateFilters, shouldShowSummary, fieldsAreFlat, showLogicalOperators } = useContext(QueryExpressionContext);
|
|
8678
8700
|
const removeCohortFilter = useRemoveFilter();
|
|
8679
8701
|
const updateCohortFilter = useUpdateFilters();
|
|
8680
8702
|
useDeepCompareEffect(()=>{
|
|
@@ -8765,45 +8787,45 @@ const IncludeExcludeQueryElement = ({ index, field, path, operator, operands, di
|
|
|
8765
8787
|
gap: "xs",
|
|
8766
8788
|
children: operandsArray.map((x, i)=>{
|
|
8767
8789
|
const value = x.toString();
|
|
8768
|
-
return /*#__PURE__*/
|
|
8769
|
-
|
|
8770
|
-
|
|
8771
|
-
|
|
8772
|
-
|
|
8773
|
-
|
|
8774
|
-
|
|
8775
|
-
|
|
8776
|
-
|
|
8777
|
-
|
|
8778
|
-
|
|
8779
|
-
|
|
8780
|
-
|
|
8781
|
-
|
|
8782
|
-
|
|
8783
|
-
|
|
8784
|
-
|
|
8785
|
-
|
|
8786
|
-
|
|
8787
|
-
|
|
8788
|
-
|
|
8789
|
-
|
|
8790
|
-
|
|
8791
|
-
|
|
8792
|
-
|
|
8793
|
-
|
|
8794
|
-
|
|
8795
|
-
|
|
8796
|
-
}
|
|
8797
|
-
|
|
8798
|
-
|
|
8799
|
-
|
|
8800
|
-
|
|
8801
|
-
|
|
8802
|
-
|
|
8803
|
-
|
|
8804
|
-
|
|
8790
|
+
return /*#__PURE__*/ jsxs(React__default.Fragment, {
|
|
8791
|
+
children: [
|
|
8792
|
+
showLogicalOperators && i > 0 && /*#__PURE__*/ jsx(LogicalOperatorLabel, {
|
|
8793
|
+
operator: combineMode
|
|
8794
|
+
}),
|
|
8795
|
+
/*#__PURE__*/ jsx(Badge, {
|
|
8796
|
+
"data-testid": `query-rep-${field}-${value}-${i}`,
|
|
8797
|
+
variant: "filled",
|
|
8798
|
+
color: "accent.5",
|
|
8799
|
+
size: "md",
|
|
8800
|
+
className: `normal-case items-center max-w-[162px] cursor-pointer hover:bg-accent-darker pl-2 ${displayOnly ? 'pr-3' : 'pr-0'}`,
|
|
8801
|
+
rightSection: !displayOnly && /*#__PURE__*/ jsx(RemoveButton$1, {
|
|
8802
|
+
value: value
|
|
8803
|
+
}),
|
|
8804
|
+
onClick: ()=>{
|
|
8805
|
+
if (displayOnly) return;
|
|
8806
|
+
const newOperands = operandsArray.filter((o)=>o !== x);
|
|
8807
|
+
if (currentCohortId && newOperands.length === 0) {
|
|
8808
|
+
setQueryExpressionsExpanded({
|
|
8809
|
+
type: 'clear',
|
|
8810
|
+
cohortId: currentCohortId,
|
|
8811
|
+
field: fieldToUpdate
|
|
8812
|
+
});
|
|
8813
|
+
removeCohortFilter(index, fieldToUpdate);
|
|
8814
|
+
} else {
|
|
8815
|
+
const updatedOperation = buildSetOperation(field, operator, newOperands, combineMode);
|
|
8816
|
+
updateCohortFilter(index, fieldToUpdate, fieldsAreFlat ? updatedOperation : buildNestedFilterForOperation(fieldToUpdate, updatedOperation));
|
|
8817
|
+
}
|
|
8818
|
+
},
|
|
8819
|
+
children: /*#__PURE__*/ jsx(OverflowTooltippedLabel, {
|
|
8820
|
+
label: value,
|
|
8821
|
+
className: "flex-grow text-md font-content",
|
|
8822
|
+
children: /*#__PURE__*/ jsx(QueryRepresentationLabel, {
|
|
8823
|
+
value: value.toString(),
|
|
8824
|
+
field: field
|
|
8825
|
+
})
|
|
8826
|
+
})
|
|
8805
8827
|
})
|
|
8806
|
-
|
|
8828
|
+
]
|
|
8807
8829
|
}, `query-rep-${field}-${value}-${i}`);
|
|
8808
8830
|
})
|
|
8809
8831
|
})
|
|
@@ -9051,6 +9073,25 @@ const QueryElement = ({ index, field, path, children, displayOnly = false })=>{
|
|
|
9051
9073
|
upper: f.operands[1]
|
|
9052
9074
|
}, f.operands[0].field);
|
|
9053
9075
|
}
|
|
9076
|
+
const enumOperands = f.operands.filter(isIncludes);
|
|
9077
|
+
const field = enumOperands[0]?.field;
|
|
9078
|
+
if (enumOperands.length === f.operands.length && field && enumOperands.every((operand)=>operand.field === field)) {
|
|
9079
|
+
return /*#__PURE__*/ jsx(QueryElement, {
|
|
9080
|
+
field: field,
|
|
9081
|
+
index: this.index,
|
|
9082
|
+
path: this.path,
|
|
9083
|
+
displayOnly: this.displayOnly,
|
|
9084
|
+
children: /*#__PURE__*/ jsx(IncludeExcludeQueryElement, {
|
|
9085
|
+
field: field,
|
|
9086
|
+
operator: enumOperands[0].operator,
|
|
9087
|
+
operands: enumOperands.flatMap((operand)=>operand.operands),
|
|
9088
|
+
combineMode: "and",
|
|
9089
|
+
index: this.index,
|
|
9090
|
+
path: this.path,
|
|
9091
|
+
displayOnly: this.displayOnly
|
|
9092
|
+
})
|
|
9093
|
+
}, field);
|
|
9094
|
+
}
|
|
9054
9095
|
// TODO: handle deeper nesting
|
|
9055
9096
|
return null;
|
|
9056
9097
|
};
|
|
@@ -9367,7 +9408,7 @@ const QueryExpressionSection = ({ index, showImportExport = false, displayOnly =
|
|
|
9367
9408
|
const [filtersSectionCollapsed, setFiltersSectionCollapsed] = useState(true);
|
|
9368
9409
|
const filtersRef = useRef(null);
|
|
9369
9410
|
const [QESectionHeight, setQESectionHeight] = useState(0);
|
|
9370
|
-
const { cohortName, cohortId, useClearCohortFilters, useGetFilters } = useContext(QueryExpressionContext);
|
|
9411
|
+
const { cohortName, cohortId, showLogicalOperators, useClearCohortFilters, useGetFilters } = useContext(QueryExpressionContext);
|
|
9371
9412
|
const clearCohortFilters = useClearCohortFilters();
|
|
9372
9413
|
const filters = useGetFilters(index);
|
|
9373
9414
|
useDeepCompareEffect(()=>{
|
|
@@ -9508,8 +9549,16 @@ const QueryExpressionSection = ({ index, showImportExport = false, displayOnly =
|
|
|
9508
9549
|
"data-testid": "text-no-active-cohort-filter",
|
|
9509
9550
|
className: "flex items-center font-content h-10",
|
|
9510
9551
|
children: "No filters currently applied."
|
|
9511
|
-
}) : Object.keys(filters.root).map((k)=>{
|
|
9512
|
-
return
|
|
9552
|
+
}) : Object.keys(filters.root).map((k, indexInFilters)=>{
|
|
9553
|
+
return /*#__PURE__*/ jsxs(React__default.Fragment, {
|
|
9554
|
+
children: [
|
|
9555
|
+
showLogicalOperators && indexInFilters > 0 && /*#__PURE__*/ jsx(LogicalOperatorLabel, {
|
|
9556
|
+
operator: filters.mode,
|
|
9557
|
+
className: "mr-1 mb-2"
|
|
9558
|
+
}),
|
|
9559
|
+
convertFilterToComponent(filters.root[k], index, '.', displayOnly)
|
|
9560
|
+
]
|
|
9561
|
+
}, k);
|
|
9513
9562
|
})
|
|
9514
9563
|
})
|
|
9515
9564
|
]
|
|
@@ -9556,7 +9605,7 @@ const SUMMARY_THRESHOLD = 10;
|
|
|
9556
9605
|
*/ const DefaultShouldShowSummary = (field, count)=>{
|
|
9557
9606
|
return count > SUMMARY_THRESHOLD;
|
|
9558
9607
|
};
|
|
9559
|
-
const QueryExpression = ({ index, shouldShowSummary = DefaultShouldShowSummary, hooks, fieldsAreFlat = true })=>{
|
|
9608
|
+
const QueryExpression = ({ index, shouldShowSummary = DefaultShouldShowSummary, hooks, fieldsAreFlat = true, showLogicalOperators = false })=>{
|
|
9560
9609
|
const currentCohortId = useCoreSelector((state)=>selectCurrentCohortId(state));
|
|
9561
9610
|
const currentCohortName = useCoreSelector((state)=>selectCurrentCohortName(state));
|
|
9562
9611
|
return /*#__PURE__*/ jsx(QueryExpressionContext.Provider, {
|
|
@@ -9564,6 +9613,7 @@ const QueryExpression = ({ index, shouldShowSummary = DefaultShouldShowSummary,
|
|
|
9564
9613
|
cohortName: currentCohortName,
|
|
9565
9614
|
cohortId: currentCohortId,
|
|
9566
9615
|
displayOnly: false,
|
|
9616
|
+
showLogicalOperators,
|
|
9567
9617
|
fieldsAreFlat: fieldsAreFlat,
|
|
9568
9618
|
shouldShowSummary: shouldShowSummary,
|
|
9569
9619
|
useClearCohortFilters: ()=>{
|
|
@@ -9859,6 +9909,7 @@ const classifyFacets = (data, index, fieldMapping = [], facetDefinitionsFromConf
|
|
|
9859
9909
|
moveValuesToBottom: facetDef?.moveValuesToBottom,
|
|
9860
9910
|
excludeValues: facetDef?.excludeValues,
|
|
9861
9911
|
defaultSort: facetDef?.defaultSort,
|
|
9912
|
+
showMatchModeSelector: facetDef?.showMatchModeSelector,
|
|
9862
9913
|
valueLabel: facetDef?.valueLabel,
|
|
9863
9914
|
range: facetDef?.range ? {
|
|
9864
9915
|
minimum: facetDef.range?.minimum ?? Math.floor(Number(value[0].key[0])),
|
|
@@ -11121,7 +11172,7 @@ inline-flex
|
|
|
11121
11172
|
items-center
|
|
11122
11173
|
hover:text-primary-lightest
|
|
11123
11174
|
`;
|
|
11124
|
-
const controlsIconStyle = 'text-secondary-contrast hover:text-secondary-lighter';
|
|
11175
|
+
const controlsIconStyle = 'text-secondary-contrast hover:text-secondary-contrast-lighter';
|
|
11125
11176
|
const FacetText = tw.div`
|
|
11126
11177
|
text-secondary-contrast font-heading font-semibold text-sm break-words
|
|
11127
11178
|
`;
|
|
@@ -11244,12 +11295,11 @@ flex items-start justify-between items-center flex-nowrap bg-secondary px-1.5 ro
|
|
|
11244
11295
|
if (toggleExpandFilter) toggleExpandFilter(field, true);
|
|
11245
11296
|
if (toggleSettings) toggleSettings();
|
|
11246
11297
|
},
|
|
11247
|
-
"aria-label": "
|
|
11298
|
+
"aria-label": "Filter settings",
|
|
11248
11299
|
className: header.iconStyle,
|
|
11249
|
-
children: /*#__PURE__*/ jsx(
|
|
11250
|
-
|
|
11251
|
-
|
|
11252
|
-
icon: "gen3:settings",
|
|
11300
|
+
children: /*#__PURE__*/ jsx(MdSettings, {
|
|
11301
|
+
size: "1.35em",
|
|
11302
|
+
className: header.iconStyle,
|
|
11253
11303
|
"aria-hidden": "true"
|
|
11254
11304
|
})
|
|
11255
11305
|
})
|
|
@@ -12570,8 +12620,8 @@ const FacetEnumList = ({ field, facetName, hooks, valueLabel, isSettings = false
|
|
|
12570
12620
|
const searchInputRef = useRef(null);
|
|
12571
12621
|
const settingRef = useRef(null);
|
|
12572
12622
|
const [searchTerm, setSearchTerm] = useState('');
|
|
12573
|
-
// const [combineMode, setCombineMode] = useState<'or' | 'and'>('or');
|
|
12574
12623
|
const { data, enumFilters, combineMode, isSuccess, error } = hooks.useGetFacetData(field);
|
|
12624
|
+
const [selectedCombineMode, setSelectedCombineMode] = useState(combineMode ?? 'or');
|
|
12575
12625
|
const [selectedEnums, setSelectedEnums] = useState(enumFilters ?? []);
|
|
12576
12626
|
const totalCount = hooks?.useTotalCounts ? hooks.useTotalCounts() : 1;
|
|
12577
12627
|
const clearFilters = hooks.useClearFilter();
|
|
@@ -12605,6 +12655,17 @@ const FacetEnumList = ({ field, facetName, hooks, valueLabel, isSettings = false
|
|
|
12605
12655
|
}, [
|
|
12606
12656
|
enumFilters
|
|
12607
12657
|
]);
|
|
12658
|
+
useEffect(()=>{
|
|
12659
|
+
// Existing filters are the source of truth when loading or externally
|
|
12660
|
+
// updating a cohort. Keep a user's selected mode when the facet is empty
|
|
12661
|
+
// so they can choose "Match all" before selecting values.
|
|
12662
|
+
if ((enumFilters?.length ?? 0) > 0) {
|
|
12663
|
+
setSelectedCombineMode(combineMode ?? 'or');
|
|
12664
|
+
}
|
|
12665
|
+
}, [
|
|
12666
|
+
combineMode,
|
|
12667
|
+
enumFilters
|
|
12668
|
+
]);
|
|
12608
12669
|
const maxValuesToDisplay = DEFAULT_VISIBLE_ITEMS$1;
|
|
12609
12670
|
// update filters when checkbox is selected
|
|
12610
12671
|
const handleChange = (value, checked)=>{
|
|
@@ -12619,13 +12680,15 @@ const FacetEnumList = ({ field, facetName, hooks, valueLabel, isSettings = false
|
|
|
12619
12680
|
] : [
|
|
12620
12681
|
value
|
|
12621
12682
|
];
|
|
12622
|
-
updateFacetEnum(field, updated, updateFacetFilters, clearFilters,
|
|
12683
|
+
updateFacetEnum(field, updated, updateFacetFilters, clearFilters, selectedCombineMode);
|
|
12623
12684
|
} else {
|
|
12624
12685
|
const updated = selectedEnums?.filter((x)=>x !== value);
|
|
12625
|
-
updateFacetEnum(field, updated ?? [], updateFacetFilters, clearFilters,
|
|
12686
|
+
updateFacetEnum(field, updated ?? [], updateFacetFilters, clearFilters, selectedCombineMode);
|
|
12626
12687
|
}
|
|
12627
12688
|
};
|
|
12628
12689
|
const handleCombineModeChange = (mode)=>{
|
|
12690
|
+
setSelectedCombineMode(mode);
|
|
12691
|
+
if ((selectedEnums?.length ?? 0) === 0) return;
|
|
12629
12692
|
updateFacetEnum(field, selectedEnums ?? [], updateFacetFilters, clearFilters, mode);
|
|
12630
12693
|
};
|
|
12631
12694
|
const [facetChartData, setFacetChartData] = useState({
|
|
@@ -12760,23 +12823,24 @@ const FacetEnumList = ({ field, facetName, hooks, valueLabel, isSettings = false
|
|
|
12760
12823
|
indicator: 'bg-accent text-accent-contrast'
|
|
12761
12824
|
},
|
|
12762
12825
|
ref: settingRef,
|
|
12763
|
-
value:
|
|
12826
|
+
value: selectedCombineMode,
|
|
12827
|
+
"aria-label": "How selected facet values are matched",
|
|
12764
12828
|
onChange: (value)=>{
|
|
12765
12829
|
handleCombineModeChange(value);
|
|
12766
12830
|
},
|
|
12767
12831
|
data: [
|
|
12768
12832
|
{
|
|
12769
|
-
label: '
|
|
12770
|
-
value: '
|
|
12833
|
+
label: 'Match any',
|
|
12834
|
+
value: 'or'
|
|
12771
12835
|
},
|
|
12772
12836
|
{
|
|
12773
|
-
label: '
|
|
12774
|
-
value: '
|
|
12837
|
+
label: 'Match all',
|
|
12838
|
+
value: 'and'
|
|
12775
12839
|
}
|
|
12776
12840
|
]
|
|
12777
12841
|
}),
|
|
12778
12842
|
/*#__PURE__*/ jsx(Tooltip, {
|
|
12779
|
-
label: "
|
|
12843
|
+
label: "Match any includes cases with at least one selected value. Match all requires every selected value.",
|
|
12780
12844
|
children: /*#__PURE__*/ jsx(Icon, {
|
|
12781
12845
|
icon: "gen3:info",
|
|
12782
12846
|
height: 12,
|
|
@@ -13612,6 +13676,7 @@ const createFacetCard = ({ facetDefinition, valueLabel, hooks: dataFunctions, fa
|
|
|
13612
13676
|
width: width,
|
|
13613
13677
|
hooks: dataFunctions,
|
|
13614
13678
|
showPercent: showPercent,
|
|
13679
|
+
showSettings: facetDefinition?.showMatchModeSelector,
|
|
13615
13680
|
sharedWithIndices: facetDefinition?.sharedWithIndices,
|
|
13616
13681
|
defaultSort: facetDefinition?.defaultSort,
|
|
13617
13682
|
moveValuesToBottom: facetDefinition?.moveValuesToBottom ?? [],
|
|
@@ -16417,17 +16482,11 @@ const SinglePageStudyDetailsPanel = ({ data, studyConfig, authorization })=>{
|
|
|
16417
16482
|
});
|
|
16418
16483
|
};
|
|
16419
16484
|
|
|
16420
|
-
const userCanRegisterStudy = (userInfo, studyRegistrationAuthZ)=>{
|
|
16421
|
-
const actions = userInfo?.authz && studyRegistrationAuthZ ? userInfo.authz[studyRegistrationAuthZ] : undefined;
|
|
16422
|
-
const method = 'access';
|
|
16423
|
-
const service = 'study_registration';
|
|
16424
|
-
return actions?.some((x)=>(x.service === service || x.service === '*') && (x.method === method || x.method === '*')) ?? false;
|
|
16425
|
-
};
|
|
16426
|
-
|
|
16427
16485
|
const StudyDetailsHeaderButtons = ({ onClose, permalink })=>{
|
|
16428
16486
|
const userInfo = useCoreSelector((state)=>selectUserDetails(state));
|
|
16429
16487
|
const requiresLogin = !userInfo.active;
|
|
16430
16488
|
const { discoveryConfig: config } = useDiscoveryContext();
|
|
16489
|
+
const router = useRouter();
|
|
16431
16490
|
const index = config.minimalFieldMapping.uid;
|
|
16432
16491
|
const { studyDetails } = useStudyContext();
|
|
16433
16492
|
const studyUID = toString(studyDetails[index]);
|
|
@@ -16435,44 +16494,55 @@ const StudyDetailsHeaderButtons = ({ onClose, permalink })=>{
|
|
|
16435
16494
|
const studyRegistrationAuthZ = studyDetails.registration_authz;
|
|
16436
16495
|
const studyProjectNumber = studyDetails.project_number;
|
|
16437
16496
|
const showSubmitButton = config.detailView.showSubmitButton;
|
|
16438
|
-
const
|
|
16439
|
-
const
|
|
16440
|
-
const
|
|
16497
|
+
const userAuthMapping = useCoreSelector((state)=>selectAuthzMappingData(state));
|
|
16498
|
+
const userHasStudyRegistrationAccess = userHasMethodForServiceOnResource$1('access', 'study_registration', toString(studyRegistrationAuthZ), userAuthMapping);
|
|
16499
|
+
const isStudyRegistered = studyDetails.is_registered;
|
|
16500
|
+
// Study is not yet registered — show register/request-access/login button
|
|
16501
|
+
const showStudyRegistrationButton = showSubmitButton && isStudyRegistered === false;
|
|
16502
|
+
// Study is registered — show appropriate VLMD submission button based on auth state
|
|
16503
|
+
const showSubmitVLMDButton = showSubmitButton && isStudyRegistered && !requiresLogin && userHasStudyRegistrationAccess;
|
|
16504
|
+
const showRequestVLMDAccessButton = showSubmitButton && isStudyRegistered && !requiresLogin && !userHasStudyRegistrationAccess;
|
|
16505
|
+
const showLoginToSubmitVLMDButton = showSubmitButton && isStudyRegistered && requiresLogin;
|
|
16506
|
+
const studyNavQuery = {
|
|
16507
|
+
studyUID,
|
|
16508
|
+
studyName,
|
|
16509
|
+
studyRegistrationAuthZ: toString(studyRegistrationAuthZ),
|
|
16510
|
+
studyProjectNumber
|
|
16511
|
+
};
|
|
16512
|
+
const handleStudyRegistrationClick = ()=>{
|
|
16441
16513
|
if (requiresLogin) {
|
|
16442
16514
|
void router.push('/Login');
|
|
16443
|
-
} else if (
|
|
16515
|
+
} else if (userHasStudyRegistrationAccess) {
|
|
16444
16516
|
void router.push({
|
|
16445
16517
|
pathname: '/study-reg',
|
|
16446
|
-
query:
|
|
16447
|
-
studyUID: studyUID,
|
|
16448
|
-
studyName: studyName,
|
|
16449
|
-
studyRegistrationAuthZ: studyRegistrationAuthZ,
|
|
16450
|
-
studyProjectNumber: studyProjectNumber
|
|
16451
|
-
}
|
|
16518
|
+
query: studyNavQuery
|
|
16452
16519
|
}, '/study-reg');
|
|
16453
16520
|
} else {
|
|
16454
16521
|
void router.push({
|
|
16455
16522
|
pathname: '/study-reg/request-access',
|
|
16456
|
-
query:
|
|
16457
|
-
studyUID: studyUID,
|
|
16458
|
-
studyName: studyName,
|
|
16459
|
-
studyRegistrationAuthZ: studyRegistrationAuthZ,
|
|
16460
|
-
studyProjectNumber: studyProjectNumber
|
|
16461
|
-
}
|
|
16523
|
+
query: studyNavQuery
|
|
16462
16524
|
}, '/study-reg/request-access');
|
|
16463
16525
|
}
|
|
16464
16526
|
};
|
|
16465
|
-
const
|
|
16466
|
-
|
|
16467
|
-
|
|
16468
|
-
|
|
16469
|
-
|
|
16470
|
-
|
|
16471
|
-
|
|
16472
|
-
|
|
16527
|
+
const handleSubmitVLMDClick = ()=>{
|
|
16528
|
+
void router.push({
|
|
16529
|
+
pathname: '/vlmd-submission',
|
|
16530
|
+
query: studyNavQuery
|
|
16531
|
+
}, '/vlmd-submission');
|
|
16532
|
+
};
|
|
16533
|
+
const handleRequestVLMDAccessClick = ()=>{
|
|
16534
|
+
void router.push({
|
|
16535
|
+
pathname: '/vlmd-submission/request-access',
|
|
16536
|
+
query: studyNavQuery
|
|
16537
|
+
}, '/vlmd-submission/request-access');
|
|
16538
|
+
};
|
|
16539
|
+
const studyRegistrationButtonText = useMemo(()=>{
|
|
16540
|
+
if (requiresLogin) return 'Login to Register This Study';
|
|
16541
|
+
if (userHasStudyRegistrationAccess) return 'Register This Study';
|
|
16542
|
+
return 'Request Access to Register This Study';
|
|
16473
16543
|
}, [
|
|
16474
16544
|
requiresLogin,
|
|
16475
|
-
|
|
16545
|
+
userHasStudyRegistrationAccess
|
|
16476
16546
|
]);
|
|
16477
16547
|
return /*#__PURE__*/ jsxs(Fragment, {
|
|
16478
16548
|
children: [
|
|
@@ -16482,15 +16552,45 @@ const StudyDetailsHeaderButtons = ({ onClose, permalink })=>{
|
|
|
16482
16552
|
variant: "outline",
|
|
16483
16553
|
children: "Back"
|
|
16484
16554
|
}),
|
|
16485
|
-
|
|
16555
|
+
showStudyRegistrationButton && /*#__PURE__*/ jsx(Button, {
|
|
16486
16556
|
leftSection: /*#__PURE__*/ jsx(FiLogIn, {
|
|
16487
16557
|
size: 14
|
|
16488
16558
|
}),
|
|
16489
16559
|
variant: "subtle",
|
|
16490
16560
|
color: "black",
|
|
16491
16561
|
size: "xs",
|
|
16492
|
-
onClick:
|
|
16493
|
-
children:
|
|
16562
|
+
onClick: handleStudyRegistrationClick,
|
|
16563
|
+
children: studyRegistrationButtonText
|
|
16564
|
+
}),
|
|
16565
|
+
showSubmitVLMDButton && /*#__PURE__*/ jsx(Button, {
|
|
16566
|
+
leftSection: /*#__PURE__*/ jsx(FiLogIn, {
|
|
16567
|
+
size: 14
|
|
16568
|
+
}),
|
|
16569
|
+
variant: "subtle",
|
|
16570
|
+
color: "black",
|
|
16571
|
+
size: "xs",
|
|
16572
|
+
onClick: handleSubmitVLMDClick,
|
|
16573
|
+
children: "Submit Variable-level Metadata"
|
|
16574
|
+
}),
|
|
16575
|
+
showRequestVLMDAccessButton && /*#__PURE__*/ jsx(Button, {
|
|
16576
|
+
leftSection: /*#__PURE__*/ jsx(FiLogIn, {
|
|
16577
|
+
size: 14
|
|
16578
|
+
}),
|
|
16579
|
+
variant: "subtle",
|
|
16580
|
+
color: "black",
|
|
16581
|
+
size: "xs",
|
|
16582
|
+
onClick: handleRequestVLMDAccessClick,
|
|
16583
|
+
children: "Request Access to Submit Variable-level Metadata"
|
|
16584
|
+
}),
|
|
16585
|
+
showLoginToSubmitVLMDButton && /*#__PURE__*/ jsx(Button, {
|
|
16586
|
+
leftSection: /*#__PURE__*/ jsx(FiLogIn, {
|
|
16587
|
+
size: 14
|
|
16588
|
+
}),
|
|
16589
|
+
variant: "subtle",
|
|
16590
|
+
color: "black",
|
|
16591
|
+
size: "xs",
|
|
16592
|
+
onClick: ()=>void router.push('/Login'),
|
|
16593
|
+
children: "Login to Submit Variable-level Metadata"
|
|
16494
16594
|
}),
|
|
16495
16595
|
/*#__PURE__*/ jsx(CopyButton, {
|
|
16496
16596
|
value: permalink,
|
|
@@ -24303,7 +24403,7 @@ const DiscoveryPageGetServerSideProps = async ()=>{
|
|
|
24303
24403
|
}
|
|
24304
24404
|
};
|
|
24305
24405
|
|
|
24306
|
-
const QueryPanel = dynamic(()=>import('./QueryPanel-
|
|
24406
|
+
const QueryPanel = dynamic(()=>import('./QueryPanel-0Znj4lFa.js'), {
|
|
24307
24407
|
ssr: false
|
|
24308
24408
|
});
|
|
24309
24409
|
const QueryPage = ({ headerProps, footerProps, configuration: queryProps })=>{
|
|
@@ -24537,7 +24637,7 @@ const getActiveTab = (router)=>{
|
|
|
24537
24637
|
else if (typeof activeTab === 'object') return activeTab[0];
|
|
24538
24638
|
return undefined;
|
|
24539
24639
|
};
|
|
24540
|
-
const CohortBuilder = dynamic(()=>import('./CohortBuilder-
|
|
24640
|
+
const CohortBuilder = dynamic(()=>import('./CohortBuilder-D3EM-FLr.js'), {
|
|
24541
24641
|
ssr: false
|
|
24542
24642
|
});
|
|
24543
24643
|
const ExplorerPage = ({ headerProps, footerProps, explorerConfig, headerMetadata, tabsLayout, sharedFiltersMap })=>{
|
|
@@ -26995,7 +27095,7 @@ const ExternalLoginsStatus = ()=>{
|
|
|
26995
27095
|
};
|
|
26996
27096
|
|
|
26997
27097
|
const PaymentNumberToString = (x, undefinedValue = 'N/A', precision = 2)=>{
|
|
26998
|
-
if (
|
|
27098
|
+
if (typeof x !== 'number' || Number.isNaN(x)) return undefinedValue;
|
|
26999
27099
|
return x.toFixed(precision);
|
|
27000
27100
|
};
|
|
27001
27101
|
|
|
@@ -32386,4 +32486,4 @@ const AnalysisPageGetServerSideProps = async ()=>{
|
|
|
32386
32486
|
};
|
|
32387
32487
|
|
|
32388
32488
|
export { ProfilePage as $, AISearchPage as A, ColorThemePageGetServerSideProps as B, CountsValue as C, DropdownPanel as D, ErrorCard as E, CrosswalkPage as F, CrosswalkPageGetServerSideProps as G, Custom403Page as H, Custom403PageGetServerSideProps as I, Custom404Page as J, Custom404PageGetServerSideProps as K, DictionaryPage as L, DataLibraryPage as M, DataLibraryPageGetServerSideProps as N, DictionaryPageGetServerSideProps as O, DiscoveryPageGetServerSideProps as P, QueryExpression as Q, DiscoveryPage as R, ExplorerPage as S, ExplorerPageGetServerSideProps as T, ExplorerPageGetServerSidePropsForConfigId as U, LandingPage as V, LandingPageGetServerSideProps as W, LoginPage as X, LoginPageGetServerSideProps as Y, NotebookLitePage as Z, NotebookLitePageGetStaticProps as _, processRangeData as a, ProfilePageGetServerSideProps as a0, QueryPage as a1, QueryPageGetServerSideProps as a2, RepositoryPage as a3, RepositoryPageGetServerSideProps as a4, SubmissionPageGetServerSideProps as a5, SubmissionPage as a6, TabbedCohortBuilderPage as a7, TabbedCohortBuilderPageGetServerSideProps as a8, WorkspaceNoAccessPage as a9, WorkspaceNoAccessPageServerSideProps as aa, WorkspacePage as ab, WorkspacePageGetServerSideProps as ac, GqlQueryEditor$1 as ad, useToggleExpandFilter as b, useFilterExpandedState as c, useClearFilters as d, extractRangeValues$1 as e, useGetFacetFilters as f, getAllFieldsFromFilterConfigs as g, useUpdateFilters as h, useSetCohortFilterCombineState as i, useCohortFilterCombineState as j, classifyFacets as k, DownloadsPanel as l, CollapsableCharts as m, Charts as n, ExplorerTable as o, processBucketData as p, CohortManager as q, removeIntersectionFromEnum as r, AISearchPageGetServerSideProps as s, toDisplayName$1 as t, useFieldNameToLabel as u, AnalysisPage as v, AnalysisPageGetServerSideProps as w, ClinicalDataAnalysisPage as x, ClinicalDataAnalysisServerSideProps as y, ColorThemePage as z };
|
|
32389
|
-
//# sourceMappingURL=index-
|
|
32489
|
+
//# sourceMappingURL=index-CxrByAhv.js.map
|