Compare commits

..

373 Commits

Author SHA1 Message Date
Maxime Beauchemin
8fb4ba0d74 0.32.0rc2 2019-04-19 15:08:09 -07:00
bolkedebruin
3e6f68489c Add disclaimer and remove counter (#6738)
(cherry picked from commit d65059b06a)
2019-04-19 15:07:31 -07:00
Maxime Beauchemin
c7b32ac84c 0.32.0rc1 2019-04-18 22:26:54 -07:00
Maxime Beauchemin
b89cdbdcad RELEASING.md from master 2019-04-18 22:26:35 -07:00
Maxime Beauchemin
0e23f2e6e6 Add sign.sh 2019-04-18 22:22:38 -07:00
Maxime Beauchemin
2180434663 [load_examples] download data at runtime (#7314)
* [load_examples] download data at runtime

When running `superset load_examples` to load example data sets,
Superset used to load from the local package. This created a few issues
notably around licensing (what are these datasets licensed as?) and
around package size.

For now, I moved the data sets here:
https://github.com/apache-superset/examples-data

Altered the logic to download the data from where it is stored.

* flakes

(cherry picked from commit 3d08266714)
2019-04-18 22:21:50 -07:00
Maxime Beauchemin
b32d590093 Remove LICENSE entry around dataset (#7318)
(cherry picked from commit 38dd33e979)
2019-04-18 21:26:11 -07:00
Michelle Thomas
b3aa5633a5 0.31rc23 2019-04-15 11:52:05 -07:00
Maxime Beauchemin
24a595f4f5 bugfix: improve 'Time Table' (#6959)
* [WiP] debugging and improving 'Time Table'

closes https://github.com/apache/incubator-superset/issues/6948

* Lint

* Remove passing down props from CollectionControl

* Declarative passthrough of props

* remove console.error

(cherry picked from commit 9b4f5ad8e1)
2019-04-15 11:42:02 -07:00
Michelle Thomas
c70abbed31 0.31rc22 2019-04-08 15:23:22 -07:00
michellethomas
dd8c2db95d [filter_box] allow empty filters list (#7220) (#7244)
in some cases, people want a time filter only on filter box, without
specifying dimensions (filters), this allows that

(cherry picked from commit e39b169949)
(cherry picked from commit 5ef2712e16)
2019-04-08 15:11:25 -07:00
michellethomas
2ab07a08ab Fix race condition when fetching results in SQL Lab (#7198) (#7242)
* Fix race condition when fetching results in SQL Lab

* Fix lint

(cherry picked from commit ca6a73b028)
(cherry picked from commit 52473c5d34)
2019-04-08 15:11:11 -07:00
Michelle Thomas
a9d548945f 0.31.0rc21 2019-04-01 15:29:54 -07:00
Hannah Squier
b959fcd2e5 fix PRODUCT-67916 Click OK button cannot close error message modal (#7179)
(cherry picked from commit 03752af4e8)
2019-04-01 14:12:50 -07:00
John Bodley
2da9613fac Update __init__.py (#7166)
(cherry picked from commit f13e0a8d58)
2019-04-01 14:12:37 -07:00
Grace Guo
538da2e3c3 0.31.0.rc20 2019-03-28 16:36:30 -07:00
John Bodley
7ce35d2a50 [migration] Fixing issue with fb13d49b72f9 downgrade (#7145)
* [migration] Fixing issue with fb13d49b72f9 downgrade

This PR fixes an issue with the downgrade step of migration fb13d49b72f9 which wrongfully labeled the field `metrics` rather than `metric`.

to: @graceguo-supercat @michellethomas @mistercrunch

* Update fb13d49b72f9_better_filters.py

(cherry picked from commit 36a6fade90)
2019-03-28 16:34:04 -07:00
John Bodley
947f02ffbc [migration] Fixing issue with c82ee8a39623 downgrade (#7144)
* [migration] Fixing downgrade

* Trigger notification

(cherry picked from commit 6e79e84b02)
2019-03-28 16:33:58 -07:00
Maxime Beauchemin
daf2b8e51f Bump python lib croniter to an existing version (#7132)
Package maintainers should really never delete packages, but it appears
this happened with croniter and resulted in breaking our builds.

This PR bumps to a more recent existing version of the library

(cherry picked from commit 215ed392a1)
2019-03-26 14:11:38 -07:00
michellethomas
eb4c135521 Use metric name instead of metric in filter box (#7106)
(cherry picked from commit 003364e74e)
2019-03-25 16:00:38 -07:00
Grace Guo
2ff721ae07 handle null column_name in sqla and druid models 2019-03-25 16:00:33 -07:00
John Bodley
e83a07d3df [forms] Fix handling of NULLs 2019-03-25 16:00:25 -07:00
Grace Guo
76d26f3740 0.31.0.rc19 2019-03-21 11:47:07 -07:00
Maxime Beauchemin
fe78b4ece0 Fix filter_box migration PR #6523 (#7066)
* Fix filter_box migration PR #6523

* Fix druid-related bug

(cherry picked from commit b210742ad2)
2019-03-21 11:44:33 -07:00
Grace Guo
d326ac7d6c 0.31.0rc18 2019-03-18 16:17:22 -07:00
John Bodley
c43d0fd378 [sqlparse] Fixing table name extraction for ill-defined query (#7029)
(cherry picked from commit 07c340cf82)
2019-03-18 15:41:57 -07:00
Maxime Beauchemin
b64a452a6d [sql lab] improve table name detection in free form SQL (#6793)
* [sql lab] improve table name detection in free form SQL

* flake

* Addressing comments

(cherry picked from commit 5a40f71710)
2019-03-18 15:41:52 -07:00
michellethomas
2357c4aabf Adding custom control overrides (#6956)
* Adding extraOverrides to line chart

* Updating extraOverrides to fit with more cases

* Moving extraOverrides to index.js

* Removing webpack-merge in package.json

* Fixing metrics control clearing metric

(cherry picked from commit e6194051f4)
2019-03-18 15:32:00 -07:00
John Bodley
9dd7e84a31 [sql-parse] Fixing LIMIT exceptions (#6963)
(cherry picked from commit 3e076cb60b)
2019-03-18 15:29:06 -07:00
John Bodley
5d8dd1424f [csv-upload] Fixing message encoding (#6971)
(cherry picked from commit 48431ab5b9)
2019-03-18 15:29:00 -07:00
John Bodley
f454dedd28 [main] Disable resetting main DB attributes (#6845)
(cherry picked from commit 60d5f89faa)
2019-03-18 15:25:32 -07:00
John Bodley
e967b268f4 [sqla] Fixing order-by for non-inner-joins (#6862)
(cherry picked from commit 5728946270)
2019-03-18 15:24:08 -07:00
michellethomas
a5d9a4e005 Adding template_params to datasource editor for sqla tables (#6869)
(cherry picked from commit b0f7f51ab7)
2019-03-18 15:23:58 -07:00
John Bodley
6b8954133a [datasource] Ensuring consistent behavior of datasource editing/saving. (#7037)
* Update datasource.py

* Update datasource.py

(cherry picked from commit c771625f10)
2019-03-18 13:28:43 -07:00
michellethomas
8ef2789f47 Adding warning message for sqllab save query (#7028)
(cherry picked from commit ead3d48133)
2019-03-18 11:26:46 -07:00
Conglei
0ebdb5643b fix inaccurate data calculation with adata rolling and contribution (#7035)
(cherry picked from commit 0782e831cd)
2019-03-17 23:33:34 -07:00
Grace Guo
b3af6a261f [fix] explore chart from dashboard missed slice title (#7046)
(cherry picked from commit a6d48d4052)
2019-03-17 23:33:12 -07:00
John Bodley
c54b067c6a [db-engine-spec] Aligning Hive/Presto partition logic (#7007)
(cherry picked from commit 05be866117)
2019-03-17 23:24:55 -07:00
michellethomas
bd65942e48 Changing time table viz to pass formatTime a date (#7020)
(cherry picked from commit 7f3c145b1f)
2019-03-17 23:20:24 -07:00
Grace Guo
50accda9d8 [fix] Cursor jumping when editing chart and dashboard titles (#7038)
(cherry picked from commit fc1770f7b7)
2019-03-17 23:20:08 -07:00
Christine Chambers
5ace576948 0.31.0rc17 2019-03-14 11:27:22 -07:00
Tom Hunter
927a584678 [WIP] fix user specified JSON metadata not updating dashboard on refresh (#7027)
(cherry picked from commit cc58f0e661)
2019-03-14 11:24:42 -07:00
Grace Guo
fafb824d9a 0.31.0rc16 2019-03-12 13:03:06 -07:00
Grace Guo
7b72985efb [fix] /superset/slice/id url is too long (#6989)
(cherry picked from commit 6a4d507ab6)
2019-03-12 10:54:33 -07:00
Hugh A. Miles II
b497d9e7d1 fix dashboard links in welcome page (#6756)
(cherry picked from commit 6b0ab2100d)
2019-03-12 10:43:20 -07:00
Christine Chambers
c42afa11b9 0.31.0rc15 2019-03-08 16:32:53 -08:00
Conglei
35c55278dd Enhancement of query context and object. (#6962)
* added more functionalities for query context and object.

* fixed cache logic

* added default value for groupby

* updated comments and removed print

(cherry picked from commit d5b9795f87)
2019-03-08 16:29:51 -08:00
Christine Chambers
1c41020c73 Split tags migration (#7002)
This PR removes the iteration over charts, dashboards and saved queries to create tags in the original migration, leaving only the logic to create the tags and the tagged objects tables.
Tested locally by running `superset db downgrade` to revert to the previous migration and then running `superset db upgrade` to the current version.

(cherry picked from commit e47a1b2868)
2019-03-08 16:28:20 -08:00
Christine Chambers
ec7a0b22ab 0.31.0rc14 2019-03-01 19:45:21 -08:00
Maxime Beauchemin
4655cb4c23 Remove Cypress from package.json (#6912)
* Remove Cypress from package.json

I'm building some Docker images these days and realizing just how big
the Cypress package is. Looks like its ~500mb or so.

I prefer adding it as needed only as opposed to having to play tricks as
in `npm ci && rm node_modules/cypress`

* Pin cypress version

* Add script entry install-cypress

* bump cypress and fix ts-jest warning

(cherry picked from commit 8f2ce75665)
2019-03-01 19:44:23 -08:00
Christine Chambers
fb8e3208db 0.31.0rc13 2019-02-28 17:59:24 -08:00
Kim Truong
b4cbe13d22 VIZ-190 fix (#6958)
(cherry picked from commit 5026401171)
2019-02-28 17:57:37 -08:00
Christine Chambers
5b7b22fd25 0.31.0rc12 2019-02-27 10:40:39 -08:00
Beto Dealmeida
5180422942 Fix deck.gl form data (#6953)
* Fix deck.gl viz

* Fix more form data

* Fix a few more places

* Fix unit tests

(cherry picked from commit e0feec9117)
2019-02-27 10:39:22 -08:00
Christine Chambers
9939a52d0d 0.31.0rc11 2019-02-25 16:31:36 -08:00
Christine Chambers
c3db74d902 Fix rendering regression from the introduction of bignumber (#6937)
In superset-ui 0.8.0, we used bignumber.js to transform numbers in chartProps' payload from plain 64-bit floats to BigNumber instances. This causes a number of charts to render incorrectly when comparison functions in the rendering algorithms operate on BigNumber objects instead of floats. This PR uses the preTransformProps step in SuperChart to transform BigNumber instances back to floats so charts can render properly.

(cherry picked from commit 73cdb37f7e)
2019-02-25 16:29:34 -08:00
Christine Chambers
9940d30a7f 0.31.0rc10 2019-02-20 16:12:08 -08:00
Christine Chambers
3df2b8d57b Add a safety check before getting clientHeight (#6923)
Seeing an intermittent repro of the `current` nodes of the sql editor and south pane refs returning null. Adding a safety check for both nodes.

(cherry picked from commit c04c0cd8f0)
2019-02-20 14:31:59 -08:00
Christine Chambers
ccb51385e4 v0.31.0rc9 2019-02-19 16:24:51 -08:00
Beto Dealmeida
db0235fbdb Fix database typeahead in SQL Lab (#6917)
* Fix database typeahead in SQL Lab

* Fix lint

* Use string interpolation

(cherry picked from commit 25ec00b3c6)
2019-02-19 16:11:09 -08:00
Christine Chambers
953d6dc9d6 Address tooltip's disappearance and stickiness (#6898)
* Address tooltip's disappearance and stickiness

Nvd3 attaches tooltips to the body of the dom, not the chart the tooltip is meant fo. On hover, it sets their opacity to 1. In order to address both their stickiness when chart reloads (PR #6805) and thier disappearance on scroll in dashboards (PR #6852), we introduce a shouldRemove parameter to `hideTooltips` and only remove them befor chart reloads. For the scroll events triggered on dashboards, we only hide the tooltips by setting their opacity to 0. When they get hovered over again, nvd3 sets their opacity to 1 which causes them to reappear.

* adding a comment about the shouldRemove parameter
2019-02-19 15:45:16 -08:00
Beto Dealmeida
c0eaa5f62d Fix extra_filters in multi line viz (#6868)
(cherry picked from commit b035185b1c5c4f4332bfc8c9f748166f8d43151f)
2019-02-19 12:51:08 -08:00
Beto Dealmeida
ebcadc1f50 Fix tooltip (#6895)
(cherry picked from commit 3f96b0c5c4)
2019-02-19 12:12:51 -08:00
Christine Chambers
5fa5acb5d5 Add show metadata button back to the explore view (#6911)
* Add show metadata button back to the explore view

- Add the show metadta button, accidentally removed from PR #6046, back to the explore view
- Remove dead code that is no longer reachable from DataSourceModal.jsx.

* Adding additional code back to make the button function and remove more dead code.

(cherry picked from commit f8cf0fb7f3)
2019-02-19 09:47:04 -08:00
Christine Chambers
ce76560ae8 v0.31.0rc8 2019-02-14 20:30:35 -08:00
Christine Chambers
8c549b46bd Relayout SQL Editor (#6872)
* Relayout SQL Editor

- Refactor SQL editor to remove usage of bootstrap col, row and collapse to simplify the layout
- Replace the react-split-pane libraray with react-split to allow custom styling of the gutter area without sacrifice correctness of the ace editor height calculation
- Rewrite the left pane animation via plain css transition and animate it to slide in and out
- General code and css clean up

* Smooth out the visual transition during dragging

(cherry picked from commit 19f82b729c7a939f12b1c5da6022c0fd76fa3ec9)

* Adjust how the height of the south pane is computed, fixing cypress tests

(cherry picked from commit ec6657ab2d)
2019-02-14 20:28:45 -08:00
Maxime Beauchemin
bfe18963d7 [cosmetic] TableSelector use <i> instead of <Button> for refresh (#6783)
* [cosmetic] TableSelector use <i> instead of <Button> for refresh

* Add ASF licenses

* css hover

* missing license

* remove license header

(cherry picked from commit 713b0ae4f4)
2019-02-14 20:28:20 -08:00
Christine Chambers
19b588b52b 0.31.0rc7 2019-02-12 10:21:18 -08:00
michellethomas
d7e038eaa5 Fixing issue where tooltip gets hidden on dashboard for all charts (#6852)
(cherry picked from commit 4638618545)
2019-02-11 16:52:32 -08:00
Christine Chambers
38e0ddacf1 0.31.0rc6 2019-02-08 15:17:17 -08:00
Krist Wongsuphasawat
b7d2bd09a7 Fix line chart overflowing the right side (#6829)
* Fix line chart overflowing the right side

* revert package-lock.json

* revert again

(cherry picked from commit 823555e07d)
2019-02-08 15:17:17 -08:00
Maxime Beauchemin
b7e02ab776 [sql lab] fix stuck offline (#6782)
(cherry picked from commit 36176f3e20)
2019-02-08 09:27:43 -08:00
Christine Chambers
8a7c245c54 0.31.0rc5 2019-02-06 14:29:26 -08:00
Beto Dealmeida
f24efa7250 Backend only tagging system (#6823)
This PR introduces the backend changes for a tagging system for Superset, allowing dashboards, charts and queries to be tagged. It also allows searching for a given tag, and will be the basis for a new landing page (see #5327).

# Implicit tags
Dashboard, chart and (saved) queries have implicit tags related to their owners, types and favorites. For example, all objects owned by the admin have the tag `owner:1`. All charts have the tag `type:chart`. Objects favorited by the admin have the tag `favorited_by:1`.

These tags are automatically added by a migration script, and kept in sync through SQLAlchemy event listeners. They are currently not surfaced to the user, but can be searched for. For example, it's possible to search for `owner:1` in the welcome page to see all objects owned by the admin, or even search for `owner:{{ current_user_id() }}`.

(cherry picked from commit 8041b63af6)
2019-02-06 14:18:50 -08:00
John Bodley
1ddacc42d0 [wtforms] Using wtforms-json which supports None (#5445)
(cherry picked from commit e1b907783a)
2019-02-06 14:17:51 -08:00
Christine Chambers
4f37b9aefc 0.31.0rc4 2019-02-04 18:58:54 -08:00
Michael McDuffee
845c7aa91c creating new circular-json safe stringify and replacing one call (#6772)
(cherry picked from commit 11a7ad00b7)
2019-02-04 18:54:39 -08:00
michellethomas
8ea805ea0a Fixing sort issue with area chart and adding tests (#6358)
(cherry picked from commit 8100a8fa97)
2019-02-04 18:50:55 -08:00
Beto Dealmeida
aff43c7453 Allow specifying custom width for logo (#6739)
(cherry picked from commit cf1a35b94b)
2019-02-04 18:49:30 -08:00
Beto Dealmeida
7f86517970 Remove test URL (#6740)
(cherry picked from commit bbd781b66e)
2019-02-04 18:48:24 -08:00
Christine Chambers
ed0f0ab2d8 0.31.0rc30.31.0rc30.31.0rc3 2019-02-04 16:13:23 -08:00
Grace Guo
db81dc50b1 [fix] Add action for update chart id (#6769)
(cherry picked from commit 744135c7fe)
2019-02-04 15:30:52 -08:00
Grace Guo
37de92b883 [fix] JS error out when rename a new chart (#6752)
(cherry picked from commit 879c553b0a)
2019-02-04 15:30:27 -08:00
Christine Chambers
4d01a02f21 0.31.0rc2 2019-02-01 18:41:37 -08:00
Christine Chambers
0e48e05008 Fix sticky tooltips on nvd3 vizzes
Currently, we attempt to hide the nvd3 tooltips (if any were on screen) before we draw a new viz after rerunning a query. The hiding is done by selecting the first nvtooltip element and setting the opacity to 0.

This somtimes leave behind a trail of old tooltips if a tooltip is left behind by this nvd3 bug https://github.com/novus/nvd3/issues/1262. This PR modifies the behavior of how we clean up tooltips between rerun of queries by selecting all nvd3 tooltips and removing them all from the DOM before redrawing nvd3 vizzes.

(cherry picked from commit 501340b5db)
2019-02-01 15:38:22 -08:00
Beto Dealmeida
ae95c8930b Fix playslider
(cherry picked from commit a09348d0ec)
2019-02-01 15:37:49 -08:00
Krist Wongsuphasawat
58e3a39f55 Add iframe and markup legacy plugin (#6741)
* Add iframe plugin

* Use lazy load and add description

* remove unintended files

* Add markup

* minor adjustment

(cherry picked from commit 3ae7d32caa)
2019-02-01 15:32:55 -08:00
Christine Chambers
b80b0b90e2 0.31.0rc1 2019-01-24 13:59:41 -08:00
bolkedebruin
1fece0d2fa Add licenses to translations (#6732)
* Add licenses

* More licenses

* Ignore messages.json as they are generated

* More licenses

* Also typescript

* Fix alignment

* Add to svg

* Many more licenses

* more licenses

* Better excludes

* Add licenses to docs and md files

* Pre-finalize licenses

* Fix newlines

* Finalize all sourde licenses

* Fix lint
2019-01-22 08:21:13 -08:00
Hugh A. Miles II
d628907be3 Hotkeys in Explore View (#6526)
* working .... hotkeys in example of hotkeys in explore

* added save functionality

* Added proper overwrite functions

* cleanup

* cleanup

* cleanu

* fixe linting

* add global

* move match to utils

* linting

* change some stuff

* Delete example_filter_immune_slice_fields.json

* hide annoying blue bar

* switch hotkeys to reference s

* remove console.log

* have hotkey generate help

* 🚢

* move functions out of component

* refactor

* Delete yarn.lock

* addressed comments

* remove comments

* remove Hotkeys component from ChartView

* Add hotkeys button next to save&run

* moved keyboard

* cleanup

* checkout package.json

* checkout chart panel

* reference apache

* remove style change

* whitespace

* clean up on hotkey popup

* fds

* linting

* fix all linting errors
2019-01-21 02:10:46 -08:00
bolkedebruin
88283dc2cb Add cc-by 4.0 for geojson files (#6731) 2019-01-19 14:28:40 -08:00
Maxime Beauchemin
f742b9876b Making thrift, pyhive and tableschema as extra_requires (#6696)
* Making thrift, pyhive and tableschema as extra_requires

Looking at the dependency tree for license related questions, I noticed
that tableschema had a huge tree, and only people running Hive really
need it. Making this as well as pyhive and thrift optional.

Also bumping some python dependencies

* Run pip-compile

* Removing refs to past.builtins (from future lib)

* Add thrift
2019-01-19 14:27:18 -08:00
Krist Wongsuphasawat
ebb799140a Update CONTRIBUTING.md based on SIP-13 and add how to use labels (#6701)
* update contributing based on SIP-13

* update link

* add labels instruction

* minor edit

* minor edit

* update table of content

* Add ASF header and update insructions

* update table

* update text
2019-01-19 03:18:22 -08:00
bolkedebruin
3cc7cdfee0 Fix setup.py ASF issues (#6677)
* This renames the package to apache-superset instead of superset.
  This is required.
* It sets the download location to the official ASF repositories
2019-01-19 03:16:33 -08:00
Andrew Kovalyov
01063ce96c Fix link to SQLAlchemy docs about database URLs format (#6698)
'Add database' grid refers to SQLAchemy docs, where database URL format is described. 
Documentation for 1.0 does not exist on https://docs.sqlalchemy.org/, which results in 404 when following the current URL.
The link is fixed taking into account [SQLAlchemy 1.2](https://github.com/apache/incubator-superset/blob/master/requirements.txt#L87) as a project dependency.
2019-01-18 22:32:29 -08:00
Maxime Beauchemin
057c43c56d Revert "Truncate long labels (#6631)" (#6723)
This reverts commit 5055157b64.
2019-01-18 17:24:40 -08:00
Beto Dealmeida
ef79757973 Merge heads (#6729)
* Merge heads

* Add ASF header
2019-01-18 16:04:06 -08:00
Beto Dealmeida
00388811b6 Allow empty results in Hive (from SET, eg) (#6695)
* Allow empty results in Hive (from SET, eg)

* Remove patch

* Merge heads

* Delete merge heads
2019-01-18 10:11:59 -08:00
Beto Dealmeida
c954fe314d Insert a space after auto complete (#6717)
* Insert space after auto complete

* Fix autocomplete with space
2019-01-18 09:38:56 -08:00
Beto Dealmeida
b260cb66b3 Expose more columns in saved queries API (#6686) 2019-01-18 09:38:31 -08:00
Beto Dealmeida
31ea6817b7 Add extra column to SavedQuery (#6687)
* Expose more columns in saved queries API

* Add extra column to SavedQuery

* Add ASF header
2019-01-18 09:38:07 -08:00
Ville Brofeldt
7ee8afb608 Improve support for BigQuery, Redshift, Oracle, Db2, Snowflake (#5827)
* Conditionally mutate and quote sqla labels decouple sqla logic from viz.py

* Prefix hashed label with underscore if bigquery label exceeds 128 chars

* Add comments for label cache

* Rename to mutated_labels and simply

* Rename mutated_label to get_label and simplify make_label_compatible in db_engine_specs

* Add note about deterministic and unique mutated labels

* add hash to label that has been prefixed with underscore

* Fix PEP8 escape warning

* Fix DeckPathViz get_metric_label call
2019-01-18 08:24:11 -08:00
Jeffrey Wang
055467de86 Explicitly declare flags as flags (#6693) 2019-01-18 08:19:54 -08:00
Maxime Beauchemin
69fe50a5c9 [cosmetic] remove margin-bottom on dropdowns (#6627)
* [cosmetic] remove margin-bottom on dropdowns

react-select components have been added 15px bottom-margin without a
good reason. Other controls like text or checkboxes don't have that,
making Selects look non-standard, add making the control list too
sparse.

My perspective is that all controls should have the same
padding/margins.

* Adding a few licenses
2019-01-17 22:56:39 -08:00
Maxime Beauchemin
75322ab12c More ASF licenses (css + html/jinja) (#6711)
* More ASF licenses

* html

* removing from vendors
2019-01-17 22:39:00 -08:00
Maxime Beauchemin
6718588781 Add universal "New" button (#6670)
* [cosmetic] CRUD's list from 'Add Filter' to 'Filter Results'

* Add global new button

* A better viz type selector

* lint

* Move view to new module, add unit test

* 'Filter Results' -> 'Filter'

* db merge

* Filter -> 'Filter List'
2019-01-17 15:48:40 -08:00
Beto Dealmeida
99d6dc07d6 Trim query before parsing (#6703)
* Ignore empty lines

* Fix unit tests

* Use stripped

* Fix another unit test
2019-01-17 09:16:35 -08:00
Krist Wongsuphasawat
9c7b98a27a Add more format shims (#6709)
* add more shims
* update package-lock.json
2019-01-16 23:31:43 -08:00
Christopher Council
30c911919e Fix Text field to edit SQL snippet of a metric is not large enough (#6702)
* Fix Text field to edit SQL snippet of a metric is not large enough for entire snippet
* Fix Airbnb bug PRODUCT-62223
2019-01-16 23:28:38 -08:00
Maxime Beauchemin
88964b7dfc Deprecate auto-generated metrics (#5461)
* [WiP] deprecate auto-generated metrics & fix examples

Picking up some leftover pieces not needed anymore since the
MetricsControl

* db merge

* db merge

* fix migration

* Creating metrics required for tests
2019-01-16 22:32:13 -08:00
Maxime Beauchemin
65f7f2920d Fix url_param macro when param is missing (#6699)
User @ravi on Slack reported issues trying to use url_param jinja macro.
explore_json would raise a "KeyError: 'url_params'".

The feature works when a parameter is passed, but fails hard when none
are passed.

I improved the docstring on the macro as well.
2019-01-16 20:44:28 -08:00
Maxime Beauchemin
e03e276571 Bump some of the requirements-dev.txt (#6700)
* Bump some of the requirements-dev.txt

* addressing comments
2019-01-16 20:40:16 -08:00
Yuan Liu
4c658444e4 Update README.md (#6682) 2019-01-15 21:56:31 -08:00
Maxime Beauchemin
1dd4d7a587 Apply ASF licenses throughout the code base (#5800)
* Add license headers

* reabased

* lint

* Removing licenses from vendors folder
2019-01-15 15:53:27 -08:00
Maxime Beauchemin
da813b7ee3 [table editor] allow selecting physical table (#6046)
* [table editor] allow selecting physical table

* Using classes for padding
2019-01-15 08:53:24 -08:00
Maxime Beauchemin
4667f0c288 Committing some licenses to fix master (#6689) 2019-01-14 22:28:03 -08:00
Christopher Council
207d9529b2 Fix for #6590: Numeric values in columns sometimes returned as quoted strings (#6591)
* Fix: https://github.com/apache/incubator-superset/issues/6590, also depends on https://github.com/apache-superset/superset-ui/pull/71

* Bumped version of superset-ui-connector

* Added @babel/polyfill import

* Reset mock history before each test, not after each test

* Update CONTRIBUTING.md
2019-01-14 15:35:28 -08:00
Yao Zhou
f480a52074 Add doc about translation using poedit (#6600)
* Update CONTRIBUTING.md
2019-01-15 01:48:12 +07:00
Beto Dealmeida
5055157b64 Truncate long labels (#6631) 2019-01-14 10:42:12 -08:00
Junda Yang
b1dbd1cab6 [bugfix] show results in query history & revert #5848 (#6436)
* revert 848

* nit
2019-01-13 22:31:27 -08:00
Chinh Nguyen
284a0cccd3 Add fix for pyodbc+mssql (#6621)
* add fix for odbc+mssql

* fix for pylint/pep8
2019-01-13 09:30:05 -08:00
Maxime Beauchemin
ae6217ba55 Remove dep on unidecode (#6673)
Not needed anymore in py3
2019-01-13 09:22:13 -08:00
Sirius
b2f0b2bde6 Update Dockerfile (#6678)
Fix permission issue.
2019-01-13 08:37:37 -08:00
Mahendra M
42cf929f62 Fix scheduled reports for mysql (#6512)
* Fix scheduled reports for mysql

* Really revert setup.py

* Fix after rebase
2019-01-12 20:29:03 -08:00
bolkedebruin
8e6c114195 Add Apache Rat for license checks (#6663) 2019-01-12 20:28:12 -08:00
bolkedebruin
855228c66c Add NOTICE file and include initial third party licenses (#6671)
* Add NOTICE file and include initial third party licenses

* Add to manifest

* Use txt

* Fix notice
2019-01-12 16:10:03 -08:00
Kaxil Naik
a55a5e06c6 Remove bad git conflicts from Readme (#6669) 2019-01-12 09:57:13 -08:00
Yongjie Zhao
b143b16dff #6588 Clear all other query tabs (#6617)
* #6588 Clear all other query tabs

* Improve SQLEditor methods bind

* Update loop syntax
2019-01-11 16:35:53 -08:00
Maxime Beauchemin
0053a86684 [README] use a numbered list instead of bullets for org list (#6629)
* [README] use a numbered list instead of bullets for org list

* Add companies frmo https://stackshare.io/superset/in-stacks
2019-01-11 16:06:39 -08:00
Maxime Beauchemin
7e0e7c89ba Improving Filter Box (#6523)
* Improve Filter Box

* layout tweaks
2019-01-11 15:28:23 -08:00
Tao Feng
fafa6b4dda Minor doc fix for superset (#6662) 2019-01-11 09:50:31 -08:00
Maxime Beauchemin
8051818693 [pie] allow formating nubmers on pie chart (#6628) 2019-01-11 08:28:58 -08:00
timifasubaa
9d70c348d3 pass source to db api mutator (#6497) 2019-01-10 17:30:32 -08:00
zhaoyu89730105
a2ce9974cd Add kuaishou to README.md (#6630)
* add kuaishou
2019-01-10 23:21:59 +07:00
zhaoyu89730105
42437236b2 data point no clipEdge (#6614) 2019-01-09 20:35:20 -08:00
Mahendra M
fbf9586adf Bump requirements (#6625)
* Bump requirements

* Fix setup.py for email reports
2019-01-09 16:00:04 -08:00
Beto Dealmeida
f6ac0daf7e Improve padding in NVD3Vis (#6626)
* WIP, fixing padding

* Remove testing code
2019-01-09 15:43:57 -08:00
Maxime Beauchemin
eafb4f9600 Upgrade webpack-dev-server to fix 'npm audit' issue (#6607) 2019-01-08 15:55:27 -08:00
Maxime Beauchemin
accc754a87 Improve false negative on AlteredSliceTag (#6578)
The "altered" tag in the explore view shows up more often than it
should. By treating null, [] {}, undefined as identical will help reporting
only the differences that matter.
2019-01-08 12:23:12 -08:00
Christine Chambers
49e3638eee Introduce a more visible resize grabber to the SQL editor (#6593)
- Clean up css and html of the sql editor button area (removing unused styles)
- Restyle the button area and the resizer to be more like the one proposed in issue 6565
2019-01-08 10:06:00 -08:00
Joe Bordes
28ca07e640 fix(i18n) syntax errors detected by grammarly while translating (#6271) 2019-01-09 00:27:26 +07:00
Beto Dealmeida
3c17dac35a Upgrade gsheetsdb (#6609) 2019-01-07 22:48:33 -08:00
hmanuel
818a6a832c Make NULL value grouping keys show up properly in rich tooltip (#6003)
* resolved merge conflicts with upstream

* changed the key in a spot I missed

* linting

* refactored my code out into a function

* update util

* simplified the code logic

* cleaned up code
2019-01-07 17:23:11 -08:00
Grace Guo
be1895f2dc [fix] url shortner for long explore url (#6449)
- redirect explore url with r parameter
- redirect to relative path
2019-01-07 14:28:30 -08:00
Maxime Beauchemin
68e9d2970a Fix 'Uncaught TypeError: Cannot read property 'value' of undefined' #6556 (#6574)
closes #6556
2019-01-08 00:22:07 +07:00
Marcus
f291dae200 shift labels down along y-axis (#6596) 2019-01-05 09:50:01 -08:00
Yao Zhou
bc9c183243 Fix bug: some word not translate in js. (#6598)
delete the 'null,' in messages.json,
so that word can be translate in js.
2019-01-05 09:48:08 -08:00
Yao Zhou
3802f011d9 add chinese translate (#6592) 2019-01-04 09:03:47 -08:00
oliviermichaelis
c01230afb7 Enhance Docker (#6504)
Refactored deprecated functionalities:
  - Used 'celery worker' command instead of 'superset worker' which is
    deprecated since 0.26.0
  - Used 'gunicorn' command instead of 'superset runserver'
2019-01-03 11:33:31 -08:00
Maxime Beauchemin
142e7b6df7 Finish move to babel 7 (#6573)
* Finish move to babel 7

* Bump jest to 23.6.0

* Address comments
2018-12-30 16:41:38 -08:00
Maxime Beauchemin
6099519896 Using batch_op in db migration 0b1f1ab473c0 (#6581)
As I needed to downgrade from db migration 0b1f1ab473c0, I realized I
needed to use batch_op against SQLLite.
2018-12-28 12:41:11 -08:00
Maxime Beauchemin
b16498796f [bugfix] moving from reactable to reactable-arc fork (#6576) 2018-12-28 10:45:51 -08:00
Brayan Arrieta
d80cbbc7ec Change margin for slice description in charts for the dashboard view (#6575)
Changed margin for the slices description in dashboard view, previously the margin was 5px for all the sides but for improve the view just apply margin for top and bottom.
2018-12-28 08:52:38 -08:00
ghsalem
f761237260 fixing issue #6572 with Oracle date handling (#6580)
* fix Oracle engine specs for dates issue #6572

* fix Oracle engine specs for dates issue #6572

* fix Oracle engine specs for dates issue #6572, removing comment

* ng a trailing space
2018-12-28 08:51:48 -08:00
Maxime Beauchemin
2c3794e28d [design] use angle icons instead of carets for expandable panels (#6564)
* [design] use angle icons instead of carets for expandable panels

Also moving to the right to conform to the material design specs

* Fix cypress test
2018-12-27 22:18:27 -08:00
Beto Dealmeida
a0b2f2ca0f Fix multi/dual when no right y axis (#6571) 2018-12-27 21:17:48 -08:00
Patrick Tyler Haas
d99b36e892 Fix: updated required cryptography version to 2.4.2 to resolve #6509 (#6516)
* Fix: updated required cryptography version to 2.4.2 to resolve #6509

* Fix: updated cryptography version to 2.4.2 to resolve #6509

* Fix: updated cryptography version to 2.4.2 to resolve #6509

* Revert "Fix: updated required cryptography version to 2.4.2 to resolve #6509"

This reverts commit b57b08c8e5.

* Fix: updated cryptography version to 2.4.2
2018-12-27 14:14:01 -08:00
shizidushu
4e03d41f17 fix #6530 and add some other chinese translation (#6569) 2018-12-27 12:45:50 -08:00
Karri Niemelä
f424af8385 json_iso_dttm_ser use for TableViz (#6563) 2018-12-27 11:38:05 -08:00
Maxime Beauchemin
fe77b57581 [refactor] moving some datasource-related code to the frontend (#5769)
* [refactor] moving some datasource-related code to the frontend

* fix js tests

* fix tests

* fix test
2018-12-22 18:06:36 -08:00
Karri Niemelä
eff4e6362c Adding missing slash (#6567) 2018-12-22 16:44:31 -08:00
Maxime Beauchemin
d427db0a8b [SQL Lab] Allow running multiple statements (#6112)
* Allow running multiple statements from SQL Lab

* fix tests

* More tests

* merge heads

* fix heads
2018-12-22 10:28:22 -08:00
Maxime Beauchemin
6e942c9fb3 Make boto3/botocore installation optional (#6540)
* Make boto3 installation optional

* pylinting
2018-12-21 12:27:57 -08:00
Maxime Beauchemin
60ccf3eb9d [SIP-14] remove dependency on yarn in favor of npm (#6541)
* [SIP-14] remove dependency on yarn in favor of npm

Find more details here
https://github.com/apache/incubator-superset/issues/6217

* Add core-js to dev deps

* lint

* fix cypress

* break down cypress_build.sh

* fix cypress

* Use 'npm ci' in place of 'npm install'

* Bump npm req to >=6.5.0

* Enforcing  npm@'>=6.5.0'

* Using latest lts of nvm

* Make cache settings global

* remove uneeded 'npm run test' as 'npm run cover' takes care of that

* Prefix with 'time'

* Trying to upgrade babel-eslint instead of downgrading

* upgrading babel-polyfill to '@babel/polyfill'

* Moving to babel 7

* remove unused packages
2018-12-21 10:24:49 -08:00
Maxime Beauchemin
8c6ddbc842 Fix multiple db_migrations heads (#6560) 2018-12-20 22:08:52 -08:00
leakingoxide
fd0338614a Make owner a m2m relation on datasources (#6544)
* Make owner a m2m relation on datasources

* Fix pylint

* Make migration work in mysql & sqlite
2018-12-20 20:35:32 -08:00
Yongjie Zhao
6a95f8070a minor, auto tune debug mode when use flask_env (#6550)
* minor, auto tune debug mode when use flask_env

* update changes
2018-12-20 20:35:06 -08:00
Maxime Beauchemin
42067e077b [RfC] Fix URL too long (#6519)
When a URL gets too long (usually happens with controls that allow
free form text), it creates an array of bugs.
* bug when creating a short URL, because the POST request's referrer
field is too long
* a bug when saving a chart (when the modal shows up) also because of
the referrer being too long

Some work has been done in the past to mitigate this, and I'm unclear if
it's some sort of regression because of the Flask upgrade or some
browser change, or whether these bugs have always been around.

This is a request for comment on an approach that works. Let me know if
you can think of better ideas as to how to manage this.

My current solution looks for 8000+ characters URLs and shrinks them to
only `/superset/explore/?URL_IS_TOO_LONG_TO_SHARE&form_data=...` and we
only keep the formData keys for `datasource` and `viz_type`. Not super
elegant but does the trick.
2018-12-18 16:14:20 -08:00
Maxime Beauchemin
5a1ff0f09d [cosmetic] add css no-wrap on CRUD's last modified (#6522) 2018-12-18 16:13:21 -08:00
Maxime Beauchemin
3f29a1dd70 Secure unsecured views and prevent regressions (#6553)
* Secure views and prevent regressions

* Force POST on shortner

* Fix tests
2018-12-18 11:57:13 -08:00
MukaJiTrue
926f78c21d Fix deck.gl Polygon not show (#6545)
* Fix deck.gl Polygon not show

* Replace "//" to "// "
2018-12-18 11:16:09 -08:00
dragons
b06941945c fix addr_str format bug (#6551) 2018-12-18 11:03:15 -08:00
Beto Dealmeida
e2b9625d84 Increase size of column name in table ab_view_meu (#6532)
* Create migration script

* Use batch operation for ALTER COLUMN
2018-12-18 10:57:45 -08:00
Beto Dealmeida
672c470e79 Pass security manager to QUERY_LOGGER (#6548)
* Pass security manager to log_query

* Fix lint
2018-12-18 10:55:58 -08:00
Antoan Milkov
fe994900ec filter_values documentation fix (#5977) 2018-12-17 21:20:46 -08:00
Ville Brofeldt
c4884e3c2e Remove note about snowflake-sqlalchemy stable version regression (#6398) 2018-12-17 21:20:00 -08:00
Chanakya
c6263fc096 Documentation Correction to use http.server for Python3 (#6549) 2018-12-17 17:20:33 -08:00
Mars
95cdda4482 Fix string value displaying NaN (#6534) 2018-12-17 17:03:51 -08:00
Marcus
9ec3e18ecb adding in a dependency version to fix an error with Flask CLI (#6547) 2018-12-17 13:46:04 -08:00
Hugh A. Miles II
e2854994ba Add docker files to gitignore (#6507)
* add docker files to gitignore

* Update .gitignore
2018-12-16 21:24:16 -08:00
Ville Brofeldt
5bac723df4 Refactor teradata to new time_grain_functions spec (#6539)
* Refactor teradata to new time_grain_functions spec

* Add test for time_grain_functions
2018-12-16 08:53:29 -08:00
michellethomas
fe0f5e968e Avoid resetting margin to 0 (#6536)
* Avoid resetting margin to 0

* Fixing margin for pie chart
2018-12-14 14:17:45 -08:00
John Bodley
1fba6f7a17 [warm] Enforcing consistent form-data (#6531) 2018-12-14 14:00:38 +13:00
Beto Dealmeida
852c51219b Update requests version (#6510)
* Update requests version

* Run pip-compile --output-file requirements.txt
2018-12-11 22:01:06 -08:00
Kengo Seki
d203886e47 Fix malformed table in docs/visualization.rst (#6409) 2018-12-11 16:49:17 -08:00
Krist Wongsuphasawat
96a0105f7a Update contributing.md with latest local dev instructions (#6513) 2018-12-11 13:45:50 -08:00
Omkar Yadav
56aa7ac7c6 Typo: Fixed link (#6087) 2018-12-11 10:42:13 -08:00
Mahendra M
808622414c [SIP-3] Scheduled email reports for Slices / Dashboards (#5294)
* [scheduled reports] Add support for scheduled reports

* Scheduled email reports for slice and dashboard visualization
  (attachment or inline)
* Scheduled email reports for slice data (CSV attachment on inline table)
* Each schedule has a list of recipients (all of them can receive a single mail,
  or separate mails)
* All outgoing mails can have a mandatory bcc - for audit purposes.
* Each dashboard/slice can have multiple schedules.

In addition, this PR also makes a few minor improvements to the celery
infrastructure.
* Create a common celery app
* Added more celery annotations for the tasks
* Introduced celery beat
* Update docs about concurrency / pools

* [scheduled reports] - Debug mode for scheduled emails

* [scheduled reports] - Ability to send test mails

* [scheduled reports] - Test email functionality - minor improvements

* [scheduled reports] - Rebase with master. Minor fixes

* [scheduled reports] - Add warning messages

* [scheduled reports] - flake8

* [scheduled reports] - fix rebase

* [scheduled reports] - fix rebase

* [scheduled reports] - fix flake8

* [scheduled reports] Rebase in prep for merge

* Fixed alembic tree after rebase
* Updated requirements to latest version of packages (and tested)
* Removed py2 stuff

* [scheduled reports] - fix flake8

* [scheduled reports] - address review comments

* [scheduled reports] - rebase with master
2018-12-10 22:29:29 -08:00
Beto Dealmeida
f366bbe735 Google spreadsheets (#5915)
* Google spreadsheets

* Fetch table metadata in SQL Lab

* Show full URL for spreadsheet

* Fix version

* Remove sqllab changes
2018-12-10 13:11:54 -08:00
michellethomas
23a2ab1077 Adding tests for time table, formatting, and annotations (#6498) 2018-12-10 12:16:11 -08:00
aboganas
96f510619c Fix Annotation (#6457) 2018-12-09 08:00:47 -08:00
Maxime Beauchemin
f5a277cc72 Pypi has a 60mb package size limit, and we're over (#6493)
* removing india country map which is 12MB+
* removing src/ in general, keeping the countries folder which has geo
data
2018-12-08 23:52:47 -08:00
Maxime Beauchemin
4109e893d3 Bump pydruid to 0.5.0 (#6454) 2018-12-08 23:47:55 -08:00
Beto Dealmeida
5168c69a25 Hook for auditing queries (#6484)
* Hook for auditing queries

* Address comments

* Use __name__
2018-12-07 12:19:19 -08:00
leakingoxide
eb408d71c4 Add copy to clipboard buttons in explore and sqllab (#6461)
* Add copy to clipboard buttons in explore and sqllab

* Eslint fixes

* Review changes: deconstruct props, extract function to utils, add tests
2018-12-07 10:03:33 -08:00
Conglei
fc8acf27c8 [Bug Fix]Prevent re-rendering when non-instant controls change (#6483)
fix: Prevent re-rendering when non-instant controls change
2018-12-05 17:31:59 -08:00
zhaoyu89730105
fd54de7856 FixBug druidMetricModels No attribute get_perm (#6432) 2018-12-05 09:46:38 -08:00
leakingoxide
8307716d72 Add See Tableview Form button to the Datasource Editor modal (#6430)
* Add See Tableview Form button to the Datasource Editor modal

* Change the text on datasource edit button
2018-12-04 20:44:13 -08:00
Junda Yang
13f374aa9e make loading icon bigger (#6485) 2018-12-04 20:43:14 -08:00
Krist Wongsuphasawat
fcec748b62 Use @superset-ui/number-format and @superset-ui/time-format for formatting. (#6470)
refactor: proxy all d3 number and time formatting calls
2018-12-04 13:24:07 -08:00
Maxime Beauchemin
cc3a625a4b Use py3's f-strings instead of s.format(**locals()) (#6448)
* Use py3's f-strings instead of s.format(**locals())

In light of the bug reported here
https://github.com/apache/incubator-superset/issues/6347, which seems
like an odd `.format()` issue in py3, I greped and replaced all
instances of `.format(**locals())` using py3's f-strings

* lint

* fix tests
2018-12-02 13:50:49 -08:00
Marek Šuppa
002518ba49 Update sqllab.rst (#6469)
* Set correct link to the Celery Project
2018-12-01 09:34:49 -08:00
Grace Guo
8e14e0bd67 allow domain sharding in frontend (#5039) 2018-11-30 10:30:04 -08:00
Krist Wongsuphasawat
20e1ac6242 Update @superset-ui/colors (#6464)
* Update package version and update breaking changes for color

* update color function usage

* update dependency
2018-11-30 09:50:42 -08:00
Chris Williams
5f7817a6a3 [SIP-5] Build metrics in query_object in the client (#6423)
* [SIP-5] Build metrics in query_object in the client
- Unify the metric interface (absorb the current plain string metric for built-in metric keys into the format used by adhoc metric)
- Port the logic in adhocMetric on the client and process_metrics in the backend to the new typed Metrics class
- Omit hasCustomLabel and formFromData properties from the new metric interface as their value can be inferred from label and optionName
- Expose from the Metrics class both metrics and their labels as public methods to match the all_metrics and metric_labels fields in the backend code
- Provide defaut values for filters, metrics and groupby in the backend

* addressing PR comments

* Adding a comment for metrictype values
2018-11-29 20:57:55 -08:00
michellethomas
5261d8a9fe Fixing error when clearing big number (#6465) 2018-11-29 18:52:49 -08:00
Krist Wongsuphasawat
e715cdb9ac [READY] Update SuperChart onRenderXXX listeners (#6376)
* Revise LoadableRenderer (+3 squashed commits)
Squashed commits:
[f1614c7c] extract createLoadableRenderer into a separate function
[8689bc94] extend LoadableRenderer
[3d04ff2b] remove skipRendering

* add number of times function was called to the test
2018-11-29 11:09:08 -08:00
Christine Chambers
e06f87304c Adding a comment for metrictype values 2018-11-29 13:31:22 -05:00
Christine Chambers
a4597afee0 addressing PR comments 2018-11-28 19:39:18 -05:00
Christine Chambers
c11e9c8b67 [SIP-5] Build metrics in query_object in the client
- Unify the metric interface (absorb the current plain string metric for built-in metric keys into the format used by adhoc metric)
- Port the logic in adhocMetric on the client and process_metrics in the backend to the new typed Metrics class
- Omit hasCustomLabel and formFromData properties from the new metric interface as their value can be inferred from label and optionName
- Expose from the Metrics class both metrics and their labels as public methods to match the all_metrics and metric_labels fields in the backend code
- Provide defaut values for filters, metrics and groupby in the backend
2018-11-28 19:39:18 -05:00
Junda Yang
2731a010ca fix metadata cache bug (#6458) 2018-11-28 15:15:28 -08:00
Junda Yang
f1cae2ecdd override get_view_names in PrestoEngineSpec (#6459)
* override get_view_names in PrestoEngineSpec

* add test

* flake 8

* flake 8
2018-11-28 15:13:38 -08:00
Ville Brofeldt
4579b12732 Ensure that dttm is of same timezone as epoch_with_tz (#6453) 2018-11-27 21:59:23 -08:00
aboganas
71a713dcec replace missing round function in d3 to fix MapBox (#6444)
* replace missing round function in d3

* added unit test

* fixed linting
2018-11-27 21:34:27 -08:00
Maxime Beauchemin
2931baa294 Deprecate database attribute allow_run_sync (#4961)
* Deprecate database attribute allow_run_sync

There's really 2 modes of operations in SQL Lab, sync or async
though currently there are 2 boolean flags: allow_run_sync and
allow_run_async, leading to 4 potential combinations, only 2 of which
actually makes sense.

The original vision is that we'd expose the choice to users and they
would decide which `Run` or `Run Async` button to hit.
Later on we decided to have a
single button and for each database to be either sync or async.

This PR cleans up allow_run_sync by removing references to it.

* Fix build

* Add db migration

* using batch_op
2018-11-27 21:08:44 -08:00
aboganas
529cb5cab1 fix Calendar Heatmap (#6445)
* fix  D3 v4.0, selections are not arrays anymore

* added vale checking

* fixed linting

* cleanup
2018-11-27 20:54:25 -08:00
aboganas
b0a55743b3 fix sunburst breadcrumbs (#6451) 2018-11-27 16:54:10 -08:00
Fokko Driesprong
8a8e840819 Rename Druid to Apache Druid (Incubating) (#6419) 2018-11-27 11:59:10 -08:00
Hugh A. Miles II
52bb92d0d4 [Docs] Make sure venv is py3 and export app (#6401)
* Update CONTRIBUTING.md

* Update CONTRIBUTING.md

* Update CONTRIBUTING.md

* Update CONTRIBUTING.md
2018-11-27 11:41:50 -08:00
Victor Noël
02aa3c6395 Improve development experience with Docker (#5966)
- Improve Docker image
  - smaller
  - faster to build
  - deterministict dependencies (see #5958)
- Rework process to simplify setting things up
  - updated documentation
  - less commands to type
  - no files to move and modify
  - optional loading of samples
- Still working in standalone mode (without volumes for superset)
2018-11-27 11:19:55 -08:00
Grace Guo
3e4742fa7b [fix] edit chart title cause JS error (#6438) 2018-11-27 10:36:56 -08:00
Jiaji Zhou
1eb0d0d835 Remove coordinator in Druid Cluster config (#5164) (#6443) 2018-11-27 09:41:16 -08:00
pavitranrambo
2b2c650040 Grammatical Error (#6439) 2018-11-26 23:22:05 -08:00
Grace Guo
2489876bc9 [logging] Add render failure error into log (#6422) 2018-11-26 11:51:25 -08:00
Craig Rueda
5ca8c0ba3c Updated local dev instructions to include missing step (#6428) 2018-11-26 11:16:58 -08:00
Krist Wongsuphasawat
3c6e882d28 [bugfix] Display raw value in addition to ERROR (#6417)
* Display raw value in addition to ERROR

* update unit test
2018-11-26 10:44:42 -08:00
zhaoyu89730105
7eb46843cb FixBug sqlMetricModels No attribute get_perm (#6433) 2018-11-26 09:08:54 -08:00
Christian Jauvin
0b830ced93 Fix French typos (#6435) 2018-11-26 09:07:37 -08:00
Maxime Beauchemin
9dffe3abb0 Link to the ASF's code of conduct (#6406) 2018-11-25 08:46:37 -08:00
Krist Wongsuphasawat
2916c48567 use same xaxis formatter for line chart tooltip (#6412) 2018-11-20 17:35:13 -08:00
timifasubaa
91b758f3bc Reduce data loaded before loading tests (#6298)
* reduce data loaded before loading tests

* make cypress only load needed tests
2018-11-19 15:27:25 -08:00
Evans Hauser
a6f013270d Update README.md (#6410) 2018-11-19 14:04:57 -08:00
Maxime Beauchemin
8155f4bf30 [bugfix] deckgl legend is not interactive (#6365)
* [bugfix] deckgl legend is not interactive

Somehow when clicking categories in the legend, nothing happened. The
problem seemed to be around the `getDerivedStateFromProps` override
which gets triggered after each render and would alter the state and
reset the categories state to their origin.

Changed the method name to not be an override and just be called once
in the constructor

https://reactjs.org/docs/react-component.html#static-getderivedstatefromprops

* lint
2018-11-19 14:02:07 -08:00
Maxime Beauchemin
4c4b6c41a1 Minor improvements to Histogram viz (#6391)
* Minor improvements to Histogram viz

* prevent legend overflow (spill) by simply hiding it
* legend title only includes metric name when necessary
* control validator asking forcing at least one numeric column to be
selected

* Removing print()
2018-11-19 14:01:20 -08:00
michellethomas
d1a3ba85dd Adding cypress tests for showing errors, time range filter, and verbose name (#6407)
* Adding cypress tests for showing erros, time range filter, and verbose name

* Adding tests for time range without ago

* Adding test to verify error message showing
2018-11-19 11:29:46 -08:00
Andy
8f3d911149 'Fligth' filename typo (#6364)
* renamed the raw data to correct typo

* renamed flight data ref to correct typo
2018-11-18 15:26:30 -05:00
Yongjie Zhao
5913c27830 Expose Sqllab status in databases list view (#6388) 2018-11-16 21:00:58 -08:00
Grace Guo
e469086d61 [fix] view results in sql lab (#6405) 2018-11-16 20:58:05 -08:00
Maxime Beauchemin
8177fa17fa [bugfix] deck.gl grid&hex don't respond to zoom&drag (#6363)
* [bugfix] deck.gl grid&hex don't respond to zoom&drag

Following recent changes, Hex & Grid component wouldn't respond to
viewport interactions. This fixes the issue.

This PR also greatly improve rendering performance by only recomputing
the deck.gl layers when needed, as opposed to every time the viewport
changes, which is very inneficient.

Note that most other deck.gl layers seem to be systematically
recomputing layers, we'll have to fix this in another PR.

* Addressing comments
2018-11-16 17:12:19 -08:00
Maxime Beauchemin
4c94447635 Fix adhoc metrics in Polygon (#6399)
* Fix adhoc metrics in Polygon

* Addressing comments
2018-11-16 17:06:21 -08:00
Christine Chambers
8b2cae007d [SIP-5] QueryBuilder in the client for granularity and groupby in word cloud (#6377)
* [SIP-5] QueryBuilder in the client for groupby field

- Lay the structure of the QueryContext builder in the client
- QueryContext builder composes different portions of the queryContext object (to be sent to server from the client) from the datasourceBuilder and the queryObjectBuilder.
- The datasourceBuilder builds the datasource id and type by parsing them from the datasource field in formdata
- The queryObjectBuilder currently only builds the groupby field. It will further compose the queryObject from sub query builders in future PRs.
- Create a buildQuery method for WordCloud and override the groupby value with the value of series from formdata.

* Addressing PR comments
- Rename query builder files and their default exports
- Move tests into spec/javascripts/superset-ui for easy mass migration to superset-uiin the future
- Define viz specific formData and export formData for each viz type as intersection type of the generic formData and the viz specific one
- Specify the type signature for sqla and druid based data sources

* Addressing additional PR comments.
- Introduce a Datasource class and leverage Typescript's declaration merging of the interface
by the same name.
- Let Typescript infer the return type of various builders instead of specifying them explicitly

* Further tweaking the generic buildQueryContext method and viz speicific buildQuery methodes per PR comments.

* git mv a renamed file.

* addressing additional pr comments
2018-11-16 15:51:50 -08:00
Grace Guo
c42bcf81bc [migration]clean up __from and __to parameters in dashboard json_metadata (#6378) 2018-11-16 11:03:22 -08:00
Jeffrey Wang
8c4f723a61 Set default limit on creation of new qe and on run (#6400) 2018-11-15 15:38:51 -08:00
timifasubaa
c17de3940c Split cypress tests (#6241)
* aplit cypress tests

* split into three
2018-11-15 12:26:33 -08:00
Grace Guo
ec1316a5a8 [fix] JS error after delete row level tab (#6393) 2018-11-15 10:30:08 -08:00
Kengo Seki
e66b0469b4 Add Japan country map (#6368)
* Add Japan country map

* Fix obsolete paths in the document about adding new country map
2018-11-14 18:46:57 -08:00
Maxime Beauchemin
d6953210b8 Disable flaky cypress SQL Lab test (#6302)
* Disable flaky cypress SQL Lab test

* lint
2018-11-14 18:21:55 -08:00
Kengo Seki
a5b528c688 Update the installation document based on Python 3.6+ (#6370)
* Update the description based on Ubuntu 16.04 with 18.04,
  since Python version bundled with the former is 3.5,
  which is not already supported

* Remove obsolete descriptions based on Python <= 3.5
2018-11-14 18:14:11 -08:00
Maxime Beauchemin
4690563d40 [bugfix] prevent d3-format from raising (#6386)
Since https://github.com/apache/incubator-superset/pull/6287 and
effectively moving to a new version of d3, d3-format and d3-time-format
raises when receiving invalid input strings.

This code wraps the potential issues inside `try` blocks that will
effectively return an `ERROR` string as output to the formatting
function.
2018-11-14 11:22:06 -08:00
Krist Wongsuphasawat
cb556688ec do not convert value to lowercase when looking up color (#6384) 2018-11-13 13:44:43 -08:00
timifasubaa
d9a7d565a0 remove user params (#6345) 2018-11-13 09:27:08 -08:00
Conglei
8e2d28dd6e Fixed the cache issue for BigNumber (#6375)
* fixed the cache issue for bignumber

* fixed
2018-11-12 12:57:46 -08:00
Maxime Beauchemin
e0b3927ece [bugfix] visualization flickers when rerunning query (#6374)
When hitting the Query button in the explore view, the previous chart
gets shown (flaskhed quickly) between the moment where the loading
spinner goes away and the new chart show up. This fix seems to prevent
this.
2018-11-12 10:49:27 -08:00
James Finucane
b44c8349ee [bugfix] EventFlow does not display (#6367)
* Fix EventFlow transform is not a function

transformProps was being passed into EventFlowChartPlugin as object (module) as opposed to function. This commit changes the implementation to be consistent with the other ChartPlugins and fixes the typeError that causes EventFlow Chart to not display.

* Revert to lazy-loading transformProps

- Revert to lazy-loading transformProps
- Fix in Superchart will default to transformProps.default if available to allow for the lazy-loading

* Fix for lazy-loaded imports in ChartPlugins

* Fix lint error
2018-11-12 10:41:21 -08:00
John Bodley
0873abde12 [404] Aborting for views with invalid dashboard/slice IDs (#6355) 2018-11-12 10:08:20 -08:00
John Bodley
74f0817bf0 [hive] Fixing where lastest partition logic (#6357) 2018-11-12 10:07:38 -08:00
Grace Guo
1a5ca35a55 [cypress] Test dashboard save/save_as functions (#6361) 2018-11-11 21:57:23 -08:00
Krist Wongsuphasawat
a7b52da6ce [reviewable] Integrate @superset-ui/{core,color,chart} modules (#6234)
* Add d3 micro packages

* Replace d3 imports with specific modules import

* Define d3 colors

* import specific d3 submodules instead of entire d3

* update function name

* move function location and fix small bug

* Move primary color to control

* remove colorscalefactory usage

* remove unused d3

* fix unit test

* fix color picker

* use @superset-ui/color

* update package version

* remove files that are extracted

* replace all references

* fix two files

* Revert some changes to split to another PR

* remove adaptor

* Address Christine's comment

* remove d3 v3 from calendar

* remove d3.scale.threshold

* Get rid of colorScalerFactory and revise hexToRGB

* fix color cleaning

* fix lint
2018-11-11 10:07:05 -08:00
Maxime Beauchemin
841d5e6338 [nvd3] refactor margins (#6282) 2018-11-10 15:56:20 -08:00
Christine Chambers
81349df625 Parse datasource_id as integer on the server side (#6359)
- Datasource ids are being serialized into strings on the client side and python's default json.load doesn't deserialize strings representing integers as integers. Adding an integer parsing step when initializing QueryContext.
2018-11-10 15:45:03 -08:00
Krist Wongsuphasawat
3ffb48c492 [reviewable] Organize d3 utilities usage (#6287)
* update package.json

* extract changes from another PR

* add d3 prefix

* two more places

* update lockfile
2018-11-09 11:42:54 -08:00
Chris Williams
8bf9a5b9a3 [dashboard] fix save/save-as flow (#6350)
* [dashboard] fix save/save-as flow

* [bugfix][dashboard] consistent response type for save/save-as
2018-11-09 11:15:42 -08:00
Krist Wongsuphasawat
5a3773223d change to camelcase (#6354) 2018-11-09 11:06:30 -08:00
Brayan Arrieta
04865f0280 Update docker-entrypoint.sh (#6346)
Previously in the issue #6289 change the port for docker, but the port must be changed also in the entrypoint for docker
2018-11-08 23:08:05 -08:00
Chris Williams
62dcce890c [bugfix] don't parse save dashboard response (#6349)
* [bugfix] don't parse save dashboard response

* [dashboard] remove bracket in error message
2018-11-08 19:27:22 -08:00
Krist Wongsuphasawat
3d7752600b [reviewable] [refactor] Split visTypes into one file for each visualization type (#6290)
* extract two files

* pass linting

* rename variables

* rename file

* fix lint

* Rename controlPanelConfigs.js to controlPanels/index.js

* use specific imports
2018-11-08 12:50:39 -08:00
Maxime Beauchemin
4934605043 Make stacktraces available in many more cases (#6299)
* Wrap <LoadableRenderer /> with <ErrorBoundary />

It appears that since the introduction of <SuperChart />, errors in the
visualization javascript (which are somewhat common and expected,
especially as we'll support plugins) were not handled and the whole
page would throw and go missing.

Here I'm introducing a new <ErrorBoundary /> component that elegantly
wraps other
components and handles errors. It's inspired by:
https://reactjs.org/docs/error-boundaries.html

The default behavior of the component is to simply surface the error
as an <Alert bsStyle="danger" /> and exposes the React stacktrace
when clicking on the error.

It's also possible to use component and pass an onError handler and not
show the default message.

This also fixes some minor bugs in TimeTable.

* Addressing comments

* Getting more stack traces

* Adressing comments
2018-11-08 09:38:10 -08:00
Antonin Kral
1fcfda4fdc Add Showmax among users (#6308)
Would like to add Showmax as a user of Superset.
2018-11-08 08:13:16 -08:00
Maxime Beauchemin
2607d0a6a0 [fix warning] Warning: Failed prop type: Invalid prop bsSize of value md (#6293) 2018-11-07 23:12:32 -08:00
Irfan Faizullabhoy
70327ca42c Docker Demo, Port Change (#6289)
If you follow the documentation, the current docker instructions return an error when trying to connect via localhost. This seems to be due to the fact that it's running on port 8080, but forwarding port 8088. I suppose the cleaner solution is to do this, as opposed to changing both the compose file and the instructions... Hope this helps!!
2018-11-07 21:28:04 -08:00
Grace Guo
ede5c710ed [annotation] Only allow override whole time_range (#6286) 2018-11-07 19:26:06 -08:00
timifasubaa
77845ab081 add logging to csv upload (#6297) 2018-11-07 18:40:07 -08:00
Christine Chambers
8c0551ed46 [SIP-5] Open a new /api/v1/query endpoint that takes query_obj (#6220)
* [SIP-5] Open a new /api/v1/query endpoint that takes query_obj

- Introduce a new handle_superset_exception decorator to avoid repeating the logic for catching SupersetExceptions
- Create a query_obj_backfill method that takes form_data and constructs a query_obj that will be constructed in the client in the future. Use the backfill in explore_json.
- Create a new /api/v1/query endpoint that takes query_obj only and returns the payload data. Note the query_obj is constructed in the client. The endpoint currently only handles query_obj for table view viz (we'll be adding support to new viz types as we go).
- Unit test to verify the new endpoint for table view

* fix tests and lint errors

* - Move the new query endpoint into its own api.py view.
- Create QueryObject and QueryContext class to encapsulate query_object to be built from the client and additional info (e.g. datasource) needed to get the data payload for a given query
- Remove the query_obj_backfill as we'll start building the first query_object on the client so it no longer makes sense to have a short-lived backfill for the matter of days.

* Fixing lint and test errors

* Fixing additional lint error from the previous rebase.

* fixing additional lint error

* addressing additional pr comments

* Make /query accept a list of queries in the query_context object.

* fixing a lint error

* - Move time_shift based calculation and since, until check into util
- Add typing info for get_since_until
- Add new unit tests to verify time_shift calculation and the since until check
2018-11-07 17:23:52 -08:00
Maxime Beauchemin
4ce475f287 Wrap <LoadableRenderer /> with <ErrorBoundary /> (#6294)
* Wrap <LoadableRenderer /> with <ErrorBoundary />

It appears that since the introduction of <SuperChart />, errors in the
visualization javascript (which are somewhat common and expected,
especially as we'll support plugins) were not handled and the whole
page would throw and go missing.

Here I'm introducing a new <ErrorBoundary /> component that elegantly
wraps other
components and handles errors. It's inspired by:
https://reactjs.org/docs/error-boundaries.html

The default behavior of the component is to simply surface the error
as an <Alert bsStyle="danger" /> and exposes the React stacktrace
when clicking on the error.

It's also possible to use component and pass an onError handler and not
show the default message.

This also fixes some minor bugs in TimeTable.

* Addressing comments
2018-11-07 17:11:52 -08:00
Beto Dealmeida
a57603adb4 Geoviz state management fix (#6260)
* Fix deckgl getPoints

* Fix CSS

* Fix zoom

* Fix CategoricalDeckGLContainer

* Fix cypress
2018-11-07 16:51:22 -08:00
Jeffrey Wang
0584e3629f Add separate limit setting for SqlLab (#4941)
* Add separate limit setting for SqlLab

Use separate param for wrap sql

Get query limit from config

unit tests for limit control rendering in sql editor

py unit test

pg tests

Add max rows limit

Remove concept of infinity, always require defined limits

consistency

Assert on validation errors instead of tooltip

fix unit tests

attempt persist state

pr comments and linting

* load configs in via common param

* default to 1k
2018-11-07 15:57:44 -08:00
Maxime Beauchemin
aed774e18b [bugfix] handle Loading spinner properly (#6292)
Addressing post-merge comments in
https://github.com/apache/incubator-superset/pull/6283
2018-11-07 13:04:17 -08:00
Grace Guo
69e8df404d sql lab localStorage config (#6257) 2018-11-06 23:12:32 -08:00
Maxime Beauchemin
1a4199af7a [bugfix] deckgl scatter CategoricalDeckGLContainer (#6288) 2018-11-06 17:13:55 -08:00
michellethomas
cd05d44340 Avoid clearing metric when saving from datasource editor (#6277) 2018-11-06 13:23:55 -08:00
Maxime Beauchemin
a1d867cf2f [dashboard] fix spinners disapear too early (#6283)
Recently I noticed that loading spinners on dashboards would disappear
too early.
2018-11-06 08:51:36 -08:00
Maxime Beauchemin
c653ab1e9b Fix Infinity css warning (#6280) 2018-11-05 22:39:42 -08:00
Krist Wongsuphasawat
124c55c117 rename @superset-ui/core to @superset-ui/connection (#6274) 2018-11-05 18:28:38 -08:00
michellethomas
c7f8abc6c5 Adding backwards compatable check to add ago to since if it doesn't exist (#6269) 2018-11-05 16:30:04 -08:00
Chris Williams
7fe8e8aff2 [superset-client] getClientErrorObject for everyone (#6276) 2018-11-05 14:26:22 -08:00
Krist Wongsuphasawat
7373be7163 Add chart names translation (#6273)
* add translation for chart names

* add translation for all chart names

* add missing translation
2018-11-05 12:47:32 -08:00
Jeffrey Wang
a1e408a299 Fix typo in druid granularity (#6229) 2018-11-05 11:47:18 -08:00
Maxime Beauchemin
08cdb09714 [explore] raise attention to row_limit being reached (#6252)
* [explore] raise attention to row_limit being reached

* fix test
2018-11-05 08:31:44 -08:00
达斯特兰斯
fb13218472 Dockerfile change because error: E: The method driver /usr/lib/apt/methods/https… (#6258)
* change because error: E: The method driver /usr/lib/apt/methods/https could not be found.
 要提交的变更:
	修改:     contrib/docker/Dockerfile

* 	修改:     contrib/docker/Dockerfile
2018-11-02 18:10:45 -07:00
Joe Bordes
c041b6673e i18n(es) (#6270) 2018-11-02 18:00:49 -07:00
Joe Bordes
8dbc20b60a I18n es002 (#6208)
* i18n(es) gtranslator formatting

* i18n(es)

* i18n(es) changes suggested by gettext lint tools
2018-11-02 08:23:34 -07:00
mlboy
3115eec892 Externally Visible Server (#6264)
* Externally Visible Server

Usually, app in docker need to be tested in host

* Update docker-entrypoint.sh
2018-11-02 08:21:57 -07:00
Krist Wongsuphasawat
da24b0e0d7 Remove label and showOnExplore. Specific import validators (#6261) 2018-11-01 14:08:15 -07:00
Grace Guo
7d8e3219fc [Fix] merge since,until request parameter with time_range (#6251) 2018-11-01 12:40:56 -07:00
Krist Wongsuphasawat
02f0616025 Make VizTypeControl use metadata from plugin (#6235)
* Render vis type item using information from registry

* adjust style

* fix unit test

* Remove large thumbnails

* Update addSlice
2018-11-01 11:39:24 -07:00
Beto Dealmeida
d1cbb0d000 Update CONTRIBUTING.md (#6259) 2018-11-01 11:19:35 -07:00
michellethomas
2fd18eede7 Setting line chart row_limit to 50000 (#6244)
Setting default row_limit to 50K for line chart
2018-11-01 11:01:13 -07:00
michellethomas
d34217ef97 Dashboard filter box default (#6236)
* Setting default FilterBox date filter to No Filter

* Adding test for FilterBox
2018-11-01 09:43:04 -07:00
Junda Yang
59109f62b4 revert the change in config.py (#6255) 2018-10-31 17:56:59 -07:00
Maxime Beauchemin
e46ab4db52 Bump Flask, bleach and sync pip-compile (#6239)
* sync pip-compile

* Support Flask >= 1.0.0

* pylint

* Trying something else to fix pylint
2018-10-31 16:58:50 -07:00
Maxime Beauchemin
7b3095d6ff Fix examples charts/dashboards and refactor (#5881)
* Fix examples charts/dashboards and refactor

* pylinting

* Fix pylint

* Lint the refactor

* Rebased
2018-10-31 15:29:04 -07:00
Rakshit Kumar
9710369d52 Fixed grammatical errors. (#6246)
* Fixed grammatical errors.

* Update druid.rst
2018-10-31 13:32:25 -07:00
Rakshit Kumar
bfec5916ed Fixed grammatical errors. (#6245) 2018-10-31 13:31:48 -07:00
Rakshit Kumar
6d0069230c Fixed grammatical errors (#6247) 2018-10-31 13:31:35 -07:00
Rakshit Kumar
bc8c8a2168 Fixed typos and grammatical errors (#6248) 2018-10-31 13:31:11 -07:00
Rakshit Kumar
db93dca947 fixed grammatical errors and typos (#6249) 2018-10-31 13:30:15 -07:00
Rakshit Kumar
0a701d6115 Corrected name of an area and fixed major grammatical errors (#6250) 2018-10-31 13:29:36 -07:00
Junda Yang
c552c125d7 Move metadata cache one layer up (#6153)
* Update wording

* nit update for api endpoint url

* move metadata cache one layer up

* refactor cache

* fix flake8 and DatabaseTablesAsync

* nit

* remove logging for cache

* only fetch for all tables that allows cross schema fetch

* default allow_multi_schema_metadata_fetch to False

* address comments

* remove unused defaultdict

* flake 8
2018-10-31 13:23:26 -07:00
Maxime Beauchemin
af38d254f0 [bugfix] cannot add options to FilterBox (#6231)
* [bugfix] cannot add options to FilterBox

* addressing comments
2018-10-30 21:59:57 -07:00
Maxime Beauchemin
2ad8e2ee2b [sql lab] improve placeholder strings for query search form (#6228) 2018-10-30 21:29:43 -07:00
mlboy
2d4a1ab68a fix misstake (#6237) 2018-10-30 21:28:50 -07:00
John Bodley
1190ebb1a8 [datasource] Ensure SQL Lab link opens in a new tab (#6195) 2018-10-30 17:06:27 -07:00
Krist Wongsuphasawat
1473e2cced Integrate translation module @superset-ui/translation (#6222)
* add translation modules

* Update package.json

* Update instructions in CONTRIBUTING

* Remove old files

* Add new entry point "translation"

* Change imports

* move setupTranslation code

* remove translation from entry

* Update python template

* Refactor utils into smaller, independent files

* Define preamble

* working state

* combine toggleCheckbox with setupApp

* move code block out of document.ready

* move setupClient to preamble

* fix unit tests

* update package version

* delete deletion code
2018-10-30 14:51:44 -07:00
michellethomas
1c4b3e999b Fix time range filter dropdown (#6223)
* Fix date filter control dropdown default state

* Keep track of selected tab
2018-10-30 14:22:40 -07:00
Grace Guo
1fbdd24820 [fix] typo until (#6233) 2018-10-30 14:22:03 -07:00
达斯特兰斯
e1a3a680f4 fix bug : docker build error with no permission with this floder (#6226)
要提交的变更:
	修改:     contrib/docker/Dockerfile
2018-10-30 10:29:38 -07:00
Maxime Beauchemin
0f6b39a6f7 A few setup.py improvements, removing future lib (#6219) 2018-10-29 21:22:25 -07:00
Grace Guo
7d6a4291e1 [fix][Annotation] Fix override since/until for annotation (#6221) 2018-10-29 15:43:01 -07:00
Sumedh Sakdeo
71d6ff40d0 partition and clustering bigquery keys (#6212)
* partition and clustering bigquery keys

* flake8
2018-10-29 11:23:21 -07:00
Maxime Beauchemin
acb44165b4 [deck] allow an array of dynamic of aggregations (#6198)
* [deck] allow an array of dynamic of aggregations

* Adding quantiles

* lint & tests
2018-10-29 11:08:22 -07:00
Maxime Beauchemin
7db11d95b0 [setup.py] allow for range on boto library (#6071) 2018-10-29 11:05:35 -07:00
Maxime Beauchemin
81fc3dfbee [build] fix pip install issues on OSX High Sierra (#6201)
* [build] fix pip install issues on OSX High Sierra

I think requirements.txt was out-of-sync as well.

Also had to:
export
  LDFLAGS="-L/usr/local/opt/openssl/lib"
export
  CPPFLAGS="-I/usr/local/opt/openssl/include"
export
  PKG_CONFIG_PATH="/usr/local/opt/openssl/lib/pkgconfig"

* Fix click
2018-10-29 10:33:51 -07:00
Maxime Beauchemin
5403f31007 [explore] Include "Autocomplete Query Predicate" field to Table Editor (#6171)
* Improvements around filters

* Adding simple test
2018-10-29 10:33:03 -07:00
Joe Bordes
d6908eef49 i18n(App) syntax errors detected by Grammarly while translating (#6209) 2018-10-29 09:42:42 -07:00
superkd37
735499cb53 Update ISSUE_TEMPLATE.md (#6210) 2018-10-29 09:41:32 -07:00
Grace Guo
87161a6d5d [fix] hide annotation layer (#6204) 2018-10-26 17:12:30 -07:00
Grace Guo
dcf048c52e [fix] should set chartUpdateEndTime when chart fetch failed or stopped (#6205) 2018-10-26 15:00:03 -07:00
Krist Wongsuphasawat
5c02e3199b Implement SuperChart and enable the chart plugins (#6154)
* setup plugin and add SuperChart

* Integrate SuperChart into Chart.jsx

* Add vizType as class name

* Remove .slice_container

* add snakeCase to sanitize class name

* Remove old code to load charts

* Fix supportedAnnotationTypes

* Update AnnotationTypes, remove unnecessary imports and dependency from VIZ_TYPES

* remove index.js and update unit test

* resolve tree map issue

* fix issue with annotation types

* fix proptypes

* add )

* address a few comments

* create bound functions

* bound more functions

* add reselect

* use reselect for chartprops

* improve performance with reselect

* remove unused props

* Remove getFilters() and update table test

* Remove unused code

* Delete adaptors

* switch to react-loadable

* Rewrite with reloadable

* Add timeout back

* remove loading

* update table unit test

* remove pastDelay
2018-10-26 11:38:30 -07:00
Max Goodridge
9580103c22 Fix typo in load-examples command (#6193) 2018-10-25 20:47:43 -07:00
Nocturne
d57614f8ad Update docker-init.sh (#6167)
Fix typo of
```bash
superset load-examples
```
2018-10-25 20:20:05 -07:00
John Bodley
71db0736be [external-metadata] Fix unknown column types (#6196) 2018-10-25 18:56:24 -07:00
Junda Yang
a0479d57b2 fix sql lab permission issue (#6194) 2018-10-25 16:35:43 -07:00
John Bodley
bfbd83bdab [datasource-editor] Correcting tooltip (#6191) 2018-10-25 14:29:39 -07:00
Grace Guo
9c5fc42fee add error details into log (#6169) 2018-10-25 13:52:47 -07:00
Mike Rötgers
e21e6a7600 add get_data method to IFrameViz (#6185) 2018-10-25 12:03:33 -07:00
Chris Williams
e7e8e9d00d [dashboard][bugfix][save as] re-direct to copied dashboard upon saveas (#6189)
* [dashboard][bugfix][save as] re-direct to copied dashboard upon saveas

* [dashboard][save modal] safer destructuring

* [dashboard][save as] simplify Promise resolution

* [dashboard] simply fetch slices error
2018-10-25 11:44:05 -07:00
Krist Wongsuphasawat
ef8429cbf5 pass width and height (#6183) 2018-10-25 09:59:25 -07:00
Chris Williams
90809f6d39 [sqllab] more robust copy to clipboard (#6180)
* [sqllab] implement more robust share query button

* [sqllab] fix Hotkeys react warnings

* [CopyToClipboard] don't bind in render functions

* [explorer] fix short url button position

* [sqllab] remove share query item in tab dropdown menu

* [sqllab] reference new ShareSqlLabQuery component

* [sqllab][share query robustness] clean up

* [sqllab] fix tests

* [sqllab][share query] add unit tests
2018-10-24 19:41:32 -07:00
Beto Dealmeida
f1089c40a4 Improvements to the polygon spatial viz (#6178)
* WIP

* WIP

* WIP

* WIP

* Fix color bucketing

* Fixed colors

* Fix no num categories selected

* Colors working

* Fix no metric selected

* Visual cues for selection

* Add unit tests

* Remove jest from deps

* Rename category to bucket

* Small fixes

* Fix lint

* Fix unit tests

* Remove duplicate hexToRGB

* Fix import

* Change order of arguments in getBuckets

* Refactor function signature
2018-10-24 18:40:57 -07:00
Grace Guo
ca5be1c1e2 [fix] should allow force refresh when having charts under tab (#6181) 2018-10-24 15:34:36 -07:00
Maxime Beauchemin
9cb2dceeb5 Update CHANGELOG from 0.26 to 0.28.1 (#6139) 2018-10-24 14:38:11 -07:00
Chris Williams
60796da38c [superset-client][bugfix] fix stop query (#6179) 2018-10-24 14:03:43 -07:00
Grace Guo
6ec9e1a4e9 [Ready][Dashboard] disable force refresh when chart is still loading (#6034)
* [Dashboard] disable force refresh when chart is still loading

- disable force refresh for chart, when chart is still loading
- disable force refresh for dashboard, when any one of chart is loading

* remove css change (introduced by mistake)

* add integration tests for disable/enable force refresh
2018-10-24 10:21:23 -07:00
Abid Famasya
47b1a081ab Add TrustMedis to the userlist (#6117) 2018-10-23 22:49:51 -07:00
Christine Chambers
5f1eaa49f2 [SIP-9] Introduce TypeScript (#6120)
* [SIP-9] Introduce TypeScript

- Introduce TypeScript and co to both source and tests
- Define alias for src directory in both webpack config and jest config so we can avoid using long relative paths like ../../src in both source and tests
- Type check feature flags system to prevent typos of flag names
- Change the feature flags system and the flags on window instead of populating them through the state tree. When introducing the first SCOPED_FILTER feature flag, it became too difficult to pipe the flags through the state initializers and layers of components and containers (the resulting code is hard to read and has a handful of methods taking an additional feature flag map parameter). Given that feature flags don't change throughout the life time of the app, it is better to leave them on window for easy access than piping them through the global state tree, which is meant to store the state of the app which changes frequently.
- Add a barebone filter panel that only shows when the SCOPED_FILTER feature flag is on

* Remove unnecessary dev-dependency on gl

* - Adding linting for TypeScript files via tslint.
- Fixing linting for Javascript files importing Typscript files
- Also fix linting for Javascript files that now leverage the webpack alias for the src directory

- up Typescript and type def versions

* Rename src directory's webpack alias from @ to src to be more explicit.
2018-10-23 22:33:51 -07:00
Maxime Beauchemin
9e6b171ee9 Bump FAB to 1.12.1 (#6138) 2018-10-23 15:02:29 -07:00
Krist Wongsuphasawat
9595adb452 [bugfix] Fix language switch (#6166)
* Extract SupersetClient setup into a separate file and fix translation link

* sort'
2018-10-23 09:11:34 -07:00
Chris Williams
d8d50a168d [superset-client] use getClientErrorObject for client error handling (#6163)
* [superset-client] use getClientErrorObject for client error handling

* fix getClientErrorObject json parsing

* fix getClientErrorObject test typos

* kick build
2018-10-22 22:42:56 -07:00
Chris Williams
8573fdec12 [superset-client][logger] replace ajax with SupersetClient (#6133)
* [superset-client][logger] replace ajax with SupersetClient

* [superset-client][logger] don't parse log response
2018-10-22 22:42:23 -07:00
timifasubaa
fc3b68e234 [Sqllab] Add offline state to sqllab (#6013)
* add timeout and refresh for failed backend

* show offline state instead of refreshing

* add southpane tests
2018-10-22 18:36:07 -07:00
Krist Wongsuphasawat
b9257b2a09 [Refactor] Extend color scheme management to sequential schemes (#6150)
* refactor color scheme

* Update data structure

* Update color scheme files

* wip

* convert all sequential schemes

* Update how color schemes are managed. Extend it for sequential schemes

* extract color setup into separate file

* Update imports

* update imports

* Add new functions to Registry

* Update ColorSchemeManager to extends Registry and update unit tests

* Add test for Registry

* Rename ColorSchemeManager to ColorSchemeRegistry

* Fix unit tests

* Update API

* Fix imports

* Add label field

* Fix reference to colors

* update SequentialScheme contructor

* Fix controls

* rename manager to registry

* Split sequential schemes into multiple files

* update sequential color labels

* add values and valuesAsPromise()

* use .values()
2018-10-22 16:17:14 -07:00
Chris Williams
a71e6eb0a3 [superset-client] replace misc ajax calls (#6135)
* [superset-client][misc] replace ajax calls in DashboardTable, TableLoader, utils, common

* [superset-client][misc] replace ajax calls in AsyncSelect, HeaderActions, Deck.gl

* [superset-client][misc] fix tests

* [superset-client] remove unneeded functional setState calls

* [superset-client] make welcome a redux app for toasts

* [superset-client] make Profile a redux app for toasts

* [superset-client] TableLoader don't pass toast props to dom nodes

* tweak deckgl Multi syntax
2018-10-19 11:41:42 -07:00
Chris Williams
96228adda9 [superset-client][datasource editor] replace ajax with SupersetClient (#6134)
* [superset-client][datasource editor] replace ajax with SupersetClient

* [superset-client][datasource control] replace ajax with SupersetClient

* [superset-client][datasource editor] remove unused funcs in DatasourceControl

* [superset-client][data source control] lint, remove toasts

* [superset-client] fix DatasourceControl_spec

* [superset-client] remove unneeded functional setState calls
2018-10-19 11:41:11 -07:00
Krist Wongsuphasawat
546d150b91 Define chart presets (#6144)
* define chart presets

* remove dual line
2018-10-19 11:40:21 -07:00
Chris Williams
bc3a2efa0e [superset-client] pass csrfToken as configuration (#6148) 2018-10-18 20:11:43 -07:00
Krist Wongsuphasawat
fc3422eaeb add build query as part of plugin (#6146) 2018-10-18 18:39:34 -07:00
Krist Wongsuphasawat
bc4dfad6c8 fix bar chart value overlap with legend (#6145) 2018-10-18 18:00:42 -07:00
Krist Wongsuphasawat
04e5e87114 remove reactable from Hotkeys.jsx (#6143) 2018-10-18 18:00:03 -07:00
Krist Wongsuphasawat
9d01af201e Add annotation information to ChartMetadata (#6136)
* add annotations information to ChartMetadata

* rename fields
2018-10-18 17:59:30 -07:00
Krist Wongsuphasawat
d662e36442 [Ready] Define ChartProps data structure (#6125)
* rename basicChartInput to chartProps

* replace BasicChartInput with ChartProps class

* Add transformProps to deck.gl plugins

* Add space

* delete BasicChartInput

* add width and height as part of ChartProps and update transformProps

* remove width and height

* remove adaptors from deck.gl components

* remove deck.gl creataAdaptor
2018-10-18 15:44:21 -07:00
Krist Wongsuphasawat
4e2341a131 downgrade reactable and remove fastdom (#6142)
* downgrade reactable and remove fastdom

* remove caret
2018-10-18 14:09:01 -07:00
michellethomas
7d0a17aef5 Turning off flaky link tests (#6141) 2018-10-18 12:02:59 -07:00
Krist Wongsuphasawat
0aa6d90429 Remove isNumeric util function and use Number.isFinite instead (#6106)
* remove isNumeric util function and use lodash isFinite instead

* use native Number.isFinite
2018-10-18 11:24:43 -07:00
Krist Wongsuphasawat
58be31af3f change viewport dimension (#6123) 2018-10-18 11:22:43 -07:00
Chris Williams
e163dfe744 [SIP-4] replace SQL Lab ajax calls with SupersetClient (#5896)
* [superset-client] replace sqllab ajax calls with SupersetClient

* [superset-client][sqllab] replace more misc ajax calls

* [superset-client][tests] call setupSupersetClient() in test shim

* [superset-client] replace more sqllab ajax calls and fix tests

* [superset-client][tests] remove commented lines

* [sqllab][superset-client] fix eslint and tests, add better error handling tests.

* [superset-client] fix tests from rebase

* [cypress][sqllab][superset-client] fix

* [superset-client] use Promises not callbacks in getShortUrl calls

* [superset-client][short-url] don't stringify POST

* [superset-client][short-url][cypress] add data-test attribute for more reliable test

* [cypress] remove .only() call
2018-10-18 10:40:30 -07:00
Krist Wongsuphasawat
273991fd4e Use @vx/responsive to provide Chart width on Explore page (#6104)
* use parent size to compute width

* simplify this.width() and this.height()

* remove unnecessary jquery

* fix indent and import

* adjust headerheight from 100 to 80

* fix test
2018-10-16 22:18:35 -07:00
Maxime Beauchemin
bbfd69a138 [utils.py] gathering/refactoring into a "utils/" folder (#6095)
* [utils] gathering/refactoring into a "utils/" folder

Moving current utils.py into utils/core.py and moving other *util*
modules under this new "utils/" as well.

Following steps include eroding at "utils/core.py" and breaking it down
into smaller modules.

* Improve tests

* Make loading examples in scope for tests

* Remove test class attrs examples_loaded and requires_examples
2018-10-16 17:59:34 -07:00
Chris Williams
af0ffa44ab [SIP-4] replace explorer ajax calls with SupersetClient (#5869)
* [superset-client] initialize SupersetClient in app setup

* [core] replace explore ajax calls with SupersetClient

* [core] fix SupersetClient explore tests

* [core] remove _packages mistake directory

* remove unused files

* add yarn.lock

* always render modal

* [superset-client][jest] fix SaveModal_spec

* [lint] remove unnecessary AbortController global

* yarn.lock
2018-10-16 14:54:31 -07:00
Krist Wongsuphasawat
dcfbae1ab9 [SIP-5&6] Refactor line_multi (#6058)
* Rewrite line_multi

* move dir

* add chartplugin for line_multi

* rename var
2018-10-16 14:54:01 -07:00
Chris Williams
462c58ee67 [SIP-4] replace dashboard ajax calls with SupersetClient (#5854)
* [core] replace dashboard ajax calls with SupersetClient

* [core] fix SupersetClient dashboard tests

* [dashboard][superset-client] don't error by parsing save dashboard response as json
2018-10-16 13:42:22 -07:00
Junda Yang
177bed3bb6 allow cache and force refresh on table list (#6078)
* allow cache and force refresh on table list

* wording

* flake8

* javascript test

* address comments

* nit
2018-10-16 13:14:45 -07:00
michellethomas
7d49255926 This control test is flaky and affecting travis runs, turning it off for now (#6121) 2018-10-16 12:20:07 -07:00
Beto Dealmeida
b4a1983303 Fixes to the CategoricalDeckGLContainer and filter box (#6038)
* WIP

* WIP

* Fix time grain

* Fix autoformatting

* Fix more autoformatting

* Fix even more autoformatting

* Fix manual move of play slider

* Fix state management

* Revert change

* Fix screengrid

* Remove autozoom on render

* Remove unneeded code

* Zoom when mounted

* Fix lint
2018-10-16 12:08:37 -07:00
1343 changed files with 69716 additions and 28472 deletions

39
.dockerignore Normal file
View File

@@ -0,0 +1,39 @@
#
# 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.
#
**/__pycache__/
**/.mypy_cache
**/.pytest_cache
**/.tox
**/.vscode
**/.idea
**/.coverage
**/.DS_Store
**/.eggs
**/.python-version
**/*.egg-info
**/*.bak
**/*.db
**/*.pyc
**/*.sqllite
**/*.swp
tests/
docs/
install/
superset/assets/node_modules/
superset/assets/cypress/
superset/assets/coverage/

18
.flaskenv Normal file
View File

@@ -0,0 +1,18 @@
#
# 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.
#
FLASK_APP=superset:app
FLASK_ENV=development

38
.gitignore vendored
View File

@@ -1,8 +1,25 @@
#
# 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.
#
*.bak
*.db
*.pyc
*.sqllite
*.swp
.cache-loader
.coverage
.DS_Store
.eggs
@@ -44,9 +61,18 @@ yarn-error.log
venv
@eaDir/
# docker
/Dockerfile
/docker-build.sh
/docker-compose.yml
/docker-entrypoint.sh
/docker-init.sh
# Docker
./Dockerfile
./docker-build.sh
./docker-compose.yml
./docker-entrypoint.sh
./docker-init.sh
# Test data
celery_results.sqlite
celerybeat-schedule
celerydb.sqlite
celerybeat.pid
geckodriver.log
ghostdriver.log
testCSV.csv

View File

@@ -1,3 +1,19 @@
#
# 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.
#
[MASTER]
# Specify a configuration file.
@@ -99,7 +115,7 @@ evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / stateme
[BASIC]
# Good variable names which should always be accepted, separated by a comma
good-names=i,j,k,ex,Run,_,d,e,v,o,l,x,ts
good-names=i,j,k,ex,Run,_,d,e,v,o,l,x,ts,f
# Bad variable names which should always be refused, separated by a comma
bad-names=foo,bar,baz,toto,tutu,tata,d,fd
@@ -232,7 +248,7 @@ logging-modules=logging
[MISCELLANEOUS]
# List of note tags to take in consideration, separated by a comma.
notes=FIXME,XXX,TODO
notes=FIXME,XXX
[SIMILARITIES]

40
.rat-excludes Normal file
View File

@@ -0,0 +1,40 @@
.gitignore
.gitattributes
.coverage
.coveragerc
.codecov.yml
.eslintrc
.eslintignore
.flake8
.prettierrc
.rat-excludes
.*log
.*pyc
.*lock
.*geojson
DISCLAIMER
licenses/*
node_modules/*
rat-results.txt
babel-node
dist
build
superset.egg-info
apache_superset.egg-info
.idea
.*sql
.*zip
.*lock
# json and csv in general cannot have comments
.*json
.*csv
# Generated doc files
docs/_build/*
_build/*
_static/*
.buildinfo
searchindex.js
# auto generated
requirements.txt
# vendorized
vendor/*

View File

@@ -1,20 +1,44 @@
#
# 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.
#
cache:
pip: true
jobs:
include:
- language: python
python: 3.6
env: TOXENV=cypress
cache:
pip: true
yarn: true
directories:
- ~/.npm
- ~/.cache
env: TOXENV=cypress-dashboard
services:
- redis-server
before_install:
- nvm install 8.9
- nvm install 10.14.2
- language: python
python: 3.6
env: TOXENV=cypress-explore
services:
- redis-server
before_install:
- nvm install 10.14.2
- language: python
python: 3.6
env: TOXENV=cypress-sqllab
services:
- redis-server
before_install:
- nvm install 10.14.2
- language: python
python: 3.6
env: TOXENV=py36-mysql
@@ -25,17 +49,10 @@ jobs:
- mysql -u root -e "DROP DATABASE IF EXISTS superset; CREATE DATABASE superset DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci"
- mysql -u root -e "CREATE USER 'mysqluser'@'localhost' IDENTIFIED BY 'mysqluserpassword';"
- mysql -u root -e "GRANT ALL ON superset.* TO 'mysqluser'@'localhost';"
- language: node_js
node_js: 8.9
cache:
yarn: true
- language: python
env: TOXENV=javascript
before_install:
- cd superset/assets
install:
- yarn install --frozen-lockfile
script:
- npm run lint
- npm run cover
- nvm install 10.14.2
- language: python
python: 3.6
env: TOXENV=flake8
@@ -56,6 +73,15 @@ jobs:
- language: python
python: 3.6
env: TOXENV=pylint
- language: python
env:
- TOXENV=license-check
- TRAVIS_CACHE=$HOME/.travis_cache/
jdk:
- oraclejdk8
before_install:
- jdk_switcher use oraclejdk8
install:
- pip install --upgrade pip
- pip install codecov tox
@@ -63,3 +89,9 @@ script:
- tox
after_success:
- codecov
cache:
pip: true
directories:
- ~/.npm
- ~/.cache
- ~/.travis_cache/

View File

@@ -1,5 +1,435 @@
<!--
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.
-->
## Change Log
### 0.28.1 (2018/10/18 17:48 +00:00)
- Bump FAB to 1.18.1
### 0.28.0 (2018/10/17 ??:?? +00:00)
- [#5896](https://github.com/apache/incubator-superset/pull/5896) [SIP-4] replace SQL Lab ajax calls with `SupersetClient` (#5896) (@williaster)
- [#6104](https://github.com/apache/incubator-superset/pull/6104) Use @vx/responsive to provide Chart width on Explore page (#6104) (@kristw)
- [#6095](https://github.com/apache/incubator-superset/pull/6095) [utils.py] gathering/refactoring into a "utils/" folder (#6095) (@mistercrunch)
- [#5869](https://github.com/apache/incubator-superset/pull/5869) [SIP-4] replace explorer ajax calls with `SupersetClient` (#5869) (@williaster)
- [#6058](https://github.com/apache/incubator-superset/pull/6058) [SIP-5&6] Refactor line_multi (#6058) (@kristw)
- [#5854](https://github.com/apache/incubator-superset/pull/5854) [SIP-4] replace dashboard ajax calls with `SupersetClient` (#5854) (@williaster)
- [#6078](https://github.com/apache/incubator-superset/pull/6078) allow cache and force refresh on table list (#6078) (@youngyjd)
- [#6121](https://github.com/apache/incubator-superset/pull/6121) This control test is flaky and affecting travis runs, turning it off for now (#6121) (@michellethomas)
- [#6038](https://github.com/apache/incubator-superset/pull/6038) Fixes to the CategoricalDeckGLContainer and filter box (#6038) (@betodealmeida)
- [#6113](https://github.com/apache/incubator-superset/pull/6113) send username in sync request (#6113) (@youngyjd)
- [#5875](https://github.com/apache/incubator-superset/pull/5875) [SIP-4] replace chart ajax calls with `SupersetClient` (#5875) (@williaster)
- [#6079](https://github.com/apache/incubator-superset/pull/6079) [refactor] Migrate from Mocha+Chai to Jest (#6079) (@xtinec)
- [#6096](https://github.com/apache/incubator-superset/pull/6096) remove utf8 declaration (#6096) (@timifasubaa)
- [#6102](https://github.com/apache/incubator-superset/pull/6102) fix dependency issue #6086 (#6102) (@aflyhorse)
- [#6103](https://github.com/apache/incubator-superset/pull/6103) Rename onTooltip to setTooltip (#6103) (@kristw)
- [#6105](https://github.com/apache/incubator-superset/pull/6105) make BigNumber PureComponent (#6105) (@kristw)
- [#6097](https://github.com/apache/incubator-superset/pull/6097) Fix link formating in README.md (#6097) (@ad-m)
- [#6088](https://github.com/apache/incubator-superset/pull/6088) move countries directory under CountryMap (#6088) (@kristw)
- [#6065](https://github.com/apache/incubator-superset/pull/6065) remove future (#6065) (@timifasubaa)
- [#6091](https://github.com/apache/incubator-superset/pull/6091) remove six dependency (#6091) (@timifasubaa)
- [#6090](https://github.com/apache/incubator-superset/pull/6090) Add ChartPlugin and metadata for deck.gl vis (#6090) (@kristw)
- [#6085](https://github.com/apache/incubator-superset/pull/6085) Add ChartPlugin and metadata for nvd3 and BigNumber vis (#6085) (@kristw)
- [#6089](https://github.com/apache/incubator-superset/pull/6089) [cypress][sqllab] increase timeout for sqllab results (#6089) (@williaster)
- [#6039](https://github.com/apache/incubator-superset/pull/6039) [SIP-5] Remove references to slice from all deck.gl components. (#6039) (@kristw)
- [#6072](https://github.com/apache/incubator-superset/pull/6072) Create chart plugins and metadata (#6072) (@kristw)
- [#6063](https://github.com/apache/incubator-superset/pull/6063) remove future imports from db migrations (#6063) (@timifasubaa)
- [#6069](https://github.com/apache/incubator-superset/pull/6069) Cypress tests for controls and explore links (#6069) (@michellethomas)
- [#6074](https://github.com/apache/incubator-superset/pull/6074) Rename color constants and move util function into separate file (#6074) (@kristw)
- [#5998](https://github.com/apache/incubator-superset/pull/5998) Fix the horizon title only show the first key (#5998) (@Narcissus7)
- [#6050](https://github.com/apache/incubator-superset/pull/6050) remove future imports (#6050) (@timifasubaa)
- [#6073](https://github.com/apache/incubator-superset/pull/6073) Fix top groups with user defined metrics (#6073) (@betodealmeida)
- [#5974](https://github.com/apache/incubator-superset/pull/5974) [cypress] add SQL lab tests (#5974) (@williaster)
- [#6061](https://github.com/apache/incubator-superset/pull/6061) feat: import/export dashboards via cli (#6061) (@arpit-agarwal)
- [#6054](https://github.com/apache/incubator-superset/pull/6054) [setup] Using pip-tools to create requirements.txt (#6054) (@john-bodley)
- [#6062](https://github.com/apache/incubator-superset/pull/6062) Add increment back arrow to time player (#6062) (@betodealmeida)
- [#6028](https://github.com/apache/incubator-superset/pull/6028) Add data structures for chart plugin system (#6028) (@kristw)
- [#6002](https://github.com/apache/incubator-superset/pull/6002) [cypress] add integration tests for dashboard (#6002) (@graceguo-supercat)
- [#6037](https://github.com/apache/incubator-superset/pull/6037) [Dashboard] Fix margin issue in dashboard modal (#6037) (@graceguo-supercat)
- [#6004](https://github.com/apache/incubator-superset/pull/6004) check db extra and metadata params preemptively (#6004) (@youngyjd)
- [#5933](https://github.com/apache/incubator-superset/pull/5933) Allow user to force refresh metadata (#5933) (@youngyjd)
- [#6051](https://github.com/apache/incubator-superset/pull/6051) [select-star] Adding optional schema to view (#6051) (@john-bodley)
- [#6030](https://github.com/apache/incubator-superset/pull/6030) Upgrade flask-appbuilder to latest. (#6030) (@jmcarp)
- [#6056](https://github.com/apache/incubator-superset/pull/6056) Revert old precision formatters (#6056) (@theikkila)
- [#6043](https://github.com/apache/incubator-superset/pull/6043) Search queries when enter is pressed (#6043) (@betodealmeida)
- [#6047](https://github.com/apache/incubator-superset/pull/6047) fix for annotation layer bug (#6047) (@yuguang)
- [#6049](https://github.com/apache/incubator-superset/pull/6049) remove redundant mysql (#6049) (@timifasubaa)
- [#6023](https://github.com/apache/incubator-superset/pull/6023) [tablemodelview] Fixing JSON api/read serializable issue (#6023) (@john-bodley)
- [#5985](https://github.com/apache/incubator-superset/pull/5985) Deprecate support for Python 3_6 (#5985) (@mistercrunch)
- [#6031](https://github.com/apache/incubator-superset/pull/6031) refer to default color scheme in colorpickercontrol instead of pointing to specific scheme (#6031) (@kristw)
- [#6027](https://github.com/apache/incubator-superset/pull/6027) Sorting tables by "modified" is broken (#6027) (@betodealmeida)
- [#6016](https://github.com/apache/incubator-superset/pull/6016) [ci] Update ci config to reduce javascript test time and some of cypress. (#6016) (@kristw)
- [#6029](https://github.com/apache/incubator-superset/pull/6029) use world map only bundle (#6029) (@kristw)
- [#5997](https://github.com/apache/incubator-superset/pull/5997) [SIP-6] Migrate visualizations to new directory structure (part 2) (#5997) (@kristw)
- [#6035](https://github.com/apache/incubator-superset/pull/6035) Revert #5991 (#6035) (@graceguo-supercat)
- [#6033](https://github.com/apache/incubator-superset/pull/6033) log query fetch time (#6033) (@timifasubaa)
- [#5566](https://github.com/apache/incubator-superset/pull/5566) [bugfix] Fix Tableviz metrics column disorder (#5566) (@yamyamyuo)
- [#5924](https://github.com/apache/incubator-superset/pull/5924) [cypress] Add integration test for area, pie, pivot_table, world_map, dual_line, sunburst, sankey, big_number, bubble, box_plot, treemap (#5924) (@kristw)
- [#6006](https://github.com/apache/incubator-superset/pull/6006) [SIP-6] Migrate visualizations to new directory structure (part 3 - nvd3) (#6006) (@kristw)
- [#6019](https://github.com/apache/incubator-superset/pull/6019) [cypress] Combine multiple tests under visualizations into single test to save running time (#6019) (@kristw)
- [#5991](https://github.com/apache/incubator-superset/pull/5991) feat: import/export dashboards via cli (#5991) (@arpit-agarwal)
- [#5960](https://github.com/apache/incubator-superset/pull/5960) [feat] Feature flag system via config (#5960) (@xtinec)
- [#6005](https://github.com/apache/incubator-superset/pull/6005) Removing the key from cypress build and removing parallel flag (#6005) (@michellethomas)
- [#6008](https://github.com/apache/incubator-superset/pull/6008) disable dashboard test (#6008) (@kristw)
- [#5995](https://github.com/apache/incubator-superset/pull/5995) wait and verify one-by-one (#5995) (@kristw)
- [#5949](https://github.com/apache/incubator-superset/pull/5949) [SIP-6] Migrate visualizations to new directory structure. (#5949) (@kristw)
- [#5983](https://github.com/apache/incubator-superset/pull/5983) Update webpack bundle configuration (#5983) (@kristw)
- [#5957](https://github.com/apache/incubator-superset/pull/5957) [cypress] Update dashboard test to remove 10s timeout (#5957) (@kristw)
- [#5959](https://github.com/apache/incubator-superset/pull/5959) Explicit set markdown version to >= 3.0 (#5959) (@manhtai)
- [#5946](https://github.com/apache/incubator-superset/pull/5946) Remove lodash.throttle and replace underscore calls with lodash (#5946) (@kristw)
- [#5975](https://github.com/apache/incubator-superset/pull/5975) Pinning a version of click to fix travis (#5975) (@michellethomas)
- [#5970](https://github.com/apache/incubator-superset/pull/5970) Add fordeal to superset user list (#5970) (@Renkai)
- [#5967](https://github.com/apache/incubator-superset/pull/5967) Constrain the max version of markdown (#5967) (@victornoel)
- [#5937](https://github.com/apache/incubator-superset/pull/5937) Deprecate getColorFromSchem (#5937) (@kristw)
- [#5906](https://github.com/apache/incubator-superset/pull/5906) fix sqllab querysearch typeahead permission error (#5906) (@youngyjd)
- [#5934](https://github.com/apache/incubator-superset/pull/5934) ensure npm run build is in production mode (#5934) (@kristw)
- [#5952](https://github.com/apache/incubator-superset/pull/5952) [deck_polyline] show metric in geohash (#5952) (@mistercrunch)
- [#5948](https://github.com/apache/incubator-superset/pull/5948) [deck_polygon] implement null locations flag (#5948) (@mistercrunch)
- [#5931](https://github.com/apache/incubator-superset/pull/5931) [bugfix] metrics issue in 'Periodicity Pivot' (#5931) (@mistercrunch)
- [#5770](https://github.com/apache/incubator-superset/pull/5770) [explore] add "View samples" modal to action buttons (#5770) (@mistercrunch)
- [#5923](https://github.com/apache/incubator-superset/pull/5923) [docs] iterating to get to ASF compliance on project site (#5923) (@mistercrunch)
- [#5945](https://github.com/apache/incubator-superset/pull/5945) [eslint] add no-only-tests (#5945) (@williaster)
- [#5926](https://github.com/apache/incubator-superset/pull/5926) Adding configuration to cypress to enable dashboard (#5926) (@michellethomas)
- [#5787](https://github.com/apache/incubator-superset/pull/5787) Add schema level access control on csv upload (#5787) (@youngyjd)
- [#5848](https://github.com/apache/incubator-superset/pull/5848) fix sqlab progress bar and status inconsistency (#5848) (@youngyjd)
- [#5943](https://github.com/apache/incubator-superset/pull/5943) remove .only (#5943) (@kristw)
- [#5940](https://github.com/apache/incubator-superset/pull/5940) fix csv upload bugs (#5940) (@timifasubaa)
- [#5938](https://github.com/apache/incubator-superset/pull/5938) use es6 import (#5938) (@kristw)
- [#5790](https://github.com/apache/incubator-superset/pull/5790) Some linting (#5790) (@mistercrunch)
- [#5932](https://github.com/apache/incubator-superset/pull/5932) Allow removing legend (#5932) (@betodealmeida)
- [#5866](https://github.com/apache/incubator-superset/pull/5866) Fix regression around low row limit for CSV exports (#5866) (@mistercrunch)
- [#5911](https://github.com/apache/incubator-superset/pull/5911) Clean up CONTRIBUTING.md: (#5911) (@alekstorm)
- [#5893](https://github.com/apache/incubator-superset/pull/5893) [SIP-6] Add reactify function and convert world map to new directory structure. (#5893) (@kristw)
- [#5778](https://github.com/apache/incubator-superset/pull/5778) [explore flow] handling duplicated column aliases (#5778) (@mistercrunch)
- [#5905](https://github.com/apache/incubator-superset/pull/5905) [bugfix] ignore history.pushState errors (#5905) (@mistercrunch)
- [#5890](https://github.com/apache/incubator-superset/pull/5890) [bugfix] De-dup script tags. #5883 (#5890) (@kristw)
- [#5901](https://github.com/apache/incubator-superset/pull/5901) Table and dist bar tests (#5901) (@michellethomas)
- [#5921](https://github.com/apache/incubator-superset/pull/5921) [contributing.md] swap cypress command order (#5921) (@williaster)
- [#5902](https://github.com/apache/incubator-superset/pull/5902) [refactor] Remove dependency on personal fork of supercluster from mapbox visualizations (#5902) (@xtinec)
- [#5917](https://github.com/apache/incubator-superset/pull/5917) [bugfix] Fix percent metric display and check for string columns in table (#5917) (@kristw)
- [#5868](https://github.com/apache/incubator-superset/pull/5868) Remove unused functions and jquery dependency (#5868) (@kristw)
- [#5891](https://github.com/apache/incubator-superset/pull/5891) [bugfix] Fix color scheme picker (#5891) (@kristw)
- [#5918](https://github.com/apache/incubator-superset/pull/5918) Fixing linting error in macro_tests (#5918) (@xtinec)
- [#5907](https://github.com/apache/incubator-superset/pull/5907) Remove jquery usage to highlight sql lab menu (#5907) (@kristw)
- [#5547](https://github.com/apache/incubator-superset/pull/5547) Adds a new macro to allow getting filter values easily (#5547) (@mjsilva)
- [#5838](https://github.com/apache/incubator-superset/pull/5838) [SIP-5] Refactor nvd3 (#5838) (@kristw)
- [#5903](https://github.com/apache/incubator-superset/pull/5903) [react16] fix React type checking (#5903) (@mistercrunch)
- [#5900](https://github.com/apache/incubator-superset/pull/5900) Add cypress artifacts directory (videos/screenshots) to gitignore and sort items in gitignore (#5900) (@kristw)
- [#5811](https://github.com/apache/incubator-superset/pull/5811) [treemap] add row_limit control (#5811) (@mistercrunch)
- [#5851](https://github.com/apache/incubator-superset/pull/5851) remove duplicated utils (#5851) (@youngyjd)
- [#5879](https://github.com/apache/incubator-superset/pull/5879) [lint] turn no-undef back on, set browser, cypress, and mocha env's (#5879) (@williaster)
- [#5775](https://github.com/apache/incubator-superset/pull/5775) [SIP-5] Refactor Time Series Table (#5775) (@kristw)
- [#5885](https://github.com/apache/incubator-superset/pull/5885) Addded documentation for Teradata DB (#5885) (@livinm)
- [#5870](https://github.com/apache/incubator-superset/pull/5870) Enable Teradata (#5870) (@livinm)
- [#5877](https://github.com/apache/incubator-superset/pull/5877) [bug fix] Fixed adhoc metric is not working for WordCloud (#5877) (@conglei)
- [#5865](https://github.com/apache/incubator-superset/pull/5865) fixed modal close issue (#5865) (@conglei)
- [#5861](https://github.com/apache/incubator-superset/pull/5861) [SIP-6] removed get_data for BigNumber (#5861) (@conglei)
### 0.28.0rc6 (2018/09/13 00:37 +00:00)
- [#5880](https://github.com/apache/incubator-superset/pull/5880) Fix CSS theme flickering on FAB pages (#5880) (@mistercrunch)
- [#5878](https://github.com/apache/incubator-superset/pull/5878) remove getColorFromScheme in favor of CategoricalColorNamespace.getScale() for histogram (#5878) (@kristw)
- [#5709](https://github.com/apache/incubator-superset/pull/5709) fix: Pivot table not sorting formatted numeric column properly (#5709) (@arpit-agarwal)
- [#5815](https://github.com/apache/incubator-superset/pull/5815) Improve categorical color management (#5815) (@kristw)
- [#5874](https://github.com/apache/incubator-superset/pull/5874) [tests] fix sqllab/TableElement_spec (#5874) (@williaster)
- [#5863](https://github.com/apache/incubator-superset/pull/5863) [time table] fix sorting on missing values (#5863) (@mistercrunch)
- [#5748](https://github.com/apache/incubator-superset/pull/5748) [Docs] Running DB migration (#5748) (@hughhhh)
- [#5867](https://github.com/apache/incubator-superset/pull/5867) correctly compute slice width in dashboard (#5867) (@kristw)
- [#5864](https://github.com/apache/incubator-superset/pull/5864) Moving get_main_db out of tests and into superset utils (#5864) (@michellethomas)
- [#5862](https://github.com/apache/incubator-superset/pull/5862) fix sqllab logging (#5862) (@timifasubaa)
- [#5860](https://github.com/apache/incubator-superset/pull/5860) fix Object.assign try to write to read-only option.style (#5860) (@kristw)
- [#5859](https://github.com/apache/incubator-superset/pull/5859) make access request open new tab (#5859) (@timifasubaa)
- [#5858](https://github.com/apache/incubator-superset/pull/5858) [bugfix] mapbox pan on filter (#5858) (@xtinec)
- [#5846](https://github.com/apache/incubator-superset/pull/5846) Adding line and big number total integration tests (#5846) (@michellethomas)
- [#5855](https://github.com/apache/incubator-superset/pull/5855) [dev] fix redux devtools (#5855) (@williaster)
- [#5850](https://github.com/apache/incubator-superset/pull/5850) update dashboard sidepane title (#5850) (@graceguo-supercat)
- [#5736](https://github.com/apache/incubator-superset/pull/5736) [sqllab]More granular sqllab logging (#5736) (@timifasubaa)
- [#5849](https://github.com/apache/incubator-superset/pull/5849) [bugfix] fix rows not showing on welcome page (retry) (#5849) (@kristw)
- [#5853](https://github.com/apache/incubator-superset/pull/5853) [bugfix] 'No numeric types to aggregate' in NVD3 chart (#5853) (@mistercrunch)
- [#5829](https://github.com/apache/incubator-superset/pull/5829) [sql lab] handle large ints, prevent overflow (#5829) (@mistercrunch)
- [#5359](https://github.com/apache/incubator-superset/pull/5359) Upgrade to React==16.4.1 & Enzyme==3.3.0 (#5359) (@mistercrunch)
- [#5844](https://github.com/apache/incubator-superset/pull/5844) add timing to stats logger (#5844) (@timifasubaa)
- [#5785](https://github.com/apache/incubator-superset/pull/5785) Handle "ambiguous durations" (#5785) (@betodealmeida)
- [#5819](https://github.com/apache/incubator-superset/pull/5819) Update time filter to use `react-datetime` (#5819) (@betodealmeida)
- [#5841](https://github.com/apache/incubator-superset/pull/5841) Enable hot module replacement for React via react-hot-loader (#5841) (@kristw)
- [#5834](https://github.com/apache/incubator-superset/pull/5834) [docs] suggest using python3.6 in installation docs (#5834) (@mistercrunch)
- [#5828](https://github.com/apache/incubator-superset/pull/5828) Fix cache for multiple time comparisons (#5828) (@betodealmeida)
- [#5830](https://github.com/apache/incubator-superset/pull/5830) Get 'Test Connection' button to take 'engine_params' into account (#5830) (@mistercrunch)
- [#5840](https://github.com/apache/incubator-superset/pull/5840) Adding instructions on how to run Cypress in Contributing.md (#5840) (@michellethomas)
- [#5839](https://github.com/apache/incubator-superset/pull/5839) [bugfix] Fix bignumber overflow in dashboard (#5839) (@kristw)
- [#5762](https://github.com/apache/incubator-superset/pull/5762) [SIP-5] Refactor Paired t-test (#5762) (@kristw)
- [#5789](https://github.com/apache/incubator-superset/pull/5789) [SIP-5] Refactor filterbox (#5789) (@kristw)
- [#5693](https://github.com/apache/incubator-superset/pull/5693) Adding simple Cypress tests (#5693) (@michellethomas)
- [#5771](https://github.com/apache/incubator-superset/pull/5771) [dashboard] Add alert on user delete root level tab (#5771) (@graceguo-supercat)
- [#5730](https://github.com/apache/incubator-superset/pull/5730) [sql_json] allow not specifying client_id (#5730) (@mistercrunch)
- [#5818](https://github.com/apache/incubator-superset/pull/5818) Update Readme that support Apache Kylin (#5818) (@zhaoyongjie)
- [#5823](https://github.com/apache/incubator-superset/pull/5823) Adding 'Resources' section to the docs (#5823) (@mistercrunch)
- [#5826](https://github.com/apache/incubator-superset/pull/5826) fix bug with react-syntax-highlighter import (#5826) (@kristw)
- [#5705](https://github.com/apache/incubator-superset/pull/5705) [SIP-5] Refactor pivot table (#5705) (@kristw)
- [#5825](https://github.com/apache/incubator-superset/pull/5825) [SIP-5] Remove unused function #easy-review (#5825) (@kristw)
- [#5761](https://github.com/apache/incubator-superset/pull/5761) [SIP-5] Refactor parallel coordinates (#5761) (@kristw)
- [#5783](https://github.com/apache/incubator-superset/pull/5783) [SIP-5] Refactor MapBox (#5783) (@kristw)
- [#5758](https://github.com/apache/incubator-superset/pull/5758) [SIP-5] Refactor and improve histogram (#5758) (@kristw)
- [#5760](https://github.com/apache/incubator-superset/pull/5760) [SIP-5] Refactor calendar chart (#5760) (@kristw)
- [#5813](https://github.com/apache/incubator-superset/pull/5813) Enable CSS Hot Module Replacement and optimize css output for production (#5813) (@kristw)
- [#5814](https://github.com/apache/incubator-superset/pull/5814) bug: don't show query overlay when panning mapbox maps (#5814) (@xtinec)
- [#5812](https://github.com/apache/incubator-superset/pull/5812) [celery] setting default (#5812) (@john-bodley)
- [#5786](https://github.com/apache/incubator-superset/pull/5786) Configure webpack-dev-server (#5786) (@kristw)
- [#5796](https://github.com/apache/incubator-superset/pull/5796) make some text in [druid,CRUD,datasource] localizable (#5796) (@hitdemo)
- [#5686](https://github.com/apache/incubator-superset/pull/5686) Force quoted column aliases for Oracle-like databases (#5686) (@villebro)
- [#5707](https://github.com/apache/incubator-superset/pull/5707) [SIP-5] Refactor table (#5707) (@kristw)
- [#5745](https://github.com/apache/incubator-superset/pull/5745) Update annotation model to have JSON Metadata field (#5745) (@hughhhh)
- [#5782](https://github.com/apache/incubator-superset/pull/5782) update thumbnail (#5782) (@hughhhh)
- [#5721](https://github.com/apache/incubator-superset/pull/5721) [SIP-5] Repair and refactor CountryMap (#5721) (@kristw)
- [#5753](https://github.com/apache/incubator-superset/pull/5753) remove backend logic for wordcloud (#5753) (@conglei)
- [#5777](https://github.com/apache/incubator-superset/pull/5777) Fix redirect to SQL Lab (#5777) (@betodealmeida)
- [#5776](https://github.com/apache/incubator-superset/pull/5776) New branding images (#5776) (@elibrumbaugh)
- [#5767](https://github.com/apache/incubator-superset/pull/5767) Fix multilayer geoviz and color picker error (#5767) (@youngyjd)
- [#5718](https://github.com/apache/incubator-superset/pull/5718) [SIP-5] Refactor and repair partition (#5718) (@kristw)
- [#5763](https://github.com/apache/incubator-superset/pull/5763) [SIP-5] Refactor rose (#5763) (@kristw)
- [#5719](https://github.com/apache/incubator-superset/pull/5719) [SIP-5] Refactor World Map (#5719) (@kristw)
- [#5722](https://github.com/apache/incubator-superset/pull/5722) [dashboard] Update font style for markdown component (#5722) (@graceguo-supercat)
- [#5768](https://github.com/apache/incubator-superset/pull/5768) fix sqlparse bug and refactor (#5768) (@timifasubaa)
### 0.28.0rc5 (2018/08/29 04:05 +00:00)
- [#5765](https://github.com/apache/incubator-superset/pull/5765) [bugfix] 'DruidCluster' object has no attribute 'db_engine_spec' (#5765) (@mistercrunch)
- [#5715](https://github.com/apache/incubator-superset/pull/5715) [Table view] Handle empty arrays in fd.timeseries_limit_metric (#5715) (@betodealmeida)
- [#5759](https://github.com/apache/incubator-superset/pull/5759) Bug: fixing async syntax for python 3.7 (#5759) (@xtinec)
- [#5766](https://github.com/apache/incubator-superset/pull/5766) Disable input when IS (NOT) NULL selected in filters (#5766) (@betodealmeida)
- [#5764](https://github.com/apache/incubator-superset/pull/5764) [bugfix] IS NOT NULL filter triggers KeyError: 'val' (#5764) (@mistercrunch)
- [#5756](https://github.com/apache/incubator-superset/pull/5756) Add Myra Labs to user list in README (#5756) (@viksit)
- [#5712](https://github.com/apache/incubator-superset/pull/5712) [deck polygon] add support for geohash (#5712) (@mistercrunch)
- [#5729](https://github.com/apache/incubator-superset/pull/5729) Silence error on migration 4736ec66ce19 constraint drop (#5729) (@mistercrunch)
- [#5749](https://github.com/apache/incubator-superset/pull/5749) Prevent deleting databases that have attached tables (#5749) (@mistercrunch)
- [#5750](https://github.com/apache/incubator-superset/pull/5750) Merge pull request #5750 from mistercrunch/updating_0_28 (@mistercrunch)
- [#5732](https://github.com/apache/incubator-superset/pull/5732) Merge pull request #5732 from mistercrunch/build_docs (@mistercrunch)
- [#5731](https://github.com/apache/incubator-superset/pull/5731) Merge pull request #5731 from mistercrunch/faq_db_engines (@mistercrunch)
- [#5701](https://github.com/apache/incubator-superset/pull/5701) [SIP-5] Refactor sankey (#5701) (@kristw)
- [#5704](https://github.com/apache/incubator-superset/pull/5704) [SIP-5] Refactor and update heatmap (#5704) (@kristw)
- [13e48e8](https://github.com/apache/incubator-superset/commit/13e48e8c8eff626f0a6543d440bf3399c0938765) typo-delipo (@mistercrunch)
- [#5725](https://github.com/apache/incubator-superset/pull/5725) Merge pull request #5725 from mistercrunch/label_verbose_name (@mistercrunch)
- [ceda309](https://github.com/apache/incubator-superset/commit/ceda3092e3fed092a4ff5f11096a0718b9446145) UPDATING.md entry about dashboard v2 forced migration in 0.28 (@mistercrunch)
- [#5744](https://github.com/apache/incubator-superset/pull/5744) update webpack (#5744) (@hughhhh)
- [#5706](https://github.com/apache/incubator-superset/pull/5706) Merge pull request #5706 from mistercrunch/color_arcs (@mistercrunch)
- [#5724](https://github.com/apache/incubator-superset/pull/5724) Merge pull request #5724 from mistercrunch/css_editable_input (@mistercrunch)
- [#5723](https://github.com/apache/incubator-superset/pull/5723) Merge pull request #5723 from mistercrunch/fix_autocomplete_filters (@mistercrunch)
- [#5746](https://github.com/apache/incubator-superset/pull/5746) [bugfix] BigNumber crash, Horizon indent and Myanmar geojson (#5746) (@kristw)
- [#5699](https://github.com/apache/incubator-superset/pull/5699) [SIP-5] Refactor sunburst (#5699) (@kristw)
- [#5690](https://github.com/apache/incubator-superset/pull/5690) [SIP-5] Repair and refactor Horizon Chart (#5690) (@kristw)
- [#5738](https://github.com/apache/incubator-superset/pull/5738) remove unneeded console.log (#5738) (@hughhhh)
- [#5726](https://github.com/apache/incubator-superset/pull/5726) [celery] Using preferred configuration proceedure (#5726) (@john-bodley)
- [09d46a7](https://github.com/apache/incubator-superset/commit/09d46a7864a67d3e2ef70fb41a5c43b28d6c14c9) Fix tests (@mistercrunch)
- [#5717](https://github.com/apache/incubator-superset/pull/5717) Autofocus aggregation in metric control (#5717) (@betodealmeida)
- [#5735](https://github.com/apache/incubator-superset/pull/5735) make some text localizable, mainly in explore, query (#5735) (@hitdemo)
- [12cc2fb](https://github.com/apache/incubator-superset/commit/12cc2fbe15533c673b12bd3cf6bed2a5c8b8a46e) [docs] note as to how to build and view the docs (@mistercrunch)
- [bddc952](https://github.com/apache/incubator-superset/commit/bddc9522e82f77942e0797694fd619fe1653ff48) [docs] FAQ entry 'Does Superset work with [database engine]?' (@mistercrunch)
- [#5720](https://github.com/apache/incubator-superset/pull/5720) Fix FAQ on filters (#5720) (@betodealmeida)
- [e964d83](https://github.com/apache/incubator-superset/commit/e964d83b45b21b95f21218fa0f25fb44c7f95b18) [table editor] better table header for Metrics tab (@mistercrunch)
- [c447a97](https://github.com/apache/incubator-superset/commit/c447a970de3e6d240a5a9a0d7a1a5b737bd2332c) [css] show border around editable input while editing (@mistercrunch)
- [ba32944](https://github.com/apache/incubator-superset/commit/ba329440bcece3f2e7033b8c02bd27460b7dfb11) [table editor] fix 'Autocomplete filters' checkbox doesn't stick (@mistercrunch)
- [#5670](https://github.com/apache/incubator-superset/pull/5670) [SIP-5] Refactor treemap (#5670) (@kristw)
- [#5714](https://github.com/apache/incubator-superset/pull/5714) [bugfix] add item is missing on table editor metrics tab (#5714) (@mistercrunch)
- [#5716](https://github.com/apache/incubator-superset/pull/5716) Merge pull request #5716 from lyft/DPTOOLS-976 (@lyft)
- [c567a89](https://github.com/apache/incubator-superset/commit/c567a89ee7529e88649d78f415a54988b01e218e) Use 403 (@betodealmeida)
- [9827925](https://github.com/apache/incubator-superset/commit/9827925015a42a47d12db82595fd88de6a259d62) Return 401 on no authorization (@betodealmeida)
- [#5708](https://github.com/apache/incubator-superset/pull/5708) Geojson property names (#5708) (@joshbrooks)
- [#5702](https://github.com/apache/incubator-superset/pull/5702) remove console.log and change wording (#5702) (@kristw)
- [#5672](https://github.com/apache/incubator-superset/pull/5672) Revise markup.js and iframe.js (#5672) (@kristw)
- [#5703](https://github.com/apache/incubator-superset/pull/5703) [sqlparse] fix sqlparse bug (#5703) (@timifasubaa)
- [71866f6](https://github.com/apache/incubator-superset/commit/71866f6a127c616da07f221572ca04a95902e7e0) [deck arcs] add JS hooks for sourceColor & targetColor (@mistercrunch)
- [#5684](https://github.com/apache/incubator-superset/pull/5684) [security] Moving set/merge perm to security manager (#5684) (@john-bodley)
- [#5623](https://github.com/apache/incubator-superset/pull/5623) Merge pull request #5623 from mistercrunch/fix_templates (@mistercrunch)
- [#5694](https://github.com/apache/incubator-superset/pull/5694) Allow users to select color for big number (#5694) (@hughhhh)
- [#5697](https://github.com/apache/incubator-superset/pull/5697) Adds geodata for Myanmar (#5697) (@joshbrooks)
- [#5698](https://github.com/apache/incubator-superset/pull/5698) adds TimorLeste geodata (#5698) (@joshbrooks)
- [#5695](https://github.com/apache/incubator-superset/pull/5695) [bugfix] geohash lat/long is reversed (#5695) (@mistercrunch)
- [#5663](https://github.com/apache/incubator-superset/pull/5663) Make brush send events (#5663) (@betodealmeida)
- [#5634](https://github.com/apache/incubator-superset/pull/5634) [viz flow] detect TIMESTAMP, transition to line chart (#5634) (@mistercrunch)
- [#5638](https://github.com/apache/incubator-superset/pull/5638) Add categories and time slider to arc deck.gl viz (#5638) (@betodealmeida)
- [#5675](https://github.com/apache/incubator-superset/pull/5675) Fixes to the play slider (#5675) (@betodealmeida)
- [#5646](https://github.com/apache/incubator-superset/pull/5646) Increase pylint jobs (#5646) (@betodealmeida)
- [#5669](https://github.com/apache/incubator-superset/pull/5669) Repair and refactor Word Cloud (#5669) (@kristw)
- [#5691](https://github.com/apache/incubator-superset/pull/5691) Refactor force-directed graph (#5691) (@kristw)
- [#5687](https://github.com/apache/incubator-superset/pull/5687) [bugfix] Encode unicode error message response (#5687) (@zhaoyongjie)
- [#5641](https://github.com/apache/incubator-superset/pull/5641) Field names in big query can contain only alphanumeric and underscore (#5641) (@sumedhsakdeo)
### 0.27.0 (2018/08/21 20:16 +00:00)
- [#5682](https://github.com/apache/incubator-superset/pull/5682) [bugfix] making secondary_metric optional (#5682) (@mistercrunch)
- [#5665](https://github.com/apache/incubator-superset/pull/5665) Upgrade mysqlclient to 1.3.13 (#5665) (@emlittleworth)
- [#5640](https://github.com/apache/incubator-superset/pull/5640) Fix CSS (#5640) (@betodealmeida)
- [#5688](https://github.com/apache/incubator-superset/pull/5688) change title from hotkeys to keyboard shortcuts (#5688) (@kristw)
### 0.28.0rc3 (2018/08/21 17:19 +00:00)
- [#5683](https://github.com/apache/incubator-superset/pull/5683) [bug] 'an error has ooccured' when saving datasource (#5683) (@mistercrunch)
- [#5685](https://github.com/apache/incubator-superset/pull/5685) make some text localizable, mainly in dashboard, explore, datasource editor, webpage title (#5685) (@hitdemo)
- [#5655](https://github.com/apache/incubator-superset/pull/5655) Handling bigquery dialect when previewing data (#5655) (@sumedhsakdeo)
- [#5657](https://github.com/apache/incubator-superset/pull/5657) [bugfix] df is None breaks df.empty check (#5657) (@mistercrunch)
- [#5671](https://github.com/apache/incubator-superset/pull/5671) Refactor Chord vis (#5671) (@kristw)
- [#5681](https://github.com/apache/incubator-superset/pull/5681) Fix time filter in cache (#5681) (@betodealmeida)
- [#5662](https://github.com/apache/incubator-superset/pull/5662) Minor improvements to SQL Lab UI (#5662) (@kristw)
- [#5642](https://github.com/apache/incubator-superset/pull/5642) Filter out null locations by default (#5642) (@betodealmeida)
- [#5668](https://github.com/apache/incubator-superset/pull/5668) Update CONTRIBUTING.md (#5668) (@hughhhh)
- [#5652](https://github.com/apache/incubator-superset/pull/5652) [sqllab] call out transient state of tabs to users (#5652) (@williaster)
- [#5661](https://github.com/apache/incubator-superset/pull/5661) [bugfix] TypeError: adhocMetric.comparator.join is not a function (#5661) (@mistercrunch)
- [#5645](https://github.com/apache/incubator-superset/pull/5645) Fix checkbox is fails When disable Druid datasource (#5645) (@zhaoyongjie)
- [#5649](https://github.com/apache/incubator-superset/pull/5649) fix multilayer viz backend error (#5649) (@youngyjd)
- [#5644](https://github.com/apache/incubator-superset/pull/5644) handle exception and set dtype value to JSON, when column type JSON (#5644) (@sumedhsakdeo)
- [#5567](https://github.com/apache/incubator-superset/pull/5567) make filters use security manager (#5567) (@timifasubaa)
- [#5648](https://github.com/apache/incubator-superset/pull/5648) Updating yarn.lock for the vx upgrade (#5648) (@michellethomas)
- [#5647](https://github.com/apache/incubator-superset/pull/5647) Upgrading vx responsive to fix ResizeObserver issue (#5647) (@michellethomas)
- [#5643](https://github.com/apache/incubator-superset/pull/5643) use_slice_data in slice_json calls (#5643) (@michellethomas)
- [#5637](https://github.com/apache/incubator-superset/pull/5637) Explore View Perf Fix (#5637) (@sumedhsakdeo)
- [#5100](https://github.com/apache/incubator-superset/pull/5100) Fix form data issue switching viz types (#5100) (@michellethomas)
- [#5433](https://github.com/apache/incubator-superset/pull/5433) [title] Fix issue with non-string names in series title (#5433) (@john-bodley)
- [#5632](https://github.com/apache/incubator-superset/pull/5632) Fetch a batch of rows from bigquery (#5632) (@sumedhsakdeo)
- [#5630](https://github.com/apache/incubator-superset/pull/5630) [bubble] Fixing ad-hoc metric labels (#5630) (@john-bodley)
- [#5626](https://github.com/apache/incubator-superset/pull/5626) Tackling late-arriving comments from #5186 (#5626) (@mistercrunch)
- [#5612](https://github.com/apache/incubator-superset/pull/5612) [sql lab] always use NullPool (#5612) (@mistercrunch)
- [#5631](https://github.com/apache/incubator-superset/pull/5631) [bug fix] Fixed forced percentage format on tooltips and bubble chart tooltips format. (#5631) (@conglei)
- [#5629](https://github.com/apache/incubator-superset/pull/5629) [bugfix] TIMESTAMP not detected as date (#5629) (@mistercrunch)
- [#5621](https://github.com/apache/incubator-superset/pull/5621) Fix annotation_json endpoint (#5621) (@hughhhh)
- [#5624](https://github.com/apache/incubator-superset/pull/5624) [Dashobard]Fix bad merge (#5624) (@graceguo-supercat)
- [#5568](https://github.com/apache/incubator-superset/pull/5568) [bugfix] line_multi chart crashed on chosen (#5568) (#5572) (@kristw)
- [#5549](https://github.com/apache/incubator-superset/pull/5549) Add additional heatmap schemas (#5549) (@jerowe)
- [#5597](https://github.com/apache/incubator-superset/pull/5597) No exception on no data (#5597) (@betodealmeida)
- [d04d714](https://github.com/apache/incubator-superset/commit/d04d714fe594798f9a27a395cef1b748d7b13f37) Fix menu on 'import dashboards' page (@mistercrunch)
- [#5622](https://github.com/apache/incubator-superset/pull/5622) Add option to run query with ctrl+enter (#5622) (@betodealmeida)
- [#5603](https://github.com/apache/incubator-superset/pull/5603) [feature] Allow min/max value for the sparkline in time series table (#5603) (@kristw)
- [#5618](https://github.com/apache/incubator-superset/pull/5618) [dashboards] Increasing position_json to MEDIUMTEXT for MySQL (#5618) (@john-bodley)
- [#5584](https://github.com/apache/incubator-superset/pull/5584) [fix] Enforcing main dttm column (#5584) (@john-bodley)
- [#5611](https://github.com/apache/incubator-superset/pull/5611) make some text localizable (#5611) (@hitdemo)
- [#5480](https://github.com/apache/incubator-superset/pull/5480) fix cal_heatmap tips location error (#5480) (#5587) (@Narcissus7)
### 0.27.0rc1 (2018/08/12 17:03 +00:00)
- [#5589](https://github.com/apache/incubator-superset/pull/5589) [ad-hoc filters] Fixing legacy conversion (#5589) (@john-bodley)
- [#5596](https://github.com/apache/incubator-superset/pull/5596) [sql lab - explore flow] make sure groupby is empty (#5596) (@mistercrunch)
- [#5592](https://github.com/apache/incubator-superset/pull/5592) [bug]Fix load_examples dashboard version key name (#5592) (@graceguo-supercat)
- [#5579](https://github.com/apache/incubator-superset/pull/5579) [sql lab] visualization flow to detect unaliased columns (#5579) (@mistercrunch)
- [#5580](https://github.com/apache/incubator-superset/pull/5580) [table editor] disable 'Sync table metadata' button for Superset views (#5580) (@mistercrunch)
- [#5550](https://github.com/apache/incubator-superset/pull/5550) Template dashboard (#5550) (@betodealmeida)
- [#5562](https://github.com/apache/incubator-superset/pull/5562) update python3 version for testing to 3.6 (#5562) (@octaviancorlade)
- [#5574](https://github.com/apache/incubator-superset/pull/5574) Fixed the wrong icon for Source -> Table (#5574) (@conglei)
- [#5573](https://github.com/apache/incubator-superset/pull/5573) remove deep-equal and use _.isEqual instead (#5573) (@kristw)
- [#5186](https://github.com/apache/incubator-superset/pull/5186) Implement a React-based table editor (#5186) (@mistercrunch)
- [#5552](https://github.com/apache/incubator-superset/pull/5552) Add option for BigNumber to not start y-axis at 0 (#5552) (@kristw)
- [#5561](https://github.com/apache/incubator-superset/pull/5561) A collection of small bug fixes on master (#5561) (@mistercrunch)
- [#5564](https://github.com/apache/incubator-superset/pull/5564) remove uneccessary comma (#5564) (@hitdemo)
- [#5560](https://github.com/apache/incubator-superset/pull/5560) Remove function since_until_to_time_range (#5560) (@mistercrunch)
- [#5558](https://github.com/apache/incubator-superset/pull/5558) [sql lab] allow EXPlAIN queries (#5558) (@mistercrunch)
- [#5515](https://github.com/apache/incubator-superset/pull/5515) convert position to v2 for Superset load_examples (#5515) (@graceguo-supercat)
- [#5544](https://github.com/apache/incubator-superset/pull/5544) Improve URLs for Chart and Dashboard ModelViews (#5544) (@mistercrunch)
- [#5559](https://github.com/apache/incubator-superset/pull/5559) permissions bug fixes (#5559) (@timifasubaa)
- [#5546](https://github.com/apache/incubator-superset/pull/5546) [bugfix] time filter on dashboard view (#5546) (@mistercrunch)
- [#5543](https://github.com/apache/incubator-superset/pull/5543) Reduce dashboard position_json data size (#5543) (@graceguo-supercat)
- [#5487](https://github.com/apache/incubator-superset/pull/5487) Match viz dataframe column case to form_data fields for Snowflake, Oracle and Redshift (#5487) (@villebro)
- [#5398](https://github.com/apache/incubator-superset/pull/5398) Re-add dashboard short links (#5398) (@jaylindquist)
- [#5554](https://github.com/apache/incubator-superset/pull/5554) Add Thailand country map (#5554) (@ekasitk)
- [#5514](https://github.com/apache/incubator-superset/pull/5514) remove js packages that are not referenced in js code (#5514) (@kristw)
- [#4874](https://github.com/apache/incubator-superset/pull/4874) Portuguese translation (#4874) (@nunohelibeires)
- [#5523](https://github.com/apache/incubator-superset/pull/5523) [sql lab] simplify the visualize flow (#5523) (@mistercrunch)
- [#5469](https://github.com/apache/incubator-superset/pull/5469) Update BigNumber design (#5469) (@kristw)
- [#5536](https://github.com/apache/incubator-superset/pull/5536) Replace metadata refresh stacktrace with danger flash (#5536) (@villebro)
- [#5540](https://github.com/apache/incubator-superset/pull/5540) fix superset error message flow (#5540) (@timifasubaa)
- [#5531](https://github.com/apache/incubator-superset/pull/5531) Include README in MANIFEST (#5531) (@jeffreythewang)
- [#5437](https://github.com/apache/incubator-superset/pull/5437) Annotation Styles for Time Series Annotations (#5437) (@JamshedRahman)
- [#5538](https://github.com/apache/incubator-superset/pull/5538) Stop pretty printing dashboard json (#5538) (@michellethomas)
- [#5533](https://github.com/apache/incubator-superset/pull/5533) [ad-hoc filters] Remove legacy split in /explore (#5533) (@john-bodley)
- [#5517](https://github.com/apache/incubator-superset/pull/5517) [get_df] Updating multi-statement logic (#5517) (@john-bodley)
- [#5521](https://github.com/apache/incubator-superset/pull/5521) Adding 364 days to time compare option (#5521) (@michellethomas)
- [#5525](https://github.com/apache/incubator-superset/pull/5525) [ad-hoc filters] Fixing issue with legacy filters (#5525) (@john-bodley)
- [#5529](https://github.com/apache/incubator-superset/pull/5529) Fix time shift (#5529) (@betodealmeida)
- [#5380](https://github.com/apache/incubator-superset/pull/5380) Add time grain blacklist and addons to config.py (#5380) (@villebro)
- [#5522](https://github.com/apache/incubator-superset/pull/5522) added clickhouse as supported db (#5522) (@The-Alchemist)
- [#5512](https://github.com/apache/incubator-superset/pull/5512) hotfix - pass link not error message (#5512) (@timifasubaa)
- [#5504](https://github.com/apache/incubator-superset/pull/5504) Set max width for tooltips (#5504) (@jeffreythewang)
- [#5516](https://github.com/apache/incubator-superset/pull/5516) Fixed the issue of Zambia country map. (#5516) (@visshaljagtap)
- [#5500](https://github.com/apache/incubator-superset/pull/5500) allow security manager provide error message (#5500) (@timifasubaa)
- [#5425](https://github.com/apache/incubator-superset/pull/5425) set default layout for new added charts (#5425) (@graceguo-supercat)
- [#5459](https://github.com/apache/incubator-superset/pull/5459) Added India in country map visualizaion. (#5459) (@visshaljagtap)
- [#5508](https://github.com/apache/incubator-superset/pull/5508) Fix 5479 - unicode columns issue. (#5508) (@mmuru)
- [#5502](https://github.com/apache/incubator-superset/pull/5502) Improve hive/pyhive error message regex (#5502) (@mistercrunch)
- [#5505](https://github.com/apache/incubator-superset/pull/5505) Remove dashboard transition related config (#5505) (@graceguo-supercat)
- [#5490](https://github.com/apache/incubator-superset/pull/5490) [sqllab] fix unexpected keyword argument 'ignore_nan' (#5490) (@mistercrunch)
- [#5493](https://github.com/apache/incubator-superset/pull/5493) Apply SQL_QUERY_MUTATOR to explore & dashboard (#5493) (@mistercrunch)
- [#5494](https://github.com/apache/incubator-superset/pull/5494) [sql lab] fix Hive 'Transport' not open issue (#5494) (@mistercrunch)
- [#5495](https://github.com/apache/incubator-superset/pull/5495) [sql lab] extract Hive error messages (#5495) (@mistercrunch)
- [#5387](https://github.com/apache/incubator-superset/pull/5387) Visualization Unicode bug fix (#5387) (@JamshedRahman)
- [#5497](https://github.com/apache/incubator-superset/pull/5497) [migration] bug fix in dashboard migration (bebcf3fed1fe_) (#5497) (@graceguo-supercat)
- [#5492](https://github.com/apache/incubator-superset/pull/5492) Modify Athena connection description (#5492) (@yoonian)
- [#5478](https://github.com/apache/incubator-superset/pull/5478) Remove is-react dep (#5478) (@betodealmeida)
- [#5418](https://github.com/apache/incubator-superset/pull/5418) retire dashboard v1 (js and python) (#5418) (@graceguo-supercat)
- [#5463](https://github.com/apache/incubator-superset/pull/5463) Migrate dashboard positions data from v1 to v2 format (#5463) (@graceguo-supercat)
- [#5471](https://github.com/apache/incubator-superset/pull/5471) [migration] Fix migration 3dda56f1c (#5471) (@john-bodley)
- [#5468](https://github.com/apache/incubator-superset/pull/5468) fix migration 3dda56f1c (#5468) (@timifasubaa)
- [#5460](https://github.com/apache/incubator-superset/pull/5460) Move flake8-related packages deps to reqs-dev.txt (#5460) (@mistercrunch)
- [#5426](https://github.com/apache/incubator-superset/pull/5426) Add row_limit control to line chart (#5426) (@mistercrunch)
- [#5467](https://github.com/apache/incubator-superset/pull/5467) Fix broken dedup and remove redundant db_spec logic (#5467) (@villebro)
- [#5464](https://github.com/apache/incubator-superset/pull/5464) Fix the build by merging both db migrations heads (#5464) (@mistercrunch)
- [#5178](https://github.com/apache/incubator-superset/pull/5178) [sql] Correct SQL parameter formatting (#5178) (@john-bodley)
- [#5454](https://github.com/apache/incubator-superset/pull/5454) Clarify title when importing a table (#5454) (@mistercrunch)
- [#5455](https://github.com/apache/incubator-superset/pull/5455) Add week granularity for Clickhouse (#5455) (@qeorqe)
- [#5436](https://github.com/apache/incubator-superset/pull/5436) Added Zambia geojson up to district level. (#5436) (@AndreLesa)
- [#5410](https://github.com/apache/incubator-superset/pull/5410) Migrated to click (#5410) (@gbates101)
- [#5443](https://github.com/apache/incubator-superset/pull/5443) Add Snowflake connection string instructions (#5443) (@villebro)
- [#5448](https://github.com/apache/incubator-superset/pull/5448) Time filter fixes (#5448) (@betodealmeida)
- [#5413](https://github.com/apache/incubator-superset/pull/5413) remove limiting at the display level (#5413) (@timifasubaa)
- [#5432](https://github.com/apache/incubator-superset/pull/5432) Typo fixes in viz.py and CONTRIBUTING.md (#5432) (@visshaljagtap)
- [#5416](https://github.com/apache/incubator-superset/pull/5416) Add pylint back as a tox env (#5416) (@mistercrunch)
- [#5424](https://github.com/apache/incubator-superset/pull/5424) Avoid expensive select_star on dashboard bootstrap data (#5424) (@mistercrunch)
- [#5419](https://github.com/apache/incubator-superset/pull/5419) Fixed typos in currently modified files (#5419) (@visshaljagtap)
- [#5393](https://github.com/apache/incubator-superset/pull/5393) allow selection of dbs where csv can be uploaded to (#5393) (@timifasubaa)
- [#5415](https://github.com/apache/incubator-superset/pull/5415) Fix db migration 3dda56f1c4c6 (#5415) (@mistercrunch)
- [#5370](https://github.com/apache/incubator-superset/pull/5370) [webpack 4] third time's the charm ;) (#5370) (@williaster)
- [#5412](https://github.com/apache/incubator-superset/pull/5412) Fix time filter in dashboard v2 (#5412) (@betodealmeida)
- [#5411](https://github.com/apache/incubator-superset/pull/5411) allow 7 tabs, remove 'slice_' prefix in logs (#5411) (@williaster)
- [#5177](https://github.com/apache/incubator-superset/pull/5177) Time shift difference (#5177) (@betodealmeida)
- [#5295](https://github.com/apache/incubator-superset/pull/5295) [sqllab] Fix sqllab limit regex issue with sqlparse (#5295) (@timifasubaa)
- [#5101](https://github.com/apache/incubator-superset/pull/5101) Explore to SQL Lab (#5101) (@betodealmeida)
- [#5404](https://github.com/apache/incubator-superset/pull/5404) [big_number] tooltip shows in the wrong place (#5404) (@mistercrunch)
- [#4981](https://github.com/apache/incubator-superset/pull/4981) Make time filter more usable (#4981) (@betodealmeida)
- [#5329](https://github.com/apache/incubator-superset/pull/5329) [Table Viz] columns not match with group_by control (#5329) (@graceguo-supercat)
- [#5376](https://github.com/apache/incubator-superset/pull/5376) [bugfix] make MetricsControl work with DECK visualizations (#5376) (@mistercrunch)
- [#5375](https://github.com/apache/incubator-superset/pull/5375) Add `IS NOT NULL` and `IS NULL` as filter options (#5375) (@hughhhh)
- [#5352](https://github.com/apache/incubator-superset/pull/5352) Make Pypi upload support markdown (#5352) (@mistercrunch)
- [#5392](https://github.com/apache/incubator-superset/pull/5392) Fix display limit in sql lab (#5392) (@villebro)
- [#5403](https://github.com/apache/incubator-superset/pull/5403) Fix the build (#5403) (@mistercrunch)
- [#5368](https://github.com/apache/incubator-superset/pull/5368) quote hive column names (#5368) (@timifasubaa)
- [#5355](https://github.com/apache/incubator-superset/pull/5355) get rid of global `notify` (#5355) (@williaster)
- [#5236](https://github.com/apache/incubator-superset/pull/5236) [pie] improvements to pie charts (#5236) (@mistercrunch)
- [#5357](https://github.com/apache/incubator-superset/pull/5357) Set control 'percent_metrics's default to [] (#5357) (@mistercrunch)
- [#5379](https://github.com/apache/incubator-superset/pull/5379) Adding Druid Time Granularities (#5379) (@JamshedRahman)
- [#5371](https://github.com/apache/incubator-superset/pull/5371) Set ignore NaN as true for TableViz (#5371) (@hughhhh)
- [#5362](https://github.com/apache/incubator-superset/pull/5362) [dashboard] should use forceV2Edit property name (#5362) (@graceguo-supercat)
- [#5360](https://github.com/apache/incubator-superset/pull/5360) [dashboard] Fix save issue at Force_V2_Edit mode (#5360) (@graceguo-supercat)
- [#5334](https://github.com/apache/incubator-superset/pull/5334) CHANGELOG entry for 0.25.0 to 0.26.0 (#5334) (@mistercrunch)
- [#5303](https://github.com/apache/incubator-superset/pull/5303) use schema form field in upload csv (#5303) (@timifasubaa)
- [#5354](https://github.com/apache/incubator-superset/pull/5354) [cache] Adding description for a zero cache timeout (#5354) (@john-bodley)
- [#5356](https://github.com/apache/incubator-superset/pull/5356) added a 'no_trend_line' option (#5356) (@xiaoyugit)
### 0.26.2 (2018/07/05 13:37 +00:00)
- [#5349](https://github.com/apache/incubator-superset/pull/5349) impala support for epoch timestamps (#5349) (@aaronbannin)
- [#5211](https://github.com/apache/incubator-superset/pull/5211) [Bug fix] Divide by 1000.000 in epoch_ms_to_dttm() to not lose precision in Presto (#5211) (@EvelynTurner)
- [#5328](https://github.com/apache/incubator-superset/pull/5328) Implement rolling api introduced in pandas 0.18 (#5328) (@villebro)
- [#5337](https://github.com/apache/incubator-superset/pull/5337) normalize column names for Redshift (#5337) (@minh5)
### 0.26.1 (2018/07/04 21:16 +00:00)
- [#5338](https://github.com/apache/incubator-superset/pull/5338) A couple of setup.py fixes (#5338) (@xrmx)
- [#5346](https://github.com/apache/incubator-superset/pull/5346) RST formatting fix for Installation docs (#5346) (@kulte)
- [#5348](https://github.com/apache/incubator-superset/pull/5348) Fix typo in Start with Docker (#5348) (@kulte)
### 0.26.0 (2018/07/03 14:13 +00:00)
- [#5315](https://github.com/apache/incubator-superset/pull/5315) [cache] Allowing zero cache-timeout (#5315) (@john-bodley)
- [#5313](https://github.com/apache/incubator-superset/pull/5313) Fix flaky unit test - remove 'Markup' object in data (#5313) (@mistercrunch)

View File

@@ -1,84 +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.
-->
# Code of Conduct
## 1. Purpose
A primary goal of Apache Superset is to be inclusive to the largest number of contributors, with the most varied and diverse backgrounds possible. As such, we are committed to providing a friendly, safe and welcoming environment for all, regardless of gender, sexual orientation, ability, ethnicity, socioeconomic status, and religion (or lack thereof).
This code of conduct outlines our expectations for all those who participate in our community, as well as the consequences for unacceptable behavior.
We invite all those who participate in Apache Superset to help us create safe and positive experiences for everyone.
## 2. Open Source Citizenship
A supplemental goal of this Code of Conduct is to increase open source citizenship by encouraging participants to recognize and strengthen the relationships between our actions and their effects on our community.
Communities mirror the societies in which they exist and positive action is essential to counteract the many forms of inequality and abuses of power that exist in society.
If you see someone who is making an extra effort to ensure our community is welcoming, friendly, and encourages all participants to contribute to the fullest extent, we want to know.
## 3. Expected Behavior
The following behaviors are expected and requested of all community members:
* Participate in an authentic and active way. In doing so, you contribute to the health and longevity of this community.
* Exercise consideration and respect in your speech and actions.
* Attempt collaboration before conflict.
* Refrain from demeaning, discriminatory, or harassing behavior and speech.
* Be mindful of your surroundings and of your fellow participants. Alert community leaders if you notice a dangerous situation, someone in distress, or violations of this Code of Conduct, even if they seem inconsequential.
* Remember that community event venues may be shared with members of the public; please be respectful to all patrons of these locations.
## 4. Unacceptable Behavior
The following behaviors are considered harassment and are unacceptable within our community:
* Violence, threats of violence or violent language directed against another person.
* Sexist, racist, homophobic, transphobic, ableist or otherwise discriminatory jokes and language.
* Posting or displaying sexually explicit or violent material.
* Posting or threatening to post other peoples personally identifying information ("doxing").
* Personal insults, particularly those related to gender, sexual orientation, race, religion, or disability.
* Inappropriate photography or recording.
* Inappropriate physical contact. You should have someones consent before touching them.
* Unwelcome sexual attention. This includes, sexualized comments or jokes; inappropriate touching, groping, and unwelcomed sexual advances.
* Deliberate intimidation, stalking or following (online or in person).
* Advocating for, or encouraging, any of the above behavior.
* Sustained disruption of community events, including talks and presentations.
## 5. Consequences of Unacceptable Behavior
Unacceptable behavior from any community member, including sponsors and those with decision-making authority, will not be tolerated.
Anyone asked to stop unacceptable behavior is expected to comply immediately.
If a community member engages in unacceptable behavior, the community organizers may take any action they deem appropriate, up to and including a temporary ban or permanent expulsion from the community without warning (and without refund in the case of a paid event).
## 6. Reporting Guidelines
If you are subject to or witness unacceptable behavior, or have any other concerns, please notify a community organizer as soon as possible. dev@superset.incubator.apache.org .
Additionally, community organizers are available to help community members engage with local law enforcement or to otherwise help those experiencing unacceptable behavior feel safe. In the context of in-person events, organizers will also provide escorts as desired by the person experiencing distress.
## 7. Addressing Grievances
If you feel you have been falsely or unfairly accused of violating this Code of Conduct, you should notify Apache with a concise description of your grievance. Your grievance will be handled in accordance with our existing governing policies.
## 8. Scope
We expect all community participants (contributors, paid or otherwise; sponsors; and other guests) to abide by this Code of Conduct in all community venuesonline and in-personas well as in all one-on-one communications pertaining to community business.
This code of conduct and its related procedures also applies to unacceptable behavior occurring outside the scope of community activities when such behavior has the potential to adversely affect the safety and well-being of community members.
## 9. Contact info
dev@superset.incubator.apache.org
## 10. License and attribution
This Code of Conduct is distributed under a [Creative Commons Attribution-ShareAlike license](http://creativecommons.org/licenses/by-sa/3.0/).
Portions of text derived from the [Django Code of Conduct](https://www.djangoproject.com/conduct/) and the [Geek Feminism Anti-Harassment Policy](http://geekfeminism.wikia.com/wiki/Conference_anti-harassment/Policy).
Retrieved on November 22, 2016 from [http://citizencodeofconduct.org/](http://citizencodeofconduct.org/)
We follow the
[Apache Software Foundation's Code of Conduct](https://www.apache.org/foundation/policies/conduct.html)

View File

@@ -1,3 +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.
-->
# Contributing
Contributions are welcome and are greatly appreciated! Every
@@ -7,13 +26,15 @@ little bit helps, and credit will always be given.
- [Types of Contributions](#types-of-contributions)
- [Report Bugs](#report-bugs)
- [Submit Ideas or Feature Requests](#submit-ideas-or-feature-requests)
- [Ask Questions](#ask-questions)
- [Fix Bugs](#fix-bugs)
- [Implement Features](#implement-features)
- [Improve Documentation](#improve-documentation)
- [Add Translations](#add-translations)
- [Submit Feedback](#submit-feedback)
- [Ask Questions](#ask-questions)
- [Pull Request Guidelines](#pull-request-guidelines)
- [Protocol](#protocol)
- [Managing Issues and PRs](#managing-issues-and-prs)
- [Local development](#local-development)
- [Documentation](#documentation)
- [Flask server](#flask-server)
@@ -34,26 +55,37 @@ little bit helps, and credit will always be given.
## Types of Contributions
### Report Bugs
### Report Bug
Report bugs through GitHub. If you are reporting a bug, please include:
The best way to report a bug is to file an issue on GitHub. Please include:
- Your operating system name and version.
- Any details about your local setup that might be helpful in troubleshooting.
- Superset version.
- Detailed steps to reproduce the bug.
- Any details about your local setup that might be helpful in troubleshooting.
When posting Python stack traces, please quote them using
[Markdown blocks](https://help.github.com/articles/creating-and-highlighting-code-blocks/).
### Submit Ideas or Feature Requests
The best way is to file an issue on GitHub:
- Explain in detail how it would work.
- Keep the scope as narrow as possible, to make it easier to implement.
- Remember that this is a volunteer-driven project, and that contributions are welcome :)
For large features or major changes to codebase, please create **Superset Improvement Proposal (SIP)**. See template from [SIP-0](https://github.com/apache/incubator-superset/issues/5602)
### Fix Bugs
Look through the GitHub issues for bugs. Anything tagged with `bug` is
Look through the GitHub issues. Issues tagged with `#bug` is
open to whoever wants to implement it.
### Implement Features
Look through the GitHub issues for features. Anything tagged with
`feature` or `starter_task` is open to whoever wants to implement it.
Look through the GitHub issues. Issues tagged with
`#feature` is open to whoever wants to implement it.
### Improve Documentation
@@ -66,41 +98,104 @@ articles. See [Documentation](#documentation) for more details.
If you are proficient in a non-English language, you can help translate text strings from Superset's UI. You can jump in to the existing language dictionaries at `superset/translations/<language_code>/LC_MESSAGES/messages.po`, or even create a dictionary for a new language altogether. See [Translating](#translating) for more details.
### Submit Feedback
The best way to send feedback is to file an issue on GitHub. If you are proposing a feature:
- Explain in detail how it would work.
- Keep the scope as narrow as possible, to make it easier to implement.
- Remember that this is a volunteer-driven project, and that contributions are welcome :)
### Ask Questions
There is a dedicated [`apache-superset` tag](https://stackoverflow.com/questions/tagged/apache-superset) on [StackOverflow](https://stackoverflow.com/). Please use it when asking questions.
## Pull Request Guidelines
Before you submit a pull request from your forked repo, check that it
meets these guidelines:
A philosophy we would like to strongly encourage is
1. The pull request should include tests, either as doctests,
unit tests, or both.
2. Run `tox` and resolve all errors and test failures.
3. If the pull request adds functionality, the docs should be updated
as part of the same PR. Doc string are often sufficient, make
sure to follow the sphinx compatible standards.
4. If the pull request adds a Python dependency include it in `setup.py`
denoting any specific restrictions and in `requirements.txt` pinned to a
specific version which ensures that the application build is deterministic.
5. Please rebase and resolve all conflicts before submitting.
6. Please ensure the necessary checks pass and that code coverage does not
decrease.
7. If you are asked to update your pull request with some changes there's
no need to create a new one. Push your changes to the same branch.
> Before creating a PR, create an issue.
## Local development
The purpose is to separate problem from possible solutions.
First, [fork the repository on GitHub](https://help.github.com/articles/about-forks/), then clone it. You can clone the main repository directly instead, but you won't be able to send pull requests.
**Bug fixes:** If youre only fixing a small bug, its fine to submit a pull request right away but we highly recommend to file an issue detailing what youre fixing. This is helpful in case we dont accept that specific fix but want to keep track of the issue. Please keep in mind that the project maintainers reserve the rights to accept or reject incoming PRs, so it is better to separate the issue and the code to fix it from each other. In some cases, project maintainers may request you to create a separate issue from PR before proceeding.
**Refactor:** For small refactors, it can be a standalone PR itself detailing what you are refactoring and why. If there are concerns, project maintainers may request you to create a `#SIP` for the PR before proceeding.
**Feature/Large changes:** If you intend to change the public API, or make any non-trivial changes to the implementation, we requires you to file a new issue as `#SIP` (Superset Improvement Proposal). This lets us reach an agreement on your proposal before you put significant effort into it. You are welcome to submit a PR along with the SIP (sometimes necessary for demonstration), but we will not review/merge the code until the SIP is approved.
In general, small PRs are always easier to review than large PRs. The best practice is to break your work into smaller independent PRs and refer to the same issue. This will greatly reduce turnaround time.
Finally, never submit a PR that will put master branch in broken state. If the PR is part of multiple PRs to complete a large feature and cannot work on its own, you can create a feature branch and merge all related PRs into the feature branch before creating a PR from feature branch to master.
### Protocol
#### Authoring
- Fill in all sections of the PR template.
- Add prefix `[WIP]` to title if not ready for review (WIP = work-in-progress). We recommend creating a PR with `[WIP]` first and remove it once you have passed CI test and read through your code changes at least once.
- **Screenshots/GIFs:** Changes to user interface require before/after screenshots, or GIF for interactions
- Recommended capture tools ([Kap](https://getkap.co/), [LICEcap](https://www.cockos.com/licecap/), [Skitch](https://download.cnet.com/Skitch/3000-13455_4-189876.html))
- If no screenshot is provided, the committers will mark the PR with `need:screenshot` label and will not review until screenshot is provided.
- **Dependencies:** Be careful about adding new dependency and avoid unnecessary dependencies.
- For Python, include it in `setup.py` denoting any specific restrictions and in `requirements.txt` pinned to a specific version which ensures that the application build is deterministic.
- For Javascript, include new libraries in `package.json`
- **Tests:** The pull request should include tests, either as doctests, unit tests, or both. Make sure to resolve all errors and test failures. See [Testing](#testing) for how to run tests.
- **Documentation:** If the pull request adds functionality, the docs should be updated as part of the same PR. Doc string are often sufficient, make sure to follow the sphinx compatible standards.
- **CI:** Reviewers will not review the code until all CI tests are passed. Sometimes there can be flaky tests. You can close and open PR to re-run CI test. Please report if the issue persists. After the CI fix has been deployed to `master`, please rebase your PR.
- **Code coverage:** Please ensure that code coverage does not decrease.
- Remove `[WIP]` when ready for review. Please note that it may be merged soon after approved so please make sure the PR is ready to merge and do not expect more time for post-approval edits.
- If the PR was not ready for review and inactive for > 30 days, we will close it due to inactivity. The author is welcome to re-open and update.
#### Reviewing
- Use constructive tone when writing reviews.
- If there are changes required, state clearly what needs to be done before the PR can be approved.
- If you are asked to update your pull request with some changes there's no need to create a new one. Push your changes to the same branch.
- The committers reserve the right to reject any PR and in some cases may request the author to file an issue.
#### Merging
- At least one approval is required for merging a PR.
- PR is usually left open for at least 24 hours before merging.
- After the PR is merged, [close the corresponding issue(s)](https://help.github.com/articles/closing-issues-using-keywords/).
#### Post-merge Responsibility
- Project maintainers may contact the PR author if new issues are introduced by the PR.
- Project maintainers may revert your changes if a critical issue is found, such as breaking master branch CI.
## Managing Issues and PRs
To handle issues and PRs that are coming in, committers read issues/PRs and flag them with labels to categorize and help contributors spot where to take actions, as contributors usually have different expertises.
Triaging goals
- **For issues:** Categorize, screen issues, flag required actions from authors.
- **For PRs:** Categorize, flag required actions from authors. If PR is ready for review, flag required actions from reviewers.
First, add **Category labels (a.k.a. hash labels)**. Every issue/PR must have one hash label (except spam entry). Labels that begin with `#` defines issue/PR type:
| Label | for Issue | for PR |
|-------------------|-----------|--------|
| `#bug` | Bug report | Bug fix |
| `#code-quality` | Describe problem with code, architecture or productivity | Refactor, tests, tooling |
| `#feature` | New feature request | New feature implementation |
| `#refine` | Propose improvement that does not provide new features and is also not a bug fix nor refactor, such as adjust padding, refine UI style. | Implementation of improvement that does not provide new features and is also not a bug fix nor refactor, such as adjust padding, refine UI style. |
| `#doc` | Documentation | Documentation |
| `#question` | Troubleshooting: Installation, Running locally, Ask how to do something. Can be changed to `#bug` later. | N/A |
| `#SIP` | Superset Improvement Proposal | N/A |
| `#ASF` | Tasks related to Apache Software Foundation policy | Tasks related to Apache Software Foundation policy |
Then add other types of labels as appropriate.
- **Descriptive labels (a.k.a. dot labels):** These labels that begin with `.` describe the details of the issue/PR, such as `.ui`, `.js`, `.install`, `.backend`, etc. Each issue/PR can have zero or more dot labels.
- **Need labels:** These labels have pattern `need:xxx`, which describe the work required to progress, such as `need:rebase`, `need:update`, `need:screenshot`.
- **Risk labels:** These labels have pattern `risk:xxx`, which describe the potential risk on adopting the work, such as `risk:db-migration`. The intention was to better understand the impact and create awareness for PRs that need more rigorous testing.
- **Status labels:** These labels describe the status (`abandoned`, `wontfix`, `cant-reproduce`, etc.) Issue/PRs that are rejected or closed without completion should have one or more status labels.
- **Version labels:** These have the pattern `vx.x` such as `v0.28`. Version labels on issues describe the version the bug was reported on. Version labels on PR describe the first release that will include the PR.
Committers may also update title to reflect the issue/PR content if the author-provided title is not descriptive enough.
If the PR passes CI tests and does not have any `need:` labels, it is ready for review, add label `review` and/or `design-review`.
If an issue/PR has been inactive for >=30 days, it will be closed. If it does not have any status label, add `inactive`.
## Setup Local Environment for Development
First, [fork the repository on GitHub](https://help.github.com/articles/about-forks/), then clone it. You can clone the main repository directly, but you won't be able to send pull requests.
```bash
git clone git@github.com:your-username/incubator-superset.git
@@ -153,7 +248,8 @@ and start a simple web server so we can check out the docs in a browser:
```bash
cd docs/_build/html
python -m SimpleHTTPServer
python -m http.server # Python2 users should use SimpleHTTPServer
```
This will start a small Python web server listening on port 8000. Point your
@@ -201,11 +297,12 @@ Make sure your machine meets the [OS dependencies](https://superset.incubator.ap
```bash
# Create a virtual environemnt and activate it (recommended)
virtualenv venv
virtualenv -p python3 venv # setup a python3.6 virtualenv
source venv/bin/activate
# Install external dependencies
pip install -r requirements.txt
pip install -r requirements-dev.txt
# Install Superset in editable (development) mode
pip install -e .
@@ -221,8 +318,11 @@ superset init
# Load some data to play with
superset load_examples
# Start the Flask web server (but see below for frontend asset compilation)
superset runserver -d
# Start the Flask dev web server from inside the `superset` dir at port 8088
# Note that your page may not have css at this point.
# See instructions below how to build the front-end assets.
cd superset
FLASK_ENV=development flask run -p 8088 --with-threads --reload --debugger
```
#### Logging to the browser console
@@ -230,7 +330,7 @@ superset runserver -d
This feature is only available on Python 3. When debugging your application, you can have the server logs sent directly to the browser console:
```bash
superset runserver -d --console-log
FLASK_ENV=development flask run -p 8088 --with-threads --reload --debugger --console-log
```
You can log anything to the browser console, including objects:
@@ -241,41 +341,29 @@ app.logger.error('An exception occurred!')
app.logger.info(form_data)
```
### Frontend assets
### Frontend Assets
Frontend assets (JavaScript, CSS, and images) must be compiled in order to properly display the web UI. The `superset/assets` directory contains all NPM-managed front end assets. Note that there are additional frontend assets bundled with Flask-Appbuilder (e.g. jQuery and bootstrap); these are not managed by NPM, and may be phased out in the future.
First, be sure you are using recent versions of NodeJS and npm. Using [nvm](https://github.com/creationix/nvm) to manage them is recommended.
#### Prerequisite
#### Installing Dependencies
Install third-party dependencies listed in `package.json`:
```bash
# From the root of the repository
cd superset/assets
# Install yarn, a replacement for `npm install`
npm install -g yarn
# Install dependencies
yarn install
# Install dependencies from `package-lock.json`
npm ci
```
Finally, to compile frontend assets, run any of the following commands.
#### Building
```bash
# Start a watcher that recompiles your assets as you modify them (reload your browser to see changes)
npm run dev
# Compile the Javascript and CSS in production/optimized mode for official releases
npm run prod
# Copy a conf file from the frontend to the backend
npm run sync-backend
```
#### Webpack dev server
Alternatively, you can run the Webpack dev server, which runs on port 9000 and proxies non-asset requests to the Flask server on port 8088. After pointing your browser to it, updates to asset sources will be reflected in-browser without a refresh.
You can run the Webpack dev server (in a separate terminal from Flask), which runs on port 9000 and proxies non-asset requests to the Flask server on port 8088. After pointing your browser to `http://localhost:9000`, updates to asset sources will be reflected in-browser without a refresh.
```bash
# Run the dev server
@@ -288,24 +376,69 @@ npm run dev-server -- --port=9001
npm run dev-server -- --supersetPort=8081
```
#### Upgrading NPM packages
Alternatively you can use one of the following commands.
After adding or upgrading an NPM package by changing `package.json`, you must run `yarn install`, which will regenerate the `yarn.lock` file. Then, be sure to commit the new `yarn.lock` so that other users' builds are reproducible. See [the Yarn docs](https://yarnpkg.com/blog/2016/11/24/lockfiles-for-all/) for more information.
```bash
# Start a watcher that recompiles your assets as you modify them (but have to manually reload your browser to see changes.)
npm run dev
# Compile the Javascript and CSS in production/optimized mode for official releases
npm run prod
# Copy a conf file from the frontend to the backend
npm run sync-backend
```
#### Updating NPM packages
Use npm in the prescribed way, making sure that
`superset/assets/package-lock.json` is updated according to `npm`-prescribed
best practices.
#### Feature flags
Superset supports a server-wide feature flag system, which eases the incremental development of features. To add a new feature flag, simply modify `superset_config.py` with something like the following:
```
FEATURE_FLAGS = {
'SCOPED_FILTER': True,
}
```
If you want to use the same flag in the client code, also add it to the FeatureFlag TypeScript enum in `superset/assets/src/featureFlags.ts`. For example,
```
export enum FeatureFlag {
SCOPED_FILTER = 'SCOPED_FILTER',
}
```
## Linting
Lint the project with:
```bash
# for python
tox -e flake8
# for javascript
cd superset/assets
npm ci
npm run lint
```
## Testing
All tests are carried out in [tox](http://tox.readthedocs.io/en/latest/index.html)
a standardized testing framework mostly for Python (though we also used it for Javascript).
### Python Testing
All python tests are carried out in [tox](http://tox.readthedocs.io/en/latest/index.html)
a standardized testing framework.
All python tests can be run with any of the tox [environments](http://tox.readthedocs.io/en/latest/example/basic.html#a-simple-tox-ini-default-environments), via,
```bash
tox -e <environment>
```
i.e.,
For example,
```bash
tox -e py27
tox -e py36
```
@@ -325,17 +458,16 @@ Note that the test environment uses a temporary directory for defining the
SQLite databases which will be cleared each time before the group of test
commands are invoked.
### JavaScript testing
### JavaScript Testing
We use [Jest](https://jestjs.io/) and [Enzyme](http://airbnb.io/enzyme/) to test Javascript. Tests can be run with:
```bash
cd superset/assets/spec
npm install
cd superset/assets
npm run test
```
### Integration testing
### Integration Testing
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:
@@ -356,18 +488,6 @@ npm run build
npm run cypress run
```
### Linting
Lint the project with:
```bash
# for python
tox -e flake8
# for javascript
tox -e eslint
```
## Translating
We use [Babel](http://babel.pocoo.org/en/latest/) to translate Superset. In Python files, we import the magic `_` function using:
@@ -379,10 +499,10 @@ from flask_babel import lazy_gettext as _
then wrap our translatable strings with it, e.g. `_('Translate me')`. During extraction, string literals passed to `_` will be added to the generated `.po` file for each language for later translation.
At runtime, the `_` function will return the translation of the given string for the current language, or the given string itself if no translation is available.
In JavaScript, the technique is similar: we import `t` (simple translation), `tn` (translation containing a number), and `TCT` (translating entire React Components).
In JavaScript, the technique is similar: we import `t` (simple translation), `tn` (translation containing a number).
```javascript
import {t, tn, TCT} from locales;
import { t, tn } from '@superset-ui/translation';
```
### Enabling language selection
@@ -406,8 +526,11 @@ fabmanager babel-extract --target superset/translations --output superset/transl
```
You can then translate the strings gathered in files located under
`superset/translation`, where there's one per language. For the translations
to take effect:
`superset/translation`, where there's one per language. You can use [Poedit](https://poedit.net/features)
to translate the `po` file more conveniently.
There are some [tutorials in the wiki](https://wiki.lxde.org/en/Translate_*.po_files_with_Poedit).
For the translations to take effect:
```bash
# In the case of JS translation, we need to convert the PO file into a JSON file, and we need the global download of the npm package po2json.
@@ -421,6 +544,8 @@ If you get errors running `po2json`, you might be running the Ubuntu package wit
name, rather than the NodeJS package (they have a different format for the arguments). If
there is a conflict, you may need to update your `PATH` environment variable or fully qualify
the executable path (e.g. `/usr/local/bin/po2json` instead of `po2json`).
If you get a lot of `[null,***]` in `messages.json`, just delete all the `null,`.
For example, `"year":["年"]` is correct while `"year":[null,"年"]`is incorrect.
### Creating a new language dictionary

11
DISCLAIMER Normal file
View File

@@ -0,0 +1,11 @@
DISCLAIMER
Apache Superset (incubating) is an effort undergoing incubation at the Apache
Software Foundation (ASF), sponsored by the Apache Incubator PMC.
Incubation is required of all newly accepted projects until a further review
indicates that the infrastructure, communications, and decision making process
have stabilized in a manner consistent with other successful ASF projects.
While incubation status is not necessarily a reflection of the completeness or
stability of the code, it does indicate that the project has yet to be fully
endorsed by the ASF.

View File

@@ -1,8 +1,26 @@
<!--
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.
-->
Make sure these boxes are checked before submitting your issue - thank you!
- [ ] I have checked the superset logs for python stacktraces and included it here as text if any
- [ ] I have reproduced the issue with at least the latest released version of superset
- [ ] I have checked the issue tracker for the same issue and I haven't found one similar
- [ ] I have checked the superset logs for python stacktraces and included it here as text if there are any.
- [ ] I have reproduced the issue with at least the latest released version of superset.
- [ ] I have checked the issue tracker for the same issue and I haven't found one similar.
### Superset version

View File

@@ -199,3 +199,35 @@ 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.
============================================================================
APACHE SUPERSET SUBCOMPONENTS:
The Apache Superset project contains subcomponents with separate copyright
notices and license terms. Your use of the source code for the these
subcomponents is subject to the terms and conditions of the following
licenses.
========================================================================
Third party Apache 2.0 licenses
========================================================================
========================================================================
MIT licenses
========================================================================
(MIT License) cal-heatmap v3.6.2 (https://github.com/wa0x6e/cal-heatmap)
========================================================================
BSD 2-Clause licenses
========================================================================
========================================================================
BSD 3-Clause licenses
========================================================================
(BSD 3 License) parallel-coordinates v0.7.0 (http://syntagmatic.github.com/parallel-coordinates/)
========================================================================
Creative Commons Attribution 4.0
========================================================================

View File

@@ -1,3 +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.
#
include NOTICE
include LICENSE.txt
graft licenses/
include README.md
recursive-include superset/data *
recursive-include superset/migrations *

8
NOTICE Normal file
View File

@@ -0,0 +1,8 @@
Apache Superset
Copyright 2016-2019 The Apache Software Foundation
This product includes software developed at The Apache Software
Foundation (http://www.apache.org/).
This product includes data licensed under a Creative Commons Attribution 4.0
License (http://www.diva-gis.org/Data).

113
README.md
View File

@@ -1,3 +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.
-->
Superset
=========
@@ -98,7 +116,7 @@ Superset can be used to visualize data out of most databases:
to find out whether it will work with Superset
Druid!
Apache Druid (Incubating)!
------
On top of having the ability to query your relational databases,
@@ -148,45 +166,54 @@ Who uses Apache Superset (incubating)?
Here's a list of organizations who have taken the time to send a PR to let
the world know they are using Superset. Join our growing community!
- [AiHello](https://www.aihello.com)
- [Airbnb](https://github.com/airbnb)
- [Airboxlab](https://foobot.io)
- [Aktia Bank plc](https://www.aktia.com)
- [Amino](https://amino.com)
- [Ascendica Development](http://ascendicadevelopment.com)
- [Astronomer](https://www.astronomer.io)
- [Brilliant.org](https://brilliant.org/)
- [Capital Service S.A.](http://capitalservice.pl)
- [Clark.de](http://clark.de/)
- [CnOvit](http://www.cnovit.com/)
- [Digit Game Studios](https://www.digitgaming.com/)
- [Douban](https://www.douban.com/)
- [Endress+Hauser](http://www.endress.com/)
- [FBK - ICT center](http://ict.fbk.eu)
- [Faasos](http://faasos.com/)
- [GfK Data Lab](http://datalab.gfk.com)
- [Konfío](http://konfio.mx)
- [Lime](https://www.limebike.com/)
- [Lyft](https://www.lyft.com/)
- [Maieutical Labs](https://maieuticallabs.it)
- [Myra Labs](http://www.myralabs.com/)
- [PeopleDoc](https://www.people-doc.com)
- [Ona](https://ona.io)
- [Pronto Tools](http://www.prontotools.io)
- [Qunar](https://www.qunar.com/)
- [ScopeAI](https://www.getscopeai.com)
- [Shopee](https://shopee.sg)
- [Shopkick](https://www.shopkick.com)
- [Tails.com](https://tails.com)
- [THEICONIC](http://theiconic.com.au/)
- [Tobii](http://www.tobii.com/)
- [Tooploox](https://www.tooploox.com/)
- [Twitter](https://twitter.com/)
- [Udemy](https://www.udemy.com/)
- [VIPKID](https://www.vipkid.com.cn/)
- [Windsor.ai](https://www.windsor.ai/)
- [Yahoo!](https://yahoo.com/)
- [Zaihang](http://www.zaih.com/)
- [Zalando](https://www.zalando.com)
- [Fordeal](http://www.fordeal.com)
1. [AiHello](https://www.aihello.com)
1. [Airbnb](https://github.com/airbnb)
1. [Airboxlab](https://foobot.io)
1. [Aktia Bank plc](https://www.aktia.com)
1. [Amino](https://amino.com)
1. [Apollo GraphQL](https://www.apollographql.com/)
1. [Ascendica Development](http://ascendicadevelopment.com)
1. [Astronomer](https://www.astronomer.io)
1. [Brilliant.org](https://brilliant.org/)
1. [Capital Service S.A.](http://capitalservice.pl)
1. [Clark.de](http://clark.de/)
1. [CnOvit](http://www.cnovit.com/)
1. [Dial Once](https://www.dial-once.com/en/)
1. [Digit Game Studios](https://www.digitgaming.com/)
1. [Douban](https://www.douban.com/)
1. [Endress+Hauser](http://www.endress.com/)
1. [FBK - ICT center](http://ict.fbk.eu)
1. [Faasos](http://faasos.com/)
1. [Fordeal](http://www.fordeal.com)
1. [GfK Data Lab](http://datalab.gfk.com)
1. [Grassroot](https://www.grassrootinstitute.org/)
1. [HuiShouBao](http://www.huishoubao.com/)
1. [jampp](https://jampp.com/)
1. [Konfío](http://konfio.mx)
1. [Kuaishou](https://www.kuaishou.com/)
1. [Lime](https://www.limebike.com/)
1. [Lyft](https://www.lyft.com/)
1. [Maieutical Labs](https://maieuticallabs.it)
1. [Myra Labs](http://www.myralabs.com/)
1. [PeopleDoc](https://www.people-doc.com)
1. [Ona](https://ona.io)
1. [Pronto Tools](http://www.prontotools.io)
1. [QPID Health](http://www.qpidhealth.com/ )
1. [Qunar](https://www.qunar.com/)
1. [ScopeAI](https://www.getscopeai.com)
1. [Shopee](https://shopee.sg)
1. [Shopkick](https://www.shopkick.com)
1. [Steamroot](https://streamroot.io/)
1. [Showmax](https://tech.showmax.com)
1. [Tails.com](https://tails.com)
1. [THEICONIC](http://theiconic.com.au/)
1. [Tobii](http://www.tobii.com/)
1. [Tooploox](https://www.tooploox.com/)
1. [TrustMedis](https://trustmedis.com)
1. [Twitter](https://twitter.com/)
1. [Udemy](https://www.udemy.com/)
1. [VIPKID](https://www.vipkid.com.cn/)
1. [Windsor.ai](https://www.windsor.ai/)
1. [Yahoo!](https://yahoo.com/)
1. [Zaihang](http://www.zaih.com/)
1. [Zalando](https://www.zalando.com)

View File

@@ -1,3 +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.
-->
## Refresh documentation website
Every once in a while we want to compile the documentation and publish it.
@@ -28,66 +46,80 @@ git commit -a -m "New doc version"
git push origin master
```
## Publishing a PyPI release
# Apache Releases
We create a branch that goes along each minor release `0.24`
and micro releases get corresponding tags as in `0.24.0`. Git history should
never be altered in release branches.
Bug fixes and security-related patches get cherry-picked
(usually from master) as in `git cherry-pick -x {SHA}`.
You'll probably want to run these commands manually and understand what
they do prior to doing so.
Following a set of cherries being picked, a release can be pushed to
PyPI as follows:
First you need to setup a few things. This is a one-off and doesn't
need to be done at every release.
```bash
# branching off of master
git checkout -b 0.25
# Create PGP Key
gpg --gen-key
# Checkout ASF dist repo
# cherry-picking a SHA
git cherry-pick -x f9d85bd2e1fd9bc233d19c76bed09467522b968a
# repeat with other SHAs, don't forget the -x
svn checkout https://dist.apache.org/repos/dist/dev/incubator/superset/ ~/svn/superset_dev
# source of thruth for release numbers live in package.json
vi superset/assets/package.json
# hard code release in file, commit to the release branch
git commit -a -m "0.25.0"
# create the release tag in the release branch
git tag 0.25.0
git push apache 0.25 --tags
# check travis to confirm the build succeeded as
# you shouldn't assume that a clean cherry will be clean
# when landing on a new sundae
# compile the JS, and push to pypi
# to run this part you'll need a pypi account and rights on the
# superset package. Committers that want to ship releases
# should have this access.
# You'll also need a `.pypirc` as specified here:
# http://peterdowns.com/posts/first-time-with-pypi.html
./pypi_push.sh
# publish an update to the CHANGELOG.md for the right version range
# looking the latest CHANGELOG entry for the second argument
./gen_changelog.sh 0.22.1 0.25.0
# this will overwrite the CHANGELOG.md with only the version range
# so you'll want to copy paste that on top of the previous CHANGELOG.md
# open a PR against `master`
svn checkout https://dist.apache.org/repos/dist/incubator/superset/ ~/svn/superset
cd ~/svn/superset
# Add your GPG pub key to KEYS file. Replace "Maxime Beauchemin" with your name
export FULLNAME="Maxime Beauchemin"
(gpg --list-sigs $FULLNAME && gpg --armor --export $FULLNAME ) >> KEYS
# Commit the changes
svn commit -m "Add PGP keys of new Superset committer"
```
In the future we'll start publishing release candidates for minor releases
only, but typically not for micro release.
The process will be similar to the process described above, expect the
tags will be formatted `0.25.0rc1`, `0.25.0rc2`, ..., until consensus
is reached.
Now let's craft a source release
```bash
# Assuming these commands are executed from the root of the repo
# Setting a VERSION var will be useful
export VERSION=0.31.0rc18
We should also have a Github PR label process to target the proper
release, and tooling helping keeping track of all the cherries and
target versions.
# Let's create a git tag
git tag -f ${VERSION}
For Apache releases, the process will be a bit heavier and should get
documented here. There will be extra steps for signing the binaries,
with a PGP key and providing MD5, Apache voting, as well as
publishing to Apache's SVN repository. View the ASF docs for more
information.
# [WARNING!] This command wipes everything in your repo that is
# gitignored in preparation for the source release.
# You may want to check that there's nothing your care about here first.
# Alternatively you could clone the repo into another location as in
# git clone git@github.com:apache/incubator-superset.git superset-releases
git clean -fxd
# Create the target folder
mkdir -p ~/svn/superset_dev/${VERSION}/
git archive \
--format=tar.gz ${VERSION} \
--prefix=apache-superset-${VERSION}/ \
-o ~/svn/superset_dev/${VERSION}/apache-superset-${VERSION}-source.tar.gz
cd ~/svn/superset_dev/
scripts/sign.sh apache-superset-${VERSION}-source.tar.gz
```
Now let's ship this RC into svn's dev folder
```bash
# cp or mv the files over to the svn repo
cd ~/svn/superset_dev/
svn add ${VERSION}
svn commit
```
Now you're ready to start the VOTE thread.
Upon a successful vote, you'll have to copy the folder into the non-"dev/"
folder.
```bash
cp -r ~/svn/superset_dev/${VERSION}/ ~/svn/superset/${VERSION}/
cd ~/svn/superset/
svn add ${VERSION}
svn commit
```
Now you can announce the release on the mailing list, make sure to use the
proper template

View File

@@ -1,8 +1,51 @@
<!--
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.
-->
# Updating Superset
This file documents any backwards-incompatible changes in Superset and
assists people when migrating to a new version.
## Superset 0.32.0
* If you use `Hive` or `Presto`, we've moved some dependencies that were
in the main package as optional now. To get these packages,
run `pip install superset[presto]` and/or `pip install superset[hive]` as
required.
* [5445](https://github.com/apache/incubator-superset/pull/5445) : a change
which prevents encoding of empty string from form data in the datanbase.
This involves a non-schema changing migration which does potentially impact
a large number of records. Scheduled downtime may be advised.
## Superset 0.31.0
* boto3 / botocore was removed from the dependency list. If you use s3
as a place to store your SQL Lab result set or Hive uploads, you may
have to rely on an alternate requirements.txt file to install those
dependencies.
* From 0.31.0 onwards, we recommend not using the npm package `yarn` in
favor of good old `npm install`. While yarn should still work just fine,
you should probably align to guarantee builds similar to the ones we
use in testing and across the community in general.
## Superset 0.29.0
* India was removed from the "Country Map" visualization as the geojson
file included in the package was very large
## Superset 0.28.0
* Support for Python 2 is deprecated, we only support >=3.6 from
`0.28.0` onwards

View File

@@ -1,3 +1,20 @@
#
# 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.
#
# A generic, single database configuration.
[alembic]

17
contrib/docker/.env Normal file
View File

@@ -0,0 +1,17 @@
#
# 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.
#
COMPOSE_PROJECT_NAME=superset

View File

@@ -1,60 +1,72 @@
#
# 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.
#
FROM python:3.6
MAINTAINER Xiao Hanyu <hanyu.xiao@shopeemobile.com>
# Add a normal user
RUN useradd --user-group --create-home --shell /bin/bash work
RUN useradd --user-group --create-home --no-log-init --shell /bin/bash superset
# Configure environment
ENV LANG=C.UTF-8 \
LC_ALL=C.UTF-8 \
HOME=/home/work
LC_ALL=C.UTF-8
RUN apt-get update -y
# Install some dependencies
# http://airbnb.io/superset/installation.html#os-dependencies
RUN apt-get update -y && apt-get install -y build-essential libssl-dev \
# Install dependencies to fix `curl https support error` and `elaying package configuration warning`
RUN apt-get install -y apt-transport-https apt-utils
# Install superset dependencies
# https://superset.incubator.apache.org/installation.html#os-dependencies
RUN apt-get install -y build-essential libssl-dev \
libffi-dev python3-dev libsasl2-dev libldap2-dev libxi-dev
# Install extra useful tool for development
RUN apt-get install -y vim less postgresql-client redis-tools
# Install nodejs for custom build
# https://github.com/apache/incubator-superset/blob/master/docs/installation.rst#making-your-own-build
# https://superset.incubator.apache.org/installation.html#making-your-own-build
# https://nodejs.org/en/download/package-manager/
RUN curl -sL https://deb.nodesource.com/setup_8.x | bash -
RUN apt-get install -y nodejs
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -; \
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list; \
apt-get update; \
apt-get install -y yarn
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - \
&& apt-get install -y nodejs
RUN mkdir $HOME/incubator-superset
WORKDIR /home/superset
WORKDIR $HOME/incubator-superset
COPY requirements.txt .
COPY requirements-dev.txt .
COPY ./ ./
RUN pip install --upgrade setuptools pip \
&& pip install -r requirements.txt -r requirements-dev.txt \
&& rm -rf /root/.cache/pip
RUN pip install --upgrade setuptools pip
RUN pip install -e . && pip install -r requirements-dev.txt
COPY --chown=superset:superset superset superset
ENV PATH=/home/work/incubator-superset/superset/bin:$PATH \
PYTHONPATH=./superset/:$PYTHONPATH
ENV PATH=/home/superset/superset/bin:$PATH \
PYTHONPATH=/home/superset/superset/:$PYTHONPATH
COPY docker-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
RUN ln -s usr/local/bin/docker-entrypoint.sh /entrypoint.sh # backwards compat
USER superset
COPY ./superset ./superset
RUN chown -R work:work $HOME
RUN cd superset/assets \
&& npm ci \
&& npm run sync-backend \
&& npm run build \
&& rm -rf node_modules
USER work
RUN cd superset/assets && yarn
RUN cd superset/assets && npm run build
COPY contrib/docker/docker-init.sh .
COPY contrib/docker/docker-entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
HEALTHCHECK CMD ["curl", "-f", "http://localhost:8088/health"]
ENTRYPOINT ["docker-entrypoint.sh"]
EXPOSE 8088

View File

@@ -1,5 +0,0 @@
#!/usr/bin/env bash
set -ex
docker build -t apache/incubator-superset -f Dockerfile .

View File

@@ -1,15 +1,32 @@
#
# 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.
#
version: '3'
services:
redis:
image: redis:3.2
restart: always
restart: unless-stopped
ports:
- 6379:6379
volumes:
- redis:/data
postgres:
image: postgres:10
restart: always
restart: unless-stopped
environment:
POSTGRES_DB: superset
POSTGRES_PASSWORD: superset
@@ -18,9 +35,12 @@ services:
- 5432:5432
volumes:
- postgres:/var/lib/postgresql/data
superset:
image: apache/incubator-superset
restart: always
build:
context: ../../
dockerfile: contrib/docker/Dockerfile
restart: unless-stopped
environment:
POSTGRES_DB: superset
POSTGRES_USER: superset
@@ -29,20 +49,22 @@ services:
POSTGRES_PORT: 5432
REDIS_HOST: redis
REDIS_PORT: 6379
SUPERSET_ENV: local
# If using production, comment development volume below
#SUPERSET_ENV: production
SUPERSET_ENV: development
ports:
- 8088:8088
command: "tail -f /dev/null"
depends_on:
- postgres
- redis
volumes:
- .:/home/work/incubator-superset
- superset-node-modules:/home/work/incubator-superset/superset/assets/node_modules
# this is needed to communicate with the postgres and redis services
- ./superset_config.py:/home/superset/superset/superset_config.py
# this is needed for development, remove with SUPERSET_ENV=production
- ../../superset:/home/superset/superset
volumes:
postgres:
external: false
redis:
external: false
superset-node-modules:
external: false

32
contrib/docker/docker-entrypoint.sh Normal file → Executable file
View File

@@ -1,12 +1,38 @@
#!/bin/bash
#
# 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.
#
set -ex
if [ "$#" -ne 0 ]; then
exec "$@"
elif [ "$SUPERSET_ENV" = "local" ]; then
superset runserver -d
elif [ "$SUPERSET_ENV" = "development" ]; then
celery worker --app=superset.sql_lab:celery_app --pool=gevent -Ofair &
# needed by superset runserver
(cd superset/assets/ && npm ci && npm run sync-backend)
(cd superset/assets/ && npm run dev) &
FLASK_APP=superset:app flask run -p 8088 --with-threads --reload --debugger --host=0.0.0.0
elif [ "$SUPERSET_ENV" = "production" ]; then
superset runserver -a 0.0.0.0 -w $((2 * $(getconf _NPROCESSORS_ONLN) + 1))
celery worker --app=superset.sql_lab:celery_app --pool=gevent -Ofair &
gunicorn --bind 0.0.0.0:8088 \
--workers $((2 * $(getconf _NPROCESSORS_ONLN) + 1)) \
--timeout 60 \
--limit-request-line 0 \
--limit-request-field_size 0 \
superset:app
else
superset --help
fi

32
contrib/docker/docker-init.sh Normal file → Executable file
View File

@@ -1,5 +1,20 @@
#!/usr/bin/env bash
#
# 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.
#
set -ex
# Create an admin user (you will be prompted to set username, first and last name before setting a password)
@@ -8,17 +23,10 @@ fabmanager create-admin --app superset
# Initialize the database
superset db upgrade
# Load some data to play with
superset load_examples
if [ "$SUPERSET_LOAD_EXAMPLES" = "yes" ]; then
# Load some data to play with
superset load_examples
fi
# Create default roles and permissions
superset init
# Need to run `npm run build` when enter contains for first time
cd superset/assets && npm run build && cd ../../
# Start superset worker for SQL Lab
superset worker &
# To start a development web server, use the -d switch
superset runserver -d

View File

@@ -1,9 +1,19 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
import os

0
cypress.json Normal file
View File

View File

@@ -1,3 +1,19 @@
#
# 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.
#
# Makefile for Sphinx documentation
#

18
docs/_static/docs.css vendored
View File

@@ -1,3 +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.
*/
body {
padding-top: 0px;
}

View File

@@ -1,95 +0,0 @@
{% extends "!layout.html" %}
{% set bootswatch_css_custom = ['_static/docs.css'] %}
{%- block content %}
{{ navBar() }}
{% if pagename == 'index' %}
<div id="carousel" class="carousel slide" data-ride="carousel">
<!-- Indicators -->
<ol class="carousel-indicators">
<li data-target="#carousel" data-slide-to="0" class="active"></li>
<li data-target="#carousel" data-slide-to="1"></li>
<li data-target="#carousel" data-slide-to="2"></li>
<li data-target="#carousel" data-slide-to="3"></li>
<li data-target="#carousel" data-slide-to="4"></li>
</ol>
<!-- Wrapper for slides -->
<div class="carousel-inner" role="listbox">
<div class="item active text-center">
<img src="_static/img/dash.png">
<div class="carousel-caption">
<div>
<h1>Superset</h1>
<p>
an open source data visualization platform
</p>
</div>
</div>
</div>
<div class="item">
<img src="_static/img/bubble.png">
<div class="carousel-caption">
<h2>Explore your data
</h2>
<p>
Intuitively navigate your data while slicing, dicing, and
visualizing through a rich set of widgets
</p>
</div>
</div>
<div class="item">
<img src="_static/img/dash.png">
<div class="carousel-caption">
<h2>Create and share dashboards</h2>
<p>Assemble many data visualization "slices" into a rich collection</p>
</div>
</div>
<div class="item">
<img src="_static/img/cloud.png">
<div class="carousel-caption">
<h2>Extend</h2>
<p>Join the community and take part in extending the widget library</p>
</div>
</div>
<div class="item">
<img src="_static/img/servers.jpg">
<div class="carousel-caption">
<h2>Connect</h2>
<p>
Access data from MySql, Presto.db, Postgres, RedShift, Oracle, MsSql,
SQLite, and more through the SqlAlchemy integration. You can also
query realtime data blazingly fast out of Druid.io
</p>
</div>
</div>
</div>
<!-- Controls -->
<div>
<a class="left carousel-control" href="#carousel" role="button" data-slide="prev">
<span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</a>
<a class="right carousel-control" href="#carousel" role="button" data-slide="next">
<span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</a>
</div>
</div>
<hr/>
<div class="container">
<div class="jumbotron">
<h1>Superset</h1>
<p>
is an open source data visualization platform that provides easy
exploration of your data and allows you to create and share
beautiful charts and dashboards
</p>
</div>
</div>
{% endif %}
<div class="container mainbody">
{% block body %}{% endblock %}
</div>
{%- endblock %}

View File

@@ -1,4 +1,20 @@
#!/usr/bin/env bash
#
# 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.
#
rm -rf _build
make html
#cp -r ../superset/assets/images/ _build/html/_static/img/

View File

@@ -1,3 +1,19 @@
# 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.
# superset documentation build configuration file, created by
# sphinx-quickstart on Thu Dec 17 15:42:06 2015.
#
@@ -50,7 +66,7 @@ master_doc = 'index'
# General information about the project.
project = "Apache Superset"
copyright = 'Copyright © 2018 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.'
author = u'Maxime Beauchemin'
author = u'Apache Superset Dev'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
@@ -226,7 +242,7 @@ latex_elements = {
# author, documentclass [howto, manual, or own class]).
latex_documents = [
(master_doc, 'superset.tex', u'Superset Documentation',
u'Maxime Beauchemin', 'manual'),
u'Apache Superset Dev', 'manual'),
]
# The name of an image file (relative to this directory) to place at the top of

View File

@@ -1,19 +1,36 @@
.. 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.
Druid
=====
Superset has a native connector to Druid, and a majority of Druid's
Superset has a native connector to Druid and a majority of Druid's
features are accessible through Superset.
.. note ::
Druid now supports SQL and can be accessed through Superset's
SQLAlchemy connector. The long term vision is to deprecate
SQLAlchemy connector. The long-term vision is to deprecate
the Druid native REST connector and query Druid exclusively through
the SQL interface.
Aggregations
------------
Common aggregations, or Druid metrics can be defined and used in Superset.
Common aggregations or Druid metrics can be defined and used in Superset.
The first and simpler use case is to use the checkbox matrix expose in your
datasource's edit view (``Sources -> Druid Datasources ->
[your datasource] -> Edit -> [tab] List Druid Column``).
@@ -21,8 +38,8 @@ Clicking the ``GroupBy`` and ``Filterable`` checkboxes will make the column
appear in the related dropdowns while in explore view. Checking
``Count Distinct``, ``Min``, ``Max`` or ``Sum`` will result in creating
new metrics that will appear in the ``List Druid Metric`` tab upon saving the
datasource. By editing these metrics, you'll notice that they their ``json``
element correspond to Druid aggregation definition. You can create your own
datasource. By editing these metrics, you'll notice that their ``json``
element corresponds to Druid aggregation definition. You can create your own
aggregations manually from the ``List Druid Metric`` tab following Druid
documentation.
@@ -33,7 +50,7 @@ Post-Aggregations
-----------------
Druid supports post aggregation and this works in Superset. All you have to
do is creating a metric, much like you would create an aggregation manually,
do is create a metric, much like you would create an aggregation manually,
but specify ``postagg`` as a ``Metric Type``. You then have to provide a valid
json post-aggregation definition (as specified in the Druid docs) in the
Json field.

View File

@@ -1,3 +1,20 @@
.. 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.
FAQ
===
@@ -88,7 +105,7 @@ It's easy: use the ``Filter Box`` widget, build a slice, and add it to your
dashboard.
The ``Filter Box`` widget allows you to define a query to populate dropdowns
that can be use for filtering. To build the list of distinct values, we
that can be used for filtering. To build the list of distinct values, we
run a query, and sort the result by the metric you provide, sorting
descending.

View File

@@ -1,3 +1,20 @@
.. 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.
Visualizations Gallery
======================

View File

@@ -1,3 +1,20 @@
.. 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.
Importing and Exporting Datasources
===================================
@@ -49,7 +66,7 @@ By default, default (null) values will be omitted. Use the ``-d`` flag to includ
If you want back references to be included (e.g. a column to include the table id
it belongs to) use the ``-b`` flag.
Alternatively you can export datasources using the UI:
Alternatively, you can export datasources using the UI:
1. Open **Sources** -> **Databases** to export all tables associated to a
single or multiple databases. (**Tables** for one or more tables,
@@ -95,7 +112,7 @@ those would be synchronised as well.
If you don't supply the sync flag (``-s``) importing will only add and update (override) fields.
E.g. you can add a ``verbose_name`` to the the column ``ds`` in the table ``random_time_series`` from the example datasets
E.g. you can add a ``verbose_name`` to the column ``ds`` in the table ``random_time_series`` from the example datasets
by saving the following YAML to file and then running the ``import_datasources`` command. ::
databases:

View File

@@ -1,3 +1,20 @@
.. 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.
|apache_img| |superset_img|
.. |apache_img| image:: images/apache_feather.png

View File

@@ -1,3 +1,20 @@
.. 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.
Installation & Configuration
============================
@@ -23,7 +40,7 @@ flexible and lets you choose your web server (Gunicorn, Nginx, Apache),
your metadata database engine (MySQL, Postgres, MariaDB, ...),
your message queue (Redis, RabbitMQ, SQS, ...),
your results backend (S3, Redis, Memcached, ...), your caching layer
(memcached, Redis, ...), works well with services like NewRelic, StatsD and
(Memcached, Redis, ...), works well with services like NewRelic, StatsD and
DataDog, and has the ability to run analytic workloads against
most popular database technologies.
@@ -43,29 +60,36 @@ If you know docker, then you're lucky, we have shortcut road for you to
initialize development environment: ::
git clone https://github.com/apache/incubator-superset/
cd incubator-superset
cp contrib/docker/{docker-build.sh,docker-compose.yml,docker-entrypoint.sh,docker-init.sh,Dockerfile} .
cp contrib/docker/superset_config.py superset/
bash -x docker-build.sh
docker-compose up -d
docker-compose exec superset bash
bash docker-init.sh
cd incubator-superset/contrib/docker
# prefix with SUPERSET_LOAD_EXAMPLES=yes to load examples:
docker-compose run --rm superset ./docker-init.sh
# you can run this command everytime you need to start superset now:
docker-compose up
After several minutes for superset initialization to finish, you can open
a browser and view `http://localhost:8088` to start your journey.
From there, 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.
See also `CONTRIBUTING.md <https://github.com/apache/incubator-superset/blob/master/CONTRIBUTING.md#webpack-dev-server>`_,
for alternative way of serving the frontend.
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`.
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)
Or if you're curious and want to install superset from bottom up, then go
ahead.
Or if you're curious and want to install superset from bottom up, then go ahead.
OS dependencies
---------------
Superset stores database connection information in its metadata database.
For that purpose, we use the ``cryptography`` Python library to encrypt
connection passwords. Unfortunately this library has OS level dependencies.
connection passwords. Unfortunately, this library has OS level dependencies.
You may want to attempt the next step
("Superset installation and initialization") and come back to this step if
@@ -78,11 +102,11 @@ the required dependencies are installed: ::
sudo apt-get install build-essential libssl-dev libffi-dev python-dev python-pip libsasl2-dev libldap2-dev
**Ubuntu 16.04** If you have python3.5 installed alongside with python2.7, as is default on **Ubuntu 16.04 LTS**, run this command also: ::
**Ubuntu 18.04** If you have python3.6 installed alongside with python2.7, as is default on **Ubuntu 18.04 LTS**, run this command also: ::
sudo apt-get install build-essential libssl-dev libffi-dev python3.5-dev python-pip libsasl2-dev libldap2-dev
sudo apt-get install build-essential libssl-dev libffi-dev python3.6-dev python-pip libsasl2-dev libldap2-dev
otherwhise build for ``cryptography`` fails.
otherwise build for ``cryptography`` fails.
For **Fedora** and **RHEL-derivatives**, the following command will ensure
that the required dependencies are installed: ::
@@ -105,17 +129,18 @@ attempt it, download `get-pip.py <https://bootstrap.pypa.io/get-pip.py>`_, and r
Python virtualenv
-----------------
It is recommended to install Superset inside a virtualenv. Python 3 already ships virtualenv, for
Python 2 you need to install it. If it's packaged for your operating systems install it from there
otherwise you can install from pip: ::
It is recommended to install Superset inside a virtualenv. Python 3 already ships virtualenv.
But if it's not installed in your environment for some reason, you can install it
via the package for your operating systems, otherwise you can install from pip: ::
pip install virtualenv
You can create and activate a virtualenv by: ::
# virtualenv is shipped in Python 3 as pyvenv
virtualenv venv
. ./venv/bin/activate
# virtualenv is shipped in Python 3.6+ as venv instead of pyvenv.
# See https://docs.python.org/3.6/library/venv.html
python3 -m venv venv
. venv/bin/activate
On windows the syntax for activating it is a bit different: ::
@@ -138,7 +163,7 @@ Follow these few simple steps to install Superset.::
# Install superset
pip install superset
# Create an admin user (you will be prompted to set username, first and last name before setting a password)
# Create an admin user (you will be prompted to set a username, first and last name before setting a password)
fabmanager create-admin --app superset
# Initialize the database
@@ -173,14 +198,14 @@ application in a way that works well in your environment. Here's an **async**
setup known to work well in production: ::
 gunicorn \
-w 10 \
-k gevent \
--timeout 120 \
-b 0.0.0.0:6666 \
--limit-request-line 0 \
--limit-request-field_size 0 \
--statsd-host localhost:8125 \
superset:app
-w 10 \
-k gevent \
--timeout 120 \
-b 0.0.0.0:6666 \
--limit-request-line 0 \
--limit-request-field_size 0 \
--statsd-host localhost:8125 \
superset:app
Refer to the
`Gunicorn documentation <http://docs.gunicorn.org/en/stable/design.html>`_
@@ -188,7 +213,7 @@ for more information.
Note that *gunicorn* does not
work on Windows so the `superset runserver` command is not expected to work
in that context. Also note that the development web
in that context. Also, note that the development web
server (`superset runserver -d`) is not intended for production use.
If not using gunicorn, you may want to disable the use of flask-compress
@@ -197,9 +222,9 @@ by setting `ENABLE_FLASK_COMPRESS = False` in your `superset_config.py`
Flask-AppBuilder Permissions
----------------------------
By default every time the Flask-AppBuilder (FAB) app is initialized the
By default, every time the Flask-AppBuilder (FAB) app is initialized the
permissions and views are added automatically to the backend and associated with
the Admin role. The issue however is when you are running multiple concurrent
the Admin role. The issue, however, is when you are running multiple concurrent
workers this creates a lot of contention and race conditions when defining
permissions and views.
@@ -224,7 +249,7 @@ If you are running superset behind a load balancer or reverse proxy (e.g. NGINX
or ELB on AWS), you may need to utilise a healthcheck endpoint so that your
load balancer knows if your superset instance is running. This is provided
at ``/health`` which will return a 200 response containing "OK" if the
webserver is running.
the webserver is running.
If the load balancer is inserting X-Forwarded-For/X-Forwarded-Proto headers, you
should set `ENABLE_PROXY_FIX = True` in the superset config file to extract and use
@@ -358,7 +383,7 @@ Here's a list of some of the recommended packages.
| Teradata | ``pip install sqlalchemy-teradata`` | ``teradata://`` |
+---------------+-------------------------------------+-------------------------------------------------+
Note that many other database are supported, the main criteria being the
Note that many other databases are supported, the main criteria being the
existence of a functional SqlAlchemy dialect and Python driver. Googling
the keyword ``sqlalchemy`` in addition of a keyword that describes the
database you want to connect to should get you to the right place.
@@ -396,10 +421,6 @@ Make sure the user has privileges to access and use all required
databases/schemas/tables/views/warehouses, as the Snowflake SQLAlchemy engine does
not test for user rights during engine creation.
*Note*: At the time of writing, there is a regression in the current stable version (1.1.2) of
snowflake-sqlalchemy package that causes problems when used with Superset. It is recommended to
use version 1.1.0 or try a newer version.
See `Snowflake SQLAlchemy <https://github.com/snowflakedb/snowflake-sqlalchemy>`_.
Teradata
@@ -442,11 +463,11 @@ into your global default defined in ``CACHE_CONFIG``.
.. code-block:: python
CACHE_CONFIG = {
'CACHE_TYPE': 'redis',
'CACHE_DEFAULT_TIMEOUT': 60 * 60 * 24, # 1 day default (in secs)
'CACHE_KEY_PREFIX': 'superset_results',
'CACHE_REDIS_URL': 'redis://localhost:6379/0',
}
'CACHE_TYPE': 'redis',
'CACHE_DEFAULT_TIMEOUT': 60 * 60 * 24, # 1 day default (in secs)
'CACHE_KEY_PREFIX': 'superset_results',
'CACHE_REDIS_URL': 'redis://localhost:6379/0',
}
@@ -470,7 +491,7 @@ while the ``metadata_params`` get unpacked into the
Schemas (Postgres & Redshift)
-----------------------------
Postgres and Redshift, as well as other database,
Postgres and Redshift, as well as other databases,
use the concept of **schema** as a logical entity
on top of the **database**. For Superset to connect to a specific schema,
there's a **schema** parameter you can set in the table form.
@@ -551,6 +572,18 @@ The following keys in `superset_config.py` can be specified to configure CORS:
* ``CORS_OPTIONS``: options passed to Flask-CORS (`documentation <http://flask-cors.corydolphin.com/en/latest/api.html#extension>`)
DOMAIN SHARDING
---------------
Chrome allows up to 6 open connections per domain at a time. When there are more
than 6 slices in dashboard, a lot of time fetch requests are queued up and wait for
next available socket. PR (`#5039 <https://github.com/apache/incubator-superset/pull/5039>`) adds domain sharding to Superset,
and this feature will be enabled by configuration only (by default Superset
doesn't allow cross-domain request).
*``SUPERSET_WEBSERVER_DOMAINS``: list of allowed hostnames for domain sharding feature. default `None`
MIDDLEWARE
----------
@@ -583,22 +616,20 @@ Upgrading should be as straightforward as running::
superset db upgrade
superset init
SQL Lab
-------
SQL Lab is a powerful SQL IDE that works with all SQLAlchemy compatible
databases. By default, queries are executed in the scope of a web
request so they
may eventually timeout as queries exceed the maximum duration of a web
request in your environment, whether it'd be a reverse proxy or the Superset
server itself.
Celery Tasks
------------
On large analytic databases, it's common to run background jobs, reports
and/or queries that execute for minutes or hours. In certain cases, we need
to support long running tasks that execute beyond the typical web request's
timeout (30-60 seconds).
On large analytic databases, it's common to run queries that
execute for minutes or hours.
To enable support for long running queries that
execute beyond the typical web request's timeout (30-60 seconds), it is
necessary to configure an asynchronous backend for Superset which consist of:
necessary to configure an asynchronous backend for Superset which consists of:
* one or many Superset worker (which is implemented as a Celery worker), and
* one or many Superset workers (which is implemented as a Celery worker), and
can be started with the ``celery worker`` command, run
``celery worker --help`` to view the related options.
* a celery broker (message queue) for which we recommend using Redis
@@ -614,15 +645,41 @@ have the same configuration.
class CeleryConfig(object):
BROKER_URL = 'redis://localhost:6379/0'
CELERY_IMPORTS = ('superset.sql_lab', )
CELERY_IMPORTS = (
'superset.sql_lab',
'superset.tasks',
)
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
CELERY_ANNOTATIONS = {'tasks.add': {'rate_limit': '10/s'}}
CELERYD_LOG_LEVEL = 'DEBUG'
CELERYD_PREFETCH_MULTIPLIER = 10
CELERY_ACKS_LATE = True
CELERY_ANNOTATIONS = {
'sql_lab.get_sql_results': {
'rate_limit': '100/s',
},
'email_reports.send': {
'rate_limit': '1/s',
'time_limit': 120,
'soft_time_limit': 150,
'ignore_result': True,
},
}
CELERYBEAT_SCHEDULE = {
'email_reports.schedule_hourly': {
'task': 'email_reports.schedule_hourly',
'schedule': crontab(minute=1, hour='*'),
},
}
CELERY_CONFIG = CeleryConfig
To start a Celery worker to leverage the configuration run: ::
* To start a Celery worker to leverage the configuration run: ::
celery worker --app=superset.sql_lab:celery_app --pool=gevent -Ofair
celery worker --app=superset.tasks.celery_app:app --pool=prefork -Ofair -c 4
* To start a job which schedules periodic background jobs, run ::
celery beat --app=superset.tasks.celery_app:app
To setup a result backend, you need to pass an instance of a derivative
of ``werkzeug.contrib.cache.BaseCache`` to the ``RESULTS_BACKEND``
@@ -645,13 +702,67 @@ look something like:
RESULTS_BACKEND = RedisCache(
host='localhost', port=6379, key_prefix='superset_results')
Note that it's important that all the worker nodes and web servers in
the Superset cluster share a common metadata database.
This means that SQLite will not work in this context since it has
limited support for concurrency and
typically lives on the local file system.
**Important notes**
Also note that SQL Lab supports Jinja templating in queries, and that it's
* It is important that all the worker nodes and web servers in
the Superset cluster share a common metadata database.
This means that SQLite will not work in this context since it has
limited support for concurrency and
typically lives on the local file system.
* There should only be one instance of ``celery beat`` running in your
entire setup. If not, background jobs can get scheduled multiple times
resulting in weird behaviors like duplicate delivery of reports,
higher than expected load / traffic etc.
Email Reports
-------------
Email reports allow users to schedule email reports for
* slice and dashboard visualization (Attachment or inline)
* slice data (CSV attachment on inline table)
Schedules are defined in crontab format and each schedule
can have a list of recipients (all of them can receive a single mail,
or separate mails). For audit purposes, all outgoing mails can have a
mandatory bcc.
**Requirements**
* A selenium compatible driver & headless browser
* `geckodriver <https://github.com/mozilla/geckodriver>`_ and Firefox is preferred
* `chromedriver <http://chromedriver.chromium.org/>`_ is a good option too
* Run `celery worker` and `celery beat` as follows ::
celery worker --app=superset.tasks.celery_app:app --pool=prefork -Ofair -c 4
celery beat --app=superset.tasks.celery_app:app
**Important notes**
* Be mindful of the concurrency setting for celery (using ``-c 4``).
Selenium/webdriver instances can consume a lot of CPU / memory on your servers.
* In some cases, if you notice a lot of leaked ``geckodriver`` processes, try running
your celery processes with ::
celery worker --pool=prefork --max-tasks-per-child=128 ...
* It is recommended to run separate workers for ``sql_lab`` and
``email_reports`` tasks. Can be done by using ``queue`` field in ``CELERY_ANNOTATIONS``
SQL Lab
-------
SQL Lab is a powerful SQL IDE that works with all SQLAlchemy compatible
databases. By default, queries are executed in the scope of a web
request so they may eventually timeout as queries exceed the maximum duration of a web
request in your environment, whether it'd be a reverse proxy or the Superset
server itself. In such cases, it is preferred to use ``celery`` to run the queries
in the background. Please follow the examples/notes mentioned above to get your
celery setup working.
Also note that SQL Lab supports Jinja templating in queries and that it's
possible to overload
the default Jinja context in your environment by defining the
``JINJA_CONTEXT_ADDONS`` in your superset configuration. Objects referenced
@@ -664,6 +775,8 @@ in this dictionary are made available for users to use in their SQL.
}
Celery Flower
-------------
Flower is a web based tool for monitoring the Celery cluster which you can
install from pip: ::
@@ -671,7 +784,7 @@ install from pip: ::
and run via: ::
celery flower --app=superset.sql_lab:celery_app
celery flower --app=superset.tasks.celery_app:app
Building from source
---------------------
@@ -686,7 +799,7 @@ Blueprints
`Blueprints are Flask's reusable apps <http://flask.pocoo.org/docs/0.12/blueprints/>`_.
Superset allows you to specify an array of Blueprints
in your ``superset_config`` module. Here's
an example on how this can work with a simple Blueprint. By doing
an example of how this can work with a simple Blueprint. By doing
so, you can expect Superset to serve a page that says "OK"
at the ``/simple_page`` url. This can allow you to run other things such
as custom data visualization applications alongside Superset, on the
@@ -739,7 +852,7 @@ Note that the above command will install Superset into ``default`` namespace of
Custom OAuth2 configuration
---------------------------
Beyond FAB supported providers (github, twitter, linkedin, google, azure), its easy to connect Superset with other OAuth2 Authorization Server implementations that supports "code" authorization.
Beyond FAB supported providers (github, twitter, linkedin, google, azure), its easy to connect Superset with other OAuth2 Authorization Server implementations that support "code" authorization.
The first step: Configure authorization in Superset ``superset_config.py``.
@@ -756,11 +869,11 @@ The first step: Configure authorization in Superset ``superset_config.py``.
'request_token_params':{
'scope': 'read' # Scope for the Authorization
},
'access_token_method':'POST', # HTTP Method to call access_token_url
'access_token_params':{ # Additional parameters for calls to access_token_url
'client_id':'myClientId'
'access_token_method':'POST', # HTTP Method to call access_token_url
'access_token_params':{ # Additional parameters for calls to access_token_url
'client_id':'myClientId'
},
'access_token_headers':{ # Additional headers for calls to access_token_url
'access_token_headers':{ # Additional headers for calls to access_token_url
'Authorization': 'Basic Base64EncodedClientIdAndSecret'
},
'base_url':'https://myAuthorizationServer/oauth2AuthorizationServer/',
@@ -788,11 +901,11 @@ Second step: Create a `CustomSsoSecurityManager` that extends `SupersetSecurityM
logging.debug("Oauth2 provider: {0}.".format(provider))
if provider == 'egaSSO':
# As example, this line request a GET to base_url + '/' + userDetails with Bearer Authentication,
# and expects that authorization server checks the token, and response with user details
# and expects that authorization server checks the token, and response with user details
me = self.appbuilder.sm.oauth_remotes[provider].get('userDetails').data
logging.debug("user_data: {0}".format(me))
return { 'name' : me['name'], 'email' : me['email'], 'id' : me['user_name'], 'username' : me['user_name'], 'first_name':'', 'last_name':''}
...
...
This file must be located at the same directory than ``superset_config.py`` with the name ``custom_sso_security_manager.py``.

View File

@@ -1,3 +1,20 @@
.. 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.
Misc
----

View File

@@ -1,2 +1,18 @@
sphinx==1.7.1
sphinx-rtd-theme==0.2.4
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information 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.
#
sphinx==1.8.1
sphinx-rtd-theme==0.3.1

View File

@@ -1,3 +1,20 @@
.. 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.
Security
========
Security in Superset is handled by Flask AppBuilder (FAB). FAB is a
@@ -18,7 +35,7 @@ their original values as you run your next ``superset init`` command.
Since it's not recommended to alter the roles described here, it's right
to assume that your security strategy should be to compose user access based
on these base roles and roles that you create. For instance you could
create a role ``Financial Analyst`` that would be made of set of permissions
create a role ``Financial Analyst`` that would be made of a set of permissions
to a set of data sources (tables) and/or databases. Users would then be
granted ``Gamma``, ``Financial Analyst``, and perhaps ``sql_lab``.
@@ -29,13 +46,13 @@ other users and altering other people's slices and dashboards.
Alpha
"""""
Alpha have access to all data sources, but they cannot grant or revoke access
Alpha users have access to all data sources, but they cannot grant or revoke access
from other users. They are also limited to altering the objects that they
own. Alpha users can add and alter data sources.
Gamma
"""""
Gamma have limited access. They can only consume data coming from data sources
Gamma users have limited access. They can only consume data coming from data sources
they have been given access to through another complementary role.
They only have access to view the slices and
dashboards made from data sources that they have access to. Currently Gamma
@@ -75,7 +92,7 @@ click the ``+`` sign.
This new window allows you to give this new role a name, attribute it to users
and select the tables in the ``Permissions`` dropdown. To select the data
sources you want to associate with this role, simply click in the dropdown
sources you want to associate with this role, simply click on the dropdown
and use the typeahead to search for your table names.
You can then confirm with your Gamma users that they see the objects
@@ -87,12 +104,12 @@ Customizing
The permissions exposed by FAB are very granular and allow for a great level
of customization. FAB creates many permissions automagically for each model
that is create (can_add, can_delete, can_show, can_edit, ...) as well as for
that is created (can_add, can_delete, can_show, can_edit, ...) as well as for
each view. On top of that, Superset can expose more granular permissions like
``all_datasource_access``.
We do not recommend altering the 3 base roles as there
are a set of assumptions that Superset build upon. It is possible though for
are a set of assumptions that Superset is built upon. It is possible though for
you to create your own roles, and union them to existing ones.
Permissions
@@ -107,8 +124,7 @@ of permissions. Here are the different categories of permissions:
so on. By adding ``can_delete on Dashboard`` to a role, and granting that
role to a user, this user will be able to delete dashboards.
- **Views**: views are individual web pages, like the ``explore`` view or the
``SQL Lab`` view. When granted to a user, he/she will see that view in
the its menu items, and be able to load that page.
``SQL Lab`` view. When granted to a user, he/she will see that view in its menu items, and be able to load that page.
- **Data source**: For each data source, a permission is created. If the user
does not have the ``all_datasource_access`` permission granted, the user
will only be able to see Slices or explore the data sources that are granted

View File

@@ -1,3 +1,20 @@
.. 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.
SQL Lab
=======
@@ -19,7 +36,7 @@ Feature Overview
- Browse database metadata: tables, columns, indexes, partitions
- Support for long-running queries
- uses the `Celery distributed queue <http://www.python.org/>`_
- uses the `Celery distributed queue <http://www.celeryproject.org/>`_
to dispatch query handling to workers
- supports defining a "results backend" to persist query results

View File

@@ -1,3 +1,20 @@
.. 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.
Tutorial - Creating your first dashboard
========================================
@@ -231,7 +248,7 @@ You may want to do a couple more things with this measure:
Config > List Sql Metric > Edit Metric > D3Format*)
* Moreover, you may want to see the temperature measurements in plain degrees C,
not tenths of a degree. Or you may want to convert the temperature to degrees
Fahrenheit. You can change the SQL that gets executed agains the database, baking
Fahrenheit. You can change the SQL that gets executed against the database, baking
the logic into the measure itself (*Edit Table Config > List Sql Metric > Edit
Metric > SQL Expression*)

View File

@@ -1,3 +1,20 @@
.. 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.
Videos
======

View File

@@ -1,3 +1,20 @@
.. 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.
Visualization Tools
===================
@@ -496,11 +513,11 @@ List of Countries
+------+------------------------------------+
|IT-PE |Pescara |
+------+------------------------------------+
|IT-TE |Teramo |
|IT-TE |Teramo |
+------+------------------------------------+
|IT-BA |Bari |
+------+------------------------------------+
|IT-BT |Barletta-Andria-Trani |
|IT-BT |Barletta-Andria-Trani |
+------+------------------------------------+
|IT-BR |Brindisi |
+------+------------------------------------+
@@ -536,181 +553,283 @@ List of Countries
+------+------------------------------------+
|IT-BO |Bologna |
+------+------------------------------------+
|IT-FE |Ferrara |
|IT-FE |Ferrara |
+------+------------------------------------+
|IT-FC | Forli' - Cesena |
+------+------------------------------------+
|IT-MO |Modena |
|IT-MO |Modena |
+------+------------------------------------+
|IT-PR |Parma |
+------+------------------------------------+
|IT-PC |Piacenza |
|IT-PC |Piacenza |
+------+------------------------------------+
|IT-RA |Ravenna |
|IT-RA |Ravenna |
+------+------------------------------------+
|IT-RE |Reggio Nell'Emilia |
|IT-RE |Reggio Nell'Emilia |
+------+------------------------------------+
|IT-RN |Rimini |
|IT-RN |Rimini |
+------+------------------------------------+
|IT-GO |Gorizia |
|IT-GO |Gorizia |
+------+------------------------------------+
|IT-PN |Pordenone |
|IT-PN |Pordenone |
+------+------------------------------------+
|IT-TS |Trieste |
|IT-TS |Trieste |
+------+------------------------------------+
|IT-UD |Udine |
|IT-UD |Udine |
+------+------------------------------------+
|IT-FR |Frosinone |
|IT-FR |Frosinone |
+------+------------------------------------+
|IT-LT |Latina |
|IT-LT |Latina |
+------+------------------------------------+
|IT-RI |Rieti |
|IT-RI |Rieti |
+------+------------------------------------+
|IT-RM |Roma |
|IT-RM |Roma |
+------+------------------------------------+
|IT-VT |Viterbo |
|IT-VT |Viterbo |
+------+------------------------------------+
|IT-GE |Genova |
|IT-GE |Genova |
+------+------------------------------------+
|IT-IM |Imperia |
|IT-IM |Imperia |
+------+------------------------------------+
|IT-SP |La Spezia |
|IT-SP |La Spezia |
+------+------------------------------------+
|IT-SV |Savona |
|IT-SV |Savona |
+------+------------------------------------+
|IT-BG |Bergamo |
|IT-BG |Bergamo |
+------+------------------------------------+
|IT-BS |Brescia |
|IT-BS |Brescia |
+------+------------------------------------+
|IT-CO |Como |
|IT-CO |Como |
+------+------------------------------------+
|IT-CR |Cremona |
|IT-CR |Cremona |
+------+------------------------------------+
|IT-LC |Lecco |
|IT-LC |Lecco |
+------+------------------------------------+
|IT-LO |Lodi |
|IT-LO |Lodi |
+------+------------------------------------+
|IT-MN |Mantua |
|IT-MN |Mantua |
+------+------------------------------------+
|IT-MI |Milano |
|IT-MI |Milano |
+------+------------------------------------+
|IT-MB |Monza and Brianza |
|IT-MB |Monza and Brianza |
+------+------------------------------------+
|IT-PV |Pavia |
|IT-PV |Pavia |
+------+------------------------------------+
|IT-SO |Sondrio |
|IT-SO |Sondrio |
+------+------------------------------------+
|IT-VA |Varese |
|IT-VA |Varese |
+------+------------------------------------+
|IT-AN |Ancona |
|IT-AN |Ancona |
+------+------------------------------------+
|IT-AP |Ascoli Piceno |
|IT-AP |Ascoli Piceno |
+------+------------------------------------+
|IT-FM |Fermo |
|IT-FM |Fermo |
+------+------------------------------------+
|IT-MC |Macerata |
|IT-MC |Macerata |
+------+------------------------------------+
|IT-PU |Pesaro E Urbino |
|IT-PU |Pesaro E Urbino |
+------+------------------------------------+
|IT-CB |Campobasso |
|IT-CB |Campobasso |
+------+------------------------------------+
|IT-IS |Isernia |
|IT-IS |Isernia |
+------+------------------------------------+
|IT-AL |Alessandria |
|IT-AL |Alessandria |
+------+------------------------------------+
|IT-AT |Asti |
|IT-AT |Asti |
+------+------------------------------------+
|IT-BI |Biella |
|IT-BI |Biella |
+------+------------------------------------+
|IT-CN |Cuneo |
|IT-CN |Cuneo |
+------+------------------------------------+
|IT-NO |Novara |
|IT-NO |Novara |
+------+------------------------------------+
|IT-TO |Torino |
|IT-TO |Torino |
+------+------------------------------------+
|IT-VB |Verbano-Cusio-Ossola |
|IT-VB |Verbano-Cusio-Ossola |
+------+------------------------------------+
|IT-VC |Vercelli |
|IT-VC |Vercelli |
+------+------------------------------------+
|IT-CA |Cagliari |
|IT-CA |Cagliari |
+------+------------------------------------+
|IT-CI |Carbonia-Iglesias |
|IT-CI |Carbonia-Iglesias |
+------+------------------------------------+
|IT-VS |Medio Campidano |
|IT-VS |Medio Campidano |
+------+------------------------------------+
|IT-NU |Nuoro |
|IT-NU |Nuoro |
+------+------------------------------------+
|IT-OG |Ogliastra |
|IT-OG |Ogliastra |
+------+------------------------------------+
|IT-OT |Olbia-Tempio |
|IT-OT |Olbia-Tempio |
+------+------------------------------------+
|IT-OR |Oristano |
|IT-OR |Oristano |
+------+------------------------------------+
|IT-SS |Sassari |
|IT-SS |Sassari |
+------+------------------------------------+
|IT-AG |Agrigento |
|IT-AG |Agrigento |
+------+------------------------------------+
|IT-CL |Caltanissetta |
|IT-CL |Caltanissetta |
+------+------------------------------------+
|IT-CT |Catania |
+------+------------------------------------+
|IT-EN |Enna |
+------+------------------------------------+
|IT-ME |Messina |
|IT-ME |Messina |
+------+------------------------------------+
|IT-PA |Palermo |
+------+------------------------------------+
|IT-RG |Ragusa |
+------+------------------------------------+
|IT-SR |Syracuse |
|IT-SR |Syracuse |
+------+------------------------------------+
|IT-TP |Trapani |
+------+------------------------------------+
|IT-AR |Arezzo |
|IT-AR |Arezzo |
+------+------------------------------------+
|IT-FI |Florence |
|IT-FI |Florence |
+------+------------------------------------+
|IT-GR |Grosseto |
|IT-GR |Grosseto |
+------+------------------------------------+
|IT-LI |Livorno |
|IT-LI |Livorno |
+------+------------------------------------+
|IT-LU |Lucca |
+------+------------------------------------+
|IT-MS |Massa Carrara |
|IT-MS |Massa Carrara |
+------+------------------------------------+
|IT-PI |Pisa |
+------+------------------------------------+
|IT-PT |Pistoia |
|IT-PT |Pistoia |
+------+------------------------------------+
|IT-PO |Prato |
+------+------------------------------------+
|IT-SI |Siena |
+------+------------------------------------+
|IT-BZ |Bolzano |
|IT-BZ |Bolzano |
+------+------------------------------------+
|IT-TN |Trento |
|IT-TN |Trento |
+------+------------------------------------+
|IT-PG |Perugia |
|IT-PG |Perugia |
+------+------------------------------------+
|IT-TR |Terni |
|IT-TR |Terni |
+------+------------------------------------+
|IT-AO |Aosta |
|IT-AO |Aosta |
+------+------------------------------------+
|IT-BL |Belluno |
|IT-BL |Belluno |
+------+------------------------------------+
|IT-PD |Padua |
|IT-PD |Padua |
+------+------------------------------------+
|IT-RO |Rovigo |
|IT-RO |Rovigo |
+------+------------------------------------+
|IT-TV |Treviso |
|IT-TV |Treviso |
+------+------------------------------------+
|IT-VE |Venezia |
|IT-VE |Venezia |
+------+------------------------------------+
|IT-VR |Verona |
|IT-VR |Verona |
+------+------------------------------------+
|IT-VI |Vicenza |
+------+------------------------------------+
* Japan
+-------+----------------+
| ISO | Name of region |
+=======+================+
| JP-01 | Hokkaido |
+-------+----------------+
| JP-02 | Aomori |
+-------+----------------+
| JP-03 | Iwate |
+-------+----------------+
| JP-04 | Miyagi |
+-------+----------------+
| JP-05 | Akita |
+-------+----------------+
| JP-06 | Yamagata |
+-------+----------------+
| JP-07 | Fukushima |
+-------+----------------+
| JP-08 | Ibaraki |
+-------+----------------+
| JP-09 | Tochigi |
+-------+----------------+
| JP-10 | Gunma |
+-------+----------------+
| JP-11 | Saitama |
+-------+----------------+
| JP-12 | Chiba |
+-------+----------------+
| JP-13 | Tokyo |
+-------+----------------+
| JP-14 | Kanagawa |
+-------+----------------+
| JP-15 | Niigata |
+-------+----------------+
| JP-16 | Toyama |
+-------+----------------+
| JP-17 | Ishikawa |
+-------+----------------+
| JP-18 | Fukui |
+-------+----------------+
| JP-19 | Yamanashi |
+-------+----------------+
| JP-20 | Nagano |
+-------+----------------+
| JP-21 | Gifu |
+-------+----------------+
| JP-22 | Shizuoka |
+-------+----------------+
| JP-23 | Aichi |
+-------+----------------+
| JP-24 | Mie |
+-------+----------------+
| JP-25 | Shiga |
+-------+----------------+
| JP-26 | Kyoto |
+-------+----------------+
| JP-27 | Osaka |
+-------+----------------+
| JP-28 | Hyogo |
+-------+----------------+
| JP-29 | Nara |
+-------+----------------+
| JP-30 | Wakayama |
+-------+----------------+
| JP-31 | Tottori |
+-------+----------------+
| JP-32 | Shimane |
+-------+----------------+
| JP-33 | Okayama |
+-------+----------------+
| JP-34 | Hiroshima |
+-------+----------------+
| JP-35 | Yamaguchi |
+-------+----------------+
| JP-36 | Tokushima |
+-------+----------------+
| JP-37 | Kagawa |
+-------+----------------+
| JP-38 | Ehime |
+-------+----------------+
| JP-39 | Kochi |
+-------+----------------+
| JP-40 | Fukuoka |
+-------+----------------+
| JP-41 | Saga |
+-------+----------------+
| JP-42 | Nagasaki |
+-------+----------------+
| JP-43 | Kumamoto |
+-------+----------------+
| JP-44 | Oita |
+-------+----------------+
| JP-45 | Miyazaki |
+-------+----------------+
| JP-46 | Kagoshima |
+-------+----------------+
| JP-47 | Okinawa |
+-------+----------------+
* Morocco
+-------+------------------------------+
@@ -1471,7 +1590,7 @@ List of Countries
+-------+------------------------------+
|GB-MRY | Moray |
+-------+------------------------------+
|GB-NAY | North Ayshire |
|GB-NAY | North Ayrshire |
+-------+------------------------------+
|GB-NLK | North Lanarkshire |
+-------+------------------------------+
@@ -1712,25 +1831,25 @@ List of Countries
+------+------------------------------+
You need to add a new Country ?
Need to add a new Country?
-------------------------------
To add a new country in country map tools, we need follow next steps :
To add a new country in country map tools, we need to follow the following steps :
1. You need shapfiles why contains data of your map.
You can get this file in this site : http://www.diva-gis.org/gdata
1. You need shapefiles which contain data of your map.
You can get this file on this site: http://www.diva-gis.org/gdata
2. You need to add ISO 3166-2 with column name ISO for all record in your file.
It's important because, it's a norm for mapping your data with geojson file
It's important because it's a norm for mapping your data with geojson file
3. You need to convert shapfile to geojson file.
This action can make with ogr2ogr tools : http://www.gdal.org/ogr2ogr.html
3. You need to convert shapefile to geojson file.
This action can make with ogr2ogr tools: http://www.gdal.org/ogr2ogr.html
4. Put your geojson file in next folder : superset/assets/visualizations/countries with the next name : nameofyourcountries.geojson
4. Put your geojson file in next folder : superset/assets/src/visualizations/CountryMap/countries with the next name : nameofyourcountries.geojson
5. You can to reduce size of geojson file ont this site : http://mapshaper.org/
5. You can to reduce size of geojson file on this site: http://mapshaper.org/
6. Go in file superset/assets/javascripts/explorev2/stores/controls.jsx
6. Go in file superset/assets/src/explore/controls.jsx
7. Add your country in component 'select_country'
Example :
@@ -1749,6 +1868,7 @@ To add a new country in country map tools, we need follow next steps :
'France',
'Germany',
'Italy',
'Japan',
'Morocco',
'Netherlands',
'Russia',

View File

@@ -1,3 +1,19 @@
#
# 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.
#
# requires github-changes, run
# `npm install -g github-changes`
# requires $GITHUB_TOKEN to be set

View File

@@ -1,3 +1,19 @@
#
# 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.
#
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.

View File

@@ -1,3 +1,19 @@
#
# 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.
#
apiVersion: v1
appVersion: "1.0"
description: A Helm chart for Kubernetes

View File

@@ -1,3 +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.
*/}}
1. Get the application URL by running these commands:
{{- if .Values.ingress.enabled }}
{{- range .Values.ingress.hosts }}

View File

@@ -1,3 +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.
*/}}
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.

View File

@@ -1,3 +1,19 @@
#
# 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.
#
apiVersion: v1
kind: ConfigMap
metadata:

View File

@@ -1,3 +1,19 @@
#
# 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.
#
apiVersion: apps/v1beta2
kind: Deployment
metadata:

View File

@@ -1,3 +1,19 @@
#
# 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.
#
{{- if .Values.ingress.enabled -}}
{{- $fullName := include "superset.fullname" . -}}
{{- $ingressPath := .Values.ingress.path -}}

View File

@@ -1,3 +1,19 @@
#
# 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.
#
apiVersion: v1
kind: Service
metadata:

View File

@@ -1,3 +1,20 @@
#
# 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.
#
# Default values for superset.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.

View File

@@ -0,0 +1,22 @@
Copyright (c) 2012 Tyler Kellen, contributors
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.

View File

@@ -0,0 +1,395 @@
Attribution 4.0 International
=======================================================================
Creative Commons Corporation ("Creative Commons") is not a law firm and
does not provide legal services or legal advice. Distribution of
Creative Commons public licenses does not create a lawyer-client or
other relationship. Creative Commons makes its licenses and related
information available on an "as-is" basis. Creative Commons gives no
warranties regarding its licenses, any material licensed under their
terms and conditions, or any related information. Creative Commons
disclaims all liability for damages resulting from their use to the
fullest extent possible.
Using Creative Commons Public Licenses
Creative Commons public licenses provide a standard set of terms and
conditions that creators and other rights holders may use to share
original works of authorship and other material subject to copyright
and certain other rights specified in the public license below. The
following considerations are for informational purposes only, are not
exhaustive, and do not form part of our licenses.
Considerations for licensors: Our public licenses are
intended for use by those authorized to give the public
permission to use material in ways otherwise restricted by
copyright and certain other rights. Our licenses are
irrevocable. Licensors should read and understand the terms
and conditions of the license they choose before applying it.
Licensors should also secure all rights necessary before
applying our licenses so that the public can reuse the
material as expected. Licensors should clearly mark any
material not subject to the license. This includes other CC-
licensed material, or material used under an exception or
limitation to copyright. More considerations for licensors:
wiki.creativecommons.org/Considerations_for_licensors
Considerations for the public: By using one of our public
licenses, a licensor grants the public permission to use the
licensed material under specified terms and conditions. If
the licensor's permission is not necessary for any reason--for
example, because of any applicable exception or limitation to
copyright--then that use is not regulated by the license. Our
licenses grant only permissions under copyright and certain
other rights that a licensor has authority to grant. Use of
the licensed material may still be restricted for other
reasons, including because others have copyright or other
rights in the material. A licensor may make special requests,
such as asking that all changes be marked or described.
Although not required by our licenses, you are encouraged to
respect those requests where reasonable. More considerations
for the public:
wiki.creativecommons.org/Considerations_for_licensees
=======================================================================
Creative Commons Attribution 4.0 International Public License
By exercising the Licensed Rights (defined below), You accept and agree
to be bound by the terms and conditions of this Creative Commons
Attribution 4.0 International Public License ("Public License"). To the
extent this Public License may be interpreted as a contract, You are
granted the Licensed Rights in consideration of Your acceptance of
these terms and conditions, and the Licensor grants You such rights in
consideration of benefits the Licensor receives from making the
Licensed Material available under these terms and conditions.
Section 1 -- Definitions.
a. Adapted Material means material subject to Copyright and Similar
Rights that is derived from or based upon the Licensed Material
and in which the Licensed Material is translated, altered,
arranged, transformed, or otherwise modified in a manner requiring
permission under the Copyright and Similar Rights held by the
Licensor. For purposes of this Public License, where the Licensed
Material is a musical work, performance, or sound recording,
Adapted Material is always produced where the Licensed Material is
synched in timed relation with a moving image.
b. Adapter's License means the license You apply to Your Copyright
and Similar Rights in Your contributions to Adapted Material in
accordance with the terms and conditions of this Public License.
c. Copyright and Similar Rights means copyright and/or similar rights
closely related to copyright including, without limitation,
performance, broadcast, sound recording, and Sui Generis Database
Rights, without regard to how the rights are labeled or
categorized. For purposes of this Public License, the rights
specified in Section 2(b)(1)-(2) are not Copyright and Similar
Rights.
d. Effective Technological Measures means those measures that, in the
absence of proper authority, may not be circumvented under laws
fulfilling obligations under Article 11 of the WIPO Copyright
Treaty adopted on December 20, 1996, and/or similar international
agreements.
e. Exceptions and Limitations means fair use, fair dealing, and/or
any other exception or limitation to Copyright and Similar Rights
that applies to Your use of the Licensed Material.
f. Licensed Material means the artistic or literary work, database,
or other material to which the Licensor applied this Public
License.
g. Licensed Rights means the rights granted to You subject to the
terms and conditions of this Public License, which are limited to
all Copyright and Similar Rights that apply to Your use of the
Licensed Material and that the Licensor has authority to license.
h. Licensor means the individual(s) or entity(ies) granting rights
under this Public License.
i. Share means to provide material to the public by any means or
process that requires permission under the Licensed Rights, such
as reproduction, public display, public performance, distribution,
dissemination, communication, or importation, and to make material
available to the public including in ways that members of the
public may access the material from a place and at a time
individually chosen by them.
j. Sui Generis Database Rights means rights other than copyright
resulting from Directive 96/9/EC of the European Parliament and of
the Council of 11 March 1996 on the legal protection of databases,
as amended and/or succeeded, as well as other essentially
equivalent rights anywhere in the world.
k. You means the individual or entity exercising the Licensed Rights
under this Public License. Your has a corresponding meaning.
Section 2 -- Scope.
a. License grant.
1. Subject to the terms and conditions of this Public License,
the Licensor hereby grants You a worldwide, royalty-free,
non-sublicensable, non-exclusive, irrevocable license to
exercise the Licensed Rights in the Licensed Material to:
a. reproduce and Share the Licensed Material, in whole or
in part; and
b. produce, reproduce, and Share Adapted Material.
2. Exceptions and Limitations. For the avoidance of doubt, where
Exceptions and Limitations apply to Your use, this Public
License does not apply, and You do not need to comply with
its terms and conditions.
3. Term. The term of this Public License is specified in Section
6(a).
4. Media and formats; technical modifications allowed. The
Licensor authorizes You to exercise the Licensed Rights in
all media and formats whether now known or hereafter created,
and to make technical modifications necessary to do so. The
Licensor waives and/or agrees not to assert any right or
authority to forbid You from making technical modifications
necessary to exercise the Licensed Rights, including
technical modifications necessary to circumvent Effective
Technological Measures. For purposes of this Public License,
simply making modifications authorized by this Section 2(a)
(4) never produces Adapted Material.
5. Downstream recipients.
a. Offer from the Licensor -- Licensed Material. Every
recipient of the Licensed Material automatically
receives an offer from the Licensor to exercise the
Licensed Rights under the terms and conditions of this
Public License.
b. No downstream restrictions. You may not offer or impose
any additional or different terms or conditions on, or
apply any Effective Technological Measures to, the
Licensed Material if doing so restricts exercise of the
Licensed Rights by any recipient of the Licensed
Material.
6. No endorsement. Nothing in this Public License constitutes or
may be construed as permission to assert or imply that You
are, or that Your use of the Licensed Material is, connected
with, or sponsored, endorsed, or granted official status by,
the Licensor or others designated to receive attribution as
provided in Section 3(a)(1)(A)(i).
b. Other rights.
1. Moral rights, such as the right of integrity, are not
licensed under this Public License, nor are publicity,
privacy, and/or other similar personality rights; however, to
the extent possible, the Licensor waives and/or agrees not to
assert any such rights held by the Licensor to the limited
extent necessary to allow You to exercise the Licensed
Rights, but not otherwise.
2. Patent and trademark rights are not licensed under this
Public License.
3. To the extent possible, the Licensor waives any right to
collect royalties from You for the exercise of the Licensed
Rights, whether directly or through a collecting society
under any voluntary or waivable statutory or compulsory
licensing scheme. In all other cases the Licensor expressly
reserves any right to collect such royalties.
Section 3 -- License Conditions.
Your exercise of the Licensed Rights is expressly made subject to the
following conditions.
a. Attribution.
1. If You Share the Licensed Material (including in modified
form), You must:
a. retain the following if it is supplied by the Licensor
with the Licensed Material:
i. identification of the creator(s) of the Licensed
Material and any others designated to receive
attribution, in any reasonable manner requested by
the Licensor (including by pseudonym if
designated);
ii. a copyright notice;
iii. a notice that refers to this Public License;
iv. a notice that refers to the disclaimer of
warranties;
v. a URI or hyperlink to the Licensed Material to the
extent reasonably practicable;
b. indicate if You modified the Licensed Material and
retain an indication of any previous modifications; and
c. indicate the Licensed Material is licensed under this
Public License, and include the text of, or the URI or
hyperlink to, this Public License.
2. You may satisfy the conditions in Section 3(a)(1) in any
reasonable manner based on the medium, means, and context in
which You Share the Licensed Material. For example, it may be
reasonable to satisfy the conditions by providing a URI or
hyperlink to a resource that includes the required
information.
3. If requested by the Licensor, You must remove any of the
information required by Section 3(a)(1)(A) to the extent
reasonably practicable.
4. If You Share Adapted Material You produce, the Adapter's
License You apply must not prevent recipients of the Adapted
Material from complying with this Public License.
Section 4 -- Sui Generis Database Rights.
Where the Licensed Rights include Sui Generis Database Rights that
apply to Your use of the Licensed Material:
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
to extract, reuse, reproduce, and Share all or a substantial
portion of the contents of the database;
b. if You include all or a substantial portion of the database
contents in a database in which You have Sui Generis Database
Rights, then the database in which You have Sui Generis Database
Rights (but not its individual contents) is Adapted Material; and
c. You must comply with the conditions in Section 3(a) if You Share
all or a substantial portion of the contents of the database.
For the avoidance of doubt, this Section 4 supplements and does not
replace Your obligations under this Public License where the Licensed
Rights include other Copyright and Similar Rights.
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
c. The disclaimer of warranties and limitation of liability provided
above shall be interpreted in a manner that, to the extent
possible, most closely approximates an absolute disclaimer and
waiver of all liability.
Section 6 -- Term and Termination.
a. This Public License applies for the term of the Copyright and
Similar Rights licensed here. However, if You fail to comply with
this Public License, then Your rights under this Public License
terminate automatically.
b. Where Your right to use the Licensed Material has terminated under
Section 6(a), it reinstates:
1. automatically as of the date the violation is cured, provided
it is cured within 30 days of Your discovery of the
violation; or
2. upon express reinstatement by the Licensor.
For the avoidance of doubt, this Section 6(b) does not affect any
right the Licensor may have to seek remedies for Your violations
of this Public License.
c. For the avoidance of doubt, the Licensor may also offer the
Licensed Material under separate terms or conditions or stop
distributing the Licensed Material at any time; however, doing so
will not terminate this Public License.
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
License.
Section 7 -- Other Terms and Conditions.
a. The Licensor shall not be bound by any additional or different
terms or conditions communicated by You unless expressly agreed.
b. Any arrangements, understandings, or agreements regarding the
Licensed Material not stated herein are separate from and
independent of the terms and conditions of this Public License.
Section 8 -- Interpretation.
a. For the avoidance of doubt, this Public License does not, and
shall not be interpreted to, reduce, limit, restrict, or impose
conditions on any use of the Licensed Material that could lawfully
be made without permission under this Public License.
b. To the extent possible, if any provision of this Public License is
deemed unenforceable, it shall be automatically reformed to the
minimum extent necessary to make it enforceable. If the provision
cannot be reformed, it shall be severed from this Public License
without affecting the enforceability of the remaining terms and
conditions.
c. No term or condition of this Public License will be waived and no
failure to comply consented to unless expressly agreed to by the
Licensor.
d. Nothing in this Public License constitutes or may be interpreted
as a limitation upon, or waiver of, any privileges and immunities
that apply to the Licensor or You, including from the legal
processes of any jurisdiction or authority.
=======================================================================
Creative Commons is not a party to its public
licenses. Notwithstanding, Creative Commons may elect to apply one of
its public licenses to material it publishes and in those instances
will be considered the “Licensor.” The text of the Creative Commons
public licenses is dedicated to the public domain under the CC0 Public
Domain Dedication. Except for the limited purpose of indicating that
material is shared under a Creative Commons public license or as
otherwise permitted by the Creative Commons policies published at
creativecommons.org/policies, Creative Commons does not authorize the
use of the trademark "Creative Commons" or any other trademark or logo
of Creative Commons without its prior written consent including,
without limitation, in connection with any unauthorized modifications
to any of its public licenses or any other arrangements,
understandings, or agreements concerning use of licensed material. For
the avoidance of doubt, this paragraph does not form part of the
public licenses.
Creative Commons may be contacted at creativecommons.org.

View File

@@ -0,0 +1,26 @@
Copyright (c) 2012, Kai Chang
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* The name Kai Chang may not be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL MICHAEL BOSTOCK BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@@ -1,3 +1,19 @@
#
# 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.
#
# first bump up package.json manually, commit and tag
rm superset/assets/dist/*
cd superset/assets/

View File

@@ -1,15 +1,34 @@
#
# 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.
#
console_log==0.2.10
flake8-commas==2.0.0
flake8-import-order==0.18
flake8-quotes==1.0.0
flake8==3.5.0
flask-cors==3.0.3
flake8==3.6.0
flask-cors==3.0.6
ipdb==0.11
mysqlclient==1.3.13
pip-tools==3.1.0
psycopg2-binary==2.7.5
pycodestyle==2.3.1
pycodestyle==2.4.0
pyhive==0.6.1
pylint==1.9.2
python-dotenv==0.10.1
redis==2.10.6
statsd==3.2.2
tox==3.1.2
statsd==3.3.0
thrift==0.11.0
tox==3.5.3

View File

@@ -7,87 +7,67 @@
alembic==1.0.0 # via flask-migrate
amqp==2.3.2 # via kombu
asn1crypto==0.24.0 # via cryptography
babel==2.6.0 # via flask-babel, flower
babel==2.6.0 # via flask-babel
billiard==3.5.0.4 # via celery
bleach==2.1.2
boto3==1.4.7
botocore==1.7.48
cchardet==1.1.3 # via tabulator
bleach==3.0.2
celery==4.2.0
certifi==2018.8.24 # via requests
cffi==1.11.5 # via cryptography
chardet==3.0.4 # via requests
click==6.7 # via flask, flask-appbuilder, tableschema, tabulator
click==6.7
colorama==0.3.9
contextlib2==0.5.5
cryptography==1.9
croniter==0.3.29
cryptography==2.4.2
decorator==4.3.0 # via retry
defusedxml==0.5.0 # via python3-openid
docutils==0.14 # via botocore
et-xmlfile==1.0.1 # via openpyxl
flask-appbuilder==1.12.0
flask-appbuilder==1.12.1
flask-babel==0.11.1 # via flask-appbuilder
flask-caching==1.4.0
flask-compress==1.4.0
flask-login==0.4.1 # via flask-appbuilder
flask-migrate==2.1.1
flask-openid==1.2.5 # via flask-appbuilder
flask-sqlalchemy==2.1 # via flask-appbuilder, flask-migrate
flask-sqlalchemy==2.3.2 # via flask-appbuilder, flask-migrate
flask-wtf==0.14.2
flask==0.12.2
flower==0.9.2
future==0.16.0
futures==3.1.1 # via flower
flask==1.0.2
geopy==1.11.0
gunicorn==19.8.0
html5lib==1.0.1 # via bleach
humanize==0.5.1
idna==2.6
ijson==2.3 # via tabulator
isodate==0.6.0
itsdangerous==0.24 # via flask
jdcal==1.4 # via openpyxl
jinja2==2.10 # via flask, flask-babel
jmespath==0.9.3 # via boto3, botocore
jsonlines==1.2.0 # via tabulator
jsonschema==2.6.0 # via tableschema
kombu==4.2.1 # via celery
linear-tsv==1.1.0 # via tabulator
mako==1.0.7 # via alembic
markdown==3.0
markupsafe==1.0 # via jinja2, mako
numpy==1.15.2 # via pandas
openpyxl==2.4.11 # via tabulator
pandas==0.23.1
pandas==0.23.4
parsedatetime==2.0.0
pathlib2==2.3.0
polyline==1.3.2
py==1.7.0 # via retry
pycparser==2.19 # via cffi
pydruid==0.4.4
pyhive==0.5.1
pydruid==0.5.0
python-dateutil==2.6.1
python-editor==1.0.3 # via alembic
python-geohash==0.8.5
python3-openid==3.1.0 # via flask-openid
pytz==2018.5 # via babel, celery, flower, pandas
pyyaml==3.12
requests==2.18.4
rfc3986==1.1.0 # via tableschema
s3transfer==0.1.13 # via boto3
sasl==0.2.1 # via thrift-sasl
pytz==2018.5 # via babel, celery, pandas
pyyaml==3.13
requests==2.20.0
retry==0.9.2
selenium==3.141.0
simplejson==3.15.0
six==1.11.0 # via bleach, cryptography, isodate, pathlib2, polyline, pydruid, python-dateutil, sqlalchemy-utils, wtforms-json
sqlalchemy-utils==0.32.21
sqlalchemy==1.2.2
sqlparse==0.2.4
tableschema==1.1.0
tabulator==1.15.0 # via tableschema
thrift-sasl==0.3.0
thrift==0.11.0
tornado==5.1.1 # via flower
unicodecsv==0.14.1
unidecode==1.0.22
urllib3==1.22 # via requests
urllib3==1.22 # via requests, selenium
vine==1.1.4 # via amqp
webencodings==0.5.1 # via html5lib
webencodings==0.5.1 # via bleach
werkzeug==0.14.1 # via flask
wtforms==2.2.1 # via flask-wtf
xlrd==1.1.0 # via tabulator
wtforms-json==0.3.3
wtforms==2.2.1 # via flask-wtf, wtforms-json

94
scripts/check_license.sh Executable file
View File

@@ -0,0 +1,94 @@
#!/usr/bin/env bash
#
# 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.
#
acquire_rat_jar () {
URL="http://repo1.maven.org/maven2/org/apache/rat/apache-rat/${RAT_VERSION}/apache-rat-${RAT_VERSION}.jar"
JAR="$rat_jar"
# Download rat launch jar if it hasn't been downloaded yet
if [ ! -f "$JAR" ]; then
# Download
printf "Attempting to fetch rat\n"
JAR_DL="${JAR}.part"
if [ $(command -v curl) ]; then
curl -L --silent "${URL}" > "$JAR_DL" && mv "$JAR_DL" "$JAR"
elif [ $(command -v wget) ]; then
wget --quiet ${URL} -O "$JAR_DL" && mv "$JAR_DL" "$JAR"
else
printf "You do not have curl or wget installed, please install rat manually.\n"
exit -1
fi
fi
unzip -tq "$JAR" &> /dev/null
if [ $? -ne 0 ]; then
# We failed to download
rm "$JAR"
printf "Our attempt to download rat locally to ${JAR} failed. Please install rat manually.\n"
exit -1
fi
printf "Done downloading.\n"
}
# Go to the project root directory
FWDIR="$(cd "`dirname "$0"`"/..; pwd)"
cd "$FWDIR"
TMP_DIR=/tmp
if test -x "$JAVA_HOME/bin/java"; then
declare java_cmd="$JAVA_HOME/bin/java"
else
declare java_cmd=java
fi
export RAT_VERSION=0.13
export rat_jar="${TMP_DIR}"/lib/apache-rat-${RAT_VERSION}.jar
mkdir -p ${TMP_DIR}/lib
[[ -f "$rat_jar" ]] || acquire_rat_jar || {
echo "Download failed. Obtain the rat jar manually and place it at $rat_jar"
exit 1
}
# This is the target of a symlink in superset/assets/docs - and rat exclude doesn't cope with the symlink target doesn't exist
mkdir -p docs/_build/html/
echo "Running license checks. This can take a while."
echo "$FWDIR"/.rat-excludes
$java_cmd -jar "$rat_jar" -E "$FWDIR"/.rat-excludes -d "$FWDIR" > rat-results.txt
if [ $? -ne 0 ]; then
echo "RAT exited abnormally"
exit 1
fi
ERRORS="$(cat rat-results.txt | grep -e "??")"
if test ! -z "$ERRORS"; then
echo >&2 "Could not find Apache license headers in the following files:"
echo >&2 "$ERRORS"
exit 1
else
echo -e "RAT checks passed."
fi

View File

@@ -1,3 +1,19 @@
# 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.
from collections import defaultdict
from superset import sm

28
scripts/sign.sh Executable file
View File

@@ -0,0 +1,28 @@
#!/usr/bin/env bash
#
# 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.
#
# Use this to sign the tar balls generated from
# python setup.py sdist --formats=gztar
# ie. sign.sh <my_tar_ball>
# you will still be required to type in your signing key password
# or it needs to be available in your keychain
NAME=${1}
gpg --armor --output ${NAME}.asc --detach-sig ${NAME}
gpg --print-md SHA512 ${NAME} > ${NAME}.sha512

View File

@@ -1,9 +1,25 @@
#
# 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.
#
[metadata]
name = Superset
summary = a data exploration platform
description-file = README.md
author = Maxime Beauchemin
author-email = maximebeauchemin@gmail.com
author = Apache Superset Dev
author-email = dev@superset.incubator.apache.org
license = Apache License, Version 2.0
[files]

View File

@@ -1,3 +1,19 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
import io
import json
import os
@@ -42,7 +58,7 @@ with open(os.path.join(PACKAGE_DIR, 'version_info.json'), 'w') as version_file:
setup(
name='superset',
name='apache-superset',
description=(
'A modern, enterprise-ready business intelligence web application'),
long_description=long_description,
@@ -53,22 +69,19 @@ setup(
zip_safe=False,
scripts=['superset/bin/superset'],
install_requires=[
'bleach',
'boto3==1.4.7',
'botocore>=1.7.0, <1.8.0',
'celery>=4.2.0',
'click==6.7',
'colorama==0.3.9',
'bleach>=3.0.2, <4.0.0',
'celery>=4.2.0, <5.0.0',
'click>=6.0, <7.0.0', # click >=7 forces "-" instead of "_"
'colorama',
'contextlib2',
'cryptography',
'flask<1.0.0',
'flask-appbuilder>=1.12.0',
'croniter>=0.3.28',
'cryptography>=2.4.2',
'flask>=1.0.0, <2.0.0',
'flask-appbuilder>=1.12.1, <2.0.0',
'flask-caching',
'flask-compress',
'flask-migrate',
'flask-wtf',
'flower', # deprecated
'future>=0.16.0, <0.17',
'geopy',
'gunicorn', # deprecated
'humanize',
@@ -80,31 +93,36 @@ setup(
'pathlib2',
'polyline',
'pydruid>=0.4.3',
'pyhive>=0.4.0',
'python-dateutil',
'python-geohash',
'pyyaml>=3.11',
'requests',
'pyyaml>=3.13',
'requests>=2.20.0',
'retry>=0.9.2',
'selenium>=3.141.0',
'simplejson>=3.15.0',
'sqlalchemy',
'sqlalchemy-utils',
'sqlparse',
'tableschema',
'thrift>=0.9.3',
'thrift-sasl>=0.2.1',
'unicodecsv',
'unidecode>=0.04.21',
'wtforms-json',
],
extras_require={
'cors': ['flask-cors>=2.0.0'],
'console_log': ['console_log==0.2.10'],
'hive': [
'pyhive>=0.4.0',
'tableschema',
'thrift-sasl>=0.2.1',
'thrift>=0.9.3',
],
'presto': ['pyhive>=0.4.0'],
'gsheets': ['gsheetsdb>=0.1.9'],
},
author='Maxime Beauchemin',
author_email='maximebeauchemin@gmail.com',
url='https://github.com/apache/incubator-superset',
author='Apache Software Foundation',
author_email='dev@superset.incubator.apache.org',
url='http://superset.apache.org/',
download_url=(
'https://github.com'
'/apache/incubator-superset/tarball/' + version_string
'https://dist.apache.org/repos/dist/release/superset/' + version_string
),
classifiers=[
'Programming Language :: Python :: 3.6',

View File

@@ -1,3 +1,19 @@
# 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.
# pylint: disable=C,R,W
"""Package's main module!"""
import json
@@ -12,10 +28,15 @@ from flask_compress import Compress
from flask_migrate import Migrate
from flask_wtf.csrf import CSRFProtect
from werkzeug.contrib.fixers import ProxyFix
import wtforms_json
from superset import config, utils
from superset import config
from superset.connectors.connector_registry import ConnectorRegistry
from superset.security import SupersetSecurityManager
from superset.utils.core import (
get_update_perms_flag, pessimistic_connection_handling, setup_cache)
wtforms_json.init()
APP_DIR = os.path.dirname(__file__)
CONFIG_MODULE = os.environ.get('SUPERSET_CONFIG', 'superset.config')
@@ -23,7 +44,7 @@ CONFIG_MODULE = os.environ.get('SUPERSET_CONFIG', 'superset.config')
if not os.path.exists(config.DATA_DIR):
os.makedirs(config.DATA_DIR)
with open(APP_DIR + '/static/assets/backendSync.json', 'r') as f:
with open(APP_DIR + '/static/assets/backendSync.json', 'r', encoding='utf-8') as f:
frontend_config = json.load(f)
app = Flask(__name__)
@@ -97,11 +118,11 @@ if conf.get('SILENCE_FAB'):
logging.getLogger('flask_appbuilder').setLevel(logging.ERROR)
if app.debug:
app.logger.setLevel(logging.DEBUG)
app.logger.setLevel(logging.DEBUG) # pylint: disable=no-member
else:
# In production mode, add log handler to sys.stderr.
app.logger.addHandler(logging.StreamHandler())
app.logger.setLevel(logging.INFO)
app.logger.addHandler(logging.StreamHandler()) # pylint: disable=no-member
app.logger.setLevel(logging.INFO) # pylint: disable=no-member
logging.getLogger('pyhive.presto').setLevel(logging.INFO)
db = SQLA(app)
@@ -112,10 +133,10 @@ if conf.get('WTF_CSRF_ENABLED'):
for ex in csrf_exempt_list:
csrf.exempt(ex)
utils.pessimistic_connection_handling(db.engine)
pessimistic_connection_handling(db.engine)
cache = utils.setup_cache(app, conf.get('CACHE_CONFIG'))
tables_cache = utils.setup_cache(app, conf.get('TABLE_NAMES_CACHE_CONFIG'))
cache = setup_cache(app, conf.get('CACHE_CONFIG'))
tables_cache = setup_cache(app, conf.get('TABLE_NAMES_CACHE_CONFIG'))
migrate = Migrate(app, db, directory=APP_DIR + '/migrations')
@@ -183,7 +204,7 @@ appbuilder = AppBuilder(
base_template='superset/base.html',
indexview=MyIndexView,
security_manager_class=custom_sm,
update_perms=utils.get_update_perms_flag(),
update_perms=get_update_perms_flag(),
)
security_manager = appbuilder.sm

View File

@@ -1,5 +1,23 @@
/**
* 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.
*/
{
"presets" : ["airbnb", "react", "env"],
"presets" : ["airbnb", "@babel/preset-react", "@babel/preset-env"],
"plugins": ["lodash", "syntax-dynamic-import", "react-hot-loader/babel"],
"env": {
"test": {

View File

@@ -1,3 +1,19 @@
#
# 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.
#
**/*{.,-}min.js
**/*.sh
coverage/**

View File

@@ -1,3 +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.
*/
{
"extends": "airbnb",
"parser": "babel-eslint",
@@ -18,7 +36,6 @@
"func-names": 0,
"react/jsx-no-bind": 0,
"no-confusing-arrow": 0,
"jsx-a11y/no-static-element-interactions": 0,
"jsx-a11y/anchor-has-content": 0,
"react/require-default-props": 0,
@@ -40,6 +57,10 @@
"react/no-string-refs": 0,
"indent": 0,
"no-multi-spaces": 0,
"padded-blocks": 0
"padded-blocks": 0,
"import/extensions": [".js", ".jsx", ".ts", ".tsx", ".json"]
},
"settings": {
"import/resolver": "webpack"
}
}

View File

@@ -1,56 +0,0 @@
verbose: true
instrumentation:
root: './src'
extensions: ['.js', '.jsx']
excludes: [
'dist/**',
'visualizations/index.js',
'visualizations/**/*ChartPlugin.js',
]
embed-source: false
variable: __coverage__
compact: true
preserve-comments: false
complete-copy: false
save-baseline: true
baseline-file: ./coverage/coverage-baseline.json
include-all-sources: true
include-pid: false
es-modules: true
reporting:
print: summary
reports:
- lcov
dir: ./coverage
watermarks:
statements: [50, 80]
lines: [50, 80]
functions: [50, 80]
branches: [50, 80]
report-config:
clover: {file: clover.xml}
cobertura: {file: cobertura-coverage.xml}
json: {file: coverage-final.json}
json-summary: {file: coverage-summary.json}
lcovonly: {file: lcov.info}
teamcity: {file: null, blockName: Code Coverage Summary}
text: {file: null, maxCols: 0}
text-lcov: {file: lcov.info}
text-summary: {file: null}
hooks:
hook-run-in-context: false
post-require-hook: null
handle-sigint: false
check:
global:
statements: 0
lines: 0
branches: 0
functions: 0
excludes: []
each:
statements: 0
lines: 0
branches: 0
functions: 0
excludes: []

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
~ 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="210px" height="202px" viewBox="0 0 210 202" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 42 (36781) - http://www.bohemiancoding.com/sketch -->
<title>Full Lockup With Text</title>

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

View File

@@ -1,4 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
~ 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="210px" height="146px" viewBox="0 0 210 146" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 42 (36781) - http://www.bohemiancoding.com/sketch -->
<title>Full Lockup Without Text@1x</title>

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

View File

@@ -1,4 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
~ 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="350px" height="66px" viewBox="0 0 350 66" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 42 (36781) - http://www.bohemiancoding.com/sketch -->
<title>Horizontal</title>

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

@@ -1,4 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
~ 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="123px" height="66px" viewBox="0 0 123 66" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 42 (36781) - http://www.bohemiancoding.com/sketch -->
<title>Solo Mark@1x</title>

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 8.5 KiB

After

Width:  |  Height:  |  Size: 9.3 KiB

View File

@@ -1,4 +1,22 @@
<svg width="269" height="69" viewBox="0 0 269 69" fill="none" xmlns="http://www.w3.org/2000/svg">
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
~ 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.
-->
<rect width="269" height="69" fill="black" fill-opacity="0"/>
<rect width="269" height="69" fill="black" fill-opacity="0"/>
<rect width="70" height="35" fill="black" fill-opacity="0" transform="translate(0 23)"/>

Before

Width:  |  Height:  |  Size: 9.7 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -1,4 +1,22 @@
<svg width="100" height="50" viewBox="0 0 100 50" fill="none" xmlns="http://www.w3.org/2000/svg">
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
~ 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.
-->
<rect width="100" height="50" fill="black" fill-opacity="0"/>
<rect width="100" height="50" fill="black" fill-opacity="0"/>
<rect width="100" height="50" fill="black" fill-opacity="0"/>

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -1,4 +1,22 @@
<svg width="187" height="119" viewBox="0 0 187 119" fill="none" xmlns="http://www.w3.org/2000/svg">
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
~ 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.
-->
<rect width="187" height="119" fill="black" fill-opacity="0"/>
<rect width="187" height="119" fill="black" fill-opacity="0"/>
<rect width="70" height="35" fill="black" fill-opacity="0" transform="translate(59)"/>

Before

Width:  |  Height:  |  Size: 9.7 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -1,6 +1,10 @@
{
"baseUrl": "http://localhost:8081",
"videoUploadOnPasses": false,
"video": false,
"ignoreTestFiles": ["**/!(*.test.js)"],
"projectId": "fbf96q"
"projectId": "fbf96q",
"defaultCommandTimeout": 10000,
"viewportWidth": 1280,
"viewportHeight": 800
}

View File

@@ -1,71 +1,103 @@
import { WORLD_HEALTH_DASHBOARD, CHECK_DASHBOARD_FAVORITE_ENDPOINT } from './dashboard.helper';
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import { WORLD_HEALTH_DASHBOARD } from './dashboard.helper';
import readResponseBlob from '../../utils/readResponseBlob';
export default () => describe('top-level controls', () => {
let sliceIds = [];
let dashboard = {};
let isFavoriteDashboard = false;
const sliceRequests = [];
const forceRefreshRequests = [];
let mapId;
beforeEach(() => {
cy.server();
cy.login();
cy.route(CHECK_DASHBOARD_FAVORITE_ENDPOINT).as('countFavStar');
cy.visit(WORLD_HEALTH_DASHBOARD);
cy.get('#app').then((data) => {
const bootstrapData = JSON.parse(data[0].dataset.bootstrap);
dashboard = bootstrapData.dashboard_data;
sliceIds = dashboard.slices.map(slice => (slice.slice_id));
});
const dashboard = bootstrapData.dashboard_data;
const sliceIds = dashboard.slices.map(slice => (slice.slice_id));
mapId = dashboard.slices.find(slice => (slice.form_data.viz_type === 'world_map')).slice_id;
cy.wait('@countFavStar').then((xhr) => {
isFavoriteDashboard = xhr.response.body.count === 1;
sliceIds
.forEach((id) => {
const sliceRequest = `getJson_${id}`;
sliceRequests.push(`@${sliceRequest}`);
cy.route('POST', `/superset/explore_json/?form_data={"slice_id":${id}}`).as(sliceRequest);
const forceRefresh = `getJson_${id}_force`;
forceRefreshRequests.push(`@${forceRefresh}`);
cy.route('POST', `/superset/explore_json/?form_data={"slice_id":${id}}&force=true`).as(forceRefresh);
});
});
});
it('should allow favor/unfavor', () => {
if (!isFavoriteDashboard) {
cy.get('.favstar').find('i').should('have.class', 'fa-star-o');
cy.get('.favstar').trigger('click');
cy.get('.favstar').find('i').should('have.class', 'fa-star')
.and('not.have.class', 'fa-star-o');
} else {
cy.get('.favstar').find('i').should('have.class', 'fa-star')
.and('not.have.class', 'fa-star-o');
cy.get('.favstar').trigger('click');
cy.get('.fave-unfave-icon').find('i').should('have.class', 'fa-star-o')
.and('not.have.class', 'fa-star');
}
// reset to original fav state
cy.get('.favstar').trigger('click');
afterEach(() => {
sliceRequests.length = 0;
forceRefreshRequests.length = 0;
});
it('should allow auto refresh', () => {
const sliceRequests = [];
const forceRefreshRequests = [];
sliceIds
.forEach((id) => {
const sliceRequest = `getJson_${id}`;
sliceRequests.push(`@${sliceRequest}`);
cy.route('POST', `/superset/explore_json/?form_data={"slice_id":${id}}`).as(sliceRequest);
it('should allow chart level refresh', () => {
cy.wait(sliceRequests);
cy.get('.grid-container .world_map').should('be.exist');
cy.get(`#slice_${mapId}-controls`).click();
cy.get(`#slice_${mapId}-controls`).next()
.find('.refresh-tooltip').trigger('click', { force: true });
const forceRefresh = `getJson_${id}_force`;
forceRefreshRequests.push(`@${forceRefresh}`);
cy.route('POST', `/superset/explore_json/?form_data={"slice_id":${id}}&force=true`).as(forceRefresh);
});
// not allow dashboard level force refresh when any chart is loading
cy.get('#save-dash-split-button').trigger('click', { forece: true });
cy.contains('Force refresh dashboard').parent().should('have.class', 'disabled');
// not allow chart level force refresh when it is loading
cy.get(`#slice_${mapId}-controls`).next()
.find('.refresh-tooltip')
.parent()
.parent()
.should('have.class', 'disabled');
cy.wait(`@getJson_${mapId}_force`);
cy.get('#save-dash-split-button').trigger('click');
cy.contains('Force refresh dashboard').parent().not('have.class', 'disabled');
});
it('should allow dashboard level force refresh', () => {
// when charts are not start loading, for example, under a secondary tab,
// should allow force refresh
cy.get('#save-dash-split-button').trigger('click');
cy.contains('Force refresh dashboard').parent().not('have.class', 'disabled');
// wait the all dash finish loading.
cy.wait(sliceRequests);
cy.get('#save-dash-split-button').trigger('click');
cy.contains('Force refresh dashboard').click();
cy.contains('Force refresh dashboard').trigger('click', { force: true });
cy.get('#save-dash-split-button').trigger('click');
cy.contains('Force refresh dashboard').parent().should('have.class', 'disabled');
// wait all charts force refreshed
cy.wait(forceRefreshRequests).then((xhrs) => {
// is_cached in response should be false
xhrs.forEach(async (xhr) => {
const responseBody = await readResponseBlob(xhr.response.body);
expect(responseBody.is_cached).to.equal(false);
xhrs.forEach((xhr) => {
readResponseBlob(xhr.response.body).then((responseBody) => {
expect(responseBody.is_cached).to.equal(false);
});
});
});
cy.get('#save-dash-split-button').trigger('click');
cy.contains('Force refresh dashboard').parent().not('have.class', 'disabled');
});
});

View File

@@ -1,3 +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.
*/
export const WORLD_HEALTH_DASHBOARD = '/superset/dashboard/world_health';
export const CHECK_DASHBOARD_FAVORITE_ENDPOINT = '/superset/favstar/Dashboard/*/count';

View File

@@ -1,3 +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.
*/
import { WORLD_HEALTH_DASHBOARD } from './dashboard.helper';
export default () => describe('edit mode', () => {

View File

@@ -0,0 +1,53 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import { WORLD_HEALTH_DASHBOARD, CHECK_DASHBOARD_FAVORITE_ENDPOINT } from './dashboard.helper';
export default () => describe('favorite dashboard', () => {
let isFavoriteDashboard = false;
beforeEach(() => {
cy.server();
cy.login();
cy.route(CHECK_DASHBOARD_FAVORITE_ENDPOINT).as('countFavStar');
cy.visit(WORLD_HEALTH_DASHBOARD);
cy.wait('@countFavStar').then((xhr) => {
isFavoriteDashboard = xhr.response.body.count === 1;
});
});
it('should allow favor/unfavor', () => {
if (!isFavoriteDashboard) {
cy.get('.favstar').find('i').should('have.class', 'fa-star-o');
cy.get('.favstar').trigger('click');
cy.get('.favstar').find('i').should('have.class', 'fa-star')
.and('not.have.class', 'fa-star-o');
} else {
cy.get('.favstar').find('i').should('have.class', 'fa-star')
.and('not.have.class', 'fa-star-o');
cy.get('.favstar').trigger('click');
cy.get('.fave-unfave-icon').find('i').should('have.class', 'fa-star-o')
.and('not.have.class', 'fa-star');
}
// reset to original fav state
cy.get('.favstar').trigger('click');
});
});

View File

@@ -1,3 +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.
*/
import { WORLD_HEALTH_DASHBOARD } from './dashboard.helper';
export default () => describe('dashboard filter', () => {

View File

@@ -1,11 +1,33 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import DashboardControlsTest from './controls';
import DashboardEditModeTest from './edit_mode';
import DashboardFavStarTest from './fav_star';
import DashboardFilterTest from './filter';
import DashboardLoadTest from './load';
import DashboardSaveTest from './save';
describe('Dashboard', () => {
DashboardControlsTest();
DashboardEditModeTest();
DashboardFavStarTest();
DashboardFilterTest();
DashboardLoadTest();
DashboardSaveTest();
});

View File

@@ -1,3 +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.
*/
import readResponseBlob from '../../utils/readResponseBlob';
import { WORLD_HEALTH_DASHBOARD } from './dashboard.helper';

View File

@@ -0,0 +1,77 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import readResponseBlob from '../../utils/readResponseBlob';
import { WORLD_HEALTH_DASHBOARD } from './dashboard.helper';
export default () => describe('save', () => {
let dashboardId;
let boxplotChartId;
beforeEach(() => {
cy.server();
cy.login();
cy.visit(WORLD_HEALTH_DASHBOARD);
cy.get('#app').then((data) => {
const bootstrapData = JSON.parse(data[0].dataset.bootstrap);
const dashboard = bootstrapData.dashboard_data;
dashboardId = dashboard.id;
boxplotChartId = dashboard.slices.find(slice => (slice.form_data.viz_type === 'box_plot')).slice_id;
cy.route('POST', `/superset/copy_dash/${dashboardId}/`).as('copyRequest');
});
cy.get('#save-dash-split-button').trigger('click', { force: true });
cy.contains('Save as').trigger('click', { force: true });
cy.get('.modal-footer').contains('Save').trigger('click', { force: true });
});
it('should save as new dashboard', () => {
cy.wait('@copyRequest').then((xhr) => {
expect(xhr.status).to.eq(200);
readResponseBlob(xhr.response.body).then((json) => {
expect(json.id).to.be.gt(dashboardId);
});
});
});
it('should save/overwrite dashboard', () => {
cy.wait('@copyRequest');
// should have box_plot chart
const boxplotRequest = `/superset/explore_json/?form_data={"slice_id":${boxplotChartId}}`;
cy.route('POST', boxplotRequest).as('boxplotRequest');
cy.wait('@boxplotRequest');
cy.get('.grid-container .box_plot').should('be.exist');
// remove box_plot chart from dashboard
cy.get('.dashboard-header').contains('Edit dashboard').trigger('click', { force: true });
cy.get('.fa.fa-trash').last().trigger('click', { force: true });
cy.get('.grid-container .box_plot').should('not.exist');
cy.route('POST', '/superset/save_dash/**/').as('saveRequest');
cy.get('.dashboard-header').contains('Save changes').trigger('click', { force: true });
// go back to view mode
cy.wait('@saveRequest');
cy.get('.dashboard-header').contains('Edit dashboard');
cy.get('.grid-container .box_plot').should('not.exist');
});
});

View File

@@ -0,0 +1,57 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import { FORM_DATA_DEFAULTS, NUM_METRIC } from './visualizations/shared.helper';
import readResponseBlob from '../../utils/readResponseBlob';
describe('Error', () => {
beforeEach(() => {
cy.login();
cy.server();
cy.route('POST', '/superset/explore_json/**').as('getJson');
});
it('No data error message shows up', () => {
const formData = {
...FORM_DATA_DEFAULTS,
metrics: [NUM_METRIC],
viz_type: 'line',
adhoc_filters: [{
expressionType: 'SIMPLE',
subject: 'state',
operator: 'in',
comparator: ['Fake State'],
clause: 'WHERE',
sqlExpression: null,
fromFormData: true,
}],
};
cy.visitChartByParams(JSON.stringify(formData));
cy.wait('@getJson').then(async (xhr) => {
expect(xhr.status).to.eq(400);
const responseBody = await readResponseBlob(xhr.response.body);
if (responseBody.error) {
expect(responseBody.error).to.eq('No data');
}
});
cy.get('div.alert').contains('No data');
});
});

View File

@@ -1,6 +1,25 @@
/**
* 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.
*/
// ***********************************************
// Tests for setting controls in the UI
// ***********************************************
import { FORM_DATA_DEFAULTS, NUM_METRIC } from './visualizations/shared.helper';
describe('Groupby', () => {
it('Set groupby', () => {
@@ -70,7 +89,7 @@ describe('AdhocMetrics', () => {
cy.get('[data-test=metrics]').within(() => {
cy.get('.select-clear').click();
cy.get('.Select-control').click({ force: true });
cy.get('input').type('num', { force: true });
cy.get('input').type('num{downarrow}', { force: true });
cy.get('.VirtualizedSelectFocusedOption')
.trigger('mousedown')
.click();
@@ -80,7 +99,7 @@ describe('AdhocMetrics', () => {
cy.get('#adhoc-metric-edit-tabs-tab-SQL').click();
cy.get('.ace_content').click();
cy.get('.ace_text-input')
.type(`{selectall}{backspace}${metric}`, { force: true });
.type('/COUNT(DISTINCT name)', { force: true });
cy.get('button').contains('Save').click();
});
@@ -207,6 +226,7 @@ describe('Advanced analytics', () => {
cy.get('span')
.contains('Advanced Analytics')
.parent()
.siblings()
.first()
.click();
@@ -267,3 +287,36 @@ describe('Annotations', () => {
cy.get('.nv-legend-text').should('have.length', 2);
});
});
describe('Time range filter', () => {
beforeEach(() => {
cy.login();
cy.server();
cy.route('POST', '/superset/explore_json/**').as('getJson');
});
it('Defaults to the correct tab for time_range params', () => {
const formData = {
...FORM_DATA_DEFAULTS,
metrics: [NUM_METRIC],
viz_type: 'line',
time_range: '100 years ago : now',
};
cy.visitChartByParams(JSON.stringify(formData));
cy.verifySliceSuccess({ waitAlias: '@getJson' });
cy.get('[data-test=time_range]').within(() => {
cy.get('span.label').click();
});
cy.get('#filter-popover').within(() => {
cy.get('div.tab-pane.active').within(() => {
cy.get('div.PopoverSection :not(.dimmed)').within(() => {
cy.get('input[value="100 years ago"]');
cy.get('input[value="now"]');
});
});
});
});
});

View File

@@ -1,3 +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.
*/
// ***********************************************
// Tests for links in the explore UI
// ***********************************************
@@ -26,19 +44,22 @@ describe('Test explore links', () => {
});
it('Visit short link', () => {
cy.route('POST', 'r/shortner/').as('getShortUrl');
cy.visitChartByName('Growth Rate');
cy.verifySliceSuccess({ waitAlias: '@getJson' });
cy.get('[data-test=short-link-button]').click();
cy.get('#shorturl-popover').within(() => {
cy.get('i[title="Copy to clipboard"]')
.siblings()
.first()
.invoke('text')
.then((text) => {
cy.visit(text);
// explicitly wait for the url response
cy.wait('@getShortUrl');
cy.wait(100);
cy.get('#shorturl-popover [data-test="short-url"]').invoke('text')
.then((text) => {
cy.visit(text);
});
});
cy.verifySliceSuccess({ waitAlias: '@getJson' });
});
@@ -52,7 +73,7 @@ describe('Test explore links', () => {
});
});
it('Test chart save as', () => {
xit('Test chart save as', () => {
const formData = {
...HEALTH_POP_FORM_DATA_DEFAULTS,
viz_type: 'table',
@@ -76,7 +97,7 @@ describe('Test explore links', () => {
});
});
it('Test chart save', () => {
xit('Test chart save', () => {
const chartName = 'Test chart';
cy.visitChartByName(chartName);
cy.verifySliceSuccess({ waitAlias: '@getJson' });

View File

@@ -1,3 +1,23 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import readResponseBlob from '../../../utils/readResponseBlob';
export default () => describe('Area', () => {
const AREA_FORM_DATA = {
datasource: '2__table',
@@ -53,11 +73,12 @@ export default () => describe('Area', () => {
...AREA_FORM_DATA,
groupby: ['region'],
});
cy.get('.nv-area').should('have.length', 7);
});
it('should work with groupby and filter', () => {
verify({
cy.visitChartByParams(JSON.stringify({
...AREA_FORM_DATA,
groupby: ['region'],
adhoc_filters: [{
@@ -70,6 +91,18 @@ export default () => describe('Area', () => {
fromFormData: true,
filterOptionName: 'filter_txje2ikiv6_wxmn0qwd1xo',
}],
}));
cy.wait('@getJson').then(async (xhr) => {
cy.verifyResponseCodes(xhr);
const responseBody = await readResponseBlob(xhr.response.body);
// Make sure data is sorted correctly
const firstRow = responseBody.data[0].values;
const secondRow = responseBody.data[1].values;
expect(firstRow[firstRow.length - 1].y).to.be.greaterThan(secondRow[secondRow.length - 1].y);
cy.verifySliceContainer('svg');
});
cy.get('.nv-area').should('have.length', 2);
});

View File

@@ -1,3 +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.
*/
export default () => describe('Big Number', () => {
const BIG_NUMBER_FORM_DATA = {
datasource: '2__table',

View File

@@ -1,3 +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.
*/
import { FORM_DATA_DEFAULTS, NUM_METRIC } from './shared.helper';
import readResponseBlob from '../../../utils/readResponseBlob';

View File

@@ -1,3 +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.
*/
export default () => describe('Box Plot', () => {
const BOX_PLOT_FORM_DATA = {
datasource: '2__table',

View File

@@ -1,3 +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.
*/
export default () => describe('Bubble', () => {
const BUBBLE_FORM_DATA = {
datasource: '2__table',

View File

@@ -1,3 +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.
*/
export default () => describe('Compare', () => {
const COMPARE_FORM_DATA = {
datasource: '3__table',

View File

@@ -1,3 +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.
*/
import { FORM_DATA_DEFAULTS, NUM_METRIC } from './shared.helper';
// Dist bar

View File

@@ -1,3 +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.
*/
export default () => describe('Dual Line', () => {
const DUAL_LINE_FORM_DATA = {
datasource: '3__table',

View File

@@ -0,0 +1,43 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import { FORM_DATA_DEFAULTS } from './shared.helper';
export default () => describe('FilterBox', () => {
const VIZ_DEFAULTS = { ...FORM_DATA_DEFAULTS, viz_type: 'filter_box' };
function verify(formData) {
cy.visitChartByParams(JSON.stringify(formData));
cy.verifySliceSuccess({ waitAlias: '@getJson' });
}
beforeEach(() => {
cy.server();
cy.login();
cy.route('POST', '/superset/explore_json/**').as('getJson');
});
it('should work with default date filter', () => {
verify(VIZ_DEFAULTS);
// Filter box should default to having a date filter with no filter selected
cy.get('div.filter_box').within(() => {
cy.get('span').contains('No filter');
});
});
});

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