Skip to content

Commit cb66e17

Browse files
Play/pause funksjonalitet i FreeMode - enable backward/forward når pauset
1 parent a0ac294 commit cb66e17

File tree

6 files changed

+64
-8
lines changed

6 files changed

+64
-8
lines changed

Heap/js/EventManager.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/**
22
* Created by knutandersstokke on 16.10.2016.
3-
*
3+
* Modified by Øyvind Skeie Liland
44
*/
55
/** Manager for events stored in queue. Manager is also responsible for executing events automatically */
66
var EventManager = /** @class */ (function () {
@@ -11,6 +11,7 @@ var EventManager = /** @class */ (function () {
1111
}
1212
// Executing the next event in the queue, adding it to 'previous'
1313
EventManager.prototype.next = function () {
14+
viewer.playButtonState();
1415
if (this.nextEvents.length == 0) {
1516
return;
1617
}
@@ -23,13 +24,10 @@ var EventManager = /** @class */ (function () {
2324
};
2425
// Executing the previous event
2526
EventManager.prototype.previous = function () {
26-
this.pause();
2727
if (this.previousEvents.length == 0)
2828
return;
2929
var event = this.previousEvents.pop();
3030
//this.delayTime = 0; //TODO: Should there be a delay when stepping backwards?
31-
console.log(event);
32-
console.log(this.previousEvents);
3331
event.previous();
3432
this.nextEvents.unshift(event);
3533
};

Heap/js/EventManager.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/**
22
* Created by knutandersstokke on 16.10.2016.
3-
*
3+
* Modified by Øyvind Skeie Liland
44
*/
55

66
declare var $: any;
@@ -14,6 +14,7 @@ class EventManager {
1414

1515
// Executing the next event in the queue, adding it to 'previous'
1616
next() {
17+
viewer.playButtonState();
1718
if (this.nextEvents.length == 0) {
1819
return;
1920
}
@@ -27,13 +28,10 @@ class EventManager {
2728

2829
// Executing the previous event
2930
previous() {
30-
this.pause();
3131
if (this.previousEvents.length == 0)
3232
return;
3333
var event: FrontendEvent = (<FrontendEvent>this.previousEvents.pop());
3434
//this.delayTime = 0; //TODO: Should there be a delay when stepping backwards?
35-
console.log(event);
36-
console.log(this.previousEvents);
3735

3836
event.previous();
3937
this.nextEvents.unshift(event);

Heap/js/View.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -297,26 +297,46 @@ var View = /** @class */ (function () {
297297
this.paused = true;
298298
this.playing = true;
299299
$("#play").text("Pause");
300+
lockBackForward(true);
300301
}
301302
else if (algo === "HeapSort" && !this.paused && !this.playing) {
302303
control.getAlgorithm().sort();
303304
this.paused = true;
304305
this.playing = true;
305306
$("#play").text("Pause");
307+
lockBackForward(true);
306308
}
307309
else {
308310
if (this.playing) {
309311
manager.pause();
310312
$("#play").text("Resume");
311313
this.playing = false;
314+
lockBackForward(false);
312315
}
313316
else {
314317
this.playing = true;
315318
manager.start();
316319
$("#play").text("Pause");
320+
lockBackForward(true);
317321
}
318322
}
319323
};
324+
// Used in eventmanager for freemode and predefined
325+
View.prototype.playButtonState = function () {
326+
var algo = control.getAlgorithm().getName();
327+
if (!(algo === "MaxHeap" || algo === "MaxHeapFree"))
328+
return;
329+
if (manager.nextEvents.length > 0) {
330+
this.playing = true;
331+
lockPlay(false);
332+
lockBackForward(true);
333+
$("#play").text("Pause");
334+
}
335+
else {
336+
lockPlay(true);
337+
lockBackForward(false);
338+
}
339+
};
320340
View.prototype.insertNewElemThis = function (child, value, parent) {
321341
var forward = function (index, value, parent) {
322342
return function () {

Heap/js/View.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -352,24 +352,44 @@ class View implements IView {
352352
this.paused = true;
353353
this.playing = true;
354354
$("#play").text("Pause");
355+
lockBackForward(true);
355356
} else if (algo === "HeapSort" && !this.paused && !this.playing) {
356357
(<HeapSort>control.getAlgorithm()).sort();
357358
this.paused = true;
358359
this.playing = true;
359360
$("#play").text("Pause");
361+
lockBackForward(true);
360362
} else {
361363
if (this.playing) {
362364
manager.pause();
363365
$("#play").text("Resume");
364366
this.playing = false;
367+
lockBackForward(false);
365368
} else {
366369
this.playing = true;
367370
manager.start();
368371
$("#play").text("Pause");
372+
lockBackForward(true);
369373
}
370374
}
371375
}
372376

377+
// Used in eventmanager for freemode and predefined
378+
playButtonState() {
379+
let algo = control.getAlgorithm().getName();
380+
if (!(algo === "MaxHeap" || algo === "MaxHeapFree"))
381+
return;
382+
383+
if (manager.nextEvents.length > 0) {
384+
this.playing = true;
385+
lockPlay(false);
386+
lockBackForward(true);
387+
$("#play").text("Pause");
388+
} else {
389+
lockPlay(true);
390+
lockBackForward(false);
391+
}
392+
}
373393

374394
insertNewElemThis(child: number, value: number, parent: number) {
375395
let forward = function (index, value, parent) {

Heap/js/methods.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -336,6 +336,16 @@ function lockPlay(lock) {
336336
$("#play").removeAttr("disabled");
337337
}
338338
}
339+
function lockBackForward(lock) {
340+
if (lock) {
341+
$("#backward").attr({ "disabled": "true" });
342+
$("#forward").attr({ "disabled": "true" });
343+
}
344+
else {
345+
$("#backward").removeAttr("disabled");
346+
$("#forward").removeAttr("disabled");
347+
}
348+
}
339349
function stepBack() {
340350
if (firstSelected != -1) {
341351
selectIndex(firstSelected, false);

Heap/js/methods.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -392,6 +392,16 @@ function lockPlay(lock: boolean) {
392392
}
393393
}
394394

395+
function lockBackForward(lock: boolean) {
396+
if (lock) {
397+
$("#backward").attr({ "disabled": "true" });
398+
$("#forward").attr({ "disabled": "true" });
399+
} else {
400+
$("#backward").removeAttr("disabled");
401+
$("#forward").removeAttr("disabled");
402+
}
403+
}
404+
395405
function stepBack() {
396406
if (firstSelected != -1) {
397407
selectIndex(firstSelected, false);

0 commit comments

Comments
 (0)