From 3fddadfe50f781ac232c99504bc7212ecae8e2b2 Mon Sep 17 00:00:00 2001 From: Johan Dahlin Date: Wed, 24 Dec 2025 08:38:03 +0100 Subject: [PATCH] vault backup: 2025-12-24 08:38:03 --- content/.obsidian/workspace.json | 12 +- content/Anatomi & Histologi 2/Statistik.md | 2 +- .../Tasks/ETK-kortlek imorgon kl 09.md | 10 - content/TaskNotes/Views/agenda-default.base | 62 ------ content/TaskNotes/Views/calendar-default.base | 72 ------ content/TaskNotes/Views/kanban-default.base | 64 ------ .../Views/mini-calendar-default.base | 72 ------ content/TaskNotes/Views/relationships.base | 118 ---------- content/TaskNotes/Views/tasks-default.base | 207 ------------------ .../Project level design goals.md} | 0 content/z-Tech/Mega-App/UX.md | 6 + content/z-Tech/Quiz-app.md | 1 + 12 files changed, 14 insertions(+), 612 deletions(-) delete mode 100644 content/TaskNotes/Tasks/ETK-kortlek imorgon kl 09.md delete mode 100644 content/TaskNotes/Views/agenda-default.base delete mode 100644 content/TaskNotes/Views/calendar-default.base delete mode 100644 content/TaskNotes/Views/kanban-default.base delete mode 100644 content/TaskNotes/Views/mini-calendar-default.base delete mode 100644 content/TaskNotes/Views/relationships.base delete mode 100644 content/TaskNotes/Views/tasks-default.base rename content/z-Tech/{Mega Mega.md => Mega-App/Project level design goals.md} (100%) create mode 100644 content/z-Tech/Mega-App/UX.md diff --git a/content/.obsidian/workspace.json b/content/.obsidian/workspace.json index c540c03..12594bc 100644 --- a/content/.obsidian/workspace.json +++ b/content/.obsidian/workspace.json @@ -13,13 +13,13 @@ "state": { "type": "markdown", "state": { - "file": "Slides.pdf.md", + "file": "z-Tech/Mega-App/Project level design goals.md", "mode": "source", "source": false, "backlinks": false }, "icon": "lucide-file", - "title": "Slides.pdf" + "title": "Project level design goals" } } ] @@ -193,12 +193,14 @@ }, "active": "b6de1b6650c09ff3", "lastOpenFiles": [ - "z-Tech/Mega Mega.md", + "z-Tech/Mega-App/UX.md", + "z-Tech/Mega-App/Project level design goals.md", + "z-Tech/Quiz-app.md", + "z-Tech/Mega-App", "Slides.pdf.md", "Anatomi & Histologi 2/Gamla tentor/2024-01-10/!2024-01-10-0088-KOM.pdf", "Anatomi & Histologi 2/Statistik.md", "z-Tech/Lecture tracking.md", - "z-Tech/Quiz-app.md", "Anatomi & Histologi 2/Gamla tentor/2024-01-10/30.md", "Anatomi & Histologi 2/Gamla tentor/2024-01-10/29.md", "Anatomi & Histologi 2/Gamla tentor/2024-01-10/28.md", @@ -219,7 +221,6 @@ "Anatomi & Histologi 2/Gamla tentor/2024-01-10/13.md", "Anatomi & Histologi 2/Gamla tentor/2024-01-10/12.md", "Anatomi & Histologi 2/Gamla tentor/2024-01-10/11.md", - "Anatomi & Histologi 2/Gamla tentor/2024-01-10/10.md", "attachments/image-48.png", "Biokemi/Plasmidlabb/Articles/Report guidelines 2025.pdf", "Biokemi/Plasmidlabb/Protokoll.pdf", @@ -229,7 +230,6 @@ "Anatomi & Histologi 2/Gamla tentor/2024-01-10/!2024-01-10-0009-RYY.pdf", "Anatomi & Histologi 2/Gamla tentor/2024-05-29/!2024-05-29-0125-GZX.pdf", "Anatomi & Histologi 2/1 Öga anatomi/Organa sensum.pdf", - "Anatomi & Histologi 2/2 Öra anatomi/Slides.pdf.pdf", "attachments/image-121.png", "attachments/image-120.png", "attachments/image-119.png", diff --git a/content/Anatomi & Histologi 2/Statistik.md b/content/Anatomi & Histologi 2/Statistik.md index 0c6ffa0..2790996 100644 --- a/content/Anatomi & Histologi 2/Statistik.md +++ b/content/Anatomi & Histologi 2/Statistik.md @@ -68,5 +68,5 @@ Taggar: - [ ] TBL CNS 3h -Look at [[Mega Mega#^25f90e]] +Look at [[Project level design goals#^25f90e]] diff --git a/content/TaskNotes/Tasks/ETK-kortlek imorgon kl 09.md b/content/TaskNotes/Tasks/ETK-kortlek imorgon kl 09.md deleted file mode 100644 index 2208300..0000000 --- a/content/TaskNotes/Tasks/ETK-kortlek imorgon kl 09.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -status: none -priority: normal -scheduled: 2025-12-10T09:00 -dateCreated: 2025-12-09T23:34:59.094+01:00 -dateModified: 2025-12-09T23:38:30.465+01:00 -tags: - - task ---- - diff --git a/content/TaskNotes/Views/agenda-default.base b/content/TaskNotes/Views/agenda-default.base deleted file mode 100644 index 5bda2da..0000000 --- a/content/TaskNotes/Views/agenda-default.base +++ /dev/null @@ -1,62 +0,0 @@ -filters: - and: - - file.hasTag("task") -formulas: - priorityWeight: if(priority=="none",0,if(priority=="low",1,if(priority=="normal",2,if(priority=="high",3,999)))) - daysUntilDue: if(due, ((number(date(due)) - number(today())) / 86400000).floor(), null) - daysUntilScheduled: if(scheduled, ((number(date(scheduled)) - number(today())) / 86400000).floor(), null) - daysSinceCreated: ((number(now()) - number(file.ctime)) / 86400000).floor() - daysSinceModified: ((number(now()) - number(file.mtime)) / 86400000).floor() - isOverdue: due && date(due) < today() && status != "done" - isDueToday: due && date(due).date() == today() - isDueThisWeek: due && date(due) >= today() && date(due) <= today() + "7d" - isScheduledToday: scheduled && date(scheduled).date() == today() - isRecurring: recurrence && !recurrence.isEmpty() - hasTimeEstimate: timeEstimate && timeEstimate > 0 - timeRemaining: if(timeEstimate && timeEstimate > 0, timeEstimate - if(timeEntries, list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0), 0), null) - efficiencyRatio: if(timeEstimate && timeEstimate > 0 && timeEntries, (list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) / timeEstimate * 100).round(), null) - timeTrackedThisWeek: if(timeEntries, list(timeEntries).filter(value.endTime && date(value.startTime) >= today() - "7d").map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0).round(), 0) - timeTrackedToday: if(timeEntries, list(timeEntries).filter(value.endTime && date(value.startTime).date() == today()).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0).round(), 0) - dueMonth: if(due, date(due).format("YYYY-MM"), "No due date") - dueWeek: if(due, date(due).format("YYYY-[W]WW"), "No due date") - scheduledMonth: if(scheduled, date(scheduled).format("YYYY-MM"), "Not scheduled") - scheduledWeek: if(scheduled, date(scheduled).format("YYYY-[W]WW"), "Not scheduled") - dueDateCategory: if(!due, "No due date", if(date(due) < today(), "Overdue", if(date(due).date() == today(), "Today", if(date(due).date() == today() + "1d", "Tomorrow", if(date(due) <= today() + "7d", "This week", "Later"))))) - timeEstimateCategory: if(!timeEstimate || timeEstimate == 0, "No estimate", if(timeEstimate < 30, "Quick (<30m)", if(timeEstimate <= 120, "Medium (30m-2h)", "Long (>2h)"))) - ageCategory: if(((number(now()) - number(file.ctime)) / 86400000) < 1, "Today", if(((number(now()) - number(file.ctime)) / 86400000) < 7, "This week", if(((number(now()) - number(file.ctime)) / 86400000) < 30, "This month", "Older"))) - createdMonth: file.ctime.format("YYYY-MM") - modifiedMonth: file.mtime.format("YYYY-MM") - priorityCategory: if(priority=="none","None",if(priority=="low","Low",if(priority=="normal","Normal",if(priority=="high","High","No priority")))) - projectCount: if(!projects || list(projects).length == 0, "No projects", if(list(projects).length == 1, "Single project", "Multiple projects")) - contextCount: if(!contexts || list(contexts).length == 0, "No contexts", if(list(contexts).length == 1, "Single context", "Multiple contexts")) - trackingStatus: if(!timeEstimate || timeEstimate == 0, "No estimate", if(!timeEntries || list(timeEntries).length == 0, "Not started", if(formula.efficiencyRatio < 100, "Under estimate", "Over estimate"))) - nextDate: if(due && scheduled, if(date(due) < date(scheduled), due, scheduled), if(due, due, scheduled)) - daysUntilNext: if(due && scheduled, min(formula.daysUntilDue, formula.daysUntilScheduled), if(due, formula.daysUntilDue, formula.daysUntilScheduled)) - hasDate: due || scheduled - isToday: (due && date(due).date() == today()) || (scheduled && date(scheduled).date() == today()) - isThisWeek: (due && date(due) >= today() && date(due) <= today() + "7d") || (scheduled && date(scheduled) >= today() && date(scheduled) <= today() + "7d") - nextDateCategory: if(!due && !scheduled, "No date", if((due && date(due) < today()) || (scheduled && date(scheduled) < today()), "Overdue/Past", if((due && date(due).date() == today()) || (scheduled && date(scheduled).date() == today()), "Today", if((due && date(due).date() == today() + "1d") || (scheduled && date(scheduled).date() == today() + "1d"), "Tomorrow", if((due && date(due) <= today() + "7d") || (scheduled && date(scheduled) <= today() + "7d"), "This week", "Later"))))) - nextDateMonth: if(due && scheduled, if(date(due) < date(scheduled), date(due).format("YYYY-MM"), date(scheduled).format("YYYY-MM")), if(due, date(due).format("YYYY-MM"), if(scheduled, date(scheduled).format("YYYY-MM"), "No date"))) - nextDateWeek: if(due && scheduled, if(date(due) < date(scheduled), date(due).format("YYYY-[W]WW"), date(scheduled).format("YYYY-[W]WW")), if(due, date(due).format("YYYY-[W]WW"), if(scheduled, date(scheduled).format("YYYY-[W]WW"), "No date"))) - urgencyScore: if(!due && !scheduled, formula.priorityWeight, formula.priorityWeight + max(0, 10 - formula.daysUntilNext)) - timeTrackedFormatted: if(timeEntries, if(list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) >= 60, (list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) / 60).floor() + "h " + (list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) % 60).round() + "m", list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0).round() + "m"), "0m") - dueDateDisplay: if(!due, "", if(date(due).date() == today(), "Today", if(date(due).date() == today() + "1d", "Tomorrow", if(date(due).date() == today() - "1d", "Yesterday", if(date(due) < today(), formula.daysUntilDue * -1 + "d ago", if(date(due) <= today() + "7d", date(due).format("ddd"), date(due).format("MMM D"))))))) -views: - - type: tasknotesCalendar - name: Agenda - order: - - status - - priority - - due - - scheduled - - projects - - contexts - - file.tags - - blockedBy - - file.name - - recurrence - - complete_instances - calendarView: listWeek - startDateProperty: file.ctime - listDayCount: 7 - titleProperty: file.basename diff --git a/content/TaskNotes/Views/calendar-default.base b/content/TaskNotes/Views/calendar-default.base deleted file mode 100644 index 6b63c05..0000000 --- a/content/TaskNotes/Views/calendar-default.base +++ /dev/null @@ -1,72 +0,0 @@ -filters: - and: - - file.hasTag("task") -formulas: - priorityWeight: if(priority=="none",0,if(priority=="low",1,if(priority=="normal",2,if(priority=="high",3,999)))) - daysUntilDue: if(due, ((number(date(due)) - number(today())) / 86400000).floor(), null) - daysUntilScheduled: if(scheduled, ((number(date(scheduled)) - number(today())) / 86400000).floor(), null) - daysSinceCreated: ((number(now()) - number(file.ctime)) / 86400000).floor() - daysSinceModified: ((number(now()) - number(file.mtime)) / 86400000).floor() - isOverdue: due && date(due) < today() && status != "done" - isDueToday: due && date(due).date() == today() - isDueThisWeek: due && date(due) >= today() && date(due) <= today() + "7d" - isScheduledToday: scheduled && date(scheduled).date() == today() - isRecurring: recurrence && !recurrence.isEmpty() - hasTimeEstimate: timeEstimate && timeEstimate > 0 - timeRemaining: if(timeEstimate && timeEstimate > 0, timeEstimate - if(timeEntries, list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0), 0), null) - efficiencyRatio: if(timeEstimate && timeEstimate > 0 && timeEntries, (list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) / timeEstimate * 100).round(), null) - timeTrackedThisWeek: if(timeEntries, list(timeEntries).filter(value.endTime && date(value.startTime) >= today() - "7d").map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0).round(), 0) - timeTrackedToday: if(timeEntries, list(timeEntries).filter(value.endTime && date(value.startTime).date() == today()).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0).round(), 0) - dueMonth: if(due, date(due).format("YYYY-MM"), "No due date") - dueWeek: if(due, date(due).format("YYYY-[W]WW"), "No due date") - scheduledMonth: if(scheduled, date(scheduled).format("YYYY-MM"), "Not scheduled") - scheduledWeek: if(scheduled, date(scheduled).format("YYYY-[W]WW"), "Not scheduled") - dueDateCategory: if(!due, "No due date", if(date(due) < today(), "Overdue", if(date(due).date() == today(), "Today", if(date(due).date() == today() + "1d", "Tomorrow", if(date(due) <= today() + "7d", "This week", "Later"))))) - timeEstimateCategory: if(!timeEstimate || timeEstimate == 0, "No estimate", if(timeEstimate < 30, "Quick (<30m)", if(timeEstimate <= 120, "Medium (30m-2h)", "Long (>2h)"))) - ageCategory: if(((number(now()) - number(file.ctime)) / 86400000) < 1, "Today", if(((number(now()) - number(file.ctime)) / 86400000) < 7, "This week", if(((number(now()) - number(file.ctime)) / 86400000) < 30, "This month", "Older"))) - createdMonth: file.ctime.format("YYYY-MM") - modifiedMonth: file.mtime.format("YYYY-MM") - priorityCategory: if(priority=="none","None",if(priority=="low","Low",if(priority=="normal","Normal",if(priority=="high","High","No priority")))) - projectCount: if(!projects || list(projects).length == 0, "No projects", if(list(projects).length == 1, "Single project", "Multiple projects")) - contextCount: if(!contexts || list(contexts).length == 0, "No contexts", if(list(contexts).length == 1, "Single context", "Multiple contexts")) - trackingStatus: if(!timeEstimate || timeEstimate == 0, "No estimate", if(!timeEntries || list(timeEntries).length == 0, "Not started", if(formula.efficiencyRatio < 100, "Under estimate", "Over estimate"))) - nextDate: if(due && scheduled, if(date(due) < date(scheduled), due, scheduled), if(due, due, scheduled)) - daysUntilNext: if(due && scheduled, min(formula.daysUntilDue, formula.daysUntilScheduled), if(due, formula.daysUntilDue, formula.daysUntilScheduled)) - hasDate: due || scheduled - isToday: (due && date(due).date() == today()) || (scheduled && date(scheduled).date() == today()) - isThisWeek: (due && date(due) >= today() && date(due) <= today() + "7d") || (scheduled && date(scheduled) >= today() && date(scheduled) <= today() + "7d") - nextDateCategory: if(!due && !scheduled, "No date", if((due && date(due) < today()) || (scheduled && date(scheduled) < today()), "Overdue/Past", if((due && date(due).date() == today()) || (scheduled && date(scheduled).date() == today()), "Today", if((due && date(due).date() == today() + "1d") || (scheduled && date(scheduled).date() == today() + "1d"), "Tomorrow", if((due && date(due) <= today() + "7d") || (scheduled && date(scheduled) <= today() + "7d"), "This week", "Later"))))) - nextDateMonth: if(due && scheduled, if(date(due) < date(scheduled), date(due).format("YYYY-MM"), date(scheduled).format("YYYY-MM")), if(due, date(due).format("YYYY-MM"), if(scheduled, date(scheduled).format("YYYY-MM"), "No date"))) - nextDateWeek: if(due && scheduled, if(date(due) < date(scheduled), date(due).format("YYYY-[W]WW"), date(scheduled).format("YYYY-[W]WW")), if(due, date(due).format("YYYY-[W]WW"), if(scheduled, date(scheduled).format("YYYY-[W]WW"), "No date"))) - urgencyScore: if(!due && !scheduled, formula.priorityWeight, formula.priorityWeight + max(0, 10 - formula.daysUntilNext)) - timeTrackedFormatted: if(timeEntries, if(list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) >= 60, (list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) / 60).floor() + "h " + (list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) % 60).round() + "m", list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0).round() + "m"), "0m") - dueDateDisplay: if(!due, "", if(date(due).date() == today(), "Today", if(date(due).date() == today() + "1d", "Tomorrow", if(date(due).date() == today() - "1d", "Yesterday", if(date(due) < today(), formula.daysUntilDue * -1 + "d ago", if(date(due) <= today() + "7d", date(due).format("ddd"), date(due).format("MMM D"))))))) -views: - - type: tasknotesCalendar - name: Calendar - order: - - status - - priority - - due - - scheduled - - projects - - contexts - - file.tags - - blockedBy - - file.name - - recurrence - - complete_instances - options: - showScheduled: true - showDue: true - showRecurring: true - showTimeEntries: true - showTimeblocks: true - showPropertyBasedEvents: true - calendarView: timeGridWeek - customDayCount: 3 - firstDay: 0 - slotMinTime: 06:00:00 - slotMaxTime: 22:00:00 - slotDuration: 00:30:00 - calendarView: timeGridCustom diff --git a/content/TaskNotes/Views/kanban-default.base b/content/TaskNotes/Views/kanban-default.base deleted file mode 100644 index 9bc7ea8..0000000 --- a/content/TaskNotes/Views/kanban-default.base +++ /dev/null @@ -1,64 +0,0 @@ -filters: - and: - - file.hasTag("task") -formulas: - priorityWeight: if(priority=="none",0,if(priority=="low",1,if(priority=="normal",2,if(priority=="high",3,999)))) - daysUntilDue: if(due, ((number(date(due)) - number(today())) / 86400000).floor(), null) - daysUntilScheduled: if(scheduled, ((number(date(scheduled)) - number(today())) / 86400000).floor(), null) - daysSinceCreated: ((number(now()) - number(file.ctime)) / 86400000).floor() - daysSinceModified: ((number(now()) - number(file.mtime)) / 86400000).floor() - isOverdue: due && date(due) < today() && status != "done" - isDueToday: due && date(due).date() == today() - isDueThisWeek: due && date(due) >= today() && date(due) <= today() + "7d" - isScheduledToday: scheduled && date(scheduled).date() == today() - isRecurring: recurrence && !recurrence.isEmpty() - hasTimeEstimate: timeEstimate && timeEstimate > 0 - timeRemaining: if(timeEstimate && timeEstimate > 0, timeEstimate - if(timeEntries, list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0), 0), null) - efficiencyRatio: if(timeEstimate && timeEstimate > 0 && timeEntries, (list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) / timeEstimate * 100).round(), null) - timeTrackedThisWeek: if(timeEntries, list(timeEntries).filter(value.endTime && date(value.startTime) >= today() - "7d").map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0).round(), 0) - timeTrackedToday: if(timeEntries, list(timeEntries).filter(value.endTime && date(value.startTime).date() == today()).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0).round(), 0) - dueMonth: if(due, date(due).format("YYYY-MM"), "No due date") - dueWeek: if(due, date(due).format("YYYY-[W]WW"), "No due date") - scheduledMonth: if(scheduled, date(scheduled).format("YYYY-MM"), "Not scheduled") - scheduledWeek: if(scheduled, date(scheduled).format("YYYY-[W]WW"), "Not scheduled") - dueDateCategory: if(!due, "No due date", if(date(due) < today(), "Overdue", if(date(due).date() == today(), "Today", if(date(due).date() == today() + "1d", "Tomorrow", if(date(due) <= today() + "7d", "This week", "Later"))))) - timeEstimateCategory: if(!timeEstimate || timeEstimate == 0, "No estimate", if(timeEstimate < 30, "Quick (<30m)", if(timeEstimate <= 120, "Medium (30m-2h)", "Long (>2h)"))) - ageCategory: if(((number(now()) - number(file.ctime)) / 86400000) < 1, "Today", if(((number(now()) - number(file.ctime)) / 86400000) < 7, "This week", if(((number(now()) - number(file.ctime)) / 86400000) < 30, "This month", "Older"))) - createdMonth: file.ctime.format("YYYY-MM") - modifiedMonth: file.mtime.format("YYYY-MM") - priorityCategory: if(priority=="none","None",if(priority=="low","Low",if(priority=="normal","Normal",if(priority=="high","High","No priority")))) - projectCount: if(!projects || list(projects).length == 0, "No projects", if(list(projects).length == 1, "Single project", "Multiple projects")) - contextCount: if(!contexts || list(contexts).length == 0, "No contexts", if(list(contexts).length == 1, "Single context", "Multiple contexts")) - trackingStatus: if(!timeEstimate || timeEstimate == 0, "No estimate", if(!timeEntries || list(timeEntries).length == 0, "Not started", if(formula.efficiencyRatio < 100, "Under estimate", "Over estimate"))) - nextDate: if(due && scheduled, if(date(due) < date(scheduled), due, scheduled), if(due, due, scheduled)) - daysUntilNext: if(due && scheduled, min(formula.daysUntilDue, formula.daysUntilScheduled), if(due, formula.daysUntilDue, formula.daysUntilScheduled)) - hasDate: due || scheduled - isToday: (due && date(due).date() == today()) || (scheduled && date(scheduled).date() == today()) - isThisWeek: (due && date(due) >= today() && date(due) <= today() + "7d") || (scheduled && date(scheduled) >= today() && date(scheduled) <= today() + "7d") - nextDateCategory: if(!due && !scheduled, "No date", if((due && date(due) < today()) || (scheduled && date(scheduled) < today()), "Overdue/Past", if((due && date(due).date() == today()) || (scheduled && date(scheduled).date() == today()), "Today", if((due && date(due).date() == today() + "1d") || (scheduled && date(scheduled).date() == today() + "1d"), "Tomorrow", if((due && date(due) <= today() + "7d") || (scheduled && date(scheduled) <= today() + "7d"), "This week", "Later"))))) - nextDateMonth: if(due && scheduled, if(date(due) < date(scheduled), date(due).format("YYYY-MM"), date(scheduled).format("YYYY-MM")), if(due, date(due).format("YYYY-MM"), if(scheduled, date(scheduled).format("YYYY-MM"), "No date"))) - nextDateWeek: if(due && scheduled, if(date(due) < date(scheduled), date(due).format("YYYY-[W]WW"), date(scheduled).format("YYYY-[W]WW")), if(due, date(due).format("YYYY-[W]WW"), if(scheduled, date(scheduled).format("YYYY-[W]WW"), "No date"))) - urgencyScore: if(!due && !scheduled, formula.priorityWeight, formula.priorityWeight + max(0, 10 - formula.daysUntilNext)) - timeTrackedFormatted: if(timeEntries, if(list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) >= 60, (list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) / 60).floor() + "h " + (list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) % 60).round() + "m", list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0).round() + "m"), "0m") - dueDateDisplay: if(!due, "", if(date(due).date() == today(), "Today", if(date(due).date() == today() + "1d", "Tomorrow", if(date(due).date() == today() - "1d", "Yesterday", if(date(due) < today(), formula.daysUntilDue * -1 + "d ago", if(date(due) <= today() + "7d", date(due).format("ddd"), date(due).format("MMM D"))))))) -views: - - type: tasknotesKanban - name: Kanban Board - groupBy: - property: status - direction: ASC - order: - - status - - priority - - due - - scheduled - - projects - - contexts - - file.tags - - blockedBy - - file.name - - recurrence - - complete_instances - options: - columnWidth: 280 - hideEmptyColumns: false diff --git a/content/TaskNotes/Views/mini-calendar-default.base b/content/TaskNotes/Views/mini-calendar-default.base deleted file mode 100644 index c6a48a0..0000000 --- a/content/TaskNotes/Views/mini-calendar-default.base +++ /dev/null @@ -1,72 +0,0 @@ -filters: - and: - - file.hasTag("task") -formulas: - priorityWeight: if(priority=="none",0,if(priority=="low",1,if(priority=="normal",2,if(priority=="high",3,999)))) - daysUntilDue: if(due, ((number(date(due)) - number(today())) / 86400000).floor(), null) - daysUntilScheduled: if(scheduled, ((number(date(scheduled)) - number(today())) / 86400000).floor(), null) - daysSinceCreated: ((number(now()) - number(file.ctime)) / 86400000).floor() - daysSinceModified: ((number(now()) - number(file.mtime)) / 86400000).floor() - isOverdue: due && date(due) < today() && status != "done" - isDueToday: due && date(due).date() == today() - isDueThisWeek: due && date(due) >= today() && date(due) <= today() + "7d" - isScheduledToday: scheduled && date(scheduled).date() == today() - isRecurring: recurrence && !recurrence.isEmpty() - hasTimeEstimate: timeEstimate && timeEstimate > 0 - timeRemaining: if(timeEstimate && timeEstimate > 0, timeEstimate - if(timeEntries, list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0), 0), null) - efficiencyRatio: if(timeEstimate && timeEstimate > 0 && timeEntries, (list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) / timeEstimate * 100).round(), null) - timeTrackedThisWeek: if(timeEntries, list(timeEntries).filter(value.endTime && date(value.startTime) >= today() - "7d").map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0).round(), 0) - timeTrackedToday: if(timeEntries, list(timeEntries).filter(value.endTime && date(value.startTime).date() == today()).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0).round(), 0) - dueMonth: if(due, date(due).format("YYYY-MM"), "No due date") - dueWeek: if(due, date(due).format("YYYY-[W]WW"), "No due date") - scheduledMonth: if(scheduled, date(scheduled).format("YYYY-MM"), "Not scheduled") - scheduledWeek: if(scheduled, date(scheduled).format("YYYY-[W]WW"), "Not scheduled") - dueDateCategory: if(!due, "No due date", if(date(due) < today(), "Overdue", if(date(due).date() == today(), "Today", if(date(due).date() == today() + "1d", "Tomorrow", if(date(due) <= today() + "7d", "This week", "Later"))))) - timeEstimateCategory: if(!timeEstimate || timeEstimate == 0, "No estimate", if(timeEstimate < 30, "Quick (<30m)", if(timeEstimate <= 120, "Medium (30m-2h)", "Long (>2h)"))) - ageCategory: if(((number(now()) - number(file.ctime)) / 86400000) < 1, "Today", if(((number(now()) - number(file.ctime)) / 86400000) < 7, "This week", if(((number(now()) - number(file.ctime)) / 86400000) < 30, "This month", "Older"))) - createdMonth: file.ctime.format("YYYY-MM") - modifiedMonth: file.mtime.format("YYYY-MM") - priorityCategory: if(priority=="none","None",if(priority=="low","Low",if(priority=="normal","Normal",if(priority=="high","High","No priority")))) - projectCount: if(!projects || list(projects).length == 0, "No projects", if(list(projects).length == 1, "Single project", "Multiple projects")) - contextCount: if(!contexts || list(contexts).length == 0, "No contexts", if(list(contexts).length == 1, "Single context", "Multiple contexts")) - trackingStatus: if(!timeEstimate || timeEstimate == 0, "No estimate", if(!timeEntries || list(timeEntries).length == 0, "Not started", if(formula.efficiencyRatio < 100, "Under estimate", "Over estimate"))) - nextDate: if(due && scheduled, if(date(due) < date(scheduled), due, scheduled), if(due, due, scheduled)) - daysUntilNext: if(due && scheduled, min(formula.daysUntilDue, formula.daysUntilScheduled), if(due, formula.daysUntilDue, formula.daysUntilScheduled)) - hasDate: due || scheduled - isToday: (due && date(due).date() == today()) || (scheduled && date(scheduled).date() == today()) - isThisWeek: (due && date(due) >= today() && date(due) <= today() + "7d") || (scheduled && date(scheduled) >= today() && date(scheduled) <= today() + "7d") - nextDateCategory: if(!due && !scheduled, "No date", if((due && date(due) < today()) || (scheduled && date(scheduled) < today()), "Overdue/Past", if((due && date(due).date() == today()) || (scheduled && date(scheduled).date() == today()), "Today", if((due && date(due).date() == today() + "1d") || (scheduled && date(scheduled).date() == today() + "1d"), "Tomorrow", if((due && date(due) <= today() + "7d") || (scheduled && date(scheduled) <= today() + "7d"), "This week", "Later"))))) - nextDateMonth: if(due && scheduled, if(date(due) < date(scheduled), date(due).format("YYYY-MM"), date(scheduled).format("YYYY-MM")), if(due, date(due).format("YYYY-MM"), if(scheduled, date(scheduled).format("YYYY-MM"), "No date"))) - nextDateWeek: if(due && scheduled, if(date(due) < date(scheduled), date(due).format("YYYY-[W]WW"), date(scheduled).format("YYYY-[W]WW")), if(due, date(due).format("YYYY-[W]WW"), if(scheduled, date(scheduled).format("YYYY-[W]WW"), "No date"))) - urgencyScore: if(!due && !scheduled, formula.priorityWeight, formula.priorityWeight + max(0, 10 - formula.daysUntilNext)) - timeTrackedFormatted: if(timeEntries, if(list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) >= 60, (list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) / 60).floor() + "h " + (list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) % 60).round() + "m", list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0).round() + "m"), "0m") - dueDateDisplay: if(!due, "", if(date(due).date() == today(), "Today", if(date(due).date() == today() + "1d", "Tomorrow", if(date(due).date() == today() - "1d", "Yesterday", if(date(due) < today(), formula.daysUntilDue * -1 + "d ago", if(date(due) <= today() + "7d", date(due).format("ddd"), date(due).format("MMM D"))))))) -views: - - type: tasknotesMiniCalendar - name: Due - order: - - status - - priority - - due - - scheduled - - projects - - contexts - - file.tags - - blockedBy - - file.name - - recurrence - - complete_instances - sort: - - property: due - direction: ASC - dateProperty: due - - type: tasknotesMiniCalendar - name: Scheduled - order: [] - dateProperty: scheduled - - type: tasknotesMiniCalendar - name: Created - dateProperty: file.ctime - - type: tasknotesMiniCalendar - name: Modified - dateProperty: file.mtime diff --git a/content/TaskNotes/Views/relationships.base b/content/TaskNotes/Views/relationships.base deleted file mode 100644 index bfac856..0000000 --- a/content/TaskNotes/Views/relationships.base +++ /dev/null @@ -1,118 +0,0 @@ -filters: - and: - - file.hasTag("task") -formulas: - priorityWeight: if(priority=="none",0,if(priority=="low",1,if(priority=="normal",2,if(priority=="high",3,999)))) - daysUntilDue: if(due, ((number(date(due)) - number(today())) / 86400000).floor(), null) - daysUntilScheduled: if(scheduled, ((number(date(scheduled)) - number(today())) / 86400000).floor(), null) - daysSinceCreated: ((number(now()) - number(file.ctime)) / 86400000).floor() - daysSinceModified: ((number(now()) - number(file.mtime)) / 86400000).floor() - isOverdue: due && date(due) < today() && status != "done" - isDueToday: due && date(due).date() == today() - isDueThisWeek: due && date(due) >= today() && date(due) <= today() + "7d" - isScheduledToday: scheduled && date(scheduled).date() == today() - isRecurring: recurrence && !recurrence.isEmpty() - hasTimeEstimate: timeEstimate && timeEstimate > 0 - timeRemaining: if(timeEstimate && timeEstimate > 0, timeEstimate - if(timeEntries, list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0), 0), null) - efficiencyRatio: if(timeEstimate && timeEstimate > 0 && timeEntries, (list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) / timeEstimate * 100).round(), null) - timeTrackedThisWeek: if(timeEntries, list(timeEntries).filter(value.endTime && date(value.startTime) >= today() - "7d").map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0).round(), 0) - timeTrackedToday: if(timeEntries, list(timeEntries).filter(value.endTime && date(value.startTime).date() == today()).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0).round(), 0) - dueMonth: if(due, date(due).format("YYYY-MM"), "No due date") - dueWeek: if(due, date(due).format("YYYY-[W]WW"), "No due date") - scheduledMonth: if(scheduled, date(scheduled).format("YYYY-MM"), "Not scheduled") - scheduledWeek: if(scheduled, date(scheduled).format("YYYY-[W]WW"), "Not scheduled") - dueDateCategory: if(!due, "No due date", if(date(due) < today(), "Overdue", if(date(due).date() == today(), "Today", if(date(due).date() == today() + "1d", "Tomorrow", if(date(due) <= today() + "7d", "This week", "Later"))))) - timeEstimateCategory: if(!timeEstimate || timeEstimate == 0, "No estimate", if(timeEstimate < 30, "Quick (<30m)", if(timeEstimate <= 120, "Medium (30m-2h)", "Long (>2h)"))) - ageCategory: if(((number(now()) - number(file.ctime)) / 86400000) < 1, "Today", if(((number(now()) - number(file.ctime)) / 86400000) < 7, "This week", if(((number(now()) - number(file.ctime)) / 86400000) < 30, "This month", "Older"))) - createdMonth: file.ctime.format("YYYY-MM") - modifiedMonth: file.mtime.format("YYYY-MM") - priorityCategory: if(priority=="none","None",if(priority=="low","Low",if(priority=="normal","Normal",if(priority=="high","High","No priority")))) - projectCount: if(!projects || list(projects).length == 0, "No projects", if(list(projects).length == 1, "Single project", "Multiple projects")) - contextCount: if(!contexts || list(contexts).length == 0, "No contexts", if(list(contexts).length == 1, "Single context", "Multiple contexts")) - trackingStatus: if(!timeEstimate || timeEstimate == 0, "No estimate", if(!timeEntries || list(timeEntries).length == 0, "Not started", if(formula.efficiencyRatio < 100, "Under estimate", "Over estimate"))) - nextDate: if(due && scheduled, if(date(due) < date(scheduled), due, scheduled), if(due, due, scheduled)) - daysUntilNext: if(due && scheduled, min(formula.daysUntilDue, formula.daysUntilScheduled), if(due, formula.daysUntilDue, formula.daysUntilScheduled)) - hasDate: due || scheduled - isToday: (due && date(due).date() == today()) || (scheduled && date(scheduled).date() == today()) - isThisWeek: (due && date(due) >= today() && date(due) <= today() + "7d") || (scheduled && date(scheduled) >= today() && date(scheduled) <= today() + "7d") - nextDateCategory: if(!due && !scheduled, "No date", if((due && date(due) < today()) || (scheduled && date(scheduled) < today()), "Overdue/Past", if((due && date(due).date() == today()) || (scheduled && date(scheduled).date() == today()), "Today", if((due && date(due).date() == today() + "1d") || (scheduled && date(scheduled).date() == today() + "1d"), "Tomorrow", if((due && date(due) <= today() + "7d") || (scheduled && date(scheduled) <= today() + "7d"), "This week", "Later"))))) - nextDateMonth: if(due && scheduled, if(date(due) < date(scheduled), date(due).format("YYYY-MM"), date(scheduled).format("YYYY-MM")), if(due, date(due).format("YYYY-MM"), if(scheduled, date(scheduled).format("YYYY-MM"), "No date"))) - nextDateWeek: if(due && scheduled, if(date(due) < date(scheduled), date(due).format("YYYY-[W]WW"), date(scheduled).format("YYYY-[W]WW")), if(due, date(due).format("YYYY-[W]WW"), if(scheduled, date(scheduled).format("YYYY-[W]WW"), "No date"))) - urgencyScore: if(!due && !scheduled, formula.priorityWeight, formula.priorityWeight + max(0, 10 - formula.daysUntilNext)) - timeTrackedFormatted: if(timeEntries, if(list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) >= 60, (list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) / 60).floor() + "h " + (list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) % 60).round() + "m", list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0).round() + "m"), "0m") - dueDateDisplay: if(!due, "", if(date(due).date() == today(), "Today", if(date(due).date() == today() + "1d", "Tomorrow", if(date(due).date() == today() - "1d", "Yesterday", if(date(due) < today(), formula.daysUntilDue * -1 + "d ago", if(date(due) <= today() + "7d", date(due).format("ddd"), date(due).format("MMM D"))))))) -views: - - type: tasknotesKanban - name: Subtasks - filters: - and: - - note.projects.contains(this.file.asLink()) - groupBy: - property: status - direction: ASC - order: - - status - - priority - - due - - scheduled - - projects - - contexts - - file.tags - - blockedBy - - file.name - - recurrence - - complete_instances - - type: tasknotesTaskList - name: Projects - filters: - and: - - list(this.projects).contains(file.asLink()) - order: - - status - - priority - - due - - scheduled - - projects - - contexts - - file.tags - - blockedBy - - file.name - - recurrence - - complete_instances - - type: tasknotesTaskList - name: Blocked By - filters: - and: - - list(this.note.blockedBy).map(value.uid).contains(file.asLink()) - order: - - status - - priority - - due - - scheduled - - projects - - contexts - - file.tags - - blockedBy - - file.name - - recurrence - - complete_instances - - type: tasknotesKanban - name: Blocking - filters: - and: - - note.blockedBy.map(value.uid).contains(this.file.asLink()) - groupBy: - property: status - direction: ASC - order: - - status - - priority - - due - - scheduled - - projects - - contexts - - file.tags - - blockedBy - - file.name - - recurrence - - complete_instances diff --git a/content/TaskNotes/Views/tasks-default.base b/content/TaskNotes/Views/tasks-default.base deleted file mode 100644 index 3163647..0000000 --- a/content/TaskNotes/Views/tasks-default.base +++ /dev/null @@ -1,207 +0,0 @@ -filters: - and: - - file.hasTag("task") -formulas: - priorityWeight: if(priority=="none",0,if(priority=="low",1,if(priority=="normal",2,if(priority=="high",3,999)))) - daysUntilDue: if(due, ((number(date(due)) - number(today())) / 86400000).floor(), null) - daysUntilScheduled: if(scheduled, ((number(date(scheduled)) - number(today())) / 86400000).floor(), null) - daysSinceCreated: ((number(now()) - number(file.ctime)) / 86400000).floor() - daysSinceModified: ((number(now()) - number(file.mtime)) / 86400000).floor() - isOverdue: due && date(due) < today() && status != "done" - isDueToday: due && date(due).date() == today() - isDueThisWeek: due && date(due) >= today() && date(due) <= today() + "7d" - isScheduledToday: scheduled && date(scheduled).date() == today() - isRecurring: recurrence && !recurrence.isEmpty() - hasTimeEstimate: timeEstimate && timeEstimate > 0 - timeRemaining: if(timeEstimate && timeEstimate > 0, timeEstimate - if(timeEntries, list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0), 0), null) - efficiencyRatio: if(timeEstimate && timeEstimate > 0 && timeEntries, (list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) / timeEstimate * 100).round(), null) - timeTrackedThisWeek: if(timeEntries, list(timeEntries).filter(value.endTime && date(value.startTime) >= today() - "7d").map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0).round(), 0) - timeTrackedToday: if(timeEntries, list(timeEntries).filter(value.endTime && date(value.startTime).date() == today()).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0).round(), 0) - dueMonth: if(due, date(due).format("YYYY-MM"), "No due date") - dueWeek: if(due, date(due).format("YYYY-[W]WW"), "No due date") - scheduledMonth: if(scheduled, date(scheduled).format("YYYY-MM"), "Not scheduled") - scheduledWeek: if(scheduled, date(scheduled).format("YYYY-[W]WW"), "Not scheduled") - dueDateCategory: if(!due, "No due date", if(date(due) < today(), "Overdue", if(date(due).date() == today(), "Today", if(date(due).date() == today() + "1d", "Tomorrow", if(date(due) <= today() + "7d", "This week", "Later"))))) - timeEstimateCategory: if(!timeEstimate || timeEstimate == 0, "No estimate", if(timeEstimate < 30, "Quick (<30m)", if(timeEstimate <= 120, "Medium (30m-2h)", "Long (>2h)"))) - ageCategory: if(((number(now()) - number(file.ctime)) / 86400000) < 1, "Today", if(((number(now()) - number(file.ctime)) / 86400000) < 7, "This week", if(((number(now()) - number(file.ctime)) / 86400000) < 30, "This month", "Older"))) - createdMonth: file.ctime.format("YYYY-MM") - modifiedMonth: file.mtime.format("YYYY-MM") - priorityCategory: if(priority=="none","None",if(priority=="low","Low",if(priority=="normal","Normal",if(priority=="high","High","No priority")))) - projectCount: if(!projects || list(projects).length == 0, "No projects", if(list(projects).length == 1, "Single project", "Multiple projects")) - contextCount: if(!contexts || list(contexts).length == 0, "No contexts", if(list(contexts).length == 1, "Single context", "Multiple contexts")) - trackingStatus: if(!timeEstimate || timeEstimate == 0, "No estimate", if(!timeEntries || list(timeEntries).length == 0, "Not started", if(formula.efficiencyRatio < 100, "Under estimate", "Over estimate"))) - nextDate: if(due && scheduled, if(date(due) < date(scheduled), due, scheduled), if(due, due, scheduled)) - daysUntilNext: if(due && scheduled, min(formula.daysUntilDue, formula.daysUntilScheduled), if(due, formula.daysUntilDue, formula.daysUntilScheduled)) - hasDate: due || scheduled - isToday: (due && date(due).date() == today()) || (scheduled && date(scheduled).date() == today()) - isThisWeek: (due && date(due) >= today() && date(due) <= today() + "7d") || (scheduled && date(scheduled) >= today() && date(scheduled) <= today() + "7d") - nextDateCategory: if(!due && !scheduled, "No date", if((due && date(due) < today()) || (scheduled && date(scheduled) < today()), "Overdue/Past", if((due && date(due).date() == today()) || (scheduled && date(scheduled).date() == today()), "Today", if((due && date(due).date() == today() + "1d") || (scheduled && date(scheduled).date() == today() + "1d"), "Tomorrow", if((due && date(due) <= today() + "7d") || (scheduled && date(scheduled) <= today() + "7d"), "This week", "Later"))))) - nextDateMonth: if(due && scheduled, if(date(due) < date(scheduled), date(due).format("YYYY-MM"), date(scheduled).format("YYYY-MM")), if(due, date(due).format("YYYY-MM"), if(scheduled, date(scheduled).format("YYYY-MM"), "No date"))) - nextDateWeek: if(due && scheduled, if(date(due) < date(scheduled), date(due).format("YYYY-[W]WW"), date(scheduled).format("YYYY-[W]WW")), if(due, date(due).format("YYYY-[W]WW"), if(scheduled, date(scheduled).format("YYYY-[W]WW"), "No date"))) - urgencyScore: if(!due && !scheduled, formula.priorityWeight, formula.priorityWeight + max(0, 10 - formula.daysUntilNext)) - timeTrackedFormatted: if(timeEntries, if(list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) >= 60, (list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) / 60).floor() + "h " + (list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) % 60).round() + "m", list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0).round() + "m"), "0m") - dueDateDisplay: if(!due, "", if(date(due).date() == today(), "Today", if(date(due).date() == today() + "1d", "Tomorrow", if(date(due).date() == today() - "1d", "Yesterday", if(date(due) < today(), formula.daysUntilDue * -1 + "d ago", if(date(due) <= today() + "7d", date(due).format("ddd"), date(due).format("MMM D"))))))) -views: - - type: tasknotesTaskList - name: All Tasks - order: - - status - - priority - - due - - scheduled - - projects - - contexts - - file.tags - - blockedBy - - file.name - - recurrence - - complete_instances - sort: - - property: due - direction: ASC - - type: tasknotesTaskList - name: Not Blocked - filters: - and: - - or: - - and: - - recurrence.isEmpty() - - status != "done" - - and: - - recurrence - - '!complete_instances.contains(today().format("yyyy-MM-dd"))' - - or: - - blockedBy.isEmpty() - - list(blockedBy).filter(file(value.uid).properties.status != "done").isEmpty() - order: - - status - - priority - - due - - scheduled - - projects - - contexts - - file.tags - - blockedBy - - file.name - - recurrence - - complete_instances - sort: - - property: formula.urgencyScore - direction: DESC - - type: tasknotesTaskList - name: Today - filters: - and: - - or: - - and: - - recurrence.isEmpty() - - status != "done" - - and: - - recurrence - - '!complete_instances.contains(today().format("yyyy-MM-dd"))' - - or: - - date(due) == today() - - date(scheduled) == today() - order: - - status - - priority - - due - - scheduled - - projects - - contexts - - file.tags - - blockedBy - - file.name - - recurrence - - complete_instances - sort: - - property: formula.urgencyScore - direction: DESC - - type: tasknotesTaskList - name: Overdue - filters: - and: - - or: - - and: - - recurrence.isEmpty() - - status != "done" - - and: - - recurrence - - '!complete_instances.contains(today().format("yyyy-MM-dd"))' - - date(due) < today() - order: - - status - - priority - - due - - scheduled - - projects - - contexts - - file.tags - - blockedBy - - file.name - - recurrence - - complete_instances - sort: - - property: formula.urgencyScore - direction: DESC - - type: tasknotesTaskList - name: This Week - filters: - and: - - or: - - and: - - recurrence.isEmpty() - - status != "done" - - and: - - recurrence - - '!complete_instances.contains(today().format("yyyy-MM-dd"))' - - or: - - and: - - date(due) >= today() - - date(due) <= today() + "7 days" - - and: - - date(scheduled) >= today() - - date(scheduled) <= today() + "7 days" - order: - - status - - priority - - due - - scheduled - - projects - - contexts - - file.tags - - blockedBy - - file.name - - recurrence - - complete_instances - sort: - - property: formula.urgencyScore - direction: DESC - - type: tasknotesTaskList - name: Unscheduled - filters: - and: - - or: - - and: - - recurrence.isEmpty() - - status != "done" - - and: - - recurrence - - '!complete_instances.contains(today().format("yyyy-MM-dd"))' - - date(due).isEmpty() - - date(scheduled).isEmpty() - order: - - status - - priority - - due - - scheduled - - projects - - contexts - - file.tags - - blockedBy - - file.name - - recurrence - - complete_instances - sort: - - property: status - direction: ASC diff --git a/content/z-Tech/Mega Mega.md b/content/z-Tech/Mega-App/Project level design goals.md similarity index 100% rename from content/z-Tech/Mega Mega.md rename to content/z-Tech/Mega-App/Project level design goals.md diff --git a/content/z-Tech/Mega-App/UX.md b/content/z-Tech/Mega-App/UX.md new file mode 100644 index 0000000..5e16e57 --- /dev/null +++ b/content/z-Tech/Mega-App/UX.md @@ -0,0 +1,6 @@ + +Learnings +- Vercel v0 looks better than Lovable for UX prototyping +- Drill down to essentially one screen per prompt, to be combined later +- Begin with Course app, that stores the content +- \ No newline at end of file diff --git a/content/z-Tech/Quiz-app.md b/content/z-Tech/Quiz-app.md index 12d1bc3..3b3e98a 100644 --- a/content/z-Tech/Quiz-app.md +++ b/content/z-Tech/Quiz-app.md @@ -67,3 +67,4 @@ För att undvika "Database locked" vid omstarter/concurrent writes: PRAGMA journal_mode = WAL; ``` +