Replace Filter class with expression structure
This is in order to be able to support UPPER() and LOWER() functions in queries which are needed for case-insensitive search.
This commit is contained in:
1 parent
7194fcab44
commit
c2d13e8364
25 files changed
+716
-578
No files matched your search
@@ -3,16 +3,14 @@
|
||||
import m from "mithril";
|
||||
import * as components from "../components";
|
||||
import * as store from "../store";
|
||||
import Filter from "../../common/filter";
|
||||
import * as expression from "../../common/expression";
|
||||
import * as funcCache from "../../common/func-cache";
|
||||
|
||||
const component = {
|
||||
view: vnode => {
|
||||
if (vnode.attrs.filter) {
|
||||
const filter = store.unpackFilter(
|
||||
funcCache.get(Filter.parse, vnode.attrs.filter)
|
||||
);
|
||||
if (!filter.test(vnode.attrs.device)) return;
|
||||
const filter = funcCache.get(expression.parse, vnode.attrs.filter);
|
||||
if (!store.evaluateExpression(filter, vnode.attrs.device)) return;
|
||||
}
|
||||
|
||||
let children = Object.values(vnode.attrs.components).map(c => {
|
||||
|
||||
@@ -2,21 +2,17 @@
|
||||
|
||||
import m from "mithril";
|
||||
import * as store from "../store";
|
||||
import Filter from "../../common/filter";
|
||||
import * as notifications from "../notifications";
|
||||
|
||||
const component = {
|
||||
view: vnode => {
|
||||
const device = vnode.attrs.device;
|
||||
const deviceId = device["DeviceID.ID"].value[0];
|
||||
const faults = store.fetch(
|
||||
"faults",
|
||||
new Filter([
|
||||
"AND",
|
||||
[">", "_id", `${deviceId}:`],
|
||||
["<", "_id", `${deviceId}:zzzz`]
|
||||
])
|
||||
);
|
||||
const faults = store.fetch("faults", [
|
||||
"AND",
|
||||
[">", ["PARAM", "_id"], `${deviceId}:`],
|
||||
["<", ["PARAM", "_id"], `${deviceId}:zzzz`]
|
||||
]);
|
||||
|
||||
const headers = ["Channel", "Code", "Message", "Retries", "Timestamp"].map(
|
||||
l => m("th", l)
|
||||
|
||||
@@ -4,7 +4,7 @@ import m from "mithril";
|
||||
import config from "../config";
|
||||
import * as store from "../store";
|
||||
import * as funcCache from "../../common/func-cache";
|
||||
import Filter from "../../common/filter";
|
||||
import * as expression from "../../common/expression";
|
||||
|
||||
const CHARTS = config.ui.overview.charts;
|
||||
|
||||
@@ -13,10 +13,8 @@ const component = {
|
||||
const device = vnode.attrs.device;
|
||||
const chart = CHARTS[vnode.attrs.chart];
|
||||
for (let slice of Object.values(chart.slices)) {
|
||||
const filter = store.unpackFilter(
|
||||
funcCache.get(Filter.parse, slice.filter)
|
||||
);
|
||||
if (filter.test(device)) {
|
||||
const filter = funcCache.get(expression.parse, slice.filter);
|
||||
if (store.evaluateExpression(filter, device)) {
|
||||
const dot = m(
|
||||
"svg",
|
||||
{
|
||||
|
||||
@@ -3,14 +3,21 @@
|
||||
import m from "mithril";
|
||||
import * as components from "../components";
|
||||
import * as store from "../store";
|
||||
import * as filterParser from "../../common/filter-parser";
|
||||
import * as funcCache from "../../common/func-cache";
|
||||
import * as expression from "../../common/expression";
|
||||
|
||||
const parseParameter = funcCache.getter(p => {
|
||||
p = expression.parse(p);
|
||||
if (Array.isArray(p) && p[0] === "PARAM") p = p[1];
|
||||
return p;
|
||||
});
|
||||
|
||||
const component = {
|
||||
oninit: vnode => {
|
||||
vnode.state.parameters = Object.values(vnode.attrs.parameters).map(
|
||||
parameter =>
|
||||
Object.assign({}, parameter, {
|
||||
parameter: filterParser.parseParameter(parameter.parameter)
|
||||
parameter: parseParameter(parameter.parameter)
|
||||
})
|
||||
);
|
||||
},
|
||||
|
||||
@@ -4,15 +4,23 @@ import m from "mithril";
|
||||
import * as components from "../components";
|
||||
import * as taskQueue from "../task-queue";
|
||||
import * as store from "../store";
|
||||
import * as filterParser from "../../common/filter-parser";
|
||||
import * as expression from "../../common/expression";
|
||||
import * as funcCache from "../../common/func-cache";
|
||||
|
||||
const parseParameter = funcCache.getter(p => {
|
||||
p = expression.parse(p);
|
||||
if (Array.isArray(p) && p[0] === "PARAM") p = p[1];
|
||||
return p;
|
||||
});
|
||||
|
||||
const component = {
|
||||
oninit: vnode => {
|
||||
vnode.state.object = filterParser.parseParameter(vnode.attrs.parameter);
|
||||
vnode.state.object = parseParameter(vnode.attrs.parameter);
|
||||
vnode.state.parameters = Object.values(vnode.attrs.childParameters).map(
|
||||
parameter => {
|
||||
let p = filterParser.parseParameter(parameter.parameter);
|
||||
return Object.assign({}, parameter, { parameter: p });
|
||||
return Object.assign({}, parameter, {
|
||||
parameter: parseParameter(parameter.parameter)
|
||||
});
|
||||
}
|
||||
);
|
||||
},
|
||||
|
||||
@@ -4,12 +4,19 @@ import m from "mithril";
|
||||
import * as taskQueue from "../task-queue";
|
||||
import * as store from "../store";
|
||||
import * as notifications from "../notifications";
|
||||
import * as filterParser from "../../common/filter-parser";
|
||||
import * as funcCache from "../../common/func-cache";
|
||||
import * as expression from "../../common/expression";
|
||||
|
||||
const parseParameter = funcCache.getter(p => {
|
||||
p = expression.parse(p);
|
||||
if (Array.isArray(p) && p[0] === "PARAM") p = p[1];
|
||||
return p;
|
||||
});
|
||||
|
||||
const component = {
|
||||
oninit: vnode => {
|
||||
vnode.state.parameters = Object.values(vnode.attrs.parameters).map(
|
||||
parameter => filterParser.parseParameter(parameter)
|
||||
parameter => parseParameter(parameter)
|
||||
);
|
||||
},
|
||||
view: vnode => {
|
||||
|
||||
Reference in new issue
Block a user