@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.
- package/README.md +0 -7
- package/custom-elements.json +6 -25
- package/dist/components.d.ts +30 -36
- package/dist/components.js +943 -757
- package/dist/components.js.map +1 -1
- package/dist/util.d.ts +46 -30
- package/package.json +1 -5
- package/src/lapisApi/lapisApi.ts +21 -1
- package/src/lapisApi/lapisTypes.ts +36 -0
- package/src/preact/components/annotated-mutation.tsx +2 -2
- package/src/preact/{mutationsOverTime/mutations-over-time-grid.tsx → components/features-over-time-grid.tsx} +45 -52
- package/src/preact/genomeViewer/genome-data-viewer.tsx +2 -2
- package/src/preact/mutationsOverTime/MutationOverTimeData.ts +6 -4
- package/src/preact/mutationsOverTime/__mockData__/aminoAcidMutationsByDay/aminoAcidMutations.json +5482 -0
- package/src/preact/mutationsOverTime/__mockData__/aminoAcidMutationsByDay/aminoAcidMutationsOverTime.json +5496 -0
- package/src/preact/mutationsOverTime/__mockData__/byWeek/mutationsOverTime.json +7100 -0
- package/src/preact/mutationsOverTime/__mockData__/byWeek/nucleotideMutations.json +10122 -0
- package/src/preact/mutationsOverTime/__mockData__/defaultMockData/mutationsOverTime.json +12646 -0
- package/src/preact/mutationsOverTime/__mockData__/defaultMockData/nucleotideMutations.json +12632 -0
- package/src/preact/mutationsOverTime/__mockData__/request1800s/mutationsOverTime.json +16 -0
- package/src/preact/mutationsOverTime/__mockData__/request1800s/nucleotideMutations.json +11 -0
- package/src/preact/mutationsOverTime/__mockData__/withDisplayMutations/mutationsOverTime.json +52 -0
- package/src/preact/mutationsOverTime/getFilteredMutationsOverTime.spec.ts +3 -3
- package/src/preact/mutationsOverTime/mutations-over-time-grid-tooltip.tsx +3 -6
- package/src/preact/mutationsOverTime/mutations-over-time.stories.tsx +199 -12
- package/src/preact/mutationsOverTime/mutations-over-time.tsx +30 -35
- package/src/preact/wastewater/mutationsOverTime/wastewater-mutations-over-time.tsx +30 -3
- package/src/query/queryDatesInDataset.ts +89 -0
- package/src/query/queryMutationsOverTime.spec.ts +526 -548
- package/src/query/queryMutationsOverTime.ts +21 -232
- package/src/query/queryQueriesOverTime.spec.ts +432 -0
- package/src/query/queryQueriesOverTime.ts +125 -0
- package/src/utilEntrypoint.ts +3 -1
- package/src/utils/mutations.spec.ts +6 -0
- package/src/utils/mutations.ts +1 -1
- package/src/utils/temporalClass.ts +4 -0
- package/src/web-components/visualization/gs-mutations-over-time.spec-d.ts +0 -3
- package/src/web-components/visualization/gs-mutations-over-time.stories.ts +283 -17
- package/src/web-components/visualization/gs-mutations-over-time.tsx +0 -9
- package/standalone-bundle/dashboard-components.js +8935 -8781
- package/standalone-bundle/dashboard-components.js.map +1 -1
- package/dist/assets/mutationOverTimeWorker-f8Kp0S6V.js.map +0 -1
- package/src/preact/mutationsOverTime/__mockData__/aminoAcidMutationsByDay.ts +0 -47170
- package/src/preact/mutationsOverTime/__mockData__/byWeek.ts +0 -54026
- package/src/preact/mutationsOverTime/__mockData__/defaultMockData.ts +0 -108385
- package/src/preact/mutationsOverTime/__mockData__/mockConversion.ts +0 -54
- package/src/preact/mutationsOverTime/__mockData__/noDataWhenNoMutationsAreInFilter.ts +0 -23
- package/src/preact/mutationsOverTime/__mockData__/noDataWhenThereAreNoDatesInFilter.ts +0 -23
- package/src/preact/mutationsOverTime/__mockData__/showsMessageWhenTooManyMutations.ts +0 -65527
- package/src/preact/mutationsOverTime/__mockData__/withDisplayMutations.ts +0 -352
- package/src/preact/mutationsOverTime/__mockData__/withGaps.ts +0 -298
- package/src/preact/mutationsOverTime/mutationOverTimeWorker.mock.ts +0 -33
- package/src/preact/mutationsOverTime/mutationOverTimeWorker.ts +0 -29
- package/src/preact/webWorkers/useWebWorker.ts +0 -74
- package/src/preact/webWorkers/workerFunction.ts +0 -30
- package/src/query/queryMutationsOverTimeNewEndpoint.spec.ts +0 -988
- 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
|
-
}
|