diff --git a/superset/assets/src/dashboard/components/PropertiesModal.jsx b/superset/assets/src/dashboard/components/PropertiesModal.jsx
index 9b2fffe47..bf736e17f 100644
--- a/superset/assets/src/dashboard/components/PropertiesModal.jsx
+++ b/superset/assets/src/dashboard/components/PropertiesModal.jsx
@@ -21,6 +21,7 @@ import PropTypes from 'prop-types';
import { Row, Col, Button, Modal, FormControl } from 'react-bootstrap';
import Dialog from 'react-bootstrap-dialog';
import Select from 'react-select';
+import AceEditor from 'react-ace';
import { t } from '@superset-ui/translation';
import { SupersetClient } from '@superset-ui/connection';
@@ -49,19 +50,25 @@ const defaultProps = {
class PropertiesModal extends React.PureComponent {
constructor(props) {
super(props);
+ this.defaultMetadataValue = JSON.stringify(
+ props.dashboardInfo.metadata,
+ null,
+ 2,
+ );
this.state = {
errors: [],
values: {
dashboard_title: props.dashboardTitle,
slug: props.dashboardInfo.slug,
owners: props.owners || [],
- json_metadata: JSON.stringify(props.dashboardInfo.metadata),
+ json_metadata: this.defaultMetadataValue,
},
isOwnersLoaded: false,
userOptions: null,
isAdvancedOpen: false,
};
this.onChange = this.onChange.bind(this);
+ this.onMetadataChange = this.onMetadataChange.bind(this);
this.onOwnersChange = this.onOwnersChange.bind(this);
this.save = this.save.bind(this);
this.toggleAdvanced = this.toggleAdvanced.bind(this);
@@ -91,16 +98,19 @@ class PropertiesModal extends React.PureComponent {
}
onOwnersChange(value) {
- this.setState(state => ({
- values: {
- ...state.values,
- owners: value,
- },
- }));
+ this.updateFormState('owners', value);
+ }
+
+ onMetadataChange(metadata) {
+ this.updateFormState('json_metadata', metadata);
}
onChange(e) {
const { name, value } = e.target;
+ this.updateFormState(name, value);
+ }
+
+ updateFormState(name, value) {
this.setState(state => ({
values: {
...state.values,
@@ -245,14 +255,16 @@ class PropertiesModal extends React.PureComponent {
-
{t( diff --git a/superset/assets/src/dashboard/reducers/getInitialState.js b/superset/assets/src/dashboard/reducers/getInitialState.js index 4596f6361..b9ec8e68b 100644 --- a/superset/assets/src/dashboard/reducers/getInitialState.js +++ b/superset/assets/src/dashboard/reducers/getInitialState.js @@ -280,10 +280,7 @@ export default function(bootstrapData) { dashboardInfo: { id: dashboard.id, slug: dashboard.slug, - metadata: { - timed_refresh_immune_slices: - dashboard.metadata.timed_refresh_immune_slices, - }, + metadata: dashboard.metadata, userId: user_id, dash_edit_perm: dashboard.dash_edit_perm, dash_save_perm: dashboard.dash_save_perm,