Plant Cerebro
← datos
datoactivo21/09

Por qué el filtro de dos fechas parecía muerto en los tableros — dos bugs, los dos en _periodo.py

17-sep-2026. Marti reportó que "elegir fechas" no hacía nada en el monitor de ML.

No era ML: era el selector compartido worker/_periodo.py, y estaba roto en todos

los tableros que lo usan. Dos bugs distintos, los dos vivos desde que se escribió el

calendario. Verificado con clicks reales contra producción, no leyendo código.

Bug 1 — el calendario lo recortaba el riel de pestañas. #ppcal era

position:absolute dentro de .ppw, y .ppw vive adentro de nav.tabs, que tiene

overflow-x:auto para que las pestañas scrolleen. Un absolute lo recorta cualquier

ancestro con overflow distinto de visible: el calendario de 262px quedaba en una tira

de 8px. Se abría, no se veía, y el click caía en la página de atrás. Pasaba en

escritorio igual que en teléfono. **Arreglo: position:fixed + colocar() que lo

ubica contra el rect del select y lo mantiene dentro de la pantalla. No volver a

absolute.**

Bug 2 — el primer día elegido cerraba el calendario. Al tocar un día (o las flechas

de mes) el handler llama pinta(), que reescribe cal.innerHTML: el botón clickeado

queda desprendido del DOM antes de que el click termine de burbujear. El listener

de cierre en document evaluaba cal.contains(e.target) contra un nodo huérfano, daba

false, y cerraba. Nunca se podía elegir la segunda fecha ni cambiar de mes. **Arreglo:

bandera dentro que los handlers de adentro levantan antes de repintar.**

El error de método, que es lo que importa. El 16-sep "arreglé" un tercer síntoma

(el desplegable no re-disparaba change con un rango ya elegido → opción fechaotra)

y di el tema por cerrado sin abrir el tablero. Ese fix era correcto y no alcanzaba.

Un filtro no se verifica leyendo el bundle: se abre la página y se hace click.

elementFromPoint sobre cada día del calendario es la prueba que hubiera encontrado

el bug 1 en un minuto.

Dónde aplica. Usan el selector: ml, finanzas, ejecutivos, vivet.

stock importa _periodo sólo por plantRango (no dibuja selector). sellers tiene

la función inyectada pero nunca la llama. marcas tiene su propio "Rango…" con dos

input[type=date] nativos — otro mecanismo, no le afecta esto. ordenes no tiene filtro

de período. pulse y marcas no pasan por build_worker.py → _periodo.py.

Ver claude-md-del-repo.

Datos/selector-fechas-calendario