131 lines
2.5 KiB
TypeScript
Executable File
131 lines
2.5 KiB
TypeScript
Executable File
import { formatName } from "lib/comps/form/gen/fields";
|
|
import { createItem } from "lib/gen/utils";
|
|
import get from "lodash.get";
|
|
import { generateTableList } from "./gen-table-list";
|
|
|
|
export const generateMDList = async (
|
|
arg: { item: PrasiItem; table: string; fields: any },
|
|
data: any,
|
|
commit: boolean
|
|
) => {
|
|
const item = arg.item;
|
|
const tab_master = item.edit.childs[0].edit.childs.find(
|
|
(e) => get(e, "component.id") === "c68415ca-dac5-44fe-aeb6-936caf8cc491"
|
|
);
|
|
const props: Record<string, PropVal> = {
|
|
gen__table: {
|
|
mode: "string",
|
|
value: `"${arg.table}"`,
|
|
},
|
|
name: {
|
|
mode: "string",
|
|
value: arg.table,
|
|
},
|
|
generate: {
|
|
mode: "string",
|
|
value: "y",
|
|
},
|
|
opt__on_load: {
|
|
mode: "string",
|
|
value: "",
|
|
},
|
|
mode: {
|
|
mode: "string",
|
|
value: "auto",
|
|
},
|
|
opt__row_click: {
|
|
mode: "raw",
|
|
value: `\
|
|
({ row, rows, idx, event }: OnRowClick) => {
|
|
md.selected = row;
|
|
md.tab.active = "detail";
|
|
md.params.apply();
|
|
md.render();
|
|
};
|
|
|
|
type OnRowClick = {
|
|
row: any;
|
|
rows: any[];
|
|
idx: any;
|
|
event: React.MouseEvent<HTMLDivElement, MouseEvent>;
|
|
}
|
|
`,
|
|
},
|
|
opt__selected: {
|
|
mode: "raw",
|
|
value: `\
|
|
({ row, rows, idx }: SelectedRow) => {
|
|
try {
|
|
if (typeof md === "object") {
|
|
if (Array.isArray(md.selected)) {
|
|
if (md.selected.length) {
|
|
let select = md.selected.find((e) => e === row)
|
|
if(select) return true
|
|
}
|
|
} else {
|
|
if (md.selected === row) {
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
} catch (e) {
|
|
|
|
}
|
|
return false;
|
|
};
|
|
|
|
type SelectedRow = {
|
|
row: any;
|
|
rows: any[];
|
|
idx: any;
|
|
}`,
|
|
},
|
|
gen__fields: {
|
|
mode: "raw",
|
|
value: `${JSON.stringify(arg.fields)}`,
|
|
},
|
|
child: {
|
|
mode: "jsx",
|
|
value: createItem({
|
|
name: "halo",
|
|
childs: [],
|
|
}),
|
|
},
|
|
};
|
|
const tablelist: any = {
|
|
type: "item",
|
|
name: "item",
|
|
component: {
|
|
id: "567d5362-2cc8-4ca5-a531-f771a5c866c2",
|
|
props,
|
|
},
|
|
};
|
|
await generateTableList(null, props, tablelist, { mode: "auto" }, false);
|
|
tab_master?.edit.setProp("breadcrumb", {
|
|
mode: "raw",
|
|
value: `\
|
|
() => {
|
|
return [
|
|
{ label: md.title || "List ${formatName(arg.table)}" }
|
|
] as BreadItem[];
|
|
};
|
|
|
|
type BreadItem = {
|
|
label: React.ReactNode;
|
|
url?: string;
|
|
onClick?: () => void;
|
|
}
|
|
`,
|
|
});
|
|
tab_master?.edit.setChilds([
|
|
{
|
|
type: "item",
|
|
name: "item",
|
|
component: {
|
|
id: "567d5362-2cc8-4ca5-a531-f771a5c866c2",
|
|
props,
|
|
},
|
|
},
|
|
]);
|
|
};
|