Fix web player results overlay to show correct data

- Query ExtractionAssociationModel for winning outcomes based on match result
- Include under_over_result in winning outcomes list
- Match Qt player's getWinningOutcomes() logic in API endpoint
- Results overlay now correctly shows fighter names, result, winning outcomes, and under/over result
parent d8864a7b
......@@ -754,20 +754,13 @@
</div>
</div>
<!-- Main Result Display -->
<div class="main-result-display" id="mainResultDisplay">
<div class="main-result-text" id="mainResultText">
<!-- Combined Result Display -->
<div class="combined-result-display" id="combinedResultDisplay">
<div class="combined-result-text" id="combinedResultText">
<span id="mainResult">WIN1</span>
</div>
</div>
<!-- Under/Over Result Display -->
<div class="under-over-display" id="underOverDisplay">
<div class="under-over-text" id="underOverText">
<span id="underOverResult">UNDER</span>
</div>
</div>
<!-- Winning Bets Section -->
<div class="winning-bets-section">
<div class="bets-title">Winning bets:</div>
......@@ -1087,11 +1080,8 @@
// Update fighters display
updateFightersDisplay();
// Update main result display
updateMainResultDisplay();
// Update under/over result display
updateUnderOverResultDisplay();
// Update combined result display
updateCombinedResultDisplay();
// Update winning bets display
updateWinningBetsDisplay();
......@@ -1206,37 +1196,16 @@
}
}
// Update main result display
function updateMainResultDisplay() {
// Update combined result display
function updateCombinedResultDisplay() {
const mainResultSpan = document.getElementById('mainResult');
const mainResultDisplay = document.getElementById('mainResultDisplay');
const combinedDisplay = document.getElementById('combinedResultDisplay');
if (currentMainResult) {
mainResultSpan.textContent = currentMainResult;
mainResultDisplay.style.display = 'block';
} else {
mainResultDisplay.style.display = 'none';
}
}
// Update under/over result display
function updateUnderOverResultDisplay() {
const underOverResultSpan = document.getElementById('underOverResult');
const underOverDisplay = document.getElementById('underOverDisplay');
const underOverText = document.getElementById('underOverText');
if (currentUnderOverResult) {
underOverResultSpan.textContent = currentUnderOverResult;
underOverDisplay.style.display = 'block';
// Add 'over' class for different styling
if (currentUnderOverResult === 'OVER') {
underOverDisplay.classList.add('over');
} else {
underOverDisplay.classList.remove('over');
}
combinedDisplay.style.display = 'block';
} else {
underOverDisplay.style.display = 'none';
combinedDisplay.style.display = 'none';
}
}
......
......@@ -10758,8 +10758,31 @@ def get_overlay_data():
# Also add under_over_result if available
if match.under_over_result:
overlay_data['result_data']['under_over_result'] = match.under_over_result
# Add winning outcomes if available
if match.winning_outcomes:
# Get winning outcomes from ExtractionAssociationModel (like Qt player does)
winning_outcome_names = []
result = match.result or overlay_data['result_data'].get('result') or overlay_data['result_data'].get('outcome')
if result:
try:
from ..database.models import ExtractionAssociationModel
winning_outcomes_query = session.query(ExtractionAssociationModel.outcome_name).filter(
ExtractionAssociationModel.extraction_result == result
).all()
winning_outcome_names = [outcome.outcome_name for outcome in winning_outcomes_query]
logger.debug(f"Found {len(winning_outcome_names)} winning outcomes from associations for result {result}: {winning_outcome_names}")
except Exception as assoc_error:
logger.warning(f"Failed to query ExtractionAssociationModel: {assoc_error}")
# Include under_over_result if available
if match.under_over_result and match.under_over_result not in winning_outcome_names:
winning_outcome_names.append(match.under_over_result)
# Convert to the format expected by the template
if winning_outcome_names:
overlay_data['result_data']['winningOutcomes'] = [{'outcome': o} for o in winning_outcome_names]
elif match.winning_outcomes:
# Fallback to match.winning_outcomes if no associations found
import json
try:
winning_outcomes = json.loads(match.winning_outcomes) if isinstance(match.winning_outcomes, str) else match.winning_outcomes
......
......@@ -61,6 +61,8 @@ server {
proxy_no_cache 1;
proxy_cache_bypass 1;
add_header Cache-Control "no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0";
expires -1; # Also helps with older clients
}
# HLS stream
......@@ -81,6 +83,8 @@ server {
proxy_no_cache 1;
proxy_cache_bypass 1;
add_header Cache-Control "no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0";
expires -1; # Also helps with older clients
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment