const fs = require('fs'); let code = fs.readFileSync('public/index.html', 'utf8'); // Insert the select box after the last pill const privacyPillEnd = `Privacy - Unlisted (100.00%) `; const injectHtml = `Privacy - Unlisted (100.00%)
Date:
`; code = code.replace(privacyPillEnd, injectHtml); // Add JS logic const jsVarsFind = ` let currentFilter = 'all'; // 'all' | 'completed' | 'pending' | 'failed'`; const jsVarsReplace = ` let currentFilter = 'all'; // 'all' | 'completed' | 'pending' | 'failed' let currentDateFilter = 'all';`; code = code.replace(jsVarsFind, jsVarsReplace); const setFilterFind = ` window.setTableFilter = function(filter) { currentFilter = filter; updateFilterPillsUI(); renderFilteredTable(); };`; const setFilterReplace = ` window.setTableFilter = function(filter) { currentFilter = filter; updateFilterPillsUI(); renderFilteredTable(); }; window.setTableDateFilter = function(dateStr) { currentDateFilter = dateStr; renderFilteredTable(); };`; code = code.replace(setFilterFind, setFilterReplace); const renderTableFind = ` let filteredFiles = currentState.files; if (currentFilter === 'completed') {`; const renderTableReplace = ` let filteredFiles = currentState.files; if (currentDateFilter !== 'all') { filteredFiles = filteredFiles.filter(f => { const fileDate = f.createdTime ? new Date(f.createdTime).toLocaleDateString('en-GB') : new Date().toLocaleDateString('en-GB'); return fileDate === currentDateFilter; }); } if (currentFilter === 'completed') {`; code = code.replace(renderTableFind, renderTableReplace); const renderStateFind = ` function renderState(state) { if (!state) return; currentState = state;`; const renderStateReplace = ` function renderState(state) { if (!state) return; currentState = state; // Populate Date Dropdown const dateSelect = document.getElementById('tableDateFilter'); if (dateSelect && state.files && state.files.length > 0) { const uniqueDates = [...new Set(state.files.map(f => { return f.createdTime ? new Date(f.createdTime).toLocaleDateString('en-GB') : new Date().toLocaleDateString('en-GB'); }))].sort(); // Keep current selection if valid const currentVal = dateSelect.value; dateSelect.innerHTML = ''; uniqueDates.forEach(d => { const opt = document.createElement('option'); opt.value = d; opt.textContent = d; dateSelect.appendChild(opt); }); if (uniqueDates.includes(currentVal)) { dateSelect.value = currentVal; } else { currentDateFilter = 'all'; dateSelect.value = 'all'; } } `; code = code.replace(renderStateFind, renderStateReplace); fs.writeFileSync('public/index.html', code); console.log('patched table date filter');