Could you tell me how can I add canvas to the list as well?
And I wonder if there’s a way to make sub folders as a nested list, like when using tab? and make all folders names bold?
soo I checked that snippet, it didn’t FULLY worked as I needed it to, so I asked Ai to change it a little bit, and it workedх perfectly! I’m gonna leave it here
const canvas = app.vault.getFiles()
.filter(file => file.extension === 'canvas')
.sort((a, b) => a.name.localeCompare(b.name));
// Group files by folders
const groupedByFolder = {};
canvas.forEach(file => {
const folder = file.path.split('/').slice(0, -1).join('/') || 'Root directory';
if (!groupedByFolder[folder]) {
groupedByFolder[folder] = [];
}
groupedByFolder[folder].push(file);
});
// Display folders and links to canvases
for (const folder in groupedByFolder) {
dv.header(3, folder); // Folder name as a level 3 header
dv.list(groupedByFolder[folder].map(file => dv.fileLink(file.path)));
}
I also figured out how to display both md files and canvas, so here it is
// Get all files with .md and .canvas extensions
const allFiles = app.vault.getFiles()
.filter(file => file.extension === 'md' || file.extension === 'canvas')
.sort((a, b) => a.name.localeCompare(b.name));
// Function to group files by folders
function groupByFolder(files) {
const grouped = {};
files.forEach(file => {
const folder = file.path.split('/').slice(0, -1).join('/') || 'Root directory';
if (!grouped[folder]) {
grouped[folder] = [];
}
grouped[folder].push(file);
});
return grouped;
}
// Group all files (canvases and notes)
const groupedFiles = groupByFolder(allFiles);
// Display files by folder
for (const folder in groupedFiles) {
dv.header(3, folder); // Folder name as a level 3 header
dv.list(groupedFiles[folder].map(file => dv.fileLink(file.path)));
}