diff --git a/client/app/components/dashboards/AddWidgetDialog.jsx b/client/app/components/dashboards/AddWidgetDialog.jsx index 6821035f07..898d0ffcfe 100644 --- a/client/app/components/dashboards/AddWidgetDialog.jsx +++ b/client/app/components/dashboards/AddWidgetDialog.jsx @@ -7,13 +7,11 @@ import { wrap as wrapDialog, DialogPropType } from '@/components/DialogWrapper'; import { MappingType, ParameterMappingListInput, - editableMappingsToParameterMappings, - synchronizeWidgetTitles, } from '@/components/ParameterMappingInput'; import { QuerySelector } from '@/components/QuerySelector'; import { toastr } from '@/services/ng'; -import { Widget } from '@/services/widget'; + import { Query } from '@/services/query'; const { Option, OptGroup } = Select; @@ -22,6 +20,7 @@ class AddWidgetDialog extends React.Component { static propTypes = { dashboard: PropTypes.object.isRequired, // eslint-disable-line react/forbid-prop-types dialog: DialogPropType.isRequired, + onConfirm: PropTypes.func.isRequired, }; state = { @@ -76,34 +75,12 @@ class AddWidgetDialog extends React.Component { } saveWidget() { - const dashboard = this.props.dashboard; + const { selectedVis, parameterMappings } = this.state; this.setState({ saveInProgress: true }); - const widget = new Widget({ - visualization_id: this.state.selectedVis && this.state.selectedVis.id, - dashboard_id: dashboard.id, - options: { - isHidden: false, - position: {}, - parameterMappings: editableMappingsToParameterMappings(this.state.parameterMappings), - }, - visualization: this.state.selectedVis, - text: '', - }); - - const position = dashboard.calculateNewWidgetPosition(widget); - widget.options.position.col = position.col; - widget.options.position.row = position.row; - - const widgetsToSave = [ - widget, - ...synchronizeWidgetTitles(widget.options.parameterMappings, dashboard.widgets), - ]; - - Promise.all(map(widgetsToSave, w => w.save())) + this.props.onConfirm(selectedVis, parameterMappings) .then(() => { - dashboard.widgets.push(widget); this.props.dialog.close(); }) .catch(() => { diff --git a/client/app/pages/dashboards/dashboard.html b/client/app/pages/dashboards/dashboard.html index 73c883d603..715a9f105e 100644 --- a/client/app/pages/dashboards/dashboard.html +++ b/client/app/pages/dashboards/dashboard.html @@ -110,8 +110,8 @@