diff --git a/src/userquerywidget.js b/src/userquerywidget.js index fac1c70..2ecfc50 100644 --- a/src/userquerywidget.js +++ b/src/userquerywidget.js @@ -14,6 +14,7 @@ import MenuItem from '@material-ui/core/MenuItem'; import DialogTitle from '@material-ui/core/DialogTitle'; import Dialog from '@material-ui/core/Dialog'; import Select from '@material-ui/core/Select'; +import TextField from '@material-ui/core/TextField'; import { makeStyles } from '@material-ui/core/styles'; @@ -21,6 +22,7 @@ import { filter_is_const_false, ConstFilter, LogicalOperatorFilter, MatchingFilter, ResultTypeEnum, LogicalOperatorEnum, MatchTypeEnum, NegationFilter } from './queries.js' +import { Typography } from '@material-ui/core'; const useStyles = makeStyles(theme => ({ root: {}, @@ -99,6 +101,49 @@ export function EditLogicalOperatorFilterExpression(props) { ); } +export function EditMatchingFilterExpression(props) { + const { onChange, filter } = props; + const classes = useStyles(); + + function handleTypeChange(e) { + var new_filter = _.cloneDeep(filter); + new_filter.match_type = e.target.value; + onChange(new_filter); + } + + function handleMatchChange(e) { + var new_filter = _.cloneDeep(filter); + new_filter.match_from = e.target.value; + onChange(new_filter); + } + + var _ = require('lodash'); + const typeSelectId = _.uniqueId("select_"); + const typeSelectLabelId = _.uniqueId("select_label_"); + + return ( + + TODO: make nice icons and autocomplete here + + + + ); +} + export function EditFilterExpressionDialog(props) { const classes = useStyles(); const { onClose, startingFilter, open } = props; @@ -121,9 +166,9 @@ export function EditFilterExpressionDialog(props) { const handleTypeChange = e => { var val = e.target.value; - if(val == FilterTypeEnum.CONST) { + if (val == FilterTypeEnum.CONST) { setFilter(new ConstFilter(filter.result_type, true)); - } else if(val == FilterTypeEnum.MATCHING) { + } else if (val == FilterTypeEnum.MATCHING) { setFilter(new MatchingFilter(filter.result_type, "", MatchTypeEnum.MATCH_IMAGE_NAME_NATURAL)); } else { throw new Error('Unsupported filter type: ' + val); @@ -131,10 +176,10 @@ export function EditFilterExpressionDialog(props) { } 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; } + 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); } @@ -154,14 +199,14 @@ export function EditFilterExpressionDialog(props) { control = } else if (filter instanceof LogicalOperatorFilter) { control = - }/* else if (expr instanceof MatchingFilter) { - filter_elem = - }*/ + } else if (filter instanceof MatchingFilter) { + control = + } return ( Edit expression - +