|
|
|
@ -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 ( |
|
|
|
|
<Dialog aria-labelledby={id} open={open}> |
|
|
|
|
<DialogTitle id={id}>Edit expression</DialogTitle> |
|
|
|
|
<FormControl> |
|
|
|
|
<Select |
|
|
|
|
labelId={selectLabelId} |
|
|
|
|
id={selectId} |
|
|
|
|
value={getFilterType(filter)} |
|
|
|
|
onChange={handleTypeChange} |
|
|
|
|
> |
|
|
|
|
<MenuItem value={FilterTypeEnum.CONST}>Constant</MenuItem> |
|
|
|
|
<MenuItem value={FilterTypeEnum.MATCHING}>Matching</MenuItem> |
|
|
|
|
</Select> |
|
|
|
|
</FormControl> |
|
|
|
|
{control} |
|
|
|
|
<Button onClick={handleClose}> |
|
|
|
|
Done |
|
|
|
|