修复MAP_EXTENT状态更新的BUG
This commit is contained in:
@@ -21,7 +21,7 @@ import { useGetIdentity, useLogout } from "@refinedev/core";
|
|||||||
import { HamburgerMenu, RefineThemedLayoutHeaderProps } from "@refinedev/mui";
|
import { HamburgerMenu, RefineThemedLayoutHeaderProps } from "@refinedev/mui";
|
||||||
import React, { useContext, useState } from "react";
|
import React, { useContext, useState } from "react";
|
||||||
import { ProjectSelector } from "@components/project/ProjectSelector";
|
import { ProjectSelector } from "@components/project/ProjectSelector";
|
||||||
import { setMapWorkspace, setNetworkName } from "@config/config";
|
import { setMapExtent, setMapWorkspace, setNetworkName } from "@config/config";
|
||||||
|
|
||||||
type IUser = {
|
type IUser = {
|
||||||
id: number;
|
id: number;
|
||||||
@@ -53,11 +53,18 @@ export const Header: React.FC<RefineThemedLayoutHeaderProps> = ({
|
|||||||
setShowProjectSelector(true);
|
setShowProjectSelector(true);
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleProjectSelect = (workspace: string, networkName: string) => {
|
const handleProjectSelect = (
|
||||||
|
workspace: string,
|
||||||
|
networkName: string,
|
||||||
|
extent: number[],
|
||||||
|
) => {
|
||||||
setMapWorkspace(workspace);
|
setMapWorkspace(workspace);
|
||||||
setNetworkName(networkName);
|
setNetworkName(networkName);
|
||||||
|
setMapExtent(extent);
|
||||||
localStorage.setItem("NEXT_PUBLIC_MAP_WORKSPACE", workspace);
|
localStorage.setItem("NEXT_PUBLIC_MAP_WORKSPACE", workspace);
|
||||||
localStorage.setItem("NEXT_PUBLIC_NETWORK_NAME", networkName);
|
localStorage.setItem("NEXT_PUBLIC_NETWORK_NAME", networkName);
|
||||||
|
localStorage.setItem("NEXT_PUBLIC_MAP_EXTENT", extent.join(","));
|
||||||
|
localStorage.removeItem(`${workspace}_map_view`);
|
||||||
setShowProjectSelector(false);
|
setShowProjectSelector(false);
|
||||||
window.location.reload();
|
window.location.reload();
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ import { useState } from "react";
|
|||||||
|
|
||||||
interface ProjectSelectorProps {
|
interface ProjectSelectorProps {
|
||||||
open: boolean;
|
open: boolean;
|
||||||
onSelect: (workspace: string, networkName: string, extent?: number[]) => void;
|
onSelect: (workspace: string, networkName: string, extent: number[]) => void;
|
||||||
onClose?: () => void;
|
onClose?: () => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -51,7 +51,7 @@ export const ProjectSelector: React.FC<ProjectSelectorProps> = ({
|
|||||||
}) => {
|
}) => {
|
||||||
const [workspace, setWorkspace] = useState(PROJECTS[0].workspace);
|
const [workspace, setWorkspace] = useState(PROJECTS[0].workspace);
|
||||||
const [networkName, setNetworkName] = useState(PROJECTS[0].networkName);
|
const [networkName, setNetworkName] = useState(PROJECTS[0].networkName);
|
||||||
const [extent, setExtent] = useState<number[] | undefined>(
|
const [extent, setExtent] = useState<number[]>(
|
||||||
PROJECTS[0].extent,
|
PROJECTS[0].extent,
|
||||||
);
|
);
|
||||||
const [customMode, setCustomMode] = useState(false);
|
const [customMode, setCustomMode] = useState(false);
|
||||||
|
|||||||
@@ -34,22 +34,19 @@ export const ProjectProvider: React.FC<{ children: React.ReactNode }> = ({
|
|||||||
applyConfig(
|
applyConfig(
|
||||||
savedWorkspace,
|
savedWorkspace,
|
||||||
savedNetwork,
|
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);
|
setMapWorkspace(ws);
|
||||||
setNetworkName(net);
|
setNetworkName(net);
|
||||||
if (extent) {
|
setMapExtent(extent);
|
||||||
setMapExtent(extent);
|
localStorage.setItem("NEXT_PUBLIC_MAP_EXTENT", extent.join(","));
|
||||||
localStorage.setItem("NEXT_PUBLIC_MAP_EXTENT", extent.join(","));
|
// Reset extent cache
|
||||||
// Reset extent cache
|
localStorage.removeItem(`${ws}_map_view`);
|
||||||
localStorage.removeItem(`${ws}_map_view`);
|
setCurrentProject({ workspace: ws, networkName: net, extent: extent });
|
||||||
}
|
|
||||||
|
|
||||||
setCurrentProject({ workspace: ws, networkName: net, extent: extent || config.MAP_EXTENT });
|
|
||||||
|
|
||||||
// Save to localStorage
|
// Save to localStorage
|
||||||
localStorage.setItem("NEXT_PUBLIC_MAP_WORKSPACE", ws);
|
localStorage.setItem("NEXT_PUBLIC_MAP_WORKSPACE", ws);
|
||||||
|
|||||||
Reference in New Issue
Block a user