feat: wire visual rewrite workspace UI
This commit is contained in:
parent
f9b240dbd1
commit
214b714873
File diff suppressed because it is too large
Load Diff
|
|
@ -51,7 +51,7 @@ type ScopeNodeData = {
|
|||
previewMode: "frame" | "empty" | "none";
|
||||
selected: boolean;
|
||||
sectionId?: string;
|
||||
scope: ScopeType | "project" | "home_section" | "page_group";
|
||||
scope: ScopeType | "project" | "source_section" | "page_group";
|
||||
scopeLabel: string;
|
||||
status: "coverage" | "excluded" | "project";
|
||||
subtitle: string;
|
||||
|
|
@ -125,7 +125,7 @@ const scopeGroupNames: Record<ScopeType, string> = {
|
|||
admin_page: "Админка",
|
||||
indexable_page: "Публичные страницы",
|
||||
technical_page: "Технический слой",
|
||||
template_block: "Секции главной"
|
||||
template_block: "Секции сайта"
|
||||
};
|
||||
|
||||
function isHomePage(page: ScanPage) {
|
||||
|
|
@ -145,12 +145,12 @@ function getPageTitle(page: ScanPage) {
|
|||
}
|
||||
|
||||
function getPagePath(page: ScanPage) {
|
||||
if (page.scope === "template_block" && page.previewKind === "home_section") {
|
||||
return `${page.sourcePath} · секция главной`;
|
||||
if (page.scope === "template_block" && page.previewKind === "source_section") {
|
||||
return `${page.sourcePath} · секция сайта`;
|
||||
}
|
||||
|
||||
if (page.scope === "template_block" && page.visibleInSite === false) {
|
||||
return `${page.sourcePath} · выключено в home.json`;
|
||||
return `${page.sourcePath} · выключено в модели источника`;
|
||||
}
|
||||
|
||||
if (isHomePage(page)) {
|
||||
|
|
@ -374,8 +374,8 @@ function getSectionPreviewUrl(projectId: string, cacheVersion: string, section:
|
|||
}
|
||||
|
||||
function getPagePreviewNote(page: ScanPage) {
|
||||
if (page.previewKind === "home_section") {
|
||||
return page.previewTargetSelector ? `Превью секции: ${page.previewTargetSelector}` : "Превью секции главной";
|
||||
if (page.previewKind === "source_section") {
|
||||
return page.previewTargetSelector ? `Превью секции: ${page.previewTargetSelector}` : "Превью секции сайта";
|
||||
}
|
||||
|
||||
if (page.visibleInSite === false) {
|
||||
|
|
@ -396,10 +396,10 @@ function getSectionPreviewNote(section: ScanSection) {
|
|||
|
||||
if (section.previewTargetSelector) {
|
||||
const suffix = section.previewTargetIndex ? ` #${section.previewTargetIndex + 1}` : "";
|
||||
return `Секция главной: ${section.previewTargetSelector}${suffix}`;
|
||||
return `Секция сайта: ${section.previewTargetSelector}${suffix}`;
|
||||
}
|
||||
|
||||
return "Секция главной страницы";
|
||||
return "Секция модели источника";
|
||||
}
|
||||
|
||||
function getProjectTitle(scan: ProjectScanSummary, projectName: string) {
|
||||
|
|
@ -410,7 +410,7 @@ function getProjectTitle(scan: ProjectScanSummary, projectName: string) {
|
|||
|
||||
function getNodeIcon(scope: ScopeNodeData["scope"]) {
|
||||
if (scope === "project") return <Globe2 size={17} />;
|
||||
if (scope === "home_section") return <Layers3 size={17} />;
|
||||
if (scope === "source_section") return <Layers3 size={17} />;
|
||||
if (scope === "page_group") return <FileText size={17} />;
|
||||
if (scope === "indexable_page") return <PanelTop size={17} />;
|
||||
if (scope === "template_block") return <Layers3 size={17} />;
|
||||
|
|
@ -913,7 +913,7 @@ function buildScopeFlow(
|
|||
const previewMode: ScopeNodeData["previewMode"] = section.enabled ? "frame" : "empty";
|
||||
|
||||
nodes.push({
|
||||
id: `home-section-${section.sectionId}`,
|
||||
id: `source-section-${section.sectionId}`,
|
||||
position,
|
||||
style: {
|
||||
height,
|
||||
|
|
@ -934,10 +934,10 @@ function buildScopeFlow(
|
|||
previewUrl: previewMode === "frame" ? getSectionPreviewUrl(projectId, cacheVersion, section) : null,
|
||||
selected: section.selected,
|
||||
sectionId: section.sectionId,
|
||||
scope: "home_section",
|
||||
scopeLabel: section.enabled ? "секция главной" : "выключенная секция",
|
||||
scope: "source_section",
|
||||
scopeLabel: section.enabled ? "секция сайта" : "выключенная секция",
|
||||
status: section.enabled ? "coverage" : "excluded",
|
||||
subtitle: section.enabled ? "Секция главной страницы" : "Выключена в home.json",
|
||||
subtitle: section.enabled ? "Секция модели источника" : "Выключена в модели источника",
|
||||
visibleInSite: section.enabled
|
||||
}
|
||||
});
|
||||
|
|
@ -991,7 +991,7 @@ function buildScopeFlow(
|
|||
siteSections.forEach((section, index) => {
|
||||
const column = index % MAX_COLUMNS;
|
||||
const row = Math.floor(index / MAX_COLUMNS);
|
||||
const nodeId = `home-section-${section.sectionId}`;
|
||||
const nodeId = `source-section-${section.sectionId}`;
|
||||
const previousSection = siteSections[index - 1];
|
||||
const width = section.enabled ? NODE_WIDTH : NODE_WIDTH - 80;
|
||||
|
||||
|
|
@ -1008,7 +1008,7 @@ function buildScopeFlow(
|
|||
if (index === 0) {
|
||||
addEdge(homePage ? `${homePage.scope}-${homePage.pageId}` : "project-root", nodeId, "scope-flow-edge muted");
|
||||
} else if (previousSection) {
|
||||
addEdge(`home-section-${previousSection.sectionId}`, nodeId, "scope-flow-edge muted");
|
||||
addEdge(`source-section-${previousSection.sectionId}`, nodeId, "scope-flow-edge muted");
|
||||
}
|
||||
});
|
||||
|
||||
|
|
@ -1245,7 +1245,7 @@ export default function ProjectScopeFlow({
|
|||
currentNodes.map((node) => {
|
||||
const pageState = node.data.pageId ? nodeLiveState.pages.get(node.data.pageId) : undefined;
|
||||
const sectionState = node.data.sectionId ? nodeLiveState.sections.get(node.data.sectionId) : undefined;
|
||||
const disabled = node.data.scope === "project" || isBusy || (node.data.scope === "home_section" && !node.data.pageId);
|
||||
const disabled = node.data.scope === "project" || isBusy || (node.data.scope === "source_section" && !node.data.pageId);
|
||||
const selected = sectionState?.selected ?? pageState?.selected ?? node.data.selected;
|
||||
const status =
|
||||
node.data.scope === "project"
|
||||
|
|
@ -1307,7 +1307,7 @@ export default function ProjectScopeFlow({
|
|||
{
|
||||
icon: <Layers3 size={13} />,
|
||||
key: "sections",
|
||||
label: "Секции главной",
|
||||
label: "Секции сайта",
|
||||
value: `${stats.selectedSections}/${scan.siteSections.length}`
|
||||
},
|
||||
{
|
||||
|
|
@ -1369,7 +1369,7 @@ export default function ProjectScopeFlow({
|
|||
const data = node.data as ScopeNodeData;
|
||||
if (data.scope === "project") return "#83918b";
|
||||
if (data.scope === "indexable_page") return "#bfc9c4";
|
||||
if (data.scope === "home_section") return "#d3ddd8";
|
||||
if (data.scope === "source_section") return "#d3ddd8";
|
||||
if (data.scope === "admin_page") return "#d7dedb";
|
||||
return "#e1e6e3";
|
||||
}}
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -11,7 +11,7 @@ export default defineConfig({
|
|||
}
|
||||
},
|
||||
server: {
|
||||
port: 5173,
|
||||
strictPort: false
|
||||
port: 5177,
|
||||
strictPort: true
|
||||
}
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in New Issue