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
@@ -2,7 +2,7 @@
|
||||
|
||||
import m from "mithril";
|
||||
|
||||
import * as filterParser from "../common/filter-parser";
|
||||
import * as expression from "../common/expression";
|
||||
|
||||
const component = {
|
||||
view: vnode => {
|
||||
@@ -15,16 +15,14 @@ const component = {
|
||||
if (vnode.attrs.filter !== vnode.state.filter) {
|
||||
vnode.state.filterList = [];
|
||||
vnode.state.filter = vnode.attrs.filter;
|
||||
if (vnode.attrs.filter)
|
||||
if (vnode.attrs.filter != null)
|
||||
if (vnode.attrs.filter[0] === "AND")
|
||||
for (let i = 1; i < vnode.attrs.filter.length; ++i)
|
||||
vnode.state.filterList.push(
|
||||
filterParser.stringify(vnode.attrs.filter[i])
|
||||
expression.stringify(vnode.attrs.filter[i])
|
||||
);
|
||||
else
|
||||
vnode.state.filterList.push(
|
||||
filterParser.stringify(vnode.attrs.filter)
|
||||
);
|
||||
vnode.state.filterList.push(expression.stringify(vnode.attrs.filter));
|
||||
vnode.state.filterList.push("");
|
||||
}
|
||||
|
||||
@@ -33,18 +31,18 @@ const component = {
|
||||
vnode.state.filterList = vnode.state.filterList.filter(
|
||||
f => f && f.trim()
|
||||
);
|
||||
let filterAst = vnode.state.filterList.map((f, idx) => {
|
||||
let filter = vnode.state.filterList.map((f, idx) => {
|
||||
try {
|
||||
return filterParser.parse(f);
|
||||
return expression.parse(f);
|
||||
} catch (err) {
|
||||
vnode.state.filterInvalid |= 1 << idx;
|
||||
}
|
||||
});
|
||||
if (filterAst.length) filterAst = ["AND"].concat(filterAst);
|
||||
else filterAst = null;
|
||||
if (filter.length) filter = ["AND"].concat(filter);
|
||||
else filter = null;
|
||||
|
||||
vnode.state.filterList.push("");
|
||||
if (!vnode.state.filterInvalid) vnode.attrs.onChange(filterAst);
|
||||
if (!vnode.state.filterInvalid) vnode.attrs.onChange(filter);
|
||||
}
|
||||
|
||||
return m(
|
||||
|
||||
Reference in new issue
Block a user