v0.1.4-pre.015
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: crates/ksp-app-config-desk/frontend/main.html -->
|
||||
<!-- version: 10 -->
|
||||
<!-- version: 11 -->
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
|
||||
@@ -300,110 +300,144 @@
|
||||
<section id="loggingPanel" hidden aria-label="Logging Config">
|
||||
<div class="d-flex flex-wrap gap-2 align-items-center justify-content-between mb-3">
|
||||
<div>
|
||||
<h2 class="h5 mb-1">Logging editor — lecture typée</h2>
|
||||
<p class="text-body-secondary small mb-0">Projection read-only de std.logging.json via les types publics de ksp-config-lib ; aucune mutation runtime dans cette tranche.</p>
|
||||
<h2 class="h5 mb-1">Logging editor — mutations/persistence</h2>
|
||||
<p class="text-body-secondary small mb-0">Brouillon typé de <code>std.logging.json</code>, validé et persisté atomiquement par <code>ksp-config-lib</code>. Le runtime Logging n'est pas rechargé dans cette tranche.</p>
|
||||
</div>
|
||||
<div class="d-flex gap-2">
|
||||
<button id="refreshLoggingDocument" class="btn btn-outline-primary btn-sm" type="button">
|
||||
<i class="fa-solid fa-rotate me-1" aria-hidden="true"></i>
|
||||
Recharger
|
||||
</button>
|
||||
<button id="saveLoggingDocument" class="btn btn-primary btn-sm" type="button" disabled>
|
||||
<i class="fa-solid fa-floppy-disk me-1" aria-hidden="true"></i>
|
||||
Sauvegarder
|
||||
</button>
|
||||
</div>
|
||||
<button id="refreshLoggingDocument" class="btn btn-outline-primary btn-sm" type="button">
|
||||
<i class="fa-solid fa-rotate me-1" aria-hidden="true"></i>
|
||||
Rafraîchir
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<dl class="row small mb-4 app-profile-metadata">
|
||||
<dl class="row small mb-3 app-profile-metadata">
|
||||
<dt class="col-lg-3">file_id</dt>
|
||||
<dd id="loggingFileId" class="col-lg-9 font-monospace">—</dd>
|
||||
<dt class="col-lg-3">Path résolu</dt>
|
||||
<dd id="loggingPath" class="col-lg-9 font-monospace text-break">—</dd>
|
||||
<dt class="col-lg-3">format_version</dt>
|
||||
<dd id="loggingFormatVersion" class="col-lg-9 font-monospace">—</dd>
|
||||
<dt class="col-lg-3">logs_directory</dt>
|
||||
<dd id="loggingLogsDirectory" class="col-lg-9 font-monospace text-break">—</dd>
|
||||
<dt class="col-lg-3 mb-0">default_profile</dt>
|
||||
<dd id="loggingDefaultProfile" class="col-lg-9 mb-0 font-monospace">—</dd>
|
||||
<dt class="col-lg-3 mb-0">format_version</dt>
|
||||
<dd id="loggingFormatVersion" class="col-lg-9 mb-0 font-monospace">—</dd>
|
||||
</dl>
|
||||
|
||||
<div class="row g-3 align-items-end mb-4">
|
||||
<div class="col-xl-5">
|
||||
<label class="form-label" for="loggingProfileSelect">Profil inspecté</label>
|
||||
<select id="loggingProfileSelect" class="form-select" disabled></select>
|
||||
<section class="border rounded p-3 mb-4 bg-body-tertiary" aria-label="Globals Logging">
|
||||
<h3 class="h6 mb-3">Globals</h3>
|
||||
<div class="row g-3">
|
||||
<div class="col-xl-7">
|
||||
<label class="form-label" for="loggingLogsDirectoryInput">logs_directory</label>
|
||||
<input id="loggingLogsDirectoryInput" class="form-control font-monospace" type="text" autocomplete="off" disabled>
|
||||
</div>
|
||||
<div class="col-xl-5">
|
||||
<label class="form-label" for="loggingDefaultProfileSelect">default_profile</label>
|
||||
<select id="loggingDefaultProfileSelect" class="form-select" disabled></select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xl-3">
|
||||
<span class="form-label d-block">default_filter</span>
|
||||
<code id="loggingProfileDefaultFilter">—</code>
|
||||
</section>
|
||||
|
||||
<section class="border rounded p-3 mb-4" aria-label="Gestion des profils Logging">
|
||||
<div class="row g-3 align-items-end">
|
||||
<div class="col-xl-4">
|
||||
<label class="form-label" for="loggingProfileSelect">Profil édité</label>
|
||||
<select id="loggingProfileSelect" class="form-select" disabled></select>
|
||||
</div>
|
||||
<div class="col-xl-4">
|
||||
<label class="form-label" for="loggingProfileIdInput">ID cible create/clone/rename</label>
|
||||
<input id="loggingProfileIdInput" class="form-control font-monospace" type="text" autocomplete="off" placeholder="local_test" disabled>
|
||||
</div>
|
||||
<div class="col-xl-4">
|
||||
<div class="d-flex flex-wrap gap-2">
|
||||
<button id="createLoggingProfile" class="btn btn-outline-primary btn-sm" type="button" disabled>Créer</button>
|
||||
<button id="cloneLoggingProfile" class="btn btn-outline-primary btn-sm" type="button" disabled>Cloner</button>
|
||||
<button id="renameLoggingProfile" class="btn btn-outline-secondary btn-sm" type="button" disabled>Renommer</button>
|
||||
<button id="deleteLoggingProfile" class="btn btn-outline-danger btn-sm" type="button" disabled>Supprimer</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xl-4">
|
||||
<span class="form-label d-block">span_events</span>
|
||||
<code id="loggingProfileSpanEvents">—</code>
|
||||
</section>
|
||||
|
||||
<div class="row g-3 mb-4">
|
||||
<div class="col-xl-6">
|
||||
<label class="form-label" for="loggingProfileDefaultFilter">default_filter</label>
|
||||
<select id="loggingProfileDefaultFilter" class="form-select" disabled>
|
||||
<option value="off">off</option><option value="error">error</option><option value="warn">warn</option><option value="info">info</option><option value="debug">debug</option><option value="trace">trace</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-xl-6">
|
||||
<label class="form-label" for="loggingProfileSpanEvents">span_events</label>
|
||||
<select id="loggingProfileSpanEvents" class="form-select" disabled>
|
||||
<option value="off">off</option><option value="new_and_close">new_and_close</option><option value="full">full</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<section class="border rounded p-3 mb-4 bg-body-tertiary" aria-label="Console Logging">
|
||||
<h3 class="h6 mb-3">Console</h3>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-sm align-middle mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">Enabled</th>
|
||||
<th scope="col">Output</th>
|
||||
<th scope="col">ANSI</th>
|
||||
<th scope="col">Format</th>
|
||||
<th scope="col">Level</th>
|
||||
<th scope="col">Targets</th>
|
||||
<th scope="col">Domains</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td id="loggingConsoleEnabled">—</td>
|
||||
<td id="loggingConsoleOutput">—</td>
|
||||
<td id="loggingConsoleAnsi">—</td>
|
||||
<td id="loggingConsoleFormat">—</td>
|
||||
<td id="loggingConsoleLevel">—</td>
|
||||
<td id="loggingConsoleTargets" class="font-monospace text-break">—</td>
|
||||
<td id="loggingConsoleDomains" class="font-monospace text-break">—</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="row g-3">
|
||||
<div class="col-md-2 form-check ms-2">
|
||||
<input id="loggingConsoleEnabled" class="form-check-input" type="checkbox" disabled>
|
||||
<label class="form-check-label" for="loggingConsoleEnabled">Enabled</label>
|
||||
</div>
|
||||
<div class="col-md-2 form-check ms-2">
|
||||
<input id="loggingConsoleAnsi" class="form-check-input" type="checkbox" disabled>
|
||||
<label class="form-check-label" for="loggingConsoleAnsi">ANSI</label>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<label class="form-label" for="loggingConsoleOutput">Output</label>
|
||||
<select id="loggingConsoleOutput" class="form-select" disabled><option value="stdout">stdout</option><option value="stderr">stderr</option></select>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<label class="form-label" for="loggingConsoleFormat">Format</label>
|
||||
<select id="loggingConsoleFormat" class="form-select" disabled><option value="human">human</option><option value="compact">compact</option><option value="pretty">pretty</option><option value="json">json</option></select>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<label class="form-label" for="loggingConsoleLevel">Level</label>
|
||||
<select id="loggingConsoleLevel" class="form-select" disabled><option value="off">off</option><option value="error">error</option><option value="warn">warn</option><option value="info">info</option><option value="debug">debug</option><option value="trace">trace</option></select>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<label class="form-label" for="loggingConsoleTargets">Targets</label>
|
||||
<input id="loggingConsoleTargets" class="form-control font-monospace" type="text" autocomplete="off" disabled>
|
||||
</div>
|
||||
<div class="col-md-5">
|
||||
<label class="form-label" for="loggingConsoleDomains">Domains</label>
|
||||
<input id="loggingConsoleDomains" class="form-control font-monospace" type="text" autocomplete="off" disabled>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="mb-4" aria-label="Fichiers Logging">
|
||||
<h3 class="h6 mb-3">Fichiers</h3>
|
||||
<div class="d-flex align-items-center justify-content-between gap-2 mb-2">
|
||||
<div>
|
||||
<h3 class="h6 mb-0">Fichiers</h3>
|
||||
<div class="form-text">0, 1 ou plusieurs sinks persistants. Les suppressions restent dans le brouillon jusqu'à Sauvegarder.</div>
|
||||
</div>
|
||||
<button id="addLoggingFile" class="btn btn-outline-primary btn-sm" type="button" disabled>Ajouter un fichier</button>
|
||||
</div>
|
||||
<div class="table-responsive">
|
||||
<table id="loggingFilesTable" class="table table-striped table-hover table-sm align-middle w-100">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">output_id</th>
|
||||
<th scope="col">Enabled</th>
|
||||
<th scope="col">Path</th>
|
||||
<th scope="col">Rotation</th>
|
||||
<th scope="col">Format</th>
|
||||
<th scope="col">ANSI</th>
|
||||
<th scope="col">Level</th>
|
||||
<th scope="col">Targets</th>
|
||||
<th scope="col">Domains</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<table id="loggingFilesTable" class="table table-sm align-middle w-100">
|
||||
<thead><tr><th>output_id</th><th>On</th><th>Path</th><th>Rotation</th><th>Format</th><th>Level</th><th>Targets</th><th>Domains</th><th></th></tr></thead>
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="mb-4" aria-label="Target filters Logging">
|
||||
<h3 class="h6 mb-3">Target filters globaux</h3>
|
||||
<div class="d-flex align-items-center justify-content-between gap-2 mb-2">
|
||||
<h3 class="h6 mb-0">Target filters globaux</h3>
|
||||
<button id="addLoggingTargetFilter" class="btn btn-outline-primary btn-sm" type="button" disabled>Ajouter un target filter</button>
|
||||
</div>
|
||||
<div class="table-responsive">
|
||||
<table id="loggingTargetFiltersTable" class="table table-striped table-hover table-sm align-middle w-100">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">target_prefix</th>
|
||||
<th scope="col">Level</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<table id="loggingTargetFiltersTable" class="table table-sm align-middle w-100">
|
||||
<thead><tr><th>target_prefix</th><th>Level</th><th></th></tr></thead>
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div id="loggingSaveReport" class="small text-body-secondary mb-2">Aucune sauvegarde effectuée pendant ce lancement.</div>
|
||||
<div id="loggingStatus" class="alert alert-primary mb-0" role="status" aria-live="polite">Chargement du document Logging typé...</div>
|
||||
</section>
|
||||
|
||||
@@ -417,6 +451,43 @@
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<div id="loggingDiscardDraftModal" class="modal fade" tabindex="-1" aria-labelledby="loggingDiscardDraftTitle" aria-hidden="true">
|
||||
<div class="modal-dialog modal-dialog-centered">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h2 id="loggingDiscardDraftTitle" class="modal-title fs-5">Abandonner le brouillon Logging</h2>
|
||||
<button class="btn-close" type="button" data-bs-dismiss="modal" aria-label="Annuler"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p class="mb-0">Des modifications non sauvegardées existent. Recharger la source les abandonnera.</p>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button class="btn btn-outline-secondary" type="button" data-bs-dismiss="modal">Annuler</button>
|
||||
<button id="loggingDiscardDraftConfirm" class="btn btn-danger" type="button">Abandonner et recharger</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="loggingProfileDeleteModal" class="modal fade" tabindex="-1" aria-labelledby="loggingProfileDeleteTitle" aria-hidden="true">
|
||||
<div class="modal-dialog modal-dialog-centered">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h2 id="loggingProfileDeleteTitle" class="modal-title fs-5">Supprimer le profil du brouillon</h2>
|
||||
<button class="btn-close" type="button" data-bs-dismiss="modal" aria-label="Annuler"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p class="mb-2">Retirer le profil <code id="loggingProfileDeleteName" class="font-monospace"></code> du brouillon Logging ?</p>
|
||||
<p class="text-body-secondary small mb-0">Le fichier n'est pas modifié tant que Sauvegarder n'est pas déclenché.</p>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button class="btn btn-outline-secondary" type="button" data-bs-dismiss="modal">Annuler</button>
|
||||
<button id="loggingProfileDeleteConfirm" class="btn btn-danger" type="button">Retirer du brouillon</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="environmentRemoveConfirmModal" class="modal fade" tabindex="-1" aria-labelledby="environmentRemoveConfirmTitle" aria-hidden="true">
|
||||
<div class="modal-dialog modal-dialog-centered">
|
||||
<div class="modal-content">
|
||||
|
||||
Reference in New Issue
Block a user