Skip to content

Commit 8174e08

Browse files
Refactor heatmap UI: improve layout and styling for better clarity and responsiveness
1 parent 31a4383 commit 8174e08

2 files changed

Lines changed: 38 additions & 29 deletions

File tree

_includes/heatmap.html

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,14 @@
6161

6262
<!-- ── Bottom bar: badge + finger context + legend + reset ── -->
6363
<div class="bottom-bar">
64-
<div class="finger-context" id="finger-context">
65-
{{ e.finger_context }}
64+
<div class="heatmap-legend">
65+
<span style="text-align: right">{{ e.unreachable }}</span>
66+
<div class="heatmap-gradient"></div>
67+
<span style="text-align: left">{{ e.reachable }}</span>
6668
</div>
6769

68-
<div class="heatmap-legend" style="flex-basis: 100%; display: flex; justify-content: center; align-items: center;">
69-
<span>{{ e.unreachable }}</span>
70-
<div class="heatmap-gradient"></div>
71-
<span>{{ e.reachable }}</span>
70+
<div class="finger-context" id="finger-context">
71+
{{ e.finger_context }}
7272
</div>
7373

7474
<span id="reset-view-btn">{{ e.reset_view }}</span>
@@ -96,6 +96,7 @@
9696
const heatmap = new Keycube(document.getElementById('model-container'), true, 'integer')
9797

9898
// select element
99+
const handSelect = document.getElementById('hand-select');
99100
const handLabel = document.getElementById('hand-selected');
100101
const fingerLabel = document.getElementById('finger-selected');
101102
const fingerSelect = document.getElementById('finger-select');
@@ -345,14 +346,14 @@
345346
}
346347

347348
// close the hand select if the finger one is open
348-
fingerCheckbox.addEventListener('change', () => {
349+
/*fingerCheckbox.addEventListener('change', () => {
349350
handCheckbox.checked = false;
350351
})
351352
352353
// close the finger select if the hand one is open
353354
handCheckbox.addEventListener('change', () => {
354355
fingerCheckbox.checked = false;
355-
})
356+
})*/
356357

357358
// the first select options start the first select handler
358359
handOptions.forEach(elem => {
@@ -373,6 +374,15 @@
373374
heatmap.updateModel({resetView: true});
374375
})
375376

377+
// click outside the hand select options close the hand select
378+
document.addEventListener('click', (event) => {
379+
if (handCheckbox.checked) {
380+
handCheckbox.checked = handSelect.contains(event.target);
381+
} else if (fingerCheckbox.checked) {
382+
fingerCheckbox.checked = fingerSelect.contains(event.target);
383+
}
384+
})
385+
376386
// define the default view of the 3d render
377387
handleFirstSelect('start');
378388
// the 3d render is now visible

assets/css/heatmap.css

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
justify-content: center;
4848
align-items: center;
4949
pointer-events: auto;
50-
gap: 2em;
50+
gap: 1em;
5151
user-select: none;
5252
}
5353

@@ -126,8 +126,6 @@ label {
126126
.finger-context {
127127
display: flex;
128128
align-items: center;
129-
font-size: 11px;
130-
color: #555;
131129
text-align: center;
132130
line-height: 1.3;
133131
min-height: 16px;
@@ -138,35 +136,43 @@ label {
138136
}
139137

140138
.bottom-bar {
141-
left: 0;
142-
right: 0;
143139
display: flex;
144140
align-items: center;
145141
justify-content: center;
146-
gap: 1em;
142+
flex-direction: column;
143+
gap: .5em;
144+
147145
padding: 14px 20px;
148146
pointer-events: none;
149147
flex-wrap: wrap;
148+
149+
font-size: 12px;
150+
color: #828282;
150151
}
151152

152153
.heatmap-legend {
153-
display: flex;
154+
display: grid;
155+
grid-template-columns: 7em auto 7em;
154156
align-items: center;
155-
gap: 6px;
156-
font-size: 11px;
157-
color: #555;
157+
158+
flex-basis: 100%;
159+
user-select: none;
160+
}
161+
162+
.heatmap-legend span {
163+
padding: 0 .5em;
158164
}
159165

160166
.heatmap-gradient {
161-
width: 100px; height: 10px;
162-
border-radius: 5px;
167+
width: 100px; height: 15px;
168+
border-radius: 8px;
163169
background: linear-gradient(to right, #ff0000, #ffff00, #00ff00);
164170
border: 1px solid rgb(192, 192, 192);
171+
justify-self: center;
172+
grid-column: 2;
165173
}
166174

167175
#reset-view-btn {
168-
font-size: 12px;
169-
font-weight: 600;
170176
cursor: pointer;
171177
pointer-events: auto;
172178
user-select: none;
@@ -184,11 +190,4 @@ label {
184190
.bottom-bar { gap: 6px; padding: 8px 10px; }
185191
.heatmap-legend { font-size: 10px; }
186192
.heatmap-gradient { width: 60px; height: 8px; }
187-
#interface { gap: 1em; }
188-
.select { width: 10em }
189-
}
190-
191-
@media (max-width: 360px) {
192-
#interface { gap: 0.5em; }
193-
.select { width: 8em }
194193
}

0 commit comments

Comments
 (0)