Promote develop → main (2026-07-25 22:22 UTC) #16
@@ -65,27 +65,15 @@
|
||||
<div class="section active" id="sec-dashboard">
|
||||
<div class="stats-grid" id="statsGrid"></div>
|
||||
|
||||
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 16px;">
|
||||
<div class="card card-link" onclick="gotoSection('orgs')" role="link" tabindex="0" title="Zu den Organisationen (Klick auf einen Eintrag öffnet die Organisation)">
|
||||
<div class="card-header">
|
||||
<h2>Bald ablaufende Lizenzen</h2>
|
||||
<svg class="card-link-chevron" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="9 18 15 12 9 6"/></svg>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<ul class="expiring-list" id="expiringList">
|
||||
<li class="text-muted" style="padding: 8px 0;">Laden...</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="card card-link" onclick="gotoSection('orgs')" role="link" tabindex="0" title="Zu den Organisationen (Klick auf einen Eintrag öffnet die Organisation)">
|
||||
<div class="card-header">
|
||||
<h2>Bald ablaufende Lizenzen</h2>
|
||||
<svg class="card-link-chevron" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="9 18 15 12 9 6"/></svg>
|
||||
</div>
|
||||
|
||||
<div class="card card-link" onclick="gotoSection('audit')" role="link" tabindex="0" title="Zum Audit-Log">
|
||||
<div class="card-header">
|
||||
<h2>Letzte Aktivität</h2>
|
||||
<svg class="card-link-chevron" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="9 18 15 12 9 6"/></svg>
|
||||
</div>
|
||||
<div class="card-body" id="recentActivity">
|
||||
<div class="text-muted">Laden...</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<ul class="expiring-list" id="expiringList">
|
||||
<li class="text-muted" style="padding: 8px 0;">Laden...</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1121,7 +1109,7 @@
|
||||
</div>
|
||||
|
||||
<script src="/static/js/a11y.js?v=20260725a"></script>
|
||||
<script src="/static/js/app.js?v=20260725p"></script>
|
||||
<script src="/static/js/app.js?v=20260725q"></script>
|
||||
<script src="/static/js/sources.js?v=20260522x2"></script>
|
||||
<script src="/static/js/x-scraper.js?v=20260522a"></script>
|
||||
<script src="/static/js/source-health.js?v=20260509l"></script>
|
||||
|
||||
@@ -209,21 +209,6 @@ async function loadDashboard() {
|
||||
`).join("");
|
||||
}
|
||||
|
||||
// Recent activity
|
||||
const actEl = document.getElementById("recentActivity");
|
||||
if (stats.recent_activity.length === 0) {
|
||||
actEl.innerHTML = '<div class="text-muted">Keine Aktivität</div>';
|
||||
} else {
|
||||
actEl.innerHTML = stats.recent_activity.map(a => `
|
||||
<div class="activity-item">
|
||||
<div class="activity-icon ${a.type}">${a.type === "org" ? "O" : "U"}</div>
|
||||
<div>
|
||||
<div>${esc(a.label)}</div>
|
||||
<div class="text-muted" style="font-size: 12px;">${formatDate(a.created_at)}</div>
|
||||
</div>
|
||||
</div>
|
||||
`).join("");
|
||||
}
|
||||
} catch (err) {
|
||||
console.error("Dashboard laden fehlgeschlagen:", err);
|
||||
}
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren