Compare commits

..
Author SHA1 Message Date
Kamil GabryjelskiandSteven Uray de615eb79e fix(explore): adhoc metrics popover resets label after hovering outside (#16196)
* fix(explore): adhoc metrics popover resets label after hovering outside

* Remove irrelevant tests and skip rest

* Use ensureIsArray

(cherry picked from commit ccfc95fbe6)
2021-08-11 09:40:25 -07:00
Junlin ChenandSteven Uray 9fb638da6f chore: switch back tag name to popular from highly-used (#16174)
* chore: switch back tag name to popular from highly-used

* new package lock

* new package lock with npm 7

* fix lint

* remove package changes

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>
(cherry picked from commit 9841c78967)
2021-08-11 09:39:15 -07:00
Phillip Kelley-DotsonandSteven Uray 60ceb9213f fix: ensure created user entities do not show inside examples (#16176)
* initial commit

* fix lint

* Update superset-frontend/src/views/CRUD/utils.tsx

Co-authored-by: Evan Rusackas <evan@preset.io>

* Update superset-frontend/src/views/CRUD/utils.tsx

Co-authored-by: Evan Rusackas <evan@preset.io>

* Update superset-frontend/src/views/CRUD/utils.tsx

Co-authored-by: Evan Rusackas <evan@preset.io>

Co-authored-by: Evan Rusackas <evan@preset.io>
(cherry picked from commit a0c9b9d9c2)
2021-08-11 09:38:59 -07:00
Phillip Kelley-DotsonandSteven Uray 7458292ca9 fix: change listivew card layouts to the new homepage card layout (#16171)
* initial commit

* removing CardStylesOverrides (unused)

Co-authored-by: Evan Rusackas <evan@preset.io>
(cherry picked from commit a30d884cfc)
2021-08-11 09:38:36 -07:00
AAfghahiandSteven Uray adb3ebbba3 feat: Changing Dataset names (#16199)
* added google alert

* changing Dataset Names

(cherry picked from commit 6c304b83a9)
2021-08-11 09:38:17 -07:00
Elizabeth ThompsonandSteven Uray c5f07bc6c1 update covid dashboard (#16183)
(cherry picked from commit 3aefa6925b)
2021-08-11 09:38:00 -07:00
AAfghahiandSteven Uray 81d2d32dbf feat: CLI cleanup (#16178)
* added google alert

* removing datasets from cli

(cherry picked from commit 6df16c4b1f)
2021-08-11 09:37:37 -07:00
Elizabeth ThompsonandSteven Uray cce369ee00 feat: change query predicate to text (#16160)
* change query predicate to text

* make input multiline

* remove value that is too long for the downgrade

* keep logging lint rule

(cherry picked from commit 628169a171)
2021-08-11 09:37:14 -07:00
David Aaron SuddjianandSteven Uray d95721cb14 fix(dashboard): user id can be null when there is an anonymous user (#15592)
(cherry picked from commit 23072161e2)
2021-08-11 09:36:56 -07:00
Kamil GabryjelskiandSteven Uray 0a91bc8c3f fix(explore): revert dnd column dependency array change to fix infinite rerenders (#16115)
* fix(explore): revert dnd column dependency array change to fix infinite rerenders

* Remove console.log

* Remove comment

(cherry picked from commit 772da8de63)
2021-08-11 09:34:09 -07:00
Beto DealmeidaandSteven Uray 13f01ac2ab fix: isDynamic function (#16175)
* fix: isDynamic function

* trigger tests

(cherry picked from commit 9f52c103ac)
2021-08-11 09:33:49 -07:00
Beto DealmeidaandSteven Uray 705bad9792 fix: revert data endpoint name (#16162)
(cherry picked from commit 7b3fce7e81)
2021-08-11 09:33:23 -07:00
Elizabeth ThompsonandSteven Uray 86d079b31c add config to hide some user menu items (#16156)
(cherry picked from commit 5488a8a948)
2021-08-11 09:33:05 -07:00
Elizabeth ThompsonandSteven Uray b4d4d1cc88 feat: add chart image info to reports from charts (#16158)
* refetch reports on props update

* add chart types to reports

(cherry picked from commit a3102488a1)
2021-08-11 09:32:45 -07:00
Phillip Kelley-DotsonandSteven Uray 7c5546586c fix: ensure that users viewing chart does not automatically save edit data (#16077)
* add last_change_at migration

* add last_saved_by db migration

* finish rest of api migration

* run precommit

* fix name

* run precommitt

* remove unused mods

* merge migrations

* Update superset/migrations/versions/6d20ba9ecb33_add_last_saved_at_to_slice_model.py

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>

* Update superset/migrations/versions/6d20ba9ecb33_add_last_saved_at_to_slice_model.py

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>

* Update superset/migrations/versions/f6196627326f_update_chart_permissions.py

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>

* fix test

* precommit

* remove print

* fix test

* change test

* test commit

* test 2

* test 3

* third time the charm

* fix put req

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>
(cherry picked from commit f0e3b68cc2)
2021-08-11 09:32:28 -07:00
Phillip Kelley-DotsonandSteven Uray 5895af50f5 feat: add sticky state to tables and loadingcards state. (#16102)
* initial feat commit

* fix chart and dash rendering onload

* Update superset-frontend/src/views/CRUD/welcome/Welcome.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* fix jumpyness and add const

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
(cherry picked from commit a70248736f)
2021-08-11 09:32:10 -07:00
Michael S. MolinaandSteven Uray baeac9dc97 fix: Safari is not showing scroll bars in Explore (#16089)
(cherry picked from commit 273ab3d257)
2021-08-11 09:31:52 -07:00
Ville BrofeldtandSteven Uray 9e21009db3 feat(cross-filters): add support for temporal filters (#16139)
* feat(cross-filters): add support for temporal filters

* fix test

* make filter optional

* remove mocks

* fix more tests

* remove unnecessary optionality

* fix even more tests

* bump superset-ui

* add isExtra to schema

* address comments

* fix presto test

(cherry picked from commit 63ace7b288)
2021-08-11 09:31:32 -07:00
Yongjie ZhaoandSteven Uray 79e4253230 fix: boolean type into SQL 'in' operator (#16107)
* fix: boolean type into SQL 'in' operator

* fix ut

* fix ut again

* update url

* remove blank line

(cherry picked from commit bb1d8fe4ef)
2021-08-11 09:31:14 -07:00
Hugh A. Miles IIandSteven Uray 520284a4a4 fix: turn on SSL in database edit form show 500 error (#16151)
* fix error for query.update

* converrt before making request

* fix query params

* remove unchanged files

* this

* update tsconfig

(cherry picked from commit 3f86a54ac1)
2021-08-11 09:30:55 -07:00
Lyndsi Kay WilliamsandSteven Uray bb78d492e9 additional params field fixed (#16161)
(cherry picked from commit 3712ee02fa)
2021-08-11 09:30:36 -07:00
Kamil GabryjelskiandSteven Uray 1e9f1de563 chore(explore): bump deckgl to 0.4.9 (#16086)
(cherry picked from commit af204ff449)
2021-08-11 09:30:17 -07:00
Michael S. MolinaandSteven Uray d00a2c2899 fix: Fix the Select unselect for object values (#16062)
(cherry picked from commit 1917464d2b)
2021-08-11 09:29:59 -07:00
Kamil GabryjelskiandSteven Uray 0b07566346 fix(explore): dnd error when dragging metric if multi: false (#16088)
* fix(explore): dnd error when dragging metric if multi: false

* Fix error for non-dnd controls

(cherry picked from commit b7cc89c6d4)
2021-08-11 09:29:40 -07:00
AAfghahiandSteven Uray c0572c5302 feat: added google alert to DB Connection Form (#16095)
* added google alert

* using superset_text

* made google alert public and others private

* Hugh revisions

(cherry picked from commit a51851308b)
2021-08-11 09:29:14 -07:00
Yongjie ZhaoandSteven Uray 4b4f6b9c1d fix: virtual dataset wont work (#16132)
(cherry picked from commit 3bbcc30d69)
2021-08-11 09:28:57 -07:00
AAfghahiandSteven Uray ffa4226f10 fix: change Alert Permissions (#16118)
* added google alert

* reworked permissions

(cherry picked from commit 606a7bf429)
2021-08-11 09:28:37 -07:00
AAfghahiandSteven Uray 64d54d6fdd feat: better errors for report in charts and dashboard (#16131)
* added google alert

* better errors and report actions

(cherry picked from commit 5ce38839e7)
2021-08-11 09:28:15 -07:00
GeidoandSteven Uray fa7a5249ea Adjust width (#16092)
(cherry picked from commit b07c80a839)
2021-08-11 09:27:55 -07:00
Maxime BeaucheminandSteven Uray f8f3b7abbb chore: add stats logging to thumbnail api (#16133)
(cherry picked from commit df50a47777)
2021-08-11 09:27:19 -07:00
Kamil GabryjelskiandSteven Uray 83661aee99 chore(explore): change dnd placeholders (#16116)
* chore(explore): change dnd placeholders

* Fix tests and lint

(cherry picked from commit 6ac4f4ef2f)
2021-08-11 09:26:48 -07:00
ʈᵃᵢandSteven Uray 9976250954 fix: move watermark to about section (#16097)
(cherry picked from commit b80f018691)
2021-08-11 09:26:26 -07:00
David Aaron SuddjianandSteven Uray 08e64048fa fix(explore): drag & drop column select component triggering onChange unnecessarily (#16073)
* fix(explore): avoid sync until after first render

* fix example

(cherry picked from commit e6292a89bb)
2021-08-11 09:25:57 -07:00
Beto Dealmeidaandhenryyeh 18f551580e fix: migrate_roles (#16098)
(cherry picked from commit 28c383af68)
2021-08-06 10:08:54 -07:00
Beto Dealmeidaandhenryyeh d85875d962 fix: load tabbed dash only for tests (#16091)
(cherry picked from commit b72fd7b9f4)
2021-08-06 10:08:54 -07:00
AAfghahiandhenryyeh 31f994b090 change button color (#16093)
(cherry picked from commit e6274e0764)
2021-08-06 10:08:54 -07:00
Beto Dealmeidaandhenryyeh a16605cf01 chore: simplify chart permissions (#16078)
(cherry picked from commit 1dbd1e9f02)
2021-08-06 10:08:54 -07:00
Kamil Gabryjelskiandhenryyeh e70bcc7283 chore(explore): Create new entrypoints for Echarts Timeseries (#15942)
* feat(explore): Create new entrypoints for Echarts Timeseries

* Change order of some charts

* bump superset-ui

* also bump echarts package

* fix UT

Co-authored-by: Ville Brofeldt <ville.v.brofeldt@gmail.com>
(cherry picked from commit a59d458e41)
2021-08-06 10:08:54 -07:00
Hugh A. Miles IIandhenryyeh 980c38d1b7 fix: Remove grey bar for TableElement component when metadata is empty (#16054)
* create serialize json function

* remove grey space with no metadata

* remove console log

(cherry picked from commit 11a2d4dfdd)
2021-08-06 10:08:54 -07:00
Ville Brofeldtandhenryyeh 87fad13f89 feat(explore): add automatic conditional formatter to pivot table v2 (#16045)
(cherry picked from commit 7ef97a54e2)
2021-08-06 10:08:54 -07:00
AAfghahiandhenryyeh a1a71ee6e1 fix: Adding report bug (#16065)
* report add fix

* added theme

(cherry picked from commit 4359650b7d)
2021-08-06 10:08:54 -07:00
Ville Brofeldtandhenryyeh feab690b8d fix(native-filters): add support for boolean cols to select (#16061)
(cherry picked from commit 86cecaeec5)
2021-08-06 10:08:54 -07:00
Ville Brofeldtandhenryyeh b7d9be449d chore: bump superset-ui to 0.17.78 (#16058)
(cherry picked from commit 7332055ff6)
2021-08-06 10:08:53 -07:00
Beto DealmeidaandGitHub 69c5cd7922 feat: handle subtle bug with load-examples (#16052) 2021-08-03 12:44:44 -07:00
Yongjie ZhaoandGitHub 430ebe18aa fix: sync columns in explore page (#16042) 2021-08-03 09:49:08 -07:00
Rob DiCiuccioandGitHub 04622529df Revert a7f247b472 (#16039) 2021-08-03 09:27:45 -07:00
Beto DealmeidaandGitHub ec22acb786 fix: handle schemas_allowed_for_csv_upload serde (#16038)
* fix: handle schemas_allowed_for_csv_upload serde

* Add migration
2021-08-03 09:10:32 -07:00
Erik RitterandGitHub 7c059cda39 fix: make dataset update methods static instead of global (#16044) 2021-08-03 08:47:52 -07:00
Beto DealmeidaandGitHub 7b15b7690d fix: DB exported with incorrect type (#16037)
* fix: DB exported with incorrect type

* Fix export as well
2021-08-03 08:35:48 -07:00
Hugh A. Miles IIandGitHub 4cb79e5017 fix: Fix long dashboards screenshot emails (#15954)
* create serialize json function

* create new setting for reports

* cleanup

* address comments

* up the attributes
2021-08-02 16:37:34 -04:00
John BodleyandGitHub 41e8190575 chore: Use datetime.timedelta for defining durations in config (#16029)
* chore: use datetime.timedelta for defining durations

* Update config.py
2021-08-03 08:22:30 +12:00
Kamil GabryjelskiandGitHub 5917407b9c fix(explore): filter popover opening after removing a filter (#16024) 2021-08-02 22:01:17 +02:00
c0615c55df fix: Ensure table uniqueness on update (#15909)
* fix: Ensure table uniqueness on update

* Update models.py

* Update slice.py

* Update datasource_tests.py

Co-authored-by: John Bodley <john.bodley@airbnb.com>
2021-08-03 07:45:55 +12:00
Michael S. MolinaandGitHub 76a13dfc9a fix: Modal is blinking when opening (#16035) 2021-08-02 16:18:54 -03:00
GeidoandGitHub 39913d286a Implement sectionId (#16022) 2021-08-02 12:12:36 -07:00
Ville BrofeldtandGitHub c8a8347b43 chore: bump superset-ui to 0.17.77 (#16034) 2021-08-02 11:48:54 -07:00
Yongjie ZhaoandGitHub 3f57ea76db fix: missing mulitiple metrics on pivot operator (#16026)
* fix: missing mulitiple metrics on pivot operator

* code smell
2021-08-02 11:37:10 -07:00
Michael S. MolinaandGitHub a889cb3505 chore: Auto focus the viz gallery select (#16025) 2021-08-02 14:59:17 -03:00
Elizabeth ThompsonandGitHub e0576786c3 add feature flag to header bar (#16031) 2021-08-02 10:57:29 -07:00
ʈᵃᵢandGitHub 39db6a73ee docs: update api 2 (#16032)
* docs: update api

* recompile
2021-08-02 13:31:15 -04:00
a7f247b472 chore: Bump Celery (#15927)
Co-authored-by: John Bodley <john.bodley@airbnb.com>
2021-08-03 05:28:20 +12:00
5031a67597 feat: Self subscribe reports (#16027)
Co-authored-by: Lyndsi Kay Williams <55605634+lyndsiWilliams@users.noreply.github.com>
Co-authored-by: AAfghahi <48933336+AAfghahi@users.noreply.github.com>
2021-08-02 09:12:09 -07:00
Sarthak AgrawalandGitHub 31d79ff67c docs: add instructions for how to connect to local database from docker container (#15936)
* Update installation instructions for docker

Update installation instructions to include a section on
connecting to local db via superset running in docker container.

Newcomers may have trouble in this part because it involves
knowing about some docker internal details, as well as
google search doesn't bring many directly useful results.

If it's a commonly occurring issue among new comers,
we may accept this commit.

* Update index.mdx

Add a caution regarding changing database config to allow public incoming.
Add a note that mac users may skip configuring database.
Spelling mistake fix.
Style fix, "Superset" is now in title case.
2021-08-02 10:46:32 -04:00
David SztykmanandGitHub 6095978040 docs: add Hydrolix to users list (#15950) 2021-08-02 10:22:57 -04:00
ʈᵃᵢandGitHub 22dc3d1eaa docs: update api (#16005)
* docs: update api

* lint
2021-08-02 09:58:12 -04:00
Kamil GabryjelskiandGitHub 3061b6ad09 fix(explore): fix undefined error when using dnd (#16020) 2021-08-02 15:22:32 +02:00
Ville BrofeldtandGitHub c77bf264d1 fix(native-filters): add support for versioned import/export (#16017)
* fix(native-filters): add support for versioned import/export

* fix lint

* address CR

* make query_context nullable
2021-08-02 16:10:57 +03:00
GeidoandGitHub 475f9cdc35 fix: Sort Metrics by ID DESC (order of creation) in the Datasource Editor (#15971)
* Sort metrics by ID

* Fix undefined metrics
2021-08-02 11:16:01 +02:00
Yongjie ZhaoandGitHub a786373fff feat: auto sync table columns when change dataset (#15887)
* feat: auto sync dataset metadata when change dataset

* diablo sync button when edit mode

* handle undefine schema

* fix py UT

* fix FE UT

* improve test coverage

* fix UT
2021-08-02 16:55:31 +08:00
David Aaron SuddjianandGitHub 46188c1011 fix(explore): calculate query staleness correctly (#15994) 2021-07-31 19:46:34 -06:00
Beto DealmeidaandGitHub ce6bc3b598 fix: save DB with with query (#15991) 2021-07-31 10:48:15 -07:00
Yongjie ZhaoandGitHub c01d42fd98 fix: eliminate cartesian product columns in pivot operator (#15975)
* fix: eliminate cartesian product columns in pivot operator

* wip

* wip

* minor tip
2021-07-31 16:02:04 +08:00
Jesse YangandGitHub b73d7baedf fix(dashboard): FilterBox JS error when datasets API is slow (#15993) 2021-07-30 22:06:29 -07:00
stellalc7andGitHub 324ecb31fc fix: three button styles to tertiary (#15978)
* changed margin right on warning icon to 8px

* fixed to grid units from pixels

* Changed three buttons styles to tertiary
2021-07-31 10:25:55 +08:00
Phillip Kelley-DotsonandGitHub 5fd798afb7 chore: change dropdown icons from horizontal to vertical (#15958)
* change icons

* add size

* fix storybook

* fix favstar, add new icons, and others

* fix lint
2021-07-30 17:02:40 -06:00
serenajiangandGitHub c37c56c2e4 Revert "fix: Select a query from History and Run (#15891)" (#15992)
This reverts commit 8c7e09e500.
2021-07-30 15:24:07 -07:00
Elizabeth ThompsonandGitHub 908db3ab31 fix select width (#15986) 2021-07-30 14:58:03 -07:00
David Aaron SuddjianandGitHub 7e691f9849 Update bug_report.md (#15987) 2021-07-30 13:27:34 -07:00
Michael S. MolinaandGitHub a3a762e5a7 fix: Dataset field required 2 clicks to select when dashboard was empty (#15985) 2021-07-30 17:23:00 -03:00
Beto DealmeidaandGitHub f1b57c0d88 fix: DB add modal (#15981) 2021-07-30 14:32:48 -04:00
Beto DealmeidaandGitHub 2d61f15153 feat: send post-processed data in reports (#15953)
* feat: send post-processed data in reports

* Fix tests and lint

* Use enums

* Limit Slack message to 4k chars
2021-07-30 09:37:16 -07:00
Michael S. MolinaandGitHub cc704dd53a fix: Cancel alert is not appearing to all native filters modal fields (#15925) 2021-07-30 11:59:36 -03:00
Michael S. MolinaandGitHub eb78f4332f fix: Name change is not lost in left side of modal when return to edition after aborting changes (#15952) 2021-07-30 08:21:12 -03:00
Michael S. MolinaandGitHub e8f18f4dbf fix: Drag inner tab to outer tab while editing a dashboard will show an error (#15946) 2021-07-30 08:20:43 -03:00
GeidoandGitHub c2e4290392 fix(dashboard): Add required message in the tooltip for the time range filter (#15941)
* Add required msg in tooltip

* Fix lint

* Keep red border on hover
2021-07-30 09:44:33 +02:00
Hugh A. Miles IIandGitHub 3b9b2c97aa Update ModalHeader.tsx (#15949) 2021-07-29 16:23:46 -04:00
02f9749d18 feat(homepage): add more cards and new layout (#15853)
* testing out

* use %

* test

* more changes for testing

* add styles

* initial test commit

* remove ff

* default to false

* fix bug

* fix lint

* fix test

* ensure thumbnails if ff is true

* add back examples and fix layout

* fixes

* new layout

* add suggestions

* changes descriptions

* add changes

* Update superset-frontend/src/components/ListViewCard/index.tsx

Co-authored-by: Evan Rusackas <evan@preset.io>

* add const for req

* Update superset-frontend/src/views/CRUD/utils.tsx

Co-authored-by: Evan Rusackas <evan@preset.io>

* fix grid-gap

* fix padding

* fix cards in listviews

* address comments

* removing fractional pixel

Co-authored-by: Evan Rusackas <evan@preset.io>
2021-07-29 11:57:00 -07:00
Beto DealmeidaandGitHub f4739f427e feat: post-processing for pivot table v2 (#15879)
* feat: add pivot v2 post-processing

* Fix lint
2021-07-29 11:05:56 -07:00
Beto DealmeidaandGitHub 6afa840659 feat: send report data to Slack (#15806)
* feat: send data embedded in report email

* Change post-processing to use new endpoint

* Show TEXT option only to text-based vizs

* Fix test

* feat: send data embedded in report email

* feat: send report data to Slack

* Add unit test

* trigger tests
2021-07-29 10:13:28 -07:00
GeidoandGitHub 56dd2a3269 fix(dashboard): Show the filters popover behind the dashboard header when scrolling (#15933)
* Fix z-index

* Fix z-index dropdown and maximized chart filters
2021-07-29 18:19:25 +02:00
David Aaron SuddjianandGitHub ac9c1372b4 fix(dashboard): check dashboard id before calling redux methods (#15921)
* check dashboard id before calling redux methods

* comment
2021-07-28 13:45:09 -07:00
Michael S. MolinaandGitHub 7b0acc45de chore: Changes the main menu order as defined in SIP-34 (#15929) 2021-07-28 16:47:07 -03:00
ʈᵃᵢandGitHub 7b503fa710 docs: add .asf.yaml (#15931)
* docs: add asf.yaml

* license

* fix
2021-07-28 15:32:03 -04:00
bfe7eb9a7b feat(dbc ui): Adding Google Sheets Dynamic Form (#15801)
* feat: Make Google Sheets Dyanmic (#15576)

* first draft

* second draft

* added tests

* first draft

* added table_catalog

* remove console.log

* Update superset-frontend/src/views/CRUD/data/database/DatabaseModal/DatabaseConnectionForm.tsx

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>

* Update superset-frontend/src/views/CRUD/data/database/DatabaseModal/index.tsx

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>

* revisions

* save this for now

* working form

* save disable on public sheets

* refactor somethings

* saving this for now

* working edit

* add back query to schema

* working add

* fix styling

* fixing x

* fix linting

* prettier

* fix some type issues

* more lint fixes

* remove unused dependency

* fix linint

* fix validation

* pylint bypass

* pylint bypass

* fix this

* fix mypy

* yerp

* fix test

* fix test

* Update superset-frontend/src/views/CRUD/data/database/DatabaseModal/index.tsx

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>

* Update superset-frontend/src/views/CRUD/data/database/DatabaseModal/DatabaseConnectionForm.tsx

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>

* Update superset-frontend/src/views/CRUD/data/database/DatabaseModal/DatabaseConnectionForm.tsx

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>

* Update superset-frontend/src/views/CRUD/data/database/DatabaseModal/DatabaseConnectionForm.tsx

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>

* Update superset-frontend/src/views/CRUD/data/database/DatabaseModal/DatabaseConnectionForm.tsx

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>

* Update superset-frontend/src/views/CRUD/data/database/DatabaseModal/DatabaseConnectionForm.tsx

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>

* Update superset-frontend/src/views/CRUD/data/database/DatabaseModal/DatabaseConnectionForm.tsx

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>

* wrap add sheets

* fix linting issues

* fix unit test

* ignore typing

* fix editting and paste issues

* remove query

* fix this

* fix test

* add test back

* fix error messaging

* update url messaging on error

* change error type

* Update superset-frontend/src/views/CRUD/data/database/DatabaseModal/index.tsx

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>

* add errors for sheets with no name

* fix

* fix messaging for gsheets

* stop pylint

* update line

Co-authored-by: AAfghahi <48933336+AAfghahi@users.noreply.github.com>
Co-authored-by: Arash <arash.afghahi@gmail.com>
Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>
2021-07-28 15:00:27 -04:00
Elizabeth ThompsonandGitHub 3f6c81b621 add timezone selector to alerts and reports (#15920) 2021-07-28 10:02:00 -07:00
671b8f2544 chore: Mypy fix **kwargs type (#15823)
Co-authored-by: John Bodley <john.bodley@airbnb.com>
2021-07-29 04:59:20 +12:00
Beto DealmeidaandGitHub 3adf8e85cd feat: send data embedded in report email (#15805)
* feat: send data embedded in report email

* Prettify table

* Change post-processing to use new endpoint

* Show text option only for text viz

* Show TEXT option only to text-based vizs

* Fix test

* Add email test

* Add unit test
2021-07-28 09:43:04 -07:00
Yongjie ZhaoandGitHub 32d2aa0c40 feat: run extra query on QueryObject and add compare operator for post_processing (#15279)
* rebase master and resolve conflicts

* pylint to makefile

* fix crash when pivot operator

* fix comments

* add precision argument

* query test

* wip

* fix ut

* rename

* set time_offsets to cache key

wip

* refactor get_df_payload

wip

* extra query cache

* cache ut

* normalize df

* fix timeoffset

* fix ut

* make cache key logging sense

* resolve conflicts

* backend follow up iteration 1

wip

* rolling window type

* rebase master

* py lint and minor follow ups

* pylintrc
2021-07-28 22:34:39 +08:00
GeidoandGitHub bdfc2dc9d5 fix: Keep chosen columns sort option when changing a column (#15918)
* Keep sorting

* Fix adding new column
2021-07-28 16:19:58 +02:00
Yongjie ZhaoandGitHub 11b0249803 fix: remove unused time column when update dataset (#14969)
* fix: remove unused time column when update dataset

* fix lint

* set dttm to first datatime column
2021-07-28 21:40:16 +08:00
Ville BrofeldtandGitHub eda38a758e chore: bump superset-ui to 0.17.74 (#15923) 2021-07-28 16:14:14 +03:00
Elizabeth ThompsonandGitHub ea49aa3d2d feat: add timezones to report cron (#15849)
* add timezones to report cron

* fix test
2021-07-27 18:28:24 -07:00
David Aaron SuddjianandGitHub a3f54a6c7b chore: small viz gallery tweaks (#15900)
* allow passing styles to selector component

* make onClear optional

* remove broken font-size declarations

* fix bad hook dependency

* move all charts selector outside of Collapse

* stop hiding all charts button

* slight copy change

* remove x

* min left pane size

* remove default p bottom margin

* remove unused import

* fix test
2021-07-27 18:21:19 -07:00
Beto DealmeidaandGitHub 2ce676d20d feat: call screenshot to store query_context (#15846)
* feat: call screenshot to store query_context

* Add unit test

* Move updateQueryContext to ExploreChartPanel

* Add error handling

* Fix code

* Fix logic
2021-07-27 14:02:27 -07:00
Grace GuoandGitHub 8c7e09e500 fix: Select a query from History and Run (#15891)
* fix: Run query picked from History

* remove sql from component local state
2021-07-27 13:24:48 -07:00
aspedrosaandGitHub e5540b79ec fix: no roles being returned for anonymous user (#15585) 2021-07-27 12:22:39 -06:00
663dd3f853 chore: Improves the layout of the VizTypeGallery component (#15907)
* chore: Improves the layout of the VizTypeGallery component

* copy edit

* Enables search

Co-authored-by: Evan Rusackas <evan@preset.io>
2021-07-27 15:17:36 -03:00
Kamil GabryjelskiandGitHub 3f5237a3c1 feat(explore): new datasets have autocomplete filters enabled if UX_BETA is set (#15864)
* feat(explore): new datasets have autocomplete filters enabled if UX_BETA is set

* Lint fix

* Set autocomplete to True in example datasets

* Use "IN" as a default operator in dnd filters

* Default operator only if UX_BETA enabled
2021-07-27 17:40:10 +02:00
Janis PurisandGitHub 019e74652d Update alerts_reports.mdx (#15904)
Slack requires `chat:write` as part of "OAuth & Permissions" for the slack integration to be able to post messages.
2021-07-27 09:47:04 -04:00
Yongjie ZhaoandGitHub 94e759dbfa chore: bumping superset-ui 0.17.73 (#15901) 2021-07-27 14:26:39 +08:00
Yongjie ZhaoandGitHub 315c52a328 fix: dashboard url error when edit slug (#15893) 2021-07-27 08:49:29 +08:00
Beto DealmeidaandGitHub eeba326f8b chore: set UUID of examples DB (#15724) 2021-07-26 17:45:48 -07:00
chuancyandGitHub 2d0056507b Incorrect translations (#15813) 2021-07-26 17:41:06 -06:00
GeidoandGitHub e6a37022ac fix(Explore): "Customize" tab rendering behavior (#15841)
* Remove getDerivedStateFromProps

* Set loading
2021-07-26 17:32:27 -06:00
GeidoandGitHub 1297fd9169 fix(dashboard): Refresh Native Filters when Dashboard refreshes (#15890)
* Implement onRefresh action

* Update tests

* Clean up

* Fix type

* Add effect dependency
2021-07-26 17:27:08 -06:00
62550db385 fix: Update Query Context on Explore loading (#15865)
* create serialize json function

* saving for now

* saving for now

* lint

* cleanup

* fix network request

* update test

* Update tests/integration_tests/charts/api_tests.py

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>
2021-07-26 12:43:25 -07:00
Michael S. MolinaandGitHub 5be0a89625 fix: Charts sort by in edit mode gets cut off (#15896) 2021-07-26 16:38:38 -03:00
Michael S. MolinaandGitHub 7aeb15031d fix: Download as image of dashboard chart did not work (#15897) 2021-07-26 16:36:45 -03:00
Michael S. MolinaandGitHub f6115a73d4 fix: Side menu of the dashboard component will scroll out of dashboard (#15888) 2021-07-26 12:16:40 -06:00
Michael S. MolinaandGitHub 16a26bac35 fix: New time range filter initially show advance section (#15889) 2021-07-26 12:14:43 -06:00
Yaozong LiuandGitHub fb5dce07b7 chore: implement new mockup to the new viz gallery (2nd iteration) (#15868)
* chore: implement new mockup to the new viz gallery

* fix: update package-lock

* fix: add license

* fix: reduce duplication and fit within the sidebar

* fix: ut
2021-07-26 11:10:39 -07:00
Beto DealmeidaandGitHub 2f95f81be7 feat: apply post processing to chart data (#15843)
* feat: apply post processing to chart data

* Fix tests and lint

* Fix lint

* trigger tests
2021-07-26 10:58:59 -07:00
Yongjie ZhaoandGitHub 873daf3867 chore: bumping superset-ui 0.17.72 (#15895) 2021-07-26 14:38:33 -03:00
Elizabeth ThompsonandGitHub b81f120916 add timezone selector component (#15880) 2021-07-26 09:30:35 -07:00
6d3e19d857 fix(15403): Re-enable canceling query for Hive and Presto (#15878)
Co-authored-by: John Bodley <john.bodley@airbnb.com>
2021-07-26 08:04:56 -07:00
Michael S. MolinaandGitHub 9c81599d21 chore: Adds the tests that need to be coded for the Select component (#15885) 2021-07-25 21:01:48 +02:00
David Aaron SuddjianandGitHub 7330aefeac feat: deprecate plugins by their metadata (#15882) 2021-07-24 16:52:07 +08:00
65728ea049 fix(15482): Propagate SupersetSecurityException error (#15874)
Co-authored-by: John Bodley <john.bodley@airbnb.com>
2021-07-24 10:19:49 +12:00
4ba17092fa fix: Ensure SupersetError.extra is always a dict (#15848)
Co-authored-by: John Bodley <john.bodley@airbnb.com>
2021-07-24 10:19:30 +12:00
Duy Nguyen HoangandGitHub 73b436ab9f fix: Unable to create alerts/report after introduced creation_method (#15760) 2021-07-24 09:36:29 +12:00
Beto DealmeidaandGitHub f9b72505fb fix: revert DEFAULT_SQLLAB_LIMIT to default (#15869) 2021-07-23 11:38:42 -07:00
Kamil GabryjelskiandGitHub d408ff8466 fix(explore): show multi queries results in View query modal and data pane (#15840)
* fix(explore): show multiple queries in View query modal

* show multiple queries result in data pane

* fix tests

* lint fix
2021-07-23 17:04:22 +02:00
Elizabeth ThompsonandGitHub 9c854ff1f1 bump typescript (#15847) 2021-07-22 16:30:25 -07:00
Elizabeth ThompsonandGitHub c1eb9cec49 add timezone to report schedule (#15747) 2021-07-22 15:36:15 -07:00
GeidoandGitHub ebec353351 fix(dashboard): Remove edit from url params when discarding changes (#15709)
* Remove edit from url params

* Change replace to assign
2021-07-22 12:58:43 -07:00
GeidoandGitHub d4bec135e8 Render value immediately (#15820) 2021-07-22 11:46:01 -07:00
Michael S. MolinaandGitHub e660de6936 chore: Adds lazy loading to the Select component (#15799) 2021-07-22 15:17:31 -03:00
04c0680f6e feat(homepage): conditionally render viewed tab and move examples to chart and dashboard table (#15792)
* test examples

* fix lint

* more lint

* last test

* add suggestions

* fix lint

* fix wrong localstor

* fix tests

* add suggestions

* Update superset-frontend/src/views/CRUD/types.ts

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/views/CRUD/welcome/DashboardTable.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* fix lint

* fix default tab

* fix test

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
2021-07-22 10:41:49 -07:00
Kamil GabryjelskiandGitHub 5e1c469f42 feat(explore): default aggregate for string/numeric columns when creating metric (#15798)
* feat(explore): default aggregate for string/numeric columns when creating metric

* Fix for editing items with the same label

* Replace componentDidUpdate with getDerivedStateFromProps

* Wrap changes in feature flag
2021-07-22 18:23:10 +02:00
Kamil GabryjelskiandGitHub 040b94119b chore: bump superset-ui to 0.17.71 (#15839) 2021-07-22 17:10:45 +02:00
Yongjie ZhaoandGitHub b9d3338153 fix: dataTablesPane cell render undefine when the dot in metric label (#15817)
* fix: dataTablesPane cell render undefine when the dot in metric label

* fix UT
2021-07-22 22:09:27 +08:00
Michael S. MolinaandGitHub fdb40350bb chore: Changes the pagination API of the Select component (#15802) 2021-07-22 07:32:04 -03:00
Beto DealmeidaandGitHub f6fe29db87 feat: use new API endpoint to build CSV reports (#15830)
* feat: add `GET /api/v1/chart/{chart_id}/data/?format{format}` API

* feat: use new API endpoint to build CSV reports
2021-07-21 17:50:56 -07:00
Beto DealmeidaandGitHub 211319673f fix: publish the new example dashboards (#15803)
* fix: publish the new example dashboards

* Fix tests
2021-07-21 17:26:03 -07:00
Beto DealmeidaandGitHub f104fba61d feat: add GET /api/v1/chart/{chart_id}/data/?format{format} API (#15827)
* feat: add `GET /api/v1/chart/{chart_id}/data/?format{format}` API

* Fix test
2021-07-21 17:03:22 -07:00
Beto DealmeidaandGitHub 3441182630 chore: remove unnecessary deps (#15787)
* chore: remove unneeded deps

* fix lint

* Run compile
2021-07-21 16:53:45 -07:00
AAfghahiandGitHub e66db63333 reports (#15828) 2021-07-21 16:52:59 -07:00
GeidoandGitHub fefcea7979 fix(Explore): Cell height and spacing for Data panel (#15821)
* Fix height and spacing

* Remove unnecessary padding
2021-07-21 14:30:55 -07:00
Beto DealmeidaandGitHub 9a79a5775b feat: store query context when saving charts (#15824)
* WIP

* Add migration

* Fix tests
2021-07-21 13:54:39 -07:00
ab4e3b9bf9 chore: Enforce Mypy for non-tests (#15757)
Co-authored-by: John Bodley <john.bodley@airbnb.com>
2021-07-22 06:46:43 +12:00
Beto DealmeidaandGitHub d26254099e fix: benchmark_migration.py needs to close sssion (#15822) 2021-07-21 11:16:46 -07:00
32a5680510 chore: pylint reenable bad-option-value (#15775)
Co-authored-by: John Bodley <john.bodley@airbnb.com>
2021-07-22 04:34:08 +12:00
5bce2538a2 chore: Re-eanble non-problemaric Pylint messages (#15772)
Co-authored-by: John Bodley <john.bodley@airbnb.com>
2021-07-21 09:19:15 -07:00
Erik RitterandGitHub e969edc451 fix: Bust chart cache when metric/column is changed (#15786) 2021-07-21 07:46:20 -07:00
Beto DealmeidaandGitHub 6cb91ee142 fix: migration script can't drop constraint (#15807) 2021-07-20 17:24:58 -07:00
Beto DealmeidaandGitHub 5cc95bb378 fix: create fk model in benchmark script (#15804) 2021-07-20 14:04:19 -07:00
Beto DealmeidaandGitHub c9dad05f2b chore: remove retry dependency in favor of backoff (#15788)
* chore: remove retry dep in favor of backoff

* Fix lint
2021-07-20 10:33:37 -07:00
GeidoandGitHub cbd37801a0 Add z-index only on maximize (#15800) 2021-07-20 11:08:50 -06:00
Michael S. MolinaandGitHub ad773ffe79 chore: Improves the Select component UI/UX - iteration 4 (#15480) 2021-07-20 13:29:42 -03:00
KumarandGitHub 2aa889944d docs: Adding Sunbird to users list (#15794) 2021-07-20 08:00:26 -04:00
Yongjie ZhaoandGitHub dd800162c5 chore: bump 0.17.70 (#15795) 2021-07-20 19:32:40 +08:00
3b7441663c chore: Add tags to the new viz gallery (#15734)
* chore: add tags to gallery

* fix UT

* fix lint

* redesign tags filter

* chore: change to Highly-used and fix some css

* fix UT

Co-authored-by: stephenLYZ <750188453@qq.com>
2021-07-20 17:59:59 +08:00
Kamil GabryjelskiandGitHub 9ff2531cd0 fix(dashboard): Add resize handles to right and bottom of component (#15778)
* fix(dashboard): Add resize handles to right and bottom of component

* Fix test
2021-07-20 11:23:37 +02:00
Beto DealmeidaandGitHub 1e1706d741 fix: migration downgrade references wrong column (#15791) 2021-07-19 17:41:53 -07:00
80dd525026 feat: adding Progress Bar to Benchmark script (#15719)
* rough draft of benchmark script

* revisions

* revisions

* rough draft of benchmark script

* revisions

* Update requirements/development.in

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>

* Update superset/utils/mock_data.py

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>

* more revisions

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>
2021-07-19 16:34:58 -07:00
stellalc7andGitHub 9a14aed152 fix: margin right on warning icon to 8px (#15715)
* changed margin right on warning icon to 8px

* fixed to grid units from pixels
2021-07-19 13:53:24 -07:00
AAfghahiandGitHub 3a249a0090 feat: add show columns to Reports model (#15712)
* added logic for creation_method

* revisions

* added index

* Update superset/migrations/versions/3317e9248280_add_creation_method_to_reports_model.py

* filters

* search columns updated
2021-07-19 11:47:33 -07:00
GeidoandGitHub a7cbcde9bf fix: Edit physical dataset from the Edit Dataset modal (#15770)
* Remove unnecessary onChange

* Remove confliciting onChange

* Revert unnecessary change

* Enhance and fix tests
2021-07-19 14:39:01 -04:00
Kamil GabryjelskiandGitHub 239336c3e8 fix(explore): dnd multiple columns doesn't work (#15781) 2021-07-19 20:18:10 +02:00
Elizabeth ThompsonandGitHub 618a354ca1 Revert "quote column name if db requires (#15465)" (#15752)
This reverts commit 80b8df0673.
2021-07-19 10:31:05 -07:00
Hugh A. Miles IIandGitHub 7d0f6ab7f5 fix: Fixing schemas_allowed_for_upload field in database connection UX (#15750) 2021-07-19 12:12:37 -04:00
MaiTianoandGitHub 281cb92bfa Update INTHEWILD.md (#15776) 2021-07-19 10:34:56 -04:00
GeidoandGitHub 45c3ae0bf9 chore: Select component refactoring - ColorSchemeControl - Iteration 5 (#15555)
* Enhance Select

* Transition Select to Antd

* Update test

* Fix Cypress

* Change name to aria-label

* Update Cypress search val

* Test Cypress selection
2021-07-19 00:07:40 -06:00
5cc4f3c4b9 chore: Select component refactoring - DateFilterControl - Iteration 5 (#15571)
* Transition to Antd for DateFilterLabel

* Enhance styles

* Fix test

* Update superset-frontend/src/explore/components/controls/DateFilterControl/components/CustomFrame.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
2021-07-19 00:04:07 -06:00
GeidoandGitHub 4e79ffd471 Set label max width (#15710) 2021-07-18 22:10:38 -06:00
ca873acd55 chore: Reformat disable checks to multiline (#15753)
Co-authored-by: John Bodley <john.bodley@airbnb.com>
2021-07-19 14:11:49 +12:00
Yongjie ZhaoandGitHub 069d5cb6a4 chore: bump superet-ui 0.17.69 (#15767) 2021-07-19 02:00:39 +08:00
Kamil GabryjelskiandGitHub 4234031cba feat(explore): UX improvements for drag'n'dropping time column (#15740) 2021-07-19 01:52:34 +08:00
Kamil GabryjelskiandGitHub e9383e6d00 chore(explore): Bump plugin-chart-pivot-table (#15742) 2021-07-16 18:22:16 +02:00
Kamil GabryjelskiandGitHub 71924eb40b fix(explore): wrong error message in conditional formatting (#15732) 2021-07-16 18:02:12 +02:00
Erik RitterandGitHub fe68e45f52 fix: Reduce js bundle size (#15721) 2021-07-16 07:02:37 -07:00
Kamil GabryjelskiandGitHub 66c28d653f fix(explore): DndColumnSelect sometimes not working with multi: false (#15731)
* fix(explore): DndColumnSelect not working with multi: false

* fix values not synchronized when dataset changes
2021-07-16 14:20:13 +02:00
Yongjie ZhaoandGitHub 0721f54580 fix: use expected label in the metrics map (#15707)
* fix: use expected label in metrics map

* added comments

* fix type
2021-07-16 14:02:00 +08:00
chuancyandGitHub 42d84deca1 fix: Incorrect translations in the SQLLab in Chinese (#15727) 2021-07-16 14:00:01 +08:00
ʈᵃᵢandGitHub 0ed97eb696 docs: update dev superset version (#15718) 2021-07-15 20:02:01 -06:00
674f234de6 feat: add logic to creation_method for reports schedule (#15685)
* migration

* added logic for creation_method

* revisions

* added index

* Update superset/migrations/versions/3317e9248280_add_creation_method_to_reports_model.py

* filters

* Update superset/models/reports.py

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>

* Update superset/reports/schemas.py

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>

* Update tests/integration_tests/reports/api_tests.py

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>

* revisions

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>
2021-07-15 18:27:54 -07:00
u-aiaaandGitHub 6b790990a8 fix: Add waiting time for chart animation when screenshot (#15610) 2021-07-15 18:25:48 -07:00
AAfghahiandGitHub 0c74a8060f oops (#15725) 2021-07-15 16:22:48 -07:00
Phillip Kelley-DotsonandGitHub 234e3081a5 feat(homepage): move savequeries table and render open conditionally (#15711)
* initial commit

* make collapsable
2021-07-15 16:53:23 -06:00
GeidoandGitHub 625468c56a Fix style (#15662) 2021-07-15 15:26:00 -07:00
7dd3af6dda feat: add Column to reports model (#15683)
* migration

* added index, fixed misspelling

* Fix benchmark script

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>
2021-07-15 13:38:57 -07:00
Jesse YangandGitHub e305f2a5f3 perf(dashboard): make loading datasets non-blocking (#15699) 2021-07-15 12:26:26 -07:00
Beto DealmeidaandGitHub d908dd6689 chore: better copy for SQL dialog (#15714) 2021-07-15 12:20:47 -07:00
Beto DealmeidaandGitHub b489cffb57 fix: no lazy translation on SupersetError (#15669)
* fix: no lazy translation on SupersetError

* Small fixes
2021-07-14 16:54:11 -07:00
gordernandGitHub 22494b642e fix: remove form invalid title (#15679) (#15680) 2021-07-14 16:55:47 -06:00
985af72ac3 fix(dashboard): Make the View Chart In Explore menu option a link (#15668)
* hey look, it's a real anchor tag!

* get the explore chart url into the link

* add doc comments to the functions

* remove pointless test

* update weird tests

Co-authored-by: Evan Rusackas <evan@preset.io>
2021-07-14 15:12:20 -06:00
Phillip Kelley-DotsonandGitHub 5d86b8dde6 refactor: remove old Icon component (#15690)
* remove old Icon component

* remove mock fn's
2021-07-14 14:04:56 -07:00
Phillip Kelley-DotsonandGitHub 070f0b6cb2 refactor: icon to icons for IconButton and Header component (#15647)
* initial commit

* fix test

* last one

* fix cypress

* remove gridunit for fonsize

* fix cypress

* more data-test removal

* last one

* more data-test
2021-07-14 11:04:21 -07:00
Michael S. MolinaandGitHub ac01d91c28 fix: Show affected filters when interacting with the filters (#15634) 2021-07-14 15:01:15 -03:00
Michael S. MolinaandGitHub 154f460446 chore: Removes unnecessary uses of preselectNativeFilters (#15688) 2021-07-14 14:53:00 -03:00
ʈᵃᵢandGitHub de17acd618 feat(menu): expand support for custom branding (#15628) 2021-07-14 10:51:53 -06:00
GeidoandGitHub a1793f304e fix(dashboard): Filters panel height (#15661)
* Fix container height

* Add min height vh

* Remove offset when standalone

* Clean up
2021-07-14 16:06:17 +02:00
b3e699b767 perf: Refactor Dashboard.datasets_trimmed_for_slices (#15648)
Co-authored-by: John Bodley <john.bodley@airbnb.com>
2021-07-14 15:00:57 +12:00
Beto DealmeidaandGitHub 42a1061bfa fix: small fixes for Makefile (#15670) 2021-07-13 15:45:23 -07:00
Hugh A. Miles IIandGitHub 9f969d00bd chore: Add documentation for DB Connection UI (#15599)
* Create ui.mdx

* more fixxxes

* address comments

* Update ui.mdx

* Update ui.mdx
2021-07-13 15:05:49 -07:00
John BodleyandGitHub 351d3c594b chore: Add metrics_b as viable metric form data parameter (#15646) 2021-07-14 09:29:01 +12:00
1483e04381 refactor: icon to icons for Querytable, datasource test, and copyclipboard story (#15665)
* initial commit

* fix theme

* Update superset-frontend/src/SqlLab/components/QueryTable/index.jsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
2021-07-13 14:24:59 -07:00
John BodleyandGitHub ad87ba3724 docs: Add section about updating Python requirements (#15574) 2021-07-14 07:26:29 +12:00
Michael S. MolinaandGitHub e6bbca3f61 chore: Preserve native filters selection after refresh (#15583) 2021-07-13 15:14:18 -03:00
02032ee8a4 feat: cancel db query on stop (#15403)
* feat: cancel db query on stop

* fix pylint

* Add unit tests

* Do not bind multiple times

* Stop only running queries

* Postgres to cancel only the required query

* Remove extra log

* Add docstring

* Better types, docstring and naming

* Use python3 format strings

* Update superset/sql_lab.py

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>

* Add cancel_query_on_windows_unload option to database

* Return cancel_query as bool

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>
2021-07-13 12:09:22 -04:00
Kamil GabryjelskiandGitHub a914e3c1cb feat(explore): Implement conditional formatting component (#15651)
* feat(explore): Implement conditional formatting

* Improved validation

* Fix undefined error

* Refactor after code review

* Add licenses

* Remove redundant div

* Remove formatters when corresponding column is removed
2021-07-13 18:05:16 +02:00
Phillip Kelley-DotsonandGitHub 8efd94a14f refactor: icon to icons for navbar (#15643)
* initial commit

* remove code
2021-07-13 08:31:12 -07:00
Michael S. MolinaandGitHub f0c0d7492c chore: Reverts reset form in native filters (#15644) 2021-07-13 08:38:32 -03:00
Evan RusackasandGitHub 52ad779a27 fix: safe removal of tab with filters still scoped to a non-existing chart (#15650) 2021-07-12 23:43:53 -06:00
Hugh A. Miles IIandGitHub 2dc8bd6c30 fix: Fix test connection for extra fields (#15645)
* create serialize json function

* remove console.log

* use function
2021-07-12 20:19:45 -07:00
Yongjie ZhaoandGitHub 517f8c0a7a chore: bump superset-ui/plugin-chart-echarts 0.17.65 (#15633)
* chore: bump echart 0.17.65

* npm lock file
2021-07-13 09:48:42 +08:00
Hugh A. Miles IIandGitHub f39582c900 fix: change sslmode to require for Postgres (#15642)
* change sslmode to require

* fix test
2021-07-12 15:38:07 -07:00
Hugh A. Miles IIandGitHub 2252f3396c fix: Remove default values for engine and schemas (#15635)
* remove default values

* don't set initial value on save

* set defaults for engine_params

* update with JSON.parse
2021-07-12 15:37:44 -07:00
Phillip Kelley-DotsonandGitHub 34542db3b6 refactor: icon to icons for syntaxhighlighter and querylist components (#15618)
* initial commit

* make changes

* more simplify

* remove code

* add prop

* remove unsued code
2021-07-12 11:35:26 -07:00
257385e888 feat(explore): Upgraded viz select gallery (#15303)
* add modal layout with description, rework styles

* thirty percent

* test correctly

* avoid any changes in modal height

* typescriptify

* feat(viz): add categories to the viz picker (#15304)

* feat(viz): add categories to the viz picker

* fix test types

* add a catch-all category

* tweak layout

* upgrade superset-ui to get new metadata

* do i look like i know what a jpeg is

* fix tests

* lint

* remove script count test requirement

* fix e2e test

* feat(explore): Viz picker search improvements (#15399)

* upgrade superset-ui, install fuse.js

* add metadata to plugin context

* get search working

* layout improvements

* fix tests

* Update superset-frontend/src/explore/components/controls/VizTypeControl/index.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* use typography size instead of grid unit

* comments

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* feat(explore): Examples image gallery in the viz type control (#15489)

* feat(explore): add section for example images in viz type control

* fix jpg webpack config

* formatting

* feat(Explore): Viz gallery component tweaks (#15520)

* separate viz gallery from the modal

* use gallery directly in add slice view

* more formatting on the add slice container

* restyle the thumbnail list

* explicit thumbnail width and height

* remove crappy hack

* remove useless line

* comment

* sort categories

* comments

* tweak search behavior

* fix tests

* open gallery to the currently selected viz type

* null safety

* show all plugins when searching empty string

* get the new metadatas

* adjust categories scrolling behavior

* add time series table metadata

* upgrade superset-ui

* attempt fixing tests

* upgrade descriptions

* fix unit test

* attempt fixing e2e again

* max width for viz gallery

* update package lock

* undo unnecessary webpack changes

* don't show search results until something is entered

* force modal to open to selected viz type

* tweaks to search behavior

* gallery layout tweaks

* enshrine pivot table v2 in a place of honor

* feat(viz): Clear viz gallery when navigating between categories (#15577)

* start viz gallery with null selection, clear when switching categories

* fix AddSliceContainer tests

* show a message when there is no viz type selected

* composition > inheritance

* clarify searching code

* comment

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
2021-07-12 10:59:10 -07:00
d8a15e60b9 refactor: icon to icons for sqllab (#15593)
* initial commit

* rid of theme

* Update superset-frontend/src/SqlLab/components/ShareSqlLabQuery.tsx

Co-authored-by: David Aaron Suddjian <1858430+suddjian@users.noreply.github.com>

* Update superset-frontend/src/SqlLab/components/ShareSqlLabQuery.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/SqlLab/components/ShareSqlLabQuery.tsx

Co-authored-by: David Aaron Suddjian <1858430+suddjian@users.noreply.github.com>

Co-authored-by: David Aaron Suddjian <1858430+suddjian@users.noreply.github.com>
Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
2021-07-12 10:24:16 -07:00
Phillip Kelley-DotsonandGitHub 79d3d06c8a refactor: icon to icons for homepage and card compompents (#15624)
* initial commit

* add listviewcard

* remove plural
2021-07-12 10:23:45 -07:00
Beto DealmeidaandGitHub 5d86ffe768 fix: duplicate DB names (#15614) 2021-07-12 09:36:46 -07:00
simcha90andGitHub d70ac21054 fix(native-filters): Fix required filters (#15572)
* fix:fix get permission function

* fix: filters required state

* fix: fix CR notes

* fix: removre required message

* fix: fix validation state
2021-07-12 08:55:11 -03:00
Amit MiranandGitHub 62a8f2e193 chore(python-testing): move memoized tests to unit tests (#15507)
* chore: move memoized test into a separated file

create integration test workflow

* chore: create unit test workflow to run purely pytest

* fix: bad reference

* fix: remove pip requirements bc there aren't any yet

* temp: install unit dependencies directly

* fix: --rootdir=

* fix: try to run only unit test

* chore: decouple memoized as separated module

* fix: bring back dependencies bc superset top-level module is coupled to flask and others so no reason no to do it

* fix: reference

* fix: pre-commit

* fix: pylint
2021-07-12 10:00:18 +03:00
Jacob KimandGitHub 9ed8ce53ed docs: fix typos in docs (#15113)
* Fix small typo

* shareding -> sharding

* commant -> command

* Update helm version
2021-07-10 16:00:04 -04:00
78dd17cb29 docs: Small addition in add new databases with docker (#15410)
* Small addition add new databases docker

* Update docker-add-drivers.mdx

Since no reply from @JavierLopezT I've gone ahead and incorporated @mvoitko's feedback and using this as an opportunity to educate (instead of showcasing an escape valve)

Co-authored-by: javier.lopez <javier.lopez@promocionesfarma.com>
Co-authored-by: Srini Kadamati <skadamat@gmail.com>
2021-07-10 13:59:02 -04:00
Jonathan HultandGitHub 0778f4ab28 docs(docker): update README (#15607)
Fix broken README links
Update Grammar
Update blurb about Production mode
2021-07-10 13:30:35 -04:00
aspedrosaandGitHub 7ec6bdff7c fix: avoid fetching favorite status for anonymous user (#15590)
* avoid fetching favorite status for anonymous user

* add test + fix types

* fix lint errors
2021-07-09 15:52:16 -07:00
AAfghahiandGitHub 2ebba519c9 clears errors when closing out of modal (#15623) 2021-07-09 14:15:16 -07:00
Erik RitterandGitHub 4d1672f496 fix: error page status codes (#15620) 2021-07-09 13:33:51 -07:00
AAfghahiandGitHub faf6fcd83e fix: Database List Sorted (#15619)
* sorted the database list

* revisions

* cloned the array

* one more time with feeling

* added documentation link as well
2021-07-09 13:06:17 -07:00
600473ff72 refactor: icon to icons for toasts component (#15579)
* initial commit

* remove code

* fix test

* Update superset-frontend/src/messageToasts/components/Toast.tsx

Co-authored-by: David Aaron Suddjian <1858430+suddjian@users.noreply.github.com>

* Update superset-frontend/src/messageToasts/components/Toast.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/messageToasts/components/Toast.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

Co-authored-by: David Aaron Suddjian <1858430+suddjian@users.noreply.github.com>
Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
2021-07-09 10:50:48 -07:00
Hugh A. Miles IIandGitHub f67e40236d update db for expose in sqllab param (#15609) 2021-07-09 10:08:17 -07:00
Lyndsi Kay WilliamsandGitHub b5fc03f964 fix: Database Connection Modal - corrected tooltip alignment and info alert width (#15612)
* Added margins to info alerts

* Tooltips aligned
2021-07-09 10:01:16 -07:00
Phillip Kelley-DotsonandGitHub cc765b51c7 refactor: icon to icons for annotations & css templates modals (#15611)
* inital commit

* add css templates
2021-07-09 09:48:01 -07:00
Phillip Kelley-DotsonandGitHub abc18b13d0 initial commit (#15597) 2021-07-09 09:45:07 -07:00
Andrew BastianandGitHub ee8b1ed15a chore: update dataset count badge and tash icon sizing (#15608)
* update trash icon size

* changed badge icon `height` to `16px` (using `gridUnits` and centered text inside via `line-height`

* changed badge icon `height` to `16px` (using `gridUnits`), centered text inside via `line-height`, alignedItems inside div w/flex
2021-07-09 07:33:25 -07:00
Yongjie ZhaoandGitHub 367d47bec5 chore: bumping superset-ui 0.17.64 (#15615)
* chore: bumping superset-ui 0.17.64

* fix jest
2021-07-09 18:29:57 +08:00
Yaozong LiuandGitHub 7e9674a8fa refactor(annotation): improve annotation modal (#15359) 2021-07-09 13:14:06 +08:00
Yaozong LiuandGitHub 1d572ca92b fix(dashboard-list): change name of dashboard is not reflected instantly (#15186)
* fix: change name of dashboard is not reflected instantly

* fix: id

* fix: update info

* fix: add changed_on_delta_humanized
2021-07-09 11:28:33 +08:00
Phillip Kelley-DotsonandGitHub 2be52c0659 refactor: icon to icons for controls (#15568)
* initial commit

* Update DateFilterLabel.tsx
2021-07-08 17:32:42 -06:00
Evan RusackasandGitHub 026eefdb36 Revert "Open in _self (#14778)" (#15588)
This reverts commit faae27bd2f.
2021-07-08 16:00:35 -07:00
Phillip Kelley-DotsonandGitHub 4ab565ca36 refactor: icon to icons for sliceheader component (#15567)
* initial commit

* put back code
2021-07-08 14:24:43 -07:00
Evan RusackasandGitHub 4685d86d63 fix: Revert "chore: Bump @svgr/webpack to 5.5.0" (#15589)
* Revert "chore: bump @svgr/webpack to 5.5.0 (#15349)"

This reverts commit 53aa35177a.

* refreshing package-lock after rebasing
2021-07-08 14:23:59 -06:00
AAfghahiandGitHub ad85e7be52 added isEditMode (#15594) 2021-07-08 13:00:21 -07:00
Hugh A. Miles IIandGitHub e539d08074 fix: DBC UI tooltip aligment (#15595) 2021-07-08 12:26:38 -07:00
Evan RusackasandGitHub 77800f972e chore: results of npm audit fix on superset-websocket (#15591) 2021-07-08 13:04:17 -06:00
Beto DealmeidaandGitHub 301b94f49a fix: available endpoint showing specs without drivers (#15587) 2021-07-08 09:20:52 -07:00
Beto DealmeidaandGitHub 4f5f9287fc feat: validate_parameters for GSheets (#15578)
* feat: validate_parameters for GSheets

* Move import inside fixture

* Update deps

* Rename parameter
2021-07-08 08:26:39 -07:00
Phillip Kelley-DotsonandGitHub 86a59a2927 initial fix (#15581) 2021-07-08 07:41:03 -03:00
Phillip Kelley-DotsonandGitHub abd999bd6b refactor: icon to icons for filterbadge components (#15557)
* initial commit

* fix test
2021-07-08 11:53:35 +08:00
Yongjie ZhaoandGitHub ae160f7f21 chore: add changed_on_delta_humanized field on dashboard schema (#15542)
* chore: add changed_on_delta_humanized field on dashboard schema

* fix ut
2021-07-07 14:59:49 -07:00
58cda8f8d6 refactor: icon to icons for nativeFilter components (#15528)
* initial commit for cascade filters

* migrate delete icon

* Update superset-frontend/src/dashboard/components/nativeFilters/FilterBar/CascadeFilters/CascadePopover/index.tsx

Co-authored-by: Geido <60598000+geido@users.noreply.github.com>

* add uniform style for icons

* fix lint

Co-authored-by: Geido <60598000+geido@users.noreply.github.com>
2021-07-07 14:13:44 -07:00
Srini KadamatiandGitHub c732d2dada updated dremio connection string (#15575) 2021-07-07 14:28:23 -04:00
Phillip Kelley-DotsonandGitHub cd4f97926c initial commit (#15551) 2021-07-07 10:20:40 -07:00
Phillip Kelley-DotsonandGitHub 29dd0844bf refactor: icon to icons for headeractionsdropdown (#15560)
* initial commit

* fix test

* fix cypress

* fix markdown cypress test
2021-07-07 10:20:15 -07:00
Beto DealmeidaandGitHub 83be06d2cc Revert #15405 #15435 #15444 (#15558) 2021-07-06 14:56:08 -07:00
GeidoandGitHub 314d49c13b Enhance Select (#15550) 2021-07-06 13:07:33 -03:00
Daniel Vaz GasparandGitHub 0af5a3d600 fix: examples remove app context at the module level (#15546) 2021-07-06 13:56:29 +01:00
Max VoitkoandGitHub 08bda27a43 fix: indentation in Helm chart (#15547) 2021-07-05 19:32:10 -07:00
bee386e643 feat: supporting jinja templating in saved metrics (#15502)
* feat: supporting jinja templating in saved metrics

* cutting the line length to fit requirements

* follwing PR I should have not created a new insance method

* running precommit locally and fixing the issue

Co-authored-by: Guy <guy@nexite.io>
2021-07-06 00:00:13 +08:00
ofekisrandGitHub 15796ea4ac refactor: type hints should not be load in runtime (#15540) 2021-07-05 16:48:53 +03:00
624b41347b fix: variable context (#15511)
* fix variable context

fixes #15510

* bump version

Co-authored-by: Jeffrey Koetsier <jeffrey@my-clay.com>
2021-07-05 13:01:12 +03:00
Phillip Kelley-DotsonandGitHub 07852c3528 refactor: icon to icons for popoversection (#15461) 2021-07-05 16:00:37 +08:00
David Aaron SuddjianandGitHub 83d50dd9fd chore: add metadata for filter box plugin (#15521)
* chore: add metadata for filter box plugin

* Update superset-frontend/src/visualizations/FilterBox/FilterBoxChartPlugin.js
2021-07-05 14:01:33 +08:00
Phillip Kelley-DotsonandGitHub fb322b5bab refactor: migrate to icons for searchinput icons (#15533)
* initial commit

* fix test

* fix lint
2021-07-05 13:59:56 +08:00
gordernandGitHub b20293d1b1 fix: click card view link to 404 page when card rendering(#15526) 2021-07-05 13:55:41 +08:00
simcha90andGitHub 2cb13e695e fix(native-filters): Fix native filters config modal (#15506)
* fix:fix get permission function

* fix: native filters

* fix: remove unneccesary space fo filters / fix some crashes
2021-07-04 11:26:59 +03:00
Daniel Vaz GasparandGitHub dd16468d44 fix: base requirements missing deprecation pkg (#15527) 2021-07-04 10:27:02 +03:00
Amit MiranandGitHub f62cea3586 chore(release-docs): svn update after svn commit (#15523) 2021-07-03 16:33:46 +03:00
Beto DealmeidaandGitHub 8f92618e46 fix: show all dbs in available endpoint (#15534) 2021-07-02 12:58:36 -07:00
80b8df0673 quote column name if db requires (#15465)
Co-authored-by: hughhhh <hughmil3s@gmail.com>
2021-07-02 12:48:24 -05:00
+4 68704a595b fix: Database connection R6 fixes (#15486)
* split db modal file

* split db modal file

* hook up available databases

* add comment

* split db modal file

* hook up available databases

* use new validation component

* first draft

* use new validation component

* Creating IconButton

* Changed naming: logo is now icon

* Hard-coded inset values for ellipses

* Removed default SVG

* Fixed test

* get tests passing

* Removed logo from test

* split db modal file

* hook up available databases

* use new validation component

* feat(db-connection-ui): Allow users to pick engine (#14884)

* poc picker for db selection

* working select

* setup is loading for available dbs and step1 view

* fix on close

* update on fetch

* remove unneeded code

* add some styls

* saving for now

* revisions

* fix package-lock.json

* update styles

* save

* # This is a combination of 6 commits.
# This is the 1st commit message:

feat: validation db modal (#14832)

* split db modal file

* hook up available databases

* use new validation component
# This is the commit message #2:

feat: Icon Button (#14818)

* Creating IconButton

* Changed naming: logo is now icon

* Hard-coded inset values for ellipses

* Removed default SVG

* Fixed test

* Removed logo from test
# This is the commit message #3:

chore: Improves the native filters UI/UX - iteration 6 (#14932)


# This is the commit message #4:

fix: is_temporal should overwrite is_dttm (#14894)

* fix: is_temporal should overwrite is_dttm

* move up
# This is the commit message #5:

fix: time parser truncate to first day of year/month (#14945)


# This is the commit message #6:

hook up available databases

* fix test for db modal

* feat(db-connection-ui): Allow users to pick engine (#14884)

* poc picker for db selection

* working select

* setup is loading for available dbs and step1 view

* fix on close

* update on fetch

* remove unneeded code

* add some styls

* more revisions

* create 1 function for setting the DB

* add function to preferred section

* small refactor and added styling

* used db.backend

* add new footer buttons

* add finsh buttong

* refactor db modal render

* fix comments issue

* added engine to model

* elizabeth revisions

* add header

* add bottom footer to sqlalchemy form

* # This is a combination of 6 commits.
# This is the 1st commit message:

feat: validation db modal (#14832)

* split db modal file

* hook up available databases

* use new validation component
# This is the commit message #2:

feat: Icon Button (#14818)

* Creating IconButton

* Changed naming: logo is now icon

* Hard-coded inset values for ellipses

* Removed default SVG

* Fixed test

* Removed logo from test
# This is the commit message #3:

chore: Improves the native filters UI/UX - iteration 6 (#14932)


# This is the commit message #4:

fix: is_temporal should overwrite is_dttm (#14894)

* fix: is_temporal should overwrite is_dttm

* move up
# This is the commit message #5:

fix: time parser truncate to first day of year/month (#14945)


# This is the commit message #6:

hook up available databases

* fix test for db modal

* feat(db-connection-ui): Allow users to pick engine (#14884)

* poc picker for db selection

* working select

* setup is loading for available dbs and step1 view

* fix on close

* update on fetch

* remove unneeded code

* add some styls

* elizabeth revisions

* add back headers

* add step

* feat: Dynamic Form for edit DB Modal (#14845)

* split db modal file

* split db modal file

* hook up available databases

* add comment

* split db modal file

* hook up available databases

* use new validation component

* first draft

* use new validation component

* get tests passing

* split db modal file

* hook up available databases

* use new validation component

* feat(db-connection-ui): Allow users to pick engine (#14884)

* poc picker for db selection

* working select

* setup is loading for available dbs and step1 view

* fix on close

* update on fetch

* remove unneeded code

* add some styls

* revisions

* fix package-lock.json

* # This is a combination of 6 commits.
# This is the 1st commit message:

feat: validation db modal (#14832)

* split db modal file

* hook up available databases

* use new validation component
# This is the commit message #2:

feat: Icon Button (#14818)

* Creating IconButton

* Changed naming: logo is now icon

* Hard-coded inset values for ellipses

* Removed default SVG

* Fixed test

* Removed logo from test
# This is the commit message #3:

chore: Improves the native filters UI/UX - iteration 6 (#14932)


# This is the commit message #4:

fix: is_temporal should overwrite is_dttm (#14894)

* fix: is_temporal should overwrite is_dttm

* move up
# This is the commit message #5:

fix: time parser truncate to first day of year/month (#14945)


# This is the commit message #6:

hook up available databases

* fix test for db modal

* feat(db-connection-ui): Allow users to pick engine (#14884)

* poc picker for db selection

* working select

* setup is loading for available dbs and step1 view

* fix on close

* update on fetch

* remove unneeded code

* add some styls

* more revisions

* used db.backend

* added engine to model

* elizabeth revisions

* elizabeth revisions

Co-authored-by: Elizabeth Thompson <eschutho@gmail.com>
Co-authored-by: hughhhh <hughmil3s@gmail.com>

* address comments

* oops

* # This is a combination of 6 commits.
# This is the 1st commit message:

feat: validation db modal (#14832)

* split db modal file

* hook up available databases

* use new validation component
# This is the commit message #2:

feat: Icon Button (#14818)

* Creating IconButton

* Changed naming: logo is now icon

* Hard-coded inset values for ellipses

* Removed default SVG

* Fixed test

* Removed logo from test
# This is the commit message #3:

chore: Improves the native filters UI/UX - iteration 6 (#14932)


# This is the commit message #4:

fix: is_temporal should overwrite is_dttm (#14894)

* fix: is_temporal should overwrite is_dttm

* move up
# This is the commit message #5:

fix: time parser truncate to first day of year/month (#14945)


# This is the commit message #6:

hook up available databases

* fix test for db modal

* feat(db-connection-ui): Allow users to pick engine (#14884)

* poc picker for db selection

* working select

* setup is loading for available dbs and step1 view

* fix on close

* update on fetch

* remove unneeded code

* add some styls

* remove merge conflicts

* small fix on blocking creating

* feat(db-connection-ui): Big Query Add Database Form (#14829)

* fix(native-filters): Manage default value of filters by superset (#14785)

* fix:fix get permission function

* feat: manage default value in superset

* fix(native-filters): loop bug by simplify state handling (#14788)

* fix: set table name width to not hide icons when name is too long (#14489)

* fix: set table name width to now hide icons when name is too long

* fix: table style

Co-authored-by: einatnielsen <einat.bertenthal@nielsen.com>

* feat(explore): Remove default for time range filter and Metrics (#14661)

* feat(explore): Remove default for time range filter and Metrics

* Merge errors with same messages

* Fix e2e test

* Rename a variable

* Bump packages

* Fix unit tests

* feat: chart gallery search improvement (#14484)

* feat: chart gallery search improvement

* test: adding unit test for VizTypeControl

* fix: lint errors

Co-authored-by: einatnielsen <einat.bertenthal@nielsen.com>

* Update schemas.py

* Update bigquery.py

* Fix tests

* big query form is appearing on the screen

* add name to allow for actions to get picked up

* working post for saving db via paste

* working file upload

* switch to textare

* better styles

* add delete buttong

* save formating

* wrap encrypted_extra

* formatting component

* clear out file input before reloading

* remove default driver

* address comments

* fix things off rebase

* small refactore

* more patches

* checkout space file

* fix variable ref

Co-authored-by: simcha90 <56388545+simcha90@users.noreply.github.com>
Co-authored-by: Ville Brofeldt <33317356+villebro@users.noreply.github.com>
Co-authored-by: Einat Bertenthal <einatbar@users.noreply.github.com>
Co-authored-by: einatnielsen <einat.bertenthal@nielsen.com>
Co-authored-by: Kamil Gabryjelski <kamil.gabryjelski@gmail.com>
Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>

* feat: adding SSL Toggle to Create Database Modal (#14976)

* first draft of SSL Toggle

* added payload data

* Update superset-frontend/src/views/CRUD/data/database/DatabaseModal/DatabaseConnectionForm.tsx

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>

* changed tooltips based on stephen advice

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>
Co-authored-by: Hugh A. Miles II <hughmil3s@gmail.com>

* feat(database-connection-ui) Allow configuration of Database Images from SupersetText (#15023)

* saving this for now

* fix some styles

* add database images

* fix

* enforce only numbers

* add default iamge

* fix bug

* additional params to the DatabaseConnectionForm (#15071)

* additional params to the DatabaseConnectionForm

* save passing params up to api

* feat: Added Steps and centralized Headers (#15041)

* fix superset_text issue (#15095)

* fix edit issue by returning parameters properly (#15101)

* feat: added alerts (#15103)

* added alerts

* revisions

* fix: add icons (#15122)

* added alerts

* revisions

* added icon

* Update superset-frontend/src/views/CRUD/data/database/DatabaseModal/index.tsx

Co-authored-by: AAfghahi <48933336+AAfghahi@users.noreply.github.com>

* fix: fixing api tests for database connections (#15124)

* fixing api tests

* added test for no config method on create

* added config method to validation tests

* fix(db-connection-ui): Additional Query Parameters render (#15150)

* working query params

* move condition out before update or create

* fix type script issues

* feat(db-connection-ui): Move fields from Extra section and split engine and metadata (#15143)

* working edit extra options

* acquired most of json

* recontruct json

* add schema array

* add proper styles

* fix tslint issues

* remove console.log

* this is working

* style: Database connect UI Polish - Step 1 (#15119)

* save avg

* Styled step 1

* Remove Alert

* Finished styling, added ellipsis library to IconButton

* Fixed text margin

Co-authored-by: hughhhh <hughmil3s@gmail.com>

* fix app from merge

* fix tslint issues

* fix all tslint issue on feature branch

* catch errors for dialects with no driver set

* fix dremio issue

* fix dialect issue without driver attr

* Styled step 3 (#15187)

* feat: adding server-side validation and unmasked password on create (#15151)

* fix: add icons (#15122)

* added alerts

* revisions

* added icon

* validation and password masking

* revisions and validation range

* revisions

* added beto revisions

* added tests for port range

* added config to available

* testing, rtl

* made tests always pass

* feat: add Close/Finish buttons to DBModal on Edit (#15199)

* fix(db-connection-ui): Allow Dynamic Big Query Edits (#15185)

* working big query edits

* fix big stoping users from moving to next step

* fix default

* save defaults

* fix tslint

* remove object

* fix styling

* fix: Connect on DB Connection wasn't working (#15201)

* fix: add icons (#15122)

* added alerts

* revisions

* added icon

* fixed the connect button

* make available alphabetically sort

* make available alphabetically sort II

* fix selection

* remove console.log

* fix styling

* fix: fix api_test and typeScript error (#15202)

* fix big query issue

* allow for query params

* feat: Added Dynamic form link to SQL Alchemy Form (#15208)

* fix: add icons (#15122)

* added alerts

* revisions

* added icon

* added dynamic form link

* fix: fix api tests for test_available (#15210)

* fix: add icons (#15122)

* added alerts

* revisions

* added icon

* fixes api tests

* feat: added Spinner to DB Modal (#15229)

* fix: add icons (#15122)

* added alerts

* revisions

* added icon

* spinner

* Made header sticky (#15204)

* fix: make Edit DB modal look similar to create Modal (#15231)

* fix: add icons (#15122)

* added alerts

* revisions

* added icon

* spinner

* changed edit

* fix: DB Connection UI R2 Fixes (#15232)

* fix display name refill

* fix order of additional params to always be at the bottom

* remove schema check on validation

* make encryption last

* fix json file upload

* fix additional params issue

* remove comments

* add back validation

* small fixes on bigquery edit

* only wrap encrypted with bigquery

* specific conditions for wrapping big query items

* dix additional params

* fix allow display name in sqlalchemy form

* backend before engine

* fix: do not use Marshmallow validation in partial params validation (#15236)

* fix: do not use Marshmallow validation in partial params validation

* Fix lint

* Update test

* make display name required

* reset validation errors onClose (#15243)

* fix: Edit for all dynamic forms (#15244)

* fix edit for dynamic forms

* fix linting

* fix edit on sqlalchemy forms

* fix big query reference

* remove extra if

* wrap configuration method (#15274)

* add more specific engine elastic search (#15287)

* do a deep copy of obj before POST (#15298)

* feat: add Back button to extra options (#15300)

* fix: add icons (#15122)

* added alerts

* revisions

* added icon

* spinner

* first draft

* working

* added back button to create modal

* revisions and testing

* chore: Add tooltips and button to Connect Postgresql DB Modal Form (#15179)

* Added tooltips. Still need to place in the right spot.

* Revert to where I started.

* Added 3 tooltips, 1 Button(need link config). BigQuery not added yet.

* Added tooltip BigOuery modal. `span` above upload btn missing `*`

* Added tooltip to `Host` field. Alignment needs to be fixed.

* Stuck trying to add conditional render of tooltip to LabeledErrorBoundInput

* Clean commit for review

* Dynamic tooltip componet created. Needs alignment of SVG still.

* Fixed typo.

* Added line spacing back in

* Changed required props to optional/Remove comment

* Fixed alignment of tooltips & moved 2tooltips outside of Btn

* Added one more line space back in

* Removed Typo

* Removed another typo

* Flixed linter error

* Created test for tooltip.

* Added expectation for visible tooltipIcon

Co-authored-by: andrewbastian <andrewbastian@hosaka-deck.lan>

* style: Database Modal UI Polish (#15234)

* Corrected polishing tasks from Clubhouse ticket

* More UI polish

* Added more polish

* Moved encryption field and created constant value for viewBox in InfoToolTip

* feat: allow editing (#15308)

* fix: add icons (#15122)

* added alerts

* revisions

* added icon

* spinner

* elizabeth fixed the edit issue

* feat: Added error alert for DB connection Modal  (#15242)

* fix: add icons (#15122)

* added alerts

* revisions

* added icon

* spinner

* added errorAlert

* added revisions

* current work

* revisions

* fix: validation on edit (#15310)

* fix: Big Query Error messaging (#15334)

* remove validation check

* remove validation check

* fix error messaging

* stop validation on big query

* add condition for skipping specific engines for validation

* if no params

* update styles

* feat: big Query using back button (#15338)

* fix: password errors on validation (#15372)

* filter out password supply for validation

* filter password

* feat: updated Error Alert (#15377)

* Updated styling (#15379)

* fix password error filter

* feat: Arash/password field error (#15388)

* fix: Back Button on Create for DB conncetion (#15389)

* fix: add icons (#15122)

* added alerts

* revisions

* added icon

* spinner

* fixing backButton on Create

* fix doc (#15393)

* style: Database Connection Modal UI Polish R5 (#15412)

* Fixed inconsistent header spacing in step 1

* Touched up tooltips

* Added red *s to BigQuery form

* Centered modal window

* make alerts configurable (#15404)

* fix: Allow users to override database connection docs (#15434)

* allow users to override docs

* fix linting issue

* fix: Error Icon not showing up on  errored input fieds on validation (#15431)

* Fixed now-show error icon

Signed-off-by: andrewbastian <andrew.bastian@gmail.com>

* Changed `%` to `px`

* Fixed lint error

* Changed units to `theme.gridUnit`

* test: RTL testing on DatabaseModal (#15394)

* RTL testing on DatabaseModal

* Continued RTL testing on DatabaseModal

* Code cleanup

* Removed a comment that missed my radar

* test: Add e2e testing (#15376)

* create boilerplate for cypress test

* added 1 more test

* add more test cases

* saving this for development

* lit

* remove name

* update pass

* remove unused test

* fix merge conflicts

* Fixed "connetion" typo (#15458)

* fix: Database connection modal touch up (#15463)

* Removed unnecessary TODO and named the remaining ones

* Added translation functionality

* Fixed typo in Database Modal RTL test

* Update modal.test.ts

* fix: Showing errors for SQLA forms (#15462)

* fix documentation links

* fix sqlalchemy onCreate

* Fixing SQLA error messaging

* fix logic for extra save

* fix this issue

* fix: Update Invalid Port SIP-40 Reference (#15464)

* Fixed jumpy header text

* fix: Edit Modal not saving properly (#15468)

* Aligned info icons on dynamic form

* fix: merge conflict (#15479)

* chore: simplify errors and issue codes (#15437)

* Fix issue number

* Fix test

* Fixed line-height in header, also fixed translation functions in BigQuery

* Updated placeholder text in additional params field

* Fixed padding in edit form

* Corrected placeholder text in BigQuery > Service Account field

* Make linter happy

Co-authored-by: Elizabeth Thompson <eschutho@gmail.com>
Co-authored-by: Arash <arash.afghahi@gmail.com>
Co-authored-by: hughhhh <hughmil3s@gmail.com>
Co-authored-by: AAfghahi <48933336+AAfghahi@users.noreply.github.com>
Co-authored-by: simcha90 <56388545+simcha90@users.noreply.github.com>
Co-authored-by: Ville Brofeldt <33317356+villebro@users.noreply.github.com>
Co-authored-by: Einat Bertenthal <einatbar@users.noreply.github.com>
Co-authored-by: einatnielsen <einat.bertenthal@nielsen.com>
Co-authored-by: Kamil Gabryjelski <kamil.gabryjelski@gmail.com>
Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>
Co-authored-by: Andrew Bastian <50464395+andrewbastian@users.noreply.github.com>
Co-authored-by: andrewbastian <andrewbastian@hosaka-deck.lan>
2021-07-02 12:19:26 -05:00
Amit MiranandGitHub e5ab9a4091 chors(docs): update DASHBOARD_RBAC (#15514) 2021-07-02 11:32:45 -04:00
Phillip Kelley-DotsonandGitHub ea2a98fcc2 refactor: icon to icons for popovercomponent (#15451)
* initial commit

* fix test

* lint

* align icon

* remove consoles
2021-07-02 08:07:06 -07:00
Ville BrofeldtandGitHub ee2ee48661 feat(cross-filters): add option to clear set cross filters (#15500)
* feat(cross-filters): add option to clear set cross filters

* lint

* fix indicator size, remove bolded text and rephrase text
2021-07-02 17:04:05 +03:00
99fe9c5657 fix: Utilizing dashboard native filter feature flag (#15519)
Co-authored-by: John Bodley <john.bodley@airbnb.com>
2021-07-02 14:49:04 +03:00
Yaozong LiuandGitHub 81633e99ae refactor(dashboard): [chart-maximize-mode]put chart full-size state in redux (#15384)
* refactor(dashboard): [chart-maximize-mode]put full-size status to redux

* fix: ci
2021-07-02 13:11:00 +03:00
Beto DealmeidaandGitHub cbc4aa8dc1 feat: extra table metadata for Google Sheets (#14775)
* feat: GSheets extra table metadata

* Bump version
2021-07-01 19:27:26 -07:00
Hugh A. Miles IIandGitHub d4480f5c9a feat: Database Connection UI (#14881) 2021-07-01 14:40:27 -07:00
Phillip Kelley-DotsonandGitHub 7f2f51b2bd refactor: icon to icons for listviewcomponent (#15408)
* initial commit

* fix dashboard cypress tests

* fix more tests

* fix more tests

* fix listviews
2021-07-01 12:36:16 -06:00
Yaozong LiuandGitHub 246368e9dc fix(sqllab): add new tab when add sql query (#15492) 2021-07-01 12:32:15 -06:00
Phillip Kelley-DotsonandGitHub 7889564250 refactor: icon to icons for infotooltip component (#15398)
* intital commit

* align label texts and icons

* fix style
2021-07-01 08:52:17 -07:00
ofekisrandGitHub b5119b8dff refactor(tests): decouple unittests from integration tests (#15473)
* refactor move all tests to be under integration_tests package

* refactor decouple unittests from integration tests - commands

* add unit_tests package

* fix celery_tests.py

* fix wrong FIXTURES_DIR value
2021-07-01 18:03:07 +03:00
Beto DealmeidaandGitHub 55d0371b92 fix: GSheets supports JOINs (#15487) 2021-07-01 07:28:28 -07:00
Mironov DanilandGitHub 665459fbca feat(native-filters): add null option to value filter (#15419)
* fix: add null var to native filter (#15291)

* small fix

* refactoring code

* restructure the JS code

* update testcase
2021-07-01 16:06:10 +03:00
Kamil GabryjelskiandGitHub 0ff3253afd fix(native-filters): chartsInScope were not recalculated in some cases (#15498)
* fix(native-filters): chartsInScope were not recalculated in some cases

* Small refactor
2021-07-01 14:47:14 +02:00
Étienne Boisseau-SierraandGitHub baf42bc2c5 docs: improve docs on running tests locally (#14102)
* Fix missing items in ToC

Thanks to whatever autoformatting tool was running (:

Signed-off-by: Étienne Boisseau-Sierra <etienne.boisseau-sierra@unipart.io>

* Fix minimal Python version required

Currently Python 3.7 is still supported by Superset — cf.
https://github.com/apache/superset/blob/4b23d0eccabcc3932369c90468be8b4f36ec64d0/setup.py#L160

I assue it is thus safe to run the test with Py3.7.

Signed-off-by: Étienne Boisseau-Sierra <etienne.boisseau-sierra@unipart.io>

* List MySQL/MariaDB as OS dependecy for test

As raised in issue #14052, MySQL (or MariaDB) is required for being able
to install the Python requirements.
(I assume due to `mysqlclient` dependency — cf.
https://github.com/apache/superset/blob/master/requirements/development.txt#L23)

Signed-off-by: Étienne Boisseau-Sierra <etienne.boisseau-sierra@unipart.io>

* Fix which dependencies are installed for tests

To install `tox` (for running the test suite), we want to install the…
testing dependencies, rather than “simply” the local ones.

Note that the `requirements/testing` is a superset of the
`requirements/local`:
https://github.com/apache/superset/blob/master/requirements/testing.txt
vs https://github.com/apache/superset/blob/master/requirements/local.txt

Linked to issue #14052

Signed-off-by: Étienne Boisseau-Sierra <etienne.boisseau-sierra@unipart.io>

* Emphasize how to name demo admin user

Related to #14052

Signed-off-by: Étienne Boisseau-Sierra <etienne.boisseau-sierra@unipart.io>

* Fix max Python version required

Indeed, Python 3.9 isn't yet supported (cf. e.g., issue #14159).

Signed-off-by: Étienne Boisseau-Sierra <etienne.boisseau-sierra@unipart.io>
2021-07-01 14:11:03 +03:00
Max VoitkoandGitHub a3a34773ae Update ingress api version to v1 (#15273)
extensions/v1beta1 Ingress is deprecated in v1.14+, unavailable in v1.22+;
networking.k8s.io/v1 Ingress should be used
2021-07-01 14:06:22 +03:00
Yongjie ZhaoandGitHub 285c1b5d22 fix: skip set and log when NullCache (#15493) 2021-07-01 14:04:46 +03:00
Ville BrofeldtandGitHub f286647140 chore(native-filters): remove instant filtering option (#15365)
* chore(native-filters): remove instant filtering option

* fix test
2021-07-01 13:38:56 +03:00
e5d4765986 feat(dashboard-groupby): group by - add ability to exclude columns (#15454)
* feat: group by - add ability to exclude columns

* fix: create column select in a more generic way

* fix: MR comments

* fix: remove description

* fix: multiple value bug in column select

* fix: initial value bug

* fix: lint

* fix: unit tests

* fix: MR comments

* fix: MR comment

Co-authored-by: einatnielsen <einat.bertenthal@nielsen.com>
2021-07-01 13:28:07 +03:00
Beto DealmeidaandGitHub e606477ec1 feat: more SIP-40 errors (#15482) 2021-06-30 16:32:59 -07:00
ffa51753e3 refactor: Moving get_user_datasources to security manager (#15467)
Co-authored-by: John Bodley <john.bodley@airbnb.com>
2021-07-01 04:51:11 +12:00
Abhishek JogandGitHub cad5ba828c documentation changes for netezza (#15475) 2021-06-30 10:58:33 -04:00
6c16f9bb2f fix: bump Redis minor version (#15430)
Co-authored-by: Maksym V <maksym.v@pm.bet>
2021-06-30 15:36:30 +03:00
Abhishek JogandGitHub 7ad8fd5c98 feat(add Netezza database): Add IBM Netezza support (#15450)
* Add netezza to superset

* update netezza logo

* change in logo filename

* fixing linter error

* removing stray code
2021-06-30 08:27:54 -04:00
5f96e63bbb fix(native-filters): Fix clear all button (#15438)
* fix:fix get permission function

* fix: "clear all" async flow

* lint: fix lint

* Update superset-frontend/src/dashboard/components/nativeFilters/FilterBar/Header/index.tsx

Co-authored-by: Ville Brofeldt <33317356+villebro@users.noreply.github.com>

* lint: fix lint

Co-authored-by: Ville Brofeldt <33317356+villebro@users.noreply.github.com>
2021-06-30 14:59:04 +03:00
Yongjie ZhaoandGitHub 61e6b7017b fix: nvd3 bar chart sortby metric (#15318) 2021-06-30 19:36:05 +08:00
Yongjie ZhaoandGitHub 292bce5862 fix: raise unexpected error when orderby is empty (#15353)
* fix: raise unexpected error when orderby is empty

* fix ut
2021-06-30 19:34:54 +08:00
Phillip Kelley-DotsonandGitHub ebb3efce5a initial commit (#15466) 2021-06-30 03:32:57 -07:00
a2d69ea252 feat(trino): add support for query cost estimate #15166 (#15177)
* added estimate_statement_cost to trino

* file formatted

Co-authored-by: rijojoseph01 <rijo.joseph@myntra.com>
2021-06-30 13:05:22 +03:00
Beto DealmeidaandGitHub 5181a74116 chore: simplify errors and issue codes (#15437) 2021-06-29 19:33:28 -07:00
Max VoitkoandGitHub 8b3d08aeed feat: add env vars from multiple secrets in Helm chart (#15426) 2021-06-29 18:34:45 -07:00
Beto DealmeidaandGitHub 149c5fd594 feat: add more SIP-40 errors to SQL Lab (#15436) 2021-06-29 18:17:16 -07:00
AAfghahiandGitHub 743d9cc928 feat: Better Errors in SQL Lab (#15432)
* snowflake errors

* added big query

* added to setup error messages, first test

* all big query testing added

* added snowflake test

* added syntax error

* added syntax errors to most used databases
2021-06-29 16:48:27 -07:00
Kamil GabryjelskiandGitHub 4a394cd6fb fix(dashboard): native filters highlight with multiple tabs jumps to first tab (#15455) 2021-06-29 20:26:55 +03:00
Ville BrofeldtandGitHub 4630abb5a8 feat(native-filters): add support for preselect filters (#15427)
* feat(native-filters): add support for sharing preselected filters

* abc

* add serialization
2021-06-29 18:57:49 +03:00
Ville BrofeldtandGitHub ab7f31fd85 Revert "refactor(feature_flags configurations): remove redundant additional configuration for default vales (#15425)" (#15448) 2021-06-29 16:52:01 +03:00
Ville BrofeldtandGitHub dd407331a6 fix(native-filters): filter type check when using experimental flag (#15446) 2021-06-29 15:04:39 +03:00
Daniel Vaz GasparandGitHub 727847d2e5 fix: remove unnecessary app context on celery (#15422)
* fix: remove unnecessary app context on celery

* fix lint

* fix lint
2021-06-29 12:16:16 +01:00
Kamil GabryjelskiandGitHub f109da479d perf(dashboard): Improve perf of highlighting charts in scope of active filter (#15424)
* perf(dashboard): Improve perf of highlighting charts in scope of active filter

* More optimizations

* fix tests

* Fix lint

* bug fix
2021-06-29 12:55:53 +02:00
Ville BrofeldtandGitHub f33a0e1d68 fix: import superset_config (#15444)
* fix: import superset_config

* make module name constant
2021-06-29 13:30:05 +03:00
2af928796a chore(docs): Manage access to Dashboards (#15413)
* chore: docs for Manage access to Dashboards

* fixL pre-commit

* fix: undo mistake

* Update index.mdx

* Update index.mdx

minor tweaks

* fix: pre-commit

Co-authored-by: Srini Kadamati <skadamat@gmail.com>
2021-06-29 12:46:33 +03:00
Sonya SmirnovaandGitHub fa6b25d257 fix(explore): switch to correct scheme registry for custom sequential color schemes (#15314)
* Switch to correct scheme registry for custom sequential color schemes

* Linting
2021-06-29 11:43:42 +03:00
b8f4e7d093 fix: add dashboard markdown id (#15418)
Co-authored-by: root <root@src4.ikrsnik.devonly.net>
2021-06-29 11:42:28 +03:00
Bonifacio de OliveiraandGitHub fe7755897c add missing logging import (#14994) 2021-06-29 11:41:23 +03:00
Jesaja EverlingandGitHub 1797805740 Fix wrong filename mentioned in INSTALL.md (#14630)
INSTALL.md mentions Dockerfile.from_tarball, but it's actually Dockerfile.from_local_tarball
2021-06-29 11:40:26 +03:00
GeidoandGitHub faae27bd2f Open in _self (#14778) 2021-06-29 11:38:00 +03:00
076f774daf refactor: icon to icons for lastupdated component (#15401)
* intial commit

* fix test

* Update superset-frontend/src/components/LastUpdated/index.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
2021-06-29 00:32:54 -07:00
a0179ac513 refactor: icon to icons for inderteminatecheckbox icon (#15397)
* initial commit

* fix cypress tests

* Update superset-frontend/src/components/IndeterminateCheckbox/index.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update index.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
2021-06-29 00:32:17 -07:00
Beto DealmeidaandGitHub ed6d10e283 Remove pydash merge (#15435) 2021-06-28 15:40:44 -07:00
Beto DealmeidaandGitHub 21d1fb55c6 feat: more error messages (#15409) 2021-06-28 14:51:31 -07:00
Michael S. MolinaandGitHub e713912fdf chore: Uses mixed case for native filters headers (#15433) 2021-06-28 17:09:31 -03:00
Daniel Vaz GasparandGitHub f52b6715cf fix: downgrade selenium log level on timeout (#15328) 2021-06-28 20:02:05 +01:00
Michael S. MolinaandGitHub 0b7e524f02 fix: Select item when allowNewOptions is true and the Enter is pressed (#15429) 2021-06-28 15:29:58 -03:00
18f3089fb5 Update CONTRIBUTING.md (#14880)
Description of the extra_filters chart parameter, usage ideas and links to source files.

Co-authored-by: Dirzel <78026187+Dirzel@users.noreply.github.com>
2021-06-28 20:07:11 +03:00
Michael S. MolinaandGitHub ac18c90da2 fix: Cascading filter popover widens automatically (#15390) 2021-06-28 20:03:14 +03:00
Grace GuoandGitHub 1c4cb28e91 fix: double click slq lab table cell (#15400) 2021-06-28 17:05:46 +03:00
Marek ŠuppaandGitHub 93447d1903 Update Header.jsx (#13467)
* Fix typo in the warning that gets displayed with the `positionJSON` is too large/long.
2021-06-28 17:02:41 +03:00
ofekisrandGitHub 486b8d911f refactor(feature_flags configurations): remove redundant additional configuration for default vales (#15425) 2021-06-28 16:30:13 +03:00
ofekisrandGitHub d8a1acffde chore(refactor): load configuration and merge recursively (#15405)
* refactor load configuration

* refactor init configuration to enable recursive merge

* Update config.py

* Update app.py

* fix lint and black issue
2021-06-28 13:53:26 +03:00
Ville BrofeldtandGitHub ddcf461749 fix(native-filters): show human readable time grain label in indicator (#15411)
* fix(native-filters): show human readable time grain label in indicator

* lint

* simplify
2021-06-28 13:35:14 +03:00
Amit MiranandGitHub 8205ea53ab chore: add DASHBOARD_FILTERS_EXPERIMENTAL ff to BE default value (#15417) 2021-06-28 12:56:43 +03:00
f53b2c6587 docs: Update SIP template (#14278)
* [SIP] Update SIP template

* Update sip.md

* Update .github/ISSUE_TEMPLATE/sip.md

Co-authored-by: Erik Ritter <erik.ritter@airbnb.com>

Co-authored-by: Amit Miran <47772523+amitmiran137@users.noreply.github.com>
Co-authored-by: Erik Ritter <erik.ritter@airbnb.com>
2021-06-28 07:28:16 +03:00
Ke ZhuandGitHub 2ebc0a078a chore: upgrade Flask-Caching>=1.10.0 2021-06-28 08:58:56 +08:00
dkrat7andGitHub e62cb2f991 chore: Add Slovenian (sl_SI) translation (#14908)
* slovenian translation - config file

* slovenian translation - po, json
2021-06-27 23:30:16 +03:00
a4ce9521e2 docs: release documentation for 1.2 (#14572)
* initial

* updated release notes with more content, more media. Added unorganized list of PRs to full changelog.

* Finalize release notes and organized changelog for 1.2

* lint removal

* Update RELEASING/release-notes-1-2/README.md

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update RELEASING/release-notes-1-2/README.md

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update RELEASING/release-notes-1-2/README.md

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update RELEASING/release-notes-1-2/README.md

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update RELEASING/release-notes-1-2/README.md

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update RELEASING/release-notes-1-2/README.md

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

Co-authored-by: Srini Kadamati <skadamat@gmail.com>
Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
2021-06-27 23:29:08 +03:00
b9b903f8e6 feat: Adding a show all button to the column/metrics list in the explore view (Allow more than 50 columns to be shown) (#15153)
* Adding a show all button to the column/metrics list in the explore view

* Update superset-frontend/src/explore/components/DatasourcePanel/index.tsx

Co-authored-by: cccs-rc <62034438+cccs-rc@users.noreply.github.com>

* Update superset-frontend/src/explore/components/DatasourcePanel/index.tsx

Co-authored-by: cccs-rc <62034438+cccs-rc@users.noreply.github.com>

* Fixing typo

Co-authored-by: cccs-rc <62034438+cccs-rc@users.noreply.github.com>
2021-06-27 23:16:53 +03:00
697 changed files with 41994 additions and 13926 deletions
+1
View File
@@ -33,6 +33,7 @@ If applicable, add screenshots to help explain your problem.
- superset version: `superset version`
- python version: `python --version`
- node.js version: `node -v`
- any feature flags active:
### Checklist
+2 -2
View File
@@ -6,9 +6,9 @@ labels: "#SIP"
---
*Please make sure you are familiar with the SIP process documented*
(here)[https://github.com/apache/superset/issues/5602]
(here)[https://github.com/apache/superset/issues/5602]. The SIP number should be the next number after the latest SIP listed [here](https://github.com/apache/superset/issues?q=is%3Aissue+label%3Asip).
## [SIP] Proposal for XXX
## [SIP-\<number>] Proposal for <title>
### Motivation
+1 -1
View File
@@ -192,7 +192,7 @@ cypress-run-all() {
say "::endgroup::"
# Rerun SQL Lab tests with backend persist enabled
export SUPERSET_CONFIG=tests.superset_test_config_sqllab_backend_persist
export SUPERSET_CONFIG=tests.integration_tests.superset_test_config_sqllab_backend_persist
# Restart Flask with new configs
kill $flaskProcessId
+1 -1
View File
@@ -25,7 +25,7 @@ jobs:
env:
FLASK_ENV: development
ENABLE_REACT_CRUD_VIEWS: true
SUPERSET_CONFIG: tests.superset_test_config
SUPERSET_CONFIG: tests.integration_tests.superset_test_config
SUPERSET__SQLALCHEMY_DATABASE_URI: postgresql+psycopg2://superset:superset@127.0.0.1:15432/superset
PYTHONPATH: ${{ github.workspace }}
REDIS_PORT: 16379
@@ -0,0 +1,193 @@
# Python integration tests
name: Python-Integration
on:
push:
branches-ignore:
- "dependabot/npm_and_yarn/**"
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
jobs:
test-mysql:
if: github.event.pull_request.draft == false
runs-on: ubuntu-20.04
strategy:
matrix:
python-version: [3.7]
env:
PYTHONPATH: ${{ github.workspace }}
SUPERSET_CONFIG: tests.integration_tests.superset_test_config
REDIS_PORT: 16379
SUPERSET__SQLALCHEMY_DATABASE_URI: |
mysql+mysqldb://superset:superset@127.0.0.1:13306/superset?charset=utf8mb4&binary_prefix=true
services:
mysql:
image: mysql:5.7
env:
MYSQL_ROOT_PASSWORD: root
ports:
- 13306:3306
redis:
image: redis:5-alpine
options: --entrypoint redis-server
ports:
- 16379:6379
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v2
with:
persist-credentials: false
submodules: recursive
- name: Check if python changes are present
id: check
env:
GITHUB_REPO: ${{ github.repository }}
PR_NUMBER: ${{ github.event.pull_request.number }}
continue-on-error: true
run: ./scripts/ci_check_no_file_changes.sh python
- name: Setup Python
if: steps.check.outcome == 'failure'
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
if: steps.check.outcome == 'failure'
uses: ./.github/actions/cached-dependencies
with:
run: |
apt-get-install
pip-upgrade
pip install -r requirements/testing.txt
setup-mysql
- name: Run celery
if: steps.check.outcome == 'failure'
run: celery --app=superset.tasks.celery_app:app worker -Ofair -c 2 &
- name: Python integration tests (MySQL)
if: steps.check.outcome == 'failure'
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
test-postgres:
if: github.event.pull_request.draft == false
runs-on: ubuntu-20.04
strategy:
matrix:
python-version: [3.7, 3.8]
env:
PYTHONPATH: ${{ github.workspace }}
SUPERSET_CONFIG: tests.integration_tests.superset_test_config
REDIS_PORT: 16379
SUPERSET__SQLALCHEMY_DATABASE_URI: postgresql+psycopg2://superset:superset@127.0.0.1:15432/superset
services:
postgres:
image: postgres:10-alpine
env:
POSTGRES_USER: superset
POSTGRES_PASSWORD: superset
ports:
# Use custom ports for services to avoid accidentally connecting to
# GitHub action runner's default installations
- 15432:5432
redis:
image: redis:5-alpine
ports:
- 16379:6379
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v2
with:
persist-credentials: false
submodules: recursive
- name: Check if python changes are present
id: check
env:
GITHUB_REPO: ${{ github.repository }}
PR_NUMBER: ${{ github.event.pull_request.number }}
continue-on-error: true
run: ./scripts/ci_check_no_file_changes.sh python
- name: Setup Python
if: steps.check.outcome == 'failure'
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
if: steps.check.outcome == 'failure'
uses: ./.github/actions/cached-dependencies
with:
run: |
apt-get-install
pip-upgrade
pip install -r requirements/testing.txt
setup-postgres
- name: Run celery
if: steps.check.outcome == 'failure'
run: celery --app=superset.tasks.celery_app:app worker -Ofair -c 2 &
- name: Python integration tests (PostgreSQL)
if: steps.check.outcome == 'failure'
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
test-sqlite:
if: github.event.pull_request.draft == false
runs-on: ubuntu-20.04
strategy:
matrix:
python-version: [3.7]
env:
PYTHONPATH: ${{ github.workspace }}
SUPERSET_CONFIG: tests.integration_tests.superset_test_config
REDIS_PORT: 16379
SUPERSET__SQLALCHEMY_DATABASE_URI: |
sqlite:///${{ github.workspace }}/.temp/unittest.db
services:
redis:
image: redis:5-alpine
ports:
- 16379:6379
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v2
with:
persist-credentials: false
submodules: recursive
- name: Check if python changes are present
id: check
env:
GITHUB_REPO: ${{ github.repository }}
PR_NUMBER: ${{ github.event.pull_request.number }}
continue-on-error: true
run: ./scripts/ci_check_no_file_changes.sh python
- name: Setup Python
if: steps.check.outcome == 'failure'
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
if: steps.check.outcome == 'failure'
uses: ./.github/actions/cached-dependencies
with:
run: |
apt-get-install
pip-upgrade
pip install -r requirements/testing.txt
mkdir ${{ github.workspace }}/.temp
- name: Run celery
if: steps.check.outcome == 'failure'
run: celery --app=superset.tasks.celery_app:app worker -Ofair -c 2 &
- name: Python integration tests (SQLite)
if: steps.check.outcome == 'failure'
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
@@ -17,7 +17,7 @@ jobs:
python-version: [3.8]
env:
PYTHONPATH: ${{ github.workspace }}
SUPERSET_CONFIG: tests.superset_test_config
SUPERSET_CONFIG: tests.integration_tests.superset_test_config
REDIS_PORT: 16379
SUPERSET__SQLALCHEMY_DATABASE_URI: postgresql+psycopg2://superset:superset@127.0.0.1:15432/superset
SUPERSET__SQLALCHEMY_EXAMPLES_URI: presto://localhost:15433/memory/default
@@ -91,7 +91,7 @@ jobs:
python-version: [3.8]
env:
PYTHONPATH: ${{ github.workspace }}
SUPERSET_CONFIG: tests.superset_test_config
SUPERSET_CONFIG: tests.integration_tests.superset_test_config
REDIS_PORT: 16379
SUPERSET__SQLALCHEMY_DATABASE_URI: postgresql+psycopg2://superset:superset@127.0.0.1:15432/superset
SUPERSET__SQLALCHEMY_EXAMPLES_URI: hive://localhost:10000/default
+7 -145
View File
@@ -1,5 +1,5 @@
# Python unit tests
name: Python
name: Python-Unit
on:
push:
@@ -9,150 +9,14 @@ on:
types: [synchronize, opened, reopened, ready_for_review]
jobs:
test-mysql:
unit-tests:
if: github.event.pull_request.draft == false
runs-on: ubuntu-20.04
strategy:
matrix:
python-version: [3.7]
python-version: [3.7,3.8]
env:
PYTHONPATH: ${{ github.workspace }}
SUPERSET_CONFIG: tests.superset_test_config
REDIS_PORT: 16379
SUPERSET__SQLALCHEMY_DATABASE_URI: |
mysql+mysqldb://superset:superset@127.0.0.1:13306/superset?charset=utf8mb4&binary_prefix=true
services:
mysql:
image: mysql:5.7
env:
MYSQL_ROOT_PASSWORD: root
ports:
- 13306:3306
redis:
image: redis:5-alpine
options: --entrypoint redis-server
ports:
- 16379:6379
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v2
with:
persist-credentials: false
submodules: recursive
- name: Check if python changes are present
id: check
env:
GITHUB_REPO: ${{ github.repository }}
PR_NUMBER: ${{ github.event.pull_request.number }}
continue-on-error: true
run: ./scripts/ci_check_no_file_changes.sh python
- name: Setup Python
if: steps.check.outcome == 'failure'
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
if: steps.check.outcome == 'failure'
uses: ./.github/actions/cached-dependencies
with:
run: |
apt-get-install
pip-upgrade
pip install -r requirements/testing.txt
setup-mysql
- name: Run celery
if: steps.check.outcome == 'failure'
run: celery --app=superset.tasks.celery_app:app worker -Ofair -c 2 &
- name: Python unit tests (MySQL)
if: steps.check.outcome == 'failure'
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
test-postgres:
if: github.event.pull_request.draft == false
runs-on: ubuntu-20.04
strategy:
matrix:
python-version: [3.7, 3.8]
env:
PYTHONPATH: ${{ github.workspace }}
SUPERSET_CONFIG: tests.superset_test_config
REDIS_PORT: 16379
SUPERSET__SQLALCHEMY_DATABASE_URI: postgresql+psycopg2://superset:superset@127.0.0.1:15432/superset
services:
postgres:
image: postgres:10-alpine
env:
POSTGRES_USER: superset
POSTGRES_PASSWORD: superset
ports:
# Use custom ports for services to avoid accidentally connecting to
# GitHub action runner's default installations
- 15432:5432
redis:
image: redis:5-alpine
ports:
- 16379:6379
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v2
with:
persist-credentials: false
submodules: recursive
- name: Check if python changes are present
id: check
env:
GITHUB_REPO: ${{ github.repository }}
PR_NUMBER: ${{ github.event.pull_request.number }}
continue-on-error: true
run: ./scripts/ci_check_no_file_changes.sh python
- name: Setup Python
if: steps.check.outcome == 'failure'
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
if: steps.check.outcome == 'failure'
uses: ./.github/actions/cached-dependencies
with:
run: |
apt-get-install
pip-upgrade
pip install -r requirements/testing.txt
setup-postgres
- name: Run celery
if: steps.check.outcome == 'failure'
run: celery --app=superset.tasks.celery_app:app worker -Ofair -c 2 &
- name: Python unit tests (PostgreSQL)
if: steps.check.outcome == 'failure'
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
test-sqlite:
if: github.event.pull_request.draft == false
runs-on: ubuntu-20.04
strategy:
matrix:
python-version: [3.7]
env:
PYTHONPATH: ${{ github.workspace }}
SUPERSET_CONFIG: tests.superset_test_config
REDIS_PORT: 16379
SUPERSET__SQLALCHEMY_DATABASE_URI: |
sqlite:///${{ github.workspace }}/.temp/unittest.db
services:
redis:
image: redis:5-alpine
ports:
- 16379:6379
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v2
@@ -171,6 +35,7 @@ jobs:
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
# TODO: separated requiermentes.txt file just for unit tests
- name: Install dependencies
if: steps.check.outcome == 'failure'
uses: ./.github/actions/cached-dependencies
@@ -180,14 +45,11 @@ jobs:
pip-upgrade
pip install -r requirements/testing.txt
mkdir ${{ github.workspace }}/.temp
- name: Run celery
if: steps.check.outcome == 'failure'
run: celery --app=superset.tasks.celery_app:app worker -Ofair -c 2 &
- name: Python unit tests (SQLite)
- name: Python unit tests
if: steps.check.outcome == 'failure'
run: |
./scripts/python_tests.sh
pytest ./tests/unit_tests --cache-clear
- name: Upload code coverage
if: steps.check.outcome == 'failure'
run: |
bash .github/workflows/codecov.sh -c -F python -F sqlite
bash .github/workflows/codecov.sh -c -F python -F unit
+13 -5
View File
@@ -81,7 +81,15 @@ confidence=
# --enable=similarities". If you want to run only the classes checker, but have
# no Warning level messages displayed, use"--disable=all --enable=classes
# --disable=W"
disable=long-builtin,dict-view-method,intern-builtin,suppressed-message,no-absolute-import,unpacking-in-except,apply-builtin,delslice-method,indexing-exception,old-raise-syntax,print-statement,cmp-builtin,reduce-builtin,useless-suppression,coerce-method,input-builtin,cmp-method,raw_input-builtin,nonzero-method,backtick,basestring-builtin,setslice-method,reload-builtin,oct-method,map-builtin-not-iterating,execfile-builtin,old-octal-literal,zip-builtin-not-iterating,buffer-builtin,getslice-method,metaclass-assignment,xrange-builtin,long-suffix,round-builtin,range-builtin-not-iterating,next-method-called,parameter-unpacking,unicode-builtin,unichr-builtin,import-star-module-level,raising-string,filter-builtin-not-iterating,using-cmp-argument,coerce-builtin,file-builtin,old-division,hex-method,missing-docstring,too-many-lines,ungrouped-imports,import-outside-toplevel,raise-missing-from,super-with-arguments,bad-option-value,too-few-public-methods,too-many-locals
disable=
missing-docstring,
too-many-lines,
ungrouped-imports,
import-outside-toplevel,
raise-missing-from,
super-with-arguments,
too-few-public-methods,
too-many-locals,
[REPORTS]
@@ -209,7 +217,7 @@ max-nested-blocks=5
[FORMAT]
# Maximum number of characters on a single line.
max-line-length=88
max-line-length=90
# Regexp for a line that is allowed to be longer than the limit.
ignore-long-lines=^\s*(# )?<?https?://\S+>?$
@@ -308,7 +316,7 @@ generated-members=
# List of decorators that produce context managers, such as
# contextlib.contextmanager. Add to this list to register other decorators that
# produce valid context managers.
contextmanager-decorators=contextlib.contextmanager,contextlib2.contextmanager
contextmanager-decorators=contextlib.contextmanager
[VARIABLES]
@@ -365,7 +373,7 @@ max-locals=15
max-returns=10
# Maximum number of branch for function / method body
max-branches=12
max-branches=15
# Maximum number of statements in function / method body
max-statements=50
@@ -374,7 +382,7 @@ max-statements=50
max-parents=7
# Maximum number of attributes for a class (see R0902).
max-attributes=7
max-attributes=8
# Minimum number of public methods for a class (see R0903).
min-public-methods=2
+505
View File
@@ -17,6 +17,511 @@ specific language governing permissions and limitations
under the License.
-->
## Change Log
### 1.2 (Date TBD)
**Features**
- [11498](https://github.com/apache/superset/pull/11498) feat(SIP-39): Websocket sidecar app (#11498) (@Rob DiCiuccio)
- [13894](https://github.com/apache/superset/pull/13894) feat(alert/report): add ALERTS_ATTACH_REPORTS feature flags + feature (#13894) (@Lily Kuang)
- [13828](https://github.com/apache/superset/pull/13828) feat(alert/report): chart as csv format attachment for email and slack (#13828) (@Lily Kuang)
- [14235](https://github.com/apache/superset/pull/14235) feat(alert/report): update content format radio buttons (#14235) (@Lily Kuang)
- [13752](https://github.com/apache/superset/pull/13752) feat(alerts & reports): Easier to read execution logs (#13752) (@Jack Fragassi)
- [14076](https://github.com/apache/superset/pull/14076) feat(can_share): can share chart and dashboard (#14076) (@Amit Miran)
- [13687](https://github.com/apache/superset/pull/13687) feat(cross-filter): Cross filter badge (#13687) (@simcha90)
- [13625](https://github.com/apache/superset/pull/13625) feat(cross-filters): Add scoping for cross filters (#13625) (@simcha90)
- [13523](https://github.com/apache/superset/pull/13523) feat(dashboard): dashboard/id/datasets endpoint (#13523) (@David Aaron Suddjian)
- [13145](https://github.com/apache/superset/pull/13145) feat(dashboard_rbac): manage roles for dashboard (#13145) (@simcha90)
- [13992](https://github.com/apache/superset/pull/13992) feat(dashboard_rbac): provide data access based on dashboard access (#13992) (@Amit Miran)
- [14519](https://github.com/apache/superset/pull/14519) feat(dremio): implement convert_dttm method (#14519) (@Ville Brofeldt)
- [13210](https://github.com/apache/superset/pull/13210) feat(explore): ColumnSelectControl with drag-and-drop (#13210) (@Yongjie Zhao)
- [13598](https://github.com/apache/superset/pull/13598) feat(explore): Drag and drop UX improvements (#13598) (@Kamil Gabryjelski)
- [13294](https://github.com/apache/superset/pull/13294) feat(explore): Postgres datatype conversion (#13294) (@Nikola Gigić)
- [13758](https://github.com/apache/superset/pull/13758) feat(explore): adhoc column formatting for Table chart (#13758) (@Jesse Yang)
- [14340](https://github.com/apache/superset/pull/14340) feat(filter-box): sort by metric on backend (#14340) (@Ville Brofeldt)
- [13576](https://github.com/apache/superset/pull/13576) feat(filter-set): Filter set edge cases (#13576) (@simcha90)
- [13529](https://github.com/apache/superset/pull/13529) feat(filter-set): Filter set history (#13529) (@simcha90)
- [13545](https://github.com/apache/superset/pull/13545) feat(filter-set): Update existing filter set (#13545) (@simcha90)
- [13515](https://github.com/apache/superset/pull/13515) feat(filter-set): adding new filters (#13515) (@simcha90)
- [13678](https://github.com/apache/superset/pull/13678) feat(helm): Add optional apt-get install to superset_bootstrap.sh (#13678) (@Daniel Wood)
- [14030](https://github.com/apache/superset/pull/14030) feat(helm): add pod and deployment annotations to template (#14030) (@Bruno FERNANDO)
- [13683](https://github.com/apache/superset/pull/13683) feat(homescreen and cards): Toggle thumbnails off or on and feature flag (#13683) (@Phillip Kelley-Dotson)
- [13726](https://github.com/apache/superset/pull/13726) feat(native-filters): Add default first value to select filter (#13726) (@simcha90)
- [14461](https://github.com/apache/superset/pull/14461) feat(native-filters): Auto apply changes in FiltersConfigModal (#14461) (@simcha90)
- [13507](https://github.com/apache/superset/pull/13507) feat(native-filters): Filter set tabs (#13507) (@simcha90)
- [14313](https://github.com/apache/superset/pull/14313) feat(native-filters): Implement adhoc filters and time picker in Range and Select native filters (#14313) (@Kamil Gabryjelski)
- [14261](https://github.com/apache/superset/pull/14261) feat(native-filters): Show/Hide filter bar by metdata ff (#14261) (@simcha90)
- [13506](https://github.com/apache/superset/pull/13506) feat(native-filters): Update filter bar buttons (#13506) (@simcha90)
- [14374](https://github.com/apache/superset/pull/14374) feat(native-filters): Use datasets in dashboard as default options for native filters (#14374) (@Kamil Gabryjelski)
- [14314](https://github.com/apache/superset/pull/14314) feat(native-filters): add option to create value in select filter (#14314) (@Ville Brofeldt)
- [14346](https://github.com/apache/superset/pull/14346) feat(native-filters): add optional sort metric to select filter (#14346) (@Ville Brofeldt)
- [14375](https://github.com/apache/superset/pull/14375) feat(native-filters): add refresh button to default value picker (#14375) (@Ville Brofeldt)
- [13569](https://github.com/apache/superset/pull/13569) feat(native-filters): add sort option to select filter (#13569) (@Ville Brofeldt)
- [13622](https://github.com/apache/superset/pull/13622) feat(native-filters): add temporal support to select filter (#13622) (@Ville Brofeldt)
- [13484](https://github.com/apache/superset/pull/13484) feat(native-filters): add timegrain and column filter (#13484) (@Ville Brofeldt)
- [14312](https://github.com/apache/superset/pull/14312) feat(native-filters): add tooltip to control values (#14312) (@Ville Brofeldt)
- [14217](https://github.com/apache/superset/pull/14217) feat(native-filters): select group by support (#14217) (@Amit Miran)
- [13634](https://github.com/apache/superset/pull/13634) feat(reports): SLACK_API_TOKEN as callable or str (#13634) (@ʈᵃᵢ)
- [13135](https://github.com/apache/superset/pull/13135) feat(reports): send notification on error with grace (#13135) (@Daniel Vaz Gaspar)
- [13772](https://github.com/apache/superset/pull/13772) feat(rls): enable row level security by default (#13772) (@Ville Brofeldt)
- [14197](https://github.com/apache/superset/pull/14197) feat(viz): add mixed and radar chart (#14197) (@Ville Brofeldt)
- [13377](https://github.com/apache/superset/pull/13377) feat(viz): implement time picker on filter box (#13377) (@Yongjie Zhao)
- [13144](https://github.com/apache/superset/pull/13144) feat: Add error pages (#13144) (@Sam Faber-Manning)
- [14357](https://github.com/apache/superset/pull/14357) feat: Add etag caching to dashboard APIs (#14357) (@Erik Ritter)
- [14110](https://github.com/apache/superset/pull/14110) feat: Add health endpoint to WebSocket server (#14110) (@Ben Reinhart)
- [13190](https://github.com/apache/superset/pull/13190) feat: Added Rows Returned (#13190) (@AAfghahi)
- [14109](https://github.com/apache/superset/pull/14109) feat: Adding encrypted field factory (#14109) (@Craig Rueda)
- [14234](https://github.com/apache/superset/pull/14234) feat: Adding limiting_factor column to Query model (#14234) (@AAfghahi)
- [14318](https://github.com/apache/superset/pull/14318) feat: Dynamic imports for the Icons component (#14318) (@Geido)
- [13981](https://github.com/apache/superset/pull/13981) feat: FE: Export for Queries II (#13981) (@Lyndsi Kay Williams)
- [14091](https://github.com/apache/superset/pull/14091) feat: FE: Import for Queries II (#14091) (@Lyndsi Kay Williams)
- [13740](https://github.com/apache/superset/pull/13740) feat: Implement Celery SoftTimeLimit handling (#13740) (@Lily Kuang)
- [13340](https://github.com/apache/superset/pull/13340) feat: Implement drag and drop columns for filters (#13340) (@Kamil Gabryjelski)
- [13575](https://github.com/apache/superset/pull/13575) feat: Implement drag and drop for metrics (#13575) (@Kamil Gabryjelski)
- [13521](https://github.com/apache/superset/pull/13521) feat: Logic added to limiting factor column in Query model (#13521) (@AAfghahi)
- [14007](https://github.com/apache/superset/pull/14007) feat: Make async query JWT cookie domain configurable (#14007) (@Ben Reinhart)
- [12862](https://github.com/apache/superset/pull/12862) feat: Make initial user configurable in helm chart (#12862) (@Andreas Eberle)
- [13696](https://github.com/apache/superset/pull/13696) feat: Refactor asyncEvent middleware and add websocket support (#13696) (@Rob DiCiuccio)
- [14256](https://github.com/apache/superset/pull/14256) feat: Setup `supersetText` configuration to overwrite errors (#14256) (@Hugh A. Miles II)
- [14398](https://github.com/apache/superset/pull/14398) feat: Support env vars configuration for WebSocket server (#14398) (@Ben Reinhart)
- [14008](https://github.com/apache/superset/pull/14008) feat: Support feature flag overrides in ephemeral test envs (#14008) (@Rob DiCiuccio)
- [14122](https://github.com/apache/superset/pull/14122) feat: TrinoEngineSpec.adjust_database_uri (#14122) (@Đặng Minh Dũng)
- [13662](https://github.com/apache/superset/pull/13662) feat: add 'extra' column to saved_queries GET (#13662) (@Maxime Beauchemin)
- [13682](https://github.com/apache/superset/pull/13682) feat: add Databricks DB engine spec (#13682) (@Beto Dealmeida)
- [14072](https://github.com/apache/superset/pull/14072) feat: add Echarts gauge chart (#14072) (@krsnik93)
- [13584](https://github.com/apache/superset/pull/13584) feat: add ErrorBoundary to chart controls (#13584) (@Jesse Yang)
- [14267](https://github.com/apache/superset/pull/14267) feat: add alerts & reports to docker compose (#14267) (@Daniel Vaz Gaspar)
- [13152](https://github.com/apache/superset/pull/13152) feat: add connector for CrateDB (#13152) (@Srini Kadamati)
- [13827](https://github.com/apache/superset/pull/13827) feat: add descriptions to report emails (#13827) (@Sam Faber-Manning)
- [14208](https://github.com/apache/superset/pull/14208) feat: add endpoint to fetch available DBs (#14208) (@Beto Dealmeida)
- [13468](https://github.com/apache/superset/pull/13468) feat: add event_logger to test_connection and create_database commands (#13468) (@Hugh A. Miles II)
- [13997](https://github.com/apache/superset/pull/13997) feat: add extract_errors to Postgres (#13997) (@Beto Dealmeida)
- [13586](https://github.com/apache/superset/pull/13586) feat: add more big data for testing (#13586) (@Beto Dealmeida)
- [13448](https://github.com/apache/superset/pull/13448) feat: add option to load big/wide tables (#13448) (@Beto Dealmeida)
- [13364](https://github.com/apache/superset/pull/13364) feat: add unit test for LimitMethod.FETCH_MANY (#13364) (@Beto Dealmeida)
- [13606](https://github.com/apache/superset/pull/13606) feat: add warning metadata to tables and metrics (#13606) (@Erik Ritter)
- [13610](https://github.com/apache/superset/pull/13610) feat: added support to configure the default explorer viz (#13610) (@cccs-jc)
- [13601](https://github.com/apache/superset/pull/13601) feat: better error message when adding DBs (#13601) (@Beto Dealmeida)
- [14250](https://github.com/apache/superset/pull/14250) feat: catch errors on do_ping (#14250) (@Beto Dealmeida)
- [13893](https://github.com/apache/superset/pull/13893) feat: create backend routes and API for importing saved queries (#13893) (@AAfghahi)
- [13487](https://github.com/apache/superset/pull/13487) feat: create hooks to redux component (#13487) (@AAfghahi)
- [13871](https://github.com/apache/superset/pull/13871) feat: create table with long name (#13871) (@Beto Dealmeida)
- [14172](https://github.com/apache/superset/pull/14172) feat: error messages for Presto connections (#14172) (@Beto Dealmeida)
- [14093](https://github.com/apache/superset/pull/14093) feat: error messages when connecting to MSSQL (#14093) (@Beto Dealmeida)
- [14171](https://github.com/apache/superset/pull/14171) feat: error messages when connecting to mssql (#14171) (@AAfghahi)
- [14040](https://github.com/apache/superset/pull/14040) feat: handle chart/data API errors (#14040) (@Erik Ritter)
- [14204](https://github.com/apache/superset/pull/14204) feat: improve engine spec discoverability (#14204) (@Beto Dealmeida)
- [13960](https://github.com/apache/superset/pull/13960) feat: initial work to make v1 API compatible with SIP-40 and SIP-41 (#13960) (@Beto Dealmeida)
- [14146](https://github.com/apache/superset/pull/14146) feat: invalid DB name error messages (MySQL/Postgres/Redshift) (#14146) (@AAfghahi)
- [14089](https://github.com/apache/superset/pull/14089) feat: invalid hostname and password error messages (MySQL) (#14089) (@AAfghahi)
- [14111](https://github.com/apache/superset/pull/14111) feat: invalid hostname and password error messages (Redshift) (#14111) (@AAfghahi)
- [14038](https://github.com/apache/superset/pull/14038) feat: invalid password error message (Postgres) (#14038) (@Beto Dealmeida)
- [13862](https://github.com/apache/superset/pull/13862) feat: only send alert error emails to owners of the alert (#13862) (@Sam Faber-Manning)
- [14163](https://github.com/apache/superset/pull/14163) feat: publish superset helm chart (#14163) (@jawabuu)
- [13441](https://github.com/apache/superset/pull/13441) feat: refactor on DBEventLogger to allow for context management (#13441) (@Hugh A. Miles II)
- [14092](https://github.com/apache/superset/pull/14092) feat: restyle database modal (#14092) (@Elizabeth Thompson)
- [13561](https://github.com/apache/superset/pull/13561) feat: script to benchmark DB migrations (#13561) (@Beto Dealmeida)
- [13720](https://github.com/apache/superset/pull/13720) feat: sort time grain configs (#13720) (@Elizabeth Thompson)
- [13743](https://github.com/apache/superset/pull/13743) feat: use cross-env when running dev-server (#13743) (@Cemre Mengu)
**Fixes**
- [13585](https://github.com/apache/superset/pull/13585) fix antd select dropdown issue (#13585) (@Lily Kuang)
- [14369](https://github.com/apache/superset/pull/14369) fix error getting partitionQuery from table.partition (#14369) (@eriendeng)
- [13878](https://github.com/apache/superset/pull/13878) fix(#13378): Ensure g.user is set for impersonation (#13878) (@Ben Reinhart)
- [13756](https://github.com/apache/superset/pull/13756) fix(CI): use presto docker image from starburst (#13756) (@Jesse Yang)
- [13718](https://github.com/apache/superset/pull/13718) fix(alerts and reports): Unify timestamp format on execution log view (#13718) (@Jack Fragassi)
- [13436](https://github.com/apache/superset/pull/13436) fix(alerts&reports): add celery soft timeout support (#13436) (@Daniel Vaz Gaspar)
- [13911](https://github.com/apache/superset/pull/13911) fix(alerts/reports): working timeout with celery kill and logic fix (#13911) (@Daniel Vaz Gaspar)
- [14483](https://github.com/apache/superset/pull/14483) fix(annotations): pass force param to annotation request (#14483) (@Ville Brofeldt)
- [14526](https://github.com/apache/superset/pull/14526) fix(chart-data): handle url_params in csv export and native filters (#14526) (@Ville Brofeldt)
- [13945](https://github.com/apache/superset/pull/13945) fix(colors): fix color schemes (#13945) (@simcha90)
- [14063](https://github.com/apache/superset/pull/14063) fix(country-map): update geojson and control layout (#14063) (@Jesse Yang)
- [13665](https://github.com/apache/superset/pull/13665) fix(cross-filter): fix scheme py (#13665) (@simcha90)
- [14220](https://github.com/apache/superset/pull/14220) fix(cross-filters): Fix missed metadata (#14220) (@simcha90)
- [13692](https://github.com/apache/superset/pull/13692) fix(cross-filters): add a control panel to range filter (#13692) (@Ville Brofeldt)
- [13703](https://github.com/apache/superset/pull/13703) fix(cross-filters): expand relevant indicator sections (#13703) (@Ville Brofeldt)
- [13704](https://github.com/apache/superset/pull/13704) fix(cross-filters): only apply filters if ff is set (#13704) (@Ville Brofeldt)
- [13825](https://github.com/apache/superset/pull/13825) fix(cypress): avoid referencing detached dom nodes (#13825) (@David Aaron Suddjian)
- [14306](https://github.com/apache/superset/pull/14306) fix(dashboard): Add caching for dashboard datasets (#14306) (@David Aaron Suddjian)
- [13352](https://github.com/apache/superset/pull/13352) fix(dashboard): Get dashboard by slug (#13352) (@David Aaron Suddjian)
- [14207](https://github.com/apache/superset/pull/14207) fix(dashboard): draft dashboards should be viewable (#14207) (@Jesse Yang)
- [14129](https://github.com/apache/superset/pull/14129) fix(dashboard): filter set hydration not working (#14129) (@Ville Brofeldt)
- [14148](https://github.com/apache/superset/pull/14148) fix(dashboard): incorrect perm for users with multiple roles (#14148) (@Jesse Yang)
- [13691](https://github.com/apache/superset/pull/13691) fix(dashboard): missing parents in directPathToFilter (#13691) (@Ville Brofeldt)
- [13769](https://github.com/apache/superset/pull/13769) fix(dashboard): rename native filter configuration property (#13769) (@Ville Brofeldt)
- [13652](https://github.com/apache/superset/pull/13652) fix(datasets): log create exceptions as warning (#13652) (@ʈᵃᵢ)
- [14295](https://github.com/apache/superset/pull/14295) fix(db2): change name and add legacy alias (#14295) (@Ville Brofeldt)
- [14362](https://github.com/apache/superset/pull/14362) fix(emotion): add separate namespace for menu app (#14362) (@ʈᵃᵢ)
- [13826](https://github.com/apache/superset/pull/13826) fix(errors): Downgrade error on stop query to a warning (#13826) (@Will Barrett)
- [13621](https://github.com/apache/superset/pull/13621) fix(explore): Add int and bool regex pattern (#13621) (@Nikola Gigić)
- [14194](https://github.com/apache/superset/pull/14194) fix(explore): CUSTOM SQL tab should automatically update (#14194) (@Yaozong Liu)
- [13566](https://github.com/apache/superset/pull/13566) fix(explore): make horizontal scroll appears in data panel (#13566) (@Yaozong Liu)
- [13473](https://github.com/apache/superset/pull/13473) fix(explore): make sure sort by metric is not duplicated (#13473) (@Jesse Yang)
- [13801](https://github.com/apache/superset/pull/13801) fix(explore): strip semicolons in virtual table SQL (#13801) (@Phillip Kelley-Dotson)
- [13613](https://github.com/apache/superset/pull/13613) fix(helm): Add missing extraConfigs template volume mapping and fix type error on template. (#13613) (@Daniel Wood)
- [14255](https://github.com/apache/superset/pull/14255) fix(hive): Update CSV to Hive upload prefix (#14255) (@John Bodley)
- [14240](https://github.com/apache/superset/pull/14240) fix(hive): Use parquet rather than textfile when uploading CSV files to Hive (#14240) (@John Bodley)
- [13906](https://github.com/apache/superset/pull/13906) fix(listview): update listview feature flag (#13906) (@Phillip Kelley-Dotson)
- [14332](https://github.com/apache/superset/pull/14332) fix(native-filters): Fix first loading of charts (#14332) (@simcha90)
- [14334](https://github.com/apache/superset/pull/14334) fix(native-filters): Fix indicators (#14334) (@simcha90)
- [14370](https://github.com/apache/superset/pull/14370) fix(native-filters): Update filter saving (#14370) (@simcha90)
- [13837](https://github.com/apache/superset/pull/13837) fix(native-filters): add global async query support to native filters (#13837) (@Ville Brofeldt)
- [14353](https://github.com/apache/superset/pull/14353) fix(native-filters): allowClear only when required not checked (#14353) (@Ville Brofeldt)
- [14409](https://github.com/apache/superset/pull/14409) fix(native-filters): always show filters without dataset (#14409) (@Ville Brofeldt)
- [14401](https://github.com/apache/superset/pull/14401) fix(native-filters): default value not populated on second opening (#14401) (@Ville Brofeldt)
- [14426](https://github.com/apache/superset/pull/14426) fix(native-filters): fix filter scope error (#14426) (@Ville Brofeldt)
- [14387](https://github.com/apache/superset/pull/14387) fix(native-filters): fix lint (#14387) (@simcha90)
- [14218](https://github.com/apache/superset/pull/14218) fix(native-filters): fix remove native filters (#14218) (@simcha90)
- [13688](https://github.com/apache/superset/pull/13688) fix(native-filters): fix removing native filter (#13688) (@simcha90)
- [14385](https://github.com/apache/superset/pull/14385) fix(native-filters): force update control value on change (#14385) (@Ville Brofeldt)
- [13794](https://github.com/apache/superset/pull/13794) fix(native-filters): improve loading styles for filter component (#13794) (@Ville Brofeldt)
- [14244](https://github.com/apache/superset/pull/14244) fix(native-filters): merge_extra_form_data extras processing (#14244) (@Ville Brofeldt)
- [13434](https://github.com/apache/superset/pull/13434) fix(query): order by adhoc metrics should trigger group by (#13434) (@Jesse Yang)
- [13331](https://github.com/apache/superset/pull/13331) fix(query-object): extra time-range-endpoints (#13331) (@John Bodley)
- [14014](https://github.com/apache/superset/pull/14014) fix(sqla): apply sqla type on calculated columns (#14014) (@Ville Brofeldt)
- [14095](https://github.com/apache/superset/pull/14095) fix(sqla): labels_expected contains mutated label (#14095) (@Ville Brofeldt)
- [14297](https://github.com/apache/superset/pull/14297) fix(sqla): timeseries limit not applied when using columns (#14297) (@Ville Brofeldt)
- [13739](https://github.com/apache/superset/pull/13739) fix(sqla-query): order by aggregations in Presto and Hive (#13739) (@Jesse Yang)
- [13636](https://github.com/apache/superset/pull/13636) fix(sqllab): Table name and schema are encoded twice during fetching table metadata on SQL Lab page. (#13636) (@Dmytro Mudrov)
- [14390](https://github.com/apache/superset/pull/14390) fix(sqllab): fix error due to anonymous user (#14390) (@Ville Brofeldt)
- [13288](https://github.com/apache/superset/pull/13288) fix(sqllab): per-tab hide left bar (#13288) (@Beto Dealmeida)
- [13841](https://github.com/apache/superset/pull/13841) fix(sqllab): warning message when rows limited (#13841) (@zuzana-vej)
- [14045](https://github.com/apache/superset/pull/14045) fix(viz): bump superset-ui 0.17.30 (#14045) (@Ville Brofeldt)
- [14438](https://github.com/apache/superset/pull/14438) fix(viz): bump superset-ui to fix bugs in table and graph chart (#14438) (@Jesse Yang)
- [14191](https://github.com/apache/superset/pull/14191) fix(viz): time shift read-only error (#14191) (@Ville Brofeldt)
- [13657](https://github.com/apache/superset/pull/13657) fix: 'Run in SQL Lab' redirect bug (#13657) (@Maxime Beauchemin)
- [13444](https://github.com/apache/superset/pull/13444) fix: API to allow importing old exports (JSON/YAML) (#13444) (@Beto Dealmeida)
- [14180](https://github.com/apache/superset/pull/14180) fix: Add extra requires for shillelagh (#14180) (@Erik Ritter)
- [14192](https://github.com/apache/superset/pull/14192) fix: Center each import icon and add a tooltip II (#14192) (@Lyndsi Kay Williams)
- [13859](https://github.com/apache/superset/pull/13859) fix: Check for permissions in FilterBox (#13859) (@Erik Ritter)
- [14317](https://github.com/apache/superset/pull/14317) fix: Cleanup serialization and hashing code (#14317) (@Ben Reinhart)
- [13972](https://github.com/apache/superset/pull/13972) fix: Data table z index in sql Editor (#13972) (@AAfghahi)
- [13749](https://github.com/apache/superset/pull/13749) fix: Disallows negative options remaining (#13749) (@Michael S. Molina)
- [14291](https://github.com/apache/superset/pull/14291) fix: Fix unintended cache misses with async queries (#14291) (@Ben Reinhart)
- [14086](https://github.com/apache/superset/pull/14086) fix: Fixed saved query export (#14086) (@Lyndsi Kay Williams)
- [13858](https://github.com/apache/superset/pull/13858) fix: Floating Menu in SQL Left Bar (#13858) (@AAfghahi)
- [14147](https://github.com/apache/superset/pull/14147) fix: Handle bad permission errors for bigquery test connections (#14147) (@Hugh A. Miles II)
- [13980](https://github.com/apache/superset/pull/13980) fix: Issue 13956 (#13980) (@John Bodley)
- [13602](https://github.com/apache/superset/pull/13602) fix: ParsedQuery subselect edge case (#13602) (@Erik Ritter)
- [13987](https://github.com/apache/superset/pull/13987) fix: Pie chart not displayed in viz (#13987) (@Yongjie Zhao)
- [13852](https://github.com/apache/superset/pull/13852) fix: Pin Prophet dependency after breaking changes (#13852) (@Étienne Boisseau-Sierra)
- [13469](https://github.com/apache/superset/pull/13469) fix: Remove view in sql lab from druid datasources (#13469) (@Erik Ritter)
- [13464](https://github.com/apache/superset/pull/13464) fix: SHOW is not DML (#13464) (@Beto Dealmeida)
- [13946](https://github.com/apache/superset/pull/13946) fix: SQL -> Explore Overwrite flow (#13946) (@Hugh A. Miles II)
- [14358](https://github.com/apache/superset/pull/14358) fix: SQL Statement on QUERY_LOGGER prints none to log (#14358) (@cccs-rc)
- [14372](https://github.com/apache/superset/pull/14372) fix: SQLLab role permissions (#14372) (@Daniel Vaz Gaspar)
- [13655](https://github.com/apache/superset/pull/13655) fix: Slack dashboard has stale charts (#13655) (@Beto Dealmeida)
- [14170](https://github.com/apache/superset/pull/14170) fix: Switching to local codecov script (#14170) (@Craig Rueda)
- [13974](https://github.com/apache/superset/pull/13974) fix: Use superset generic db to catch external_metadata queries (#13974) (@Hugh A. Miles II)
- [13830](https://github.com/apache/superset/pull/13830) fix: Use utils.json_iso_dttm_ser to dump jsons when async query execution (#13830) (@Carlos Fidel Selva Ochoa)
- [13496](https://github.com/apache/superset/pull/13496) fix: `IS NULL` filter operator for numeric columns (#13496) (@Jesse Yang)
- [14036](https://github.com/apache/superset/pull/14036) fix: add exception to catch session not having JWT (#14036) (@Hugh A. Miles II)
- [13822](https://github.com/apache/superset/pull/13822) fix: adjusted tab height (#13822) (@AAfghahi)
- [13488](https://github.com/apache/superset/pull/13488) fix: allow option to generate new query (#13488) (@Elizabeth Thompson)
- [13800](https://github.com/apache/superset/pull/13800) fix: allow spaces in DB names (#13800) (@Beto Dealmeida)
- [13563](https://github.com/apache/superset/pull/13563) fix: always pass a string as a value to ace editor (#13563) (@Elizabeth Thompson)
- [12341](https://github.com/apache/superset/pull/12341) fix: annotation layer modal err handling (#12341) (@Moriah Kreeger)
- [13969](https://github.com/apache/superset/pull/13969) fix: annotation modal dateRangePicker saved invalid value (#13969) (@Yongjie Zhao)
- [13790](https://github.com/apache/superset/pull/13790) fix: bad copy-and-paste in API spec (#13790) (@Beto Dealmeida)
- [13578](https://github.com/apache/superset/pull/13578) fix: better handle datasource exceptions (#13578) (@Daniel Vaz Gaspar)
- [13642](https://github.com/apache/superset/pull/13642) fix: bump FAB to 3.2.1, SQLAlchemy fix (#13642) (@Daniel Vaz Gaspar)
- [13868](https://github.com/apache/superset/pull/13868) fix: change status code for generic errors to 400 (#13868) (@Hugh A. Miles II)
- [13681](https://github.com/apache/superset/pull/13681) fix: clean up incorrect usage of TypeScript type in PropTypes (#13681) (@Jesse Yang)
- [14084](https://github.com/apache/superset/pull/14084) fix: custom TimeRange can not input value (#14084) (@Yongjie Zhao)
- [13695](https://github.com/apache/superset/pull/13695) fix: dashboard filter scope bug (#13695) (@Grace Guo)
- [13624](https://github.com/apache/superset/pull/13624) fix: data column in SQL lab left panel open by default (#13624) (@AAfghahi)
- [13330](https://github.com/apache/superset/pull/13330) fix: date picker support date unit with singular and plural (#13330) (@Yongjie Zhao)
- [13603](https://github.com/apache/superset/pull/13603) fix: default when adding tab_state.hide_left_bar (#13603) (@Beto Dealmeida)
- [13389](https://github.com/apache/superset/pull/13389) fix: delete dataset columns and metrics on the REST API (#13389) (@Daniel Vaz Gaspar)
- [13917](https://github.com/apache/superset/pull/13917) fix: do not run containers as root by default in Helm chart (#13917) (@Stanislav Simovski)
- [13926](https://github.com/apache/superset/pull/13926) fix: enable installing docker/requirements-local.txt in docker-compose-non-dev.yml (#13926) (@ʈᵃᵢ)
- [13998](https://github.com/apache/superset/pull/13998) fix: execution log crashes for logs with no uuid (#13998) (@Jack Fragassi)
- [14081](https://github.com/apache/superset/pull/14081) fix: fix bug when remove chart not removing it's related cross filter data (#14081) (@simcha90)
- [13546](https://github.com/apache/superset/pull/13546) fix: fix initial filter loading (#13546) (@simcha90)
- [14082](https://github.com/apache/superset/pull/14082) fix: flacky test in test_update_dataset_item_w_override_columns (#14082) (@Hugh A. Miles II)
- [14347](https://github.com/apache/superset/pull/14347) fix: flaky test for alerts and reports (#14347) (@Daniel Vaz Gaspar)
- [13979](https://github.com/apache/superset/pull/13979) fix: import dataset/dashboard empty keys (#13979) (@Beto Dealmeida)
- [14258](https://github.com/apache/superset/pull/14258) fix: incorrect module reference (#14258) (@Yongjie Zhao)
- [13737](https://github.com/apache/superset/pull/13737) fix: log exceptions for thumbnail generation as warnings (#13737) (@Sam Faber-Manning)
- [14057](https://github.com/apache/superset/pull/14057) fix: logs table - user_id is NULL (#14057) (@Hugh A. Miles II)
- [13493](https://github.com/apache/superset/pull/13493) fix: merge 67da9ef1ef9c and 1412ec1e5a7b migrations (#13493) (@Hugh A. Miles II)
- [13921](https://github.com/apache/superset/pull/13921) fix: new import/export CLI (#13921) (@Beto Dealmeida)
- [13955](https://github.com/apache/superset/pull/13955) fix: null exception from adhoc metric popover (#13955) (@Grace Guo)
- [14509](https://github.com/apache/superset/pull/14509) fix: parameterize titles correctly (#14509) (@David Aaron Suddjian)
- [14338](https://github.com/apache/superset/pull/14338) fix: pybabel extract fails (#14338) (@ume)
- [13780](https://github.com/apache/superset/pull/13780) fix: restart superset container in test script (#13780) (@Ben Reinhart)
- [13694](https://github.com/apache/superset/pull/13694) fix: select table overlay (#13694) (@AAfghahi)
- [14074](https://github.com/apache/superset/pull/14074) fix: unable to apply logging format (#14074) (@Yongjie Zhao)
- [14319](https://github.com/apache/superset/pull/14319) fix: unbreak CI (#14319) (@Erik Ritter)
- [13679](https://github.com/apache/superset/pull/13679) fix: use FeatureFlags in @superset-ui/core (#13679) (@Jesse Yang)
- [14099](https://github.com/apache/superset/pull/14099) fix:fix get permission function (#14099) (@simcha90)
**Documentation**
- [13770](https://github.com/apache/superset/pull/13770) docs(contributing): fix backend port (#13770) (@Cemre Mengu)
- [13813](https://github.com/apache/superset/pull/13813) docs: Documenting how to debug Flask app (#13813) (@cccs-jc)
- [13455](https://github.com/apache/superset/pull/13455) docs: Fix typo in footer (#13455) (@Holger Stitz)
- [14304](https://github.com/apache/superset/pull/14304) docs: add publish step (#14304) (@ʈᵃᵢ)
- [13611](https://github.com/apache/superset/pull/13611) docs: correct sentence (#13611) (@Erfan Mirzapour)
- [13440](https://github.com/apache/superset/pull/13440) docs: deprecate old alerts and dash/charts reports (#13440) (@Daniel Vaz Gaspar)
- [14394](https://github.com/apache/superset/pull/14394) docs: improved clickhouse connection details (#14394) (@Srini Kadamati)
- [14321](https://github.com/apache/superset/pull/14321) docs: multiple small fixes around databases (#14321) (@Srini Kadamati)
- [12932](https://github.com/apache/superset/pull/12932) docs: update helm documentation (#12932) (@Anthony Corletti)
- [14027](https://github.com/apache/superset/pull/14027) docs: update outdated country map tools instructions (#14027) (@Jesse Yang)
- [13781](https://github.com/apache/superset/pull/13781) docs: update setup instructions (#13781) (@Ben Reinhart)
**Other**
- [13759](https://github.com/apache/superset/pull/13759) Add CODEOWNERS (#13759) (@Rob DiCiuccio)
- [14238](https://github.com/apache/superset/pull/14238) Add Preset code owners for ephemeral test env workflows (#14238) (@Rob DiCiuccio)
- [13553](https://github.com/apache/superset/pull/13553) Add dedicated dir and storybook (#13553) (@Geido)
- [13961](https://github.com/apache/superset/pull/13961) Add docs for configuring Docker Compose setup (#13961) (@Alex Kreidler)
- [13728](https://github.com/apache/superset/pull/13728) Add extraSecrets config to allow specifying extra secret files (#13728) (@Andreas Eberle)
- [14223](https://github.com/apache/superset/pull/14223) Add superset helm repository (#14223) (@jawabuu)
- [13778](https://github.com/apache/superset/pull/13778) Add tests (#13778) (@Geido)
- [13950](https://github.com/apache/superset/pull/13950) Add tests for FilterBar CascadeFilterControl (#13950) (@Geido)
- [13425](https://github.com/apache/superset/pull/13425) Adding v0 import/export fields to dashboard metadata schema (#13425) (@michellethomas)
- [13359](https://github.com/apache/superset/pull/13359) Adds tests and storybook to CopyToClipboard component (#13359) (@Michael S. Molina)
- [13658](https://github.com/apache/superset/pull/13658) Bump pyyaml to latest (#13658) (@Rob DiCiuccio)
- [13854](https://github.com/apache/superset/pull/13854) Displays row limit warning with Alert component (#13854) (@Michael S. Molina)
- [14187](https://github.com/apache/superset/pull/14187) Enable the new pivot table (#14187) (@Kamil Gabryjelski)
- [13861](https://github.com/apache/superset/pull/13861) Fix broken link (#13861) (@Eric Anderson)
- [14039](https://github.com/apache/superset/pull/14039) Fix broken port-forward instructions (#14039) (@Caleb Collins-Parks)
- [14243](https://github.com/apache/superset/pull/14243) Fix filter edit popover not opening in DnD mode (#14243) (@Kamil Gabryjelski)
- [13608](https://github.com/apache/superset/pull/13608) Fix: Add SASL dependency module (#13608) (@Daniel Wood)
- [13505](https://github.com/apache/superset/pull/13505) Fixed KeyError by making kwarg explicit (#13505) (@Richard Nordin)
- [13905](https://github.com/apache/superset/pull/13905) Fixing condition around left margin for dashboard layout. Fixes #13863 (#13905) (@Evan Rusackas)
- [14323](https://github.com/apache/superset/pull/14323) Fixing spelling: `clint` -> `client` (#14323) (@Chris Carini)
- [13570](https://github.com/apache/superset/pull/13570) Given port in dockerfile set to same port in config (#13570) (@İbrahim Ercan)
- [13273](https://github.com/apache/superset/pull/13273) Improves ButtonGroup tests (#13273) (@Michael S. Molina)
- [14046](https://github.com/apache/superset/pull/14046) Make chart exclude itself from cross filtering (#14046) (@Kamil Gabryjelski)
- [14287](https://github.com/apache/superset/pull/14287) Make g.user attribute access safe for public users (#14287) (@Rob DiCiuccio)
- [13643](https://github.com/apache/superset/pull/13643) Make preliminary suggested changes to CONTRIBUTING.md (#13643) (@Kris Stern)
- [13314](https://github.com/apache/superset/pull/13314) Moves AsyncSelect component and tests to own folder (#13314) (@Michael S. Molina)
- [13901](https://github.com/apache/superset/pull/13901) Revert "fix: select table overlay (#13694)" (#13901) (@Erik Ritter)
- [13876](https://github.com/apache/superset/pull/13876) Tests for "CrossFilterScopingModal/utils" (#13876) (@Bruno Motta)
- [13991](https://github.com/apache/superset/pull/13991) Tests for ColumnSelect (#13991) (@Bruno Motta)
- [13975](https://github.com/apache/superset/pull/13975) Tests for ControlItems (#13975) (@Bruno Motta)
- [13872](https://github.com/apache/superset/pull/13872) Tests for DetailsPanel (#13872) (@Bruno Motta)
- [14025](https://github.com/apache/superset/pull/14025) Update CONTRIBUTING.md (#14025) (@Hugh A. Miles II)
- [13607](https://github.com/apache/superset/pull/13607) Update UPDATING.md (#13607) (@Beto Dealmeida)
- [13934](https://github.com/apache/superset/pull/13934) Update docs to use the newer WEBDRIVER_TYPE name (#13934) (@Octavian)
- [14219](https://github.com/apache/superset/pull/14219) Update trino connection docs (#14219) (@Aakash Nand)
- [14031](https://github.com/apache/superset/pull/14031) Use consistent chart value (#14031) (@Tom Vendetta)
- [13323](https://github.com/apache/superset/pull/13323) Use redis:latest in docker-compose workflow (#13323) (@Rob DiCiuccio)
- [13730](https://github.com/apache/superset/pull/13730) Use stringData instead of data in Secrets and remove manual base64 encoding (#13730) (@Andreas Eberle)
- [13936](https://github.com/apache/superset/pull/13936) Use the right variable for Celery results in Redis (#13936) (@Octavian)
- [14252](https://github.com/apache/superset/pull/14252) WIP (#14252) (@Beto Dealmeida)
- [14446](https://github.com/apache/superset/pull/14446) add migration (#14446) (@Ville Brofeldt)
- [13365](https://github.com/apache/superset/pull/13365) add more documentation around python testing and linting (#13365) (@Elizabeth Thompson)
- [13527](https://github.com/apache/superset/pull/13527) build(deps): bump elliptic from 6.5.3 to 6.5.4 in /docs (#13527) (@dependabot[bot])
- [12636](https://github.com/apache/superset/pull/12636) build(deps): bump socket.io from 2.3.0 to 2.4.1 in /docs (#12636) (@dependabot[bot])
- [13391](https://github.com/apache/superset/pull/13391) build(deps): bump three from 0.68.87 to 0.125.0 in /docs (#13391) (@dependabot[bot])
- [13393](https://github.com/apache/superset/pull/13393) build(deps): bump urijs from 1.19.4 to 1.19.6 in /superset-frontend (#13393) (@dependabot[bot])
- [13874](https://github.com/apache/superset/pull/13874) build(deps): bump y18n from 4.0.0 to 4.0.1 in /docs (#13874) (@dependabot[bot])
- [13886](https://github.com/apache/superset/pull/13886) build(deps): bump y18n from 4.0.0 to 4.0.1 in /superset-frontend (#13886) (@dependabot[bot])
- [13452](https://github.com/apache/superset/pull/13452) build(test env): Shutdown test environments on PR close (#13452) (@Rob DiCiuccio)
- [13189](https://github.com/apache/superset/pull/13189) build: Ephemeral environments for PRs via slash command (#13189) (@Rob DiCiuccio)
- [13498](https://github.com/apache/superset/pull/13498) build: check potential db migration conflict for open PRs (#13498) (@Jesse Yang)
- [13375](https://github.com/apache/superset/pull/13375) build: fix codecov informational config (#13375) (@Jesse Yang)
- [13421](https://github.com/apache/superset/pull/13421) build: ignore Storybook stories in CodeCov (#13421) (@Jesse Yang)
- [13677](https://github.com/apache/superset/pull/13677) build: implement codecov carryforward flags (#13677) (@Jack Fragassi)
- [13927](https://github.com/apache/superset/pull/13927) catch collapse onchange (#13927) (@Elizabeth Thompson)
- [13757](https://github.com/apache/superset/pull/13757) chore(CI): dont run Hive tests on Py 3.7 (#13757) (@Jesse Yang)
- [13784](https://github.com/apache/superset/pull/13784) chore(cypress): Make the e2e tests more behavior-driven (#13784) (@David Aaron Suddjian)
- [13939](https://github.com/apache/superset/pull/13939) chore(dashboard): Datasource -> Dataset (#13939) (@David Aaron Suddjian)
- [14342](https://github.com/apache/superset/pull/14342) chore(docker-compose): use dev image for docker-compose-non-dev.yml (#14342) (@ʈᵃᵢ)
- [14331](https://github.com/apache/superset/pull/14331) chore(docs): remove .py from db migrate -m (#14331) (@Amit Miran)
- [13660](https://github.com/apache/superset/pull/13660) chore(explore): added debounce in DateFilter (#13660) (@Yongjie Zhao)
- [13593](https://github.com/apache/superset/pull/13593) chore(explore): bump superset-ui 0.17.19 (#13593) (@Yongjie Zhao)
- [13767](https://github.com/apache/superset/pull/13767) chore(git): ignore superset/app/ folder (#13767) (@Cemre Mengu)
- [13500](https://github.com/apache/superset/pull/13500) chore(homepage): separate out api calls to make homepage load more dynamically (#13500) (@Phillip Kelley-Dotson)
- [14228](https://github.com/apache/superset/pull/14228) chore(prophet): bump prophet to 1.0.1 (#14228) (@Ville Brofeldt)
- [13306](https://github.com/apache/superset/pull/13306) chore(spa refactor): refactoring dashboard to use api's instead of bootstrapdata (#13306) (@Phillip Kelley-Dotson)
- [14013](https://github.com/apache/superset/pull/14013) chore(toggle thumbnails): use localstorage for toggle (#14013) (@Phillip Kelley-Dotson)
- [14274](https://github.com/apache/superset/pull/14274) chore: Add Redis password option to helm chart (#14274) (@Rob DiCiuccio)
- [13418](https://github.com/apache/superset/pull/13418) chore: Added rockset and firebird (#13418) (@Srini Kadamati)
- [13951](https://github.com/apache/superset/pull/13951) chore: Adds dataMask reducer to reducerIndex (#13951) (@Michael S. Molina)
- [14203](https://github.com/apache/superset/pull/14203) chore: Bumping lodash version in Superset (#14203) (@Evan Rusackas)
- [14196](https://github.com/apache/superset/pull/14196) chore: Code cleanup in DatabaseModal (#14196) (@Lyndsi Kay Williams)
- [14164](https://github.com/apache/superset/pull/14164) chore: Configures Jest to ignore storybook files when collecting coverage statistics (#14164) (@Michael S. Molina)
- [14339](https://github.com/apache/superset/pull/14339) chore: Improve Japanese translation (#14339) (@ume)
- [13722](https://github.com/apache/superset/pull/13722) chore: Improve Korean translation (#13722) (@김세환)
- [13376](https://github.com/apache/superset/pull/13376) chore: Improve japannese translation (#13376) (@Tetsushi Watanabe)
- [14193](https://github.com/apache/superset/pull/14193) chore: Improves Icons storybook (#14193) (@Michael S. Molina)
- [13274](https://github.com/apache/superset/pull/13274) chore: Migrates RefreshChartOverlay into Chart (#13274) (@Michael S. Molina)
- [13361](https://github.com/apache/superset/pull/13361) chore: Migrating dashboard/components/menu from jsx to tsx (#13361) (@Ayan Ginet)
- [13460](https://github.com/apache/superset/pull/13460) chore: Moves BootstrapSliderWrapper to own folder (#13460) (@Michael S. Molina)
- [14139](https://github.com/apache/superset/pull/14139) chore: Moves Card to the components folder (#14139) (@Michael S. Molina)
- [13454](https://github.com/apache/superset/pull/13454) chore: Moves ChartIcon to own folder (#13454) (@Michael S. Molina)
- [13459](https://github.com/apache/superset/pull/13459) chore: Moves CheckboxIcons to Checkbox folder (#13459) (@Michael S. Molina)
- [14124](https://github.com/apache/superset/pull/14124) chore: Moves Collapse to the components folder (#14124) (@Michael S. Molina)
- [14125](https://github.com/apache/superset/pull/14125) chore: Moves CronPicker to the components folder (#14125) (@Michael S. Molina)
- [14126](https://github.com/apache/superset/pull/14126) chore: Moves Dropdown to the components folder (#14126) (@Michael S. Molina)
- [14127](https://github.com/apache/superset/pull/14127) chore: Moves DropdownButton to the components folder (#14127) (@Michael S. Molina)
- [13458](https://github.com/apache/superset/pull/13458) chore: Moves Fade component into TableElement (#13458) (@Michael S. Molina)
- [13322](https://github.com/apache/superset/pull/13322) chore: Moves FilterableTable test to component folder (#13322) (@Michael S. Molina)
- [13485](https://github.com/apache/superset/pull/13485) chore: Moves InfoTooltip component to own folder (#13485) (@Michael S. Molina)
- [14128](https://github.com/apache/superset/pull/14128) chore: Moves InfoTooltip to the components folder (#14128) (@Michael S. Molina)
- [13324](https://github.com/apache/superset/pull/13324) chore: Moves ListView test to component folder (#13324) (@Michael S. Molina)
- [14130](https://github.com/apache/superset/pull/14130) chore: Moves Modal to the components folder (#14130) (@Michael S. Molina)
- [13338](https://github.com/apache/superset/pull/13338) chore: Moves OnPasteSelect tests to component's folder (#13338) (@Michael S. Molina)
- [14133](https://github.com/apache/superset/pull/14133) chore: Moves Radio to the components folder (#14133) (@Michael S. Molina)
- [14135](https://github.com/apache/superset/pull/14135) chore: Moves Switch to the components folder (#14135) (@Michael S. Molina)
- [13411](https://github.com/apache/superset/pull/13411) chore: Moves TableSelector tests to component's folder (#13411) (@Michael S. Molina)
- [14136](https://github.com/apache/superset/pull/14136) chore: Moves Tabs to the components folder (#14136) (@Michael S. Molina)
- [14137](https://github.com/apache/superset/pull/14137) chore: Moves Tooltip to the components folder (#14137) (@Michael S. Molina)
- [14123](https://github.com/apache/superset/pull/14123) chore: Moves WarningIconWithTooltip to own folder (#14123) (@Michael S. Molina)
- [14200](https://github.com/apache/superset/pull/14200) chore: Moves spec files to the src folder - iteration 1 (#14200) (@Michael S. Molina)
- [14201](https://github.com/apache/superset/pull/14201) chore: Moves spec files to the src folder - iteration 2 (#14201) (@Michael S. Molina)
- [14202](https://github.com/apache/superset/pull/14202) chore: Moves spec files to the src folder - iteration 3 (#14202) (@Michael S. Molina)
- [14166](https://github.com/apache/superset/pull/14166) chore: Moves the branding folder to the assets folder (#14166) (@Michael S. Molina)
- [14167](https://github.com/apache/superset/pull/14167) chore: Moves the staticPages folder to the assets folder (#14167) (@Michael S. Molina)
- [13462](https://github.com/apache/superset/pull/13462) chore: Removes Popover duplication (#13462) (@Michael S. Molina)
- [13477](https://github.com/apache/superset/pull/13477) chore: Removes Select duplication (#13477) (@Michael S. Molina)
- [13408](https://github.com/apache/superset/pull/13408) chore: Removes unused Hotkeys component (#13408) (@Michael S. Molina)
- [14298](https://github.com/apache/superset/pull/14298) chore: SQLLab row limit warning using Alert component (#14298) (@zuzana-vej)
- [13332](https://github.com/apache/superset/pull/13332) chore: Update OAuth2 configuration guide to match with FlaskAppBuilder (#13332) (@Liam)
- [13855](https://github.com/apache/superset/pull/13855) chore: Update PR template for SIP-59 DB migrations process (#13855) (@Rob DiCiuccio)
- [13738](https://github.com/apache/superset/pull/13738) chore: Update presto.mdx (#13738) (@Hugh A. Miles II)
- [14257](https://github.com/apache/superset/pull/14257) chore: WebSocket server improvements (#14257) (@Ben Reinhart)
- [14354](https://github.com/apache/superset/pull/14354) chore: add some basic instrumentation to Node WebSocket server (#14354) (@Ben Reinhart)
- [13811](https://github.com/apache/superset/pull/13811) chore: add success log whenever a connection is working (#13811) (@Hugh A. Miles II)
- [14355](https://github.com/apache/superset/pull/14355) chore: bump 0.17.38 (#14355) (@Amit Miran)
- [13953](https://github.com/apache/superset/pull/13953) chore: bump @superset-ui/plugin-chart-table to 0.17.28 (#13953) (@Jesse Yang)
- [14222](https://github.com/apache/superset/pull/14222) chore: bump package.json (#14222) (@Amit Miran)
- [14253](https://github.com/apache/superset/pull/14253) chore: bump superset-ui (#14253) (@Erik Ritter)
- [14460](https://github.com/apache/superset/pull/14460) chore: bump table plugin to 0.17.42 (#14460) (@Amit Miran)
- [13932](https://github.com/apache/superset/pull/13932) chore: bump to new superset-ui version (#13932) (@Amit Miran)
- [13374](https://github.com/apache/superset/pull/13374) chore: convert chartReducer to TypeScript (#13374) (@Jesse Yang)
- [13450](https://github.com/apache/superset/pull/13450) chore: disable drag metrics and columns in datasourcePanel (#13450) (@Yongjie Zhao)
- [13342](https://github.com/apache/superset/pull/13342) chore: improve modal error handling (#13342) (@Lily Kuang)
- [13596](https://github.com/apache/superset/pull/13596) chore: metric refactor iteration 1 (#13596) (@Yongjie Zhao)
- [13296](https://github.com/apache/superset/pull/13296) chore: migrating some LESS (#13296) (@Evan Rusackas)
- [14169](https://github.com/apache/superset/pull/14169) chore: rename connection errors (#14169) (@Beto Dealmeida)
- [13970](https://github.com/apache/superset/pull/13970) chore: starter make file (#13970) (@Hugh A. Miles II)
- [14088](https://github.com/apache/superset/pull/14088) chore: stop logging `SupersetExceptions` if status < 500 (#14088) (@Hugh A. Miles II)
- [14178](https://github.com/apache/superset/pull/14178) chore: type some SQL Lab components (#14178) (@Erik Ritter)
- [14152](https://github.com/apache/superset/pull/14152) chore: update RELEASING readme (#14152) (@Lily Kuang)
- [13104](https://github.com/apache/superset/pull/13104) chore: update docs for new alerts and reporting feature (#13104) (@leocape)
- [14033](https://github.com/apache/superset/pull/14033) chore: well component to card component(Updating PR #12200) (#14033) (@Bruno Motta)
- [13518](https://github.com/apache/superset/pull/13518) ci: increase page size of GH PR API call (#13518) (@Ville Brofeldt)
- [14350](https://github.com/apache/superset/pull/14350) ci: set remote URL to https and bump sha (#14350) (@Daniel Vaz Gaspar)
- [14211](https://github.com/apache/superset/pull/14211) ci: use git submodules for Chart Actions (#14211) (@jawabuu)
- [13587](https://github.com/apache/superset/pull/13587) create better link for badge (#13587) (@Elizabeth Thompson)
- [13626](https://github.com/apache/superset/pull/13626) dynamic dttm fix for test_convert_dttm (#13626) (@Nikola Gigić)
- [14140](https://github.com/apache/superset/pull/14140) horizontal scroll (#14140) (@AAfghahi)
- [13367](https://github.com/apache/superset/pull/13367) npm audit security updates (#13367) (@Elizabeth Thompson)
- [14443](https://github.com/apache/superset/pull/14443) perf(native-filters): Load native filters after charts (#14443) (@simcha90)
- [14408](https://github.com/apache/superset/pull/14408) perf(native-filters): avoid unnecessary reloading of charts (#14408) (@simcha90)
- [14035](https://github.com/apache/superset/pull/14035) refactor(addslicecontainer): move slice container panel from bootstrap panel to ant-d (#14035) (@Phillip Kelley-Dotson)
- [14366](https://github.com/apache/superset/pull/14366) refactor(db_engine_specs): Removing top-level import of app (#14366) (@John Bodley)
- [13221](https://github.com/apache/superset/pull/13221) refactor(explore): convert ControlPanelsContainer to typescript (#13221) (@Jesse Yang)
- [13437](https://github.com/apache/superset/pull/13437) refactor(native-filters): Move `filtersState` to `dataMask` redux root (#13437) (@simcha90)
- [14441](https://github.com/apache/superset/pull/14441) refactor(native-filters): allow cascading only for filter_select (#14441) (@simcha90)
- [13723](https://github.com/apache/superset/pull/13723) refactor(native-filters): refactor filter bar (#13723) (@simcha90)
- [13983](https://github.com/apache/superset/pull/13983) refactor(native-filters): update dataMask and ExtraFormData schema (#13983) (@simcha90)
- [13137](https://github.com/apache/superset/pull/13137) refactor(self-trigger): Split native filters state (#13137) (@simcha90)
- [14090](https://github.com/apache/superset/pull/14090) refactor(userInfo): userinfo panel to styled component (#14090) (@Phillip Kelley-Dotson)
- [14100](https://github.com/apache/superset/pull/14100) refactor: Boostrap to AntD - Row/Col (#14100) (@Michael S. Molina)
- [14048](https://github.com/apache/superset/pull/14048) refactor: Boostrap to AntD - Tabs (#14048) (@Michael S. Molina)
- [14106](https://github.com/apache/superset/pull/14106) refactor: Bootstrap to AntD - Form - iteration 1 (#14106) (@Michael S. Molina)
- [13996](https://github.com/apache/superset/pull/13996) refactor: Bootstrap to AntD - ListGroup (#13996) (@Michael S. Molina)
- [13989](https://github.com/apache/superset/pull/13989) refactor: Bootstrap to AntD - Slider (#13989) (@Michael S. Molina)
- [13218](https://github.com/apache/superset/pull/13218) refactor: Introduce api resource hooks, fetch owners for chart errors (#13218) (@David Aaron Suddjian)
- [12229](https://github.com/apache/superset/pull/12229) refactor: New Icon system with Enhanced Antd Custom Icon (#12229) (@Geido)
- [13797](https://github.com/apache/superset/pull/13797) refactor: New schedule query button (#13797) (@AAfghahi)
- [13102](https://github.com/apache/superset/pull/13102) refactor: Query search into functional component (#13102) (@AAfghahi)
- [13785](https://github.com/apache/superset/pull/13785) refactor: Revert "refactor: ScheduleQueryButton into functional component (#134… (#13785) (@Hugh A. Miles II)
- [13443](https://github.com/apache/superset/pull/13443) refactor: ScheduleQueryButton into functional component (#13443) (@AAfghahi)
- [13630](https://github.com/apache/superset/pull/13630) refactor: Share sql lab query (#13630) (@AAfghahi)
- [13676](https://github.com/apache/superset/pull/13676) refactor: SouthPane into functional component (#13676) (@AAfghahi)
- [13417](https://github.com/apache/superset/pull/13417) refactor: add set data mask to build query (#13417) (@simcha90)
- [13401](https://github.com/apache/superset/pull/13401) refactor: convert controlUtils to TypeScript (1 of 2) (#13401) (@Jesse Yang)
- [13520](https://github.com/apache/superset/pull/13520) refactor: convert controlUtils to TypeScript (2 of 2) (#13520) (@Jesse Yang)
- [13877](https://github.com/apache/superset/pull/13877) refactor: move CTAS/CVAS field II (#13877) (@Hugh A. Miles II)
- [14309](https://github.com/apache/superset/pull/14309) refactor: reorganize dateFilterUtils.tx (#14309) (@Yongjie Zhao)
- [13174](https://github.com/apache/superset/pull/13174) sql Lab buttons (#13174) (@AAfghahi)
- [13537](https://github.com/apache/superset/pull/13537) switch message content between chart and dashboard AlertReportModal (#13537) (@Lily Kuang)
- [14371](https://github.com/apache/superset/pull/14371) test(maximize-chart): Add tests to maximize chart action (#14371) (@simcha90)
- [14245](https://github.com/apache/superset/pull/14245) test(native-filters): Filter config modal test (#14245) (@simcha90)
- [14098](https://github.com/apache/superset/pull/14098) test(native-filters): add integration tests for filter bar (#14098) (@simcha90)
- [13973](https://github.com/apache/superset/pull/13973) test: Add tests for Dashboard Header and HeaderActionsDropdown components (#13973) (@Geido)
- [13517](https://github.com/apache/superset/pull/13517) test: Adds storybook and tests to AsyncEsmComponent (#13517) (@Michael S. Molina)
- [13547](https://github.com/apache/superset/pull/13547) test: Adds storybook and tests to PopoverDropdown component (#13547) (@Michael S. Molina)
- [13516](https://github.com/apache/superset/pull/13516) test: Adds storybook to AlteredSliceTag component (#13516) (@Michael S. Molina)
- [13406](https://github.com/apache/superset/pull/13406) test: Adds storybook to AnchorLink component (#13406) (@Michael S. Molina)
- [13412](https://github.com/apache/superset/pull/13412) test: Adds storybook to ConfirmStatusChange component (#13412) (@Michael S. Molina)
- [13482](https://github.com/apache/superset/pull/13482) test: Adds storybook to Dropdown and DropdownButton components (#13482) (@Michael S. Molina)
- [13362](https://github.com/apache/superset/pull/13362) test: Adds storybook to EditableTitle component (#13362) (@Michael S. Molina)
- [13407](https://github.com/apache/superset/pull/13407) test: Adds storybook to FormRow component (#13407) (@Michael S. Molina)
- [13415](https://github.com/apache/superset/pull/13415) test: Adds storybook to IconTooltip component (#13415) (@Michael S. Molina)
- [13410](https://github.com/apache/superset/pull/13410) test: Adds storybook to SearchInput component (#13410) (@Michael S. Molina)
- [13479](https://github.com/apache/superset/pull/13479) test: Adds storybook to Switch component (#13479) (@Michael S. Molina)
- [13343](https://github.com/apache/superset/pull/13343) test: Adds storybook to Timer component (#13343) (@Michael S. Molina)
- [13457](https://github.com/apache/superset/pull/13457) test: Adds tests and storybook to CertifiedIcon component (#13457) (@Michael S. Molina)
- [13438](https://github.com/apache/superset/pull/13438) test: Adds tests and storybook to PopoverSection component (#13438) (@Michael S. Molina)
- [13409](https://github.com/apache/superset/pull/13409) test: Adds tests and storybook to RefreshLabel (#13409) (@Michael S. Molina)
- [13705](https://github.com/apache/superset/pull/13705) test: Adds tests for the FixedOrMetricControl component (#13705) (@Michael S. Molina)
- [13299](https://github.com/apache/superset/pull/13299) test: Adds tests to TableLoader component (#13299) (@Michael S. Molina)
- [13319](https://github.com/apache/superset/pull/13319) test: Adds tests to URLShortLinkButton component (#13319) (@Michael S. Molina)
- [13650](https://github.com/apache/superset/pull/13650) test: Adds tests to dnd controls (#13650) (@Michael S. Molina)
- [13664](https://github.com/apache/superset/pull/13664) test: Adds tests to the AdvancedFrame component (#13664) (@Michael S. Molina)
- [13748](https://github.com/apache/superset/pull/13748) test: Adds tests to the AnnotationLayer component (#13748) (@Michael S. Molina)
- [13933](https://github.com/apache/superset/pull/13933) test: Adds tests to the CssEditor component (#13933) (@Michael S. Molina)
- [13675](https://github.com/apache/superset/pull/13675) test: Adds tests to the CustomFrame component (#13675) (@Michael S. Molina)
- [13729](https://github.com/apache/superset/pull/13729) test: Adds tests to the OptionControls component (#13729) (@Michael S. Molina)
- [13892](https://github.com/apache/superset/pull/13892) test: Adds tests to the PublishedStatus component (#13892) (@Michael S. Molina)
- [13712](https://github.com/apache/superset/pull/13712) test: Adds tests to the TimeSeriesColumnControl component (#13712) (@Michael S. Molina)
- [13919](https://github.com/apache/superset/pull/13919) test: Adds tests to the UndoRedoKeyListeners component (#13919) (@Michael S. Molina)
- [13887](https://github.com/apache/superset/pull/13887) test: Adds tests to the filter scope components (#13887) (@Michael S. Molina)
- [13787](https://github.com/apache/superset/pull/13787) test: AdhocMetricEditPopover (#13787) (@Bruno Motta)
- [13318](https://github.com/apache/superset/pull/13318) test: CacheLabel (#13318) (@Bruno Motta)
- [13656](https://github.com/apache/superset/pull/13656) test: CollectionControl (#13656) (@Bruno Motta)
- [13549](https://github.com/apache/superset/pull/13549) test: CronPicker (#13549) (@Bruno Motta)
- [13875](https://github.com/apache/superset/pull/13875) test: CrossFilterScopingForm (#13875) (@Bruno Motta)
- [13668](https://github.com/apache/superset/pull/13668) test: DataTableControl (#13668) (@Bruno Motta)
- [13736](https://github.com/apache/superset/pull/13736) test: DataTablesPane (#13736) (@Bruno Motta)
- [13581](https://github.com/apache/superset/pull/13581) test: DatabaseSelector (#13581) (@Bruno Motta)
- [13605](https://github.com/apache/superset/pull/13605) test: DatasourceControl (#13605) (@Bruno Motta)
- [13627](https://github.com/apache/superset/pull/13627) test: DatasourcePanelDragWrapper (#13627) (@Bruno Motta)
- [13750](https://github.com/apache/superset/pull/13750) test: DisplayQueryButton (#13750) (@Bruno Motta)
- [13745](https://github.com/apache/superset/pull/13745) test: Enhance tests and directory structure for FilterControl components (#13745) (@Geido)
- [13276](https://github.com/apache/superset/pull/13276) test: ErrorBoundary dedicated directory and tests (#13276) (@Geido)
- [13358](https://github.com/apache/superset/pull/13358) test: ErrorMessage components tests (#13358) (@Geido)
- [13753](https://github.com/apache/superset/pull/13753) test: FilterBoxItemControl (#13753) (@Bruno Motta)
- [14028](https://github.com/apache/superset/pull/14028) test: FilterSets-utils (#14028) (@Bruno Motta)
- [13548](https://github.com/apache/superset/pull/13548) test: Fixes PropertiesModal_spec (#13548) (@Michael S. Molina)
- [13270](https://github.com/apache/superset/pull/13270) test: FormLabel dedicated directory and tests (#13270) (@Geido)
- [13302](https://github.com/apache/superset/pull/13302) test: Menu component tests (#13302) (@Geido)
- [13277](https://github.com/apache/superset/pull/13277) test: Pagination component (#13277) (@Bruno Motta)
- [13818](https://github.com/apache/superset/pull/13818) test: PropertiesModal (#13818) (@Bruno Motta)
- [13931](https://github.com/apache/superset/pull/13931) test: PropertiesModal (Dashboard) (#13931) (@Bruno Motta)
- [13799](https://github.com/apache/superset/pull/13799) test: Refactor and enhance tests for the Explore DatasourcePanel Component (#13799) (@Geido)
- [13638](https://github.com/apache/superset/pull/13638) test: SelectAsyncControl (#13638) (@Bruno Motta)
- [13860](https://github.com/apache/superset/pull/13860) test: ShareMenuItems (#13860) (@Bruno Motta)
- [13888](https://github.com/apache/superset/pull/13888) test: SliceHeader (#13888) (@Bruno Motta)
- [13895](https://github.com/apache/superset/pull/13895) test: SliceHeaderControls (#13895) (@Bruno Motta)
- [13937](https://github.com/apache/superset/pull/13937) test: Tab (#13937) (@Bruno Motta)
- [13583](https://github.com/apache/superset/pull/13583) test: TableCollection (#13583) (@Bruno Motta)
- [13941](https://github.com/apache/superset/pull/13941) test: Tabs (#13941) (@Bruno Motta)
- [13502](https://github.com/apache/superset/pull/13502) test: Tests and Storybook entry for the IndeterminateCheckbox Component (#13502) (@Geido)
- [13501](https://github.com/apache/superset/pull/13501) test: Tests and Storybook entry for the TableView Component (#13501) (@Geido)
- [13508](https://github.com/apache/superset/pull/13508) test: Tests and dedicated directory for the SupersetResourceSelect Component (#13508) (@Geido)
- [13916](https://github.com/apache/superset/pull/13916) test: Tests audit for the Dashboard FilterBar (#13916) (@Geido)
- [13286](https://github.com/apache/superset/pull/13286) test: Tests for DeleteModal component (#13286) (@Bruno Motta)
- [13305](https://github.com/apache/superset/pull/13305) test: Tests for OmniContainer (#13305) (@Bruno Motta)
- [13513](https://github.com/apache/superset/pull/13513) test: Tests, dedicated directory and Storybook for the Badge component (#13513) (@Geido)
- [13534](https://github.com/apache/superset/pull/13534) test: Tests, dedicated directory and Storybook for the ProgressBar component (#13534) (@Geido)
- [13751](https://github.com/apache/superset/pull/13751) test: changing logger.exception to logger.errors in databases api (#13751) (@AAfghahi)
- [13719](https://github.com/apache/superset/pull/13719) test: exploreUtils (#13719) (@Bruno Motta)
- [13329](https://github.com/apache/superset/pull/13329) test: optimize codecov config (#13329) (@Jesse Yang)
- [13984](https://github.com/apache/superset/pull/13984) test: prevent flaky frontend unit test case (#13984) (@Yongjie Zhao)
- [13320](https://github.com/apache/superset/pull/13320) test: tests for component FaveStar (#13320) (@Bruno Motta)
- [13555](https://github.com/apache/superset/pull/13555) test: useChangeEffect (#13555) (@Bruno Motta)
- [13554](https://github.com/apache/superset/pull/13554) test: usePrevious hook (#13554) (@Bruno Motta)
- [13873](https://github.com/apache/superset/pull/13873) tests for FilterIndicator (#13873) (@Bruno Motta)
- [13896](https://github.com/apache/superset/pull/13896) tests for function handleScroll (#13896) (@Bruno Motta)
- [14363](https://github.com/apache/superset/pull/14363) update default cron settings for new alerts and reports (#14363) (@Sam Faber-Manning)
- [13463](https://github.com/apache/superset/pull/13463) update test (#13463) (@Lily Kuang)
- [13897](https://github.com/apache/superset/pull/13897) updates load_examples to load-examples (#13897) (@Alex Simoes)
- [14009](https://github.com/apache/superset/pull/14009) use dynamic time_grains for schema (#14009) (@Elizabeth Thompson)
- [13424](https://github.com/apache/superset/pull/13424) use semver for badge sort (#13424) (@Elizabeth Thompson)
### 1.1 (Wed Feb 24 12:08:28 2021 +0200)
+24 -8
View File
@@ -77,6 +77,8 @@ little bit helps, and credit will always be given.
- [Python Testing](#python-testing)
- [Frontend Testing](#frontend-testing)
- [Integration Testing](#integration-testing)
- [Debugging Server App](#debugging-server-app)
- [Debugging Server App in Kubernetes Environment](#debugging-server-app-in-kubernetes-environment)
- [Storybook](#storybook)
- [Translating](#translating)
- [Enabling language selection](#enabling-language-selection)
@@ -418,9 +420,10 @@ For example, the image referenced above actually lives in `superset-frontend/ima
#### OS Dependencies
Make sure your machine meets the [OS dependencies](https://superset.apache.org/docs/installation/installing-superset-from-scratch#os-dependencies) before following these steps.
Make sure your machine meets the [OS dependencies](https://superset.apache.org/docs/installation/installing-superset-from-scratch#os-dependencies) before following these steps.
You also need to install MySQL or [MariaDB](https://mariadb.com/downloads).
Ensure Python versions >3.7, Then proceed with:
Ensure that you are using Python version 3.7 or 3.8, then proceed with:
````bash
# Create a virtual environment and activate it (recommended)
@@ -428,12 +431,12 @@ python3 -m venv venv # setup a python3 virtualenv
source venv/bin/activate
# Install external dependencies
pip install -r requirements/local.txt
pip install -r requirements/testing.txt
# Install Superset in editable (development) mode
pip install -e .
# Create an admin user in your metadata database
# Create an admin user in your metadata database (use `admin` as username to be able to load the examples)
superset fab create-admin
# Initialize the database
@@ -442,13 +445,15 @@ superset db upgrade
# Create default roles and permissions
superset init
# Load some data to play with (you must create an Admin user with the username `admin` for this command to work)
# Load some data to play with.
# Note: you MUST have previously created an admin user with the username `admin` for this command to work.
superset load-examples
# Start the Flask dev web server from inside your virtualenv.
# Note that your page may not have css at this point.
# Note that your page may not have CSS at this point.
# See instructions below how to build the front-end assets.
FLASK_ENV=development superset run -p 8088 --with-threads --reload --debugger
```
Or you can install via our Makefile
@@ -473,6 +478,17 @@ via `.flaskenv`, however if needed, it should be set to `superset.app:create_app
If you have made changes to the FAB-managed templates, which are not built the same way as the newer, React-powered front-end assets, you need to start the app without the `--with-threads` argument like so:
`FLASK_ENV=development superset run -p 8088 --reload --debugger`
#### Dependencies
If you add a new requirement or update an existing requirement (per the `install_requires` section in `setup.py`) you must recompile (freeze) the Python dependencies to ensure that for CI, testing, etc. the build is deterministic. This can be achieved via,
```bash
$ python3 -m venv venv
$ source venv/bin/activate
$ python3 -m pip install -r requirements/integration.txt
$ pip-compile-multi --no-upgrade
```
#### Logging to the browser console
This feature is only available on Python 3. When debugging your application, you can have the server logs sent directly to the browser console using the [ConsoleLog](https://github.com/betodealmeida/consolelog) package. You need to mutate the app, by adding the following to your `config.py` or `superset_config.py`:
@@ -767,7 +783,7 @@ npm run test -- path/to/file.js
We use [Cypress](https://www.cypress.io/) for integration tests. Tests can be run by `tox -e cypress`. To open Cypress and explore tests first setup and run test server:
```bash
export SUPERSET_CONFIG=tests.superset_test_config
export SUPERSET_CONFIG=tests.integration_tests.superset_test_config
export SUPERSET_TESTENV=true
export ENABLE_REACT_CRUD_VIEWS=true
export CYPRESS_BASE_URL="http://localhost:8081"
@@ -1371,6 +1387,7 @@ Note not all fields are correctly catagorized. The fields vary based on visualiz
| Field | Type | Notes |
| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------- | ------------------------------------------------- |
| `adhoc_filters` | _array(object)_ | The **Filters** widget |
| `extra_filters` | _array(object)_ | Another pathway to the **Filters** widget.<br/>It is generally used to pass dashboard filter parameters to a chart.<br/>It can be used for appending additional filters to a chart that has been saved with its own filters on an ad-hoc basis if the chart is being used as a standalone widget.<br/><br/>For implementation examples see : [utils test.py](https://github.com/apache/superset/blob/66a4c94a1ed542e69fe6399bab4c01d4540486cf/tests/utils_tests.py#L181)<br/>For insight into how superset processes the contents of this parameter see: [exploreUtils/index.js](https://github.com/apache/superset/blob/93c7f5bb446ec6895d7702835f3157426955d5a9/superset-frontend/src/explore/exploreUtils/index.js#L159) |
| `columns` | _array(string)_ | The **Breakdowns** widget |
| `groupby` | _array(string)_ | The **Group by** or **Series** widget |
| `limit` | _number_ | The **Series Limit** widget |
@@ -1417,7 +1434,6 @@ Note the `y_axis_format` is defined under various section for some charts.
| `default_filters` | _N/A_ | |
| `entity` | _N/A_ | |
| `expanded_slices` | _N/A_ | |
| `extra_filters` | _N/A_ | |
| `filter_immune_slice_fields` | _N/A_ | |
| `filter_immune_slices` | _N/A_ | |
| `flt_col_0` | _N/A_ | |
+1 -1
View File
@@ -18,6 +18,6 @@ under the License.
-->
# INSTALL / BUILD instructions for Apache Superset
At this time, the docker file at RELEASING/Dockerfile.from_tarball
At this time, the docker file at RELEASING/Dockerfile.from_local_tarball
constitutes the recipe on how to get to a working release from a source
release tarball.
+9 -2
View File
@@ -15,6 +15,9 @@
# limitations under the License.
#
# Python version installed; we need 3.8 or 3.7
PYTHON=`command -v python3.8 || command -v python3.7`
.PHONY: install superset venv pre-commit
install: superset pre-commit
@@ -59,8 +62,9 @@ update-js:
venv:
# Create a virtual environment and activate it (recommended)
python3 -m venv venv # setup a python3 virtualenv
source venv/bin/activate
if ! [ -x "${PYTHON}" ]; then echo "You need Python 3.7 or 3.8 installed"; exit 1; fi
test -d venv || ${PYTHON} -m venv venv # setup a python3 virtualenv
. venv/bin/activate
pre-commit:
# setup pre commit dependencies
@@ -72,5 +76,8 @@ format: py-format js-format
py-format: pre-commit
pre-commit run black --all-files
py-lint: pre-commit
pylint -j 0 superset
js-format:
cd superset-frontend; npm run prettier
+1
View File
@@ -121,6 +121,7 @@ Here are some of the major database solutions that are supported:
<img src="superset-frontend/images/monet-db.png" alt="monet-db" border="0" width="106" height="46" />
<img src="superset-frontend/images/apache-kylin.png" alt="apache-kylin" border="0" width="56" height="64"/>
<img src="superset-frontend/images/hologres.png" alt="hologres" border="0" width="71" height="64"/>
<img src="superset-frontend/images/netezza.png" alt="netezza" border="0" width="64" height="64"/>
</p>
**A more comprehensive list of supported databases** along with the configuration instructions can be found
+5 -1
View File
@@ -29,7 +29,9 @@ on the Superset Slack. People crafting releases and those interested in
partaking in the process should join the channel.
## Release notes for recent releases
- [1.0.0](release-notes-1-0/README.md)
- [1.2](release-notes-1-2/README.md)
- [1.1](release-notes-1-1/README.md)
- [1.0](release-notes-1-0/README.md)
- [0.38](release-notes-0-38/README.md)
## Release setup (First Time Only)
@@ -197,6 +199,7 @@ Now let's ship this RC into svn's dev folder
cd ~/svn/superset_dev/
svn add ${SUPERSET_VERSION_RC}
svn commit -m "Release ${SUPERSET_VERSION_RC}"
svn update
```
### Build and test from SVN source tarball
@@ -270,6 +273,7 @@ cd ~/svn/superset/
for f in ${SUPERSET_VERSION}/*; do mv "$f" "${f/${SUPERSET_VERSION_RC}/${SUPERSET_VERSION}}"; done
svn add ${SUPERSET_VERSION}
svn commit -m "Release ${SUPERSET_VERSION}"
svn update
```
Then tag the final release:
+7 -6
View File
@@ -24,6 +24,7 @@ from dataclasses import dataclass
from typing import Any, Dict, Iterator, List, Optional, Union
import click
from click.core import Context
try:
from github import BadCredentialsException, Github, PullRequest, Repository
@@ -50,7 +51,7 @@ class GitLog:
author_email: str = ""
def __eq__(self, other: object) -> bool:
""" A log entry is considered equal if it has the same PR number """
"""A log entry is considered equal if it has the same PR number"""
if isinstance(other, self.__class__):
return other.pr_number == self.pr_number
return False
@@ -170,7 +171,7 @@ class GitChangeLog:
def _parse_change_log(
self, changelog: Dict[str, str], pr_info: Dict[str, str], github_login: str,
):
) -> None:
formatted_pr = (
f"- [#{pr_info.get('id')}]"
f"(https://github.com/{SUPERSET_REPO}/pull/{pr_info.get('id')}) "
@@ -324,8 +325,8 @@ def print_title(message: str) -> None:
@click.pass_context
@click.option("--previous_version", help="The previous release version", required=True)
@click.option("--current_version", help="The current release version", required=True)
def cli(ctx, previous_version: str, current_version: str) -> None:
""" Welcome to change log generator """
def cli(ctx: Context, previous_version: str, current_version: str) -> None:
"""Welcome to change log generator"""
previous_logs = GitLogs(previous_version)
current_logs = GitLogs(current_version)
previous_logs.fetch()
@@ -337,7 +338,7 @@ def cli(ctx, previous_version: str, current_version: str) -> None:
@cli.command("compare")
@click.pass_obj
def compare(base_parameters: BaseParameters) -> None:
""" Compares both versions (by PR) """
"""Compares both versions (by PR)"""
previous_logs = base_parameters.previous_logs
current_logs = base_parameters.current_logs
print_title(
@@ -369,7 +370,7 @@ def compare(base_parameters: BaseParameters) -> None:
def change_log(
base_parameters: BaseParameters, csv: str, access_token: str, risk: bool
) -> None:
""" Outputs a changelog (by PR) """
"""Outputs a changelog (by PR)"""
previous_logs = base_parameters.previous_logs
current_logs = base_parameters.current_logs
previous_diff_logs = previous_logs.diff(current_logs)
+122
View File
@@ -0,0 +1,122 @@
<!--
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.
-->
# Release Notes for Superset 1.2
Superset 1.2 continues the Apache ECharts migration by introducing several chart types. It also brings with it tons of user experience improvements, API improvements, bug fixes, and continued development of experimental features included in previous releases. Keep reading for more details on these categories:
- [**User Experience**](#user-experience)
- [**Dashboard Level Security**](#dashboard-level-security)
- [**Database Connectivity**](#database-connectivity)
- [**Developer Experience**](#developer-experience)
- [**PR Highlights**](#pr-highlights)
- [**Breaking Changes and Full Changelog**](#breaking-changes-and-full-changelog)
# User Experience
The migration to Apache ECharts continues by introducing several new high-quality visualizations in this release.
The mixed time-series multi chart allows different kinds of time-series visualization to be overlayed.
![mixed time series](media/time_series_multichart.png)
The radar chart provides a good way to compare two or more groups over various features of interest.
![radar chart](media/radar_chart.png)
By popular demand, we have introduced a new and improved version of the pivot table visualization as well.
![pivot table](media/pivot_table_v2.png)
Several UI tweaks in Explore and SQL Lab made it into this release as well, including new buttons and menu options to make common workflows easier, as well as more communicative error messages, particularly in the database connection menus.
The dashboard native filter feature, [while still behind a feature flag in this release](https://github.com/apache/superset/blob/master/RELEASING/release-notes-1-0/README.md#feature-flags), has received plenty of new functionality and is closer than ever to being ready for prime-time. This feature provides a way to apply and manipulate filters over many charts at the dashboard level. 1.2 adds more controls, more options for aggregations, and better support for temporal filters, among other things.
![Native Filter](media/native_filters.png)
![Native Filter](media/native_filters_temporal.png)
Last but not least, the alerts and reports feature and its dependencies have been added to the [docker-compose](https://superset.apache.org/docs/installation/installing-superset-using-docker-compose) setup, making it easier to use outside of well-supported enterprise deployments.
# Dashboard Level Security
Superset has so far relied on a role-based access system implemented at the dataset level. While this provides granular security options that satisfy many use cases, some organizations need more options. [SIP-51](https://github.com/apache/superset/issues/10408) lays out a vision for dashboard-level role-based access control as a fully backwards compatible extension to Superset's security options.
The 1.1 release saw steps taken in the direction of this vision, and 1.2 builds on that with new permissions for sharing charts and dashboards that can be assigned to roles. **Note that this functionality is still experimental and hidden behind a feature flag as of 1.2.**
![dashboard rbac](media/dashboard_rbac.png)
# Database Connectivity
The 1.2 release adds support for [Crate DB](https://github.com/apache/superset/pull/13152) and the [Databricks DB](https://github.com/apache/superset/pull/13682) engine spec.
# Developer Experience
Expanding the API has been an ongoing effort, and 1.2 introduces several new API routes to allow developers to get available databases, get a given dashboard's charts, and import saved queries, among other things.
# PR Highlights
**New Charts and User Experience**
- [14197](https://github.com/apache/superset/pull/14197) feat(viz): add mixed and radar chart (#14197) (@Ville Brofeldt)
- [14187](https://github.com/apache/superset/pull/14187) Enable the new pivot table (#14187) (@Kamil Gabryjelski)
- [13210](https://github.com/apache/superset/pull/13210) feat(explore): ColumnSelectControl with drag-and-drop (#13210) (@Yongjie Zhao)
- [13598](https://github.com/apache/superset/pull/13598) feat(explore): Drag and drop UX improvements (#13598) (@Kamil Gabryjelski)
- [13294](https://github.com/apache/superset/pull/13294) feat(explore): Postgres datatype conversion (#13294) (@Nikola Gigić)
- [13758](https://github.com/apache/superset/pull/13758) feat(explore): adhoc column formatting for Table chart (#13758) (@Jesse Yang)
**Progress On Dashboard Native Filters**
- [13726](https://github.com/apache/superset/pull/13726) feat(native-filters): Add default first value to select filter (#13726) (@simcha90)
- [14461](https://github.com/apache/superset/pull/14461) feat(native-filters): Auto apply changes in FiltersConfigModal (#14461) (@simcha90)
- [13507](https://github.com/apache/superset/pull/13507) feat(native-filters): Filter set tabs (#13507) (@simcha90)
- [14313](https://github.com/apache/superset/pull/14313) feat(native-filters): Implement adhoc filters and time picker in Range and Select native filters (#14313) (@Kamil Gabryjelski)
- [14261](https://github.com/apache/superset/pull/14261) feat(native-filters): Show/Hide filter bar by metdata ff (#14261) (@simcha90)
- [13506](https://github.com/apache/superset/pull/13506) feat(native-filters): Update filter bar buttons (#13506) (@simcha90)
- [14374](https://github.com/apache/superset/pull/14374) feat(native-filters): Use datasets in dashboard as default options for native filters (#14374) (@Kamil Gabryjelski)
- [14314](https://github.com/apache/superset/pull/14314) feat(native-filters): add option to create value in select filter (#14314) (@Ville Brofeldt)
- [14346](https://github.com/apache/superset/pull/14346) feat(native-filters): add optional sort metric to select filter (#14346) (@Ville Brofeldt)
- [14375](https://github.com/apache/superset/pull/14375) feat(native-filters): add refresh button to default value picker (#14375) (@Ville Brofeldt)
- [13569](https://github.com/apache/superset/pull/13569) feat(native-filters): add sort option to select filter (#13569) (@Ville Brofeldt)
- [13622](https://github.com/apache/superset/pull/13622) feat(native-filters): add temporal support to select filter (#13622) (@Ville Brofeldt)
- [13484](https://github.com/apache/superset/pull/13484) feat(native-filters): add timegrain and column filter (#13484) (@Ville Brofeldt)
- [14312](https://github.com/apache/superset/pull/14312) feat(native-filters): add tooltip to control values (#14312) (@Ville Brofeldt)
- [14217](https://github.com/apache/superset/pull/14217) feat(native-filters): select group by support (#14217) (@Amit Miran)
**Progress On Dashboard Level Access**
- [13145](https://github.com/apache/superset/pull/13145) feat(dashboard_rbac): manage roles for dashboard (#13145) (@simcha90)
- [13992](https://github.com/apache/superset/pull/13992) feat(dashboard_rbac): provide data access based on dashboard access (#13992) (@Amit Miran)
- [#12865](https://github.com/apache/superset/pull/12865) feat(dashboard_rbac): dashboards API support for roles create/update + roles validation (@amitmiran137)
**Improvements to Developer Experience**
- [14208](https://github.com/apache/superset/pull/14208) feat: add endpoint to fetch available DBs (#14208) (@Beto Dealmeida)
- [13331](https://github.com/apache/superset/pull/13331) fix(query-object): extra time-range-endpoints (#13331) (@John Bodley)
- [13893](https://github.com/apache/superset/pull/13893) feat: create backend routes and API for importing saved queries (#13893) (@AAfghahi)
- [13960](https://github.com/apache/superset/pull/13960) feat: initial work to make v1 API compatible with SIP-40 and SIP-41 (#13960) (@Beto Dealmeida)
- [13444](https://github.com/apache/superset/pull/13444) fix: API to allow importing old exports (JSON/YAML) (#13444) (@Beto Dealmeida)
- [13893](https://github.com/apache/superset/pull/13893) feat: create backend routes and API for importing saved queries (#13893) (@AAfghahi)
## Breaking Changes and Full Changelog
- To see the complete changelog in this release, head to [CHANGELOG.MD](https://github.com/apache/superset/blob/master/CHANGELOG.md).
- In line with the semantic versioning scheme adopted by the community, 1.2.0 does not contain any backwards incompatible changes.
Binary file not shown.

After

Width:  |  Height:  |  Size: 542 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 383 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

+30 -19
View File
@@ -17,7 +17,9 @@
#
import smtplib
import ssl
from typing import List
from typing import Any, Dict, List, Optional
from click.core import Context
try:
import jinja2
@@ -50,7 +52,7 @@ def send_email(
sender_email: str,
receiver_email: str,
message: str,
):
) -> None:
"""
Send a simple text email (SMTP)
"""
@@ -61,7 +63,7 @@ def send_email(
server.sendmail(sender_email, receiver_email, message)
def render_template(template_file: str, **kwargs) -> str:
def render_template(template_file: str, **kwargs: Any) -> str:
"""
Simple render template based on named parameters
@@ -73,7 +75,9 @@ def render_template(template_file: str, **kwargs) -> str:
return template.render(kwargs)
def inter_send_email(username, password, sender_email, receiver_email, message):
def inter_send_email(
username: str, password: str, sender_email: str, receiver_email: str, message: str
) -> None:
print("--------------------------")
print("SMTP Message")
print("--------------------------")
@@ -102,16 +106,16 @@ def inter_send_email(username, password, sender_email, receiver_email, message):
class BaseParameters(object):
def __init__(
self, email=None, username=None, password=None, version=None, version_rc=None
):
self, email: str, username: str, password: str, version: str, version_rc: str,
) -> None:
self.email = email
self.username = username
self.password = password
self.version = version
self.version_rc = version_rc
self.template_arguments = dict()
self.template_arguments: Dict[str, Any] = {}
def __repr__(self):
def __repr__(self) -> str:
return f"Apache Credentials: {self.email}/{self.username}/{self.version}/{self.version_rc}"
@@ -133,8 +137,15 @@ class BaseParameters(object):
)
@click.option("--version", envvar="SUPERSET_VERSION")
@click.option("--version_rc", envvar="SUPERSET_VERSION_RC")
def cli(ctx, apache_email, apache_username, apache_password, version, version_rc):
""" Welcome to releasing send email CLI interface! """
def cli(
ctx: Context,
apache_email: str,
apache_username: str,
apache_password: str,
version: str,
version_rc: str,
) -> None:
"""Welcome to releasing send email CLI interface!"""
base_parameters = BaseParameters(
apache_email, apache_username, apache_password, version, version_rc
)
@@ -155,7 +166,7 @@ def cli(ctx, apache_email, apache_username, apache_password, version, version_rc
prompt="The receiver email (To:)",
)
@click.pass_obj
def vote_pmc(base_parameters, receiver_email):
def vote_pmc(base_parameters: BaseParameters, receiver_email: str) -> None:
template_file = "email_templates/vote_pmc.j2"
base_parameters.template_arguments["receiver_email"] = receiver_email
message = render_template(template_file, **base_parameters.template_arguments)
@@ -202,13 +213,13 @@ def vote_pmc(base_parameters, receiver_email):
)
@click.pass_obj
def result_pmc(
base_parameters,
receiver_email,
vote_bindings,
vote_nonbindings,
vote_negatives,
vote_thread,
):
base_parameters: BaseParameters,
receiver_email: str,
vote_bindings: str,
vote_nonbindings: str,
vote_negatives: str,
vote_thread: str,
) -> None:
template_file = "email_templates/result_pmc.j2"
base_parameters.template_arguments["receiver_email"] = receiver_email
base_parameters.template_arguments["vote_bindings"] = string_comma_to_list(
@@ -239,7 +250,7 @@ def result_pmc(
prompt="The receiver email (To:)",
)
@click.pass_obj
def announce(base_parameters, receiver_email):
def announce(base_parameters: BaseParameters, receiver_email: str) -> None:
template_file = "email_templates/announce.j2"
base_parameters.template_arguments["receiver_email"] = receiver_email
message = render_template(template_file, **base_parameters.template_arguments)
+1 -1
View File
@@ -25,7 +25,6 @@ These features are considered **unfinished** and should only be used on developm
- CLIENT_CACHE
- DASHBOARD_CACHE
- DASHBOARD_NATIVE_FILTERS_SET
- DASHBOARD_RBAC
- DISABLE_DATASET_SOURCE_EDIT
- ENABLE_EXPLORE_JSON_CSRF_PROTECTION
- KV_STORE
@@ -49,6 +48,7 @@ These features are **finished** but currently being tested. They are usable, but
These features flags are **safe for production** and have been tested.
- DASHBOARD_CROSS_FILTERS
- DASHBOARD_RBAC [(docs)](https://superset.apache.org/docs/creating-charts-dashboards/first-dashboard#manage-access-to-dashboards)
- ESCAPE_MARKDOWN_HTML
- ENABLE_TEMPLATE_PROCESSING
- LISTVIEWS_DEFAULT_CARD_VIEW
+3 -1
View File
@@ -79,6 +79,7 @@ Join our growing community!
- [FBK - ICT center](http://ict.fbk.eu)
- [GfK Data Lab](http://datalab.gfk.com) [@mherr]
- [GrowthSimple](https://growthsimple.ai/)
- [Hydrolix](https://www.hydrolix.io/)
- [Intercom](https://www.intercom.com/) [@kate-gallo]
- [jampp](https://jampp.com/)
- [Konfío](http://konfio.mx) [@uis-rodriguez]
@@ -110,7 +111,7 @@ Join our growing community!
- [Douban](https://www.douban.com/) [@luchuan]
- [Kuaishou](https://www.kuaishou.com/) [@zhaoyu89730105]
- [Netflix](https://www.netflix.com/)
- [TME QQMUSIC/WESING](https://www.tencentmusic.com/)
- [TME QQMUSIC/WESING](https://www.tencentmusic.com/)[@shenyuanli,@marklaw]
- [Xite](https://xite.com/) [@shashankkoppar]
- [Zaihang](http://www.zaih.com/)
@@ -118,6 +119,7 @@ Join our growing community!
- [Brilliant.org](https://brilliant.org/)
- [Udemy](https://www.udemy.com/) [@sungjuly]
- [VIPKID](https://www.vipkid.com.cn/) [@illpanda]
- [Sunbird](https://www.sunbird.org/) [@eksteporg]
### Energy
- [Airboxlab](https://foobot.io) [@antoine-galataud]
+3
View File
@@ -23,6 +23,9 @@ This file documents any backwards-incompatible changes in Superset and
assists people when migrating to a new version.
## Next
- [15909](https://github.com/apache/incubator-superset/pull/15909): a change which
drops a uniqueness criterion (which may or may not have existed) to the tables table. This constraint was obsolete as it is handled by the ORM due to differences in how MySQL, PostgreSQL, etc. handle uniqueness for NULL values.
- [13772](https://github.com/apache/superset/pull/13772): Row level security (RLS) is now enabled by default. To activate the feature, please run `superset init` to expose the RLS menus to Admin users.
- [13980](https://github.com/apache/superset/pull/13980): Data health checks no longer use the metadata database as an interim cache. Though non-breaking, deployments which implement complex logic should likely memoize the callback function. Refer to documentation in the confg.py file for more detail.
+3
View File
@@ -118,6 +118,9 @@ services:
depends_on: *superset-depends-on
user: *superset-user
volumes: *superset-volumes
# Bump memory limit if processing selenium / thumbails on superset-worker
# mem_limit: 2038m
# mem_reservation: 128M
superset-worker-beat:
image: *superset-image
+19 -25
View File
@@ -24,58 +24,52 @@ Docker is an easy way to get started with Superset.
## Prerequisites
1. Docker! [link](https://www.docker.com/get-started)
1. Docker-compose [link](https://docs.docker.com/compose/install/)
2. Docker-compose [link](https://docs.docker.com/compose/install/)
## Configuration
The `/app/pythonpath` folder is mounted from [./docker/pythonpath_dev](./docker/pythonpath_dev)
which contains a base configuration [./docker/pythonpath_dev/superset_config.py](./docker/pythonpath_dev/superset_config.py)
The `/app/pythonpath` folder is mounted from [`./docker/pythonpath_dev`](./pythonpath_dev)
which contains a base configuration [`./docker/pythonpath_dev/superset_config.py`](./pythonpath_dev/superset_config.py)
intended for use with local development.
### Local overrides
In order to override configuration settings locally, simply make a copy of [./docker/pythonpath_dev/superset_config_local.example](./docker/pythonpath_dev/superset_config_local.example)
into [./docker/pythonpath_dev/superset_config_docker.py](./docker/pythonpath_dev/superset_config_docker.py) (git ignored) and fill in your overrides.
In order to override configuration settings locally, simply make a copy of [`./docker/pythonpath_dev/superset_config_local.example`](./pythonpath_dev/superset_config_local.example)
into `./docker/pythonpath_dev/superset_config_docker.py` (git ignored) and fill in your overrides.
### Local packages
If you want to add python packages in order to test things like DBs locally, you can simply add a local requirements.txt (./docker/requirements-local.txt)
and rebuild your docker stack.
If you want to add Python packages in order to test things like databases locally, you can simply add a local requirements.txt (`./docker/requirements-local.txt`)
and rebuild your Docker stack.
Steps:
1. Create ./docker/requirements-local.txt
2. Add your new packages
3. Rebuild docker-compose
a. `docker-compose down -v`
b. `docker-compose up`
1. Create `./docker/requirements-local.txt`
2. Add your new packages
3. Rebuild docker-compose
1. `docker-compose down -v`
2. `docker-compose up`
## Initializing Database
The DB will initialize itself upon startup via the init container (superset-init)
(This may take a minute.)
The database will initialize itself upon startup via the init container ([`superset-init`](./docker-init.sh)). This may take a minute.
## Normal Operation
To run the container, simply run:
To run the container, simply run: `docker-compose up`
```bash
docker-compose up
```
After several minutes for superset initialization to finish, you can open a browser and view [`http://localhost:8088`](http://localhost:8088)
After waiting several minutes for Superset initialization to finish, you can open a browser and view [`http://localhost:8088`](http://localhost:8088)
to start your journey.
## Developing
While running, the container server will reload on modification of the superset python and javascript source code.
While running, the container server will reload on modification of the Superset Python and JavaScript source code.
Don't forget to reload the page to take the new frontend into account though.
## Production
It is also possible to run Superset in non-development mode: in the `docker-compose.yml` file remove
the volumes needed for development and change the variable `SUPERSET_ENV` to `production`.
It is possible to run Superset in non-development mode by using [`docker-compose-non-dev.yml`](../docker-compose-non-dev.yml). This file excludes the volumes needed for development and uses [`./docker/.env-non-dev`](./.env-non-dev) which sets the variable `SUPERSET_ENV` to `production`.
## Resource Constraints
If you are attempting to build on a Mac and it exits with 137 you need to increase your docker resources.
OSX instructions: https://docs.docker.com/docker-for-mac/#advanced (Search for memory)
If you are attempting to build on macOS and it exits with 137 you need to increase your Docker resources. See instructions [here](https://docs.docker.com/docker-for-mac/#advanced) (search for memory)
+1 -1
View File
@@ -21,7 +21,7 @@ set -eo pipefail
REQUIREMENTS_LOCAL="/app/docker/requirements-local.txt"
# If Cypress run overwrite the password for admin and export env variables
if [ "$CYPRESS_CONFIG" == "true" ]; then
export SUPERSET_CONFIG=tests.superset_test_config
export SUPERSET_CONFIG=tests.integration_tests.superset_test_config
export SUPERSET_TESTENV=true
export ENABLE_REACT_CRUD_VIEWS=true
export SUPERSET__SQLALCHEMY_DATABASE_URI=postgresql+psycopg2://superset:superset@db:5432/superset
+4 -3
View File
@@ -23,6 +23,7 @@
import logging
import os
from datetime import timedelta
from typing import Optional
from cachelib.file import FileSystemCache
from celery.schedules import crontab
@@ -30,7 +31,7 @@ from celery.schedules import crontab
logger = logging.getLogger()
def get_env_variable(var_name, default=None):
def get_env_variable(var_name: str, default: Optional[str] = None) -> str:
"""Get the environment variable or raise exception."""
try:
return os.environ[var_name]
@@ -63,8 +64,8 @@ SQLALCHEMY_DATABASE_URI = "%s://%s:%s@%s:%s/%s" % (
REDIS_HOST = get_env_variable("REDIS_HOST")
REDIS_PORT = get_env_variable("REDIS_PORT")
REDIS_CELERY_DB = get_env_variable("REDIS_CELERY_DB", 0)
REDIS_RESULTS_DB = get_env_variable("REDIS_RESULTS_DB", 1)
REDIS_CELERY_DB = get_env_variable("REDIS_CELERY_DB", "0")
REDIS_RESULTS_DB = get_env_variable("REDIS_RESULTS_DB", "1")
RESULTS_BACKEND = FileSystemCache("/app/superset_home/sqllab")
+22
View File
@@ -0,0 +1,22 @@
# 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.
publish:
whoami: asf-site
staging:
whoami: asf-site
+2 -1
View File
@@ -443,7 +443,7 @@ This is an optional feature that can be turned on by activating its feature flag
}
For this feature you will need a cache system and celery workers. All thumbnails are store on cache and are processed
For this feature you will need a cache system and celery workers. All thumbnails are stored on cache and are processed
asynchronously by the workers.
An example config where images are stored on S3 could be:
@@ -1571,6 +1571,7 @@ Second step: Create a `CustomSsoSecurityManager` that extends `SupersetSecurityM
.. code-block:: python
import logging
from superset.security import SupersetSecurityManager
class CustomSsoSecurityManager(SupersetSecurityManager):
+1 -1
View File
@@ -52,7 +52,7 @@
],
"license": "0BSD",
"scripts": {
"build": "gatsby build && cp .htaccess public/",
"build": "gatsby build && cp .htaccess .asf.yaml public/",
"develop": "gatsby develop",
"develop-ga": "GATSBY_GTAG_DEBUG=true gatsby develop",
"format": "prettier --write \"**/*.{js,jsx,ts,tsx,json,md,mdx}\"",
Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

@@ -53,12 +53,18 @@ Rebuild your local image with the new driver baked in:
docker-compose build --force-rm
```
After the rebuild is complete, which make take a few minutes, relaunch:
After the rebuild of the Docker images is complete (which make take a few minutes) you can relaunch using the following command:
```
docker-compose up
```
The other option is to start Superset via Docker Compose is using the recipe in `docker-compose-non-dev.yml`, which will use pre-built frontend assets and skip the building of front-end assets:
```
docker-compose -f docker-compose-non-dev.yml up
```
### 3. Connect to MySQL
Now that you've got a MySQL driver installed locally, you should be able to test it out.
@@ -14,7 +14,7 @@ The recommended connector library for Dremio is
The expected connection string for ODBC (Default port is 31010) is formatted as follows:
```
dremio://{username}:{password}@{host}:{port}/dremio
dremio://{username}:{password}@{host}:{port}/{database_name}/dremio?SSL=1
```
The expected connection string for Arrow Flight (Dremio 4.9.1+. Default port is 32010) is formatted as follows:
@@ -44,6 +44,7 @@ A list of some of the recommended packages.
|[Google Sheets](/docs/databases/google-sheets)|```pip install shillelagh[gsheetsapi]```|```gsheets://```|
|[Hologres](/docs/databases/hologres)|```pip install psycopg2```|```postgresql+psycopg2://<UserName>:<DBPassword>@<Database Host>/<Database Name>```|
|[IBM Db2](/docs/databases/ibm-db2)|```pip install ibm_db_sa```|```db2+ibm_db://```|
|[IBM Netezza Performance Server](/docs/databases/netezza)|```pip install nzalchemy```|```netezza+nzpy://<UserName>:<DBPassword>@<Database Host>/<Database Name>```|
|[MySQL](/docs/databases/mysql)|```pip install mysqlclient```|```mysql://<UserName>:<DBPassword>@<Database Host>/<Database Name>```|
|[Oracle](/docs/databases/oracle)|```pip install cx_Oracle```|```oracle://```|
|[PostgreSQL](/docs/databases/postgresql)|```pip install psycopg2```|```postgresql://<UserName>:<DBPassword>@<Database Host>/<Database Name>```|
@@ -0,0 +1,18 @@
---
name: IBM Netezza Performance Server
menu: Connecting to Databases
route: /docs/databases/netezza
index: 19
version: 1
---
## IBM Netezza Performance Server
The [nzalchemy](https://pypi.org/project/nzalchemy/) library provides a
Python / SQLAlchemy interface to IBM Netezza Performance Server (aka Netezza).
Here's the recommended connection string:
```
netezza+nzpy://{username}:{password}@{hostname}:{port}/{database}
```
@@ -0,0 +1,77 @@
---
name: Using Database Connection UI
menu: Connecting to Databases
route: /docs/databases/db-connection-ui
index: 1
version: 1
---
Here is the documentation on how to leverage the new DB Connection UI. This will provide admins the ability to enhance the UX for users who want to connect to new databases.
![db-conn-docs](https://user-images.githubusercontent.com/27827808/125499607-94e300aa-1c0f-4c60-b199-3f9de41060a3.gif)
There are now 3 steps when connecting to a database in the new UI:
Step 1: First the admin must inform superset what engine they want to connect to. This page is powered by the `/available` endpoint which pulls on the engines currently installed in your environment, so that only supported databases are shown.
Step 2: Next, the admin is prompted to enter database specific parameters. Depending on whether there is a dynamic form available for that specific engine, the admin will either see the new custom form or the legacy SQLAlchemy form. We currently have built dynamic forms for (Redshift, MySQL, Postgres, and BigQuery). The new form prompts the user for the parameters needed to connect (for example, username, password, host, port, etc.) and provides immediate feedback on errors.
Step 3: Finally, once the admin has connected to their DB using the dynamic form they have the opportunity to update any optional advanced settings.
We hope this feature will help eliminate a huge bottleneck for users to get into the application and start crafting datasets.
### How to setup up preferred database options and images
We added a new configuration option where the admin can define their preferred databases, in order:
```python
# A list of preferred databases, in order. These databases will be
# displayed prominently in the "Add Database" dialog. You should
# use the "engine_name" attribute of the corresponding DB engine spec
# in `superset/db_engine_specs/`.
PREFERRED_DATABASES: List[str] = [
"PostgreSQL",
"Presto",
"MySQL",
"SQLite",
]
```
For copyright reasons the logos for each database are not distributed with Superset.
### Setting images
- To set the images of your preferred database, admins must create a mapping in the `superset_text.yml` file with engine and location of the image. The image can be host locally inside your static/file directory or online (e.g. S3)
```python
DB_IMAGES:
postgresql: "path/to/image/postgres.jpg"
bigquery: "path/to/s3bucket/bigquery.jpg"
snowflake: "path/to/image/snowflake.jpg"
```
### How to add new database engines to available endpoint
Currently the new modal supports the following databases:
- Postgres
- Redshift
- MySQL
- BigQuery
When the user selects a database not in this list they will see the old dialog asking for the SQLAlchemy URI. New databases can be added gradually to the new flow. In order to support the rich configuration a DB engine spec needs to have the following attributes:
1. `parameters_schema`: a Marshmallow schema defining the parameters needed to configure the database. For Postgres this includes username, password, host, port, etc. ([see](https://github.com/apache/superset/blob/accee507c0819cd0d7bcfb5a3e1199bc81eeebf2/superset/db_engine_specs/base.py#L1309-L1320)).
2. `default_driver`: the name of the recommended driver for the DB engine spec. Many SQLAlchemy dialects support multiple drivers, but usually one is the official recommendation. For Postgres we use "psycopg2".
3. `sqlalchemy_uri_placeholder`: a string that helps the user in case they want to type the URI directly.
4. `encryption_parameters`: parameters used to build the URI when the user opts for an encrypted connection. For Postgres this is `{"sslmode": "require"}`.
In addition, the DB engine spec must implement these class methods:
- `build_sqlalchemy_uri(cls, parameters, encrypted_extra)`: this method receives the distinct parameters and builds the URI from them.
- `get_parameters_from_uri(cls, uri, encrypted_extra)`: this method does the opposite, extracting the parameters from a given URI.
- `validate_parameters(cls, parameters)`: this method is used for `onBlur` validation of the form. It should return a list of `SupersetError` indicating which parameters are missing, and which parameters are definitely incorrect ([example](https://github.com/apache/superset/blob/accee507c0819cd0d7bcfb5a3e1199bc81eeebf2/superset/db_engine_specs/base.py#L1404)).
For databases like MySQL and Postgres that use the standard format of `engine+driver://user:password@host:port/dbname` all you need to do is add the `BasicParametersMixin` to the DB engine spec, and then define the parameters 2-4 (`parameters_schema` is already present in the mixin).
For other databases you need to implement these methods yourself. The BigQuery DB engine spec is a good example of how to do that.
@@ -66,7 +66,7 @@ Navigate to **Data ‣ Datasets** and select the **+ Dataset** button in the top
A modal window should pop up in front of you. Select your **Database**,
**Schema**, and **Table** using the drop downs that appear. In the following example,
we register the **cleaned_sales_data** table from the **examples** database.
we register the **Vehicle Sales** table from the **examples** database.
<img src="/images/tutorial_09_add_new_table.png" />
@@ -172,3 +172,19 @@ into a position you like onto the underlying grid.
Congrats! Youve successfully linked, analyzed, and visualized data in Superset. There are a wealth
of other table configuration and visualization options, so please start exploring and creating
slices and dashboards of your own
ֿ
### Manage access to Dashboards
Access to dashboards is managed via owners (users that have edit permissions to the dashboard)
Non-owner users access can be managed two different ways:
1. Dataset permissions - if you add to the relevant role permissions to datasets it automatically grants implict access to all dashboards that uses those permitted datasets
2. Dashboard roles - if you enable **DASHBOARD_RBAC** feature flag then you be able to manage which roles can access the dashboard
- Having dashboard access implicitly grants read access to the associated datasets, therefore
all charts will load their data even if feature flag is turned on and no roles assigned
to roles the access will fallback to **Dataset permissions**
<img src="/images/tutorial_dashboard_access.png" />
@@ -263,3 +263,75 @@ The database is currently running too many queries.
```
The database might be under heavy load, running too many queries. Please try again later, or contact an administrator for further assistance.
## Issue 1028
```
One or more parameters specified in the query are malformatted.
```
The query contains one or more malformed template parameters. Please check your query and confirm that all template parameters are surround by double braces, for example, "{{ ds }}". Then, try running your query again.
## Issue 1029
```
The object does not exist in this database.
```
Either the schema, column, or table do not exist in the database.
## Issue 1030
```
The query potentially has a syntax error.
```
The query might have a syntax error. Please check and run again.
## Issue 1031
```
The results backend no longer has the data from the query.
```
The results from the query might have been deleted from the results backend after some period. Please re-run your query.
## Issue 1032
```
The query associated with the results was deleted.
```
The query associated with the stored results no longer exists. Please re-run your query.
## Issue 1033
```
The results stored in the backend were stored in a different format, and no longer can be deserialized.
```
The query results were stored in a format that is no longer supported. Please re-run your query.
## Issue 1034
```
The database port provided is invalid.
```
Please check that the provided database port is an integer between 0 and 65535 (inclusive).
## Issue 1035
```
Failed to start remote query on a worker.
```
The query was not started by an asynchronous worker. Please reach out to your administrator for further assistance.
## Issue 1036
```
The database was deleted.
```
The operation failed because the database referenced no longer exists. Please reach out to your administrator for further assistance.
@@ -38,6 +38,7 @@ To send alerts and reports to Slack channels, you need to create a new Slack App
3. Go to "OAuth & Permissions" section, and give the following scopes to your app:
- `incoming-webhook`
- `files:write`
- `chat:write`
4. At the top of the "OAuth and Permissions" section, click "install to workspace".
5. Select a default channel for your app and continue.
(You can post to any channel by inviting your Superset app into that channel).
+1 -1
View File
@@ -71,7 +71,7 @@ FEATURE_FLAGS = {
}
```
For this feature you will need a cache system and celery workers. All thumbnails are store on cache
For this feature you will need a cache system and celery workers. All thumbnails are stored on cache
and are processed asynchronously by the workers.
An example config where images are stored on S3 could be:
@@ -154,6 +154,7 @@ Then, create a `CustomSsoSecurityManager` that extends `SupersetSecurityManager`
`oauth_user_info`:
```python
import logging
from superset.security import SupersetSecurityManager
class CustomSsoSecurityManager(SupersetSecurityManager):
@@ -100,3 +100,13 @@ username: admin
```bash
password: admin
```
### 5. Connecting your local database instance to superset
When running Superset using `docker` or `docker-compose` it runs in its own docker container, as if the Superset was running in a separate machine entirely. Therefore attempts to connect to your local database with hostname `localhost` won't work as `localhost` refers to the docker container Superset is running in, and not your actual host machine. Fortunately, docker provides an easy way to access network resources in the host machine from inside a container, and we will leverage this capability to connect to our local database instance.
Here the instructions are for connecting to postgresql (which is running on your host machine) from Superset (which is running in its docker container). Other databases may have slightly different configurations but gist would be same and boils down to 2 steps -
1. **(Mac users may skip this step)** Configuring the local postgresql/database instance to accept public incoming connections. By default postgresql only allows incoming connections from `localhost` only, but re-iterating once again, `localhosts` are different for host machine and docker container. For postgresql this involves make one-line changes to the files `postgresql.conf` and `pg_hba.conf`, you can find helpful links tailored to your OS / PG version on the web easily for this task. For docker it suffices to only whitelist IPs `172.0.0.0/8` instead of `*`, but in any case you are *warned* that doing this in a production database *may* have disastrous consequences as you are opening your database to the public internet.
2. Instead of `localhost`, try using `host.docker.internal` (Mac users) or `172.18.0.1` (Linux users) as the host name when attempting to connect to the database. This is docker internal detail, what is happening is that in Mac systems docker creates a dns entry for the host name `host.docker.internal` which resolves to the correct address for the host machine, whereas in linux this is not the case (at least by default). If neither of these 2 hostnames work then you may want to find the exact host name you want to use, for that you can do `ifconfig` or `ip addr show` and look at the IP address of `docker0` interface that must have been created by docker for you. Alternately if you don't even see the `docker0` interface try (if needed with sudo) `docker network inspect bridge` and see if there is an entry for `"Gateway"` and note the IP address.
@@ -32,7 +32,7 @@ cross-domain request).
Add the following setting in your `superset_config.py` file:
- `SUPERSET_WEBSERVER_DOMAINS`: list of allowed hostnames for domain shareding feature.
- `SUPERSET_WEBSERVER_DOMAINS`: list of allowed hostnames for domain sharding feature.
### Middleware
+5
View File
@@ -235,4 +235,9 @@ export const Databases = [
href: 'https://www.alibabacloud.com/product/hologres',
imgName: 'hologres.png',
},
{
title: 'IBM Netezza Performance Server',
href: 'https://www.ibm.com/products/netezza',
imgName: 'netezza.png',
},
];
File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

+2 -2
View File
@@ -22,13 +22,13 @@ maintainers:
- name: craig-rueda
email: craig@craigrueda.com
url: https://github.com/craig-rueda
version: 0.2.1
version: 0.3.5
dependencies:
- name: postgresql
version: 10.2.0
repository: https://charts.bitnami.com/bitnami
condition: postgresql.enabled
- name: redis
version: 12.3.0
version: 12.3.3
repository: https://charts.bitnami.com/bitnami
condition: redis.enabled
+5 -1
View File
@@ -69,7 +69,7 @@ spec:
env:
- name: "SUPERSET_PORT"
value: {{ .Values.service.port | quote}}
{{ if .Values.extraEnv }}
{{- if .Values.extraEnv }}
{{- range $key, $value := .Values.extraEnv }}
- name: {{ $key | quote}}
value: {{ $value | quote }}
@@ -78,6 +78,10 @@ spec:
envFrom:
- secretRef:
name: {{ tpl .Values.envFromSecret . | quote }}
{{- range .Values.envFromSecrets }}
- secretRef:
name: {{ tpl . $ | quote }}
{{- end }}
volumeMounts:
- name: superset-config
mountPath: {{ .Values.configMountPath | quote }}
@@ -70,7 +70,7 @@ spec:
env:
- name: "SUPERSET_PORT"
value: {{ .Values.service.port | quote}}
{{ if .Values.extraEnv }}
{{- if .Values.extraEnv }}
{{- range $key, $value := .Values.extraEnv }}
- name: {{ $key | quote}}
value: {{ $value | quote }}
@@ -79,6 +79,10 @@ spec:
envFrom:
- secretRef:
name: {{ tpl .Values.envFromSecret . | quote }}
{{- range .Values.envFromSecrets }}
- secretRef:
name: {{ tpl . $ | quote }}
{{- end }}
volumeMounts:
- name: superset-config
mountPath: {{ .Values.configMountPath | quote }}
+5 -1
View File
@@ -73,7 +73,7 @@ spec:
env:
- name: "SUPERSET_PORT"
value: {{ .Values.service.port | quote}}
{{ if .Values.extraEnv }}
{{- if .Values.extraEnv }}
{{- range $key, $value := .Values.extraEnv }}
- name: {{ $key | quote}}
value: {{ $value | quote }}
@@ -82,6 +82,10 @@ spec:
envFrom:
- secretRef:
name: {{ tpl .Values.envFromSecret . | quote }}
{{- range .Values.envFromSecrets }}
- secretRef:
name: {{ tpl . $ | quote }}
{{- end }}
volumeMounts:
- name: superset-config
mountPath: {{ .Values.configMountPath | quote }}
+7 -5
View File
@@ -16,8 +16,7 @@
#
{{ if .Values.ingress.enabled -}}
{{- $fullName := include "superset.fullname" . -}}
{{- $ingressPath := .Values.ingress.path -}}
apiVersion: extensions/v1beta1
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: {{ $fullName }}
@@ -46,9 +45,12 @@ spec:
- host: {{ . }}
http:
paths:
- path: {{ $ingressPath }}
- path: {{ $.Values.ingress.path }}
pathType: {{ $.Values.ingress.pathType }}
backend:
serviceName: {{ $fullName }}
servicePort: http
service:
name: {{ $fullName }}
port:
name: http
{{- end }}
{{- end }}
+5 -1
View File
@@ -46,12 +46,16 @@ spec:
envFrom:
- secretRef:
name: {{ tpl .Values.envFromSecret . }}
{{- range .Values.envFromSecrets }}
- secretRef:
name: {{ tpl . $ }}
{{- end }}
imagePullPolicy: {{ .Values.image.pullPolicy }}
volumeMounts:
- name: superset-config
mountPath: {{ .Values.configMountPath | quote }}
readOnly: true
{{ if .Values.extraConfigs }}
{{- if .Values.extraConfigs }}
- name: superset-extra-config
mountPath: {{ .Values.extraConfigMountPath | quote }}
readOnly: true
+4 -1
View File
@@ -44,6 +44,8 @@ configFromSecret: '{{ template "superset.fullname" . }}-config'
## This can be useful for secret keys, etc.
##
envFromSecret: '{{ template "superset.fullname" . }}-env'
## This can be a list of template strings
envFromSecrets: []
## Extra environment variables that will be passed into pods
##
@@ -145,6 +147,7 @@ ingress:
# nginx.ingress.kubernetes.io/proxy-read-timeout: "300"
# nginx.ingress.kubernetes.io/proxy-send-timeout: "300"
path: /
pathType: ImplementationSpecific
hosts:
- chart-example.local
tls: []
@@ -241,7 +244,7 @@ supersetCeleryBeat:
## Init job configuration
init:
# Configure resources
# Warning: fab commant consumes a lot of ram and can
# Warning: fab command consumes a lot of ram and can
# cause the process to be killed due to OOM if it exceeds limit
resources: {}
# limits:
+32 -45
View File
@@ -48,8 +48,6 @@ colorama==0.4.4
# via
# apache-superset
# flask-appbuilder
contextlib2==0.6.0.post1
# via apache-superset
convertdate==2.3.0
# via holidays
cron-descriptor==1.2.24
@@ -58,19 +56,32 @@ croniter==0.3.36
# via apache-superset
cryptography==3.3.2
# via apache-superset
decorator==4.4.2
# via retry
defusedxml==0.6.0
# via python3-openid
deprecation==2.1.0
# via apache-superset
dnspython==2.0.0
# via email-validator
email-validator==1.1.1
# via flask-appbuilder
flask==1.1.2
# via
# apache-superset
# flask-appbuilder
# flask-babel
# flask-caching
# flask-compress
# flask-jwt-extended
# flask-login
# flask-migrate
# flask-openid
# flask-sqlalchemy
# flask-wtf
flask-appbuilder==3.3.0
# via apache-superset
flask-babel==1.0.0
# via flask-appbuilder
flask-caching==1.9.0
flask-caching==1.10.1
# via apache-superset
flask-compress==1.8.0
# via apache-superset
@@ -92,19 +103,6 @@ flask-wtf==0.14.3
# via
# apache-superset
# flask-appbuilder
flask==1.1.2
# via
# apache-superset
# flask-appbuilder
# flask-babel
# flask-caching
# flask-compress
# flask-jwt-extended
# flask-login
# flask-migrate
# flask-openid
# flask-sqlalchemy
# flask-wtf
geographiclib==1.50
# via geopy
geopy==2.0.0
@@ -121,11 +119,6 @@ idna==2.10
# via
# email-validator
# yarl
importlib-metadata==2.1.1
# via
# jsonschema
# kombu
# markdown
isodate==0.6.0
# via apache-superset
itsdangerous==1.1.0
@@ -152,15 +145,15 @@ markupsafe==1.1.1
# jinja2
# mako
# wtforms
marshmallow-enum==1.5.1
# via flask-appbuilder
marshmallow-sqlalchemy==0.23.1
# via flask-appbuilder
marshmallow==3.9.0
# via
# flask-appbuilder
# marshmallow-enum
# marshmallow-sqlalchemy
marshmallow-enum==1.5.1
# via flask-appbuilder
marshmallow-sqlalchemy==0.23.1
# via flask-appbuilder
msgpack==1.0.0
# via apache-superset
multidict==5.0.0
@@ -174,21 +167,19 @@ numpy==1.19.4
# pandas
# pyarrow
packaging==20.4
# via bleach
# via
# bleach
# deprecation
pandas==1.2.2
# via apache-superset
parsedatetime==2.6
# via apache-superset
pathlib2==2.3.5
# via apache-superset
pgsanity==0.2.9
# via apache-superset
polyline==1.4.0
# via apache-superset
prison==0.1.3
# via flask-appbuilder
py==1.9.0
# via retry
pyarrow==4.0.1
# via apache-superset
pycparser==2.20
@@ -237,8 +228,6 @@ pyyaml==5.4.1
# apispec
redis==3.5.3
# via apache-superset
retry==0.9.2
# via apache-superset
selenium==3.141.0
# via apache-superset
simplejson==3.17.2
@@ -253,7 +242,6 @@ six==1.15.0
# isodate
# jsonschema
# packaging
# pathlib2
# polyline
# prison
# pyrsistent
@@ -262,10 +250,6 @@ six==1.15.0
# wtforms-json
slackclient==2.5.0
# via apache-superset
sqlalchemy-utils==0.36.8
# via
# apache-superset
# flask-appbuilder
sqlalchemy==1.3.20
# via
# alembic
@@ -274,13 +258,18 @@ sqlalchemy==1.3.20
# flask-sqlalchemy
# marshmallow-sqlalchemy
# sqlalchemy-utils
sqlalchemy-utils==0.36.8
# via
# apache-superset
# flask-appbuilder
sqlparse==0.3.0
# via apache-superset
tabulate==0.8.9
# via apache-superset
typing-extensions==3.7.4.3
# via
# aiohttp
# apache-superset
# yarl
urllib3==1.25.11
# via selenium
vine==1.3.0
@@ -293,18 +282,16 @@ werkzeug==1.0.1
# via
# flask
# flask-jwt-extended
wtforms-json==0.3.3
# via apache-superset
wtforms==2.3.3
# via
# flask-wtf
# wtforms-json
wtforms-json==0.3.3
# via apache-superset
yarl==1.6.2
# via aiohttp
zipp==3.4.1
# via
# -r requirements/base.in
# importlib-metadata
# via -r requirements/base.in
# The following packages are considered to be unsafe in a requirements file:
# setuptools
+1
View File
@@ -25,3 +25,4 @@ psycopg2-binary==2.8.5
tableschema
thrift>=0.11.0,<1.0.0
pygithub>=1.54.1,<2.0.0
progress>=1.5,<2
+5 -3
View File
@@ -1,4 +1,4 @@
# SHA1:1b4d15a41f3498d2eb930ac3d3d4ce5d1f218a2f
# SHA1:c470411e2e9cb04b412a94f80a6a9d870bece74d
#
# This file is autogenerated by pip-compile-multi
# To update, run:
@@ -44,6 +44,8 @@ openpyxl==3.0.5
# via tabulator
pillow==7.2.0
# via -r requirements/development.in
progress==1.5
# via -r requirements/development.in
psycopg2-binary==2.8.5
# via -r requirements/development.in
pydruid==0.6.1
@@ -70,13 +72,13 @@ tableschema==1.20.0
# via -r requirements/development.in
tabulator==1.52.5
# via tableschema
thrift-sasl==0.4.2
# via pyhive
thrift==0.13.0
# via
# -r requirements/development.in
# pyhive
# thrift-sasl
thrift-sasl==0.4.2
# via pyhive
unicodecsv==0.14.1
# via
# tableschema
-8
View File
@@ -21,12 +21,6 @@ filelock==3.0.12
# virtualenv
identify==1.5.9
# via pre-commit
importlib-metadata==2.1.1
# via
# pluggy
# pre-commit
# tox
# virtualenv
nodeenv==1.5.0
# via pre-commit
packaging==20.4
@@ -63,8 +57,6 @@ virtualenv==20.1.0
# via
# pre-commit
# tox
zipp==3.4.1
# via importlib-metadata
# The following packages are considered to be unsafe in a requirements file:
# pip
+1
View File
@@ -32,3 +32,4 @@ pylint
pytest
pytest-cov
statsd
pytest-mock
+11 -8
View File
@@ -1,4 +1,4 @@
# SHA1:dba8c39bbdcb85b86e83af855d023b55a2674e87
# SHA1:d39180c0eb498d1a7dd73b8428e6ab304b728484
#
# This file is autogenerated by pip-compile-multi
# To update, run:
@@ -9,7 +9,7 @@
-r integration.txt
-e file:.
# via -r requirements/base.in
appnope==0.1.0
appnope==0.1.2
# via ipython
astroid==2.4.2
# via pylint
@@ -17,6 +17,8 @@ backcall==0.2.0
# via ipython
coverage==5.3
# via pytest-cov
decorator==5.0.9
# via ipython
docker==4.3.1
# via -r requirements/testing.in
flask-testing==0.8.0
@@ -27,12 +29,12 @@ iniconfig==1.1.1
# via pytest
ipdb==0.13.4
# via -r requirements/testing.in
ipython-genutils==0.2.0
# via traitlets
ipython==7.16.1
# via
# -r requirements/testing.in
# ipdb
ipython-genutils==0.2.0
# via traitlets
isort==5.6.4
# via pylint
jedi==0.17.2
@@ -65,18 +67,19 @@ pyhive[hive,presto]==0.6.3
# -r requirements/testing.in
pylint==2.6.0
# via -r requirements/testing.in
pytest-cov==2.10.1
# via -r requirements/testing.in
pytest==6.1.2
# via
# -r requirements/testing.in
# pytest-cov
# pytest-mock
pytest-cov==2.10.1
# via -r requirements/testing.in
pytest-mock==3.6.1
# via -r requirements/testing.in
statsd==3.3.0
# via -r requirements/testing.in
traitlets==5.0.5
# via ipython
typed-ast==1.4.3
# via astroid
wcwidth==0.2.5
# via prompt-toolkit
websocket-client==0.57.0
+28 -10
View File
@@ -29,7 +29,8 @@ from flask import current_app
from flask_appbuilder import Model
from flask_migrate import downgrade, upgrade
from graphlib import TopologicalSorter # pylint: disable=wrong-import-order
from sqlalchemy import create_engine, inspect, Table
from progress.bar import ChargingBar
from sqlalchemy import create_engine, inspect
from sqlalchemy.ext.automap import automap_base
from superset import db
@@ -93,11 +94,22 @@ def find_models(module: ModuleType) -> List[Type[Model]]:
engine = create_engine(sqlalchemy_uri)
Base = automap_base()
Base.prepare(engine, reflect=True)
for table in tables:
seen = set()
while tables:
table = tables.pop()
seen.add(table)
model = getattr(Base.classes, table)
model.__tablename__ = table
models.append(model)
# add other models referenced in foreign keys
inspector = inspect(model)
for column in inspector.columns.values():
for foreign_key in column.foreign_keys:
table = foreign_key.column.table.name
if table not in seen:
tables.add(table)
# sort topologically so we can create entities in order and
# maintain relationships (eg, create a database before creating
# a slice)
@@ -107,7 +119,8 @@ def find_models(module: ModuleType) -> List[Type[Model]]:
dependent_tables: List[str] = []
for column in inspector.columns.values():
for foreign_key in column.foreign_keys:
dependent_tables.append(foreign_key.target_fullname.split(".")[0])
if foreign_key.column.table.name != model.__tablename__:
dependent_tables.append(foreign_key.column.table.name)
sorter.add(model.__tablename__, *dependent_tables)
order = list(sorter.static_order())
models.sort(key=lambda model: order.index(model.__tablename__))
@@ -177,18 +190,23 @@ def main(
for model in models:
missing = min_entities - model_rows[model]
if missing > 0:
entities: List[Model] = []
print(f"- Adding {missing} entities to the {model.__name__} model")
bar = ChargingBar("Processing", max=missing)
try:
added_models = add_sample_rows(session, model, missing)
for entity in add_sample_rows(session, model, missing):
entities.append(entity)
bar.next()
except Exception:
session.rollback()
raise
bar.finish()
model_rows[model] = min_entities
session.add_all(entities)
session.commit()
if auto_cleanup:
new_models[model].extend(added_models)
new_models[model].extend(entities)
start = time.time()
upgrade(revision=revision)
duration = time.time() - start
@@ -196,6 +214,10 @@ def main(
results[f"{min_entities}+"] = duration
min_entities *= 10
print("\nResults:\n")
for label, duration in results.items():
print(f"{label}: {duration:.2f} s")
if auto_cleanup:
print("Cleaning up DB")
# delete in reverse order of creation to handle relationships
@@ -210,10 +232,6 @@ def main(
upgrade(revision=revision)
print("Reverted")
print("\nResults:\n")
for label, duration in results.items():
print(f"{label}: {duration:.2f} s")
if __name__ == "__main__":
from superset.app import create_app
+15 -9
View File
@@ -33,7 +33,7 @@ Example:
./cancel_github_workflows.py 1024 --include-last
"""
import os
from typing import Iterable, List, Optional, Union
from typing import Any, Dict, Iterable, Iterator, List, Optional, Union
import click
import requests
@@ -45,7 +45,9 @@ github_token = os.environ.get("GITHUB_TOKEN")
github_repo = os.environ.get("GITHUB_REPOSITORY", "apache/superset")
def request(method: Literal["GET", "POST", "DELETE", "PUT"], endpoint: str, **kwargs):
def request(
method: Literal["GET", "POST", "DELETE", "PUT"], endpoint: str, **kwargs: Any
) -> Dict[str, Any]:
resp = requests.request(
method,
f"https://api.github.com/{endpoint.lstrip('/')}",
@@ -57,10 +59,14 @@ def request(method: Literal["GET", "POST", "DELETE", "PUT"], endpoint: str, **kw
return resp
def list_runs(repo: str, params=None):
def list_runs(
repo: str, params: Optional[Dict[str, str]] = None,
) -> Iterator[Dict[str, Any]]:
"""List all github workflow runs.
Returns:
An iterator that will iterate through all pages of matching runs."""
if params is None:
params = {}
page = 1
total_count = 10000
while page * 100 < total_count:
@@ -75,11 +81,11 @@ def list_runs(repo: str, params=None):
page += 1
def cancel_run(repo: str, run_id: Union[str, int]):
def cancel_run(repo: str, run_id: Union[str, int]) -> Dict[str, Any]:
return request("POST", f"/repos/{repo}/actions/runs/{run_id}/cancel")
def get_pull_request(repo: str, pull_number: Union[str, int]):
def get_pull_request(repo: str, pull_number: Union[str, int]) -> Dict[str, Any]:
return request("GET", f"/repos/{repo}/pulls/{pull_number}")
@@ -89,7 +95,7 @@ def get_runs(
user: Optional[str] = None,
statuses: Iterable[str] = ("queued", "in_progress"),
events: Iterable[str] = ("pull_request", "push"),
):
) -> List[Dict[str, Any]]:
"""Get workflow runs associated with the given branch"""
return [
item
@@ -101,7 +107,7 @@ def get_runs(
]
def print_commit(commit, branch):
def print_commit(commit: Dict[str, Any], branch: str) -> None:
"""Print out commit message for verification"""
indented_message = " \n".join(commit["message"].split("\n"))
date_str = (
@@ -151,7 +157,7 @@ def cancel_github_workflows(
event: List[str],
include_last: bool,
include_running: bool,
):
) -> None:
"""Cancel running or queued GitHub workflows by branch or pull request ID"""
if not github_token:
raise ClickException("Please provide GITHUB_TOKEN as an env variable")
@@ -231,7 +237,7 @@ def cancel_github_workflows(
try:
print(f"[{entry['status']}] {entry['name']}", end="\r")
cancel_run(repo, entry["id"])
print(f"[Cancled] {entry['name']} ")
print(f"[Canceled] {entry['name']} ")
except ClickException as error:
print(f"[Error: {error.message}] {entry['name']} ")
print("")
+1 -1
View File
@@ -19,7 +19,7 @@ from collections import defaultdict
from superset import security_manager
def cleanup_permissions():
def cleanup_permissions() -> None:
# 1. Clean up duplicates.
pvms = security_manager.get_session.query(
security_manager.permissionview_model
+1 -1
View File
@@ -18,7 +18,7 @@
#
set -e
export SUPERSET_CONFIG=${SUPERSET_CONFIG:-tests.superset_test_config}
export SUPERSET_CONFIG=${SUPERSET_CONFIG:-tests.integration_tests.superset_test_config}
export SUPERSET_TESTENV=true
echo "Superset config module: $SUPERSET_CONFIG"
+1 -1
View File
@@ -62,7 +62,7 @@ DB_NAME="test"
DB_USER="superset"
DB_PASSWORD="superset"
export SUPERSET__SQLALCHEMY_DATABASE_URI=${SUPERSET__SQLALCHEMY_DATABASE_URI:-postgresql+psycopg2://"${DB_USER}":"${DB_PASSWORD}"@localhost/"${DB_NAME}"}
export SUPERSET_CONFIG=${SUPERSET_CONFIG:-tests.superset_test_config}
export SUPERSET_CONFIG=${SUPERSET_CONFIG:-tests.integration_tests.superset_test_config}
RUN_INIT=1
RUN_RESET_DB=1
RUN_TESTS=1
+9 -7
View File
@@ -30,21 +30,23 @@ combine_as_imports = true
include_trailing_comma = true
line_length = 88
known_first_party = superset
known_third_party =alembic,apispec,backoff,bleach,cachelib,celery,click,colorama,contextlib2,cron_descriptor,croniter,cryptography,dateutil,deprecation,flask,flask_appbuilder,flask_babel,flask_caching,flask_compress,flask_jwt_extended,flask_login,flask_migrate,flask_sqlalchemy,flask_talisman,flask_testing,flask_wtf,freezegun,geohash,geopy,graphlib,holidays,humanize,isodate,jinja2,jwt,markdown,markupsafe,marshmallow,marshmallow_enum,msgpack,numpy,pandas,parameterized,parsedatetime,pathlib2,pgsanity,pkg_resources,polyline,prison,pyarrow,pyhive,pyparsing,pytest,pytz,redis,requests,retry,selenium,setuptools,simplejson,slack,sqlalchemy,sqlalchemy_utils,sqlparse,typing_extensions,werkzeug,wtforms,wtforms_json,yaml
known_third_party =alembic,apispec,backoff,bleach,cachelib,celery,click,colorama,cron_descriptor,croniter,cryptography,dateutil,deprecation,flask,flask_appbuilder,flask_babel,flask_caching,flask_compress,flask_jwt_extended,flask_login,flask_migrate,flask_sqlalchemy,flask_talisman,flask_testing,flask_wtf,freezegun,geohash,geopy,graphlib,holidays,humanize,isodate,jinja2,jwt,markdown,markupsafe,marshmallow,marshmallow_enum,msgpack,numpy,pandas,parameterized,parsedatetime,pgsanity,pkg_resources,polyline,prison,progress,pyarrow,pyhive,pyparsing,pytest,pytest_mock,pytz,redis,requests,selenium,setuptools,simplejson,slack,sqlalchemy,sqlalchemy_utils,sqlparse,tabulate,typing_extensions,werkzeug,wtforms,wtforms_json,yaml
multi_line_output = 3
order_by_type = false
[mypy]
check_untyped_defs = true
disallow_any_generics = true
disallow_untyped_calls = true
disallow_untyped_defs = true
ignore_missing_imports = true
no_implicit_optional = true
warn_unused_ignores = true
[mypy-superset.*]
check_untyped_defs = true
disallow_untyped_calls = true
disallow_untyped_defs = true
warn_unused_ignores = false
[mypy-superset.migrations.versions.*]
ignore_errors = true
[mypy-tests.*]
check_untyped_defs = false
disallow_untyped_calls = false
disallow_untyped_defs = false
+9 -10
View File
@@ -32,7 +32,7 @@ with io.open("README.md", "r", encoding="utf-8") as f:
long_description = f.read()
def get_git_sha():
def get_git_sha() -> str:
try:
s = subprocess.check_output(["git", "rev-parse", "HEAD"])
return s.decode().strip()
@@ -70,13 +70,13 @@ setup(
"celery>=4.3.0, <5.0.0, !=4.4.1",
"click<8",
"colorama",
"contextlib2",
"croniter>=0.3.28",
"cron-descriptor",
"cryptography>=3.3.2",
"deprecation>=2.1.0, <2.2.0",
"flask>=1.1.0, <2.0.0",
"flask-appbuilder>=3.3.0, <4.0.0",
"flask-caching",
"flask-caching>=1.10.0",
"flask-compress",
"flask-talisman",
"flask-migrate",
@@ -84,16 +84,17 @@ setup(
"geopy",
"graphlib-backport",
"gunicorn>=20.0.2, <20.1",
"holidays==0.10.3", # PINNED! https://github.com/dr-prodigy/python-holidays/issues/406
"humanize",
"itsdangerous>=1.0.0, <2.0.0",
"itsdangerous>=1.0.0, <2.0.0", # https://github.com/apache/superset/pull/14627
"isodate",
"markdown>=3.0",
"msgpack>=1.0.0, <1.1",
"pandas>=1.2.2, <1.3",
"parsedatetime",
"pathlib2",
"pgsanity",
"polyline",
"pyparsing>=2.4.7, <3.0.0",
"python-dateutil",
"python-dotenv",
"python-geohash",
@@ -101,18 +102,15 @@ setup(
"pyyaml>=5.4",
"PyJWT>=1.7.1, <2",
"redis",
"retry>=0.9.2",
"selenium>=3.141.0",
"simplejson>=3.15.0",
"slackclient==2.5.0", # PINNED! slack changes file upload api in the future versions
"sqlalchemy>=1.3.16, <1.4, !=1.3.21",
"sqlalchemy-utils>=0.36.6,<0.37",
"sqlparse==0.3.0", # PINNED! see https://github.com/andialbrecht/sqlparse/issues/562
"tabulate==0.8.9",
"typing-extensions>=3.7.4.3,<4", # needed to support typing.Literal on py37
"wtforms-json",
"pyparsing>=2.4.7, <3.0.0",
"holidays==0.10.3", # PINNED! https://github.com/dr-prodigy/python-holidays/issues/406
"deprecation>=2.1.0, <2.2.0",
],
extras_require={
"athena": ["pyathena>=1.10.8,<1.11"],
@@ -135,7 +133,7 @@ setup(
"exasol": ["sqlalchemy-exasol>=2.1.0, <2.2"],
"excel": ["xlrd>=1.2.0, <1.3"],
"firebird": ["sqlalchemy-firebird>=0.7.0, <0.8"],
"gsheets": ["shillelagh[gsheetsapi]>=0.5, <0.6"],
"gsheets": ["shillelagh[gsheetsapi]>=0.7.1, <0.8"],
"hana": ["hdbcli==2.4.162", "sqlalchemy_hana==0.4.0"],
"hive": ["pyhive[hive]>=0.6.1", "tableschema", "thrift>=0.11.0, <1.0.0"],
"impala": ["impyla>0.16.2, <0.17"],
@@ -153,6 +151,7 @@ setup(
"teradata": ["sqlalchemy-teradata==0.9.0.dev0"],
"thumbnails": ["Pillow>=7.0.0, <8.0.0"],
"vertica": ["sqlalchemy-vertica-python>=0.5.9, < 0.6"],
"netezza": ["nzalchemy>=11.0.2"],
},
python_requires="~=3.7",
author="Apache Software Foundation",
+5 -2
View File
@@ -18,11 +18,11 @@
*/
const path = require('path');
// Suerset's webpack.config.js
// Superset's webpack.config.js
const customConfig = require('../webpack.config.js');
module.exports = {
stories: ['../src/@(components|common|filters)/**/*.stories.@(t|j)sx'],
stories: ['../src/@(components|common|filters)/**/*.stories.@(t|j)sx'],
addons: [
'@storybook/addon-essentials',
'@storybook/addon-links',
@@ -43,4 +43,7 @@ stories: ['../src/@(components|common|filters)/**/*.stories.@(t|j)sx'],
},
plugins: [...config.plugins, ...customConfig.plugins],
}),
typescript: {
reactDocgen: 'none',
},
};
+1
View File
@@ -45,6 +45,7 @@ module.exports = {
['@babel/plugin-proposal-class-properties', { loose: true }],
['@babel/plugin-proposal-optional-chaining', { loose: true }],
['@babel/plugin-proposal-private-methods', { loose: true }],
['@babel/plugin-proposal-nullish-coalescing-operator', { loose: true }],
['@babel/plugin-transform-runtime', { corejs: 3 }],
'react-hot-loader/babel',
],
@@ -22,7 +22,7 @@ describe('chart card view', () => {
beforeEach(() => {
cy.login();
cy.visit(CHART_LIST);
cy.get('[data-test="card-view"]').click();
cy.get('[aria-label="card-view"]').click();
});
it('should load cards', () => {
@@ -22,7 +22,7 @@ describe('chart card view filters', () => {
beforeEach(() => {
cy.login();
cy.visit(CHART_LIST);
cy.get('[data-test="card-view"]').click();
cy.get('[aria-label="card-view"]').click();
});
it('should filter by owners correctly', () => {
@@ -89,7 +89,7 @@ describe('chart list view filters', () => {
beforeEach(() => {
cy.login();
cy.visit(CHART_LIST);
cy.get('[data-test="list-view"]').click();
cy.get('[aria-label="list-view"]').click();
});
it('should filter by owners correctly', () => {
@@ -22,7 +22,7 @@ describe('chart list view', () => {
beforeEach(() => {
cy.login();
cy.visit(CHART_LIST);
cy.get('[data-test="list-view"]').click();
cy.get('[aria-label="list-view"]').click();
});
it('should load rows', () => {
@@ -51,11 +51,11 @@ describe('chart list view', () => {
it('should bulk delete correctly', () => {
cy.get('[data-test="listview-table"]').should('be.visible');
cy.get('[data-test="bulk-select"]').eq(0).click();
cy.get('[data-test="checkbox-off"]').eq(1).siblings('input').click();
cy.get('[data-test="checkbox-off"]').eq(2).siblings('input').click();
cy.get('[aria-label="checkbox-off"]').eq(1).siblings('input').click();
cy.get('[aria-label="checkbox-off"]').eq(2).siblings('input').click();
cy.get('[data-test="bulk-select-action"]').eq(0).click();
cy.get('[data-test="delete-modal-input"]').eq(0).type('DELETE');
cy.get('[data-test="modal-confirm-button"]').eq(0).click();
cy.get('[data-test="checkbox-on"]').should('not.exist');
cy.get('[aria-label="checkbox-on"]').should('not.exist');
});
});
@@ -63,7 +63,7 @@ describe('Dashboard top-level controls', () => {
// should allow force refresh
WORLD_HEALTH_CHARTS.forEach(waitForChartLoad);
getChartAliasesBySpec(WORLD_HEALTH_CHARTS).then(aliases => {
cy.get('[data-test="more-horiz"]').click();
cy.get('[aria-label="more-horiz"]').click();
cy.get('[data-test="refresh-dashboard-menu-item"]').should(
'not.have.class',
'ant-dropdown-menu-item-disabled',
@@ -92,7 +92,7 @@ describe('Dashboard top-level controls', () => {
});
});
});
cy.get('[data-test="more-horiz"]').click();
cy.get('[aria-label="more-horiz"]').click();
cy.get('[data-test="refresh-dashboard-menu-item"]').and(
'not.have.class',
'ant-dropdown-menu-item-disabled',
@@ -23,7 +23,7 @@ describe('Dashboard edit mode', () => {
cy.login();
cy.visit(WORLD_HEALTH_DASHBOARD);
cy.get('[data-test="dashboard-header"]')
.find('[data-test=edit-alt]')
.find('[aria-label=edit-alt]')
.click();
});
@@ -96,7 +96,7 @@ describe('Dashboard edit mode', () => {
.click();
cy.get('[data-test="dashboard-header"]').within(() => {
cy.get('[data-test="dashboard-edit-actions"]').should('not.be.visible');
cy.get('[data-test="edit-alt"]').should('be.visible');
cy.get('[aria-label="edit-alt"]').should('be.visible');
});
});
});
@@ -77,7 +77,7 @@ describe('Dashboard edit action', () => {
cy.get('.dashboard-grid', { timeout: 50000 })
.should('be.visible') // wait for 50 secs to load dashboard
.then(() => {
cy.get('.dashboard-header [data-test=edit-alt]')
cy.get('.dashboard-header [aria-label=edit-alt]')
.should('be.visible')
.click();
openDashboardEditProperties();
@@ -38,7 +38,7 @@ describe('Dashboard filter', () => {
cy.get('.Select__placeholder:first').click();
// should show the filter indicator
cy.get('svg[data-test="filter"]:visible').should(nodes => {
cy.get('span[aria-label="filter"]:visible').should(nodes => {
expect(nodes.length).to.least(9);
});
@@ -50,7 +50,7 @@ describe('Dashboard filter', () => {
cy.get('.Select__menu').first().contains('South Asia').click();
// should still have all filter indicators
cy.get('svg[data-test="filter"]:visible').should(nodes => {
cy.get('span[aria-label="filter"]:visible').should(nodes => {
expect(nodes.length).to.least(9);
});
@@ -30,12 +30,12 @@ describe('Dashboard edit markdown', () => {
numScripts = nodes.length;
});
cy.get('[data-test="dashboard-header"]')
.find('[data-test="edit-alt"]')
.find('[aria-label="edit-alt"]')
.click();
// lazy load - need to open dropdown for the scripts to load
cy.get('[data-test="dashboard-header"]')
.find('[data-test="more-horiz"]')
.find('[aria-label="more-horiz"]')
.click();
cy.get('script').then(nodes => {
// load 5 new script chunks for css editor
@@ -70,7 +70,7 @@ describe('Dashboard edit markdown', () => {
.type('Test resize');
resize(
'[data-test="dashboard-markdown-editor"] .resizable-container span div',
'[data-test="dashboard-markdown-editor"] .resizable-container span div:last-child',
).to(500, 600);
cy.get('[data-test="dashboard-markdown-editor"]').contains('Test resize');
@@ -78,7 +78,7 @@ describe('Dashboard edit markdown', () => {
// entering edit mode does not add new scripts
// (though scripts may still be removed by others)
cy.get('script').then(nodes => {
expect(nodes.length).to.most(numScripts);
expect(nodes.length).to.greaterThan(numScripts);
});
cy.get('@component-background-first').click('right');
@@ -25,7 +25,7 @@ import {
} from './dashboard.helper';
function openDashboardEditProperties() {
cy.get('.dashboard-header [data-test=edit-alt]').click();
cy.get('.dashboard-header [aria-label=edit-alt]').click();
cy.get('#save-dash-split-button').trigger('click', { force: true });
cy.get('.dropdown-menu').contains('Edit dashboard properties').click();
}
@@ -42,7 +42,7 @@ describe('Dashboard save action', () => {
'copyRequest',
);
cy.get('[data-test="more-horiz"]').trigger('click', { force: true });
cy.get('[aria-label="more-horiz"]').trigger('click', { force: true });
cy.get('[data-test="save-as-menu-item"]').trigger('click', {
force: true,
});
@@ -68,7 +68,7 @@ describe('Dashboard save action', () => {
WORLD_HEALTH_CHARTS.forEach(waitForChartLoad);
// remove box_plot chart from dashboard
cy.get('[data-test="edit-alt"]').click({ timeout: 5000 });
cy.get('[aria-label="edit-alt"]').click({ timeout: 5000 });
cy.get('[data-test="dashboard-delete-component-button"]')
.last()
.trigger('moustenter')
@@ -87,7 +87,7 @@ describe('Dashboard save action', () => {
// go back to view mode
cy.wait('@saveRequest');
cy.get('[data-test="dashboard-header"]')
.find('[data-test="edit-alt"]')
.find('[aria-label="edit-alt"]')
.click();
// deleted boxplot should still not exist
@@ -22,7 +22,7 @@ describe('Dashboard card view', () => {
beforeEach(() => {
cy.login();
cy.visit(DASHBOARD_LIST);
cy.get('[data-test="card-view"]').click();
cy.get('[aria-label="card-view"]').click();
});
xit('should load cards', () => {
@@ -22,7 +22,7 @@ describe('dashboard filters card view', () => {
beforeEach(() => {
cy.login();
cy.visit(DASHBOARD_LIST);
cy.get('[data-test="card-view"]').click();
cy.get('[aria-label="card-view"]').click();
});
it('should filter by owners correctly', () => {
@@ -59,13 +59,13 @@ describe('dashboard filters card view', () => {
// filter by published
cy.get('.Select__control').eq(2).click();
cy.get('.Select__menu').contains('Published').click({ timeout: 5000 });
cy.get('[data-test="styled-card"]').should('have.length', 2);
cy.get('[data-test="styled-card"]').should('have.length', 3);
cy.get('[data-test="styled-card"]')
.contains('USA Births Names')
.should('be.visible');
cy.get('.Select__control').eq(1).click();
cy.get('.Select__control').eq(1).type('unpub{enter}');
cy.get('[data-test="styled-card"]').should('have.length', 2);
cy.get('[data-test="styled-card"]').should('have.length', 3);
});
});
@@ -73,7 +73,7 @@ describe('dashboard filters list view', () => {
beforeEach(() => {
cy.login();
cy.visit(DASHBOARD_LIST);
cy.get('[data-test="list-view"]').click();
cy.get('[aria-label="list-view"]').click();
});
it('should filter by owners correctly', () => {
@@ -110,12 +110,12 @@ describe('dashboard filters list view', () => {
// filter by published
cy.get('.Select__control').eq(2).click();
cy.get('.Select__menu').contains('Published').click();
cy.get('[data-test="table-row"]').should('have.length', 2);
cy.get('[data-test="table-row"]').should('have.length', 3);
cy.get('[data-test="table-row"]')
.contains('USA Births Names')
.should('be.visible');
cy.get('.Select__control').eq(2).click();
cy.get('.Select__control').eq(2).type('unpub{enter}');
cy.get('[data-test="table-row"]').should('have.length', 2);
cy.get('[data-test="table-row"]').should('have.length', 3);
});
});
@@ -22,7 +22,7 @@ describe('dashboard list view', () => {
beforeEach(() => {
cy.login();
cy.visit(DASHBOARD_LIST);
cy.get('[data-test="list-view"]').click();
cy.get('[aria-label="list-view"]').click();
});
xit('should load rows', () => {
@@ -51,11 +51,11 @@ describe('dashboard list view', () => {
it('should bulk delete correctly', () => {
cy.get('[data-test="listview-table"]').should('be.visible');
cy.get('[data-test="bulk-select"]').eq(0).click();
cy.get('[data-test="checkbox-off"]').eq(1).siblings('input').click();
cy.get('[data-test="checkbox-off"]').eq(2).siblings('input').click();
cy.get('[aria-label="checkbox-off"]').eq(1).siblings('input').click();
cy.get('[aria-label="checkbox-off"]').eq(2).siblings('input').click();
cy.get('[data-test="bulk-select-action"]').eq(0).click();
cy.get('[data-test="delete-modal-input"]').eq(0).type('DELETE');
cy.get('[data-test="modal-confirm-button"]').eq(0).click();
cy.get('[data-test="checkbox-on"]').should('not.exist');
cy.get('[aria-label="checkbox-on"]').should('not.exist');
});
});
@@ -21,71 +21,50 @@ import { DATABASE_LIST } from './helper';
describe('Add database', () => {
beforeEach(() => {
cy.login();
});
it('should keep create modal open when error', () => {
cy.visit(DATABASE_LIST);
// open modal
cy.wait(3000);
cy.get('[data-test="btn-create-database"]').click();
// values should be blank
cy.get('[data-test="database-modal"] input[name="database_name"]').should(
'have.value',
'',
);
cy.get('[data-test="database-modal"] input[name="sqlalchemy_uri"]').should(
'have.value',
'',
);
// type values
cy.get('[data-test="database-modal"] input[name="database_name"]')
.focus()
.type('cypress');
cy.get('[data-test="database-modal"] input[name="sqlalchemy_uri"]')
.focus()
.type('bad_db_uri');
// click save
cy.get('[data-test="modal-confirm-button"]:not(:disabled)').click();
// should show error alerts and keep modal open
cy.get('.toast').contains('error');
cy.wait(1000); // wait for potential (incorrect) closing annimation
cy.get('[data-test="database-modal"]').should('be.visible');
// should be able to close modal
cy.get('[data-test="modal-cancel-button"]').click();
cy.get('[data-test="database-modal"]').should('not.be.visible');
});
it('should keep update modal open when error', () => {
// open modal
cy.get('[data-test="database-edit"]:last').click();
it('should open dynamic form', () => {
// click postgres dynamic form
cy.get('.preferred > :nth-child(1)').click();
// it should show saved values
cy.get('[data-test="database-modal"]:last input[name="sqlalchemy_uri"]')
.invoke('val')
.should('not.be.empty');
cy.get('[data-test="database-modal"] input[name="database_name"]')
.invoke('val')
.should('not.be.empty');
// make sure all the fields are rendering
cy.get('input[name="host"]').should('have.value', '');
cy.get('input[name="port"]').should('have.value', '');
cy.get('input[name="database"]').should('have.value', '');
cy.get('input[name="password"]').should('have.value', '');
cy.get('input[name="database_name"]').should('have.value', '');
});
cy.get('[data-test="database-modal"]:last input[name="sqlalchemy_uri"]')
.focus()
.dblclick()
.type('{selectall}{backspace}bad_uri');
it('should open sqlalchemy form', () => {
// click postgres dynamic form
cy.get('.preferred > :nth-child(1)').click();
// click save
cy.get('[data-test="modal-confirm-button"]:not(:disabled)').click();
cy.get('[data-test="sqla-connect-btn"]').click();
// should show error alerts
// TODO(hugh): Update this test
// cy.get('.toast').contains('error').should('be.visible');
// check if the sqlalchemy form is showing up
cy.get('[data-test=database-name-input]').should('be.visible');
cy.get('[data-test="sqlalchemy-uri-input"]').should('be.visible');
});
// modal should still be open
// cy.wait(1000); // wait for potential (incorrect) closing annimation
// cy.get('[data-test="database-modal"]').should('be.visible');
it('show error alerts on dynamic form for bad host', () => {
// click postgres dynamic form
cy.get('.preferred > :nth-child(1)').click();
cy.get('input[name="host"]').focus().type('badhost');
cy.get('input[name="port"]').focus().type('5432');
cy.get('.ant-form-item-explain-error').contains(
"The hostname provided can't be resolved",
);
});
it('show error alerts on dynamic form for bad port', () => {
// click postgres dynamic form
cy.get('.preferred > :nth-child(1)').click();
cy.get('input[name="host"]').focus().type('localhost');
cy.get('input[name="port"]').focus().type('123');
cy.get('input[name="database"]').focus();
cy.get('.ant-form-item-explain-error').contains('The port is closed');
});
});
@@ -99,20 +99,14 @@ describe('VizType control', () => {
cy.visitChartByName('Daily Totals');
cy.verifySliceSuccess({ waitAlias: '@tableChartData' });
let numScripts = 0;
cy.get('script').then(nodes => {
numScripts = nodes.length;
});
cy.get('[data-test="visualization-type"]').contains('Table').click();
cy.get('button').contains('Evolution').click(); // change categories
cy.get('[role="button"]').contains('Line Chart').click();
cy.get('button').contains('Select').click();
// should load mathjs for line chart
cy.get('script[src*="mathjs"]').should('have.length', 1);
cy.get('script').then(nodes => {
expect(nodes.length).to.greaterThan(numScripts);
});
cy.get('button[data-test="run-query-button"]').click();
cy.verifySliceSuccess({
@@ -73,13 +73,12 @@ describe('Visualization > Line', () => {
it('should allow type to search color schemes', () => {
cy.get('#controlSections-tab-display').click();
cy.get('.Control[data-test="color_scheme"]').scrollIntoView();
cy.get('.Control[data-test="color_scheme"] input[type="text"]')
cy.get('.Control[data-test="color_scheme"] input[type="search"]')
.focus()
.type('air{enter}');
cy.get('input[name="select-color_scheme"]').should(
'have.value',
'bnbColors',
);
.type('bnbColors{enter}');
cy.get(
'.Control[data-test="color_scheme"] .ant-select-selection-item > ul[data-test="bnbColors"]',
).should('exist');
});
it('should work with adhoc metric', () => {
+22
View File
@@ -0,0 +1,22 @@
<!--
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.
-->
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M8.66667 5H12V6.33333H8.66667V5ZM8.66667 9.66667H12V11H8.66667V9.66667ZM12.6667 2H3.33333C2.6 2 2 2.6 2 3.33333V12.6667C2 13.4 2.6 14 3.33333 14H12.6667C13.4 14 14 13.4 14 12.6667V3.33333C14 2.6 13.4 2 12.6667 2ZM12.6667 12.6667H3.33333V3.33333H12.6667V12.6667ZM7.33333 4H4V7.33333H7.33333V4ZM6.66667 6.66667H4.66667V4.66667H6.66667V6.66667ZM7.33333 8.66667H4V12H7.33333V8.66667ZM6.66667 11.3333H4.66667V9.33333H6.66667V11.3333Z" fill="currentColor"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1,22 @@
<!--
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.
-->
<svg width="17" height="17" viewBox="0 0 17 17" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7.73967 1.7002L4.04888 7.79629H11.4305L7.73967 1.7002ZM7.73967 4.3012L9.0348 6.4416H6.43783L7.73967 4.3012ZM11.4305 9.15098C9.75954 9.15098 8.41072 10.5124 8.41072 12.199C8.41072 13.8856 9.75954 15.2471 11.4305 15.2471C13.1014 15.2471 14.4502 13.8856 14.4502 12.199C14.4502 10.5124 13.1014 9.15098 11.4305 9.15098ZM11.4305 13.8924C10.5044 13.8924 9.75283 13.1338 9.75283 12.199C9.75283 11.2643 10.5044 10.5057 11.4305 10.5057C12.3565 10.5057 13.1081 11.2643 13.1081 12.199C13.1081 13.1338 12.3565 13.8924 11.4305 13.8924ZM1.7002 14.9084H7.06862V9.48965H1.7002V14.9084ZM3.0423 10.8443H5.72651V13.5537H3.0423V10.8443Z" fill="currentColor" fill-opacity="0.85"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

@@ -0,0 +1,21 @@
<!--
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.
-->
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<path opacity="0.4" fill-rule="evenodd" clip-rule="evenodd" d="M15.9942 14.9661C16.0473 14.9256 16.0843 14.893 16.1094 14.8686V12.3207C15.7158 12.5563 15.2568 12.7608 14.7565 12.9359C13.2501 13.4632 11.2149 13.7763 8.99998 13.7763C6.78508 13.7763 4.74988 13.4632 3.24347 12.9359C2.74318 12.7608 2.28418 12.5563 1.89058 12.3207V14.8686C1.91568 14.893 1.95268 14.9256 2.00578 14.9661C2.26078 15.1603 2.71837 15.3956 3.40987 15.6184C4.77707 16.059 6.75368 16.3544 8.99998 16.3544C11.2463 16.3544 13.2229 16.059 14.5901 15.6184C15.2816 15.3956 15.7392 15.1603 15.9942 14.9661ZM15.7503 10.8614C16.0622 10.6033 16.1094 10.4232 16.1094 10.3388V8.41454C15.7158 8.65004 15.2568 8.85464 14.7565 9.02974C13.2501 9.55694 11.2149 9.87004 8.99998 9.87004C6.78508 9.87004 4.74988 9.55694 3.24347 9.02974C2.74318 8.85464 2.28418 8.65004 1.89058 8.41454V10.3388C1.89058 10.4232 1.93777 10.6033 2.24967 10.8614C2.55707 11.1158 3.04418 11.3763 3.70798 11.6086C5.02918 12.071 6.90007 12.37 8.99998 12.37C11.0999 12.37 12.9708 12.071 14.292 11.6086C14.9558 11.3763 15.4429 11.1158 15.7503 10.8614ZM0.484375 6.43254V10.3388V15.0165C0.484375 16.5321 4.29698 17.7607 8.99998 17.7607C13.703 17.7607 17.5156 16.5321 17.5156 15.0165V10.3388V6.43254V3.31734C17.5156 1.80174 13.703 0.573242 8.99998 0.573242H8.99508H8.99018C4.29258 0.573242 0.484375 1.80174 0.484375 3.31734V6.43254ZM16.1094 6.43254V4.81964C14.59 5.56754 11.9689 6.06144 8.99018 6.06144C6.02428 6.06144 3.41288 5.57174 1.89058 4.82924V6.43254C1.89058 6.51694 1.93777 6.69714 2.24967 6.95524C2.55707 7.20954 3.04418 7.47004 3.70798 7.70244C5.02918 8.16484 6.90007 8.46384 8.99998 8.46384C11.0999 8.46384 12.9708 8.16484 14.292 7.70244C14.9558 7.47004 15.4429 7.20954 15.7503 6.95524C16.0622 6.69714 16.1094 6.51694 16.1094 6.43254ZM2.07487 3.31764C2.33937 3.50124 2.77558 3.71554 3.40748 3.91944C4.77268 4.35984 6.74668 4.65524 8.99018 4.65524C11.2337 4.65524 13.2078 4.35984 14.573 3.91944C15.2053 3.71544 15.6416 3.50104 15.9061 3.31734C15.6416 3.13364 15.2053 2.91924 14.573 2.71524C13.2087 2.27514 11.2366 1.97984 8.99508 1.97944C6.75078 1.97984 4.77607 2.27514 3.40987 2.71544C2.77677 2.91944 2.33977 3.13384 2.07487 3.31764ZM16.1561 14.8151C16.1565 14.8152 16.1546 14.8186 16.1493 14.8253C16.1532 14.8185 16.1558 14.8151 16.1561 14.8151ZM1.84998 3.50934C1.84668 3.51524 1.84438 3.51814 1.84408 3.51804H1.84398C1.84458 3.51684 1.84648 3.51394 1.84998 3.50934ZM1.84387 14.8151C1.84417 14.8151 1.84678 14.8185 1.85068 14.8253C1.84538 14.8186 1.84347 14.8152 1.84387 14.8151Z" fill="#444E7C"/>
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

@@ -0,0 +1,21 @@
<!--
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.
-->
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M10 12C10 13.1046 10.8954 14 12 14C13.1046 14 14 13.1046 14 12C14 10.8954 13.1046 10 12 10C10.8954 10 10 10.8954 10 12ZM10 19C10 20.1046 10.8954 21 12 21C13.1046 21 14 20.1046 14 19C14 17.8954 13.1046 17 12 17C10.8954 17 10 17.8954 10 19ZM10 5C10 6.10457 10.8954 7 12 7C13.1046 7 14 6.10457 14 5C14 3.89543 13.1046 3 12 3C10.8954 3 10 3.89543 10 5Z" fill="currentColor"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

+22
View File
@@ -0,0 +1,22 @@
<!--
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.
-->
<svg width="17" height="17" viewBox="0 0 17 17" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14.1668 7.0835V5.66683H11.3335V2.8335H9.91683V5.66683H7.0835V2.8335H5.66683V5.66683H2.8335V7.0835H5.66683V9.91683H2.8335V11.3335H5.66683V14.1668H7.0835V11.3335H9.91683V14.1668H11.3335V11.3335H14.1668V9.91683H11.3335V7.0835H14.1668ZM9.91683 9.91683H7.0835V7.0835H9.91683V9.91683Z" fill="currentColor" fill-opacity="0.85"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

+1 -1
View File
@@ -20,7 +20,7 @@ module.exports = {
testRegex: '(\\/spec|\\/src)\\/.*(_spec|\\.test)\\.(j|t)sx?$',
moduleNameMapper: {
'\\.(css|less)$': '<rootDir>/spec/__mocks__/styleMock.js',
'\\.(gif|ttf|eot|png)$': '<rootDir>/spec/__mocks__/fileMock.js',
'\\.(gif|ttf|eot|png|jpg)$': '<rootDir>/spec/__mocks__/fileMock.js',
'\\.svg$': '<rootDir>/spec/__mocks__/svgrMock.tsx',
'^src/(.*)$': '<rootDir>/src/$1',
'^spec/(.*)$': '<rootDir>/spec/$1',
+1750 -5272
View File
File diff suppressed because it is too large Load Diff
+36 -34
View File
@@ -1,6 +1,6 @@
{
"name": "superset",
"version": "0.999.0dev",
"version": "0.0.0dev",
"description": "Superset is a data exploration platform designed to be visual, intuitive, and interactive.",
"license": "Apache-2.0",
"directories": {
@@ -67,35 +67,35 @@
"@emotion/babel-preset-css-prop": "^11.2.0",
"@emotion/cache": "^11.1.3",
"@emotion/react": "^11.1.5",
"@superset-ui/chart-controls": "^0.17.58",
"@superset-ui/core": "^0.17.58",
"@superset-ui/legacy-plugin-chart-calendar": "^0.17.58",
"@superset-ui/legacy-plugin-chart-chord": "^0.17.58",
"@superset-ui/legacy-plugin-chart-country-map": "^0.17.58",
"@superset-ui/legacy-plugin-chart-event-flow": "^0.17.58",
"@superset-ui/legacy-plugin-chart-force-directed": "^0.17.58",
"@superset-ui/legacy-plugin-chart-heatmap": "^0.17.58",
"@superset-ui/legacy-plugin-chart-histogram": "^0.17.58",
"@superset-ui/legacy-plugin-chart-horizon": "^0.17.58",
"@superset-ui/legacy-plugin-chart-map-box": "^0.17.58",
"@superset-ui/legacy-plugin-chart-paired-t-test": "^0.17.58",
"@superset-ui/legacy-plugin-chart-parallel-coordinates": "^0.17.58",
"@superset-ui/legacy-plugin-chart-partition": "^0.17.58",
"@superset-ui/legacy-plugin-chart-pivot-table": "^0.17.58",
"@superset-ui/legacy-plugin-chart-rose": "^0.17.58",
"@superset-ui/legacy-plugin-chart-sankey": "^0.17.58",
"@superset-ui/legacy-plugin-chart-sankey-loop": "^0.17.58",
"@superset-ui/legacy-plugin-chart-sunburst": "^0.17.58",
"@superset-ui/legacy-plugin-chart-treemap": "^0.17.58",
"@superset-ui/legacy-plugin-chart-world-map": "^0.17.58",
"@superset-ui/legacy-preset-chart-big-number": "^0.17.58",
"@superset-ui/legacy-preset-chart-deckgl": "^0.4.7",
"@superset-ui/legacy-preset-chart-nvd3": "^0.17.58",
"@superset-ui/plugin-chart-echarts": "^0.17.58",
"@superset-ui/plugin-chart-pivot-table": "^0.17.58",
"@superset-ui/plugin-chart-table": "^0.17.58",
"@superset-ui/plugin-chart-word-cloud": "^0.17.58",
"@superset-ui/preset-chart-xy": "^0.17.58",
"@superset-ui/chart-controls": "^0.17.80",
"@superset-ui/core": "^0.17.80",
"@superset-ui/legacy-plugin-chart-calendar": "^0.17.80",
"@superset-ui/legacy-plugin-chart-chord": "^0.17.80",
"@superset-ui/legacy-plugin-chart-country-map": "^0.17.80",
"@superset-ui/legacy-plugin-chart-event-flow": "^0.17.80",
"@superset-ui/legacy-plugin-chart-force-directed": "^0.17.80",
"@superset-ui/legacy-plugin-chart-heatmap": "^0.17.80",
"@superset-ui/legacy-plugin-chart-histogram": "^0.17.80",
"@superset-ui/legacy-plugin-chart-horizon": "^0.17.80",
"@superset-ui/legacy-plugin-chart-map-box": "^0.17.80",
"@superset-ui/legacy-plugin-chart-paired-t-test": "^0.17.80",
"@superset-ui/legacy-plugin-chart-parallel-coordinates": "^0.17.80",
"@superset-ui/legacy-plugin-chart-partition": "^0.17.80",
"@superset-ui/legacy-plugin-chart-pivot-table": "^0.17.80",
"@superset-ui/legacy-plugin-chart-rose": "^0.17.80",
"@superset-ui/legacy-plugin-chart-sankey": "^0.17.80",
"@superset-ui/legacy-plugin-chart-sankey-loop": "^0.17.80",
"@superset-ui/legacy-plugin-chart-sunburst": "^0.17.80",
"@superset-ui/legacy-plugin-chart-treemap": "^0.17.80",
"@superset-ui/legacy-plugin-chart-world-map": "^0.17.80",
"@superset-ui/legacy-preset-chart-big-number": "^0.17.80",
"@superset-ui/legacy-preset-chart-deckgl": "^0.4.9",
"@superset-ui/legacy-preset-chart-nvd3": "^0.17.80",
"@superset-ui/plugin-chart-echarts": "^0.17.80",
"@superset-ui/plugin-chart-pivot-table": "^0.17.80",
"@superset-ui/plugin-chart-table": "^0.17.80",
"@superset-ui/plugin-chart-word-cloud": "^0.17.80",
"@superset-ui/preset-chart-xy": "^0.17.80",
"@vx/responsive": "^0.0.195",
"abortcontroller-polyfill": "^1.1.9",
"antd": "^4.9.4",
@@ -113,6 +113,7 @@
"emotion-rgba": "0.0.9",
"fontsource-fira-code": "^3.0.5",
"fontsource-inter": "^3.0.5",
"fuse.js": "^6.4.6",
"geolib": "^2.0.24",
"global-box": "^1.2.0",
"html-webpack-plugin": "^4.5.1",
@@ -130,6 +131,7 @@
"mathjs": "^8.0.1",
"memoize-one": "^5.1.1",
"moment": "^2.26.0",
"moment-timezone": "^0.5.33",
"mousetrap": "^1.6.1",
"mustache": "^2.2.1",
"omnibar": "^2.1.1",
@@ -147,10 +149,10 @@
"react-dom": "^16.13.0",
"react-gravatar": "^2.6.1",
"react-hot-loader": "^4.12.20",
"react-icons": "^4.2.0",
"react-js-cron": "^1.2.0",
"react-json-tree": "^0.11.2",
"react-jsonschema-form": "^1.2.0",
"react-lines-ellipsis": "^0.15.0",
"react-loadable": "^5.5.0",
"react-markdown": "^4.3.1",
"react-redux": "^7.2.0",
@@ -177,6 +179,7 @@
"redux-undo": "^1.0.0-beta9-9-7",
"regenerator-runtime": "^0.13.5",
"rison": "^0.1.1",
"scroll-into-view-if-needed": "^2.2.28",
"shortid": "^2.2.6",
"urijs": "^1.19.6",
"use-immer": "^0.4.2",
@@ -189,7 +192,6 @@
"@babel/node": "^7.12.10",
"@babel/plugin-proposal-class-properties": "^7.12.1",
"@babel/plugin-proposal-optional-chaining": "^7.12.7",
"@babel/plugin-proposal-private-methods": "^7.14.5",
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
"@babel/plugin-transform-runtime": "^7.12.10",
"@babel/preset-env": "^7.12.11",
@@ -206,7 +208,7 @@
"@storybook/client-api": "^6.1.17",
"@storybook/preset-typescript": "^3.0.0",
"@storybook/react": "^6.1.20",
"@svgr/webpack": "^5.5.0",
"@svgr/webpack": "^5.4.0",
"@testing-library/dom": "^7.29.4",
"@testing-library/jest-dom": "^5.11.6",
"@testing-library/react": "^11.2.0",
@@ -302,7 +304,7 @@
"transform-loader": "^0.2.3",
"ts-jest": "^26.4.2",
"ts-loader": "^8.0.7",
"typescript": "^4.0.3",
"typescript": "^4.1.6",
"url-loader": "^1.0.1",
"webpack": "^4.42.0",
"webpack-bundle-analyzer": "^3.6.1",
-3
View File
@@ -45,7 +45,6 @@ export const nativeFilters: NativeFiltersState = {
rootPath: ['ROOT_ID'],
excluded: [],
},
isInstant: true,
controlValues: {
multiSelect: false,
enableEmptyFilter: false,
@@ -79,7 +78,6 @@ export const nativeFilters: NativeFiltersState = {
enableEmptyFilter: false,
inverseSelection: false,
},
isInstant: true,
},
},
};
@@ -136,7 +134,6 @@ export const singleNativeFiltersState = {
cascadeParentIds: [],
scope: { rootPath: ['ROOT_ID'], excluded: [227, 229] },
inverseSelection: false,
isInstant: true,
allowsMultipleValues: false,
isRequired: false,
},
+2
View File
@@ -28,6 +28,7 @@ import dashboardInfo from './mockDashboardInfo';
import { emptyFilters } from './mockDashboardFilters';
import dashboardState from './mockDashboardState';
import { sliceEntitiesForChart } from './mockSliceEntities';
import { user } from '../javascripts/sqllab/fixtures';
export default {
datasources,
@@ -40,5 +41,6 @@ export default {
dashboardState,
dashboardLayout,
messageToasts,
user,
impressionId: 'mock_impression_id',
};
@@ -20,6 +20,7 @@ import '@testing-library/jest-dom/extend-expect';
import React, { ReactNode, ReactElement } from 'react';
import { render, RenderOptions } from '@testing-library/react';
import { ThemeProvider, supersetTheme } from '@superset-ui/core';
import { BrowserRouter } from 'react-router-dom';
import { Provider } from 'react-redux';
import { combineReducers, createStore, applyMiddleware, compose } from 'redux';
import thunk from 'redux-thunk';
@@ -32,13 +33,20 @@ type Options = Omit<RenderOptions, 'queries'> & {
useRedux?: boolean;
useDnd?: boolean;
useQueryParams?: boolean;
useRouter?: boolean;
initialState?: {};
reducers?: {};
};
function createWrapper(options?: Options) {
const { useDnd, useRedux, useQueryParams, initialState, reducers } =
options || {};
const {
useDnd,
useRedux,
useQueryParams,
useRouter,
initialState,
reducers,
} = options || {};
return ({ children }: { children?: ReactNode }) => {
let result = (
@@ -63,6 +71,10 @@ function createWrapper(options?: Options) {
result = <QueryParamProvider>{result}</QueryParamProvider>;
}
if (useRouter) {
result = <BrowserRouter>{result}</BrowserRouter>;
}
return result;
};
}
@@ -20,10 +20,15 @@ import React from 'react';
import { shallow } from 'enzyme';
import { supersetTheme } from '@superset-ui/core';
import { Provider } from 'react-redux';
import { Store } from 'redux';
import * as SupersetUI from '@superset-ui/core';
import { CHART_UPDATE_SUCCEEDED } from 'src/chart/chartAction';
import { styledMount as mount } from 'spec/helpers/theming';
import {
CHART_RENDERING_SUCCEEDED,
CHART_UPDATE_SUCCEEDED,
} from 'src/chart/chartAction';
import { buildActiveFilters } from 'src/dashboard/util/activeDashboardFilters';
import FiltersBadge from 'src/dashboard/containers/FiltersBadge';
import { FiltersBadge } from 'src/dashboard/components/FiltersBadge';
import {
getMockStoreWithFilters,
getMockStoreWithNativeFilters,
@@ -34,6 +39,15 @@ import { dashboardWithFilter } from 'spec/fixtures/mockDashboardLayout';
import Icons from 'src/components/Icons';
import { FeatureFlag } from 'src/featureFlags';
const defaultStore = getMockStoreWithFilters();
function setup(store: Store = defaultStore) {
return mount(
<Provider store={store}>
<FiltersBadge chartId={sliceId} />
</Provider>,
);
}
describe('FiltersBadge', () => {
// there's this bizarre "active filters" thing
// that doesn't actually use any kind of state management.
@@ -71,9 +85,7 @@ describe('FiltersBadge', () => {
<FiltersBadge chartId={sliceId} />,
</Provider>,
);
expect(
wrapper.dive().find('[data-test="applied-filter-count"]'),
).not.toExist();
expect(wrapper.find('[data-test="applied-filter-count"]')).not.toExist();
});
it('shows the indicator when filters have been applied', () => {
@@ -91,14 +103,13 @@ describe('FiltersBadge', () => {
],
dashboardFilters,
});
const wrapper = shallow(
<FiltersBadge {...{ store }} chartId={sliceId} />,
).dive();
expect(wrapper.dive().find('DetailsPanelPopover')).toExist();
expect(
wrapper.dive().find('[data-test="applied-filter-count"]'),
).toHaveText('1');
expect(wrapper.dive().find('WarningFilled')).not.toExist();
store.dispatch({ type: CHART_RENDERING_SUCCEEDED, key: sliceId });
const wrapper = setup(store);
expect(wrapper.find('DetailsPanelPopover')).toExist();
expect(wrapper.find('[data-test="applied-filter-count"]')).toHaveText(
'1',
);
expect(wrapper.find('WarningFilled')).not.toExist();
});
it("shows a warning when there's a rejected filter", () => {
@@ -118,19 +129,18 @@ describe('FiltersBadge', () => {
],
dashboardFilters,
});
const wrapper = shallow(
<FiltersBadge {...{ store }} chartId={sliceId} />,
).dive();
expect(wrapper.dive().find('DetailsPanelPopover')).toExist();
store.dispatch({ type: CHART_RENDERING_SUCCEEDED, key: sliceId });
const wrapper = setup(store);
expect(wrapper.find('DetailsPanelPopover')).toExist();
expect(wrapper.find('[data-test="applied-filter-count"]')).toHaveText(
'0',
);
expect(
wrapper.dive().find('[data-test="applied-filter-count"]'),
).toHaveText('0');
expect(
wrapper.dive().find('[data-test="incompatible-filter-count"]'),
wrapper.find('[data-test="incompatible-filter-count"]'),
).toHaveText('1');
// to look at the shape of the wrapper use:
// console.log(wrapper.dive().debug())
expect(wrapper.dive().find(Icons.AlertSolid)).toExist();
// console.log(wrapper.debug())
expect(wrapper.find(Icons.AlertSolid)).toExist();
});
});
@@ -149,14 +159,9 @@ describe('FiltersBadge', () => {
},
],
});
const wrapper = shallow(
<Provider store={store}>
<FiltersBadge chartId={sliceId} />,
</Provider>,
);
expect(
wrapper.dive().find('[data-test="applied-filter-count"]'),
).not.toExist();
store.dispatch({ type: CHART_RENDERING_SUCCEEDED, key: sliceId });
const wrapper = setup(store);
expect(wrapper.find('[data-test="applied-filter-count"]')).not.toExist();
});
it('shows the indicator when filters have been applied', () => {
@@ -177,14 +182,13 @@ describe('FiltersBadge', () => {
},
],
});
const wrapper = shallow(
<FiltersBadge {...{ store }} chartId={sliceId} />,
).dive();
expect(wrapper.dive().find('DetailsPanelPopover')).toExist();
expect(
wrapper.dive().find('[data-test="applied-filter-count"]'),
).toHaveText('1');
expect(wrapper.dive().find('WarningFilled')).not.toExist();
store.dispatch({ type: CHART_RENDERING_SUCCEEDED, key: sliceId });
const wrapper = setup(store);
expect(wrapper.find('DetailsPanelPopover')).toExist();
expect(wrapper.find('[data-test="applied-filter-count"]')).toHaveText(
'1',
);
expect(wrapper.find('WarningFilled')).not.toExist();
});
it("shows a warning when there's a rejected filter", () => {
@@ -207,17 +211,16 @@ describe('FiltersBadge', () => {
},
],
});
const wrapper = shallow(
<FiltersBadge {...{ store }} chartId={sliceId} />,
).dive();
expect(wrapper.dive().find('DetailsPanelPopover')).toExist();
store.dispatch({ type: CHART_RENDERING_SUCCEEDED, key: sliceId });
const wrapper = setup(store);
expect(wrapper.find('DetailsPanelPopover')).toExist();
expect(wrapper.find('[data-test="applied-filter-count"]')).toHaveText(
'0',
);
expect(
wrapper.dive().find('[data-test="applied-filter-count"]'),
).toHaveText('0');
expect(
wrapper.dive().find('[data-test="incompatible-filter-count"]'),
wrapper.find('[data-test="incompatible-filter-count"]'),
).toHaveText('1');
expect(wrapper.dive().find(Icons.AlertSolid)).toExist();
expect(wrapper.find(Icons.AlertSolid)).toExist();
});
});
});
@@ -155,10 +155,10 @@ describe('SliceAdder', () => {
});
it('handleSelect', () => {
const newSortBy = { value: 'viz_type' };
const newSortBy = 'viz_type';
wrapper.instance().handleSelect(newSortBy);
expect(spy.calledOnce).toBe(true);
expect(spy.lastCall.args[1]).toBe(newSortBy.value);
expect(spy.lastCall.args[1]).toBe(newSortBy);
});
it('handleKeyPress', () => {

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