Skip to content

Commit 3ebb202

Browse files
Refactor heatmap UI by removing unused styles and simplifying layout structure
1 parent da1d10f commit 3ebb202

4 files changed

Lines changed: 21 additions & 155 deletions

File tree

_includes/heatmap-ui.html

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,10 @@
2828
{{ e.finger_context }}
2929
</div>
3030

31-
<div class="heatmap-legend">
31+
<div class="heatmap-legend" style="flex-basis: 100%; display: flex; justify-content: center; align-items: center;">
3232
<span>{{ e.unreachable }}</span>
3333
<div class="heatmap-gradient"></div>
3434
<span>{{ e.reachable }}</span>
35-
</div>
36-
37-
<div style="flex-basis: 100%; display: flex; justify-content: center; align-items: center;">
3835
<button class="reset-view-btn" id="reset-view-btn">{{ e.reset_view }}</button>
3936
</div>
4037
</div>

_includes/heatmap-ui2.html

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<!-- ── Bottom bar: badge + finger context + legend + reset ── -->
77
<div class="bottom-bar">
88
<div style="flex-basis: 100%; display: flex; justify-content: center; align-items: center; pointer-events: auto; gap: 30px;">
9-
<p>
9+
<p class="finger-radio">
1010
<label for="all-fingers">
1111
{{ e.total }}
1212
</label>
@@ -24,7 +24,7 @@
2424
</label>
2525
<input type="radio" id="left-hand" name="finger-select" value="L"><br>
2626
</p>
27-
<p id="finger-radio" style="display: none">
27+
<p id="finger-radio" class="finger-radio" style="display: none">
2828
<label for="finger-all">
2929
{{ e.all_button }}
3030
</label>
@@ -56,13 +56,10 @@
5656
{{ e.finger_context }}
5757
</div>
5858

59-
<div class="heatmap-legend">
59+
<div class="heatmap-legend" style="flex-basis: 100%; display: flex; justify-content: center; align-items: center;">
6060
<span>{{ e.unreachable }}</span>
6161
<div class="heatmap-gradient"></div>
6262
<span>{{ e.reachable }}</span>
63-
</div>
64-
65-
<div style="flex-basis: 100%; display: flex; justify-content: center; align-items: center;">
6663
<button class="reset-view-btn" id="reset-view-btn">{{ e.reset_view }}</button>
6764
</div>
6865
</div>

_includes/model-viewer.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@
308308
* - camera: THREE.PerspectiveCamera
309309
* - controls: OrbitControls (optional) to update target and distances
310310
* - object: THREE.Object3D to fit
311-
* - options: { margin: 1.0, offset: 1.0, preserveDirection: true }
311+
* - options: { margin: 1.0, offset: 0.736, preserveDirection: true }
312312
**/
313313
function fitCameraToObject(object, camera, controls, options = {}) {
314314
const {margin = 1.0, offset = 0.736, preserveDirection = true} = options;
@@ -514,6 +514,6 @@
514514
controls.autoRotate = !autoRotateStoppedByUser;
515515
}
516516

517-
fitCameraToObject(keycubeGroup, camera, controls/*, { margin: 1.12, offset: 1.05, preserveDirection: true }*/);
517+
fitCameraToObject(keycubeGroup, camera, controls);
518518
};
519519
</script>

assets/css/heatmap.css

Lines changed: 15 additions & 143 deletions
Original file line numberDiff line numberDiff line change
@@ -43,118 +43,27 @@
4343
cursor: grabbing;
4444
}
4545

46-
/* Hand Selector */
47-
.hand-selector-container { display: flex; align-items: center; justify-content: center; gap: 10px; }
48-
.hand-analog { display: flex; flex-direction: column; align-items: center; }
49-
.analog-ring {
50-
position: relative;
51-
width: 9em; height: 9em;
52-
border-radius: 50%;
53-
background: radial-gradient(circle, #f8f8f8 0%, #ebebeb 70%, #ddd 100%);
54-
border: 3px solid #ccc;
55-
cursor: pointer;
56-
transition: border-color 0.25s, box-shadow 0.25s, transform 0.15s;
57-
}
58-
.analog-ring:hover { border-color: #888; box-shadow: 0 0 14px rgba(0, 0, 0, 0.10); transform: scale(1.04); }
59-
.analog-ring.active { border-color: #4dabf7; box-shadow: 0 0 18px rgba(77, 171, 247, 0.35); }
60-
.analog-stick {
61-
position: absolute;
62-
top: 50%; left: 50%;
63-
transform: translate(-50%, -50%);
64-
width: 32px; height: 32px;
65-
border-radius: 50%;
66-
background: linear-gradient(145deg, #fff, #e6e6e6);
67-
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.06), 0 2px 8px rgba(0, 0, 0, 0.08);
68-
display: flex;
69-
align-items: center;
70-
justify-content: center;
71-
pointer-events: none;
72-
}
73-
.analog-center-label {
74-
font-size: 10px;
75-
font-weight: 700;
76-
color: #444;
77-
line-height: 1.1;
78-
text-align: center;
79-
}
80-
81-
/* Finger dots */
82-
.finger-dot {
83-
position: absolute;
84-
width: 3em; height: 3em;
85-
border-radius: 50%;
86-
border: 2px solid #aaa;
87-
background: #fff;
88-
display: flex;
89-
align-items: center;
90-
justify-content: center;
91-
cursor: pointer;
92-
transition: all 0.2s;
93-
z-index: 2;
94-
padding: 0;
95-
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);
96-
}
97-
.finger-dot:hover {
98-
background: #4dabf7;
99-
border-color: #4dabf7;
100-
color: #fff;
101-
transform: scale(1.2);
102-
box-shadow: 0 0 10px rgba(77, 171, 247, 0.5);
103-
z-index: 100;
104-
}
105-
.finger-dot.active {
106-
background: #4dabf7;
107-
border-color: #228be6;
108-
color: #fff;
109-
box-shadow: 0 0 12px rgba(77, 171, 247, 0.6);
110-
transform: scale(1.15);
111-
}
112-
.finger-letter { font-size: 0.8em; font-weight: 700; line-height: 1; pointer-events: none; }
113-
11446
.finger-select {
115-
margin: 12px auto; box-sizing: border-box; justify-content: center; align-content: center;
116-
}
117-
118-
/* Finger positions */
119-
.finger-thumb-left { top: 58%; right: -12px; }
120-
.finger-index-left { top: 4%; right: 4px; }
121-
.finger-middle-left { top: -10px; left: 50%; transform: translateX(-50%); }
122-
.finger-ring-left { top: 4%; left: 4px; }
123-
.finger-little-left { top: 42%; left: -12px; }
124-
.finger-thumb-right { top: 58%; left: -12px; }
125-
.finger-index-right { top: 4%; left: 4px; }
126-
.finger-middle-right { top: -10px; left: 50%; transform: translateX(-50%); }
127-
.finger-ring-right { top: 4%; right: 4px; }
128-
.finger-little-right { top: 42%; right: -12px; }
47+
font: inherit;
48+
font-size: 75%;
12949

130-
/* Fix: Middle fingers need combined transform to keep centering on hover/active */
131-
.finger-middle-left:hover,
132-
.finger-middle-right:hover {
133-
transform: translateX(-50%) scale(1.2);
134-
}
135-
.finger-middle-left.active,
136-
.finger-middle-right.active {
137-
transform: translateX(-50%) scale(1.15);
50+
top: 9px;
51+
right: 15px;
52+
background-color: #fff;
53+
border: 2px solid #e8e8e8;
54+
border-radius: 5px;
13855
}
13956

140-
.finger-dot[data-tooltip]:hover::after { bottom: 115%; font-size: 10px; }
57+
.finger-radio {
58+
padding: 5px;
59+
font-size: 75%;
14160

142-
/* Hand divider & actions */
143-
.hand-divider { display: flex; align-items: center; color: #aaa; font-size: 12px; font-style: italic; position: relative; z-index: 10; }
144-
.hand-actions { display: flex; justify-content: center; gap: 6px; flex-wrap: wrap; }
145-
.hand-action-btn {
146-
padding: 5px 12px;
147-
border: 2px solid rgba(0, 0, 0, 0.1);
148-
border-radius: 16px;
149-
background: rgba(248, 248, 248, 0.9);
150-
color: #555;
151-
font-size: 11px;
152-
font-weight: 600;
153-
cursor: pointer;
154-
transition: all 0.2s;
61+
top: 9px;
62+
right: 15px;
63+
background-color: #fff;
64+
border: 2px solid #e8e8e8;
65+
border-radius: 5px;
15566
}
156-
.hand-action-btn:hover { background: #e8f4fd; border-color: #4dabf7; color: #228be6; transform: translateY(-1px); z-index: 100; }
157-
.hand-action-btn.active { background: #4dabf7; border-color: #228be6; color: #fff; }
15867

15968
/* Finger context */
16069
.finger-context { font-size: 11px; color: #555; text-align: center; line-height: 1.3; min-height: 16px; font-style: italic; max-width: 320px; }
@@ -211,53 +120,16 @@
211120

212121
/* Responsive */
213122
@media (max-width: 900px) {
214-
.analog-ring { width: 9em; height: 9em; }
215-
.analog-stick { width: 34px; height: 34px; }
216-
.analog-center-label { font-size: 10px; }
217-
.finger-dot { width: 2em; height: 2em; }
218-
.finger-letter { font-size: 0.8em; }
219123
select { min-width: 180px; font-size: 12px; }
220124
}
221125

222126
@media (max-width: 768px) {
223127
.bottom-bar { padding: 10px 14px; }
224-
.finger-preference-legend {
225-
position: static;
226-
right: auto;
227-
bottom: auto;
228-
}
229-
.hand-selector-container { gap: 8px; }
230-
.analog-ring { width: 9em; height: 9em; }
231-
.analog-stick { width: 30px; height: 30px; }
232-
.analog-center-label { font-size: 10px; }
233-
.finger-dot { width: 2em; height: 2em; }
234-
.finger-letter { font-size: 0.8em; }
235128
}
236129

237130
@media (max-width: 480px) {
238-
.top-bar { gap: 6px; padding: 8px 10px; padding-top: 34px; }
239131
.bottom-bar { gap: 6px; padding: 8px 10px; }
240132
select { min-width: 140px; font-size: 12px; padding: 6px 10px; }
241-
.color-btn { padding: 4px 8px; font-size: 10px; }
242-
.reset-btn { padding: 4px 8px; font-size: 10px; }
243-
.selection-badge { font-size: 11px; padding: 5px 10px; }
244-
.selection-icon { font-size: 14px; }
245133
.heatmap-legend { font-size: 10px; }
246134
.heatmap-gradient { width: 60px; height: 8px; }
247-
.hand-selector-container {
248-
flex-direction: row;
249-
flex-wrap: nowrap;
250-
align-items: center;
251-
justify-content: center;
252-
gap: 6px;
253-
}
254-
.hand-divider { transform: none; }
255-
.analog-ring { width: 7em; height: 7em; }
256-
.analog-stick { width: 26px; height: 26px; }
257-
.analog-center-label { font-size: 8px; }
258-
.finger-dot { width: 2em; height: 2em; border-width: 1.5px; }
259-
.finger-letter { font-size: 8px; }
260-
.hand-action-btn { padding: 4px 7px; font-size: 9px; }
261-
.side-panel { max-height: 60vh; }
262-
.hand-face-map { flex-direction: column; align-items: center; }
263135
}

0 commit comments

Comments
 (0)