vault backup: 2025-12-10 11:37:35

This commit is contained in:
2023-05-15 17:16:05 +02:00
committed by Thomas Peetz
parent 91bf72fc87
commit 73f2162ddf
6049 changed files with 513094 additions and 227748 deletions
+80
View File
@@ -0,0 +1,80 @@
const goalPages = dv.pages("#process/goal");
let goals = new Set();
let activeProjects = new Set();
for(let goalPage of goalPages) {
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`,
});
if (max > 0 && max != value) {
goals.add([goalPage.file.link, dv.paragraph(containerEl.innerHTML), value, max, goalPage.Projects]);
}
}
dv.table(["Title", "Bar", "Progress", "Target", "Projects"], Array.from(goals));
+49
View File
@@ -0,0 +1,49 @@
const projectPages = dv.pages("#process/project");
let projects = new Set();
for (let projectPage of projectPages) {
const tasks = projectPage.file.inlinks.where((p) => {
const mt = dv.page(p.path)
return mt.tags?.includes("process/task");
});
const totalTasksProjectPage = projectPage.file.tasks.length;
const totalTasksInTasks = tasks.values.reduce((acc, t) => {
const mt = dv.page(t.path);
return acc + mt.file.tasks.length;
}, 0);
const finishedTasksProjectPage = projectPage.file.tasks.where((t) => t.fullyCompleted === true).length;
const finishedTasksinTasks = tasks.values.reduce((acc, t) => {
const mt = dv.page(t.path);
return acc + mt.file.tasks.where((t) => t.fullyCompleted === true).length;
}, 0);
const ProjectTarget = totalTasksProjectPage + totalTasksInTasks;
const ProjectProgress = finishedTasksProjectPage + 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 = ProjectTarget || 0;
const value = ProjectProgress || 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`,
});
if (max > 0 && max != value && projectPage.status == "Aktiv") {
projects.add([projectPage.file.link, projectPage.subtitle, dv.paragraph(containerEl.innerHTML), value, max, projectPage.Goal, projectPage.Tasks]);
}
}
dv.table(["Title", "Subtitle", "Bar", "Progress", "Target", "Goal", "Tasks"], Array.from(projects));
+41
View File
@@ -0,0 +1,41 @@
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 {Start, Target, Progress} = dv.page(input.file);
const isDescendingProgress = Progress > Target;
let max, value, percent;
if (isDescendingProgress && Start) {
max = (Target - Start) * -1;
value = Start - Progress;
}
if (!isDescendingProgress && Start) {
max = Target - Start;
value = Progress - Start;
}
if (!isDescendingProgress && !Start) {
max = Target;
value = Progress;
}
percent = Math.round((value / max) * 100);
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)
+28
View File
@@ -0,0 +1,28 @@
// Find all linked projects
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 totalGoalTasksCompleted = goalPage.file.tasks.where(t => t.fullyCompleted === true).length;
let totalProjectTasksCompleted = 0;
let totalTasksTasksCompleted = 0;
projects.values.reduce((acc, p) => {
const mp = dv.page(p.path);
totalProjectTasksCompleted += mp.file.tasks.where( (t) => t.fullyCompleted === true).length;
const aufgaben = mp.file.inlinks.where((t) => {
const mt = dv.page(t.path);
return mt.tags?.includes("process/task");
});
aufgaben.values.reduce((act, t) => {
const mt = dv.page(t.path);
totalTasksTasksCompleted += mt.file.tasks.where( (t) => t.fullyCompleted === true).length;
return mt.file.tasks.length;
}, 0);
return mp.file.tasks.length;
}, 0);
dv.span(totalGoalTasksCompleted + totalProjectTasksCompleted + totalTasksTasksCompleted);
+41
View File
@@ -0,0 +1,41 @@
const projectPage = dv.page(input.file);
const tasks = projectPage.file.inlinks.where((p) => {
const mt = dv.page(p.path)
return mt.tags?.includes("process/task");
});
const totalTasksProjectPage = projectPage.file.tasks.length;
const totalTasksInTasks = tasks.values.reduce((acc, t) => {
const mt = dv.page(t.path);
return acc + mt.file.tasks.length;
}, 0);
const finishedTasksProjectPage = projectPage.file.tasks.where((t) => t.fullyCompleted === true).length;
const finishedTasksinTasks = tasks.values.reduce((acc, t) => {
const mt = dv.page(t.path);
return acc + mt.file.tasks.where((t) => t.fullyCompleted === true).length;
}, 0);
const ProjectTarget = totalTasksProjectPage + totalTasksInTasks;
const ProjectProgress = finishedTasksProjectPage + 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 = ProjectTarget || 0;
const value = ProjectProgress || 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);
+15
View File
@@ -0,0 +1,15 @@
// Find all linked tasks
const projectPage = dv.page(input.file);
const tasks = projectPage.file.inlinks.where((p) => {
const mp = dv.page(p.path);
return mp.tags?.includes("process/task");
});
const totalProjectTasksCompleted = projectPage.file.tasks.where(t => t.fullyCompleted === true).length;
let totalTasksCompleted = 0;
tasks.values.reduce((acc, p) => {
const mp = dv.page(p.path);
totalTasksCompleted += mp.file.tasks.where( (t) => t.fullyCompleted === true).length;
return mp.file.tasks.length;
}, 0);
dv.span(totalProjectTasksCompleted + totalTasksCompleted);
+19
View File
@@ -0,0 +1,19 @@
// Find all linked projects
const projectPage = dv.page(input.file);
const tasks = projectPage.file.inlinks.where((p) => {
const mp = dv.page(p.path);
return mp.tags?.includes("process/task");
});
const totalProjectTasks = projectPage.file.tasks.length;
let totalTasks = 0;
tasks.values.reduce((acc, p) => {
const mp = dv.page(p.path);
const tasks = mp.file.tasks;
totalTasks += tasks.length;
return mp.file.tasks.length;
}, 0);
dv.span(totalProjectTasks + totalTasks);
+34
View File
@@ -0,0 +1,34 @@
// Find all linked projects
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 totalGoalTasks = goalPage.file.tasks.length;
let totalProjectTasks = 0;
let totalTasksTasks = 0;
let totalTasks = 0;
projects.values.reduce((acc, p) => {
const mp = dv.page(p.path);
const tasks = mp.file.tasks;
const aufgaben = mp.file.inlinks.where((p) => {
const mt = dv.page(p);
return mt.tags?.includes("process/task");
});
let totalTasks = 0;
aufgaben.values.reduce((act, t) => {
const mt = dv.page(t.path);
const t2 = mt.file.tasks;
totalTasks += t2.length;
return mt.file.tasks.length;
}, 0);
totalTasksTasks += totalTasks;
totalProjectTasks += tasks.length;
return mp.file.tasks.length;
}, 0);
dv.span(totalGoalTasks + totalProjectTasks + totalTasksTasks);
+143
View File
@@ -0,0 +1,143 @@
const dateformat = "YYYY-MM-DD";
const monthformat = "YYYY-MM";
const yearformat = "YYYY";
const days = parseInt(dv.current().days);
const months = parseInt(dv.current().months);
const years = parseInt(dv.current().years);
const projectFolder = dv.current().projectfolder || '';
const graphColor = dv.current().lineColor || '#de454e';
const charts = [];
if (!(days || months || years)) {
dv.el('strong', 'Task Graphs: to generate graphs, please add days, months, or years (or all three!) in your file properties.');
}
function getDailyTasks(numDays) {
let dates = createArrayOfDates('days', dateformat, numDays);
return countTasks(dates);
}
function getMonthlyTasks(numMonths) {
let dates = createArrayOfDates('months', monthformat, numMonths);
return countTasks(dates);
}
function getYearlyTasks(numYears) {
let dates = createArrayOfDates('years', yearformat, numYears);
return countTasks(dates);
}
function createArrayOfDates(range, format, num) {
const start = moment().add(1, range).startOf('day');
let dates = [...Array(num)];
console.log(dates);
return dates.map(() => start.subtract(1, range).format(format).toString());
}
function countTasks(dates) {
var taskAmounts = [];
var taskLabels = []
for (let i = dates.length - 1;i>=0;i--) {
let doneSymb = '✅';
//let doneSymb = 'completion:: ';
//let dString = `${doneSymb} ${dates[i]}`;
let dString = `completion:: ${dates[i]}`;
let tasks = dv.pages(projectFolder).file.tasks.where(t => t.completed).where(t => t.text.includes(dString));
//let tasks = dv.pages(projectFolder).file.tasks.where(t => t.completion = dates[i]);
taskLabels.push(dates[i]);
taskAmounts.push(tasks.length);
}
return { amounts: taskAmounts, labels: taskLabels };
}
if (days) {
const dailyTasks = getDailyTasks(days);
charts.dayChart = {
type: 'line',
data: {
labels: dailyTasks.labels,
datasets: [{
label: 'Daily completed tasks',
data: dailyTasks.amounts,
backgroundColor: [
graphColor
],
borderColor: [
graphColor
],
borderWidth: 1
}]
}
}
}
if (months) {
const monthlyTasks = getMonthlyTasks(months);
charts.monthChart = {
type: 'line',
options: {
scales: {
y: {
beginAtZero: true
}
}
},
data: {
labels: monthlyTasks.labels,
datasets: [{
tension: 0.1,
label: 'Monthly completed tasks',
data: monthlyTasks.amounts,
backgroundColor: [
graphColor
],
borderColor: [
graphColor
],
borderWidth: 1
}]
}
}
}
if (years) {
const yearlyTasks = getYearlyTasks(years);
charts.yearChart = {
type: 'line',
options: {
scales: {
y: {
beginAtZero: true
}
}
},
data: {
labels: yearlyTasks.labels,
datasets: [{
tension: 0.1,
label: 'Yearly completed tasks',
data: yearlyTasks.amounts,
backgroundColor: [
graphColor
],
borderColor: [
graphColor
],
borderWidth: 1
}]
}
}
}
if (!window.renderChart) {
dv.el('strong', 'Task Graphs: Please install and/or enable the Obsidian Charts plugin');
} else if (!input.container) {
dv.el('strong', 'Task Graphs: Your include has a syntax error. Please see documentation and supply the correct parameters.')
} else {
if (days) window.renderChart(charts.dayChart, input.container);
if (months) window.renderChart(charts.monthChart, input.container);
if (years) window.renderChart(charts.yearChart, input.container);
}
+71
View File
@@ -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);