@gen-epix/ui-client-casedb 4.0.2 → 4.1.0

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 (41) hide show
  1. package/dist/_chunks/AddCasesToEventDialog.js.map +1 -1
  2. package/dist/_chunks/CaseDbDownloadUtil.js +1 -1
  3. package/dist/_chunks/CaseDbDownloadUtil.js.map +1 -1
  4. package/dist/_chunks/CaseInfoDialog.js +4 -4
  5. package/dist/_chunks/CaseInfoDialog.js.map +1 -1
  6. package/dist/_chunks/CaseSetInfoDialog.js +4 -4
  7. package/dist/_chunks/CaseSetInfoDialog.js.map +1 -1
  8. package/dist/_chunks/CasesAlreadyInCaseSetWarning.js.map +1 -1
  9. package/dist/_chunks/Dashboard.js +3 -2
  10. package/dist/_chunks/Dashboard.js.map +1 -1
  11. package/dist/_chunks/FindSimilarCasesDialog.js +6 -6
  12. package/dist/_chunks/FindSimilarCasesDialog.js.map +1 -1
  13. package/dist/_chunks/HomePageTrends.js.map +1 -1
  14. package/dist/_chunks/LineListWidget.js +46 -45
  15. package/dist/_chunks/LineListWidget.js.map +1 -1
  16. package/dist/_chunks/Upload.js +308 -304
  17. package/dist/_chunks/Upload.js.map +1 -1
  18. package/dist/_chunks/UploadUtil.js +44 -40
  19. package/dist/_chunks/UploadUtil.js.map +1 -1
  20. package/dist/_chunks/dashboardStore.js.map +1 -1
  21. package/dist/classes/services/EventBusService/EventBusService.d.ts +9 -2
  22. package/dist/classes/services/EventBusService/index.js.map +1 -1
  23. package/dist/components/ui/MapWidget/index.js.map +1 -1
  24. package/dist/components/ui/RemoveCasesFromEventDialog/index.js.map +1 -1
  25. package/dist/components/ui/SequenceDownloadDialog/index.js +53 -40
  26. package/dist/components/ui/SequenceDownloadDialog/index.js.map +1 -1
  27. package/dist/components/ui/TreeWidget/index.js +8 -2
  28. package/dist/components/ui/TreeWidget/index.js.map +1 -1
  29. package/dist/locale/en.json +0 -11
  30. package/dist/locale/nl.json +0 -11
  31. package/dist/models/config.d.ts +2 -0
  32. package/dist/utils/UploadUtil/UploadUtil.d.ts +1 -0
  33. package/package.json +15 -23
  34. package/dist/components/ui/FileSelector/FileSelector.d.ts +0 -7
  35. package/dist/components/ui/FileSelector/index.d.ts +0 -1
  36. package/dist/components/ui/FileSelector/index.js +0 -206
  37. package/dist/components/ui/FileSelector/index.js.map +0 -1
  38. package/dist/utils/FileUtil/FileUtil.d.ts +0 -5
  39. package/dist/utils/FileUtil/index.d.ts +0 -1
  40. package/dist/utils/FileUtil/index.js +0 -15
  41. package/dist/utils/FileUtil/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"CasesAlreadyInCaseSetWarning.js","names":[],"sources":["../../src/components/ui/CasesAlreadyInCaseSetWarning/CasesAlreadyInCaseSetWarningCaseSetLink.tsx","../../src/components/ui/CasesAlreadyInCaseSetWarning/CasesAlreadyInCaseSetWarning.tsx"],"sourcesContent":["import { Link } from '@mui/material';\nimport {\n useCallback,\n useRef,\n} from 'react';\nimport { t } from 'i18next';\nimport type { CaseDbCaseSet } from '@gen-epix/api-casedb';\nimport type { ConfirmationRefMethods } from '@gen-epix/ui-core-components/components/Confirmation';\nimport { Confirmation } from '@gen-epix/ui-core-components/components/Confirmation';\nimport { ResponseHandler } from '@gen-epix/ui-client-common/components/ui/ResponseHandler';\nimport { RouterService } from '@gen-epix/ui-client-common/classes/services/RouterService';\nimport { useArray } from '@gen-epix/ui-core/hooks/useArray';\n\nimport { useCaseSetCategoryMapQuery } from '../../../dataHooks/useCaseSetCategoriesQuery';\nimport { useCaseSetStatusMapQuery } from '../../../dataHooks/useCaseSetStatusesQuery';\nimport { CaseSetUtil } from '../../../utils/CaseSetUtil';\n\n\nexport type CasesAlreadyInCaseSetWarningCaseSetLinkProps = {\n readonly caseSet: CaseDbCaseSet;\n};\n\nexport const CasesAlreadyInCaseSetWarningCaseSetLink = ({ caseSet }: CasesAlreadyInCaseSetWarningCaseSetLinkProps) => {\n const caseSetCategoryMapQuery = useCaseSetCategoryMapQuery();\n const caseSetStatusMapQuery = useCaseSetStatusMapQuery();\n const loadables = useArray([caseSetCategoryMapQuery, caseSetStatusMapQuery]);\n const confirmationRef = useRef<ConfirmationRefMethods>(null);\n\n const onLinkClick = useCallback(() => {\n confirmationRef.current?.open();\n }, []);\n\n const onConfirm = useCallback(async () => {\n await RouterService.getInstance().router.navigate(CaseSetUtil.createCaseSetLink(caseSet));\n }, [caseSet]);\n\n\n return (\n <ResponseHandler\n loadables={loadables}\n shouldHideActionButtons\n >\n <Link\n color={'primary'}\n href={'#'}\n onClick={onLinkClick}\n sx={{\n display: 'table',\n }}\n >\n {`${caseSet.name} (${caseSetCategoryMapQuery.map.get(caseSet.case_set_category_id)?.name}, ${caseSetStatusMapQuery.map.get(caseSet.case_set_status_id)?.name})`}\n </Link>\n <Confirmation\n body={t('This will navigate to the \"{{caseSetName}}\"-event. You will loose your current selection of cases and all applied filters. Do you want to continue?', { caseSetName: caseSet.name })}\n cancelLabel={t`Cancel`}\n confirmLabel={t`Continue`}\n onConfirm={onConfirm}\n ref={confirmationRef}\n title={t('Do you want to navigate to the \"{{caseSetName}}\"-event?', { caseSetName: caseSet.name })}\n />\n </ResponseHandler>\n );\n};\n","import {\n Alert,\n AlertTitle,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n useTheme,\n} from '@mui/material';\nimport uniq from 'lodash/uniq';\nimport { useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport type {\n CaseDbCase,\n CaseDbCaseSet,\n CaseDbTypedUuidSetFilter,\n} from '@gen-epix/api-casedb';\nimport {\n CaseDbCaseApi,\n CaseDbLogLevel,\n} from '@gen-epix/api-casedb';\nimport { LogService } from '@gen-epix/ui-client-common/classes/services/LogService';\nimport { QueryClientService } from '@gen-epix/ui-client-common/classes/services/QueryClientService';\nimport { ResponseHandler } from '@gen-epix/ui-client-common/components/ui/ResponseHandler';\nimport { useQueryMemo } from '@gen-epix/ui-client-common/hooks/useQueryMemo';\n\nimport { CaseSummary } from '../CaseSummary';\nimport { CASEDB_QUERY_KEY } from '../../../constants/query';\n\nimport { CasesAlreadyInCaseSetWarningCaseSetLink } from './CasesAlreadyInCaseSetWarningCaseSetLink';\n\nexport type CasesAlreadyInCaseSetWarningProps = {\n readonly cases: CaseDbCase[];\n};\n\nexport const CasesAlreadyInCaseSetWarning = ({ cases }: CasesAlreadyInCaseSetWarningProps) => {\n const { t } = useTranslation();\n const theme = useTheme();\n\n // Load all case set members for the given cases\n const caseSetMembersFilter = useMemo<CaseDbTypedUuidSetFilter>(() => {\n return {\n invert: false,\n key: 'case_id',\n members: cases?.map(row => row.id) ?? [],\n type: 'UUID_SET',\n };\n }, [cases]);\n const { data: caseSetMembers, error: caseSetMembersError, isLoading: isCaseSetMembersLoading } = useQueryMemo({\n queryFn: async ({ signal }) => {\n const response = await CaseDbCaseApi.getInstance().caseSetMembersPostQuery(caseSetMembersFilter, null, null, { signal });\n return response.data;\n },\n queryKey: QueryClientService.getInstance().getGenericKey(CASEDB_QUERY_KEY.CASE_SET_MEMBERS, caseSetMembersFilter),\n });\n\n // Load all case sets for the given case set members\n const existingCaseSetsFilter = useMemo<CaseDbTypedUuidSetFilter>(() => {\n return {\n invert: false,\n key: 'id',\n members: uniq((caseSetMembers ?? []).map(x => x.case_set_id)) ?? [],\n type: 'UUID_SET',\n };\n }, [caseSetMembers]);\n const { data: caseSets, error: caseSetsError, isLoading: isCaseSetsLoading } = useQueryMemo({\n enabled: existingCaseSetsFilter.members.length > 0,\n queryFn: async ({ signal }) => {\n const response = await CaseDbCaseApi.getInstance().caseSetsPostQuery(existingCaseSetsFilter, null, null, { signal });\n return response.data;\n },\n queryKey: QueryClientService.getInstance().getGenericKey(CASEDB_QUERY_KEY.CASE_SETS, existingCaseSetsFilter),\n });\n\n const caseSetsByCase = useMemo(() => {\n const map = new Map<CaseDbCase, CaseDbCaseSet[]>();\n if (!caseSets || !caseSetMembers) {\n return map;\n }\n\n caseSetMembers?.forEach(member => {\n const caseItem = cases.find(x => x.id === member.case_id);\n const caseSetItem = caseSets.find(x => x.id === member.case_set_id);\n if (!caseItem || !caseSetItem) {\n LogService.getInstance().log([\n {\n detail: member,\n level: CaseDbLogLevel.DEBUG,\n topic: 'MISSING_CASE_OR_CASE_SET',\n },\n ]);\n return;\n }\n if (!map.has(caseItem)) {\n map.set(caseItem, []);\n }\n map.get(caseItem).push(caseSetItem);\n });\n return map;\n }, [caseSets, caseSetMembers, cases]);\n\n return (\n <ResponseHandler\n error={caseSetMembersError || caseSetsError}\n isLoading={isCaseSetMembersLoading || isCaseSetsLoading}\n shouldHideActionButtons\n >\n {caseSetsByCase.size > 0 && (\n <Alert\n severity={'warning'}\n slotProps={{\n message: {\n sx: {\n flexGrow: 1,\n },\n },\n }}\n >\n <AlertTitle\n sx={{\n width: '100%',\n }}\n >\n {t('{{numCases}} selected case(s) are already part of other event(s):', { numCases: caseSetsByCase.size })}\n </AlertTitle>\n <Table\n size={'small'}\n sx={{\n width: '100%',\n }}\n >\n <TableHead>\n <TableRow>\n <TableCell\n sx={{\n width: '50%',\n }}\n >\n {t`Case`}\n </TableCell>\n <TableCell\n sx={{\n width: '50%',\n }}\n >\n {t`Events`}\n </TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {(Array.from(caseSetsByCase) ?? []).map(([caseItem, caseItemCaseSets]) => {\n return (\n <TableRow key={caseItem.id}>\n <TableCell\n sx={{\n verticalAlign: 'top',\n width: '50%',\n }}\n >\n <CaseSummary\n caseDbCase={caseItem}\n />\n </TableCell>\n <TableCell\n sx={{\n '& :nth-of-type(2)': {\n marginTop: theme.spacing(1),\n },\n verticalAlign: 'top',\n width: '50%',\n }}\n >\n {caseItemCaseSets.sort((a, b) => a.name.localeCompare(b.name)).map(caseItemCaseSet => (\n <CasesAlreadyInCaseSetWarningCaseSetLink\n caseSet={caseItemCaseSet}\n key={caseItemCaseSet.id}\n />\n ))}\n </TableCell>\n </TableRow>\n );\n })}\n </TableBody>\n </Table>\n </Alert>\n )}\n </ResponseHandler>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"CasesAlreadyInCaseSetWarning.js","names":[],"sources":["../../src/components/ui/CasesAlreadyInCaseSetWarning/CasesAlreadyInCaseSetWarningCaseSetLink.tsx","../../src/components/ui/CasesAlreadyInCaseSetWarning/CasesAlreadyInCaseSetWarning.tsx"],"sourcesContent":["import { Link } from '@mui/material';\nimport {\n useCallback,\n useRef,\n} from 'react';\nimport { t } from 'i18next';\nimport type { CaseDbCaseSet } from '@gen-epix/api-casedb';\nimport type { ConfirmationRefMethods } from '@gen-epix/ui-core-components/components/Confirmation';\nimport { Confirmation } from '@gen-epix/ui-core-components/components/Confirmation';\nimport { ResponseHandler } from '@gen-epix/ui-client-common/components/ui/ResponseHandler';\nimport { RouterService } from '@gen-epix/ui-client-common/classes/services/RouterService';\nimport { useArray } from '@gen-epix/ui-core/hooks/useArray';\n\nimport { useCaseSetCategoryMapQuery } from '../../../dataHooks/useCaseSetCategoriesQuery';\nimport { useCaseSetStatusMapQuery } from '../../../dataHooks/useCaseSetStatusesQuery';\nimport { CaseSetUtil } from '../../../utils/CaseSetUtil';\n\n\nexport type CasesAlreadyInCaseSetWarningCaseSetLinkProps = {\n readonly caseSet: CaseDbCaseSet;\n};\n\nexport const CasesAlreadyInCaseSetWarningCaseSetLink = ({ caseSet }: CasesAlreadyInCaseSetWarningCaseSetLinkProps) => {\n const caseSetCategoryMapQuery = useCaseSetCategoryMapQuery();\n const caseSetStatusMapQuery = useCaseSetStatusMapQuery();\n const loadables = useArray([caseSetCategoryMapQuery, caseSetStatusMapQuery]);\n const confirmationRef = useRef<ConfirmationRefMethods>(null);\n\n const onLinkClick = useCallback(() => {\n confirmationRef.current?.open();\n }, []);\n\n const onConfirm = useCallback(async () => {\n await RouterService.getInstance().router.navigate(CaseSetUtil.createCaseSetLink(caseSet));\n }, [caseSet]);\n\n\n return (\n <ResponseHandler\n loadables={loadables}\n shouldHideActionButtons\n >\n <Link\n color={'primary'}\n href={'#'}\n onClick={onLinkClick}\n sx={{\n display: 'table',\n }}\n >\n {`${caseSet.name} (${caseSetCategoryMapQuery.map.get(caseSet.case_set_category_id)?.name}, ${caseSetStatusMapQuery.map.get(caseSet.case_set_status_id)?.name})`}\n </Link>\n <Confirmation\n body={t('This will navigate to the \"{{caseSetName}}\"-event. You will loose your current selection of cases and all applied filters. Do you want to continue?', { caseSetName: caseSet.name })}\n cancelLabel={t`Cancel`}\n confirmLabel={t`Continue`}\n onConfirm={onConfirm}\n ref={confirmationRef}\n title={t('Do you want to navigate to the \"{{caseSetName}}\"-event?', { caseSetName: caseSet.name })}\n />\n </ResponseHandler>\n );\n};\n","import {\n Alert,\n AlertTitle,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n useTheme,\n} from '@mui/material';\nimport uniq from 'lodash/uniq';\nimport { useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport type {\n CaseDbCase,\n CaseDbCaseSet,\n CaseDbUuidSetFilter,\n} from '@gen-epix/api-casedb';\nimport {\n CaseDbCaseApi,\n CaseDbLogLevel,\n} from '@gen-epix/api-casedb';\nimport { LogService } from '@gen-epix/ui-client-common/classes/services/LogService';\nimport { QueryClientService } from '@gen-epix/ui-client-common/classes/services/QueryClientService';\nimport { ResponseHandler } from '@gen-epix/ui-client-common/components/ui/ResponseHandler';\nimport { useQueryMemo } from '@gen-epix/ui-client-common/hooks/useQueryMemo';\n\nimport { CaseSummary } from '../CaseSummary';\nimport { CASEDB_QUERY_KEY } from '../../../constants/query';\n\nimport { CasesAlreadyInCaseSetWarningCaseSetLink } from './CasesAlreadyInCaseSetWarningCaseSetLink';\n\nexport type CasesAlreadyInCaseSetWarningProps = {\n readonly cases: CaseDbCase[];\n};\n\nexport const CasesAlreadyInCaseSetWarning = ({ cases }: CasesAlreadyInCaseSetWarningProps) => {\n const { t } = useTranslation();\n const theme = useTheme();\n\n // Load all case set members for the given cases\n const caseSetMembersFilter = useMemo<CaseDbUuidSetFilter>(() => {\n return {\n invert: false,\n key: 'case_id',\n members: cases?.map(row => row.id) ?? [],\n type: 'UUID_SET',\n };\n }, [cases]);\n const { data: caseSetMembers, error: caseSetMembersError, isLoading: isCaseSetMembersLoading } = useQueryMemo({\n queryFn: async ({ signal }) => {\n const response = await CaseDbCaseApi.getInstance().caseSetMembersPostQuery(caseSetMembersFilter, null, null, { signal });\n return response.data;\n },\n queryKey: QueryClientService.getInstance().getGenericKey(CASEDB_QUERY_KEY.CASE_SET_MEMBERS, caseSetMembersFilter),\n });\n\n // Load all case sets for the given case set members\n const existingCaseSetsFilter = useMemo<CaseDbUuidSetFilter>(() => {\n return {\n invert: false,\n key: 'id',\n members: uniq((caseSetMembers ?? []).map(x => x.case_set_id)) ?? [],\n type: 'UUID_SET',\n };\n }, [caseSetMembers]);\n const { data: caseSets, error: caseSetsError, isLoading: isCaseSetsLoading } = useQueryMemo({\n enabled: existingCaseSetsFilter.members.length > 0,\n queryFn: async ({ signal }) => {\n const response = await CaseDbCaseApi.getInstance().caseSetsPostQuery(existingCaseSetsFilter, null, null, { signal });\n return response.data;\n },\n queryKey: QueryClientService.getInstance().getGenericKey(CASEDB_QUERY_KEY.CASE_SETS, existingCaseSetsFilter),\n });\n\n const caseSetsByCase = useMemo(() => {\n const map = new Map<CaseDbCase, CaseDbCaseSet[]>();\n if (!caseSets || !caseSetMembers) {\n return map;\n }\n\n caseSetMembers?.forEach(member => {\n const caseItem = cases.find(x => x.id === member.case_id);\n const caseSetItem = caseSets.find(x => x.id === member.case_set_id);\n if (!caseItem || !caseSetItem) {\n LogService.getInstance().log([\n {\n detail: member,\n level: CaseDbLogLevel.DEBUG,\n topic: 'MISSING_CASE_OR_CASE_SET',\n },\n ]);\n return;\n }\n if (!map.has(caseItem)) {\n map.set(caseItem, []);\n }\n map.get(caseItem).push(caseSetItem);\n });\n return map;\n }, [caseSets, caseSetMembers, cases]);\n\n return (\n <ResponseHandler\n error={caseSetMembersError || caseSetsError}\n isLoading={isCaseSetMembersLoading || isCaseSetsLoading}\n shouldHideActionButtons\n >\n {caseSetsByCase.size > 0 && (\n <Alert\n severity={'warning'}\n slotProps={{\n message: {\n sx: {\n flexGrow: 1,\n },\n },\n }}\n >\n <AlertTitle\n sx={{\n width: '100%',\n }}\n >\n {t('{{numCases}} selected case(s) are already part of other event(s):', { numCases: caseSetsByCase.size })}\n </AlertTitle>\n <Table\n size={'small'}\n sx={{\n width: '100%',\n }}\n >\n <TableHead>\n <TableRow>\n <TableCell\n sx={{\n width: '50%',\n }}\n >\n {t`Case`}\n </TableCell>\n <TableCell\n sx={{\n width: '50%',\n }}\n >\n {t`Events`}\n </TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {(Array.from(caseSetsByCase) ?? []).map(([caseItem, caseItemCaseSets]) => {\n return (\n <TableRow key={caseItem.id}>\n <TableCell\n sx={{\n verticalAlign: 'top',\n width: '50%',\n }}\n >\n <CaseSummary\n caseDbCase={caseItem}\n />\n </TableCell>\n <TableCell\n sx={{\n '& :nth-of-type(2)': {\n marginTop: theme.spacing(1),\n },\n verticalAlign: 'top',\n width: '50%',\n }}\n >\n {caseItemCaseSets.sort((a, b) => a.name.localeCompare(b.name)).map(caseItemCaseSet => (\n <CasesAlreadyInCaseSetWarningCaseSetLink\n caseSet={caseItemCaseSet}\n key={caseItemCaseSet.id}\n />\n ))}\n </TableCell>\n </TableRow>\n );\n })}\n </TableBody>\n </Table>\n </Alert>\n )}\n </ResponseHandler>\n );\n};\n"],"mappings":"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"}
@@ -2285,7 +2285,7 @@ var Zn = $, Qn = ({ anchorEl: e, onChange: t, onClose: n, onEscapeKeyDown: r, op
2285
2285
  });
2286
2286
  }, [e?.id, j?.id]), he = B(() => {
2287
2287
  r.current?.reset();
2288
- }, []), ge = H(() => !!ae && !oe, [oe, ae]);
2288
+ }, []), ge = H(() => !!ae && !oe, [oe, ae]), _e = N.getInstance().config.dashboard.DASHBOARD_INJECTED_COMPONENT;
2289
2289
  return /* @__PURE__ */ q(je, { children: [
2290
2290
  /* @__PURE__ */ q(We, { children: [
2291
2291
  /* @__PURE__ */ K(Ge, {
@@ -2379,7 +2379,8 @@ var Zn = $, Qn = ({ anchorEl: e, onChange: t, onClose: n, onEscapeKeyDown: r, op
2379
2379
  /* @__PURE__ */ K(x, { ref: f }),
2380
2380
  /* @__PURE__ */ K(S, { ref: m }),
2381
2381
  /* @__PURE__ */ K(C, { ref: h }),
2382
- /* @__PURE__ */ K(b, { ref: g })
2382
+ /* @__PURE__ */ K(b, { ref: g }),
2383
+ _e && /* @__PURE__ */ K(_e, {})
2383
2384
  ] });
2384
2385
  }, nr = ({ caseSet: e, children: t }) => {
2385
2386
  let n = z(E), r = H(() => new ot({