%% DATAVIEW_PUBLISHER: start ```dataviewjs const questTasks = dv.pages('"Spelare/Kingmaker"') .file.tasks .where(t => t.tags.includes("#agenda")); // Group tasks by their source file const tasksByFile = {}; for (const task of questTasks) { if (!tasksByFile[task.path]) { tasksByFile[task.path] = []; } tasksByFile[task.path].push(task); } let output = ""; // Sort file paths by Session number ascending const sortedPaths = Object.keys(tasksByFile).sort((a, b) => { const numA = parseInt(a.match(/Session\s+(\d+)/)?.[1] || "0"); const numB = parseInt(b.match(/Session\s+(\d+)/)?.[1] || "0"); return numA - numB; }); // Create output with file headers and task lists for (const filePath of sortedPaths) { const fileName = filePath.split("/").pop().replace(".md", ""); // Add file header (using ### for smaller heading) output += `[[${filePath}|${fileName}]]\n\n`; // Add tasks for this file const fileTasks = tasksByFile[filePath].map(task => ({ text: task.text.replace(/#\S+/g, "").trim(), checked: task.completed })); // Convert to markdown task list for (const task of fileTasks) { output += `- [${task.checked ? 'x' : ' '}] ${task.text}\n`; } output += "\n"; } output; ``` %% [[Spelare/Kingmaker/Sessions/Session 26.md|Session 26]] - [ ] Det finns en våldsam [[Jätte|kulljätte]] som vandrar runt i södra [[Kamelands]]. %% DATAVIEW_PUBLISHER: end %%