调整后端api,完善历史数据面板的交互
This commit is contained in:
@@ -15,14 +15,13 @@ import { Style, Stroke, Fill, Circle } from "ol/style";
|
||||
import { FeatureLike } from "ol/Feature";
|
||||
import Feature from "ol/Feature";
|
||||
import StyleEditorPanel from "./StyleEditorPanel";
|
||||
import { LayerStyleState } from "./StyleEditorPanel";
|
||||
import StyleLegend from "./StyleLegend"; // 引入图例组件
|
||||
import { handleMapClickSelectFeatures as mapClickSelectFeatures } from "@/utils/mapQueryService";
|
||||
|
||||
import { config } from "@/config/config";
|
||||
const backendUrl = config.BACKEND_URL;
|
||||
|
||||
import { LayerStyleState } from "./StyleEditorPanel";
|
||||
|
||||
// 添加接口定义隐藏按钮的props
|
||||
interface ToolbarProps {
|
||||
hiddenButtons?: string[]; // 可选的隐藏按钮列表,例如 ['info', 'draw', 'style']
|
||||
@@ -43,7 +42,6 @@ const Toolbar: React.FC<ToolbarProps> = ({ hiddenButtons, queryType }) => {
|
||||
const [showHistoryPanel, setShowHistoryPanel] = useState<boolean>(false);
|
||||
const [highlightLayer, setHighlightLayer] =
|
||||
useState<VectorLayer<VectorSource> | null>(null);
|
||||
const [featureId, setFeatureId] = useState<string>("");
|
||||
|
||||
// 样式状态管理 - 在 Toolbar 中管理,带有默认样式
|
||||
const [layerStyleStates, setLayerStyleStates] = useState<LayerStyleState[]>([
|
||||
@@ -198,19 +196,6 @@ const Toolbar: React.FC<ToolbarProps> = ({ hiddenButtons, queryType }) => {
|
||||
}
|
||||
}, [activeTools, map, handleMapClickSelectFeatures]);
|
||||
|
||||
// 监听 highlightFeature 变化,更新 featureId
|
||||
useEffect(() => {
|
||||
if (highlightFeature) {
|
||||
const id = highlightFeature.getProperties().id;
|
||||
if (id) {
|
||||
setFeatureId(id);
|
||||
}
|
||||
console.log("高亮要素 ID:", id);
|
||||
} else {
|
||||
setFeatureId("");
|
||||
}
|
||||
}, [highlightFeature]);
|
||||
|
||||
// 处理工具栏按钮点击事件
|
||||
const handleToolClick = (tool: string) => {
|
||||
// 样式工具的特殊处理 - 只有再次点击时才会取消激活和关闭
|
||||
@@ -671,7 +656,36 @@ const Toolbar: React.FC<ToolbarProps> = ({ hiddenButtons, queryType }) => {
|
||||
)}
|
||||
{showHistoryPanel && (
|
||||
<HistoryDataPanel
|
||||
deviceIds={featureId ? [featureId] : []}
|
||||
featureInfos={(() => {
|
||||
if (!highlightFeature || !showHistoryPanel) return [];
|
||||
const properties = highlightFeature.getProperties();
|
||||
const id = properties.id;
|
||||
if (!id) return [];
|
||||
|
||||
// 从图层名称推断类型
|
||||
const layerId =
|
||||
highlightFeature.getId()?.toString().split(".")[0] || "";
|
||||
let type = "unknown";
|
||||
|
||||
if (layerId.includes("pipe")) {
|
||||
type = "pipe";
|
||||
} else if (layerId.includes("junction")) {
|
||||
type = "junction";
|
||||
} else if (layerId.includes("tank")) {
|
||||
type = "tank";
|
||||
} else if (layerId.includes("reservoir")) {
|
||||
type = "reservoir";
|
||||
} else if (layerId.includes("pump")) {
|
||||
type = "pump";
|
||||
} else if (layerId.includes("valve")) {
|
||||
type = "valve";
|
||||
}
|
||||
// 仅处理 type 为 pipe 或 junction 的情况
|
||||
if (type !== "pipe" && type !== "junction") {
|
||||
return [];
|
||||
}
|
||||
return [[id, type]];
|
||||
})()}
|
||||
scheme_type="burst_Analysis"
|
||||
scheme_name={schemeName}
|
||||
type={queryType as "realtime" | "scheme" | "none"}
|
||||
|
||||
Reference in New Issue
Block a user