Skip to content

Commit d947d62

Browse files
committed
add controls for swap and transform delay
1 parent cd7f027 commit d947d62

File tree

1 file changed

+34
-7
lines changed

1 file changed

+34
-7
lines changed

index.html

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,33 +20,47 @@
2020
path {
2121
transition: transform 500ms;
2222
}
23-
#controls, #controls>*{
24-
position: relative;
23+
#controls {
2524
min-width: 200px;
2625
width: 100%;
2726
}
27+
#controls, #controls>*{
28+
position: relative;
29+
}
30+
#progress-bar{
31+
position: relative;
32+
}
2833
</style>
2934

3035
<div id="controls">
3136
<button id="shuffleBtn" type="button">Shuffle</button>
3237
<button id="quickSortBtn" type="button">Quick Sort</button>
3338
<button id="heapSortBtn" type="button">Heap Sort</button>
39+
<button id="combSortBtn" type="button">Comb Sort</button>
3440
<button id="insertionSortBtn" type="button">Insertion Sort (slow)</button>
35-
<br><hr><br>
41+
<br>
42+
<label>Swap delay (ms): <input type="number" id="swapDelayMs" value="1"></label>
43+
<br>
44+
<label>Transform delay (ms): <input type="number" id="transformDelayMs" value="500"></label>
45+
<hr>
3646
</div>
47+
<!-- <div id="progress-bar"></div> -->
3748
<script type="module" defer>
3849
import {
3950
quickSort,
4051
insertionSort,
4152
selectionSort,
4253
heapSort,
54+
combSort,
4355
} from './sorting-algorithms-ui.js'
4456

4557
document.addEventListener('DOMContentLoaded', async function() {
46-
const delayMs = 10;
47-
document.getElementById('insertionSortBtn').addEventListener('click', async function(e) {
48-
elems = await insertionSort(elems, {cmp, swap});
49-
console.log('done sorting');
58+
let delayMs = 1;
59+
document.getElementById('swapDelayMs').addEventListener('change', function(e) {
60+
delayMs = e.target.value;
61+
});
62+
document.getElementById('transformDelayMs').addEventListener('change', function(e) {
63+
document.querySelectorAll('path').forEach(el=>el.style.transition = `transform ${e.target.value}ms`);
5064
});
5165
document.getElementById('quickSortBtn').addEventListener('click', async function(e) {
5266
elems = await quickSort(elems, {cmp, swap});
@@ -56,6 +70,14 @@
5670
elems = await heapSort(elems, {cmp, swap});
5771
console.log('done sorting');
5872
});
73+
document.getElementById('combSortBtn').addEventListener('click', async function(e) {
74+
elems = await combSort(elems, {cmp, swap});
75+
console.log('done sorting');
76+
});
77+
document.getElementById('insertionSortBtn').addEventListener('click', async function(e) {
78+
elems = await insertionSort(elems, {cmp, swap});
79+
console.log('done sorting');
80+
});
5981
document.getElementById('shuffleBtn').addEventListener('click', async function(e) {
6082
elems = await shuffle(elems);
6183
console.log('done shuffling');
@@ -69,6 +91,10 @@
6991
elem.setAttribute('data-originalPos', getPos(elem).join(" "));
7092
});
7193

94+
// function updateProgress(op, perc) {
95+
// document.getElementById('progress-bar').innerHTML = `${op}: ${(perc*100).toFixed(1)}% [${Array(Math.floor(perc*100/4)).fill('█').join('')}${Array(Math.ceil((100-(100*perc))/4)).fill('░').join('')}]`;
96+
// }
97+
7298
function cmp(e1, e2) {
7399
let leftVal = parseInt(e1.id.replace('path', ''))
74100
let rightVal = parseInt(e2.id.replace('path', ''))
@@ -87,6 +113,7 @@
87113
// Pick a remaining element.
88114
randomIndex = randInt(currentIndex);
89115
currentIndex--;
116+
// updateProgress('Shuffling', (arr.length-currentIndex) / arr.length);
90117
await swap(arr, currentIndex, randomIndex, 1);
91118
}
92119
return arr;

0 commit comments

Comments
 (0)