Table today_picks; POST /api/today/pin (max 3, idempotent) et
/unpin; page /today (picks en direct, candidates de l'encours,
reprises d'hier, récap du jour depuis le journal); bouton 📌 sur
les cartes (délégation capture dans today.js, fragments live
compris); sections dédiées dans le briefing du matin.
35 lines
2.1 KiB
HTML
35 lines
2.1 KiB
HTML
<div class="kanban-card"
|
|
data-issue="{{ issue.number }}"
|
|
data-repo="{{ full_name }}"
|
|
data-title="{{ issue.title|lower }}"
|
|
data-labels="{{ issue.labels|map(attribute='name')|join(',')|lower }}">
|
|
<div class="card-id">
|
|
#{{ issue.number }}
|
|
{% if issue.html_url %}
|
|
<a href="{{ issue.html_url }}" target="_blank" title="Ouvrir dans Gitea">↗</a>
|
|
{% endif %}
|
|
</div>
|
|
<div class="card-title">{{ issue.title }}</div>
|
|
{% if issue.labels %}
|
|
<div class="card-labels">
|
|
{% for label in issue.labels %}
|
|
<span class="label-tag" style="background: #{{ label.color }}30; color: #{{ label.color }}">
|
|
{{ label.name }}
|
|
</span>
|
|
{% endfor %}
|
|
</div>
|
|
{% endif %}
|
|
<div class="card-meta">
|
|
{% if issue.assignee %}
|
|
<img src="{{ issue.assignee.avatar_url }}" class="avatar" alt="{{ issue.assignee.login }}">
|
|
{% endif %}
|
|
<span class="card-date">{{ issue.created_at[:10] }}</span>
|
|
{% set age = ages.get(issue.number) %}
|
|
{% if age and age.days >= aging_days %}
|
|
<span class="age-badge{% if age.days >= aging_days * 2 %} stale{% endif %}"
|
|
title="Dans cette colonne depuis le {{ age.since[:10] }}">⏳ {{ age.days }} j</span>
|
|
{% endif %}
|
|
<button type="button" class="pin-btn" title="Épingler au Focus du jour (/today)">📌</button>
|
|
</div>
|
|
</div>
|