2025-06-06 07:42:55 +00:00
|
|
|
|
<!DOCTYPE html>
|
|
|
|
|
|
<html lang="en">
|
|
|
|
|
|
{{ template "head" . }}
|
|
|
|
|
|
|
|
|
|
|
|
<body>
|
|
|
|
|
|
<header></header>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="column">
|
|
|
|
|
|
<h1>Dashboard</h1>
|
|
|
|
|
|
<div class="columns is-mobile">
|
|
|
|
|
|
<div class="column is-2">
|
|
|
|
|
|
<aside class="menu">
|
|
|
|
|
|
|
2025-06-12 08:57:10 +00:00
|
|
|
|
<p class="menu-label">GoDownloader</p>
|
2025-06-06 07:42:55 +00:00
|
|
|
|
|
|
|
|
|
|
<ul class="menu-list">
|
2025-06-12 08:57:10 +00:00
|
|
|
|
<li><a class="nav-link" onclick="toggleMenuGoDownload(); return false;">GoDownloader</a>
|
|
|
|
|
|
<ul id="menuDownload" hidden>
|
|
|
|
|
|
<li><a hx-get="/downloads" class="nav-link" hx-target="#content" hx-swap="innerHTML">Téléchargements</a></li>
|
|
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
|
|
|
|
</li>
|
2025-06-06 07:42:55 +00:00
|
|
|
|
<p class="menu-label">Library</p>
|
|
|
|
|
|
|
|
|
|
|
|
<li><a hx-get="/library" class="nav-link"
|
|
|
|
|
|
onclick="toggleMenu(); return false;"
|
|
|
|
|
|
hx-target="#content" hx-swap-oob="beforeend">Library</a>
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<ul class="menu-list" id="libraryMenu" hidden>
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<a class="is-active">Choise Library</a>
|
2025-06-21 16:17:16 +00:00
|
|
|
|
<ul id="paths-list">
|
2025-06-06 07:42:55 +00:00
|
|
|
|
{{range .paths}}
|
|
|
|
|
|
<li>
|
2025-06-21 16:20:31 +00:00
|
|
|
|
<a
|
|
|
|
|
|
href="/api/paths/{{.ID}}/media"
|
|
|
|
|
|
class="path-link"
|
|
|
|
|
|
hx-get="/api/paths/{{.ID}}/media"
|
|
|
|
|
|
hx-target="#content"
|
|
|
|
|
|
hx-swap="innerHTML">
|
2025-06-21 16:17:16 +00:00
|
|
|
|
{{.PathName}}
|
|
|
|
|
|
<i class="fas fa-ellipsis-v"></i>
|
|
|
|
|
|
</a>
|
|
|
|
|
|
</li>
|
|
|
|
|
|
{{end}}
|
2025-06-21 16:20:31 +00:00
|
|
|
|
|
2025-06-06 07:42:55 +00:00
|
|
|
|
</ul>
|
|
|
|
|
|
</li>
|
|
|
|
|
|
</ul>
|
|
|
|
|
|
</li>
|
2025-06-20 15:01:26 +00:00
|
|
|
|
<li><a hx-get="/folders" class="nav-link" hx-target="#content" hx-swap-oob="beforeend">Folders</a></li>
|
2025-06-06 07:42:55 +00:00
|
|
|
|
<li><a hx-get="/settings" class="nav-link" hx-target="#content" hx-swap-oob="beforeend">Settings</a></li>
|
|
|
|
|
|
</li>
|
|
|
|
|
|
</ul>
|
|
|
|
|
|
</aside>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="column is-10">
|
2025-06-21 18:25:36 +00:00
|
|
|
|
<div id="loading-spinner" class="has-text-centered" style="display:none; position: absolute; top: 1rem; right: 1rem; z-index: 50;">
|
|
|
|
|
|
<button class="button is-loading is-white is-large" aria-label="Loading"></button>
|
|
|
|
|
|
</div>
|
2025-06-06 07:42:55 +00:00
|
|
|
|
<div id="content">
|
|
|
|
|
|
<!-- Le contenu spécifique sera chargé ici -->
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<footer></footer>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</body>
|
2025-06-21 18:28:07 +00:00
|
|
|
|
<script>
|
|
|
|
|
|
// static/js/spinner.js
|
|
|
|
|
|
// Écoute tous les événements HTMX et affiche/masque le spinner global
|
|
|
|
|
|
document.body.addEventListener('htmx:send', () => {
|
|
|
|
|
|
const s = document.getElementById('loading-spinner');
|
|
|
|
|
|
if (s) s.style.display = 'block';
|
|
|
|
|
|
});
|
|
|
|
|
|
document.body.addEventListener('htmx:afterOnLoad', () => {
|
|
|
|
|
|
const s = document.getElementById('loading-spinner');
|
|
|
|
|
|
if (s) s.style.display = 'none';
|
|
|
|
|
|
});
|
|
|
|
|
|
// En cas d’erreur réseau
|
|
|
|
|
|
document.body.addEventListener('htmx:afterRequest', (evt) => {
|
|
|
|
|
|
if (evt.detail.xhr.status >= 400) {
|
|
|
|
|
|
const s = document.getElementById('loading-spinner');
|
|
|
|
|
|
if (s) s.style.display = 'none';
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
</script>
|
2025-06-06 07:42:55 +00:00
|
|
|
|
|
|
|
|
|
|
</html>
|