---
{}
---

## 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 max=" + total + " value=" + current + "> </progress> " + 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))
```
