2.9 KiB
date, status, owner
| date | status | owner |
|---|---|---|
| <% tp.date.now("YYYY-MM-DD") %> | proposed | Amadou |
<%* const date = tp.date.now("YYYY-MM-DD"); const year = tp.date.now("YYYY"); const month = tp.date.now("MM");
// -------------------------------------------------- // 1. Ask for decision title // --------------------------------------------------
const title = await tp.system.prompt("Decision title");
if (!title) { new Notice("Decision cancelled: no title entered."); return; }
const safeTitle = title .replace(/[\/:*?"<>|]/g, "-") .trim();
// -------------------------------------------------- // 2. Find available projects for the current year // --------------------------------------------------
const projectsFolder = 20 Work/Projects/${year};
const projectFiles = app.vault .getMarkdownFiles() .filter(file => file.parent?.path === projectsFolder) .sort((a, b) => a.basename.localeCompare(b.basename));
// First option allows a decision with no project const projectLabels = [ "— No project —", ...projectFiles.map(file => file.basename) ];
const projectValues = [ null, ...projectFiles ];
// -------------------------------------------------- // 3. Ask which project this decision belongs to // --------------------------------------------------
const selectedProject = await tp.system.suggester( projectLabels, projectValues, false, "Related project" );
// Cancelling the modal cancels note creation if (selectedProject === undefined) { new Notice("Decision cancelled."); return; }
// -------------------------------------------------- // 4. Create Decisions/YYYY/MM folder // --------------------------------------------------
const baseFolder = "20 Work/Decisions";
const yearFolder = ${baseFolder}/${year};
const monthFolder = ${yearFolder}/${month};
if (!app.vault.getAbstractFileByPath(yearFolder)) { await app.vault.createFolder(yearFolder); }
if (!app.vault.getAbstractFileByPath(monthFolder)) { await app.vault.createFolder(monthFolder); }
// -------------------------------------------------- // 5. Build filename // --------------------------------------------------
let filename;
if (selectedProject) { const safeProject = selectedProject.basename .replace(/[\/:*?"<>|]/g, "-") .trim();
filename = ${date} - ${safeProject} - ${safeTitle};
} else {
filename = ${date} - ${safeTitle};
}
// -------------------------------------------------- // 6. Move + rename note // --------------------------------------------------
await tp.file.move(
${monthFolder}/${filename}
);
// Make project available later in the template
const projectLink = selectedProject
? [[${selectedProject.basename}]]
: "";
-%>
🟡 Proposed · 🟢 Decided · 🔴 Rejected · ⚫ Superseded
Context
<% tp.file.cursor() %>
Options Considered (optional)
-
Option 1
- Pros:
- Cons:
-
Option 2
- Pros:
- Cons: