Korrektur: Wand/Decke bleiben bei "Nach Bauteil" als Default, nur
Drawing2D wechselt auf "Nach Ebene"
Nutzer-Korrektur zum vorigen Commit: "eine Wand usw soll weiterhin
nach Bauteil haben und die weisser Grund und schwarzer Vordergrund
haben. Also nach Bauteil. 2D Elemente haben aber bei Attribute kein
nach Bauteil!!!" -- der vorige Commit hatte den Default global (auch
für Wand/Decke) auf "Nach Ebene" umgestellt, was die neutrale SIA-
Poché-Konvention (weisser Grund/schwarzer Vordergrund über die
Bauteil-Kette) durch die rohe Ebenenfarbe ersetzt hätte.
resolveForeground/resolveBackground/resolveHatchId/resolveStrokeWeight
(plan/generatePlan/shared.ts) sind zurückgesetzt auf ihr ursprüngliches
Verhalten: `source === "layer"` (fehlend/"object" ⇒ weiterhin Bauteil-
Kette, DEFAULT bei Wand/Decke). Der elementart-abhängige Default sitzt
jetzt an den AUFRUFERN statt im generischen Resolver:
• Wand/Decke (selectionInfo.ts): rohes Source-Feld unverändert
durchgereicht -- Default bleibt "Nach Bauteil".
• Drawing2D (selectionInfo.ts drawingSelection): `d.foregroundSource
?? "layer"` usw. VOR dem Resolver -- Default wird dort explizit
"Nach Ebene" (kein eigenes Bauteil, "Nach Bauteil" bietet das Panel
für 2D-Elemente ohnehin nicht mehr an, s. vorletzter Commit).
• AttributesPanel.tsx uiSourceOf() bekommt einen isDrawing-Parameter
für denselben elementart-abhängigen Default in der Dropdown-
Anzeige.
+Tests in shared.resolve.test.ts auf die jetzt korrekten Erwartungen
umgeschrieben (Default bleibt Bauteil, explizites "layer" liefert die
Kategorie, Drawing2D-Aufrufer-Mapping separat geprüft). tsc/vitest
934/934 grün.
This commit is contained in:
@@ -50,11 +50,19 @@ import {
|
||||
* selbst gespeichert). */
|
||||
type UiSource = "layer" | "object" | "custom";
|
||||
|
||||
/** Leitet den UI-Quellen-Zustand ab: ein gesetzter Wert gewinnt immer („eigener
|
||||
* Wert"), sonst das rohe Source-Feld (`undefined` ⇒ „Nach Ebene", Default —
|
||||
* s. AttributeSource in model/types.ts). */
|
||||
function uiSourceOf(hasValue: boolean, raw: AttributeSource | undefined): UiSource {
|
||||
return hasValue ? "custom" : raw ?? "layer";
|
||||
/**
|
||||
* Leitet den UI-Quellen-Zustand ab: ein gesetzter Wert gewinnt immer („eigener
|
||||
* Wert"), sonst das rohe Source-Feld — dessen DEFAULT unterscheidet sich nach
|
||||
* Elementart (s. AttributeSource in model/types.ts): Wand/Decke „Nach Bauteil"
|
||||
* (neutrale SIA-Poché), Drawing2D „Nach Ebene" (kein eigenes Bauteil, „Nach
|
||||
* Bauteil" wird dort im Dropdown gar nicht erst angeboten).
|
||||
*/
|
||||
function uiSourceOf(
|
||||
hasValue: boolean,
|
||||
raw: AttributeSource | undefined,
|
||||
isDrawing: boolean,
|
||||
): UiSource {
|
||||
return hasValue ? "custom" : raw ?? (isDrawing ? "layer" : "object");
|
||||
}
|
||||
|
||||
export function AttributesPanel() {
|
||||
@@ -191,15 +199,21 @@ export function AttributesPanel() {
|
||||
</>
|
||||
);
|
||||
|
||||
// Vordergrund/Hintergrund: „eigener Wert" ⇒ auf Quelle "object" (Nach
|
||||
// Bauteil, Default) zurückfallen; „Nach Ebene"/„Nach Bauteil" schreiben die
|
||||
// Quelle direkt (der Host löscht dabei den expliziten Wert).
|
||||
const fgUi = uiSourceOf(sel.foreground !== undefined, sel.foregroundSource);
|
||||
const bgUi = uiSourceOf(sel.background !== undefined, sel.backgroundSource);
|
||||
const weightUi = uiSourceOf(sel.strokeWeightOverride !== undefined, sel.strokeWeightSource);
|
||||
// Vordergrund/Hintergrund: „eigener Wert" ⇒ auf den elementart-abhängigen
|
||||
// Default zurückfallen (Wand/Decke „Nach Bauteil", Drawing2D „Nach Ebene",
|
||||
// s. uiSourceOf); „Nach Ebene"/„Nach Bauteil" schreiben die Quelle direkt
|
||||
// (der Host löscht dabei den expliziten Wert).
|
||||
const fgUi = uiSourceOf(sel.foreground !== undefined, sel.foregroundSource, isDrawing);
|
||||
const bgUi = uiSourceOf(sel.background !== undefined, sel.backgroundSource, isDrawing);
|
||||
const weightUi = uiSourceOf(
|
||||
sel.strokeWeightOverride !== undefined,
|
||||
sel.strokeWeightSource,
|
||||
isDrawing,
|
||||
);
|
||||
const hatchUi = uiSourceOf(
|
||||
sel.fillHatchId !== undefined && sel.fillHatchId !== null,
|
||||
sel.hatchSource,
|
||||
isDrawing,
|
||||
);
|
||||
|
||||
// Wechsel auf „eigener Wert" per Dropdown (nicht durchs Editieren des Felds
|
||||
|
||||
Reference in New Issue
Block a user