Compare commits

...

205 Commits

Author SHA1 Message Date
Michael S. Molina
31e1b63bb3 chore: Adds 3.1.3 RC1 data to CHANGELOG.md 2024-05-02 10:43:06 -03:00
Maxime Beauchemin
b7534a0a22 chore: allow codecov to detect SHA (#28278) 2024-05-02 09:22:50 -03:00
Evan Rusackas
7840afb7fc fix(ci): adding codecov token (#28277)
(cherry picked from commit 3cc8434c5a)
2024-05-01 10:24:22 -03:00
JUST.in DO IT
4e416150f2 fix(sqllab): invalid css scope for ace editor autocomplete (#28156) 2024-04-29 09:37:02 -03:00
Beto Dealmeida
2d0eb38c3b fix: Dremio alias (#28222)
(cherry picked from commit 173d5d09bf)
2024-04-29 08:56:16 -03:00
John Bodley
ccda3b45fb fix(sql_parse): Provide more lenient logic when extracting latest[_sub]_partition (#28152)
(cherry picked from commit c5e7d870f0)
2024-04-29 08:56:16 -03:00
John Bodley
d2488e94e1 fix(sql_parse): Support Jinja format() filter when extracting latest[_sub]_partition (#28117)
(cherry picked from commit 2f11f66167)
2024-04-19 08:27:21 -03:00
Michael S. Molina
36ba5c9434 fix: Dynamic filter does not show all values on blur/clear events (#28036)
(cherry picked from commit 6e01a68276)
2024-04-16 08:25:11 -03:00
Elizabeth Thompson
964dc610af fix: bump client side chart timeouts to use the SUPERSET_WEBSERVER_TIMEOUT (#28018)
(cherry picked from commit 99c414e4da)
2024-04-16 08:25:11 -03:00
Michael S. Molina
e8784c448d fix: Select is accepting unknown pasted values when allowNewOptions is false (#28017)
(cherry picked from commit caad29b5b3)
2024-04-16 08:25:11 -03:00
Michael S. Molina
ffe87bf2ec fix: Incorrect onChange value when an unloaded value is pasted into AsyncSelect (#27996)
(cherry picked from commit 06077d42a8)
2024-04-16 08:25:11 -03:00
Spencer Torres
83b4947ad2 fix(frontend): allow "constructor" property in response data (#25407)
(cherry picked from commit a1983e468b)
2024-04-08 11:00:34 -03:00
Daniel Vaz Gaspar
d71bad7bde fix: add mariadb engine spec same as MySQL (#27919)
(cherry picked from commit 559605e393)
2024-04-08 11:00:34 -03:00
Ross Mabbett
12570a7a31 fix(Dashboard): Add border to row when hovering HoverMenu in edit mode (#27593) 2024-04-08 11:00:05 -03:00
John Bodley
928471512c chore(sqllab): Do not strip comments when executing SQL statements (#27725) 2024-04-04 10:29:00 -03:00
Lily Kuang
863461dd41 fix(bar-chart): change legend padding for horizontal orientation (#27883)
(cherry picked from commit cfa0556df7)
2024-04-04 08:57:12 -03:00
John Bodley
80ccb0c51f chore: Default to engine specification regarding using wildcard (#27843)
(cherry picked from commit 30bc8f06dc)
2024-04-04 08:57:12 -03:00
John Bodley
d8cffb0a3f chore(sql_parse): Provide more meaningful SQLGlot errors (#27858)
(cherry picked from commit c38529741e)
2024-04-03 11:24:13 -03:00
John Bodley
58a53b4457 chore(sql_parse): Strip leading/trailing whitespace in Jinja macro extraction (#27842)
(cherry picked from commit 5ab95aaf7d)
2024-04-03 10:27:12 -03:00
JUST.in DO IT
4581b46098 fix(dashboard): missing null check in error extra (#27845)
(cherry picked from commit f25795c4e4)
2024-04-03 10:27:12 -03:00
Michael S. Molina
6ba1dfbfd5 chore: Adds 3.1.2 RC1 data to CHANGELOG.md 2024-04-02 10:00:52 -03:00
Michael S. Molina
c7a2adc880 fix: Select onChange is fired when the same item is selected in single mode (#27706)
(cherry picked from commit d69a1870a0)
2024-04-01 16:00:12 -03:00
Elizabeth Thompson
c377ccf7d6 fix: reduce alert error to warning (#27744)
(cherry picked from commit 70da454bbc)
2024-03-28 08:58:29 -03:00
John Bodley
19b05d3422 fix: Provide more inclusive error handling for saved queries (#27644)
(cherry picked from commit 3ae74d1f2d)
2024-03-26 16:39:25 -03:00
John Bodley
119b2b0c93 fix: Leverage actual database for rendering Jinjarized SQL (#27646) 2024-03-26 16:39:05 -03:00
JUST.in DO IT
e48dae781f fix(sqllab): unable to remove table (#27636)
(cherry picked from commit fa3fea9dd8)
2024-03-26 15:33:58 -03:00
Ross Mabbett
64d1a8f8c3 fix(Chart Annotation modal): Table and Superset annotation options will paginate, exceeding previous max limit 100 (#27022)
(cherry picked from commit ce210eebde)
2024-03-26 15:33:58 -03:00
Jack
0b9c0d97dc fix(AlertReports): defaulting grace period to undefined (#27552)
(cherry picked from commit 4fce940a9c)
2024-03-26 15:33:58 -03:00
Jack
bc603db7d4 fix(AlertReports): clearing custom_width when disabled (#27551)
(cherry picked from commit 0f6e4041c7)
2024-03-26 15:33:58 -03:00
Kamil Gabryjelski
06195b53ce fix: Persist query params appended to permalink (#27601) 2024-03-22 09:35:41 -03:00
John Bodley
b4fde18508 fix(sql_parse): Ensure table extraction handles Jinja templating (#27470) 2024-03-22 09:23:16 -03:00
Pat Nadolny
46535a315e fix: Volatile datasource ordering in dashboard export (#19595)
Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
2024-03-22 09:10:17 -03:00
Ross Mabbett
3919651b0a fix(Dashboard): Add editMode conditional for translate3d fix on charts to allow intended Fullscreen (#27613)
(cherry picked from commit 842b0939f6)
2024-03-22 09:08:03 -03:00
Sam Firke
b749207713 fix(utils): fix off-by-one error in how rolling window's min_periods truncates dataframe (#27388)
(cherry picked from commit d4d8625ab8)
2024-03-22 09:08:02 -03:00
Beto Dealmeida
56a4b11464 fix: sqlglot SQL Server (#27577)
(cherry picked from commit 72a41c1642)
2024-03-22 09:08:01 -03:00
Beto Dealmeida
2ef0c13be9 fix: bump sqlglot to support materialized CTEs (#27576) 2024-03-21 16:16:50 -03:00
hlcianfagna
fc611a8873 fix(db_engine_specs): Update convert_dttm to work correctly with CrateDB (#27567)
(cherry picked from commit fcceaf081c)
2024-03-21 16:11:58 -03:00
Michael S. Molina
48f851f261 fix: Skips Hive tests that are blocking PRs (#27605)
(cherry picked from commit 718cd64657)
2024-03-21 16:11:57 -03:00
Beto Dealmeida
9887b4ed33 fix: guest queries (#27566)
(cherry picked from commit 36290ce72f)
2024-03-21 16:11:57 -03:00
Beto Dealmeida
efa94c4ab0 fix: pass valid SQL to SM (#27464)
(cherry picked from commit 376bfd05bd)
2024-03-19 09:02:07 -03:00
Beto Dealmeida
8274d869b1 feat: improve _extract_tables_from_sql (#26748) 2024-03-19 08:46:55 -03:00
Jack
ea83e9f9a7 fix(alerts/reports): implementing custom_width as an Antd number input (#27260) 2024-03-19 08:36:07 -03:00
Ville Brofeldt
f1f20e436c fix(postprocessing): resample with holes (#27487)
(cherry picked from commit 7f19d296b1)
2024-03-19 08:32:21 -03:00
Beto Dealmeida
51f904c42c fix: check if guest user modified query (#27484)
(cherry picked from commit 735b895dd5)
2024-03-14 09:22:40 -03:00
Evan Rusackas
553a469dba fix(webpack): remove double-dotted file extensions in webpack config (#27471)
(cherry picked from commit 47ae9d4cc3)
2024-03-14 09:22:40 -03:00
Mark Skelton
a15975d3af fix(dashboard): Only fetch CSS templates for dashboard header menu when in edit mode (#27411)
Co-authored-by: Michael S. Molina <michael.s.molina@gmail.com>
2024-03-14 09:20:59 -03:00
Jack
09caaca251 fix(Alerts & Reports): Fixing bug that resets cron value to default when empty (#27262) 2024-03-14 09:19:05 -03:00
Jack
1136606453 fix(deps): resolving canvg and html2canvas module not found (#27315)
(cherry picked from commit 5915851ba3)
2024-03-14 09:16:28 -03:00
JUST.in DO IT
7b3d289a9f fix: missing shared color in mixed timeseries (#27403)
(cherry picked from commit 9ced2552db)
2024-03-07 16:26:41 -03:00
JUST.in DO IT
ee8be59fdc fix(sqllab): Close already removed tab (#27391)
(cherry picked from commit 5107cc0fd9)
2024-03-07 15:06:40 -03:00
Vitor Avila
e84b2a3ba1 fix(API): Updating assets via the API should preserve ownership configuration (#27364)
(cherry picked from commit 66bf70172f)
2024-03-07 15:06:40 -03:00
Daniel Vaz Gaspar
4b5de7d203 fix: improve explore REST api validations (#27395)
(cherry picked from commit a3d2e0bf44)
2024-03-07 15:06:40 -03:00
Aleksey Karpov
efd305eb8d fix(docker): Remove race condition when building image (#26205)
(cherry picked from commit f68dd8293f)
2024-03-07 15:06:40 -03:00
Michael S. Molina
4972fbe751 fix: Results section in Explore shows an infinite spinner (#27366)
(cherry picked from commit 231e659b56)
2024-03-04 11:08:46 -05:00
nigzak
16e5eddeb6 chore: numexpr to fix CVE-2023-39631⁠ (2.8.4 => 2.9.0) (#27187)
Co-authored-by: Stefan Arnold <stefan.st.arnold@mercedes-benz.com>
2024-03-04 10:56:48 -05:00
Michael S. Molina
6ddaf1cf02 fix: Heatmap numeric sorting (#27360)
(cherry picked from commit fe2f5a7be9)
2024-03-04 10:45:41 -05:00
Ross Mabbett
d8c4a7a067 fix(dashboard): table chart drag preview overflowing container (#27308)
(cherry picked from commit ad3995daf6)
2024-03-04 10:45:41 -05:00
Joe Li
039afe8c99 chore: bump cryptography minimum to 42.0.4 (#27281)
(cherry picked from commit 371f2ab851)
2024-02-29 14:15:49 -05:00
JUST.in DO IT
da6a25780e fix(sqllab): invalid dump sql shown after closing tab (#27295) 2024-02-29 14:06:27 -05:00
goto-loop
c39e16e624 fix(plugin-chart-echarts): calculate Gauge Chart intervals correctly when min value is set (#27285)
(cherry picked from commit d65f64d1ce)
2024-02-29 13:43:48 -05:00
Michael S. Molina
22e3419e36 fix: Incorrect data type on import page (#27307)
(cherry picked from commit fa04eec2d5)
2024-02-29 13:43:48 -05:00
Michael S. Molina
e80179a056 fix: Data zoom with horizontal orientation (#27291)
(cherry picked from commit 7854b622a3)
2024-02-29 13:43:48 -05:00
Michael S. Molina
254f1ae512 fix: Navigating to an invalid page index in lists (#27273) 2024-02-29 13:43:26 -05:00
Michael S. Molina
38bc2d3b02 fix: Inoperable dashboard filter slider when range is <= 1 (#27271)
Co-authored-by: Justin Francos <jfrancos@manifold.ai>
(cherry picked from commit ce9e4b4b77)
2024-02-27 15:39:22 -05:00
James O'Claire
dc493fe7af fix(import-datasources): Use "admin" user as default for importing datasources (#27154) 2024-02-27 15:39:01 -05:00
Michael S. Molina
0d2cf7c938 fix: Sorting charts/dashboards makes the applied filters ineffective (#27258)
(cherry picked from commit 8b4dce71d6)
2024-02-27 15:34:09 -05:00
Evan Rusackas
744e403b0c fix(trino): bumping trino to fix hudi schema fetching (#27213) 2024-02-27 15:33:49 -05:00
Jack
a1ebdd70b1 fix(reports): fixing unit test (#27236)
(cherry picked from commit 6278315072)
2024-02-27 15:30:12 -05:00
John Bodley
e687525524 fix(sqlglot): Address regressions introduced in #26476 (#27217)
(cherry picked from commit 2c564817f1)
2024-02-27 15:30:12 -05:00
Michael S. Molina
51f3591139 chore: Removes Chromatic workflow and dependencies (#27232) 2024-02-27 15:29:53 -05:00
Daniel Vaz Gaspar
465bce1480 fix: bump FAB to 4.4.1 (perf issue) (#27233)
(cherry picked from commit 62cf0365e9)
2024-02-27 15:24:28 -05:00
Daniel Vaz Gaspar
303b654a60 fix: setting important lower bounds versions on requirements (#27167) 2024-02-23 10:17:33 -05:00
Beto Dealmeida
ee7eec60ea fix: no limit in SELECT * for TOP dbs (#27215)
(cherry picked from commit c54fbe6e96)
2024-02-23 10:03:26 -05:00
Michael S. Molina
8706879755 fix: Failed to execute importScripts on worker-css (#27191)
(cherry picked from commit 983a1646c4)
2024-02-22 16:28:12 -05:00
JUST.in DO IT
fc28da0a7b fix(sqllab): typeahead search is broken in db selector (#27181)
(cherry picked from commit 8fbaf84f66)
2024-02-22 16:26:08 -05:00
Daniel Vaz Gaspar
9a842dc1ea fix(ci): mypy pre-commit issues (#27161)
(cherry picked from commit 8dc6cbe206)
2024-02-22 16:03:35 -05:00
Daniel Vaz Gaspar
4b56670aa2 feat: bump FAB to 4.4.0 (#27159)
(cherry picked from commit f7c5773a97)
2024-02-22 11:54:47 -05:00
Michael S. Molina
c839c5734a fix: Duplicated toast messages (#27135) 2024-02-22 11:49:58 -05:00
Michael S. Molina
7ab62e1aaa fix: Plain error message when visiting a dashboard via permalink without permissions (#27132) 2024-02-22 11:46:49 -05:00
Joe Li
0308095a22 chore: lower cryptography min version to 41.0.2 (#27129)
(cherry picked from commit d2910b0b87)
2024-02-22 11:45:14 -05:00
Stepan
c94a4609bb fix(pivot-table-v2): Added forgotten translation pivot table v2 (#22840)
(cherry picked from commit 60fe58196a)
2024-02-22 11:45:14 -05:00
Michael S. Molina
c743822031 fix: RLS modal overflow (#27128)
(cherry picked from commit 506ea756ad)
2024-02-22 11:45:13 -05:00
Daniel Vaz Gaspar
02d754e7c8 fix: gevent upgrade to 23.9.1 (#27112) 2024-02-22 11:43:58 -05:00
Daniel Vaz Gaspar
f5dc821f3d fix: bump grpcio, urllib3 and paramiko (#27124)
(cherry picked from commit e43097329f)
2024-02-22 11:42:29 -05:00
Daniel Vaz Gaspar
8819157336 fix: upgrade cryptography to major 42 (#27113)
(cherry picked from commit 152cd70b5f)
2024-02-22 11:01:10 -05:00
Michael S. Molina
a57358ec49 fix: Timeseries Y-axis format with contribution mode (#27106)
(cherry picked from commit af577d64b1)
2024-02-22 11:01:09 -05:00
Michael S. Molina
24e7be605b chore: Adds 3.1.1 RC1 data to CHANGELOG.md 2024-02-14 10:53:29 -05:00
Kamil Gabryjelski
4f839ef2d1 fix: Drill by with GLOBAL_ASYNC_QUERIES (#27066) 2024-02-13 11:14:09 -05:00
Daniel Vaz Gaspar
534e8f394e fix: bump FAB to 4.3.11 (#27039) 2024-02-13 10:45:41 -05:00
Daniel Vaz Gaspar
10c9a7f0e2 fix: chart import validation (#26993) 2024-02-13 10:39:22 -05:00
dependabot[bot]
4704380b2a build(deps): bump csstype from 2.6.9 to 3.1.3 in /superset-frontend (#26716)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-13 10:37:34 -05:00
Maxime Beauchemin
cde63c8c1e fix(big_number): white-space: nowrap to prevent wrapping (#27096)
(cherry picked from commit 4796484190)
2024-02-13 10:22:50 -05:00
Beto Dealmeida
f440a6a535 fix(drill): no rows returned (#27073)
(cherry picked from commit 0950bb7b7d)
2024-02-13 10:22:50 -05:00
Kamil Gabryjelski
3c74a9b866 fix: Filters sidebar stretching dashboard height (#27069)
(cherry picked from commit 3f91bdb40d)
2024-02-13 10:22:49 -05:00
Kamil Gabryjelski
3d6dc9c280 fix: Exclude header controls from dashboard PDF export (#27068)
(cherry picked from commit 005cee023b)
2024-02-13 10:22:49 -05:00
JUST.in DO IT
bb44099c68 fix(plugins): missing currency on small number format in table chart (#27041)
(cherry picked from commit 6f402991e5)
2024-02-13 10:22:49 -05:00
JUST.in DO IT
d572af3073 fix(explore): allow free-form d3 format on custom column formatting (#27023)
(cherry picked from commit fd06ff3745)
2024-02-13 10:22:49 -05:00
Beto Dealmeida
c974daa0c7 fix: safer error message in alerts (#27019)
(cherry picked from commit 686ce33ea5)
2024-02-13 10:22:49 -05:00
Vitor Avila
5a6109b2de fix(security manager): Users should not have access to all draft dashboards (#27015)
(cherry picked from commit 01e2f8ace3)
2024-02-13 10:22:48 -05:00
Vitor Avila
4df40bedc2 fix(tags): Improve support for tags with colons (#26965)
(cherry picked from commit e437356013)
2024-02-13 10:22:48 -05:00
Beto Dealmeida
e3abdd5b6a fix: column values with NaN (#26946)
(cherry picked from commit d8a9847503)
2024-02-13 10:22:47 -05:00
Kamil Gabryjelski
ab7f560d4b fix(plugin-chart-table): Prevent misalignment of totals and headers when scrollbar is visible (#26964)
(cherry picked from commit e6d2fb6fdf)
2024-02-13 10:22:47 -05:00
Zef Lin
dac73fe0cd feat(embedded+async queries): support async queries to work with embedded guest user (#26332)
(cherry picked from commit efdeb9df05)
2024-02-13 10:22:45 -05:00
Usiel Riedl
86794cbb5e fix(cache): remove unused webserver config & handle trailing slashes (#22849)
(cherry picked from commit 56069b05f9)
2024-02-01 14:53:01 -05:00
Sebastian Bernauer
e8a3c5d5f1 fix: Allow exporting saved queries without schema information (#26889)
(cherry picked from commit 4c5176eea8)
2024-02-01 14:53:01 -05:00
Daniel Vaz Gaspar
322812b1c8 fix: dashboard import validation (#26887)
(cherry picked from commit 36ce9e26f0)
2024-02-01 14:53:01 -05:00
mapledan
de61591a6a fix: handle CRLF endings causing sqlglot failure (#26911)
(cherry picked from commit f2bf9f72e4)
2024-02-01 14:53:01 -05:00
Erich
61b4017b2f fix(pinot): typo in the name for epoch_ms_to_dttm (#26906)
(cherry picked from commit 484901f483)
2024-02-01 14:53:01 -05:00
Michael S. Molina
81353e280b fix: Bar charts horizontal margin adjustment error (#26817)
(cherry picked from commit 84c48d11d8)
2024-02-01 14:53:01 -05:00
Beto Dealmeida
ba9032e8d0 fix: prevent guest user from modifying metrics (#26749)
(cherry picked from commit fade4806ce)
2024-02-01 14:53:00 -05:00
Matthew Chiang
1be9eb577a fix(deck.gl Multiple Layer Chart): Add Contour and Heatmap Layer as options (#25923)
(cherry picked from commit 64ba5797df)
2024-02-01 14:53:00 -05:00
Beto Dealmeida
1d9cfdabd1 feat(sqlparse): improve table parsing (#26476)
(cherry picked from commit c0b57bd1c3)
2024-02-01 14:53:00 -05:00
JUST.in DO IT
6cdaf479f2 fix(sqllab): autosync fail on migrated queryEditor (#26922) 2024-01-31 15:17:09 -05:00
Michael S. Molina
d184fd9bf8 fix(time-series table): Can't compare from the beginning of the time range (#26814)
(cherry picked from commit 1f6c270f15)
2024-01-26 16:11:02 -05:00
Vitor Avila
84f0d74890 fix(tags): Filter system tags from the tags list (#26701)
(cherry picked from commit 4f56f5ee84)
2024-01-26 16:11:02 -05:00
Michael S. Molina
91399b1391 fix: Row limit hardcoded (#26807)
(cherry picked from commit 5e633d2bb0)
2024-01-26 16:11:02 -05:00
Denis Krivenko
2f9572c367 feat(helm): Upgrade default Superset version to 3.1.0 (#26707) 2024-01-25 10:00:25 -05:00
Daniel Vaz Gaspar
debe7811d0 fix: helm chart comment on SECRET_KEY (#26674)
Co-authored-by: Ville Brofeldt <33317356+villebro@users.noreply.github.com>
2024-01-25 09:50:07 -05:00
Maxime Beauchemin
72ad551d1e fix(import): only import FORMULA annotations (#26652) 2024-01-25 09:48:51 -05:00
John Bodley
33d8f72f91 fix(logging): Filter out undefined columns (#26314)
(cherry picked from commit 01fdfbee09)
2024-01-25 09:47:36 -05:00
Vitor Avila
519f7704ef fix(BigQuery): Support special characters in column/metric names used in ORDER BY (#26461)
(cherry picked from commit 4592dd13fa)
2024-01-25 09:47:35 -05:00
Vitor Avila
1273f72f94 fix(db2): Improving support for ibm db2 connections (#26744)
(cherry picked from commit 5eb4e82d27)
2024-01-25 09:47:35 -05:00
Vitor Avila
51ca5fa049 fix(legacy-charts): Show Time Grain control for legacy charts (#26705)
(cherry picked from commit 3ed70d8f53)
2024-01-25 09:47:35 -05:00
Evan Rusackas
24567a57a5 fix: do not use lodash/memoize (#26709)
(cherry picked from commit ef4878b845)
2024-01-25 09:47:35 -05:00
Pieter Ennes
224c3a1b3d fix: Catch ImportErrors for Google SDKs (#25550)
(cherry picked from commit effd73f2cc)
2024-01-25 09:47:34 -05:00
Linghao Wang
8fa8ae68b2 fix(translation): correct translation errors for Chinese(zh) (#26645)
Signed-off-by: Waterkin <1055905911@qq.com>
(cherry picked from commit 8539dfd0ba)
2024-01-25 09:47:34 -05:00
Igor Khrol
1b41307b9a fix: Avoid 500 if end users write bad SQL (#26638)
(cherry picked from commit 80a6e25a98)
2024-01-18 13:52:01 -03:00
Daniel Vaz Gaspar
ecd0eba2d3 fix: unnecessary logic on CI ephemeral (#26644)
(cherry picked from commit 6a4043d0f0)
2024-01-18 13:52:01 -03:00
Daniel Vaz Gaspar
0c569108da fix: create virtual dataset validation (#26625)
(cherry picked from commit 8e19f59dd2)
2024-01-18 13:52:01 -03:00
Geido
c2cd05ee4a fix: RLS modal styling (#26634)
(cherry picked from commit 820f4b9cf0)
2024-01-18 13:52:01 -03:00
Beto Dealmeida
36846e9c2b fix(database): allow filtering by UUID (#26469)
(cherry picked from commit e36c014290)
2024-01-18 13:52:01 -03:00
Vitor Avila
3fe4d68b75 fix(embedded): Hide dashboard fullscreen option for embedded context (#26412)
(cherry picked from commit 494068b632)
2024-01-18 13:52:01 -03:00
Igor Khrol
66dd7f5dc5 fix: Trino - handle table not found in SQLLab (#26355)
Co-authored-by: John Bodley <4567245+john-bodley@users.noreply.github.com>
(cherry picked from commit 3daa038f5f)
2024-01-18 13:52:01 -03:00
Ville Brofeldt
a044d38181 chore: bump prophet to 1.1.5 (#26431)
(cherry picked from commit a1993566c4)
2024-01-18 13:52:01 -03:00
Michael S. Molina
3de71e25e8 chore: Adds 3.1.0 RC4 data to CHANGELOG.md 2024-01-09 11:20:26 -03:00
Ville Brofeldt
c8c8136ac3 fix(post-processing): handle missing values in cumulative operator (#26429)
(cherry picked from commit ff025b78f3)
2024-01-09 09:26:01 -03:00
Xuebin Zhang
8db06b4cb2 fix(translations): Clear all (#26424)
(cherry picked from commit 4c2e818cd3)
2024-01-09 09:26:01 -03:00
Ville Brofeldt
136c0e3b4a fix(plugin-chart-echarts): support forced categorical x-axis (#26404)
(cherry picked from commit 219c4a14b3)
2024-01-09 09:26:01 -03:00
Siva Sathyaseelan
1daab2731d fix: In chart gallery thumbnail is rendered in case of no example in #16707 (#26415)
(cherry picked from commit 6d58566779)
2024-01-09 09:26:01 -03:00
Sonia Gautam
ed29c5b855 fix(chart): Resolve incorrect column customization when switching metrics in table chart (#26393)
Co-authored-by: Sonia <sonia.gautam@agoda.com>
(cherry picked from commit dfde2adf27)
2024-01-09 09:26:01 -03:00
Guen Prawiroatmodjo
faad565fab fix(sqllab): Bump duckdb-engine version to 0.9.5 (#26405)
Co-authored-by: John Bodley <4567245+john-bodley@users.noreply.github.com>
(cherry picked from commit bba1b14bf0)
2024-01-09 09:26:01 -03:00
JUST.in DO IT
0e85a43acf fix(dashboard): narrow empty drop area (#26313)
(cherry picked from commit 300ddaedf9)
2024-01-09 09:26:01 -03:00
Siva Sathyaseelan
802dc24a76 fix(dashboard): Chart menu disable is fixed on chart-fullscreen in issue #25992 (#26410)
(cherry picked from commit d0ffe9af7c)
2024-01-09 09:26:00 -03:00
Michael S. Molina
bd195893af fix: Reactivates native filters E2E tests (#26362)
(cherry picked from commit 6f6c37ec26)
2024-01-09 09:26:00 -03:00
Boris Strelchik
79e7f2732d fix(embed): an error occurred while rendering the visualization: error: Item with key ... is not registered. (#26398)
(cherry picked from commit 9ffcd6410e)
2024-01-09 09:26:00 -03:00
Irina Shebarshina
d356d83bf6 fix(SelectControl): select zero value (#26353)
(cherry picked from commit a0f0f698f4)
2024-01-09 09:26:00 -03:00
Michael S. Molina
ac7d281e8a fix: Removes non-existent columns in the 2018 FCC Survey dataset (#26380)
(cherry picked from commit 77f58fc8fa)
2024-01-09 09:26:00 -03:00
François Travais
f6803f628c feat(deckgl-map): use an arbitraty Mabpox style URL (#26027) (#26031)
Signed-off-by: François Travais <francois.travais@solinum.org>
2024-01-09 09:25:31 -03:00
Michael S. Molina
28c518e578 fix: Invalid references in the basic template (#26302)
(cherry picked from commit 9432bd88f5)
2024-01-03 13:33:24 -03:00
Willie Hung
c520cf463e chore: Add example charts for deck.gl (#25770)
Signed-off-by: Willie Hung <willie880201044@gmail.com>
(cherry picked from commit 113a8a381c)
2024-01-03 13:33:24 -03:00
Michael S. Molina
5d49100a22 fix: Duplicated plugin registration (#26379)
(cherry picked from commit 29633e7d8c)
2024-01-03 13:33:24 -03:00
Jeremy
76e2388656 fix(databend): databend time grain expression (#26378)
(cherry picked from commit 3a0391bbb9)
2024-01-03 13:33:24 -03:00
Corbin Bullard
3dad685b6e fix(chart): Set max row limit + removed the option to use an empty row limit value (#26151)
Co-authored-by: Lily Kuang <lily@preset.io>
Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
2023-12-27 09:30:47 -03:00
Vitor Avila
1c77945980 chore(Embedded): Avoid creating a filter key for guest users (#26312)
Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
(cherry picked from commit fe9fbadade)
2023-12-27 09:24:52 -03:00
John Bodley
5249815fbf fix(logging): Add logging of change_dashboard_filter event for native dashboard filters (#26333)
(cherry picked from commit 5f5a656835)
2023-12-27 09:24:52 -03:00
arun
b1b2b57df2 fix(accessibility): Enable tabbing on sort header of table chart (#26326)
(cherry picked from commit b6d433de32)
2023-12-27 09:24:52 -03:00
Lily Kuang
4a8727d8d0 fix(tagging): adding tags containing a “:” to dashboards (#26324)
will add more tests in a separated PR

(cherry picked from commit 3391e29093)
2023-12-27 09:24:52 -03:00
Kamil Gabryjelski
7b969c9450 fix(dashboard): Don't switch to first tab when directPathToChild changes (#26340)
(cherry picked from commit 39ac45351b)
2023-12-27 09:24:52 -03:00
Michael S. Molina
5b6e9abf00 chore: Adds a tooltip for the alert's SQL input (#26317)
(cherry picked from commit 5bd7fd7990)
2023-12-27 09:24:52 -03:00
Kamil Gabryjelski
ba4319472d chore: Add downloadAsImage types, change filter selector (#26297)
(cherry picked from commit 5e85f5c81f)
2023-12-27 09:24:52 -03:00
gaurav7261
c19447ee88 fix(redshift): convert_dttm method for redshift dataset and tests (#26283)
Co-authored-by: GauravM <gaurav@ip-192-168-0-100.ap-south-1.compute.internal>
(cherry picked from commit 60abf7e2af)
2023-12-27 09:24:51 -03:00
Guen Prawiroatmodjo
57155fdfc7 fix(sql lab): Use quote_schema instead of quote method to format schema name (#26281)
(cherry picked from commit 9d3796828c)
2023-12-27 09:24:51 -03:00
Kamil Gabryjelski
b5cb3ec13c chore: Use WEBDRIVER_OPTION_ARGS with Playwright (#26315)
(cherry picked from commit 3f9183a162)
2023-12-27 09:24:51 -03:00
Michael S. Molina
9c109700ff chore: Disables minor ticks by default (#26310)
(cherry picked from commit eb65cea971)
2023-12-27 09:24:51 -03:00
Elizabeth Thompson
ba9eef0407 chore: update changelog for 2.1.3 (#26287) 2023-12-27 09:24:34 -03:00
Gnought
dd68c6e2e5 fix(typings): model_id is a multiple option (#25967)
(cherry picked from commit 04f1c356a5)
2023-12-27 09:22:21 -03:00
Michael S. Molina
31bb9a690a chore: Adds 3.1.0 RC3 data to CHANGELOG.md 2023-12-18 11:27:43 -03:00
JUST.in DO IT
9632014402 fix: Revert "fix(sqllab): flaky json explore modal due to over-rendering (#26156)" (#26284)
(cherry picked from commit 8450cca998)
2023-12-18 11:10:19 -03:00
Michael S. Molina
103d23781b fix: Cannot expand initially hidden SQL Lab tab (#26279)
(cherry picked from commit aa3c3c5aaa)
2023-12-15 16:26:44 -03:00
Ville Brofeldt
4d0404119c fix(plugin-chart-echarts): use scale for truncating x-axis (#26269)
(cherry picked from commit 67468c46c0)
2023-12-15 16:26:44 -03:00
Michael S. Molina
dbc779f30a fix: Stacked charts with numerical columns (#26264)
(cherry picked from commit 429e2a33c3)
2023-12-15 16:26:44 -03:00
Daniel Vaz Gaspar
3d7b827d79 chore: improve CSP add base uri restriction (#26251)
(cherry picked from commit 578a899152)
2023-12-15 16:26:44 -03:00
Ville Brofeldt
0ac833d0c5 fix(plugin-chart-echarts): undefined bounds for bubble chart (#26243)
(cherry picked from commit 5df544b6fb)
2023-12-15 16:26:44 -03:00
Michael S. Molina
2dc29cee9a chore: Adds 3.1.0 RC2 data to CHANGELOG.md and UPDATING.md 2023-12-11 14:15:23 -03:00
cwegener
be81aaa31a fix: bump pyarrow constraints (CVE-2023-47248) (#26187)
(cherry picked from commit 2ac28927a3)
2023-12-11 13:28:46 -03:00
Jeremy
8185ac3e33 chore: lock the databend-sqlalchemy version (#26082)
Co-authored-by: John Bodley <4567245+john-bodley@users.noreply.github.com>
(cherry picked from commit fca5b829df)
2023-12-11 13:26:55 -03:00
Michael S. Molina
463989dbc9 chore: Moves xAxisLabelRotation to shared controls (#26212)
(cherry picked from commit 005cf5947b)
2023-12-11 13:26:55 -03:00
Kamil Gabryjelski
38b8b03f90 fix: Use page.locator in Playwright reports (#26224)
(cherry picked from commit dbed64a2c6)
2023-12-11 13:26:55 -03:00
Ville Brofeldt
d0961d0ed8 fix(plugin-chart-echarts): support truncated numeric x-axis (#26215)
Co-authored-by: Michael S. Molina <michael.s.molina@gmail.com>
(cherry picked from commit 07e5fe8a66)
2023-12-08 11:14:18 -03:00
Vitor Avila
b699df7030 fix(chart-filter): Avoid column denormalization if not enabled (#26199)
(cherry picked from commit 05d7060d83)
2023-12-08 11:14:18 -03:00
Ville Brofeldt
c2612d8c26 fix: support custom links in markdown (#26211)
(cherry picked from commit d2adc858cb)
2023-12-08 11:14:18 -03:00
ʈᵃᵢ
ec0a338aa3 fix(dashboard): use textContent to render hidden title (#26189)
(cherry picked from commit 88fb342887)
2023-12-08 11:14:18 -03:00
Michael S. Molina
6fa75b7047 chore: Adds note about numerical x-axis (#26208)
Co-authored-by: John Bodley <4567245+john-bodley@users.noreply.github.com>
(cherry picked from commit b4a35e624b)
2023-12-08 11:14:18 -03:00
JUST.in DO IT
77c73b63db fix(sqllab): flaky json explore modal due to over-rendering (#26156)
(cherry picked from commit f30f685eb5)
2023-12-08 11:14:18 -03:00
Michael S. Molina
fb50819fcd fix: Includes 90° x-axis label rotation (#26207)
(cherry picked from commit 39c6488463)
2023-12-08 11:14:18 -03:00
Jack Fragassi
5c24c580dd chore: Lower giveup log level for retried functions to warning (#26188)
(cherry picked from commit bf5b18ccb1)
2023-12-08 11:14:17 -03:00
Suma Goud B
2104a9a853 fix(init-job): Fix envFrom for init job in helm chart (#26157)
(cherry picked from commit 4d4b19e8ba)
2023-12-08 11:14:17 -03:00
Jack Fragassi
0925d75dfa fix(embedded): Hide sensitive payload data from guest users (#25878)
(cherry picked from commit 386d4e0541)
2023-12-08 11:14:17 -03:00
JUST.in DO IT
96c0497fa9 fix(menu): Styling active menu in SPA navigation (#25533)
(cherry picked from commit 86304ab171)
2023-12-08 11:14:17 -03:00
Ville Brofeldt
5bcd3ef17e chore: harmonize and clean up list views (#25961)
(cherry picked from commit 0b477e3f7c)
2023-12-04 18:05:22 -03:00
Michael S. Molina
5ec1edc876 chore: Clean up the examples dashboards (#26158)
(cherry picked from commit 3ab27c6ec9)
2023-12-04 18:05:22 -03:00
John Bodley
aaa50c4b4a fix: Migration order due to cherry which went astray (#26160)
(cherry picked from commit 8644b1a319)
2023-12-04 18:05:22 -03:00
Ross Mabbett
880086c750 fix(Alerts/Reports): allow use of ";" separator in slack recipient entry (#25894)
Co-authored-by: John Bodley <4567245+john-bodley@users.noreply.github.com>
(cherry picked from commit b7a9c220e1)
2023-12-04 18:05:21 -03:00
JUST.in DO IT
d0aa34bf79 fix(sqllab): table preview has gone (#25977)
(cherry picked from commit cdbbd83705)
2023-12-04 18:05:21 -03:00
Vitor Avila
77332bfb38 fix(database-import): Support importing a DB connection with a version set (#26116)
(cherry picked from commit c033ca959d)
2023-12-04 18:05:21 -03:00
Beto Dealmeida
ceac19fa2f fix: set label on adhoc column should persist (#26154)
(cherry picked from commit b2ea97a984)
2023-12-04 18:05:21 -03:00
Michael S. Molina
79d5975028 feat: Adds legacy time support for Waterfall chart (#26136)
(cherry picked from commit f405ba033e)
2023-12-04 18:05:21 -03:00
Tom Murphy
4a4f9983df feat(helm): Add option to deploy extra containers to remaining deployments (#26123)
(cherry picked from commit 4f00404805)
2023-12-04 18:05:21 -03:00
Beto Dealmeida
26e59662fb fix(annotations): time grain column (#26140)
(cherry picked from commit cff473f825)
2023-12-04 18:05:21 -03:00
Kamil Gabryjelski
fad4616d2f chore: Rename SET_ACTIVE_TABS action, add a new action (#26147)
(cherry picked from commit d00c17dde2)
2023-12-04 18:05:21 -03:00
Hugh A. Miles II
2c3bf2895f chore(tags): Allow for lookup via ids vs. name in the API (#25996)
(cherry picked from commit ee308fbc64)
2023-12-04 18:05:21 -03:00
Daniel Vaz Gaspar
93319696de fix: remove default secret key from helm (#23916)
(cherry picked from commit 6a5a765689)
2023-12-04 18:05:21 -03:00
Gnought
e382d0dd28 chore(deps): bump pillow deps (#25931)
(cherry picked from commit a27a0df1a4)
2023-12-04 18:05:21 -03:00
Beto Dealmeida
f4fd0e19e2 fix: alias column when fetching values (#26120)
(cherry picked from commit 7223633da6)
2023-12-04 18:05:20 -03:00
Michael S. Molina
c8844bdd5e chore: Adds 3.1.0 data to CHANGELOG.md and UPDATING.md 2023-11-28 11:50:54 -03:00
428 changed files with 10975 additions and 7604 deletions

View File

@@ -129,12 +129,6 @@ testdata() {
say "::endgroup::"
}
codecov() {
say "::group::Upload code coverage"
bash ".github/workflows/codecov.sh" "$@"
say "::endgroup::"
}
cypress-install() {
cd "$GITHUB_WORKSPACE/superset-frontend/cypress-base"
@@ -201,11 +195,6 @@ cypress-run-all() {
cypress-run "sqllab/*" "Backend persist"
# Upload code coverage separately so each page can have separate flags
# -c will clean existing coverage reports, -F means add flags
# || true to prevent CI failure on codecov upload
codecov -c -F "cypress" || true
say "::group::Flask log for backend persist"
cat "$flasklog"
say "::endgroup::"
@@ -235,8 +224,6 @@ cypress-run-applitools() {
$cypress --spec "cypress/e2e/*/**/*.applitools.test.ts" --browser "$browser" --headless --config ignoreTestFiles="[]"
codecov -c -F "cypress" || true
say "::group::Flask log for default run"
cat "$flasklog"
say "::endgroup::"

View File

@@ -1,72 +0,0 @@
# .github/workflows/chromatic.yml
# see https://www.chromatic.com/docs/github-actions
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Workflow name
name: 'Chromatic Storybook Master'
# Event for the workflow
# Only run if changes were made in superset-frontend folder of repo on merge to Master
on:
# This will trigger when a branch merges to master when the PR has changes in the frontend folder updating the chromatic baseline
push:
branches:
- master
paths:
- "superset-frontend/**"
# List of jobs
jobs:
config:
runs-on: "ubuntu-latest"
outputs:
has-secrets: ${{ steps.check.outputs.has-secrets }}
steps:
- name: "Check for secrets"
id: check
shell: bash
run: |
if [ -n "${{ (secrets.CHROMATIC_PROJECT_TOKEN != '') || '' }}" ]; then
echo "has-secrets=1" >> "$GITHUB_OUTPUT"
fi
chromatic-deployment:
needs: config
if: needs.config.outputs.has-secrets
# Operating System
runs-on: ubuntu-latest
# Job steps
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0 # 👈 Required to retrieve git history
- name: Install dependencies
run: npm ci
working-directory: superset-frontend
# 👇 Build and publish Storybook to Chromatic
- name: Build and publish Storybook to Chromatic
id: chromatic-master
uses: chromaui/action@v1
# Required options for the Chromatic GitHub Action
with:
# 👇 Location of package.json from root of mono-repo
workingDir: superset-frontend
# 👇 Chromatic projectToken, refer to the manage page to obtain it.
projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }}
exitZeroOnChanges: true # 👈 Option to prevent the workflow from failing
autoAcceptChanges: true # 👈 Option to accept all changes when merging to master

File diff suppressed because it is too large Load Diff

View File

@@ -18,8 +18,6 @@ jobs:
shell: bash
run: |
if [ -n "${{ (secrets.AWS_ACCESS_KEY_ID != '' &&
secrets.AWS_ACCESS_KEY_ID != '' &&
secrets.AWS_SECRET_ACCESS_KEY != '' &&
secrets.AWS_SECRET_ACCESS_KEY != '') || '' }}" ]; then
echo "has-secrets=1" >> "$GITHUB_OUTPUT"
echo "has secrets!"

View File

@@ -66,6 +66,8 @@ jobs:
working-directory: ./superset-frontend/packages/generator-superset
run: npx jest
- name: Upload code coverage
if: steps.check.outcome == 'failure'
working-directory: ./superset-frontend
run: ../.github/workflows/codecov.sh -c -F javascript
uses: codecov/codecov-action@v4
with:
flags: javascript
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true

View File

@@ -50,8 +50,8 @@ jobs:
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
cache-dependency-path: 'requirements/testing.txt'
cache: "pip"
cache-dependency-path: "requirements/testing.txt"
- name: Install dependencies
if: steps.check.outcome == 'failure'
uses: ./.github/actions/cached-dependencies
@@ -70,10 +70,11 @@ jobs:
run: |
./scripts/python_tests.sh
- name: Upload code coverage
if: steps.check.outcome == 'failure'
run: |
bash .github/workflows/codecov.sh -c -F python -F mysql
uses: codecov/codecov-action@v4
with:
flags: python,mysql
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true
test-postgres:
runs-on: ubuntu-20.04
strategy:
@@ -116,8 +117,8 @@ jobs:
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
cache-dependency-path: 'requirements/testing.txt'
cache: "pip"
cache-dependency-path: "requirements/testing.txt"
- name: Install dependencies
if: steps.check.outcome == 'failure'
uses: ./.github/actions/cached-dependencies
@@ -136,9 +137,11 @@ jobs:
run: |
./scripts/python_tests.sh
- name: Upload code coverage
if: steps.check.outcome == 'failure'
run: |
bash .github/workflows/codecov.sh -c -F python -F postgres
uses: codecov/codecov-action@v4
with:
flags: python,postgres
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true
test-sqlite:
runs-on: ubuntu-20.04
@@ -174,8 +177,8 @@ jobs:
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
cache-dependency-path: 'requirements/testing.txt'
cache: "pip"
cache-dependency-path: "requirements/testing.txt"
- name: Install dependencies
if: steps.check.outcome == 'failure'
uses: ./.github/actions/cached-dependencies
@@ -194,6 +197,8 @@ jobs:
run: |
./scripts/python_tests.sh
- name: Upload code coverage
if: steps.check.outcome == 'failure'
run: |
bash .github/workflows/codecov.sh -c -F python -F sqlite
uses: codecov/codecov-action@v4
with:
flags: python,sqlite
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true

View File

@@ -61,8 +61,8 @@ jobs:
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
cache-dependency-path: 'requirements/testing.txt'
cache: "pip"
cache-dependency-path: "requirements/testing.txt"
- name: Install dependencies
if: steps.check.outcome == 'failure'
uses: ./.github/actions/cached-dependencies
@@ -81,9 +81,11 @@ jobs:
run: |
./scripts/python_tests.sh -m 'chart_data_flow or sql_json_flow'
- name: Upload code coverage
if: steps.check.outcome == 'failure'
run: |
bash .github/workflows/codecov.sh -c -F python -F presto
uses: codecov/codecov-action@v4
with:
flags: python,presto
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true
test-postgres-hive:
runs-on: ubuntu-20.04
@@ -138,8 +140,8 @@ jobs:
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
cache-dependency-path: 'requirements/testing.txt'
cache: "pip"
cache-dependency-path: "requirements/testing.txt"
- name: Install dependencies
if: steps.check.outcome == 'failure'
uses: ./.github/actions/cached-dependencies
@@ -158,6 +160,8 @@ jobs:
run: |
./scripts/python_tests.sh -m 'chart_data_flow or sql_json_flow'
- name: Upload code coverage
if: steps.check.outcome == 'failure'
run: |
bash .github/workflows/codecov.sh -c -F python -F hive
uses: codecov/codecov-action@v4
with:
flags: python,hive
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true

View File

@@ -34,9 +34,9 @@ jobs:
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
cache-dependency-path: 'requirements/testing.txt'
# TODO: separated requirements.txt file just for unit tests
cache: "pip"
cache-dependency-path: "requirements/testing.txt"
# TODO: separated requirements.txt file just for unit tests
- name: Install dependencies
if: steps.check.outcome == 'failure'
uses: ./.github/actions/cached-dependencies
@@ -54,6 +54,8 @@ jobs:
run: |
pytest --durations-min=0.5 --cov-report= --cov=superset ./tests/common ./tests/unit_tests --cache-clear
- name: Upload code coverage
if: steps.check.outcome == 'failure'
run: |
bash .github/workflows/codecov.sh -c -F python -F unit
uses: codecov/codecov-action@v4
with:
flags: python,unit
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true

View File

@@ -19,9 +19,16 @@ under the License.
## Change Log
- [3.1.3](#313-tue-apr-30-153233-2024--0700)
- [3.1.2](#312-thu-mar-28-113200-2024--0300)
- [3.1.1](#311-fri-feb-9-214933-2024-0100)
- [3.1.0](#310-tue-jan-9-150500-2023--0800)
- [3.0.3](#303-fri-dec-8-054009-2023--0800)
- [3.0.2](#302-mon-nov-20-073838-2023--0500)
- [3.0.1](#301-tue-oct-13-103221-2023--0700)
- [3.0.0](#300-thu-aug-24-133627-2023--0600)
- [2.1.3](#213-fri-dec-8-163651-2023--0700)
- [2.1.2](#212-wed-oct-18-165930-2023--0700)
- [2.1.1](#211-sun-apr-23-154421-2023-0100)
- [2.1.0](#210-thu-mar-16-211305-2023--0700)
- [2.0.1](#201-fri-nov-4-103402-2022--0400)
@@ -33,6 +40,591 @@ under the License.
- [1.4.2](#142-sat-mar-19-000806-2022-0200)
- [1.4.1](#141)
### 3.1.3 (Tue Apr 30 15:32:33 2024 -0700)
**Fixes**
- [#28277](https://github.com/apache/superset/pull/28277) fix(ci): adding codecov token (@rusackas)
- [#28156](https://github.com/apache/superset/pull/28156) fix(sqllab): invalid css scope for ace editor autocomplete (@justinpark)
- [#28222](https://github.com/apache/superset/pull/28222) fix: Dremio alias (@betodealmeida)
- [#28152](https://github.com/apache/superset/pull/28152) fix(sql_parse): Provide more lenient logic when extracting latest[_sub]\_partition (@john-bodley)
- [#28117](https://github.com/apache/superset/pull/28117) fix(sql_parse): Support Jinja format() filter when extracting latest[_sub]\_partition (@john-bodley)
- [#28036](https://github.com/apache/superset/pull/28036) fix: Dynamic filter does not show all values on blur/clear events (@michael-s-molina)
- [#28018](https://github.com/apache/superset/pull/28018) fix: bump client side chart timeouts to use the SUPERSET_WEBSERVER_TIMEOUT (@eschutho)
- [#28017](https://github.com/apache/superset/pull/28017) fix: Select is accepting unknown pasted values when `allowNewOptions` is false (@michael-s-molina)
- [#27996](https://github.com/apache/superset/pull/27996) fix: Incorrect onChange value when an unloaded value is pasted into AsyncSelect (@michael-s-molina)
- [#25407](https://github.com/apache/superset/pull/25407) fix(frontend): allow "constructor" property in response data (@SpencerTorres)
- [#27919](https://github.com/apache/superset/pull/27919) fix: add mariadb engine spec same as MySQL (@dpgaspar)
- [#27593](https://github.com/apache/superset/pull/27593) fix(Dashboard): Add border to row when hovering HoverMenu in edit mode (@rtexelm)
- [#27883](https://github.com/apache/superset/pull/27883) fix(bar-chart): change legend padding for horizontal orientation (@lilykuang)
- [#27845](https://github.com/apache/superset/pull/27845) fix(dashboard): missing null check in error extra (@justinpark)
**Others**
- [#28278](https://github.com/apache/superset/pull/28278) chore: allow codecov to detect SHA (@mistercrunch)
- [#27725](https://github.com/apache/superset/pull/27725) chore(sqllab): Do not strip comments when executing SQL statements (@john-bodley)
- [#27843](https://github.com/apache/superset/pull/27843) chore: Default to engine specification regarding using wildcard (@john-bodley)
- [#27858](https://github.com/apache/superset/pull/27858) chore(sql_parse): Provide more meaningful SQLGlot errors (@john-bodley)
- [#27842](https://github.com/apache/superset/pull/27842) chore(sql_parse): Strip leading/trailing whitespace in Jinja macro extraction (@john-bodley)
### 3.1.2 (Thu Mar 28 11:32:00 2024 -0300)
**Fixes**
- [#27706](https://github.com/apache/superset/pull/27706) fix: Select onChange is fired when the same item is selected in single mode (@michael-s-molina)
- [#27744](https://github.com/apache/superset/pull/27744) fix: reduce alert error to warning (@eschutho)
- [#27644](https://github.com/apache/superset/pull/27644) fix: Provide more inclusive error handling for saved queries (@john-bodley)
- [#27646](https://github.com/apache/superset/pull/27646) fix: Leverage actual database for rendering Jinjarized SQL (@john-bodley)
- [#27636](https://github.com/apache/superset/pull/27636) fix(sqllab): unable to remove table (@justinpark)
- [#27022](https://github.com/apache/superset/pull/27022) fix(Chart Annotation modal): Table and Superset annotation options will paginate, exceeding previous max limit 100 (@rtexelm)
- [#27552](https://github.com/apache/superset/pull/27552) fix(AlertReports): defaulting grace period to undefined (@fisjac)
- [#27551](https://github.com/apache/superset/pull/27551) fix(AlertReports): clearing custom_width when disabled (@fisjac)
- [#27601](https://github.com/apache/superset/pull/27601) fix: Persist query params appended to permalink (@kgabryje)
- [#27470](https://github.com/apache/superset/pull/27470) fix(sql_parse): Ensure table extraction handles Jinja templating (@john-bodley)
- [#19595](https://github.com/apache/superset/pull/19595) fix: Volatile datasource ordering in dashboard export (@pnadolny13)
- [#27613](https://github.com/apache/superset/pull/27613) fix(Dashboard): Add editMode conditional for translate3d fix on charts to allow intended Fullscreen (@rtexelm)
- [#27388](https://github.com/apache/superset/pull/27388) fix(utils): fix off-by-one error in how rolling window's min_periods truncates dataframe (@sfirke)
- [#27577](https://github.com/apache/superset/pull/27577) fix: sqlglot SQL Server (@betodealmeida)
- [#27576](https://github.com/apache/superset/pull/27576) fix: bump sqlglot to support materialized CTEs (@betodealmeida)
- [#27567](https://github.com/apache/superset/pull/27567) fix(db_engine_specs): Update convert_dttm to work correctly with CrateDB (@hlcianfagna)
- [#27605](https://github.com/apache/superset/pull/27605) fix: Skips Hive tests that are blocking PRs (@michael-s-molina)
- [#27566](https://github.com/apache/superset/pull/27566) fix: guest queries (@betodealmeida)
- [#27464](https://github.com/apache/superset/pull/27464) fix: pass valid SQL to SM (@betodealmeida)
- [#26748](https://github.com/apache/superset/pull/26748) fix: `improve _extract_tables_from_sql` (@betodealmeida)
- [#27260](https://github.com/apache/superset/pull/27260) fix(alerts/reports): implementing custom_width as an Antd number input (@fisjac)
- [#27487](https://github.com/apache/superset/pull/27487) fix(postprocessing): resample with holes (@villebro)
- [#27484](https://github.com/apache/superset/pull/27484) fix: check if guest user modified query (@betodealmeida)
- [#27471](https://github.com/apache/superset/pull/27471) fix(webpack): remove double-dotted file extensions in webpack config (@rusackas)
- [#27411](https://github.com/apache/superset/pull/27411) fix(dashboard): Only fetch CSS templates for dashboard header menu when in edit mode (@mskelton)
- [#27262](https://github.com/apache/superset/pull/27262) fix(Alerts & Reports): Fixing bug that resets cron value to default when empty (@fisjac)
- [#27315](https://github.com/apache/superset/pull/27315) fix(deps): resolving canvg and html2canvas module not found (@fisjac)
- [#27403](https://github.com/apache/superset/pull/27403) fix: missing shared color in mixed timeseries (@justinpark)
- [#27391](https://github.com/apache/superset/pull/27391) fix(sqllab): Close already removed tab (@justinpark)
- [#27364](https://github.com/apache/superset/pull/27364) fix(API): Updating assets via the API should preserve ownership configuration (@Vitor-Avila)
- [#27395](https://github.com/apache/superset/pull/27395) fix: improve explore REST api validations (@dpgaspar)
- [#26205](https://github.com/apache/superset/pull/26205) fix(docker): Remove race condition when building image (@alekseyolg)
- [#27366](https://github.com/apache/superset/pull/27366) fix: Results section in Explore shows an infinite spinner (@michael-s-molina)
- [#27187](https://github.com/apache/superset/pull/27187) fix: numexpr to fix CVE-2023-39631 (2.8.4 => 2.9.0) (@nigzak)
- [#27360](https://github.com/apache/superset/pull/27360) fix: Heatmap numeric sorting (@michael-s-molina)
- [#27308](https://github.com/apache/superset/pull/27308) fix(dashboard): table chart drag preview overflowing container (@rtexelm)
- [#27295](https://github.com/apache/superset/pull/27295) fix(sqllab): invalid dump sql shown after closing tab (@justinpark)
- [#27285](https://github.com/apache/superset/pull/27285) fix(plugin-chart-echarts): calculate Gauge Chart intervals correctly when min value is set (@goto-loop)
- [#27307](https://github.com/apache/superset/pull/27307) fix: Incorrect data type on import page (@michael-s-molina)
- [#27291](https://github.com/apache/superset/pull/27291) fix: Data zoom with horizontal orientation (@michael-s-molina)
- [#27273](https://github.com/apache/superset/pull/27273) fix: Navigating to an invalid page index in lists (@michael-s-molina)
- [#27271](https://github.com/apache/superset/pull/27271) fix: Inoperable dashboard filter slider when range is <= 1 (@michael-s-molina)
- [#27154](https://github.com/apache/superset/pull/27154) fix(import-datasources): Use "admin" user as default for importing datasources (@ddxv)
- [#27258](https://github.com/apache/superset/pull/27258) fix: Sorting charts/dashboards makes the applied filters ineffective (@michael-s-molina)
- [#27213](https://github.com/apache/superset/pull/27213) fix(trino): bumping trino to fix hudi schema fetching (@rusackas)
- [#27236](https://github.com/apache/superset/pull/27236) fix(reports): fixing unit test (@fisjac)
- [#27217](https://github.com/apache/superset/pull/27217) fix(sqlglot): Address regressions introduced in #26476 (@john-bodley)
- [#27233](https://github.com/apache/superset/pull/27233) fix: bump FAB to 4.4.1 (perf issue) (@dpgaspar)
- [#27167](https://github.com/apache/superset/pull/27167) fix: setting important lower bounds versions on requirements (@dpgaspar)
- [#27215](https://github.com/apache/superset/pull/27215) fix: no limit in SELECT \* for TOP dbs (@betodealmeida)
- [#27191](https://github.com/apache/superset/pull/27191) fix: Failed to execute importScripts on worker-css (@michael-s-molina)
- [#27181](https://github.com/apache/superset/pull/27181) fix(sqllab): typeahead search is broken in db selector (@justinpark)
- [#27161](https://github.com/apache/superset/pull/27161) fix(ci): mypy pre-commit issues (@dpgaspar)
- [#27135](https://github.com/apache/superset/pull/27135) fix: Duplicated toast messages (@michael-s-molina)
- [#27132](https://github.com/apache/superset/pull/27132) fix: Plain error message when visiting a dashboard via permalink without permissions (@michael-s-molina)
- [#22840](https://github.com/apache/superset/pull/22840) fix(pivot-table-v2): Added forgotten translation pivot table v2 (@Always-prog)
- [#27128](https://github.com/apache/superset/pull/27128) fix: RLS modal overflow (@michael-s-molina)
- [#27112](https://github.com/apache/superset/pull/27112) fix: gevent upgrade to 23.9.1 (@dpgaspar)
- [#27124](https://github.com/apache/superset/pull/27124) fix: bump grpcio, urllib3 and paramiko (@dpgaspar)
- [#27113](https://github.com/apache/superset/pull/27113) fix: upgrade cryptography to major 42 (@dpgaspar)
- [#27106](https://github.com/apache/superset/pull/27106) fix: Timeseries Y-axis format with contribution mode (@michael-s-molina)
**Others**
- [#27281](https://github.com/apache/superset/pull/27281) chore: bump cryptography minimum to 42.0.4 (@sadpandajoe)
- [#27232](https://github.com/apache/superset/pull/27232) chore: Removes Chromatic workflow and dependencies (@michael-s-molina)
- [#27159](https://github.com/apache/superset/pull/27159) chore: bump FAB to 4.4.0 (@dpgaspar)
- [#27129](https://github.com/apache/superset/pull/27129) chore: lower cryptography min version to 41.0.2 (@sadpandajoe)
### 3.1.1 (Fri Feb 9 21:49:33 2024 +0100)
**Fixes**
- [#27066](https://github.com/apache/superset/pull/27066) fix: Drill by with GLOBAL_ASYNC_QUERIES (@kgabryje)
- [#27039](https://github.com/apache/superset/pull/27039) fix: bump FAB to 4.3.11 (@dpgaspar)
- [#26993](https://github.com/apache/superset/pull/26993) fix: chart import validation (@dpgaspar)
- [#27096](https://github.com/apache/superset/pull/27096) fix(big_number): white-space: nowrap to prevent wrapping (@mistercrunch)
- [#27073](https://github.com/apache/superset/pull/27073) fix(drill): no rows returned (@betodealmeida)
- [#27069](https://github.com/apache/superset/pull/27069) fix: Filters sidebar stretching dashboard height (@kgabryje)
- [#27068](https://github.com/apache/superset/pull/27068) fix: Exclude header controls from dashboard PDF export (@kgabryje)
- [#27041](https://github.com/apache/superset/pull/27041) fix(plugins): missing currency on small number format in table chart (@justinpark)
- [#27023](https://github.com/apache/superset/pull/27023) fix(explore): allow free-form d3 format on custom column formatting (@justinpark)
- [#27019](https://github.com/apache/superset/pull/27019) fix: safer error message in alerts (@betodealmeida)
- [#27015](https://github.com/apache/superset/pull/27015) fix(security manager): Users should not have access to all draft dashboards (@Vitor-Avila)
- [#26965](https://github.com/apache/superset/pull/26965) fix(tags): Improve support for tags with colons (@Vitor-Avila)
- [#26946](https://github.com/apache/superset/pull/26946) fix: column values with NaN (@betodealmeida)
- [#26964](https://github.com/apache/superset/pull/26964) fix(plugin-chart-table): Prevent misalignment of totals and headers when scrollbar is visible (@kgabryje)
- [#26332](https://github.com/apache/superset/pull/26332) fix(embedded+async queries): support async queries to work with embedded guest user (@zephyring)
- [#22849](https://github.com/apache/superset/pull/22849) fix(cache): remove unused webserver config & handle trailing slashes (@Usiel)
- [#26889](https://github.com/apache/superset/pull/26889) fix: Allow exporting saved queries without schema information (@sbernauer)
- [#26887](https://github.com/apache/superset/pull/26887) fix: dashboard import validation (@dpgaspar)
- [#26911](https://github.com/apache/superset/pull/26911) fix: handle CRLF endings causing sqlglot failure (@mapledan)
- [#26906](https://github.com/apache/superset/pull/26906) fix(pinot): typo in the name for epoch_ms_to_dttm (@ege-st)
- [#26817](https://github.com/apache/superset/pull/26817) fix: Bar charts horizontal margin adjustment error (@michael-s-molina)
- [#26749](https://github.com/apache/superset/pull/26749) fix: prevent guest user from modifying metrics (@betodealmeida)
- [#25923](https://github.com/apache/superset/pull/25923) fix(deck.gl Multiple Layer Chart): Add Contour and Heatmap Layer as options (@Mattc1221)
- [#26476](https://github.com/apache/superset/pull/26476) fix(sqlparse): improve table parsing (@betodealmeida)
- [#26922](https://github.com/apache/superset/pull/26922) fix(sqllab): autosync fail on migrated queryEditor (@justinpark)
- [#26814](https://github.com/apache/superset/pull/26814) fix(time-series table): Can't compare from the beginning of the time range (@michael-s-molina)
- [#26701](https://github.com/apache/superset/pull/26701) fix(tags): Filter system tags from the tags list (@Vitor-Avila)
- [#26807](https://github.com/apache/superset/pull/26807) fix: Row limit hardcoded (@michael-s-molina)
- [#26674](https://github.com/apache/superset/pull/26674) fix: helm chart comment on SECRET_KEY (@dpgaspar)
- [#26652](https://github.com/apache/superset/pull/26652) fix(import): only import FORMULA annotations (@mistercrunch)
- [#26314](https://github.com/apache/superset/pull/26314) fix(logging): Filter out undefined columns (@john-bodley)
- [#26461](https://github.com/apache/superset/pull/26461) fix(BigQuery): Support special characters in column/metric names used in ORDER BY (@Vitor-Avila)
- [#26744](https://github.com/apache/superset/pull/26744) fix(db2): Improving support for ibm db2 connections (@Vitor-Avila)
- [#26705](https://github.com/apache/superset/pull/26705) fix(legacy-charts): Show Time Grain control for legacy charts (@Vitor-Avila)
- [#26709](https://github.com/apache/superset/pull/26709) fix: do not use lodash/memoize (@rusackas)
- [#25550](https://github.com/apache/superset/pull/25550) fix: Catch ImportErrors for Google SDKs (@skion)
- [#26645](https://github.com/apache/superset/pull/26645) fix(translation): correct translation errors for Chinese(zh) (@Waterkin)
- [#26638](https://github.com/apache/superset/pull/26638) fix: Avoid 500 if end users write bad SQL (@Khrol)
- [#26644](https://github.com/apache/superset/pull/26644) fix: unnecessary logic on CI ephemeral (@dpgaspar)
- [#26625](https://github.com/apache/superset/pull/26625) fix: create virtual dataset validation (@dpgaspar)
- [#26634](https://github.com/apache/superset/pull/26634) fix: RLS modal styling (@geido)
- [#26469](https://github.com/apache/superset/pull/26469) fix(database): allow filtering by UUID (@betodealmeida)
- [#26412](https://github.com/apache/superset/pull/26412) fix(embedded): Hide dashboard fullscreen option for embedded context (@Vitor-Avila)
- [#26355](https://github.com/apache/superset/pull/26355) fix: Trino - handle table not found in SQLLab (@Khrol)
**Others**
- [#26716](https://github.com/apache/superset/pull/26716) build(deps): bump csstype from 2.6.9 to 3.1.3 in /superset-frontend (@dependabot[bot])
- [#26707](https://github.com/apache/superset/pull/26707) chore(helm): Upgrade default Superset version to 3.1.0 (@dnskr)
- [#26431](https://github.com/apache/superset/pull/26431) chore: bump prophet to 1.1.5 (@villebro)
### 3.1.0 (Tue Jan 9 15:05:00 2023 -0800)
**Database Migrations**
- [#26160](https://github.com/apache/superset/pull/26160) fix: Migration order due to cherry which went astray (@john-bodley)
- [#24776](https://github.com/apache/superset/pull/24776) chore(sqlalchemy): Remove erroneous SQLAlchemy ORM session.merge operations (@john-bodley)
- [#25819](https://github.com/apache/superset/pull/25819) chore: Singularize tag models (@john-bodley)
- [#25911](https://github.com/apache/superset/pull/25911) chore: remove deprecated functions in SQLAlchemy (@gnought)
- [#25304](https://github.com/apache/superset/pull/25304) feat: Adds CLI commands to execute viz migrations (@michael-s-molina)
- [#25204](https://github.com/apache/superset/pull/25204) feat(datasource): Checkbox for always filtering main dttm in datasource (@Always-prog)
- [#24832](https://github.com/apache/superset/pull/24832) fix: Alembic migration head (@john-bodley)
- [#24701](https://github.com/apache/superset/pull/24701) feat(Tags): Allow users to favorite Tags on CRUD Listview page (@hughhhh)
- [#24755](https://github.com/apache/superset/pull/24755) feat: Add line width unit control in deckgl Polygon and Path (@kgabryje)
- [#24700](https://github.com/apache/superset/pull/24700) chore: Update pylint to 2.17.4 (@EugeneTorap)
**Features**
- [#26031](https://github.com/apache/superset/pull/26031) feat(deckgl-map): use an arbitraty Mabpox style URL (#26027) (@francois-travais)
- [#26136](https://github.com/apache/superset/pull/26136) feat: Adds legacy time support for Waterfall chart (@michael-s-molina)
- [#26123](https://github.com/apache/superset/pull/26123) feat(helm): Add option to deploy extra containers to remaining deployments (@bluemalkin)
- [#24714](https://github.com/apache/superset/pull/24714) feat: Add Apache Doris support (@liujiwen-up)
- [#26033](https://github.com/apache/superset/pull/26033) feat: Add Bubble chart migration logic (@michael-s-molina)
- [#25921](https://github.com/apache/superset/pull/25921) feat(metadb): handle decimals (@betodealmeida)
- [#24539](https://github.com/apache/superset/pull/24539) feat(sqllab): non-blocking persistence mode (@justinpark)
- [#25861](https://github.com/apache/superset/pull/25861) feat(sqllab): Show duration as separate column in Query History view (@sebastianliebscher)
- [#25809](https://github.com/apache/superset/pull/25809) feat(sqllab): TRINO_EXPAND_ROWS: expand columns from ROWs (@giftig)
- [#25952](https://github.com/apache/superset/pull/25952) feat: Add Area chart migration and tweaks the Timeseries chart migration (@michael-s-molina)
- [#25950](https://github.com/apache/superset/pull/25950) feat(explore): dataset macro: dttm filter context (@giftig)
- [#23973](https://github.com/apache/superset/pull/23973) feat: Adds Line chart migration logic (@michael-s-molina)
- [#20323](https://github.com/apache/superset/pull/20323) feat: safer insert RLS (@betodealmeida)
- [#25882](https://github.com/apache/superset/pull/25882) feat: method for dynamic `allows_alias_in_select` (@betodealmeida)
- [#25855](https://github.com/apache/superset/pull/25855) feat(sqllab): Dynamic query limit dropdown (@giftig)
- [#25344](https://github.com/apache/superset/pull/25344) feat(sqllab): Format sql (@justinpark)
- [#25557](https://github.com/apache/superset/pull/25557) feat: Improves the Waterfall chart (@michael-s-molina)
- [#23308](https://github.com/apache/superset/pull/23308) feat: support databend for superset (@hantmac)
- [#25795](https://github.com/apache/superset/pull/25795) feat: support server-side sessions (@dpgaspar)
- [#25783](https://github.com/apache/superset/pull/25783) feat(helm): Add option to deploy extra containers to init job (@bluemalkin)
- [#25696](https://github.com/apache/superset/pull/25696) feat(Export as PDF - rasterized): Adding rasterized pdf functionality to dashboard (@fisjac)
- [#25676](https://github.com/apache/superset/pull/25676) feat: add France's regions to country map visualization (@dmeaux)
- [#25569](https://github.com/apache/superset/pull/25569) feat: add database and schema names to dataset option (@soniagtm)
- [#25666](https://github.com/apache/superset/pull/25666) feat: Funnel/tooltip-customization (@CorbinBullard)
- [#25683](https://github.com/apache/superset/pull/25683) feat: Add week time grain for Elasticsearch datasets (@mikelv92)
- [#25423](https://github.com/apache/superset/pull/25423) feat(sqllab): ResultTable extension (@justinpark)
- [#25542](https://github.com/apache/superset/pull/25542) feat(sqllab): Add keyboard shortcut helper (@justinpark)
- [#25565](https://github.com/apache/superset/pull/25565) feat: migrate to docker compose v2 (@mdeshmu)
- [#24154](https://github.com/apache/superset/pull/24154) feat: Add Deck.gl Contour Layer (@Mattc1221)
- [#17906](https://github.com/apache/superset/pull/17906) feat(plugin-chart-echarts): Echarts Waterfall (@stephenLYZ)
- [#22107](https://github.com/apache/superset/pull/22107) feat: Adds the ECharts Bubble chart (@mayurnewase)
- [#25151](https://github.com/apache/superset/pull/25151) feat(sqllab): SPA migration (@justinpark)
- [#25247](https://github.com/apache/superset/pull/25247) feat: Implement using Playwright for taking screenshots in reports (@kgabryje)
- [#25303](https://github.com/apache/superset/pull/25303) feat: generic marshmallow error component (@betodealmeida)
- [#25377](https://github.com/apache/superset/pull/25377) feat(docker): Use docker buildx and Add ARM builds for dockerize and websocket (@alekseyolg)
- [#25343](https://github.com/apache/superset/pull/25343) feat: Adds Sunburst chart migration logic (@michael-s-molina)
- [#25345](https://github.com/apache/superset/pull/25345) feat(sqllab): extra logging when chart is downloaded (@zephyring)
- [#25280](https://github.com/apache/superset/pull/25280) feat(helm): Support HPA for supersetNode and supersetWorker (@tenkian4)
- [#25309](https://github.com/apache/superset/pull/25309) feat(tag): fast follow for Tags flatten api + update client with generator + some bug fixes (@hughhhh)
- [#24964](https://github.com/apache/superset/pull/24964) feat: Tags ListView Page (@hughhhh)
- [#24787](https://github.com/apache/superset/pull/24787) feat(sqllab): Show sql in the current result (@justinpark)
- [#25105](https://github.com/apache/superset/pull/25105) feat: removing renderCard from Tags/index.tsc to remove cardview from Tags ListView (@fisjac)
- [#25089](https://github.com/apache/superset/pull/25089) feat(docker): refactor docker images (@alekseyolg)
- [#24839](https://github.com/apache/superset/pull/24839) feat: Update Tags CRUD API (@hughhhh)
- [#25065](https://github.com/apache/superset/pull/25065) feat: adding Scarf pixels to gather telemetry on readme and website (@rusackas)
- [#14225](https://github.com/apache/superset/pull/14225) feat: a native SQLAlchemy dialect for Superset (@betodealmeida)
- [#25001](https://github.com/apache/superset/pull/25001) feat: Moves Profile to Single Page App (SPA) (@michael-s-molina)
- [#24983](https://github.com/apache/superset/pull/24983) feat(sqllab): Add /sqllab endpoint to the v1 api (@justinpark)
- [#24918](https://github.com/apache/superset/pull/24918) feat: command to test DB engine specs (@betodealmeida)
- [#24921](https://github.com/apache/superset/pull/24921) feat(gsheets): file upload (@betodealmeida)
- [#24934](https://github.com/apache/superset/pull/24934) feat: add MotherDuck DB engine spec (@betodealmeida)
- [#24909](https://github.com/apache/superset/pull/24909) feat: improve SQLite DB engine spec (@betodealmeida)
- [#24870](https://github.com/apache/superset/pull/24870) feat(chart): Added Central Asia countries to countries map (@Zoynels)
- [#24702](https://github.com/apache/superset/pull/24702) feat: add empty state for Tags (@hughhhh)
- [#24768](https://github.com/apache/superset/pull/24768) feat: add pandas performance dependencies (@sebastianliebscher)
- [#24618](https://github.com/apache/superset/pull/24618) feat(csv-upload): Configurable max filesize (@giftig)
- [#24580](https://github.com/apache/superset/pull/24580) feat(database): Database Filtering via custom configuration (@Antonio-RiveroMartnez)
**Fixes**
- [#26429](https://github.com/apache/superset/pull/26429) fix(post-processing): handle missing values in cumulative operator (@villebro)
- [#26424](https://github.com/apache/superset/pull/26424) fix(translations): Clear all (@capping)
- [#26404](https://github.com/apache/superset/pull/26404) fix(plugin-chart-echarts): support forced categorical x-axis (@villebro)
- [#26415](https://github.com/apache/superset/pull/26415) fix: In chart gallery thumbnail is rendered in case of no example in #16707 (@sivasathyaseeelan)
- [#26393](https://github.com/apache/superset/pull/26393) fix(chart): Resolve incorrect column customization when switching metrics in table chart (@soniagtm)
- [#26405](https://github.com/apache/superset/pull/26405) fix(sqllab): Bump duckdb-engine version to 0.9.5 (@guenp)
- [#26313](https://github.com/apache/superset/pull/26313) fix(dashboard): narrow empty drop area (@justinpark)
- [#26410](https://github.com/apache/superset/pull/26410) fix(dashboard): Chart menu disable is fixed on chart-fullscreen in issue #25992 (@sivasathyaseeelan)
- [#26362](https://github.com/apache/superset/pull/26362) fix: Reactivates native filters E2E tests (@michael-s-molina)
- [#26398](https://github.com/apache/superset/pull/26398) fix(embed): an error occurred while rendering the visualization: error: Item with key ... is not registered. (@rowdyroad)
- [#26353](https://github.com/apache/superset/pull/26353) fix(SelectControl): select zero value (@rekilina)
- [#26380](https://github.com/apache/superset/pull/26380) fix: Removes non-existent columns in the 2018 FCC Survey dataset (@michael-s-molina)
- [#26302](https://github.com/apache/superset/pull/26302) fix: Invalid references in the basic template (@michael-s-molina)
- [#26379](https://github.com/apache/superset/pull/26379) fix: Duplicated plugin registration (@michael-s-molina)
- [#26378](https://github.com/apache/superset/pull/26378) fix(databend): databend time grain expression (@hantmac)
- [#26151](https://github.com/apache/superset/pull/26151) fix(chart): Set max row limit + removed the option to use an empty row limit value (@CorbinBullard)
- [#26312](https://github.com/apache/superset/pull/26312) fix(Embedded): Avoid creating a filter key for guest users (@Vitor-Avila)
- [#26333](https://github.com/apache/superset/pull/26333) fix(logging): Add logging of change_dashboard_filter event for native dashboard filters (@john-bodley)
- [#26326](https://github.com/apache/superset/pull/26326) fix(accessibility): Enable tabbing on sort header of table chart (@arunthirumani)
- [#26324](https://github.com/apache/superset/pull/26324) fix(tagging): adding tags containing a “:” to dashboards (@lilykuang)
- [#26340](https://github.com/apache/superset/pull/26340) fix(dashboard): Don't switch to first tab when directPathToChild changes (@kgabryje)
- [#26283](https://github.com/apache/superset/pull/26283) fix(redshift): convert_dttm method for redshift dataset and tests (@gaurav7261)
- [#26281](https://github.com/apache/superset/pull/26281) fix(sql lab): Use quote_schema instead of quote method to format schema name (@guenp)
- [#25967](https://github.com/apache/superset/pull/25967) fix(typings): model_id is a multiple option (@gnought)
- [#26284](https://github.com/apache/superset/pull/26284) fix: Revert "fix(sqllab): flaky json explore modal due to over-rendering (#26156)" (@justinpark)
- [#26279](https://github.com/apache/superset/pull/26279) fix: Cannot expand initially hidden SQL Lab tab (@michael-s-molina)
- [#26269](https://github.com/apache/superset/pull/26269) fix(plugin-chart-echarts): use scale for truncating x-axis (@villebro)
- [#26264](https://github.com/apache/superset/pull/26264) fix: Stacked charts with numerical columns (@michael-s-molina)
- [#26243](https://github.com/apache/superset/pull/26243) fix(plugin-chart-echarts): undefined bounds for bubble chart (@villebro)
- [#26224](https://github.com/apache/superset/pull/26224) fix: Use page.locator in Playwright reports (@kgabryje)
- [#26156](https://github.com/apache/superset/pull/26156) fix(sqllab): flaky json explore modal due to over-rendering (@justinpark)
- [#25533](https://github.com/apache/superset/pull/25533) fix(menu): Styling active menu in SPA navigation (@justinpark)
- [#25977](https://github.com/apache/superset/pull/25977) fix(sqllab): table preview has gone (@justinpark)
- [#26066](https://github.com/apache/superset/pull/26066) fix: move driver import to method (@giftig)
- [#25934](https://github.com/apache/superset/pull/25934) fix(tag): update state to clear form on success (@hughhhh)
- [#25941](https://github.com/apache/superset/pull/25941) fix(sqllab): Allow router navigation to explore (@justinpark)
- [#25875](https://github.com/apache/superset/pull/25875) fix(typo): replace 'datasouce_id' with 'datasource_id' in openapi.json (@nero5700)
- [#25856](https://github.com/apache/superset/pull/25856) fix(tagging): change key from name to id for tagToSelectOption (@lilykuang)
- [#25831](https://github.com/apache/superset/pull/25831) fix: add validation on tag name to have name + onDelete refresh list view (@hughhhh)
- [#25851](https://github.com/apache/superset/pull/25851) fix: databend png pic (@hantmac)
- [#25803](https://github.com/apache/superset/pull/25803) fix(helm): Fix init extra containers (@bluemalkin)
- [#25739](https://github.com/apache/superset/pull/25739) fix(README): mismatched picture tags (@andy-clapson)
- [#25727](https://github.com/apache/superset/pull/25727) fix(metadb): handle durations (@betodealmeida)
- [#25718](https://github.com/apache/superset/pull/25718) fix(driver): bumping DuckDB to 0.9.2 (@rusackas)
- [#25603](https://github.com/apache/superset/pull/25603) fix(tags): +n tags for listview (@hughhhh)
- [#25578](https://github.com/apache/superset/pull/25578) fix(tags): Polish + Better messaging for skipped tags with bad permissions (@hughhhh)
- [#25582](https://github.com/apache/superset/pull/25582) fix(sqllab): Allow opening of SQL Lab in new browser tab (@justinpark)
- [#25615](https://github.com/apache/superset/pull/25615) fix(test-db): engine params (@betodealmeida)
- [#25532](https://github.com/apache/superset/pull/25532) fix: Breaking change in MachineAuthProvider constructor (@kgabryje)
- [#25547](https://github.com/apache/superset/pull/25547) fix: Make `host.docker.internal` available on linux (@sebastianliebscher)
- [#25536](https://github.com/apache/superset/pull/25536) fix: Tags Page ListView size to 10 (@hughhhh)
- [#25525](https://github.com/apache/superset/pull/25525) fix(test-db): removed attribute (@betodealmeida)
- [#25473](https://github.com/apache/superset/pull/25473) fix(tags): Update loading + pagination for Tags Page (@hughhhh)
- [#25470](https://github.com/apache/superset/pull/25470) fix(tags): fix clears delete on Tags Modal (@hughhhh)
- [#25496](https://github.com/apache/superset/pull/25496) fix: Tags Polish II (@hughhhh)
- [#24927](https://github.com/apache/superset/pull/24927) fix(Indian Map Changes): fixed-Indian-map-border (@Yaswanth-Perumalla)
- [#25403](https://github.com/apache/superset/pull/25403) fix: Tags Page Polish (@hughhhh)
- [#25306](https://github.com/apache/superset/pull/25306) fix(sqllab): misplaced limit warning alert (@justinpark)
- [#25361](https://github.com/apache/superset/pull/25361) fix: update helm chart app version (@hugosjoberg)
- [#25308](https://github.com/apache/superset/pull/25308) fix(sqllab): invalid persisted tab state (@justinpark)
- [#25216](https://github.com/apache/superset/pull/25216) fix(docs): Fixing a typo in README.md (@yousoph)
- [#25152](https://github.com/apache/superset/pull/25152) fix(sqllab): invalid reducer key name (@justinpark)
- [#25124](https://github.com/apache/superset/pull/25124) fix: Partially reverts #25007 (@michael-s-molina)
- [#25067](https://github.com/apache/superset/pull/25067) fix: small fixes for the meta DB (@betodealmeida)
- [#24963](https://github.com/apache/superset/pull/24963) fix(gsheets): add column names on file upload (@betodealmeida)
- [#24955](https://github.com/apache/superset/pull/24955) fix: timezone issue in Pandas 2 (@betodealmeida)
- [#24952](https://github.com/apache/superset/pull/24952) fix: `to_datetime` in Pandas 2 (@betodealmeida)
- [#24871](https://github.com/apache/superset/pull/24871) fix: Ignores hot update files when generating the manifest (@michael-s-molina)
- [#24868](https://github.com/apache/superset/pull/24868) fix: Ignores ResizeObserver errors in development mode (@michael-s-molina)
**Others**
- [#25770](https://github.com/apache/superset/pull/25770) chore: Add example charts for deck.gl (@willie-hung)
- [#26317](https://github.com/apache/superset/pull/26317) chore: Adds a tooltip for the alert's SQL input (@michael-s-molina)
- [#26297](https://github.com/apache/superset/pull/26297) chore: Add downloadAsImage types, change filter selector (@kgabryje)
- [#26315](https://github.com/apache/superset/pull/26315) chore: Use WEBDRIVER_OPTION_ARGS with Playwright (@kgabryje)
- [#26310](https://github.com/apache/superset/pull/26310) chore: Disables minor ticks by default (@michael-s-molina)
- [#26287](https://github.com/apache/superset/pull/26287) chore: update changelog for 2.1.3 (@eschutho)
- [#26251](https://github.com/apache/superset/pull/26251) chore: improve CSP add base uri restriction (@dpgaspar)
- [#26082](https://github.com/apache/superset/pull/26082) chore: lock the databend-sqlalchemy version (@hantmac)
- [#26212](https://github.com/apache/superset/pull/26212) chore: Moves xAxisLabelRotation to shared controls (@michael-s-molina)
- [#26188](https://github.com/apache/superset/pull/26188) chore: Lower giveup log level for retried functions to warning (@jfrag1)
- [#25961](https://github.com/apache/superset/pull/25961) chore: harmonize and clean up list views (@villebro)
- [#26147](https://github.com/apache/superset/pull/26147) chore: Rename SET_ACTIVE_TABS action, add a new action (@kgabryje)
- [#25996](https://github.com/apache/superset/pull/25996) chore(tags): Allow for lookup via ids vs. name in the API (@hughhhh)
- [#26058](https://github.com/apache/superset/pull/26058) chore: Adds the 3.1.0 Release Notes (@michael-s-molina)
- [#26000](https://github.com/apache/superset/pull/26000) docs(databases): Update pinot.mdx to incorporate username and password based connection. (@raamri)
- [#26075](https://github.com/apache/superset/pull/26075) chore: Adds 3.0.2 data to CHANGELOG.md (@michael-s-molina)
- [#25850](https://github.com/apache/superset/pull/25850) chore(command): Organize Commands according to SIP-92 (@john-bodley)
- [#26073](https://github.com/apache/superset/pull/26073) chore: Updates Announce template to include CHANGELOG.md and UPDATING.md files (@michael-s-molina)
- [#26064](https://github.com/apache/superset/pull/26064) build(deps-dev): bump @types/node from 20.9.3 to 20.9.4 in /superset-websocket (@dependabot[bot])
- [#26063](https://github.com/apache/superset/pull/26063) build(deps): bump @types/lodash from 4.14.201 to 4.14.202 in /superset-websocket (@dependabot[bot])
- [#25844](https://github.com/apache/superset/pull/25844) chore: Allow only iterables for BaseDAO.delete() (@john-bodley)
- [#25917](https://github.com/apache/superset/pull/25917) docs: update security policy and contributing (@dpgaspar)
- [#24773](https://github.com/apache/superset/pull/24773) chore(connector): Cleanup base models and views according to SIP-92 (@john-bodley)
- [#26039](https://github.com/apache/superset/pull/26039) docs(intro): fix a single broken link (BugHerd #97) (@sfirke)
- [#26049](https://github.com/apache/superset/pull/26049) build(deps-dev): bump @types/node from 20.9.1 to 20.9.3 in /superset-websocket (@dependabot[bot])
- [#26048](https://github.com/apache/superset/pull/26048) build(deps-dev): bump @types/ws from 8.5.9 to 8.5.10 in /superset-websocket (@dependabot[bot])
- [#26043](https://github.com/apache/superset/pull/26043) chore: bump shillelagh (@betodealmeida)
- [#26004](https://github.com/apache/superset/pull/26004) chore: Allow external extensions to include their own package.json files (@kgabryje)
- [#26044](https://github.com/apache/superset/pull/26044) docs(BH#109): Athena URI spec fix (@rusackas)
- [#26025](https://github.com/apache/superset/pull/26025) build(deps-dev): bump eslint from 8.53.0 to 8.54.0 in /superset-websocket (@dependabot[bot])
- [#26013](https://github.com/apache/superset/pull/26013) chore: cleanup unused code in pandas 2.0+ (@gnought)
- [#26012](https://github.com/apache/superset/pull/26012) build(deps-dev): bump @types/node from 20.9.0 to 20.9.1 in /superset-websocket (@dependabot[bot])
- [#26009](https://github.com/apache/superset/pull/26009) chore: Remove unnecessary autoflush from tagging and key/value workflows (@john-bodley)
- [#25551](https://github.com/apache/superset/pull/25551) docs: handling "System limit for number of file watchers reached" error (@nitish-samsung-jha)
- [#25986](https://github.com/apache/superset/pull/25986) chore: Remove more redundant code in utils/core (@sebastianliebscher)
- [#24485](https://github.com/apache/superset/pull/24485) style: Transition of Navbar from dark to light and vice-versa is now smooth (@git-init-priyanshu)
- [#25059](https://github.com/apache/superset/pull/25059) docs: add Tentacle to users list (@jdclarke5)
- [#25968](https://github.com/apache/superset/pull/25968) chore: Add entry point for SliceHeader frontend extension (@kgabryje)
- [#25891](https://github.com/apache/superset/pull/25891) chore: support different JWT CSRF cookie names (@dpgaspar)
- [#25953](https://github.com/apache/superset/pull/25953) build(deps-dev): bump axios from 0.25.0 to 1.6.0 in /superset-embedded-sdk (@dependabot[bot])
- [#25927](https://github.com/apache/superset/pull/25927) build(deps-dev): bump @types/jsonwebtoken from 9.0.4 to 9.0.5 in /superset-websocket (@dependabot[bot])
- [#25929](https://github.com/apache/superset/pull/25929) build(deps-dev): bump @types/uuid from 9.0.6 to 9.0.7 in /superset-websocket (@dependabot[bot])
- [#25958](https://github.com/apache/superset/pull/25958) test: Reduce flaky integration tests triggered by `test_get_tag` (@sebastianliebscher)
- [#25948](https://github.com/apache/superset/pull/25948) chore: Simplify views/base (@sebastianliebscher)
- [#25951](https://github.com/apache/superset/pull/25951) build(deps): bump axios from 1.4.0 to 1.6.1 in /superset-frontend (@dependabot[bot])
- [#25881](https://github.com/apache/superset/pull/25881) chore(issue template): attempting to fix two entries/links (@rusackas)
- [#25926](https://github.com/apache/superset/pull/25926) chore: removing unused chartMetadata field (@rusackas)
- [#25928](https://github.com/apache/superset/pull/25928) build(deps-dev): bump @types/node from 20.8.10 to 20.9.0 in /superset-websocket (@dependabot[bot])
- [#25885](https://github.com/apache/superset/pull/25885) docs: Remove Python 3.8 from CONTRIBUTING.md (@koushik-rout-samsung)
- [#25900](https://github.com/apache/superset/pull/25900) chore: Simplify utils/cache by using default argument values (@sebastianliebscher)
- [#25912](https://github.com/apache/superset/pull/25912) chore: remove unused functions in utils/core (@sebastianliebscher)
- [#25907](https://github.com/apache/superset/pull/25907) build(deps): bump @types/lodash from 4.14.200 to 4.14.201 in /superset-websocket (@dependabot[bot])
- [#25906](https://github.com/apache/superset/pull/25906) build(deps-dev): bump @types/ws from 8.5.7 to 8.5.9 in /superset-websocket (@dependabot[bot])
- [#25905](https://github.com/apache/superset/pull/25905) build(deps-dev): bump @types/cookie from 0.5.3 to 0.5.4 in /superset-websocket (@dependabot[bot])
- [#25262](https://github.com/apache/superset/pull/25262) chore: add more migration tests (@eschutho)
- [#25886](https://github.com/apache/superset/pull/25886) build(deps): bump cookie from 0.5.0 to 0.6.0 in /superset-websocket (@dependabot[bot])
- [#25714](https://github.com/apache/superset/pull/25714) chore: Update INTHEWILD.md (@codek)
- [#25867](https://github.com/apache/superset/pull/25867) build(deps-dev): bump eslint from 8.52.0 to 8.53.0 in /superset-websocket (@dependabot[bot])
- [#25852](https://github.com/apache/superset/pull/25852) chore: Updates Databend image extension reference in README.md (@michael-s-molina)
- [#25531](https://github.com/apache/superset/pull/25531) docs: Update location of `async_query_manager.py` (@emmanuel-ferdman)
- [#25817](https://github.com/apache/superset/pull/25817) chore(docker-compose): more host network specifiers (@giftig)
- [#25812](https://github.com/apache/superset/pull/25812) chore: Removes border of the color picker control (@michael-s-molina)
- [#25826](https://github.com/apache/superset/pull/25826) chore(websocket): Adding support for redis username in websocket server (@craig-rueda)
- [#25822](https://github.com/apache/superset/pull/25822) chore: Update sip.md to have a better call to action (@rusackas)
- [#25823](https://github.com/apache/superset/pull/25823) chore(issues): config.yaml added with feature request link to open a discussion (@rusackas)
- [#25816](https://github.com/apache/superset/pull/25816) build(deps-dev): bump @types/node from 20.8.7 to 20.8.10 in /superset-websocket (@dependabot[bot])
- [#25530](https://github.com/apache/superset/pull/25530) docs: Add Cyberhaven to Users list (@ghost)
- [#25314](https://github.com/apache/superset/pull/25314) chore(celery): Cleanup config and async query specifications (@john-bodley)
- [#25778](https://github.com/apache/superset/pull/25778) build(deps): bump browserify-sign from 4.2.1 to 4.2.2 in /superset-frontend (@dependabot[bot])
- [#24046](https://github.com/apache/superset/pull/24046) chore(security): Make get_database_perm/get_dataset_perm return optional (@john-bodley)
- [#25765](https://github.com/apache/superset/pull/25765) chore: Add config options for Playwright wait_until and default timeout (@kgabryje)
- [#25721](https://github.com/apache/superset/pull/25721) style(readme): reformatted (@bipinct)
- [#25737](https://github.com/apache/superset/pull/25737) chore: bump pymssql version (@gnought)
- [#25521](https://github.com/apache/superset/pull/25521) chore(websocket): [WIP] Making JWT algos configurable (@craig-rueda)
- [#25735](https://github.com/apache/superset/pull/25735) build(deps-dev): bump eslint from 8.51.0 to 8.52.0 in /superset-websocket (@dependabot[bot])
- [#25726](https://github.com/apache/superset/pull/25726) chore: updated base DAO find_by_id to return generic type (@zephyring)
- [#25717](https://github.com/apache/superset/pull/25717) refactor: use DATE_TRUNC for Elasticsearch time grain (@mikelv92)
- [#25709](https://github.com/apache/superset/pull/25709) chore: helm chart: bump appVersion to 3.0.1 (@mdavidsen)
- [#25577](https://github.com/apache/superset/pull/25577) chore: Change the format for sha512 sum for releases (@sebastianliebscher)
- [#25689](https://github.com/apache/superset/pull/25689) build(deps-dev): bump @types/cookie from 0.5.1 to 0.5.3 in /superset-websocket (@dependabot[bot])
- [#25701](https://github.com/apache/superset/pull/25701) build(deps-dev): bump @types/uuid from 9.0.4 to 9.0.6 in /superset-websocket (@dependabot[bot])
- [#25710](https://github.com/apache/superset/pull/25710) docs(README): Fix typo (@RahulK4102)
- [#25700](https://github.com/apache/superset/pull/25700) build(deps-dev): bump @types/node from 20.8.6 to 20.8.7 in /superset-websocket (@dependabot[bot])
- [#25322](https://github.com/apache/superset/pull/25322) chore: add latest docker tag (@eschutho)
- [#25691](https://github.com/apache/superset/pull/25691) chore: Adds 3.0.1 data to CHANGELOG.md (@michael-s-molina)
- [#25688](https://github.com/apache/superset/pull/25688) build(deps-dev): bump @types/jsonwebtoken from 9.0.3 to 9.0.4 in /superset-websocket (@dependabot[bot])
- [#25543](https://github.com/apache/superset/pull/25543) chore: Cleanup hostNamesConfig.js (@john-bodley)
- [#25654](https://github.com/apache/superset/pull/25654) docs: make project-specific security page more prominent (@raboof)
- [#25667](https://github.com/apache/superset/pull/25667) chore: sync lock files (@villebro)
- [#25661](https://github.com/apache/superset/pull/25661) build(deps-dev): bump @babel/traverse from 7.16.0 to 7.23.2 in /superset-websocket (@dependabot[bot])
- [#25653](https://github.com/apache/superset/pull/25653) build(deps-dev): bump @types/node from 20.8.5 to 20.8.6 in /superset-websocket (@dependabot[bot])
- [#25645](https://github.com/apache/superset/pull/25645) chore: bump pip-tools (@villebro)
- [#25537](https://github.com/apache/superset/pull/25537) docs: invert logo color for dark theme in README (@Sea-n)
- [#25629](https://github.com/apache/superset/pull/25629) chore: adding resource links to readme (@rusackas)
- [#25638](https://github.com/apache/superset/pull/25638) build(ci): Provide diff for pre-commit failures (@jsoref)
- [#25632](https://github.com/apache/superset/pull/25632) build(deps-dev): bump @types/node from 20.8.4 to 20.8.5 in /superset-websocket (@dependabot[bot])
- [#25455](https://github.com/apache/superset/pull/25455) chore(helm): spelling: initialize (@jsoref)
- [#25567](https://github.com/apache/superset/pull/25567) docs: BugHerd Tasks 88, 89, 90, 91 (@mdeshmu)
- [#25602](https://github.com/apache/superset/pull/25602) chore(feature?): Bump `scarf-js` to 1.3.0 to get more telemetry data (@rusackas)
- [#25502](https://github.com/apache/superset/pull/25502) build(deps): bump postcss from 8.3.11 to 8.4.31 in /docs (@dependabot[bot])
- [#19056](https://github.com/apache/superset/pull/19056) docs: Add timezone information (@john-bodley)
- [#25340](https://github.com/apache/superset/pull/25340) refactor: Issue #25040; Refactored sync_role_definition function in order to reduce number of query. (@suicide11)
- [#25606](https://github.com/apache/superset/pull/25606) build(deps-dev): bump @types/ws from 8.5.6 to 8.5.7 in /superset-websocket (@dependabot[bot])
- [#25585](https://github.com/apache/superset/pull/25585) build(deps): bump winston from 3.10.0 to 3.11.0 in /superset-websocket (@dependabot[bot])
- [#25584](https://github.com/apache/superset/pull/25584) build(deps-dev): bump @types/node from 20.8.2 to 20.8.4 in /superset-websocket (@dependabot[bot])
- [#25566](https://github.com/apache/superset/pull/25566) chore: Update pylint to 2.17.7 (@EugeneTorap)
- [#25574](https://github.com/apache/superset/pull/25574) build(deps-dev): bump eslint from 8.49.0 to 8.51.0 in /superset-websocket (@dependabot[bot])
- [#25228](https://github.com/apache/superset/pull/25228) chore(sqllab): Typescript for SqlEditor component (@justinpark)
- [#25507](https://github.com/apache/superset/pull/25507) chore(tags): don't allow users to create new tags from property dropdowns (@hughhhh)
- [#25504](https://github.com/apache/superset/pull/25504) chore(tags): move tags column in dashboard and chart list (@lilykuang)
- [#24481](https://github.com/apache/superset/pull/24481) docs: fix for domain sharding results in failed requests with "Missing Authorization Header" (@ved-kashyap-samsung)
- [#25508](https://github.com/apache/superset/pull/25508) build(deps): bump ws and @types/ws in /superset-websocket (@dependabot[bot])
- [#25498](https://github.com/apache/superset/pull/25498) build(deps-dev): bump @types/node from 20.6.0 to 20.8.2 in /superset-websocket (@dependabot[bot])
- [#25480](https://github.com/apache/superset/pull/25480) docs: define localhost for docker (@mdeshmu)
- [#25479](https://github.com/apache/superset/pull/25479) docs: update docker compose instructions (@mdeshmu)
- [#25482](https://github.com/apache/superset/pull/25482) docs: add a FAQ about asset recovery from UI (@mdeshmu)
- [#25477](https://github.com/apache/superset/pull/25477) docs: add https & ldap instructions (@mdeshmu)
- [#25466](https://github.com/apache/superset/pull/25466) chore(async): Initial Refactoring of Global Async Queries (@craig-rueda)
- [#25120](https://github.com/apache/superset/pull/25120) build(deps-dev): bump prettier from 3.0.2 to 3.0.3 in /superset-websocket (@dependabot[bot])
- [#25325](https://github.com/apache/superset/pull/25325) build(deps-dev): bump @types/jsonwebtoken from 9.0.2 to 9.0.3 in /superset-websocket (@dependabot[bot])
- [#25435](https://github.com/apache/superset/pull/25435) docs(FAQ): remove reference to filter box, add Q&A re: usage analytics (@sfirke)
- [#25438](https://github.com/apache/superset/pull/25438) chore: Update Explore tooltip copy (@yousoph)
- [#25465](https://github.com/apache/superset/pull/25465) chore(misc): Typos in config.py (@JZ6)
- [#25457](https://github.com/apache/superset/pull/25457) chore(backend): Spelling (@jsoref)
- [#25456](https://github.com/apache/superset/pull/25456) chore(misc): Spelling (@jsoref)
- [#25453](https://github.com/apache/superset/pull/25453) chore(docs): Spelling (@jsoref)
- [#25441](https://github.com/apache/superset/pull/25441) build(deps): bump get-func-name from 2.0.0 to 2.0.2 in /superset-frontend/cypress-base (@dependabot[bot])
- [#25276](https://github.com/apache/superset/pull/25276) chore: cryptography version bump (@lilykuang)
- [#25332](https://github.com/apache/superset/pull/25332) docs: update docker-compose (@nytai)
- [#25362](https://github.com/apache/superset/pull/25362) chore: upgrade node to most recent 16.x (@villebro)
- [#25360](https://github.com/apache/superset/pull/25360) chore: Adds 3.0 data to CHANGELOG and UPDATING (@michael-s-molina)
- [#25346](https://github.com/apache/superset/pull/25346) chore(async): Making create app configurable (@craig-rueda)
- [#24928](https://github.com/apache/superset/pull/24928) docs: jwks_uri addition to OAUTH provider (@kravi21)
- [#25312](https://github.com/apache/superset/pull/25312) docs: add snowflake-sqlalchemy in ./docker/requirements-local.txt (@janhavitripurwar)
- [#25324](https://github.com/apache/superset/pull/25324) docs: add ReadyTech to INTHEWILD.md (@jbat)
- [#25313](https://github.com/apache/superset/pull/25313) chore: bump gunicorn to v21 (@villebro)
- [#25311](https://github.com/apache/superset/pull/25311) build(deps-dev): bump @types/uuid from 9.0.3 to 9.0.4 in /superset-websocket (@dependabot[bot])
- [#25274](https://github.com/apache/superset/pull/25274) chore(sqllab): Migrate tests to typescript (@justinpark)
- [#25291](https://github.com/apache/superset/pull/25291) chore: changing one word (disablement -> disabling) (@rusackas)
- [#25287](https://github.com/apache/superset/pull/25287) build(docker): bump geckodriver and firefox to latest (@alekseyolg)
- [#25293](https://github.com/apache/superset/pull/25293) build(deps): bump ws from 8.13.0 to 8.14.1 in /superset-websocket (@dependabot[bot])
- [#25296](https://github.com/apache/superset/pull/25296) docs: rewrite superset docker localhost prose (@jsoref)
- [#25279](https://github.com/apache/superset/pull/25279) build(deps): bump uuid from 9.0.0 to 9.0.1 in /superset-websocket (@dependabot[bot])
- [#25263](https://github.com/apache/superset/pull/25263) build(deps-dev): bump eslint from 8.48.0 to 8.49.0 in /superset-websocket (@dependabot[bot])
- [#25253](https://github.com/apache/superset/pull/25253) build(deps-dev): bump @types/node from 20.5.7 to 20.6.0 in /superset-websocket (@dependabot[bot])
- [#20631](https://github.com/apache/superset/pull/20631) refactor: Remove obsolete HiveEngineSpec.fetch_logs method (@john-bodley)
- [#25226](https://github.com/apache/superset/pull/25226) chore(read_csv): remove deprecated argument (@betodealmeida)
- [#25177](https://github.com/apache/superset/pull/25177) chore: Convert deckgl class components to functional (@kgabryje)
- [#24992](https://github.com/apache/superset/pull/24992) docs(FAQ): add answer re: necessary specs, copy-edit existing answer (@sfirke)
- [#25165](https://github.com/apache/superset/pull/25165) chore: back port 2.1.1 doc changes (@eschutho)
- [#25206](https://github.com/apache/superset/pull/25206) docs: add CVEs for 2.1.1 (@dpgaspar)
- [#25200](https://github.com/apache/superset/pull/25200) docs: fix wrong type in PREFERRED_DATABASES example (@cmontemuino)
- [#25160](https://github.com/apache/superset/pull/25160) chore: fix broken link to Celery worker docs (@wAVeckx)
- [#25142](https://github.com/apache/superset/pull/25142) build(deps-dev): bump @types/uuid from 9.0.2 to 9.0.3 in /superset-websocket (@dependabot[bot])
- [#25141](https://github.com/apache/superset/pull/25141) build(deps): bump jsonwebtoken from 9.0.1 to 9.0.2 in /superset-websocket (@dependabot[bot])
- [#25140](https://github.com/apache/superset/pull/25140) build(deps): bump jsonwebtoken from 9.0.1 to 9.0.2 in /superset-websocket/utils/client-ws-app (@dependabot[bot])
- [#25088](https://github.com/apache/superset/pull/25088) chore: consolidate sqllab store into SPA store (@justinpark)
- [#25121](https://github.com/apache/superset/pull/25121) chore: move TypedDict from typing_extensions to typing (@sebastianliebscher)
- [#24896](https://github.com/apache/superset/pull/24896) chore: use contextlib.surpress instead of passing on error (@sebastianliebscher)
- [#25098](https://github.com/apache/superset/pull/25098) build(deps-dev): bump eslint from 8.47.0 to 8.48.0 in /superset-websocket (@dependabot[bot])
- [#25097](https://github.com/apache/superset/pull/25097) build(deps-dev): bump @types/node from 20.5.6 to 20.5.7 in /superset-websocket (@dependabot[bot])
- [#24933](https://github.com/apache/superset/pull/24933) chore: Refactor deck.gl plugins to Typescript (@kgabryje)
- [#24980](https://github.com/apache/superset/pull/24980) chore: Update docs for docker-compose installation (@hughhhh)
- [#24771](https://github.com/apache/superset/pull/24771) docs(docker-compose): add missing parenthesis (@sfirke)
- [#25082](https://github.com/apache/superset/pull/25082) build(deps-dev): bump @types/node from 20.5.1 to 20.5.6 in /superset-websocket (@dependabot[bot])
- [#25080](https://github.com/apache/superset/pull/25080) chore(reports): add metrics to report schedule and log prune (@villebro)
- [#25047](https://github.com/apache/superset/pull/25047) chore(sqllab): typescript for getInitialState (@justinpark)
- [#25030](https://github.com/apache/superset/pull/25030) build(deps): Bump PyHive (@mdeshmu)
- [#24872](https://github.com/apache/superset/pull/24872) test(cypress): Fail Cypress on Console errors (@rusackas)
- [#25046](https://github.com/apache/superset/pull/25046) chore: Organizes the files of the ReportModal feature (@michael-s-molina)
- [#25045](https://github.com/apache/superset/pull/25045) chore(tests): Adding missing **init**.py files to various test packages (@craig-rueda)
- [#25038](https://github.com/apache/superset/pull/25038) build(deps-dev): bump @types/node from 20.5.0 to 20.5.1 in /superset-websocket (@dependabot[bot])
- [#25010](https://github.com/apache/superset/pull/25010) chore(sqllab): Relocate user in SqlLab to root (@justinpark)
- [#25034](https://github.com/apache/superset/pull/25034) docs: fix line break in Apache Druid page (@giuliotal)
- [#24994](https://github.com/apache/superset/pull/24994) chore: rename `get_iterable` (@betodealmeida)
- [#25007](https://github.com/apache/superset/pull/25007) chore: Removes Saved Query old code (@michael-s-molina)
- [#24894](https://github.com/apache/superset/pull/24894) chore: Update DAOs to use singular deletion method instead of bulk (@jfrag1)
- [#25005](https://github.com/apache/superset/pull/25005) chore: Removes src/modules top folder (@michael-s-molina)
- [#24998](https://github.com/apache/superset/pull/24998) build(deps-dev): bump prettier from 3.0.1 to 3.0.2 in /superset-websocket (@dependabot[bot])
- [#24941](https://github.com/apache/superset/pull/24941) chore(dashboard import/export): include additional fields to export/import commands (@Vitor-Avila)
- [#24967](https://github.com/apache/superset/pull/24967) chore(dao): Remove redundant convenience methods (@john-bodley)
- [#24973](https://github.com/apache/superset/pull/24973) build(deps-dev): bump @types/node from 20.4.9 to 20.5.0 in /superset-websocket (@dependabot[bot])
- [#24972](https://github.com/apache/superset/pull/24972) build(deps-dev): bump eslint from 8.46.0 to 8.47.0 in /superset-websocket (@dependabot[bot])
- [#24936](https://github.com/apache/superset/pull/24936) chore(sqllab): Relocate get bootstrap data logic (@justinpark)
- [#24467](https://github.com/apache/superset/pull/24467) chore(dao): Replace save/overwrite with create/update respectively (@john-bodley)
- [#24962](https://github.com/apache/superset/pull/24962) docs: Add wattbewerb to users list (@hbruch)
- [#24961](https://github.com/apache/superset/pull/24961) chore: Add Automattic to the list of users and contributors (@Khrol)
- [#24958](https://github.com/apache/superset/pull/24958) build(deps): bump tough-cookie and @cypress/request in /superset-frontend/cypress-base (@dependabot[bot])
- [#24920](https://github.com/apache/superset/pull/24920) docs: Fixing Superset typo in docker-compose local installation guide (@TannerBarcelos)
- [#24924](https://github.com/apache/superset/pull/24924) build(deps-dev): bump @types/node from 20.4.8 to 20.4.9 in /superset-websocket (@dependabot[bot])
- [#24915](https://github.com/apache/superset/pull/24915) docs: fix tip box in "Installing From Scratch" page (@giuliotal)
- [#24878](https://github.com/apache/superset/pull/24878) build(deps-dev): bump prettier from 2.8.8 to 3.0.1 in /superset-websocket (@dependabot[bot])
- [#24900](https://github.com/apache/superset/pull/24900) build(deps-dev): bump eslint-config-prettier from 8.10.0 to 9.0.0 in /superset-websocket (@dependabot[bot])
- [#24901](https://github.com/apache/superset/pull/24901) build(deps-dev): bump @types/node from 20.4.7 to 20.4.8 in /superset-websocket (@dependabot[bot])
- [#24888](https://github.com/apache/superset/pull/24888) build(deps-dev): bump @types/node from 20.4.6 to 20.4.7 in /superset-websocket (@dependabot[bot])
- [#24880](https://github.com/apache/superset/pull/24880) build(deps-dev): bump @types/node from 20.4.5 to 20.4.6 in /superset-websocket (@dependabot[bot])
- [#24879](https://github.com/apache/superset/pull/24879) build(deps-dev): bump eslint-config-prettier from 8.8.0 to 8.10.0 in /superset-websocket (@dependabot[bot])
- [#24873](https://github.com/apache/superset/pull/24873) docs(native-filters): Remove outdated statement (@john-bodley)
- [#24657](https://github.com/apache/superset/pull/24657) chore: Bump cryptography (@suryadev99)
- [#24842](https://github.com/apache/superset/pull/24842) build(deps-dev): bump eslint from 8.45.0 to 8.46.0 in /superset-websocket (@dependabot[bot])
- [#24838](https://github.com/apache/superset/pull/24838) chore(api): clean up API spec (@sebastianliebscher)
- [#24834](https://github.com/apache/superset/pull/24834) docs(Kubernetes): Fix typos, clarify language re: Scarf (@sfirke)
- [#24819](https://github.com/apache/superset/pull/24819) chore: remove get_columns_description duplication (@betodealmeida)
- [#24817](https://github.com/apache/superset/pull/24817) docs: Adding a couple links to contributing page (@rusackas)
- [#24820](https://github.com/apache/superset/pull/24820) docs: fixing stack overflow link (@rusackas)
- [#24809](https://github.com/apache/superset/pull/24809) build(deps-dev): bump @types/node from 20.4.4 to 20.4.5 in /superset-websocket (@dependabot[bot])
- [#19959](https://github.com/apache/superset/pull/19959) docs(K8s): Add instructions for loading the examples (@charris-msft)
- [#24147](https://github.com/apache/superset/pull/24147) chore: bump postgresql in docker-compose and github workflows (@sebastianliebscher)
- [#24779](https://github.com/apache/superset/pull/24779) build(deps-dev): bump @types/node from 20.4.2 to 20.4.4 in /superset-websocket (@dependabot[bot])
- [#24751](https://github.com/apache/superset/pull/24751) docs: update AWS Athena and Redshift docs (@mdeshmu)
- [#24461](https://github.com/apache/superset/pull/24461) docs(docker-compose): note the risk of running a Docker Postgres volume in production (@sfirke)
- [#24705](https://github.com/apache/superset/pull/24705) chore(deps): bump pandas >=2.0 (@sebastianliebscher)
- [#24732](https://github.com/apache/superset/pull/24732) build(deps-dev): bump word-wrap from 1.2.3 to 1.2.4 in /superset-websocket (@dependabot[bot])
- [#24715](https://github.com/apache/superset/pull/24715) chore: update deprecated arguments in schema (@sebastianliebscher)
- [#24733](https://github.com/apache/superset/pull/24733) build(deps): bump word-wrap from 1.2.3 to 1.2.4 in /superset-frontend/cypress-base (@dependabot[bot])
- [#24735](https://github.com/apache/superset/pull/24735) build(deps-dev): bump word-wrap from 1.2.3 to 1.2.4 in /superset-frontend (@dependabot[bot])
- [#24734](https://github.com/apache/superset/pull/24734) build(deps-dev): bump word-wrap from 1.2.3 to 1.2.4 in /superset-embedded-sdk (@dependabot[bot])
- [#24712](https://github.com/apache/superset/pull/24712) build(deps-dev): bump eslint from 8.44.0 to 8.45.0 in /superset-websocket (@dependabot[bot])
- [#24669](https://github.com/apache/superset/pull/24669) chore: remove obsolete fetchExploreJson function (@john-bodley)
- [#24682](https://github.com/apache/superset/pull/24682) build(deps-dev): bump @types/node from 20.4.1 to 20.4.2 in /superset-websocket (@dependabot[bot])
- [#24674](https://github.com/apache/superset/pull/24674) docs: Fix typo in Rockset docs (@gadhagod)
- [#24672](https://github.com/apache/superset/pull/24672) build(deps-dev): bump @types/node from 20.4.0 to 20.4.1 in /superset-websocket (@dependabot[bot])
- [#24673](https://github.com/apache/superset/pull/24673) build(deps-dev): bump @typescript-eslint/parser from 5.61.0 to 5.62.0 in /superset-websocket (@dependabot[bot])
- [#24649](https://github.com/apache/superset/pull/24649) chore: Update Rockset—switching out rockset for rockset-sqlalchemy (@gadhagod)
- [#24653](https://github.com/apache/superset/pull/24653) build(deps): bump semver from 5.7.1 to 5.7.2 in /superset-frontend (@dependabot[bot])
- [#24654](https://github.com/apache/superset/pull/24654) build(deps): bump semver from 6.3.0 to 6.3.1 in /superset-websocket (@dependabot[bot])
- [#24655](https://github.com/apache/superset/pull/24655) build(deps): bump semver from 6.3.0 to 6.3.1 in /superset-frontend/cypress-base (@dependabot[bot])
- [#24656](https://github.com/apache/superset/pull/24656) build(deps): bump trim and @superset-ui/core in /superset-frontend/cypress-base (@dependabot[bot])
- [#24659](https://github.com/apache/superset/pull/24659) build(deps): bump winston from 3.9.0 to 3.10.0 in /superset-websocket (@dependabot[bot])
- [#24626](https://github.com/apache/superset/pull/24626) chore: Re-enable some GitHub action workflows in draft mode (@john-bodley)
- [#24633](https://github.com/apache/superset/pull/24633) docs(databases): correct the way of using use environment variables (@duyet)
- [#24648](https://github.com/apache/superset/pull/24648) chore: update UI dev libs and fix warnings & vulnerabilities (@EugeneTorap)
- [#24651](https://github.com/apache/superset/pull/24651) build(deps): bump semver from 5.7.1 to 5.7.2 in /docs (@dependabot[bot])
- [#24634](https://github.com/apache/superset/pull/24634) build(deps): bump tough-cookie from 4.0.0 to 4.1.3 in /superset-embedded-sdk (@dependabot[bot])
- [#24614](https://github.com/apache/superset/pull/24614) build(deps): bump jsonwebtoken from 9.0.0 to 9.0.1 in /superset-websocket (@dependabot[bot])
- [#23987](https://github.com/apache/superset/pull/23987) docs(frontend): Fixed typo in command (@ved-kashyap-samsung)
- [#23992](https://github.com/apache/superset/pull/23992) docs: correct databricks pip package name (@devonkinghorn)
- [#24632](https://github.com/apache/superset/pull/24632) build(deps): bump tough-cookie from 4.0.0 to 4.1.3 in /superset-websocket (@dependabot[bot])
- [#24585](https://github.com/apache/superset/pull/24585) build(deps-dev): bump @typescript-eslint/eslint-plugin from 5.60.1 to 5.61.0 in /superset-websocket (@dependabot[bot])
- [#24576](https://github.com/apache/superset/pull/24576) build(deps-dev): bump eslint from 8.43.0 to 8.44.0 in /superset-websocket (@dependabot[bot])
- [#24601](https://github.com/apache/superset/pull/24601) build(deps-dev): bump @types/node from 20.3.2 to 20.4.0 in /superset-websocket (@dependabot[bot])
- [#24584](https://github.com/apache/superset/pull/24584) build(deps-dev): bump @typescript-eslint/parser from 5.60.1 to 5.61.0 in /superset-websocket (@dependabot[bot])
- [#24600](https://github.com/apache/superset/pull/24600) build(deps): bump jsonwebtoken from 9.0.0 to 9.0.1 in /superset-websocket/utils/client-ws-app (@dependabot[bot])
- [#24570](https://github.com/apache/superset/pull/24570) docs(helm): reference the correct chart (@muniter)
- [#24564](https://github.com/apache/superset/pull/24564) docs: add notice not to use gevent worker with bigquery datasource (@okayhooni)
- [#24578](https://github.com/apache/superset/pull/24578) refactor: pkg_resources -> importlib.resources (@cwegener)
- [#24523](https://github.com/apache/superset/pull/24523) build(deps-dev): bump @typescript-eslint/eslint-plugin from 5.60.0 to 5.60.1 in /superset-websocket (@dependabot[bot])
### 3.0.3 (Fri Dec 8 05:40:09 2023 -0800)
**Fixes**
- [#26215](https://github.com/apache/superset/pull/26215) fix(plugin-chart-echarts): support truncated numeric x-axis (@villebro)
- [#26199](https://github.com/apache/superset/pull/26199) fix(chart-filter): Avoid column denormalization if not enabled (@Vitor-Avila)
- [#26211](https://github.com/apache/superset/pull/26211) fix: support custom links in markdown (@villebro)
- [#26189](https://github.com/apache/superset/pull/26189) fix(dashboard): title formatting (@nytai)
- [#26207](https://github.com/apache/superset/pull/26207) fix: Includes 90° x-axis label rotation (@michael-s-molina)
- [#26157](https://github.com/apache/superset/pull/26157) fix(init-job): Fix envFrom for init job in helm chart (@sumagoudb)
- [#25878](https://github.com/apache/superset/pull/25878) fix(embedded): Hide sensitive payload data from guest users (@jfrag1)
- [#25894](https://github.com/apache/superset/pull/25894) fix(Alerts/Reports): allow use of ";" separator in slack recipient entry (@rtexelm)
- [#26116](https://github.com/apache/superset/pull/26116) fix(database-import): Support importing a DB connection with a version set (@Vitor-Avila)
- [#26154](https://github.com/apache/superset/pull/26154) fix: set label on adhoc column should persist (@betodealmeida)
- [#26140](https://github.com/apache/superset/pull/26140) fix(annotations): time grain column (@betodealmeida)
- [#23916](https://github.com/apache/superset/pull/23916) fix: remove default secret key from helm (@dpgaspar)
- [#26120](https://github.com/apache/superset/pull/26120) fix: alias column when fetching values (@betodealmeida)
- [#26106](https://github.com/apache/superset/pull/26106) fix: flaky test_explore_json_async test v2 (@villebro)
- [#26091](https://github.com/apache/superset/pull/26091) fix: bump node-fetch to 2.6.7 (@dpgaspar)
- [#26087](https://github.com/apache/superset/pull/26087) fix(plugin-chart-echarts): support numerical x-axis (@villebro)
- [#26059](https://github.com/apache/superset/pull/26059) fix: Flaky test_explore_json_async test (@michael-s-molina)
- [#26023](https://github.com/apache/superset/pull/26023) fix: Prevent cached bootstrap data from leaking between users w/ same first/last name (@jfrag1)
- [#26060](https://github.com/apache/superset/pull/26060) fix: Optimize fetching samples logic (@john-bodley)
- [#26010](https://github.com/apache/superset/pull/26010) fix: Remove annotation Fuzzy to get french translation (@aehanno)
- [#26005](https://github.com/apache/superset/pull/26005) fix(security): restore default value of SESSION_COOKIE_SECURE to False (@sfirke)
- [#25883](https://github.com/apache/superset/pull/25883) fix(horizontal filter bar filter labels): Increase max-width to 96px (@rtexelm)
**Others**
- [#26208](https://github.com/apache/superset/pull/26208) chore: Adds note about numerical x-axis (@michael-s-molina)
- [#26158](https://github.com/apache/superset/pull/26158) chore: Clean up the examples dashboards (@michael-s-molina)
- [#25931](https://github.com/apache/superset/pull/25931) chore(deps): bump pillow deps (@gnought)
### 3.0.2 (Mon Nov 20 07:38:38 2023 -0500)
**Fixes**
@@ -903,6 +1495,47 @@ under the License.
- [#23158](https://github.com/apache/superset/pull/23158) chore: Bump cryptography to 39.0.1 (@EugeneTorap)
- [#23108](https://github.com/apache/superset/pull/23108) chore: Remove yarn.lock from the root folder (@EugeneTorap)
### 2.1.3 (Fri Dec 8 16:36:51 2023 -0700)
**Database Migrations**
**Features**
**Fixes**
- [#25658](https://github.com/apache/superset/pull/25658) fix: improve upload ZIP file validation (@dpgaspar)
- [#25779](https://github.com/apache/superset/pull/25779) fix: DB-specific quoting in Jinja macro (@betodealmeida)
- [#25843](https://github.com/apache/superset/pull/25843) fix: remove `update_charts_owners` (@betodealmeida)
**Others**
- [#23862](https://github.com/apache/superset/pull/23862) chore: Use nh3 lib instead of bleach (@EugeneTorap)
- [#23965](https://github.com/apache/superset/pull/23965) chore: bump werkzeug and Flask (@dpgaspar)
- [#24033](https://github.com/apache/superset/pull/24033) chore: Update mypy and fix stubs issue (@EugeneTorap)
- [#24045](https://github.com/apache/superset/pull/24045) chore: Bump sqlparse to 0.4.4 (@EugeneTorap)
- [#24324](https://github.com/apache/superset/pull/24324) chore: rate limit requests (@betodealmeida)
### 2.1.2 (Wed Oct 18 16:59:30 2023 -0700)
**Database Migrations**
**Features**
**Fixes**
- [#25150](https://github.com/apache/superset/pull/25150) fix: Chart series limit doesn't work for some databases (@KSPT-taylorjohn)
- [#25014](https://github.com/apache/superset/pull/25014) fix: CTE queries with non-SELECT statements (@dpgaspar)
- [#24849](https://github.com/apache/superset/pull/24849) fix: validation errors appearing after ssh tunnel switch (@hughhhh)
- [#24196](https://github.com/apache/superset/pull/24196) fix: SSH Tunnel creation with dynamic form (@hughhhh)
- [#24821](https://github.com/apache/superset/pull/24821) fix: Allow chart import to update the dataset an existing chart points to (@jfrag1)
- [#24317](https://github.com/apache/superset/pull/24317) fix: update order of build for testing a release (@eschutho)
**Others**
- [#24826](https://github.com/apache/superset/pull/24826) chore: remove CssTemplate and Annotation access from gamma role (@lilykuang)
- [#23680](https://github.com/apache/superset/pull/23680) chore: bump wtforms and add missing flask-limiter (@dpgaspar)
- [#24758](https://github.com/apache/superset/pull/24758) chore(view_api): return application/json as content-type for api/v1/form_data endpoint (@zephyring)
### 2.1.1 (Sun Apr 23 15:44:21 2023 +0100)
**Database Migrations**

View File

@@ -61,9 +61,7 @@ ENV LANG=C.UTF-8 \
SUPERSET_HOME="/app/superset_home" \
SUPERSET_PORT=8088
RUN --mount=target=/var/lib/apt/lists,type=cache \
--mount=target=/var/cache/apt,type=cache \
mkdir -p ${PYTHONPATH} superset/static superset-frontend apache_superset.egg-info requirements \
RUN mkdir -p ${PYTHONPATH} superset/static superset-frontend apache_superset.egg-info requirements \
&& useradd --user-group -d ${SUPERSET_HOME} -m --no-log-init --shell /bin/bash superset \
&& apt-get update -qq && apt-get install -yqq --no-install-recommends \
build-essential \
@@ -75,7 +73,8 @@ RUN --mount=target=/var/lib/apt/lists,type=cache \
libecpg-dev \
libldap2-dev \
&& touch superset/static/version_info.json \
&& chown -R superset:superset ./*
&& chown -R superset:superset ./* \
&& rm -rf /var/lib/apt/lists/*
COPY --chown=superset:superset setup.py MANIFEST.in README.md ./
# setup.py uses the version information in package.json
@@ -112,9 +111,8 @@ ARG GECKODRIVER_VERSION=v0.33.0 \
USER root
RUN --mount=target=/var/lib/apt/lists,type=cache \
--mount=target=/var/cache/apt,type=cache \
apt-get install -yqq --no-install-recommends \
RUN apt-get update -qq \
&& apt-get install -yqq --no-install-recommends \
libnss3 \
libdbus-glib-1-2 \
libgtk-3-0 \
@@ -127,7 +125,7 @@ RUN --mount=target=/var/lib/apt/lists,type=cache \
# Install Firefox
&& wget -q https://download-installer.cdn.mozilla.net/pub/firefox/releases/${FIREFOX_VERSION}/linux-x86_64/en-US/firefox-${FIREFOX_VERSION}.tar.bz2 -O - | tar xfj - -C /opt \
&& ln -s /opt/firefox/firefox /usr/local/bin/firefox \
&& apt-get autoremove -yqq --purge wget && rm -rf /var/[log,tmp]/* /tmp/*
&& apt-get autoremove -yqq --purge wget && rm -rf /var/[log,tmp]/* /tmp/* /var/lib/apt/lists/*
# Cache everything for dev purposes...
RUN --mount=type=bind,target=./requirements/base.txt,src=./requirements/base.txt \
--mount=type=bind,target=./requirements/docker.txt,src=./requirements/docker.txt \

View File

@@ -22,18 +22,18 @@ under the License.
This file documents any backwards-incompatible changes in Superset and
assists people when migrating to a new version.
## Next
## 3.1.0
- [24657](https://github.com/apache/superset/pull/24657): Bumps the cryptography package to augment the OpenSSL security vulnerability.
### Breaking Changes
### Potential Downtime
### Other
- [24982](https://github.com/apache/superset/pull/24982): By default, physical datasets on Oracle-like dialects like Snowflake will now use denormalized column names. However, existing datasets won't be affected. To change this behavior, the "Advanced" section on the dataset modal has a "Normalize column names" flag which can be changed to change this behavior.
## 3.0.3
- [26034](https://github.com/apache/superset/issues/26034): Fixes a problem where numeric x-axes were being treated as categorical values. As a consequence of that, the way labels are displayed might change given that ECharts has a different treatment for numerical and categorical values. To revert to the old behavior, users need to manually convert numerical columns to text so that they are treated as categories. Check https://github.com/apache/superset/issues/26159 for more details.
## 3.0.0
- [25053](https://github.com/apache/superset/pull/25053): Extends the `ab_user.email` column from 64 to 320 characters which has an associated unique key constraint. This will be problematic for MySQL metadata databases which use the InnoDB storage engine with the `innodb_large_prefix` parameter disabled as the key prefix limit is 767 bytes. Enabling said parameter and ensuring that the table uses either the `DYNAMIC` or `COMPRESSED` row format should remedy the problem. See [here](https://dev.mysql.com/doc/refman/5.7/en/innodb-limits.html) for more details.

View File

@@ -15,7 +15,7 @@
# limitations under the License.
#
apiVersion: v2
appVersion: "3.0.1"
appVersion: "3.1.0"
description: Apache Superset is a modern, enterprise-ready business intelligence web application
name: superset
icon: https://artifacthub.io/image/68c1d717-0e97-491f-b046-754e46f46922@2x
@@ -29,7 +29,7 @@ maintainers:
- name: craig-rueda
email: craig@craigrueda.com
url: https://github.com/craig-rueda
version: 0.10.15
version: 0.12.1
dependencies:
- name: postgresql
version: 12.1.6

View File

@@ -23,7 +23,7 @@ NOTE: This file is generated by helm-docs: https://github.com/norwoodj/helm-docs
# superset
![Version: 0.10.15](https://img.shields.io/badge/Version-0.10.15-informational?style=flat-square)
![Version: 0.12.1](https://img.shields.io/badge/Version-0.12.1-informational?style=flat-square)
Apache Superset is a modern, enterprise-ready business intelligence web application
@@ -40,6 +40,12 @@ helm repo add superset http://apache.github.io/superset/
helm install my-superset superset/superset
```
Make sure you set your own `SECRET_KEY` to something unique and secret. This secret key is used by Flask for
securely signing the session cookie and will be used to encrypt sensitive data on Superset's metadata database.
It should be a long random bytes or str.
On helm this can be set on `extraSecretEnv.SUPERSET_SECRET_KEY` or `configOverrides.secrets`
## Requirements
| Repository | Name | Version |
@@ -124,6 +130,7 @@ helm install my-superset superset/superset
| supersetCeleryBeat.containerSecurityContext | object | `{}` | |
| supersetCeleryBeat.deploymentAnnotations | object | `{}` | Annotations to be added to supersetCeleryBeat deployment |
| supersetCeleryBeat.enabled | bool | `false` | This is only required if you intend to use alerts and reports |
| supersetCeleryBeat.extraContainers | list | `[]` | Launch additional containers into supersetCeleryBeat pods |
| supersetCeleryBeat.forceReload | bool | `false` | If true, forces deployment to reload on each upgrade |
| supersetCeleryBeat.initContainers | list | a container waiting for postgres | List of init containers |
| supersetCeleryBeat.podAnnotations | object | `{}` | Annotations to be added to supersetCeleryBeat pods |
@@ -136,6 +143,7 @@ helm install my-superset superset/superset
| supersetCeleryFlower.containerSecurityContext | object | `{}` | |
| supersetCeleryFlower.deploymentAnnotations | object | `{}` | Annotations to be added to supersetCeleryFlower deployment |
| supersetCeleryFlower.enabled | bool | `false` | Enables a Celery flower deployment (management UI to monitor celery jobs) WARNING: on superset 1.x, this requires a Superset image that has `flower<1.0.0` installed (which is NOT the case of the default images) flower>=1.0.0 requires Celery 5+ which Superset 1.5 does not support |
| supersetCeleryFlower.extraContainers | list | `[]` | Launch additional containers into supersetCeleryFlower pods |
| supersetCeleryFlower.initContainers | list | a container waiting for postgres and redis | List of init containers |
| supersetCeleryFlower.livenessProbe.failureThreshold | int | `3` | |
| supersetCeleryFlower.livenessProbe.httpGet.path | string | `"/api/workers"` | |
@@ -223,6 +231,7 @@ helm install my-superset superset/superset
| supersetWebsockets.containerSecurityContext | object | `{}` | |
| supersetWebsockets.deploymentAnnotations | object | `{}` | |
| supersetWebsockets.enabled | bool | `false` | This is only required if you intend to use `GLOBAL_ASYNC_QUERIES` in `ws` mode see https://github.com/apache/superset/blob/master/CONTRIBUTING.md#async-chart-queries |
| supersetWebsockets.extraContainers | list | `[]` | Launch additional containers into supersetWebsockets pods |
| supersetWebsockets.image.pullPolicy | string | `"IfNotPresent"` | |
| supersetWebsockets.image.repository | string | `"oneacrefund/superset-websocket"` | There is no official image (yet), this one is community-supported |
| supersetWebsockets.image.tag | string | `"latest"` | |

View File

@@ -39,6 +39,12 @@ helm repo add superset http://apache.github.io/superset/
helm install my-superset superset/superset
```
Make sure you set your own `SECRET_KEY` to something unique and secret. This secret key is used by Flask for
securely signing the session cookie and will be used to encrypt sensitive data on Superset's metadata database.
It should be a long random bytes or str.
On helm this can be set on `extraSecretEnv.SUPERSET_SECRET_KEY` or `configOverrides.secrets`
{{ template "chart.requirementsSection" . }}
{{ template "chart.valuesSection" . }}

View File

@@ -82,7 +82,6 @@ DATA_CACHE_CONFIG = CACHE_CONFIG
SQLALCHEMY_DATABASE_URI = f"postgresql+psycopg2://{env('DB_USER')}:{env('DB_PASS')}@{env('DB_HOST')}:{env('DB_PORT')}/{env('DB_NAME')}"
SQLALCHEMY_TRACK_MODIFICATIONS = True
SECRET_KEY = env('SECRET_KEY', 'thisISaSECRET_1234')
class CeleryConfig:
imports = ("superset.sql_lab", )

View File

@@ -120,6 +120,9 @@ spec:
{{- else }}
{{- toYaml .Values.resources | nindent 12 }}
{{- end }}
{{- if .Values.supersetCeleryBeat.extraContainers }}
{{- toYaml .Values.supersetCeleryBeat.extraContainers | nindent 8 }}
{{- end }}
{{- with .Values.nodeSelector }}
nodeSelector: {{- toYaml . | nindent 8 }}
{{- end }}

View File

@@ -115,6 +115,9 @@ spec:
{{- else }}
{{- toYaml .Values.resources | nindent 12 }}
{{- end }}
{{- if .Values.supersetCeleryFlower.extraContainers }}
{{- toYaml .Values.supersetCeleryFlower.extraContainers | nindent 8 }}
{{- end }}
{{- with .Values.nodeSelector }}
nodeSelector: {{- toYaml . | nindent 8 }}
{{- end }}

View File

@@ -114,6 +114,9 @@ spec:
{{- if .Values.supersetWebsockets.livenessProbe }}
livenessProbe: {{- .Values.supersetWebsockets.livenessProbe | toYaml | nindent 12 }}
{{- end }}
{{- if .Values.supersetWebsockets.extraContainers }}
{{- toYaml .Values.supersetWebsockets.extraContainers | nindent 8 }}
{{- end }}
{{- with .Values.nodeSelector }}
nodeSelector: {{- toYaml . | nindent 8 }}
{{- end }}

View File

@@ -63,7 +63,7 @@ spec:
name: {{ tpl .Values.envFromSecret . }}
{{- range .Values.envFromSecrets }}
- secretRef:
name: {{ tpl . $ }}
name: {{ tpl . $ | quote }}
{{- end }}
imagePullPolicy: {{ .Values.image.pullPolicy }}
{{- if .Values.init.containerSecurityContext }}

View File

@@ -93,6 +93,8 @@ extraSecretEnv: {}
# # Google API Keys: https://console.cloud.google.com/apis/credentials
# GOOGLE_KEY: ...
# GOOGLE_SECRET: ...
# # Generate your own secret key for encryption. Use openssl rand -base64 42 to generate a good key
# SUPERSET_SECRET_KEY: 'CHANGE_ME_TO_A_COMPLEX_RANDOM_SECRET'
# -- Extra files to mount on `/app/pythonpath`
extraConfigs: {}
@@ -163,8 +165,8 @@ configOverrides: {}
# # The default user self registration role
# AUTH_USER_REGISTRATION_ROLE = "Admin"
# secret: |
# # Generate your own secret key for encryption. Use openssl rand -base64 42 to generate a good key
# SECRET_KEY = 'YOUR_OWN_RANDOM_GENERATED_SECRET_KEY'
# # Generate your own secret key for encryption. Use `openssl rand -base64 42` to generate a good key
# SECRET_KEY = 'CHANGE_ME_TO_A_COMPLEX_RANDOM_SECRET'
# -- Same as above but the values are files
configOverridesFiles: {}
@@ -441,6 +443,8 @@ supersetCeleryBeat:
- /bin/sh
- -c
- dockerize -wait "tcp://$DB_HOST:$DB_PORT" -wait "tcp://$REDIS_HOST:$REDIS_PORT" -timeout 120s
# -- Launch additional containers into supersetCeleryBeat pods
extraContainers: []
# -- Annotations to be added to supersetCeleryBeat deployment
deploymentAnnotations: {}
# -- Affinity to be added to supersetCeleryBeat deployment
@@ -522,6 +526,8 @@ supersetCeleryFlower:
- /bin/sh
- -c
- dockerize -wait "tcp://$DB_HOST:$DB_PORT" -wait "tcp://$REDIS_HOST:$REDIS_PORT" -timeout 120s
# -- Launch additional containers into supersetCeleryFlower pods
extraContainers: []
# -- Annotations to be added to supersetCeleryFlower deployment
deploymentAnnotations: {}
# -- Affinity to be added to supersetCeleryFlower deployment
@@ -588,6 +594,8 @@ supersetWebsockets:
http: nil
command: []
resources: {}
# -- Launch additional containers into supersetWebsockets pods
extraContainers: []
deploymentAnnotations: {}
# -- Affinity to be added to supersetWebsockets deployment
affinity: {}

View File

@@ -17,3 +17,5 @@
# under the License.
#
-e file:.
urllib3>=1.26.18
numexpr>=2.9.0

View File

@@ -1,4 +1,4 @@
# SHA1:a9dde048f1ee1f00586264d726d0e89f16e56183
# SHA1:f8f2c882290c71f27b1d9f3263cf0c523cb88ad6
#
# This file is autogenerated by pip-compile-multi
# To update, run:
@@ -72,13 +72,11 @@ colorama==0.4.6
# via
# apache-superset
# flask-appbuilder
convertdate==2.4.0
# via holidays
cron-descriptor==1.2.24
# via apache-superset
croniter==1.0.15
# via apache-superset
cryptography==41.0.2
cryptography==42.0.4
# via
# apache-superset
# paramiko
@@ -90,7 +88,7 @@ dnspython==2.1.0
# via email-validator
email-validator==1.1.3
# via flask-appbuilder
exceptiongroup==1.1.1
exceptiongroup==1.2.0
# via cattrs
flask==2.2.5
# via
@@ -106,7 +104,7 @@ flask==2.2.5
# flask-session
# flask-sqlalchemy
# flask-wtf
flask-appbuilder==4.3.10
flask-appbuilder==4.4.1
# via apache-superset
flask-babel==1.0.0
# via flask-appbuilder
@@ -150,9 +148,7 @@ gunicorn==21.2.0
# via apache-superset
hashids==1.3.1
# via apache-superset
hijri-converter==2.3.1
# via holidays
holidays==0.23
holidays==0.25
# via apache-superset
humanize==3.11.0
# via apache-superset
@@ -215,8 +211,10 @@ nh3==0.2.11
# via apache-superset
numba==0.57.1
# via pandas
numexpr==2.8.4
# via pandas
numexpr==2.9.0
# via
# -r requirements/base.in
# pandas
numpy==1.23.5
# via
# apache-superset
@@ -238,8 +236,10 @@ packaging==23.1
# shillelagh
pandas[performance]==2.0.3
# via apache-superset
paramiko==2.11.0
# via sshtunnel
paramiko==3.4.0
# via
# apache-superset
# sshtunnel
parsedatetime==2.6
# via apache-superset
pgsanity==0.2.9
@@ -252,7 +252,7 @@ prison==0.2.1
# via flask-appbuilder
prompt-toolkit==3.0.38
# via click-repl
pyarrow==12.0.0
pyarrow==14.0.1
# via apache-superset
pycparser==2.20
# via cffi
@@ -263,8 +263,6 @@ pyjwt==2.4.0
# apache-superset
# flask-appbuilder
# flask-jwt-extended
pymeeus==0.5.12
# via convertdate
pynacl==1.5.0
# via paramiko
pyparsing==3.0.6
@@ -318,7 +316,6 @@ six==1.16.0
# via
# click-repl
# isodate
# paramiko
# prison
# python-dateutil
# url-normalize
@@ -338,6 +335,8 @@ sqlalchemy-utils==0.38.3
# via
# apache-superset
# flask-appbuilder
sqlglot==23.0.2
# via apache-superset
sqlparse==0.4.4
# via apache-superset
sshtunnel==0.4.0
@@ -355,8 +354,9 @@ tzdata==2023.3
# via pandas
url-normalize==1.4.3
# via requests-cache
urllib3==1.26.6
urllib3==1.26.18
# via
# -r requirements/base.in
# requests
# requests-cache
# selenium
@@ -371,6 +371,7 @@ werkzeug==2.3.3
# via
# apache-superset
# flask
# flask-appbuilder
# flask-jwt-extended
# flask-login
wrapt==1.15.0

View File

@@ -72,7 +72,7 @@ pexpect==4.8.0
# via ipython
pickleshare==0.7.5
# via ipython
pillow==9.5.0
pillow==10.2.0
# via apache-superset
progress==1.6
# via -r requirements/development.in

View File

@@ -15,6 +15,5 @@
# limitations under the License.
#
-r base.in
-e .[postgres]
gevent
-e .[postgres,gevent]
greenlet>=2.0.2

View File

@@ -1,4 +1,4 @@
# SHA1:439e3ee196ce81f342c935117ba5e0eeee8c385b
# SHA1:f00a57c70a52607d638c19f64f426f887382927e
#
# This file is autogenerated by pip-compile-multi
# To update, run:
@@ -10,8 +10,8 @@
# via
# -r requirements/base.in
# -r requirements/docker.in
gevent==22.10.2
# via -r requirements/docker.in
gevent==23.9.1
# via apache-superset
psycopg2-binary==2.9.6
# via apache-superset
zope-event==4.5.0

View File

@@ -20,6 +20,7 @@
docker
flask-testing
freezegun
grpcio>=1.55.3
openapi-spec-validator
parameterized
pyfakefs

View File

@@ -1,4 +1,4 @@
# SHA1:95300275481abb1413eb98a5c79fb7cf96814cdd
# SHA1:a37a1037f359c1101162ef43288178fbf00c487d
#
# This file is autogenerated by pip-compile-multi
# To update, run:
@@ -24,8 +24,6 @@ db-dtypes==1.1.1
# via pandas-gbq
docker==6.1.1
# via -r requirements/testing.in
ephem==4.1.4
# via lunarcalendar
flask-testing==0.8.1
# via -r requirements/testing.in
fonttools==4.39.4
@@ -70,12 +68,13 @@ googleapis-common-protos==1.59.0
# via
# google-api-core
# grpcio-status
grpcio==1.54.0
grpcio==1.60.1
# via
# -r requirements/testing.in
# google-api-core
# google-cloud-bigquery
# grpcio-status
grpcio-status==1.54.0
grpcio-status==1.60.1
# via google-api-core
iniconfig==2.0.0
# via pytest
@@ -83,8 +82,6 @@ jsonschema-spec==0.1.4
# via openapi-spec-validator
kiwisolver==1.4.4
# via matplotlib
lunarcalendar==0.0.9
# via prophet
matplotlib==3.7.1
# via prophet
oauthlib==3.2.2
@@ -101,7 +98,7 @@ pathable==0.4.3
# via jsonschema-spec
playwright==1.37.0
# via apache-superset
prophet==1.1.1
prophet==1.1.5
# via apache-superset
proto-plus==1.22.2
# via
@@ -138,8 +135,6 @@ rfc3339-validator==0.1.4
# via openapi-schema-validator
rsa==4.9
# via google-auth
setuptools-git==1.2
# via prophet
sqlalchemy-bigquery==1.6.1
# via apache-superset
statsd==4.0.1
@@ -148,7 +143,7 @@ tqdm==4.65.0
# via
# cmdstanpy
# prophet
trino==0.324.0
trino==0.328.0
# via apache-superset
tzlocal==4.3
# via trino

View File

@@ -80,10 +80,10 @@ setup(
"colorama",
"croniter>=0.3.28",
"cron-descriptor",
"cryptography>=41.0.2, <41.1.0",
"cryptography>=42.0.4, <43.0.0",
"deprecation>=2.1.0, <2.2.0",
"flask>=2.2.5, <3.0.0",
"flask-appbuilder>=4.3.10, <5.0.0",
"flask-appbuilder>=4.4.1, <5.0.0",
"flask-caching>=2.1.0, <3",
"flask-compress>=1.13, <2.0",
"flask-talisman>=1.0.0, <2.0",
@@ -95,7 +95,7 @@ setup(
"geopy",
"gunicorn>=21.2.0, <22.0; sys_platform != 'win32'",
"hashids>=1.3.1, <2",
"holidays>=0.23, <0.24",
"holidays>=0.25, <0.26",
"humanize",
"importlib_metadata",
"isodate",
@@ -107,13 +107,14 @@ setup(
"packaging",
"pandas[performance]>=2.0.3, <2.1",
"parsedatetime",
"paramiko>=3.4.0",
"pgsanity",
"polyline>=2.0.0, <3.0",
"pyparsing>=3.0.6, <4",
"python-dateutil",
"python-dotenv",
"python-geohash",
"pyarrow>=12.0.0, <13",
"pyarrow>=14.0.1, <15",
"pyyaml>=6.0.0, <7.0.0",
"PyJWT>=2.4.0, <3.0",
"redis>=4.5.4, <5.0",
@@ -125,6 +126,7 @@ setup(
"slack_sdk>=3.19.0, <4",
"sqlalchemy>=1.4, <2",
"sqlalchemy-utils>=0.38.3, <0.39",
"sqlglot>=23.0.2,<24",
"sqlparse>=0.4.4, <0.5",
"tabulate>=0.8.9, <0.9",
"typing-extensions>=4, <5",
@@ -146,15 +148,16 @@ setup(
"cockroachdb": ["cockroachdb>=0.3.5, <0.4"],
"cors": ["flask-cors>=2.0.0"],
"crate": ["crate[sqlalchemy]>=0.26.0, <0.27"],
"databend": ["databend-sqlalchemy>=0.3.2, <1.0"],
"databricks": [
"databricks-sql-connector>=2.0.2, <3",
"sqlalchemy-databricks>=0.2.0",
],
"db2": ["ibm-db-sa>=0.3.5, <0.4"],
"db2": ["ibm-db-sa>0.3.8, <=0.4.0"],
"dremio": ["sqlalchemy-dremio>=1.1.5, <1.3"],
"drill": ["sqlalchemy-drill==0.1.dev"],
"drill": ["sqlalchemy-drill>=1.1.4, <2"],
"druid": ["pydruid>=0.6.5,<0.7"],
"duckdb": ["duckdb-engine==0.9.2"],
"duckdb": ["duckdb-engine>=0.9.5, <0.10"],
"dynamodb": ["pydynamodb>=0.4.2"],
"solr": ["sqlalchemy-solr >= 0.2.0"],
"elasticsearch": ["elasticsearch-dbapi>=0.2.9, <0.3.0"],
@@ -162,6 +165,7 @@ setup(
"excel": ["xlrd>=1.2.0, <1.3"],
"firebird": ["sqlalchemy-firebird>=0.7.0, <0.8"],
"firebolt": ["firebolt-sqlalchemy>=0.0.1"],
"gevent": ["gevent>=23.9.1"],
"gsheets": ["shillelagh[gsheetsapi]>=1.2.10, <2"],
"hana": ["hdbcli==2.4.162", "sqlalchemy_hana==0.4.0"],
"hive": [
@@ -186,22 +190,22 @@ setup(
"playwright": ["playwright>=1.37.0, <2"],
"postgres": ["psycopg2-binary==2.9.6"],
"presto": ["pyhive[presto]>=0.6.5"],
"trino": ["trino>=0.324.0"],
"prophet": ["prophet==1.1.1"],
"redshift": ["sqlalchemy-redshift>=0.8.1, < 0.9"],
"rockset": ["rockset-sqlalchemy>=0.0.1, <1.0.0"],
"trino": ["trino>=0.328.0"],
"prophet": ["prophet>=1.1.5, <2"],
"redshift": ["sqlalchemy-redshift>=0.8.1, <0.9"],
"rockset": ["rockset-sqlalchemy>=0.0.1, <1"],
"shillelagh": [
"shillelagh[datasetteapi,gsheetsapi,socrata,weatherapi]>=1.2.10, <2"
],
"snowflake": ["snowflake-sqlalchemy>=1.2.4, <2"],
"spark": [
"pyhive[hive]>=0.6.5;python_version<'3.11'",
"pyhive[hive_pure_sasl]>=0.7.0",
"pyhive[hive_pure_sasl]>=0.7",
"tableschema",
"thrift>=0.14.1, <1.0.0",
"thrift>=0.14.1, <1",
],
"teradata": ["teradatasql>=16.20.0.23"],
"thumbnails": ["Pillow>=9.5.0, <10.0.0"],
"thumbnails": ["Pillow>=10.0.1, <11"],
"vertica": ["sqlalchemy-vertica-python>=0.5.9, < 0.6"],
"netezza": ["nzalchemy>=11.0.2"],
"starrocks": ["starrocks>=1.0.0"],

View File

@@ -29,10 +29,9 @@ describe('Alert list view', () => {
cy.getBySel('sort-header').eq(2).contains('Name');
cy.getBySel('sort-header').eq(3).contains('Schedule');
cy.getBySel('sort-header').eq(4).contains('Notification method');
cy.getBySel('sort-header').eq(5).contains('Created by');
cy.getBySel('sort-header').eq(6).contains('Owners');
cy.getBySel('sort-header').eq(7).contains('Modified');
cy.getBySel('sort-header').eq(8).contains('Active');
cy.getBySel('sort-header').eq(5).contains('Owners');
cy.getBySel('sort-header').eq(6).contains('Last modified');
cy.getBySel('sort-header').eq(7).contains('Active');
// TODO Cypress won't recognize the Actions column
// cy.getBySel('sort-header').eq(9).contains('Actions');
});

View File

@@ -29,10 +29,9 @@ describe('Report list view', () => {
cy.getBySel('sort-header').eq(2).contains('Name');
cy.getBySel('sort-header').eq(3).contains('Schedule');
cy.getBySel('sort-header').eq(4).contains('Notification method');
cy.getBySel('sort-header').eq(5).contains('Created by');
cy.getBySel('sort-header').eq(6).contains('Owners');
cy.getBySel('sort-header').eq(7).contains('Modified');
cy.getBySel('sort-header').eq(8).contains('Active');
cy.getBySel('sort-header').eq(5).contains('Owners');
cy.getBySel('sort-header').eq(6).contains('Last modified');
cy.getBySel('sort-header').eq(7).contains('Active');
// TODO Cypress won't recognize the Actions column
// cy.getBySel('sort-header').eq(9).contains('Actions');
});

View File

@@ -35,14 +35,14 @@ describe('Charts filters', () => {
setFilter('Owner', 'admin user');
});
it('should allow filtering by "Created by" correctly', () => {
setFilter('Created by', 'alpha user');
setFilter('Created by', 'admin user');
it('should allow filtering by "Modified by" correctly', () => {
setFilter('Modified by', 'alpha user');
setFilter('Modified by', 'admin user');
});
it('should allow filtering by "Chart type" correctly', () => {
setFilter('Chart type', 'Area Chart (legacy)');
setFilter('Chart type', 'Bubble Chart');
it('should allow filtering by "Type" correctly', () => {
setFilter('Type', 'Area Chart (legacy)');
setFilter('Type', 'Bubble Chart');
});
it('should allow filtering by "Dataset" correctly', () => {
@@ -51,7 +51,7 @@ describe('Charts filters', () => {
});
it('should allow filtering by "Dashboards" correctly', () => {
setFilter('Dashboards', 'Unicode Test');
setFilter('Dashboards', 'Tabbed Dashboard');
setFilter('Dashboard', 'Unicode Test');
setFilter('Dashboard', 'Tabbed Dashboard');
});
});

View File

@@ -109,14 +109,12 @@ describe('Charts list', () => {
it('should load rows in list mode', () => {
cy.getBySel('listview-table').should('be.visible');
cy.getBySel('sort-header').eq(1).contains('Chart');
cy.getBySel('sort-header').eq(2).contains('Visualization type');
cy.getBySel('sort-header').eq(1).contains('Name');
cy.getBySel('sort-header').eq(2).contains('Type');
cy.getBySel('sort-header').eq(3).contains('Dataset');
// cy.getBySel('sort-header').eq(4).contains('Dashboards added to');
cy.getBySel('sort-header').eq(4).contains('Modified by');
cy.getBySel('sort-header').eq(4).contains('Owners');
cy.getBySel('sort-header').eq(5).contains('Last modified');
cy.getBySel('sort-header').eq(6).contains('Created by');
cy.getBySel('sort-header').eq(7).contains('Actions');
cy.getBySel('sort-header').eq(6).contains('Actions');
});
it('should sort correctly in list mode', () => {
@@ -175,6 +173,13 @@ describe('Charts list', () => {
orderAlphabetical();
cy.getBySel('styled-card').first().contains('% Rural');
});
it('should preserve other filters when sorting', () => {
cy.getBySel('styled-card').should('have.length', 25);
setFilter('Type', 'Big Number');
setFilter('Sort', 'Least recently modified');
cy.getBySel('styled-card').should('have.length', 3);
});
});
describe('common actions', () => {

View File

@@ -113,7 +113,7 @@ function prepareDashboardFilters(
},
type: 'NATIVE_FILTER',
description: '',
chartsInScope: [6],
chartsInScope: [5],
tabsInScope: [],
});
});
@@ -150,7 +150,7 @@ function prepareDashboardFilters(
meta: {
width: 4,
height: 50,
chartId: 6,
chartId: 5,
sliceName: 'Most Populated Countries',
},
},

View File

@@ -25,7 +25,6 @@ import { TABBED_DASHBOARD } from 'cypress/utils/urls';
import { expandFilterOnLeftPanel } from './utils';
const TREEMAP = { name: 'Treemap', viz: 'treemap_v2' };
const FILTER_BOX = { name: 'Region Filter', viz: 'filter_box' };
const LINE_CHART = { name: 'Growth Rate', viz: 'line' };
const BOX_PLOT = { name: 'Box plot', viz: 'box_plot' };
const BIG_NUMBER = { name: 'Number of Girls', viz: 'big_number_total' };
@@ -41,7 +40,6 @@ function topLevelTabs() {
function resetTabs() {
topLevelTabs();
cy.get('@top-level-tabs').first().click();
waitForChartLoad(FILTER_BOX);
waitForChartLoad(TREEMAP);
waitForChartLoad(BIG_NUMBER);
waitForChartLoad(TABLE);
@@ -96,7 +94,6 @@ describe('Dashboard tabs', () => {
it.skip('should send new queries when tab becomes visible', () => {
// landing in first tab
waitForChartLoad(FILTER_BOX);
waitForChartLoad(TREEMAP);
getChartAliasBySpec(TREEMAP).then(treemapAlias => {

View File

@@ -23,7 +23,6 @@ import { ChartSpec, waitForChartLoad } from 'cypress/utils';
export const WORLD_HEALTH_CHARTS = [
{ name: '% Rural', viz: 'world_map' },
{ name: 'Most Populated Countries', viz: 'table' },
{ name: 'Region Filter', viz: 'filter_box' },
{ name: "World's Population", viz: 'big_number' },
{ name: 'Growth Rate', viz: 'line' },
{ name: 'Rural Breakdown', viz: 'sunburst' },

View File

@@ -35,9 +35,9 @@ describe('Dashboards filters', () => {
setFilter('Owner', 'admin user');
});
it('should allow filtering by "Created by" correctly', () => {
setFilter('Created by', 'alpha user');
setFilter('Created by', 'admin user');
it('should allow filtering by "Modified by" correctly', () => {
setFilter('Modified by', 'alpha user');
setFilter('Modified by', 'admin user');
});
it('should allow filtering by "Status" correctly', () => {

View File

@@ -54,13 +54,11 @@ describe('Dashboards list', () => {
it('should load rows in list mode', () => {
cy.getBySel('listview-table').should('be.visible');
cy.getBySel('sort-header').eq(1).contains('Title');
cy.getBySel('sort-header').eq(2).contains('Modified by');
cy.getBySel('sort-header').eq(3).contains('Status');
cy.getBySel('sort-header').eq(4).contains('Modified');
cy.getBySel('sort-header').eq(5).contains('Created by');
cy.getBySel('sort-header').eq(6).contains('Owners');
cy.getBySel('sort-header').eq(7).contains('Actions');
cy.getBySel('sort-header').eq(1).contains('Name');
cy.getBySel('sort-header').eq(2).contains('Status');
cy.getBySel('sort-header').eq(3).contains('Owners');
cy.getBySel('sort-header').eq(4).contains('Last modified');
cy.getBySel('sort-header').eq(5).contains('Actions');
});
it('should sort correctly in list mode', () => {
@@ -119,6 +117,13 @@ describe('Dashboards list', () => {
orderAlphabetical();
cy.getBySel('styled-card').first().contains('Supported Charts Dashboard');
});
it('should preserve other filters when sorting', () => {
cy.getBySel('styled-card').should('have.length', 5);
setFilter('Status', 'Published');
setFilter('Sort', 'Least recently modified');
cy.getBySel('styled-card').should('have.length', 3);
});
});
describe('common actions', () => {

View File

@@ -18,7 +18,7 @@
*/
import '@cypress/code-coverage/support';
import '@applitools/eyes-cypress/commands';
import failOnConsoleError, { Config } from 'cypress-fail-on-console-error';
import failOnConsoleError from 'cypress-fail-on-console-error';
require('cy-verify-downloads').addCustomCommand();

View File

@@ -1,12 +1,12 @@
{
"name": "superset",
"version": "0.0.0-dev",
"version": "3.1.1",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "superset",
"version": "0.0.0-dev",
"version": "3.1.1",
"license": "Apache-2.0",
"workspaces": [
"packages/*",
@@ -186,6 +186,7 @@
"@testing-library/react-hooks": "^5.0.3",
"@testing-library/user-event": "^12.7.0",
"@types/classnames": "^2.2.10",
"@types/dom-to-image": "^2.6.7",
"@types/enzyme": "^3.10.5",
"@types/enzyme-adapter-react-16": "^1.0.6",
"@types/fetch-mock": "^7.3.2",
@@ -220,7 +221,6 @@
"babel-plugin-dynamic-import-node": "^2.3.3",
"babel-plugin-jsx-remove-data-test-id": "^2.1.3",
"babel-plugin-lodash": "^3.3.4",
"chromatic": "^6.7.4",
"copy-webpack-plugin": "^9.1.0",
"cross-env": "^5.2.1",
"css-loader": "^6.8.1",
@@ -5345,6 +5345,11 @@
"csstype": "^2.5.7"
}
},
"node_modules/@emotion/serialize/node_modules/csstype": {
"version": "2.6.21",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz",
"integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w=="
},
"node_modules/@emotion/sheet": {
"version": "0.9.4",
"resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-0.9.4.tgz",
@@ -19248,6 +19253,12 @@
"@types/ms": "*"
}
},
"node_modules/@types/dom-to-image": {
"version": "2.6.7",
"resolved": "https://registry.npmjs.org/@types/dom-to-image/-/dom-to-image-2.6.7.tgz",
"integrity": "sha512-me5VbCv+fcXozblWwG13krNBvuEOm6kA5xoa4RrjDJCNFOZSWR3/QLtOXimBHk1Fisq69Gx3JtOoXtg1N1tijg==",
"dev": true
},
"node_modules/@types/enzyme": {
"version": "3.10.10",
"resolved": "https://registry.npmjs.org/@types/enzyme/-/enzyme-3.10.10.tgz",
@@ -19609,8 +19620,7 @@
"node_modules/@types/raf": {
"version": "3.4.2",
"resolved": "https://registry.npmjs.org/@types/raf/-/raf-3.4.2.tgz",
"integrity": "sha512-sM4HyDVlDFl4goOXPF+g9nNHJFZQGot+HgySjM4cRjqXzjdatcEvYrtG4Ia8XumR9T6k8G2tW9B7hnUj51Uf0A==",
"optional": true
"integrity": "sha512-sM4HyDVlDFl4goOXPF+g9nNHJFZQGot+HgySjM4cRjqXzjdatcEvYrtG4Ia8XumR9T6k8G2tW9B7hnUj51Uf0A=="
},
"node_modules/@types/range-parser": {
"version": "1.2.4",
@@ -19766,6 +19776,11 @@
"@types/react": "*"
}
},
"node_modules/@types/react/node_modules/csstype": {
"version": "2.6.21",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz",
"integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w=="
},
"node_modules/@types/redux-localstorage": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/@types/redux-localstorage/-/redux-localstorage-1.0.8.tgz",
@@ -23887,7 +23902,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
"integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==",
"optional": true,
"engines": {
"node": ">= 0.6.0"
}
@@ -25033,7 +25047,6 @@
"version": "3.0.10",
"resolved": "https://registry.npmjs.org/canvg/-/canvg-3.0.10.tgz",
"integrity": "sha512-qwR2FRNO9NlzTeKIPIKpnTY6fqwuYSequ8Ru8c0YkYU7U0oW+hLUvWadLvAu1Rl72OMNiFhoLu4f8eUjQ7l/+Q==",
"optional": true,
"dependencies": {
"@babel/runtime": "^7.12.5",
"@types/raf": "^3.4.0",
@@ -25305,21 +25318,6 @@
"resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
"integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
},
"node_modules/chromatic": {
"version": "6.7.4",
"resolved": "https://registry.npmjs.org/chromatic/-/chromatic-6.7.4.tgz",
"integrity": "sha512-QW4i8RQsON0JVnFnRf+8y70aIJptvC0Oi/26YJ669Dl03WmJRpobNO5qWFPTiv3KFKMc1Qf6/qFsRVZCtn+bfA==",
"dev": true,
"dependencies": {
"@discoveryjs/json-ext": "^0.5.7",
"@types/webpack-env": "^1.17.0"
},
"bin": {
"chroma": "bin/main.cjs",
"chromatic": "bin/main.cjs",
"chromatic-cli": "bin/main.cjs"
}
},
"node_modules/chrome-trace-event": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz",
@@ -27025,7 +27023,6 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.1.0.tgz",
"integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==",
"optional": true,
"dependencies": {
"utrie": "^1.0.2"
}
@@ -28060,11 +28057,6 @@
"integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
"dev": true
},
"node_modules/csstype": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.9.tgz",
"integrity": "sha512-xz39Sb4+OaTsULgUERcCk+TJj8ylkL4aSVDQiX/ksxbELSqwkgt4d4RD7fovIdgJGSuNYqwZEiVjYY5l0ask+Q=="
},
"node_modules/currencyformatter.js": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/currencyformatter.js/-/currencyformatter.js-1.0.5.tgz",
@@ -29511,9 +29503,9 @@
"license": "MIT"
},
"node_modules/dom-to-image-more": {
"version": "2.10.1",
"resolved": "https://registry.npmjs.org/dom-to-image-more/-/dom-to-image-more-2.10.1.tgz",
"integrity": "sha512-gMG28V47WGj5/xvrsbSPJAWSaV7CBh4teLErn1iGD1sa29HsFsHxvnoLj8VxVvfqnjPgsiUGs2IV2VAxLJGb+A=="
"version": "2.16.0",
"resolved": "https://registry.npmjs.org/dom-to-image-more/-/dom-to-image-more-2.16.0.tgz",
"integrity": "sha512-RyjtkaM/zVy90uJ20lT+/G7MwBZx6l/ePliq5CQOeAnPeew7aUGS6IqRWBkHpstU+POmhaKA8A9H9qf476gisQ=="
},
"node_modules/dom-to-pdf": {
"version": "0.3.2",
@@ -35234,7 +35226,6 @@
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.4.1.tgz",
"integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==",
"optional": true,
"dependencies": {
"css-line-break": "^2.1.0",
"text-segmentation": "^1.0.3"
@@ -40306,13 +40297,13 @@
"@babel/runtime": "^7.14.0",
"atob": "^2.1.2",
"btoa": "^1.2.1",
"fflate": "^0.4.8"
"canvg": "^3.0.6",
"fflate": "^0.4.8",
"html2canvas": "^1.0.0-rc.5"
},
"optionalDependencies": {
"canvg": "^3.0.6",
"core-js": "^3.6.0",
"dompurify": "^2.2.0",
"html2canvas": "^1.0.0-rc.5"
"dompurify": "^2.2.0"
}
},
"node_modules/jsprim": {
@@ -52119,6 +52110,11 @@
"@emotion/weak-memoize": "0.2.5"
}
},
"node_modules/react-select/node_modules/csstype": {
"version": "2.6.21",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz",
"integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w=="
},
"node_modules/react-select/node_modules/dom-helpers": {
"version": "5.1.4",
"resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.1.4.tgz",
@@ -54150,7 +54146,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/rgbcolor/-/rgbcolor-1.0.1.tgz",
"integrity": "sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw==",
"optional": true,
"engines": {
"node": ">= 0.8.15"
}
@@ -55552,7 +55547,6 @@
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/stackblur-canvas/-/stackblur-canvas-2.6.0.tgz",
"integrity": "sha512-8S1aIA+UoF6erJYnglGPug6MaHYGo1Ot7h5fuXx4fUPvcvQfcdw2o/ppCse63+eZf8PPidSu4v1JnmEVtEDnpg==",
"optional": true,
"engines": {
"node": ">=0.1.14"
}
@@ -56276,7 +56270,6 @@
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/svg-pathdata/-/svg-pathdata-6.0.3.tgz",
"integrity": "sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==",
"optional": true,
"engines": {
"node": ">=12.0.0"
}
@@ -57117,7 +57110,6 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/text-segmentation/-/text-segmentation-1.0.3.tgz",
"integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==",
"optional": true,
"dependencies": {
"utrie": "^1.0.2"
}
@@ -58646,7 +58638,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/utrie/-/utrie-1.0.2.tgz",
"integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==",
"optional": true,
"dependencies": {
"base64-arraybuffer": "^1.0.2"
}
@@ -62011,7 +62002,7 @@
"@types/rison": "0.0.6",
"@types/seedrandom": "^2.4.28",
"@vx/responsive": "^0.0.199",
"csstype": "^2.6.4",
"csstype": "^3.1.3",
"d3-format": "^1.3.2",
"d3-interpolate": "^1.4.0",
"d3-scale": "^3.0.0",
@@ -62105,6 +62096,11 @@
"resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.0.tgz",
"integrity": "sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg=="
},
"packages/superset-ui-core/node_modules/csstype": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
},
"packages/superset-ui-core/node_modules/d3-array": {
"version": "2.12.1",
"resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz",
@@ -67627,6 +67623,13 @@
"@emotion/unitless": "0.7.5",
"@emotion/utils": "0.11.3",
"csstype": "^2.5.7"
},
"dependencies": {
"csstype": {
"version": "2.6.21",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz",
"integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w=="
}
}
},
"@emotion/sheet": {
@@ -77229,7 +77232,7 @@
"@types/rison": "0.0.6",
"@types/seedrandom": "^2.4.28",
"@vx/responsive": "^0.0.199",
"csstype": "^2.6.4",
"csstype": "^3.1.3",
"d3-format": "^1.3.2",
"d3-interpolate": "^1.4.0",
"d3-scale": "^3.0.0",
@@ -77284,6 +77287,11 @@
"resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.0.tgz",
"integrity": "sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg=="
},
"csstype": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
},
"d3-array": {
"version": "2.12.1",
"resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz",
@@ -79208,6 +79216,12 @@
"@types/ms": "*"
}
},
"@types/dom-to-image": {
"version": "2.6.7",
"resolved": "https://registry.npmjs.org/@types/dom-to-image/-/dom-to-image-2.6.7.tgz",
"integrity": "sha512-me5VbCv+fcXozblWwG13krNBvuEOm6kA5xoa4RrjDJCNFOZSWR3/QLtOXimBHk1Fisq69Gx3JtOoXtg1N1tijg==",
"dev": true
},
"@types/enzyme": {
"version": "3.10.10",
"resolved": "https://registry.npmjs.org/@types/enzyme/-/enzyme-3.10.10.tgz",
@@ -79568,8 +79582,7 @@
"@types/raf": {
"version": "3.4.2",
"resolved": "https://registry.npmjs.org/@types/raf/-/raf-3.4.2.tgz",
"integrity": "sha512-sM4HyDVlDFl4goOXPF+g9nNHJFZQGot+HgySjM4cRjqXzjdatcEvYrtG4Ia8XumR9T6k8G2tW9B7hnUj51Uf0A==",
"optional": true
"integrity": "sha512-sM4HyDVlDFl4goOXPF+g9nNHJFZQGot+HgySjM4cRjqXzjdatcEvYrtG4Ia8XumR9T6k8G2tW9B7hnUj51Uf0A=="
},
"@types/range-parser": {
"version": "1.2.4",
@@ -79584,6 +79597,13 @@
"requires": {
"@types/prop-types": "*",
"csstype": "^2.2.0"
},
"dependencies": {
"csstype": {
"version": "2.6.21",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz",
"integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w=="
}
}
},
"@types/react-dom": {
@@ -82981,8 +83001,7 @@
"base64-arraybuffer": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
"integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==",
"optional": true
"integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ=="
},
"base64-js": {
"version": "1.5.1",
@@ -83843,7 +83862,6 @@
"version": "3.0.10",
"resolved": "https://registry.npmjs.org/canvg/-/canvg-3.0.10.tgz",
"integrity": "sha512-qwR2FRNO9NlzTeKIPIKpnTY6fqwuYSequ8Ru8c0YkYU7U0oW+hLUvWadLvAu1Rl72OMNiFhoLu4f8eUjQ7l/+Q==",
"optional": true,
"requires": {
"@babel/runtime": "^7.12.5",
"@types/raf": "^3.4.0",
@@ -84050,16 +84068,6 @@
"resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
"integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
},
"chromatic": {
"version": "6.7.4",
"resolved": "https://registry.npmjs.org/chromatic/-/chromatic-6.7.4.tgz",
"integrity": "sha512-QW4i8RQsON0JVnFnRf+8y70aIJptvC0Oi/26YJ669Dl03WmJRpobNO5qWFPTiv3KFKMc1Qf6/qFsRVZCtn+bfA==",
"dev": true,
"requires": {
"@discoveryjs/json-ext": "^0.5.7",
"@types/webpack-env": "^1.17.0"
}
},
"chrome-trace-event": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz",
@@ -85456,7 +85464,6 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.1.0.tgz",
"integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==",
"optional": true,
"requires": {
"utrie": "^1.0.2"
}
@@ -86148,11 +86155,6 @@
}
}
},
"csstype": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.9.tgz",
"integrity": "sha512-xz39Sb4+OaTsULgUERcCk+TJj8ylkL4aSVDQiX/ksxbELSqwkgt4d4RD7fovIdgJGSuNYqwZEiVjYY5l0ask+Q=="
},
"currencyformatter.js": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/currencyformatter.js/-/currencyformatter.js-1.0.5.tgz",
@@ -87324,9 +87326,9 @@
"from": "dom-to-image@git+https://github.com/dmapper/dom-to-image.git"
},
"dom-to-image-more": {
"version": "2.10.1",
"resolved": "https://registry.npmjs.org/dom-to-image-more/-/dom-to-image-more-2.10.1.tgz",
"integrity": "sha512-gMG28V47WGj5/xvrsbSPJAWSaV7CBh4teLErn1iGD1sa29HsFsHxvnoLj8VxVvfqnjPgsiUGs2IV2VAxLJGb+A=="
"version": "2.16.0",
"resolved": "https://registry.npmjs.org/dom-to-image-more/-/dom-to-image-more-2.16.0.tgz",
"integrity": "sha512-RyjtkaM/zVy90uJ20lT+/G7MwBZx6l/ePliq5CQOeAnPeew7aUGS6IqRWBkHpstU+POmhaKA8A9H9qf476gisQ=="
},
"dom-to-pdf": {
"version": "0.3.2",
@@ -91697,7 +91699,6 @@
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.4.1.tgz",
"integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==",
"optional": true,
"requires": {
"css-line-break": "^2.1.0",
"text-segmentation": "^1.0.3"
@@ -104593,6 +104594,11 @@
"@emotion/weak-memoize": "0.2.5"
}
},
"csstype": {
"version": "2.6.21",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz",
"integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w=="
},
"dom-helpers": {
"version": "5.1.4",
"resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.1.4.tgz",
@@ -106124,8 +106130,7 @@
"rgbcolor": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/rgbcolor/-/rgbcolor-1.0.1.tgz",
"integrity": "sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw==",
"optional": true
"integrity": "sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw=="
},
"rimraf": {
"version": "3.0.2",
@@ -107282,8 +107287,7 @@
"stackblur-canvas": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/stackblur-canvas/-/stackblur-canvas-2.6.0.tgz",
"integrity": "sha512-8S1aIA+UoF6erJYnglGPug6MaHYGo1Ot7h5fuXx4fUPvcvQfcdw2o/ppCse63+eZf8PPidSu4v1JnmEVtEDnpg==",
"optional": true
"integrity": "sha512-8S1aIA+UoF6erJYnglGPug6MaHYGo1Ot7h5fuXx4fUPvcvQfcdw2o/ppCse63+eZf8PPidSu4v1JnmEVtEDnpg=="
},
"stackframe": {
"version": "1.2.1",
@@ -107830,8 +107834,7 @@
"svg-pathdata": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/svg-pathdata/-/svg-pathdata-6.0.3.tgz",
"integrity": "sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==",
"optional": true
"integrity": "sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw=="
},
"svgo": {
"version": "3.0.2",
@@ -108442,7 +108445,6 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/text-segmentation/-/text-segmentation-1.0.3.tgz",
"integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==",
"optional": true,
"requires": {
"utrie": "^1.0.2"
}
@@ -109544,7 +109546,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/utrie/-/utrie-1.0.2.tgz",
"integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==",
"optional": true,
"requires": {
"base64-arraybuffer": "^1.0.2"
}

View File

@@ -1,6 +1,6 @@
{
"name": "superset",
"version": "0.0.0-dev",
"version": "3.1.3",
"description": "Superset is a data exploration platform designed to be visual, intuitive, and interactive.",
"keywords": [
"big",
@@ -44,7 +44,6 @@
"build-instrumented": "cross-env NODE_ENV=production BABEL_ENV=instrumented webpack --mode=production --color",
"build-storybook": "build-storybook",
"check-translation": "prettier --check ../superset/translations/**/LC_MESSAGES/*.json",
"chromatic": "npx chromatic --skip 'dependabot/**' --only-changed",
"clean-translation": "prettier --write ../superset/translations/**/LC_MESSAGES/*.json",
"core:cover": "cross-env NODE_ENV=test jest --coverage --coverageThreshold='{\"global\":{\"statements\":100,\"branches\":100,\"functions\":100,\"lines\":100}}' --collectCoverageFrom='[\"packages/**/src/**/*.{js,ts}\", \"!packages/superset-ui-demo/**/*\"]' packages",
"cover": "cross-env NODE_ENV=test jest --coverage",
@@ -56,7 +55,6 @@
"plugins:build": "node ./scripts/build.js",
"plugins:build-assets": "node ./scripts/copyAssets.js",
"plugins:build-storybook": "cd packages/superset-ui-demo && npm run build-storybook",
"plugins:chromatic": "cd packages/superset-ui-demo && npm run chromatic",
"plugins:create-conventional-version": "npm run prune && lerna version --conventional-commits --create-release github --no-private --yes",
"plugins:create-minor-version": "npm run prune && lerna version minor --no-private --yes",
"plugins:create-patch-version": "npm run prune && lerna version patch --no-private --yes",
@@ -251,6 +249,7 @@
"@testing-library/react-hooks": "^5.0.3",
"@testing-library/user-event": "^12.7.0",
"@types/classnames": "^2.2.10",
"@types/dom-to-image": "^2.6.7",
"@types/enzyme": "^3.10.5",
"@types/enzyme-adapter-react-16": "^1.0.6",
"@types/fetch-mock": "^7.3.2",
@@ -285,7 +284,6 @@
"babel-plugin-dynamic-import-node": "^2.3.3",
"babel-plugin-jsx-remove-data-test-id": "^2.1.3",
"babel-plugin-lodash": "^3.3.4",
"chromatic": "^6.7.4",
"copy-webpack-plugin": "^9.1.0",
"cross-env": "^5.2.1",
"css-loader": "^6.8.1",

View File

@@ -17,15 +17,16 @@
* under the License.
*/
import {
t,
QueryMode,
DTTM_ALIAS,
GenericDataType,
QueryColumn,
DatasourceType,
QueryMode,
t,
} from '@superset-ui/core';
import { ColumnMeta, SortSeriesData, SortSeriesType } from './types';
export const DEFAULT_MAX_ROW = 100000;
// eslint-disable-next-line import/prefer-default-export
export const TIME_FILTER_LABELS = {
time_range: t('Time Range'),
@@ -41,6 +42,7 @@ export const COLUMN_NAME_ALIASES: Record<string, string> = {
export const DATASET_TIME_COLUMN_OPTION: ColumnMeta = {
verbose_name: COLUMN_NAME_ALIASES[DTTM_ALIAS],
column_name: DTTM_ALIAS,
type: 'TIMESTAMP',
type_generic: GenericDataType.TEMPORAL,
description: t(
'A reference to the [Time] configuration, taking granularity into account',
@@ -49,8 +51,9 @@ export const DATASET_TIME_COLUMN_OPTION: ColumnMeta = {
export const QUERY_TIME_COLUMN_OPTION: QueryColumn = {
column_name: DTTM_ALIAS,
type: DatasourceType.Query,
is_dttm: false,
is_dttm: true,
type: 'TIMESTAMP',
type_generic: GenericDataType.TEMPORAL,
};
export const QueryModeLabel = {

View File

@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
import { DatasourceType } from '@superset-ui/core';
import { DatasourceType, GenericDataType } from '@superset-ui/core';
import { Dataset } from './types';
export const TestDataset: Dataset = {
@@ -37,7 +37,7 @@ export const TestDataset: Dataset = {
is_dttm: false,
python_date_format: null,
type: 'BIGINT',
type_generic: 0,
type_generic: GenericDataType.NUMERIC,
verbose_name: null,
warning_markdown: null,
},
@@ -55,7 +55,7 @@ export const TestDataset: Dataset = {
is_dttm: false,
python_date_format: null,
type: 'VARCHAR(16)',
type_generic: 1,
type_generic: GenericDataType.STRING,
verbose_name: '',
warning_markdown: null,
},
@@ -73,7 +73,7 @@ export const TestDataset: Dataset = {
is_dttm: false,
python_date_format: null,
type: 'VARCHAR(10)',
type_generic: 1,
type_generic: GenericDataType.STRING,
verbose_name: null,
warning_markdown: null,
},
@@ -91,7 +91,7 @@ export const TestDataset: Dataset = {
is_dttm: true,
python_date_format: null,
type: 'TIMESTAMP WITHOUT TIME ZONE',
type_generic: 2,
type_generic: GenericDataType.TEMPORAL,
verbose_name: null,
warning_markdown: null,
},
@@ -109,7 +109,7 @@ export const TestDataset: Dataset = {
is_dttm: false,
python_date_format: null,
type: 'VARCHAR(255)',
type_generic: 1,
type_generic: GenericDataType.STRING,
verbose_name: null,
warning_markdown: null,
},

View File

@@ -20,6 +20,7 @@ import { hasGenericChartAxes, t } from '@superset-ui/core';
import { ControlPanelSectionConfig, ControlSetRow } from '../types';
import {
contributionModeControl,
xAxisForceCategoricalControl,
xAxisSortAscControl,
xAxisSortControl,
xAxisSortSeriesAscendingControl,
@@ -55,6 +56,7 @@ export const echartsTimeSeriesQueryWithXAxisSort: ControlPanelSectionConfig = {
controlSetRows: [
[hasGenericChartAxes ? 'x_axis' : null],
[hasGenericChartAxes ? 'time_grain_sqla' : null],
[hasGenericChartAxes ? xAxisForceCategoricalControl : null],
[hasGenericChartAxes ? xAxisSortControl : null],
[hasGenericChartAxes ? xAxisSortAscControl : null],
[hasGenericChartAxes ? xAxisSortSeriesControl : null],

View File

@@ -20,9 +20,9 @@
import {
ContributionType,
ensureIsArray,
GenericDataType,
getColumnLabel,
getMetricLabel,
isDefined,
QueryFormColumn,
QueryFormMetric,
t,
@@ -38,6 +38,7 @@ import {
DEFAULT_XAXIS_SORT_SERIES_DATA,
SORT_SERIES_CHOICES,
} from '../constants';
import { checkColumnType } from '../utils/checkColumnType';
export const contributionModeControl = {
name: 'contributionMode',
@@ -54,18 +55,29 @@ export const contributionModeControl = {
},
};
function isTemporal(controls: ControlStateMapping): boolean {
return !(
isDefined(controls?.x_axis?.value) &&
!isTemporalColumn(
function isForcedCategorical(controls: ControlStateMapping): boolean {
return (
checkColumnType(
getColumnLabel(controls?.x_axis?.value as QueryFormColumn),
controls?.datasource?.datasource,
[GenericDataType.NUMERIC],
) && !!controls?.xAxisForceCategorical?.value
);
}
function isSortable(controls: ControlStateMapping): boolean {
return (
isForcedCategorical(controls) ||
checkColumnType(
getColumnLabel(controls?.x_axis?.value as QueryFormColumn),
controls?.datasource?.datasource,
[GenericDataType.STRING, GenericDataType.BOOLEAN],
)
);
}
const xAxisSortVisibility = ({ controls }: { controls: ControlStateMapping }) =>
!isTemporal(controls) &&
isSortable(controls) &&
ensureIsArray(controls?.groupby?.value).length === 0 &&
ensureIsArray(controls?.metrics?.value).length === 1;
@@ -74,7 +86,7 @@ const xAxisMultiSortVisibility = ({
}: {
controls: ControlStateMapping;
}) =>
!isTemporal(controls) &&
isSortable(controls) &&
(!!ensureIsArray(controls?.groupby?.value).length ||
ensureIsArray(controls?.metrics?.value).length > 1);
@@ -141,7 +153,29 @@ export const xAxisSortAscControl = {
: t('X-Axis Sort Ascending'),
default: true,
description: t('Whether to sort ascending or descending on the base Axis.'),
visibility: xAxisSortVisibility,
visibility: ({ controls }: { controls: ControlStateMapping }) =>
controls?.x_axis_sort?.value !== undefined &&
xAxisSortVisibility({ controls }),
},
};
export const xAxisForceCategoricalControl = {
name: 'xAxisForceCategorical',
config: {
type: 'CheckboxControl',
label: () => t('Force categorical'),
default: false,
description: t('Treat values as categorical.'),
initialValue: (control: ControlState, state: ControlPanelState | null) =>
state?.form_data?.x_axis_sort !== undefined || control.value,
renderTrigger: true,
visibility: ({ controls }: { controls: ControlStateMapping }) =>
checkColumnType(
getColumnLabel(controls?.x_axis?.value as QueryFormColumn),
controls?.datasource?.datasource,
[GenericDataType.NUMERIC],
),
shouldMapStateToProps: () => true,
},
};
@@ -173,6 +207,8 @@ export const xAxisSortSeriesAscendingControl = {
default: DEFAULT_XAXIS_SORT_SERIES_DATA.sort_series_ascending,
description: t('Whether to sort ascending or descending on the base Axis.'),
renderTrigger: true,
visibility: xAxisMultiSortVisibility,
visibility: ({ controls }: { controls: ControlStateMapping }) =>
controls?.x_axis_sort_series?.value !== undefined &&
xAxisMultiSortVisibility({ controls }),
},
};

View File

@@ -47,6 +47,7 @@ import {
isDefined,
hasGenericChartAxes,
NO_TIME_RANGE,
validateMaxValue,
} from '@superset-ui/core';
import {
@@ -58,7 +59,7 @@ import {
DEFAULT_TIME_FORMAT,
DEFAULT_NUMBER_FORMAT,
} from '../utils';
import { TIME_FILTER_LABELS } from '../constants';
import { DEFAULT_MAX_ROW, TIME_FILTER_LABELS } from '../constants';
import {
SharedControlConfig,
Dataset,
@@ -206,7 +207,7 @@ const time_grain_sqla: SharedControlConfig<'SelectControl'> = {
choices: (datasource as Dataset)?.time_grain_sqla || [],
}),
visibility: ({ controls }) => {
if (!hasGenericChartAxes) {
if (!hasGenericChartAxes || !controls?.x_axis) {
return true;
}
@@ -243,7 +244,12 @@ const row_limit: SharedControlConfig<'SelectControl'> = {
type: 'SelectControl',
freeForm: true,
label: t('Row limit'),
validators: [legacyValidateInteger],
clearable: false,
mapStateToProps: state => ({ maxValue: state?.common?.conf?.SQL_MAX_ROW }),
validators: [
legacyValidateInteger,
(v, state) => validateMaxValue(v, state?.maxValue || DEFAULT_MAX_ROW),
],
default: 10000,
choices: formatSelectOptions(ROW_LIMIT_OPTIONS),
description: t(

View File

@@ -479,13 +479,15 @@ export function isControlPanelSectionConfig(
export function isDataset(
datasource: Dataset | QueryResponse | null | undefined,
): datasource is Dataset {
return !!datasource && 'columns' in datasource;
return (
!!datasource && 'columns' in datasource && !('sqlEditorId' in datasource)
);
}
export function isQueryResponse(
datasource: Dataset | QueryResponse | null | undefined,
): datasource is QueryResponse {
return !!datasource && 'results' in datasource && 'sql' in datasource;
return !!datasource && 'results' in datasource && 'sqlEditorId' in datasource;
}
export enum SortSeriesType {
@@ -516,6 +518,7 @@ export type ControlFormItemSpec<T extends ControlType = ControlType> = {
debounceDelay?: number;
} & (T extends 'Select'
? {
allowNewOptions?: boolean;
options: any;
value?: string;
defaultValue?: string;

View File

@@ -0,0 +1,49 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import { ensureIsArray, GenericDataType, ValueOf } from '@superset-ui/core';
import {
ControlPanelState,
isDataset,
isQueryResponse,
} from '@superset-ui/chart-controls';
export function checkColumnType(
columnName: string,
datasource: ValueOf<Pick<ControlPanelState, 'datasource'>>,
columnTypes: GenericDataType[],
): boolean {
if (isDataset(datasource)) {
return ensureIsArray(datasource.columns).some(
c =>
c.type_generic !== undefined &&
columnTypes.includes(c.type_generic) &&
columnName === c.column_name,
);
}
if (isQueryResponse(datasource)) {
return ensureIsArray(datasource.columns)
.filter(
c =>
c.type_generic !== undefined && columnTypes.includes(c.type_generic),
)
.map(c => c.column_name)
.some(c => columnName === c);
}
return false;
}

View File

@@ -17,7 +17,7 @@
* under the License.
*/
import { QueryResponse } from '@superset-ui/core';
import { Dataset, isColumnMeta, isDataset } from '../types';
import { Dataset, isDataset, isQueryResponse } from '../types';
/**
* Convert Datasource columns to column choices
@@ -25,11 +25,13 @@ import { Dataset, isColumnMeta, isDataset } from '../types';
export default function columnChoices(
datasource?: Dataset | QueryResponse | null,
): [string, string][] {
if (isDataset(datasource) && isColumnMeta(datasource.columns[0])) {
if (isDataset(datasource) || isQueryResponse(datasource)) {
return datasource.columns
.map((col): [string, string] => [
col.column_name,
col.verbose_name || col.column_name,
'verbose_name' in col
? col.verbose_name || col.column_name
: col.column_name,
])
.sort((opt1, opt2) =>
opt1[1].toLowerCase() > opt2[1].toLowerCase() ? 1 : -1,

View File

@@ -16,6 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
export * from './checkColumnType';
export * from './selectOptions';
export * from './D3Formatting';
export * from './expandControlConfig';

View File

@@ -0,0 +1,48 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import { GenericDataType, testQueryResponse } from '@superset-ui/core';
import { checkColumnType, TestDataset } from '../../src';
test('checkColumnType columns from a Dataset', () => {
expect(
checkColumnType('num', TestDataset, [GenericDataType.NUMERIC]),
).toEqual(true);
expect(checkColumnType('num', TestDataset, [GenericDataType.STRING])).toEqual(
false,
);
expect(
checkColumnType('gender', TestDataset, [GenericDataType.STRING]),
).toEqual(true);
expect(
checkColumnType('gender', TestDataset, [GenericDataType.NUMERIC]),
).toEqual(false);
});
test('checkColumnType from a QueryResponse', () => {
expect(
checkColumnType('Column 1', testQueryResponse, [GenericDataType.STRING]),
).toEqual(true);
expect(
checkColumnType('Column 1', testQueryResponse, [GenericDataType.NUMERIC]),
).toEqual(false);
});
test('checkColumnType from null', () => {
expect(checkColumnType('col', null, [])).toEqual(false);
});

View File

@@ -16,7 +16,11 @@
* specific language governing permissions and limitations
* under the License.
*/
import { DatasourceType, testQueryResponse } from '@superset-ui/core';
import {
DatasourceType,
GenericDataType,
testQueryResponse,
} from '@superset-ui/core';
import { columnChoices } from '../../src';
describe('columnChoices()', () => {
@@ -31,14 +35,20 @@ describe('columnChoices()', () => {
columns: [
{
column_name: 'fiz',
type: 'INT',
type_generic: GenericDataType.NUMERIC,
},
{
column_name: 'about',
verbose_name: 'right',
type: 'VARCHAR',
type_generic: GenericDataType.STRING,
},
{
column_name: 'foo',
verbose_name: 'bar',
verbose_name: undefined,
type: 'TIMESTAMP',
type_generic: GenericDataType.TEMPORAL,
},
],
verbose_map: {},
@@ -48,8 +58,8 @@ describe('columnChoices()', () => {
description: 'this is my datasource',
}),
).toEqual([
['foo', 'bar'],
['fiz', 'fiz'],
['foo', 'foo'],
['about', 'right'],
]);
});

View File

@@ -16,7 +16,11 @@
* specific language governing permissions and limitations
* under the License.
*/
import { testQueryResponse, testQueryResults } from '@superset-ui/core';
import {
GenericDataType,
testQueryResponse,
testQueryResults,
} from '@superset-ui/core';
import {
Dataset,
getTemporalColumns,
@@ -55,8 +59,9 @@ test('get temporal columns from a QueryResponse', () => {
temporalColumns: [
{
column_name: 'Column 2',
type: 'TIMESTAMP',
is_dttm: true,
type: 'TIMESTAMP',
type_generic: GenericDataType.TEMPORAL,
},
],
defaultTemporalColumn: 'Column 2',

View File

@@ -41,7 +41,7 @@
"@types/rison": "0.0.6",
"@types/seedrandom": "^2.4.28",
"@vx/responsive": "^0.0.199",
"csstype": "^2.6.4",
"csstype": "^3.1.3",
"d3-format": "^1.3.2",
"d3-interpolate": "^1.4.0",
"d3-scale": "^3.0.0",

View File

@@ -20,7 +20,7 @@
export { default as ChartClient } from './clients/ChartClient';
export { default as ChartMetadata } from './models/ChartMetadata';
export { default as ChartPlugin } from './models/ChartPlugin';
export { default as ChartProps } from './models/ChartProps';
export { default as ChartProps, ChartPropsConfig } from './models/ChartProps';
export { default as createLoadableRenderer } from './components/createLoadableRenderer';
export { default as reactify } from './components/reactify';

View File

@@ -67,6 +67,7 @@ function SafeMarkdown({
rehypePlugins={rehypePlugins}
remarkPlugins={[remarkGfm]}
skipHtml={false}
transformLinkUri={null}
>
{source}
</ReactMarkdown>

View File

@@ -16,11 +16,15 @@
* specific language governing permissions and limitations
* under the License.
*/
import JSONbig from 'json-bigint';
import _JSONbig from 'json-bigint';
import { cloneDeepWith } from 'lodash';
import { ParseMethod, TextResponse, JsonResponse } from '../types';
const JSONbig = _JSONbig({
constructorAction: 'preserve',
});
export default async function parseResponse<T extends ParseMethod = 'json'>(
apiPromise: Promise<Response>,
parseMethod?: T,

View File

@@ -35,20 +35,20 @@ const FLOAT_SIGNED = FLOAT_SIGNED_2_POINT;
const INTEGER = ',d';
const INTEGER_SIGNED = '+,d';
const PERCENT = ',.0%';
const PERCENT_1_POINT = ',.1%';
const PERCENT_2_POINT = ',.2%';
const PERCENT_3_POINT = ',.3%';
const PERCENT = PERCENT_2_POINT;
const PERCENT_SIGNED = '+,.0%';
const PERCENT_SIGNED_1_POINT = '+,.1%';
const PERCENT_SIGNED_2_POINT = '+,.2%';
const PERCENT_SIGNED_3_POINT = '+,.3%';
const PERCENT_SIGNED = PERCENT_SIGNED_2_POINT;
const SI = '.0s';
const SI_1_DIGIT = '.1s';
const SI_2_DIGIT = '.2s';
const SI_3_DIGIT = '.3s';
const SI = SI_3_DIGIT;
const SMART_NUMBER = 'SMART_NUMBER';
const SMART_NUMBER_SIGNED = 'SMART_NUMBER_SIGNED';

View File

@@ -31,6 +31,7 @@ import { Maybe } from '../../types';
import { PostProcessingRule } from './PostProcessing';
import { JsonObject } from '../../connection';
import { TimeGranularity } from '../../time-format';
import { GenericDataType } from './QueryResponse';
export type BaseQueryObjectFilterClause = {
col: QueryFormColumn;
@@ -250,6 +251,7 @@ export type QueryColumn = {
name?: string;
column_name: string;
type: string | null;
type_generic: GenericDataType;
is_dttm: boolean;
};
@@ -383,16 +385,19 @@ export const testQuery: Query = {
column_name: 'Column 1',
type: 'STRING',
is_dttm: false,
type_generic: GenericDataType.STRING,
},
{
column_name: 'Column 3',
type: 'STRING',
is_dttm: false,
type_generic: GenericDataType.STRING,
},
{
column_name: 'Column 2',
type: 'TIMESTAMP',
is_dttm: true,
type_generic: GenericDataType.TEMPORAL,
},
],
};
@@ -404,16 +409,19 @@ export const testQueryResults = {
{
column_name: 'Column 1',
type: 'STRING',
type_generic: GenericDataType.STRING,
is_dttm: false,
},
{
column_name: 'Column 3',
type: 'STRING',
type_generic: GenericDataType.STRING,
is_dttm: false,
},
{
column_name: 'Column 2',
type: 'TIMESTAMP',
type_generic: GenericDataType.TEMPORAL,
is_dttm: true,
},
],
@@ -425,16 +433,19 @@ export const testQueryResults = {
{
column_name: 'Column 1',
type: 'STRING',
type_generic: GenericDataType.STRING,
is_dttm: false,
},
{
column_name: 'Column 3',
type: 'STRING',
type_generic: GenericDataType.STRING,
is_dttm: false,
},
{
column_name: 'Column 2',
type: 'TIMESTAMP',
type_generic: GenericDataType.TEMPORAL,
is_dttm: true,
},
],

View File

@@ -22,3 +22,5 @@ export { default as legacyValidateNumber } from './legacyValidateNumber';
export { default as validateInteger } from './validateInteger';
export { default as validateNumber } from './validateNumber';
export { default as validateNonEmpty } from './validateNonEmpty';
export { default as validateMaxValue } from './validateMaxValue';
export { default as validateMapboxStylesUrl } from './validateMapboxStylesUrl';

View File

@@ -1,4 +1,4 @@
/**
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@@ -16,25 +16,21 @@
* specific language governing permissions and limitations
* under the License.
*/
import { addToast } from './actions';
import { ToastType } from './types';
export default function toastsFromPyFlashMessages(flashMessages = []) {
const toasts = [];
import { t } from '../translation';
flashMessages.forEach(([messageType, message]) => {
const toastType =
messageType === 'danger'
? ToastType.DANGER
: (messageType === 'success' && ToastType.SUCCESS) || ToastType.INFO;
/**
* Validate a [Mapbox styles URL](https://docs.mapbox.com/help/glossary/style-url/)
* @param v
*/
export default function validateMapboxStylesUrl(v: unknown) {
if (
typeof v === 'string' &&
v.trim().length > 0 &&
v.trim().startsWith('mapbox://styles/')
) {
return false;
}
const toast = addToast({
text: message,
toastType,
}).payload;
toasts.push(toast);
});
return toasts;
return t('is expected to be a Mapbox URL');
}

View File

@@ -0,0 +1,8 @@
import { t } from '../translation';
export default function validateMaxValue(v: unknown, max: Number) {
if (Number(v) > +max) {
return t('Value cannot exceed %s', max);
}
return false;
}

View File

@@ -139,8 +139,12 @@ describe('parseResponse()', () => {
it('resolves to big number value if `parseMethod=json-bigint`', async () => {
const mockBigIntUrl = '/mock/get/bigInt';
const mockGetBigIntPayload =
'{ "value": 9223372036854775807, "minus": { "value": -483729382918228373892, "str": "something" }, "number": 1234, "floatValue": { "plus": 0.3452211361231223, "minus": -0.3452211361231223 } }';
const mockGetBigIntPayload = `{
"value": 9223372036854775807, "minus": { "value": -483729382918228373892, "str": "something" },
"number": 1234, "floatValue": { "plus": 0.3452211361231223, "minus": -0.3452211361231223 },
"string.constructor": "data.constructor",
"constructor": "constructor"
}`;
fetchMock.get(mockBigIntUrl, mockGetBigIntPayload);
const responseBigNumber = await parseResponse(
callApi({ url: mockBigIntUrl, method: 'GET' }),
@@ -167,6 +171,10 @@ describe('parseResponse()', () => {
expect(Math.abs(responseBigNumber.json.floatValue.minus)).toEqual(
responseBigNumber.json.floatValue.plus,
);
expect(responseBigNumber.json['string.constructor']).toEqual(
'data.constructor',
);
expect(responseBigNumber.json.constructor).toEqual('constructor');
});
it('rejects if request.ok=false', async () => {

View File

@@ -0,0 +1,47 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import { validateMapboxStylesUrl } from '@superset-ui/core';
import './setup';
describe('validateMapboxStylesUrl', () => {
it('should validate mapbox style URLs', () => {
expect(
validateMapboxStylesUrl('mapbox://styles/mapbox/streets-v9'),
).toEqual(false);
expect(
validateMapboxStylesUrl(
'mapbox://styles/foobar/clp2dr5r4008a01pcg4ad45m8',
),
).toEqual(false);
});
[
123,
['mapbox://styles/mapbox/streets-v9'],
{ url: 'mapbox://styles/mapbox/streets-v9' },
'https://superset.apache.org/',
'mapbox://tileset/mapbox/streets-v9',
].forEach(value => {
it(`should not validate ${value}`, () => {
expect(validateMapboxStylesUrl(value)).toEqual(
'is expected to be a Mapbox URL',
);
});
});
});

View File

@@ -0,0 +1,37 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import { validateMaxValue } from '@superset-ui/core';
import './setup';
test('validateInteger returns the warning message if invalid', () => {
expect(validateMaxValue(10.1, 10)).toBeTruthy();
expect(validateMaxValue(1, 0)).toBeTruthy();
expect(validateMaxValue('2', 1)).toBeTruthy();
});
test('validateInteger returns false if the input is valid', () => {
expect(validateMaxValue(0, 1)).toBeFalsy();
expect(validateMaxValue(10, 10)).toBeFalsy();
expect(validateMaxValue(undefined, 1)).toBeFalsy();
expect(validateMaxValue(NaN, NaN)).toBeFalsy();
expect(validateMaxValue(null, 1)).toBeFalsy();
expect(validateMaxValue('1', 1)).toBeFalsy();
expect(validateMaxValue('a', 1)).toBeFalsy();
});

View File

@@ -96,8 +96,5 @@ export default function createQueryStory({
</div>
);
};
story.parameters = {
chromatic: { disable: true },
};
return story;
}

View File

@@ -41,7 +41,7 @@ export default {
],
};
export const configureCORS = () => {
export const ConfigureCORS = () => {
const host = text('Superset App host for CORS request', 'localhost:8088');
const selectEndpoint = select('Endpoint', ENDPOINTS, '');
const customEndpoint = text('Custom Endpoint (override above)', '');
@@ -80,7 +80,3 @@ export const configureCORS = () => {
</div>
);
};
configureCORS.parameters = {
chromatic: { disable: true },
};

View File

@@ -177,15 +177,12 @@ function Heatmap(element, props) {
}
}
function ordScale(k, rangeBands, sortMethod) {
function ordScale(k, rangeBands, sortMethod, formatter) {
let domain = {};
const actualKeys = {}; // hack to preserve type of keys when number
records.forEach(d => {
domain[d[k]] = (domain[d[k]] || 0) + d.v;
actualKeys[d[k]] = d[k];
});
// Not using object.keys() as it converts to strings
const keys = Object.keys(actualKeys).map(s => actualKeys[s]);
const keys = Object.keys(domain).map(k => formatter(k));
if (sortMethod === 'alpha_asc') {
domain = keys.sort(cmp);
} else if (sortMethod === 'alpha_desc') {
@@ -250,12 +247,12 @@ function Heatmap(element, props) {
hideYLabel();
}
const fp = getNumberFormatter(NumberFormats.PERCENT);
const fp = getNumberFormatter(NumberFormats.PERCENT_2_POINT);
const xScale = ordScale('x', null, sortXAxis);
const yScale = ordScale('y', null, sortYAxis);
const xRbScale = ordScale('x', [0, hmWidth], sortXAxis);
const yRbScale = ordScale('y', [hmHeight, 0], sortYAxis);
const xScale = ordScale('x', null, sortXAxis, xAxisFormatter);
const yScale = ordScale('y', null, sortYAxis, yAxisFormatter);
const xRbScale = ordScale('x', [0, hmWidth], sortXAxis, xAxisFormatter);
const yRbScale = ordScale('y', [hmHeight, 0], sortYAxis, yAxisFormatter);
const X = 0;
const Y = 1;
const heatmapDim = [xRbScale.domain().length, yRbScale.domain().length];

View File

@@ -57,10 +57,14 @@ export default function transformProps(chartProps) {
const xAxisFormatter =
coltypes[0] === GenericDataType.TEMPORAL
? getTimeFormatter(timeFormat)
: coltypes[0] === GenericDataType.Numeric
? Number
: String;
const yAxisFormatter =
coltypes[1] === GenericDataType.TEMPORAL
? getTimeFormatter(timeFormat)
: coltypes[1] === GenericDataType.Numeric
? Number
: String;
return {
width,

View File

@@ -16,7 +16,12 @@
* specific language governing permissions and limitations
* under the License.
*/
import { FeatureFlag, isFeatureEnabled, t } from '@superset-ui/core';
import {
FeatureFlag,
isFeatureEnabled,
t,
validateMapboxStylesUrl,
} from '@superset-ui/core';
import {
columnChoices,
ControlPanelConfig,
@@ -224,6 +229,8 @@ const config: ControlPanelConfig = {
label: t('Map Style'),
clearable: false,
renderTrigger: true,
freeForm: true,
validators: [validateMapboxStylesUrl],
choices: [
['mapbox://styles/mapbox/streets-v9', t('Streets')],
['mapbox://styles/mapbox/dark-v9', t('Dark')],
@@ -236,7 +243,10 @@ const config: ControlPanelConfig = {
['mapbox://styles/mapbox/outdoors-v9', t('Outdoors')],
],
default: 'mapbox://styles/mapbox/light-v9',
description: t('Base layer map style'),
description: t(
'Base layer map style. See Mapbox documentation: %s',
'https://docs.mapbox.com/help/glossary/style-url/',
),
},
},
],

View File

@@ -27,7 +27,8 @@ export default {
label: t('Map'),
expanded: true,
controlSetRows: [
[mapboxStyle, viewport],
[mapboxStyle],
[viewport],
[
{
name: 'deck_slices',

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

View File

@@ -18,6 +18,7 @@
*/
import { t, ChartMetadata, ChartPlugin } from '@superset-ui/core';
import thumbnail from './images/thumbnail.png';
import example from './images/example.png';
import transformProps from '../transformProps';
import controlPanel from './controlPanel';
@@ -25,6 +26,7 @@ const metadata = new ChartMetadata({
category: t('Map'),
credits: ['https://uber.github.io/deck.gl'],
description: t('Compose multiple layers together to form complex visuals.'),
exampleGallery: [{ url: example }],
name: t('deck.gl Multiple Layers'),
thumbnail,
useLegacyApi: true,

View File

@@ -26,3 +26,5 @@ export { default as PathChartPlugin } from './layers/Path';
export { default as PolygonChartPlugin } from './layers/Polygon';
export { default as ScatterChartPlugin } from './layers/Scatter';
export { default as ScreengridChartPlugin } from './layers/Screengrid';
export { default as ContourChartPlugin } from './layers/Contour';
export { default as HeatmapChartPlugin } from './layers/Heatmap';

View File

@@ -45,16 +45,16 @@ function setTooltipContent(formData: QueryFormData) {
<div className="deckgl-tooltip">
<TooltipRow
label={t('Start (Longitude, Latitude): ')}
value={`${o.object.sourcePosition[0]}, ${o.object.sourcePosition[1]}`}
value={`${o.object?.sourcePosition?.[0]}, ${o.object?.sourcePosition?.[1]}`}
/>
<TooltipRow
label={t('End (Longitude, Latitude): ')}
value={`${o.object.targetPosition[0]}, ${o.object.targetPosition[1]}`}
value={`${o.object?.targetPosition?.[0]}, ${o.object?.targetPosition?.[1]}`}
/>
{formData.dimension && (
<TooltipRow
label={`${formData.dimension}: `}
value={`${o.object.cat_color}`}
label={`${formData?.dimension}: `}
value={`${o.object?.cat_color}`}
/>
)}
</div>

View File

@@ -76,10 +76,7 @@ const config: ControlPanelConfig = {
},
{
label: t('Map'),
controlSetRows: [
[mapboxStyle, viewport],
[autozoom, null],
],
controlSetRows: [[mapboxStyle], [autozoom, viewport]],
},
{
label: t('Arc'),

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

View File

@@ -18,6 +18,7 @@
*/
import { t, ChartMetadata, ChartPlugin } from '@superset-ui/core';
import thumbnail from './images/thumbnail.png';
import example from './images/example.png';
import transformProps from '../../transformProps';
import controlPanel from './controlPanel';
@@ -29,6 +30,7 @@ const metadata = new ChartMetadata({
),
name: t('deck.gl Arc'),
thumbnail,
exampleGallery: [{ url: example }],
useLegacyApi: true,
tags: [t('deckGL'), t('Geo'), t('3D'), t('Relational'), t('Web')],
});

View File

@@ -52,8 +52,8 @@ const config: ControlPanelConfig = {
label: t('Map'),
expanded: true,
controlSetRows: [
[mapboxStyle, viewport],
[autozoom],
[mapboxStyle],
[autozoom, viewport],
[
{
name: 'cellSize',

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

View File

@@ -20,6 +20,7 @@ import { t, ChartMetadata, ChartPlugin } from '@superset-ui/core';
import transformProps from '../../transformProps';
import controlPanel from './controlPanel';
import thumbnail from './images/thumbnail.png';
import example from './images/example.png';
const metadata = new ChartMetadata({
category: t('Map'),
@@ -27,7 +28,8 @@ const metadata = new ChartMetadata({
description: t(
'Uses Gaussian Kernel Density Estimation to visualize spatial distribution of data',
),
name: t('deck.gl Countour'),
exampleGallery: [{ url: example }],
name: t('deck.gl Contour'),
thumbnail,
useLegacyApi: true,
tags: [t('deckGL'), t('Spatial'), t('Comparison'), t('Experimental')],

View File

@@ -93,13 +93,13 @@ const recurseGeoJson = (
function setTooltipContent(o: JsonObject) {
return (
o.object.extraProps && (
o.object?.extraProps && (
<div className="deckgl-tooltip">
{Object.keys(o.object.extraProps).map((prop, index) => (
<TooltipRow
key={`prop-${index}`}
label={`${prop}: `}
value={`${o.object.extraProps[prop]}`}
value={`${o.object.extraProps?.[prop]}`}
/>
))}
</div>

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 KiB

View File

@@ -18,6 +18,7 @@
*/
import { t, ChartMetadata, ChartPlugin } from '@superset-ui/core';
import thumbnail from './images/thumbnail.png';
import example from './images/example.png';
import transformProps from '../../transformProps';
import controlPanel from './controlPanel';
@@ -27,6 +28,7 @@ const metadata = new ChartMetadata({
description: t(
'The GeoJsonLayer takes in GeoJSON formatted data and renders it as interactive polygons, lines and points (circles, icons and/or texts).',
),
exampleGallery: [{ url: example }],
name: t('deck.gl Geojson'),
thumbnail,
useLegacyApi: true,

View File

@@ -53,7 +53,8 @@ const config: ControlPanelConfig = {
{
label: t('Map'),
controlSetRows: [
[mapboxStyle, viewport],
[mapboxStyle],
[viewport],
['color_scheme'],
[autozoom],
[gridSize],

Binary file not shown.

After

Width:  |  Height:  |  Size: 369 KiB

View File

@@ -18,6 +18,7 @@
*/
import { t, ChartMetadata, ChartPlugin } from '@superset-ui/core';
import thumbnail from './images/thumbnail.png';
import example from './images/example.png';
import transformProps from '../../transformProps';
import controlPanel from './controlPanel';
@@ -29,6 +30,7 @@ const metadata = new ChartMetadata({
),
name: t('deck.gl Grid'),
thumbnail,
exampleGallery: [{ url: example }],
useLegacyApi: true,
tags: [t('deckGL'), t('3D'), t('Comparison'), t('Experimental')],
});

View File

@@ -30,7 +30,7 @@ function setTooltipContent(o: JsonObject) {
<div className="deckgl-tooltip">
<TooltipRow
label={t('Centroid (Longitude and Latitude): ')}
value={`(${o.coordinate[0]}, ${o.coordinate[1]})`}
value={`(${o?.coordinate[0]}, ${o?.coordinate[1]})`}
/>
</div>
);

View File

@@ -99,7 +99,8 @@ const config: ControlPanelConfig = {
{
label: t('Map'),
controlSetRows: [
[mapboxStyle, viewport],
[mapboxStyle],
[viewport],
['linear_color_scheme'],
[autozoom],
[

Binary file not shown.

After

Width:  |  Height:  |  Size: 259 KiB

View File

@@ -20,6 +20,7 @@ import { t, ChartMetadata, ChartPlugin } from '@superset-ui/core';
import transformProps from '../../transformProps';
import controlPanel from './controlPanel';
import thumbnail from './images/thumbnail.png';
import example from './images/example.png';
const metadata = new ChartMetadata({
category: t('Map'),
@@ -27,6 +28,7 @@ const metadata = new ChartMetadata({
description: t(
'Uses Gaussian Kernel Density Estimation to visualize spatial distribution of data',
),
exampleGallery: [{ url: example }],
name: t('deck.gl Heatmap'),
thumbnail,
useLegacyApi: true,

View File

@@ -53,8 +53,8 @@ const config: ControlPanelConfig = {
{
label: t('Map'),
controlSetRows: [
[mapboxStyle, viewport],
['color_scheme'],
[mapboxStyle],
['color_scheme', viewport],
[autozoom],
[gridSize],
[extruded],

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 KiB

View File

@@ -18,6 +18,7 @@
*/
import { t, ChartMetadata, ChartPlugin } from '@superset-ui/core';
import thumbnail from './images/thumbnail.png';
import example from './images/example.png';
import transformProps from '../../transformProps';
import controlPanel from './controlPanel';
@@ -27,6 +28,7 @@ const metadata = new ChartMetadata({
description: t(
'Overlays a hexagonal grid on a map, and aggregates data within the boundary of each cell.',
),
exampleGallery: [{ url: example }],
name: t('deck.gl 3D Hexagon'),
thumbnail,
useLegacyApi: true,

View File

@@ -29,7 +29,7 @@ import { Point } from '../../types';
function setTooltipContent(o: JsonObject) {
return (
o.object.extraProps && (
o.object?.extraProps && (
<div className="deckgl-tooltip">
{Object.keys(o.object.extraProps).map((prop, index) => (
<TooltipRow

View File

@@ -67,7 +67,8 @@ const config: ControlPanelConfig = {
label: t('Map'),
expanded: true,
controlSetRows: [
[mapboxStyle, viewport],
[mapboxStyle],
[viewport],
['color_picker'],
[lineWidth],
[

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

View File

@@ -18,6 +18,7 @@
*/
import { t, ChartMetadata, ChartPlugin } from '@superset-ui/core';
import thumbnail from './images/thumbnail.png';
import example from './images/example.png';
import transformProps from '../../transformProps';
import controlPanel from './controlPanel';
@@ -27,6 +28,7 @@ const metadata = new ChartMetadata({
description: t('Visualizes connected points, which form a path, on a map.'),
name: t('deck.gl Path'),
thumbnail,
exampleGallery: [{ url: example }],
useLegacyApi: true,
tags: [t('deckGL'), t('Web')],
});

View File

@@ -62,27 +62,27 @@ function getElevation(
function setTooltipContent(formData: PolygonFormData) {
return (o: JsonObject) => {
const metricLabel = formData.metric.label || formData.metric;
const metricLabel = formData?.metric?.label || formData?.metric;
return (
<div className="deckgl-tooltip">
{o.object.name && (
{o.object?.name && (
<TooltipRow
// eslint-disable-next-line prefer-template
label={t('name') + ': '}
value={`${o.object.name}`}
/>
)}
{o.object[formData.line_column] && (
{o.object?.[formData?.line_column] && (
<TooltipRow
label={`${formData.line_column}: `}
value={`${o.object[formData.line_column]}`}
/>
)}
{formData.metric && (
{formData?.metric && (
<TooltipRow
label={`${metricLabel}: `}
value={`${o.object[metricLabel]}`}
value={`${o.object?.[metricLabel]}`}
/>
)}
</div>

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

View File

@@ -18,6 +18,7 @@
*/
import { t, ChartMetadata, ChartPlugin } from '@superset-ui/core';
import thumbnail from './images/thumbnail.png';
import example from './images/example.png';
import transformProps from '../../transformProps';
import controlPanel from './controlPanel';
@@ -29,6 +30,7 @@ const metadata = new ChartMetadata({
),
name: t('deck.gl Polygon'),
thumbnail,
exampleGallery: [{ url: example }],
useLegacyApi: true,
tags: [
t('deckGL'),

Some files were not shown because too many files have changed in this diff Show More