fix: announce 3d camera orientation
This commit is contained in:
@@ -85,8 +85,7 @@ const beamPatternSurfaceView = createReceiveBeamPatternSurfaceView(
|
||||
elements["beam-pattern-surface"],
|
||||
{
|
||||
onViewDirectionChange(direction) {
|
||||
elements["beam-pattern-axis-view"].value = direction;
|
||||
document.documentElement.dataset.beamPatternViewAxis = direction;
|
||||
syncBeamViewDirection(direction);
|
||||
},
|
||||
},
|
||||
);
|
||||
@@ -372,8 +371,29 @@ const VIEW_DIRECTION_LABELS = Object.freeze({
|
||||
custom: "자유 회전",
|
||||
});
|
||||
|
||||
function resolvedViewDirection(direction) {
|
||||
return Object.hasOwn(VIEW_DIRECTION_LABELS, direction) ? direction : "iso";
|
||||
}
|
||||
|
||||
function viewDirectionDescription(direction) {
|
||||
const resolved = resolvedViewDirection(direction);
|
||||
return resolved === "custom"
|
||||
? VIEW_DIRECTION_LABELS.custom
|
||||
: VIEW_DIRECTION_LABELS[resolved] + " 원점 보기";
|
||||
}
|
||||
|
||||
function syncBeamViewDirection(direction) {
|
||||
const resolved = resolvedViewDirection(direction);
|
||||
elements["beam-pattern-axis-view"].value = resolved;
|
||||
document.documentElement.dataset.beamPatternViewAxis = resolved;
|
||||
elements["beam-pattern-surface"].setAttribute(
|
||||
"aria-label",
|
||||
"3D 수신 빔 패턴 표면 · " + viewDirectionDescription(resolved),
|
||||
);
|
||||
}
|
||||
|
||||
function syncArrayViewDirection(direction) {
|
||||
const resolved = Object.hasOwn(VIEW_DIRECTION_LABELS, direction) ? direction : "iso";
|
||||
const resolved = resolvedViewDirection(direction);
|
||||
elements["array-axis-view"].value = resolved;
|
||||
elements["array-canvas"].dataset.viewAxis = resolved;
|
||||
document.documentElement.dataset.arrayViewAxis = resolved;
|
||||
@@ -381,6 +401,10 @@ function syncArrayViewDirection(direction) {
|
||||
elements["canvas-front-badge"].textContent = resolved === "custom"
|
||||
? "+Z FRONT · 자유 회전"
|
||||
: "시점 " + VIEW_DIRECTION_LABELS[resolved] + " 원점 보기 · +Z FRONT";
|
||||
elements["array-canvas"].setAttribute(
|
||||
"aria-label",
|
||||
"마이크 어레이 3D 검사 canvas · " + viewDirectionDescription(resolved),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -434,7 +458,6 @@ function setArrayViewMode(mode, options = {}) {
|
||||
elements["canvas-front-badge"].textContent = resolved === "3d"
|
||||
? "+Z FRONT · 초록 축"
|
||||
: "+Z FRONT · 화면 바깥쪽";
|
||||
if (resolved === "3d") syncArrayViewDirection(elements["array-axis-view"].value);
|
||||
elements["array-canvas"].setAttribute(
|
||||
"aria-label",
|
||||
resolved === "3d"
|
||||
@@ -447,6 +470,7 @@ function setArrayViewMode(mode, options = {}) {
|
||||
? "ArrowLeft ArrowRight ArrowUp ArrowDown F R Escape"
|
||||
: "V A F Escape Delete ArrowLeft ArrowRight ArrowUp ArrowDown",
|
||||
);
|
||||
if (resolved === "3d") syncArrayViewDirection(elements["array-axis-view"].value);
|
||||
setTool(state.tool);
|
||||
canvasView.render(canvasState());
|
||||
if (options.focus) canvasView.focus();
|
||||
@@ -1409,7 +1433,7 @@ elements["array-view-3d-button"].addEventListener("click", () =>
|
||||
elements["array-axis-view"].addEventListener("change", () => {
|
||||
const direction = elements["array-axis-view"].value;
|
||||
canvasView.setViewDirection(direction);
|
||||
announceSelection("3D 시점 · " + VIEW_DIRECTION_LABELS[direction] + " 원점 보기");
|
||||
announceSelection("3D 시점 · " + viewDirectionDescription(direction));
|
||||
});
|
||||
elements["fit-view-button"].addEventListener("click", () => canvasView.fit());
|
||||
elements["zoom-in-button"].addEventListener("click", () => canvasView.zoomBy(1.25));
|
||||
@@ -1659,8 +1683,7 @@ window.addEventListener("unload", () => {
|
||||
elements["snap-enabled"].checked = state.snapEnabled;
|
||||
setNumber(elements["snap-step"], state.snapStepM * 1000);
|
||||
syncArrayViewDirection("iso");
|
||||
elements["beam-pattern-axis-view"].value = "iso";
|
||||
document.documentElement.dataset.beamPatternViewAxis = "iso";
|
||||
syncBeamViewDirection("iso");
|
||||
setArrayViewMode("2d", { announce: false });
|
||||
setBeamPatternViewMode("cuts", { render: false });
|
||||
syncBeamPatternFrequency();
|
||||
|
||||
Reference in New Issue
Block a user