Zeichnungsebenen merken sich eigenen 2D/3D-Zustand

Bisher war viewType (Grundriss/Perspektive) ein einziger globaler
Wert. Beim Tab-Wechsel blieb er unverändert stehen, was wirkte, als
würde die Ansicht "durchsickern". Jede Ebene merkt sich jetzt ihren
zuletzt gewählten Ansichtstyp und stellt ihn beim Zurückwechseln
wieder her.
This commit is contained in:
2026-07-03 21:51:51 +02:00
parent a5976e3394
commit ef1d5a90c4
+14 -2
View File
@@ -21,6 +21,9 @@ export interface ViewSlice {
activeLevelId: string; activeLevelId: string;
// Ansichtstyp (Grundriss / Perspektive). // Ansichtstyp (Grundriss / Perspektive).
viewType: ViewType; viewType: ViewType;
// Zuletzt gewählter Ansichtstyp je Zeichnungsebene — jeder Tab merkt sich
// seinen eigenen 2D/3D-Zustand statt eines rein globalen Umschalters.
viewTypeByLevel: Record<string, ViewType>;
// Detailgrad im Grundriss. // Detailgrad im Grundriss.
detail: DetailLevel; detail: DetailLevel;
// Render-Modus der 3D-Ansicht. // Render-Modus der 3D-Ansicht.
@@ -65,6 +68,7 @@ export function createViewSlice(api: StoreApi<ViewSlice>): ViewSlice {
return { return {
activeLevelId: sampleProject.drawingLevels[0].id, activeLevelId: sampleProject.drawingLevels[0].id,
viewType: "grundriss", viewType: "grundriss",
viewTypeByLevel: {},
detail: "mittel", detail: "mittel",
renderMode: "shaded", renderMode: "shaded",
view3d: "perspective", view3d: "perspective",
@@ -77,8 +81,16 @@ export function createViewSlice(api: StoreApi<ViewSlice>): ViewSlice {
sampleProject.walls[0]?.categoryCode ?? sampleProject.layers[0].code, sampleProject.walls[0]?.categoryCode ?? sampleProject.layers[0].code,
displayModes: {}, displayModes: {},
setActiveLevelId: (id) => set({ activeLevelId: id }), setActiveLevelId: (id) =>
setViewType: (v) => set({ viewType: v }), set((s) => ({
activeLevelId: id,
viewType: s.viewTypeByLevel[id] ?? "grundriss",
})),
setViewType: (v) =>
set((s) => ({
viewType: v,
viewTypeByLevel: { ...s.viewTypeByLevel, [s.activeLevelId]: v },
})),
setDetail: (d) => set({ detail: d }), setDetail: (d) => set({ detail: d }),
setRenderMode: (m) => set({ renderMode: m }), setRenderMode: (m) => set({ renderMode: m }),
setView3d: (v) => set({ view3d: v }), setView3d: (v) => set({ view3d: v }),