Skip to content

Commit 07cbaa6

Browse files
committed
Add window step lock control
1 parent 1589113 commit 07cbaa6

2 files changed

Lines changed: 16 additions & 3 deletions

File tree

bookviz/gallery.py

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,9 @@ def index_html(
113113
<label>Window size <span id="windowSizeValue"></span>
114114
<input id="windowSize" type="range" min="25" max="1000" step="25">
115115
</label>
116+
<div class="row">
117+
<label><input id="lockStep" type="checkbox" checked> lock step to size</label>
118+
</div>
116119
<label>Window step <span id="windowStepValue"></span>
117120
<input id="windowStep" type="range" min="25" max="1000" step="25">
118121
</label>
@@ -139,6 +142,7 @@ def index_html(
139142
metric: document.getElementById("metric"),
140143
color: document.getElementById("color"),
141144
perToken: document.getElementById("perToken"),
145+
lockStep: document.getElementById("lockStep"),
142146
windowSize: document.getElementById("windowSize"),
143147
windowStep: document.getElementById("windowStep"),
144148
windowSizeValue: document.getElementById("windowSizeValue"),
@@ -156,8 +160,14 @@ def index_html(
156160
els.color.value = DEFAULT_COLOR;
157161
els.windowSize.value = DEFAULT_WINDOW_SIZE;
158162
els.windowStep.value = DEFAULT_WINDOW_STEP;
159-
for (const el of [els.book, els.metric, els.color, els.perToken, els.windowSize, els.windowStep]) {{
160-
el.addEventListener("input", () => el === els.book ? loadBook() : render());
163+
els.lockStep.checked = DEFAULT_WINDOW_SIZE === DEFAULT_WINDOW_STEP;
164+
els.book.addEventListener("input", loadBook);
165+
for (const el of [els.metric, els.color, els.perToken, els.lockStep, els.windowSize, els.windowStep]) {{
166+
el.addEventListener("input", () => {{
167+
if (el === els.windowSize && els.lockStep.checked) els.windowStep.value = els.windowSize.value;
168+
if (el === els.lockStep && els.lockStep.checked) els.windowStep.value = els.windowSize.value;
169+
render();
170+
}});
161171
}}
162172
els.canvas.addEventListener("mousemove", showDetails);
163173
els.canvas.addEventListener("mouseleave", () => setDetails("Hover over the image", ""));
@@ -183,8 +193,10 @@ def index_html(
183193
const canUsePerToken = TOKEN_METRICS.includes(metric);
184194
els.perToken.disabled = !canUsePerToken;
185195
const useWindows = !canUsePerToken || !els.perToken.checked;
196+
if (els.lockStep.checked) els.windowStep.value = els.windowSize.value;
186197
els.windowSize.disabled = !useWindows;
187-
els.windowStep.disabled = !useWindows;
198+
els.lockStep.disabled = !useWindows;
199+
els.windowStep.disabled = !useWindows || els.lockStep.checked;
188200
els.windowSizeValue.textContent = els.windowSize.value;
189201
els.windowStepValue.textContent = els.windowStep.value;
190202
const result = useWindows

tests/test_gallery.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,5 @@ def test_gallery_generates_client_side_explorer(tmp_path: Path):
2323
assert copied_book == "one two one three"
2424
assert "const BOOKS" in index_html
2525
assert "windowSize" in index_html
26+
assert "lockStep" in index_html
2627
assert "lexical-diversity" in index_html

0 commit comments

Comments
 (0)