Fix Error: Solvento el problema del footer que no mostraba el contenido

This commit is contained in:
2025-07-03 11:00:39 +02:00
parent c2cd5d9672
commit be25cdd16d
5 changed files with 40 additions and 23 deletions
+6 -4
View File
@@ -1,8 +1,10 @@
from flask import Flask, render_template, jsonify from flask import Flask, render_template, jsonify, Response
from conexion import get_connection from conexion import get_connection
from dotenv import load_dotenv from dotenv import load_dotenv
import os
load_dotenv() load_dotenv()
monitor = os.getenv("MONITOR_ID")
app = Flask(__name__) app = Flask(__name__)
@@ -12,7 +14,7 @@ def obtener_turnos():
return [] return []
try: try:
cursor = conn.cursor() cursor = conn.cursor()
cursor.execute("SELECT CONS_ESTAD.CODIGO_IMPRESION CONSULTA, CONS_ESTAD.ESTADO_ID ESTADO_CONSULTA, TM.CODIGO_TURNO TURNO, TM.ESTADO_ID ESTADO_TURNO FROM CSMK_TURNO_MON TM, (SELECT ROW_NUMBER() OVER (PARTITION BY ESTADO.ESTANCIA_ID ORDER BY CONSULTA_ESTADO_ID DESC) AS RN, ESTADO.ESTADO_ID, ESTANCIA.* FROM CSMK_CONSULTA_ESTADO ESTADO, CSMK_ESTANCIA ESTANCIA WHERE ESTADO.FECHA = TRUNC (SYSDATE) AND ESTADO.ESTANCIA_ID = ESTANCIA.ESTANCIA_ID AND ESTANCIA.MONITOR_ID = 12 ORDER BY ESTADO.CONSULTA_ESTADO_ID DESC) CONS_ESTAD WHERE CONS_ESTAD.RN = 1 AND TM.ESTANCIA_ID = CONS_ESTAD.ESTANCIA_ID AND TM.MONITOR_ID = CONS_ESTAD.MONITOR_ID AND TM.ESTADO_ID IN (1,2) AND TM.FECHA = TRUNC(SYSDATE) ORDER BY CONSULTA ASC") cursor.execute("SELECT CONS_ESTAD.CODIGO_IMPRESION CONSULTA, CONS_ESTAD.ESTADO_ID ESTADO_CONSULTA, TM.CODIGO_TURNO TURNO, TM.ESTADO_ID ESTADO_TURNO FROM CSMK_TURNO_MON TM, (SELECT ROW_NUMBER() OVER (PARTITION BY ESTADO.ESTANCIA_ID ORDER BY CONSULTA_ESTADO_ID DESC) AS RN, ESTADO.ESTADO_ID, ESTANCIA.* FROM CSMK_CONSULTA_ESTADO ESTADO, CSMK_ESTANCIA ESTANCIA WHERE ESTADO.FECHA = TRUNC (SYSDATE) AND ESTADO.ESTANCIA_ID = ESTANCIA.ESTANCIA_ID AND ESTANCIA.MONITOR_ID = :monitor ORDER BY ESTADO.CONSULTA_ESTADO_ID DESC) CONS_ESTAD WHERE CONS_ESTAD.RN = 1 AND TM.ESTANCIA_ID = CONS_ESTAD.ESTANCIA_ID AND TM.MONITOR_ID = CONS_ESTAD.MONITOR_ID AND TM.ESTADO_ID IN (1,2) AND TM.FECHA = TRUNC(SYSDATE) ORDER BY CONSULTA ASC",{'monitor':monitor})
datos = cursor.fetchall() datos = cursor.fetchall()
cursor.close() cursor.close()
conn.close() conn.close()
@@ -27,7 +29,7 @@ def obtener_pie():
return [] return []
try: try:
cursor = conn.cursor() cursor = conn.cursor()
cursor.execute("SELECT MENSAJE FROM CSMK_MONITOR_PIE WHERE MONITOR_ID = 12 AND INACTIVO = 0 ORDER BY MONITOR_PIE_ID ASC") cursor.execute("SELECT MENSAJE FROM CSMK_MONITOR_PIE WHERE MONITOR_ID = :monitor AND INACTIVO = 0 ORDER BY MONITOR_PIE_ID ASC",{'monitor':monitor})
mensajes = [fila[0] for fila in cursor.fetchall()] mensajes = [fila[0] for fila in cursor.fetchall()]
mensaje_final = " ".join(mensajes) mensaje_final = " ".join(mensajes)
cursor.close() cursor.close()
@@ -49,7 +51,7 @@ def api_datos():
@app.route('/api/footer') @app.route('/api/footer')
def api_pie(): def api_pie():
mensaje = obtener_pie() mensaje = obtener_pie()
return jsonify(mensaje) return Response(mensaje, mimetype='text/plain')
if __name__ == '__main__': if __name__ == '__main__':
app.run(debug=True) app.run(debug=True)
+1
View File
@@ -3,3 +3,4 @@ DB_PASSWORD=CSMKIOSCOS
DB_HOST=192.168.1.76 DB_HOST=192.168.1.76
DB_PORT=1521 DB_PORT=1521
DB_SID=REALRAC1 DB_SID=REALRAC1
MONITOR_ID=12
+3 -3
View File
@@ -1,15 +1,15 @@
@keyframes scroll { @keyframes scroll {
0% { 0% {
transform: translateX(100%); transform: translateX(0%);
} }
100% { 100% {
transform: translateX(-100%); transform: translateX(-50%);
} }
} }
.animate-scroll { .animate-scroll {
display: inline-block; display: inline-block;
animation: scroll 20s linear infinite; animation: scroll 45s linear infinite;
} }
+15 -6
View File
@@ -1,6 +1,8 @@
const sonido = new Audio("/static/media/0457.wav"); const sonido = new Audio("/static/media/0457.wav");
const estadoAnterior = {}; const estadoAnterior = {};
let ultimoFooter = "";
function cargarTabla() { function cargarTabla() {
fetch("/api/datos") fetch("/api/datos")
.then(res => res.json()) .then(res => res.json())
@@ -8,11 +10,11 @@ function cargarTabla() {
const tbody = document.getElementById("turnos"); const tbody = document.getElementById("turnos");
tbody.innerHTML = ""; tbody.innerHTML = "";
let sizeClass =""; let sizeClass = "";
if (filas.length <= 7){ if (filas.length <= 7) {
sizeClass ="text-7xl px-4 py-2"; sizeClass = "text-7xl px-4 py-2";
} else { } else {
sizeClass ="text-5xl px-3 py-1" sizeClass = "text-5xl px-3 py-1"
} }
filas.forEach(fila => { filas.forEach(fila => {
@@ -61,12 +63,19 @@ function cargarFooter() {
fetch("/api/footer") fetch("/api/footer")
.then(res => res.text()) .then(res => res.text())
.then(data => { .then(data => {
if (data !== ultimoFooter) {
const footerText = document.getElementById("footer-text"); const footerText = document.getElementById("footer-text");
footerText.textContent = data.mensaje; const footerTextDuplicate = document.getElementById("footer-text-duplicate");
footerText.innerHTML = data;
footerTextDuplicate.innerHTML = data;
ultimoFooter = data;
}
}); });
} }
cargarFooter(); cargarFooter();
cargarTabla(); cargarTabla();
setInterval(cargarTabla, 30000); setInterval(cargarTabla, 30000);
setInterval(cargarFooter, 60000); setInterval(cargarFooter, 45000);
+7 -2
View File
@@ -32,8 +32,13 @@
</table> </table>
</div> </div>
</div> </div>
<footer class="w-full bg-[#008968] overflow-hidden h-14"> <footer class="w-full bg-[#008968] overflow-hidden h-14 flex items-center">
<div id="footer-text" class="text-4xl whitespace-nowrap animate-scroll px-4 text-white"></div> <div class="scroll-wrapper whitespace-nowrap w-max animate-scroll">
<span id="footer-text" class="text-white text-3xl px-4"></span>
<span class="spacer w-14 inline-block"></span>
<span id="footer-text-duplicate" class="text-white text-3xl px-4"></span>
</div>
<div id="footer-text" class="whitespace-pre text-3xl animate-scroll whitespace-nowrap px-4 text-white"></div>
</footer> </footer>
</body> </body>
</html> </html>