From 5c33e790a2644e0339f84ae684795a1dd57d4448 Mon Sep 17 00:00:00 2001 From: Manuel Trezza Date: Mon, 13 Jan 2020 03:59:15 +0100 Subject: [PATCH 1/2] added config param delete confirmation dialog --- src/dashboard/Data/Config/Config.react.js | 72 +++++++++++-------- .../Config/DeleteParameterDialog.react.js | 60 ++++++++++++++++ 2 files changed, 104 insertions(+), 28 deletions(-) create mode 100644 src/dashboard/Data/Config/DeleteParameterDialog.react.js diff --git a/src/dashboard/Data/Config/Config.react.js b/src/dashboard/Data/Config/Config.react.js index 273b0b8dc2..c0015e7f12 100644 --- a/src/dashboard/Data/Config/Config.react.js +++ b/src/dashboard/Data/Config/Config.react.js @@ -5,19 +5,20 @@ * This source code is licensed under the license found in the LICENSE file in * the root directory of this source tree. */ -import { ActionTypes } from 'lib/stores/ConfigStore'; -import Button from 'components/Button/Button.react'; -import ConfigDialog from 'dashboard/Data/Config/ConfigDialog.react'; -import EmptyState from 'components/EmptyState/EmptyState.react'; -import Icon from 'components/Icon/Icon.react'; -import { isDate } from 'lib/DateUtils'; -import Parse from 'parse'; -import React from 'react'; -import SidebarAction from 'components/Sidebar/SidebarAction'; -import subscribeTo from 'lib/subscribeTo'; -import TableHeader from 'components/Table/TableHeader.react'; -import TableView from 'dashboard/TableView.react'; -import Toolbar from 'components/Toolbar/Toolbar.react'; +import { ActionTypes } from 'lib/stores/ConfigStore'; +import Button from 'components/Button/Button.react'; +import ConfigDialog from 'dashboard/Data/Config/ConfigDialog.react'; +import DeleteParameterDialog from 'dashboard/Data/Config/DeleteParameterDialog.react'; +import EmptyState from 'components/EmptyState/EmptyState.react'; +import Icon from 'components/Icon/Icon.react'; +import { isDate } from 'lib/DateUtils'; +import Parse from 'parse'; +import React from 'react'; +import SidebarAction from 'components/Sidebar/SidebarAction'; +import subscribeTo from 'lib/subscribeTo'; +import TableHeader from 'components/Table/TableHeader.react'; +import TableView from 'dashboard/TableView.react'; +import Toolbar from 'components/Toolbar/Toolbar.react'; @subscribeTo('Config', 'config') class Config extends TableView { @@ -28,10 +29,12 @@ class Config extends TableView { this.action = new SidebarAction('Create a parameter', this.createParameter.bind(this)); this.state = { modalOpen: false, + showDeleteParameterDialog: false, modalParam: '', modalType: 'String', modalValue: '', - modalMasterKeyOnly: false + modalMasterKeyOnly: false, + parameterToDelete: null }; } @@ -56,20 +59,28 @@ class Config extends TableView { } renderExtras() { - if (!this.state.modalOpen) { - return null; - } const { currentApp = {} } = this.context; - return ( - this.setState({ modalOpen: false })} - param={this.state.modalParam} - type={this.state.modalType} - value={this.state.modalValue} - masterKeyOnly={this.state.modalMasterKeyOnly} - parseServerVersion={currentApp.serverInfo && currentApp.serverInfo.parseServerVersion} /> - ); + let extras = null; + if (this.state.modalOpen) { + extras = ( + this.setState({ modalOpen: false })} + param={this.state.modalParam} + type={this.state.modalType} + value={this.state.modalValue} + masterKeyOnly={this.state.modalMasterKeyOnly} + parseServerVersion={currentApp.serverInfo && currentApp.serverInfo.parseServerVersion} /> + ); + } else if (this.state.showDeleteParameterDialog) { + extras = ( + this.setState({ showDeleteParameterDialog: false, parameterToDelete: null })} + onConfirm={() => this.deleteParam.bind(this, this.state.modalParam)} /> + ); + } + return extras; } renderRow(data) { @@ -119,6 +130,11 @@ class Config extends TableView { } openModal() } + + let openDeleteParameterDialog = () => this.setState({ + showDeleteParameterDialog: true, + modalParam: data.param + }); return ( @@ -127,7 +143,7 @@ class Config extends TableView { {value} {data.masterKeyOnly.toString()} - + diff --git a/src/dashboard/Data/Config/DeleteParameterDialog.react.js b/src/dashboard/Data/Config/DeleteParameterDialog.react.js new file mode 100644 index 0000000000..4c4d76231d --- /dev/null +++ b/src/dashboard/Data/Config/DeleteParameterDialog.react.js @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2016-present, Parse, LLC + * All rights reserved. + * + * This source code is licensed under the license found in the LICENSE file in + * the root directory of this source tree. + */ +import Field from 'components/Field/Field.react'; +import Label from 'components/Label/Label.react'; +import Modal from 'components/Modal/Modal.react'; +import React from 'react'; +import TextInput from 'components/TextInput/TextInput.react'; + +export default class DeleteParameterDialog extends React.Component { + constructor() { + super(); + + this.state = { + confirmation: '' + }; + } + + valid() { + if (this.state.confirmation === this.props.param) { + return true; + } + return false; + } + + render() { + let content = ( + + } + input={ + this.setState({ confirmation })} /> + } /> + ); + return ( + + {content} + + ); + } +} From 5452c5c28f1957ea9c424dd91509c491c20f5c81 Mon Sep 17 00:00:00 2001 From: Manuel Trezza Date: Mon, 13 Jan 2020 16:59:43 +0100 Subject: [PATCH 2/2] fixed parameter not deleted --- src/dashboard/Data/Browser/AddColumnDialog.react.js | 2 +- src/dashboard/Data/Config/Config.react.js | 11 ++++++----- src/dashboard/Data/Config/ConfigDialog.react.js | 2 +- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/dashboard/Data/Browser/AddColumnDialog.react.js b/src/dashboard/Data/Browser/AddColumnDialog.react.js index 597e72798f..bf1cf6c33d 100644 --- a/src/dashboard/Data/Browser/AddColumnDialog.react.js +++ b/src/dashboard/Data/Browser/AddColumnDialog.react.js @@ -8,7 +8,7 @@ import Parse from 'parse' import React from 'react'; -import semver from 'semver'; +import semver from 'semver/preload.js'; import Dropdown from 'components/Dropdown/Dropdown.react'; import Field from 'components/Field/Field.react'; import Label from 'components/Label/Label.react'; diff --git a/src/dashboard/Data/Config/Config.react.js b/src/dashboard/Data/Config/Config.react.js index c0015e7f12..4f5a9e2dda 100644 --- a/src/dashboard/Data/Config/Config.react.js +++ b/src/dashboard/Data/Config/Config.react.js @@ -33,8 +33,7 @@ class Config extends TableView { modalParam: '', modalType: 'String', modalValue: '', - modalMasterKeyOnly: false, - parameterToDelete: null + modalMasterKeyOnly: false }; } @@ -76,8 +75,8 @@ class Config extends TableView { extras = ( this.setState({ showDeleteParameterDialog: false, parameterToDelete: null })} - onConfirm={() => this.deleteParam.bind(this, this.state.modalParam)} /> + onCancel={() => this.setState({ showDeleteParameterDialog: false })} + onConfirm={this.deleteParam.bind(this, this.state.modalParam)} /> ); } return extras; @@ -212,7 +211,9 @@ class Config extends TableView { this.props.config.dispatch( ActionTypes.DELETE, { param: name } - ) + ).then(() => { + this.setState({ showDeleteParameterDialog: false }); + }); } createParameter() { diff --git a/src/dashboard/Data/Config/ConfigDialog.react.js b/src/dashboard/Data/Config/ConfigDialog.react.js index 1f7b2a0e53..bf33016e65 100644 --- a/src/dashboard/Data/Config/ConfigDialog.react.js +++ b/src/dashboard/Data/Config/ConfigDialog.react.js @@ -19,7 +19,7 @@ import TextInput from 'components/TextInput/TextInput.react'; import Toggle from 'components/Toggle/Toggle.react'; import validateNumeric from 'lib/validateNumeric'; import styles from 'dashboard/Data/Browser/Browser.scss'; -import semver from 'semver'; +import semver from 'semver/preload.js'; const PARAM_TYPES = [ 'Boolean',