changeset 235955d39ba9 in sao:default details: https://hg.tryton.org/sao?cmd=changeset;node=235955d39ba9 description: Add domain inversion for reference fields
issue7877 review45831002 diffstat: CHANGELOG | 1 + src/common.js | 21 +++++++++++++++------ tests/sao.js | 4 ++++ 3 files changed, 20 insertions(+), 6 deletions(-) diffs (54 lines): diff -r e596254259df -r 235955d39ba9 CHANGELOG --- a/CHANGELOG Mon Apr 08 15:06:36 2019 +0200 +++ b/CHANGELOG Sun Apr 14 14:17:39 2019 +0200 @@ -1,3 +1,4 @@ +* Add domain inversion for reference fields * Add list-form view * Support HTML widget * Use locale format for data export diff -r e596254259df -r 235955d39ba9 src/common.js --- a/src/common.js Mon Apr 08 15:06:36 2019 +0200 +++ b/src/common.js Sun Apr 14 14:17:39 2019 +0200 @@ -2339,13 +2339,22 @@ }, unique_value: function(domain) { if ((domain instanceof Array) && - (domain.length == 1) && - !domain[0][0].contains('.') && - (domain[0][1] == '=')) { - return [true, domain[0][1], domain[0][2]]; - } else { - return [false, null, null]; + (domain.length == 1)) { + domain = domain[0]; + var name = domain[0]; + var value = domain[2]; + var count = 0; + if (domain.length == 4 && name.endsWith('.id')) { + count = 1; + var model = domain[3]; + value = [model, value]; + } + if ((name.split('.').length - 1) == count && + (domain[1] == '=')) { + return [true, domain[1], value]; + } } + return [false, null, null]; }, parse: function(domain) { var And = Sao.common.DomainInversion.And; diff -r e596254259df -r 235955d39ba9 tests/sao.js --- a/tests/sao.js Mon Apr 08 15:06:36 2019 +0200 +++ b/tests/sao.js Sun Apr 14 14:17:39 2019 +0200 @@ -2201,6 +2201,10 @@ QUnit.ok(!unique_value(domain)[0]); domain = [['a.b', '=', 1]]; QUnit.ok(!unique_value(domain)[0]); + domain = [['a.id', '=', 1, 'model']]; + QUnit.ok(compare(unique_value(domain), [true, '=', ['model', 1]])); + domain = [['a.b.id', '=', 1, 'model']]; + QUnit.ok(compare(unique_value(domain), [false, null, null])); }); QUnit.test('DomainInversion evaldomain', function() {