Spaces:
Sleeping
Sleeping
Fix confidence circle animation and reset logic v2.3
Browse files- dashboard/app.js +14 -3
- dashboard/index.html +2 -2
- dashboard/style.css +1 -1
- main.py +1 -1
dashboard/app.js
CHANGED
|
@@ -61,8 +61,17 @@ async function handleUpload(file) {
|
|
| 61 |
}
|
| 62 |
|
| 63 |
if (confidencePath) {
|
|
|
|
|
|
|
|
|
|
|
|
|
| 64 |
confidencePath.style.stroke = PROCESSING_COLOR;
|
| 65 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 66 |
}
|
| 67 |
|
| 68 |
specContainer.innerHTML = '<div class="image-placeholder">Analisando frequências...</div>';
|
|
@@ -129,8 +138,10 @@ function displayResults(data) {
|
|
| 129 |
if (pulseDot) pulseDot.style.background = '#10B981';
|
| 130 |
}
|
| 131 |
|
| 132 |
-
// Animação do círculo -
|
| 133 |
-
|
|
|
|
|
|
|
| 134 |
}
|
| 135 |
// Atualiza Espectrograma
|
| 136 |
// Atualiza Espectrograma e Heatmap (XAI)
|
|
|
|
| 61 |
}
|
| 62 |
|
| 63 |
if (confidencePath) {
|
| 64 |
+
// Desativa transição para reset instantâneo
|
| 65 |
+
confidencePath.style.transition = 'none';
|
| 66 |
+
confidencePath.style.strokeDasharray = '100';
|
| 67 |
+
confidencePath.style.strokeDashoffset = '100';
|
| 68 |
confidencePath.style.stroke = PROCESSING_COLOR;
|
| 69 |
+
|
| 70 |
+
// Força reflow para garantir que o reset ocorra antes da nova animação
|
| 71 |
+
confidencePath.getBoundingClientRect();
|
| 72 |
+
|
| 73 |
+
// Reativa a transição
|
| 74 |
+
confidencePath.style.transition = 'stroke-dashoffset 1.5s cubic-bezier(0.4, 0, 0.2, 1), stroke 0.5s ease';
|
| 75 |
}
|
| 76 |
|
| 77 |
specContainer.innerHTML = '<div class="image-placeholder">Analisando frequências...</div>';
|
|
|
|
| 138 |
if (pulseDot) pulseDot.style.background = '#10B981';
|
| 139 |
}
|
| 140 |
|
| 141 |
+
// Animação do círculo usando stroke-dashoffset para completar a linha corretamente
|
| 142 |
+
// Com r=15.9155, a circunferência é exatamente 100.
|
| 143 |
+
confidencePath.style.strokeDasharray = '100';
|
| 144 |
+
confidencePath.style.strokeDashoffset = 100 - fraudProb;
|
| 145 |
}
|
| 146 |
// Atualiza Espectrograma
|
| 147 |
// Atualiza Espectrograma e Heatmap (XAI)
|
dashboard/index.html
CHANGED
|
@@ -104,7 +104,7 @@
|
|
| 104 |
<div class="confidence-circle">
|
| 105 |
<svg viewBox="0 0 36 36" class="circular-chart">
|
| 106 |
<circle class="circle-bg" cx="18" cy="18" r="15.9155" />
|
| 107 |
-
<circle id="confidence-path" class="progress" cx="18" cy="18" r="15.9155" stroke-dasharray="
|
| 108 |
</svg>
|
| 109 |
<div class="confidence-text">
|
| 110 |
<span id="confidence-value">0%</span>
|
|
@@ -273,7 +273,7 @@
|
|
| 273 |
|
| 274 |
<div class="footer-content">
|
| 275 |
|
| 276 |
-
<p>© 2026 CONFEREAI - Protegendo a integridade da voz humana.</p>
|
| 277 |
|
| 278 |
<div class="footer-links">
|
| 279 |
|
|
|
|
| 104 |
<div class="confidence-circle">
|
| 105 |
<svg viewBox="0 0 36 36" class="circular-chart">
|
| 106 |
<circle class="circle-bg" cx="18" cy="18" r="15.9155" />
|
| 107 |
+
<circle id="confidence-path" class="progress" cx="18" cy="18" r="15.9155" stroke-dasharray="100" stroke-dashoffset="100" />
|
| 108 |
</svg>
|
| 109 |
<div class="confidence-text">
|
| 110 |
<span id="confidence-value">0%</span>
|
|
|
|
| 273 |
|
| 274 |
<div class="footer-content">
|
| 275 |
|
| 276 |
+
<p>© 2026 CONFEREAI - Protegendo a integridade da voz humana. v2.3</p>
|
| 277 |
|
| 278 |
<div class="footer-links">
|
| 279 |
|
dashboard/style.css
CHANGED
|
@@ -300,7 +300,7 @@ nav {
|
|
| 300 |
stroke: var(--primary);
|
| 301 |
stroke-width: 4;
|
| 302 |
filter: drop-shadow(0 0 8px var(--accent-glow));
|
| 303 |
-
transition: stroke-
|
| 304 |
stroke-linecap: round;
|
| 305 |
}
|
| 306 |
|
|
|
|
| 300 |
stroke: var(--primary);
|
| 301 |
stroke-width: 4;
|
| 302 |
filter: drop-shadow(0 0 8px var(--accent-glow));
|
| 303 |
+
transition: stroke-dashoffset 1.5s cubic-bezier(0.4, 0, 0.2, 1), stroke 0.5s ease;
|
| 304 |
stroke-linecap: round;
|
| 305 |
}
|
| 306 |
|
main.py
CHANGED
|
@@ -9,4 +9,4 @@ if __name__ == "__main__":
|
|
| 9 |
|
| 10 |
@app.get("/version-check")
|
| 11 |
async def version_check():
|
| 12 |
-
return {"version": "2.
|
|
|
|
| 9 |
|
| 10 |
@app.get("/version-check")
|
| 11 |
async def version_check():
|
| 12 |
+
return {"version": "2.3", "status": "updated"}
|