synapse-react-client 4.0.28 → 4.0.30

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.
Files changed (101) hide show
  1. package/dist/SWC.index.js +1 -1
  2. package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
  3. package/dist/components/DataGrid/SynapseGrid.js +102 -94
  4. package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
  5. package/dist/components/DataGrid/components/GridMenuButton/GridMenuButton.d.ts +4 -1
  6. package/dist/components/DataGrid/components/GridMenuButton/GridMenuButton.d.ts.map +1 -1
  7. package/dist/components/DataGrid/components/GridMenuButton/GridMenuButton.js +1 -0
  8. package/dist/components/DataGrid/components/GridMenuButton/GridMenuButton.js.map +1 -1
  9. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts.map +1 -1
  10. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js +27 -20
  11. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js.map +1 -1
  12. package/dist/features/curator/dashboard/CuratorDashboard.d.ts.map +1 -1
  13. package/dist/features/curator/dashboard/CuratorDashboard.js +22 -23
  14. package/dist/features/curator/dashboard/CuratorDashboard.js.map +1 -1
  15. package/dist/features/curator/dashboard/components/CurationTaskCard.css +1 -1
  16. package/dist/features/curator/dashboard/components/CurationTaskCard.module.js +13 -10
  17. package/dist/features/curator/dashboard/components/CurationTaskCard.module.js.map +1 -1
  18. package/dist/features/curator/dashboard/components/CurationTaskCard.module.scss +20 -0
  19. package/dist/features/curator/dashboard/components/CurationTaskCardLayout.d.ts.map +1 -1
  20. package/dist/features/curator/dashboard/components/CurationTaskCardLayout.js +62 -49
  21. package/dist/features/curator/dashboard/components/CurationTaskCardLayout.js.map +1 -1
  22. package/dist/features/curator/dashboard/components/FilteredByTaskIdsBanner.d.ts +10 -0
  23. package/dist/features/curator/dashboard/components/FilteredByTaskIdsBanner.d.ts.map +1 -0
  24. package/dist/features/curator/dashboard/components/FilteredByTaskIdsBanner.js +19 -0
  25. package/dist/features/curator/dashboard/components/FilteredByTaskIdsBanner.js.map +1 -0
  26. package/dist/features/entity/metadata-task/components/MetadataTasksPage.d.ts.map +1 -1
  27. package/dist/features/entity/metadata-task/components/MetadataTasksPage.js +50 -47
  28. package/dist/features/entity/metadata-task/components/MetadataTasksPage.js.map +1 -1
  29. package/dist/features/entity/metadata-task/components/MetadataTasksPageRouter.d.ts.map +1 -1
  30. package/dist/features/entity/metadata-task/components/MetadataTasksPageRouter.js +16 -20
  31. package/dist/features/entity/metadata-task/components/MetadataTasksPageRouter.js.map +1 -1
  32. package/dist/features/entity/metadata-task/create-task/ComputeTaskForm.d.ts +1 -1
  33. package/dist/features/entity/metadata-task/create-task/ComputeTaskForm.d.ts.map +1 -1
  34. package/dist/features/entity/metadata-task/create-task/ComputeTaskForm.js +89 -122
  35. package/dist/features/entity/metadata-task/create-task/ComputeTaskForm.js.map +1 -1
  36. package/dist/features/entity/metadata-task/create-task/CurateTaskForm.d.ts +1 -1
  37. package/dist/features/entity/metadata-task/create-task/CurateTaskForm.d.ts.map +1 -1
  38. package/dist/features/entity/metadata-task/create-task/CurateTaskForm.js +77 -102
  39. package/dist/features/entity/metadata-task/create-task/CurateTaskForm.js.map +1 -1
  40. package/dist/features/entity/metadata-task/create-task/FileBasedFields.d.ts +6 -1
  41. package/dist/features/entity/metadata-task/create-task/FileBasedFields.d.ts.map +1 -1
  42. package/dist/features/entity/metadata-task/create-task/FileBasedFields.js +9 -2
  43. package/dist/features/entity/metadata-task/create-task/FileBasedFields.js.map +1 -1
  44. package/dist/features/entity/metadata-task/create-task/RecordBasedFields.d.ts +5 -1
  45. package/dist/features/entity/metadata-task/create-task/RecordBasedFields.d.ts.map +1 -1
  46. package/dist/features/entity/metadata-task/create-task/RecordBasedFields.js +6 -2
  47. package/dist/features/entity/metadata-task/create-task/RecordBasedFields.js.map +1 -1
  48. package/dist/features/entity/metadata-task/create-task/RecordSetFields.d.ts +7 -1
  49. package/dist/features/entity/metadata-task/create-task/RecordSetFields.d.ts.map +1 -1
  50. package/dist/features/entity/metadata-task/create-task/RecordSetFields.js +10 -2
  51. package/dist/features/entity/metadata-task/create-task/RecordSetFields.js.map +1 -1
  52. package/dist/features/entity/metadata-task/create-task/SampleSheetFields.d.ts +6 -1
  53. package/dist/features/entity/metadata-task/create-task/SampleSheetFields.d.ts.map +1 -1
  54. package/dist/features/entity/metadata-task/create-task/SampleSheetFields.js +9 -2
  55. package/dist/features/entity/metadata-task/create-task/SampleSheetFields.js.map +1 -1
  56. package/dist/features/entity/metadata-task/create-task/TaskStatusField.d.ts +19 -0
  57. package/dist/features/entity/metadata-task/create-task/TaskStatusField.d.ts.map +1 -0
  58. package/dist/features/entity/metadata-task/create-task/TaskStatusField.js +32 -0
  59. package/dist/features/entity/metadata-task/create-task/TaskStatusField.js.map +1 -0
  60. package/dist/features/entity/metadata-task/create-task/curationTaskFlowRoutes.d.ts +21 -0
  61. package/dist/features/entity/metadata-task/create-task/curationTaskFlowRoutes.d.ts.map +1 -0
  62. package/dist/features/entity/metadata-task/create-task/curationTaskFlowRoutes.js +100 -0
  63. package/dist/features/entity/metadata-task/create-task/curationTaskFlowRoutes.js.map +1 -0
  64. package/dist/features/entity/metadata-task/create-task/useComputeTypeFields.d.ts +24 -0
  65. package/dist/features/entity/metadata-task/create-task/useComputeTypeFields.d.ts.map +1 -0
  66. package/dist/features/entity/metadata-task/create-task/useComputeTypeFields.js +56 -0
  67. package/dist/features/entity/metadata-task/create-task/useComputeTypeFields.js.map +1 -0
  68. package/dist/features/entity/metadata-task/create-task/useCurateTypeFields.d.ts +26 -0
  69. package/dist/features/entity/metadata-task/create-task/useCurateTypeFields.d.ts.map +1 -0
  70. package/dist/features/entity/metadata-task/create-task/useCurateTypeFields.js +57 -0
  71. package/dist/features/entity/metadata-task/create-task/useCurateTypeFields.js.map +1 -0
  72. package/dist/features/entity/metadata-task/create-task/useCurationTaskFormState.d.ts +4 -2
  73. package/dist/features/entity/metadata-task/create-task/useCurationTaskFormState.d.ts.map +1 -1
  74. package/dist/features/entity/metadata-task/create-task/useCurationTaskFormState.js +12 -11
  75. package/dist/features/entity/metadata-task/create-task/useCurationTaskFormState.js.map +1 -1
  76. package/dist/features/entity/metadata-task/create-task/utils/buildComputeTaskPayload.d.ts +9 -14
  77. package/dist/features/entity/metadata-task/create-task/utils/buildComputeTaskPayload.d.ts.map +1 -1
  78. package/dist/features/entity/metadata-task/create-task/utils/buildComputeTaskPayload.js +11 -7
  79. package/dist/features/entity/metadata-task/create-task/utils/buildComputeTaskPayload.js.map +1 -1
  80. package/dist/features/entity/metadata-task/create-task/utils/buildCurateTaskPayload.d.ts +11 -12
  81. package/dist/features/entity/metadata-task/create-task/utils/buildCurateTaskPayload.d.ts.map +1 -1
  82. package/dist/features/entity/metadata-task/create-task/utils/buildCurateTaskPayload.js +17 -12
  83. package/dist/features/entity/metadata-task/create-task/utils/buildCurateTaskPayload.js.map +1 -1
  84. package/dist/features/entity/metadata-task/utils/constants.d.ts +14 -1
  85. package/dist/features/entity/metadata-task/utils/constants.d.ts.map +1 -1
  86. package/dist/features/entity/metadata-task/utils/constants.js +23 -20
  87. package/dist/features/entity/metadata-task/utils/constants.js.map +1 -1
  88. package/dist/tsconfig.build.tsbuildinfo +1 -1
  89. package/dist/utils/SynapseConstants.d.ts +1 -0
  90. package/dist/utils/SynapseConstants.d.ts.map +1 -1
  91. package/dist/utils/SynapseConstants.js +6 -5
  92. package/dist/utils/SynapseConstants.js.map +1 -1
  93. package/dist/utils/hooks/useCurationTaskListFilters.d.ts +36 -0
  94. package/dist/utils/hooks/useCurationTaskListFilters.d.ts.map +1 -0
  95. package/dist/utils/hooks/useCurationTaskListFilters.js +42 -0
  96. package/dist/utils/hooks/useCurationTaskListFilters.js.map +1 -0
  97. package/package.json +4 -4
  98. package/dist/features/entity/metadata-task/create-task/CreateCurationTaskFlow.d.ts +0 -18
  99. package/dist/features/entity/metadata-task/create-task/CreateCurationTaskFlow.d.ts.map +0 -1
  100. package/dist/features/entity/metadata-task/create-task/CreateCurationTaskFlow.js +0 -78
  101. package/dist/features/entity/metadata-task/create-task/CreateCurationTaskFlow.js.map +0 -1
@@ -1,73 +1,50 @@
1
1
  import { StyledFormControl as e } from "../../../../components/styled/StyledFormControl.js";
2
2
  import "../../../../components/styled/index.js";
3
- import { COMPUTE_TASK_TYPE_CONFIG as t, COMPUTE_TASK_TYPE_OPTIONS as n, DEFAULT_COMPUTE_TASK_TYPE as r, TASK_STATUS_CONFIG as i } from "../utils/constants.js";
4
- import { getComputeTaskConcreteType as a, instanceOfGridSupportedTaskProperties as o } from "../utils/types.js";
5
- import { useCurationTaskFormState as s } from "./useCurationTaskFormState.js";
6
- import c from "./CommonTaskFields.js";
7
- import l from "./ProjectSelectorField.js";
8
- import { isValidTaskIdInput as u } from "./utils/taskIdValidation.js";
9
- import d from "./RecordSetFields.js";
10
- import f from "./SampleSheetFields.js";
11
- import p from "./TaskFormActions.js";
12
- import m from "./TaskFormHeader.js";
13
- import { buildComputeTaskPayload as h } from "./utils/buildComputeTaskPayload.js";
14
- import { useState as g } from "react";
15
- import { Alert as _, InputLabel as v, MenuItem as y, Select as b, Stack as x } from "@mui/material";
16
- import { jsx as S, jsxs as C } from "react/jsx-runtime";
17
- import { TaskStatusStateEnum as w } from "@sage-bionetworks/synapse-client";
18
- import T from "lodash-es/noop";
3
+ import { COMPUTE_TASK_DISABLED_STATUS_STATES as t, COMPUTE_TASK_EXECUTION_DETAILS as n, COMPUTE_TASK_TYPE_CONFIG as r, COMPUTE_TASK_TYPE_OPTIONS as i } from "../utils/constants.js";
4
+ import a from "./RecordSetFields.js";
5
+ import o from "./SampleSheetFields.js";
6
+ import { useComputeTypeFields as s } from "./useComputeTypeFields.js";
7
+ import { useCurationTaskFormState as c } from "./useCurationTaskFormState.js";
8
+ import l from "./CommonTaskFields.js";
9
+ import u from "./ProjectSelectorField.js";
10
+ import d from "./TaskFormActions.js";
11
+ import f from "./TaskFormHeader.js";
12
+ import p from "./TaskStatusField.js";
13
+ import { buildComputeTaskPayload as m } from "./utils/buildComputeTaskPayload.js";
14
+ import { Alert as h, InputLabel as g, MenuItem as _, Select as v, Stack as y } from "@mui/material";
15
+ import { jsx as b, jsxs as x } from "react/jsx-runtime";
16
+ import { SampleSheetGenerationExecutionPropertiesConcreteTypeEnum as S } from "@sage-bionetworks/synapse-client";
17
+ import C from "lodash-es/noop";
19
18
  //#region src/features/entity/metadata-task/create-task/ComputeTaskForm.tsx
20
- var E = {
21
- inputTaskId: "",
22
- destinationTaskId: ""
23
- }, D = {
24
- folderId: "",
25
- instructions: "",
26
- destinationTaskId: ""
27
- };
28
- function O(O) {
29
- let { projectId: k, task: A, onCreated: j, onSaved: M, onDeleted: N, onBack: P, onCancel: F, onExit: I, pageTitle: L, pageDescription: R } = O, z = s({
30
- projectId: k,
31
- task: A,
32
- onDeleted: N
33
- }), { isEditMode: B } = z, V = a(A?.taskProperties), H = !B || V !== void 0, U = B && V === void 0 && !o(A?.taskProperties), [W, G] = g(() => V ?? r), [K, q] = g(() => {
34
- let e = A?.taskProperties;
35
- return e?.concreteType === n[0] ? {
36
- inputTaskId: e.inputTaskId?.toString() ?? "",
37
- destinationTaskId: e.destinationTaskId?.toString() ?? ""
38
- } : E;
39
- }), [J, Y] = g(() => {
40
- let e = A?.taskProperties;
41
- return e?.concreteType === n[1] ? {
42
- folderId: e.folderId ?? "",
43
- instructions: e.instructions ?? "",
44
- destinationTaskId: e.destinationTaskId?.toString() ?? ""
45
- } : D;
46
- }), X = !H || (W === n[0] ? u(K.inputTaskId) && u(K.destinationTaskId) : !!J.folderId.trim() && !!J.instructions.trim() && u(J.destinationTaskId)), Z = z.isCommonFieldsValid && z.isProjectValid && X;
47
- async function Q() {
48
- let e = h({
49
- existingTask: B ? A : void 0,
50
- projectId: z.effectiveProjectId,
51
- dataType: z.dataType,
52
- instructions: z.instructions,
53
- assigneePrincipalId: z.assigneePrincipalId,
54
- computeTypeFields: H ? {
55
- concreteType: W,
56
- sampleSheet: K,
57
- recordSet: J
58
- } : void 0
59
- }), t = await z.submitTaskAndStatus(e);
60
- B ? M?.(t) : j?.(t);
19
+ function w(w) {
20
+ let { projectId: T, task: E, onCreated: D, onSaved: O, onDeleted: k, onBack: A, onCancel: j, onExit: M, pageTitle: N, pageDescription: P } = w, F = c({
21
+ projectId: T,
22
+ task: E,
23
+ onDeleted: k
24
+ }), { isEditMode: I } = F, L = s({
25
+ taskProperties: E?.taskProperties,
26
+ isEditMode: I
27
+ }), R = F.isCommonFieldsValid && F.isProjectValid && L.isValid;
28
+ async function z() {
29
+ let e = m({
30
+ existingTask: I ? E : void 0,
31
+ projectId: F.effectiveProjectId,
32
+ dataType: F.dataType,
33
+ instructions: F.instructions,
34
+ assigneePrincipalId: F.assigneePrincipalId,
35
+ computeTypeFields: L.showTypeSection ? L.state : void 0
36
+ }), t = await F.submitTaskAndStatus(e, { initialExecutionDetails: n[L.state.concreteType] });
37
+ I ? O?.(t) : D?.(t);
61
38
  }
62
- return /* @__PURE__ */ C(x, {
39
+ return /* @__PURE__ */ x(y, {
63
40
  gap: 3,
64
41
  children: [
65
- /* @__PURE__ */ S(m, {
66
- onExit: I,
67
- pageTitle: L,
68
- pageDescription: R
42
+ /* @__PURE__ */ b(f, {
43
+ onExit: M,
44
+ pageTitle: N,
45
+ pageDescription: P
69
46
  }),
70
- /* @__PURE__ */ C(x, {
47
+ /* @__PURE__ */ x(y, {
71
48
  gap: 3,
72
49
  sx: {
73
50
  width: "100%",
@@ -75,91 +52,81 @@ function O(O) {
75
52
  mx: "auto"
76
53
  },
77
54
  children: [
78
- H && /* @__PURE__ */ C(e, {
55
+ L.showTypeSection && /* @__PURE__ */ x(e, {
79
56
  fullWidth: !0,
80
- children: [/* @__PURE__ */ S(v, {
57
+ children: [/* @__PURE__ */ b(g, {
81
58
  id: "compute-task-type-label",
82
59
  children: "Compute Task Type"
83
- }), /* @__PURE__ */ S(b, {
60
+ }), /* @__PURE__ */ b(v, {
84
61
  labelId: "compute-task-type-label",
85
62
  label: "Compute Task Type",
86
- value: W,
87
- disabled: B,
88
- onChange: (e) => G(e.target.value),
89
- children: n.map((e) => /* @__PURE__ */ S(y, {
63
+ value: L.state.concreteType,
64
+ disabled: I,
65
+ onChange: (e) => L.setConcreteType(e.target.value),
66
+ children: i.map((e) => /* @__PURE__ */ b(_, {
90
67
  value: e,
91
- children: t[e].label
68
+ children: r[e].label
92
69
  }, e))
93
70
  })]
94
71
  }),
95
- z.showProjectSelector && /* @__PURE__ */ S(l, {
96
- value: z.selectedProjectId,
97
- onChange: z.setSelectedProjectId
72
+ F.showProjectSelector && /* @__PURE__ */ b(u, {
73
+ value: F.selectedProjectId,
74
+ onChange: F.setSelectedProjectId
98
75
  }),
99
- /* @__PURE__ */ S(c, {
100
- dataType: z.dataType,
101
- onDataTypeChange: z.setDataType,
102
- dueDate: z.displayedDueDate,
103
- onDueDateChange: z.setPendingDueDate,
104
- instructions: z.instructions,
105
- onInstructionsChange: z.setInstructions,
106
- assigneePrincipalId: z.assigneePrincipalId,
107
- onAssigneePrincipalIdChange: z.setAssigneePrincipalId
76
+ /* @__PURE__ */ b(l, {
77
+ dataType: F.dataType,
78
+ onDataTypeChange: F.setDataType,
79
+ dueDate: F.displayedDueDate,
80
+ onDueDateChange: F.setPendingDueDate,
81
+ instructions: F.instructions,
82
+ onInstructionsChange: F.setInstructions,
83
+ assigneePrincipalId: F.assigneePrincipalId,
84
+ onAssigneePrincipalIdChange: F.setAssigneePrincipalId
108
85
  }),
109
- B && /* @__PURE__ */ C(e, {
110
- fullWidth: !0,
111
- children: [/* @__PURE__ */ S(v, {
112
- id: "compute-task-status-label",
113
- children: "Status"
114
- }), /* @__PURE__ */ S(b, {
115
- labelId: "compute-task-status-label",
116
- value: z.displayedStatusState ?? "",
117
- label: "Status",
118
- disabled: z.isStatusFetching || z.currentTaskStatus == null,
119
- onChange: (e) => z.setPendingStatusState(e.target.value),
120
- children: Object.values(w).map((e) => /* @__PURE__ */ S(y, {
121
- value: e,
122
- children: i[e].label
123
- }, e))
124
- })]
86
+ I && /* @__PURE__ */ b(p, {
87
+ labelId: "compute-task-status-label",
88
+ value: F.displayedStatusState,
89
+ onChange: F.setPendingStatusState,
90
+ disabled: F.isStatusFetching || F.currentTaskStatus == null,
91
+ disabledStates: t
125
92
  }),
126
- H && (W === n[0] ? /* @__PURE__ */ S(f, {
127
- value: K,
128
- onChange: q
129
- }) : /* @__PURE__ */ S(d, {
130
- value: J,
131
- onChange: Y
93
+ L.showTypeSection && (L.state.concreteType === S.org_sagebionetworks_repo_model_curation_execution_SampleSheetGenerationExecutionProperties ? /* @__PURE__ */ b(o, {
94
+ value: L.state.value,
95
+ onChange: L.setValue
96
+ }) : /* @__PURE__ */ b(a, {
97
+ value: L.state.value,
98
+ onChange: L.setValue
132
99
  })),
133
- U && /* @__PURE__ */ S(_, {
100
+ L.showUnrecognizedTypeWarning && /* @__PURE__ */ b(h, {
134
101
  severity: "warning",
135
102
  children: "This task has an unrecognized task type. Its category-specific fields cannot be edited here."
136
103
  }),
137
- z.error && /* @__PURE__ */ S(_, {
104
+ F.error && /* @__PURE__ */ b(h, {
138
105
  severity: "error",
139
- children: z.error.reason ?? "An error occurred. Please try again."
106
+ children: F.error.reason ?? "An error occurred. Please try again."
140
107
  })
141
108
  ]
142
109
  }),
143
- /* @__PURE__ */ S(p, {
144
- isEditMode: B,
145
- isPending: z.isPending,
146
- isValid: Z,
147
- onSubmit: () => void Q().catch(T),
148
- onBack: P,
149
- onCancel: F,
150
- canDelete: z.canDelete,
151
- showDeleteConfirmation: z.showDeleteConfirmation,
152
- onRequestDelete: () => z.setShowDeleteConfirmation(!0),
110
+ /* @__PURE__ */ b(d, {
111
+ isEditMode: I,
112
+ isPending: F.isPending,
113
+ isValid: R,
114
+ onSubmit: () => void z().catch(C),
115
+ onBack: A,
116
+ onCancel: j,
117
+ canDelete: F.canDelete,
118
+ showDeleteConfirmation: F.showDeleteConfirmation,
119
+ onRequestDelete: () => F.setShowDeleteConfirmation(!0),
153
120
  onConfirmDelete: () => {
154
- A?.taskId != null && z.deleteTask(A.taskId);
121
+ E?.taskId != null && F.deleteTask(E.taskId);
155
122
  },
156
- onCancelDelete: () => z.setShowDeleteConfirmation(!1),
157
- isDeletePending: z.isDeletePending
123
+ onCancelDelete: () => F.setShowDeleteConfirmation(!1),
124
+ isDeletePending: F.isDeletePending
158
125
  })
159
126
  ]
160
127
  });
161
128
  }
162
129
  //#endregion
163
- export { O as default };
130
+ export { w as default };
164
131
 
165
132
  //# sourceMappingURL=ComputeTaskForm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ComputeTaskForm.js","names":[],"sources":["../../../../../src/features/entity/metadata-task/create-task/ComputeTaskForm.tsx"],"sourcesContent":["import { StyledFormControl } from '@/components/styled'\nimport { Alert, InputLabel, MenuItem, Select, Stack } from '@mui/material'\nimport {\n CurationTask,\n TaskStatusStateEnum,\n} from '@sage-bionetworks/synapse-client'\nimport noop from 'lodash-es/noop'\nimport { useState } from 'react'\nimport {\n COMPUTE_TASK_TYPE_CONFIG,\n COMPUTE_TASK_TYPE_INPUT_LABEL,\n COMPUTE_TASK_TYPE_OPTIONS,\n DEFAULT_COMPUTE_TASK_TYPE,\n EDIT_TASK_UNRECOGNIZED_TYPE_MESSAGE,\n GENERIC_SAVE_ERROR_MESSAGE,\n TASK_STATUS_CONFIG,\n TASK_STATUS_INPUT_LABEL,\n} from '../utils/constants'\nimport {\n ComputeTaskConcreteType,\n getComputeTaskConcreteType,\n instanceOfGridSupportedTaskProperties,\n} from '../utils/types'\nimport CommonTaskFields from './CommonTaskFields'\nimport ProjectSelectorField from './ProjectSelectorField'\nimport RecordSetFields from './RecordSetFields'\nimport SampleSheetFields from './SampleSheetFields'\nimport TaskFormActions from './TaskFormActions'\nimport TaskFormHeader from './TaskFormHeader'\nimport { useCurationTaskFormState } from './useCurationTaskFormState'\nimport {\n buildComputeTaskPayload,\n RecordSetFieldsValue,\n SampleSheetFieldsValue,\n} from './utils/buildComputeTaskPayload'\nimport { isValidTaskIdInput } from './utils/taskIdValidation'\n\nconst EMPTY_SAMPLE_SHEET_VALUE: SampleSheetFieldsValue = {\n inputTaskId: '',\n destinationTaskId: '',\n}\nconst EMPTY_RECORD_SET_VALUE: RecordSetFieldsValue = {\n folderId: '',\n instructions: '',\n destinationTaskId: '',\n}\n\nexport type ComputeTaskFormProps = {\n /**\n * Present when the host page already has a project context (e.g. a project's Metadata Tasks page).\n * Absent when creating from a context without one (e.g. the Curator Dashboard), in which case the user\n * is prompted to choose a project. Ignored in edit mode -- the project is always derived from `task`.\n */\n projectId?: string\n /** The task being edited. Undefined when creating a new task. */\n task?: CurationTask\n /** Called after a new task is successfully created. */\n onCreated?: (task: CurationTask) => void\n /** Called after an existing task is successfully saved. */\n onSaved?: (task: CurationTask) => void\n /** Called after the task is successfully deleted (edit mode only). */\n onDeleted?: () => void\n /** Shows a \"Back\" button (create mode) that returns to the category picker. */\n onBack?: () => void\n /** Shows a \"Cancel\" button (edit mode) that exits the page without saving. */\n onCancel?: () => void\n /**\n * Shows a \"Back to All Tasks\" button in the top-left of the page, which exits the entire\n * create/edit flow back to the task list (as opposed to `onBack`/`onCancel`, which only move\n * between steps within the flow).\n */\n onExit?: () => void\n /**\n * When present, rendered as a centered page title above the form (e.g. \"Create New Compute Task\" or\n * \"Edit Task\"). The host page is responsible for supplying this rather than rendering its own\n * heading, so the title and the single-column form below it share one centered layout.\n */\n pageTitle?: string\n /** When present, rendered as a centered subtitle below `pageTitle`. */\n pageDescription?: string\n}\n\n/**\n * The create/edit form for a Compute Data curation task. Used as step 2 of the create wizard\n * (`CreateCurationTaskFlow`) and directly by `EditCurationTaskPage`.\n */\nexport default function ComputeTaskForm(props: ComputeTaskFormProps) {\n const {\n projectId,\n task,\n onCreated,\n onSaved,\n onDeleted,\n onBack,\n onCancel,\n onExit,\n pageTitle,\n pageDescription,\n } = props\n\n const form = useCurationTaskFormState({ projectId, task, onDeleted })\n const { isEditMode } = form\n\n const existingComputeConcreteType = getComputeTaskConcreteType(\n task?.taskProperties,\n )\n\n // Whether the type-specific fields (and type selector) should render at all. False when editing a task\n // whose category isn't one of the two Compute Data types (e.g. a legacy Curate Data task).\n const showTypeSection =\n !isEditMode || existingComputeConcreteType !== undefined\n const showUnrecognizedTypeWarning =\n isEditMode &&\n existingComputeConcreteType === undefined &&\n !instanceOfGridSupportedTaskProperties(task?.taskProperties)\n\n const [selectedConcreteType, setSelectedConcreteType] =\n useState<ComputeTaskConcreteType>(\n () => existingComputeConcreteType ?? DEFAULT_COMPUTE_TASK_TYPE,\n )\n\n const [sampleSheetValue, setSampleSheetValue] =\n useState<SampleSheetFieldsValue>(() => {\n const tp = task?.taskProperties\n if (tp?.concreteType === COMPUTE_TASK_TYPE_OPTIONS[0]) {\n return {\n inputTaskId: tp.inputTaskId?.toString() ?? '',\n destinationTaskId: tp.destinationTaskId?.toString() ?? '',\n }\n }\n return EMPTY_SAMPLE_SHEET_VALUE\n })\n const [recordSetValue, setRecordSetValue] = useState<RecordSetFieldsValue>(\n () => {\n const tp = task?.taskProperties\n if (tp?.concreteType === COMPUTE_TASK_TYPE_OPTIONS[1]) {\n return {\n folderId: tp.folderId ?? '',\n instructions: tp.instructions ?? '',\n destinationTaskId: tp.destinationTaskId?.toString() ?? '',\n }\n }\n return EMPTY_RECORD_SET_VALUE\n },\n )\n\n const isTypeSpecificValid =\n !showTypeSection ||\n (selectedConcreteType === COMPUTE_TASK_TYPE_OPTIONS[0]\n ? isValidTaskIdInput(sampleSheetValue.inputTaskId) &&\n isValidTaskIdInput(sampleSheetValue.destinationTaskId)\n : !!recordSetValue.folderId.trim() &&\n !!recordSetValue.instructions.trim() &&\n isValidTaskIdInput(recordSetValue.destinationTaskId))\n const isValid =\n form.isCommonFieldsValid && form.isProjectValid && isTypeSpecificValid\n\n async function handleSubmit() {\n const payload = buildComputeTaskPayload({\n existingTask: isEditMode ? task : undefined,\n projectId: form.effectiveProjectId,\n dataType: form.dataType,\n instructions: form.instructions,\n assigneePrincipalId: form.assigneePrincipalId,\n computeTypeFields: showTypeSection\n ? {\n concreteType: selectedConcreteType,\n sampleSheet: sampleSheetValue,\n recordSet: recordSetValue,\n }\n : undefined,\n })\n\n const result = await form.submitTaskAndStatus(payload)\n if (isEditMode) {\n onSaved?.(result)\n } else {\n onCreated?.(result)\n }\n }\n\n return (\n <Stack gap={3}>\n <TaskFormHeader\n onExit={onExit}\n pageTitle={pageTitle}\n pageDescription={pageDescription}\n />\n\n <Stack gap={3} sx={{ width: '100%', maxWidth: 700, mx: 'auto' }}>\n {showTypeSection && (\n <StyledFormControl fullWidth>\n <InputLabel id=\"compute-task-type-label\">\n {COMPUTE_TASK_TYPE_INPUT_LABEL}\n </InputLabel>\n <Select\n labelId=\"compute-task-type-label\"\n label={COMPUTE_TASK_TYPE_INPUT_LABEL}\n value={selectedConcreteType}\n disabled={isEditMode}\n onChange={e => setSelectedConcreteType(e.target.value)}\n >\n {COMPUTE_TASK_TYPE_OPTIONS.map(concreteType => (\n <MenuItem key={concreteType} value={concreteType}>\n {COMPUTE_TASK_TYPE_CONFIG[concreteType].label}\n </MenuItem>\n ))}\n </Select>\n </StyledFormControl>\n )}\n\n {form.showProjectSelector && (\n <ProjectSelectorField\n value={form.selectedProjectId}\n onChange={form.setSelectedProjectId}\n />\n )}\n\n <CommonTaskFields\n dataType={form.dataType}\n onDataTypeChange={form.setDataType}\n dueDate={form.displayedDueDate}\n onDueDateChange={form.setPendingDueDate}\n instructions={form.instructions}\n onInstructionsChange={form.setInstructions}\n assigneePrincipalId={form.assigneePrincipalId}\n onAssigneePrincipalIdChange={form.setAssigneePrincipalId}\n />\n\n {isEditMode && (\n <StyledFormControl fullWidth>\n <InputLabel id=\"compute-task-status-label\">\n {TASK_STATUS_INPUT_LABEL}\n </InputLabel>\n <Select\n labelId=\"compute-task-status-label\"\n value={form.displayedStatusState ?? ''}\n label={TASK_STATUS_INPUT_LABEL}\n disabled={form.isStatusFetching || form.currentTaskStatus == null}\n onChange={e =>\n form.setPendingStatusState(\n e.target.value as TaskStatusStateEnum,\n )\n }\n >\n {Object.values(TaskStatusStateEnum).map(state => (\n <MenuItem key={state} value={state}>\n {TASK_STATUS_CONFIG[state].label}\n </MenuItem>\n ))}\n </Select>\n </StyledFormControl>\n )}\n\n {showTypeSection &&\n (selectedConcreteType === COMPUTE_TASK_TYPE_OPTIONS[0] ? (\n <SampleSheetFields\n value={sampleSheetValue}\n onChange={setSampleSheetValue}\n />\n ) : (\n <RecordSetFields\n value={recordSetValue}\n onChange={setRecordSetValue}\n />\n ))}\n\n {showUnrecognizedTypeWarning && (\n <Alert severity=\"warning\">\n {EDIT_TASK_UNRECOGNIZED_TYPE_MESSAGE}\n </Alert>\n )}\n {form.error && (\n <Alert severity=\"error\">\n {form.error.reason ?? GENERIC_SAVE_ERROR_MESSAGE}\n </Alert>\n )}\n </Stack>\n\n <TaskFormActions\n isEditMode={isEditMode}\n isPending={form.isPending}\n isValid={isValid}\n onSubmit={() => void handleSubmit().catch(noop)}\n onBack={onBack}\n onCancel={onCancel}\n canDelete={form.canDelete}\n showDeleteConfirmation={form.showDeleteConfirmation}\n onRequestDelete={() => form.setShowDeleteConfirmation(true)}\n onConfirmDelete={() => {\n if (task?.taskId != null) form.deleteTask(task.taskId)\n }}\n onCancelDelete={() => form.setShowDeleteConfirmation(false)}\n isDeletePending={form.isDeletePending}\n />\n </Stack>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ComputeTaskForm.js","names":[],"sources":["../../../../../src/features/entity/metadata-task/create-task/ComputeTaskForm.tsx"],"sourcesContent":["import { StyledFormControl } from '@/components/styled'\nimport { Alert, InputLabel, MenuItem, Select, Stack } from '@mui/material'\nimport {\n CurationTask,\n SampleSheetGenerationExecutionPropertiesConcreteTypeEnum,\n} from '@sage-bionetworks/synapse-client'\nimport noop from 'lodash-es/noop'\nimport {\n COMPUTE_TASK_DISABLED_STATUS_STATES,\n COMPUTE_TASK_EXECUTION_DETAILS,\n COMPUTE_TASK_TYPE_CONFIG,\n COMPUTE_TASK_TYPE_INPUT_LABEL,\n COMPUTE_TASK_TYPE_OPTIONS,\n EDIT_TASK_UNRECOGNIZED_TYPE_MESSAGE,\n GENERIC_SAVE_ERROR_MESSAGE,\n} from '../utils/constants'\nimport CommonTaskFields from './CommonTaskFields'\nimport ProjectSelectorField from './ProjectSelectorField'\nimport RecordSetFields from './RecordSetFields'\nimport SampleSheetFields from './SampleSheetFields'\nimport TaskFormActions from './TaskFormActions'\nimport TaskFormHeader from './TaskFormHeader'\nimport TaskStatusField from './TaskStatusField'\nimport { useComputeTypeFields } from './useComputeTypeFields'\nimport { useCurationTaskFormState } from './useCurationTaskFormState'\nimport { buildComputeTaskPayload } from './utils/buildComputeTaskPayload'\n\nexport type ComputeTaskFormProps = {\n /**\n * Present when the host page already has a project context (e.g. a project's Metadata Tasks page).\n * Absent when creating from a context without one (e.g. the Curator Dashboard), in which case the user\n * is prompted to choose a project. Ignored in edit mode -- the project is always derived from `task`.\n */\n projectId?: string\n /** The task being edited. Undefined when creating a new task. */\n task?: CurationTask\n /** Called after a new task is successfully created. */\n onCreated?: (task: CurationTask) => void\n /** Called after an existing task is successfully saved. */\n onSaved?: (task: CurationTask) => void\n /** Called after the task is successfully deleted (edit mode only). */\n onDeleted?: () => void\n /** Shows a \"Back\" button (create mode) that returns to the category picker. */\n onBack?: () => void\n /** Shows a \"Cancel\" button (edit mode) that exits the page without saving. */\n onCancel?: () => void\n /**\n * Shows a \"Back to All Tasks\" button in the top-left of the page, which exits the entire\n * create/edit flow back to the task list (as opposed to `onBack`/`onCancel`, which only move\n * between steps within the flow).\n */\n onExit?: () => void\n /**\n * When present, rendered as a centered page title above the form (e.g. \"Create New Compute Task\" or\n * \"Edit Task\"). The host page is responsible for supplying this rather than rendering its own\n * heading, so the title and the single-column form below it share one centered layout.\n */\n pageTitle?: string\n /** When present, rendered as a centered subtitle below `pageTitle`. */\n pageDescription?: string\n}\n\n/**\n * The create/edit form for a Compute Data curation task. Used as step 2 of the create wizard\n * (`getCurationTaskFlowRoutes`) and directly by `EditCurationTaskPage`.\n */\nexport default function ComputeTaskForm(props: ComputeTaskFormProps) {\n const {\n projectId,\n task,\n onCreated,\n onSaved,\n onDeleted,\n onBack,\n onCancel,\n onExit,\n pageTitle,\n pageDescription,\n } = props\n\n const form = useCurationTaskFormState({ projectId, task, onDeleted })\n const { isEditMode } = form\n\n const typeFields = useComputeTypeFields({\n taskProperties: task?.taskProperties,\n isEditMode,\n })\n\n const isValid =\n form.isCommonFieldsValid && form.isProjectValid && typeFields.isValid\n\n async function handleSubmit() {\n const payload = buildComputeTaskPayload({\n existingTask: isEditMode ? task : undefined,\n projectId: form.effectiveProjectId,\n dataType: form.dataType,\n instructions: form.instructions,\n assigneePrincipalId: form.assigneePrincipalId,\n computeTypeFields: typeFields.showTypeSection\n ? typeFields.state\n : undefined,\n })\n\n const result = await form.submitTaskAndStatus(payload, {\n initialExecutionDetails:\n COMPUTE_TASK_EXECUTION_DETAILS[typeFields.state.concreteType],\n })\n if (isEditMode) {\n onSaved?.(result)\n } else {\n onCreated?.(result)\n }\n }\n\n return (\n <Stack gap={3}>\n <TaskFormHeader\n onExit={onExit}\n pageTitle={pageTitle}\n pageDescription={pageDescription}\n />\n\n <Stack gap={3} sx={{ width: '100%', maxWidth: 700, mx: 'auto' }}>\n {typeFields.showTypeSection && (\n <StyledFormControl fullWidth>\n <InputLabel id=\"compute-task-type-label\">\n {COMPUTE_TASK_TYPE_INPUT_LABEL}\n </InputLabel>\n <Select\n labelId=\"compute-task-type-label\"\n label={COMPUTE_TASK_TYPE_INPUT_LABEL}\n value={typeFields.state.concreteType}\n disabled={isEditMode}\n onChange={e => typeFields.setConcreteType(e.target.value)}\n >\n {COMPUTE_TASK_TYPE_OPTIONS.map(concreteType => (\n <MenuItem key={concreteType} value={concreteType}>\n {COMPUTE_TASK_TYPE_CONFIG[concreteType].label}\n </MenuItem>\n ))}\n </Select>\n </StyledFormControl>\n )}\n\n {form.showProjectSelector && (\n <ProjectSelectorField\n value={form.selectedProjectId}\n onChange={form.setSelectedProjectId}\n />\n )}\n\n <CommonTaskFields\n dataType={form.dataType}\n onDataTypeChange={form.setDataType}\n dueDate={form.displayedDueDate}\n onDueDateChange={form.setPendingDueDate}\n instructions={form.instructions}\n onInstructionsChange={form.setInstructions}\n assigneePrincipalId={form.assigneePrincipalId}\n onAssigneePrincipalIdChange={form.setAssigneePrincipalId}\n />\n\n {isEditMode && (\n <TaskStatusField\n labelId=\"compute-task-status-label\"\n value={form.displayedStatusState}\n onChange={form.setPendingStatusState}\n disabled={form.isStatusFetching || form.currentTaskStatus == null}\n disabledStates={COMPUTE_TASK_DISABLED_STATUS_STATES}\n />\n )}\n\n {typeFields.showTypeSection &&\n (typeFields.state.concreteType ===\n SampleSheetGenerationExecutionPropertiesConcreteTypeEnum.org_sagebionetworks_repo_model_curation_execution_SampleSheetGenerationExecutionProperties ? (\n <SampleSheetFields\n value={typeFields.state.value}\n onChange={typeFields.setValue}\n />\n ) : (\n <RecordSetFields\n value={typeFields.state.value}\n onChange={typeFields.setValue}\n />\n ))}\n\n {typeFields.showUnrecognizedTypeWarning && (\n <Alert severity=\"warning\">\n {EDIT_TASK_UNRECOGNIZED_TYPE_MESSAGE}\n </Alert>\n )}\n {form.error && (\n <Alert severity=\"error\">\n {form.error.reason ?? GENERIC_SAVE_ERROR_MESSAGE}\n </Alert>\n )}\n </Stack>\n\n <TaskFormActions\n isEditMode={isEditMode}\n isPending={form.isPending}\n isValid={isValid}\n onSubmit={() => void handleSubmit().catch(noop)}\n onBack={onBack}\n onCancel={onCancel}\n canDelete={form.canDelete}\n showDeleteConfirmation={form.showDeleteConfirmation}\n onRequestDelete={() => form.setShowDeleteConfirmation(true)}\n onConfirmDelete={() => {\n if (task?.taskId != null) form.deleteTask(task.taskId)\n }}\n onCancelDelete={() => form.setShowDeleteConfirmation(false)}\n isDeletePending={form.isDeletePending}\n />\n </Stack>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAkEA,SAAwB,EAAgB,GAA6B;CACnE,IAAM,EACJ,cACA,SACA,cACA,YACA,cACA,WACA,aACA,WACA,cACA,uBACE,GAEE,IAAO,EAAyB;EAAE;EAAW;EAAM;CAAU,CAAC,GAC9D,EAAE,kBAAe,GAEjB,IAAa,EAAqB;EACtC,gBAAgB,GAAM;EACtB;CACF,CAAC,GAEK,IACJ,EAAK,uBAAuB,EAAK,kBAAkB,EAAW;CAEhE,eAAe,IAAe;EAC5B,IAAM,IAAU,EAAwB;GACtC,cAAc,IAAa,IAAO,KAAA;GAClC,WAAW,EAAK;GAChB,UAAU,EAAK;GACf,cAAc,EAAK;GACnB,qBAAqB,EAAK;GAC1B,mBAAmB,EAAW,kBAC1B,EAAW,QACX,KAAA;EACN,CAAC,GAEK,IAAS,MAAM,EAAK,oBAAoB,GAAS,EACrD,yBACE,EAA+B,EAAW,MAAM,cACpD,CAAC;EACD,AAAI,IACF,IAAU,CAAM,IAEhB,IAAY,CAAM;CAEtB;CAEA,OACE,kBAAC,GAAD;EAAO,KAAK;YAAZ;GACE,kBAAC,GAAD;IACU;IACG;IACM;GAClB,CAAA;GAED,kBAAC,GAAD;IAAO,KAAK;IAAG,IAAI;KAAE,OAAO;KAAQ,UAAU;KAAK,IAAI;IAAO;cAA9D;KACG,EAAW,mBACV,kBAAC,GAAD;MAAmB,WAAA;gBAAnB,CACE,kBAAC,GAAD;OAAY,IAAG;;MAEH,CAAA,GACZ,kBAAC,GAAD;OACE,SAAQ;OACR,OAAA;OACA,OAAO,EAAW,MAAM;OACxB,UAAU;OACV,WAAU,MAAK,EAAW,gBAAgB,EAAE,OAAO,KAAK;iBAEvD,EAA0B,KAAI,MAC7B,kBAAC,GAAD;QAA6B,OAAO;kBACjC,EAAyB,GAAc;OAChC,GAFK,CAEL,CACX;MACK,CAAA,CACS;;KAGpB,EAAK,uBACJ,kBAAC,GAAD;MACE,OAAO,EAAK;MACZ,UAAU,EAAK;KAChB,CAAA;KAGH,kBAAC,GAAD;MACE,UAAU,EAAK;MACf,kBAAkB,EAAK;MACvB,SAAS,EAAK;MACd,iBAAiB,EAAK;MACtB,cAAc,EAAK;MACnB,sBAAsB,EAAK;MAC3B,qBAAqB,EAAK;MAC1B,6BAA6B,EAAK;KACnC,CAAA;KAEA,KACC,kBAAC,GAAD;MACE,SAAQ;MACR,OAAO,EAAK;MACZ,UAAU,EAAK;MACf,UAAU,EAAK,oBAAoB,EAAK,qBAAqB;MAC7D,gBAAgB;KACjB,CAAA;KAGF,EAAW,oBACT,EAAW,MAAM,iBAClB,EAAyD,6FACvD,kBAAC,GAAD;MACE,OAAO,EAAW,MAAM;MACxB,UAAU,EAAW;KACtB,CAAA,IAED,kBAAC,GAAD;MACE,OAAO,EAAW,MAAM;MACxB,UAAU,EAAW;KACtB,CAAA;KAGJ,EAAW,+BACV,kBAAC,GAAD;MAAO,UAAS;;KAET,CAAA;KAER,EAAK,SACJ,kBAAC,GAAD;MAAO,UAAS;gBACb,EAAK,MAAM,UAAA;KACP,CAAA;IAEJ;;GAEP,kBAAC,GAAD;IACc;IACZ,WAAW,EAAK;IACP;IACT,gBAAgB,KAAK,EAAa,EAAE,MAAM,CAAI;IACtC;IACE;IACV,WAAW,EAAK;IAChB,wBAAwB,EAAK;IAC7B,uBAAuB,EAAK,0BAA0B,EAAI;IAC1D,uBAAuB;KACrB,AAAI,GAAM,UAAU,QAAM,EAAK,WAAW,EAAK,MAAM;IACvD;IACA,sBAAsB,EAAK,0BAA0B,EAAK;IAC1D,iBAAiB,EAAK;GACvB,CAAA;EACI;;AAEX"}
@@ -35,7 +35,7 @@ export type CurateTaskFormProps = {
35
35
  };
36
36
  /**
37
37
  * The create/edit form for a Curate Data curation task (File-Based / Records-Based). Used as the
38
- * `curate` step of the create wizard (`CreateCurationTaskFlow`) and directly by `EditCurationTaskPage`.
38
+ * `curate` step of the create wizard (`getCurationTaskFlowRoutes`) and directly by `EditCurationTaskPage`.
39
39
  */
40
40
  export default function CurateTaskForm(props: CurateTaskFormProps): import("react/jsx-runtime").JSX.Element;
41
41
  //# sourceMappingURL=CurateTaskForm.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CurateTaskForm.d.ts","sourceRoot":"","sources":["../../../../../src/features/entity/metadata-task/create-task/CurateTaskForm.tsx"],"names":[],"mappings":"AAaA,OAAO,EACL,YAAY,EAGb,MAAM,kCAAkC,CAAA;AAmDzC,MAAM,MAAM,mBAAmB,GAAG;IAChC;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iEAAiE;IACjE,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB,uDAAuD;IACvD,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAA;IACxC,2DAA2D;IAC3D,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAA;IACtC,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uEAAuE;IACvE,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,KAAK,EAAE,mBAAmB,2CAwOhE"}
1
+ {"version":3,"file":"CurateTaskForm.d.ts","sourceRoot":"","sources":["../../../../../src/features/entity/metadata-task/create-task/CurateTaskForm.tsx"],"names":[],"mappings":"AAaA,OAAO,EACL,YAAY,EAEb,MAAM,kCAAkC,CAAA;AA4BzC,MAAM,MAAM,mBAAmB,GAAG;IAChC;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iEAAiE;IACjE,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB,uDAAuD;IACvD,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAA;IACxC,2DAA2D;IAC3D,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAA;IACtC,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uEAAuE;IACvE,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,KAAK,EAAE,mBAAmB,2CA+KhE"}
@@ -2,70 +2,55 @@ import e from "../../../../components/FieldDescription/FieldDescription.js";
2
2
  import "../../../../components/FieldDescription/index.js";
3
3
  import { StyledFormControl as t } from "../../../../components/styled/StyledFormControl.js";
4
4
  import "../../../../components/styled/index.js";
5
- import { AUTH_MODE_CONFIG as n, AUTH_MODE_INPUT_DESCRIPTION as ee, AUTH_MODE_INPUT_LABEL as r, AUTH_MODE_OPTIONS as i, CURATE_TASK_TYPE_CONFIG as te, CURATE_TASK_TYPE_INPUT_LABEL as a, CURATE_TASK_TYPE_OPTIONS as o, DEFAULT_CURATE_TASK_TYPE as s, TASK_STATUS_CONFIG as c } from "../utils/constants.js";
6
- import { getCurateTaskConcreteType as l, instanceOfGridSupportedTaskProperties as u } from "../utils/types.js";
7
- import { useCurationTaskFormState as d } from "./useCurationTaskFormState.js";
8
- import f from "./CommonTaskFields.js";
9
- import p from "./ProjectSelectorField.js";
10
- import m from "./TaskFormActions.js";
11
- import h from "./TaskFormHeader.js";
12
- import g from "./FileBasedFields.js";
13
- import ne from "./RecordBasedFields.js";
14
- import { buildCurateTaskPayload as re } from "./utils/buildCurateTaskPayload.js";
15
- import { useState as _ } from "react";
16
- import { Alert as v, Box as ie, InputLabel as y, MenuItem as b, Select as x, Stack as S, Tooltip as C, Typography as w } from "@mui/material";
17
- import { jsx as T, jsxs as E } from "react/jsx-runtime";
18
- import { FileBasedMetadataTaskPropertiesConcreteTypeEnum as D, TaskStatusStateEnum as O } from "@sage-bionetworks/synapse-client";
19
- import { HelpTwoTone as k } from "@mui/icons-material";
20
- import A from "lodash-es/noop";
5
+ import { AUTH_MODE_CONFIG as n, AUTH_MODE_INPUT_DESCRIPTION as r, AUTH_MODE_INPUT_LABEL as i, AUTH_MODE_OPTIONS as a, CURATE_TASK_DISABLED_STATUS_STATES as o, CURATE_TASK_TYPE_CONFIG as s, CURATE_TASK_TYPE_INPUT_LABEL as c, CURATE_TASK_TYPE_OPTIONS as l } from "../utils/constants.js";
6
+ import u from "./FileBasedFields.js";
7
+ import d from "./RecordBasedFields.js";
8
+ import { useCurateTypeFields as f } from "./useCurateTypeFields.js";
9
+ import { useCurationTaskFormState as p } from "./useCurationTaskFormState.js";
10
+ import m from "./CommonTaskFields.js";
11
+ import h from "./ProjectSelectorField.js";
12
+ import g from "./TaskFormActions.js";
13
+ import _ from "./TaskFormHeader.js";
14
+ import v from "./TaskStatusField.js";
15
+ import { buildCurateTaskPayload as y } from "./utils/buildCurateTaskPayload.js";
16
+ import { Alert as b, Box as x, InputLabel as S, MenuItem as C, Select as w, Stack as T, Tooltip as E, Typography as D } from "@mui/material";
17
+ import { jsx as O, jsxs as k } from "react/jsx-runtime";
18
+ import { FileBasedMetadataTaskPropertiesConcreteTypeEnum as A } from "@sage-bionetworks/synapse-client";
19
+ import { HelpTwoTone as j } from "@mui/icons-material";
20
+ import M from "lodash-es/noop";
21
21
  //#region src/features/entity/metadata-task/create-task/CurateTaskForm.tsx
22
- var j = {
23
- uploadFolderId: "",
24
- fileViewId: ""
25
- }, M = { recordSetId: "" };
26
- function N(e) {
27
- return e === "SESSION_OWNER" || e === "SOURCE_BENEFACTOR" ? e : "NONE";
28
- }
29
- function P(P) {
30
- let { projectId: F, task: I, onCreated: L, onSaved: R, onDeleted: ae, onBack: z, onCancel: B, onExit: V, pageTitle: H, pageDescription: U } = P, W = d({
31
- projectId: F,
32
- task: I,
33
- onDeleted: ae
34
- }), { isEditMode: G } = W, K = l(I?.taskProperties), [q, J] = _(() => K ?? s), [Y, oe] = _(() => {
35
- let e = I?.taskProperties;
36
- return e?.concreteType === o[0] ? {
37
- uploadFolderId: e.uploadFolderId ?? "",
38
- fileViewId: e.fileViewId ?? ""
39
- } : j;
40
- }), [X, se] = _(() => {
41
- let e = I?.taskProperties;
42
- return e?.concreteType === o[1] ? { recordSetId: e.recordSetId ?? "" } : M;
43
- }), Z = N(u(I?.taskProperties) ? I.taskProperties.suggestedAuthorizationMode : void 0), [Q, ce] = _(Z), le = q === o[0] ? !!Y.uploadFolderId.trim() && !!Y.fileViewId.trim() : !!X.recordSetId.trim(), $ = W.isCommonFieldsValid && W.isProjectValid && le, ue = G && Q !== Z;
44
- async function de() {
45
- let e = re({
46
- existingTask: G ? I : void 0,
22
+ function N(N) {
23
+ let { projectId: P, task: F, onCreated: I, onSaved: L, onDeleted: R, onBack: z, onCancel: B, onExit: V, pageTitle: H, pageDescription: U } = N, W = p({
24
+ projectId: P,
25
+ task: F,
26
+ onDeleted: R
27
+ }), { isEditMode: G } = W, K = f({
28
+ taskProperties: F?.taskProperties,
29
+ isEditMode: G
30
+ }), q = W.isCommonFieldsValid && W.isProjectValid && K.isValid;
31
+ async function J() {
32
+ let e = y({
33
+ existingTask: G ? F : void 0,
47
34
  projectId: W.effectiveProjectId,
48
35
  dataType: W.dataType,
49
36
  instructions: W.instructions,
50
37
  assigneePrincipalId: W.assigneePrincipalId,
51
38
  curateTypeFields: {
52
- concreteType: q,
53
- authorizationMode: Q,
54
- fileBased: Y,
55
- recordBased: X
39
+ ...K.state,
40
+ authorizationMode: K.authorizationMode
56
41
  }
57
42
  }), t = await W.submitTaskAndStatus(e);
58
- G ? R?.(t) : L?.(t);
43
+ G ? L?.(t) : I?.(t);
59
44
  }
60
- return /* @__PURE__ */ E(S, {
45
+ return /* @__PURE__ */ k(T, {
61
46
  gap: 3,
62
47
  children: [
63
- /* @__PURE__ */ T(h, {
48
+ /* @__PURE__ */ O(_, {
64
49
  onExit: V,
65
50
  pageTitle: H,
66
51
  pageDescription: U
67
52
  }),
68
- /* @__PURE__ */ E(S, {
53
+ /* @__PURE__ */ k(T, {
69
54
  gap: 3,
70
55
  sx: {
71
56
  width: "100%",
@@ -73,28 +58,28 @@ function P(P) {
73
58
  mx: "auto"
74
59
  },
75
60
  children: [
76
- /* @__PURE__ */ E(t, {
61
+ /* @__PURE__ */ k(t, {
77
62
  fullWidth: !0,
78
- children: [/* @__PURE__ */ T(y, {
63
+ children: [/* @__PURE__ */ O(S, {
79
64
  id: "curate-task-type-label",
80
- children: a
81
- }), /* @__PURE__ */ T(x, {
65
+ children: c
66
+ }), /* @__PURE__ */ O(w, {
82
67
  labelId: "curate-task-type-label",
83
- label: a,
84
- value: q,
68
+ label: c,
69
+ value: K.state.concreteType,
85
70
  disabled: G,
86
- onChange: (e) => J(e.target.value),
87
- children: o.map((e) => /* @__PURE__ */ T(b, {
71
+ onChange: (e) => K.setConcreteType(e.target.value),
72
+ children: l.map((e) => /* @__PURE__ */ O(C, {
88
73
  value: e,
89
- children: te[e].label
74
+ children: s[e].label
90
75
  }, e))
91
76
  })]
92
77
  }),
93
- W.showProjectSelector && /* @__PURE__ */ T(p, {
78
+ W.showProjectSelector && /* @__PURE__ */ O(h, {
94
79
  value: W.selectedProjectId,
95
80
  onChange: W.setSelectedProjectId
96
81
  }),
97
- /* @__PURE__ */ T(f, {
82
+ /* @__PURE__ */ O(m, {
98
83
  dataType: W.dataType,
99
84
  onDataTypeChange: W.setDataType,
100
85
  dueDate: W.displayedDueDate,
@@ -104,87 +89,77 @@ function P(P) {
104
89
  assigneePrincipalId: W.assigneePrincipalId,
105
90
  onAssigneePrincipalIdChange: W.setAssigneePrincipalId
106
91
  }),
107
- G && /* @__PURE__ */ E(t, {
108
- fullWidth: !0,
109
- children: [/* @__PURE__ */ T(y, {
110
- id: "curate-task-status-label",
111
- children: "Status"
112
- }), /* @__PURE__ */ T(x, {
113
- labelId: "curate-task-status-label",
114
- value: W.displayedStatusState ?? "",
115
- label: "Status",
116
- disabled: W.isStatusFetching || W.currentTaskStatus == null,
117
- onChange: (e) => W.setPendingStatusState(e.target.value),
118
- children: Object.values(O).map((e) => /* @__PURE__ */ T(b, {
119
- value: e,
120
- children: c[e].label
121
- }, e))
122
- })]
92
+ G && /* @__PURE__ */ O(v, {
93
+ labelId: "curate-task-status-label",
94
+ value: W.displayedStatusState,
95
+ onChange: W.setPendingStatusState,
96
+ disabled: W.isStatusFetching || W.currentTaskStatus == null,
97
+ disabledStates: o
123
98
  }),
124
- q === D.org_sagebionetworks_repo_model_curation_metadata_FileBasedMetadataTaskProperties ? /* @__PURE__ */ T(g, {
125
- value: Y,
126
- onChange: oe,
99
+ K.state.concreteType === A.org_sagebionetworks_repo_model_curation_metadata_FileBasedMetadataTaskProperties ? /* @__PURE__ */ O(u, {
100
+ value: K.state.value,
101
+ onChange: K.setValue,
127
102
  disabled: G
128
- }) : /* @__PURE__ */ T(ne, {
129
- value: X,
130
- onChange: se,
103
+ }) : /* @__PURE__ */ O(d, {
104
+ value: K.state.value,
105
+ onChange: K.setValue,
131
106
  disabled: G
132
107
  }),
133
- /* @__PURE__ */ E(t, {
108
+ /* @__PURE__ */ k(t, {
134
109
  fullWidth: !0,
135
110
  children: [
136
- /* @__PURE__ */ T(y, {
111
+ /* @__PURE__ */ O(S, {
137
112
  id: "curate-task-auth-mode-label",
138
- children: r
113
+ children: i
139
114
  }),
140
- /* @__PURE__ */ T(e, { children: ee }),
141
- /* @__PURE__ */ T(x, {
115
+ /* @__PURE__ */ O(e, { children: r }),
116
+ /* @__PURE__ */ O(w, {
142
117
  labelId: "curate-task-auth-mode-label",
143
- label: r,
144
- value: Q,
145
- onChange: (e) => ce(e.target.value),
146
- children: i.map((e) => /* @__PURE__ */ T(b, {
118
+ label: i,
119
+ value: K.authorizationMode,
120
+ onChange: (e) => K.setAuthorizationMode(e.target.value),
121
+ children: a.map((e) => /* @__PURE__ */ O(C, {
147
122
  value: e,
148
- children: /* @__PURE__ */ E(ie, {
123
+ children: /* @__PURE__ */ k(x, {
149
124
  sx: {
150
125
  display: "flex",
151
126
  alignItems: "center",
152
127
  gap: .5
153
128
  },
154
- children: [/* @__PURE__ */ T(w, {
129
+ children: [/* @__PURE__ */ O(D, {
155
130
  variant: "body1",
156
131
  children: n[e].label
157
- }), /* @__PURE__ */ T(C, {
132
+ }), /* @__PURE__ */ O(E, {
158
133
  title: n[e].tooltip,
159
- children: /* @__PURE__ */ T(k, { sx: { color: "grey.700" } })
134
+ children: /* @__PURE__ */ O(j, { sx: { color: "grey.700" } })
160
135
  })]
161
136
  })
162
137
  }, e))
163
138
  })
164
139
  ]
165
140
  }),
166
- ue && /* @__PURE__ */ T(v, {
141
+ K.authModeChanged && /* @__PURE__ */ O(b, {
167
142
  severity: "warning",
168
143
  children: "Changing the Authorization Mode will clear the active session ID on this task. Any in-progress grid session linked to this task will no longer be associated with it."
169
144
  }),
170
- W.error && /* @__PURE__ */ T(v, {
145
+ W.error && /* @__PURE__ */ O(b, {
171
146
  severity: "error",
172
147
  children: W.error.reason ?? "An error occurred. Please try again."
173
148
  })
174
149
  ]
175
150
  }),
176
- /* @__PURE__ */ T(m, {
151
+ /* @__PURE__ */ O(g, {
177
152
  isEditMode: G,
178
153
  isPending: W.isPending,
179
- isValid: $,
180
- onSubmit: () => void de().catch(A),
154
+ isValid: q,
155
+ onSubmit: () => void J().catch(M),
181
156
  onBack: z,
182
157
  onCancel: B,
183
158
  canDelete: W.canDelete,
184
159
  showDeleteConfirmation: W.showDeleteConfirmation,
185
160
  onRequestDelete: () => W.setShowDeleteConfirmation(!0),
186
161
  onConfirmDelete: () => {
187
- I?.taskId != null && W.deleteTask(I.taskId);
162
+ F?.taskId != null && W.deleteTask(F.taskId);
188
163
  },
189
164
  onCancelDelete: () => W.setShowDeleteConfirmation(!1),
190
165
  isDeletePending: W.isDeletePending
@@ -193,6 +168,6 @@ function P(P) {
193
168
  });
194
169
  }
195
170
  //#endregion
196
- export { P as default };
171
+ export { N as default };
197
172
 
198
173
  //# sourceMappingURL=CurateTaskForm.js.map