Commit Graph

234 Commits

Author SHA1 Message Date
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
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
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
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
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
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
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
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
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
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
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
Grace Guo
69e8df404d sql lab localStorage config (#6257) 2018-11-06 23:12:32 -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
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
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
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
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
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
Grace Guo
9c5fc42fee add error details into log (#6169) 2018-10-25 13:52:47 -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
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
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
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
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
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
Chris Williams
316fdcb4d0 [SIP-4] replace chart ajax calls with SupersetClient (#5875)
* [deps] add @superset-ui/core

* [superset-client] initialize SupersetClient in app setup

* [superset-client] add abortcontroller-polyfill

* [superset-client] replace all chart ajax calls with SupersetClient

* [tests] add fetch-mock dep and helpers/setupSupersetClient.js

* [superset client][charts][tests] fix and improve chartActions_spec

* [deps] @superset-ui/core@^0.0.4

* [common] add better SupersetClient initialization error

* [cypress] add readResponseBlob helper, fix broken fetch-based tests

* [cypress] fix tests from rebase

* [deps] @superset-ui/core@^0.0.5

* [cypress][fetch] fix controls test for fetch

* [cypress][dashboard][fetch] fix filter test for fetch

* [superset-client] configure protocol on init

* yarn.lock

* undo Chart.jsx revert

* yarn again

* [superset-client] fix chartAction unit tests
2018-10-15 16:52:19 -07:00
Christine Chambers
9029701f24 [refactor] Migrate from Mocha+Chai to Jest (#6079)
* [refactor] Migrate from Mocha+Chai to Jest

This change migrates all the existing unit tests
- to Jest's global expect and matchers from chai's imported expect, asserts and matchers.
- to Jest's describe/test from mocha's describe/it

The majority of the mechanical changes to tests are achieved through running jest-codemods. The only two note-worthy manual tweaks:
1. Setting a testURL of http://localhost in jest config and adjusting a few tests to leverage this value instead of relying on about:blank.
2. Re-enabling ExploreChartPanel_spec which was previously commented out as we cannot have empty tests with nothing in it with Jest. :)

This change also removes dependencies to Mocha and Chai.

* Remove the test:one command as it now does the same thing as test.

* Fixing lint errors. The diff looks large but is large done through `yarn run lint --fix`

The only noteworthy change is the one in eslintrc for tests. The env has been updated from mocha to jest.

* Adding eslint-plugin-jest and further modify tests.

- One small fix in sqllab's Timer Spec for a test that is not using the spy it created for testing.
- Deletion of a duplicated test caught by eslint-plugin-jest.

* - Make istanbul coverage work with Jest.

- Remove dependency on stand-alone istanbul and babel-istanbul as they're built-into jest. Yes!

* Attempt to fix dynamic imports in tests.

* run sequentially and log heap usage

* - tweaking maxworkers for travis and specifying coverageDirectory for codecov

- remove dynamic import in shim.js now that it is set in babelrc for tests only.
2018-10-15 13:10:18 -07:00
Krist Wongsuphasawat
64383ce96e Rename color constants and move util function into separate file (#6074)
* rename constant colors to UPPERCASE

* Move isDefined into its own file and add unit test
2018-10-11 14:05:34 -07:00
Krist Wongsuphasawat
cd2c46a5ed Add data structures for chart plugin system (#6028)
* add unit tests

* add test structure

* add unit tests for Registry

* add LoaderRegistry unit test

* add unit test for makeSingleton

* add type check

* add plugin data structures

* simplify API

* add preset tests

* update test message

* fix lint

* update makeSingleton

* update Plugin, Preset and unit test

* revise Registry code

* update unit test, add remove function

* update test

* update unit test

* update plugin unit test

* add .keys(), .entries() and .entriesAsPromise()

* update test description
2018-10-09 11:47:16 -07:00
Junda Yang
712c1aa767 Allow user to force refresh metadata (#5933)
* Allow user to force refresh metadata

* fix javascript test error

* nit

* fix styling

* allow custom cache timeout configuration on any database

* minor improvement

* nit

* fix test

* nit

* preserve the old endpoint
2018-10-08 20:25:40 -07:00
Beto Dealmeida
96952d0daf Search queries when enter is pressed (#6043)
* Search queries when enter is pressed

* Add unit test

* Remove line

* Improve test
2018-10-07 12:48:06 -07:00
Krist Wongsuphasawat
8fe6f12622 refer to default color scheme in colorpickercontrol instead of pointing to specific scheme (#6031) 2018-10-04 18:10:22 -07:00
Christine Chambers
604524b671 [feat] Feature flag system via config (#5960)
* [feat] Feature flag system via config

Adding a feature flag system that is driven by superset_config.py. This change includes:
- Server side changes to specify a dedicated FEATURE_FLAG dictionary for listing feature flags. E.g.
```
FEATURE_FLAGS = { 'SCOPED_FILTER': true }
```
- Pass the new feature flags to client via bootstrap-data
- Client side changes to inject feature flags into the redux state tree for dashboard, explore view and SqlLab
- Client side refactor/clean up so the feature flags can be properly tested. Also avoid modifying incoming bootstrap data when creating initial state for the redux state tree
- Re-enable tests that were previously disabled for ExploreViewContainer

* Fix lint errors.

* Remove the partial attempt to get reference to src working in tests (so we don't have to write ../../../src and such in tests). This will in a separate PR.
2018-10-01 11:47:06 -07:00
Krist Wongsuphasawat
2cd9407a50 [SIP-6] Migrate visualizations to new directory structure. (#5949)
* Migrate Chord, Calendar

* Migrate CountryMap

* Add display name and rename Chord.jsx to Chord.js

* migrate Histogram

* add force-directed

* migrate Heatmap

* add horizon

* migrate parallel coordinates

* migrate partition

* migrate pivot table

* migrate rose

* remove react-dom

* migrate Sankey

* migrate sunburst

* migrate table

* migrate treemap

* migrate filterbox

* migrate wordcloud

* add paired t-test

* fix unit test

* remove renaming

* rename fields
2018-09-27 14:39:56 -07:00
Krist Wongsuphasawat
4c21c65824 Remove lodash.throttle and replace underscore calls with lodash (#5946)
* remove lodash.throttle from dependency

* add babel-plugin-lodash'

* use lodash instead of underscore for isFunction

* switch underscore to lodash

* switch from underscore to lodash flatten

* Remove slugify and use kebabCase from lodash instead
2018-09-26 23:28:57 -07:00