fix layout
This commit is contained in:
parent
952bfb6327
commit
8d8f5291e4
|
|
@ -68,49 +68,58 @@ async ({ form, error, fm }: IForm) => {
|
|||
md.render();
|
||||
}
|
||||
|
||||
const data = { ...form }; // data form
|
||||
const data_rel = ${JSON.stringify(rel_many)} // list relasi has many
|
||||
const data_master = {} as Record<string, any> | any; // variabel untuk data master
|
||||
const data_array = [] as Array<{
|
||||
const data = { ...form };
|
||||
const record = {} as Record<string, any>;
|
||||
|
||||
const relation_ref = ${JSON.stringify(rel_many)};
|
||||
const has_many = [] as Array<{
|
||||
table: string;
|
||||
data: Array<any>;
|
||||
fk: string;
|
||||
}>; // variabel untuk data array atau has many
|
||||
}>;
|
||||
|
||||
// proses untuk membagi antara data master dengan data array
|
||||
// data array / has many dilihat dari value yang berupa array
|
||||
// pisahkan antara has_many dengan field biasa
|
||||
for (const [k, v] of Object.entries(data) as any) {
|
||||
if (Array.isArray(v)) {
|
||||
const rel = Array.isArray(data_rel) && data_rel.length ? data_rel.find((e) => e.table === k) : null
|
||||
const rel =
|
||||
Array.isArray(relation_ref) && relation_ref.length
|
||||
? relation_ref.find((e) => e.table === k)
|
||||
: null;
|
||||
if (rel) {
|
||||
data_array.push({
|
||||
has_many.push({
|
||||
table: k,
|
||||
data: v,
|
||||
fk: rel.fk,
|
||||
});
|
||||
}
|
||||
} else {
|
||||
data_master[k] = v;
|
||||
record[k] = v;
|
||||
}
|
||||
}
|
||||
// hapus id dari data_master jika ada
|
||||
try {
|
||||
delete data_master.${pk};
|
||||
} catch (ex) {}
|
||||
|
||||
// prisma create / update ga boleh ada record.${pk}
|
||||
if (record) delete record.${pk};
|
||||
|
||||
if (form.${pk}) {
|
||||
await db.${table}.update({
|
||||
where: {
|
||||
${pk}: form.${pk},
|
||||
},
|
||||
data: data_master,
|
||||
data: {
|
||||
...record,
|
||||
},
|
||||
});
|
||||
} else {
|
||||
const res = await db.${table}.create({
|
||||
data: data_master,
|
||||
//@ts-ignore
|
||||
data: {
|
||||
...record,
|
||||
},
|
||||
});
|
||||
if (res) form.${pk} = res.${pk};
|
||||
if (res) form.id = res.id;
|
||||
}
|
||||
if (data_array.length) {
|
||||
|
||||
if (has_many.length) {
|
||||
const exec_query_bulk = async (
|
||||
current: { table: string; data: Array<any>; fk: string },
|
||||
list: Array<{ table: string; data: Array<any>; fk: string }>,
|
||||
|
|
@ -120,7 +129,7 @@ async ({ form, error, fm }: IForm) => {
|
|||
const data = current.data.map((e) => {
|
||||
return {
|
||||
...e,
|
||||
${table}: {
|
||||
m_role: {
|
||||
connect: {
|
||||
${pk}: form.${pk},
|
||||
},
|
||||
|
|
@ -146,7 +155,7 @@ async ({ form, error, fm }: IForm) => {
|
|||
}
|
||||
}
|
||||
};
|
||||
await exec_query_bulk(data_array[0], data_array, 0);
|
||||
await exec_query_bulk(has_many[0], has_many, 0);
|
||||
}
|
||||
result = true;
|
||||
} catch (e) {
|
||||
|
|
|
|||
|
|
@ -16,17 +16,15 @@ export type LGProps = {
|
|||
export const Login: FC<LGProps> = (props) => {
|
||||
const local = useLocal({ loading: true }, () => {
|
||||
loadSession();
|
||||
setTimeout(() => {
|
||||
if (w.user) {
|
||||
const home = props.url_home[w.user.role];
|
||||
if (home) {
|
||||
navigate(home);
|
||||
return;
|
||||
}
|
||||
if (w.user) {
|
||||
const home = props.url_home[w.user.role];
|
||||
if (home) {
|
||||
navigate(home);
|
||||
return;
|
||||
}
|
||||
local.loading = false;
|
||||
local.render();
|
||||
}, 500);
|
||||
}
|
||||
local.loading = false;
|
||||
local.render();
|
||||
});
|
||||
|
||||
if (local.loading)
|
||||
|
|
|
|||
|
|
@ -11,8 +11,14 @@ export const logout = (url_login?: string) => {
|
|||
if (typeof get(w, "user") === "object") {
|
||||
w.user = null;
|
||||
}
|
||||
if (localStorage.getItem("user")) {
|
||||
localStorage.removeItem("user");
|
||||
|
||||
let id_site = "";
|
||||
if (location.hostname === "prasi.avolut.com") {
|
||||
const parts = location.pathname.split("/");
|
||||
id_site = parts[2];
|
||||
}
|
||||
if (localStorage.getItem("user" + id_site)) {
|
||||
localStorage.removeItem("user" + id_site);
|
||||
}
|
||||
if (url_login) navigate(url_login);
|
||||
};
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ const local_default = {
|
|||
nav_timeout: null as any,
|
||||
pathname: "",
|
||||
loading: false,
|
||||
init: false,
|
||||
};
|
||||
type MLocal = typeof local_default & { render: () => void };
|
||||
|
||||
|
|
@ -22,11 +23,15 @@ export const Menu: FC<MenuProp> = (props) => {
|
|||
role = props.on_init();
|
||||
let menu = get(imenu, role) || [];
|
||||
|
||||
const local = useLocal(local_default);
|
||||
const local = useLocal({ ...local_default });
|
||||
|
||||
if (local.pathname !== getPathname()) {
|
||||
local.pathname = getPathname();
|
||||
}
|
||||
if (!local.init) {
|
||||
local.active = "";
|
||||
local.init = true;
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
local.mode = props.mode;
|
||||
|
|
@ -142,7 +147,6 @@ export const SideBar: FC<{
|
|||
local.loading = true;
|
||||
if (typeof menu.value === "string") {
|
||||
local.active = menu.hash;
|
||||
|
||||
clearTimeout(local.nav_timeout);
|
||||
local.nav_timeout = setTimeout(() => {
|
||||
if (
|
||||
|
|
|
|||
Loading…
Reference in New Issue