diff --git a/client/app/pages/data-sources/EditDataSource.jsx b/client/app/pages/data-sources/EditDataSource.jsx index 75bf14b75b..0e37354d54 100644 --- a/client/app/pages/data-sources/EditDataSource.jsx +++ b/client/app/pages/data-sources/EditDataSource.jsx @@ -10,6 +10,7 @@ import notification from '@/services/notification'; import PromiseRejectionError from '@/lib/promise-rejection-error'; import LoadingState from '@/components/items-list/components/LoadingState'; import DynamicForm from '@/components/dynamic-form/DynamicForm'; +import SchemaTable from '@/pages/data-sources/schema-table-components/SchemaTable'; import helper from '@/components/dynamic-form/dynamicFormHelper'; import { HelpTrigger, TYPES as HELP_TRIGGER_TYPES } from '@/components/HelpTrigger'; @@ -26,13 +27,23 @@ class EditDataSource extends React.Component { dataSource: null, type: null, loading: true, + schema: null, }; componentDidMount() { DataSource.get({ id: $route.current.params.dataSourceId }).$promise.then((dataSource) => { const { type } = dataSource; this.setState({ dataSource }); - DataSource.types(types => this.setState({ type: find(types, { type }), loading: false })); + + const typesPromise = DataSource.types().$promise; + const schemaPromise = DataSource.schema({ id: $route.current.params.dataSourceId }).$promise; + + typesPromise.then(types => this.setState({ type: find(types, { type }) })); + schemaPromise.then(data => this.setState({ schema: data.schema })); + + Promise.all([typesPromise, schemaPromise]).then(() => { + this.setState({ loading: false }); + }); }).catch((error) => { // ANGULAR_REMOVE_ME This code is related to Angular's HTTP services if (error.status && error.data) { @@ -78,6 +89,12 @@ class EditDataSource extends React.Component { }); }; + updateSchema = (schema, tableId, columnId) => { + const { dataSource } = this.state; + const data = { tableId, columnId, schema }; + DataSource.updateSchema({ id: dataSource.id }, data); + }; + testConnection = (callback) => { const { dataSource } = this.state; DataSource.test({ id: dataSource.id }, (httpResponse) => { @@ -124,6 +141,12 @@ class EditDataSource extends React.Component {
+
+ +
); } diff --git a/client/app/pages/data-sources/schema-table-components/EditableTable.jsx b/client/app/pages/data-sources/schema-table-components/EditableTable.jsx index 006a18cd2f..6154541e6f 100644 --- a/client/app/pages/data-sources/schema-table-components/EditableTable.jsx +++ b/client/app/pages/data-sources/schema-table-components/EditableTable.jsx @@ -42,7 +42,7 @@ export class EditableCell extends React.Component { } onChange = () => { - this.setState({ visible: !this.state.visible }); + this.setState(prevState => ({ visible: !prevState.visible })); } getInput = () => { @@ -51,7 +51,8 @@ export class EditableCell extends React.Component { ); + /> + ); } return