vault backup: 2025-12-10 11:37:35
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
const goalPage = dv.page(input.file);
|
||||
const projects = goalPage.file.inlinks.where((p) => {
|
||||
const mp = dv.page(p.path);
|
||||
return mp.tags?.includes("process/project");
|
||||
});
|
||||
const aufgaben = projects.values.map((p) => {
|
||||
const mp = dv.page(p);
|
||||
return mp.file.inlinks.where((t) => {
|
||||
const mt = dv.page(t.path);
|
||||
return mt.tags?.includes("process/task");
|
||||
})
|
||||
});
|
||||
let totalTasksInTasks = 0;
|
||||
const totalTasksGoalPage = goalPage.file.tasks.length;
|
||||
const totalTasksInProjects = projects.values.reduce((acc, p) => {
|
||||
const mp = dv.page(p.path);
|
||||
const aufgaben = mp.file.inlinks.where((t) => {
|
||||
const mt = dv.page(t.path);
|
||||
return mt.tags?.includes("process/task");
|
||||
});
|
||||
totalTasksInTasks += aufgaben.values.reduce((act, t) => {
|
||||
const mt = dv.page(t.path);
|
||||
return act + mt.file.tasks.length;
|
||||
}, 0);
|
||||
return acc + mp.file.tasks.length;
|
||||
}, 0);
|
||||
|
||||
let finishedTasksInTasks = 0;
|
||||
const finishedTasksGoalPage = goalPage.file.tasks.where(
|
||||
(t) => t.fullyCompleted === true
|
||||
).length;
|
||||
const finishedTasksInProjects = projects.values.reduce((acc, p) => {
|
||||
const mp = dv.page(p.path);
|
||||
const aufgaben = mp.file.inlinks.where((t) => {
|
||||
const mt = dv.page(t.path);
|
||||
return mt.tags?.includes("process/task");
|
||||
});
|
||||
finishedTasksInTasks += aufgaben.values.reduce((act, t) => {
|
||||
const mt = dv.page(t.path);
|
||||
return act + mt.file.tasks.where((t) => t.fullyCompleted === true).length;
|
||||
}, 0);
|
||||
return acc + mp.file.tasks.where((t) => t.fullyCompleted === true).length;
|
||||
}, 0);
|
||||
|
||||
const Target = totalTasksGoalPage + totalTasksInProjects + totalTasksInTasks;
|
||||
const Progress = finishedTasksGoalPage + finishedTasksInProjects + finishedTasksInTasks;
|
||||
|
||||
const containerEl = createDiv();
|
||||
|
||||
const align = input?.alignLeft ? "left" : "center";
|
||||
|
||||
Object.assign(containerEl.style, {
|
||||
display: "flex",
|
||||
"flex-direction": "column",
|
||||
"align-items": align,
|
||||
"justify-content": "center",
|
||||
});
|
||||
|
||||
const max = Target || 0;
|
||||
const value = Progress || 0;
|
||||
const percent = Math.round((value / max) * 100) || 0;
|
||||
|
||||
const progressBar = containerEl.createEl("progress");
|
||||
Object.assign(progressBar, { max, value });
|
||||
|
||||
const progressText = containerEl.createEl("div");
|
||||
Object.assign(progressText, {
|
||||
textContent: `${percent}% completed`,
|
||||
});
|
||||
|
||||
dv.paragraph(containerEl.innerHTML);
|
||||
Reference in New Issue
Block a user