47 lines
1.8 KiB
Markdown
47 lines
1.8 KiB
Markdown
---
|
|
{}
|
|
---
|
|
|
|
## 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))
|
|
```
|