diff --git a/app.py b/app.py index 956ab16..df64083 100644 --- a/app.py +++ b/app.py @@ -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 dotenv import load_dotenv +import os load_dotenv() +monitor = os.getenv("MONITOR_ID") app = Flask(__name__) @@ -12,7 +14,7 @@ def obtener_turnos(): return [] try: 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() cursor.close() conn.close() @@ -27,9 +29,9 @@ def obtener_pie(): return [] try: 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()] - mensaje_final = " ".join(mensajes) + mensaje_final = " ".join(mensajes) cursor.close() conn.close() return mensaje_final @@ -49,7 +51,7 @@ def api_datos(): @app.route('/api/footer') def api_pie(): mensaje = obtener_pie() - return jsonify(mensaje) + return Response(mensaje, mimetype='text/plain') if __name__ == '__main__': app.run(debug=True) \ No newline at end of file diff --git a/example.env b/example.env index 1c091e0..f7a8f50 100644 --- a/example.env +++ b/example.env @@ -2,4 +2,5 @@ DB_USER=CSMKIOSCOS DB_PASSWORD=CSMKIOSCOS DB_HOST=192.168.1.76 DB_PORT=1521 -DB_SID=REALRAC1 \ No newline at end of file +DB_SID=REALRAC1 +MONITOR_ID=12 \ No newline at end of file diff --git a/static/css/styles.css b/static/css/styles.css index f2f10b2..e3d1a95 100644 --- a/static/css/styles.css +++ b/static/css/styles.css @@ -1,15 +1,15 @@ @keyframes scroll { 0% { - transform: translateX(100%); + transform: translateX(0%); } 100% { - transform: translateX(-100%); + transform: translateX(-50%); } } .animate-scroll { display: inline-block; - animation: scroll 20s linear infinite; + animation: scroll 45s linear infinite; } diff --git a/static/js/scripts.js b/static/js/scripts.js index d085490..935b4bb 100644 --- a/static/js/scripts.js +++ b/static/js/scripts.js @@ -1,6 +1,8 @@ const sonido = new Audio("/static/media/0457.wav"); const estadoAnterior = {}; +let ultimoFooter = ""; + function cargarTabla() { fetch("/api/datos") .then(res => res.json()) @@ -8,11 +10,11 @@ function cargarTabla() { const tbody = document.getElementById("turnos"); tbody.innerHTML = ""; - let sizeClass =""; - if (filas.length <= 7){ - sizeClass ="text-7xl px-4 py-2"; + let sizeClass = ""; + if (filas.length <= 7) { + sizeClass = "text-7xl px-4 py-2"; } else { - sizeClass ="text-5xl px-3 py-1" + sizeClass = "text-5xl px-3 py-1" } filas.forEach(fila => { @@ -50,7 +52,7 @@ function cargarTabla() { } estadoAnterior[id] = estadoTurno; - + tr.appendChild(td2); tbody.appendChild(tr); }); @@ -58,15 +60,22 @@ function cargarTabla() { } function cargarFooter() { - fetch("/api/footer") - .then(res => res.text()) - .then(data => { - const footerText = document.getElementById("footer-text"); - footerText.textContent = data.mensaje; - }); + fetch("/api/footer") + .then(res => res.text()) + .then(data => { + if (data !== ultimoFooter) { + const footerText = document.getElementById("footer-text"); + const footerTextDuplicate = document.getElementById("footer-text-duplicate"); + + footerText.innerHTML = data; + footerTextDuplicate.innerHTML = data; + + ultimoFooter = data; + } + }); } cargarFooter(); cargarTabla(); setInterval(cargarTabla, 30000); -setInterval(cargarFooter, 60000); \ No newline at end of file +setInterval(cargarFooter, 45000); \ No newline at end of file diff --git a/templates/index.html b/templates/index.html index 051a833..045af5b 100644 --- a/templates/index.html +++ b/templates/index.html @@ -32,8 +32,13 @@ -