synapse-react-client 4.0.26 → 4.0.27
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.d.ts +3 -2
- package/dist/SWC.index.d.ts.map +1 -1
- package/dist/SWC.index.js +4 -3
- package/dist/SWC.index.js.map +1 -1
- package/dist/assets/icons/FileCopy.d.ts +5 -0
- package/dist/assets/icons/FileCopy.d.ts.map +1 -0
- package/dist/assets/icons/FileCopy.js +13 -0
- package/dist/assets/icons/FileCopy.js.map +1 -0
- package/dist/assets/icons/NIHIcon.d.ts +4 -0
- package/dist/assets/icons/NIHIcon.d.ts.map +1 -0
- package/dist/assets/icons/NIHIcon.js +14 -0
- package/dist/assets/icons/NIHIcon.js.map +1 -0
- package/dist/assets/icons/fileCopy.svg +8 -0
- package/dist/assets/icons/fileCopy2.js +33 -0
- package/dist/assets/icons/fileCopy2.js.map +1 -0
- package/dist/assets/icons/nih.js +35 -0
- package/dist/assets/icons/nih.js.map +1 -0
- package/dist/assets/icons/nih.svg +9 -0
- package/dist/assets/illustrations/compute_illustration.js +485 -0
- package/dist/assets/illustrations/compute_illustration.js.map +1 -0
- package/dist/assets/illustrations/compute_illustration.svg +204 -0
- package/dist/assets/illustrations/curate_data_illustration.js +479 -0
- package/dist/assets/illustrations/curate_data_illustration.js.map +1 -0
- package/dist/assets/illustrations/curate_data_illustration.svg +91 -0
- package/dist/components/AccountLevelBadges/useRevokeCertificationUI.js +1 -1
- package/dist/components/AcknowledgementsPage/AcknowledgementsDialog.js +1 -1
- package/dist/components/Authentication/AuthenticationMethodSelection.d.ts +1 -0
- package/dist/components/Authentication/AuthenticationMethodSelection.d.ts.map +1 -1
- package/dist/components/Authentication/AuthenticationMethodSelection.js +17 -10
- package/dist/components/Authentication/AuthenticationMethodSelection.js.map +1 -1
- package/dist/components/Authentication/LastLoginInfo.d.ts +2 -2
- package/dist/components/Authentication/LoginForm.d.ts +1 -0
- package/dist/components/Authentication/LoginForm.d.ts.map +1 -1
- package/dist/components/Authentication/LoginForm.js +3 -2
- package/dist/components/Authentication/LoginForm.js.map +1 -1
- package/dist/components/Authentication/LoginMethod.d.ts +2 -2
- package/dist/components/Authentication/LoginMethod.d.ts.map +1 -1
- package/dist/components/Authentication/LoginMethod.js +10 -8
- package/dist/components/Authentication/LoginMethod.js.map +1 -1
- package/dist/components/Authentication/StandaloneLoginForm.d.ts +1 -0
- package/dist/components/Authentication/StandaloneLoginForm.d.ts.map +1 -1
- package/dist/components/Authentication/StandaloneLoginForm.js +16 -15
- package/dist/components/Authentication/StandaloneLoginForm.js.map +1 -1
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +0 -2
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts.map +1 -1
- package/dist/components/Breadcrumbs/Breadcrumbs.js +24 -30
- package/dist/components/Breadcrumbs/Breadcrumbs.js.map +1 -1
- package/dist/components/ChallengeDataDownload/ChallengeDataDownload.js +1 -1
- package/dist/components/ChallengeDetailPage/ChallengeDetailPage.js +1 -1
- package/dist/components/ChallengeSubmission/ChallengeSubmissionStepper.js +1 -1
- package/dist/components/ChangePassword/ChangePassword.js +1 -1
- package/dist/components/CopyToClipboardString/CopyToClipboardString.d.ts +3 -2
- package/dist/components/CopyToClipboardString/CopyToClipboardString.d.ts.map +1 -1
- package/dist/components/CopyToClipboardString/CopyToClipboardString.js +27 -18
- package/dist/components/CopyToClipboardString/CopyToClipboardString.js.map +1 -1
- package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
- package/dist/components/DataGrid/SynapseGrid.js +2 -5
- package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
- package/dist/components/DataGrid/SyncGridWithSourceButton.d.ts +35 -0
- package/dist/components/DataGrid/SyncGridWithSourceButton.d.ts.map +1 -0
- package/dist/components/DataGrid/SyncGridWithSourceButton.js +115 -0
- package/dist/components/DataGrid/SyncGridWithSourceButton.js.map +1 -0
- package/dist/components/DataGrid/useMergeGridWithRecordSet.d.ts +2 -0
- package/dist/components/DataGrid/useMergeGridWithRecordSet.d.ts.map +1 -1
- package/dist/components/DataGrid/useMergeGridWithRecordSet.js.map +1 -1
- package/dist/components/DataGrid/useMergeGridWithSource.d.ts +12 -7
- package/dist/components/DataGrid/useMergeGridWithSource.d.ts.map +1 -1
- package/dist/components/DataGrid/useMergeGridWithSource.js +31 -25
- package/dist/components/DataGrid/useMergeGridWithSource.js.map +1 -1
- package/dist/components/DownloadCart/DownloadListTable.js +1 -1
- package/dist/components/DynamicForm/DynamicForm.js +1 -1
- package/dist/components/EntityAclEditor/EntityAclEditorModal.js +1 -1
- package/dist/components/EntityAclEditor/useNotifyNewACLUsers.js +1 -1
- package/dist/components/EntityDownloadButton/EntityDownloadButton.js +1 -1
- package/dist/components/EntityFinder/EntityIdTextField.d.ts +1 -0
- package/dist/components/EntityFinder/EntityIdTextField.d.ts.map +1 -1
- package/dist/components/EntityFinder/EntityIdTextField.js +7 -6
- package/dist/components/EntityFinder/EntityIdTextField.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.js +1 -1
- package/dist/components/EntityFinder/details/view/table/FileEntityMD5Cell.js +1 -1
- package/dist/components/EntitySidebar/EntitySidebar.css +1 -1
- package/dist/components/EntitySidebar/EntitySidebar.d.ts.map +1 -1
- package/dist/components/EntitySidebar/EntitySidebar.js +47 -39
- package/dist/components/EntitySidebar/EntitySidebar.js.map +1 -1
- package/dist/components/EntitySidebar/EntitySidebar.module.js +11 -11
- package/dist/components/EntitySidebar/EntitySidebar.module.js.map +1 -1
- package/dist/components/EntitySidebar/EntitySidebar.module.scss +6 -6
- package/dist/components/FieldDescription/FieldDescription.css +1 -0
- package/dist/components/FieldDescription/FieldDescription.d.ts +15 -0
- package/dist/components/FieldDescription/FieldDescription.d.ts.map +1 -0
- package/dist/components/FieldDescription/FieldDescription.js +13 -0
- package/dist/components/FieldDescription/FieldDescription.js.map +1 -0
- package/dist/components/FieldDescription/FieldDescription.module.js +5 -0
- package/dist/components/FieldDescription/FieldDescription.module.js.map +1 -0
- package/dist/components/FieldDescription/FieldDescription.module.scss +8 -0
- package/dist/components/FieldDescription/index.d.ts +3 -0
- package/dist/components/FieldDescription/index.d.ts.map +1 -0
- package/dist/components/FieldDescription/index.js +2 -0
- package/dist/components/IconSvg/IconSvg.d.ts +1 -1
- package/dist/components/IconSvg/IconSvg.d.ts.map +1 -1
- package/dist/components/IconSvg/IconSvg.js +216 -212
- package/dist/components/IconSvg/IconSvg.js.map +1 -1
- package/dist/components/OAuthClientAclEditor/OAuthAclEditorModal.js +1 -1
- package/dist/components/OAuthClientManagement/OAuthManagement.js +1 -1
- package/dist/components/PortalAclEditor/PortalAclEditorModal.js +1 -1
- package/dist/components/PortalList/CreatePortalModal.js +1 -1
- package/dist/components/PortalList/PortalCard.js +1 -1
- package/dist/components/ProjectInfo/ProjectInfo.css +1 -0
- package/dist/components/ProjectInfo/ProjectInfo.d.ts +5 -0
- package/dist/components/ProjectInfo/ProjectInfo.d.ts.map +1 -0
- package/dist/components/ProjectInfo/ProjectInfo.js +50 -0
- package/dist/components/ProjectInfo/ProjectInfo.js.map +1 -0
- package/dist/components/ProjectInfo/ProjectInfo.module.js +11 -0
- package/dist/components/ProjectInfo/ProjectInfo.module.js.map +1 -0
- package/dist/components/ProjectInfo/ProjectInfo.module.scss +35 -0
- package/dist/components/ProjectInfo/ProjectInfoPopover.d.ts +10 -0
- package/dist/components/ProjectInfo/ProjectInfoPopover.d.ts.map +1 -0
- package/dist/components/ProjectInfo/ProjectInfoPopover.js +94 -0
- package/dist/components/ProjectInfo/ProjectInfoPopover.js.map +1 -0
- package/dist/components/ProjectStorage/ProjectDataAvailability.d.ts +2 -1
- package/dist/components/ProjectStorage/ProjectDataAvailability.d.ts.map +1 -1
- package/dist/components/ProjectStorage/ProjectDataAvailability.js +67 -75
- package/dist/components/ProjectStorage/ProjectDataAvailability.js.map +1 -1
- package/dist/components/StorybookComponentWrapper.js +1 -1
- package/dist/components/SynapseChat/SynapseChat.js +1 -1
- package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js +1 -1
- package/dist/components/SynapseTable/table-top/DownloadOptions.js +1 -1
- package/dist/components/SynapseTable/table-top/DownloadOptions.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/ImportTableColumnsButton.js +1 -1
- package/dist/components/TextField/TextField.css +1 -1
- package/dist/components/TextField/TextField.d.ts.map +1 -1
- package/dist/components/TextField/TextField.js +27 -25
- package/dist/components/TextField/TextField.js.map +1 -1
- package/dist/components/TextField/TextField.module.js +3 -3
- package/dist/components/TextField/TextField.module.js.map +1 -1
- package/dist/components/TextField/TextField.module.scss +2 -5
- package/dist/components/Webhook/WebhookVerificationDialog.js +1 -1
- package/dist/components/dataaccess/SubmissionPage/ApproveSubmissionConfirmationModal.js +1 -1
- package/dist/components/dataaccess/SubmissionPage/CancelDataAccessRequestConfirmationModal.js +1 -1
- package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js +1 -1
- package/dist/components/entity/page/title_bar/EntityPageTitleBar.d.ts.map +1 -1
- package/dist/components/entity/page/title_bar/EntityPageTitleBar.js +66 -49
- package/dist/components/entity/page/title_bar/EntityPageTitleBar.js.map +1 -1
- package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js +1 -1
- package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js.map +1 -1
- package/dist/components/error/SendMessageToEntityOwnerDialog.js +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/menu/ComplexMenu.d.ts.map +1 -1
- package/dist/components/menu/ComplexMenu.js +1 -4
- package/dist/components/menu/ComplexMenu.js.map +1 -1
- package/dist/features/curator/GridPage/components/UpdateGridPageSearchParamsForm.js +1 -1
- package/dist/features/curator/GridPage/components/UpdateGridPageSearchParamsForm.js.map +1 -1
- package/dist/features/curator/dashboard/CuratorDashboard.d.ts +1 -1
- package/dist/features/curator/dashboard/CuratorDashboard.d.ts.map +1 -1
- package/dist/features/curator/dashboard/CuratorDashboard.js +36 -35
- package/dist/features/curator/dashboard/CuratorDashboard.js.map +1 -1
- package/dist/features/curator/dashboard/CuratorDashboardRouter.d.ts +13 -0
- package/dist/features/curator/dashboard/CuratorDashboardRouter.d.ts.map +1 -0
- package/dist/features/curator/dashboard/CuratorDashboardRouter.js +37 -0
- package/dist/features/curator/dashboard/CuratorDashboardRouter.js.map +1 -0
- package/dist/features/curator/dashboard/components/CurationTaskCard.css +1 -1
- package/dist/features/curator/dashboard/components/CurationTaskCard.d.ts +3 -1
- package/dist/features/curator/dashboard/components/CurationTaskCard.d.ts.map +1 -1
- package/dist/features/curator/dashboard/components/CurationTaskCard.js +26 -157
- package/dist/features/curator/dashboard/components/CurationTaskCard.js.map +1 -1
- package/dist/features/curator/dashboard/components/CurationTaskCard.module.js +10 -6
- package/dist/features/curator/dashboard/components/CurationTaskCard.module.js.map +1 -1
- package/dist/features/curator/dashboard/components/CurationTaskCard.module.scss +31 -0
- package/dist/features/curator/dashboard/components/CurationTaskCardLayout.d.ts +25 -0
- package/dist/features/curator/dashboard/components/CurationTaskCardLayout.d.ts.map +1 -0
- package/dist/features/curator/dashboard/components/CurationTaskCardLayout.js +134 -0
- package/dist/features/curator/dashboard/components/CurationTaskCardLayout.js.map +1 -0
- package/dist/features/curator/dashboard/components/ExecutableTaskCard.d.ts +10 -0
- package/dist/features/curator/dashboard/components/ExecutableTaskCard.d.ts.map +1 -0
- package/dist/features/curator/dashboard/components/ExecutableTaskCard.js +51 -0
- package/dist/features/curator/dashboard/components/ExecutableTaskCard.js.map +1 -0
- package/dist/features/curator/dashboard/components/GridTaskCard.d.ts +10 -0
- package/dist/features/curator/dashboard/components/GridTaskCard.d.ts.map +1 -0
- package/dist/features/curator/dashboard/components/GridTaskCard.js +35 -0
- package/dist/features/curator/dashboard/components/GridTaskCard.js.map +1 -0
- package/dist/features/curator/dashboard/components/NextStepButton.css +1 -1
- package/dist/features/curator/dashboard/components/NextStepButton.d.ts +3 -0
- package/dist/features/curator/dashboard/components/NextStepButton.d.ts.map +1 -1
- package/dist/features/curator/dashboard/components/NextStepButton.js +56 -26
- package/dist/features/curator/dashboard/components/NextStepButton.js.map +1 -1
- package/dist/features/curator/dashboard/components/NextStepButton.module.js +6 -5
- package/dist/features/curator/dashboard/components/NextStepButton.module.js.map +1 -1
- package/dist/features/curator/dashboard/components/NextStepButton.module.scss +28 -0
- package/dist/features/curator/dashboard/components/getExecutableTaskButtonState.d.ts +31 -0
- package/dist/features/curator/dashboard/components/getExecutableTaskButtonState.d.ts.map +1 -0
- package/dist/features/curator/dashboard/components/getExecutableTaskButtonState.js +32 -0
- package/dist/features/curator/dashboard/components/getExecutableTaskButtonState.js.map +1 -0
- package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js +213 -204
- package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.d.ts +0 -1
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js +19 -39
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksPage.d.ts +9 -3
- package/dist/features/entity/metadata-task/components/MetadataTasksPage.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksPage.js +37 -46
- package/dist/features/entity/metadata-task/components/MetadataTasksPage.js.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksPageRouter.d.ts +17 -0
- package/dist/features/entity/metadata-task/components/MetadataTasksPageRouter.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/components/MetadataTasksPageRouter.js +43 -0
- package/dist/features/entity/metadata-task/components/MetadataTasksPageRouter.js.map +1 -0
- package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js +27 -26
- package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js.map +1 -1
- package/dist/features/entity/metadata-task/create-task/CommonTaskFields.d.ts +16 -0
- package/dist/features/entity/metadata-task/create-task/CommonTaskFields.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/create-task/CommonTaskFields.js +64 -0
- package/dist/features/entity/metadata-task/create-task/CommonTaskFields.js.map +1 -0
- package/dist/features/entity/metadata-task/create-task/ComputeTaskForm.d.ts +41 -0
- package/dist/features/entity/metadata-task/create-task/ComputeTaskForm.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/create-task/ComputeTaskForm.js +165 -0
- package/dist/features/entity/metadata-task/create-task/ComputeTaskForm.js.map +1 -0
- package/dist/features/entity/metadata-task/create-task/CreateCurationTaskFlow.d.ts +18 -0
- package/dist/features/entity/metadata-task/create-task/CreateCurationTaskFlow.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/create-task/CreateCurationTaskFlow.js +78 -0
- package/dist/features/entity/metadata-task/create-task/CreateCurationTaskFlow.js.map +1 -0
- package/dist/features/entity/metadata-task/create-task/CreateTaskCategoryPicker.d.ts +10 -0
- package/dist/features/entity/metadata-task/create-task/CreateTaskCategoryPicker.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/create-task/CreateTaskCategoryPicker.js +40 -0
- package/dist/features/entity/metadata-task/create-task/CreateTaskCategoryPicker.js.map +1 -0
- package/dist/features/entity/metadata-task/create-task/CreateTaskConfirmation.d.ts +13 -0
- package/dist/features/entity/metadata-task/create-task/CreateTaskConfirmation.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/create-task/CreateTaskConfirmation.js +35 -0
- package/dist/features/entity/metadata-task/create-task/CreateTaskConfirmation.js.map +1 -0
- package/dist/features/entity/metadata-task/create-task/CurateTaskForm.d.ts +41 -0
- package/dist/features/entity/metadata-task/create-task/CurateTaskForm.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/create-task/CurateTaskForm.js +198 -0
- package/dist/features/entity/metadata-task/create-task/CurateTaskForm.js.map +1 -0
- package/dist/features/entity/metadata-task/create-task/EditCurationTaskPage.d.ts +8 -0
- package/dist/features/entity/metadata-task/create-task/EditCurationTaskPage.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/create-task/EditCurationTaskPage.js +29 -0
- package/dist/features/entity/metadata-task/create-task/EditCurationTaskPage.js.map +1 -0
- package/dist/features/entity/metadata-task/create-task/FileBasedFields.d.ts +13 -0
- package/dist/features/entity/metadata-task/create-task/FileBasedFields.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/create-task/FileBasedFields.js +65 -0
- package/dist/features/entity/metadata-task/create-task/FileBasedFields.js.map +1 -0
- package/dist/features/entity/metadata-task/create-task/ProjectSelectorField.d.ts +11 -0
- package/dist/features/entity/metadata-task/create-task/ProjectSelectorField.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/create-task/ProjectSelectorField.js +33 -0
- package/dist/features/entity/metadata-task/create-task/ProjectSelectorField.js.map +1 -0
- package/dist/features/entity/metadata-task/create-task/RecordBasedFields.d.ts +13 -0
- package/dist/features/entity/metadata-task/create-task/RecordBasedFields.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/create-task/RecordBasedFields.js +38 -0
- package/dist/features/entity/metadata-task/create-task/RecordBasedFields.js.map +1 -0
- package/dist/features/entity/metadata-task/create-task/RecordSetFields.d.ts +13 -0
- package/dist/features/entity/metadata-task/create-task/RecordSetFields.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/create-task/RecordSetFields.js +72 -0
- package/dist/features/entity/metadata-task/create-task/RecordSetFields.js.map +1 -0
- package/dist/features/entity/metadata-task/create-task/SampleSheetFields.d.ts +11 -0
- package/dist/features/entity/metadata-task/create-task/SampleSheetFields.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/create-task/SampleSheetFields.js +42 -0
- package/dist/features/entity/metadata-task/create-task/SampleSheetFields.js.map +1 -0
- package/dist/features/entity/metadata-task/create-task/TaskCategoryCard.d.ts +17 -0
- package/dist/features/entity/metadata-task/create-task/TaskCategoryCard.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/create-task/TaskCategoryCard.js +70 -0
- package/dist/features/entity/metadata-task/create-task/TaskCategoryCard.js.map +1 -0
- package/dist/features/entity/metadata-task/create-task/TaskFormActions.d.ts +23 -0
- package/dist/features/entity/metadata-task/create-task/TaskFormActions.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/create-task/TaskFormActions.js +68 -0
- package/dist/features/entity/metadata-task/create-task/TaskFormActions.js.map +1 -0
- package/dist/features/entity/metadata-task/create-task/TaskFormHeader.d.ts +17 -0
- package/dist/features/entity/metadata-task/create-task/TaskFormHeader.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/create-task/TaskFormHeader.js +33 -0
- package/dist/features/entity/metadata-task/create-task/TaskFormHeader.js.map +1 -0
- package/dist/features/entity/metadata-task/create-task/useCurationTaskFormState.d.ts +50 -0
- package/dist/features/entity/metadata-task/create-task/useCurationTaskFormState.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/create-task/useCurationTaskFormState.js +76 -0
- package/dist/features/entity/metadata-task/create-task/useCurationTaskFormState.js.map +1 -0
- package/dist/features/entity/metadata-task/create-task/utils/buildComputeTaskPayload.d.ts +36 -0
- package/dist/features/entity/metadata-task/create-task/utils/buildComputeTaskPayload.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/create-task/utils/buildComputeTaskPayload.js +31 -0
- package/dist/features/entity/metadata-task/create-task/utils/buildComputeTaskPayload.js.map +1 -0
- package/dist/features/entity/metadata-task/create-task/utils/buildCurateTaskPayload.d.ts +32 -0
- package/dist/features/entity/metadata-task/create-task/utils/buildCurateTaskPayload.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/create-task/utils/buildCurateTaskPayload.js +33 -0
- package/dist/features/entity/metadata-task/create-task/utils/buildCurateTaskPayload.js.map +1 -0
- package/dist/features/entity/metadata-task/create-task/utils/taskIdValidation.d.ts +10 -0
- package/dist/features/entity/metadata-task/create-task/utils/taskIdValidation.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/create-task/utils/taskIdValidation.js +13 -0
- package/dist/features/entity/metadata-task/create-task/utils/taskIdValidation.js.map +1 -0
- package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.js +24 -24
- package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.js +2 -2
- package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js +33 -32
- package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.js +24 -21
- package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.js.map +1 -1
- package/dist/features/entity/metadata-task/utils/constants.d.ts +84 -15
- package/dist/features/entity/metadata-task/utils/constants.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/utils/constants.js +47 -3
- package/dist/features/entity/metadata-task/utils/constants.js.map +1 -1
- package/dist/features/entity/metadata-task/utils/dueDate.d.ts +22 -0
- package/dist/features/entity/metadata-task/utils/dueDate.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/utils/dueDate.js +24 -0
- package/dist/features/entity/metadata-task/utils/dueDate.js.map +1 -0
- package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.d.ts +2 -2
- package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.js +5 -6
- package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.js.map +1 -1
- package/dist/features/entity/metadata-task/utils/getGridSourceIdForTask.d.ts +4 -4
- package/dist/features/entity/metadata-task/utils/getGridSourceIdForTask.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/utils/getGridSourceIdForTask.js +5 -6
- package/dist/features/entity/metadata-task/utils/getGridSourceIdForTask.js.map +1 -1
- package/dist/features/entity/metadata-task/utils/types.d.ts +12 -0
- package/dist/features/entity/metadata-task/utils/types.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/utils/types.js +18 -0
- package/dist/features/entity/metadata-task/utils/types.js.map +1 -0
- package/dist/mocks/curation/mockCurationTask.d.ts +6 -0
- package/dist/mocks/curation/mockCurationTask.d.ts.map +1 -1
- package/dist/mocks/curation/mockCurationTask.js +20 -3
- package/dist/mocks/curation/mockCurationTask.js.map +1 -1
- package/dist/mocks/msw/handlers/curationTaskExecutionHandlers.d.ts +16 -0
- package/dist/mocks/msw/handlers/curationTaskExecutionHandlers.d.ts.map +1 -0
- package/dist/mocks/msw/handlers/curationTaskExecutionHandlers.js +24 -0
- package/dist/mocks/msw/handlers/curationTaskExecutionHandlers.js.map +1 -0
- package/dist/synapse-client/SynapseClient.d.ts +7 -1
- package/dist/synapse-client/SynapseClient.d.ts.map +1 -1
- package/dist/synapse-client/SynapseClient.js +493 -482
- package/dist/synapse-client/SynapseClient.js.map +1 -1
- package/dist/synapse-client/index.js +3 -3
- package/dist/synapse-queries/curation/task/useCurationTask.d.ts +8 -1
- package/dist/synapse-queries/curation/task/useCurationTask.d.ts.map +1 -1
- package/dist/synapse-queries/curation/task/useCurationTask.js +48 -34
- package/dist/synapse-queries/curation/task/useCurationTask.js.map +1 -1
- package/dist/theme/palette/Palettes.js +2 -2
- package/dist/theme/palette/Palettes.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/AppUtils/session/useSessionManager.d.ts.map +1 -1
- package/dist/utils/AppUtils/session/useSessionManager.js +50 -48
- package/dist/utils/AppUtils/session/useSessionManager.js.map +1 -1
- package/dist/utils/SynapseConstants.d.ts +4 -1
- package/dist/utils/SynapseConstants.d.ts.map +1 -1
- package/dist/utils/SynapseConstants.js +86 -83
- package/dist/utils/SynapseConstants.js.map +1 -1
- package/dist/utils/featureflag/FeatureFlags.d.ts +2 -2
- 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/hooks/useDetectSSOCode.d.ts.map +1 -1
- package/dist/utils/hooks/useDetectSSOCode.js +37 -27
- package/dist/utils/hooks/useDetectSSOCode.js.map +1 -1
- package/package.json +5 -5
- package/dist/components/DataGrid/MergeGridWithSourceTableButton.d.ts +0 -8
- package/dist/components/DataGrid/MergeGridWithSourceTableButton.d.ts.map +0 -1
- package/dist/components/DataGrid/MergeGridWithSourceTableButton.js +0 -64
- package/dist/components/DataGrid/MergeGridWithSourceTableButton.js.map +0 -1
|
@@ -1,166 +1,35 @@
|
|
|
1
1
|
import { displayToast as e } from "../../../../components/ToastMessage/ToastMessage.js";
|
|
2
|
-
import t from "../../../../synapse-queries/entity/useEntityBundle.js";
|
|
3
2
|
import "../../../../components/index.js";
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import { useState as u } from "react";
|
|
12
|
-
import { Box as d, Card as f, Chip as p, Divider as m, IconButton as h, Skeleton as g, Typography as _ } from "@mui/material";
|
|
13
|
-
import { jsx as v, jsxs as y } from "react/jsx-runtime";
|
|
14
|
-
import b from "classnames";
|
|
15
|
-
import x from "@mui/icons-material/SettingsOutlined";
|
|
3
|
+
import { getComputeTaskConcreteType as t } from "../../../entity/metadata-task/utils/types.js";
|
|
4
|
+
import n from "./CurationTaskCard.module.js";
|
|
5
|
+
import r, { deriveCardFields as i } from "./CurationTaskCardLayout.js";
|
|
6
|
+
import a from "./NextStepButton.js";
|
|
7
|
+
import o from "./ExecutableTaskCard.js";
|
|
8
|
+
import s from "./GridTaskCard.js";
|
|
9
|
+
import { jsx as c } from "react/jsx-runtime";
|
|
16
10
|
//#region src/features/curator/dashboard/components/CurationTaskCard.tsx
|
|
17
|
-
function
|
|
18
|
-
let {
|
|
19
|
-
if (!
|
|
20
|
-
|
|
11
|
+
function l(l) {
|
|
12
|
+
let { taskBundle: u } = l;
|
|
13
|
+
if (!u.task || !u.status) throw Error("Task bundle is missing required properties");
|
|
14
|
+
let d = u.task.taskProperties?.concreteType;
|
|
15
|
+
if (t(u.task.taskProperties)) return /* @__PURE__ */ c(o, { taskBundle: u });
|
|
16
|
+
switch (d) {
|
|
21
17
|
case "org.sagebionetworks.repo.model.curation.metadata.FileBasedMetadataTaskProperties":
|
|
22
|
-
case "org.sagebionetworks.repo.model.curation.metadata.RecordBasedMetadataTaskProperties": return {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
};
|
|
35
|
-
default: console.error("No UI implemented for task type: " + t.task?.taskProperties?.concreteType);
|
|
18
|
+
case "org.sagebionetworks.repo.model.curation.metadata.RecordBasedMetadataTaskProperties": return /* @__PURE__ */ c(s, { taskBundle: u });
|
|
19
|
+
default: return console.error("No UI implemented for task type: " + d), /* @__PURE__ */ c(r, {
|
|
20
|
+
taskBundle: u,
|
|
21
|
+
...i(u.task),
|
|
22
|
+
taskType: "",
|
|
23
|
+
renderActionButton: ({ expanded: t }) => /* @__PURE__ */ c(a, {
|
|
24
|
+
className: n.cardButton,
|
|
25
|
+
buttonText: "Continue",
|
|
26
|
+
onClick: () => e("No action defined for this task type", "danger", { title: "Unexpected Error" }),
|
|
27
|
+
expanded: t
|
|
28
|
+
})
|
|
29
|
+
});
|
|
36
30
|
}
|
|
37
|
-
return {
|
|
38
|
-
title: t.task.dataType,
|
|
39
|
-
description: t.task.instructions ?? "",
|
|
40
|
-
taskId: t.task.taskId,
|
|
41
|
-
principalIds: t.task.assigneePrincipalId ? [t.task.assigneePrincipalId] : [],
|
|
42
|
-
buttonText: "Continue",
|
|
43
|
-
taskType: "",
|
|
44
|
-
statusState: t.status.state,
|
|
45
|
-
onClickNextStep: () => {
|
|
46
|
-
e("No action defined for this task type", "danger", { title: "Unexpected Error" });
|
|
47
|
-
},
|
|
48
|
-
isLoading: !1,
|
|
49
|
-
isPending: !1,
|
|
50
|
-
hasPermission: void 0
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
function C(e) {
|
|
54
|
-
let { label: t } = e;
|
|
55
|
-
return /* @__PURE__ */ v(p, {
|
|
56
|
-
sx: {
|
|
57
|
-
fontWeight: 600,
|
|
58
|
-
backgroundColor: "#BFD3ED"
|
|
59
|
-
},
|
|
60
|
-
label: t
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
function w(e) {
|
|
64
|
-
let { state: t } = e;
|
|
65
|
-
if (!t) return null;
|
|
66
|
-
let { label: n, backgroundColor: i } = r[t];
|
|
67
|
-
return /* @__PURE__ */ v(p, {
|
|
68
|
-
size: "small",
|
|
69
|
-
sx: {
|
|
70
|
-
fontWeight: 600,
|
|
71
|
-
backgroundColor: i
|
|
72
|
-
},
|
|
73
|
-
label: n
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
function T(r) {
|
|
77
|
-
let { taskBundle: i } = r, { title: p, description: T, taskId: E, taskType: D, principalIds: O, buttonText: k, statusState: A, onClickNextStep: j, hasPermission: M, isLoading: N, isPending: P } = S(i), [F, I] = u(!1), L = i.task?.projectId, { data: R } = t(L, void 0, {
|
|
78
|
-
includeEntity: !0,
|
|
79
|
-
includePermissions: !0
|
|
80
|
-
}), z = R?.permissions?.canEdit ?? !1;
|
|
81
|
-
function B() {
|
|
82
|
-
M ? j() : e(n, "danger");
|
|
83
|
-
}
|
|
84
|
-
return /* @__PURE__ */ y(f, {
|
|
85
|
-
className: b(c.card, o.card),
|
|
86
|
-
children: [/* @__PURE__ */ y("div", {
|
|
87
|
-
className: o.cardContent,
|
|
88
|
-
children: [
|
|
89
|
-
/* @__PURE__ */ y("div", {
|
|
90
|
-
className: o.mainContent,
|
|
91
|
-
children: [
|
|
92
|
-
/* @__PURE__ */ y("div", {
|
|
93
|
-
className: o.titleChipContainer,
|
|
94
|
-
children: [
|
|
95
|
-
/* @__PURE__ */ v(_, {
|
|
96
|
-
variant: "headline3",
|
|
97
|
-
children: p
|
|
98
|
-
}),
|
|
99
|
-
D && /* @__PURE__ */ v(C, { label: D }),
|
|
100
|
-
z && /* @__PURE__ */ v(h, {
|
|
101
|
-
onClick: () => I(!0),
|
|
102
|
-
"aria-label": "Task settings",
|
|
103
|
-
children: /* @__PURE__ */ v(x, {})
|
|
104
|
-
})
|
|
105
|
-
]
|
|
106
|
-
}),
|
|
107
|
-
/* @__PURE__ */ y(d, {
|
|
108
|
-
sx: {
|
|
109
|
-
display: "flex",
|
|
110
|
-
gap: 4
|
|
111
|
-
},
|
|
112
|
-
children: [R?.entity?.name ? /* @__PURE__ */ v(_, {
|
|
113
|
-
variant: "body1",
|
|
114
|
-
children: R.entity.name
|
|
115
|
-
}) : /* @__PURE__ */ v(g, { width: 100 }), E && /* @__PURE__ */ y(_, {
|
|
116
|
-
variant: "body1",
|
|
117
|
-
children: ["Task ID: ", E]
|
|
118
|
-
})]
|
|
119
|
-
}),
|
|
120
|
-
T && /* @__PURE__ */ v(_, {
|
|
121
|
-
variant: "body1",
|
|
122
|
-
children: T
|
|
123
|
-
}),
|
|
124
|
-
/* @__PURE__ */ v("div", {
|
|
125
|
-
className: o.userChipContainer,
|
|
126
|
-
children: O.map((e) => /* @__PURE__ */ v(l, { principalId: e }, e))
|
|
127
|
-
})
|
|
128
|
-
]
|
|
129
|
-
}),
|
|
130
|
-
/* @__PURE__ */ v(d, {
|
|
131
|
-
sx: {
|
|
132
|
-
display: "flex",
|
|
133
|
-
alignItems: "center"
|
|
134
|
-
},
|
|
135
|
-
children: /* @__PURE__ */ v(w, { state: A })
|
|
136
|
-
}),
|
|
137
|
-
/* @__PURE__ */ v(m, {
|
|
138
|
-
orientation: "vertical",
|
|
139
|
-
flexItem: !0,
|
|
140
|
-
sx: { display: {
|
|
141
|
-
xs: "none",
|
|
142
|
-
md: "block"
|
|
143
|
-
} }
|
|
144
|
-
}),
|
|
145
|
-
/* @__PURE__ */ v(s, {
|
|
146
|
-
className: o.cardButton,
|
|
147
|
-
buttonText: k,
|
|
148
|
-
onClick: B,
|
|
149
|
-
disabled: N,
|
|
150
|
-
loading: P
|
|
151
|
-
})
|
|
152
|
-
]
|
|
153
|
-
}), /* @__PURE__ */ v(a, {
|
|
154
|
-
open: F,
|
|
155
|
-
onCancel: () => I(!1),
|
|
156
|
-
onSuccess: () => I(!1),
|
|
157
|
-
onDeleteSuccess: () => I(!1),
|
|
158
|
-
projectId: L ?? "",
|
|
159
|
-
task: i.task
|
|
160
|
-
}, String(F))]
|
|
161
|
-
});
|
|
162
31
|
}
|
|
163
32
|
//#endregion
|
|
164
|
-
export {
|
|
33
|
+
export { l as default };
|
|
165
34
|
|
|
166
35
|
//# sourceMappingURL=CurationTaskCard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CurationTaskCard.js","names":[],"sources":["../../../../../src/features/curator/dashboard/components/CurationTaskCard.tsx"],"sourcesContent":["import { displayToast } from '@/components'\nimport
|
|
1
|
+
{"version":3,"file":"CurationTaskCard.js","names":[],"sources":["../../../../../src/features/curator/dashboard/components/CurationTaskCard.tsx"],"sourcesContent":["import { displayToast } from '@/components'\nimport { getComputeTaskConcreteType } from '@/features/entity/metadata-task/utils/types'\nimport { TaskBundle } from '@sage-bionetworks/synapse-client'\nimport CurationTaskCardLayout, {\n deriveCardFields,\n} from './CurationTaskCardLayout'\nimport ExecutableTaskCard from './ExecutableTaskCard'\nimport GridTaskCard from './GridTaskCard'\nimport NextStepButton from './NextStepButton'\nimport styles from './CurationTaskCard.module.scss'\n\nexport type CurationTaskCardProps = {\n taskBundle: TaskBundle\n}\n\n/**\n * Card component for displaying a curation task on the curator dashboard. Dispatches to the card\n * variant appropriate for the task's type: an executable (Compute Data) task, a grid-supported\n * (Curate Data) task, or a fallback for unrecognized types.\n */\nexport default function CurationTaskCard(props: CurationTaskCardProps) {\n const { taskBundle } = props\n\n if (!taskBundle.task || !taskBundle.status) {\n throw new Error('Task bundle is missing required properties')\n }\n\n const concreteType = taskBundle.task.taskProperties?.concreteType\n\n if (getComputeTaskConcreteType(taskBundle.task.taskProperties)) {\n return <ExecutableTaskCard taskBundle={taskBundle} />\n }\n\n switch (concreteType) {\n case 'org.sagebionetworks.repo.model.curation.metadata.FileBasedMetadataTaskProperties':\n case 'org.sagebionetworks.repo.model.curation.metadata.RecordBasedMetadataTaskProperties':\n return <GridTaskCard taskBundle={taskBundle} />\n default:\n console.error('No UI implemented for task type: ' + concreteType)\n return (\n <CurationTaskCardLayout\n taskBundle={taskBundle}\n {...deriveCardFields(taskBundle.task)}\n taskType=\"\"\n renderActionButton={({ expanded }) => (\n <NextStepButton\n className={styles.cardButton}\n buttonText=\"Continue\"\n onClick={() =>\n displayToast('No action defined for this task type', 'danger', {\n title: 'Unexpected Error',\n })\n }\n expanded={expanded}\n />\n )}\n />\n )\n }\n}\n"],"mappings":";;;;;;;;;;AAoBA,SAAwB,EAAiB,GAA8B;CACrE,IAAM,EAAE,kBAAe;CAEvB,IAAI,CAAC,EAAW,QAAQ,CAAC,EAAW,QAClC,MAAU,MAAM,4CAA4C;CAG9D,IAAM,IAAe,EAAW,KAAK,gBAAgB;CAErD,IAAI,EAA2B,EAAW,KAAK,cAAc,GAC3D,OAAO,kBAAC,GAAD,EAAgC,cAAa,CAAA;CAGtD,QAAQ,GAAR;EACE,KAAK;EACL,KAAK,sFACH,OAAO,kBAAC,GAAD,EAA0B,cAAa,CAAA;EAChD,SAEE,OADA,QAAQ,MAAM,sCAAsC,CAAY,GAE9D,kBAAC,GAAD;GACc;GACZ,GAAI,EAAiB,EAAW,IAAI;GACpC,UAAS;GACT,qBAAqB,EAAE,kBACrB,kBAAC,GAAD;IACE,WAAW,EAAO;IAClB,YAAW;IACX,eACE,EAAa,wCAAwC,UAAU,EAC7D,OAAO,mBACT,CAAC;IAEO;GACX,CAAA;EAEJ,CAAA;CAEP;AACF"}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import './CurationTaskCard.css';var e = {
|
|
2
|
-
card: "
|
|
3
|
-
cardContent: "
|
|
4
|
-
mainContent: "
|
|
5
|
-
titleChipContainer: "
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
card: "_card_pb0lb_1",
|
|
3
|
+
cardContent: "_cardContent_pb0lb_5",
|
|
4
|
+
mainContent: "_mainContent_pb0lb_18",
|
|
5
|
+
titleChipContainer: "_titleChipContainer_pb0lb_26",
|
|
6
|
+
title: "_title_pb0lb_26",
|
|
7
|
+
entityInfo: "_entityInfo_pb0lb_47",
|
|
8
|
+
statusContainer: "_statusContainer_pb0lb_52",
|
|
9
|
+
expandedContent: "_expandedContent_pb0lb_59",
|
|
10
|
+
userChipContainer: "_userChipContainer_pb0lb_69",
|
|
11
|
+
buttonContainer: "_buttonContainer_pb0lb_77"
|
|
8
12
|
};
|
|
9
13
|
//#endregion
|
|
10
14
|
export { e as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CurationTaskCard.module.js","names":[],"sources":["../../../../../src/features/curator/dashboard/components/CurationTaskCard.module.scss"],"sourcesContent":[".card:global(.MuiCard-root) {\n background-color: #f5f8fa;\n}\n\n.cardContent {\n display: flex;\n flex-direction: row;\n margin-bottom: 16px;\n gap: 24px;\n align-items: stretch;\n\n @media (max-width: 768px) {\n flex-direction: column;\n }\n}\n\n.mainContent {\n display: flex;\n flex-direction: column;\n gap: 16px;\n flex-grow: 1;\n}\n\n.titleChipContainer {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 16px;\n align-items: center;\n @media (max-width: 768px) {\n flex-direction: column;\n align-items: flex-start;\n }\n}\n\n.userChipContainer {\n display: flex;\n flex-direction: row;\n gap: 16px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.buttonContainer {\n display: flex;\n flex-grow: 0;\n flex-shrink: 0;\n margin-left: auto;\n @media (max-width: 768px) {\n margin-left: 0;\n }\n}\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"CurationTaskCard.module.js","names":[],"sources":["../../../../../src/features/curator/dashboard/components/CurationTaskCard.module.scss"],"sourcesContent":[".card:global(.MuiCard-root) {\n background-color: #f5f8fa;\n}\n\n.cardContent {\n display: flex;\n flex-direction: row;\n margin-bottom: 16px;\n gap: 24px;\n align-items: stretch;\n\n @media (max-width: 768px) {\n flex-direction: column;\n }\n}\n\n.mainContent {\n display: flex;\n flex-direction: column;\n gap: 16px;\n flex-grow: 1;\n flex: 1;\n}\n\n.titleChipContainer {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 16px;\n align-items: center;\n @media (max-width: 768px) {\n flex-direction: column;\n align-items: flex-start;\n }\n}\n\n.title {\n cursor: pointer;\n\n &:hover {\n text-decoration: underline;\n }\n}\n\n.entityInfo {\n display: flex;\n gap: 16px;\n}\n\n.statusContainer {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n}\n\n.expandedContent {\n background-color: #fff;\n padding: 16px;\n margin: 16px;\n border-radius: 4px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.userChipContainer {\n display: flex;\n flex-direction: row;\n gap: 16px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.buttonContainer {\n display: flex;\n flex-grow: 0;\n flex-shrink: 0;\n margin-left: auto;\n @media (max-width: 768px) {\n margin-left: 0;\n }\n}\n"],"mappings":""}
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
flex-direction: column;
|
|
20
20
|
gap: 16px;
|
|
21
21
|
flex-grow: 1;
|
|
22
|
+
flex: 1;
|
|
22
23
|
}
|
|
23
24
|
|
|
24
25
|
.titleChipContainer {
|
|
@@ -33,6 +34,36 @@
|
|
|
33
34
|
}
|
|
34
35
|
}
|
|
35
36
|
|
|
37
|
+
.title {
|
|
38
|
+
cursor: pointer;
|
|
39
|
+
|
|
40
|
+
&:hover {
|
|
41
|
+
text-decoration: underline;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.entityInfo {
|
|
46
|
+
display: flex;
|
|
47
|
+
gap: 16px;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.statusContainer {
|
|
51
|
+
display: flex;
|
|
52
|
+
flex-direction: column;
|
|
53
|
+
align-items: flex-start;
|
|
54
|
+
gap: 8px;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.expandedContent {
|
|
58
|
+
background-color: #fff;
|
|
59
|
+
padding: 16px;
|
|
60
|
+
margin: 16px;
|
|
61
|
+
border-radius: 4px;
|
|
62
|
+
display: flex;
|
|
63
|
+
flex-direction: column;
|
|
64
|
+
gap: 16px;
|
|
65
|
+
}
|
|
66
|
+
|
|
36
67
|
.userChipContainer {
|
|
37
68
|
display: flex;
|
|
38
69
|
flex-direction: row;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { TaskBundle } from '@sage-bionetworks/synapse-client';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
export type CurationTaskCardLayoutProps = {
|
|
4
|
+
taskBundle: TaskBundle;
|
|
5
|
+
title: string;
|
|
6
|
+
description: string;
|
|
7
|
+
taskType: string;
|
|
8
|
+
principalIds: string[];
|
|
9
|
+
/** Renders the action button. `expanded` reflects whether the card is in its expanded layout. */
|
|
10
|
+
renderActionButton: (props: {
|
|
11
|
+
expanded: boolean;
|
|
12
|
+
}) => ReactNode;
|
|
13
|
+
};
|
|
14
|
+
/** Derives the fields shared by every card variant from a task's common properties. */
|
|
15
|
+
export declare function deriveCardFields(task: TaskBundle['task']): {
|
|
16
|
+
title: string;
|
|
17
|
+
description: string;
|
|
18
|
+
principalIds: string[];
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Shared presentational chrome for a curation task card: title, chips, entity info, assignees,
|
|
22
|
+
* status/due date, and an action button slot. Both the grid and executable task cards compose this.
|
|
23
|
+
*/
|
|
24
|
+
export default function CurationTaskCardLayout(props: CurationTaskCardLayoutProps): import("react/jsx-runtime").JSX.Element;
|
|
25
|
+
//# sourceMappingURL=CurationTaskCardLayout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CurationTaskCardLayout.d.ts","sourceRoot":"","sources":["../../../../../src/features/curator/dashboard/components/CurationTaskCardLayout.tsx"],"names":[],"mappings":"AASA,OAAO,EACL,UAAU,EAEX,MAAM,kCAAkC,CAAA;AAEzC,OAAO,EAAE,SAAS,EAAY,MAAM,OAAO,CAAA;AA+D3C,MAAM,MAAM,2BAA2B,GAAG;IACxC,UAAU,EAAE,UAAU,CAAA;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,iGAAiG;IACjG,kBAAkB,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,KAAK,SAAS,CAAA;CAChE,CAAA;AAED,uFAAuF;AACvF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC;;;;EAMxD;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAC5C,KAAK,EAAE,2BAA2B,2CAqFnC"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import e from "../../../../synapse-queries/entity/useEntityBundle.js";
|
|
2
|
+
import { TASK_STATUS_CONFIG as t } from "../../../entity/metadata-task/utils/constants.js";
|
|
3
|
+
import { parseDueDate as n } from "../../../entity/metadata-task/utils/dueDate.js";
|
|
4
|
+
import r from "./CurationTaskCard.module.js";
|
|
5
|
+
import i from "./shared.module.js";
|
|
6
|
+
import a from "./UserOrTeamChip.js";
|
|
7
|
+
import { useState as o } from "react";
|
|
8
|
+
import { Card as s, Chip as c, Collapse as l, Divider as u, IconButton as d, Skeleton as f, Typography as p } from "@mui/material";
|
|
9
|
+
import { Fragment as m, jsx as h, jsxs as g } from "react/jsx-runtime";
|
|
10
|
+
import { useNavigate as _ } from "react-router";
|
|
11
|
+
import v from "dayjs";
|
|
12
|
+
import y from "dayjs/plugin/utc";
|
|
13
|
+
import b from "classnames";
|
|
14
|
+
import x from "@mui/icons-material/SettingsOutlined";
|
|
15
|
+
//#region src/features/curator/dashboard/components/CurationTaskCardLayout.tsx
|
|
16
|
+
v.extend(y);
|
|
17
|
+
function S(e) {
|
|
18
|
+
let { label: t } = e;
|
|
19
|
+
return /* @__PURE__ */ h(c, {
|
|
20
|
+
sx: {
|
|
21
|
+
fontWeight: 600,
|
|
22
|
+
backgroundColor: "#BFD3ED"
|
|
23
|
+
},
|
|
24
|
+
label: t
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
function C(e) {
|
|
28
|
+
let { state: n } = e;
|
|
29
|
+
if (!n) return null;
|
|
30
|
+
let { label: r, backgroundColor: i } = t[n];
|
|
31
|
+
return /* @__PURE__ */ h(c, {
|
|
32
|
+
size: "small",
|
|
33
|
+
sx: {
|
|
34
|
+
fontWeight: 600,
|
|
35
|
+
backgroundColor: i
|
|
36
|
+
},
|
|
37
|
+
label: r
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
function w(e) {
|
|
41
|
+
let { dueDate: t } = e, r = n(t);
|
|
42
|
+
if (!r) return null;
|
|
43
|
+
let i = r.diff(v.utc().startOf("day"), "day"), a = r.format("MM/DD/YY"), o = "#E0E0E0";
|
|
44
|
+
return i < 0 ? o = "#FFCDD2" : i < 30 && (o = "#FFF9C4"), /* @__PURE__ */ h(c, {
|
|
45
|
+
size: "small",
|
|
46
|
+
sx: {
|
|
47
|
+
fontWeight: 600,
|
|
48
|
+
backgroundColor: o
|
|
49
|
+
},
|
|
50
|
+
label: `Due ${a}`
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
function T(e) {
|
|
54
|
+
return {
|
|
55
|
+
title: e?.dataType ?? "",
|
|
56
|
+
description: e?.instructions ?? "",
|
|
57
|
+
principalIds: e?.assigneePrincipalId ? [e.assigneePrincipalId] : []
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
function E(t) {
|
|
61
|
+
let { taskBundle: n, title: c, description: v, taskType: y, principalIds: T, renderActionButton: E } = t, D = _(), [O, k] = o(!1), A = n.task?.taskId, j = n.task?.projectId, { data: M } = e(j, void 0, {
|
|
62
|
+
includeEntity: !0,
|
|
63
|
+
includePermissions: !0
|
|
64
|
+
}), N = M?.permissions?.canEdit ?? !1;
|
|
65
|
+
return /* @__PURE__ */ g(s, {
|
|
66
|
+
className: b(i.card, r.card),
|
|
67
|
+
children: [/* @__PURE__ */ g("div", {
|
|
68
|
+
className: r.cardContent,
|
|
69
|
+
children: [
|
|
70
|
+
/* @__PURE__ */ g("div", {
|
|
71
|
+
className: r.mainContent,
|
|
72
|
+
children: [
|
|
73
|
+
/* @__PURE__ */ g("div", {
|
|
74
|
+
className: r.titleChipContainer,
|
|
75
|
+
children: [
|
|
76
|
+
/* @__PURE__ */ h(p, {
|
|
77
|
+
variant: "headline3",
|
|
78
|
+
className: r.title,
|
|
79
|
+
onClick: () => k(!O),
|
|
80
|
+
children: c
|
|
81
|
+
}),
|
|
82
|
+
y && /* @__PURE__ */ h(S, { label: y }),
|
|
83
|
+
N && /* @__PURE__ */ h(d, {
|
|
84
|
+
onClick: () => void D(`edit/${A}`),
|
|
85
|
+
"aria-label": "Task settings",
|
|
86
|
+
children: /* @__PURE__ */ h(x, {})
|
|
87
|
+
})
|
|
88
|
+
]
|
|
89
|
+
}),
|
|
90
|
+
/* @__PURE__ */ g("div", {
|
|
91
|
+
className: r.entityInfo,
|
|
92
|
+
children: [M?.entity?.name ? /* @__PURE__ */ h(p, {
|
|
93
|
+
variant: "body1",
|
|
94
|
+
children: M.entity.name
|
|
95
|
+
}) : /* @__PURE__ */ h(f, { width: 100 }), A && /* @__PURE__ */ g(p, {
|
|
96
|
+
variant: "body1",
|
|
97
|
+
children: ["Task ID: ", A]
|
|
98
|
+
})]
|
|
99
|
+
}),
|
|
100
|
+
/* @__PURE__ */ h("div", {
|
|
101
|
+
className: r.userChipContainer,
|
|
102
|
+
children: T.map((e) => /* @__PURE__ */ h(a, { principalId: e }, e))
|
|
103
|
+
})
|
|
104
|
+
]
|
|
105
|
+
}),
|
|
106
|
+
/* @__PURE__ */ g("div", {
|
|
107
|
+
className: r.statusContainer,
|
|
108
|
+
children: [/* @__PURE__ */ h(C, { state: n.status?.state }), /* @__PURE__ */ h(w, { dueDate: n.status?.dueDate })]
|
|
109
|
+
}),
|
|
110
|
+
!O && /* @__PURE__ */ g(m, { children: [/* @__PURE__ */ h(u, {
|
|
111
|
+
orientation: "vertical",
|
|
112
|
+
flexItem: !0,
|
|
113
|
+
sx: { display: {
|
|
114
|
+
xs: "none",
|
|
115
|
+
md: "block"
|
|
116
|
+
} }
|
|
117
|
+
}), E({ expanded: !1 })] })
|
|
118
|
+
]
|
|
119
|
+
}), /* @__PURE__ */ h(l, {
|
|
120
|
+
in: O,
|
|
121
|
+
children: /* @__PURE__ */ g("div", {
|
|
122
|
+
className: r.expandedContent,
|
|
123
|
+
children: [v && /* @__PURE__ */ h(p, {
|
|
124
|
+
variant: "body1",
|
|
125
|
+
children: v
|
|
126
|
+
}), E({ expanded: !0 })]
|
|
127
|
+
})
|
|
128
|
+
})]
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
//#endregion
|
|
132
|
+
export { E as default, T as deriveCardFields };
|
|
133
|
+
|
|
134
|
+
//# sourceMappingURL=CurationTaskCardLayout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CurationTaskCardLayout.js","names":[],"sources":["../../../../../src/features/curator/dashboard/components/CurationTaskCardLayout.tsx"],"sourcesContent":["import {\n Card,\n Chip,\n Collapse,\n Divider,\n IconButton,\n Skeleton,\n Typography,\n} from '@mui/material'\nimport {\n TaskBundle,\n TaskStatusStateEnum,\n} from '@sage-bionetworks/synapse-client'\nimport classNames from 'classnames'\nimport { ReactNode, useState } from 'react'\nimport { useNavigate } from 'react-router'\nimport dayjs from 'dayjs'\nimport utc from 'dayjs/plugin/utc'\nimport SettingsOutlinedIcon from '@mui/icons-material/SettingsOutlined'\nimport useGetEntityBundle from '@/synapse-queries/entity/useEntityBundle'\nimport { TASK_STATUS_CONFIG } from '@/features/entity/metadata-task/utils/constants'\nimport { parseDueDate } from '@/features/entity/metadata-task/utils/dueDate'\nimport styles from './CurationTaskCard.module.scss'\nimport sharedStyles from './shared.module.scss'\nimport UserOrTeamChip from './UserOrTeamChip'\n\ndayjs.extend(utc)\n\nfunction TaskTypeChip(props: { label: string }) {\n const { label } = props\n return (\n <Chip sx={{ fontWeight: 600, backgroundColor: '#BFD3ED' }} label={label} />\n )\n}\n\n/**\n * A chip to display CurationTask status.\n *\n * See {@link https://www.figma.com/design/0oPm5lLSUva8kyfVNMS6FA/Sage-Style---Component-Library--SDS-?node-id=4942-1129&m=dev}\n */\nfunction TaskStatusChip(props: { state: TaskStatusStateEnum | undefined }) {\n const { state } = props\n if (!state) return null\n const { label, backgroundColor } = TASK_STATUS_CONFIG[state]\n return (\n <Chip\n size=\"small\"\n sx={{ fontWeight: 600, backgroundColor }}\n label={label}\n />\n )\n}\n\nfunction DueDateChip(props: { dueDate: string | undefined }) {\n const { dueDate } = props\n const dueDateObj = parseDueDate(dueDate)\n if (!dueDateObj) return null\n\n const daysUntilDue = dueDateObj.diff(dayjs.utc().startOf('day'), 'day')\n const formattedDate = dueDateObj.format('MM/DD/YY')\n\n let backgroundColor = '#E0E0E0'\n if (daysUntilDue < 0) {\n backgroundColor = '#FFCDD2'\n } else if (daysUntilDue < 30) {\n backgroundColor = '#FFF9C4'\n }\n\n return (\n <Chip\n size=\"small\"\n sx={{ fontWeight: 600, backgroundColor }}\n label={`Due ${formattedDate}`}\n />\n )\n}\n\nexport type CurationTaskCardLayoutProps = {\n taskBundle: TaskBundle\n title: string\n description: string\n taskType: string\n principalIds: string[]\n /** Renders the action button. `expanded` reflects whether the card is in its expanded layout. */\n renderActionButton: (props: { expanded: boolean }) => ReactNode\n}\n\n/** Derives the fields shared by every card variant from a task's common properties. */\nexport function deriveCardFields(task: TaskBundle['task']) {\n return {\n title: task?.dataType ?? '',\n description: task?.instructions ?? '',\n principalIds: task?.assigneePrincipalId ? [task.assigneePrincipalId] : [],\n }\n}\n\n/**\n * Shared presentational chrome for a curation task card: title, chips, entity info, assignees,\n * status/due date, and an action button slot. Both the grid and executable task cards compose this.\n */\nexport default function CurationTaskCardLayout(\n props: CurationTaskCardLayoutProps,\n) {\n const {\n taskBundle,\n title,\n description,\n taskType,\n principalIds,\n renderActionButton,\n } = props\n\n const navigate = useNavigate()\n const [isExpanded, setIsExpanded] = useState(false)\n\n const taskId = taskBundle.task?.taskId\n const projectId = taskBundle.task?.projectId\n const { data: bundle } = useGetEntityBundle(projectId, undefined, {\n includeEntity: true,\n includePermissions: true,\n })\n const canEdit = bundle?.permissions?.canEdit ?? false\n\n return (\n <Card className={classNames(sharedStyles.card, styles.card)}>\n <div className={styles.cardContent}>\n <div className={styles.mainContent}>\n <div className={styles.titleChipContainer}>\n <Typography\n variant=\"headline3\"\n className={styles.title}\n onClick={() => setIsExpanded(!isExpanded)}\n >\n {title}\n </Typography>\n {taskType && <TaskTypeChip label={taskType} />}\n {canEdit && (\n <IconButton\n onClick={() => void navigate(`edit/${taskId}`)}\n aria-label=\"Task settings\"\n >\n <SettingsOutlinedIcon />\n </IconButton>\n )}\n </div>\n <div className={styles.entityInfo}>\n {bundle?.entity?.name ? (\n <Typography variant=\"body1\">{bundle.entity.name}</Typography>\n ) : (\n <Skeleton width={100} />\n )}\n {taskId && (\n <Typography variant=\"body1\">Task ID: {taskId}</Typography>\n )}\n </div>\n <div className={styles.userChipContainer}>\n {principalIds.map(principalId => (\n <UserOrTeamChip key={principalId} principalId={principalId} />\n ))}\n </div>\n </div>\n <div className={styles.statusContainer}>\n <TaskStatusChip state={taskBundle.status?.state} />\n <DueDateChip dueDate={taskBundle.status?.dueDate} />\n </div>\n {!isExpanded && (\n <>\n <Divider\n orientation=\"vertical\"\n flexItem\n sx={{ display: { xs: 'none', md: 'block' } }}\n />\n {renderActionButton({ expanded: false })}\n </>\n )}\n </div>\n <Collapse in={isExpanded}>\n <div className={styles.expandedContent}>\n {description && (\n <Typography variant=\"body1\">{description}</Typography>\n )}\n {renderActionButton({ expanded: true })}\n </div>\n </Collapse>\n </Card>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;AA0BA,EAAM,OAAO,CAAG;AAEhB,SAAS,EAAa,GAA0B;CAC9C,IAAM,EAAE,aAAU;CAClB,OACE,kBAAC,GAAD;EAAM,IAAI;GAAE,YAAY;GAAK,iBAAiB;EAAU;EAAU;CAAQ,CAAA;AAE9E;AAOA,SAAS,EAAe,GAAmD;CACzE,IAAM,EAAE,aAAU;CAClB,IAAI,CAAC,GAAO,OAAO;CACnB,IAAM,EAAE,UAAO,uBAAoB,EAAmB;CACtD,OACE,kBAAC,GAAD;EACE,MAAK;EACL,IAAI;GAAE,YAAY;GAAK;EAAgB;EAChC;CACR,CAAA;AAEL;AAEA,SAAS,EAAY,GAAwC;CAC3D,IAAM,EAAE,eAAY,GACd,IAAa,EAAa,CAAO;CACvC,IAAI,CAAC,GAAY,OAAO;CAExB,IAAM,IAAe,EAAW,KAAK,EAAM,IAAI,EAAE,QAAQ,KAAK,GAAG,KAAK,GAChE,IAAgB,EAAW,OAAO,UAAU,GAE9C,IAAkB;CAOtB,OANI,IAAe,IACjB,IAAkB,YACT,IAAe,OACxB,IAAkB,YAIlB,kBAAC,GAAD;EACE,MAAK;EACL,IAAI;GAAE,YAAY;GAAK;EAAgB;EACvC,OAAO,OAAO;CACf,CAAA;AAEL;AAaA,SAAgB,EAAiB,GAA0B;CACzD,OAAO;EACL,OAAO,GAAM,YAAY;EACzB,aAAa,GAAM,gBAAgB;EACnC,cAAc,GAAM,sBAAsB,CAAC,EAAK,mBAAmB,IAAI,CAAC;CAC1E;AACF;AAMA,SAAwB,EACtB,GACA;CACA,IAAM,EACJ,eACA,UACA,gBACA,aACA,iBACA,0BACE,GAEE,IAAW,EAAY,GACvB,CAAC,GAAY,KAAiB,EAAS,EAAK,GAE5C,IAAS,EAAW,MAAM,QAC1B,IAAY,EAAW,MAAM,WAC7B,EAAE,MAAM,MAAW,EAAmB,GAAW,KAAA,GAAW;EAChE,eAAe;EACf,oBAAoB;CACtB,CAAC,GACK,IAAU,GAAQ,aAAa,WAAW;CAEhD,OACE,kBAAC,GAAD;EAAM,WAAW,EAAW,EAAa,MAAM,EAAO,IAAI;YAA1D,CACE,kBAAC,OAAD;GAAK,WAAW,EAAO;aAAvB;IACE,kBAAC,OAAD;KAAK,WAAW,EAAO;eAAvB;MACE,kBAAC,OAAD;OAAK,WAAW,EAAO;iBAAvB;QACE,kBAAC,GAAD;SACE,SAAQ;SACR,WAAW,EAAO;SAClB,eAAe,EAAc,CAAC,CAAU;mBAEvC;QACS,CAAA;QACX,KAAY,kBAAC,GAAD,EAAc,OAAO,EAAW,CAAA;QAC5C,KACC,kBAAC,GAAD;SACE,eAAe,KAAK,EAAS,QAAQ,GAAQ;SAC7C,cAAW;mBAEX,kBAAC,GAAD,CAAuB,CAAA;QACb,CAAA;OAEX;;MACL,kBAAC,OAAD;OAAK,WAAW,EAAO;iBAAvB,CACG,GAAQ,QAAQ,OACf,kBAAC,GAAD;QAAY,SAAQ;kBAAS,EAAO,OAAO;OAAiB,CAAA,IAE5D,kBAAC,GAAD,EAAU,OAAO,IAAM,CAAA,GAExB,KACC,kBAAC,GAAD;QAAY,SAAQ;kBAApB,CAA4B,aAAU,CAAmB;SAExD;;MACL,kBAAC,OAAD;OAAK,WAAW,EAAO;iBACpB,EAAa,KAAI,MAChB,kBAAC,GAAD,EAA+C,eAAc,GAAxC,CAAwC,CAC9D;MACE,CAAA;KACF;;IACL,kBAAC,OAAD;KAAK,WAAW,EAAO;eAAvB,CACE,kBAAC,GAAD,EAAgB,OAAO,EAAW,QAAQ,MAAQ,CAAA,GAClD,kBAAC,GAAD,EAAa,SAAS,EAAW,QAAQ,QAAU,CAAA,CAChD;;IACJ,CAAC,KACA,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;KACE,aAAY;KACZ,UAAA;KACA,IAAI,EAAE,SAAS;MAAE,IAAI;MAAQ,IAAI;KAAQ,EAAE;IAC5C,CAAA,GACA,EAAmB,EAAE,UAAU,GAAM,CAAC,CACvC,EAAA,CAAA;GAED;MACL,kBAAC,GAAD;GAAU,IAAI;aACZ,kBAAC,OAAD;IAAK,WAAW,EAAO;cAAvB,CACG,KACC,kBAAC,GAAD;KAAY,SAAQ;eAAS;IAAwB,CAAA,GAEtD,EAAmB,EAAE,UAAU,GAAK,CAAC,CACnC;;EACG,CAAA,CACN;;AAEV"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { TaskBundle } from '@sage-bionetworks/synapse-client';
|
|
2
|
+
export type ExecutableTaskCardProps = {
|
|
3
|
+
taskBundle: TaskBundle;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Card for an executable (Compute Data) curation task. Lets an authorized user run the task's agent
|
|
7
|
+
* and, once finished, navigate to the destination task where the generated output was written.
|
|
8
|
+
*/
|
|
9
|
+
export default function ExecutableTaskCard(props: ExecutableTaskCardProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
//# sourceMappingURL=ExecutableTaskCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExecutableTaskCard.d.ts","sourceRoot":"","sources":["../../../../../src/features/curator/dashboard/components/ExecutableTaskCard.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAS7D,MAAM,MAAM,uBAAuB,GAAG;IACpC,UAAU,EAAE,UAAU,CAAA;CACvB,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,2CAwExE"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { displayToast as e } from "../../../../components/ToastMessage/ToastMessage.js";
|
|
2
|
+
import { GRID_PAGE_TASK_ID_QUERY_PARAM as t } from "../../../../utils/SynapseConstants.js";
|
|
3
|
+
import n from "../../../../synapse-queries/entity/useEntityBundle.js";
|
|
4
|
+
import { useGetCurrentUserProfile as r } from "../../../../synapse-queries/user/useUserBundle.js";
|
|
5
|
+
import { useGetIsPrincipalIdUserOrMemberOfTeam as i } from "../../../../synapse-queries/team/useTeamMembers.js";
|
|
6
|
+
import "../../../../components/index.js";
|
|
7
|
+
import { useExecuteCurationTask as a } from "../../../../synapse-queries/curation/task/useCurationTask.js";
|
|
8
|
+
import o from "./CurationTaskCard.module.js";
|
|
9
|
+
import s, { deriveCardFields as c } from "./CurationTaskCardLayout.js";
|
|
10
|
+
import { getExecutableTaskButtonState as l } from "./getExecutableTaskButtonState.js";
|
|
11
|
+
import u from "./NextStepButton.js";
|
|
12
|
+
import { jsx as d } from "react/jsx-runtime";
|
|
13
|
+
import { useSearchParams as f } from "react-router";
|
|
14
|
+
//#region src/features/curator/dashboard/components/ExecutableTaskCard.tsx
|
|
15
|
+
function p(p) {
|
|
16
|
+
let { taskBundle: m } = p, h = m.task, g = h.taskProperties, _ = g && "destinationTaskId" in g ? g.destinationTaskId : void 0, [, v] = f(), { data: y } = n(h.projectId, void 0, {
|
|
17
|
+
includeEntity: !0,
|
|
18
|
+
includePermissions: !0
|
|
19
|
+
}), b = y?.permissions?.canEdit ?? !1, { data: x } = r(), { data: S } = i(x?.ownerId ?? "", h.assigneePrincipalId ?? "", { enabled: !!x?.ownerId && !!h.assigneePrincipalId }), C = b || !!S, { mutate: w, isPending: T } = a({ onError: (t) => e(t.message, "danger") }), E = l({
|
|
20
|
+
state: m.status?.state,
|
|
21
|
+
canExecute: C,
|
|
22
|
+
isExecutePending: T,
|
|
23
|
+
destinationTaskId: _
|
|
24
|
+
}), { title: D, description: O, principalIds: k } = c(h);
|
|
25
|
+
function A() {
|
|
26
|
+
E.action === "start" ? w(h.taskId) : E.action === "viewResult" && _ && v((e) => {
|
|
27
|
+
let n = new URLSearchParams(e);
|
|
28
|
+
return n.set(t, String(_)), n;
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
return /* @__PURE__ */ d(s, {
|
|
32
|
+
taskBundle: m,
|
|
33
|
+
title: D,
|
|
34
|
+
description: O,
|
|
35
|
+
taskType: "Compute",
|
|
36
|
+
principalIds: k,
|
|
37
|
+
renderActionButton: ({ expanded: e }) => /* @__PURE__ */ d(u, {
|
|
38
|
+
className: o.cardButton,
|
|
39
|
+
buttonText: E.buttonText,
|
|
40
|
+
onClick: A,
|
|
41
|
+
disabled: E.disabled,
|
|
42
|
+
loading: E.loading,
|
|
43
|
+
tooltip: E.tooltip,
|
|
44
|
+
expanded: e
|
|
45
|
+
})
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
//#endregion
|
|
49
|
+
export { p as default };
|
|
50
|
+
|
|
51
|
+
//# sourceMappingURL=ExecutableTaskCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExecutableTaskCard.js","names":[],"sources":["../../../../../src/features/curator/dashboard/components/ExecutableTaskCard.tsx"],"sourcesContent":["import { displayToast } from '@/components'\nimport { useExecuteCurationTask } from '@/synapse-queries/curation/task/useCurationTask'\nimport useGetEntityBundle from '@/synapse-queries/entity/useEntityBundle'\nimport { useGetIsPrincipalIdUserOrMemberOfTeam } from '@/synapse-queries/team/useTeamMembers'\nimport { useGetCurrentUserProfile } from '@/synapse-queries/user/useUserBundle'\nimport { GRID_PAGE_TASK_ID_QUERY_PARAM } from '@/utils/SynapseConstants'\nimport { TaskBundle } from '@sage-bionetworks/synapse-client'\nimport { useSearchParams } from 'react-router'\nimport CurationTaskCardLayout, {\n deriveCardFields,\n} from './CurationTaskCardLayout'\nimport { getExecutableTaskButtonState } from './getExecutableTaskButtonState'\nimport NextStepButton from './NextStepButton'\nimport styles from './CurationTaskCard.module.scss'\n\nexport type ExecutableTaskCardProps = {\n taskBundle: TaskBundle\n}\n\n/**\n * Card for an executable (Compute Data) curation task. Lets an authorized user run the task's agent\n * and, once finished, navigate to the destination task where the generated output was written.\n */\nexport default function ExecutableTaskCard(props: ExecutableTaskCardProps) {\n const { taskBundle } = props\n const task = taskBundle.task!\n const taskProperties = task.taskProperties\n const destinationTaskId =\n taskProperties && 'destinationTaskId' in taskProperties\n ? taskProperties.destinationTaskId\n : undefined\n\n const [, setSearchParams] = useSearchParams()\n\n const { data: bundle } = useGetEntityBundle(task.projectId, undefined, {\n includeEntity: true,\n includePermissions: true,\n })\n const canEdit = bundle?.permissions?.canEdit ?? false\n\n const { data: currentUserProfile } = useGetCurrentUserProfile()\n const { data: isAssigneeOrTeamMember } =\n useGetIsPrincipalIdUserOrMemberOfTeam(\n currentUserProfile?.ownerId ?? '',\n task.assigneePrincipalId ?? '',\n { enabled: !!currentUserProfile?.ownerId && !!task.assigneePrincipalId },\n )\n\n const canExecute = canEdit || Boolean(isAssigneeOrTeamMember)\n\n const { mutate: executeTask, isPending } = useExecuteCurationTask({\n onError: error => displayToast(error.message, 'danger'),\n })\n\n const buttonState = getExecutableTaskButtonState({\n state: taskBundle.status?.state,\n canExecute,\n isExecutePending: isPending,\n destinationTaskId,\n })\n\n const { title, description, principalIds } = deriveCardFields(task)\n\n function onClickAction() {\n if (buttonState.action === 'start') {\n executeTask(task.taskId!)\n } else if (buttonState.action === 'viewResult' && destinationTaskId) {\n setSearchParams(prev => {\n const next = new URLSearchParams(prev)\n next.set(GRID_PAGE_TASK_ID_QUERY_PARAM, String(destinationTaskId))\n return next\n })\n }\n }\n\n return (\n <CurationTaskCardLayout\n taskBundle={taskBundle}\n title={title}\n description={description}\n taskType=\"Compute\"\n principalIds={principalIds}\n renderActionButton={({ expanded }) => (\n <NextStepButton\n className={styles.cardButton}\n buttonText={buttonState.buttonText}\n onClick={onClickAction}\n disabled={buttonState.disabled}\n loading={buttonState.loading}\n tooltip={buttonState.tooltip}\n expanded={expanded}\n />\n )}\n />\n )\n}\n"],"mappings":";;;;;;;;;;;;;;AAuBA,SAAwB,EAAmB,GAAgC;CACzE,IAAM,EAAE,kBAAe,GACjB,IAAO,EAAW,MAClB,IAAiB,EAAK,gBACtB,IACJ,KAAkB,uBAAuB,IACrC,EAAe,oBACf,KAAA,GAEA,GAAG,KAAmB,EAAgB,GAEtC,EAAE,MAAM,MAAW,EAAmB,EAAK,WAAW,KAAA,GAAW;EACrE,eAAe;EACf,oBAAoB;CACtB,CAAC,GACK,IAAU,GAAQ,aAAa,WAAW,IAE1C,EAAE,MAAM,MAAuB,EAAyB,GACxD,EAAE,MAAM,MACZ,EACE,GAAoB,WAAW,IAC/B,EAAK,uBAAuB,IAC5B,EAAE,SAAS,CAAC,CAAC,GAAoB,WAAW,CAAC,CAAC,EAAK,oBAAoB,CACzE,GAEI,IAAa,KAAW,EAAQ,GAEhC,EAAE,QAAQ,GAAa,iBAAc,EAAuB,EAChE,UAAS,MAAS,EAAa,EAAM,SAAS,QAAQ,EACxD,CAAC,GAEK,IAAc,EAA6B;EAC/C,OAAO,EAAW,QAAQ;EAC1B;EACA,kBAAkB;EAClB;CACF,CAAC,GAEK,EAAE,UAAO,gBAAa,oBAAiB,EAAiB,CAAI;CAElE,SAAS,IAAgB;EACvB,AAAI,EAAY,WAAW,UACzB,EAAY,EAAK,MAAO,IACf,EAAY,WAAW,gBAAgB,KAChD,GAAgB,MAAQ;GACtB,IAAM,IAAO,IAAI,gBAAgB,CAAI;GAErC,OADA,EAAK,IAAI,GAA+B,OAAO,CAAiB,CAAC,GAC1D;EACT,CAAC;CAEL;CAEA,OACE,kBAAC,GAAD;EACc;EACL;EACM;EACb,UAAS;EACK;EACd,qBAAqB,EAAE,kBACrB,kBAAC,GAAD;GACE,WAAW,EAAO;GAClB,YAAY,EAAY;GACxB,SAAS;GACT,UAAU,EAAY;GACtB,SAAS,EAAY;GACrB,SAAS,EAAY;GACX;EACX,CAAA;CAEJ,CAAA;AAEL"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { TaskBundle } from '@sage-bionetworks/synapse-client';
|
|
2
|
+
export type GridTaskCardProps = {
|
|
3
|
+
taskBundle: TaskBundle;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Card for a grid-supported (Curate Data) curation task. The action button opens the task in
|
|
7
|
+
* Curator, gated on read access to the task's source entity.
|
|
8
|
+
*/
|
|
9
|
+
export default function GridTaskCard(props: GridTaskCardProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
//# sourceMappingURL=GridTaskCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GridTaskCard.d.ts","sourceRoot":"","sources":["../../../../../src/features/curator/dashboard/components/GridTaskCard.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAO7D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,EAAE,UAAU,CAAA;CACvB,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,KAAK,EAAE,iBAAiB,2CAmC5D"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { displayToast as e } from "../../../../components/ToastMessage/ToastMessage.js";
|
|
2
|
+
import "../../../../components/index.js";
|
|
3
|
+
import { OPEN_CURATOR_NO_PERMISSION_ON_SOURCE_ERROR_MESSAGE as t } from "../../../entity/metadata-task/utils/constants.js";
|
|
4
|
+
import n from "../../../entity/metadata-task/hooks/useOpenCuratorButton.js";
|
|
5
|
+
import r from "./CurationTaskCard.module.js";
|
|
6
|
+
import i, { deriveCardFields as a } from "./CurationTaskCardLayout.js";
|
|
7
|
+
import o from "./NextStepButton.js";
|
|
8
|
+
import { jsx as s } from "react/jsx-runtime";
|
|
9
|
+
//#region src/features/curator/dashboard/components/GridTaskCard.tsx
|
|
10
|
+
function c(c) {
|
|
11
|
+
let { taskBundle: l } = c, { onClick: u, isLoading: d, isPending: f, hasPermission: p } = n(l);
|
|
12
|
+
function m() {
|
|
13
|
+
p ? u() : e(t, "danger");
|
|
14
|
+
}
|
|
15
|
+
let { title: h, description: g, principalIds: _ } = a(l.task);
|
|
16
|
+
return /* @__PURE__ */ s(i, {
|
|
17
|
+
taskBundle: l,
|
|
18
|
+
title: h,
|
|
19
|
+
description: g,
|
|
20
|
+
taskType: "Curate Data",
|
|
21
|
+
principalIds: _,
|
|
22
|
+
renderActionButton: ({ expanded: e }) => /* @__PURE__ */ s(o, {
|
|
23
|
+
className: r.cardButton,
|
|
24
|
+
buttonText: "Open Curator",
|
|
25
|
+
onClick: m,
|
|
26
|
+
disabled: d,
|
|
27
|
+
loading: f,
|
|
28
|
+
expanded: e
|
|
29
|
+
})
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
//#endregion
|
|
33
|
+
export { c as default };
|
|
34
|
+
|
|
35
|
+
//# sourceMappingURL=GridTaskCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GridTaskCard.js","names":[],"sources":["../../../../../src/features/curator/dashboard/components/GridTaskCard.tsx"],"sourcesContent":["import { displayToast } from '@/components'\nimport useOpenCuratorFromTaskButton from '@/features/entity/metadata-task/hooks/useOpenCuratorButton'\nimport { OPEN_CURATOR_NO_PERMISSION_ON_SOURCE_ERROR_MESSAGE } from '@/features/entity/metadata-task/utils/constants'\nimport { TaskBundle } from '@sage-bionetworks/synapse-client'\nimport CurationTaskCardLayout, {\n deriveCardFields,\n} from './CurationTaskCardLayout'\nimport NextStepButton from './NextStepButton'\nimport styles from './CurationTaskCard.module.scss'\n\nexport type GridTaskCardProps = {\n taskBundle: TaskBundle\n}\n\n/**\n * Card for a grid-supported (Curate Data) curation task. The action button opens the task in\n * Curator, gated on read access to the task's source entity.\n */\nexport default function GridTaskCard(props: GridTaskCardProps) {\n const { taskBundle } = props\n\n const { onClick, isLoading, isPending, hasPermission } =\n useOpenCuratorFromTaskButton(taskBundle)\n\n function onClickAction() {\n if (hasPermission) {\n onClick()\n } else {\n displayToast(OPEN_CURATOR_NO_PERMISSION_ON_SOURCE_ERROR_MESSAGE, 'danger')\n }\n }\n\n const { title, description, principalIds } = deriveCardFields(taskBundle.task)\n\n return (\n <CurationTaskCardLayout\n taskBundle={taskBundle}\n title={title}\n description={description}\n taskType=\"Curate Data\"\n principalIds={principalIds}\n renderActionButton={({ expanded }) => (\n <NextStepButton\n className={styles.cardButton}\n buttonText=\"Open Curator\"\n onClick={onClickAction}\n disabled={isLoading}\n loading={isPending}\n expanded={expanded}\n />\n )}\n />\n )\n}\n"],"mappings":";;;;;;;;;AAkBA,SAAwB,EAAa,GAA0B;CAC7D,IAAM,EAAE,kBAAe,GAEjB,EAAE,YAAS,cAAW,cAAW,qBACrC,EAA6B,CAAU;CAEzC,SAAS,IAAgB;EACvB,AAAI,IACF,EAAQ,IAER,EAAa,GAAoD,QAAQ;CAE7E;CAEA,IAAM,EAAE,UAAO,gBAAa,oBAAiB,EAAiB,EAAW,IAAI;CAE7E,OACE,kBAAC,GAAD;EACc;EACL;EACM;EACb,UAAS;EACK;EACd,qBAAqB,EAAE,kBACrB,kBAAC,GAAD;GACE,WAAW,EAAO;GAClB,YAAW;GACX,SAAS;GACT,UAAU;GACV,SAAS;GACC;EACX,CAAA;CAEJ,CAAA;AAEL"}
|