diff --git a/superset/assets/src/SqlLab/actions/sqlLab.js b/superset/assets/src/SqlLab/actions/sqlLab.js index 81c8e8d55..9c5a9d048 100644 --- a/superset/assets/src/SqlLab/actions/sqlLab.js +++ b/superset/assets/src/SqlLab/actions/sqlLab.js @@ -107,6 +107,17 @@ export function saveQuery(query) { .catch(() => dispatch(addDangerToast(t('Your query could not be saved')))); } +export function scheduleQuery(query) { + return dispatch => + SupersetClient.post({ + endpoint: '/savedqueryviewapi/api/create', + postPayload: query, + stringify: false, + }) + .then(() => dispatch(addSuccessToast(t('Your query has been scheduled. To see details of your query, navigate to Saved Queries')))) + .catch(() => dispatch(addDangerToast(t('Your query could not be scheduled')))); +} + export function startQuery(query) { Object.assign(query, { id: query.id ? query.id : shortid.generate(), diff --git a/superset/assets/src/SqlLab/components/ScheduleQueryButton.jsx b/superset/assets/src/SqlLab/components/ScheduleQueryButton.jsx index 99ecaa525..d8f82fba6 100644 --- a/superset/assets/src/SqlLab/components/ScheduleQueryButton.jsx +++ b/superset/assets/src/SqlLab/components/ScheduleQueryButton.jsx @@ -20,6 +20,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import Form from 'react-jsonschema-form'; import chrono from 'chrono-node'; +import { Col, FormControl, FormGroup, Row } from 'react-bootstrap'; import { t } from '@superset-ui/translation'; import Button from '../../components/Button'; @@ -76,11 +77,17 @@ const propTypes = { dbId: PropTypes.number.isRequired, animation: PropTypes.bool, onSchedule: PropTypes.func, + scheduleQueryWarning: PropTypes.string, + disabled: PropTypes.bool, + tooltip: PropTypes.string, }; const defaultProps = { defaultLabel: t('Undefined'), animation: true, onSchedule: () => {}, + scheduleQueryWarning: null, + disabled: false, + tooltip: null, }; class ScheduleQueryButton extends React.PureComponent { @@ -123,12 +130,53 @@ class ScheduleQueryButton extends React.PureComponent { } renderModalBody() { return ( -
+