ntegre todas as opções para o jogo da quina
A Quin
This commit is contained in:
parent
e8f96a35c9
commit
fe4c6d246a
@ -22,23 +22,35 @@
|
||||
</div>
|
||||
|
||||
<!-- Dashboard de Resumo -->
|
||||
<div class="row g-3 mb-4">
|
||||
<div class="col-md-4">
|
||||
<div class="p-3 rounded-4 bg-slate-900 border border-slate-800 text-center">
|
||||
<small class="text-slate-500 d-block mb-1">QUADRAS DETECTADAS</small>
|
||||
<h3 id="stat-quadra" class="text-info fw-bold mb-0">0</h3>
|
||||
<div class="row g-2 mb-4">
|
||||
<div class="col">
|
||||
<div class="p-2 rounded-4 bg-slate-900 border border-slate-800 text-center">
|
||||
<small class="text-slate-500 d-block mb-1 x-small">DUQUES</small>
|
||||
<h4 id="stat-duque" class="text-secondary fw-bold mb-0">0</h4>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="p-3 rounded-4 bg-slate-900 border border-slate-800 text-center">
|
||||
<small class="text-slate-500 d-block mb-1">QUINAS DETECTADAS</small>
|
||||
<h3 id="stat-quina" class="text-warning fw-bold mb-0">0</h3>
|
||||
<div class="col">
|
||||
<div class="p-2 rounded-4 bg-slate-900 border border-slate-800 text-center">
|
||||
<small class="text-slate-500 d-block mb-1 x-small">TERNOS</small>
|
||||
<h4 id="stat-terno" class="text-primary fw-bold mb-0">0</h4>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="p-3 rounded-4 bg-slate-900 border border-slate-800 text-center">
|
||||
<small class="text-slate-500 d-block mb-1">SENAS DETECTADAS</small>
|
||||
<h3 id="stat-sena" class="text-danger fw-bold mb-0">0</h3>
|
||||
<div class="col">
|
||||
<div class="p-2 rounded-4 bg-slate-900 border border-slate-800 text-center">
|
||||
<small class="text-slate-500 d-block mb-1 x-small">QUADRAS</small>
|
||||
<h4 id="stat-quadra" class="text-info fw-bold mb-0">0</h4>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="p-2 rounded-4 bg-slate-900 border border-slate-800 text-center">
|
||||
<small class="text-slate-500 d-block mb-1 x-small">QUINAS</small>
|
||||
<h4 id="stat-quina" class="text-warning fw-bold mb-0">0</h4>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="p-2 rounded-4 bg-slate-900 border border-slate-800 text-center">
|
||||
<small class="text-slate-500 d-block mb-1 x-small">SENAS</small>
|
||||
<h4 id="stat-sena" class="text-danger fw-bold mb-0">0</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -60,6 +72,7 @@
|
||||
.border-slate-800 { border-color: #1e293b !important; }
|
||||
.text-slate-500 { color: #64748b !important; }
|
||||
.text-slate-700 { color: #334155 !important; }
|
||||
.x-small { font-size: 0.7rem; }
|
||||
|
||||
.hit-card {
|
||||
background: #0f172a;
|
||||
@ -104,24 +117,29 @@
|
||||
|
||||
container.innerHTML = '';
|
||||
|
||||
let qd = 0, qn = 0, sn = 0;
|
||||
let dq = 0, tr = 0, qd = 0, qn = 0, sn = 0;
|
||||
|
||||
// Inverte para mostrar os mais recentes primeiro
|
||||
hits.reverse().forEach(hit => {
|
||||
// Garantir ordenação (Menor para o Maior) na exibição do relatório
|
||||
hit.sequence.sort((a, b) => a - b);
|
||||
|
||||
if (hit.hits === 4) qd++;
|
||||
if (hit.hits === 2) dq++;
|
||||
else if (hit.hits === 3) tr++;
|
||||
else if (hit.hits === 4) qd++;
|
||||
else if (hit.hits === 5) qn++;
|
||||
else if (hit.hits >= 6) sn++;
|
||||
|
||||
const badgeClass = hit.hits === 4 ? "bg-info" : (hit.hits === 5 ? "bg-warning text-dark" : "bg-danger");
|
||||
let badgeClass = "bg-danger";
|
||||
if (hit.hits === 2) badgeClass = "bg-secondary";
|
||||
else if (hit.hits === 3) badgeClass = "bg-primary";
|
||||
else if (hit.hits === 4) badgeClass = "bg-info";
|
||||
else if (hit.hits === 5) badgeClass = "bg-warning text-dark";
|
||||
|
||||
const col = document.createElement('div');
|
||||
col.className = 'col-md-6 col-lg-4';
|
||||
|
||||
let ballsHtml = hit.sequence.map(n => {
|
||||
// Aqui não temos os elite_greens no localStorage, então mostramos simples
|
||||
return `<div class="num-ball-mini">${n.toString().padStart(2, '0')}</div>`;
|
||||
}).join('');
|
||||
|
||||
@ -139,6 +157,8 @@
|
||||
container.appendChild(col);
|
||||
});
|
||||
|
||||
if (document.getElementById('stat-duque')) document.getElementById('stat-duque').innerText = dq;
|
||||
if (document.getElementById('stat-terno')) document.getElementById('stat-terno').innerText = tr;
|
||||
document.getElementById('stat-quadra').innerText = qd;
|
||||
document.getElementById('stat-quina').innerText = qn;
|
||||
document.getElementById('stat-sena').innerText = sn;
|
||||
|
||||
@ -77,6 +77,18 @@
|
||||
<span id="count-total" class="fw-bold text-success">0</span>
|
||||
</div>
|
||||
</div>
|
||||
<div id="col-duque" class="col d-none">
|
||||
<div class="p-2 rounded bg-slate-900 border-start border-secondary border-2">
|
||||
<small class="d-block text-muted x-small">DUQUES</small>
|
||||
<span id="count-duque" class="fw-bold text-secondary">0</span>
|
||||
</div>
|
||||
</div>
|
||||
<div id="col-terno" class="col d-none">
|
||||
<div class="p-2 rounded bg-slate-900 border-start border-primary border-2">
|
||||
<small class="d-block text-muted x-small">TERNOS</small>
|
||||
<span id="count-terno" class="fw-bold text-primary">0</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="p-2 rounded bg-slate-900 border-start border-info border-2">
|
||||
<small class="d-block text-muted x-small">QUADRAS</small>
|
||||
@ -89,7 +101,7 @@
|
||||
<span id="count-quina" class="fw-bold text-warning">0</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div id="col-sena" class="col">
|
||||
<div class="p-2 rounded bg-slate-900 border-start border-danger border-2">
|
||||
<small class="d-block text-muted x-small">SENAS</small>
|
||||
<span id="count-sena" class="fw-bold text-danger">0</span>
|
||||
@ -220,6 +232,8 @@
|
||||
let lotteryData = null;
|
||||
let currentStartNum = 1;
|
||||
let totalGenerated = 0;
|
||||
let countDuque = 0;
|
||||
let countTerno = 0;
|
||||
let countQuadra = 0;
|
||||
let countQuina = 0;
|
||||
let countSena = 0;
|
||||
@ -270,6 +284,17 @@
|
||||
const resp = await fetch(`/api/lottery-info/${key}/`);
|
||||
lotteryData = await resp.json();
|
||||
|
||||
// Ajusta visibilidade das colunas baseado no jogo
|
||||
if (key.toLowerCase().includes('quina')) {
|
||||
document.getElementById("col-duque").classList.remove("d-none");
|
||||
document.getElementById("col-terno").classList.remove("d-none");
|
||||
document.getElementById("col-sena").classList.add("d-none");
|
||||
} else {
|
||||
document.getElementById("col-duque").classList.add("d-none");
|
||||
document.getElementById("col-terno").classList.add("d-none");
|
||||
document.getElementById("col-sena").classList.remove("d-none");
|
||||
}
|
||||
|
||||
setupFunnel(lotteryData.max_number);
|
||||
updateElitePanel();
|
||||
btnStart.disabled = false;
|
||||
@ -336,6 +361,8 @@
|
||||
document.getElementById("hits-panel").innerHTML = `<div class="text-center text-slate-700 py-3 small">Nenhum acerto de elite detectado ainda...</div>`;
|
||||
currentStartNum = 1;
|
||||
totalGenerated = 0;
|
||||
countDuque = 0;
|
||||
countTerno = 0;
|
||||
countQuadra = 0;
|
||||
countQuina = 0;
|
||||
countSena = 0;
|
||||
@ -346,9 +373,12 @@
|
||||
|
||||
function updateStats() {
|
||||
document.getElementById("count-total").innerText = totalGenerated.toLocaleString();
|
||||
if (document.getElementById("count-duque")) document.getElementById("count-duque").innerText = countDuque.toLocaleString();
|
||||
if (document.getElementById("count-terno")) document.getElementById("count-terno").innerText = countTerno.toLocaleString();
|
||||
document.getElementById("count-quadra").innerText = countQuadra.toLocaleString();
|
||||
document.getElementById("count-quina").innerText = countQuina.toLocaleString();
|
||||
document.getElementById("count-sena").innerText = countSena.toLocaleString();
|
||||
if (document.getElementById("count-sena")) document.getElementById("count-sena").innerText = countSena.toLocaleString();
|
||||
|
||||
if (detectedHits.length > 0) {
|
||||
document.getElementById("btn-download").classList.remove("d-none");
|
||||
document.getElementById("btn-open-browser").classList.remove("d-none");
|
||||
@ -403,17 +433,22 @@
|
||||
}
|
||||
|
||||
const hits = sequence.filter(n => lotteryData.elite_greens.includes(n)).length;
|
||||
if (hits >= 4) {
|
||||
let type = hits === 4 ? "QUADRA" : (hits === 5 ? "QUINA" : "SENA");
|
||||
if (hits === 4) countQuadra++;
|
||||
else if (hits === 5) countQuina++;
|
||||
else if (hits >= 6) countSena++;
|
||||
const isQuina = lotteryData.name.toLowerCase().includes('quina');
|
||||
const minHits = isQuina ? 2 : 4;
|
||||
|
||||
if (hits >= minHits) {
|
||||
let type = "";
|
||||
if (hits === 2) { type = "DUQUE"; countDuque++; }
|
||||
else if (hits === 3) { type = "TERNO"; countTerno++; }
|
||||
else if (hits === 4) { type = "QUADRA"; countQuadra++; }
|
||||
else if (hits === 5) { type = "QUINAS"; countQuina++; }
|
||||
else if (hits >= 6) { type = "SENA"; countSena++; }
|
||||
|
||||
const hitData = { type, sequence: [...sequence], hits };
|
||||
detectedHits.push(hitData);
|
||||
renderHit(hitData);
|
||||
|
||||
if (hits >= 5) {
|
||||
if (hits >= (isQuina ? 3 : 5)) {
|
||||
speak(`Alerta! ${type} detectada com alto índice de probabilidade.`);
|
||||
}
|
||||
}
|
||||
@ -436,7 +471,12 @@
|
||||
const panel = document.getElementById("hits-panel");
|
||||
if (detectedHits.length === 1) panel.innerHTML = "";
|
||||
|
||||
const badgeClass = hit.hits === 4 ? "bg-info" : (hit.hits === 5 ? "bg-warning text-dark" : "bg-danger");
|
||||
let badgeClass = "bg-danger";
|
||||
if (hit.hits === 2) badgeClass = "bg-secondary";
|
||||
else if (hit.hits === 3) badgeClass = "bg-primary";
|
||||
else if (hit.hits === 4) badgeClass = "bg-info";
|
||||
else if (hit.hits === 5) badgeClass = "bg-warning text-dark";
|
||||
|
||||
const div = document.createElement("div");
|
||||
div.className = "d-flex justify-content-between align-items-center p-2 rounded bg-slate-900 border border-slate-800 x-small";
|
||||
div.innerHTML = `
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user