--- {} --- ## Sortiert nach Status ```dataviewjs let groups = dv.pages('#process/project').where(j => !j.file.name.contains("Template")).groupBy(p => p.status) const sortBy = ["Backlog", "Aktiv", "Geschlossen", "Abgewiesen", "Archiv"]; const sortByObject = sortBy.reduce((obj, item, index) => { obj[item] = index return obj }, {}) groups.values.sort((a, b) => sortByObject[a["key"]] - sortByObject[b["key"]]); //for (let group of dv.pages('"Areas"').where(j => j.category == "Projekt").groupBy(p => p.projectStatus)) { for (let group of groups) { dv.header(3, group.key); let projects = new Set(); for (let projekt of group.rows) { let total = projekt.file.inlinks.where(j => dv.page(j).category == "Aufgabe").length let open = projekt.file.inlinks.where(j => dv.page(j).category == "Aufgabe") .where(j => dv.page(j).status != "Geschlossen") .where(j => dv.page(j).status != "Abgewiesen") .length let progress = Math.round((total-open)/total*100,0) let current = total-open if (total > 0) { projects.add([projekt.file.link, total, open, " " + progress + "%", projekt.Progress, projekt.Target]) } else { projects.add([projekt.file.link, total, open, "Keine Tickets", projekt.Progress, projekt.Target]) } } dv.table(["Projekt", "Total", "Offen", "Progress", "Progress", "Target"], Array.from(projects)) } ``` ## Aufgaben ```dataviewjs let aufgaben = new Set(); for (let aufgabe of dv.pages('"Areas"').where(a => a.category == "Aufgabe")) { let total = aufgabe.file.outlinks.length if (total == 0) { aufgaben.add([aufgabe.file.link, aufgabe.category, aufgabe.status]) } } dv.table(["Aufgabe", "Category", "Status"], Array.from(aufgaben)) ```