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() {