# NES-4 Repairs >[!noted] >_<center>`=this.subtype` for `=this.for`</center>_ ```dataviewjs function renderProgressBar() { const container = dv.el("div", "", { attr: { style: ` width: 100%; margin: 0 auto; padding: 1rem; display: flex; flex-direction: column; gap: 16px; align-items: center; justify-content: center; align: center; background: rgba(255, 255, 255, 0.25); border-radius: 4px; ` }}); const progressText = dv.el("text") const progressBar = dv.el("progress", "", { attr : { max: "100", value: "0", style: ` width: 95%; ` }}); container.appendChild(progressText); container.appendChild(progressBar); return { container, progressText, progressBar }; } function calculateProgress() { const tasks = (dv.current()?.file?.lists || []).filter(({task}) => task); return Math.round([...tasks].reduce((acc, { checked }) => acc + Number(checked), 0) / tasks.length * 100 || 0); } function updateProgressBar({ container, progressText, progressBar }) { const progress = calculateProgress(); if(typeof progress === 'number') { progressBar.value = progress; progressText.innerHTML = `${progress}%`; } } const progressBar = renderProgressBar(); updateProgressBar(progressBar); setInterval(updateProgressBar, 500, progressBar); ``` >[!note|no-title] >_<center>`=this.summary`</center>_ >[!grid|col-6] >>[!done|no-title] >>## 1 >>- [x] **Complete** > >>[!done|no-title] >>## 2 >>- [x] **Complete** > >>[!cite|no-title] >>## 3 >>- [ ] **Complete** > >>[!cite|no-title] >>## 4 >>- [ ] **Complete** > >>[!cite|no-title] >>## 5 >>>[!noted] >>- [ ] **Complete** > >>[!cite|no-title] >>## 6 >>- [ ] **Complete**