Skip to content

Commit dae11f4

Browse files
committed
Startet å endre simplesort, men får ikke til pause for en eller annen grunn
1 parent 498aa6d commit dae11f4

18 files changed

+267
-210
lines changed

MergeSort/js/EventManager.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,6 @@ var eventManager = /** @class */ (function () {
7575
this.start();
7676
}
7777
};
78-
eventManager.prototype.getDelayTime = function () {
79-
return this.delayTime;
80-
};
8178
return eventManager;
8279
}());
8380
var FrontendEvent = /** @class */ (function () {

MergeSort/js/EventManager.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -89,11 +89,6 @@ class eventManager {
8989
this.start();
9090
}
9191
}
92-
93-
getDelayTime() {
94-
return this.delayTime;
95-
}
96-
9792
}
9893

9994
class FrontendEvent {

MergeSort/js/MergeSortAlgorithm.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ function startMergeSort() {
2525
control.setColorInArrayElements(copyArray, 3, true);
2626
}
2727

28-
function mergesort(array: number[]):any {
28+
function mergesort(array: number[]): any {
2929
if (array.length < 2) {
3030
//denne er ekkel
3131
control.deselectPivotElement(array[0]);

SimpleSort/index.html

Lines changed: 12 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -7,35 +7,21 @@
77
<link href="css/bootstrap.min.css" rel="stylesheet" media="screen">
88
<link href="css/style.css" rel="stylesheet">
99

10-
<!-- Insert this line above script imports -->
11-
<script>if (typeof module === 'object') {
12-
window.module = module;
13-
module = undefined;
14-
}</script>
15-
1610
<script src="js/jquery.min.js"></script>
1711
<script src="js/jquery-ui-1.12.0/jquery-ui.min.js"></script>
1812
<script src="js/bootstrap.min.js"></script>
19-
<script src="js/viewFunctions.js"></script>
20-
<script src="js/kValue.js"></script>
21-
<script src="js/view.js"></script>
22-
<script src="js/insertionSort.js"></script>
23-
<script src="js/controller.js"></script>
24-
<script src="js/eventManager.js"></script>
25-
26-
<!-- For debugging -->
27-
<!-- <script type='text/js' src='http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js'></script> -->
28-
29-
<!-- Insert this line after script imports -->
30-
<script>if (window.module) module = window.module;</script>
13+
<script src="js/ViewFunctions.js"></script>
14+
<script src="js/KValue.js"></script>
15+
<script src="js/View.js"></script>
16+
<script src="js/InsertionSort.js"></script>
17+
<script src="js/Controller.js"></script>
18+
<script src="js/EventManager.js"></script>
19+
<script src="js/fillWithListElements.js"></script>
3120
</head>
3221

3322

3423
<body>
35-
<!-- TODO: Pause-img -->
36-
<!-- TODO: Array Brackets -->
3724
<div class="container text-center">
38-
<img id="paused" class="pauseIcon hidden" src="assets/pause.png"/>
3925
<h1 id="header">Insertion Sort</h1>
4026
<div id="k-value">
4127
<svg id="k-svg" class="hidden"> <!-- TODO: change width when new array is inserted -->
@@ -52,18 +38,19 @@ <h1 id="header">Insertion Sort</h1>
5238
</div>
5339
<!-- TODO: Shell Sort K - value -->
5440
<!-- TODO: Show both values being compared -->
55-
<script src="js/fillWithListElements.js"></script>
41+
5642
<br><br><br><br>
5743
<div class="row">
5844
<button id="togglePause" class="btn btn-primary" onclick="viewer.pause()">Pause</button>
5945
<button id="backward" class="btn btn-primary" onclick="viewer.backward()">Backward</button>
6046
<button id="forward" class="btn btn-primary" onclick="viewer.forward()">Forward</button>
61-
<!-- TODO: speed buttons -->
47+
<button id="slow" class="btn btn-primary" onclick="viewer.slow()">Slow</button>
48+
<button id="medium" class="btn btn-primary" onclick="viewer.medium()">Medium</button>
49+
<button id="fast" class="btn btn-primary" onclick="viewer.fast()">Fast</button>
6250
</div>
6351
<br>
6452
<div class="row">
6553
<button id="start" class="btn btn-primary" onclick="startInsertionSort()">Insertion Sort</button>
66-
<!-- TODO: Play if paused -->
6754
<button id="shell" class="btn btn-primary" onclick="startShellSort()">Shell Sort</button>
6855
<button id="random" class="btn btn-primary" onclick="getArray('random')">Random</button>
6956
<button id="almost" class="btn btn-primary" onclick="getArray('almostSorted')">Almost Sorted</button>
@@ -72,7 +59,7 @@ <h1 id="header">Insertion Sort</h1>
7259
</div>
7360

7461
</div>
75-
62+
<script>startInsertionSort()</script>
7663
</body>
7764
</html>
7865

SimpleSort/js/controller.js renamed to SimpleSort/js/Controller.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
"use strict";
21
/**
32
* File created by Øyvind Skeie Liland 01.02.18.
43
*/
5-
///<reference path="view.ts"/>
4+
///<reference path="View.ts"/>
65
var iColor = 2;
76
var jColor = 0;
87
var controller = /** @class */ (function () {

SimpleSort/js/controller.ts renamed to SimpleSort/js/Controller.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/**
22
* File created by Øyvind Skeie Liland 01.02.18.
33
*/
4-
///<reference path="view.ts"/>
4+
///<reference path="View.ts"/>
55
let iColor = 2;
66
let jColor = 0;
77

SimpleSort/js/eventManager.js renamed to SimpleSort/js/EventManager.js

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,29 @@
1-
"use strict";
21
/**
32
* Created by knutandersstokke on 16.10.2016.
43
*
54
*/
65
/** Manager for events stored in queue. Manager is also responsible for executing events automatically */
76
var eventManager = /** @class */ (function () {
87
function eventManager() {
9-
this.delayTime = 500; // Original value
8+
this.delayTime = 1000; // Original value
109
this.nextEvents = [];
1110
this.previousEvents = [];
11+
this.paused = true;
1212
}
1313
// Executing the next event in the queue, adding it to 'previous'
1414
eventManager.prototype.next = function () {
1515
if (this.nextEvents.length == 0) {
1616
return;
1717
}
1818
var event = this.nextEvents.shift();
19-
console.log(this.nextEvents);
2019
event.next();
2120
this.previousEvents.push(event);
2221
if (event.duration == 0)
2322
this.next();
2423
};
2524
// Executing the previous event
2625
eventManager.prototype.previous = function () {
26+
this.pause();
2727
if (this.previousEvents.length == 0)
2828
return;
2929
var event = this.previousEvents.pop();
@@ -36,15 +36,18 @@ var eventManager = /** @class */ (function () {
3636
};
3737
eventManager.prototype.start = function () {
3838
var manager = this; // Anonymous functions cannot access this...
39+
this.paused = false;
3940
this.eventThread = setInterval(function () {
4041
manager.next();
4142
}, manager.delayTime);
4243
};
4344
eventManager.prototype.pause = function () {
45+
this.paused = true;
4446
clearInterval(this.eventThread);
4547
};
4648
eventManager.prototype.unpause = function () {
4749
var manager = this;
50+
this.paused = false;
4851
this.eventThread = setInterval(function () {
4952
manager.next();
5053
}, manager.delayTime);
@@ -54,6 +57,24 @@ var eventManager = /** @class */ (function () {
5457
this.nextEvents = [];
5558
this.previousEvents = [];
5659
};
60+
eventManager.prototype.slow = function () {
61+
this.delayTime = 1500;
62+
this.helpSetInterval();
63+
};
64+
eventManager.prototype.medium = function () {
65+
this.delayTime = 1000;
66+
this.helpSetInterval();
67+
};
68+
eventManager.prototype.fast = function () {
69+
this.delayTime = 500;
70+
this.helpSetInterval();
71+
};
72+
eventManager.prototype.helpSetInterval = function () {
73+
if (!this.paused) {
74+
this.pause();
75+
this.start();
76+
}
77+
};
5778
return eventManager;
5879
}());
5980
var FrontendEvent = /** @class */ (function () {

SimpleSort/js/eventManager.ts renamed to SimpleSort/js/EventManager.ts

Lines changed: 35 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,22 @@
33
*
44
*/
55

6-
declare var $;
6+
declare var $: any;
77

88
/** Manager for events stored in queue. Manager is also responsible for executing events automatically */
99
class eventManager {
10-
delayTime: number = 500; // Original value
10+
delayTime: number = 1000; // Original value
1111
nextEvents: FrontendEvent[] = [];
1212
previousEvents: FrontendEvent[] = [];
1313
eventThread: number;
14+
paused: boolean = true;
1415

1516
// Executing the next event in the queue, adding it to 'previous'
1617
next() {
1718
if (this.nextEvents.length == 0) {
1819
return;
1920
}
20-
var event: FrontendEvent = (<FrontendEvent> this.nextEvents.shift());
21-
console.log(this.nextEvents);
21+
let event: FrontendEvent = (<FrontendEvent> this.nextEvents.shift());
2222
event.next();
2323
this.previousEvents.push(event);
2424
if (event.duration == 0)
@@ -27,9 +27,10 @@ class eventManager {
2727

2828
// Executing the previous event
2929
previous() {
30+
this.pause();
3031
if (this.previousEvents.length == 0)
3132
return;
32-
var event: FrontendEvent = (<FrontendEvent> this.previousEvents.pop());
33+
let event: FrontendEvent = (<FrontendEvent> this.previousEvents.pop());
3334
//this.delayTime = 500; //this line set to 0 caused: when resuming all animations are played out. Intention Delay when stepping backwards.
3435
event.previous();
3536
this.nextEvents.unshift(event);
@@ -40,18 +41,21 @@ class eventManager {
4041
}
4142

4243
start() {
43-
var manager = this; // Anonymous functions cannot access this...
44+
let manager = this; // Anonymous functions cannot access this...
45+
this.paused = false;
4446
this.eventThread = setInterval(function () {
4547
manager.next();
4648
}, manager.delayTime);
4749
}
4850

4951
pause() {
52+
this.paused = true;
5053
clearInterval(this.eventThread);
5154
}
5255

5356
unpause() {
54-
var manager = this;
57+
let manager = this;
58+
this.paused = false;
5559
this.eventThread = setInterval(function () {
5660
manager.next();
5761
}, manager.delayTime);
@@ -62,6 +66,29 @@ class eventManager {
6266
this.nextEvents = [];
6367
this.previousEvents = [];
6468
}
69+
70+
slow() {
71+
72+
this.delayTime = 1500;
73+
this.helpSetInterval();
74+
}
75+
76+
medium() {
77+
this.delayTime = 1000;
78+
this.helpSetInterval();
79+
}
80+
81+
fast(){
82+
this.delayTime = 500;
83+
this.helpSetInterval();
84+
}
85+
86+
helpSetInterval() {
87+
if(!this.paused) {
88+
this.pause();
89+
this.start();
90+
}
91+
}
6592
}
6693

6794
class FrontendEvent {
@@ -76,7 +103,7 @@ class FrontendEvent {
76103
}
77104
}
78105

79-
var manager: eventManager = new eventManager();
106+
let manager: eventManager = new eventManager();
80107

81108
/*
82109
/** How to add FrontendEvents to manager

SimpleSort/js/insertionSort.js renamed to SimpleSort/js/InsertionSort.js

Lines changed: 8 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,27 @@
1-
"use strict";
21
/**
32
* File created by Øyvind Skeie Liland 01.02.18.
43
*/
5-
///<reference path="controller.ts"/>
6-
///<reference path="eventManager.ts"/>
4+
///<reference path="Controller.ts"/>
5+
///<reference path="EventManager.ts"/>
6+
///<reference path="fillWithListElements.ts"/>
77
//private IntArrayGenerator gen = new IntArrayGenerator();
88
var array = [];
99
var n = 10;
10-
var running = false;
1110
/**
1211
* Check if an algorithm is already running - if that is the case reset the view
1312
*/
1413
function checkIfAlreadyRunning() {
15-
if (running) {
16-
manager.clear();
17-
setArray(viewer.serializeArray(setRandomArray()));
18-
}
19-
else {
20-
running = true;
21-
}
14+
var arr = setRandomArray();
15+
setArray(viewer.serializeArray(arr));
16+
manager.clear();
17+
viewer.setPause();
2218
}
2319
/**
2420
* Start insertionSort
2521
*/
2622
function startInsertionSort() {
2723
checkIfAlreadyRunning();
24+
viewer.setPause();
2825
control.hideK();
2926
control.setHeadText("Insertion Sort");
3027
var j; // Elements sorted, starting on second position
@@ -84,29 +81,12 @@ function startShellSort() {
8481
control.hideK();
8582
manager.start();
8683
}
87-
function delay() {
88-
try {
89-
setTimeout(0);
90-
}
91-
catch (e) {
92-
e.printStackTrace();
93-
}
94-
}
95-
/*
96-
function setArray(arr: number[]) {
97-
array = arr;
98-
}
99-
*/
100-
function getThisArray() {
101-
return array;
102-
}
10384
/**
10485
* Fill the array with random integers
10586
*/
10687
function setRandomArray() {
10788
for (var i = 0; i < n; i++)
10889
array[i] = randomInt(0, 100);
109-
//controller.setArrayInFrontend(array);
11090
return array;
11191
}
11292
function setSortedArray() {

0 commit comments

Comments
 (0)