Skip to content

Commit e911f7a

Browse files
Fikset store deler av backward/forward
1 parent cb66e17 commit e911f7a

File tree

13 files changed

+60
-566
lines changed

13 files changed

+60
-566
lines changed

Heap/js/Controller.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ var Controller = /** @class */ (function () {
3939
Controller.prototype.setSelectedIndex = function (index, select) {
4040
viewer.selectThisIndex(index, select);
4141
};
42-
Controller.prototype.setValueAtIndex = function (i, bValue) {
43-
viewer.setValueAtThisIndex(i, bValue);
42+
Controller.prototype.setValueAtIndex = function (i, bValue, oldVal) {
43+
viewer.setValueAtThisIndex(i, bValue, oldVal);
4444
};
4545
Controller.prototype.setValueAtSortIndex = function (i, bValue) {
4646
viewer.setValueAtThisSortIndex(i, bValue);

Heap/js/Controller.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
///<reference path="MaxHeapFree.ts"/>
1010

1111
class Controller {
12-
1312
private algorithm: IAlgorithm;
1413
private speed: number;
1514

@@ -46,8 +45,8 @@ class Controller {
4645
viewer.selectThisIndex(index, select);
4746
}
4847

49-
setValueAtIndex(i: number, bValue) {
50-
viewer.setValueAtThisIndex(i, bValue);
48+
setValueAtIndex(i: number, bValue : any, oldVal : any) {
49+
viewer.setValueAtThisIndex(i, bValue, oldVal);
5150
}
5251

5352
setValueAtSortIndex(i: number, bValue) {

Heap/js/HeapSort.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ var HeapSort = /** @class */ (function (_super) {
3030
HeapSort.prototype.remove = function () {
3131
// Remove root element, set last element to root and start frontendevents
3232
this.currIndex--;
33+
var oldVal = this.array[0];
3334
control.setSelectedIndex(0, true);
3435
control.highlightNode(0, "orange");
3536
control.highlightSortElem(this.sortIndex, "orange");
@@ -38,7 +39,7 @@ var HeapSort = /** @class */ (function (_super) {
3839
this.exch(0, this.currIndex);
3940
control.swapNode(this.currIndex, 0);
4041
control.removeElem(this.currIndex, false);
41-
control.setValueAtIndex(this.currIndex, " ");
42+
control.setValueAtIndex(this.currIndex, " ", oldVal);
4243
this.sink(0, this.currIndex - 1);
4344
control.highlightSortElem(this.sortIndex--, "green");
4445
control.saveState(this.array);

Heap/js/HeapSort.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ class HeapSort extends MaxHeap {
2424
remove(): void {
2525
// Remove root element, set last element to root and start frontendevents
2626
this.currIndex--
27+
let oldVal = this.array[0];
2728
control.setSelectedIndex(0, true);
2829
control.highlightNode(0, "orange");
2930
control.highlightSortElem(this.sortIndex, "orange");
@@ -32,7 +33,7 @@ class HeapSort extends MaxHeap {
3233
this.exch(0, this.currIndex);
3334
control.swapNode(this.currIndex, 0);
3435
control.removeElem(this.currIndex, false);
35-
control.setValueAtIndex(this.currIndex, " ");
36+
control.setValueAtIndex(this.currIndex, " ", oldVal);
3637
this.sink(0, this.currIndex - 1);
3738
control.highlightSortElem(this.sortIndex--, "green");
3839
control.saveState(this.array);

Heap/js/IView.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ interface IView {
1212

1313
setThisArrow(index: number): void;
1414

15-
setValueAtThisIndex(i: number, bValue: number): void;
15+
setValueAtThisIndex(i: number, bValue: any, oldVal:any): void;
1616

1717
connectThisNodes(child: number, parent: number): void;
1818

Heap/js/MaxHeap.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,9 +98,11 @@ var MaxHeap = /** @class */ (function () {
9898
control.saveState(this.array);
9999
var tmp = this.array[number];
100100
this.array[number] = this.array[number2];
101-
control.setValueAtIndex(number, this.array[number]);
101+
control.setValueAtIndex(number, this.array[number], tmp);
102102
this.array[number2] = tmp;
103-
control.setValueAtIndex(number2, this.array[number2]);
103+
control.setValueAtIndex(number2, this.array[number2], this.array[number]);
104+
//console.log("fst: " + this.array[number] + ", second: " + this.array[number2]);
105+
//control.swapArrayElems(number, this.array[number], number2, this.array[number2]);
104106
};
105107
MaxHeap.prototype.add = function (a) {
106108
control.saveState(this.array);
@@ -121,10 +123,11 @@ var MaxHeap = /** @class */ (function () {
121123
control.lockScreen(true);
122124
// Remove root element, set last element to root and start frontendevents
123125
this.currIndex--;
126+
var oldVal = this.array[0];
124127
this.exch(0, this.currIndex);
125128
control.swapNode(this.currIndex, 0);
126129
control.removeElem(this.currIndex, false);
127-
control.setValueAtIndex(this.currIndex, " ");
130+
control.setValueAtIndex(this.currIndex, " ", oldVal);
128131
this.sink(0, this.currIndex - 1);
129132
control.saveState(this.array);
130133
control.lockScreen(false);

Heap/js/MaxHeap.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,9 +119,12 @@ class MaxHeap implements IAlgorithm {
119119

120120
let tmp = this.array[number];
121121
this.array[number] = this.array[number2];
122-
control.setValueAtIndex(number, this.array[number]);
122+
control.setValueAtIndex(number, this.array[number], tmp);
123123
this.array[number2] = tmp;
124-
control.setValueAtIndex(number2, this.array[number2]);
124+
control.setValueAtIndex(number2, this.array[number2], this.array[number]);
125+
//console.log("fst: " + this.array[number] + ", second: " + this.array[number2]);
126+
127+
//control.swapArrayElems(number, this.array[number], number2, this.array[number2]);
125128
}
126129

127130
add(a: number): void {
@@ -145,10 +148,11 @@ class MaxHeap implements IAlgorithm {
145148
control.lockScreen(true);
146149
// Remove root element, set last element to root and start frontendevents
147150
this.currIndex--;
151+
let oldVal = this.array[0];
148152
this.exch(0, this.currIndex);
149153
control.swapNode(this.currIndex, 0);
150154
control.removeElem(this.currIndex, false);
151-
control.setValueAtIndex(this.currIndex, " ");
155+
control.setValueAtIndex(this.currIndex, " ", oldVal);
152156
this.sink(0, this.currIndex - 1);
153157
control.saveState(this.array);
154158
control.lockScreen(false);

Heap/js/View.js

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,7 @@ var View = /** @class */ (function () {
5151
}(index);
5252
manager.addEvent(new FrontendEvent(forward, forward, this.animSpeed));
5353
};
54-
View.prototype.setValueAtThisIndex = function (i, bValue) {
55-
var val = $("#arrayElem" + i).text();
54+
View.prototype.setValueAtThisIndex = function (i, bValue, oldVal) {
5655
var forwardSteps = function (i, bValue) {
5756
return function () {
5857
setValueAtIndex(i, bValue);
@@ -62,7 +61,7 @@ var View = /** @class */ (function () {
6261
return function () {
6362
setValueAtIndex(i, oldVal);
6463
};
65-
}(i, val);
64+
}(i, oldVal);
6665
manager.addEvent(new FrontendEvent(forwardSteps, backwardSteps, this.animSpeed));
6766
};
6867
View.prototype.setValueAtThisSortIndex = function (i, bValue) {
@@ -73,7 +72,7 @@ var View = /** @class */ (function () {
7372
}(i, bValue);
7473
var backwardSteps = function (i, bValue) {
7574
return function () {
76-
setValueAtSortIndex(i, i);
75+
setValueAtSortIndex(i, "");
7776
};
7877
}(i, bValue);
7978
manager.addEvent(new FrontendEvent(forwardSteps, backwardSteps, this.animSpeed));
@@ -110,7 +109,12 @@ var View = /** @class */ (function () {
110109
sortHighlightElem(index, color);
111110
};
112111
}(index, color);
113-
manager.addEvent(new FrontendEvent(forward, forward, this.animSpeed));
112+
var backward = function (index) {
113+
return function () {
114+
removeSortHighlight(index);
115+
};
116+
}(index);
117+
manager.addEvent(new FrontendEvent(forward, backward, this.animSpeed));
114118
};
115119
View.prototype.removeThisHighlight = function (index) {
116120
// Find the current color
@@ -283,11 +287,16 @@ var View = /** @class */ (function () {
283287
removeElem(index, removeArr);
284288
};
285289
}(i, removeArr);
286-
var backward = function (index, val) {
290+
var backward = function (index, value, parent) {
287291
return function () {
288-
insertNewElem(index, val);
292+
setValueAtIndex(index, value);
293+
insertNewNode(index, value);
294+
insertNewElemConnect(index, parent);
295+
// If first node -> Position with a nice animation
296+
if (control.getAlgorithm().getArrayLength() == 1)
297+
positioningNodes(1500);
289298
};
290-
}(i, val);
299+
}(i, val, Math.floor((i - 1) / 2));
291300
manager.addEvent(new FrontendEvent(forward, backward, manager.delayTime));
292301
};
293302
View.prototype.play = function () {
@@ -324,7 +333,7 @@ var View = /** @class */ (function () {
324333
// Used in eventmanager for freemode and predefined
325334
View.prototype.playButtonState = function () {
326335
var algo = control.getAlgorithm().getName();
327-
if (!(algo === "MaxHeap" || algo === "MaxHeapFree"))
336+
if (!(algo === "MaxHeap" || algo === "MaxHeapFree" || this.playing))
328337
return;
329338
if (manager.nextEvents.length > 0) {
330339
this.playing = true;

Heap/js/View.ts

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,7 @@ class View implements IView {
6363
manager.addEvent(new FrontendEvent(forward, forward, this.animSpeed));
6464
}
6565

66-
setValueAtThisIndex(i: number, bValue) {
67-
let val = $("#arrayElem" + i).text();
66+
setValueAtThisIndex(i: number, bValue: any, oldVal: any) {
6867
let forwardSteps = function (i, bValue) {
6968
return function () {
7069
setValueAtIndex(i, bValue);
@@ -75,7 +74,7 @@ class View implements IView {
7574
return function () {
7675
setValueAtIndex(i, oldVal);
7776
}
78-
}(i, val);
77+
}(i, oldVal);
7978

8079
manager.addEvent(new FrontendEvent(forwardSteps, backwardSteps, this.animSpeed));
8180
}
@@ -89,7 +88,7 @@ class View implements IView {
8988

9089
let backwardSteps = function (i, bValue) {
9190
return function () {
92-
setValueAtSortIndex(i, i);
91+
setValueAtSortIndex(i, "");
9392
}
9493
}(i, bValue);
9594

@@ -136,7 +135,13 @@ class View implements IView {
136135
}
137136
}(index, color);
138137

139-
manager.addEvent(new FrontendEvent(forward, forward, this.animSpeed));
138+
let backward = function (index: number) {
139+
return function () {
140+
removeSortHighlight(index);
141+
}
142+
}(index);
143+
144+
manager.addEvent(new FrontendEvent(forward, backward, this.animSpeed));
140145
}
141146

142147

@@ -335,11 +340,17 @@ class View implements IView {
335340
}
336341
}(i, removeArr);
337342

338-
let backward = function (index, val) {
343+
let backward = function (index, value, parent) {
339344
return function () {
340-
insertNewElem(index, val);
345+
setValueAtIndex(index, value);
346+
insertNewNode(index, value);
347+
insertNewElemConnect(index, parent);
348+
349+
// If first node -> Position with a nice animation
350+
if (control.getAlgorithm().getArrayLength() == 1)
351+
positioningNodes(1500);
341352
}
342-
}(i, val);
353+
}(i, val, Math.floor((i - 1) / 2));
343354

344355

345356
manager.addEvent(new FrontendEvent(forward, backward, manager.delayTime));
@@ -377,7 +388,7 @@ class View implements IView {
377388
// Used in eventmanager for freemode and predefined
378389
playButtonState() {
379390
let algo = control.getAlgorithm().getName();
380-
if (!(algo === "MaxHeap" || algo === "MaxHeapFree"))
391+
if (!(algo === "MaxHeap" || algo === "MaxHeapFree" || this.playing))
381392
return;
382393

383394
if (manager.nextEvents.length > 0) {

0 commit comments

Comments
 (0)