Support filters for object parameters
This commit is contained in:
1 parent
6ee024cdfd
commit
4016f3acfd
1 file changed
+14
@@ -6,6 +6,9 @@ import * as taskQueue from "../task-queue";
|
|||||||
import * as store from "../store";
|
import * as store from "../store";
|
||||||
import * as expression from "../../common/expression";
|
import * as expression from "../../common/expression";
|
||||||
import * as expressionParser from "../../common/expression-parser";
|
import * as expressionParser from "../../common/expression-parser";
|
||||||
|
import memoize from "../../common/memoize";
|
||||||
|
|
||||||
|
const memoizeParse = memoize(expression.parse);
|
||||||
|
|
||||||
const component = {
|
const component = {
|
||||||
oninit: vnode => {
|
oninit: vnode => {
|
||||||
@@ -44,6 +47,17 @@ const component = {
|
|||||||
|
|
||||||
const rows = [];
|
const rows = [];
|
||||||
for (const i of instances) {
|
for (const i of instances) {
|
||||||
|
let filter =
|
||||||
|
vnode.attrs.filter != null ? memoizeParse(vnode.attrs.filter) : true;
|
||||||
|
|
||||||
|
filter = expressionParser.map(filter, e => {
|
||||||
|
if (Array.isArray(e) && e[0] === "PARAM")
|
||||||
|
return ["PARAM", ["||", i, ".", e[1]]];
|
||||||
|
return e;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!store.evaluateExpression(filter, device)) continue;
|
||||||
|
|
||||||
const row = parameters.map(p => {
|
const row = parameters.map(p => {
|
||||||
const param = expressionParser.map(p.parameter, e => {
|
const param = expressionParser.map(p.parameter, e => {
|
||||||
if (Array.isArray(e) && e[0] === "PARAM")
|
if (Array.isArray(e) && e[0] === "PARAM")
|
||||||
|
|||||||
Reference in new issue
Block a user