fix search
This commit is contained in:
parent
ad54c9d0d3
commit
29df683808
|
|
@ -13,14 +13,40 @@ export const parseSingleFilter = (filter: FilterLocal, fields: GFCol[]) => {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case "search-all":
|
case "search-all":
|
||||||
fields
|
fields
|
||||||
.filter((e) => e.type === "varchar" || e.type === "text")
|
.filter(
|
||||||
|
(e) =>
|
||||||
|
e.type === "varchar" ||
|
||||||
|
e.type === "text" ||
|
||||||
|
e.type === "string" ||
|
||||||
|
e.type === "has-one"
|
||||||
|
)
|
||||||
.map((e) => {
|
.map((e) => {
|
||||||
OR.push({
|
if (e.type === "has-one") {
|
||||||
[e.name]: {
|
for (const f of e.relation?.fields || []) {
|
||||||
contains: "%" + value + "%",
|
if (
|
||||||
mode: "insensitive",
|
!f.is_pk &&
|
||||||
},
|
(f.type === "varchar" ||
|
||||||
});
|
f.type === "text" ||
|
||||||
|
f.type === "string")
|
||||||
|
) {
|
||||||
|
OR.push({
|
||||||
|
[e.name]: {
|
||||||
|
[f.name]: {
|
||||||
|
contains: "%" + value + "%",
|
||||||
|
mode: "insensitive",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
OR.push({
|
||||||
|
[e.name]: {
|
||||||
|
contains: "%" + value + "%",
|
||||||
|
mode: "insensitive",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case "text":
|
case "text":
|
||||||
|
|
|
||||||
|
|
@ -118,33 +118,49 @@ export const genRelMany = (prop: {
|
||||||
`;
|
`;
|
||||||
const cols = getColumn(select) || [];
|
const cols = getColumn(select) || [];
|
||||||
const get_label = `\
|
const get_label = `\
|
||||||
(row: { value: string; label: string; data?: any }) => {
|
(row: { value: string; label: string; data?: any }) => {
|
||||||
const cols = ${JSON.stringify(cols)};
|
const cols = ${JSON.stringify(cols)};
|
||||||
|
|
||||||
if (isEditor) {
|
if (isEditor) {
|
||||||
return row.label;
|
return row.label;
|
||||||
}
|
}
|
||||||
const result = [];
|
|
||||||
if (!!row.data && !row.label && !Array.isArray(row.data)) {
|
const is_tree =
|
||||||
if(cols.length > 0){
|
typeof rel__feature !== "undefined" &&
|
||||||
cols.map((e) => {
|
Array.isArray(rel__feature) &&
|
||||||
if (row.data[e]) {
|
rel__feature.includes("tree") &&
|
||||||
result.push(row.data[e]);
|
typeof rel__id_parent === "string" &&
|
||||||
}
|
rel__id_parent;
|
||||||
});
|
|
||||||
return result.join(" - ");
|
let prefix = "";
|
||||||
} else {
|
if (is_tree) {
|
||||||
const fields = parseGenField(rel__gen_fields);
|
for (let i = 0; i < row.data.__depth; i++) {
|
||||||
return fields
|
prefix += "···";
|
||||||
.filter((e) => !e.is_pk)
|
|
||||||
.map((e) => row.data[e.name])
|
|
||||||
.filter((e) => e)
|
|
||||||
.join(" - ");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return row.label;
|
|
||||||
}
|
}
|
||||||
`;
|
prefix += " ";
|
||||||
|
}
|
||||||
|
|
||||||
|
const result = [];
|
||||||
|
if (!!row.data && !row.label && !Array.isArray(row.data)) {
|
||||||
|
if(cols.length > 0){
|
||||||
|
cols.map((e) => {
|
||||||
|
if (row.data[e]) {
|
||||||
|
result.push(row.data[e]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return prefix + result.join(" - ");
|
||||||
|
} else {
|
||||||
|
const fields = parseGenField(rel__gen_fields);
|
||||||
|
return prefix + fields
|
||||||
|
.filter((e) => !e.is_pk)
|
||||||
|
.map((e) => row.data[e.name])
|
||||||
|
.filter((e) => e)
|
||||||
|
.join(" - ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return prefix + row.label;
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
||||||
result.get_label = get_label;
|
result.get_label = get_label;
|
||||||
result.get_value = get_value;
|
result.get_value = get_value;
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,16 @@ async (arg: {
|
||||||
return new Promise(async (done) => {
|
return new Promise(async (done) => {
|
||||||
${!isEmptyString(type) && ["checkbox", "typeahead", "button"].includes(type as any) ? `` : `const fields = parseGenField(rel__gen_fields);
|
${!isEmptyString(type) && ["checkbox", "typeahead", "button"].includes(type as any) ? `` : `const fields = parseGenField(rel__gen_fields);
|
||||||
const res = generateSelect(fields);`}
|
const res = generateSelect(fields);`}
|
||||||
|
|
||||||
|
|
||||||
|
const is_tree =
|
||||||
|
typeof rel__feature !== "undefined" &&
|
||||||
|
Array.isArray(rel__feature) &&
|
||||||
|
rel__feature.includes("tree");
|
||||||
|
|
||||||
|
if (is_tree && typeof rel__id_parent === "string" && rel__id_parent) {
|
||||||
|
res.select[rel__id_parent] = true;
|
||||||
|
}
|
||||||
|
|
||||||
const items = await db.${table}.findMany({
|
const items = await db.${table}.findMany({
|
||||||
${!isEmptyString(type) && ["checkbox", "typeahead", "button"].includes(type as any) ? `` : `select: {
|
${!isEmptyString(type) && ["checkbox", "typeahead", "button"].includes(type as any) ? `` : `select: {
|
||||||
|
|
@ -52,6 +61,11 @@ async (arg: {
|
||||||
},
|
},
|
||||||
...arg.paging,
|
...arg.paging,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (is_tree && typeof rel__id_parent === "string" && rel__id_parent) {
|
||||||
|
items = sortTree(items, rel__id_parent, "${pk}");
|
||||||
|
}
|
||||||
|
|
||||||
if(items.length){
|
if(items.length){
|
||||||
const cols = ${JSON.stringify(cols)};
|
const cols = ${JSON.stringify(cols)};
|
||||||
const getLabel = (data: any) => {
|
const getLabel = (data: any) => {
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,7 @@ export { filterModifier } from "@/comps/filter/utils/filter-modifier";
|
||||||
export { generateField } from "@/comps/form/gen/gen-field";
|
export { generateField } from "@/comps/form/gen/gen-field";
|
||||||
export { generateForm } from "@/comps/form/gen/gen-form";
|
export { generateForm } from "@/comps/form/gen/gen-form";
|
||||||
export { validate as validateField } from "./comps/form/utils/validate";
|
export { validate as validateField } from "./comps/form/utils/validate";
|
||||||
|
export { sortTree } from "./comps/list/utils/sort-tree";
|
||||||
|
|
||||||
export {
|
export {
|
||||||
FMLocal,
|
FMLocal,
|
||||||
|
|
@ -80,6 +81,7 @@ export { GetValue } from "@/utils/get-value";
|
||||||
export { password } from "@/utils/password";
|
export { password } from "@/utils/password";
|
||||||
export { prasi_events, call_prasi_events } from "lib/utils/prasi-events";
|
export { prasi_events, call_prasi_events } from "lib/utils/prasi-events";
|
||||||
|
|
||||||
|
|
||||||
/** Session */
|
/** Session */
|
||||||
export { Login } from "@/preset/login/Login";
|
export { Login } from "@/preset/login/Login";
|
||||||
export { generateLogin } from "@/preset/login/utils/generate";
|
export { generateLogin } from "@/preset/login/utils/generate";
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue