From 935c1140da672ae3c6bca90b91d66e16b54bbbff Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Wed, 16 Dec 2020 16:07:41 -0500 Subject: [PATCH] Task options redesign --- .../app/js/components/EditPresetDialog.jsx | 43 +++++++++++++++---- .../js/components/ProcessingNodeOption.jsx | 10 +++-- app/static/app/js/css/EditPresetDialog.scss | 32 +++++++++++++- 3 files changed, 70 insertions(+), 15 deletions(-) diff --git a/app/static/app/js/components/EditPresetDialog.jsx b/app/static/app/js/components/EditPresetDialog.jsx index 3fc52625..796dcf9e 100644 --- a/app/static/app/js/components/EditPresetDialog.jsx +++ b/app/static/app/js/components/EditPresetDialog.jsx @@ -30,7 +30,9 @@ class EditPresetDialog extends React.Component { this.options = {}; this.state = { - name: props.preset.name + name: props.preset.name, + search: "", + showSearch: false }; this.getFormData = this.getFormData.bind(this); @@ -81,6 +83,16 @@ class EditPresetDialog extends React.Component { } } + toggleSearchControl = () => { + this.setState({showSearch: !this.state.showSearch}); + } + + componentDidUpdate(prevProps, prevState){ + if (this.state.showSearch){ + this.searchControl.focus(); + } + } + render(){ let options = PresetUtils.getAvailableOptions(this.props.preset.options, this.props.availableOptions); @@ -97,20 +109,33 @@ class EditPresetDialog extends React.Component { deleteWarning={false} deleteAction={(this.props.preset.id !== -1 && !this.props.preset.system) ? this.props.deleteAction : undefined}> {!this.isCustomPreset() ? -
+ [
{ this.nameInput = domNode; }} value={this.state.name} onChange={this.handleChange('name')} />
-
+
, +
] + : ""} + + + + {this.state.showSearch ? +
+
+ { this.searchControl = node}} onChange={this.handleChange('search')} /> +
+
: ""}
- -
- {options.map(option => - +
+ {options.filter(option => this.state.showSearch && this.state.search !== "" ? + option.name.toLowerCase().indexOf(this.state.search.toLowerCase()) !== -1 : + true) + .map(option => + )}
diff --git a/app/static/app/js/components/ProcessingNodeOption.jsx b/app/static/app/js/components/ProcessingNodeOption.jsx index 2dab87c4..2f2c0c59 100644 --- a/app/static/app/js/components/ProcessingNodeOption.jsx +++ b/app/static/app/js/components/ProcessingNodeOption.jsx @@ -47,7 +47,7 @@ class ProcessingNodeOption extends React.Component { } setTooltips(domNode){ - if (domNode !== null) $(domNode).children('[data-toggle="tooltip"]').tooltip(); + if (domNode !== null) $(domNode).find('[data-toggle="tooltip"]').tooltip(); } resetToDefault(e){ @@ -156,11 +156,13 @@ class ProcessingNodeOption extends React.Component { return (
-
+
{inputControl} {loadFileControl} - - + + {this.state.value !== "" ? + : + ""}
); } diff --git a/app/static/app/js/css/EditPresetDialog.scss b/app/static/app/js/css/EditPresetDialog.scss index f41f6f05..31f39d2a 100644 --- a/app/static/app/js/css/EditPresetDialog.scss +++ b/app/static/app/js/css/EditPresetDialog.scss @@ -1,5 +1,33 @@ .edit-preset-dialog{ .preset-name{ - margin-bottom: 16px; - } + margin-bottom: 16px; + display: flex; + label{ + text-align: left; + } + } + .info-button{ + position: relative; + top: 1px; + left: 2px; + } + + .checkbox{ + min-height: 45px; + } + + .search-toggle{ + position: absolute; + right: 24px; + top: 24px; + z-index: 2; + } + + .search-controls{ + margin-bottom: 12px; + margin-right: 38px; + input{ + height: 36px; + } + } } \ No newline at end of file