fix search

This commit is contained in:
Rizky 2024-06-25 13:49:27 -07:00
parent ad54c9d0d3
commit 29df683808
4 changed files with 92 additions and 34 deletions

View File

@ -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":

View File

@ -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;

View File

@ -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) => {

View File

@ -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";