SHARKOMODE 项目进度追踪

众筹项目管理 · 0 个项目
筛选:
`; } function copyShareHTML(pid) { navigator.clipboard.writeText(buildShareHTML(pid)).then(()=>toast('HTML 已复制')); } function dlShareHTML(pid) { const html = buildShareHTML(pid); const b = new Blob([html],{type:'text/html'}); const a = document.createElement('a'); a.href=URL.createObjectURL(b); a.download=`${D.projects[pid].name}-进度.html`; a.click(); toast('已下载'); } /* ═══════════════════════════════════════════ */ /* FILTER / MODAL / TOAST */ /* ═══════════════════════════════════════════ */ function setFilter(f,el) { filter=f; document.querySelectorAll('.filter-chip').forEach(c=>c.classList.remove('active')); el.classList.add('active'); render(); } function searchProjects(q) { search=q; render(); } function showModal() { document.getElementById('modalOverlay').style.display='flex'; } function hideModal() { document.getElementById('modalOverlay').style.display='none'; } function closeModal(e) { if(e.target===document.getElementById('modalOverlay')) hideModal(); } function toast(m) { const t=document.createElement('div'); t.className='toast'; t.textContent=m; document.body.appendChild(t); setTimeout(()=>t.remove(),2500); } document.addEventListener('keydown', e => { if(e.key==='Escape'){hideDD();hideModal();} }); loadData();