Estoy administrando un archivo CSV grande con columnas que muestran la fecha, la hora y el mensaje.
Actualmente he logrado convertir mi gran archivo CSV en una tabla HTML con código Javascript adicional. También me las arreglé para poner un filtro para poder filtrar palabras, fechas y horas específicas.
Ahora estoy atascado con la configuración de un valor predeterminado dinámico. Básicamente, el filtro (oculto) solo debe mostrar filas con el mes y el día actuales. De esta manera, puedo mirar hacia atrás en los mensajes que se enviaron hace X años en esta fecha.
Como mencioné, mi filtro actual es un campo de entrada y definitivamente no es la forma automática como quiero
Tampoco estoy listo para usar nada más que Javascript. Mi conocimiento más allá de HTML y CSS no llega tan lejos
HTML: por simplicidad, aquí se estructura una tabla. Tenga en cuenta que los datos de fecha están marcados como MM/DD/YY.
<input type="text" id="myInput" onkeyup="myFunction()" placeholder="Search for names or countries.." title="Type in a name or a country"> <table> <tr> <td> 12/20/19</td> <td> 01:39 </td> <td> Rens: Wat </td> <td> </td> </tr> <tr> <td> 12/20/20</td> <td> 01:40 </td> <td> Rocco Haagenhuizen: In de chat </td> <td> </td> </tr> <tr> <td> 12/19/21</td> <td> 01:40 </td> <td> Rens: Wacht </td> <td> </td> </tr> <tr> <td> 12/20/21</td> <td> 01:40 </td> <td> Rocco Haagenhuizen: Ga naar je chats </td> <td> </td> </tr> </table>Javascript: filtro de entrada
const myFunction = () => { const trs = document.querySelectorAll('Table tr') const filter = document.querySelector('#myInput').value const regex = new RegExp(filter, 'i') const isFoundInTds = td => regex.test(td.innerHTML) const isFound = childrenArr => childrenArr.some(isFoundInTds) const setTrStyleDisplay = ({ style, children }) => { style.display = isFound([ ...children // <-- All columns ]) ? '' : 'none' } trs.forEach(setTrStyleDisplay) }JSfiddle: http://jsfiddle.net/2bxwvqo7/6/
const myFunction = () => { const trs = document.querySelectorAll('Table tr') const filter = document.querySelector('#myInput').value const regex = new RegExp(filter, 'i') const isFoundInTds = td => regex.test(td.innerHTML); const now = new Date(); const isRightDate = childrenArr => childrenArr.some(td => { const tdDate = new Date(td.innerHTML); return tdDate.getDate() === now.getDate() && tdDate.getMonth() === now.getMonth(); }); const isFound = childrenArr => childrenArr.some(isFoundInTds) const setTrStyleDisplay = ({ style, children }) => { style.display = isRightDate([...children]) && isFound([ ...children // <-- All columns ]) ? '' : 'none'; } trs.forEach(setTrStyleDisplay) } myFunction(); body { padding: 20px; } input { margin-bottom: 5px; padding: 2px 3px; width: 209px; } td { padding: 4px; border: 1px #CCC solid; width: 100px; } <input type="text" id="myInput" onkeyup="myFunction()" placeholder="Search for names or countries.." title="Type in a name or a country"> <table> <tr> <td> 12/13/19</td> <td> 01:39 </td> <td> Rens: Wat </td> <td> </td> </tr> <tr> <td> 12/14/20</td> <td> 01:40 </td> <td> Rocco Haagenhuizen: In de chat </td> <td> </td> </tr> <tr> <td> 12/13/21</td> <td> 01:40 </td> <td> Rens: Wacht </td> <td> </td> </tr> <tr> <td> 2/13/21</td> <td> 01:40 </td> <td> Rocco Haagenhuizen: Ga naar je chats </td> <td> </td> </tr> </table>