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 = `View`; 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);