feat: extend agent-driven map workbench

This commit is contained in:
2026-07-20 19:57:35 +08:00
parent 86e9b08235
commit 7fbd8a5618
63 changed files with 4506 additions and 457 deletions
+17 -9
View File
@@ -12,13 +12,20 @@ import {
import { waterNetworkLayers } from "./layers";
describe("SCADA map presentation", () => {
it("maps the three authoritative device types and falls back to unknown", () => {
it("maps the authoritative device types and falls back to unknown", () => {
expect(SCADA_ICON_EXPRESSION).toEqual([
"match", ["get", "kind"],
"water_quality", SCADA_IMAGE_IDS.waterQuality,
"radar_level", SCADA_IMAGE_IDS.radarLevel,
"ultrasonic_flow", SCADA_IMAGE_IDS.ultrasonicFlow,
SCADA_IMAGE_IDS.unknown
"case",
["has", "kind"],
[
"match", ["get", "kind"],
"water_quality", SCADA_IMAGE_IDS.waterQuality,
"radar_level", SCADA_IMAGE_IDS.radarLevel,
"ultrasonic_flow", SCADA_IMAGE_IDS.ultrasonicFlow,
"integrated_monitoring", SCADA_IMAGE_IDS.integratedMonitoring,
"综合监测点", SCADA_IMAGE_IDS.integratedMonitoring,
SCADA_IMAGE_IDS.integratedMonitoring
],
SCADA_IMAGE_IDS.integratedMonitoring
]);
});
@@ -50,10 +57,11 @@ describe("SCADA map presentation", () => {
"circle-stroke-width": junctionSelectedPaint?.["circle-stroke-width"]
}
});
expect(JSON.stringify((selectedLayer as { paint?: unknown })?.paint)).toContain("highlighted");
});
it("uses MapLibre-compatible PNG assets", () => {
expect(Object.values(SCADA_MAP_ICON_PATHS)).toHaveLength(4);
expect(Object.values(SCADA_MAP_ICON_PATHS)).toHaveLength(5);
Object.values(SCADA_MAP_ICON_PATHS).forEach((path) => expect(path).toMatch(/\.png$/));
});
@@ -62,8 +70,8 @@ describe("SCADA map presentation", () => {
const map = createImageMap(() => Promise.resolve({ data: image }));
await expect(registerScadaImages(map)).resolves.toEqual({ status: "ready", failedImageIds: [] });
expect(map.loadImage).toHaveBeenCalledTimes(4);
expect(map.addImage).toHaveBeenCalledTimes(4);
expect(map.loadImage).toHaveBeenCalledTimes(5);
expect(map.addImage).toHaveBeenCalledTimes(5);
expect(map.addImage).toHaveBeenCalledWith(expect.any(String), image, { pixelRatio: 2 });
});