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
+15
-12
@@ -4,24 +4,24 @@ import m from "mithril";
|
||||
|
||||
import config from "./config";
|
||||
import filterComponent from "./filter-component";
|
||||
import * as filterParser from "../common/filter-parser";
|
||||
import Filter from "../common/filter";
|
||||
import * as store from "./store";
|
||||
import * as components from "./components";
|
||||
import * as taskQueue from "./task-queue";
|
||||
import * as notifications from "./notifications";
|
||||
import * as expression from "../common/expression";
|
||||
|
||||
function init(args) {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (!window.authorizer.hasAccess("devices", 2))
|
||||
return reject(new Error("You are not authorized to view this page"));
|
||||
|
||||
let filter = new Filter(args.filter);
|
||||
let indexParameters = Object.values(config.ui.index).map(p =>
|
||||
Object.assign({}, p, {
|
||||
parameter: filterParser.parseParameter(p.parameter)
|
||||
})
|
||||
);
|
||||
let filter = null;
|
||||
if (args.filter != null) filter = expression.parse(`${args.filter}`);
|
||||
let indexParameters = Object.values(config.ui.index).map(p => {
|
||||
let param = expression.parse(p.parameter);
|
||||
if (Array.isArray(param) && param[0] === "PARAM") param = param[1];
|
||||
return Object.assign({}, p, { parameter: param });
|
||||
});
|
||||
resolve({ filter: filter, indexParameters: indexParameters });
|
||||
});
|
||||
}
|
||||
@@ -281,16 +281,19 @@ const component = {
|
||||
|
||||
function onFilterChanged(filter) {
|
||||
let params = {};
|
||||
if (filter) params.filter = filterParser.stringify(filter);
|
||||
if (filter != null) params.filter = expression.stringify(filter);
|
||||
m.route.set("/devices", params);
|
||||
}
|
||||
|
||||
let devs = store.fetch(
|
||||
"devices",
|
||||
vnode.attrs.filter,
|
||||
vnode.attrs.filter == null ? true : vnode.attrs.filter,
|
||||
vnode.state.showCount || 10
|
||||
);
|
||||
let count = store.count("devices", vnode.attrs.filter);
|
||||
let count = store.count(
|
||||
"devices",
|
||||
vnode.attrs.filter == null ? true : vnode.attrs.filter
|
||||
);
|
||||
|
||||
let selected = new Set();
|
||||
if (vnode.state.selected)
|
||||
@@ -303,7 +306,7 @@ const component = {
|
||||
m("h1", "Listing devices"),
|
||||
m(filterComponent, {
|
||||
predefined: Object.values(config.ui.filters),
|
||||
filter: vnode.attrs.filter ? vnode.attrs.filter.ast : null,
|
||||
filter: vnode.attrs.filter,
|
||||
onChange: onFilterChanged
|
||||
}),
|
||||
renderTable(
|
||||
|
||||
Reference in new issue
Block a user