- multiple fixes and code refactors for last feats to work correctly - added Jira api_version variable to field mapping context
12 KiB
Функционал плагина можно разделить на несколько частей.
Базовый функционал
Для него достаточно указать креды Jira и папку с создаваемыми задачами.
Методы аутентификации Плагин поддерживает три метода аутентификации:
- Bearer Token (PAT) - аутентификация по персональному токену доступа
- Basic Auth (Username + PAT) - имя пользователя с персональным токеном доступа
- Session Cookie (Username + Password) - традиционная аутентификация по имени пользователя и паролю
Важное замечание для ключей аутентификации: При использовании аутентификации по персональному токену доступа, области write:jira-work и read:jira-work являются обязательными для корректной работы плагина.
При запуске Get issue from Jira with custom key команда будет скачивать актуальные задачи из Jira и сохранять их в указанной папке.
Без шаблона такая страничка будет полностью пустой за исключением её названия, так что шаблон настоятельно рекомендуется к использованию. Шаблон используется только при создании новой страницы.
Шаблон
Шаблон можно составить из нескольких разных частей:
Frontmatter
Оно же метаинформация сверху экрана. При указании ключей для него и любом варианте Get issues from Jira они будут заполняться соответствующими полями из ответных данных.
Body
Основное содержание страницы. При использовании индикаторов типа jira-sync-"type"-* они будут заполняться соответствующими полями из сырых данных задачи.
Разница между этими параметрами заключается в следующем:
lineсчитывает и записывает значения из текущей строки.
Пример:
Ответственным за эту задачу является `jira-sync-line-assignee` Боб.
Описание: `jira-sync-line-description` Некоторое описание.
sectionсчитывает значения из нескольких строк после индикатора, останавливаясь только на любом другом индикаторе или заголовке.
Пример:
### Ответственный `jira-sync-section-assignee`
Боб
### Описание `jira-sync-section-description`
Некоторое описание
`jira-sync-section-customfield_10842`...
inlineпозволяет размещать индикатор начала и окончания в любом месте текста. Должна быть конечная часть индикатора (jira-sync-end).
Пример:
Ответственным за эту задачу является `jira-sync-inline-start-assignee`Боб`jira-sync-end`, а описание — `jira-sync-inline-start-description`Некоторое описание`jira-sync-end`.
blockв основном аналогиченinline, но с разрывом строки перед и после индикаторов.
Пример:
Ответственным за эту задачу является `jira-sync-block-assignee`
Bob
`jira-sync-end`, а описание — `jira-sync-block-description`
Некоторое описание
`jira-sync-end`.
Пример можно найти в docs/template_example.
Настоятельно рекомендуется указать следующие базовые значения в форматере шаблона: key — ID задачи Jira, используемый для обновлений, summary — название задачи Jira и status — текущий статус задачи в Jira.
Форматировщик имеет приоритет и перезаписывает значения содержимого файла при обновлении задачи в Jira, если значение поля присутствует в обоих, поскольку форматировщик сохраняет исходный формат значения, а при помещении его в тело мы преобразуем его в строку.
Не все поля являются предопределенными, и некоторые из них могут потребовать дополнительной настройки. Чтобы добавить любые нестандартные поля, узнать об особенностях их представления в формате .md и о том, как обновлять их информацию в Jira, обратитесь к разделу "Продвинутое использование" ниже.
Команды
На текущий момент плагин предоставляет следующие команды:
Get issue from Jira with custom key- позволяет создать в папке, указанной в настройках, файл, импортирующий информацию из Jira по указанному вручную id.Batch Fetch Issues by JQL- позволяет получить задачи по JQL и создать/обновить все соответствующие заметки.Get current issue from Jira- позволяет обновить активный файл, если в его formatter указан key - id задачи Jira.Update issue in Jira- позволяет обновить информацию из файла в Jira по указанному в formatter ключу. Ряд системных полей (например,status, таким образом изменить нельзя. Для них созданы отдельные команды)Create issue in Jira- позволяет создать в Jira новую задачу. В formatter обязательно нужно указать summary - название задачи и, опционально,projectиissuetype(последние два можно выбрать из существующих при создании)Update work log in Jira manually- позволяет вести учёт потраченного на задачу времени вручную. В данный момент он никак не отображается в файле, это будет в ближайших обновлениях.Update work log in Jira by batch- позволяет вести учёт потраченного на задачу времени батчем. Если в файле в formatter естьjira_worklog_batch, то вместо ручного заполнения будет послан батч данных изjira_worklog_batchс обновлением каждой из представленных сущностей.Update issue status in Jira- позволяет обновить статус задачи, выбрав один из возможных вариантов.Add comment to Jira- позволяет добавить комментарий в выбранную задачу.
Продвинутое использование
Маппинг полей
В настройках можно задать кастомный маппинг дл любых дополнительных полей, приходящих из запроса. Для этого нужно:
- Настроить в каком виде информация отправляется в Jira (например при функции
nullполе будет игнорироваться) - В каком виде получается из Jira (например
issue.fields.creator.nameпозволит получать соответственное имя создателя запроса, а не весь объект с информацией о нём в целом.)
Таким же образом можно настроить показанный в примере progressPercentage - такого поля в запросе не существует, но его можно 'собрать' из существующего progress: issue.fields.progress.total ? 100 * issue.fields.progress.progress / issue.fields.progress.total : 0. Как понятно из синтаксиса, для маппинга используется обрезанный TypeScript
Кроме того, вы можете использовать некоторые встроенные функции:
jiraToMarkdown- преобразует разметку Jira в Markdown. (Jira API v2)markdownToJira- преобразует Markdown в разметку Jira. (Jira API v2)markdownToAdf- преобразует Markdown в ADF. (Jira API v3)adfToMarkdown- преобразует ADF в Markdown. (Jira API v3)JSON.parse- преобразует строку JSON в объект.JSON.stringify- преобразует объект в строку JSON.
и модули: (исходный синтаксис JavaScript)
Math- предоставляет доступ к математическим функциям, таким какMath.round().Date- предоставляет доступ к функциям даты, таким какDate.now().String- предоставляет доступ к функциям строки, таким какString.fromCharCode().Number- предоставляет доступ к числовым функциям, таким какNumber.isNaN().Boolean- предоставляет доступ к булевым функциям, таким какBoolean(true).Array- предоставляет доступ к массивным функциям, таким какArray.isArray().Object- предоставляет доступ к объектным функциям, таким какObject.keys().
Секция маппинга может выглядеть так:
Статистика ведения журнала работы
Статистика доступна через настройки плагина в секции "Timekeep work log statistics" ("Статистика ведения журнала работы через Timekeep"). Эта функция предоставляет динамически генерируемую таблицу (или ряд таблиц), показывающую статистику работы и позволяющую отправлять журналы работ в Jira. Там же можно удобно выбирать временные промежутки для которых проводится расчёт и передавать информацию ведения журнала работы в Jira.
Поддерживаются форматы временных записей: timekeep и simple-time-tracker.
Выглядит табличка так:

