Skip to content

Commit 89ec29c

Browse files
bugfixes - to like tall
1 parent 60c048c commit 89ec29c

11 files changed

+74
-16
lines changed

Heap/js/Controller.js

+5-1
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,10 @@ var Controller = /** @class */ (function () {
1212
}
1313
Controller.prototype.initController = function (algo) {
1414
this.algorithm = algo;
15+
this.algoName = this.algorithm.getName();
1516
this.speed = 50;
1617
viewer.changeToCurrentAlgorithm();
17-
if (algo.getName() == "FreeMode") {
18+
if (algo.getName() == "FreeMode" || algo.getName() == "MaxHeapFree") {
1819
this.algorithm.clearArrayValues();
1920
this.algorithm.maxHeapFreeInit();
2021
manager.start();
@@ -78,6 +79,9 @@ var Controller = /** @class */ (function () {
7879
Controller.prototype.setSortValAndDeselect = function (sortIndex, val) {
7980
viewer.setSortValAndDeselect(sortIndex, val);
8081
};
82+
Controller.prototype.getAlgoName = function () {
83+
return this.algoName;
84+
};
8185
return Controller;
8286
}());
8387
var control = new Controller();

Heap/js/Controller.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,14 @@
1111
class Controller {
1212
private algorithm: IAlgorithm;
1313
private speed: number;
14+
private algoName: string;
1415

1516
initController(algo: IAlgorithm) {
1617
this.algorithm = algo;
18+
this.algoName = this.algorithm.getName();
1719
this.speed = 50;
1820
viewer.changeToCurrentAlgorithm();
19-
if (algo.getName() == "FreeMode") {
21+
if (algo.getName() == "FreeMode" || algo.getName() == "MaxHeapFree") {
2022
(<MaxHeapFree>this.algorithm).clearArrayValues();
2123
(<MaxHeapFree>this.algorithm).maxHeapFreeInit();
2224
manager.start();
@@ -95,6 +97,10 @@ class Controller {
9597
setSortValAndDeselect(sortIndex: number, val: any) {
9698
viewer.setSortValAndDeselect(sortIndex, val);
9799
}
100+
101+
getAlgoName() {
102+
return this.algoName;
103+
}
98104
}
99105

100106
var control: Controller = new Controller();

Heap/js/EventManager.js

+6-1
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,10 @@ var EventManager = /** @class */ (function () {
1313
EventManager.prototype.next = function () {
1414
viewer.playButtonState();
1515
if (this.nextEvents.length == 0) {
16+
screenLock(false);
1617
return;
1718
}
19+
screenLock(true);
1820
var event = this.nextEvents.shift();
1921
event.next();
2022
this.previousEvents.push(event);
@@ -23,8 +25,11 @@ var EventManager = /** @class */ (function () {
2325
};
2426
// Executing the previous event
2527
EventManager.prototype.previous = function () {
26-
if (this.previousEvents.length == 0)
28+
if (this.previousEvents.length == 0) {
29+
screenLock(false);
2730
return;
31+
}
32+
screenLock(true);
2833
var event = this.previousEvents.pop();
2934
event.previous();
3035
this.nextEvents.unshift(event);

Heap/js/EventManager.ts

+6-1
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,10 @@ class EventManager {
1616
next() {
1717
viewer.playButtonState();
1818
if (this.nextEvents.length == 0) {
19+
screenLock(false);
1920
return;
2021
}
22+
screenLock(true);
2123
var event = (<FrontendEvent>this.nextEvents.shift());
2224
event.next();
2325
this.previousEvents.push(event);
@@ -27,8 +29,11 @@ class EventManager {
2729

2830
// Executing the previous event
2931
previous() {
30-
if (this.previousEvents.length == 0)
32+
if (this.previousEvents.length == 0) {
33+
screenLock(false);
3134
return;
35+
}
36+
screenLock(true);
3237
var event: FrontendEvent = (<FrontendEvent>this.previousEvents.pop());
3338
event.previous();
3439
this.nextEvents.unshift(event);

Heap/js/MaxHeap.js

+11-1
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,21 @@ var MaxHeap = /** @class */ (function () {
99
this.arraySize = size;
1010
this.currIndex = size;
1111
this.array = new Array;
12+
var _loop_1 = function (i) {
13+
var val = this_1.generateRandomNum();
14+
while (this_1.array.filter(function (x) { return x === val; }).length > 1)
15+
val = this_1.generateRandomNum();
16+
this_1.array[i] = val;
17+
};
18+
var this_1 = this;
1219
for (var i = 0; i < 10; i++) {
13-
this.array[i] = Math.floor((Math.random() * 10)) + 1;
20+
_loop_1(i);
1421
}
1522
this.backEndBuild();
1623
}
24+
MaxHeap.prototype.generateRandomNum = function () {
25+
return Math.floor((Math.random() * 10)) + 1;
26+
};
1727
MaxHeap.prototype.setIndex = function () {
1828
for (var i = 0; i < this.array.length; i++) {
1929
if (i >= this.currIndex)

Heap/js/MaxHeap.ts

+9-1
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,19 @@ class MaxHeap implements IAlgorithm {
1717
this.currIndex = size;
1818
this.array = new Array;
1919
for (let i = 0; i < 10; i++) {
20-
this.array[i] = Math.floor((Math.random() * 10)) + 1;
20+
let val = this.generateRandomNum();
21+
while (this.array.filter(function (x) { return x === val }).length > 1)
22+
val = this.generateRandomNum();
23+
24+
this.array[i] = val;
2125
}
2226
this.backEndBuild();
2327
}
2428

29+
generateRandomNum() {
30+
return Math.floor((Math.random() * 10)) + 1;
31+
}
32+
2533
setIndex() {
2634
for (let i = 0; i < this.array.length; i++) {
2735
if (i >= this.currIndex)

Heap/js/MaxHeapFree.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ var MaxHeapFree = /** @class */ (function (_super) {
4343
superNode.children = [];
4444
};
4545
MaxHeapFree.prototype.getName = function () {
46-
return "FreeMode";
46+
return "MaxHeapFree";
4747
};
4848
return MaxHeapFree;
4949
}(MaxHeap));

Heap/js/MaxHeapFree.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,6 @@ class MaxHeapFree extends MaxHeap {
3838
}
3939

4040
getName() {
41-
return "FreeMode";
41+
return "MaxHeapFree";
4242
}
4343
}

Heap/js/View.js

+13-3
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,14 @@ var View = /** @class */ (function () {
6060
manager.addEvent(new FrontendEvent(forward, backward, this.animSpeed));
6161
};
6262
View.prototype.stepForward = function () {
63+
if (control.getAlgoName() === "MaxHeapFree" || control.getAlgoName() === "MaxHeap")
64+
this.setPause(true);
6365
this.clickedPlay = false;
6466
manager.next();
6567
};
6668
View.prototype.stepBack = function () {
67-
this.setPause(true);
69+
if (control.getAlgoName() === "MaxHeapFree" || control.getAlgoName() === "MaxHeap")
70+
this.setPause(true);
6871
if (firstSelected != -1) {
6972
selectIndex(firstSelected, false);
7073
firstSelected = -1;
@@ -77,6 +80,7 @@ var View = /** @class */ (function () {
7780
this.started = false;
7881
this.playing = false;
7982
$("#play").text("Play");
83+
$("#arrow").addClass("hidden").animate({ left: ($("#arrayElem0").position().left + 9) + "px" }, 0);
8084
manager.pause();
8185
manager.nextEvents = new Array;
8286
manager.previousEvents = new Array;
@@ -131,6 +135,9 @@ var View = /** @class */ (function () {
131135
lockPlay(false);
132136
control.initController(new BuildHeap(10));
133137
screenLock(true);
138+
control.getAlgorithm().build();
139+
this.setPause(true);
140+
$("#play").text("Play");
134141
break;
135142
}
136143
case "HeapSort": {
@@ -139,6 +146,9 @@ var View = /** @class */ (function () {
139146
$("#sortArray").show();
140147
control.initController(new HeapSort(10));
141148
screenLock(true);
149+
control.getAlgorithm().sort();
150+
this.setPause(true);
151+
$("#play").text("Play");
142152
break;
143153
}
144154
default: {
@@ -299,7 +309,6 @@ var View = /** @class */ (function () {
299309
this.setPause(false);
300310
}
301311
else if (algo === "HeapSort" && !this.started && !this.playing) {
302-
control.getAlgorithm().sort();
303312
this.started = true;
304313
this.setPause(false);
305314
}
@@ -316,7 +325,8 @@ var View = /** @class */ (function () {
316325
if (bool) {
317326
this.playing = false;
318327
manager.pause();
319-
$("#play").text("Resume");
328+
if (!(control.getAlgoName() === "MaxHeapFree" || control.getAlgoName() === "MaxHeap"))
329+
$("#play").text("Resume");
320330
lockBackForward(false);
321331
}
322332
else {

Heap/js/View.ts

+15-4
Original file line numberDiff line numberDiff line change
@@ -73,12 +73,16 @@ class View {
7373
}
7474

7575
stepForward() {
76+
if (control.getAlgoName() === "MaxHeapFree" || control.getAlgoName() === "MaxHeap")
77+
this.setPause(true);
78+
7679
this.clickedPlay = false;
7780
manager.next();
7881
}
7982

8083
stepBack() {
81-
this.setPause(true);
84+
if (control.getAlgoName() === "MaxHeapFree" || control.getAlgoName() === "MaxHeap")
85+
this.setPause(true);
8286
if (firstSelected != -1) {
8387
selectIndex(firstSelected, false);
8488
firstSelected = -1;
@@ -91,6 +95,7 @@ class View {
9195
this.started = false;
9296
this.playing = false;
9397
$("#play").text("Play");
98+
$("#arrow").addClass("hidden").animate({ left: ($("#arrayElem0").position().left + 9) + "px" }, 0);
9499
manager.pause();
95100
manager.nextEvents = new Array;
96101
manager.previousEvents = new Array;
@@ -110,7 +115,6 @@ class View {
110115
setValueAtIndex(i, i);
111116
}
112117

113-
114118
setSlow() {
115119
manager.delayTime = 1500;
116120
this.restartManager();
@@ -135,6 +139,7 @@ class View {
135139
$("#sortArray").hide();
136140
$("#sortArrayUL").children("li").remove();
137141
lockPlay(true);
142+
138143
switch (algo) {
139144
case "MaxHeap": {
140145
this.resetAll();
@@ -151,6 +156,9 @@ class View {
151156
lockPlay(false);
152157
control.initController(new BuildHeap(10));
153158
screenLock(true);
159+
control.getAlgorithm().build();
160+
this.setPause(true);
161+
$("#play").text("Play");
154162
break;
155163
}
156164
case "HeapSort": {
@@ -159,6 +167,9 @@ class View {
159167
$("#sortArray").show();
160168
control.initController(new HeapSort(10));
161169
screenLock(true);
170+
(<HeapSort>control.getAlgorithm()).sort();
171+
this.setPause(true);
172+
$("#play").text("Play");
162173
break;
163174
}
164175
default: {
@@ -352,7 +363,6 @@ class View {
352363
this.started = true;
353364
this.setPause(false);
354365
} else if (algo === "HeapSort" && !this.started && !this.playing) {
355-
(<HeapSort>control.getAlgorithm()).sort();
356366
this.started = true;
357367
this.setPause(false);
358368
} else {
@@ -368,7 +378,8 @@ class View {
368378
if (bool) {
369379
this.playing = false;
370380
manager.pause();
371-
$("#play").text("Resume");
381+
if (!(control.getAlgoName() === "MaxHeapFree" || control.getAlgoName() === "MaxHeap"))
382+
$("#play").text("Resume");
372383
lockBackForward(false);
373384
} else {
374385
this.playing = true;

Heap/js/methods.js

-1
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,6 @@ function removeNode(i) {
148148
$(this).remove();
149149
});
150150
allNodes[i].parent.removeChild(allNodes[i]);
151-
//allNodes[i].reset();
152151
allNodes.pop();
153152
}
154153
// Swap position of two graphNodes

0 commit comments

Comments
 (0)