From a2e6c1f416d6506222aaab34a0a9c1cc5e6834a4 Mon Sep 17 00:00:00 2001 From: JIANG Date: Wed, 11 Feb 2026 14:17:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DMAP=5FEXTENT=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E6=9B=B4=E6=96=B0=E7=9A=84BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/header/index.tsx | 11 +++++++++-- src/components/project/ProjectSelector.tsx | 4 ++-- src/contexts/ProjectContext.tsx | 17 +++++++---------- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/src/components/header/index.tsx b/src/components/header/index.tsx index 5a17771..47256da 100644 --- a/src/components/header/index.tsx +++ b/src/components/header/index.tsx @@ -21,7 +21,7 @@ import { useGetIdentity, useLogout } from "@refinedev/core"; import { HamburgerMenu, RefineThemedLayoutHeaderProps } from "@refinedev/mui"; import React, { useContext, useState } from "react"; import { ProjectSelector } from "@components/project/ProjectSelector"; -import { setMapWorkspace, setNetworkName } from "@config/config"; +import { setMapExtent, setMapWorkspace, setNetworkName } from "@config/config"; type IUser = { id: number; @@ -53,11 +53,18 @@ export const Header: React.FC = ({ setShowProjectSelector(true); }; - const handleProjectSelect = (workspace: string, networkName: string) => { + const handleProjectSelect = ( + workspace: string, + networkName: string, + extent: number[], + ) => { setMapWorkspace(workspace); setNetworkName(networkName); + setMapExtent(extent); localStorage.setItem("NEXT_PUBLIC_MAP_WORKSPACE", workspace); localStorage.setItem("NEXT_PUBLIC_NETWORK_NAME", networkName); + localStorage.setItem("NEXT_PUBLIC_MAP_EXTENT", extent.join(",")); + localStorage.removeItem(`${workspace}_map_view`); setShowProjectSelector(false); window.location.reload(); }; diff --git a/src/components/project/ProjectSelector.tsx b/src/components/project/ProjectSelector.tsx index 49cc6a7..5f8b6da 100644 --- a/src/components/project/ProjectSelector.tsx +++ b/src/components/project/ProjectSelector.tsx @@ -19,7 +19,7 @@ import { useState } from "react"; interface ProjectSelectorProps { open: boolean; - onSelect: (workspace: string, networkName: string, extent?: number[]) => void; + onSelect: (workspace: string, networkName: string, extent: number[]) => void; onClose?: () => void; } @@ -51,7 +51,7 @@ export const ProjectSelector: React.FC = ({ }) => { const [workspace, setWorkspace] = useState(PROJECTS[0].workspace); const [networkName, setNetworkName] = useState(PROJECTS[0].networkName); - const [extent, setExtent] = useState( + const [extent, setExtent] = useState( PROJECTS[0].extent, ); const [customMode, setCustomMode] = useState(false); diff --git a/src/contexts/ProjectContext.tsx b/src/contexts/ProjectContext.tsx index edc3340..5c7e367 100644 --- a/src/contexts/ProjectContext.tsx +++ b/src/contexts/ProjectContext.tsx @@ -34,22 +34,19 @@ export const ProjectProvider: React.FC<{ children: React.ReactNode }> = ({ applyConfig( savedWorkspace, savedNetwork, - savedExtent ? savedExtent.split(",").map(Number) : undefined, + savedExtent ? savedExtent.split(",").map(Number) : config.MAP_EXTENT, ); } }, []); - const applyConfig = async (ws: string, net: string, extent?: number[]) => { + const applyConfig = async (ws: string, net: string, extent: number[]) => { setMapWorkspace(ws); setNetworkName(net); - if (extent) { - setMapExtent(extent); - localStorage.setItem("NEXT_PUBLIC_MAP_EXTENT", extent.join(",")); - // Reset extent cache - localStorage.removeItem(`${ws}_map_view`); - } - - setCurrentProject({ workspace: ws, networkName: net, extent: extent || config.MAP_EXTENT }); + setMapExtent(extent); + localStorage.setItem("NEXT_PUBLIC_MAP_EXTENT", extent.join(",")); + // Reset extent cache + localStorage.removeItem(`${ws}_map_view`); + setCurrentProject({ workspace: ws, networkName: net, extent: extent }); // Save to localStorage localStorage.setItem("NEXT_PUBLIC_MAP_WORKSPACE", ws);