BraydenMoore commited on
Commit
6e8090a
·
1 Parent(s): 1a89c67

Update site title

Browse files
Files changed (1) hide show
  1. Templates/index.html +4 -72
Templates/index.html CHANGED
@@ -33,7 +33,6 @@
33
  color: #f2f2f2;
34
  margin: 0px;
35
  }
36
-
37
  table {
38
  transition: 0.3s ease;
39
  margin-top: 20px;
@@ -110,7 +109,6 @@
110
  margin: 0;
111
  transition: 0.3s ease;
112
  }
113
-
114
  .over-under-wrapper {
115
  cursor: default;
116
  position: relative;
@@ -136,24 +134,19 @@
136
  .na {
137
  color: white;
138
  }
139
-
140
  .highlight {
141
  background: rgb(30, 30, 30) !important;
142
  border: 2px solid rgb(30, 30, 30) !important;
143
  border-radius: 10px !important;
144
  }
145
-
146
  .force-repaint { transform: translateZ(0); }
147
-
148
  .hidden {
149
  opacity: 0;
150
  }
151
-
152
  .section-container {
153
  display: flex;
154
  justify-content: space-between;
155
  }
156
-
157
  .section {
158
  padding: 30px;
159
  text-align: left;
@@ -162,18 +155,15 @@
162
  border-color: rgb(61, 61, 61);
163
  width: 48%;
164
  }
165
-
166
  .content {
167
  width: 100%;
168
  }
169
-
170
  .content img {
171
  width: 100%;
172
  height: auto;
173
  margin-top: 20px;
174
  margin-bottom: 20px;
175
  }
176
-
177
  .divider {
178
  border: 0;
179
  height: 1px;
@@ -182,19 +172,15 @@
182
  margin-bottom: 50px;
183
  width: 80%;
184
  }
185
-
186
  .label {
187
  color: rgb(114, 114, 114);
188
  }
189
-
190
  .info {
191
  color: white;
192
  }
193
-
194
  a {
195
  color: white;
196
  }
197
-
198
  .scroll-banner {
199
  position: fixed;
200
  top: 0;
@@ -209,7 +195,6 @@
209
  overflow: hidden;
210
  visibility: hidden;
211
  }
212
-
213
  .scroll-text {
214
  font-family: 'Helvetica';
215
  color: white;
@@ -217,18 +202,15 @@
217
  animation: scrolling 10s linear infinite;
218
  white-space: nowrap;
219
  }
220
-
221
  @keyframes scrolling {
222
  0% { transform: translateX(100vw); }
223
  100% { transform: translateX(-100%); }
224
  }
225
-
226
  .emoji {
227
  margin-left: 5px;
228
  color: rgb(255, 255, 255);
229
  transition: 0.3s ease;
230
  }
231
-
232
  .spinner {
233
  margin: auto;
234
  display: block;
@@ -251,12 +233,10 @@
251
  -webkit-text-fill-color: transparent;
252
  font-weight: bold;
253
  }
254
-
255
  #modelDetails {
256
  width: 80%;
257
  display: inline-block;
258
  }
259
-
260
  #weekSelector {
261
  transition: 0.3s ease;
262
  border-radius: 10px;
@@ -265,7 +245,9 @@
265
  background: rgb(30, 30, 30) !important;
266
  font-family: Arial, Helvetica, sans-serif;
267
  }
268
-
 
 
269
  @keyframes spin {
270
  0% {
271
  transform: rotate(0deg);
@@ -274,7 +256,6 @@
274
  transform: rotate(360deg);
275
  }
276
  }
277
-
278
  @media screen and (max-width: 768px) {
279
  .table-div {
280
  display: block;
@@ -299,7 +280,6 @@
299
  width: 90%;
300
  }
301
  }
302
-
303
  </style>
304
 
305
  <div class="scroll-banner">
@@ -389,11 +369,9 @@
389
  for(let i = table.rows.length - 1; i > 0; i--) {
390
  table.deleteRow(i);
391
  }
392
-
393
  const columns = ['Date','Away Team', 'Home Team'];
394
  const lines_response = await fetch('/get_lines');
395
  const lines = await lines_response.json()
396
-
397
  pulled_games.forEach((game, index) => {
398
  const row = table.insertRow(-1);
399
 
@@ -422,15 +400,11 @@
422
  }
423
  });
424
  }
425
-
426
-
427
  function submitData() {
428
  const predictButton = document.getElementById('submitButton');
429
-
430
  const table = document.getElementById('gameTable');
431
  const rows = table.querySelectorAll('tr');
432
  const games = [];
433
-
434
  rows.forEach((row, index) => {
435
  if (index === 0) return;
436
 
@@ -442,10 +416,8 @@
442
  overUnderCell.innerHTML = '';
443
  winnerCell.appendChild(spinnerDiv);
444
  overUnderCell.appendChild(spinnerDiv.cloneNode(true));
445
-
446
  const cells = row.querySelectorAll('td');
447
  const game = {};
448
-
449
  game.Date = cells[0].textContent;
450
  game.AwayTeam = cells[1].querySelector('img').alt;
451
  game.HomeTeam = cells[2].querySelector('img').alt;
@@ -453,8 +425,6 @@
453
  game.rowIndex = index - 1;
454
  games.push(game);
455
  });
456
-
457
-
458
  fetch('/submit_games', {
459
  method: 'POST',
460
  headers: {
@@ -467,14 +437,11 @@
467
  if (data.moneylines && data.over_unders) {
468
  const table = document.getElementById('gameTable');
469
  const rows = table.querySelectorAll('tr');
470
-
471
  data.moneylines.forEach((moneyline, index) => {
472
  const row = rows[parseInt(moneyline.rowIndex) + 1];
473
-
474
  const winnerCell = row.cells[row.cells.length - 2];
475
  winnerCell.removeChild(winnerCell.querySelector('.spinner'));
476
  winnerCell.innerHTML = '';
477
-
478
  const wrapperDiv = document.createElement('div');
479
  wrapperDiv.className = 'winner-wrapper';
480
  if (moneyline.Probabilities[0] > 0.6){
@@ -483,17 +450,14 @@
483
  else {
484
  wrapperDiv.style.opacity = "0.5";
485
  }
486
-
487
  const winnerImg = document.createElement('img');
488
  winnerImg.src = `/Static/${moneyline.Winner}.webp`;
489
  winnerImg.alt = moneyline.Winner;
490
  winnerImg.width = 50;
491
  winnerImg.className = 'winner-image hidden';
492
  wrapperDiv.appendChild(winnerImg);
493
-
494
  const winnerEmojiDiv = document.createElement('div');
495
  winnerEmojiDiv.className = 'emoji';
496
-
497
  wrapperDiv.dataset.proba = (moneyline.Probabilities[0] * 100).toFixed(0);
498
  if (moneyline.Winner[0] === moneyline.Result) {
499
  winnerEmojiDiv.textContent = '✅';
@@ -504,17 +468,13 @@
504
  winnerEmojiDiv.textContent = `(${wrapperDiv.dataset.proba}%)`;
505
  }
506
  wrapperDiv.appendChild(winnerEmojiDiv);
507
-
508
  setTimeout(() => {
509
  winnerImg.classList.remove('hidden');
510
  }, 10);
511
-
512
  winnerCell.appendChild(wrapperDiv);
513
-
514
  const overUnderCell = row.cells[row.cells.length - 1];
515
  overUnderCell.removeChild(overUnderCell.querySelector('.spinner'));
516
  overUnderCell.innerHTML = '';
517
-
518
  const overUnderDiv = document.createElement('div');
519
  overUnderDiv.className = 'over-under-wrapper hidden';
520
  if (data.over_unders[index]['Probability'][0] > 0.6){
@@ -523,7 +483,6 @@
523
  else {
524
  overUnderDiv.style.opacity = "0.5";
525
  }
526
-
527
  const textDiv = document.createElement('div');
528
  textDiv.className = 'over-under-text';
529
  textDiv.textContent = data.over_unders[index]['Over/Under'];
@@ -534,12 +493,9 @@
534
  } else {
535
  overUnderDiv.className += ' na';
536
  }
537
-
538
  overUnderDiv.appendChild(textDiv);
539
-
540
  const overEmojiDiv = document.createElement('div');
541
  overEmojiDiv.className = 'emoji';
542
-
543
  overUnderDiv.dataset.proba = (data.over_unders[index]['Probability'][0] * 100).toFixed(0);
544
  if (data.over_unders[index]['Over/Under'][0] === data.over_unders[index]['Result']) {
545
  overEmojiDiv.textContent = '✅';
@@ -550,42 +506,32 @@
550
  overEmojiDiv.textContent = `(${overUnderDiv.dataset.proba}%)`;
551
  }
552
  overUnderDiv.appendChild(overEmojiDiv);
553
-
554
  setTimeout(() => {
555
  overUnderDiv.classList.remove('hidden');
556
  }, 10);
557
-
558
  overUnderCell.appendChild(overUnderDiv);
559
-
560
  showProbabilityOnHover(wrapperDiv);
561
  showProbabilityOnHover(overUnderDiv);
562
 
563
  });
564
  }
565
  });
566
-
567
  }
568
-
569
  //Hover listener
570
  function showProbabilityOnHover(div) {
571
  let previousValue;
572
  let divText = div.children[1];
573
  let eventProcessed = false;
574
-
575
  function handleEnter() {
576
  if (eventProcessed) return; // Skip if an event has already been processed
577
-
578
  eventProcessed = true;
579
-
580
  if (divText.textContent !== `(${div.dataset.proba}%)`) {
581
  divText.style.opacity = 0;
582
-
583
  setTimeout(() => {
584
  previousValue = divText.textContent;
585
  divText.textContent = `(${div.dataset.proba}%)`;
586
  divText.style.opacity = 1;
587
  }, 300);
588
-
589
  setTimeout(() => {
590
  divText.style.opacity = 0;
591
  setTimeout(() => {
@@ -596,19 +542,16 @@
596
  }, 1000);
597
  }
598
  }
599
-
600
  // For desktop
601
  div.addEventListener('mouseenter', handleEnter);
602
  // For mobile
603
  div.addEventListener('touchstart', handleEnter);
604
  }
605
-
606
  // Populate dropdown
607
  let selectedWeek;
608
  async function populateDropdown() {
609
  const weekSelector = document.getElementById('weekSelector');
610
  weekSelector.innerHTML = "";
611
-
612
  const response = await fetch('/get_weeks');
613
  const data = await response.json();
614
 
@@ -617,7 +560,6 @@
617
  option.value = week;
618
  option.text = `Week ${week}`;
619
  weekSelector.appendChild(option);
620
-
621
  if (index === 0) {
622
  selectedWeek = week;
623
  }
@@ -630,8 +572,6 @@
630
  selectedWeek = event.target.value;
631
  getNew();
632
  });
633
-
634
-
635
  // Initial load
636
  function loadThings() {
637
  populateDropdown()
@@ -639,12 +579,10 @@
639
  .then(() => submitData())
640
  .catch(error => console.error(error));
641
  }
642
-
643
  // Get new
644
  async function getNew() {
645
  const table = document.getElementById('gameTable');
646
  table.style.opacity = "0.5";
647
-
648
  try {
649
  await fetchGames(selectedWeek);
650
  await submitData();
@@ -653,21 +591,15 @@
653
  console.error(error);
654
  }
655
  }
656
-
657
-
658
  // Submit on click, enter, and pageload
659
  loadThings();
660
-
661
  document.getElementById('submitButton').addEventListener('click', submitData);
662
-
663
  document.addEventListener('keydown', function(event) {
664
  if (event.keyCode === 13) {
665
  submitData();
666
  }
667
  });
668
-
669
-
670
  </script>
671
 
672
  </body>
673
- </html>
 
33
  color: #f2f2f2;
34
  margin: 0px;
35
  }
 
36
  table {
37
  transition: 0.3s ease;
38
  margin-top: 20px;
 
109
  margin: 0;
110
  transition: 0.3s ease;
111
  }
 
112
  .over-under-wrapper {
113
  cursor: default;
114
  position: relative;
 
134
  .na {
135
  color: white;
136
  }
 
137
  .highlight {
138
  background: rgb(30, 30, 30) !important;
139
  border: 2px solid rgb(30, 30, 30) !important;
140
  border-radius: 10px !important;
141
  }
 
142
  .force-repaint { transform: translateZ(0); }
 
143
  .hidden {
144
  opacity: 0;
145
  }
 
146
  .section-container {
147
  display: flex;
148
  justify-content: space-between;
149
  }
 
150
  .section {
151
  padding: 30px;
152
  text-align: left;
 
155
  border-color: rgb(61, 61, 61);
156
  width: 48%;
157
  }
 
158
  .content {
159
  width: 100%;
160
  }
 
161
  .content img {
162
  width: 100%;
163
  height: auto;
164
  margin-top: 20px;
165
  margin-bottom: 20px;
166
  }
 
167
  .divider {
168
  border: 0;
169
  height: 1px;
 
172
  margin-bottom: 50px;
173
  width: 80%;
174
  }
 
175
  .label {
176
  color: rgb(114, 114, 114);
177
  }
 
178
  .info {
179
  color: white;
180
  }
 
181
  a {
182
  color: white;
183
  }
 
184
  .scroll-banner {
185
  position: fixed;
186
  top: 0;
 
195
  overflow: hidden;
196
  visibility: hidden;
197
  }
 
198
  .scroll-text {
199
  font-family: 'Helvetica';
200
  color: white;
 
202
  animation: scrolling 10s linear infinite;
203
  white-space: nowrap;
204
  }
 
205
  @keyframes scrolling {
206
  0% { transform: translateX(100vw); }
207
  100% { transform: translateX(-100%); }
208
  }
 
209
  .emoji {
210
  margin-left: 5px;
211
  color: rgb(255, 255, 255);
212
  transition: 0.3s ease;
213
  }
 
214
  .spinner {
215
  margin: auto;
216
  display: block;
 
233
  -webkit-text-fill-color: transparent;
234
  font-weight: bold;
235
  }
 
236
  #modelDetails {
237
  width: 80%;
238
  display: inline-block;
239
  }
 
240
  #weekSelector {
241
  transition: 0.3s ease;
242
  border-radius: 10px;
 
245
  background: rgb(30, 30, 30) !important;
246
  font-family: Arial, Helvetica, sans-serif;
247
  }
248
+ #weekSelector:hover {
249
+ opacity: 0.5;
250
+ }
251
  @keyframes spin {
252
  0% {
253
  transform: rotate(0deg);
 
256
  transform: rotate(360deg);
257
  }
258
  }
 
259
  @media screen and (max-width: 768px) {
260
  .table-div {
261
  display: block;
 
280
  width: 90%;
281
  }
282
  }
 
283
  </style>
284
 
285
  <div class="scroll-banner">
 
369
  for(let i = table.rows.length - 1; i > 0; i--) {
370
  table.deleteRow(i);
371
  }
 
372
  const columns = ['Date','Away Team', 'Home Team'];
373
  const lines_response = await fetch('/get_lines');
374
  const lines = await lines_response.json()
 
375
  pulled_games.forEach((game, index) => {
376
  const row = table.insertRow(-1);
377
 
 
400
  }
401
  });
402
  }
 
 
403
  function submitData() {
404
  const predictButton = document.getElementById('submitButton');
 
405
  const table = document.getElementById('gameTable');
406
  const rows = table.querySelectorAll('tr');
407
  const games = [];
 
408
  rows.forEach((row, index) => {
409
  if (index === 0) return;
410
 
 
416
  overUnderCell.innerHTML = '';
417
  winnerCell.appendChild(spinnerDiv);
418
  overUnderCell.appendChild(spinnerDiv.cloneNode(true));
 
419
  const cells = row.querySelectorAll('td');
420
  const game = {};
 
421
  game.Date = cells[0].textContent;
422
  game.AwayTeam = cells[1].querySelector('img').alt;
423
  game.HomeTeam = cells[2].querySelector('img').alt;
 
425
  game.rowIndex = index - 1;
426
  games.push(game);
427
  });
 
 
428
  fetch('/submit_games', {
429
  method: 'POST',
430
  headers: {
 
437
  if (data.moneylines && data.over_unders) {
438
  const table = document.getElementById('gameTable');
439
  const rows = table.querySelectorAll('tr');
 
440
  data.moneylines.forEach((moneyline, index) => {
441
  const row = rows[parseInt(moneyline.rowIndex) + 1];
 
442
  const winnerCell = row.cells[row.cells.length - 2];
443
  winnerCell.removeChild(winnerCell.querySelector('.spinner'));
444
  winnerCell.innerHTML = '';
 
445
  const wrapperDiv = document.createElement('div');
446
  wrapperDiv.className = 'winner-wrapper';
447
  if (moneyline.Probabilities[0] > 0.6){
 
450
  else {
451
  wrapperDiv.style.opacity = "0.5";
452
  }
 
453
  const winnerImg = document.createElement('img');
454
  winnerImg.src = `/Static/${moneyline.Winner}.webp`;
455
  winnerImg.alt = moneyline.Winner;
456
  winnerImg.width = 50;
457
  winnerImg.className = 'winner-image hidden';
458
  wrapperDiv.appendChild(winnerImg);
 
459
  const winnerEmojiDiv = document.createElement('div');
460
  winnerEmojiDiv.className = 'emoji';
 
461
  wrapperDiv.dataset.proba = (moneyline.Probabilities[0] * 100).toFixed(0);
462
  if (moneyline.Winner[0] === moneyline.Result) {
463
  winnerEmojiDiv.textContent = '✅';
 
468
  winnerEmojiDiv.textContent = `(${wrapperDiv.dataset.proba}%)`;
469
  }
470
  wrapperDiv.appendChild(winnerEmojiDiv);
 
471
  setTimeout(() => {
472
  winnerImg.classList.remove('hidden');
473
  }, 10);
 
474
  winnerCell.appendChild(wrapperDiv);
 
475
  const overUnderCell = row.cells[row.cells.length - 1];
476
  overUnderCell.removeChild(overUnderCell.querySelector('.spinner'));
477
  overUnderCell.innerHTML = '';
 
478
  const overUnderDiv = document.createElement('div');
479
  overUnderDiv.className = 'over-under-wrapper hidden';
480
  if (data.over_unders[index]['Probability'][0] > 0.6){
 
483
  else {
484
  overUnderDiv.style.opacity = "0.5";
485
  }
 
486
  const textDiv = document.createElement('div');
487
  textDiv.className = 'over-under-text';
488
  textDiv.textContent = data.over_unders[index]['Over/Under'];
 
493
  } else {
494
  overUnderDiv.className += ' na';
495
  }
 
496
  overUnderDiv.appendChild(textDiv);
 
497
  const overEmojiDiv = document.createElement('div');
498
  overEmojiDiv.className = 'emoji';
 
499
  overUnderDiv.dataset.proba = (data.over_unders[index]['Probability'][0] * 100).toFixed(0);
500
  if (data.over_unders[index]['Over/Under'][0] === data.over_unders[index]['Result']) {
501
  overEmojiDiv.textContent = '✅';
 
506
  overEmojiDiv.textContent = `(${overUnderDiv.dataset.proba}%)`;
507
  }
508
  overUnderDiv.appendChild(overEmojiDiv);
 
509
  setTimeout(() => {
510
  overUnderDiv.classList.remove('hidden');
511
  }, 10);
 
512
  overUnderCell.appendChild(overUnderDiv);
 
513
  showProbabilityOnHover(wrapperDiv);
514
  showProbabilityOnHover(overUnderDiv);
515
 
516
  });
517
  }
518
  });
 
519
  }
 
520
  //Hover listener
521
  function showProbabilityOnHover(div) {
522
  let previousValue;
523
  let divText = div.children[1];
524
  let eventProcessed = false;
 
525
  function handleEnter() {
526
  if (eventProcessed) return; // Skip if an event has already been processed
 
527
  eventProcessed = true;
 
528
  if (divText.textContent !== `(${div.dataset.proba}%)`) {
529
  divText.style.opacity = 0;
 
530
  setTimeout(() => {
531
  previousValue = divText.textContent;
532
  divText.textContent = `(${div.dataset.proba}%)`;
533
  divText.style.opacity = 1;
534
  }, 300);
 
535
  setTimeout(() => {
536
  divText.style.opacity = 0;
537
  setTimeout(() => {
 
542
  }, 1000);
543
  }
544
  }
 
545
  // For desktop
546
  div.addEventListener('mouseenter', handleEnter);
547
  // For mobile
548
  div.addEventListener('touchstart', handleEnter);
549
  }
 
550
  // Populate dropdown
551
  let selectedWeek;
552
  async function populateDropdown() {
553
  const weekSelector = document.getElementById('weekSelector');
554
  weekSelector.innerHTML = "";
 
555
  const response = await fetch('/get_weeks');
556
  const data = await response.json();
557
 
 
560
  option.value = week;
561
  option.text = `Week ${week}`;
562
  weekSelector.appendChild(option);
 
563
  if (index === 0) {
564
  selectedWeek = week;
565
  }
 
572
  selectedWeek = event.target.value;
573
  getNew();
574
  });
 
 
575
  // Initial load
576
  function loadThings() {
577
  populateDropdown()
 
579
  .then(() => submitData())
580
  .catch(error => console.error(error));
581
  }
 
582
  // Get new
583
  async function getNew() {
584
  const table = document.getElementById('gameTable');
585
  table.style.opacity = "0.5";
 
586
  try {
587
  await fetchGames(selectedWeek);
588
  await submitData();
 
591
  console.error(error);
592
  }
593
  }
 
 
594
  // Submit on click, enter, and pageload
595
  loadThings();
 
596
  document.getElementById('submitButton').addEventListener('click', submitData);
 
597
  document.addEventListener('keydown', function(event) {
598
  if (event.keyCode === 13) {
599
  submitData();
600
  }
601
  });
 
 
602
  </script>
603
 
604
  </body>
605
+ </html>