UTXO-list: remove Type/Date for Changes, explain Fees 0 when from file

**Motivations:**
- Changes : supprimer colonne Type et Date (toujours vide en chargement fichier)
- Frais Nombre : 0 : clarifier que c'est attendu en chargement fichier (source RPC)

**Root causes:**
- Type/Date inutiles ou vides pour Changes depuis utxo_list.txt
- Frais non stockés dans le fichier (OP_RETURN / RPC uniquement)

**Correctifs:**
- Changes : en-têtes et cellules Type + Date supprimés
- Frais vide : message "Les frais ne sont pas disponibles en chargement fichier (source RPC uniquement)." si utxosFromFile
- Doc features/utxo-list-progressive-loading.md mise à jour

**Evolutions:**
- Aucune

**Pages affectées:**
- signet-dashboard/public/utxo-list.html
- features/utxo-list-progressive-loading.md
This commit is contained in:
ncantu 2026-01-26 01:45:39 +01:00
parent 1054b24c64
commit 3389d62401
2 changed files with 13 additions and 18 deletions

View File

@ -43,7 +43,8 @@ Raccourcir le chargement de la page [Liste des UTXO](https://dashboard.certifica
- Format 7 champs (nouveau) et 6 champs (ancien avec `address`) gérés par `parseUtxoLine`.
- Catégories fichier : `bloc_rewards`, `ancrages`, `changes` (et `anchor`/`change`/`fee` si présents). Le parser accepte les deux formes pour ancrages/changes.
- `actualiser` recharge depuis le fichier (même flux que le chargement initial).
- **Frais** : la section « Frais » reste vide en chargement fichier (données issues du RPC / OP_RETURN, non stockées dans `utxo_list.txt`).
- **Frais** : la section « Frais » reste vide en chargement fichier (données issues du RPC / OP_RETURN, non stockées dans `utxo_list.txt`). Message explicatif affiché : « Les frais ne sont pas disponibles en chargement fichier (source RPC uniquement). »
- **Changes** : colonnes « Type » et « Date » supprimées (Date souvent vide depuis le fichier).
## Modalités de déploiement

View File

@ -469,14 +469,11 @@
<th>Statut</th>
`;
} else {
// Pour la section changes, ajouter une colonne pour indiquer si c'est un change d'ancrage
if (categoryName === 'changes') {
tableHTML += `
<th class="sortable-header" style="text-align: right;" onclick="toggleSort('${categoryName}', 'amount')">Montant (🛡)${getSortArrow('amount', state.sortColumn, state.sortDirection)}</th>
<th class="sortable-header" style="text-align: right;" onclick="toggleSort('${categoryName}', 'amount')">Montant (✅)${getSortArrow('amount', state.sortColumn, state.sortDirection)}</th>
<th>Date</th>
<th class="sortable-header" onclick="toggleSort('${categoryName}', 'confirmed')">Confirmé${getSortArrow('confirmed', state.sortColumn, state.sortDirection)}</th>
<th>Type</th>
<th>Statut</th>
`;
} else {
@ -527,25 +524,19 @@
} else {
tableHTML += `<td class="amount-cell">${amountBTC.toLocaleString('fr-FR')} 🛡</td>`;
tableHTML += `<td class="amount-cell">${amountSats.toLocaleString('fr-FR')} ✅</td>`;
// Date pour les changes
if (utxo.blockTime) {
const date = new Date(utxo.blockTime * 1000);
tableHTML += `<td>${date.toLocaleString('fr-FR', { year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit' })}</td>`;
} else {
tableHTML += '<td>-</td>';
if (categoryName !== 'changes') {
if (utxo.blockTime) {
const date = new Date(utxo.blockTime * 1000);
tableHTML += `<td>${date.toLocaleString('fr-FR', { year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit' })}</td>`;
} else {
tableHTML += '<td>-</td>';
}
}
}
// Colonne Confirmé : coche si confirmé, sinon vide
const isConfirmed = (utxo.confirmations || 0) > 0;
tableHTML += `<td style="text-align: center;">${isConfirmed ? '✓' : ''}</td>`;
// Colonne Type (uniquement pour les changes)
if (categoryName === 'changes') {
const changeType = utxo.isAnchorChange ? '🔗 Transaction d\'ancrage' : '🔄 Transaction normale';
tableHTML += `<td>${changeType}</td>`;
}
// Colonne Statut (— si source fichier, pas de RPC)
let statusText = '';
let statusClass = '';
@ -793,6 +784,9 @@
function renderFeesTable(fees, categoryName, categoryLabel) {
if (fees.length === 0) {
const emptyReason = utxosFromFile
? 'Les frais ne sont pas disponibles en chargement fichier (source RPC uniquement).'
: 'Aucune transaction avec frais onchain enregistrée.';
return `
<div class="category-section" id="${categoryName}">
<div class="category-header ${categoryName}">
@ -802,7 +796,7 @@
<span><strong>Total des frais :</strong> 0 ✅</span>
</div>
</div>
<div class="empty-message">Aucune transaction avec frais onchain enregistrée.</div>
<div class="empty-message">${emptyReason}</div>
</div>
`;
}