@genspectrum/dashboard-components 1.12.0 → 1.13.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 (57) hide show
  1. package/README.md +0 -7
  2. package/custom-elements.json +6 -25
  3. package/dist/components.d.ts +30 -36
  4. package/dist/components.js +943 -757
  5. package/dist/components.js.map +1 -1
  6. package/dist/util.d.ts +46 -30
  7. package/package.json +1 -5
  8. package/src/lapisApi/lapisApi.ts +21 -1
  9. package/src/lapisApi/lapisTypes.ts +36 -0
  10. package/src/preact/components/annotated-mutation.tsx +2 -2
  11. package/src/preact/{mutationsOverTime/mutations-over-time-grid.tsx → components/features-over-time-grid.tsx} +45 -52
  12. package/src/preact/genomeViewer/genome-data-viewer.tsx +2 -2
  13. package/src/preact/mutationsOverTime/MutationOverTimeData.ts +6 -4
  14. package/src/preact/mutationsOverTime/__mockData__/aminoAcidMutationsByDay/aminoAcidMutations.json +5482 -0
  15. package/src/preact/mutationsOverTime/__mockData__/aminoAcidMutationsByDay/aminoAcidMutationsOverTime.json +5496 -0
  16. package/src/preact/mutationsOverTime/__mockData__/byWeek/mutationsOverTime.json +7100 -0
  17. package/src/preact/mutationsOverTime/__mockData__/byWeek/nucleotideMutations.json +10122 -0
  18. package/src/preact/mutationsOverTime/__mockData__/defaultMockData/mutationsOverTime.json +12646 -0
  19. package/src/preact/mutationsOverTime/__mockData__/defaultMockData/nucleotideMutations.json +12632 -0
  20. package/src/preact/mutationsOverTime/__mockData__/request1800s/mutationsOverTime.json +16 -0
  21. package/src/preact/mutationsOverTime/__mockData__/request1800s/nucleotideMutations.json +11 -0
  22. package/src/preact/mutationsOverTime/__mockData__/withDisplayMutations/mutationsOverTime.json +52 -0
  23. package/src/preact/mutationsOverTime/getFilteredMutationsOverTime.spec.ts +3 -3
  24. package/src/preact/mutationsOverTime/mutations-over-time-grid-tooltip.tsx +3 -6
  25. package/src/preact/mutationsOverTime/mutations-over-time.stories.tsx +199 -12
  26. package/src/preact/mutationsOverTime/mutations-over-time.tsx +30 -35
  27. package/src/preact/wastewater/mutationsOverTime/wastewater-mutations-over-time.tsx +30 -3
  28. package/src/query/queryDatesInDataset.ts +89 -0
  29. package/src/query/queryMutationsOverTime.spec.ts +526 -548
  30. package/src/query/queryMutationsOverTime.ts +21 -232
  31. package/src/query/queryQueriesOverTime.spec.ts +432 -0
  32. package/src/query/queryQueriesOverTime.ts +125 -0
  33. package/src/utilEntrypoint.ts +3 -1
  34. package/src/utils/mutations.spec.ts +6 -0
  35. package/src/utils/mutations.ts +1 -1
  36. package/src/utils/temporalClass.ts +4 -0
  37. package/src/web-components/visualization/gs-mutations-over-time.spec-d.ts +0 -3
  38. package/src/web-components/visualization/gs-mutations-over-time.stories.ts +283 -17
  39. package/src/web-components/visualization/gs-mutations-over-time.tsx +0 -9
  40. package/standalone-bundle/dashboard-components.js +8935 -8781
  41. package/standalone-bundle/dashboard-components.js.map +1 -1
  42. package/dist/assets/mutationOverTimeWorker-f8Kp0S6V.js.map +0 -1
  43. package/src/preact/mutationsOverTime/__mockData__/aminoAcidMutationsByDay.ts +0 -47170
  44. package/src/preact/mutationsOverTime/__mockData__/byWeek.ts +0 -54026
  45. package/src/preact/mutationsOverTime/__mockData__/defaultMockData.ts +0 -108385
  46. package/src/preact/mutationsOverTime/__mockData__/mockConversion.ts +0 -54
  47. package/src/preact/mutationsOverTime/__mockData__/noDataWhenNoMutationsAreInFilter.ts +0 -23
  48. package/src/preact/mutationsOverTime/__mockData__/noDataWhenThereAreNoDatesInFilter.ts +0 -23
  49. package/src/preact/mutationsOverTime/__mockData__/showsMessageWhenTooManyMutations.ts +0 -65527
  50. package/src/preact/mutationsOverTime/__mockData__/withDisplayMutations.ts +0 -352
  51. package/src/preact/mutationsOverTime/__mockData__/withGaps.ts +0 -298
  52. package/src/preact/mutationsOverTime/mutationOverTimeWorker.mock.ts +0 -33
  53. package/src/preact/mutationsOverTime/mutationOverTimeWorker.ts +0 -29
  54. package/src/preact/webWorkers/useWebWorker.ts +0 -74
  55. package/src/preact/webWorkers/workerFunction.ts +0 -30
  56. package/src/query/queryMutationsOverTimeNewEndpoint.spec.ts +0 -988
  57. package/standalone-bundle/assets/mutationOverTimeWorker-AhhjjklP.js.map +0 -1
@@ -1,29 +0,0 @@
1
- import {
2
- type MutationOverTimeMutationValue,
3
- type MutationOverTimeQuery,
4
- queryMutationsOverTimeData,
5
- } from '../../query/queryMutationsOverTime';
6
- import type { SubstitutionOrDeletionEntry } from '../../types';
7
- import { type Map2DContents } from '../../utils/map2d';
8
- import type { Deletion, Substitution } from '../../utils/mutations';
9
- import type { Temporal } from '../../utils/temporalClass';
10
- import { workerFunction } from '../webWorkers/workerFunction';
11
-
12
- export type MutationOverTimeWorkerResponse = {
13
- overallMutationData: SubstitutionOrDeletionEntry<Substitution, Deletion>[];
14
- mutationOverTimeSerialized: Map2DContents<Substitution | Deletion, Temporal, MutationOverTimeMutationValue>;
15
- };
16
-
17
- export async function getMutationOverTimeWorkerFunction(event: MessageEvent<MutationOverTimeQuery>) {
18
- const mutationOverTimeData = await queryMutationsOverTimeData(event.data);
19
-
20
- const workerResponse: MutationOverTimeWorkerResponse = {
21
- overallMutationData: mutationOverTimeData.overallMutationData,
22
- mutationOverTimeSerialized: mutationOverTimeData.mutationOverTimeData.getContents(),
23
- };
24
- return workerResponse;
25
- }
26
-
27
- self.onmessage = async function (event: MessageEvent<MutationOverTimeQuery>) {
28
- await workerFunction(() => getMutationOverTimeWorkerFunction(event));
29
- };
@@ -1,74 +0,0 @@
1
- import { useEffect, useMemo, useState } from 'preact/hooks';
2
-
3
- import { UserFacingError } from '../components/error-display';
4
-
5
- export type LoadingWorkerStatus = {
6
- status: 'loading';
7
- };
8
- export type SuccessWorkerStatus<Response> = {
9
- status: 'success';
10
- data: Response;
11
- };
12
- export type ErrorWorkerStatus =
13
- | {
14
- status: 'error';
15
- userFacing: false;
16
- error: Error;
17
- }
18
- | {
19
- status: 'error';
20
- userFacing: true;
21
- headline: string;
22
- error: Error;
23
- };
24
- export type WorkerStatus<Response> = LoadingWorkerStatus | SuccessWorkerStatus<Response> | ErrorWorkerStatus;
25
-
26
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-parameters -- We need the return type
27
- export function useWebWorker<Response>(messageToWorker: unknown, WorkerConstructor: new () => Worker) {
28
- const [data, setData] = useState<Response | undefined>(undefined);
29
- const [error, setError] = useState<Error | undefined>(undefined);
30
- const [isLoading, setIsLoading] = useState(true);
31
-
32
- const worker = useMemo(() => {
33
- const worker = new WorkerConstructor();
34
-
35
- worker.onmessage = (event: MessageEvent<WorkerStatus<Response>>) => {
36
- const eventData = event.data;
37
- const status = eventData.status;
38
-
39
- switch (status) {
40
- case 'loading':
41
- setIsLoading(true);
42
- break;
43
- case 'success':
44
- setData(eventData.data);
45
- setError(undefined);
46
- setIsLoading(false);
47
- break;
48
- case 'error':
49
- setError(
50
- eventData.userFacing
51
- ? new UserFacingError(eventData.headline, eventData.error.message)
52
- : eventData.error,
53
- );
54
- setIsLoading(false);
55
- break;
56
- default:
57
- throw new Error(`Unknown status: ${status}`);
58
- }
59
- };
60
-
61
- worker.onmessageerror = (event: MessageEvent) => {
62
- setError(new Error(`Worker received a message that it cannot deserialize: ${event.data}`));
63
- setIsLoading(false);
64
- };
65
-
66
- return worker;
67
- }, [WorkerConstructor]);
68
-
69
- useEffect(() => {
70
- worker.postMessage(messageToWorker);
71
- }, [messageToWorker, worker]);
72
-
73
- return { data, error, isLoading };
74
- }
@@ -1,30 +0,0 @@
1
- import { type ErrorWorkerStatus, type LoadingWorkerStatus, type SuccessWorkerStatus } from './useWebWorker';
2
- import { UserFacingError } from '../components/error-display';
3
-
4
- export async function workerFunction(queryFunction: () => unknown) {
5
- try {
6
- postMessage({ status: 'loading' } satisfies LoadingWorkerStatus);
7
-
8
- const workerResponse = await queryFunction();
9
-
10
- postMessage({
11
- status: 'success',
12
- data: workerResponse,
13
- } satisfies SuccessWorkerStatus<unknown>);
14
- } catch (error) {
15
- postMessage(
16
- (error instanceof UserFacingError
17
- ? {
18
- status: 'error',
19
- userFacing: true,
20
- headline: error.headline,
21
- error,
22
- }
23
- : {
24
- status: 'error',
25
- userFacing: false,
26
- error: error instanceof Error ? error : new Error(`${error}`),
27
- }) satisfies ErrorWorkerStatus,
28
- );
29
- }
30
- }