|
127 | 127 | .issue-row.chosen { background: color-mix(in srgb, var(--accent) 10%, transparent); } |
128 | 128 | .issue-row code { font-weight: 500; } |
129 | 129 | .gaps ul { margin: 4px 0 12px; padding-left: 18px; } |
| 130 | + .row-key.via-jira > a { text-decoration: underline dashed; text-underline-offset: 3px; } |
| 131 | + .link-icon { width: 13px; height: 13px; margin-right: 2px; vertical-align: -2px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; } |
130 | 132 | .issue-row .summary { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } |
131 | 133 | .issue-row .reach { grid-column: 3 / -1; display: flex; gap: 4px; overflow: hidden; white-space: nowrap; } |
132 | 134 | .rider-mark { padding: 0 6px; border: 1px dashed var(--warn); border-radius: 999px; color: var(--warn); font-size: 11px; white-space: nowrap; } |
@@ -285,9 +287,10 @@ <h2 x-text="t('services')"></h2> |
285 | 287 | </td> |
286 | 288 | <td> |
287 | 289 | <template x-for="key in row.jira_keys" :key="key.key"> |
288 | | - <div class="row-key"> |
| 290 | + <div class="row-key" :class="{ 'via-jira': viaJira(key) }" |
| 291 | + :title="viaJira(key) ? t('viaJiraTitle', { change: changeLabel(row), key: key.key }) : ''"> |
289 | 292 | <a :href="key.url" x-text="key.key"></a> |
290 | | - <span class="muted via" :title="t('viaTitle')" x-text="viaText(key)"></span> |
| 293 | + <span x-show="viaJira(key)" class="muted via"><svg class="link-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M9 15l6-6"/><path d="M11 6l.46-.54a5 5 0 0 1 7.07 7.07L18 13"/><path d="M13 18l-.4.53a5 5 0 0 1-7.07-7.07L6 11"/></svg><span x-text="t('viaJira')"></span></span> |
291 | 294 | <span x-show="issue(key.key)" :class="statusClass(issue(key.key))" x-text="issue(key.key) && issue(key.key).status"></span> |
292 | 295 | <span x-text="issue(key.key) ? issue(key.key).summary : ''"></span> |
293 | 296 | </div> |
@@ -561,9 +564,8 @@ <h2 x-text="t('release')"></h2> |
561 | 564 | planNoTag: "{keys}: no tag yet.", |
562 | 565 | planElsewhere: "{items}, nothing to pick", |
563 | 566 | groupRelated: "Related", |
564 | | - viaNamed: "named", |
565 | | - viaLinked: "linked", |
566 | | - viaTitle: "named: the merge request or commit mentions the key; linked: the Jira issue links to this change", |
| 567 | + viaJira: "via Jira", |
| 568 | + viaJiraTitle: "Not mentioned in {change}. {key} links to it in Jira.", |
567 | 569 | taskFrom: "from {items}", |
568 | 570 | gapsTitle: "Left behind by these picks:", |
569 | 571 | gapNeeds: "needs {tag}", |
@@ -670,9 +672,8 @@ <h2 x-text="t('release')"></h2> |
670 | 672 | planNoTag: "{keys}: тега ещё нет.", |
671 | 673 | planElsewhere: "{items}, выбирать нечего", |
672 | 674 | groupRelated: "Связанные", |
673 | | - viaNamed: "в тексте", |
674 | | - viaLinked: "по ссылке", |
675 | | - viaTitle: "в тексте: ключ упомянут в MR или коммите; по ссылке: задача в Jira ссылается на это изменение", |
| 675 | + viaJira: "через Jira", |
| 676 | + viaJiraTitle: "{change} не упоминает задачу. {key} ссылается на это изменение в Jira.", |
676 | 677 | taskFrom: "из {items}", |
677 | 678 | gapsTitle: "Не войдёт с этими тегами:", |
678 | 679 | gapNeeds: "нужен {tag}", |
@@ -954,8 +955,8 @@ <h2 x-text="t('release')"></h2> |
954 | 955 | changeLabel(row) { |
955 | 956 | return row.merge_requests.length ? row.merge_requests.map((item) => "!" + item.iid).join(" ") : row.commits[0].short_sha; |
956 | 957 | }, |
957 | | - viaText(key) { |
958 | | - return key.via.map((source) => this.t(source === "named" ? "viaNamed" : "viaLinked")).join(", "); |
| 958 | + viaJira(key) { |
| 959 | + return !key.via.includes("named"); |
959 | 960 | }, |
960 | 961 | relationLabel(relation) { |
961 | 962 | if (relation.kind === "parent") return this.t("relationParent"); |
|
0 commit comments