From a78877d78dfe66c10734dbe1259131a67d9b2323 Mon Sep 17 00:00:00 2001 From: Rizky Date: Tue, 23 Jan 2024 19:21:43 +0700 Subject: [PATCH] wip fix component --- app/srv/ws/sync/actions/comp_group.ts | 42 ++++++++++++++++++- .../nova/ed/panel/popup/comp/comp-group.tsx | 1 + .../nova/ed/panel/popup/comp/comp-tree.tsx | 6 ++- .../ed/panel/side/prop-instance/prop-text.tsx | 9 +++- 4 files changed, 53 insertions(+), 5 deletions(-) diff --git a/app/srv/ws/sync/actions/comp_group.ts b/app/srv/ws/sync/actions/comp_group.ts index 332fe551..1191d660 100644 --- a/app/srv/ws/sync/actions/comp_group.ts +++ b/app/srv/ws/sync/actions/comp_group.ts @@ -6,7 +6,7 @@ export const comp_group: SAction["comp"]["group"] = async function ( id_site ) { const result: Awaited> = {}; - const groups = await db.component_group.findMany({ + let groups = await db.component_group.findMany({ where: { component_site: { some: { @@ -20,6 +20,46 @@ export const comp_group: SAction["comp"]["group"] = async function ( }, }); + if (groups.length === 0) { + await db.component_group.create({ + data: { + name: "All", + component_site: { + create: { + id_site, + is_owner: true, + }, + }, + }, + }); + + await db.component_group.create({ + data: { + name: "__TRASH__", + component_site: { + create: { + id_site, + is_owner: true, + }, + }, + }, + }); + + groups = await db.component_group.findMany({ + where: { + component_site: { + some: { + id_site, + }, + }, + }, + select: { + name: true, + id: true, + }, + }); + } + for (const g of groups) { result[g.id] = { id: g.id, diff --git a/app/web/src/nova/ed/panel/popup/comp/comp-group.tsx b/app/web/src/nova/ed/panel/popup/comp/comp-group.tsx index 6b9c06c6..8c1d9ed5 100644 --- a/app/web/src/nova/ed/panel/popup/comp/comp-group.tsx +++ b/app/web/src/nova/ed/panel/popup/comp/comp-group.tsx @@ -21,6 +21,7 @@ export const EdPopCompGroup = () => { if (!p.ui.popup.comp_group) return null; const pop = p.ui.popup.comp_group; const group = p.comp.group[p.site.id]; + return ( = ( data: { id_component_group: group_id }, }); await reloadCompPicker(p); + treeRebuild(p); p.render(); }, }; @@ -151,8 +153,8 @@ export const edPageTreeRender: NodeRender = ( p.ui.popup.comp.open = null; active.item_id = compPicker.active_id; compPicker.active_id = ""; - - p.page.render(); + treeRebuild(p); + p.render(); } }} > diff --git a/app/web/src/nova/ed/panel/side/prop-instance/prop-text.tsx b/app/web/src/nova/ed/panel/side/prop-instance/prop-text.tsx index b94e0d5b..516bac61 100644 --- a/app/web/src/nova/ed/panel/side/prop-instance/prop-text.tsx +++ b/app/web/src/nova/ed/panel/side/prop-instance/prop-text.tsx @@ -5,15 +5,18 @@ import { useEffect, useRef, } from "react"; -import { useLocal } from "web-utils"; +import { useGlobal, useLocal } from "web-utils"; import { FMCompDef } from "../../../../../utils/types/meta-fn"; import { EdPropLabel } from "./prop-label"; +import { treeRebuild } from "../../../logic/tree/build"; +import { EDGlobal } from "../../../logic/ed-global"; export const EdPropInstanceText: FC<{ name: string; mprop: FMCompDef; labelClick?: React.MouseEventHandler | undefined; }> = ({ name, mprop, labelClick }) => { + const p = useGlobal(EDGlobal, "EDITOR"); const val = mprop.get("value"); const local = useLocal({ @@ -43,7 +46,9 @@ export const EdPropInstanceText: FC<{ mprop.set("value", `\`${local.value}\``); mprop.set("valueBuilt", `\`${local.value}\``); }); - }, 1000); + treeRebuild(p); + p.render(); + }, 200); }} />