forked from keshavgbpecdelhi/Web-Development
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfcfs.js
102 lines (82 loc) · 2.78 KB
/
fcfs.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
// Javascript program to demonstrate
// FCFS Disk Scheduling algorithm
function FCFS() {
// taking inputs through DOM
let requestSequenceFcfs = document.getElementById("Sequence").value;
let headFcfs = document.getElementById("Head").value;
// slicing sequence through comma
requestSequenceFcfs = requestSequenceFcfs
.split(/ |,/)
.filter(function (character) {
return character !== "";
});
headFcfs = +headFcfs;
requestSequenceFcfs = requestSequenceFcfs.toString()
.split(/ |,/)
.filter(function (character) {
return character !== "";
}).map(function (a) { return +a; });
// total seek time
var totalSeekCountFcfs = Math.abs(requestSequenceFcfs[0] - headFcfs);
// initialize final sequence
requestFinalOrderFcfs = [headFcfs];
// main algorithm
// pushing from request sequence -> final sequence
for (i = 0; i < requestSequenceFcfs.length; ++i) {
requestFinalOrderFcfs.push(requestSequenceFcfs[i]);
}
// calculate seek-time
for (i = 1; i < requestSequenceFcfs.length; ++i) {
totalSeekCountFcfs += Math.abs(
requestSequenceFcfs[i] - requestSequenceFcfs[i - 1]
);
}
// printing output
let ele = document.getElementById('fcfs_totalSeekCount');
ele.innerText = totalSeekCountFcfs;
ele = document.getElementById('fcfs_finalOrder');
ele.innerText = '';
for (h = 0; h < requestFinalOrderFcfs.length - 1; ++h) {
ele.innerText += requestFinalOrderFcfs[h] + ", ";
}
ele.innerText += requestFinalOrderFcfs[h];
ele = document.getElementById('fcfs_averageSeekCount');
ele.innerText = (totalSeekCountFcfs / (requestFinalOrderFcfs.length - 1)).toFixed(2);
ele = document.getElementById('chartContainer');
ele.style.display = 'block';
//for graph using canvaJS
const ary = [];
requestFinalOrderFcfs.forEach(function (p) {
ary.push({ y: p });
});
const chart = new CanvasJS.Chart("chartContainer", {
animationEnabled: true,
animationDuration: 300 * (ary.length - 1),
theme: "light2",
zoomEnabled: true,
title: {
text: ""
},
axisY: {
title: "Disk Numbers",
titleFontColor: "rgb(0,0,0)"
},
axisX: {
title: "Request sequence",
titleFontColor: "rgb(0,0,0)",
minimum: 0,
interval: 1
},
data: [{
type: "line",
indexLabelFontSize: 16,
dataPoints: ary
}]
});
chart.render();
let modal = document.getElementById("myModal");
let span = document.getElementsByClassName("close")[0];
span.onclick = function () {
modal.style.display = "none";
}
}