cubieprog149 downloadsDisplay Yandex Tracker issues in your notes
Плагин отображения информации задач из Yandex Tracker в Obsidian.
YTI: Yandex Tracker Issue. Сокращение обозначает собой данный плагин. Далее, YTI и Yandex Tracker Issue используются как синонимы.
```yt-issue
TASK-111
TASK-222```
Плагин YTI оперирует несколькими сущностями:
Далее приведены названия блоков кода для отображения сущностей.
Колонки таблиц и их отображение можно задавать в настройках. Подробнее в разделе "Настройки отображения".
Далее, идут поля для ввода атрибутов сущностей. Что такое атрибуты подробно описано в разделе Атрибуты.
Также, в данном блоке есть следующие настройки:
Настройки отображения таблиц принимаю строки специального типа, которые состоят из сложных или простых атрибутов или модификаторов.
Атрибуты указывают какие данные отображать в таблицах.
Модификаторы указывают как отображать данные в таблицах.
Аргументы модификатора задают детальную настройку модификатора. (На данный момент, аргументы поддерживаются только у модификатора trim)
Общий синтаксис параметра отображения следующий
атрибут:модификатор1_арг1_арг2:модификатор2_арг1: ... :модификаторn
Если атрибут сложный, то он поддерживает такой синтаксис:
атрибут.податрибут:модификатор1_арг1_арг2:модификатор2_арг1: ... :модификаторn
Плагин YTI поддерживает глубину вложенности атрибутов не более чем два.
Программный код плагина условно разделён на две части: запросы к Yandex Tracker для получения информации и отображение данной информации в виде таблиц и диаграмм.
Идея данного плагина следующая: из Yandex Tracker запрашивается (почти) вся информация о введённых сущностях, а отображается только то, что задано настройками.
Настройки отображения задаются атрибутами. Атрибуты есть у каждой сущности.
У некоторых сущностей есть сложные атрибуты. Например, у сущности Issue (задача) есть атрибут assignee (исполнитель), который сам является сущностью типа User (пользователь).
Для отображения таких сложных атрибутов есть атрибуты по умолчанию. Например, у пользователя - это его ФИО.
Также для каждого атрибута есть его сопоставление - читабельное название атрибута на русском языке.
Далее пойдёт перечисление всех сущностей и их атрибутов
Атрибут по умолчанию - summary
| Атрибут | Сопоставление | Тип | Сложный? | Атрибут по умолчанию |
|---|---|---|---|---|
| self | Адрес ресурса | String | Нет | |
| id | Hash-ID задачи | String | Нет | |
| key | ID задачи | String | Нет | |
| version | Версия | Number | Нет | |
| summary | Название | String | Нет | |
| aliases | Альтернативные ключи | String | Нет | |
| description | Описание | String | Нет | |
| votes | Голоса | String | Нет | |
| favorite | Избрана | String | Нет | |
| tags | Тэги | String | Нет | |
| lastCommentUpdatedAt | Дата последнего комментария | DateTime | Нет | |
| createdAt | Дата создания | DateTime | Нет | |
| updatedAt | Дата обновления | DateTime | Нет | |
| status | Статус | вспомогательный тип | Да | display |
| priority | Приоритет | вспомогательный тип | Да | display |
| previousStatus | Предыдущий статус | вспомогательный тип | Да | display |
| type | Тип | вспомогательный тип | Да | display |
| updatedBy | Последний редактор | User | Да | display |
| followers | Наблюдатели | вспомогательный тип | Да | display, display, ... |
| createdBy | Созатель | User | Да | display |
| assignee | Исполнитель | User | Да | display |
| project | Проект | Project | Да | name |
| queue | Очередь | Queue | Да | name |
| parent | Родеительская задача | Issue | Да | summary |
| sprint | Спринт | Sprint | Да | name |
Атрибут по умолчанию - name
| Атрибут | Сопоставление | Тип | Сложный? | Атрибут по умолчанию |
|---|---|---|---|---|
| self | Адрес ресурса | String | Нет | |
| id | ID доски | String | Нет | |
| version | Версия | String | Нет | |
| name | Название доски | String | Нет | |
| filter | Фильтр | String | Нет | |
| orderBy | Сортировка | String | Нет | |
| orderAsc | Направление сортировки | String | Нет | |
| query | Запрос | String | Нет | |
| useRanking | Возможность менять порядок | String | Нет | |
| estimateBy | Оценивание | String | Нет | |
| country | Страна | String | Нет | |
| defaultQueue | Очередь по умолчанию | String | Нет | |
| calendar | Календарь | String | Нет | |
| columns | Колонки | вспомогательный тип | Да | display, display, ... |
Атрибут по умолчанию - name
| Атрибут | Сопоставление | Тип | Сложный? | Атрибут по умолчанию |
|---|---|---|---|---|
| description | Описание | String | Нет | |
| key | Название | String | Нет | |
| name | Название | String | Нет | |
| self | Адрес ресурса | String | Нет | |
| status | Статус | String | Нет | |
| id | ID проекта | Number | Нет | |
| version | Версия | Number | Нет | |
| startDate | Дата начала | DateTime | Нет | |
| endDate | Дата окончания | DateTime | Нет | |
| lead | Руководитель | User | Да | display |
Атрибут по умолчанию - name
| Атрибут | Сопоставление | Тип | Сложный? | Атрибут по умолчанию |
|---|---|---|---|---|
| self | Адрес ресурса | String | Нет | |
| id | ID очереди | String | Нет | |
| key | ID очереди | String | Нет | |
| name | Название | String | Нет | |
| description | Описание | String | Нет | |
| version | Версия | Number | Нет | |
| assignAuto | Автоназначение исполнителя | Boolean | Нет | |
| denyVoting | Можно голосовать | Boolean | Нет | |
| defaultType | Тип задач по умолчанию | вспомогательный тип | Да | display |
| issueTypes | Типы задач | вспомогательный тип | Да | display, display, ... |
| workflows | Жизненные циклы | вспомогательный тип | Да | display, display, ... |
| defaultPriority | Приоритет по умолчанию | вспомогательный тип | Да | display |
| issueTypesConfig | Настройки типов задач | вспомогательный тип | Да | display, display, ... |
| lead | Руководитель | User | Да | display |
| teamUsers | Команда | вспомогательный тип | Да | display, display, ... |
Атрибут по умолчанию - name
| Атрибут | Сопоставление | Тип | Сложный? | Атрибут по умолчанию |
|---|---|---|---|---|
| self | Адрес ресурса | String | Нет | |
| name | Название | String | Нет | |
| status | Статус | String | Нет | |
| version | Версия | Number | Нет | |
| id | ID Спринта | Number | Нет | |
| archived | Архивирован | Boolean | Нет | |
| endDate | Дата окончания | DateTime | Нет | |
| endDateTime | Дата окончания | DateTime | Нет | |
| startDate | Дата начала | DateTime | Нет | |
| startDateTime | Дата начала | DateTime | Нет | |
| createdAt | Дата создания | DateTime | Нет | |
| createdBy | Создатель | User | Да | display |
| board | Доска | Board | Да | name |
Атрибут по умолчанию - display
| Атрибут | Сопоставление | Тип | Сложный? | Атрибут по умолчанию |
|---|---|---|---|---|
| self | Адрес ресурса | String | Нет | |
| id | ID пользователя | String | Нет | |
| login | Логин | String | Нет | |
| cloudUid | Cloud ID | String | Нет | |
| firstName | Имя | String | Нет | |
| lastName | Фамилия | String | Нет | |
| display | Полное имя | String | Нет | |
| String | Нет | |||
| firstLoginDate | Дата первого входа | String | Нет | |
| lastLoginDate | Дата последнего входа | String | Нет | |
| uid | uid | Number | Нет | |
| trackerUid | trackerUid | Number | Нет | |
| passportUid | passportUid | Number | Нет | |
| external | external | Boolean | Нет | |
| hasLicense | hasLicense | Boolean | Нет | |
| dismissed | dismissed | Boolean | Нет | |
| useNewFilters | useNewFilters | Boolean | Нет | |
| disableNotifications | disableNotifications | Boolean | Нет | |
| welcomeMailSent | welcomeMailSent | Boolean | Нет |
Иван Иванович Иванов => И.И. Иванов Съешь ещё этих мягких французских булок да выпей же чаю => С.е.э.м.ф.б.д.в.ж. чаюЗадача очень сложная trim_6 => Задача...Задача не очень сложная trim_15 => Задача не очень...Да, а логическую ложь в строку Нет.true => Даfalse => Нет{"Я объект": "Всем привет"} => Даundefined => Нет<a/>.https://www.minecraft.net =><a href="https://www.minecraft.net"> https://www.minecraft.net </a>
<a/> на ресурс Yandex Tracker-аTASK-111 => <a href="https://tracker.yandex.ru/TASK-111"> TASK-111 </a>
<a/> на ресурс доски Yandex Tracker-а.333 => <a href="https://tracker.yandex.ru/pages/projects/333/board"> 333 </a>
<a/> на ресурс проекта Yandex Tracker-а.444 => <a href="https://tracker.yandex.ru/pages/projects/444"> 444 </a>
DateTime текст даты без времени12.04.1961T09:07:00 => 12.04.1961DateTime текст времени без даты19.08.1960T11:44:00 => 11:44:00Далее предполагается, что плагин YTI
Допустим, мы хотим отобразить задачи TASK-111, TASK-112, TASK-113 в табличном виде.
Хотим отобразить следующие колонки: Id задачи, дата создания, исполнитель.
key createdAt assignee```yt-issue
TASK-111
TASK-112
TASK-113```
| ID задачи | Дата создания | Исполнитель |
|---|---|---|
| TASK-111 | 23.09.2025T11:32:44 | Иван Иванович Иванов |
| TASK-112 | 19.12.2025T14:12:31 | Иван Иванович Иванов |
| TASK-113 | 07.12.2025T10:49:55 | Иван Иванович Иванов |
Со столбцами key (ID задачи) и createdAt (Дата создания) сложностей нет.
Но, исполнитель имеет тип User и это сложный тип, у которого атрибут по умолчанию - это display (Полное имя).
В этом смысле, две строки в поле "Атрибуты задач" key createdAt assignee и key createdAt assignee.display дадут одинаковый результат.
В предыдущем примере выводится лишняя информация. Более того, таблица не интерактивна.
Надо внести следующие изменения:
ytlinkdateinitialsВ итоге, сформируем такую строку: key:ytlink createdAt:date assignee:initials и вставим её в настройки, в поле "Атрибуты задач".
| ID задачи | Дата создания | Исполнитель |
|---|---|---|
| TASK-111 | 23.09.2025 | И.И. Иванов |
| TASK-112 | 19.12.2025 | И.И. Иванов |
| TASK-113 | 07.12.2025 | И.И. Иванов |
Хотим дополнительно отображать в таблице логин исполнителя
Добавим новую колонку в таблицу, которая будет содержать логин исполнителя.
Для этого, нужно ещё раз добавить атрибут assignee с податрибутом login
В итоге, сформируем такую строку:
key:ytlink createdAt:date assignee:initials assignee.login
и вставим её в настройки, в поле "Атрибуты задач".
| ID задачи | Дата создания | Исполнитель | Исполнитель.Логин |
|---|---|---|---|
| TASK-111 | 23.09.2025 | И.И. Иванов | iivanov |
| TASK-112 | 19.12.2025 | И.И. Иванов | iivanov |
| TASK-113 | 07.12.2025 | И.И. Иванов | iivanov |
Все ФИО, логины и ID задач придуманы. Все совпадения случайны.