getfilterByName

This commit is contained in:
Wang Kejun 2022-05-17 12:17:03 +08:00
parent 1331d62e4a
commit 72d9bdb8d4
2 changed files with 22 additions and 37 deletions

View File

@ -234,6 +234,11 @@ class ListNode<ED extends EntityDict, T extends keyof ED, Cxt extends Context<ED
return this.filters;
}
getFilterByName(name: string) {
const filter = this.filters.find((ele) => ele['#name'] === name);
return filter;
}
setFilters(filters: NamedFilterItem<ED, T>[]) {
this.filters = filters;
}
@ -1085,6 +1090,14 @@ export class RunningNode<ED extends EntityDict, Cxt extends Context<ED>, AD exte
}
}
@Action
async getFilterByName<T extends keyof ED>(path: string, name: string) {
const node = await this.findNode(path);
if (node instanceof ListNode) {
return await node.getFilterByName(name);
}
}
@Action
async setFilters<T extends keyof ED>(path: string, filters: NamedFilterItem<ED, T>[], refresh: boolean = true) {
const node = await this.findNode(path);

View File

@ -95,6 +95,7 @@ type OakComponentMethods<ED extends EntityDict, T extends keyof ED> = {
callPicker: (attr: string, params: Record<string, any>) => void;
setFilters: (filters: NamedFilterItem<ED, T>[]) => void;
getFilters: () => void;
getFilterByName: (name: string) => void;
addFilter: (filter: NamedFilterItem<ED, T>, refresh?: boolean) => void;
removeFilter: (filter: NamedFilterItem<ED, T>, refresh?: boolean) => void;
removeFilterByName: (name: string, refresh?: boolean) => void;
@ -130,43 +131,6 @@ type OakPageInstanceProperties<
FD extends Record<string, Feature<ED, Cxt, AD>>
> = OakComponentInstanceProperties<ED, Cxt, AD, FD>;
function getFilters<ED extends EntityDict, T extends keyof EntityDict, Cxt extends Context<ED>, AD extends Record<string, Aspect<ED, Cxt>>, FD extends Record<string, Feature<ED, Cxt, AD>>>(
features: BasicFeatures<ED, Cxt, AD> & FD,
fullpath: string) {
return features.runningNode.getFilters(fullpath);
}
function setFilters<ED extends EntityDict, T extends keyof EntityDict, Cxt extends Context<ED>, AD extends Record<string, Aspect<ED, Cxt>>, FD extends Record<string, Feature<ED, Cxt, AD>>>(
features: BasicFeatures<ED, Cxt, AD> & FD,
fullpath: string,
filters: NamedFilterItem<ED, T>[]) {
features.runningNode.setFilters(fullpath, filters);
}
function addFilter<ED extends EntityDict, T extends keyof EntityDict, Cxt extends Context<ED>, AD extends Record<string, Aspect<ED, Cxt>>, FD extends Record<string, Feature<ED, Cxt, AD>>>(
features: BasicFeatures<ED, Cxt, AD> & FD,
fullpath: string,
filter: NamedFilterItem<ED, T>,
refresh: boolean = true) {
features.runningNode.addFilter(fullpath, filter, refresh);
}
function removeFilter<ED extends EntityDict, T extends keyof EntityDict, Cxt extends Context<ED>, AD extends Record<string, Aspect<ED, Cxt>>, FD extends Record<string, Feature<ED, Cxt, AD>>>(
features: BasicFeatures<ED, Cxt, AD> & FD,
fullpath: string,
filter: NamedFilterItem<ED, T>,
refresh: boolean = true) {
features.runningNode.removeFilter(fullpath, filter, refresh);
}
function removeFilterByName<ED extends EntityDict, T extends keyof EntityDict, Cxt extends Context<ED>, AD extends Record<string, Aspect<ED, Cxt>>, FD extends Record<string, Feature<ED, Cxt, AD>>>(
features: BasicFeatures<ED, Cxt, AD> & FD,
fullpath: string,
name: string,
refresh: boolean = true) {
features.runningNode.removeFilterByName(fullpath, name, refresh);
}
async function execute<ED extends EntityDict, Cxt extends Context<ED>, AD extends Record<string, Aspect<ED, Cxt>>, FD extends Record<string, Feature<ED, Cxt, AD>>>(
features: BasicFeatures<ED, Cxt, AD> & FD,
fullpath: string,
@ -354,6 +318,10 @@ function createPageOptions<ED extends EntityDict,
return features.runningNode.getFilters(this.data.oakFullpath);
},
getFilterByName(name) {
return features.runningNode.getFilterByName(this.data.oakFullpath, name)
},
addFilter(filter, refresh = false) {
return features.runningNode.addFilter(this.data.oakFullpath, filter, refresh);
},
@ -630,6 +598,10 @@ function createComponentOptions<ED extends EntityDict,
return features.runningNode.getFilters(this.data.oakFullpath);
},
getFilterByName(name) {
return features.runningNode.getFilterByName(this.data.oakFullpath, name)
},
addFilter(filter, refresh = false) {
return features.runningNode.addFilter(this.data.oakFullpath, filter, refresh);
},