@gen-epix/ui-client-casedb 4.0.0 → 4.0.1

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 (393) hide show
  1. package/dist/@types/mui.d.ts +1 -1
  2. package/dist/@types/{ui-casedb.d.ts → ui-client-casedb.d.ts} +1 -1
  3. package/dist/_chunks/AddCasesToEventDialog.js +74 -74
  4. package/dist/_chunks/AddCasesToEventDialog.js.map +1 -1
  5. package/dist/_chunks/CaseContentForm.js +2 -2
  6. package/dist/_chunks/CaseContentForm.js.map +1 -1
  7. package/dist/_chunks/CaseDbDownloadUtil.js +40 -35
  8. package/dist/_chunks/CaseDbDownloadUtil.js.map +1 -1
  9. package/dist/_chunks/CaseInfoDialog.js +195 -195
  10. package/dist/_chunks/CaseInfoDialog.js.map +1 -1
  11. package/dist/_chunks/CaseSetInfoDialog.js +131 -131
  12. package/dist/_chunks/CaseSetInfoDialog.js.map +1 -1
  13. package/dist/_chunks/CaseTypeInfoDialog.js +63 -61
  14. package/dist/_chunks/CaseTypeInfoDialog.js.map +1 -1
  15. package/dist/_chunks/CasesAlreadyInCaseSetWarning.js +6 -6
  16. package/dist/_chunks/CasesAlreadyInCaseSetWarning.js.map +1 -1
  17. package/dist/_chunks/CompletCaseTypeLoader.js +3 -3
  18. package/dist/_chunks/CompletCaseTypeLoader.js.map +1 -1
  19. package/dist/_chunks/CreateEventDialogSuccessNotificationMessage.js +1 -1
  20. package/dist/_chunks/CreateEventDialogSuccessNotificationMessage.js.map +1 -1
  21. package/dist/_chunks/CustomTabPanel.js.map +1 -1
  22. package/dist/_chunks/Dashboard.js +399 -386
  23. package/dist/_chunks/Dashboard.js.map +1 -1
  24. package/dist/_chunks/DashboardStoreLoader.js +5 -5
  25. package/dist/_chunks/DashboardStoreLoader.js.map +1 -1
  26. package/dist/_chunks/DataCollectionAccessInfo.js +21 -21
  27. package/dist/_chunks/DataCollectionAccessInfo.js.map +1 -1
  28. package/dist/_chunks/EpiCurveUtil.js +4 -4
  29. package/dist/_chunks/EpiCurveUtil.js.map +1 -1
  30. package/dist/_chunks/EpiCurveWidget.js +189 -183
  31. package/dist/_chunks/EpiCurveWidget.js.map +1 -1
  32. package/dist/_chunks/FilterUtil.js +103 -101
  33. package/dist/_chunks/FilterUtil.js.map +1 -1
  34. package/dist/_chunks/FindSimilarCasesDialog.js +16 -16
  35. package/dist/_chunks/FindSimilarCasesDialog.js.map +1 -1
  36. package/dist/_chunks/FindSimilarCasesUtil.js +9 -9
  37. package/dist/_chunks/FindSimilarCasesUtil.js.map +1 -1
  38. package/dist/_chunks/HomePageTrends.js +8 -8
  39. package/dist/_chunks/HomePageTrends.js.map +1 -1
  40. package/dist/_chunks/LegendaItem.js +3 -3
  41. package/dist/_chunks/LegendaItem.js.map +1 -1
  42. package/dist/_chunks/LineListWidget.js +23 -21
  43. package/dist/_chunks/LineListWidget.js.map +1 -1
  44. package/dist/_chunks/PanelSeparator.js +374 -384
  45. package/dist/_chunks/PanelSeparator.js.map +1 -1
  46. package/dist/_chunks/Upload.js +222 -207
  47. package/dist/_chunks/Upload.js.map +1 -1
  48. package/dist/_chunks/UploadUtil.js +1970 -841
  49. package/dist/_chunks/UploadUtil.js.map +1 -1
  50. package/dist/_chunks/UserRightsDialog.js +12 -12
  51. package/dist/_chunks/UserRightsDialog.js.map +1 -1
  52. package/dist/_chunks/_MapCache.js +2 -2
  53. package/dist/_chunks/_baseGet.js +1 -1
  54. package/dist/_chunks/_baseGet.js.map +1 -1
  55. package/dist/_chunks/_baseIteratee.js +1 -1
  56. package/dist/_chunks/_baseIteratee.js.map +1 -1
  57. package/dist/_chunks/_setToString.js.map +1 -1
  58. package/dist/_chunks/{chunk-KS7C4IRE.js → chunk-BV7QT456.js} +330 -495
  59. package/dist/_chunks/chunk-BV7QT456.js.map +1 -0
  60. package/dist/_chunks/cloneDeep.js +11 -9
  61. package/dist/_chunks/cloneDeep.js.map +1 -1
  62. package/dist/_chunks/dashboardStore.js +259 -261
  63. package/dist/_chunks/dashboardStore.js.map +1 -1
  64. package/dist/_chunks/esm.js +2900 -2868
  65. package/dist/_chunks/esm.js.map +1 -1
  66. package/dist/_chunks/format.js +8 -8
  67. package/dist/_chunks/format.js.map +1 -1
  68. package/dist/_chunks/index.esm.js +919 -796
  69. package/dist/_chunks/index.esm.js.map +1 -1
  70. package/dist/_chunks/index.module.js +1 -1
  71. package/dist/_chunks/index.module.js.map +1 -1
  72. package/dist/_chunks/protectedTokens.js +79 -81
  73. package/dist/_chunks/protectedTokens.js.map +1 -1
  74. package/dist/_chunks/react.js +1 -1
  75. package/dist/_chunks/react.js.map +1 -1
  76. package/dist/_chunks/round.js +1 -1
  77. package/dist/_chunks/round.js.map +1 -1
  78. package/dist/_chunks/shallow.js +2 -2
  79. package/dist/_chunks/shallow.js.map +1 -1
  80. package/dist/_chunks/sync.js +198 -161
  81. package/dist/_chunks/sync.js.map +1 -1
  82. package/dist/_chunks/toDate.js +1 -1
  83. package/dist/_chunks/toDate.js.map +1 -1
  84. package/dist/_chunks/toString.js +1 -1
  85. package/dist/_chunks/toString.js.map +1 -1
  86. package/dist/_chunks/useUnit.js.map +1 -1
  87. package/dist/_chunks/vanilla.js +1 -1
  88. package/dist/_chunks/vanilla.js.map +1 -1
  89. package/dist/_chunks/yup.js +5 -5
  90. package/dist/_chunks/yup.js.map +1 -1
  91. package/dist/classes/filters/SelectionFilter.d.ts +2 -2
  92. package/dist/classes/filters/TreeFilter.d.ts +2 -2
  93. package/dist/classes/services/DataService/index.js +3 -3
  94. package/dist/classes/services/DataService/index.js.map +1 -1
  95. package/dist/classes/services/EventBusService/EventBusService.d.ts +1 -1
  96. package/dist/classes/services/EventBusService/index.js.map +1 -1
  97. package/dist/classes/services/LineListService/LineListServiceAbstract/index.js +1 -1
  98. package/dist/classes/services/LineListService/LineListServiceAbstract/index.js.map +1 -1
  99. package/dist/components/app/CaseDbApp/index.js +8 -5
  100. package/dist/components/app/CaseDbApp/index.js.map +1 -1
  101. package/dist/components/form/fields/ArrangementEditor/index.js +83 -83
  102. package/dist/components/form/fields/ArrangementEditor/index.js.map +1 -1
  103. package/dist/components/ui/AddCasesToEventDialog/AddCasesToEventDialog.d.ts +2 -2
  104. package/dist/components/ui/CaseContentFormDialog/CaseContentFormDialog.d.ts +2 -2
  105. package/dist/components/ui/CaseContentFormDialog/index.js +1 -1
  106. package/dist/components/ui/CaseContentFormDialog/index.js.map +1 -1
  107. package/dist/components/ui/CaseInfoDialog/CaseInfoDialog.d.ts +2 -2
  108. package/dist/components/ui/CaseSetInfoDialog/CaseSetInfoDialog.d.ts +2 -2
  109. package/dist/components/ui/CaseSummary/index.js +1 -1
  110. package/dist/components/ui/CaseSummary/index.js.map +1 -1
  111. package/dist/components/ui/CaseTypeInfoDialog/CaseTypeInfoDialog.d.ts +2 -2
  112. package/dist/components/ui/CaseTypeInfoDialog/CaseTypeInfoDialogContent.d.ts +1 -1
  113. package/dist/components/ui/CaseTypeInfoDialog/CaseTypeInfoDialogWithLoader.d.ts +2 -2
  114. package/dist/components/ui/ContextMenu/index.js.map +1 -1
  115. package/dist/components/ui/CreateEventDialog/CreateEventDialog.d.ts +2 -2
  116. package/dist/components/ui/CreateEventDialog/index.js +9 -9
  117. package/dist/components/ui/CreateEventDialog/index.js.map +1 -1
  118. package/dist/components/ui/Dashboard/DashboardDownloadSidebarItem.d.ts +1 -1
  119. package/dist/components/ui/Dashboard/DashboardSettingsSidebarItem.d.ts +1 -1
  120. package/dist/components/ui/Dashboard/DashboardWidget.d.ts +1 -1
  121. package/dist/components/ui/DashboardEditCases/index.js +1 -1
  122. package/dist/components/ui/DashboardEditCases/index.js.map +1 -1
  123. package/dist/components/ui/FileSelector/index.js +46 -46
  124. package/dist/components/ui/FileSelector/index.js.map +1 -1
  125. package/dist/components/ui/FindSimilarCasesDialog/FindSimilarCasesDialog.d.ts +2 -2
  126. package/dist/components/ui/Grouping/index.js +50 -50
  127. package/dist/components/ui/Grouping/index.js.map +1 -1
  128. package/dist/components/ui/HistogramWidget/index.js +1 -1
  129. package/dist/components/ui/HistogramWidget/index.js.map +1 -1
  130. package/dist/components/ui/MapWidget/index.js +7 -3
  131. package/dist/components/ui/MapWidget/index.js.map +1 -1
  132. package/dist/components/ui/RemoveCasesFromEventDialog/RemoveCasesFromEventDialog.d.ts +2 -2
  133. package/dist/components/ui/RemoveCasesFromEventDialog/index.js +6 -6
  134. package/dist/components/ui/RemoveCasesFromEventDialog/index.js.map +1 -1
  135. package/dist/components/ui/RemoveFindSimilarCasesResultDialog/RemoveFindSimilarCasesResultDialog.d.ts +2 -2
  136. package/dist/components/ui/SequenceDownloadDialog/SequenceDownloadDialog.d.ts +2 -2
  137. package/dist/components/ui/SequenceDownloadDialog/index.js +22 -22
  138. package/dist/components/ui/SequenceDownloadDialog/index.js.map +1 -1
  139. package/dist/components/ui/TreeDescription/index.js.map +1 -1
  140. package/dist/components/ui/TreeWidget/index.js +11 -11
  141. package/dist/components/ui/TreeWidget/index.js.map +1 -1
  142. package/dist/components/ui/Upload/UploadCaseResultTable.d.ts +2 -2
  143. package/dist/components/ui/Upload/UploadEditColumnValuesDialog.d.ts +2 -2
  144. package/dist/components/ui/UserRightsDialog/UserRightsDialog.d.ts +2 -2
  145. package/dist/components/ui/UsersEffectiveRightsDetailsDialog/UsersEffectiveRightsDetailsDialog.d.ts +2 -2
  146. package/dist/components/ui/UsersEffectiveRightsDetailsDialog/index.js +25 -11
  147. package/dist/components/ui/UsersEffectiveRightsDetailsDialog/index.js.map +1 -1
  148. package/dist/components/ui/Warning/index.js.map +1 -1
  149. package/dist/components/ui/WidgetHeaderIconButton/index.js.map +1 -1
  150. package/dist/components/ui/WidgetMenu/WidgetMenu.d.ts +1 -1
  151. package/dist/components/ui/WidgetMenu/index.js +2 -2
  152. package/dist/components/ui/WidgetMenu/index.js.map +1 -1
  153. package/dist/components/ui/WidgetUnavailable/index.js.map +1 -1
  154. package/dist/constants/query.d.ts +1 -1
  155. package/dist/constants/query.js +1 -1
  156. package/dist/constants/query.js.map +1 -1
  157. package/dist/context/caseAbac/CaseAbacContext.d.ts +1 -1
  158. package/dist/dataHooks/useAssemblyProtocolsQuery/index.js +3 -3
  159. package/dist/dataHooks/useAssemblyProtocolsQuery/index.js.map +1 -1
  160. package/dist/dataHooks/useAssemblyProtocolsQuery/useAssemblyProtocolsQuery.d.ts +1 -1
  161. package/dist/dataHooks/useCaseRightsQuery/index.js +2 -2
  162. package/dist/dataHooks/useCaseRightsQuery/index.js.map +1 -1
  163. package/dist/dataHooks/useCaseSetCategoriesQuery/index.js +3 -3
  164. package/dist/dataHooks/useCaseSetCategoriesQuery/index.js.map +1 -1
  165. package/dist/dataHooks/useCaseSetCategoriesQuery/useCaseSetCategoriesQuery.d.ts +1 -1
  166. package/dist/dataHooks/useCaseSetRightsQuery/index.js +2 -2
  167. package/dist/dataHooks/useCaseSetRightsQuery/index.js.map +1 -1
  168. package/dist/dataHooks/useCaseSetStatsQuery/index.js +3 -3
  169. package/dist/dataHooks/useCaseSetStatsQuery/index.js.map +1 -1
  170. package/dist/dataHooks/useCaseSetStatsQuery/useCaseSetStatsQuery.d.ts +1 -1
  171. package/dist/dataHooks/useCaseSetStatusesQuery/index.js +3 -3
  172. package/dist/dataHooks/useCaseSetStatusesQuery/index.js.map +1 -1
  173. package/dist/dataHooks/useCaseSetStatusesQuery/useCaseSetStatusesQuery.d.ts +1 -1
  174. package/dist/dataHooks/useCaseSetsQuery/index.js +3 -3
  175. package/dist/dataHooks/useCaseSetsQuery/index.js.map +1 -1
  176. package/dist/dataHooks/useCaseSetsQuery/useCaseSetsQuery.d.ts +1 -1
  177. package/dist/dataHooks/useCaseTypeSetCategoriesQuery/index.js +3 -3
  178. package/dist/dataHooks/useCaseTypeSetCategoriesQuery/index.js.map +1 -1
  179. package/dist/dataHooks/useCaseTypeSetCategoriesQuery/useCaseTypeSetCategoriesQuery.d.ts +1 -1
  180. package/dist/dataHooks/useCaseTypeSetCategoryPurposeQuery/index.js.map +1 -1
  181. package/dist/dataHooks/useCaseTypeSetCategoryPurposeQuery/useCaseTypeSetCategoryPurposeQuery.d.ts +1 -1
  182. package/dist/dataHooks/useCaseTypeSetMembersQuery/index.js +2 -2
  183. package/dist/dataHooks/useCaseTypeSetMembersQuery/index.js.map +1 -1
  184. package/dist/dataHooks/useCaseTypeSetsQuery/index.js +3 -3
  185. package/dist/dataHooks/useCaseTypeSetsQuery/index.js.map +1 -1
  186. package/dist/dataHooks/useCaseTypeSetsQuery/useCaseTypeSetsQuery.d.ts +1 -1
  187. package/dist/dataHooks/useCaseTypeStatsQuery/index.js +2 -2
  188. package/dist/dataHooks/useCaseTypeStatsQuery/index.js.map +1 -1
  189. package/dist/dataHooks/useCaseTypesQuery/index.js +3 -3
  190. package/dist/dataHooks/useCaseTypesQuery/index.js.map +1 -1
  191. package/dist/dataHooks/useCaseTypesQuery/useCaseTypesQuery.d.ts +1 -1
  192. package/dist/dataHooks/useColSetMembersQuery/index.js +2 -2
  193. package/dist/dataHooks/useColSetMembersQuery/index.js.map +1 -1
  194. package/dist/dataHooks/useColSetsQuery/index.js +3 -3
  195. package/dist/dataHooks/useColSetsQuery/index.js.map +1 -1
  196. package/dist/dataHooks/useColSetsQuery/useColSetsQuery.d.ts +1 -1
  197. package/dist/dataHooks/useColTypesQuery/index.js.map +1 -1
  198. package/dist/dataHooks/useColTypesQuery/useColTypesQuery.d.ts +1 -1
  199. package/dist/dataHooks/useColsQuery/index.js +3 -3
  200. package/dist/dataHooks/useColsQuery/index.js.map +1 -1
  201. package/dist/dataHooks/useColsQuery/useColsQuery.d.ts +1 -1
  202. package/dist/dataHooks/useConceptQuery/index.js +3 -3
  203. package/dist/dataHooks/useConceptQuery/index.js.map +1 -1
  204. package/dist/dataHooks/useConceptQuery/useConceptQuery.d.ts +1 -1
  205. package/dist/dataHooks/useConceptRelationTypeQuery/index.js.map +1 -1
  206. package/dist/dataHooks/useConceptRelationTypeQuery/useConceptRelationTypeQuery.d.ts +1 -1
  207. package/dist/dataHooks/useConceptSetTypeQuery/index.js.map +1 -1
  208. package/dist/dataHooks/useConceptSetTypeQuery/useConceptSetTypeQuery.d.ts +1 -1
  209. package/dist/dataHooks/useConceptSetsQuery/index.js +3 -3
  210. package/dist/dataHooks/useConceptSetsQuery/index.js.map +1 -1
  211. package/dist/dataHooks/useConceptSetsQuery/useConceptSetsQuery.d.ts +1 -1
  212. package/dist/dataHooks/useDataCollectionSetMembersQuery/index.js +2 -2
  213. package/dist/dataHooks/useDataCollectionSetMembersQuery/index.js.map +1 -1
  214. package/dist/dataHooks/useDataCollectionsQuery/index.js +3 -3
  215. package/dist/dataHooks/useDataCollectionsQuery/index.js.map +1 -1
  216. package/dist/dataHooks/useDataCollectionsQuery/useDataCollectionsQuery.d.ts +1 -1
  217. package/dist/dataHooks/useDimTypesQuery/index.js.map +1 -1
  218. package/dist/dataHooks/useDimTypesQuery/useDimTypesQuery.d.ts +1 -1
  219. package/dist/dataHooks/useDimsQuery/index.js +3 -3
  220. package/dist/dataHooks/useDimsQuery/index.js.map +1 -1
  221. package/dist/dataHooks/useDimsQuery/useDimsQuery.d.ts +1 -1
  222. package/dist/dataHooks/useDiseasesQuery/index.js +3 -3
  223. package/dist/dataHooks/useDiseasesQuery/index.js.map +1 -1
  224. package/dist/dataHooks/useDiseasesQuery/useDiseasesQuery.d.ts +1 -1
  225. package/dist/dataHooks/useEtiologicalAgentsQuery/index.js +3 -3
  226. package/dist/dataHooks/useEtiologicalAgentsQuery/index.js.map +1 -1
  227. package/dist/dataHooks/useEtiologicalAgentsQuery/useEtiologicalAgentsQuery.d.ts +1 -1
  228. package/dist/dataHooks/useGeneticDistanceProtocolsQuery/index.js +3 -3
  229. package/dist/dataHooks/useGeneticDistanceProtocolsQuery/index.js.map +1 -1
  230. package/dist/dataHooks/useGeneticDistanceProtocolsQuery/useGeneticDistanceProtocolsQuery.d.ts +1 -1
  231. package/dist/dataHooks/useOrganizationAccessCasePoliciesQuery/index.js +2 -2
  232. package/dist/dataHooks/useOrganizationAccessCasePoliciesQuery/index.js.map +1 -1
  233. package/dist/dataHooks/useOrganizationShareCasePoliciesQuery/index.js +2 -2
  234. package/dist/dataHooks/useOrganizationShareCasePoliciesQuery/index.js.map +1 -1
  235. package/dist/dataHooks/useRefColsQuery/index.js +3 -3
  236. package/dist/dataHooks/useRefColsQuery/index.js.map +1 -1
  237. package/dist/dataHooks/useRefColsQuery/useRefColsQuery.d.ts +1 -1
  238. package/dist/dataHooks/useRefColsValidationRulesQuery/index.js +2 -2
  239. package/dist/dataHooks/useRefColsValidationRulesQuery/index.js.map +1 -1
  240. package/dist/dataHooks/useRefDimsQuery/index.js +3 -3
  241. package/dist/dataHooks/useRefDimsQuery/index.js.map +1 -1
  242. package/dist/dataHooks/useRefDimsQuery/useRefDimsQuery.d.ts +1 -1
  243. package/dist/dataHooks/useRegionQuery/index.js +3 -3
  244. package/dist/dataHooks/useRegionQuery/index.js.map +1 -1
  245. package/dist/dataHooks/useRegionQuery/useRegionQuery.d.ts +1 -1
  246. package/dist/dataHooks/useRegionRelationTypeQuery/index.js.map +1 -1
  247. package/dist/dataHooks/useRegionRelationTypeQuery/useRegionRelationTypeQuery.d.ts +1 -1
  248. package/dist/dataHooks/useRegionSetsQuery/index.js +3 -3
  249. package/dist/dataHooks/useRegionSetsQuery/index.js.map +1 -1
  250. package/dist/dataHooks/useRegionSetsQuery/useRegionSetsQuery.d.ts +1 -1
  251. package/dist/dataHooks/useSequencingProtocolsQuery/index.js +3 -3
  252. package/dist/dataHooks/useSequencingProtocolsQuery/index.js.map +1 -1
  253. package/dist/dataHooks/useSequencingProtocolsQuery/useSequencingProtocolsQuery.d.ts +1 -1
  254. package/dist/dataHooks/useTreeAlgorithmCodesQuery/index.js.map +1 -1
  255. package/dist/dataHooks/useTreeAlgorithmCodesQuery/useTreeAlgorithmCodesQuery.d.ts +1 -1
  256. package/dist/dataHooks/useUnitQuery/useUnit.d.ts +1 -1
  257. package/dist/dataHooks/useUserAccessCasePoliciesQuery/index.js +2 -2
  258. package/dist/dataHooks/useUserAccessCasePoliciesQuery/index.js.map +1 -1
  259. package/dist/dataHooks/useUserEffectiveRightsQuery/index.js +3 -3
  260. package/dist/dataHooks/useUserEffectiveRightsQuery/index.js.map +1 -1
  261. package/dist/dataHooks/useUserEffectiveRightsQuery/useUserEffectiveRightsQuery.d.ts +1 -1
  262. package/dist/dataHooks/useUserShareCasePoliciesQuery/index.js +2 -2
  263. package/dist/dataHooks/useUserShareCasePoliciesQuery/index.js.map +1 -1
  264. package/dist/hooks/useOrganizationCasePolicyNameFactory/index.js +2 -2
  265. package/dist/hooks/useOrganizationCasePolicyNameFactory/index.js.map +1 -1
  266. package/dist/hooks/useOrganizationCasePolicyNameFactory/useOrganizationCasePolicyNameFactory.d.ts +1 -1
  267. package/dist/hooks/useUserCasePolicyNameFactory/index.js +3 -3
  268. package/dist/hooks/useUserCasePolicyNameFactory/index.js.map +1 -1
  269. package/dist/hooks/useUserCasePolicyNameFactory/useUserCasePolicyNameFactory.d.ts +1 -1
  270. package/dist/locale/nl.json +1 -1
  271. package/dist/models/config.d.ts +1 -1
  272. package/dist/models/dashboard.d.ts +1 -1
  273. package/dist/models/dashboard.js.map +1 -1
  274. package/dist/models/theme.d.ts +2 -2
  275. package/dist/pages/CaseDbUsersAdminPage/index.js +5 -5
  276. package/dist/pages/CaseDbUsersAdminPage/index.js.map +1 -1
  277. package/dist/pages/CaseSetCategoryAdminPage/index.js +4 -4
  278. package/dist/pages/CaseSetCategoryAdminPage/index.js.map +1 -1
  279. package/dist/pages/CaseSetStatusAdminPage/index.js +4 -4
  280. package/dist/pages/CaseSetStatusAdminPage/index.js.map +1 -1
  281. package/dist/pages/CaseTypeSetCategoriesAdminPage/index.js +4 -4
  282. package/dist/pages/CaseTypeSetCategoriesAdminPage/index.js.map +1 -1
  283. package/dist/pages/CaseTypeSetsAdminPage/index.js +6 -6
  284. package/dist/pages/CaseTypeSetsAdminPage/index.js.map +1 -1
  285. package/dist/pages/CaseTypesAdminPage/index.js +5 -5
  286. package/dist/pages/CaseTypesAdminPage/index.js.map +1 -1
  287. package/dist/pages/CasesDetailPage/index.js +5 -5
  288. package/dist/pages/CasesDetailPage/index.js.map +1 -1
  289. package/dist/pages/CasesPage/index.js +10 -10
  290. package/dist/pages/CasesPage/index.js.map +1 -1
  291. package/dist/pages/ColSetsAdminPage/index.js +6 -6
  292. package/dist/pages/ColSetsAdminPage/index.js.map +1 -1
  293. package/dist/pages/ColsAdminPage/index.js +5 -5
  294. package/dist/pages/ColsAdminPage/index.js.map +1 -1
  295. package/dist/pages/ConceptRelationsAdminPage/index.js +19 -19
  296. package/dist/pages/ConceptRelationsAdminPage/index.js.map +1 -1
  297. package/dist/pages/ConceptSetsAdminPage/index.js +5 -5
  298. package/dist/pages/ConceptSetsAdminPage/index.js.map +1 -1
  299. package/dist/pages/ConceptsAdminPage/index.js +5 -5
  300. package/dist/pages/ConceptsAdminPage/index.js.map +1 -1
  301. package/dist/pages/DataCollectionSetsAdminPage/index.js +12 -12
  302. package/dist/pages/DataCollectionSetsAdminPage/index.js.map +1 -1
  303. package/dist/pages/DataCollectionVisualizationPage/index.js +4 -4
  304. package/dist/pages/DataCollectionVisualizationPage/index.js.map +1 -1
  305. package/dist/pages/DataCollectionsAdminPage/index.js +4 -4
  306. package/dist/pages/DataCollectionsAdminPage/index.js.map +1 -1
  307. package/dist/pages/DimsAdminPage/index.js +6 -6
  308. package/dist/pages/DimsAdminPage/index.js.map +1 -1
  309. package/dist/pages/DiseasesAdminPage/index.js +4 -4
  310. package/dist/pages/DiseasesAdminPage/index.js.map +1 -1
  311. package/dist/pages/EtiologicalAgentsAdminPage/index.js +4 -4
  312. package/dist/pages/EtiologicalAgentsAdminPage/index.js.map +1 -1
  313. package/dist/pages/EtiologiesAdminPage/index.js +3 -3
  314. package/dist/pages/EtiologiesAdminPage/index.js.map +1 -1
  315. package/dist/pages/EventsDetailPage/index.js +5 -5
  316. package/dist/pages/EventsDetailPage/index.js.map +1 -1
  317. package/dist/pages/EventsPage/index.js +11 -11
  318. package/dist/pages/EventsPage/index.js.map +1 -1
  319. package/dist/pages/HomePage/index.js +2 -2
  320. package/dist/pages/HomePage/index.js.map +1 -1
  321. package/dist/pages/OrganizationAccessCasePoliciesAdminPage/index.js +4 -4
  322. package/dist/pages/OrganizationAccessCasePoliciesAdminPage/index.js.map +1 -1
  323. package/dist/pages/OrganizationShareCasePoliciesAdminPage/index.js +4 -4
  324. package/dist/pages/OrganizationShareCasePoliciesAdminPage/index.js.map +1 -1
  325. package/dist/pages/RefColsAdminPage/index.js +7 -7
  326. package/dist/pages/RefColsAdminPage/index.js.map +1 -1
  327. package/dist/pages/RefDimsAdminPage/index.js +5 -5
  328. package/dist/pages/RefDimsAdminPage/index.js.map +1 -1
  329. package/dist/pages/RegionRelationsAdminPage/index.js +3 -3
  330. package/dist/pages/RegionRelationsAdminPage/index.js.map +1 -1
  331. package/dist/pages/RegionSetShapesAdminPage/index.js +4 -4
  332. package/dist/pages/RegionSetShapesAdminPage/index.js.map +1 -1
  333. package/dist/pages/RegionSetsAdminPage/index.js +5 -5
  334. package/dist/pages/RegionSetsAdminPage/index.js.map +1 -1
  335. package/dist/pages/RegionsAdminPage/index.js +5 -5
  336. package/dist/pages/RegionsAdminPage/index.js.map +1 -1
  337. package/dist/pages/TrendsPage/index.js +1 -1
  338. package/dist/pages/TrendsPage/index.js.map +1 -1
  339. package/dist/pages/UploadPage/index.js +1 -1
  340. package/dist/pages/UploadPage/index.js.map +1 -1
  341. package/dist/pages/UserAccessCasePoliciesAdminPage/index.js +4 -4
  342. package/dist/pages/UserAccessCasePoliciesAdminPage/index.js.map +1 -1
  343. package/dist/pages/UserEffectiveRightsAdminPage/index.js +12 -12
  344. package/dist/pages/UserEffectiveRightsAdminPage/index.js.map +1 -1
  345. package/dist/pages/UserEffectiveRightsTesterAdminPage/index.js +8 -8
  346. package/dist/pages/UserEffectiveRightsTesterAdminPage/index.js.map +1 -1
  347. package/dist/pages/UserShareCasePoliciesAdminPage/index.js +4 -4
  348. package/dist/pages/UserShareCasePoliciesAdminPage/index.js.map +1 -1
  349. package/dist/routes/adminRoutes.d.ts +1 -1
  350. package/dist/routes/index.js +11 -8
  351. package/dist/routes/index.js.map +1 -1
  352. package/dist/routes/routes.d.ts +1 -1
  353. package/dist/setup/setup.js +5 -5
  354. package/dist/setup/setup.js.map +1 -1
  355. package/dist/stores/dashboardStore/dashboardStore.d.ts +1 -1
  356. package/dist/stores/uploadStore/index.js +2 -2
  357. package/dist/stores/uploadStore/index.js.map +1 -1
  358. package/dist/stores/uploadStore/uploadStore.d.ts +1 -1
  359. package/dist/stores/userProfileStore/index.js +2 -2
  360. package/dist/stores/userProfileStore/index.js.map +1 -1
  361. package/dist/theme/demoTheme/index.js +2 -2
  362. package/dist/theme/demoTheme/index.js.map +1 -1
  363. package/dist/utils/CaseDbDataUtil/CaseDbDataUtil.d.ts +1 -1
  364. package/dist/utils/CaseDbDataUtil/index.js +1 -1
  365. package/dist/utils/CaseDbDataUtil/index.js.map +1 -1
  366. package/dist/utils/CaseDbStandardConfigUtil/index.js +2488 -1408
  367. package/dist/utils/CaseDbStandardConfigUtil/index.js.map +1 -1
  368. package/dist/utils/CaseDbTableUtil/CaseDbTableUtil.d.ts +1 -1
  369. package/dist/utils/CaseDbTableUtil/index.js +1 -1
  370. package/dist/utils/CaseDbTableUtil/index.js.map +1 -1
  371. package/dist/utils/CaseSelectionUtil/index.js.map +1 -1
  372. package/dist/utils/CaseTypeFormUtil/CaseTypeFormUtil.d.ts +1 -1
  373. package/dist/utils/CaseTypeFormUtil/index.js +7 -10
  374. package/dist/utils/CaseTypeFormUtil/index.js.map +1 -1
  375. package/dist/utils/CaseTypeUtil/index.js +1 -1
  376. package/dist/utils/CaseTypeUtil/index.js.map +1 -1
  377. package/dist/utils/CaseUtil/index.js +3 -3
  378. package/dist/utils/CaseUtil/index.js.map +1 -1
  379. package/dist/utils/DashboardUtil/index.js +1 -1
  380. package/dist/utils/DashboardUtil/index.js.map +1 -1
  381. package/dist/utils/DataSetUtil/index.js.map +1 -1
  382. package/dist/utils/FileUtil/index.js +1 -1
  383. package/dist/utils/FileUtil/index.js.map +1 -1
  384. package/dist/utils/FilterUtil/FilterUtil.d.ts +2 -2
  385. package/dist/utils/HistogramUtil/index.js +1 -1
  386. package/dist/utils/HistogramUtil/index.js.map +1 -1
  387. package/dist/utils/MapUtil/index.js +1 -1
  388. package/dist/utils/MapUtil/index.js.map +1 -1
  389. package/dist/utils/StratificationUtil/index.js +3 -2
  390. package/dist/utils/StratificationUtil/index.js.map +1 -1
  391. package/dist/utils/UploadUtil/UploadUtil.d.ts +1 -1
  392. package/package.json +11 -11
  393. package/dist/_chunks/chunk-KS7C4IRE.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"CaseSetInfoDialog.js","names":[],"sources":["../../src/components/ui/CaseSetInfoDialog/CaseSetDescription.tsx","../../src/components/ui/CaseSetInfoDialog/CaseSetSharingForm.tsx","../../src/components/ui/CaseSetInfoDialog/CaseSetSharingInfo.tsx","../../src/components/ui/CaseSetInfoDialog/CaseSetForm.tsx","../../src/components/ui/CaseSetInfoDialog/CaseSetContent.tsx","../../src/components/ui/CaseSetInfoDialog/CaseSetInfoDialog.tsx"],"sourcesContent":["import {\n Box,\n Typography,\n} from '@mui/material';\nimport type { BoxProps } from '@mui/material';\nimport { useTranslation } from 'react-i18next';\nimport type { CaseDbCaseSet } from '@gen-epix/api-casedb';\nimport { RichTextEditorContent } from '@gen-epix/ui-form/components/fields/RichTextEditor';\n\n\nexport type CaseSetDescriptionProps = {\n readonly caseSet: CaseDbCaseSet;\n} & BoxProps;\nexport const CaseSetDescription = ({ caseSet, ...boxProps }: CaseSetDescriptionProps) => {\n const { t } = useTranslation();\n return (\n <Box {...boxProps}>\n <Typography variant={'h6'}>\n {t`Description`}\n </Typography>\n <Box>\n {caseSet?.description && (\n <RichTextEditorContent source={caseSet?.description || ''} />\n )}\n {!caseSet?.description && (\n <Box sx={{ fontStyle: 'italic' }}>\n {t`None`}\n </Box>\n )}\n </Box>\n </Box>\n );\n\n};\n","import {\n useCallback,\n useMemo,\n useState,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n array,\n boolean,\n object,\n string,\n} from 'yup';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport type { Resolver } from 'react-hook-form';\nimport { useForm } from 'react-hook-form';\nimport difference from 'lodash/difference';\nimport type { BoxProps } from '@mui/material';\nimport { Box } from '@mui/material';\nimport type { CaseDbCaseSet } from '@gen-epix/api-casedb';\nimport { CaseDbCaseApi } from '@gen-epix/api-casedb';\nimport { NotificationService } from '@gen-epix/ui/classes/services/NotificationService';\nimport { QueryClientService } from '@gen-epix/ui/classes/services/QueryClientService';\nimport { Spinner } from '@gen-epix/ui/components/ui/Spinner';\nimport { GenericForm } from '@gen-epix/ui-form/components/helpers/GenericForm';\nimport type { FormFieldDefinition } from '@gen-epix/ui-form/models/form';\nimport { FORM_FIELD_DEFINITION_TYPE } from '@gen-epix/ui-form/models/form';\nimport { FormUtil } from '@gen-epix/ui-form/utils/FormUtil';\n\nimport { useCaseAbacContext } from '../../../context/caseAbac';\nimport { CaseUtil } from '../../../utils/CaseUtil';\nimport { CASEDB_QUERY_KEY } from '../../../constants/query';\n\n\nexport type CaseSetSharingFormProps = {\n readonly caseSet: CaseDbCaseSet;\n readonly caseTypeId: string;\n readonly formId: string;\n readonly onFinish: () => void;\n readonly onIsSavingChange: (isSaving: boolean) => void;\n} & BoxProps;\n\ntype FormFields = {\n dataCollectionIds?: string[];\n shouldApplySharingToCases?: boolean;\n};\n\nexport const CaseSetSharingForm = ({ caseSet, caseTypeId, formId, onFinish, onIsSavingChange, ...boxProps }: CaseSetSharingFormProps) => {\n const { t } = useTranslation();\n const [isSaving, setIsSaving] = useState(false);\n\n const schema = useMemo(() => object<FormFields>().shape({\n dataCollectionIds: array().of(string().uuid4()).required(),\n shouldApplySharingToCases: boolean().required(),\n }), []);\n\n const caseAbacContext = useCaseAbacContext();\n\n const onFormSubmit = useCallback(({ dataCollectionIds, shouldApplySharingToCases }: FormFields) => {\n const perform = async () => {\n setIsSaving(true);\n onIsSavingChange(true);\n const queryKeys = QueryClientService.getInstance().getQueryKeyDependencies([CASEDB_QUERY_KEY.CASE_SET_DATA_COLLECTION_LINKS], true);\n const notificationKey = NotificationService.getInstance().showNotification({\n isLoading: true,\n message: t('Saving case set data collections'),\n severity: 'info',\n });\n try {\n await QueryClientService.getInstance().cancelQueries(queryKeys);\n const rights = caseAbacContext?.rights?.[0];\n const dataCollectionIdsToAdd = difference(dataCollectionIds, rights.shared_in_data_collection_ids);\n const dataCollectionIdsToRemove = difference(rights.shared_in_data_collection_ids, dataCollectionIds);\n\n if (dataCollectionIdsToAdd.length > 0) {\n await CaseDbCaseApi.getInstance().caseSetDataCollectionLinksPostSome(dataCollectionIdsToAdd.map(data_collection_id => ({\n case_set_id: caseSet.id,\n data_collection_id,\n })));\n }\n if (dataCollectionIdsToRemove.length > 0) {\n await CaseDbCaseApi.getInstance().caseSetDataCollectionLinksDeleteSome(caseAbacContext.itemDataCollectionLinks[0]?.filter(x => dataCollectionIdsToRemove.includes(x.data_collection_id)).map(x => x.id).join(','));\n }\n NotificationService.getInstance().fulfillNotification(notificationKey, t('Successfully saved case set data collections.'), 'success');\n } catch (_error) {\n NotificationService.getInstance().fulfillNotification(notificationKey, t('Could not save case set data collections.'), 'error');\n } finally {\n await QueryClientService.getInstance().invalidateQueryKeys(queryKeys);\n if (shouldApplySharingToCases) {\n await CaseUtil.applyDataCollectionLinks({\n caseSetDataCollectionIds: dataCollectionIds,\n caseSetId: caseSet.id,\n caseTypeId,\n });\n }\n\n setIsSaving(false);\n onIsSavingChange(false);\n onFinish();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n perform();\n }, [onIsSavingChange, t, caseAbacContext?.rights, caseAbacContext.itemDataCollectionLinks, caseSet.id, onFinish, caseTypeId]);\n\n const formFieldDefinitions = useMemo<FormFieldDefinition<FormFields>[]>(() => [\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Data collections`,\n multiple: true,\n name: 'dataCollectionIds',\n options: caseAbacContext?.itemDataCollectionOptions?.[0] ?? [],\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.BOOLEAN,\n label: t`Should the same sharing be applied to the cases in the event?`,\n name: 'shouldApplySharingToCases',\n } as const satisfies FormFieldDefinition<FormFields>,\n ] as const, [caseAbacContext, t]);\n\n const item = useMemo<FormFields>(() => {\n return {\n dataCollectionIds: caseAbacContext?.rights?.[0]?.shared_in_data_collection_ids ?? [],\n shouldApplySharingToCases: true,\n };\n }, [caseAbacContext]);\n\n const values = useMemo<FormFields>(() => FormUtil.createFormValues(formFieldDefinitions, item), [formFieldDefinitions, item]);\n\n const formMethods = useForm<FormFields>({\n resolver: yupResolver(schema) as Resolver<FormFields>,\n values,\n });\n const { handleSubmit } = formMethods;\n\n\n if (isSaving) {\n return (\n <Spinner\n inline\n label={t`Saving case set data collections`}\n />\n );\n }\n\n return (\n <Box {...boxProps}>\n <GenericForm<FormFields>\n formFieldDefinitions={formFieldDefinitions}\n formId={formId}\n formMethods={formMethods}\n onSubmit={handleSubmit(onFormSubmit)}\n schema={schema}\n />\n </Box>\n );\n};\n","import { useTranslation } from 'react-i18next';\nimport {\n Box,\n Typography,\n} from '@mui/material';\nimport type { BoxProps } from '@mui/material';\n\nimport { DataCollectionAccessInfo } from '../DataCollectionAccessInfo';\n\nexport type CaseSetSharingInfoProps = BoxProps;\n\nexport const CaseSetSharingInfo = ({ ...boxProps }: CaseSetSharingInfoProps) => {\n const { t } = useTranslation();\n\n return (\n <Box {...boxProps}>\n <Typography variant={'h6'}>\n {t`Shared in`}\n </Typography>\n <DataCollectionAccessInfo />\n </Box>\n );\n};\n","import {\n useCallback,\n useEffect,\n useMemo,\n} from 'react';\nimport { t } from 'i18next';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport type { Resolver } from 'react-hook-form';\nimport { useForm } from 'react-hook-form';\nimport {\n object,\n string,\n} from 'yup';\nimport type { CaseDbCaseSet } from '@gen-epix/api-casedb';\nimport { CaseDbCaseApi } from '@gen-epix/api-casedb';\nimport type { OmitWithMetaData } from '@gen-epix/ui/models/data';\nimport { QueryClientService } from '@gen-epix/ui/classes/services/QueryClientService';\nimport { Spinner } from '@gen-epix/ui/components/ui/Spinner';\nimport { useEditMutation } from '@gen-epix/ui/hooks/useEditMutation';\nimport { GenericForm } from '@gen-epix/ui-form/components/helpers/GenericForm';\nimport type { FormFieldDefinition } from '@gen-epix/ui-form/models/form';\nimport { FORM_FIELD_DEFINITION_TYPE } from '@gen-epix/ui-form/models/form';\nimport { FormUtil } from '@gen-epix/ui-form/utils/FormUtil';\nimport { SchemaUtil } from '@gen-epix/ui-form/utils/SchemaUtil';\n\nimport { CreateEventDialogSuccessNotificationMessage } from '../CreateEventDialog/CreateEventDialogSuccessNotificationMessage';\nimport { useCaseSetCategoryOptionsQuery } from '../../../dataHooks/useCaseSetCategoriesQuery';\nimport { useCaseSetStatusOptionsQuery } from '../../../dataHooks/useCaseSetStatusesQuery';\nimport { useCaseTypeOptionsQuery } from '../../../dataHooks/useCaseTypesQuery';\nimport { CASEDB_QUERY_KEY } from '../../../constants/query';\n\nexport type CaseSetFormProps = {\n readonly caseSet: CaseDbCaseSet;\n readonly formId: string;\n readonly onFinish: () => void;\n readonly onIsSavingChange: (isSaving: boolean) => void;\n};\n\ntype FormFields = OmitWithMetaData<CaseDbCaseSet, 'case_set_category' | 'case_set_date' | 'case_set_status' | 'case_type' | 'created_in_data_collection_id' | 'created_in_data_collection'>;\n\nexport const CaseSetForm = ({ caseSet, formId, onFinish, onIsSavingChange }: CaseSetFormProps) => {\n const caseTypeOptionsQuery = useCaseTypeOptionsQuery();\n const caseSetCategoryOptionsQuery = useCaseSetCategoryOptionsQuery();\n const caseSetStatusOptionsQuery = useCaseSetStatusOptionsQuery();\n\n const schema = useMemo(() => object<FormFields>().shape({\n case_set_category_id: string().uuid4().required(),\n case_set_status_id: string().uuid4().required(),\n case_type_id: string().uuid4().required(),\n code: SchemaUtil.code,\n description: SchemaUtil.description,\n name: SchemaUtil.name,\n }), []);\n\n\n const onSuccess = useCallback(() => {\n onFinish();\n }, [onFinish]);\n\n const onError = useCallback(() => {\n onFinish();\n }, [onFinish]);\n\n const formFieldDefinitions = useMemo<FormFieldDefinition<FormFields>[]>(() => {\n return [\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n disabled: !!caseSet,\n label: t`Case type`,\n loading: caseTypeOptionsQuery.isLoading,\n name: 'case_type_id',\n options: caseTypeOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Event name`,\n name: 'name',\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.RICH_TEXT,\n label: t`Description`,\n name: 'description',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Category`,\n loading: caseSetCategoryOptionsQuery.isLoading,\n name: 'case_set_category_id',\n options: caseSetCategoryOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Status`,\n loading: caseSetStatusOptionsQuery.isLoading,\n name: 'case_set_status_id',\n options: caseSetStatusOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n ] as const;\n }, [caseSet, caseSetCategoryOptionsQuery.isLoading, caseSetCategoryOptionsQuery.options, caseSetStatusOptionsQuery.isLoading, caseSetStatusOptionsQuery.options, caseTypeOptionsQuery.isLoading, caseTypeOptionsQuery.options]);\n\n const { isMutating: isEditing, mutate: mutateEdit, setPreviousItem } = useEditMutation<CaseDbCaseSet, FormFields>({\n getErrorNotificationMessage: (data) => t('Failed to edit event: {{name}}', { name: data.name }),\n getIntermediateItem: (variables: FormFields, previousItem: CaseDbCaseSet) => ({ ...previousItem, ...variables }),\n getProgressNotificationMessage: (data) => t('Saving event: {{name}}', { name: data.name }),\n getSuccessNotificationMessage: (item) => <CreateEventDialogSuccessNotificationMessage caseSet={item} />,\n onError,\n onSuccess,\n queryFn: async (formData: FormFields, item: CaseDbCaseSet): Promise<CaseDbCaseSet> => {\n const result = await CaseDbCaseApi.getInstance().caseSetsPutOne(item.id, { ...item, ...formData });\n return result.data;\n },\n resourceQueryKey: QueryClientService.getInstance().getGenericKey(CASEDB_QUERY_KEY.CASE_SETS),\n });\n\n useEffect(() => {\n onIsSavingChange(isEditing);\n }, [isEditing, onIsSavingChange]);\n\n const onFormSubmit = useCallback((formData: FormFields) => {\n setPreviousItem(caseSet);\n mutateEdit(formData);\n }, [caseSet, mutateEdit, setPreviousItem]);\n\n const values = useMemo(() => FormUtil.createFormValues<FormFields, CaseDbCaseSet>(formFieldDefinitions, caseSet), [formFieldDefinitions, caseSet]);\n\n const formMethods = useForm<FormFields>({\n resolver: yupResolver(schema) as unknown as Resolver<FormFields>,\n values,\n });\n const { handleSubmit } = formMethods;\n\n if (isEditing) {\n return (\n <Spinner\n inline\n label={t`Saving event data`}\n />\n );\n }\n\n return (\n <GenericForm<FormFields>\n formFieldDefinitions={formFieldDefinitions}\n formId={formId}\n formMethods={formMethods}\n onSubmit={handleSubmit(onFormSubmit)}\n schema={schema}\n />\n );\n};\n","import type { BoxProps } from '@mui/material';\nimport {\n Box,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n Typography,\n} from '@mui/material';\nimport { useTranslation } from 'react-i18next';\nimport { format } from 'date-fns';\nimport type { CaseDbCaseSet } from '@gen-epix/api-casedb';\nimport { ResponseHandler } from '@gen-epix/ui/components/ui/ResponseHandler';\nimport { useArray } from '@gen-epix/ui-core/hooks/useArray';\nimport { DATE_FORMAT } from '@gen-epix/ui-core/constants/date';\n\nimport { useCaseSetCategoryMapQuery } from '../../../dataHooks/useCaseSetCategoriesQuery';\nimport { useCaseSetStatusMapQuery } from '../../../dataHooks/useCaseSetStatusesQuery';\nimport { useCaseTypeMapQuery } from '../../../dataHooks/useCaseTypesQuery';\n\nexport type CaseSetContentProps = {\n readonly caseSet: CaseDbCaseSet;\n} & BoxProps;\n\nexport const CaseSetContent = ({ caseSet, ...boxProps }: CaseSetContentProps) => {\n const caseSetCategoryMapQuery = useCaseSetCategoryMapQuery();\n const caseSetStatusMapQuery = useCaseSetStatusMapQuery();\n const caseTypeMapQuery = useCaseTypeMapQuery();\n const { t } = useTranslation();\n\n const loadables = useArray([caseSetCategoryMapQuery, caseSetStatusMapQuery, caseTypeMapQuery]);\n return (\n <Box {...boxProps}>\n <Typography variant={'h6'}>\n {t`Content`}\n </Typography>\n <ResponseHandler\n inlineSpinner\n loadables={loadables}\n shouldHideActionButtons\n >\n <Table size={'small'}>\n <TableHead>\n <TableRow>\n <TableCell\n sx={{\n width: 'calc(100% * 1/3)',\n }}\n >\n {t`Column`}\n </TableCell>\n <TableCell\n sx={{\n width: 'calc(100% * 2/3)',\n }}\n >\n {t`Value`}\n </TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n <TableRow>\n <TableCell>\n {t`Name`}\n </TableCell>\n <TableCell>\n {caseSet.name}\n </TableCell>\n </TableRow>\n <TableRow>\n <TableCell>\n {t`Status`}\n </TableCell>\n <TableCell>\n {caseSetStatusMapQuery.map.get(caseSet.case_set_status_id)?.name}\n </TableCell>\n </TableRow>\n <TableRow>\n <TableCell>\n {t`Category`}\n </TableCell>\n <TableCell>\n {caseSetCategoryMapQuery.map.get(caseSet.case_set_category_id)?.name}\n </TableCell>\n </TableRow>\n <TableRow>\n <TableCell>\n {t`Type`}\n </TableCell>\n <TableCell>\n {caseTypeMapQuery.map.get(caseSet.case_type_id)?.name}\n </TableCell>\n </TableRow>\n <TableRow>\n <TableCell>\n {t`Created at`}\n </TableCell>\n <TableCell>\n {caseSet.case_set_date ? format(caseSet.case_set_date, DATE_FORMAT.DATE_TIME) : t`Unknown`}\n </TableCell>\n </TableRow>\n </TableBody>\n </Table>\n </ResponseHandler>\n </Box>\n );\n};\n","import type { ReactElement } from 'react';\nimport SaveIcon from '@mui/icons-material/Save';\nimport EditIcon from '@mui/icons-material/Edit';\nimport ShareIcon from '@mui/icons-material/Share';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport ArrowLeftIcon from '@mui/icons-material/ArrowLeft';\nimport {\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport type {\n CaseDbCaseSet,\n CaseDbTypedUuidSetFilter,\n} from '@gen-epix/api-casedb';\nimport { CaseDbCaseApi } from '@gen-epix/api-casedb';\nimport type { ConfirmationRefMethods } from '@gen-epix/ui/components/ui/Confirmation';\nimport type { DialogAction } from '@gen-epix/ui/components/ui/Dialog';\nimport type {\n WithDialogRefMethods,\n WithDialogRenderProps,\n} from '@gen-epix/ui/hoc/withDialog';\nimport { Confirmation } from '@gen-epix/ui/components/ui/Confirmation';\nimport { QueryClientService } from '@gen-epix/ui/classes/services/QueryClientService';\nimport { ResponseHandler } from '@gen-epix/ui/components/ui/ResponseHandler';\nimport { RouterService } from '@gen-epix/ui/classes/services/RouterService';\nimport { Spinner } from '@gen-epix/ui/components/ui/Spinner';\nimport { useDeleteMutation } from '@gen-epix/ui/hooks/useDeleteMutation';\nimport { useItemQuery } from '@gen-epix/ui/hooks/useItemQuery';\nimport { useQueryMemo } from '@gen-epix/ui/hooks/useQueryMemo';\nimport { withDialog } from '@gen-epix/ui/hoc/withDialog';\nimport { TestIdUtil } from '@gen-epix/ui-core/utils/TestIdUtil';\nimport { useArray } from '@gen-epix/ui-core/hooks/useArray';\n\nimport type { CaseAbacContext } from '../../../context/caseAbac';\nimport { CaseAbacContextProvider } from '../../../context/caseAbac';\nimport { useCaseSetRightsQuery } from '../../../dataHooks/useCaseSetRightsQuery';\nimport {\n useDataCollectionOptionsQuery,\n useDataCollectionsMapQuery,\n useDataCollectionsQuery,\n} from '../../../dataHooks/useDataCollectionsQuery';\nimport { CaseSetUtil } from '../../../utils/CaseSetUtil';\nimport { CASEDB_QUERY_KEY } from '../../../constants/query';\n\nimport { CaseSetDescription } from './CaseSetDescription';\nimport { CaseSetSharingForm } from './CaseSetSharingForm';\nimport { CaseSetSharingInfo } from './CaseSetSharingInfo';\nimport { CaseSetForm } from './CaseSetForm';\nimport { CaseSetContent } from './CaseSetContent';\n\n\nexport interface CaseSetInfoDialogOpenProps {\n readonly caseSetId: string;\n readonly caseTypeId: string;\n}\n\nexport interface CaseSetInfoDialogProps extends WithDialogRenderProps<CaseSetInfoDialogOpenProps> {\n readonly showNavigationButton?: boolean;\n}\n\nexport type CaseSetInfoDialogRefMethods = WithDialogRefMethods<CaseSetInfoDialogProps, CaseSetInfoDialogOpenProps>;\n\nexport const CaseSetInfoDialog = withDialog<CaseSetInfoDialogProps, CaseSetInfoDialogOpenProps>((\n {\n onActionsChange,\n onClose,\n onPermalinkChange,\n onTitleChange,\n openProps,\n showNavigationButton,\n }: CaseSetInfoDialogProps,\n): ReactElement => {\n const { t } = useTranslation();\n const caseSetIds = useMemo(() => [openProps.caseSetId], [openProps.caseSetId]);\n const caseSetRightsQuery = useCaseSetRightsQuery(caseSetIds);\n const dataCollectionsQuery = useDataCollectionsQuery();\n const dataCollectionsMapQuery = useDataCollectionsMapQuery();\n const dataCollectionOptionsQuery = useDataCollectionOptionsQuery();\n const [isEditingCaseSetContent, setIsEditingCaseSetContent] = useState(false);\n const [isEditingDataCollections, setIsEditingDataCollections] = useState(false);\n const [isEpiCaseSetFormSaving, setIsEpiCaseSetFormSaving] = useState(false);\n const [isEpiCaseSetDataCollectionFormSaving, setIsEpiCaseSetDataCollectionFormSaving] = useState(false);\n const [isRefreshingData, setIsRefreshingData] = useState(false);\n const deleteConfirmationRef = useRef<ConfirmationRefMethods>(null);\n const valuesFormId = useId();\n const dataCollectionsFormId = useId();\n const loadables = useArray([caseSetRightsQuery, dataCollectionsQuery, dataCollectionsMapQuery, dataCollectionOptionsQuery]);\n\n\n const onDeleteSuccess = useCallback(() => {\n onClose();\n }, [onClose]);\n\n const onDeleteError = useCallback(() => {\n onClose();\n }, [onClose]);\n\n const { isMutating: isDeleteMutating, mutate: deleteMutate } = useDeleteMutation<CaseDbCaseSet>({\n associationQueryKeys: QueryClientService.getInstance().getQueryKeyDependencies([CASEDB_QUERY_KEY.CASE_SETS], true),\n getErrorNotificationMessage: (data) => t('Unable to remove event: {{name}}.', { name: data.name }),\n getProgressNotificationMessage: (data) => t('Deleting event: {{name}}...', { name: data.name }),\n getSuccessNotificationMessage: (data) => t('Event: {{name}}, has been removed.', { name: data.name }),\n onError: onDeleteError,\n onSuccess: onDeleteSuccess,\n queryFn: async (item: CaseDbCaseSet) => {\n return await CaseDbCaseApi.getInstance().caseSetsDeleteOne(item.id);\n },\n resourceQueryKey: QueryClientService.getInstance().getGenericKey(CASEDB_QUERY_KEY.CASE_SETS),\n });\n\n const { data: caseSet, error: caseSetError, isLoading: isCaseSetLoading } = useItemQuery<CaseDbCaseSet>({\n baseQueryKey: CASEDB_QUERY_KEY.CASE_SETS,\n itemId: openProps.caseSetId,\n useQueryOptions: {\n enabled: !isDeleteMutating,\n queryFn: async ({ signal }) => {\n const response = await CaseDbCaseApi.getInstance().caseSetsGetOne(openProps.caseSetId, { signal });\n return response.data;\n },\n },\n });\n\n const caseSetDataCollectionLinksFilter = useMemo<CaseDbTypedUuidSetFilter>(() => ({\n invert: false,\n key: 'case_set_id',\n members: [caseSet?.id],\n type: 'UUID_SET',\n }), [caseSet?.id]);\n const { data: caseSetDataCollectionLinks, error: caseSetDataCollectionLinksError, isLoading: isSetCaseDataCollectionLinksLoading } = useQueryMemo({\n enabled: !!caseSet && !isDeleteMutating,\n queryFn: async ({ signal }) => {\n const response = await CaseDbCaseApi.getInstance().caseSetDataCollectionLinksPostQuery(caseSetDataCollectionLinksFilter, null, null, { signal });\n return response.data;\n },\n queryKey: QueryClientService.getInstance().getGenericKey(CASEDB_QUERY_KEY.CASE_SET_DATA_COLLECTION_LINKS, caseSetDataCollectionLinksFilter),\n });\n\n const canEdit = useMemo(() => {\n return !!caseSetRightsQuery.data && caseSetRightsQuery.data.some((right) => right.is_full_access || right.write_case_set);\n }, [caseSetRightsQuery.data]);\n\n const canShare = useMemo(() => {\n return !!caseSetRightsQuery.data && caseSetRightsQuery.data.some((right) => right.is_full_access || right.remove_data_collection_ids.length || right.add_data_collection_ids.length);\n }, [caseSetRightsQuery.data]);\n\n const canDelete = useCallback(() => {\n return !!caseSetRightsQuery.data && caseSetRightsQuery.data.some((right) => right.is_full_access || right.can_delete);\n }, [caseSetRightsQuery]);\n\n const onEditCaseContentButtonClick = useCallback(() => {\n setIsEditingCaseSetContent(true);\n }, []);\n\n const onEditDataCollectionsButtonClick = useCallback(() => {\n setIsEditingDataCollections(true);\n }, []);\n\n const onGoBackButtonClick = useCallback(() => {\n setIsEditingCaseSetContent(false);\n setIsEditingDataCollections(false);\n }, []);\n\n const onFinish = useCallback(() => {\n setIsEpiCaseSetFormSaving(false);\n setIsEpiCaseSetDataCollectionFormSaving(false);\n setIsRefreshingData(true);\n setIsEditingCaseSetContent(false);\n setIsEditingDataCollections(false);\n setIsRefreshingData(false);\n }, []);\n\n const onEpiCaseSetFormIsSavingChange = useCallback((isSaving: boolean) => {\n setIsEpiCaseSetFormSaving(isSaving);\n }, []);\n\n const onEpiCaseSetDataCollectionFormIsSavingChange = useCallback((isSaving: boolean) => {\n setIsEpiCaseSetDataCollectionFormSaving(isSaving);\n }, []);\n\n const onDeleteEventButtonClick = useCallback(() => {\n deleteConfirmationRef.current.open();\n }, []);\n\n const onDeleteConfirmationConfirm = useCallback(() => {\n deleteMutate(caseSet);\n }, [caseSet, deleteMutate]);\n\n const isSaving = isEpiCaseSetFormSaving || isEpiCaseSetDataCollectionFormSaving;\n\n const onGotoEventButtonClick = useCallback(async () => {\n await RouterService.getInstance().router.navigate(CaseSetUtil.createCaseSetLink(caseSet));\n }, [caseSet]);\n\n useEffect(() => {\n if (caseSet) {\n onPermalinkChange(CaseSetUtil.createCaseSetLink(caseSet, true));\n }\n }, [caseSet, onPermalinkChange]);\n\n useEffect(() => {\n if (!caseSet) {\n onTitleChange(t`Loading`);\n } else if (isEditingCaseSetContent) {\n onTitleChange(t('{{name}} - Edit', { name: caseSet.name }));\n } else if (isEditingDataCollections) {\n onTitleChange(t('{{name}} - Share', { name: caseSet.name }));\n } else {\n onTitleChange(caseSet?.name);\n }\n }, [isEditingDataCollections, isEditingCaseSetContent, onTitleChange, t, caseSet]);\n\n useEffect(() => {\n const actions: DialogAction[] = [];\n\n if (isEditingCaseSetContent || isEditingDataCollections) {\n actions.push({\n ...TestIdUtil.createAttributes('CaseSetInfoDialog-goBackButton'),\n color: 'primary',\n disabled: isSaving,\n label: t`Go back`,\n onClick: onGoBackButtonClick,\n startIcon: <ArrowLeftIcon />,\n variant: 'outlined',\n });\n }\n\n if (isEditingCaseSetContent) {\n actions.push(\n {\n ...TestIdUtil.createAttributes('CaseSetInfoDialog-saveButton'),\n color: 'secondary',\n disabled: isSaving,\n form: valuesFormId,\n label: t`Save`,\n startIcon: <SaveIcon />,\n type: 'submit',\n variant: 'contained',\n },\n );\n } else if (isEditingDataCollections) {\n actions.push(\n {\n ...TestIdUtil.createAttributes('CaseSetInfoDialog-saveButton'),\n color: 'secondary',\n disabled: isSaving,\n form: dataCollectionsFormId,\n label: t`Save`,\n startIcon: <SaveIcon />,\n type: 'submit',\n variant: 'contained',\n },\n );\n } else {\n actions.push(\n {\n ...TestIdUtil.createAttributes('CaseSetInfoDialog-deleteButton'),\n color: 'primary',\n disabled: !canDelete(),\n label: t`Delete`,\n onClick: onDeleteEventButtonClick,\n startIcon: <DeleteIcon />,\n variant: 'outlined',\n },\n {\n ...TestIdUtil.createAttributes('CaseSetInfoDialog-editDataCollectionsButton'),\n color: 'primary',\n disabled: !canShare,\n label: t`Share`,\n onClick: onEditDataCollectionsButtonClick,\n startIcon: <ShareIcon />,\n variant: 'outlined',\n },\n {\n ...TestIdUtil.createAttributes('CaseSetInfoDialog-editCaseContentButton'),\n color: 'primary',\n disabled: !canEdit,\n label: t`Edit`,\n onClick: onEditCaseContentButtonClick,\n startIcon: <EditIcon />,\n variant: 'outlined',\n },\n );\n\n if (showNavigationButton) {\n actions.push(\n {\n ...TestIdUtil.createAttributes('CaseSetInfoDialog-goToEvent'),\n autoFocus: true,\n color: 'secondary',\n label: t`Go to event`,\n onClick: onGotoEventButtonClick,\n variant: 'contained',\n },\n );\n }\n }\n\n\n onActionsChange(actions);\n }, [onActionsChange, showNavigationButton, onClose, onGotoEventButtonClick, t, caseSet, isEditingCaseSetContent, isEditingDataCollections, onGoBackButtonClick, isSaving, valuesFormId, dataCollectionsFormId, onEditDataCollectionsButtonClick, onEditCaseContentButtonClick, onDeleteEventButtonClick, canEdit, canShare, canDelete]);\n\n const caseAbacContextValue = useMemo<CaseAbacContext>(() => {\n return {\n createdInDataCollection: caseSet ? dataCollectionsMapQuery.map.get(caseSet?.created_in_data_collection_id) : undefined,\n itemDataCollectionLinks: [caseSetDataCollectionLinks],\n rights: caseSetRightsQuery.data,\n userDataCollectionOptions: dataCollectionOptionsQuery.options,\n userDataCollections: dataCollectionsQuery.data,\n userDataCollectionsMap: dataCollectionsMapQuery.map,\n };\n }, [caseSet, caseSetDataCollectionLinks, caseSetRightsQuery.data, dataCollectionOptionsQuery.options, dataCollectionsMapQuery.map, dataCollectionsQuery.data]);\n\n if (isRefreshingData || isDeleteMutating) {\n return (\n <Spinner\n inline\n label={t`Refreshing data`}\n />\n );\n }\n\n return (\n <>\n <ResponseHandler\n error={caseSetError || caseSetDataCollectionLinksError}\n inlineSpinner\n isLoading={isCaseSetLoading || isSetCaseDataCollectionLinksLoading}\n loadables={loadables}\n shouldHideActionButtons\n >\n <CaseAbacContextProvider caseAbac={caseAbacContextValue}>\n {!isEditingCaseSetContent && !isEditingDataCollections && (\n <>\n <CaseSetContent\n caseSet={caseSet}\n sx={{\n marginBottom: 2,\n }}\n />\n <CaseSetSharingInfo\n sx={{\n marginBottom: 2,\n }}\n />\n <CaseSetDescription\n caseSet={caseSet}\n sx={{\n marginBottom: 2,\n }}\n />\n </>\n )}\n {isEditingCaseSetContent && (\n <CaseSetForm\n caseSet={caseSet}\n formId={valuesFormId}\n onFinish={onFinish}\n onIsSavingChange={onEpiCaseSetFormIsSavingChange}\n />\n )}\n {isEditingDataCollections && (\n <CaseSetSharingForm\n caseSet={caseSet}\n caseTypeId={openProps.caseTypeId}\n formId={dataCollectionsFormId}\n onFinish={onFinish}\n onIsSavingChange={onEpiCaseSetDataCollectionFormIsSavingChange}\n />\n )}\n </CaseAbacContextProvider>\n </ResponseHandler>\n <Confirmation\n body={t`Are you sure you want to delete the event?`}\n cancelLabel={t`Cancel`}\n confirmLabel={t`Delete`}\n onConfirm={onDeleteConfirmationConfirm}\n ref={deleteConfirmationRef}\n title={t`Delete event?`}\n />\n\n </>\n );\n}, {\n fullWidth: true,\n maxWidth: 'lg',\n testId: 'CaseSetInfoDialog',\n titleVariant: 'h2',\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"CaseSetInfoDialog.js","names":[],"sources":["../../src/components/ui/CaseSetInfoDialog/CaseSetDescription.tsx","../../src/components/ui/CaseSetInfoDialog/CaseSetSharingForm.tsx","../../src/components/ui/CaseSetInfoDialog/CaseSetSharingInfo.tsx","../../src/components/ui/CaseSetInfoDialog/CaseSetForm.tsx","../../src/components/ui/CaseSetInfoDialog/CaseSetContent.tsx","../../src/components/ui/CaseSetInfoDialog/CaseSetInfoDialog.tsx"],"sourcesContent":["import {\n Box,\n Typography,\n} from '@mui/material';\nimport type { BoxProps } from '@mui/material';\nimport { useTranslation } from 'react-i18next';\nimport type { CaseDbCaseSet } from '@gen-epix/api-casedb';\nimport { RichTextEditorContent } from '@gen-epix/ui-core-form/components/fields/RichTextEditor';\n\n\nexport type CaseSetDescriptionProps = {\n readonly caseSet: CaseDbCaseSet;\n} & BoxProps;\nexport const CaseSetDescription = ({ caseSet, ...boxProps }: CaseSetDescriptionProps) => {\n const { t } = useTranslation();\n return (\n <Box {...boxProps}>\n <Typography variant={'h6'}>\n {t`Description`}\n </Typography>\n <Box>\n {caseSet?.description && (\n <RichTextEditorContent source={caseSet?.description || ''} />\n )}\n {!caseSet?.description && (\n <Box sx={{ fontStyle: 'italic' }}>\n {t`None`}\n </Box>\n )}\n </Box>\n </Box>\n );\n\n};\n","import {\n useCallback,\n useMemo,\n useState,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n array,\n boolean,\n object,\n string,\n} from 'yup';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport type { Resolver } from 'react-hook-form';\nimport { useForm } from 'react-hook-form';\nimport difference from 'lodash/difference';\nimport type { BoxProps } from '@mui/material';\nimport { Box } from '@mui/material';\nimport type { CaseDbCaseSet } from '@gen-epix/api-casedb';\nimport { CaseDbCaseApi } from '@gen-epix/api-casedb';\nimport { NotificationService } from '@gen-epix/ui-client-common/classes/services/NotificationService';\nimport { QueryClientService } from '@gen-epix/ui-client-common/classes/services/QueryClientService';\nimport { Spinner } from '@gen-epix/ui-core-components/components/Spinner';\nimport { GenericForm } from '@gen-epix/ui-core-form/components/helpers/GenericForm';\nimport type { FormFieldDefinition } from '@gen-epix/ui-core-form/models/form';\nimport { FORM_FIELD_DEFINITION_TYPE } from '@gen-epix/ui-core-form/models/form';\nimport { FormUtil } from '@gen-epix/ui-core-form/utils/FormUtil';\n\nimport { useCaseAbacContext } from '../../../context/caseAbac';\nimport { CaseUtil } from '../../../utils/CaseUtil';\nimport { CASEDB_QUERY_KEY } from '../../../constants/query';\n\n\nexport type CaseSetSharingFormProps = {\n readonly caseSet: CaseDbCaseSet;\n readonly caseTypeId: string;\n readonly formId: string;\n readonly onFinish: () => void;\n readonly onIsSavingChange: (isSaving: boolean) => void;\n} & BoxProps;\n\ntype FormFields = {\n dataCollectionIds?: string[];\n shouldApplySharingToCases?: boolean;\n};\n\nexport const CaseSetSharingForm = ({ caseSet, caseTypeId, formId, onFinish, onIsSavingChange, ...boxProps }: CaseSetSharingFormProps) => {\n const { t } = useTranslation();\n const [isSaving, setIsSaving] = useState(false);\n\n const schema = useMemo(() => object<FormFields>().shape({\n dataCollectionIds: array().of(string().uuid4()).required(),\n shouldApplySharingToCases: boolean().required(),\n }), []);\n\n const caseAbacContext = useCaseAbacContext();\n\n const onFormSubmit = useCallback(({ dataCollectionIds, shouldApplySharingToCases }: FormFields) => {\n const perform = async () => {\n setIsSaving(true);\n onIsSavingChange(true);\n const queryKeys = QueryClientService.getInstance().getQueryKeyDependencies([CASEDB_QUERY_KEY.CASE_SET_DATA_COLLECTION_LINKS], true);\n const notificationKey = NotificationService.getInstance().showNotification({\n isLoading: true,\n message: t('Saving case set data collections'),\n severity: 'info',\n });\n try {\n await QueryClientService.getInstance().cancelQueries(queryKeys);\n const rights = caseAbacContext?.rights?.[0];\n const dataCollectionIdsToAdd = difference(dataCollectionIds, rights.shared_in_data_collection_ids);\n const dataCollectionIdsToRemove = difference(rights.shared_in_data_collection_ids, dataCollectionIds);\n\n if (dataCollectionIdsToAdd.length > 0) {\n await CaseDbCaseApi.getInstance().caseSetDataCollectionLinksPostSome(dataCollectionIdsToAdd.map(data_collection_id => ({\n case_set_id: caseSet.id,\n data_collection_id,\n })));\n }\n if (dataCollectionIdsToRemove.length > 0) {\n await CaseDbCaseApi.getInstance().caseSetDataCollectionLinksDeleteSome(caseAbacContext.itemDataCollectionLinks[0]?.filter(x => dataCollectionIdsToRemove.includes(x.data_collection_id)).map(x => x.id).join(','));\n }\n NotificationService.getInstance().fulfillNotification(notificationKey, t('Successfully saved case set data collections.'), 'success');\n } catch (_error) {\n NotificationService.getInstance().fulfillNotification(notificationKey, t('Could not save case set data collections.'), 'error');\n } finally {\n await QueryClientService.getInstance().invalidateQueryKeys(queryKeys);\n if (shouldApplySharingToCases) {\n await CaseUtil.applyDataCollectionLinks({\n caseSetDataCollectionIds: dataCollectionIds,\n caseSetId: caseSet.id,\n caseTypeId,\n });\n }\n\n setIsSaving(false);\n onIsSavingChange(false);\n onFinish();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n perform();\n }, [onIsSavingChange, t, caseAbacContext?.rights, caseAbacContext.itemDataCollectionLinks, caseSet.id, onFinish, caseTypeId]);\n\n const formFieldDefinitions = useMemo<FormFieldDefinition<FormFields>[]>(() => [\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Data collections`,\n multiple: true,\n name: 'dataCollectionIds',\n options: caseAbacContext?.itemDataCollectionOptions?.[0] ?? [],\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.BOOLEAN,\n label: t`Should the same sharing be applied to the cases in the event?`,\n name: 'shouldApplySharingToCases',\n } as const satisfies FormFieldDefinition<FormFields>,\n ] as const, [caseAbacContext, t]);\n\n const item = useMemo<FormFields>(() => {\n return {\n dataCollectionIds: caseAbacContext?.rights?.[0]?.shared_in_data_collection_ids ?? [],\n shouldApplySharingToCases: true,\n };\n }, [caseAbacContext]);\n\n const values = useMemo<FormFields>(() => FormUtil.createFormValues(formFieldDefinitions, item), [formFieldDefinitions, item]);\n\n const formMethods = useForm<FormFields>({\n resolver: yupResolver(schema) as Resolver<FormFields>,\n values,\n });\n const { handleSubmit } = formMethods;\n\n\n if (isSaving) {\n return (\n <Spinner\n inline\n label={t`Saving case set data collections`}\n />\n );\n }\n\n return (\n <Box {...boxProps}>\n <GenericForm<FormFields>\n formFieldDefinitions={formFieldDefinitions}\n formId={formId}\n formMethods={formMethods}\n onSubmit={handleSubmit(onFormSubmit)}\n schema={schema}\n />\n </Box>\n );\n};\n","import { useTranslation } from 'react-i18next';\nimport {\n Box,\n Typography,\n} from '@mui/material';\nimport type { BoxProps } from '@mui/material';\n\nimport { DataCollectionAccessInfo } from '../DataCollectionAccessInfo';\n\nexport type CaseSetSharingInfoProps = BoxProps;\n\nexport const CaseSetSharingInfo = ({ ...boxProps }: CaseSetSharingInfoProps) => {\n const { t } = useTranslation();\n\n return (\n <Box {...boxProps}>\n <Typography variant={'h6'}>\n {t`Shared in`}\n </Typography>\n <DataCollectionAccessInfo />\n </Box>\n );\n};\n","import {\n useCallback,\n useEffect,\n useMemo,\n} from 'react';\nimport { t } from 'i18next';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport type { Resolver } from 'react-hook-form';\nimport { useForm } from 'react-hook-form';\nimport {\n object,\n string,\n} from 'yup';\nimport type { CaseDbCaseSet } from '@gen-epix/api-casedb';\nimport { CaseDbCaseApi } from '@gen-epix/api-casedb';\nimport type { OmitWithMetaData } from '@gen-epix/ui-client-common/models/data';\nimport { QueryClientService } from '@gen-epix/ui-client-common/classes/services/QueryClientService';\nimport { Spinner } from '@gen-epix/ui-core-components/components/Spinner';\nimport { useEditMutation } from '@gen-epix/ui-client-common/hooks/useEditMutation';\nimport { GenericForm } from '@gen-epix/ui-core-form/components/helpers/GenericForm';\nimport type { FormFieldDefinition } from '@gen-epix/ui-core-form/models/form';\nimport { FORM_FIELD_DEFINITION_TYPE } from '@gen-epix/ui-core-form/models/form';\nimport { FormUtil } from '@gen-epix/ui-core-form/utils/FormUtil';\nimport { SchemaUtil } from '@gen-epix/ui-core-form/utils/SchemaUtil';\n\nimport { CreateEventDialogSuccessNotificationMessage } from '../CreateEventDialog/CreateEventDialogSuccessNotificationMessage';\nimport { useCaseSetCategoryOptionsQuery } from '../../../dataHooks/useCaseSetCategoriesQuery';\nimport { useCaseSetStatusOptionsQuery } from '../../../dataHooks/useCaseSetStatusesQuery';\nimport { useCaseTypeOptionsQuery } from '../../../dataHooks/useCaseTypesQuery';\nimport { CASEDB_QUERY_KEY } from '../../../constants/query';\n\nexport type CaseSetFormProps = {\n readonly caseSet: CaseDbCaseSet;\n readonly formId: string;\n readonly onFinish: () => void;\n readonly onIsSavingChange: (isSaving: boolean) => void;\n};\n\ntype FormFields = OmitWithMetaData<CaseDbCaseSet, 'case_set_category' | 'case_set_date' | 'case_set_status' | 'case_type' | 'created_in_data_collection_id' | 'created_in_data_collection'>;\n\nexport const CaseSetForm = ({ caseSet, formId, onFinish, onIsSavingChange }: CaseSetFormProps) => {\n const caseTypeOptionsQuery = useCaseTypeOptionsQuery();\n const caseSetCategoryOptionsQuery = useCaseSetCategoryOptionsQuery();\n const caseSetStatusOptionsQuery = useCaseSetStatusOptionsQuery();\n\n const schema = useMemo(() => object<FormFields>().shape({\n case_set_category_id: string().uuid4().required(),\n case_set_status_id: string().uuid4().required(),\n case_type_id: string().uuid4().required(),\n code: SchemaUtil.code,\n description: SchemaUtil.description,\n name: SchemaUtil.name,\n }), []);\n\n\n const onSuccess = useCallback(() => {\n onFinish();\n }, [onFinish]);\n\n const onError = useCallback(() => {\n onFinish();\n }, [onFinish]);\n\n const formFieldDefinitions = useMemo<FormFieldDefinition<FormFields>[]>(() => {\n return [\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n disabled: !!caseSet,\n label: t`Case type`,\n loading: caseTypeOptionsQuery.isLoading,\n name: 'case_type_id',\n options: caseTypeOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Event name`,\n name: 'name',\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.RICH_TEXT,\n label: t`Description`,\n name: 'description',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Category`,\n loading: caseSetCategoryOptionsQuery.isLoading,\n name: 'case_set_category_id',\n options: caseSetCategoryOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Status`,\n loading: caseSetStatusOptionsQuery.isLoading,\n name: 'case_set_status_id',\n options: caseSetStatusOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n ] as const;\n }, [caseSet, caseSetCategoryOptionsQuery.isLoading, caseSetCategoryOptionsQuery.options, caseSetStatusOptionsQuery.isLoading, caseSetStatusOptionsQuery.options, caseTypeOptionsQuery.isLoading, caseTypeOptionsQuery.options]);\n\n const { isMutating: isEditing, mutate: mutateEdit, setPreviousItem } = useEditMutation<CaseDbCaseSet, FormFields>({\n getErrorNotificationMessage: (data) => t('Failed to edit event: {{name}}', { name: data.name }),\n getIntermediateItem: (variables: FormFields, previousItem: CaseDbCaseSet) => ({ ...previousItem, ...variables }),\n getProgressNotificationMessage: (data) => t('Saving event: {{name}}', { name: data.name }),\n getSuccessNotificationMessage: (item) => <CreateEventDialogSuccessNotificationMessage caseSet={item} />,\n onError,\n onSuccess,\n queryFn: async (formData: FormFields, item: CaseDbCaseSet): Promise<CaseDbCaseSet> => {\n const result = await CaseDbCaseApi.getInstance().caseSetsPutOne(item.id, { ...item, ...formData });\n return result.data;\n },\n resourceQueryKey: QueryClientService.getInstance().getGenericKey(CASEDB_QUERY_KEY.CASE_SETS),\n });\n\n useEffect(() => {\n onIsSavingChange(isEditing);\n }, [isEditing, onIsSavingChange]);\n\n const onFormSubmit = useCallback((formData: FormFields) => {\n setPreviousItem(caseSet);\n mutateEdit(formData);\n }, [caseSet, mutateEdit, setPreviousItem]);\n\n const values = useMemo(() => FormUtil.createFormValues<FormFields, CaseDbCaseSet>(formFieldDefinitions, caseSet), [formFieldDefinitions, caseSet]);\n\n const formMethods = useForm<FormFields>({\n resolver: yupResolver(schema) as unknown as Resolver<FormFields>,\n values,\n });\n const { handleSubmit } = formMethods;\n\n if (isEditing) {\n return (\n <Spinner\n inline\n label={t`Saving event data`}\n />\n );\n }\n\n return (\n <GenericForm<FormFields>\n formFieldDefinitions={formFieldDefinitions}\n formId={formId}\n formMethods={formMethods}\n onSubmit={handleSubmit(onFormSubmit)}\n schema={schema}\n />\n );\n};\n","import type { BoxProps } from '@mui/material';\nimport {\n Box,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n Typography,\n} from '@mui/material';\nimport { useTranslation } from 'react-i18next';\nimport { format } from 'date-fns';\nimport type { CaseDbCaseSet } from '@gen-epix/api-casedb';\nimport { ResponseHandler } from '@gen-epix/ui-client-common/components/ui/ResponseHandler';\nimport { useArray } from '@gen-epix/ui-core/hooks/useArray';\nimport { DATE_FORMAT } from '@gen-epix/ui-core/constants/date';\n\nimport { useCaseSetCategoryMapQuery } from '../../../dataHooks/useCaseSetCategoriesQuery';\nimport { useCaseSetStatusMapQuery } from '../../../dataHooks/useCaseSetStatusesQuery';\nimport { useCaseTypeMapQuery } from '../../../dataHooks/useCaseTypesQuery';\n\nexport type CaseSetContentProps = {\n readonly caseSet: CaseDbCaseSet;\n} & BoxProps;\n\nexport const CaseSetContent = ({ caseSet, ...boxProps }: CaseSetContentProps) => {\n const caseSetCategoryMapQuery = useCaseSetCategoryMapQuery();\n const caseSetStatusMapQuery = useCaseSetStatusMapQuery();\n const caseTypeMapQuery = useCaseTypeMapQuery();\n const { t } = useTranslation();\n\n const loadables = useArray([caseSetCategoryMapQuery, caseSetStatusMapQuery, caseTypeMapQuery]);\n return (\n <Box {...boxProps}>\n <Typography variant={'h6'}>\n {t`Content`}\n </Typography>\n <ResponseHandler\n inlineSpinner\n loadables={loadables}\n shouldHideActionButtons\n >\n <Table size={'small'}>\n <TableHead>\n <TableRow>\n <TableCell\n sx={{\n width: 'calc(100% * 1/3)',\n }}\n >\n {t`Column`}\n </TableCell>\n <TableCell\n sx={{\n width: 'calc(100% * 2/3)',\n }}\n >\n {t`Value`}\n </TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n <TableRow>\n <TableCell>\n {t`Name`}\n </TableCell>\n <TableCell>\n {caseSet.name}\n </TableCell>\n </TableRow>\n <TableRow>\n <TableCell>\n {t`Status`}\n </TableCell>\n <TableCell>\n {caseSetStatusMapQuery.map.get(caseSet.case_set_status_id)?.name}\n </TableCell>\n </TableRow>\n <TableRow>\n <TableCell>\n {t`Category`}\n </TableCell>\n <TableCell>\n {caseSetCategoryMapQuery.map.get(caseSet.case_set_category_id)?.name}\n </TableCell>\n </TableRow>\n <TableRow>\n <TableCell>\n {t`Type`}\n </TableCell>\n <TableCell>\n {caseTypeMapQuery.map.get(caseSet.case_type_id)?.name}\n </TableCell>\n </TableRow>\n <TableRow>\n <TableCell>\n {t`Created at`}\n </TableCell>\n <TableCell>\n {caseSet.case_set_date ? format(caseSet.case_set_date, DATE_FORMAT.DATE_TIME) : t`Unknown`}\n </TableCell>\n </TableRow>\n </TableBody>\n </Table>\n </ResponseHandler>\n </Box>\n );\n};\n","import type { ReactElement } from 'react';\nimport SaveIcon from '@mui/icons-material/Save';\nimport EditIcon from '@mui/icons-material/Edit';\nimport ShareIcon from '@mui/icons-material/Share';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport ArrowLeftIcon from '@mui/icons-material/ArrowLeft';\nimport {\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport type {\n CaseDbCaseSet,\n CaseDbTypedUuidSetFilter,\n} from '@gen-epix/api-casedb';\nimport { CaseDbCaseApi } from '@gen-epix/api-casedb';\nimport type { ConfirmationRefMethods } from '@gen-epix/ui-core-components/components/Confirmation';\nimport type { DialogAction } from '@gen-epix/ui-core-components/components/Dialog';\nimport type {\n WithDialogRefMethods,\n WithDialogRenderProps,\n} from '@gen-epix/ui-core-components/hoc/withDialog';\nimport { Confirmation } from '@gen-epix/ui-core-components/components/Confirmation';\nimport { QueryClientService } from '@gen-epix/ui-client-common/classes/services/QueryClientService';\nimport { ResponseHandler } from '@gen-epix/ui-client-common/components/ui/ResponseHandler';\nimport { RouterService } from '@gen-epix/ui-client-common/classes/services/RouterService';\nimport { Spinner } from '@gen-epix/ui-core-components/components/Spinner';\nimport { useDeleteMutation } from '@gen-epix/ui-client-common/hooks/useDeleteMutation';\nimport { useItemQuery } from '@gen-epix/ui-client-common/hooks/useItemQuery';\nimport { useQueryMemo } from '@gen-epix/ui-client-common/hooks/useQueryMemo';\nimport { withDialog } from '@gen-epix/ui-core-components/hoc/withDialog';\nimport { TestIdUtil } from '@gen-epix/ui-core/utils/TestIdUtil';\nimport { useArray } from '@gen-epix/ui-core/hooks/useArray';\n\nimport type { CaseAbacContext } from '../../../context/caseAbac';\nimport { CaseAbacContextProvider } from '../../../context/caseAbac';\nimport { useCaseSetRightsQuery } from '../../../dataHooks/useCaseSetRightsQuery';\nimport {\n useDataCollectionOptionsQuery,\n useDataCollectionsMapQuery,\n useDataCollectionsQuery,\n} from '../../../dataHooks/useDataCollectionsQuery';\nimport { CaseSetUtil } from '../../../utils/CaseSetUtil';\nimport { CASEDB_QUERY_KEY } from '../../../constants/query';\n\nimport { CaseSetDescription } from './CaseSetDescription';\nimport { CaseSetSharingForm } from './CaseSetSharingForm';\nimport { CaseSetSharingInfo } from './CaseSetSharingInfo';\nimport { CaseSetForm } from './CaseSetForm';\nimport { CaseSetContent } from './CaseSetContent';\n\n\nexport interface CaseSetInfoDialogOpenProps {\n readonly caseSetId: string;\n readonly caseTypeId: string;\n}\n\nexport interface CaseSetInfoDialogProps extends WithDialogRenderProps<CaseSetInfoDialogOpenProps> {\n readonly showNavigationButton?: boolean;\n}\n\nexport type CaseSetInfoDialogRefMethods = WithDialogRefMethods<CaseSetInfoDialogProps, CaseSetInfoDialogOpenProps>;\n\nexport const CaseSetInfoDialog = withDialog<CaseSetInfoDialogProps, CaseSetInfoDialogOpenProps>((\n {\n onActionsChange,\n onClose,\n onPermalinkChange,\n onTitleChange,\n openProps,\n showNavigationButton,\n }: CaseSetInfoDialogProps,\n): ReactElement => {\n const { t } = useTranslation();\n const caseSetIds = useMemo(() => [openProps.caseSetId], [openProps.caseSetId]);\n const caseSetRightsQuery = useCaseSetRightsQuery(caseSetIds);\n const dataCollectionsQuery = useDataCollectionsQuery();\n const dataCollectionsMapQuery = useDataCollectionsMapQuery();\n const dataCollectionOptionsQuery = useDataCollectionOptionsQuery();\n const [isEditingCaseSetContent, setIsEditingCaseSetContent] = useState(false);\n const [isEditingDataCollections, setIsEditingDataCollections] = useState(false);\n const [isEpiCaseSetFormSaving, setIsEpiCaseSetFormSaving] = useState(false);\n const [isEpiCaseSetDataCollectionFormSaving, setIsEpiCaseSetDataCollectionFormSaving] = useState(false);\n const [isRefreshingData, setIsRefreshingData] = useState(false);\n const deleteConfirmationRef = useRef<ConfirmationRefMethods>(null);\n const valuesFormId = useId();\n const dataCollectionsFormId = useId();\n const loadables = useArray([caseSetRightsQuery, dataCollectionsQuery, dataCollectionsMapQuery, dataCollectionOptionsQuery]);\n\n\n const onDeleteSuccess = useCallback(() => {\n onClose();\n }, [onClose]);\n\n const onDeleteError = useCallback(() => {\n onClose();\n }, [onClose]);\n\n const { isMutating: isDeleteMutating, mutate: deleteMutate } = useDeleteMutation<CaseDbCaseSet>({\n associationQueryKeys: QueryClientService.getInstance().getQueryKeyDependencies([CASEDB_QUERY_KEY.CASE_SETS], true),\n getErrorNotificationMessage: (data) => t('Unable to remove event: {{name}}.', { name: data.name }),\n getProgressNotificationMessage: (data) => t('Deleting event: {{name}}...', { name: data.name }),\n getSuccessNotificationMessage: (data) => t('Event: {{name}}, has been removed.', { name: data.name }),\n onError: onDeleteError,\n onSuccess: onDeleteSuccess,\n queryFn: async (item: CaseDbCaseSet) => {\n return await CaseDbCaseApi.getInstance().caseSetsDeleteOne(item.id);\n },\n resourceQueryKey: QueryClientService.getInstance().getGenericKey(CASEDB_QUERY_KEY.CASE_SETS),\n });\n\n const { data: caseSet, error: caseSetError, isLoading: isCaseSetLoading } = useItemQuery<CaseDbCaseSet>({\n baseQueryKey: CASEDB_QUERY_KEY.CASE_SETS,\n itemId: openProps.caseSetId,\n useQueryOptions: {\n enabled: !isDeleteMutating,\n queryFn: async ({ signal }) => {\n const response = await CaseDbCaseApi.getInstance().caseSetsGetOne(openProps.caseSetId, { signal });\n return response.data;\n },\n },\n });\n\n const caseSetDataCollectionLinksFilter = useMemo<CaseDbTypedUuidSetFilter>(() => ({\n invert: false,\n key: 'case_set_id',\n members: [caseSet?.id],\n type: 'UUID_SET',\n }), [caseSet?.id]);\n const { data: caseSetDataCollectionLinks, error: caseSetDataCollectionLinksError, isLoading: isSetCaseDataCollectionLinksLoading } = useQueryMemo({\n enabled: !!caseSet && !isDeleteMutating,\n queryFn: async ({ signal }) => {\n const response = await CaseDbCaseApi.getInstance().caseSetDataCollectionLinksPostQuery(caseSetDataCollectionLinksFilter, null, null, { signal });\n return response.data;\n },\n queryKey: QueryClientService.getInstance().getGenericKey(CASEDB_QUERY_KEY.CASE_SET_DATA_COLLECTION_LINKS, caseSetDataCollectionLinksFilter),\n });\n\n const canEdit = useMemo(() => {\n return !!caseSetRightsQuery.data && caseSetRightsQuery.data.some((right) => right.is_full_access || right.write_case_set);\n }, [caseSetRightsQuery.data]);\n\n const canShare = useMemo(() => {\n return !!caseSetRightsQuery.data && caseSetRightsQuery.data.some((right) => right.is_full_access || right.remove_data_collection_ids.length || right.add_data_collection_ids.length);\n }, [caseSetRightsQuery.data]);\n\n const canDelete = useCallback(() => {\n return !!caseSetRightsQuery.data && caseSetRightsQuery.data.some((right) => right.is_full_access || right.can_delete);\n }, [caseSetRightsQuery]);\n\n const onEditCaseContentButtonClick = useCallback(() => {\n setIsEditingCaseSetContent(true);\n }, []);\n\n const onEditDataCollectionsButtonClick = useCallback(() => {\n setIsEditingDataCollections(true);\n }, []);\n\n const onGoBackButtonClick = useCallback(() => {\n setIsEditingCaseSetContent(false);\n setIsEditingDataCollections(false);\n }, []);\n\n const onFinish = useCallback(() => {\n setIsEpiCaseSetFormSaving(false);\n setIsEpiCaseSetDataCollectionFormSaving(false);\n setIsRefreshingData(true);\n setIsEditingCaseSetContent(false);\n setIsEditingDataCollections(false);\n setIsRefreshingData(false);\n }, []);\n\n const onEpiCaseSetFormIsSavingChange = useCallback((isSaving: boolean) => {\n setIsEpiCaseSetFormSaving(isSaving);\n }, []);\n\n const onEpiCaseSetDataCollectionFormIsSavingChange = useCallback((isSaving: boolean) => {\n setIsEpiCaseSetDataCollectionFormSaving(isSaving);\n }, []);\n\n const onDeleteEventButtonClick = useCallback(() => {\n deleteConfirmationRef.current.open();\n }, []);\n\n const onDeleteConfirmationConfirm = useCallback(() => {\n deleteMutate(caseSet);\n }, [caseSet, deleteMutate]);\n\n const isSaving = isEpiCaseSetFormSaving || isEpiCaseSetDataCollectionFormSaving;\n\n const onGotoEventButtonClick = useCallback(async () => {\n await RouterService.getInstance().router.navigate(CaseSetUtil.createCaseSetLink(caseSet));\n }, [caseSet]);\n\n useEffect(() => {\n if (caseSet) {\n onPermalinkChange(CaseSetUtil.createCaseSetLink(caseSet, true));\n }\n }, [caseSet, onPermalinkChange]);\n\n useEffect(() => {\n if (!caseSet) {\n onTitleChange(t`Loading`);\n } else if (isEditingCaseSetContent) {\n onTitleChange(t('{{name}} - Edit', { name: caseSet.name }));\n } else if (isEditingDataCollections) {\n onTitleChange(t('{{name}} - Share', { name: caseSet.name }));\n } else {\n onTitleChange(caseSet?.name);\n }\n }, [isEditingDataCollections, isEditingCaseSetContent, onTitleChange, t, caseSet]);\n\n useEffect(() => {\n const actions: DialogAction[] = [];\n\n if (isEditingCaseSetContent || isEditingDataCollections) {\n actions.push({\n ...TestIdUtil.createAttributes('CaseSetInfoDialog-goBackButton'),\n color: 'primary',\n disabled: isSaving,\n label: t`Go back`,\n onClick: onGoBackButtonClick,\n startIcon: <ArrowLeftIcon />,\n variant: 'outlined',\n });\n }\n\n if (isEditingCaseSetContent) {\n actions.push(\n {\n ...TestIdUtil.createAttributes('CaseSetInfoDialog-saveButton'),\n color: 'secondary',\n disabled: isSaving,\n form: valuesFormId,\n label: t`Save`,\n startIcon: <SaveIcon />,\n type: 'submit',\n variant: 'contained',\n },\n );\n } else if (isEditingDataCollections) {\n actions.push(\n {\n ...TestIdUtil.createAttributes('CaseSetInfoDialog-saveButton'),\n color: 'secondary',\n disabled: isSaving,\n form: dataCollectionsFormId,\n label: t`Save`,\n startIcon: <SaveIcon />,\n type: 'submit',\n variant: 'contained',\n },\n );\n } else {\n actions.push(\n {\n ...TestIdUtil.createAttributes('CaseSetInfoDialog-deleteButton'),\n color: 'primary',\n disabled: !canDelete(),\n label: t`Delete`,\n onClick: onDeleteEventButtonClick,\n startIcon: <DeleteIcon />,\n variant: 'outlined',\n },\n {\n ...TestIdUtil.createAttributes('CaseSetInfoDialog-editDataCollectionsButton'),\n color: 'primary',\n disabled: !canShare,\n label: t`Share`,\n onClick: onEditDataCollectionsButtonClick,\n startIcon: <ShareIcon />,\n variant: 'outlined',\n },\n {\n ...TestIdUtil.createAttributes('CaseSetInfoDialog-editCaseContentButton'),\n color: 'primary',\n disabled: !canEdit,\n label: t`Edit`,\n onClick: onEditCaseContentButtonClick,\n startIcon: <EditIcon />,\n variant: 'outlined',\n },\n );\n\n if (showNavigationButton) {\n actions.push(\n {\n ...TestIdUtil.createAttributes('CaseSetInfoDialog-goToEvent'),\n autoFocus: true,\n color: 'secondary',\n label: t`Go to event`,\n onClick: onGotoEventButtonClick,\n variant: 'contained',\n },\n );\n }\n }\n\n\n onActionsChange(actions);\n }, [onActionsChange, showNavigationButton, onClose, onGotoEventButtonClick, t, caseSet, isEditingCaseSetContent, isEditingDataCollections, onGoBackButtonClick, isSaving, valuesFormId, dataCollectionsFormId, onEditDataCollectionsButtonClick, onEditCaseContentButtonClick, onDeleteEventButtonClick, canEdit, canShare, canDelete]);\n\n const caseAbacContextValue = useMemo<CaseAbacContext>(() => {\n return {\n createdInDataCollection: caseSet ? dataCollectionsMapQuery.map.get(caseSet?.created_in_data_collection_id) : undefined,\n itemDataCollectionLinks: [caseSetDataCollectionLinks],\n rights: caseSetRightsQuery.data,\n userDataCollectionOptions: dataCollectionOptionsQuery.options,\n userDataCollections: dataCollectionsQuery.data,\n userDataCollectionsMap: dataCollectionsMapQuery.map,\n };\n }, [caseSet, caseSetDataCollectionLinks, caseSetRightsQuery.data, dataCollectionOptionsQuery.options, dataCollectionsMapQuery.map, dataCollectionsQuery.data]);\n\n if (isRefreshingData || isDeleteMutating) {\n return (\n <Spinner\n inline\n label={t`Refreshing data`}\n />\n );\n }\n\n return (\n <>\n <ResponseHandler\n error={caseSetError || caseSetDataCollectionLinksError}\n inlineSpinner\n isLoading={isCaseSetLoading || isSetCaseDataCollectionLinksLoading}\n loadables={loadables}\n shouldHideActionButtons\n >\n <CaseAbacContextProvider caseAbac={caseAbacContextValue}>\n {!isEditingCaseSetContent && !isEditingDataCollections && (\n <>\n <CaseSetContent\n caseSet={caseSet}\n sx={{\n marginBottom: 2,\n }}\n />\n <CaseSetSharingInfo\n sx={{\n marginBottom: 2,\n }}\n />\n <CaseSetDescription\n caseSet={caseSet}\n sx={{\n marginBottom: 2,\n }}\n />\n </>\n )}\n {isEditingCaseSetContent && (\n <CaseSetForm\n caseSet={caseSet}\n formId={valuesFormId}\n onFinish={onFinish}\n onIsSavingChange={onEpiCaseSetFormIsSavingChange}\n />\n )}\n {isEditingDataCollections && (\n <CaseSetSharingForm\n caseSet={caseSet}\n caseTypeId={openProps.caseTypeId}\n formId={dataCollectionsFormId}\n onFinish={onFinish}\n onIsSavingChange={onEpiCaseSetDataCollectionFormIsSavingChange}\n />\n )}\n </CaseAbacContextProvider>\n </ResponseHandler>\n <Confirmation\n body={t`Are you sure you want to delete the event?`}\n cancelLabel={t`Cancel`}\n confirmLabel={t`Delete`}\n onConfirm={onDeleteConfirmationConfirm}\n ref={deleteConfirmationRef}\n title={t`Delete event?`}\n />\n\n </>\n );\n}, {\n fullWidth: true,\n maxWidth: 'lg',\n testId: 'CaseSetInfoDialog',\n titleVariant: 'h2',\n});\n"],"mappings":"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"}
@@ -7,36 +7,36 @@ import { AbacUtil as c } from "../utils/AbacUtil/index.js";
7
7
  import { t as l } from "./react.js";
8
8
  import { t as ee } from "./dashboardStore.js";
9
9
  import { n as u } from "./DashboardStoreLoader.js";
10
- import { useDataCollectionsMapQuery as te, useDataCollectionsQuery as d } from "../dataHooks/useDataCollectionsQuery/index.js";
11
- import { useDiseasesMapQuery as ne } from "../dataHooks/useDiseasesQuery/index.js";
12
- import { useEtiologicalAgentsMapQuery as f } from "../dataHooks/useEtiologicalAgentsQuery/index.js";
13
- import { TreeDescription as p } from "../components/ui/TreeDescription/index.js";
14
- import { t as m } from "i18next";
15
- import { CaseDbColType as h, CaseDbDimType as re } from "@gen-epix/api-casedb";
10
+ import { useDataCollectionsMapQuery as te, useDataCollectionsQuery as ne } from "../dataHooks/useDataCollectionsQuery/index.js";
11
+ import { useDiseasesMapQuery as re } from "../dataHooks/useDiseasesQuery/index.js";
12
+ import { useEtiologicalAgentsMapQuery as d } from "../dataHooks/useEtiologicalAgentsQuery/index.js";
13
+ import { TreeDescription as f } from "../components/ui/TreeDescription/index.js";
14
+ import { t as p } from "i18next";
15
+ import { CaseDbColType as m, CaseDbDimType as h } from "@gen-epix/api-casedb";
16
16
  import { Accordion as g, AccordionDetails as _, AccordionSummary as v, Box as y, Button as b, Chip as ie, Stack as x, Table as S, TableBody as C, TableCell as w, TableHead as T, TableRow as E, Typography as D, useTheme as O } from "@mui/material";
17
17
  import { Fragment as k, createContext as ae, use as A, useCallback as j, useEffect as M, useMemo as N, useState as oe } from "react";
18
18
  import { useTranslation as P } from "react-i18next";
19
19
  import { Fragment as F, jsx as I, jsxs as L } from "react/jsx-runtime";
20
- import { ResponseHandler as se } from "@gen-epix/ui/components/ui/ResponseHandler";
20
+ import { ResponseHandler as se } from "@gen-epix/ui-client-common/components/ui/ResponseHandler";
21
21
  import { useArray as ce } from "@gen-epix/ui-core/hooks/useArray";
22
- import { withDialog as R } from "@gen-epix/ui/hoc/withDialog";
23
- import { RichTextEditorContent as le } from "@gen-epix/ui-form/components/fields/RichTextEditor";
22
+ import { withDialog as R } from "@gen-epix/ui-core-components/hoc/withDialog";
23
+ import { RichTextEditorContent as le } from "@gen-epix/ui-core-form/components/fields/RichTextEditor";
24
24
  import z from "@mui/icons-material/ExpandMore";
25
25
  //#region src/context/caseTypeAbac/CaseTypeAbacContext.tsx
26
26
  var B = ae(null), V = (e) => {
27
- let { caseTypeAbac: t, children: n } = e;
27
+ let { caseTypeAbac: t, children: n } = e, r = N(() => {
28
+ let e = Object.values(t.caseTypeAccessAbacDict).filter((e) => !!t.userDataCollectionsMap.get(e.data_collection_id)).sort((e, n) => {
29
+ let r = t.userDataCollectionsMap.get(e.data_collection_id), i = t.userDataCollectionsMap.get(n.data_collection_id);
30
+ return r?.name.localeCompare(i?.name) ?? 0;
31
+ });
32
+ return {
33
+ ...t,
34
+ caseTypeAccessAbacs: e,
35
+ effectiveColumnAccessRights: c.createEffectieveColumnAccessRights(e)
36
+ };
37
+ }, [t]);
28
38
  return /* @__PURE__ */ I(B, {
29
- value: N(() => {
30
- let e = Object.values(t.caseTypeAccessAbacDict).filter((e) => !!t.userDataCollectionsMap.get(e.data_collection_id)).sort((e, n) => {
31
- let r = t.userDataCollectionsMap.get(e.data_collection_id), i = t.userDataCollectionsMap.get(n.data_collection_id);
32
- return r?.name.localeCompare(i?.name) ?? 0;
33
- });
34
- return {
35
- ...t,
36
- caseTypeAccessAbacs: e,
37
- effectiveColumnAccessRights: c.createEffectieveColumnAccessRights(e)
38
- };
39
- }, [t]),
39
+ value: r,
40
40
  children: n
41
41
  });
42
42
  }, H = () => A(B), U = ({ completeCaseType: e }) => {
@@ -59,21 +59,21 @@ var B = ae(null), V = (e) => {
59
59
  verticalAlign: "top",
60
60
  width: "20%"
61
61
  },
62
- children: m`Column`
62
+ children: p`Column`
63
63
  }),
64
64
  /* @__PURE__ */ I(w, {
65
65
  sx: {
66
66
  verticalAlign: "top",
67
67
  width: "20%"
68
68
  },
69
- children: m`Read`
69
+ children: p`Read`
70
70
  }),
71
71
  /* @__PURE__ */ I(w, {
72
72
  sx: {
73
73
  verticalAlign: "top",
74
74
  width: "20%"
75
75
  },
76
- children: m`Write`
76
+ children: p`Write`
77
77
  }),
78
78
  /* @__PURE__ */ I(w, { sx: { width: "40%" } })
79
79
  ] }) }), /* @__PURE__ */ I(C, { children: t.map((t) => /* @__PURE__ */ L(E, { children: [
@@ -89,14 +89,14 @@ var B = ae(null), V = (e) => {
89
89
  verticalAlign: "top",
90
90
  width: "20%"
91
91
  },
92
- children: e.read_col_ids.includes(t.id) ? m`Yes` : m`No`
92
+ children: e.read_col_ids.includes(t.id) ? p`Yes` : p`No`
93
93
  }),
94
94
  /* @__PURE__ */ I(w, {
95
95
  sx: {
96
96
  verticalAlign: "top",
97
97
  width: "20%"
98
98
  },
99
- children: e.write_col_ids.includes(t.id) ? m`Yes` : m`No`
99
+ children: e.write_col_ids.includes(t.id) ? p`Yes` : p`No`
100
100
  }),
101
101
  /* @__PURE__ */ I(w, { sx: { width: "40%" } })
102
102
  ] }, t.id)) })]
@@ -143,7 +143,7 @@ var B = ae(null), V = (e) => {
143
143
  }), /* @__PURE__ */ L(D, {
144
144
  component: "p",
145
145
  variant: "body1",
146
- children: [e && /* @__PURE__ */ I(F, { children: e }), !e && /* @__PURE__ */ I(F, { children: m`Not applicable` })]
146
+ children: [e && /* @__PURE__ */ I(F, { children: e }), !e && /* @__PURE__ */ I(F, { children: p`Not applicable` })]
147
147
  })]
148
148
  }), q = /* @__PURE__ */ e((/* @__PURE__ */ n(((e, n) => {
149
149
  var i = t(), a = r(), o = "[object Number]";
@@ -181,7 +181,7 @@ var B = ae(null), V = (e) => {
181
181
  sx: { width: "20%" },
182
182
  children: n`Access rights`
183
183
  })
184
- ] }) }), /* @__PURE__ */ I(C, { children: r.filter((t) => e.ref_cols[t.ref_col_id].col_type !== h.GENETIC_DISTANCE).map((t) => {
184
+ ] }) }), /* @__PURE__ */ I(C, { children: r.filter((t) => e.ref_cols[t.ref_col_id].col_type !== m.GENETIC_DISTANCE).map((t) => {
185
185
  let r = e.ref_cols[t.ref_col_id];
186
186
  return /* @__PURE__ */ L(E, { children: [
187
187
  /* @__PURE__ */ I(w, {
@@ -212,30 +212,30 @@ var B = ae(null), V = (e) => {
212
212
  },
213
213
  children: [
214
214
  [
215
- h.DECIMAL_0,
216
- h.DECIMAL_1,
217
- h.DECIMAL_2,
218
- h.DECIMAL_3,
219
- h.DECIMAL_4,
220
- h.DECIMAL_5,
221
- h.DECIMAL_6
215
+ m.DECIMAL_0,
216
+ m.DECIMAL_1,
217
+ m.DECIMAL_2,
218
+ m.DECIMAL_3,
219
+ m.DECIMAL_4,
220
+ m.DECIMAL_5,
221
+ m.DECIMAL_6
222
222
  ].includes(r.col_type) && ((0, q.default)(t.min_value) || (0, q.default)(t.max_value)) && /* @__PURE__ */ I(F, { children: n("min: {{min}}; max: {{max}}", {
223
223
  max: t.max_value,
224
224
  min: t.min_value
225
225
  }) }),
226
226
  [
227
- h.TIME_DAY,
228
- h.TIME_MONTH,
229
- h.TIME_QUARTER,
230
- h.TIME_WEEK,
231
- h.TIME_YEAR
227
+ m.TIME_DAY,
228
+ m.TIME_MONTH,
229
+ m.TIME_QUARTER,
230
+ m.TIME_WEEK,
231
+ m.TIME_YEAR
232
232
  ].includes(r.col_type) && (t.min_datetime || t.max_datetime) && /* @__PURE__ */ I(F, { children: n("from: {{from}}; to: {{to}}", {
233
233
  from: t.min_datetime ?? "-",
234
234
  to: t.max_datetime ?? "-"
235
235
  }) }),
236
- r.col_type === h.TEXT && t.max_length && /* @__PURE__ */ I(F, { children: n("Max length: {{maxLength}}", { maxLength: t.max_length }) }),
237
- r.col_type === h.GEO_REGION && r.region_set_id && /* @__PURE__ */ I(F, { children: o.getInstance().data.regionSets[r.region_set_id].name }),
238
- [h.NOMINAL, h.ORDINAL].includes(r.col_type) && r.concept_set_id && o.getInstance().data.conceptsBySetId[r.concept_set_id] && /* @__PURE__ */ I(y, {
236
+ r.col_type === m.TEXT && t.max_length && /* @__PURE__ */ I(F, { children: n("Max length: {{maxLength}}", { maxLength: t.max_length }) }),
237
+ r.col_type === m.GEO_REGION && r.region_set_id && /* @__PURE__ */ I(F, { children: o.getInstance().data.regionSets[r.region_set_id].name }),
238
+ [m.NOMINAL, m.ORDINAL].includes(r.col_type) && r.concept_set_id && o.getInstance().data.conceptsBySetId[r.concept_set_id] && /* @__PURE__ */ I(y, {
239
239
  sx: { maxWidth: "100%" },
240
240
  children: /* @__PURE__ */ I(x, {
241
241
  sx: {
@@ -259,7 +259,7 @@ var B = ae(null), V = (e) => {
259
259
  ] }, t.id);
260
260
  }) })]
261
261
  })] });
262
- }, Y = ({ completeCaseType: e }) => /* @__PURE__ */ I(F, { children: e.ordered_dim_ids.map((t) => e.dims[t]).filter((t) => e.ref_dims[t.ref_dim_id].dim_type === re.OTHER ? !i.getCols(e, t.id).map((t) => e.ref_cols[t.ref_col_id].col_type).every((e) => e === "GENETIC_DISTANCE") : !0).map((t) => /* @__PURE__ */ L(g, {
262
+ }, Y = ({ completeCaseType: e }) => /* @__PURE__ */ I(F, { children: e.ordered_dim_ids.map((t) => e.dims[t]).filter((t) => e.ref_dims[t.ref_dim_id].dim_type !== h.OTHER || !i.getCols(e, t.id).map((t) => e.ref_cols[t.ref_col_id].col_type).every((e) => e === "GENETIC_DISTANCE")).map((t) => /* @__PURE__ */ L(g, {
263
263
  slotProps: { transition: { unmountOnExit: !0 } },
264
264
  children: [/* @__PURE__ */ I(v, {
265
265
  "aria-controls": `panel-${t.code}-${t.occurrence ?? 0}-content`,
@@ -286,7 +286,7 @@ var B = ae(null), V = (e) => {
286
286
  "& dd": { marginLeft: r.spacing(2) },
287
287
  "& dl": { margin: 0 }
288
288
  },
289
- children: [/* @__PURE__ */ I(p, { treeConfiguration: e }), /* @__PURE__ */ L(y, {
289
+ children: [/* @__PURE__ */ I(f, { treeConfiguration: e }), /* @__PURE__ */ L(y, {
290
290
  sx: { marginY: 1 },
291
291
  children: [/* @__PURE__ */ I("strong", {
292
292
  style: { fontSize: "1rem" },
@@ -296,9 +296,9 @@ var B = ae(null), V = (e) => {
296
296
  }) })]
297
297
  }, e.computedId)) });
298
298
  }, Z = /* @__PURE__ */ e(a(), 1), Q = ({ completeCaseType: e }) => {
299
- let { t } = P();
300
- return /* @__PURE__ */ I(F, { children: (0, Z.default)(Object.values(e.ref_cols).map((e) => e.region_set_id).filter((e) => !!e)).map((e) => {
301
- let n = o.getInstance().data.regionsByRegionSetId[e], r = n.toSorted((e, t) => e.code - +t.code);
299
+ let { t } = P(), n = (0, Z.default)(Object.values(e.ref_cols).map((e) => e.region_set_id).filter((e) => !!e));
300
+ return /* @__PURE__ */ I(F, { children: n.map((e) => {
301
+ let n = o.getInstance().data.regionsByRegionSetId[e], r = n.toSorted((e, t) => +e.code - t.code);
302
302
  return /* @__PURE__ */ L(g, {
303
303
  slotProps: { transition: {
304
304
  timeout: n.length > 15 ? 0 : void 0,
@@ -349,12 +349,12 @@ var B = ae(null), V = (e) => {
349
349
  }, e);
350
350
  }) });
351
351
  }, $ = ({ onPermalinkChange: e, onTitleChange: t }) => {
352
- let { t: n } = P(), r = O(), a = ne(), o = f(), s = te(), c = d(), u = ce([
352
+ let { t: n } = P(), r = O(), a = re(), o = d(), s = te(), c = ne(), u = ce([
353
353
  s,
354
354
  c,
355
355
  a,
356
356
  o
357
- ]), p = l(A(ee), (e) => e.completeCaseType), m = j((e) => {
357
+ ]), f = A(ee), p = l(f, (e) => e.completeCaseType), m = j((e) => {
358
358
  if (!e || !a.map.has(e)) return;
359
359
  let t = a.map.get(e), n = t.icd_code ? ` (ICD Code: ${t.icd_code})` : "";
360
360
  return `${t.name}${n}`;
@@ -363,7 +363,7 @@ var B = ae(null), V = (e) => {
363
363
  let t = o.map.get(e);
364
364
  return `${t.name} (${t.type})`;
365
365
  }, [o.map]);
366
- return M(() => {
366
+ M(() => {
367
367
  t(p.name);
368
368
  }, [p.name, t]), M(() => {
369
369
  p && e(i.createCaseTypeLink(p, !0));
@@ -372,19 +372,21 @@ var B = ae(null), V = (e) => {
372
372
  p.id,
373
373
  e,
374
374
  p
375
- ]), /* @__PURE__ */ I(se, {
375
+ ]);
376
+ let g = N(() => ({
377
+ caseTypeAccessAbacDict: p.case_type_access_abacs,
378
+ userDataCollections: c.data,
379
+ userDataCollectionsMap: s.map
380
+ }), [
381
+ p.case_type_access_abacs,
382
+ s.map,
383
+ c.data
384
+ ]);
385
+ return /* @__PURE__ */ I(se, {
376
386
  loadables: u,
377
387
  shouldHideActionButtons: !0,
378
388
  children: /* @__PURE__ */ I(V, {
379
- caseTypeAbac: N(() => ({
380
- caseTypeAccessAbacDict: p.case_type_access_abacs,
381
- userDataCollections: c.data,
382
- userDataCollectionsMap: s.map
383
- }), [
384
- p.case_type_access_abacs,
385
- s.map,
386
- c.data
387
- ]),
389
+ caseTypeAbac: g,
388
390
  children: /* @__PURE__ */ L(y, {
389
391
  sx: {
390
392
  "& dd": { marginLeft: r.spacing(1) },