@genspectrum/dashboard-components 1.13.0 → 1.14.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 (27) hide show
  1. package/custom-elements.json +393 -2
  2. package/dist/components.d.ts +170 -53
  3. package/dist/components.js +702 -164
  4. package/dist/components.js.map +1 -1
  5. package/dist/util.d.ts +190 -55
  6. package/package.json +1 -1
  7. package/src/lapisApi/lapisTypes.ts +1 -1
  8. package/src/preact/prevalenceOverTime/prevalence-over-time-bubble-chart.tsx +1 -1
  9. package/src/preact/queriesOverTime/__mockData__/defaultMockData/queriesOverTime.json +32 -0
  10. package/src/preact/queriesOverTime/__mockData__/manyQueries.json +128 -0
  11. package/src/preact/queriesOverTime/__mockData__/request1800s.json +16 -0
  12. package/src/preact/queriesOverTime/__mockData__/withGaps.json +52 -0
  13. package/src/preact/queriesOverTime/getFilteredQueriesOverTimeData.ts +85 -0
  14. package/src/preact/queriesOverTime/queries-over-time-filter.tsx +25 -0
  15. package/src/preact/queriesOverTime/queries-over-time-grid-tooltip.stories.tsx +134 -0
  16. package/src/preact/queriesOverTime/queries-over-time-grid-tooltip.tsx +123 -0
  17. package/src/preact/queriesOverTime/queries-over-time.stories.tsx +481 -0
  18. package/src/preact/queriesOverTime/queries-over-time.tsx +304 -0
  19. package/src/utilEntrypoint.ts +1 -0
  20. package/src/web-components/visualization/gs-mutations-over-time.spec-d.ts +3 -0
  21. package/src/web-components/visualization/gs-mutations-over-time.tsx +1 -1
  22. package/src/web-components/visualization/gs-queries-over-time.spec-d.ts +38 -0
  23. package/src/web-components/visualization/gs-queries-over-time.stories.ts +288 -0
  24. package/src/web-components/visualization/gs-queries-over-time.tsx +154 -0
  25. package/src/web-components/visualization/index.ts +1 -0
  26. package/standalone-bundle/dashboard-components.js +8510 -8069
  27. package/standalone-bundle/dashboard-components.js.map +1 -1
@@ -828,7 +828,7 @@ export declare class MutationsOverTimeComponent extends PreactLitAdapterWithGrid
828
828
  * If true, date ranges with no data will be hidden initially; if false, not.
829
829
  * Can be switched with a button in the toolbar.
830
830
  */
831
- hideGaps: boolean;
831
+ hideGaps: boolean | undefined;
832
832
  /**
833
833
  * The number of rows per page, which can be selected by the user.
834
834
  */
@@ -1177,6 +1177,107 @@ export declare class PrevalenceOverTimeComponent extends PreactLitAdapterWithGri
1177
1177
  render(): JSX_2.Element;
1178
1178
  }
1179
1179
 
1180
+ /**
1181
+ * ## Context
1182
+ *
1183
+ * This component displays arbitrary LAPIS queries over time for a dataset.
1184
+ * Each query consists of a displayLabel (optional), countQuery (string for counting matches),
1185
+ * and coverageQuery (string for determining the coverage/denominator).
1186
+ * The shown date range is determined by the available dates in the dataset.
1187
+ *
1188
+ * ## Views
1189
+ *
1190
+ * ### Grid View
1191
+ *
1192
+ * The grid view shows the proportion for each query over date ranges.
1193
+ * Proportions are calculated as count/coverage for each time period.
1194
+ *
1195
+ * Users can filter the displayed rows by mean proportion via a slider in the toolbar.
1196
+ * The mean proportion of each row is calculated over the whole data range that the component displays.
1197
+ *
1198
+ * @fires {CustomEvent<undefined>} gs-component-finished-loading
1199
+ * Fired when the component has finished loading the required data from LAPIS.
1200
+ */
1201
+ export declare class QueriesOverTimeComponent extends PreactLitAdapterWithGridJsStyles {
1202
+ /**
1203
+ * LAPIS filter to apply to all queries. This is used to determine the date range and total counts.
1204
+ */
1205
+ lapisFilter: Record<string, string | string[] | number | null | boolean | undefined> & {
1206
+ nucleotideMutations?: string[];
1207
+ aminoAcidMutations?: string[];
1208
+ nucleotideInsertions?: string[];
1209
+ aminoAcidInsertions?: string[];
1210
+ };
1211
+ /**
1212
+ * Required.
1213
+ *
1214
+ * Array of queries to display. Each query has:
1215
+ * - displayLabel: string - The name to show in the grid row label
1216
+ * - countQuery: string - Query string to count matches
1217
+ * - coverageQuery: string - Query string to determine coverage/denominator
1218
+ *
1219
+ * Both queries (count and coverage) are 'advanced queries' as they are defined in LAPIS.
1220
+ */
1221
+ queries: {
1222
+ displayLabel: string;
1223
+ countQuery: string;
1224
+ coverageQuery: string;
1225
+ }[];
1226
+ /**
1227
+ * A list of tabs with views that this component should provide.
1228
+ */
1229
+ views: 'grid'[];
1230
+ /**
1231
+ * The width of the component.
1232
+ *
1233
+ * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/concepts-size-of-components--docs for more information.
1234
+ */
1235
+ width: string;
1236
+ /**
1237
+ * The height of the component.
1238
+ *
1239
+ * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/concepts-size-of-components--docs for more information.
1240
+ */
1241
+ height: string | undefined;
1242
+ /**
1243
+ * The granularity of the time axis.
1244
+ */
1245
+ granularity: 'day' | 'week' | 'month' | 'year';
1246
+ /**
1247
+ * Required.
1248
+ *
1249
+ * The LAPIS field that the data should be aggregated by.
1250
+ * Must be a field of type `date` in LAPIS.
1251
+ */
1252
+ lapisDateField: string;
1253
+ /**
1254
+ * The initial proportion interval for the grid view.
1255
+ * The values must be between 0 and 1, inclusive.
1256
+ */
1257
+ initialMeanProportionInterval: {
1258
+ min: number;
1259
+ max: number;
1260
+ };
1261
+ /**
1262
+ * If true, date ranges with no data will be hidden initially; if false, not.
1263
+ * Can be switched with a button in the toolbar.
1264
+ */
1265
+ hideGaps: boolean | undefined;
1266
+ /**
1267
+ * The number of rows per page, which can be selected by the user.
1268
+ */
1269
+ pageSizes: number[] | number;
1270
+ /**
1271
+ * Custom columns to add to the grid.
1272
+ * Each column has a header and a map of query displayLabels to values.
1273
+ */
1274
+ customColumns?: {
1275
+ header: string;
1276
+ values: Record<string, string | number>;
1277
+ }[];
1278
+ render(): JSX_2.Element;
1279
+ }
1280
+
1180
1281
  declare type ReferenceGenome = default_2.infer<typeof referenceGenomeResponse>;
1181
1282
 
1182
1283
  declare const referenceGenomeResponse: default_2.ZodObject<{
@@ -1690,7 +1791,11 @@ declare global {
1690
1791
 
1691
1792
  declare global {
1692
1793
  interface HTMLElementTagNameMap {
1693
- 'gs-genome-data-viewer': GenomeDataViewerComponent;
1794
+ 'gs-date-range-filter': DateRangeFilterComponent;
1795
+ }
1796
+ interface HTMLElementEventMap {
1797
+ [gsEventNames.dateRangeFilterChanged]: CustomEvent<Record<string, string>>;
1798
+ [gsEventNames.dateRangeOptionChanged]: DateRangeOptionChangedEvent;
1694
1799
  }
1695
1800
  }
1696
1801
 
@@ -1698,7 +1803,7 @@ declare global {
1698
1803
  declare global {
1699
1804
  namespace JSX {
1700
1805
  interface IntrinsicElements {
1701
- 'gs-genome-data-viewer': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1806
+ 'gs-date-range-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1702
1807
  }
1703
1808
  }
1704
1809
  }
@@ -1706,7 +1811,10 @@ declare global {
1706
1811
 
1707
1812
  declare global {
1708
1813
  interface HTMLElementTagNameMap {
1709
- 'gs-mutations': MutationsComponent;
1814
+ 'gs-location-filter': LocationFilterComponent;
1815
+ }
1816
+ interface HTMLElementEventMap {
1817
+ [gsEventNames.locationChanged]: LocationChangedEvent;
1710
1818
  }
1711
1819
  }
1712
1820
 
@@ -1714,7 +1822,7 @@ declare global {
1714
1822
  declare global {
1715
1823
  namespace JSX {
1716
1824
  interface IntrinsicElements {
1717
- 'gs-mutations': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1825
+ 'gs-location-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1718
1826
  }
1719
1827
  }
1720
1828
  }
@@ -1722,7 +1830,10 @@ declare global {
1722
1830
 
1723
1831
  declare global {
1724
1832
  interface HTMLElementTagNameMap {
1725
- 'gs-prevalence-over-time': PrevalenceOverTimeComponent;
1833
+ 'gs-text-filter': TextFilterComponent;
1834
+ }
1835
+ interface HTMLElementEventMap {
1836
+ [gsEventNames.textFilterChanged]: TextFilterChangedEvent;
1726
1837
  }
1727
1838
  }
1728
1839
 
@@ -1730,7 +1841,7 @@ declare global {
1730
1841
  declare global {
1731
1842
  namespace JSX {
1732
1843
  interface IntrinsicElements {
1733
- 'gs-prevalence-over-time': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1844
+ 'gs-text-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1734
1845
  }
1735
1846
  }
1736
1847
  }
@@ -1738,7 +1849,10 @@ declare global {
1738
1849
 
1739
1850
  declare global {
1740
1851
  interface HTMLElementTagNameMap {
1741
- 'gs-mutation-comparison': MutationComparisonComponent;
1852
+ 'gs-mutation-filter': MutationFilterComponent;
1853
+ }
1854
+ interface HTMLElementEventMap {
1855
+ [gsEventNames.mutationFilterChanged]: CustomEvent<MutationsFilter>;
1742
1856
  }
1743
1857
  }
1744
1858
 
@@ -1746,7 +1860,7 @@ declare global {
1746
1860
  declare global {
1747
1861
  namespace JSX {
1748
1862
  interface IntrinsicElements {
1749
- 'gs-mutation-comparison': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1863
+ 'gs-mutation-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1750
1864
  }
1751
1865
  }
1752
1866
  }
@@ -1754,7 +1868,11 @@ declare global {
1754
1868
 
1755
1869
  declare global {
1756
1870
  interface HTMLElementTagNameMap {
1757
- 'gs-relative-growth-advantage': RelativeGrowthAdvantageComponent;
1871
+ 'gs-lineage-filter': LineageFilterComponent;
1872
+ }
1873
+ interface HTMLElementEventMap {
1874
+ [gsEventNames.lineageFilterChanged]: LineageFilterChangedEvent;
1875
+ [gsEventNames.lineageFilterMultiChanged]: LineageMultiFilterChangedEvent;
1758
1876
  }
1759
1877
  }
1760
1878
 
@@ -1762,7 +1880,7 @@ declare global {
1762
1880
  declare global {
1763
1881
  namespace JSX {
1764
1882
  interface IntrinsicElements {
1765
- 'gs-relative-growth-advantage': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1883
+ 'gs-lineage-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1766
1884
  }
1767
1885
  }
1768
1886
  }
@@ -1770,7 +1888,11 @@ declare global {
1770
1888
 
1771
1889
  declare global {
1772
1890
  interface HTMLElementTagNameMap {
1773
- 'gs-number-sequences-over-time': NumberSequencesOverTimeComponent;
1891
+ 'gs-number-range-filter': NumberRangeFilterComponent;
1892
+ }
1893
+ interface HTMLElementEventMap {
1894
+ [gsEventNames.numberRangeFilterChanged]: NumberRangeFilterChangedEvent;
1895
+ [gsEventNames.numberRangeValueChanged]: NumberRangeValueChangedEvent;
1774
1896
  }
1775
1897
  }
1776
1898
 
@@ -1778,7 +1900,7 @@ declare global {
1778
1900
  declare global {
1779
1901
  namespace JSX {
1780
1902
  interface IntrinsicElements {
1781
- 'gs-number-sequences-over-time': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1903
+ 'gs-number-range-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1782
1904
  }
1783
1905
  }
1784
1906
  }
@@ -1786,7 +1908,7 @@ declare global {
1786
1908
 
1787
1909
  declare global {
1788
1910
  interface HTMLElementTagNameMap {
1789
- 'gs-aggregate': AggregateComponent;
1911
+ 'gs-genome-data-viewer': GenomeDataViewerComponent;
1790
1912
  }
1791
1913
  }
1792
1914
 
@@ -1794,7 +1916,7 @@ declare global {
1794
1916
  declare global {
1795
1917
  namespace JSX {
1796
1918
  interface IntrinsicElements {
1797
- 'gs-aggregate': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1919
+ 'gs-genome-data-viewer': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1798
1920
  }
1799
1921
  }
1800
1922
  }
@@ -1802,7 +1924,7 @@ declare global {
1802
1924
 
1803
1925
  declare global {
1804
1926
  interface HTMLElementTagNameMap {
1805
- 'gs-mutations-over-time': MutationsOverTimeComponent;
1927
+ 'gs-mutation-comparison': MutationComparisonComponent;
1806
1928
  }
1807
1929
  }
1808
1930
 
@@ -1810,7 +1932,7 @@ declare global {
1810
1932
  declare global {
1811
1933
  namespace JSX {
1812
1934
  interface IntrinsicElements {
1813
- 'gs-mutations-over-time': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1935
+ 'gs-mutation-comparison': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1814
1936
  }
1815
1937
  }
1816
1938
  }
@@ -1818,7 +1940,7 @@ declare global {
1818
1940
 
1819
1941
  declare global {
1820
1942
  interface HTMLElementTagNameMap {
1821
- 'gs-sequences-by-location': SequencesByLocationComponent;
1943
+ 'gs-mutations': MutationsComponent;
1822
1944
  }
1823
1945
  }
1824
1946
 
@@ -1826,7 +1948,7 @@ declare global {
1826
1948
  declare global {
1827
1949
  namespace JSX {
1828
1950
  interface IntrinsicElements {
1829
- 'gs-sequences-by-location': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1951
+ 'gs-mutations': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1830
1952
  }
1831
1953
  }
1832
1954
  }
@@ -1834,7 +1956,7 @@ declare global {
1834
1956
 
1835
1957
  declare global {
1836
1958
  interface HTMLElementTagNameMap {
1837
- 'gs-statistics': StatisticsComponent;
1959
+ 'gs-prevalence-over-time': PrevalenceOverTimeComponent;
1838
1960
  }
1839
1961
  }
1840
1962
 
@@ -1842,7 +1964,7 @@ declare global {
1842
1964
  declare global {
1843
1965
  namespace JSX {
1844
1966
  interface IntrinsicElements {
1845
- 'gs-statistics': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1967
+ 'gs-prevalence-over-time': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1846
1968
  }
1847
1969
  }
1848
1970
  }
@@ -1850,11 +1972,7 @@ declare global {
1850
1972
 
1851
1973
  declare global {
1852
1974
  interface HTMLElementTagNameMap {
1853
- 'gs-date-range-filter': DateRangeFilterComponent;
1854
- }
1855
- interface HTMLElementEventMap {
1856
- [gsEventNames.dateRangeFilterChanged]: CustomEvent<Record<string, string>>;
1857
- [gsEventNames.dateRangeOptionChanged]: DateRangeOptionChangedEvent;
1975
+ 'gs-relative-growth-advantage': RelativeGrowthAdvantageComponent;
1858
1976
  }
1859
1977
  }
1860
1978
 
@@ -1862,7 +1980,7 @@ declare global {
1862
1980
  declare global {
1863
1981
  namespace JSX {
1864
1982
  interface IntrinsicElements {
1865
- 'gs-date-range-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1983
+ 'gs-relative-growth-advantage': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1866
1984
  }
1867
1985
  }
1868
1986
  }
@@ -1870,10 +1988,7 @@ declare global {
1870
1988
 
1871
1989
  declare global {
1872
1990
  interface HTMLElementTagNameMap {
1873
- 'gs-location-filter': LocationFilterComponent;
1874
- }
1875
- interface HTMLElementEventMap {
1876
- [gsEventNames.locationChanged]: LocationChangedEvent;
1991
+ 'gs-aggregate': AggregateComponent;
1877
1992
  }
1878
1993
  }
1879
1994
 
@@ -1881,7 +1996,7 @@ declare global {
1881
1996
  declare global {
1882
1997
  namespace JSX {
1883
1998
  interface IntrinsicElements {
1884
- 'gs-location-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1999
+ 'gs-aggregate': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1885
2000
  }
1886
2001
  }
1887
2002
  }
@@ -1889,10 +2004,7 @@ declare global {
1889
2004
 
1890
2005
  declare global {
1891
2006
  interface HTMLElementTagNameMap {
1892
- 'gs-text-filter': TextFilterComponent;
1893
- }
1894
- interface HTMLElementEventMap {
1895
- [gsEventNames.textFilterChanged]: TextFilterChangedEvent;
2007
+ 'gs-number-sequences-over-time': NumberSequencesOverTimeComponent;
1896
2008
  }
1897
2009
  }
1898
2010
 
@@ -1900,7 +2012,7 @@ declare global {
1900
2012
  declare global {
1901
2013
  namespace JSX {
1902
2014
  interface IntrinsicElements {
1903
- 'gs-text-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
2015
+ 'gs-number-sequences-over-time': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1904
2016
  }
1905
2017
  }
1906
2018
  }
@@ -1908,10 +2020,7 @@ declare global {
1908
2020
 
1909
2021
  declare global {
1910
2022
  interface HTMLElementTagNameMap {
1911
- 'gs-mutation-filter': MutationFilterComponent;
1912
- }
1913
- interface HTMLElementEventMap {
1914
- [gsEventNames.mutationFilterChanged]: CustomEvent<MutationsFilter>;
2023
+ 'gs-mutations-over-time': MutationsOverTimeComponent;
1915
2024
  }
1916
2025
  }
1917
2026
 
@@ -1919,7 +2028,7 @@ declare global {
1919
2028
  declare global {
1920
2029
  namespace JSX {
1921
2030
  interface IntrinsicElements {
1922
- 'gs-mutation-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
2031
+ 'gs-mutations-over-time': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1923
2032
  }
1924
2033
  }
1925
2034
  }
@@ -1927,11 +2036,7 @@ declare global {
1927
2036
 
1928
2037
  declare global {
1929
2038
  interface HTMLElementTagNameMap {
1930
- 'gs-lineage-filter': LineageFilterComponent;
1931
- }
1932
- interface HTMLElementEventMap {
1933
- [gsEventNames.lineageFilterChanged]: LineageFilterChangedEvent;
1934
- [gsEventNames.lineageFilterMultiChanged]: LineageMultiFilterChangedEvent;
2039
+ 'gs-sequences-by-location': SequencesByLocationComponent;
1935
2040
  }
1936
2041
  }
1937
2042
 
@@ -1939,7 +2044,7 @@ declare global {
1939
2044
  declare global {
1940
2045
  namespace JSX {
1941
2046
  interface IntrinsicElements {
1942
- 'gs-lineage-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
2047
+ 'gs-sequences-by-location': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1943
2048
  }
1944
2049
  }
1945
2050
  }
@@ -1947,11 +2052,23 @@ declare global {
1947
2052
 
1948
2053
  declare global {
1949
2054
  interface HTMLElementTagNameMap {
1950
- 'gs-number-range-filter': NumberRangeFilterComponent;
2055
+ 'gs-statistics': StatisticsComponent;
1951
2056
  }
1952
- interface HTMLElementEventMap {
1953
- [gsEventNames.numberRangeFilterChanged]: NumberRangeFilterChangedEvent;
1954
- [gsEventNames.numberRangeValueChanged]: NumberRangeValueChangedEvent;
2057
+ }
2058
+
2059
+
2060
+ declare global {
2061
+ namespace JSX {
2062
+ interface IntrinsicElements {
2063
+ 'gs-statistics': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
2064
+ }
2065
+ }
2066
+ }
2067
+
2068
+
2069
+ declare global {
2070
+ interface HTMLElementTagNameMap {
2071
+ 'gs-queries-over-time': QueriesOverTimeComponent;
1955
2072
  }
1956
2073
  }
1957
2074
 
@@ -1959,7 +2076,7 @@ declare global {
1959
2076
  declare global {
1960
2077
  namespace JSX {
1961
2078
  interface IntrinsicElements {
1962
- 'gs-number-range-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
2079
+ 'gs-queries-over-time': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1963
2080
  }
1964
2081
  }
1965
2082
  }