-
Notifications
You must be signed in to change notification settings - Fork 16.6k
Feature: Adding new exploration UI #3449
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
Coverage decreased (-0.1%) to 68.987% when pulling baa8635af44def17e98921778a6fb1eb2f849a32 on tc-dc:fmenges/swivel_exploration into 3dfdde1 on apache:master. |
1 similar comment
|
Coverage decreased (-0.1%) to 68.987% when pulling baa8635af44def17e98921778a6fb1eb2f849a32 on tc-dc:fmenges/swivel_exploration into 3dfdde1 on apache:master. |
baa8635 to
121cb27
Compare
1 similar comment
121cb27 to
ebfc4f3
Compare
|
Coverage decreased (-0.1%) to 68.987% when pulling ebfc4f3e68db7f105e7e381dd128a10c63355b9d on tc-dc:fmenges/swivel_exploration into 147c12d on apache:master. |
3 similar comments
|
Coverage decreased (-0.1%) to 68.987% when pulling ebfc4f3e68db7f105e7e381dd128a10c63355b9d on tc-dc:fmenges/swivel_exploration into 147c12d on apache:master. |
|
Coverage decreased (-0.1%) to 68.987% when pulling ebfc4f3e68db7f105e7e381dd128a10c63355b9d on tc-dc:fmenges/swivel_exploration into 147c12d on apache:master. |
|
Coverage decreased (-0.1%) to 68.987% when pulling ebfc4f3e68db7f105e7e381dd128a10c63355b9d on tc-dc:fmenges/swivel_exploration into 147c12d on apache:master. |
ebfc4f3 to
61f39c4
Compare
|
Coverage decreased (-0.1%) to 68.982% when pulling 61f39c4754e07792224f9d7842fff11c2040d37c on tc-dc:fmenges/swivel_exploration into 7c1b56f on apache:master. |
|
Could you please remove some animated gifs? This crashed my firefox twice :) |
|
Worked on my machine :P ... I removed all but two, hope this fixes it. |
|
@fabianmenges this looks great, any plans when it will be ready? :) |
|
@DaimonPl We are using this in production already. I'll try to push an updated version of this tomorrow with bug fixes, a few more features and rebased to the current tip of master. Its currently not clear if this will make it upstream (into the master branch) anytime soon. I'll try to make it easier for people to check this version of superset out and run. The more community interest there is for this feature the more likely it is we'll get it into the master branch. |
|
@fabianmenges hi, any updates on updated version of this branch? This feature looks really great and we would like to give it a try. |
|
@fabianmenges @mistercrunch hi, I saw recent full annotation framework PR being merged. That's great! Any chances to look into this feature as well? We are currently using external tool (pivot) for similar interaction. It would be really, really great to have such feature built into superset. We are getting very, very good feedback from non-tech users for whom static dashboards sometimes are not enough. |
61f39c4 to
0a31605
Compare
|
@DaimonPl just pushed an updated version. I'm updating the description, a lot of the 'todos' are now in. UI did not change much but quite a few new features around filters, sessions, request canceling and more. There are discussions getting it into the master branch but nothing concrete. I built Swivel for the exact use case you are describing. |
9dce52e to
d493c44
Compare
f25d2e1 to
5cf813b
Compare
5cf813b to
7fd15d8
Compare
|
That looks great. |
kalimuthu123
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes this also looking great
Swivel, a new exploration interface for Superset
Swivel is a new exploration interface with a primary design goal of fast and
interactive data exploration.
It currently only supports the following visualizations:
The main features of Swivel are:
groupbysandfiltersSwivel state design
Swivel uses both redux-undo and redux-localstorage
Redux-undo allows you access to a full history of your local state.
This is specifically useful since its primary development goal was to allow
fast interactive exploration of datasources.
Redux-localstorage persist the state of your current state e.g. open new browser tabs that inherit
the state of the previous tab. This is useful if you are planning on drilling down into
specific parts of the data in parallel. It also brings you back to your last exploration state
after you close a tab or accidentally close your browser.
In order to efficiently use both redux-localstorage and redux-undo the following state
structure was chosen:
settingscontains the part of the state that is both "undoable" and ispersisted to local storage.
queryis the part of the state that contains all settings which requireto run an updated query against the datasource.
vizis the part of the state that contains all settings that onlyrequire a re-rendering of the visualization without the need to run a query.
refDatacontains all reference data used by the Swivel.refDatais notundoable nor is it persisted in local storage.
controlThecontrolpart of the state contains the global state/settings of Swivelthat are not required for the visualization. This includes, whether a query is in progress,
an error occoured, etc... the control state is not undoable but persisted in local storage.
Following the redux design guidelines there are reducers and actions for each of these partial states/stores.
Separation of
queryandvizstate and ListenersThe
queryand thevizpart of thesettingsstate are separated to easily identify when a query needs to be rerun and when it is enough to rerender the the visualization.For this purpose I've chosen to use renderless React components that located in the
listenersfolder. I could have directly subscribed to the redux state changes but this seemed cleaner.These listeners will trigger the running of the updated query or rerendering the vizualization.
The
vizstate (with its reducers and actions) is extremely incomplete and I can potentially reuse big parts of the current explore view including the related react component architecture to complete it.TODOs
Havingfilters