- Bouton ⚙ sur chaque colonne pour configurer le mapping label Gitea - Modal ⚙ Colonnes pour ajouter/renommer/supprimer des colonnes - API DELETE /api/col-mapping pour supprimer un mapping - Rafraîchit le board après chaque modification de colonne/mapping - CSS pour les nouveaux éléments (config panel, column list)
59 lines
3.0 KiB
HTML
59 lines
3.0 KiB
HTML
<div class="board-columns" id="board-columns">
|
|
{% for col in columns %}
|
|
<div class="board-column" data-column="{{ col }}" id="col-{{ loop.index }}">
|
|
<div class="column-header">
|
|
<span class="column-title">{{ col }}</span>
|
|
<div class="column-header-right">
|
|
<span class="column-count">{{ column_map[col]|length }}</span>
|
|
<button class="col-config-btn" onclick="toggleColConfig(event, '{{ owner }}','{{ repo }}','{{ col }}')" title="Configurer la colonne">⚙</button>
|
|
</div>
|
|
</div>
|
|
<div class="col-config-panel" id="col-config-{{ col|replace(' ', '_') }}" style="display:none">
|
|
<div class="col-config-inner">
|
|
<label class="form-label">Label Gitea → cette colonne</label>
|
|
<select class="form-select" id="col-label-{{ col|replace(' ', '_') }}">
|
|
<option value="">— Aucun mapping —</option>
|
|
</select>
|
|
<div class="col-config-actions">
|
|
<button class="btn btn-sm btn-primary" onclick="saveColMapping('{{ owner }}','{{ repo }}','{{ col }}')">Mapper</button>
|
|
<button class="btn btn-sm" onclick="deleteColMapping('{{ owner }}','{{ repo }}','{{ col }}')">✕ Supprimer</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="column-cards sortable" data-column="{{ col }}" data-owner="{{ owner }}" data-repo="{{ repo }}">
|
|
{% for issue in column_map[col] %}
|
|
<div class="card" data-issue-id="{{ issue.number }}" data-column="{{ col }}" draggable="true"
|
|
ondblclick="openCardDetail('{{ owner }}','{{ repo }}',{{ issue.number }})">
|
|
<div class="card-labels">
|
|
{% for lbl in issue.labels %}
|
|
<span class="card-label" style="background:#{{ lbl.color or '666' }}33; color:#{{ lbl.color or 'ccc' }}">{{ lbl.name }}</span>
|
|
{% endfor %}
|
|
</div>
|
|
<div class="card-title">
|
|
<a href="{{ issue.html_url }}" target="_blank" onclick="event.stopPropagation()">#{{ issue.number }}</a>
|
|
<span class="card-title-text">{{ issue.title[:80] }}{% if issue.title|length > 80 %}...{% endif %}</span>
|
|
</div>
|
|
<div class="card-meta">
|
|
{% if issue.assignee %}
|
|
<span class="card-assignee" title="{{ issue.assignee.login }}">
|
|
<img src="{{ issue.assignee.avatar_url }}" alt="" width="16" height="16" class="avatar">
|
|
{{ issue.assignee.login }}
|
|
</span>
|
|
{% endif %}
|
|
{% if issue.milestone %}
|
|
<span class="card-milestone">📅 {{ issue.milestone.title }}</span>
|
|
{% endif %}
|
|
</div>
|
|
{% if issue._card and issue._card.priority %}
|
|
<div class="card-priority priority-{{ issue._card.priority|lower }}">{{ issue._card.priority }}</div>
|
|
{% endif %}
|
|
{% if issue._card and issue._card.due_date %}
|
|
<div class="card-due {% if issue._card.due_date < now %}overdue{% endif %}">⏰ {{ issue._card.due_date[:10] }}</div>
|
|
{% endif %}
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|