From 130b7d79684c0535fd8f5c5e7f8df5c76dcc2ada Mon Sep 17 00:00:00 2001 From: Sander Vocke Date: Tue, 28 Jan 2020 13:39:17 +0100 Subject: [PATCH] Added filter type selector. --- src/userquerywidget.js | 44 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/src/userquerywidget.js b/src/userquerywidget.js index e525c67..fac1c70 100644 --- a/src/userquerywidget.js +++ b/src/userquerywidget.js @@ -19,7 +19,7 @@ import { makeStyles } from '@material-ui/core/styles'; import { filter_is_const_false, ConstFilter, LogicalOperatorFilter, MatchingFilter, - ResultTypeEnum, LogicalOperatorEnum, MatchTypeEnum + ResultTypeEnum, LogicalOperatorEnum, MatchTypeEnum, NegationFilter } from './queries.js' const useStyles = makeStyles(theme => ({ @@ -79,7 +79,6 @@ export function EditLogicalOperatorFilterExpression(props) { const labelid = _.uniqueId("logic_op_label_"); function handleChange(e) { - console.log("changing to value: ", e.target.value); var newfilter = _.cloneDeep(filter); newfilter.operator = e.target.value; onChange(newfilter); @@ -105,6 +104,13 @@ export function EditFilterExpressionDialog(props) { const { onClose, startingFilter, open } = props; const [filter, setFilter] = React.useState(startingFilter); + const FilterTypeEnum = { + CONST: 0, + NEGATION: 1, + MATCHING: 2, + LOGICAL: 3, + }; + useEffect(() => { setFilter(startingFilter); }, [startingFilter]); @@ -113,8 +119,31 @@ export function EditFilterExpressionDialog(props) { onClose(filter); }; + const handleTypeChange = e => { + var val = e.target.value; + if(val == FilterTypeEnum.CONST) { + setFilter(new ConstFilter(filter.result_type, true)); + } else if(val == FilterTypeEnum.MATCHING) { + setFilter(new MatchingFilter(filter.result_type, "", MatchTypeEnum.MATCH_IMAGE_NAME_NATURAL)); + } else { + throw new Error('Unsupported filter type: ' + val); + } + } + + const getFilterType = filter => { + if(filter instanceof ConstFilter) { return FilterTypeEnum.CONST; } + else if(filter instanceof NegationFilter) { return FilterTypeEnum.NEGATION; } + else if(filter instanceof MatchingFilter) { return FilterTypeEnum.MATCHING; } + else if(filter instanceof LogicalOperatorFilter) { return FilterTypeEnum.LOGICAL; } + else { + throw new Error('Unsupported filter type: ' + filter); + } + } + var _ = require('lodash'); const id = _.uniqueId("simple_dialog_title_"); + const selectId = _.uniqueId("select_"); + const selectLabelId = _.uniqueId("select_label_"); var control = <>; var subprops = { @@ -132,6 +161,17 @@ export function EditFilterExpressionDialog(props) { return ( Edit expression + + + {control}