wip fix
This commit is contained in:
parent
3429621f3e
commit
e29ccb0d46
|
|
@ -2,6 +2,7 @@ import { FC } from "react";
|
||||||
import { EdCompPicker } from "./panel/header/mid/comp-picker";
|
import { EdCompPicker } from "./panel/header/mid/comp-picker";
|
||||||
import { EdPagePicker } from "./panel/header/mid/page-picker";
|
import { EdPagePicker } from "./panel/header/mid/page-picker";
|
||||||
import { EdMain } from "./panel/main/main";
|
import { EdMain } from "./panel/main/main";
|
||||||
|
import { TopBtn } from "./panel/header/top-btn";
|
||||||
|
|
||||||
export const EdMid: FC<{}> = () => {
|
export const EdMid: FC<{}> = () => {
|
||||||
return (
|
return (
|
||||||
|
|
@ -11,14 +12,18 @@ export const EdMid: FC<{}> = () => {
|
||||||
"h-[35px] border-b flex p-1 items-stretch text-[12px] justify-between"
|
"h-[35px] border-b flex p-1 items-stretch text-[12px] justify-between"
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
<div className="flex items-stretch">
|
<div className="flex items-stretch flex-1 ">
|
||||||
<EdPagePicker />
|
<EdPagePicker />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="flex items-center">
|
<div className="flex items-center flex-1 justify-center ">
|
||||||
<EdCompPicker />
|
<EdCompPicker />
|
||||||
</div>
|
</div>
|
||||||
<div className="flex items-stretch justify-end"></div>
|
<div className="flex items-center flex-1 justify-end">
|
||||||
|
<TopBtn style="slim" className="font-mono text-[9px]">
|
||||||
|
PREVIEW
|
||||||
|
</TopBtn>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<EdMain />
|
<EdMain />
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ export const EdPagePicker = () => {
|
||||||
};
|
};
|
||||||
p.render();
|
p.render();
|
||||||
}}
|
}}
|
||||||
innerClassName="flex items-center justify-center space-x-2"
|
style="slim"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
dangerouslySetInnerHTML={{
|
dangerouslySetInnerHTML={{
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ export const TopBtn = ({
|
||||||
"border border-slate-300 hover:bg-blue-500 hover:border-blue-500 hover:text-white rounded-[2px]",
|
"border border-slate-300 hover:bg-blue-500 hover:border-blue-500 hover:text-white rounded-[2px]",
|
||||||
disabled && "text-slate-400 border border-slate-100",
|
disabled && "text-slate-400 border border-slate-100",
|
||||||
]
|
]
|
||||||
: "px-1 rounded-[2px] hover:bg-blue-400 hover:text-white w-[25px] h-[22px] justify-center",
|
: "px-1 rounded-[2px] hover:bg-blue-400 hover:text-white min-w-[25px] h-[26px] justify-center",
|
||||||
underlight &&
|
underlight &&
|
||||||
css`
|
css`
|
||||||
border-bottom-color: ${underlight};
|
border-bottom-color: ${underlight};
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ export const EdPopComp = () => {
|
||||||
compPicker.render = local.render;
|
compPicker.render = local.render;
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
// waitUntil(() => local.tree).then(() => {});
|
local.tree?.openAll();
|
||||||
}, [p.ui.popup.comp.open, compPicker.site_id]);
|
}, [p.ui.popup.comp.open, compPicker.site_id]);
|
||||||
|
|
||||||
if (!p.ui.popup.comp.open) return null;
|
if (!p.ui.popup.comp.open) return null;
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,9 @@ import { CompItem } from "./comp-tree";
|
||||||
export const compPicker = {
|
export const compPicker = {
|
||||||
site_id: "",
|
site_id: "",
|
||||||
ref: null as any,
|
ref: null as any,
|
||||||
|
tab: "all" as "all" | "trash",
|
||||||
tree: [] as NodeModel<CompItem>[],
|
tree: [] as NodeModel<CompItem>[],
|
||||||
|
trash: [] as NodeModel<CompItem>[],
|
||||||
status: "ready" as "loading" | "ready",
|
status: "ready" as "loading" | "ready",
|
||||||
render: () => {},
|
render: () => {},
|
||||||
};
|
};
|
||||||
|
|
@ -13,6 +15,54 @@ export const compPicker = {
|
||||||
export const reloadCompPicker = async (p: PG) => {
|
export const reloadCompPicker = async (p: PG) => {
|
||||||
compPicker.status = "loading";
|
compPicker.status = "loading";
|
||||||
|
|
||||||
|
compPicker.site_id = p.site.id;
|
||||||
|
p.comp.group[p.site.id] = await p.sync.comp.group(p.site.id);
|
||||||
|
|
||||||
|
const group = p.comp.group[p.site.id];
|
||||||
|
|
||||||
|
compPicker.tree = [];
|
||||||
|
compPicker.trash = [];
|
||||||
|
const comp_ids: string[] = [];
|
||||||
|
let trash_id = "";
|
||||||
|
for (const [k, v] of Object.entries(group)) {
|
||||||
|
const tree: NodeModel<CompItem>[] =
|
||||||
|
v.name !== "__TRASH__" ? compPicker.tree : compPicker.trash;
|
||||||
|
|
||||||
|
if (v.name === "__TRASH__") {
|
||||||
|
trash_id = k;
|
||||||
|
}
|
||||||
|
tree.push({
|
||||||
|
id: k,
|
||||||
|
parent: "comp-root",
|
||||||
|
text: v.name,
|
||||||
|
data: { id: k, name: v.name, type: "folder" },
|
||||||
|
});
|
||||||
|
comp_ids.push(k);
|
||||||
|
}
|
||||||
|
|
||||||
|
const comps = await db.component.findMany({
|
||||||
|
where: { id_component_group: { in: comp_ids } },
|
||||||
|
select: { id: true, id_component_group: true, name: true },
|
||||||
|
});
|
||||||
|
|
||||||
|
for (const comp of Object.values(comps)) {
|
||||||
|
if (comp.id_component_group) {
|
||||||
|
const tree: NodeModel<CompItem>[] =
|
||||||
|
comp.id_component_group !== trash_id
|
||||||
|
? compPicker.tree
|
||||||
|
: compPicker.trash;
|
||||||
|
|
||||||
|
tree.push({
|
||||||
|
id: comp.id,
|
||||||
|
parent: comp.id_component_group,
|
||||||
|
text: comp.name,
|
||||||
|
data: { id: comp.id, name: comp.name, type: "component" },
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(compPicker.tree);
|
||||||
|
|
||||||
compPicker.status = "ready";
|
compPicker.status = "ready";
|
||||||
compPicker.render();
|
compPicker.render();
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ import { compPicker, reloadCompPicker } from "./comp-reload";
|
||||||
export type CompItem = {
|
export type CompItem = {
|
||||||
id: string;
|
id: string;
|
||||||
name: string;
|
name: string;
|
||||||
type: "page" | "folder";
|
type: "component" | "folder";
|
||||||
};
|
};
|
||||||
export const edPageTreeRender: NodeRender<CompItem> = (
|
export const edPageTreeRender: NodeRender<CompItem> = (
|
||||||
node: NodeModel<CompItem>,
|
node: NodeModel<CompItem>,
|
||||||
|
|
|
||||||
|
|
@ -111,7 +111,11 @@ export const devLoader: Loader = {
|
||||||
|
|
||||||
const load = async (url: string) => {
|
const load = async (url: string) => {
|
||||||
const res = await fetch(url);
|
const res = await fetch(url);
|
||||||
const text = await res.text();
|
try {
|
||||||
const json = JSON.parse(text);
|
const text = await res.text();
|
||||||
return json;
|
const json = JSON.parse(text);
|
||||||
|
return json;
|
||||||
|
} catch (e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,11 @@ export const mobileLoader: Loader = {
|
||||||
|
|
||||||
const load = async (url: string) => {
|
const load = async (url: string) => {
|
||||||
const res = await fetch(`${w.mobilepath}${url}`);
|
const res = await fetch(`${w.mobilepath}${url}`);
|
||||||
const text = await res.text();
|
try {
|
||||||
const json = JSON.parse(text);
|
const text = await res.text();
|
||||||
return json;
|
const json = JSON.parse(text);
|
||||||
|
return json;
|
||||||
|
} catch (e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,11 @@ export const siteLoader: Loader = {
|
||||||
|
|
||||||
const load = async (url: string) => {
|
const load = async (url: string) => {
|
||||||
const res = await fetch(`${base}${url}`);
|
const res = await fetch(`${base}${url}`);
|
||||||
const text = await res.text();
|
try {
|
||||||
const json = JSON.parse(text);
|
const text = await res.text();
|
||||||
return json;
|
const json = JSON.parse(text);
|
||||||
|
return json;
|
||||||
|
} catch (e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue