@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
@@ -5,6 +5,13 @@ import './gs-mutations-over-time';
5
5
  import '../gs-app';
6
6
  import { withComponentDocs } from '../../../.storybook/ComponentDocsBlock';
7
7
  import { LAPIS_URL } from '../../constants';
8
+ import mockAminoAcidMutationsByDayAminoAcidMutations from '../../preact/mutationsOverTime/__mockData__/aminoAcidMutationsByDay/aminoAcidMutations.json';
9
+ import mockAminoAcidMutationsByDayAminoAcidMutationsOverTime from '../../preact/mutationsOverTime/__mockData__/aminoAcidMutationsByDay/aminoAcidMutationsOverTime.json';
10
+ import mockByWeekMutationsOverTime from '../../preact/mutationsOverTime/__mockData__/byWeek/mutationsOverTime.json';
11
+ import mockByWeekNucleotideMutations from '../../preact/mutationsOverTime/__mockData__/byWeek/nucleotideMutations.json';
12
+ import mockDefaultMutationsOverTime from '../../preact/mutationsOverTime/__mockData__/defaultMockData/mutationsOverTime.json';
13
+ import mockDefaultNucleotideMutations from '../../preact/mutationsOverTime/__mockData__/defaultMockData/nucleotideMutations.json';
14
+ import mockWithDisplayMutationsMutationsOverTime from '../../preact/mutationsOverTime/__mockData__/withDisplayMutations/mutationsOverTime.json';
8
15
  import { type MutationsOverTimeProps } from '../../preact/mutationsOverTime/mutations-over-time';
9
16
 
10
17
  const codeExample = String.raw`
@@ -43,7 +50,6 @@ const meta: Meta<Required<MutationsOverTimeProps>> = {
43
50
  displayMutations: { control: 'object' },
44
51
  initialMeanProportionInterval: { control: 'object' },
45
52
  hideGaps: { control: 'boolean' },
46
- useNewEndpoint: { control: 'boolean' },
47
53
  pageSizes: { control: 'object' },
48
54
  customColumns: { control: 'object' },
49
55
  },
@@ -56,7 +62,6 @@ const meta: Meta<Required<MutationsOverTimeProps>> = {
56
62
  lapisDateField: 'date',
57
63
  initialMeanProportionInterval: { min: 0.05, max: 0.9 },
58
64
  hideGaps: false,
59
- useNewEndpoint: false,
60
65
  pageSizes: [10, 20, 30, 40, 50],
61
66
  },
62
67
  parameters: withComponentDocs({
@@ -65,7 +70,52 @@ const meta: Meta<Required<MutationsOverTimeProps>> = {
65
70
  expectsChildren: false,
66
71
  codeExample,
67
72
  },
68
- fetchMock: {},
73
+ fetchMock: {
74
+ mocks: [
75
+ {
76
+ matcher: {
77
+ url: `${LAPIS_URL}/sample/nucleotideMutations`,
78
+ body: {
79
+ pangoLineage: 'JN.1*',
80
+ dateFrom: '2024-01-01',
81
+ dateTo: '2024-07-31',
82
+ minProportion: 0.001,
83
+ },
84
+ response: {
85
+ status: 200,
86
+ body: mockDefaultNucleotideMutations,
87
+ },
88
+ },
89
+ },
90
+ {
91
+ matcher: {
92
+ url: `${LAPIS_URL}/component/nucleotideMutationsOverTime`,
93
+ body: {
94
+ filters: {
95
+ pangoLineage: 'JN.1*',
96
+ dateFrom: '2024-01-15',
97
+ dateTo: '2024-07-10',
98
+ },
99
+ dateRanges: [
100
+ { dateFrom: '2024-01-01', dateTo: '2024-01-31' },
101
+ { dateFrom: '2024-02-01', dateTo: '2024-02-29' },
102
+ { dateFrom: '2024-03-01', dateTo: '2024-03-31' },
103
+ { dateFrom: '2024-04-01', dateTo: '2024-04-30' },
104
+ { dateFrom: '2024-05-01', dateTo: '2024-05-31' },
105
+ { dateFrom: '2024-06-01', dateTo: '2024-06-30' },
106
+ { dateFrom: '2024-07-01', dateTo: '2024-07-31' },
107
+ ],
108
+ dateField: 'date',
109
+ },
110
+ matchPartialBody: true,
111
+ response: {
112
+ status: 200,
113
+ body: mockDefaultMutationsOverTime,
114
+ },
115
+ },
116
+ },
117
+ ],
118
+ },
69
119
  }),
70
120
  tags: ['autodocs'],
71
121
  };
@@ -116,38 +166,121 @@ const Template: StoryObj<Required<MutationsOverTimeProps>> = {
116
166
  .initialMeanProportionInterval=${args.initialMeanProportionInterval}
117
167
  .hideGaps=${args.hideGaps}
118
168
  .pageSizes=${args.pageSizes}
119
- .useNewEndpoint=${args.useNewEndpoint}
120
169
  .customColumns=${args.customColumns}
121
170
  ></gs-mutations-over-time>
122
171
  </gs-app>
123
172
  `,
124
173
  };
125
174
 
126
- // This test uses mock data: defaultMockData.ts (through mutationOverTimeWorker.mock.ts)
127
175
  export const ByMonth: StoryObj<Required<MutationsOverTimeProps>> = {
128
176
  ...Template,
129
177
  };
130
178
 
131
- // This test uses mock data: withDisplayMutations.ts (through mutationOverTimeWorker.mock.ts)
132
179
  export const ByMonthWithFilterOnDisplayedMutations: StoryObj<Required<MutationsOverTimeProps>> = {
133
180
  ...Template,
134
181
  args: {
135
182
  ...Template.args,
136
- displayMutations: ['A19722G', 'G21641T', 'T21653-'],
183
+ displayMutations: ['A13121T', 'G24872T', 'T21653-'],
184
+ },
185
+ parameters: {
186
+ fetchMock: {
187
+ mocks: [
188
+ {
189
+ matcher: {
190
+ url: `${LAPIS_URL}/sample/nucleotideMutations`,
191
+ body: {
192
+ pangoLineage: 'JN.1*',
193
+ dateFrom: '2024-01-01',
194
+ dateTo: '2024-07-31',
195
+ minProportion: 0.001,
196
+ },
197
+ response: {
198
+ status: 200,
199
+ body: mockDefaultNucleotideMutations,
200
+ },
201
+ },
202
+ },
203
+ {
204
+ matcher: {
205
+ url: `${LAPIS_URL}/component/nucleotideMutationsOverTime`,
206
+ body: {
207
+ filters: { pangoLineage: 'JN.1*', dateFrom: '2024-01-15', dateTo: '2024-07-10' },
208
+ dateRanges: [
209
+ { dateFrom: '2024-01-01', dateTo: '2024-01-31' },
210
+ { dateFrom: '2024-02-01', dateTo: '2024-02-29' },
211
+ { dateFrom: '2024-03-01', dateTo: '2024-03-31' },
212
+ { dateFrom: '2024-04-01', dateTo: '2024-04-30' },
213
+ { dateFrom: '2024-05-01', dateTo: '2024-05-31' },
214
+ { dateFrom: '2024-06-01', dateTo: '2024-06-30' },
215
+ { dateFrom: '2024-07-01', dateTo: '2024-07-31' },
216
+ ],
217
+ includeMutations: ['A13121T', 'T21653-', 'G24872T'],
218
+ dateField: 'date',
219
+ },
220
+ response: {
221
+ status: 200,
222
+ body: mockWithDisplayMutationsMutationsOverTime,
223
+ },
224
+ },
225
+ },
226
+ ],
227
+ },
137
228
  },
138
229
  };
139
230
 
140
- // This test uses mock data: withGaps.ts (through mutationOverTimeWorker.mock.ts)
141
231
  export const ByMonthWithFilterOnDisplayedMutationsAndGaps: StoryObj<Required<MutationsOverTimeProps>> = {
142
232
  ...Template,
143
233
  args: {
144
234
  ...Template.args,
145
- displayMutations: ['A19722G', 'G21641T', 'T21652-'],
235
+ displayMutations: ['A13121T', 'G24872T', 'T21653-'],
146
236
  hideGaps: true,
147
237
  },
238
+ parameters: {
239
+ fetchMock: {
240
+ mocks: [
241
+ {
242
+ matcher: {
243
+ url: `${LAPIS_URL}/sample/nucleotideMutations`,
244
+ body: {
245
+ pangoLineage: 'JN.1*',
246
+ dateFrom: '2024-01-01',
247
+ dateTo: '2024-07-31',
248
+ minProportion: 0.001,
249
+ },
250
+ response: {
251
+ status: 200,
252
+ body: mockDefaultNucleotideMutations,
253
+ },
254
+ },
255
+ },
256
+ {
257
+ matcher: {
258
+ url: `${LAPIS_URL}/component/nucleotideMutationsOverTime`,
259
+ body: {
260
+ filters: { pangoLineage: 'JN.1*', dateFrom: '2024-01-15', dateTo: '2024-07-10' },
261
+ dateRanges: [
262
+ { dateFrom: '2024-01-01', dateTo: '2024-01-31' },
263
+ { dateFrom: '2024-02-01', dateTo: '2024-02-29' },
264
+ { dateFrom: '2024-03-01', dateTo: '2024-03-31' },
265
+ { dateFrom: '2024-04-01', dateTo: '2024-04-30' },
266
+ { dateFrom: '2024-05-01', dateTo: '2024-05-31' },
267
+ { dateFrom: '2024-06-01', dateTo: '2024-06-30' },
268
+ { dateFrom: '2024-07-01', dateTo: '2024-07-31' },
269
+ ],
270
+ includeMutations: ['A13121T', 'T21653-', 'G24872T'],
271
+ dateField: 'date',
272
+ },
273
+ response: {
274
+ status: 200,
275
+ body: mockWithDisplayMutationsMutationsOverTime,
276
+ },
277
+ },
278
+ },
279
+ ],
280
+ },
281
+ },
148
282
  };
149
283
 
150
- // This test uses mock data: byWeek.ts (through mutationOverTimeWorker.mock.ts)
151
284
  export const ByWeek: StoryObj<Required<MutationsOverTimeProps>> = {
152
285
  ...Template,
153
286
  args: {
@@ -155,9 +288,53 @@ export const ByWeek: StoryObj<Required<MutationsOverTimeProps>> = {
155
288
  lapisFilter: { pangoLineage: 'JN.1*', dateFrom: '2024-01-15', dateTo: '2024-02-11' },
156
289
  granularity: 'week',
157
290
  },
291
+ parameters: {
292
+ fetchMock: {
293
+ mocks: [
294
+ {
295
+ matcher: {
296
+ url: `${LAPIS_URL}/sample/nucleotideMutations`,
297
+ body: {
298
+ pangoLineage: 'JN.1*',
299
+ dateFrom: '2024-01-15',
300
+ dateTo: '2024-02-11',
301
+ minProportion: 0.001,
302
+ },
303
+ response: {
304
+ status: 200,
305
+ body: mockByWeekNucleotideMutations,
306
+ },
307
+ },
308
+ },
309
+ {
310
+ matcher: {
311
+ url: `${LAPIS_URL}/component/nucleotideMutationsOverTime`,
312
+ body: {
313
+ filters: {
314
+ pangoLineage: 'JN.1*',
315
+ dateFrom: '2024-01-15',
316
+ dateTo: '2024-02-11',
317
+ },
318
+ dateRanges: [
319
+ { dateFrom: '2024-01-15', dateTo: '2024-01-21' },
320
+ { dateFrom: '2024-01-22', dateTo: '2024-01-28' },
321
+ { dateFrom: '2024-01-29', dateTo: '2024-02-04' },
322
+ { dateFrom: '2024-02-05', dateTo: '2024-02-11' },
323
+ ],
324
+ dateField: 'date',
325
+ },
326
+ matchPartialBody: true,
327
+ response: {
328
+ status: 200,
329
+ body: mockByWeekMutationsOverTime,
330
+ },
331
+ },
332
+ },
333
+ ],
334
+ },
335
+ },
158
336
  };
159
337
 
160
- // This test uses mock data: aminoAcidMutationsByDay.ts (through mutationOverTimeWorker.mock.ts)
161
338
  export const AminoAcidMutationsByDay: StoryObj<Required<MutationsOverTimeProps>> = {
162
339
  ...Template,
163
340
  args: {
@@ -166,9 +343,56 @@ export const AminoAcidMutationsByDay: StoryObj<Required<MutationsOverTimeProps>>
166
343
  granularity: 'day',
167
344
  sequenceType: 'amino acid',
168
345
  },
346
+ parameters: {
347
+ fetchMock: {
348
+ mocks: [
349
+ {
350
+ matcher: {
351
+ url: `${LAPIS_URL}/sample/aminoAcidMutations`,
352
+ body: {
353
+ pangoLineage: 'JN.1*',
354
+ dateFrom: '2024-01-20',
355
+ dateTo: '2024-01-26',
356
+ minProportion: 0.001,
357
+ },
358
+ response: {
359
+ status: 200,
360
+ body: mockAminoAcidMutationsByDayAminoAcidMutations,
361
+ },
362
+ },
363
+ },
364
+ {
365
+ matcher: {
366
+ url: `${LAPIS_URL}/component/aminoAcidMutationsOverTime`,
367
+ body: {
368
+ filters: {
369
+ pangoLineage: 'JN.1*',
370
+ dateFrom: '2024-01-20',
371
+ dateTo: '2024-01-26',
372
+ },
373
+ dateRanges: [
374
+ { dateFrom: '2024-01-20', dateTo: '2024-01-20' },
375
+ { dateFrom: '2024-01-21', dateTo: '2024-01-21' },
376
+ { dateFrom: '2024-01-22', dateTo: '2024-01-22' },
377
+ { dateFrom: '2024-01-23', dateTo: '2024-01-23' },
378
+ { dateFrom: '2024-01-24', dateTo: '2024-01-24' },
379
+ { dateFrom: '2024-01-25', dateTo: '2024-01-25' },
380
+ { dateFrom: '2024-01-26', dateTo: '2024-01-26' },
381
+ ],
382
+ dateField: 'date',
383
+ },
384
+ matchPartialBody: true,
385
+ response: {
386
+ status: 200,
387
+ body: mockAminoAcidMutationsByDayAminoAcidMutationsOverTime,
388
+ },
389
+ },
390
+ },
391
+ ],
392
+ },
393
+ },
169
394
  };
170
395
 
171
- // This test uses mock data: defaultMockData.ts (through mutationOverTimeWorker.mock.ts)
172
396
  export const HideProportionOnSmallScreen: StoryObj<Required<MutationsOverTimeProps>> = {
173
397
  ...ByMonth,
174
398
  args: {
@@ -177,7 +401,6 @@ export const HideProportionOnSmallScreen: StoryObj<Required<MutationsOverTimePro
177
401
  },
178
402
  };
179
403
 
180
- // This test uses mock data: defaultMockData.ts (through mutationOverTimeWorker.mock.ts)
181
404
  export const WithFixedHeight: StoryObj<Required<MutationsOverTimeProps>> = {
182
405
  ...Template,
183
406
  args: {
@@ -186,21 +409,64 @@ export const WithFixedHeight: StoryObj<Required<MutationsOverTimeProps>> = {
186
409
  },
187
410
  };
188
411
 
189
- // This test uses mock data: withDisplayMutations.ts (through mutationOverTimeWorker.mock.ts)
190
412
  export const WithCustomColumns: StoryObj<Required<MutationsOverTimeProps>> = {
191
413
  ...Template,
192
414
  args: {
193
415
  ...Template.args,
194
- displayMutations: ['A19722G', 'G21641T', 'T21653-'],
416
+ displayMutations: ['A13121T', 'G24872T', 'T21653-'],
195
417
  customColumns: [
196
418
  {
197
419
  header: 'Jaccard Index',
198
420
  values: {
199
- A19722G: 0.75,
200
- G21641T: 0.92,
421
+ A13121T: 0.75,
422
+ G24872T: 0.92,
201
423
  'T21653-': 0.58,
202
424
  },
203
425
  },
204
426
  ],
205
427
  },
428
+ parameters: {
429
+ fetchMock: {
430
+ mocks: [
431
+ {
432
+ matcher: {
433
+ url: `${LAPIS_URL}/sample/nucleotideMutations`,
434
+ body: {
435
+ pangoLineage: 'JN.1*',
436
+ dateFrom: '2024-01-01',
437
+ dateTo: '2024-07-31',
438
+ minProportion: 0.001,
439
+ },
440
+ response: {
441
+ status: 200,
442
+ body: mockDefaultNucleotideMutations,
443
+ },
444
+ },
445
+ },
446
+ {
447
+ matcher: {
448
+ url: `${LAPIS_URL}/component/nucleotideMutationsOverTime`,
449
+ body: {
450
+ filters: { pangoLineage: 'JN.1*', dateFrom: '2024-01-15', dateTo: '2024-07-10' },
451
+ dateRanges: [
452
+ { dateFrom: '2024-01-01', dateTo: '2024-01-31' },
453
+ { dateFrom: '2024-02-01', dateTo: '2024-02-29' },
454
+ { dateFrom: '2024-03-01', dateTo: '2024-03-31' },
455
+ { dateFrom: '2024-04-01', dateTo: '2024-04-30' },
456
+ { dateFrom: '2024-05-01', dateTo: '2024-05-31' },
457
+ { dateFrom: '2024-06-01', dateTo: '2024-06-30' },
458
+ { dateFrom: '2024-07-01', dateTo: '2024-07-31' },
459
+ ],
460
+ includeMutations: ['A13121T', 'T21653-', 'G24872T'],
461
+ dateField: 'date',
462
+ },
463
+ response: {
464
+ status: 200,
465
+ body: mockWithDisplayMutationsMutationsOverTime,
466
+ },
467
+ },
468
+ },
469
+ ],
470
+ },
471
+ },
206
472
  };
@@ -122,14 +122,6 @@ export class MutationsOverTimeComponent extends PreactLitAdapterWithGridJsStyles
122
122
  @property({ type: Boolean })
123
123
  hideGaps: boolean = false;
124
124
 
125
- /**
126
- * Whether to use the mutationsOverTime endpoint from LAPIS.
127
- * If true, use the endpoint, if false, compute component data as before.
128
- * Eventually, the new endpoint will become the default.
129
- */
130
- @property({ type: Boolean })
131
- useNewEndpoint?: boolean = false;
132
-
133
125
  /**
134
126
  * The number of rows per page, which can be selected by the user.
135
127
  */
@@ -170,7 +162,6 @@ export class MutationsOverTimeComponent extends PreactLitAdapterWithGridJsStyles
170
162
  displayMutations={this.displayMutations}
171
163
  initialMeanProportionInterval={this.initialMeanProportionInterval}
172
164
  hideGaps={this.hideGaps}
173
- useNewEndpoint={this.useNewEndpoint}
174
165
  pageSizes={this.pageSizes}
175
166
  customColumns={this.customColumns}
176
167
  />