[IMP] web: domain selector: getDefaultFieldValue should know operator
The computation of the default value used by an editor used to assume
that the (default) operator is equal. We now pass the operator info to
getDefaultFieldValue in order to be able to have a different default
operator ("in" will become the default operator for relational fields).
Part-of: odoo/odoo#126350
This commit is contained in:
@@ -192,7 +192,7 @@ export class DomainSelector extends Component {
|
||||
const pathInfo = { path, fieldDef };
|
||||
node.pathInfo = pathInfo;
|
||||
node.operatorInfo = getOperatorsInfo(pathInfo.fieldDef)[0];
|
||||
node.value = getDefaultFieldValue(pathInfo.fieldDef);
|
||||
node.value = getDefaultFieldValue(pathInfo.fieldDef, node.operatorInfo.key);
|
||||
this.notifyChanges();
|
||||
}
|
||||
|
||||
@@ -213,12 +213,18 @@ export class DomainSelector extends Component {
|
||||
}
|
||||
// binary operator with a non array value
|
||||
case 1: {
|
||||
node.value = getDefaultFieldValue(node.pathInfo.fieldDef);
|
||||
node.value = getDefaultFieldValue(
|
||||
node.pathInfo.fieldDef,
|
||||
node.operatorInfo.key
|
||||
);
|
||||
break;
|
||||
}
|
||||
// binary operator with a fixed sized array value
|
||||
default: {
|
||||
const defaultValue = getDefaultFieldValue(node.pathInfo.fieldDef);
|
||||
const defaultValue = getDefaultFieldValue(
|
||||
node.pathInfo.fieldDef,
|
||||
node.operatorInfo.key
|
||||
);
|
||||
node.value = Array(node.operatorInfo.valueCount).fill(defaultValue);
|
||||
break;
|
||||
}
|
||||
@@ -237,7 +243,10 @@ export class DomainSelector extends Component {
|
||||
}
|
||||
|
||||
removeExprValue(node) {
|
||||
this.updateLeafValue(node, getDefaultFieldValue(node.pathInfo.fieldDef));
|
||||
this.updateLeafValue(
|
||||
node,
|
||||
getDefaultFieldValue(node.pathInfo.fieldDef, node.operatorInfo.key)
|
||||
);
|
||||
}
|
||||
|
||||
onDebugValueChange(value) {
|
||||
|
||||
@@ -388,12 +388,12 @@ export function getOperatorsInfo(fieldDef) {
|
||||
return selectOperators(descr.operators);
|
||||
}
|
||||
|
||||
export function getDefaultFieldValue(fieldDef) {
|
||||
export function getDefaultFieldValue(fieldDef, operatorKey) {
|
||||
const descr = getFieldInfo(fieldDef);
|
||||
return descr.defaultValue(fieldDef);
|
||||
return descr.defaultValue(fieldDef, operatorKey);
|
||||
}
|
||||
|
||||
export function getDefaultOperator(fieldDef) {
|
||||
const [firstOperator] = getOperatorsInfo(fieldDef);
|
||||
return firstOperator.symbol;
|
||||
return firstOperator;
|
||||
}
|
||||
|
||||
@@ -49,8 +49,8 @@ function getDefaultDomain(fieldDefs) {
|
||||
fieldDef = fieldDefs[name];
|
||||
if (fieldDef) {
|
||||
const operator = getDefaultOperator(fieldDef);
|
||||
const defaultValue = getDefaultFieldValue(fieldDef);
|
||||
return new Domain([[fieldDef.name, operator, defaultValue]]).toString();
|
||||
const defaultValue = getDefaultFieldValue(fieldDef, operator.key);
|
||||
return new Domain([[fieldDef.name, operator.symbol, defaultValue]]).toString();
|
||||
}
|
||||
}
|
||||
return new Domain([["id", "=", 1]]).toString();
|
||||
|
||||
Reference in New Issue
Block a user