README file from
GithubYandex Tracker Issue
Плагин отображения информации задач из Yandex Tracker в Obsidian.
Обозначения
YTI: Yandex Tracker Issue. Сокращение обозначает собой данный плагин. Далее, YTI и Yandex Tracker Issue используются как синонимы.
Быстрый старт
- Получить OAuth 2.0 токен. Для этого:
- Зарегистрируйте приложение в вашем Yandex Tracker: https://yandex.ru/dev/id/doc/ru/register-client#access-note
- Проследуйте инструкциям официального руководства: https://yandex.ru/support/tracker/ru/concepts/access#about_OAuth
- Нужен именно OAuth токен! На данный момент, плагин не поддерживает IAM-токен!
- Получить Org-Id вашей организации. Это можно сделать, например, на странице организации в Yandex Tracker.
- Нужен именно Org-Id. На данный момент, плагин не поддерживает Cloud-Org-Id!
- Открыть настройки плагина.
- Ввести в поле OAuth Token, собственно, OAuth 2.0 токен. В поле Org ID ввести Org-Id.
- Найти какие-нибудь задачи в Yandex Tracker. Например, TASK-111, TASK-222.
- В заметку в Obsidian добавить следующий блок кода (каждая задача с новой строки):
```yt-issue
TASK-111
TASK-222```
- Перейти в режим просмотра.
Руководство пользователя
Сущности
Плагин YTI оперирует несколькими сущностями:
- Issue - задача из Yandex Tracker.
- Board - доска
- Project - проект
- Queue - очередь
- Sprint - спринт
- User - пользователь
Отображение
Далее приведены названия блоков кода для отображения сущностей.
- yt-gantt - отображает размещённые в нём задачи в виде диаграммы Ганта. Помещать нужно Id задач.
- yt-issue - отображает размещённые в нём задачи в виде таблицы. Помещать нужно Id задач.
- yt-gantt-query - отображает размещённые в нём задачи в виде диаграммы Ганта. Помещать нужно Yandex Tracker запрос: https://yandex.ru/support/tracker/ru/user/query-filter
- yt-issue-query - отображает размещённые в нём задачи в виде таблицы. Помещать нужно Yandex Tracker запрос: https://yandex.ru/support/tracker/ru/user/query-filter
- yt-boards - отображает размещённые в нём доски в виде таблицы. Помещать нужно Id досок.
- yt-queues - отображает размещённые в нём очереди в виде таблицы. Помещать нужно Id очередей.
- yt-projects - отображает размещённые в нём проекты в виде таблицы. Помещать нужно Id проектов.
- yt-sprints - отображает размещённые в нём спринты в виде таблицы. Помещать нужно Id спринтов.
- yt-users - отображает размещённых в нём пользователей в виде таблицы. Помещать нужно логины пользователей. Например, если пользователя зовут Иванов Василий Максимович (ФИО придумано), то его логин в Yandex Tracker, скорее всего будет vivanov.
Колонки таблиц и их отображение можно задавать в настройках. Подробнее в разделе "Настройки отображения".
Настройки
Настройки авторизации
- OAuth Token - поле для вашего OAuth токена.
- Org ID - поле для вашего Org-Id.
- Проверка подключения - кнопка для проверки корректности ввода OAuth токена и Org ID.
Настройки отображения
Далее, идут поля для ввода атрибутов сущностей. Что такое атрибуты подробно описано в разделе Атрибуты.
- Атрибуты задач - атрибуты для отображения задач в блоках кода yt-issue, yt-gantt, yt-issue-query, yt-gantt-query.
- Атрибуты досок - атрибуты для отображения досок в блоке кода yt-boards.
- Атрибуты проектов - атрибуты для отображения досок в блоке кода yt-projects.
- Атрибуты очередей - атрибуты для отображения досок в блоке кода yt-queues.
- Атрибуты спринтов - атрибуты для отображения досок в блоке кода yt-sprints.
- Атрибуты пользователей - атрибуты для отображения досок в блоке кода yt-users.
Также, в данном блоке есть следующие настройки:
- Статусы завершённых задач - используются в диаграммах Ганта для определения завершена задача или нет.
- Сбросить настройки до стандартных - сбрасывает настройки отображения до стандартных настроек, с которыми поставляется плагин YTI. При этом настройки авторизации не изменяются!
- Ререндер - перерисовывает все блоки кода данного плагина.
Параметры отображения
Настройки отображения таблиц принимаю строки специального типа, которые состоят из сложных или простых атрибутов или модификаторов.
Атрибуты указывают какие данные отображать в таблицах.
Модификаторы указывают как отображать данные в таблицах.
Аргументы модификатора задают детальную настройку модификатора. (На данный момент, аргументы поддерживаются только у модификатора trim)
Синтаксис
Общий синтаксис параметра отображения следующий
атрибут:модификатор1_арг1_арг2:модификатор2_арг1: ... :модификаторn
Если атрибут сложный, то он поддерживает такой синтаксис:
атрибут.податрибут:модификатор1_арг1_арг2:модификатор2_арг1: ... :модификаторn
Плагин YTI поддерживает глубину вложенности атрибутов не более чем два.
Атрибуты
Программный код плагина условно разделён на две части: запросы к Yandex Tracker для получения информации и отображение данной информации в виде таблиц и диаграмм.
Идея данного плагина следующая: из Yandex Tracker запрашивается (почти) вся информация о введённых сущностях, а отображается только то, что задано настройками.
Настройки отображения задаются атрибутами. Атрибуты есть у каждой сущности.
У некоторых сущностей есть сложные атрибуты. Например, у сущности Issue (задача) есть атрибут assignee (исполнитель), который сам является сущностью типа User (пользователь).
Для отображения таких сложных атрибутов есть атрибуты по умолчанию. Например, у пользователя - это его ФИО.
Также для каждого атрибута есть его сопоставление - читабельное название атрибута на русском языке.
Далее пойдёт перечисление всех сущностей и их атрибутов
Issue
Атрибут по умолчанию - 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 |
Board
Атрибут по умолчанию - 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, ... |
Project
Атрибут по умолчанию - name
| Атрибут | Сопоставление | Тип | Сложный? | Атрибут по умолчанию |
|---|---|---|---|---|
| description | Описание | String | Нет | |
| key | Название | String | Нет | |
| name | Название | String | Нет | |
| self | Адрес ресурса | String | Нет | |
| status | Статус | String | Нет | |
| id | ID проекта | Number | Нет | |
| version | Версия | Number | Нет | |
| startDate | Дата начала | DateTime | Нет | |
| endDate | Дата окончания | DateTime | Нет | |
| lead | Руководитель | User | Да | display |
Queue
Атрибут по умолчанию - 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, ... |
Sprint
Атрибут по умолчанию - 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 |
User
Атрибут по умолчанию - 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 | Нет |
Модификаторы
- initials - разбивает строку на слова, вместо слов подставляет их первые буквы с точкой и добавляет последнее слово целиком.
- Пример:
Иван Иванович Иванов=>И.И. Иванов - Пример:
Съешь ещё этих мягких французских булок да выпей же чаю=>С.е.э.м.ф.б.д.в.ж. чаю
- Пример:
- trim_arg - оставляет только первые arg символов строки и добавляет троеточие в конце.
- Пример:
Задача очень сложнаяtrim_6 =>Задача... - Пример:
Задача не очень сложнаяtrim_15 =>Задача не очень...
- Пример:
- yesno - превращает логическую истину в строку
Да, а логическую ложь в строкуНет.- Пример:
true=>Да - Пример:
false=>Нет - Пример:
{"Я объект": "Всем привет"}=>Да - Пример:
undefined=>Нет
- Пример:
- link - делает из текста ссылку HTML-элементом
<a/>.- Пример:
https://www.minecraft.net=>
- Пример:
<a href="https://www.minecraft.net"> https://www.minecraft.net </a>
- ytlink - делает из текста ссылку HTML-элементом
<a/>на ресурс Yandex Tracker-а- Пример:
TASK-111=>
- Пример:
<a href="https://tracker.yandex.ru/TASK-111"> TASK-111 </a>
- boardlink - делает из текста ссылку HTML-элементом
<a/>на ресурс доски Yandex Tracker-а.- Пример:
333=>
- Пример:
<a href="https://tracker.yandex.ru/pages/projects/333/board"> 333 </a>
- projectlink - делает из текста ссылку HTML-элементом
<a/>на ресурс проекта Yandex Tracker-а.- Пример:
444=>
- Пример:
<a href="https://tracker.yandex.ru/pages/projects/444"> 444 </a>
- log - выводит в консоль содержимое.
- date - делает из текста в формате
DateTimeтекст даты без времени- Пример:
12.04.1961T09:07:00=>12.04.1961
- Пример:
- time - делает из текста в формате
DateTimeтекст времени без даты- Пример:
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 дадут одинаковый результат.
Улучшение отображения задач
Постановка
В предыдущем примере выводится лишняя информация. Более того, таблица не интерактивна.
Надо внести следующие изменения:
- Сделать поле "ID задачи" кликабельной ссылкой на задачу в Yandex Tracker
- В поле "Дата создания" выводить только дату создания без времени.
- Выводить инициалы и фамилию исполнителя вместо полного ФИО.
Решение
- Для создания ссылки на задачу используем модификатор
ytlink - Для вывода даты без времени используем модификатор
date - Для вывода инициалов используем модификатор
initials
В итоге, сформируем такую строку: 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 задач придуманы. Все совпадения случайны.
Известные проблемы
- При отрисовки диаграммы Ганта с большим количеством задач, ссылки на задачи могут наложиться.
- При одновременном запуске плагина с нескольких устройств, может быть превышено количество запросов в Yandex Tracker.
План развития
- Более гибкое масштабирование диаграмм Ганта.
- Настройки отображения диаграмм Ганта.
- Больше диаграмм.