Update: Modifico el código para permitir ver dos estancias en un mismo monitor
This commit is contained in:
@@ -4,17 +4,19 @@ from dotenv import load_dotenv
|
||||
import os
|
||||
|
||||
load_dotenv()
|
||||
monitor = os.getenv("MONITOR_ID")
|
||||
|
||||
monitor1 = os.getenv("MONITOR_ID_1")
|
||||
monitor2 = os.getenv("MONITOR_ID_2")
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
def obtener_turnos():
|
||||
def obtener_turnos(mon_id):
|
||||
conn = get_connection()
|
||||
if not conn:
|
||||
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 = :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})
|
||||
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':mon_id})
|
||||
datos = cursor.fetchall()
|
||||
cursor.close()
|
||||
conn.close()
|
||||
@@ -23,15 +25,15 @@ def obtener_turnos():
|
||||
print(f"Error al conectar: {e}")
|
||||
return None
|
||||
|
||||
def obtener_pie():
|
||||
def obtener_pie(mon_id):
|
||||
conn = get_connection()
|
||||
if not conn:
|
||||
return []
|
||||
try:
|
||||
cursor = conn.cursor()
|
||||
cursor.execute("SELECT MENSAJE FROM CSMK_MONITOR_PIE WHERE MONITOR_ID = :monitor AND INACTIVO = 0 ORDER BY MONITOR_PIE_ID ASC",{'monitor':monitor})
|
||||
cursor.execute("SELECT MENSAJE FROM CSMK_MONITOR_PIE WHERE MONITOR_ID = :monitor AND INACTIVO = 0 ORDER BY MONITOR_PIE_ID ASC",{'monitor':mon_id})
|
||||
mensajes = [fila[0] for fila in cursor.fetchall()]
|
||||
mensaje_final = " ".join(mensajes)
|
||||
mensaje_final = " ".join(mensajes)
|
||||
cursor.close()
|
||||
conn.close()
|
||||
return mensaje_final
|
||||
@@ -43,15 +45,20 @@ def obtener_pie():
|
||||
def index():
|
||||
return render_template("index.html")
|
||||
|
||||
@app.route('/api/datos')
|
||||
def api_datos():
|
||||
filas = obtener_turnos()
|
||||
@app.route('/api/datos1')
|
||||
def api_datos1():
|
||||
filas = obtener_turnos(monitor1)
|
||||
return jsonify(filas)
|
||||
|
||||
@app.route('/api/datos2')
|
||||
def api_datos2():
|
||||
filas = obtener_turnos(monitor2)
|
||||
return jsonify(filas)
|
||||
|
||||
@app.route('/api/footer')
|
||||
def api_pie():
|
||||
mensaje = obtener_pie()
|
||||
mensaje = obtener_pie(1)
|
||||
return Response(mensaje, mimetype='text/plain')
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run(debug=True)
|
||||
app.run(debug=True,host='192.168.82.156')
|
||||
+2
-1
@@ -3,4 +3,5 @@ DB_PASSWORD=CSMKIOSCOS
|
||||
DB_HOST=192.168.1.76
|
||||
DB_PORT=1521
|
||||
DB_SID=REALRAC1
|
||||
MONITOR_ID=12
|
||||
MONITOR_ID_1=1
|
||||
MONITOR_ID_2=2
|
||||
@@ -8,11 +8,9 @@
|
||||
}
|
||||
|
||||
.animate-scroll {
|
||||
display: inline-block;
|
||||
animation: scroll 45s linear infinite;
|
||||
}
|
||||
|
||||
|
||||
@keyframes blink {
|
||||
0%, 100% { background-color: #0a6eb2}
|
||||
50% { background-color: #ffff00; color: black; }
|
||||
|
||||
@@ -3,11 +3,11 @@ const estadoAnterior = {};
|
||||
|
||||
let ultimoFooter = "";
|
||||
|
||||
function cargarTabla() {
|
||||
fetch("/api/datos")
|
||||
function cargarTabla(endpoint, tablaId) {
|
||||
fetch(endpoint)
|
||||
.then(res => res.json())
|
||||
.then(filas => {
|
||||
const tbody = document.getElementById("turnos");
|
||||
const tbody = document.getElementById(tablaId);
|
||||
tbody.innerHTML = "";
|
||||
|
||||
let sizeClass = "";
|
||||
@@ -75,7 +75,11 @@ function cargarFooter() {
|
||||
});
|
||||
}
|
||||
|
||||
function actualizarTablas(){
|
||||
cargarTabla("/api/datos1","turnos1");
|
||||
cargarTabla("/api/datos2","turnos2");
|
||||
}
|
||||
cargarFooter();
|
||||
cargarTabla();
|
||||
setInterval(cargarTabla, 30000);
|
||||
actualizarTablas();
|
||||
setInterval(actualizarTablas, 30000);
|
||||
setInterval(cargarFooter, 45000);
|
||||
+20
-4
@@ -15,9 +15,21 @@
|
||||
<div id="hora" class="text-7xl font-bold text-[#696969]"></div>
|
||||
</header>
|
||||
<div class="flex flex-col md:flex-row gap-4 p-4 bg-gray-100 h-[783px]">
|
||||
<div class="md:w-1/2 w-full flex items-center bg-black">
|
||||
<!--<div class="md:w-1/2 w-full flex items-center bg-black">
|
||||
<video src="{{ url_for('static', filename='media/CSM-HD.mp4') }}" class="w-full shadow-md" autoplay muted loop
|
||||
preload="metadata"></video>
|
||||
</div>-->
|
||||
<div class="md:w-1/2 w-full overflow-auto h-[751px]">
|
||||
<table class="min-w-full text-center text-white text-3xl table-fixed border-collapse h-full">
|
||||
<thead>
|
||||
<tr class="h-[90px]">
|
||||
<th class="border px-4 py-2 bg-[#114b94]">CONSULTA</th>
|
||||
<th class="border px-4 py-2 bg-[#0a6eb2]">TURNO</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="turnos1">
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="md:w-1/2 w-full overflow-auto h-[751px]">
|
||||
<table class="min-w-full text-center text-white text-3xl table-fixed border-collapse h-full">
|
||||
@@ -27,18 +39,22 @@
|
||||
<th class="border px-4 py-2 bg-[#0a6eb2]">TURNO</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="turnos">
|
||||
<tbody id="turnos2">
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<footer class="w-full bg-[#008968] overflow-hidden h-14 flex items-center">
|
||||
<footer class="w-full h-14 bg-[#008968] flex items-center overflow-hidden">
|
||||
<div id="scroll-wrapper" class="whitespace-nowrap absolute w-max animate-scroll text-white text-3xl px-4 flex gap-16">
|
||||
</div>
|
||||
</footer>
|
||||
<!--<footer class="w-full bg-[#008968] overflow-hidden h-14 flex items-center">
|
||||
<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>
|
||||
</html>
|
||||
Reference in New Issue
Block a user