Yandex Tracker Issue
approvedby Pavel Sokolov
Display Yandex Tracker issues in your notes
Yandex 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.
План развития
- Более гибкое масштабирование диаграмм Ганта.
- Настройки отображения диаграмм Ганта.
- Больше диаграмм.
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.