66 lines
2.4 KiB
JavaScript
66 lines
2.4 KiB
JavaScript
await dv.view("scripts/locations");
|
||
|
||
// Функция для создания ссылки на страницу
|
||
function getLocationName(p) {
|
||
let nameLink = `[[${p.file.name}|${p.file.name}]]`; // Создаем Wiki-ссылку
|
||
return nameLink;
|
||
}
|
||
|
||
// Функция для получения основной информации
|
||
function getMainInfo(p) {
|
||
let mainInfoParts = [];
|
||
|
||
if (p.appearance || p.race) {
|
||
let appearanceTitle = "";
|
||
if (p.appearance) {
|
||
appearanceTitle += `${p.appearance}`;
|
||
}
|
||
|
||
let appearanceTooltip = `<abbr title="${appearanceTitle}">View</abbr>`;
|
||
mainInfoParts.push(appearanceTooltip);
|
||
}
|
||
|
||
return mainInfoParts.join(" / ");
|
||
}
|
||
|
||
// Функция для получения потомков для массива локаций
|
||
function getDescendantLocations(dv, targetLocations, basePath) {
|
||
// Собираем все локации, которые являются потомками любых из целевых локаций
|
||
let descendantLocations = dv
|
||
.pages("#location")
|
||
// Исключаем сами целевые локации из результатов
|
||
.filter(
|
||
(p) =>
|
||
!targetLocations.includes(p.file.name) &&
|
||
dv.locations.isDescendant(dv, p, targetLocations)
|
||
)
|
||
.sort((p) => p.file.name, "asc")
|
||
.map((p) => {
|
||
let nameLink = getLocationName(p);
|
||
let mainInfo = getMainInfo(p);
|
||
let avatarImage = dv.locations.getImageLinks(p, basePath); // Передаем basePath для формирования правильного пути
|
||
return [avatarImage, nameLink, mainInfo]; // Изображение первой колонкой
|
||
});
|
||
return descendantLocations;
|
||
}
|
||
|
||
// Функция для отображения таблицы
|
||
function show_table(dv, targetLocations, basePath) {
|
||
// Отображаем таблицу с найденными локациями
|
||
dv.span("## Локации");
|
||
dv.table(
|
||
["Image", "Name", "Main Info"],
|
||
getDescendantLocations(dv, targetLocations, basePath)
|
||
); // Изменен порядок колонок
|
||
}
|
||
|
||
// Функция для запуска отображения таблицы
|
||
function run_show_table(...args) {
|
||
let dv = args[0].arg1;
|
||
let targetLocation = args[0].arg2;
|
||
let basePath = this.app.vault.adapter.basePath; // Получаем базовый путь к хранилищу
|
||
show_table(dv, targetLocation, basePath);
|
||
}
|
||
|
||
run_show_table(input);
|