@gen-epix/ui-client-casedb 4.3.0 → 4.3.2

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 (170) hide show
  1. package/dist/_chunks/Dashboard.js +613 -666
  2. package/dist/_chunks/Dashboard.js.map +1 -1
  3. package/dist/_chunks/LegendaItem.js.map +1 -1
  4. package/dist/_chunks/UploadUtil.js +4 -6
  5. package/dist/_chunks/UploadUtil.js.map +1 -1
  6. package/dist/_chunks/_baseClone.js +1 -1
  7. package/dist/_chunks/_baseClone.js.map +1 -1
  8. package/dist/_chunks/cloneDeep.js +1 -1
  9. package/dist/_chunks/cloneDeep.js.map +1 -1
  10. package/dist/_chunks/esm.js +93 -101
  11. package/dist/_chunks/esm.js.map +1 -1
  12. package/dist/_chunks/react.js +1 -1
  13. package/dist/_chunks/react.js.map +1 -1
  14. package/dist/_chunks/shallow.js +2 -2
  15. package/dist/_chunks/shallow.js.map +1 -1
  16. package/dist/_chunks/sync.js +4 -4
  17. package/dist/_chunks/sync.js.map +1 -1
  18. package/dist/_chunks/vanilla.js +1 -1
  19. package/dist/_chunks/vanilla.js.map +1 -1
  20. package/dist/_chunks/yup.js +2 -2
  21. package/dist/_chunks/yup.js.map +1 -1
  22. package/dist/components/app/CaseDbApp/CaseDbApp.d.ts +1 -1
  23. package/dist/components/ui/AddCasesToEventDialog/AddCasesToEventDialogSuccessNotificationMessage.d.ts +1 -1
  24. package/dist/components/ui/CaseContentForm/CaseContentForm.d.ts +1 -1
  25. package/dist/components/ui/CaseInfoDialog/CaseCaseSetInfo.d.ts +1 -1
  26. package/dist/components/ui/CaseInfoDialog/CaseContent.d.ts +1 -1
  27. package/dist/components/ui/CaseInfoDialog/CaseInfoForm.d.ts +1 -1
  28. package/dist/components/ui/CaseInfoDialog/CaseSharingForm.d.ts +1 -1
  29. package/dist/components/ui/CaseInfoDialog/CaseSharingInfo.d.ts +1 -1
  30. package/dist/components/ui/CaseInfoDialog/ReadOnlyCaseContent.d.ts +1 -1
  31. package/dist/components/ui/CaseSetInfoDialog/CaseSetContent.d.ts +1 -1
  32. package/dist/components/ui/CaseSetInfoDialog/CaseSetDescription.d.ts +1 -1
  33. package/dist/components/ui/CaseSetInfoDialog/CaseSetForm.d.ts +1 -1
  34. package/dist/components/ui/CaseSetInfoDialog/CaseSetSharingForm.d.ts +1 -1
  35. package/dist/components/ui/CaseSetInfoDialog/CaseSetSharingInfo.d.ts +1 -1
  36. package/dist/components/ui/CaseSummary/CaseSummary.d.ts +1 -1
  37. package/dist/components/ui/CaseTypeInfoDialog/CaseTypeInfoAccessRights.d.ts +1 -1
  38. package/dist/components/ui/CaseTypeInfoDialog/CaseTypeInfoColAccessRights.d.ts +1 -1
  39. package/dist/components/ui/CaseTypeInfoDialog/CaseTypeInfoData.d.ts +1 -1
  40. package/dist/components/ui/CaseTypeInfoDialog/CaseTypeInfoDialogContent.d.ts +1 -1
  41. package/dist/components/ui/CaseTypeInfoDialog/CaseTypeInfoRegions.d.ts +1 -1
  42. package/dist/components/ui/CaseTypeInfoDialog/CaseTypeInfoTrees.d.ts +1 -1
  43. package/dist/components/ui/CaseTypeInfoDialog/CaseTypeInfoValues.d.ts +1 -1
  44. package/dist/components/ui/CaseTypeInfoDialog/CaseTypeInfoVariableDetails.d.ts +1 -1
  45. package/dist/components/ui/CasesAlreadyInCaseSetWarning/CasesAlreadyInCaseSetWarning.d.ts +1 -1
  46. package/dist/components/ui/CasesAlreadyInCaseSetWarning/CasesAlreadyInCaseSetWarningCaseSetLink.d.ts +1 -1
  47. package/dist/components/ui/CompletCaseTypeLoader/CompletCaseTypeLoader.d.ts +1 -1
  48. package/dist/components/ui/ContextMenu/ContextMenu.d.ts +1 -1
  49. package/dist/components/ui/ContextMenu/index.js +1 -1
  50. package/dist/components/ui/ContextMenu/index.js.map +1 -1
  51. package/dist/components/ui/CreateEventDialog/CreateEventDialogSuccessNotificationMessage.d.ts +1 -1
  52. package/dist/components/ui/CreateEventDialog/index.js +1 -1
  53. package/dist/components/ui/CreateEventDialog/index.js.map +1 -1
  54. package/dist/components/ui/CustomTabPanel/CustomTabPanel.d.ts +1 -1
  55. package/dist/components/ui/Dashboard/DashboardContent.d.ts +1 -1
  56. package/dist/components/ui/Dashboard/DashboardDownloadSidebarItem.d.ts +1 -1
  57. package/dist/components/ui/Dashboard/DashboardGeneralSettingsForm.d.ts +1 -1
  58. package/dist/components/ui/Dashboard/DashboardLayoutRenderer.d.ts +1 -1
  59. package/dist/components/ui/Dashboard/DashboardLayoutSettingsForm.d.ts +1 -1
  60. package/dist/components/ui/Dashboard/DashboardSearch.d.ts +1 -1
  61. package/dist/components/ui/Dashboard/DashboardSearchSettings.d.ts +1 -1
  62. package/dist/components/ui/Dashboard/DashboardSettingsSidebarItem.d.ts +1 -1
  63. package/dist/components/ui/Dashboard/DashboardWidget.d.ts +1 -1
  64. package/dist/components/ui/Dashboard/DashboardWidgetPlaceHolder.d.ts +1 -1
  65. package/dist/components/ui/Dashboard/DashboardWidgetSettingsForm.d.ts +1 -1
  66. package/dist/components/ui/Dashboard/context/DashboardContextProvider.d.ts +1 -1
  67. package/dist/components/ui/DashboardEditCases/DashboardEditCases.d.ts +1 -1
  68. package/dist/components/ui/DashboardStoreLoader/DashboardStoreLoader.d.ts +1 -1
  69. package/dist/components/ui/DashboardStoreLoader/DashboardStoreLoaderContent.d.ts +1 -1
  70. package/dist/components/ui/DataCollectionAccessInfo/DataCollectionAccessInfo.d.ts +1 -1
  71. package/dist/components/ui/EpiCurveWidget/EpiCurveBarChart.d.ts +1 -1
  72. package/dist/components/ui/EpiCurveWidget/EpiCurveStackedAreaChart.d.ts +1 -1
  73. package/dist/components/ui/EpiCurveWidget/EpiCurveWidget.d.ts +1 -1
  74. package/dist/components/ui/Grouping/Grouping.d.ts +1 -1
  75. package/dist/components/ui/HistogramWidget/HistogramWidget.d.ts +1 -1
  76. package/dist/components/ui/HistogramWidget/index.js +1 -1
  77. package/dist/components/ui/HistogramWidget/index.js.map +1 -1
  78. package/dist/components/ui/HomePageTrends/HomePageTrendCard.d.ts +1 -1
  79. package/dist/components/ui/HomePageTrends/HomePageTrends.d.ts +1 -1
  80. package/dist/components/ui/LegendaItem/LegendaItem.d.ts +1 -1
  81. package/dist/components/ui/LineListWidget/LineListWidget.d.ts +1 -1
  82. package/dist/components/ui/LineListWidget/LineListWidgetIsInEventCell.d.ts +1 -1
  83. package/dist/components/ui/LineListWidget/LineListWidgetIsOwnCaseCell.d.ts +1 -1
  84. package/dist/components/ui/LineListWidget/LineListWidgetPrimaryMenu.d.ts +1 -1
  85. package/dist/components/ui/LineListWidget/LineListWidgetSecondaryMenu.d.ts +1 -1
  86. package/dist/components/ui/LineListWidget/LineListWidgetTitle.d.ts +1 -1
  87. package/dist/components/ui/MapWidget/MapWidget.d.ts +1 -1
  88. package/dist/components/ui/PanelSeparator/PanelSeparatorHorizontal.d.ts +1 -1
  89. package/dist/components/ui/PanelSeparator/PanelSeparatorVertical.d.ts +1 -1
  90. package/dist/components/ui/PanelSeparator/index.js +50 -2
  91. package/dist/components/ui/PanelSeparator/index.js.map +1 -0
  92. package/dist/components/ui/TreeDescription/TreeDescription.d.ts +1 -1
  93. package/dist/components/ui/TreeWidget/TreeWidget.d.ts +1 -1
  94. package/dist/components/ui/Upload/Upload.d.ts +1 -1
  95. package/dist/components/ui/Upload/UploadCaseResultTable.d.ts +1 -1
  96. package/dist/components/ui/Upload/UploadCreateCases.d.ts +1 -1
  97. package/dist/components/ui/Upload/UploadMapColumns.d.ts +1 -1
  98. package/dist/components/ui/Upload/UploadMapSequences.d.ts +1 -1
  99. package/dist/components/ui/Upload/UploadNavigation.d.ts +1 -1
  100. package/dist/components/ui/Upload/UploadPreviewNavigation.d.ts +1 -1
  101. package/dist/components/ui/Upload/UploadSelectFile.d.ts +1 -1
  102. package/dist/components/ui/Upload/UploadSelectSequenceFiles.d.ts +1 -1
  103. package/dist/components/ui/UserRightsDialog/UserRightsDialogCaseAccessPolicy.d.ts +1 -1
  104. package/dist/components/ui/Warning/Warning.d.ts +1 -1
  105. package/dist/components/ui/WidgetHeaderIconButton/WidgetHeaderIconButton.d.ts +1 -1
  106. package/dist/components/ui/WidgetMenu/WidgetMenu.d.ts +1 -1
  107. package/dist/components/ui/WidgetUnavailable/WidgetUnavailable.d.ts +1 -1
  108. package/dist/context/caseAbac/CaseAbacContextProvider.d.ts +1 -1
  109. package/dist/context/caseTypeAbac/CaseTypeAbacContextProvider.d.ts +1 -1
  110. package/dist/pages/CaseDbUsersAdminPage/CaseDbUsersAdminPage.d.ts +1 -1
  111. package/dist/pages/CaseSetCategoryAdminPage/CaseSetCategoryAdminPage.d.ts +1 -1
  112. package/dist/pages/CaseSetStatusAdminPage/CaseSetStatusAdminPage.d.ts +1 -1
  113. package/dist/pages/CaseTypeSetCategoriesAdminPage/CaseTypeSetCategoriesAdminPage.d.ts +1 -1
  114. package/dist/pages/CaseTypeSetsAdminPage/CaseTypeSetsAdminPage.d.ts +1 -1
  115. package/dist/pages/CaseTypesAdminPage/CaseTypesAdminPage.d.ts +1 -1
  116. package/dist/pages/CasesDetailPage/CasesDetailPage.d.ts +1 -1
  117. package/dist/pages/CasesDetailPage/index.js +16 -16
  118. package/dist/pages/CasesPage/CasesPage.d.ts +1 -1
  119. package/dist/pages/ColSetsAdminPage/ColSetsAdminPage.d.ts +1 -1
  120. package/dist/pages/ColsAdminPage/ColsAdminPage.d.ts +1 -1
  121. package/dist/pages/ColsAdminPage/index.js +77 -77
  122. package/dist/pages/ColsAdminPage/index.js.map +1 -1
  123. package/dist/pages/ConceptRelationsAdminPage/ConceptRelationsAdminPage.d.ts +1 -1
  124. package/dist/pages/ConceptSetsAdminPage/ConceptSetsAdminPage.d.ts +1 -1
  125. package/dist/pages/ConceptsAdminPage/ConceptsAdminPage.d.ts +1 -1
  126. package/dist/pages/ConceptsAdminPage/index.js +31 -31
  127. package/dist/pages/DataCollectionSetsAdminPage/DataCollectionSetsAdminPage.d.ts +1 -1
  128. package/dist/pages/DataCollectionVisualizationPage/DataCollectionVisualizationPage.d.ts +1 -1
  129. package/dist/pages/DataCollectionVisualizationPage/index.js +1 -1
  130. package/dist/pages/DataCollectionVisualizationPage/index.js.map +1 -1
  131. package/dist/pages/DataCollectionsAdminPage/DataCollectionsAdminPage.d.ts +1 -1
  132. package/dist/pages/DimsAdminPage/DimsAdminPage.d.ts +1 -1
  133. package/dist/pages/DimsAdminPage/index.js +46 -46
  134. package/dist/pages/DiseasesAdminPage/DiseasesAdminPage.d.ts +1 -1
  135. package/dist/pages/EtiologicalAgentsAdminPage/EtiologicalAgentsAdminPage.d.ts +1 -1
  136. package/dist/pages/EtiologiesAdminPage/EtiologiesAdminPage.d.ts +1 -1
  137. package/dist/pages/EventsDetailPage/EventsDetailPage.d.ts +1 -1
  138. package/dist/pages/EventsDetailPage/index.js +18 -18
  139. package/dist/pages/EventsPage/EventsPage.d.ts +1 -1
  140. package/dist/pages/HomePage/HomePage.d.ts +1 -1
  141. package/dist/pages/OrganizationAccessCasePoliciesAdminPage/OrganizationAccessCasePoliciesAdminPage.d.ts +1 -1
  142. package/dist/pages/OrganizationShareCasePoliciesAdminPage/OrganizationShareCasePoliciesAdminPage.d.ts +1 -1
  143. package/dist/pages/RefColsAdminPage/RefColsAdminPage.d.ts +1 -1
  144. package/dist/pages/RefColsAdminPage/index.js +94 -94
  145. package/dist/pages/RefDimsAdminPage/RefDimsAdminPage.d.ts +1 -1
  146. package/dist/pages/RegionRelationsAdminPage/RegionRelationsAdminPage.d.ts +1 -1
  147. package/dist/pages/RegionSetShapesAdminPage/RegionSetShapesAdminPage.d.ts +1 -1
  148. package/dist/pages/RegionSetShapesAdminPage/index.js +26 -26
  149. package/dist/pages/RegionSetsAdminPage/RegionSetsAdminPage.d.ts +1 -1
  150. package/dist/pages/RegionsAdminPage/RegionsAdminPage.d.ts +1 -1
  151. package/dist/pages/RegionsAdminPage/index.js +33 -33
  152. package/dist/pages/TrendsPage/TrendsPage.d.ts +1 -1
  153. package/dist/pages/UploadPage/UploadPage.d.ts +1 -1
  154. package/dist/pages/UserAccessCasePoliciesAdminPage/UserAccessCasePoliciesAdminPage.d.ts +1 -1
  155. package/dist/pages/UserEffectiveRightsAdminPage/UserEffectiveRightsAdminPage.d.ts +1 -1
  156. package/dist/pages/UserEffectiveRightsAdminPage/index.js +56 -56
  157. package/dist/pages/UserEffectiveRightsAdminPage/index.js.map +1 -1
  158. package/dist/pages/UserEffectiveRightsTesterAdminPage/UserEffectiveRightsTesterAdminPage.d.ts +1 -1
  159. package/dist/pages/UserEffectiveRightsTesterAdminPage/index.js +45 -45
  160. package/dist/pages/UserEffectiveRightsTesterAdminPage/index.js.map +1 -1
  161. package/dist/pages/UserShareCasePoliciesAdminPage/UserShareCasePoliciesAdminPage.d.ts +1 -1
  162. package/dist/utils/CaseDbStandardConfigUtil/index.js +1 -5
  163. package/dist/utils/CaseDbStandardConfigUtil/index.js.map +1 -1
  164. package/dist/utils/MapUtil/index.js +1 -1
  165. package/dist/utils/MapUtil/index.js.map +1 -1
  166. package/package.json +33 -28
  167. package/dist/_chunks/PanelSeparator.js +0 -1666
  168. package/dist/_chunks/PanelSeparator.js.map +0 -1
  169. package/dist/_chunks/chunk-OB3PAWPO.js +0 -1162
  170. package/dist/_chunks/chunk-OB3PAWPO.js.map +0 -1
@@ -3,26 +3,26 @@ import { CaseDbDataUtil as t } from "../../utils/CaseDbDataUtil/index.js";
3
3
  import { useCaseTypeMapQuery as n, useCaseTypeOptionsQuery as r } from "../../dataHooks/useCaseTypesQuery/index.js";
4
4
  import { useDimMapQuery as i, useDimOptionsQuery as a } from "../../dataHooks/useDimsQuery/index.js";
5
5
  import { useColMapQuery as o, useColOptionsQuery as s } from "../../dataHooks/useColsQuery/index.js";
6
- import { t as ee } from "../../_chunks/chunk-OB3PAWPO.js";
7
- import { useRefColMapQuery as c, useRefColOptionsQuery as l } from "../../dataHooks/useRefColsQuery/index.js";
8
- import { useTreeAlgorithmCodeOptionsQuery as u } from "../../dataHooks/useTreeAlgorithmCodesQuery/index.js";
9
- import { useRefColsValidationRulesQuery as d } from "../../dataHooks/useRefColsValidationRulesQuery/index.js";
10
- import { useRefDimMapQuery as f } from "../../dataHooks/useRefDimsQuery/index.js";
11
- import { array as p, object as m, string as h } from "yup";
12
- import { CaseDbCaseApi as g, CaseDbColType as _, CaseDbCommandName as v } from "@gen-epix/api-casedb";
13
- import { FORM_FIELD_DEFINITION_TYPE as y } from "@gen-epix/ui-core-form/models/form";
14
- import { DATE_FORMAT as b } from "@gen-epix/ui-core/constants/date";
15
- import { useCallback as x, useMemo as S, useRef as C } from "react";
16
- import { useTranslation as w } from "react-i18next";
17
- import { jsx as te } from "react/jsx-runtime";
6
+ import { useRefColMapQuery as ee, useRefColOptionsQuery as c } from "../../dataHooks/useRefColsQuery/index.js";
7
+ import { useTreeAlgorithmCodeOptionsQuery as l } from "../../dataHooks/useTreeAlgorithmCodesQuery/index.js";
8
+ import { useRefColsValidationRulesQuery as u } from "../../dataHooks/useRefColsValidationRulesQuery/index.js";
9
+ import { useRefDimMapQuery as d } from "../../dataHooks/useRefDimsQuery/index.js";
10
+ import { array as f, object as p, string as m } from "yup";
11
+ import { CaseDbCaseApi as h, CaseDbColType as g, CaseDbCommandName as _ } from "@gen-epix/api-casedb";
12
+ import { FORM_FIELD_DEFINITION_TYPE as v } from "@gen-epix/ui-core-form/models/form";
13
+ import { DATE_FORMAT as y } from "@gen-epix/ui-core/constants/date";
14
+ import { useCallback as b, useMemo as x, useRef as S } from "react";
15
+ import { useTranslation as C } from "react-i18next";
16
+ import { jsx as w } from "react/jsx-runtime";
18
17
  import { useArray as T } from "@gen-epix/ui-core/hooks/useArray";
19
18
  import { TableUtil as E } from "@gen-epix/ui-client-common/utils/TableUtil";
20
- import { TestIdUtil as ne } from "@gen-epix/ui-core/utils/TestIdUtil";
21
- import { SchemaUtil as D } from "@gen-epix/ui-core-form/utils/SchemaUtil";
22
- import { CrudPage as O } from "@gen-epix/ui-client-common/pages/CrudPage";
19
+ import { TestIdUtil as D } from "@gen-epix/ui-core/utils/TestIdUtil";
20
+ import { SchemaUtil as O } from "@gen-epix/ui-core-form/utils/SchemaUtil";
21
+ import { CrudPage as te } from "@gen-epix/ui-client-common/pages/CrudPage";
22
+ import { useParams as ne } from "react-router-dom";
23
23
  //#region src/pages/ColsAdminPage/ColsAdminPage.tsx
24
24
  var k = /^NCBI:txid\d+/, A = () => {
25
- let { t: A } = w(), { caseTypeId: j, dimId: M } = ee(), N = l(), P = c(), F = f(), I = u(), L = r(), R = s(), z = o(), B = n(), V = i(), H = a(), U = d(), W = T([
25
+ let { t: A } = C(), { caseTypeId: j, dimId: M } = ne(), N = c(), P = ee(), F = d(), I = l(), L = r(), R = s(), z = o(), B = n(), V = i(), H = a(), U = u(), W = T([
26
26
  F,
27
27
  P,
28
28
  U,
@@ -33,14 +33,14 @@ var k = /^NCBI:txid\d+/, A = () => {
33
33
  N,
34
34
  I,
35
35
  R
36
- ]), G = C(/* @__PURE__ */ new Map()), K = C(/* @__PURE__ */ new Map()), q = C(/* @__PURE__ */ new Map()), J = S(() => M ? V.map.get(M)?.case_type_id ?? null : j || null, [
36
+ ]), G = S(/* @__PURE__ */ new Map()), K = S(/* @__PURE__ */ new Map()), q = S(/* @__PURE__ */ new Map()), J = x(() => M ? V.map.get(M)?.case_type_id ?? null : j || null, [
37
37
  M,
38
38
  V.map,
39
39
  j
40
- ]), Y = x(async (e) => (await g.getInstance().colsGetAll(null, null, { signal: e }))?.data, []), X = x((e) => M ? e.filter((e) => e.dim_id === M) : e, [M]), re = x(async (e) => await g.getInstance().colsDeleteOne(e.id), []), ie = x(async (e, t) => (await g.getInstance().colsPutOne(t.id, {
40
+ ]), Y = b(async (e) => (await h.getInstance().colsGetAll(null, null, { signal: e }))?.data, []), X = b((e) => M ? e.filter((e) => e.dim_id === M) : e, [M]), re = b(async (e) => await h.getInstance().colsDeleteOne(e.id), []), ie = b(async (e, t) => (await h.getInstance().colsPutOne(t.id, {
41
41
  id: t.id,
42
42
  ...e
43
- })).data, []), ae = x(async (e) => (await g.getInstance().colsPostOne(e)).data, []), oe = x((e) => e.label, []), Z = x((e) => {
43
+ })).data, []), ae = b(async (e) => (await h.getInstance().colsPostOne(e)).data, []), oe = b((e) => e.label, []), Z = b((e) => {
44
44
  if (G.current.has(e)) return G.current.get(e);
45
45
  let n = t.getDimOptionsForCaseTypeId({
46
46
  caseTypeId: e,
@@ -48,7 +48,7 @@ var k = /^NCBI:txid\d+/, A = () => {
48
48
  dimOptions: H.options
49
49
  });
50
50
  return G.current.set(e, n), n;
51
- }, [V.map, H.options]), Q = x((e) => {
51
+ }, [V.map, H.options]), Q = b((e) => {
52
52
  if (K.current.has(e)) return K.current.get(e);
53
53
  let n = t.getRefColOptionsForDimId({
54
54
  colsValidationRules: U.data?.valid_col_types_by_dim_type ?? {},
@@ -65,7 +65,7 @@ var k = /^NCBI:txid\d+/, A = () => {
65
65
  N.options,
66
66
  U.data?.valid_col_types_by_dim_type,
67
67
  F.map
68
- ]), $ = x((e) => {
68
+ ]), $ = b((e) => {
69
69
  if (q.current.has(e)) return q.current.get(e);
70
70
  let n = t.getGeneticSequenceColOptionsForCaseTypeId({
71
71
  caseTypeId: e,
@@ -78,37 +78,37 @@ var k = /^NCBI:txid\d+/, A = () => {
78
78
  P.map,
79
79
  z.map,
80
80
  R.options
81
- ]), se = S(() => m().shape({
82
- case_type_id: h().uuid4().required().max(100),
83
- code: D.code,
84
- description: D.description,
85
- dim_id: h().uuid4().required().max(100),
86
- genetic_sequence_col_id: h().when("ref_col_id", {
87
- is: (e) => P.map.get(e)?.col_type === _.GENETIC_DISTANCE,
88
- otherwise: () => h().nullable().notRequired(),
89
- then: () => h().uuid4().required()
81
+ ]), se = x(() => p().shape({
82
+ case_type_id: m().uuid4().required().max(100),
83
+ code: O.code,
84
+ description: O.description,
85
+ dim_id: m().uuid4().required().max(100),
86
+ genetic_sequence_col_id: m().when("ref_col_id", {
87
+ is: (e) => P.map.get(e)?.col_type === g.GENETIC_DISTANCE,
88
+ otherwise: () => m().nullable().notRequired(),
89
+ then: () => m().uuid4().required()
90
90
  }),
91
- label: D.label,
92
- max_datetime: D.isoString.optional(),
93
- max_length: D.number.integer().positive().max(1e4),
94
- max_value: D.number.positive().max(1e4),
95
- min_datetime: D.isoString.optional(),
96
- min_length: D.number.integer().positive().max(1e4),
97
- min_value: D.number.positive().max(1e4),
98
- ncbi_taxid: h().when("ref_col_id", {
99
- is: (e) => P.map.get(e)?.col_type === _.GENETIC_DISTANCE,
100
- otherwise: () => h().notRequired(),
101
- then: () => h().matches(k).required()
91
+ label: O.label,
92
+ max_datetime: O.isoString.optional(),
93
+ max_length: O.number.integer().positive().max(1e4),
94
+ max_value: O.number.positive().max(1e4),
95
+ min_datetime: O.isoString.optional(),
96
+ min_length: O.number.integer().positive().max(1e4),
97
+ min_value: O.number.positive().max(1e4),
98
+ ncbi_taxid: m().when("ref_col_id", {
99
+ is: (e) => P.map.get(e)?.col_type === g.GENETIC_DISTANCE,
100
+ otherwise: () => m().notRequired(),
101
+ then: () => m().matches(k).required()
102
102
  }),
103
- pattern: h().regex(),
104
- rank: D.rank,
105
- ref_col_id: h().uuid4().required().max(100),
106
- tree_algorithm_codes: p().when("ref_col_id", {
107
- is: (e) => P.map.get(e)?.col_type === _.GENETIC_DISTANCE,
108
- otherwise: () => p().nullable().notRequired(),
109
- then: () => p().min(1).required()
103
+ pattern: m().regex(),
104
+ rank: O.rank,
105
+ ref_col_id: m().uuid4().required().max(100),
106
+ tree_algorithm_codes: f().when("ref_col_id", {
107
+ is: (e) => P.map.get(e)?.col_type === g.GENETIC_DISTANCE,
108
+ otherwise: () => f().nullable().notRequired(),
109
+ then: () => f().min(1).required()
110
110
  })
111
- }), [P.map]), ce = x((e, t, n) => {
111
+ }), [P.map]), ce = b((e, t, n) => {
112
112
  if (t.case_type_id && t.dim_id) {
113
113
  let e = Z(t.case_type_id);
114
114
  e.find((e) => e.value === t.dim_id) || (n.setValue("dim_id", e.length === 1 ? e[0].value : null), n.setValue("ref_col_id", null));
@@ -125,102 +125,102 @@ var k = /^NCBI:txid\d+/, A = () => {
125
125
  Z,
126
126
  Q,
127
127
  $
128
- ]), le = x((e, t) => {
128
+ ]), le = b((e, t) => {
129
129
  let n = t?.dim_id ?? e?.dim_id ?? null, r = V.map.get(n)?.case_type_id ?? null, i = t?.case_type_id ?? J ?? r, a = Z(i), o = Q(n), s = $(i);
130
130
  return [
131
131
  {
132
- definition: y.AUTOCOMPLETE,
132
+ definition: v.AUTOCOMPLETE,
133
133
  disabled: !!e,
134
134
  label: A`Case type`,
135
135
  name: "case_type_id",
136
136
  options: L.options
137
137
  },
138
138
  {
139
- definition: y.AUTOCOMPLETE,
139
+ definition: v.AUTOCOMPLETE,
140
140
  disabled: !!e,
141
141
  label: A`Dimension`,
142
142
  name: "dim_id",
143
143
  options: a
144
144
  },
145
145
  {
146
- definition: y.AUTOCOMPLETE,
146
+ definition: v.AUTOCOMPLETE,
147
147
  disabled: !!e,
148
148
  label: A`Reference column`,
149
149
  name: "ref_col_id",
150
150
  options: o
151
151
  },
152
152
  {
153
- definition: y.TEXTFIELD,
153
+ definition: v.TEXTFIELD,
154
154
  label: A`Code`,
155
155
  name: "code"
156
156
  },
157
157
  {
158
- definition: y.NUMBER,
158
+ definition: v.NUMBER,
159
159
  label: A`Rank`,
160
160
  name: "rank"
161
161
  },
162
162
  {
163
- definition: y.TEXTFIELD,
163
+ definition: v.TEXTFIELD,
164
164
  label: A`Label`,
165
165
  name: "label"
166
166
  },
167
167
  {
168
- definition: y.RICH_TEXT,
168
+ definition: v.RICH_TEXT,
169
169
  label: A`Description`,
170
170
  name: "description"
171
171
  },
172
172
  {
173
- definition: y.NUMBER,
173
+ definition: v.NUMBER,
174
174
  label: A`Min value`,
175
175
  name: "min_value"
176
176
  },
177
177
  {
178
- definition: y.NUMBER,
178
+ definition: v.NUMBER,
179
179
  label: A`Max value`,
180
180
  name: "max_value"
181
181
  },
182
182
  {
183
- dateFormat: b.DATE_TIME,
184
- definition: y.DATE,
183
+ dateFormat: y.DATE_TIME,
184
+ definition: v.DATE,
185
185
  label: A`Min datetime`,
186
186
  name: "min_datetime"
187
187
  },
188
188
  {
189
- dateFormat: b.DATE_TIME,
190
- definition: y.DATE,
189
+ dateFormat: y.DATE_TIME,
190
+ definition: v.DATE,
191
191
  label: A`Max datetime`,
192
192
  name: "max_datetime"
193
193
  },
194
194
  {
195
- definition: y.NUMBER,
195
+ definition: v.NUMBER,
196
196
  label: A`Min length`,
197
197
  name: "min_length"
198
198
  },
199
199
  {
200
- definition: y.NUMBER,
200
+ definition: v.NUMBER,
201
201
  label: A`Max length`,
202
202
  name: "max_length"
203
203
  },
204
204
  {
205
- definition: y.SELECT,
205
+ definition: v.SELECT,
206
206
  label: A`Genetic sequence column`,
207
207
  name: "genetic_sequence_col_id",
208
208
  options: s
209
209
  },
210
210
  {
211
- definition: y.SELECT,
211
+ definition: v.SELECT,
212
212
  label: A`Tree algorithm codes`,
213
213
  multiple: !0,
214
214
  name: "tree_algorithm_codes",
215
215
  options: I.options
216
216
  },
217
217
  {
218
- definition: y.TEXTFIELD,
218
+ definition: v.TEXTFIELD,
219
219
  label: A`NCBI TaxID`,
220
220
  name: "ncbi_taxid"
221
221
  },
222
222
  {
223
- definition: y.TEXTFIELD,
223
+ definition: v.TEXTFIELD,
224
224
  label: A`Pattern`,
225
225
  name: "pattern",
226
226
  type: "text"
@@ -235,7 +235,7 @@ var k = /^NCBI:txid\d+/, A = () => {
235
235
  J,
236
236
  A,
237
237
  I.options
238
- ]), ue = S(() => {
238
+ ]), ue = x(() => {
239
239
  let e = [];
240
240
  return j || e.push(E.createOptionsColumn({
241
241
  id: "case_type_id",
@@ -263,15 +263,15 @@ var k = /^NCBI:txid\d+/, A = () => {
263
263
  L.options,
264
264
  N.options,
265
265
  A
266
- ]), de = x((e, t) => ({
266
+ ]), de = b((e, t) => ({
267
267
  case_type_id: t.case_type_id,
268
268
  dim_id: t.dim_id,
269
269
  id: t.id,
270
270
  ...e
271
- }), []), fe = S(() => ({
271
+ }), []), fe = x(() => ({
272
272
  case_type_id: J,
273
273
  dim_id: M ?? null
274
- }), [M, J]), pe = S(() => {
274
+ }), [M, J]), pe = x(() => {
275
275
  let e = [];
276
276
  return j && B.map.has(j) && e.push(B.map.get(j)?.name), M && V.map.has(M) && e.push(V.map.get(M)?.label), e.push(A`Columns`), e;
277
277
  }, [
@@ -280,14 +280,14 @@ var k = /^NCBI:txid\d+/, A = () => {
280
280
  B.map,
281
281
  V.map,
282
282
  A
283
- ]), me = S(() => {
283
+ ]), me = x(() => {
284
284
  let e = [];
285
285
  return j && e.push("CaseType"), M && e.push("Dim"), e.join("_");
286
286
  }, [M, j]);
287
- return /* @__PURE__ */ te(O, {
287
+ return /* @__PURE__ */ w(te, {
288
288
  createItemDialogTitle: A`Create new column`,
289
289
  createOne: ae,
290
- crudCommandType: v.ColCrudCommand,
290
+ crudCommandType: _.ColCrudCommand,
291
291
  defaultNewItem: fe,
292
292
  defaultSortByField: M ?? j ? "rank" : "case_type_id",
293
293
  defaultSortDirection: "asc",
@@ -304,7 +304,7 @@ var k = /^NCBI:txid\d+/, A = () => {
304
304
  schema: se,
305
305
  tableColumns: ue,
306
306
  tableStoreStorageNamePostFix: me,
307
- testIdAttributes: ne.createAttributes("ColsAdminPage"),
307
+ testIdAttributes: D.createAttributes("ColsAdminPage"),
308
308
  title: pe,
309
309
  updateOne: ie
310
310
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/pages/ColsAdminPage/ColsAdminPage.tsx"],"sourcesContent":["import {\n useCallback,\n useMemo,\n useRef,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n array,\n object,\n string,\n} from 'yup';\nimport { useParams } from 'react-router-dom';\nimport type { UseFormReturn } from 'react-hook-form';\nimport type {\n CaseDbApiPermission,\n CaseDbCol,\n} from '@gen-epix/api-casedb';\nimport {\n CaseDbCaseApi,\n CaseDbColType,\n CaseDbCommandName,\n} from '@gen-epix/api-casedb';\nimport type { OmitWithMetaData } from '@gen-epix/ui-client-common/models/data';\nimport type { TableColumn } from '@gen-epix/ui-client-common/models/table';\nimport { CrudPage } from '@gen-epix/ui-client-common/pages/CrudPage';\nimport { TableUtil } from '@gen-epix/ui-client-common/utils/TableUtil';\nimport { TestIdUtil } from '@gen-epix/ui-core/utils/TestIdUtil';\nimport { useArray } from '@gen-epix/ui-core/hooks/useArray';\nimport type {\n FormFieldDefinition,\n OptionBase,\n} from '@gen-epix/ui-core-form/models/form';\nimport { FORM_FIELD_DEFINITION_TYPE } from '@gen-epix/ui-core-form/models/form';\nimport { SchemaUtil } from '@gen-epix/ui-core-form/utils/SchemaUtil';\nimport { DATE_FORMAT } from '@gen-epix/ui-core/constants/date';\n\nimport {\n useColMapQuery,\n useColOptionsQuery,\n} from '../../dataHooks/useColsQuery';\nimport {\n useCaseTypeMapQuery,\n useCaseTypeOptionsQuery,\n} from '../../dataHooks/useCaseTypesQuery';\nimport {\n useRefColMapQuery,\n useRefColOptionsQuery,\n} from '../../dataHooks/useRefColsQuery';\nimport { useTreeAlgorithmCodeOptionsQuery } from '../../dataHooks/useTreeAlgorithmCodesQuery';\nimport {\n useDimMapQuery,\n useDimOptionsQuery,\n} from '../../dataHooks/useDimsQuery';\nimport { useRefColsValidationRulesQuery } from '../../dataHooks/useRefColsValidationRulesQuery';\nimport { useRefDimMapQuery } from '../../dataHooks/useRefDimsQuery';\nimport { CaseDbDataUtil } from '../../utils/CaseDbDataUtil';\nimport { CASEDB_QUERY_KEY } from '../../constants/query';\n\ntype FormFields = OmitWithMetaData<CaseDbCol, 'case_type' | 'dim' | 'props' | 'ref_col'>;\n\nconst NCBI_TAXID_REGEX = /^NCBI:txid\\d+/;\n\nexport const ColsAdminPage = () => {\n const { t } = useTranslation();\n const { caseTypeId, dimId } = useParams();\n const refColOptionsQuery = useRefColOptionsQuery();\n const refColMapQuery = useRefColMapQuery();\n const refDimMapQuery = useRefDimMapQuery();\n const treeAlgorithmCodesOptionsQuery = useTreeAlgorithmCodeOptionsQuery();\n const caseTypeOptionsQuery = useCaseTypeOptionsQuery();\n const colOptionsQuery = useColOptionsQuery();\n const colMapQuery = useColMapQuery();\n const caseTypeMapQuery = useCaseTypeMapQuery();\n const dimMapQuery = useDimMapQuery();\n const dimOptionsQuery = useDimOptionsQuery();\n const colsValidationRulesQuery = useRefColsValidationRulesQuery();\n const loadables = useArray([refDimMapQuery, refColMapQuery, colsValidationRulesQuery, dimOptionsQuery, dimMapQuery, caseTypeMapQuery, caseTypeOptionsQuery, refColOptionsQuery, treeAlgorithmCodesOptionsQuery, colOptionsQuery]);\n const dimOptionsByCaseTypeIdCacheRef = useRef(new Map<string, OptionBase<string>[]>());\n const refColOptionsByDimIdCacheRef = useRef(new Map<string, OptionBase<string>[]>());\n const geneticSequenceColOptionsByCaseTypeIdCacheRef = useRef(new Map<string, OptionBase<string>[]>());\n\n const normalizedCaseTypeId = useMemo(() => {\n if (dimId) {\n return dimMapQuery.map.get(dimId)?.case_type_id ?? null;\n }\n if (caseTypeId) {\n return caseTypeId;\n }\n return null;\n }, [dimId, dimMapQuery.map, caseTypeId]);\n\n const fetchAll = useCallback(async (signal: AbortSignal) => {\n return (await CaseDbCaseApi.getInstance().colsGetAll(null, null, { signal }))?.data;\n }, []);\n\n const fetchAllSelect = useCallback((cols: CaseDbCol[]) => {\n if (dimId) {\n return cols.filter((col) => col.dim_id === dimId);\n }\n return cols;\n }, [dimId]);\n\n const deleteOne = useCallback(async (item: CaseDbCol) => {\n return await CaseDbCaseApi.getInstance().colsDeleteOne(item.id);\n }, []);\n\n const updateOne = useCallback(async (variables: FormFields, item: CaseDbCol) => {\n return (await CaseDbCaseApi.getInstance().colsPutOne(item.id, { id: item.id, ...variables })).data;\n }, []);\n\n const createOne = useCallback(async (variables: FormFields) => {\n return (await CaseDbCaseApi.getInstance().colsPostOne(variables)).data;\n }, []);\n\n const getName = useCallback((item: CaseDbCol) => {\n return item.label;\n }, []);\n\n const getDimOptionsForCaseTypeId = useCallback((id: string): OptionBase<string>[] => {\n if (dimOptionsByCaseTypeIdCacheRef.current.has(id)) {\n return dimOptionsByCaseTypeIdCacheRef.current.get(id);\n }\n const options = CaseDbDataUtil.getDimOptionsForCaseTypeId({\n caseTypeId: id,\n dimMap: dimMapQuery.map,\n dimOptions: dimOptionsQuery.options,\n });\n dimOptionsByCaseTypeIdCacheRef.current.set(id, options);\n return options;\n }, [dimMapQuery.map, dimOptionsQuery.options]);\n\n const getRefColOptionsForDimId = useCallback((id: string): OptionBase<string>[] => {\n if (refColOptionsByDimIdCacheRef.current.has(id)) {\n return refColOptionsByDimIdCacheRef.current.get(id);\n }\n const options = CaseDbDataUtil.getRefColOptionsForDimId({\n colsValidationRules: colsValidationRulesQuery.data?.valid_col_types_by_dim_type ?? {},\n dimId: id,\n dimMap: dimMapQuery.map,\n refColMap: refColMapQuery.map,\n refColOptions: refColOptionsQuery.options,\n refDimMap: refDimMapQuery.map,\n });\n refColOptionsByDimIdCacheRef.current.set(id, options);\n return options;\n }, [dimMapQuery.map, refColMapQuery.map, refColOptionsQuery.options, colsValidationRulesQuery.data?.valid_col_types_by_dim_type, refDimMapQuery.map]);\n\n const getGeneticSequenceColOptionsForCaseTypeId = useCallback((id: string): OptionBase<string>[] => {\n if (geneticSequenceColOptionsByCaseTypeIdCacheRef.current.has(id)) {\n return geneticSequenceColOptionsByCaseTypeIdCacheRef.current.get(id);\n }\n const options = CaseDbDataUtil.getGeneticSequenceColOptionsForCaseTypeId({\n caseTypeId: id,\n colMap: colMapQuery.map,\n colOptions: colOptionsQuery.options,\n refColMap: refColMapQuery.map,\n });\n geneticSequenceColOptionsByCaseTypeIdCacheRef.current.set(id, options);\n return options;\n }, [refColMapQuery.map, colMapQuery.map, colOptionsQuery.options]);\n\n const schema = useMemo(() => {\n return object<FormFields>().shape({\n case_type_id: string().uuid4().required().max(100),\n code: SchemaUtil.code,\n description: SchemaUtil.description,\n dim_id: string().uuid4().required().max(100),\n genetic_sequence_col_id: string().when('ref_col_id', {\n is: (ref_col_id: string) => refColMapQuery.map.get(ref_col_id)?.col_type === CaseDbColType.GENETIC_DISTANCE,\n otherwise: () => string().nullable().notRequired(),\n then: () => string().uuid4().required(),\n }),\n label: SchemaUtil.label,\n max_datetime: SchemaUtil.isoString.optional(),\n max_length: SchemaUtil.number.integer().positive().max(10000),\n max_value: SchemaUtil.number.positive().max(10000),\n min_datetime: SchemaUtil.isoString.optional(),\n min_length: SchemaUtil.number.integer().positive().max(10000),\n min_value: SchemaUtil.number.positive().max(10000),\n ncbi_taxid: string().when('ref_col_id', {\n is: (ref_col_id: string) => refColMapQuery.map.get(ref_col_id)?.col_type === CaseDbColType.GENETIC_DISTANCE,\n otherwise: () => string().notRequired(),\n then: () => string().matches(NCBI_TAXID_REGEX).required(),\n }),\n pattern: string().regex(),\n rank: SchemaUtil.rank,\n ref_col_id: string().uuid4().required().max(100),\n tree_algorithm_codes: array().when('ref_col_id', {\n is: (ref_col_id: string) => refColMapQuery.map.get(ref_col_id)?.col_type === CaseDbColType.GENETIC_DISTANCE,\n otherwise: () => array().nullable().notRequired(),\n then: () => array().min(1).required(),\n }),\n });\n }, [refColMapQuery.map]);\n\n const onFormChange = useCallback((_item: CaseDbCol, values: FormFields, formMethods: UseFormReturn<FormFields>) => {\n if (values.case_type_id && values.dim_id) {\n const validDimOptions = getDimOptionsForCaseTypeId(values.case_type_id);\n if (!validDimOptions.find(option => option.value === values.dim_id)) {\n formMethods.setValue('dim_id', validDimOptions.length === 1 ? validDimOptions[0].value : null);\n formMethods.setValue('ref_col_id', null);\n }\n }\n\n if (values.dim_id && values.ref_col_id) {\n const validColOptions = getRefColOptionsForDimId(values.dim_id);\n if (!validColOptions.find(option => option.value === values.ref_col_id)) {\n formMethods.setValue('ref_col_id', validColOptions.length === 1 ? validColOptions[0].value : null);\n }\n }\n\n if (values.case_type_id && values.genetic_sequence_col_id) {\n const validColOptions = getGeneticSequenceColOptionsForCaseTypeId(values.case_type_id);\n if (!validColOptions.find(option => option.value === values.genetic_sequence_col_id)) {\n formMethods.setValue('genetic_sequence_col_id', validColOptions.length === 1 ? validColOptions[0].value : null);\n }\n }\n }, [getDimOptionsForCaseTypeId, getRefColOptionsForDimId, getGeneticSequenceColOptionsForCaseTypeId]);\n\n const formFieldDefinitions = useCallback((item: CaseDbCol, values: FormFields): FormFieldDefinition<FormFields>[] => {\n const normalizedDimId = values?.dim_id ?? item?.dim_id ?? null;\n const caseTypeIdFromDimId = dimMapQuery.map.get(normalizedDimId)?.case_type_id ?? null;\n const normalizedCaseTypeIdWithValues = values?.case_type_id ?? normalizedCaseTypeId ?? caseTypeIdFromDimId;\n\n const dimOptions = getDimOptionsForCaseTypeId(normalizedCaseTypeIdWithValues);\n const refColOptions = getRefColOptionsForDimId(normalizedDimId);\n const geneticSequenceColOptions = getGeneticSequenceColOptionsForCaseTypeId(normalizedCaseTypeIdWithValues);\n\n return [\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n disabled: !!item,\n label: t`Case type`,\n name: 'case_type_id',\n options: caseTypeOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n disabled: !!item,\n label: t`Dimension`,\n name: 'dim_id',\n options: dimOptions,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n disabled: !!item,\n label: t`Reference column`,\n name: 'ref_col_id',\n options: refColOptions,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Code`,\n name: 'code',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.NUMBER,\n label: t`Rank`,\n name: 'rank',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Label`,\n name: 'label',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.RICH_TEXT,\n label: t`Description`,\n name: 'description',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.NUMBER,\n label: t`Min value`,\n name: 'min_value',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.NUMBER,\n label: t`Max value`,\n name: 'max_value',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n dateFormat: DATE_FORMAT.DATE_TIME,\n definition: FORM_FIELD_DEFINITION_TYPE.DATE,\n label: t`Min datetime`,\n name: 'min_datetime',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n dateFormat: DATE_FORMAT.DATE_TIME,\n definition: FORM_FIELD_DEFINITION_TYPE.DATE,\n label: t`Max datetime`,\n name: 'max_datetime',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.NUMBER,\n label: t`Min length`,\n name: 'min_length',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.NUMBER,\n label: t`Max length`,\n name: 'max_length',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.SELECT,\n label: t`Genetic sequence column`,\n name: 'genetic_sequence_col_id',\n options: geneticSequenceColOptions,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.SELECT,\n label: t`Tree algorithm codes`,\n multiple: true,\n name: 'tree_algorithm_codes',\n options: treeAlgorithmCodesOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`NCBI TaxID`,\n name: 'ncbi_taxid',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Pattern`,\n name: 'pattern',\n type: 'text',\n } as const satisfies FormFieldDefinition<FormFields>,\n ] as const satisfies FormFieldDefinition<FormFields>[];\n }, [dimMapQuery.map, caseTypeOptionsQuery.options, getDimOptionsForCaseTypeId, getRefColOptionsForDimId, getGeneticSequenceColOptionsForCaseTypeId, normalizedCaseTypeId, t, treeAlgorithmCodesOptionsQuery.options]);\n\n const tableColumns = useMemo((): TableColumn<CaseDbCol>[] => {\n const columns: TableColumn<CaseDbCol>[] = [];\n if (!caseTypeId) {\n columns.push(TableUtil.createOptionsColumn<CaseDbCol>({ id: 'case_type_id', name: t`Case type`, options: caseTypeOptionsQuery.options }));\n }\n if (!dimId) {\n columns.push(TableUtil.createOptionsColumn<CaseDbCol>({ id: 'dim_id', name: t`Dimension`, options: dimOptionsQuery.options }));\n }\n\n columns.push(\n TableUtil.createOptionsColumn<CaseDbCol>({ id: 'ref_col_id', name: t`Column`, options: refColOptionsQuery.options }),\n TableUtil.createTextColumn<CaseDbCol>({ id: 'code', name: t`Code` }),\n TableUtil.createNumberColumn<CaseDbCol>({ id: 'rank', name: t`Rank` }),\n );\n return columns;\n }, [dimId, dimOptionsQuery.options, caseTypeId, caseTypeOptionsQuery.options, refColOptionsQuery.options, t]);\n\n const getOptimisticUpdateIntermediateItem = useCallback((variables: FormFields, previousItem: CaseDbCol): CaseDbCol => {\n return {\n case_type_id: previousItem.case_type_id,\n dim_id: previousItem.dim_id,\n id: previousItem.id,\n ...variables,\n };\n }, []);\n\n const defaultNewItem = useMemo<Partial<FormFields>>(() => {\n return {\n case_type_id: normalizedCaseTypeId,\n dim_id: dimId ?? null,\n };\n }, [dimId, normalizedCaseTypeId]);\n\n const title = useMemo(() => {\n const parts: string[] = [];\n\n if (caseTypeId && caseTypeMapQuery.map.has(caseTypeId)) {\n parts.push(caseTypeMapQuery.map.get(caseTypeId)?.name);\n }\n if (dimId && dimMapQuery.map.has(dimId)) {\n parts.push(dimMapQuery.map.get(dimId)?.label);\n }\n parts.push(t`Columns`);\n\n return parts;\n }, [caseTypeId, dimId, caseTypeMapQuery.map, dimMapQuery.map, t]);\n\n const tableStoreStorageNamePostFix = useMemo(() => {\n const parts: string[] = [];\n if (caseTypeId) {\n parts.push('CaseType');\n }\n if (dimId) {\n parts.push('Dim');\n }\n return parts.join('_');\n }, [dimId, caseTypeId]);\n\n return (\n <CrudPage<FormFields, CaseDbCol, CaseDbCol, CASEDB_QUERY_KEY, CaseDbApiPermission>\n createItemDialogTitle={t`Create new column`}\n createOne={createOne}\n crudCommandType={CaseDbCommandName.ColCrudCommand}\n defaultNewItem={defaultNewItem}\n defaultSortByField={(dimId ?? caseTypeId) ? 'rank' : 'case_type_id'}\n defaultSortDirection={'asc'}\n deleteOne={deleteOne}\n fetchAll={fetchAll}\n fetchAllSelect={fetchAllSelect}\n formFieldDefinitions={formFieldDefinitions}\n getName={getName}\n getOptimisticUpdateIntermediateItem={getOptimisticUpdateIntermediateItem}\n itemName={t`Column`}\n loadables={loadables}\n onFormChange={onFormChange}\n resourceQueryKeyBase={CASEDB_QUERY_KEY.COLS}\n schema={schema}\n tableColumns={tableColumns}\n tableStoreStorageNamePostFix={tableStoreStorageNamePostFix}\n testIdAttributes={TestIdUtil.createAttributes('ColsAdminPage')}\n title={title}\n updateOne={updateOne}\n />\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/pages/ColsAdminPage/ColsAdminPage.tsx"],"sourcesContent":["import {\n useCallback,\n useMemo,\n useRef,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n array,\n object,\n string,\n} from 'yup';\nimport { useParams } from 'react-router-dom';\nimport type { UseFormReturn } from 'react-hook-form';\nimport type {\n CaseDbApiPermission,\n CaseDbCol,\n} from '@gen-epix/api-casedb';\nimport {\n CaseDbCaseApi,\n CaseDbColType,\n CaseDbCommandName,\n} from '@gen-epix/api-casedb';\nimport type { OmitWithMetaData } from '@gen-epix/ui-client-common/models/data';\nimport type { TableColumn } from '@gen-epix/ui-client-common/models/table';\nimport { CrudPage } from '@gen-epix/ui-client-common/pages/CrudPage';\nimport { TableUtil } from '@gen-epix/ui-client-common/utils/TableUtil';\nimport { TestIdUtil } from '@gen-epix/ui-core/utils/TestIdUtil';\nimport { useArray } from '@gen-epix/ui-core/hooks/useArray';\nimport type {\n FormFieldDefinition,\n OptionBase,\n} from '@gen-epix/ui-core-form/models/form';\nimport { FORM_FIELD_DEFINITION_TYPE } from '@gen-epix/ui-core-form/models/form';\nimport { SchemaUtil } from '@gen-epix/ui-core-form/utils/SchemaUtil';\nimport { DATE_FORMAT } from '@gen-epix/ui-core/constants/date';\n\nimport {\n useColMapQuery,\n useColOptionsQuery,\n} from '../../dataHooks/useColsQuery';\nimport {\n useCaseTypeMapQuery,\n useCaseTypeOptionsQuery,\n} from '../../dataHooks/useCaseTypesQuery';\nimport {\n useRefColMapQuery,\n useRefColOptionsQuery,\n} from '../../dataHooks/useRefColsQuery';\nimport { useTreeAlgorithmCodeOptionsQuery } from '../../dataHooks/useTreeAlgorithmCodesQuery';\nimport {\n useDimMapQuery,\n useDimOptionsQuery,\n} from '../../dataHooks/useDimsQuery';\nimport { useRefColsValidationRulesQuery } from '../../dataHooks/useRefColsValidationRulesQuery';\nimport { useRefDimMapQuery } from '../../dataHooks/useRefDimsQuery';\nimport { CaseDbDataUtil } from '../../utils/CaseDbDataUtil';\nimport { CASEDB_QUERY_KEY } from '../../constants/query';\n\ntype FormFields = OmitWithMetaData<CaseDbCol, 'case_type' | 'dim' | 'props' | 'ref_col'>;\n\nconst NCBI_TAXID_REGEX = /^NCBI:txid\\d+/;\n\nexport const ColsAdminPage = () => {\n const { t } = useTranslation();\n const { caseTypeId, dimId } = useParams();\n const refColOptionsQuery = useRefColOptionsQuery();\n const refColMapQuery = useRefColMapQuery();\n const refDimMapQuery = useRefDimMapQuery();\n const treeAlgorithmCodesOptionsQuery = useTreeAlgorithmCodeOptionsQuery();\n const caseTypeOptionsQuery = useCaseTypeOptionsQuery();\n const colOptionsQuery = useColOptionsQuery();\n const colMapQuery = useColMapQuery();\n const caseTypeMapQuery = useCaseTypeMapQuery();\n const dimMapQuery = useDimMapQuery();\n const dimOptionsQuery = useDimOptionsQuery();\n const colsValidationRulesQuery = useRefColsValidationRulesQuery();\n const loadables = useArray([refDimMapQuery, refColMapQuery, colsValidationRulesQuery, dimOptionsQuery, dimMapQuery, caseTypeMapQuery, caseTypeOptionsQuery, refColOptionsQuery, treeAlgorithmCodesOptionsQuery, colOptionsQuery]);\n const dimOptionsByCaseTypeIdCacheRef = useRef(new Map<string, OptionBase<string>[]>());\n const refColOptionsByDimIdCacheRef = useRef(new Map<string, OptionBase<string>[]>());\n const geneticSequenceColOptionsByCaseTypeIdCacheRef = useRef(new Map<string, OptionBase<string>[]>());\n\n const normalizedCaseTypeId = useMemo(() => {\n if (dimId) {\n return dimMapQuery.map.get(dimId)?.case_type_id ?? null;\n }\n if (caseTypeId) {\n return caseTypeId;\n }\n return null;\n }, [dimId, dimMapQuery.map, caseTypeId]);\n\n const fetchAll = useCallback(async (signal: AbortSignal) => {\n return (await CaseDbCaseApi.getInstance().colsGetAll(null, null, { signal }))?.data;\n }, []);\n\n const fetchAllSelect = useCallback((cols: CaseDbCol[]) => {\n if (dimId) {\n return cols.filter((col) => col.dim_id === dimId);\n }\n return cols;\n }, [dimId]);\n\n const deleteOne = useCallback(async (item: CaseDbCol) => {\n return await CaseDbCaseApi.getInstance().colsDeleteOne(item.id);\n }, []);\n\n const updateOne = useCallback(async (variables: FormFields, item: CaseDbCol) => {\n return (await CaseDbCaseApi.getInstance().colsPutOne(item.id, { id: item.id, ...variables })).data;\n }, []);\n\n const createOne = useCallback(async (variables: FormFields) => {\n return (await CaseDbCaseApi.getInstance().colsPostOne(variables)).data;\n }, []);\n\n const getName = useCallback((item: CaseDbCol) => {\n return item.label;\n }, []);\n\n const getDimOptionsForCaseTypeId = useCallback((id: string): OptionBase<string>[] => {\n if (dimOptionsByCaseTypeIdCacheRef.current.has(id)) {\n return dimOptionsByCaseTypeIdCacheRef.current.get(id);\n }\n const options = CaseDbDataUtil.getDimOptionsForCaseTypeId({\n caseTypeId: id,\n dimMap: dimMapQuery.map,\n dimOptions: dimOptionsQuery.options,\n });\n dimOptionsByCaseTypeIdCacheRef.current.set(id, options);\n return options;\n }, [dimMapQuery.map, dimOptionsQuery.options]);\n\n const getRefColOptionsForDimId = useCallback((id: string): OptionBase<string>[] => {\n if (refColOptionsByDimIdCacheRef.current.has(id)) {\n return refColOptionsByDimIdCacheRef.current.get(id);\n }\n const options = CaseDbDataUtil.getRefColOptionsForDimId({\n colsValidationRules: colsValidationRulesQuery.data?.valid_col_types_by_dim_type ?? {},\n dimId: id,\n dimMap: dimMapQuery.map,\n refColMap: refColMapQuery.map,\n refColOptions: refColOptionsQuery.options,\n refDimMap: refDimMapQuery.map,\n });\n refColOptionsByDimIdCacheRef.current.set(id, options);\n return options;\n }, [dimMapQuery.map, refColMapQuery.map, refColOptionsQuery.options, colsValidationRulesQuery.data?.valid_col_types_by_dim_type, refDimMapQuery.map]);\n\n const getGeneticSequenceColOptionsForCaseTypeId = useCallback((id: string): OptionBase<string>[] => {\n if (geneticSequenceColOptionsByCaseTypeIdCacheRef.current.has(id)) {\n return geneticSequenceColOptionsByCaseTypeIdCacheRef.current.get(id);\n }\n const options = CaseDbDataUtil.getGeneticSequenceColOptionsForCaseTypeId({\n caseTypeId: id,\n colMap: colMapQuery.map,\n colOptions: colOptionsQuery.options,\n refColMap: refColMapQuery.map,\n });\n geneticSequenceColOptionsByCaseTypeIdCacheRef.current.set(id, options);\n return options;\n }, [refColMapQuery.map, colMapQuery.map, colOptionsQuery.options]);\n\n const schema = useMemo(() => {\n return object<FormFields>().shape({\n case_type_id: string().uuid4().required().max(100),\n code: SchemaUtil.code,\n description: SchemaUtil.description,\n dim_id: string().uuid4().required().max(100),\n genetic_sequence_col_id: string().when('ref_col_id', {\n is: (ref_col_id: string) => refColMapQuery.map.get(ref_col_id)?.col_type === CaseDbColType.GENETIC_DISTANCE,\n otherwise: () => string().nullable().notRequired(),\n then: () => string().uuid4().required(),\n }),\n label: SchemaUtil.label,\n max_datetime: SchemaUtil.isoString.optional(),\n max_length: SchemaUtil.number.integer().positive().max(10000),\n max_value: SchemaUtil.number.positive().max(10000),\n min_datetime: SchemaUtil.isoString.optional(),\n min_length: SchemaUtil.number.integer().positive().max(10000),\n min_value: SchemaUtil.number.positive().max(10000),\n ncbi_taxid: string().when('ref_col_id', {\n is: (ref_col_id: string) => refColMapQuery.map.get(ref_col_id)?.col_type === CaseDbColType.GENETIC_DISTANCE,\n otherwise: () => string().notRequired(),\n then: () => string().matches(NCBI_TAXID_REGEX).required(),\n }),\n pattern: string().regex(),\n rank: SchemaUtil.rank,\n ref_col_id: string().uuid4().required().max(100),\n tree_algorithm_codes: array().when('ref_col_id', {\n is: (ref_col_id: string) => refColMapQuery.map.get(ref_col_id)?.col_type === CaseDbColType.GENETIC_DISTANCE,\n otherwise: () => array().nullable().notRequired(),\n then: () => array().min(1).required(),\n }),\n });\n }, [refColMapQuery.map]);\n\n const onFormChange = useCallback((_item: CaseDbCol, values: FormFields, formMethods: UseFormReturn<FormFields>) => {\n if (values.case_type_id && values.dim_id) {\n const validDimOptions = getDimOptionsForCaseTypeId(values.case_type_id);\n if (!validDimOptions.find(option => option.value === values.dim_id)) {\n formMethods.setValue('dim_id', validDimOptions.length === 1 ? validDimOptions[0].value : null);\n formMethods.setValue('ref_col_id', null);\n }\n }\n\n if (values.dim_id && values.ref_col_id) {\n const validColOptions = getRefColOptionsForDimId(values.dim_id);\n if (!validColOptions.find(option => option.value === values.ref_col_id)) {\n formMethods.setValue('ref_col_id', validColOptions.length === 1 ? validColOptions[0].value : null);\n }\n }\n\n if (values.case_type_id && values.genetic_sequence_col_id) {\n const validColOptions = getGeneticSequenceColOptionsForCaseTypeId(values.case_type_id);\n if (!validColOptions.find(option => option.value === values.genetic_sequence_col_id)) {\n formMethods.setValue('genetic_sequence_col_id', validColOptions.length === 1 ? validColOptions[0].value : null);\n }\n }\n }, [getDimOptionsForCaseTypeId, getRefColOptionsForDimId, getGeneticSequenceColOptionsForCaseTypeId]);\n\n const formFieldDefinitions = useCallback((item: CaseDbCol, values: FormFields): FormFieldDefinition<FormFields>[] => {\n const normalizedDimId = values?.dim_id ?? item?.dim_id ?? null;\n const caseTypeIdFromDimId = dimMapQuery.map.get(normalizedDimId)?.case_type_id ?? null;\n const normalizedCaseTypeIdWithValues = values?.case_type_id ?? normalizedCaseTypeId ?? caseTypeIdFromDimId;\n\n const dimOptions = getDimOptionsForCaseTypeId(normalizedCaseTypeIdWithValues);\n const refColOptions = getRefColOptionsForDimId(normalizedDimId);\n const geneticSequenceColOptions = getGeneticSequenceColOptionsForCaseTypeId(normalizedCaseTypeIdWithValues);\n\n return [\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n disabled: !!item,\n label: t`Case type`,\n name: 'case_type_id',\n options: caseTypeOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n disabled: !!item,\n label: t`Dimension`,\n name: 'dim_id',\n options: dimOptions,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n disabled: !!item,\n label: t`Reference column`,\n name: 'ref_col_id',\n options: refColOptions,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Code`,\n name: 'code',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.NUMBER,\n label: t`Rank`,\n name: 'rank',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Label`,\n name: 'label',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.RICH_TEXT,\n label: t`Description`,\n name: 'description',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.NUMBER,\n label: t`Min value`,\n name: 'min_value',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.NUMBER,\n label: t`Max value`,\n name: 'max_value',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n dateFormat: DATE_FORMAT.DATE_TIME,\n definition: FORM_FIELD_DEFINITION_TYPE.DATE,\n label: t`Min datetime`,\n name: 'min_datetime',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n dateFormat: DATE_FORMAT.DATE_TIME,\n definition: FORM_FIELD_DEFINITION_TYPE.DATE,\n label: t`Max datetime`,\n name: 'max_datetime',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.NUMBER,\n label: t`Min length`,\n name: 'min_length',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.NUMBER,\n label: t`Max length`,\n name: 'max_length',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.SELECT,\n label: t`Genetic sequence column`,\n name: 'genetic_sequence_col_id',\n options: geneticSequenceColOptions,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.SELECT,\n label: t`Tree algorithm codes`,\n multiple: true,\n name: 'tree_algorithm_codes',\n options: treeAlgorithmCodesOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`NCBI TaxID`,\n name: 'ncbi_taxid',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Pattern`,\n name: 'pattern',\n type: 'text',\n } as const satisfies FormFieldDefinition<FormFields>,\n ] as const satisfies FormFieldDefinition<FormFields>[];\n }, [dimMapQuery.map, caseTypeOptionsQuery.options, getDimOptionsForCaseTypeId, getRefColOptionsForDimId, getGeneticSequenceColOptionsForCaseTypeId, normalizedCaseTypeId, t, treeAlgorithmCodesOptionsQuery.options]);\n\n const tableColumns = useMemo((): TableColumn<CaseDbCol>[] => {\n const columns: TableColumn<CaseDbCol>[] = [];\n if (!caseTypeId) {\n columns.push(TableUtil.createOptionsColumn<CaseDbCol>({ id: 'case_type_id', name: t`Case type`, options: caseTypeOptionsQuery.options }));\n }\n if (!dimId) {\n columns.push(TableUtil.createOptionsColumn<CaseDbCol>({ id: 'dim_id', name: t`Dimension`, options: dimOptionsQuery.options }));\n }\n\n columns.push(\n TableUtil.createOptionsColumn<CaseDbCol>({ id: 'ref_col_id', name: t`Column`, options: refColOptionsQuery.options }),\n TableUtil.createTextColumn<CaseDbCol>({ id: 'code', name: t`Code` }),\n TableUtil.createNumberColumn<CaseDbCol>({ id: 'rank', name: t`Rank` }),\n );\n return columns;\n }, [dimId, dimOptionsQuery.options, caseTypeId, caseTypeOptionsQuery.options, refColOptionsQuery.options, t]);\n\n const getOptimisticUpdateIntermediateItem = useCallback((variables: FormFields, previousItem: CaseDbCol): CaseDbCol => {\n return {\n case_type_id: previousItem.case_type_id,\n dim_id: previousItem.dim_id,\n id: previousItem.id,\n ...variables,\n };\n }, []);\n\n const defaultNewItem = useMemo<Partial<FormFields>>(() => {\n return {\n case_type_id: normalizedCaseTypeId,\n dim_id: dimId ?? null,\n };\n }, [dimId, normalizedCaseTypeId]);\n\n const title = useMemo(() => {\n const parts: string[] = [];\n\n if (caseTypeId && caseTypeMapQuery.map.has(caseTypeId)) {\n parts.push(caseTypeMapQuery.map.get(caseTypeId)?.name);\n }\n if (dimId && dimMapQuery.map.has(dimId)) {\n parts.push(dimMapQuery.map.get(dimId)?.label);\n }\n parts.push(t`Columns`);\n\n return parts;\n }, [caseTypeId, dimId, caseTypeMapQuery.map, dimMapQuery.map, t]);\n\n const tableStoreStorageNamePostFix = useMemo(() => {\n const parts: string[] = [];\n if (caseTypeId) {\n parts.push('CaseType');\n }\n if (dimId) {\n parts.push('Dim');\n }\n return parts.join('_');\n }, [dimId, caseTypeId]);\n\n return (\n <CrudPage<FormFields, CaseDbCol, CaseDbCol, CASEDB_QUERY_KEY, CaseDbApiPermission>\n createItemDialogTitle={t`Create new column`}\n createOne={createOne}\n crudCommandType={CaseDbCommandName.ColCrudCommand}\n defaultNewItem={defaultNewItem}\n defaultSortByField={(dimId ?? caseTypeId) ? 'rank' : 'case_type_id'}\n defaultSortDirection={'asc'}\n deleteOne={deleteOne}\n fetchAll={fetchAll}\n fetchAllSelect={fetchAllSelect}\n formFieldDefinitions={formFieldDefinitions}\n getName={getName}\n getOptimisticUpdateIntermediateItem={getOptimisticUpdateIntermediateItem}\n itemName={t`Column`}\n loadables={loadables}\n onFormChange={onFormChange}\n resourceQueryKeyBase={CASEDB_QUERY_KEY.COLS}\n schema={schema}\n tableColumns={tableColumns}\n tableStoreStorageNamePostFix={tableStoreStorageNamePostFix}\n testIdAttributes={TestIdUtil.createAttributes('ColsAdminPage')}\n title={title}\n updateOne={updateOne}\n />\n );\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- export declare const ConceptRelationsAdminPage: () => import("react").JSX.Element;
1
+ export declare const ConceptRelationsAdminPage: () => import('react').JSX.Element;
@@ -1 +1 @@
1
- export declare const ConceptSetsAdminPage: () => import("react").JSX.Element;
1
+ export declare const ConceptSetsAdminPage: () => import('react').JSX.Element;
@@ -1 +1 @@
1
- export declare const ConceptsAdminPage: () => import("react").JSX.Element;
1
+ export declare const ConceptsAdminPage: () => import('react').JSX.Element;
@@ -1,76 +1,76 @@
1
1
  import { CASEDB_QUERY_KEY as e } from "../../constants/query.js";
2
- import { t } from "../../_chunks/chunk-OB3PAWPO.js";
3
- import { object as n } from "yup";
4
- import { CaseDbCommandName as r, CaseDbOntologyApi as i } from "@gen-epix/api-casedb";
5
- import { FORM_FIELD_DEFINITION_TYPE as a } from "@gen-epix/ui-core-form/models/form";
6
- import { useCallback as o, useMemo as s } from "react";
7
- import { useTranslation as c } from "react-i18next";
8
- import { jsx as l } from "react/jsx-runtime";
9
- import { TableUtil as u } from "@gen-epix/ui-client-common/utils/TableUtil";
10
- import { TestIdUtil as d } from "@gen-epix/ui-core/utils/TestIdUtil";
11
- import { SchemaUtil as f } from "@gen-epix/ui-core-form/utils/SchemaUtil";
12
- import { CrudPage as p } from "@gen-epix/ui-client-common/pages/CrudPage";
2
+ import { object as t } from "yup";
3
+ import { CaseDbCommandName as n, CaseDbOntologyApi as r } from "@gen-epix/api-casedb";
4
+ import { FORM_FIELD_DEFINITION_TYPE as i } from "@gen-epix/ui-core-form/models/form";
5
+ import { useCallback as a, useMemo as o } from "react";
6
+ import { useTranslation as s } from "react-i18next";
7
+ import { jsx as c } from "react/jsx-runtime";
8
+ import { TableUtil as l } from "@gen-epix/ui-client-common/utils/TableUtil";
9
+ import { TestIdUtil as u } from "@gen-epix/ui-core/utils/TestIdUtil";
10
+ import { SchemaUtil as d } from "@gen-epix/ui-core-form/utils/SchemaUtil";
11
+ import { CrudPage as f } from "@gen-epix/ui-client-common/pages/CrudPage";
12
+ import { useParams as p } from "react-router-dom";
13
13
  //#region src/pages/ConceptsAdminPage/ConceptsAdminPage.tsx
14
14
  var m = () => {
15
- let { conceptSetId: m } = t(), { t: h } = c(), g = o(async (e) => (await i.getInstance().conceptsGetAll(null, null, { signal: e }))?.data, []), _ = o((e) => e.filter((e) => e.concept_set_id === m), [m]), v = o(async (e) => await i.getInstance().conceptsDeleteOne(e.id), []), y = o(async (e, t) => (await i.getInstance().conceptsPutOne(t.id, {
15
+ let { conceptSetId: m } = p(), { t: h } = s(), g = a(async (e) => (await r.getInstance().conceptsGetAll(null, null, { signal: e }))?.data, []), _ = a((e) => e.filter((e) => e.concept_set_id === m), [m]), v = a(async (e) => await r.getInstance().conceptsDeleteOne(e.id), []), y = a(async (e, t) => (await r.getInstance().conceptsPutOne(t.id, {
16
16
  ...e,
17
17
  concept_set_id: m,
18
18
  id: t.id
19
- })).data, [m]), b = o(async (e) => (await i.getInstance().conceptsPostOne({
19
+ })).data, [m]), b = a(async (e) => (await r.getInstance().conceptsPostOne({
20
20
  ...e,
21
21
  concept_set_id: m
22
- })).data, [m]), x = o((e) => e.name, []), S = s(() => n().shape({
23
- code: f.code,
24
- description: f.description,
25
- name: f.name,
26
- rank: f.rank
27
- }), []), C = s(() => [
22
+ })).data, [m]), x = a((e) => e.name, []), S = o(() => t().shape({
23
+ code: d.code,
24
+ description: d.description,
25
+ name: d.name,
26
+ rank: d.rank
27
+ }), []), C = o(() => [
28
28
  {
29
- definition: a.TEXTFIELD,
29
+ definition: i.TEXTFIELD,
30
30
  label: h`Rank`,
31
31
  name: "rank",
32
32
  type: "number"
33
33
  },
34
34
  {
35
- definition: a.TEXTFIELD,
35
+ definition: i.TEXTFIELD,
36
36
  label: h`Name`,
37
37
  name: "name"
38
38
  },
39
39
  {
40
- definition: a.TEXTFIELD,
40
+ definition: i.TEXTFIELD,
41
41
  label: h`Code`,
42
42
  name: "code"
43
43
  },
44
44
  {
45
- definition: a.TEXTFIELD,
45
+ definition: i.TEXTFIELD,
46
46
  label: h`Description`,
47
47
  multiline: !0,
48
48
  name: "description",
49
49
  rows: 4
50
50
  }
51
- ], [h]), w = s(() => [
52
- u.createNumberColumn({
51
+ ], [h]), w = o(() => [
52
+ l.createNumberColumn({
53
53
  flex: .25,
54
54
  id: "rank",
55
55
  name: h`Rank`
56
56
  }),
57
- u.createTextColumn({
57
+ l.createTextColumn({
58
58
  id: "name",
59
59
  name: h`Name`
60
60
  }),
61
- u.createTextColumn({
61
+ l.createTextColumn({
62
62
  id: "code",
63
63
  name: h`Code`
64
64
  })
65
- ], [h]), T = o((e, t) => ({
65
+ ], [h]), T = a((e, t) => ({
66
66
  concept_set_id: t.concept_set_id,
67
67
  id: t.id,
68
68
  ...e
69
69
  }), []);
70
- return /* @__PURE__ */ l(p, {
70
+ return /* @__PURE__ */ c(f, {
71
71
  createItemDialogTitle: h`Create new concept`,
72
72
  createOne: b,
73
- crudCommandType: r.ConceptCrudCommand,
73
+ crudCommandType: n.ConceptCrudCommand,
74
74
  defaultSortByField: "rank",
75
75
  defaultSortDirection: "asc",
76
76
  deleteOne: v,
@@ -83,7 +83,7 @@ var m = () => {
83
83
  resourceQueryKeyBase: e.CONCEPTS,
84
84
  schema: S,
85
85
  tableColumns: w,
86
- testIdAttributes: d.createAttributes("ConceptsAdminPage"),
86
+ testIdAttributes: u.createAttributes("ConceptsAdminPage"),
87
87
  title: h`Concepts`,
88
88
  updateOne: y
89
89
  });
@@ -1 +1 @@
1
- export declare const DataCollectionSetsAdminPage: () => import("react").JSX.Element;
1
+ export declare const DataCollectionSetsAdminPage: () => import('react').JSX.Element;
@@ -1 +1 @@
1
- export declare const DataCollectionVisualizationPage: () => import("react").JSX.Element;
1
+ export declare const DataCollectionVisualizationPage: () => import('react').JSX.Element;
@@ -65,7 +65,7 @@ var N = {
65
65
  z,
66
66
  r
67
67
  ]), H = x(() => V.find((e) => e.value === a) ?? null, [a, V]), U = r === "organization" ? t`Organization` : t`Data collection`, W = !!a, G = b((e, t) => {
68
- !t || t === r || (i(t), o(null));
68
+ t && t !== r && (i(t), o(null));
69
69
  }, [r]), K = b((e) => e.label, []), q = b((e, t) => e.value === t.value, []), J = b((e, t) => {
70
70
  o(t?.value ?? null);
71
71
  }, []), Y = b((e) => /* @__PURE__ */ w(h, {