// Load script extensions
eval(
(await app.vault.read(app.vault.getAbstractFileByPath("dataviewjs/extensions.md")))
.replace(/^```js/g, "").replace(/```$/g, "")
);
await window.extensions.loadExtension("books");
const remCategory = "Остальное";
const books = window.books.getAll().sort(book => book.file.cday, "desc");
let booksByCategories = {};
booksByCategories[remCategory] = [];
for (const book of books.values) {
if (book.Категории) {
for (const category of book.Категории) {
if (!(category in booksByCategories)) {
booksByCategories[category] = [];
}
booksByCategories[category].push(book);
}
} else {
booksByCategories[remCategory].push(book);
}
}
// https://stackoverflow.com/a/31102605
const booksByCategoriesOrdered = Object.keys(booksByCategories).sort().reduce(
(obj, key) => {
obj[key] = booksByCategories[key];
return obj;
},
{}
);
for (const [category, categoryBooks] of Object.entries(booksByCategoriesOrdered)) {
if (categoryBooks.length == 0) continue;
dv.header(2, `${category} (${categoryBooks.length})`);
dv.el("div", window.books.renderBooks(categoryBooks), {cls: ["books"]});
}