-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
134 lines (96 loc) · 2.88 KB
/
index.html
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<html>
<head>
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css"/>
<link rel="stylesheet" href="bootstrap/css/bootstrap-theme.min.css"/>
<link rel="stylesheet" href="style.css"/>
<script src="jquery/jquery-3.1.1.min.js"></script>
<script src="bootstrap/js/bootstrap.min.js"></script>
<script src="moment/moment.min.js"></script>
</head>
<script src="karts.js"></script>
<script>
const xCount = 3
const yCount = 2
const startDelay = 10
const cellCount = xCount * yCount
var kartTable = []
let previousTimeStamp = 0
function parseKartTimes() {
var lines = karts.split(/\r?\n/)
let slotIndex = 0
lines.forEach((line) => {
const parts = line.split(',')
if (parts.length === 2) {
const kartNumber = parts[0]
const time = moment(parts[1], "HH:mm:ss.SSS")
kartTable.push({
number: kartNumber,
time: time.valueOf(),
slotIndex: slotIndex % cellCount
})
++slotIndex
}
})
const firstKartTime = kartTable[0].time
kartTable.forEach((kart) => {
kart.time -= firstKartTime
kart.time += startDelay * 1000
})
}
function updateScreen() {
for(let x=0;x<Math.min(cellCount,kartTable.length);++x) {
const kart = kartTable[x]
const cell = $(`[data-slot-index="${kart.slotIndex}"]`)
const kartNumber = cell.find('.kart-number')
const remainingTime = cell.find('.time-remaining')
kartNumber.text(kart.number)
if(kart.time < 0) {
cell.attr('class','go fkicol')
remainingTime.text('GO!')
} else {
cell.attr('class','waiting fkicol')
remainingTime.text((parseInt(kart.time / 100) / 10).toFixed(2))
}
}
}
function updateKartingData(currentTimeStamp) {
const deltaMs = currentTimeStamp - previousTimeStamp
kartTable.forEach((kart) => {
kart.time -= deltaMs
})
kartTable = kartTable.filter((kart) => {
return kart.time > - 2000
})
previousTimeStamp = currentTimeStamp
updateScreen()
window.requestAnimationFrame(updateKartingData);
}
function doIt() {
parseKartTimes()
var screen = $(".screen")
var index = 0
for(var y=0;y<yCount;++y) {
const row = $(`<div class="fkirow""></div>`)
for(var x=0;x<xCount;++x) {
const col = $(`<div class="waiting fkicol" data-slot-index="${index}"></div>`)
const kartNumber = $('<div class="kart-number">88</div>')
const timeRemaining = $('<div class="time-remaining">14.0</div>')
col.append(kartNumber)
col.append(timeRemaining)
++index
row.append(col)
}
screen.append(row)
}
previousTimeStamp = performance.now()
window.requestAnimationFrame(updateKartingData);
}
$(document).ready(function() {
setTimeout(doIt,2000)
})
</script>
<body>
<div class="screen">
</div>
</body>
</html>