Skip to content

Commit 89e5fc5

Browse files
committed
La til Viewer, Controller og Methods
1 parent d6179f4 commit 89e5fc5

File tree

12 files changed

+416
-233
lines changed

12 files changed

+416
-233
lines changed

Kruskal/js/KruskalAlgorithm.js

Lines changed: 33 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,43 @@
33
*/
44
///<reference path="graphUI.ts"/>
55
///<reference path="graphController.ts"/>
6-
///<reference path="eventManager.ts"/>
7-
// /<reference path="methods.ts"/>
6+
///<reference path="EventManager.ts"/>
7+
///<reference path="View.ts"/>
88
var visited;
99
var queue;
1010
var currentEdge = 0;
11+
/*
12+
let triplets: any[] = [];
13+
14+
triplets[0] = [1, "s", true];
15+
triplets[1] = ["t", 2, false];
16+
let [a, b, c] = triplets[0];
17+
18+
console.log(a + " " + b + " " + c);
19+
*/
1120
function startKruskal() {
1221
exampleGraph1();
13-
queue = [];
14-
console.log("Not sorted: " + weights);
15-
var sortedWeights = weights.sort();
16-
console.log("Sorted: " + sortedWeights);
17-
while (sortedWeights.length > 1) {
18-
var currentEdge = sortedWeights.pop();
19-
console.log(currentEdge);
22+
var edgeList = sortEdges();
23+
console.log(edgeList);
24+
var _a = edgeList[0], node1 = _a[0], node2 = _a[1], weight = _a[2];
25+
}
26+
function highlightMe() {
27+
//$("#edge" + getEdgeId(0,1)).css({"stroke": "rgb(16, 130, 219)", "stroke-width": "6"});
28+
highilightThisEdge(1, true);
29+
}
30+
function sortEdges() {
31+
var temp = 0;
32+
var sorted = triplets;
33+
for (var i = 0; i < sorted.length; i++) {
34+
for (var j = 0; j < sorted.length; j++) {
35+
var _a = sorted[i], a = _a[0], b = _a[1], c = _a[2];
36+
var _b = sorted[j], d = _b[0], e = _b[1], f = _b[2];
37+
if (c < f) {
38+
temp = sorted[i];
39+
sorted[i] = sorted[j];
40+
sorted[j] = temp;
41+
}
42+
}
2043
}
44+
return sorted;
2145
}

Kruskal/js/KruskalAlgorithm.ts

Lines changed: 30 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,34 +4,51 @@
44

55
///<reference path="graphUI.ts"/>
66
///<reference path="graphController.ts"/>
7-
///<reference path="eventManager.ts"/>
8-
// /<reference path="methods.ts"/>
7+
///<reference path="EventManager.ts"/>
8+
///<reference path="View.ts"/>
99

1010
var visited: boolean [];
1111
var queue: number [];
1212
var currentEdge: number = 0;
1313

14+
/*
1415
let triplets: any[] = [];
1516
1617
triplets[0] = [1, "s", true];
1718
triplets[1] = ["t", 2, false];
1819
let [a, b, c] = triplets[0];
1920
2021
console.log(a + " " + b + " " + c);
21-
22+
*/
2223

2324
function startKruskal() {
2425
exampleGraph1();
2526

26-
queue = [];
27-
console.log("Not sorted: " + weights);
28-
var sortedWeights = weights.sort();
29-
console.log("Sorted: " + sortedWeights);
30-
31-
while (sortedWeights.length > 1) {
32-
var currentEdge = sortedWeights.pop();
33-
console.log(currentEdge);
27+
let edgeList = sortEdges();
28+
console.log(edgeList);
29+
let [node1, node2, weight] = edgeList[0];
30+
31+
}
32+
33+
34+
function highlightMe() {
35+
//$("#edge" + getEdgeId(0,1)).css({"stroke": "rgb(16, 130, 219)", "stroke-width": "6"});
36+
highilightThisEdge(1, true);
37+
}
38+
39+
function sortEdges() {
40+
let temp = 0;
41+
let sorted = triplets;
42+
for (var i = 0; i < sorted.length; i++) {
43+
for (var j = 0; j < sorted.length; j++) {
44+
let [a, b, c] = sorted[i];
45+
let [d, e, f] = sorted[j];
46+
if (c < f) {
47+
temp = sorted[i];
48+
sorted[i] = sorted[j];
49+
sorted[j] = temp;
50+
}
51+
}
3452
}
35-
36-
53+
return sorted;
3754
}

Kruskal/js/Methods.js

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
"use strict";
2+
///<reference path="graphUI.ts"/>
3+
///<reference path="graphController.ts"/>
4+
///<reference path="View.ts"/>
5+
var randomWeight = 0;
6+
var nodes = 0;
7+
var MAX_NODES = 8;
8+
var edges = 0;
9+
function highilightThisEdge(index, highlight) {
10+
if (highlight == true)
11+
'æ';
12+
{
13+
$("#edge" + index).css({ "stroke": "rgb(16, 130, 219)", "stroke-width": "6" });
14+
} //add highlight
15+
{
16+
$("#edge" + index).css({ "stroke": "rgb(0, 0, 0)", "stroke-width": "4" });
17+
} //remove highlight
18+
}
19+
function removeEdge(index) {
20+
$("#edge" + index).remove();
21+
$("#edgeWeight" + index).remove();
22+
}
23+
function addThisNode(x, y) {
24+
if (nodes < MAX_NODES) {
25+
addNode(nodes, x, y);
26+
nodes++;
27+
}
28+
}
29+
function connectNodes(node1, node2) {
30+
randomWeight = Math.floor(Math.random() * 10) + 1;
31+
addWeightedEdge(edges++, node1, node2, randomWeight);
32+
}
33+
function resetGraph() {
34+
resetGraphUI();
35+
nodes = 0;
36+
edges = 0;
37+
manager = new EventManager();
38+
}
39+
function exampleGraph1() {
40+
resetGraph();
41+
// Add nodes
42+
addThisNode(150, 300);
43+
addThisNode(320, 450);
44+
addThisNode(320, 120);
45+
addThisNode(620, 450);
46+
addThisNode(620, 120);
47+
addThisNode(820, 300);
48+
// Add edges
49+
connectNodes(0, 1);
50+
connectNodes(1, 2);
51+
connectNodes(0, 2);
52+
connectNodes(2, 3);
53+
connectNodes(3, 4);
54+
connectNodes(3, 5);
55+
connectNodes(4, 5);
56+
console.log(weights);
57+
}

Kruskal/js/Methods.ts

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
///<reference path="graphUI.ts"/>
2+
///<reference path="graphController.ts"/>
3+
///<reference path="View.ts"/>
4+
5+
let randomWeight = 0;
6+
let nodes: number = 0;
7+
let MAX_NODES: number = 8;
8+
let edges: number = 0;
9+
10+
function highilightThisEdge(index: number, highlight: boolean) {
11+
if (highlight == true)'æ' {
12+
$("#edge" + index).css({"stroke": "rgb(16, 130, 219)", "stroke-width": "6"});
13+
} //add highlight
14+
else {
15+
$("#edge" + index).css({"stroke": "rgb(0, 0, 0)", "stroke-width": "4"});
16+
} //remove highlight
17+
}
18+
19+
function removeEdge(index: number) {
20+
$("#edge" + index).remove();
21+
$("#edgeWeight" + index).remove();
22+
}
23+
24+
25+
function addThisNode(x: number, y: number) {
26+
if (nodes < MAX_NODES) {
27+
addNode(nodes, x, y);
28+
nodes++;
29+
}
30+
}
31+
32+
33+
function connectNodes(node1: number, node2: number) {
34+
randomWeight = Math.floor(Math.random() * 10) + 1;
35+
addWeightedEdge(edges++, node1, node2, randomWeight);
36+
}
37+
38+
39+
function resetGraph() {
40+
resetGraphUI();
41+
nodes = 0;
42+
edges = 0;
43+
manager = new EventManager();
44+
}
45+
46+
function exampleGraph1() {
47+
resetGraph();
48+
// Add nodes
49+
addThisNode(150, 300);
50+
addThisNode(320, 450);
51+
addThisNode(320, 120);
52+
addThisNode(620, 450);
53+
addThisNode(620, 120);
54+
addThisNode(820, 300);
55+
56+
// Add edges
57+
connectNodes(0, 1);
58+
connectNodes(1, 2);
59+
connectNodes(0, 2);
60+
connectNodes(2, 3);
61+
connectNodes(3, 4);
62+
connectNodes(3, 5);
63+
connectNodes(4, 5);
64+
console.log(weights);
65+
}

Kruskal/js/View.js

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
///<reference path="KruskalAlgorithm.ts"/>
2+
///<reference path="graphController.ts"/>
3+
///<reference path="graphUI.ts"/>
4+
///<reference path="EventManager.ts"/>
5+
///<reference path="Methods.ts"/>
6+
var View = /** @class */ (function () {
7+
function View() {
8+
this.highlightEventDuration = 0;
9+
}
10+
View.prototype.setHighlightEdge = function (edgeId, highlight) {
11+
var forward = function (edgeId, highlight) {
12+
return function () {
13+
highilightThisEdge(edgeId, highlight);
14+
};
15+
}(edgeId, highlight);
16+
var backward = function (edgeId, highlight) {
17+
return function () {
18+
highilightThisEdge(edgeId, highlight);
19+
};
20+
}(edgeId, highlight);
21+
manager.addEvent(new FrontendEvent(forward, backward, this.highlightEventDuration));
22+
};
23+
View.prototype.removeEdge = function (edgeId) {
24+
var forward = function (edgeId) {
25+
return function () {
26+
removeEdge(edgeId);
27+
};
28+
}(edgeId);
29+
var backward = function (edgeId) {
30+
return function () {
31+
removeEdge(edgeId);
32+
};
33+
}(edgeId);
34+
manager.addEvent(new FrontendEvent(forward, backward, this.highlightEventDuration));
35+
};
36+
View.prototype.addNodeToGraph = function (x, y) {
37+
var forward = function (x, y) {
38+
return function () {
39+
addThisNode(x, y);
40+
};
41+
}(x, y);
42+
var backward = function (x, y) {
43+
return function () {
44+
//Skal være rmeove her
45+
addThisNode(x, y);
46+
};
47+
}(x, y);
48+
manager.addEvent(new FrontendEvent(forward, backward, this.highlightEventDuration));
49+
};
50+
View.prototype.connectTheseNodes = function (node1, node2) {
51+
var forward = function (node1, node2) {
52+
return function () {
53+
connectNodes(node1, node2);
54+
};
55+
}(node1, node2);
56+
var backward = function (node1, node2) {
57+
return function () {
58+
//Skal være remove her
59+
addThisNode(node1, node2);
60+
};
61+
}(node1, node2);
62+
manager.addEvent(new FrontendEvent(forward, backward, this.highlightEventDuration));
63+
};
64+
return View;
65+
}());
66+
var viewer = new View();

Kruskal/js/View.ts

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
///<reference path="KruskalAlgorithm.ts"/>
2+
///<reference path="graphController.ts"/>
3+
///<reference path="graphUI.ts"/>
4+
///<reference path="EventManager.ts"/>
5+
///<reference path="Methods.ts"/>
6+
7+
declare var $;
8+
9+
class View {
10+
11+
highlightEventDuration = 0;
12+
13+
14+
setHighlightEdge(edgeId: number, highlight: boolean) {
15+
var forward = function (edgeId, highlight) {
16+
return function () {
17+
highilightThisEdge(edgeId, highlight);
18+
};
19+
}(edgeId, highlight);
20+
21+
var backward = function (edgeId, highlight) {
22+
return function () {
23+
highilightThisEdge(edgeId, highlight);
24+
};
25+
}(edgeId, highlight);
26+
27+
manager.addEvent(new FrontendEvent(forward, backward, this.highlightEventDuration));
28+
}
29+
30+
31+
removeEdge(edgeId: number) {
32+
var forward = function (edgeId) {
33+
return function () {
34+
removeEdge(edgeId);
35+
}
36+
}(edgeId);
37+
38+
var backward = function (edgeId) {
39+
return function () {
40+
removeEdge(edgeId);
41+
}
42+
}(edgeId);
43+
44+
manager.addEvent(new FrontendEvent(forward, backward, this.highlightEventDuration));
45+
46+
}
47+
48+
addNodeToGraph(x: number, y: number) {
49+
var forward = function (x, y) {
50+
return function () {
51+
addThisNode(x, y);
52+
}
53+
}(x, y);
54+
55+
var backward = function (x, y) {
56+
return function () {
57+
//Skal være rmeove her
58+
addThisNode(x, y);
59+
}
60+
}(x, y);
61+
62+
manager.addEvent(new FrontendEvent(forward, backward, this.highlightEventDuration));
63+
}
64+
65+
66+
connectTheseNodes(node1: number, node2: number) {
67+
var forward = function (node1, node2) {
68+
return function () {
69+
connectNodes(node1, node2);
70+
}
71+
}(node1, node2);
72+
73+
var backward = function (node1, node2) {
74+
return function () {
75+
//Skal være remove her
76+
addThisNode(node1, node2);
77+
}
78+
}(node1, node2);
79+
80+
manager.addEvent(new FrontendEvent(forward, backward, this.highlightEventDuration));
81+
}
82+
}
83+
84+
var viewer: View = new View();

0 commit comments

Comments
 (0)