This is an automated email from the ASF dual-hosted git repository. hugh pushed a commit to branch hotkeys in repository https://gitbox.apache.org/repos/asf/incubator-superset.git
commit 8d3dcf4b5e79e49237342639dc846169ea199c32 Author: hughhhh <hmi...@lyft.com> AuthorDate: Wed Dec 12 15:28:52 2018 -0800 working .... hotkeys in example of hotkeys in explore --- superset/assets/package.json | 1 + .../explore/components/ExploreViewContainer.jsx | 43 ++++++++++++++++++++++ superset/assets/yarn.lock | 21 ++++++++++- 3 files changed, 64 insertions(+), 1 deletion(-) diff --git a/superset/assets/package.json b/superset/assets/package.json index 466ad3e..9ac4bb5 100644 --- a/superset/assets/package.json +++ b/superset/assets/package.json @@ -121,6 +121,7 @@ "react-search-input": "^0.11.3", "react-select": "1.2.1", "react-select-fast-filter-options": "^0.2.1", + "react-shortcuts": "^1.6.2", "react-sortable-hoc": "^0.8.3", "react-split-pane": "^0.1.66", "react-sticky": "^6.0.2", diff --git a/superset/assets/src/explore/components/ExploreViewContainer.jsx b/superset/assets/src/explore/components/ExploreViewContainer.jsx index 162cb16..bb2fba5 100644 --- a/superset/assets/src/explore/components/ExploreViewContainer.jsx +++ b/superset/assets/src/explore/components/ExploreViewContainer.jsx @@ -3,6 +3,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import { bindActionCreators } from 'redux'; import { connect } from 'react-redux'; +import { Shortcuts, ShortcutManager } from 'react-shortcuts'; import ExploreChartPanel from './ExploreChartPanel'; import ControlPanelsContainer from './ControlPanelsContainer'; @@ -18,6 +19,18 @@ import * as chartActions from '../../chart/chartAction'; import { fetchDatasourceMetadata } from '../../dashboard/actions/datasources'; import { Logger, ActionLog, EXPLORE_EVENT_NAMES, LOG_ACTIONS_MOUNT_EXPLORER } from '../../logger'; + +const keymap = { + BOX: { + MOVE_LEFT: ['left', 'a'], + MOVE_RIGHT: ['right', 'd'], + MOVE_UP: ['up', 'w'], + MOVE_DOWN: ['down', 's'], + }, +}; + +const shortcutManager = new ShortcutManager(keymap) + const propTypes = { actions: PropTypes.object.isRequired, datasource_type: PropTypes.string.isRequired, @@ -59,6 +72,28 @@ class ExploreViewContainer extends React.Component { this.toggleModal = this.toggleModal.bind(this); } + getChildContext() { + return { shortcuts: shortcutManager } + } + + handleShortcuts(action, event) { + console.log(action, event) + switch (action) { + case 'MOVE_LEFT': + console.log('moving left') + break + case 'MOVE_RIGHT': + console.log('moving right') + break + case 'MOVE_UP': + console.log('moving up') + break + case 'COPY': + console.log('copying stuff') + break + } + } + componentDidMount() { window.addEventListener('resize', this.handleResize); window.addEventListener('popstate', this.handlePopstate); @@ -252,6 +287,10 @@ class ExploreViewContainer extends React.Component { return this.renderChartContainer(); } return ( + <Shortcuts + name='BOX' + handler={this.handleShortcuts} + > <div id="explore-container" className="container-fluid" @@ -291,11 +330,15 @@ class ExploreViewContainer extends React.Component { <div className="col-sm-8">{this.renderChartContainer()}</div> </div> </div> + </Shortcuts> ); } } ExploreViewContainer.propTypes = propTypes; +ExploreViewContainer.childContextTypes = { + shortcuts: PropTypes.object.isRequired +} function mapStateToProps(state) { const { explore, charts, impressionId } = state; diff --git a/superset/assets/yarn.lock b/superset/assets/yarn.lock index 9cdccb9..7293953 100644 --- a/superset/assets/yarn.lock +++ b/superset/assets/yarn.lock @@ -2900,6 +2900,10 @@ combined-stream@^1.0.5, combined-stream@^1.0.6, combined-stream@~1.0.5, combined dependencies: delayed-stream "~1.0.0" +combokeys@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/combokeys/-/combokeys-3.0.0.tgz#955c59a3959af40d26846ab6fc3c682448e7572e" + comma-separated-tokens@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.5.tgz#b13793131d9ea2d2431cf5b507ddec258f0ce0db" @@ -4446,7 +4450,7 @@ eventemitter3@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" -events@^1.0.0: +events@^1.0.0, events@^1.0.2: version "1.1.1" resolved "http://registry.npmjs.org/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" @@ -8710,6 +8714,10 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" +platform@^1.3.0: + version "1.3.5" + resolved "https://registry.yarnpkg.com/platform/-/platform-1.3.5.tgz#fb6958c696e07e2918d2eeda0f0bc9448d733444" + pluralize@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" @@ -9590,6 +9598,17 @@ react-select@^1.0.0-rc.2, react-select@^1.0.0-rc.5: prop-types "^15.5.8" react-input-autosize "^2.1.2" +react-shortcuts@^1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/react-shortcuts/-/react-shortcuts-1.6.2.tgz#ba43f4d7f33d0994ae9d65380fb6d5f03cc3b8cb" + dependencies: + combokeys "^3.0.0" + events "^1.0.2" + invariant "^2.1.0" + lodash "^4.15.0" + platform "^1.3.0" + prop-types "^15.5.8" + react-sortable-hoc@^0.8.3: version "0.8.3" resolved "https://registry.yarnpkg.com/react-sortable-hoc/-/react-sortable-hoc-0.8.3.tgz#8537e8ab8d6bad6829885755a0f847817ed78648"