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:
parent
1054b24c64
commit
3389d62401
@ -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`.
|
- 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.
|
- 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).
|
- `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
|
## Modalités de déploiement
|
||||||
|
|
||||||
|
|||||||
@ -469,14 +469,11 @@
|
|||||||
<th>Statut</th>
|
<th>Statut</th>
|
||||||
`;
|
`;
|
||||||
} else {
|
} else {
|
||||||
// Pour la section changes, ajouter une colonne pour indiquer si c'est un change d'ancrage
|
|
||||||
if (categoryName === 'changes') {
|
if (categoryName === 'changes') {
|
||||||
tableHTML += `
|
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 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 class="sortable-header" onclick="toggleSort('${categoryName}', 'confirmed')">Confirmé${getSortArrow('confirmed', state.sortColumn, state.sortDirection)}</th>
|
||||||
<th>Type</th>
|
|
||||||
<th>Statut</th>
|
<th>Statut</th>
|
||||||
`;
|
`;
|
||||||
} else {
|
} else {
|
||||||
@ -527,25 +524,19 @@
|
|||||||
} else {
|
} else {
|
||||||
tableHTML += `<td class="amount-cell">${amountBTC.toLocaleString('fr-FR')} 🛡</td>`;
|
tableHTML += `<td class="amount-cell">${amountBTC.toLocaleString('fr-FR')} 🛡</td>`;
|
||||||
tableHTML += `<td class="amount-cell">${amountSats.toLocaleString('fr-FR')} ✅</td>`;
|
tableHTML += `<td class="amount-cell">${amountSats.toLocaleString('fr-FR')} ✅</td>`;
|
||||||
// Date pour les changes
|
if (categoryName !== 'changes') {
|
||||||
if (utxo.blockTime) {
|
if (utxo.blockTime) {
|
||||||
const date = new Date(utxo.blockTime * 1000);
|
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>`;
|
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 {
|
} else {
|
||||||
tableHTML += '<td>-</td>';
|
tableHTML += '<td>-</td>';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Colonne Confirmé : coche si confirmé, sinon vide
|
|
||||||
const isConfirmed = (utxo.confirmations || 0) > 0;
|
const isConfirmed = (utxo.confirmations || 0) > 0;
|
||||||
tableHTML += `<td style="text-align: center;">${isConfirmed ? '✓' : ''}</td>`;
|
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)
|
// Colonne Statut (— si source fichier, pas de RPC)
|
||||||
let statusText = '';
|
let statusText = '';
|
||||||
let statusClass = '';
|
let statusClass = '';
|
||||||
@ -793,6 +784,9 @@
|
|||||||
|
|
||||||
function renderFeesTable(fees, categoryName, categoryLabel) {
|
function renderFeesTable(fees, categoryName, categoryLabel) {
|
||||||
if (fees.length === 0) {
|
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 `
|
return `
|
||||||
<div class="category-section" id="${categoryName}">
|
<div class="category-section" id="${categoryName}">
|
||||||
<div class="category-header ${categoryName}">
|
<div class="category-header ${categoryName}">
|
||||||
@ -802,7 +796,7 @@
|
|||||||
<span><strong>Total des frais :</strong> 0 ✅</span>
|
<span><strong>Total des frais :</strong> 0 ✅</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="empty-message">Aucune transaction avec frais onchain enregistrée.</div>
|
<div class="empty-message">${emptyReason}</div>
|
||||||
</div>
|
</div>
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user