Skip to content

Commit 08dafb0

Browse files
committed
refactor(sonar): clear isolated shell and dart-marker leftovers
- replace the last shell theme-action ternary with a small helper - switch dart-marker internal geometry/debug helpers to object parameters and tighten one overlay guard - validate with lint, changelog check, tests, and Sonar on xConfig (31 -> 26 open issues)
1 parent 7929828 commit 08dafb0

4 files changed

Lines changed: 38 additions & 21 deletions

File tree

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ direkt zu einer versionierten Release-Sektion.
2121

2222
### Fixed
2323

24+
- Nutzerwirkung: Keine beabsichtigte sichtbare Verhaltensänderung; xConfig-Themenaktionen, Cricket-Highlighting und Dart-Marker-Darts laufen fachlich weiter auf denselben Pfaden, drücken in dieser Sonar-Welle aber einige kleine Guard- und Debug-Signaturen direkter aus.
25+
Technik: `xconfig-ui/shell-view` ersetzt den letzten verschachtelten Hintergrundbild-Hinweis durch einen kleinen Action-Text-Helper, `cricket-highlighter` bereinigt einen lokalen Shape-Guard per Optional-Chaining, und `dart-marker-darts` bündelt zwei rein interne Debug-/Geometrie-Signaturen auf kleine Objektparameter statt 8-Parameter-Helfer; die bestehenden Shell-, Cricket- und Dart-Marker-Regressionen bleiben dabei der fachliche Schutz gegen Drift.
26+
2427
- Nutzerwirkung: Keine beabsichtigte sichtbare Verhaltensänderung; die xConfig-Shell reagiert weiterhin gleich auf Menü-, Settings-, Update- und Lifecycle-Aktionen, drückt die internen Controller-Pfade in dieser Sonar-Welle aber klarer getrennt aus.
2528
Technik: `xconfig-ui/action-controller`, `render-controller` und `lifecycle-controller` ziehen ihre lokalen Action-, Render- und Lifecycle-Helfer in äußere Hilfsfunktionen, bereinigen dabei einen verschachtelten Select-Ternary und lassen die öffentliche Controller-API sowie das bestehende Event-, Queue-, Modal- und Teardown-Verhalten unverändert; die vorhandenen Action- und Shell-Regressionen bleiben dabei der Schutz gegen Drift.
2629

src/features/cricket-highlighter/logic.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -470,7 +470,7 @@ function ensurePresentationPatterns(overlay, visualConfig) {
470470
}
471471

472472
function applyShapeStyle(shape, presentation, targetLabel) {
473-
if (!shape || !shape.classList || !shape.style) {
473+
if (!shape?.classList || !shape.style) {
474474
return;
475475
}
476476
const normalizedPresentation = resolvePresentationToken(presentation);

src/features/dart-marker-darts/logic.js

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,7 @@ function ensureOverlaySvg(state, documentRef) {
286286
}
287287

288288
let overlay = state.overlayNode;
289-
if (overlay && overlay.isConnected) {
289+
if (overlay?.isConnected) {
290290
if (String(overlay.tagName || "").toLowerCase() === "svg") {
291291
return overlay;
292292
}
@@ -854,7 +854,16 @@ function getFlightOffsets(center, boardCenter, dartLength) {
854854
return { start, mid };
855855
}
856856

857-
function buildGeometryPayload(marker, index, screenPoint, overlayRect, svgRect, groupRect, entry, extra = {}) {
857+
function buildGeometryPayload({
858+
marker,
859+
index,
860+
screenPoint,
861+
overlayRect,
862+
svgRect,
863+
groupRect,
864+
entry,
865+
extra = {},
866+
}) {
858867
const payload = {
859868
markerKey: buildMarkerKey(marker),
860869
index,
@@ -1107,16 +1116,16 @@ function buildOverlaySignature(overlayRect, dartLength) {
11071116
].join("|");
11081117
}
11091118

1110-
function maybeEmitBoardAndOverlayDebug(
1119+
function maybeEmitBoardAndOverlayDebug({
11111120
state,
11121121
featureDebug,
11131122
board,
11141123
boardRect,
11151124
groupRect,
11161125
overlayRect,
11171126
dartLength,
1118-
clipPath
1119-
) {
1127+
clipPath,
1128+
}) {
11201129
const boardSignature = buildBoardSignature(board, boardRect, groupRect);
11211130
if (state.lastBoardSignature !== boardSignature) {
11221131
state.lastBoardSignature = boardSignature;
@@ -1334,16 +1343,16 @@ export function updateDartMarkerDarts(options = {}) {
13341343
y: boardRect.top + boardRect.height / 2 - overlayRect.top,
13351344
};
13361345

1337-
maybeEmitBoardAndOverlayDebug(
1346+
maybeEmitBoardAndOverlayDebug({
13381347
state,
13391348
featureDebug,
13401349
board,
13411350
boardRect,
13421351
groupRect,
13431352
overlayRect,
13441353
dartLength,
1345-
clipPath
1346-
);
1354+
clipPath,
1355+
});
13471356

13481357
const markerSet = new Set(markers);
13491358
let removed = 0;
@@ -1417,15 +1426,15 @@ export function updateDartMarkerDarts(options = {}) {
14171426
visualConfig,
14181427
});
14191428

1420-
const geometryPayload = buildGeometryPayload(
1429+
const geometryPayload = buildGeometryPayload({
14211430
marker,
14221431
index,
14231432
screenPoint,
14241433
overlayRect,
1425-
boardRect,
1434+
svgRect: boardRect,
14261435
groupRect,
1427-
entry
1428-
);
1436+
entry,
1437+
});
14291438
emitDebug(state, featureDebug, "geometry-apply", geometryPayload);
14301439

14311440
if (isNew) {

src/features/xconfig-ui/shell-view.js

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -803,6 +803,18 @@ function buildDartDesignOptionLayout(
803803
return layout;
804804
}
805805

806+
function resolveThemeActionNoteText(action) {
807+
if (action === "clearThemeBackground") {
808+
return "Entfernt das gespeicherte Bild für dieses Theme.";
809+
}
810+
811+
if (action === "uploadThemeBackground") {
812+
return "Öffnet die Dateiauswahl und speichert das Bild für dieses Theme.";
813+
}
814+
815+
return "";
816+
}
817+
806818
function buildFeatureField(documentRef, feature, field) {
807819
const fieldId = `ad-xconfig-field-${feature.featureKey}-${field.key || field.action}`;
808820

@@ -825,14 +837,7 @@ function buildFeatureField(documentRef, feature, field) {
825837
},
826838
});
827839
wrapper.appendChild(button);
828-
const noteText = String(
829-
field.description ||
830-
(field.action === "clearThemeBackground"
831-
? "Entfernt das gespeicherte Bild für dieses Theme."
832-
: field.action === "uploadThemeBackground"
833-
? "Öffnet die Dateiauswahl und speichert das Bild für dieses Theme."
834-
: "")
835-
).trim();
840+
const noteText = String(field.description || resolveThemeActionNoteText(field.action)).trim();
836841
if (noteText) {
837842
wrapper.appendChild(createElement(documentRef, "p", {
838843
className: "ad-xconfig-note",

0 commit comments

Comments
 (0)