feat: refocus project switching to dashboard workspace
This commit is contained in:
@@ -3302,7 +3302,7 @@ async function applySelectedProject(projectId = "") {
|
||||
setBusy(false, "");
|
||||
}
|
||||
rememberAction("当前项目已切换", `已切换到「${getSelectedProject()?.name || "所选项目"}」,你现在看到的首页、Agent 和任务都会跟随更新。`, "green");
|
||||
renderAll();
|
||||
focusDashboardWorkspace("dashboard-workspace-anchor");
|
||||
}
|
||||
|
||||
function openDashboardProjectSwitcher() {
|
||||
@@ -5562,7 +5562,7 @@ function renderDashboardScreen() {
|
||||
"先做最能推进当前项目的一步,再按需看概览。",
|
||||
`${button("新建项目", "create-project")} ${button("导入主页", "open-import-homepage")} ${button("创建 Agent", "open-create-assistant", "primary")}`,
|
||||
dashboardHomeRenderer?.renderDashboardHome
|
||||
? dashboardHomeRenderer.renderDashboardHome(homeModel, { escapeHtml })
|
||||
? `<div id="dashboard-workspace-anchor">${dashboardHomeRenderer.renderDashboardHome(homeModel, { escapeHtml })}</div>`
|
||||
: renderEmptyState("首页模块未加载", "请刷新页面后重试。")
|
||||
);
|
||||
}
|
||||
@@ -5749,6 +5749,15 @@ function focusTrackingWorkspace() {
|
||||
});
|
||||
}
|
||||
|
||||
function focusDashboardWorkspace(anchorId = "dashboard-workspace-anchor") {
|
||||
setScreen("dashboard");
|
||||
renderAll();
|
||||
window.requestAnimationFrame(() => {
|
||||
(document.getElementById(anchorId) || document.querySelector('[data-screen="dashboard"] .panel'))
|
||||
?.scrollIntoView({ behavior: "smooth", block: "start" });
|
||||
});
|
||||
}
|
||||
|
||||
function focusCreditsWorkspace(anchorId = "credits-quota-anchor") {
|
||||
setScreen("credits");
|
||||
renderAll();
|
||||
|
||||
@@ -137,6 +137,7 @@ test("mobile project sheets support direct project picking and zoom-safe form co
|
||||
const applySelectedProject = extractBetween(APP, "async function applySelectedProject(projectId = \"\")", "function openDashboardProjectSwitcher()");
|
||||
const createProject = extractBetween(APP, "async function createProject()", "function openPreferredModelAction()");
|
||||
assert.match(APP, /async function applySelectedProject\(projectId = ""\)/);
|
||||
assert.match(APP, /function focusDashboardWorkspace\(anchorId = "dashboard-workspace-anchor"\)/);
|
||||
assert.match(projectSwitcher, /data-project-choice=/);
|
||||
assert.match(projectSwitcher, /hidden:\s*isMobileViewport/);
|
||||
assert.match(projectSwitcher, /onOpen:\s*\(/);
|
||||
@@ -148,6 +149,8 @@ test("mobile project sheets support direct project picking and zoom-safe form co
|
||||
assert.match(APP, /if \(field\.hidden\) \{\s*return "";/);
|
||||
assert.match(applySelectedProject, /loadStorageStatus\(appState\.selectedProjectId \|\| ""\)/);
|
||||
assert.match(applySelectedProject, /loadAgentControlSurfaces\(appState\.selectedProjectId \|\| ""\)/);
|
||||
assert.match(applySelectedProject, /focusDashboardWorkspace\("dashboard-workspace-anchor"\)/);
|
||||
assert.match(APP, /id="dashboard-workspace-anchor"/);
|
||||
assert.match(createProject, /onOpen:\s*\(/);
|
||||
assert.match(CSS, /@media \(max-width: 760px\)[\s\S]*\.field-stack input,\s*[\s\S]*\.field-stack textarea,\s*[\s\S]*\.field-stack select\s*\{[\s\S]*min-height:\s*46px/);
|
||||
assert.match(CSS, /@media \(max-width: 760px\)[\s\S]*\.field-stack input,\s*[\s\S]*\.field-stack textarea,\s*[\s\S]*\.field-stack select\s*\{[\s\S]*font-size:\s*16px/);
|
||||
|
||||
Reference in New Issue
Block a user