diff --git a/frontend/components/KolideAce/KolideAce.jsx b/frontend/components/KolideAce/KolideAce.jsx
index 877d3639e9..23f74686d0 100644
--- a/frontend/components/KolideAce/KolideAce.jsx
+++ b/frontend/components/KolideAce/KolideAce.jsx
@@ -15,10 +15,11 @@ class KolideAce extends Component {
static propTypes = {
error: PropTypes.string,
fontSize: PropTypes.number,
+ handleSubmit: PropTypes.func.isRequired,
label: PropTypes.string,
name: PropTypes.string,
- onChange: PropTypes.func,
- onLoad: PropTypes.func,
+ onChange: PropTypes.func.isRequired,
+ onLoad: PropTypes.func.isRequired,
value: PropTypes.string,
readOnly: PropTypes.bool,
showGutter: PropTypes.bool,
@@ -49,6 +50,7 @@ class KolideAce extends Component {
const {
error,
fontSize,
+ handleSubmit,
name,
onChange,
onLoad,
@@ -86,6 +88,11 @@ class KolideAce extends Component {
value={value}
width="100%"
wrapEnabled={wrapEnabled}
+ commands={[{
+ name: 'commandName',
+ bindKey: { win: 'Ctrl-Enter', mac: 'Ctrl-Enter' },
+ exec: handleSubmit,
+ }]}
/>
);
diff --git a/frontend/components/forms/queries/QueryForm/QueryForm.jsx b/frontend/components/forms/queries/QueryForm/QueryForm.jsx
index 0a49edfa97..2c68398146 100644
--- a/frontend/components/forms/queries/QueryForm/QueryForm.jsx
+++ b/frontend/components/forms/queries/QueryForm/QueryForm.jsx
@@ -41,10 +41,11 @@ class QueryForm extends Component {
name: formFieldInterface.isRequired,
query: formFieldInterface.isRequired,
}).isRequired,
- handleSubmit: PropTypes.func,
+ handleSubmit: PropTypes.func.isRequired,
formData: queryInterface,
- onOsqueryTableSelect: PropTypes.func,
- onUpdate: PropTypes.func,
+ onOsqueryTableSelect: PropTypes.func.isRequired,
+ onRunQuery: PropTypes.func.isRequired,
+ onUpdate: PropTypes.func.isRequired,
queryIsRunning: PropTypes.bool,
title: PropTypes.string,
};
@@ -137,7 +138,7 @@ class QueryForm extends Component {
}
render () {
- const { baseError, fields, handleSubmit, queryIsRunning, title } = this.props;
+ const { baseError, fields, handleSubmit, onRunQuery, queryIsRunning, title } = this.props;
const { errors } = this.state;
const { onLoad, renderButtons } = this;
@@ -158,6 +159,7 @@ class QueryForm extends Component {
onLoad={onLoad}
readOnly={queryIsRunning}
wrapperClassName={`${baseClass}__text-editor-wrapper`}
+ handleSubmit={onRunQuery}
/>
diff --git a/frontend/components/queries/QueryProgressDetails/QueryProgressDetails.jsx b/frontend/components/queries/QueryProgressDetails/QueryProgressDetails.jsx
index 6d1d25a9f9..6c431d1803 100644
--- a/frontend/components/queries/QueryProgressDetails/QueryProgressDetails.jsx
+++ b/frontend/components/queries/QueryProgressDetails/QueryProgressDetails.jsx
@@ -9,11 +9,7 @@ import Timer from 'components/loaders/Timer';
const baseClass = 'query-progress-details';
-const QueryProgressDetails = ({ campaign, className, onRunQuery, onStopQuery, query, queryIsRunning, queryTimerMilliseconds }) => {
- const handleRunQuery = () => {
- return onRunQuery(query);
- };
-
+const QueryProgressDetails = ({ campaign, className, onRunQuery, onStopQuery, queryIsRunning, queryTimerMilliseconds }) => {
const { hosts_count: hostsCount } = campaign;
const totalHostsCount = get(campaign, ['totals', 'count'], 0);
const totalRowsCount = get(campaign, ['query_results', 'length'], 0);
@@ -22,7 +18,7 @@ const QueryProgressDetails = ({ campaign, className, onRunQuery, onStopQuery, qu