Skip to content

Commit b5f6856

Browse files
Jo-Byrfinetjul
authored andcommitted
feat(TransformControlsWidget): add select in example
1 parent 618c534 commit b5f6856

File tree

2 files changed

+38
-13
lines changed

2 files changed

+38
-13
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<table>
2+
<tr>
3+
<td>
4+
<select class="mode" style="width: 100%">
5+
<option data-mode="translate" value="0" selected>Translation</option>
6+
<option data-mode="rotate" value="1">Rotation</option>
7+
<option data-mode="scale" value="2">Scale</option>
8+
</select>
9+
</td>
10+
</tr>
11+
</table>

Sources/Widgets/Widgets3D/TransformControlsWidget/example/index.js

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ import vtkMapper from '@kitware/vtk.js/Rendering/Core/Mapper';
1010
import vtkWidgetManager from '@kitware/vtk.js/Widgets/Core/WidgetManager';
1111

1212
import vtkTransformControlsWidget from '@kitware/vtk.js/Widgets/Widgets3D/TransformControlsWidget';
13+
14+
import controlPanel from './controller.html';
15+
1316
const { TransformMode } = vtkTransformControlsWidget;
1417

1518
// ----------------------------------------------------------------------------
@@ -82,19 +85,30 @@ global.r = renderer;
8285
global.rw = renderWindow;
8386
global.vw = viewWidget;
8487

88+
function setTransformMode(mode) {
89+
widget.setMode(mode);
90+
renderWindow.render();
91+
}
92+
93+
fullScreenRenderer.addController(controlPanel);
94+
95+
const transformModeSelector = document.querySelector('.mode');
96+
transformModeSelector.addEventListener('change', (e) => {
97+
const idx = Number(e.target.value);
98+
const mode = e.target[idx].dataset.mode; // Retrieve mode from HTML
99+
setTransformMode(mode);
100+
});
101+
102+
const keyMap = {
103+
t: TransformMode.TRANSLATE,
104+
q: TransformMode.ROTATE,
105+
x: TransformMode.SCALE,
106+
};
107+
85108
window.onkeydown = (ev) => {
86-
switch (ev.key) {
87-
case 'q':
88-
widget.setMode(TransformMode.ROTATE);
89-
renderWindow.render();
90-
break;
91-
case 't':
92-
widget.setMode(TransformMode.TRANSLATE);
93-
renderWindow.render();
94-
break;
95-
case 'x':
96-
widget.setMode(TransformMode.SCALE);
97-
renderWindow.render();
98-
break;
109+
const mode = keyMap[ev.key];
110+
if (mode !== undefined) {
111+
transformModeSelector.value = Object.values(keyMap).indexOf(mode);
112+
setTransformMode(keyMap[ev.key]);
99113
}
100114
};

0 commit comments

Comments
 (0)