From 4b021a62f051dec4336b515cc3e1e7793596f76b Mon Sep 17 00:00:00 2001 From: Matej Focko Date: Tue, 17 May 2022 14:39:33 +0200 Subject: [PATCH] feat: add prepared scenarios for comparators Signed-off-by: Matej Focko --- comparator.html | 39 ++++++++++++++++++++++++-- comparator_visualization.js | 55 +++++++++++++++++++++++++++++++++---- 2 files changed, 85 insertions(+), 9 deletions(-) diff --git a/comparator.html b/comparator.html index bf67071..98dadc4 100755 --- a/comparator.html +++ b/comparator.html @@ -76,6 +76,39 @@
+ +
+
+
Prepared scenarios
+ +
+ + +
+
+
@@ -92,10 +125,10 @@ - + diff --git a/comparator_visualization.js b/comparator_visualization.js index 3f26b0c..0d78e30 100644 --- a/comparator_visualization.js +++ b/comparator_visualization.js @@ -11,7 +11,7 @@ let rRecorder = new Recorder( let left = null; let right = null; -setTrees(AVLTree, WAVLTree); +setTrees(new AVLTree(), new WAVLTree()); function operationCallback(lMethod, rMethod, id) { let number = document.getElementById(id).value; @@ -42,16 +42,16 @@ function deleteCallback() { ); } -function setTrees(lType, rType) { - left = new lType(); +function setTrees(newLeft, newRight, msg) { + left = newLeft; left.recorder = lRecorder; - right = new rType(); + right = newRight; right.recorder = rRecorder; for (let t of [left, right]) { t.recorder.clear(); - t.record(); + t.record(msg); } } @@ -60,9 +60,52 @@ function switchTree(TreeType, side) { side == "left" ? [TreeType, right.constructor] : [left.constructor, TreeType]; - setTrees(lType, rType); + setTrees(new lType(), new rType()); } +// #region prepared scenarios +function prepareDifferentRanks() { + let newLTree = new AVLTree(); + let newRTree = new WAVLTree(); + + for (let key of [0, -7, 1, -1]) { + newLTree.insert(key); + newRTree.insert(key); + } + + document.getElementById("lAvlTreeBtn").checked = true; + document.getElementById("rWavlTreeBtn").checked = true; + + setTrees(newLTree, newRTree, "Prepare tree"); + + document.getElementById("deleteInput").value = 1; +} + +function prepareDifferentTrees() { + let newLTree = new AVLTree(); + let newRTree = new WAVLTree(); + + for (let key of [0, -31, 2, 3, 4, 1, 6, -1, -4, -3, -2, 31]) { + newLTree.insert(key); + newRTree.insert(key); + } + + document.getElementById("lAvlTreeBtn").checked = true; + document.getElementById("rWavlTreeBtn").checked = true; + + setTrees(newLTree, newRTree, "Prepare tree"); + + document.getElementById("deleteInput").value = -31; +} +// #endregion prepared scenarios + +const tooltipTriggerList = document.querySelectorAll( + '[data-bs-toggle="tooltip"]' +); +const tooltipList = [...tooltipTriggerList].map( + (tooltipTriggerEl) => new bootstrap.Tooltip(tooltipTriggerEl) +); + async function render() { await Promise.all([ new Promise(() => lRecorder.render()),