增加了

This commit is contained in:
Xu Chang 2025-06-09 15:23:01 +08:00
parent a70f584e08
commit e36cf430cf
4 changed files with 50 additions and 1 deletions

View File

@ -566,6 +566,16 @@ export default class TreeStore extends CascadeStore {
}).length > 0; }).length > 0;
}; };
} }
case '$length': {
// json中的数组长度查询
const length = value;
assert(typeof length === 'number');
return (row) => {
const data = path ? get(row, path) : row;
assert(data instanceof Array, '$length operator can only used on array attribute');
return data.length === length;
};
}
default: { default: {
throw new Error(`predicate ${predicate} is not recoganized`); throw new Error(`predicate ${predicate} is not recoganized`);
} }

View File

@ -568,6 +568,16 @@ class TreeStore extends CascadeStore_1.CascadeStore {
}).length > 0; }).length > 0;
}; };
} }
case '$length': {
// json中的数组长度查询
const length = value;
(0, assert_1.assert)(typeof length === 'number');
return (row) => {
const data = path ? (0, lodash_1.get)(row, path) : row;
(0, assert_1.assert)(data instanceof Array, '$length operator can only used on array attribute');
return data.length === length;
};
}
default: { default: {
throw new Error(`predicate ${predicate} is not recoganized`); throw new Error(`predicate ${predicate} is not recoganized`);
} }

View File

@ -707,6 +707,16 @@ export default class TreeStore<ED extends EntityDict & BaseEntityDict> extends C
}).length > 0; }).length > 0;
}; };
} }
case '$length': {
// json中的数组长度查询
const length = value;
assert (typeof length === 'number');
return (row) => {
const data = path ? get(row, path) : row;
assert(data instanceof Array, '$length operator can only used on array attribute');
return data.length === length;
}
}
default: { default: {
throw new Error(`predicate ${predicate} is not recoganized`); throw new Error(`predicate ${predicate} is not recoganized`);
} }
@ -2281,7 +2291,7 @@ export default class TreeStore<ED extends EntityDict & BaseEntityDict> extends C
} }
else if (this.store[entity]?.[id]) { else if (this.store[entity]?.[id]) {
const row = this.constructRow(this.store[entity]![id]!, context); const row = this.constructRow(this.store[entity]![id]!, context);
if ((row[UpdateAtAttribute] as number) <= (d[entity]![id]![UpdateAtAttribute] as number)) { if ((row![UpdateAtAttribute] as number) <= (d[entity]![id]![UpdateAtAttribute] as number)) {
this.updateAbjointRow(entity, { this.updateAbjointRow(entity, {
id: 'dummy', id: 'dummy',
action: 'update', action: 'update',

View File

@ -1317,6 +1317,24 @@ describe('基础测试', function () {
} }
}, context, {}); }, context, {});
const row12 = store.select('oper', {
data: {
id: 1,
data: {
name: 1,
price: 1,
},
},
filter: {
id,
data: {
price: {
$length: 3,
},
}
}
}, context, {});
context.commit(); context.commit();
assert(row.length === 1); assert(row.length === 1);
assert(row2.length === 0); assert(row2.length === 0);
@ -1329,6 +1347,7 @@ describe('基础测试', function () {
assert(row9.length === 1); assert(row9.length === 1);
assert(row10.length === 1); assert(row10.length === 1);
assert(row11.length === 0); assert(row11.length === 0);
assert(row12.length === 1);
// console.log(JSON.stringify(row7)); // console.log(JSON.stringify(row7));
}); });