dnd5-scripts/locationTable.js
2026-06-17 22:32:48 +03:00

66 lines
2.4 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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);