Diff -- /var/www/vhosts/3dshawn.com/site1/TEMPLATES/dashboard.html

O Operator
Diff

/var/www/vhosts/3dshawn.com/site1/TEMPLATES/dashboard.html

added on local at 2026-07-10 22:19:11

Added
+161
lines
Removed
-0
lines
Context
0
unchanged
Blobs
from
to c6195145cb05
Restore this content →
Unified diff
Naive LCS-based line diff. Additions in emerald, deletions in rose. Both sides decompressed live from BLOB_STORE.
1<div class="page-head">
2 <span class="page-eyebrow"><span class="dot"></span> Overview</span>
3 <h1 class="page-title">Dashboard</h1>
4 <p class="page-subtitle">Portfolio-wide health at a glance. Every file change, every schema change, every drifted container -- captured silently, restorable to any moment, no workflow discipline required.</p>
5</div>
6
7<!-- KPI row -->
8<div class="dash-grid">
9 <div class="module glow-teal">
10 <div class="module-head"><div class="left">
11 <div class="module-icon"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/></svg></div>
12 <div class="module-title">File changes</div>
13 <span class="module-subtitle">Captured in the last 24 hours across every monitored path on every server.</span>
14 </div></div>
15 <div class="module-body kpi kpi-teal">
16 <div class="num">$kpi_file_today</div>
17 <div class="lbl">Last 24h</div>
18 <div class="sub">All watched paths + containers</div>
19 </div>
20 </div>
21
22 <div class="module glow-amber">
23 <div class="module-head"><div class="left">
24 <div class="module-icon"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2"><ellipse cx="12" cy="5" rx="9" ry="3"/><path d="M3 5v6c0 1.7 4 3 9 3s9-1.3 9-3V5"/><path d="M3 11v6c0 1.7 4 3 9 3s9-1.3 9-3v-6"/></svg></div>
25 <div class="module-title">Schema changes</div>
26 <span class="module-subtitle">DDL diffs across every monitored DB in the last 7 days -- caught even if no one committed them.</span>
27 </div></div>
28 <div class="module-body kpi kpi-amber">
29 <div class="num">$kpi_schema_7d</div>
30 <div class="lbl">Last 7 days</div>
31 <div class="sub">Across all monitored databases</div>
32 </div>
33 </div>
34
35 <div class="module glow-emerald">
36 <div class="module-head"><div class="left">
37 <div class="module-icon"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2"><path d="M20 13V7a2 2 0 0 0-2-2h-4l-2-3H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h5"/><path d="M14 19l2 2 4-4"/></svg></div>
38 <div class="module-title">Named releases</div>
39 <span class="module-subtitle">Bookmark moments you've saved. Auto-purge respects these -- their blobs stay forever.</span>
40 </div></div>
41 <div class="module-body kpi kpi-emerald">
42 <div class="num">$kpi_releases</div>
43 <div class="lbl">Bookmarked</div>
44 <div class="sub">Point-in-time restore anchors</div>
45 </div>
46 </div>
47
48 <div class="module glow-rose">
49 <div class="module-head"><div class="left">
50 <div class="module-icon"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><line x1="12" y1="8" x2="12" y2="12"/><line x1="12" y1="16" x2="12.01" y2="16"/></svg></div>
51 <div class="module-title">Drift alerts</div>
52 <span class="module-subtitle">Containers that were supposed to stay immutable but got modified at runtime. Compliance signal.</span>
53 </div></div>
54 <div class="module-body kpi kpi-rose">
55 <div class="num">$kpi_drifted</div>
56 <div class="lbl">Active drift</div>
57 <div class="sub">On supposedly-immutable containers</div>
58 </div>
59 </div>
60</div>
61
62<!-- 90-day activity timeline -->
63<div class="module glow-teal" style="margin-bottom:20px">
64 <div class="module-head"><div class="left">
65 <div class="module-icon"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 3v18h18"/><rect x="6" y="12" width="3" height="6"/><rect x="11" y="7" width="3" height="11"/><rect x="16" y="10" width="3" height="8"/></svg></div>
66 <div class="module-title">Activity, last 90 days</div>
67 <span class="module-subtitle">Every captured change, stacked by kind. Teal is files, amber is schema DDL. Hover for exact daily counts.</span>
68 </div></div>
69 <div class="module-body" style="padding-top:10px">
70 $timeline_svg
71 </div>
72</div>
73
74<!-- Recent activity -->
75<div class="module glow-teal" style="margin-bottom:20px">
76 <div class="module-head"><div class="left">
77 <div class="module-icon"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/></svg></div>
78 <div class="module-title">Recent activity</div>
79 <span class="module-subtitle">Newest first. Click any row to open its full diff. File + schema changes merged into one timeline.</span>
80 </div></div>
81 <div class="module-body tight">
82 [if:$has_recent]
83 <table class="tbl">
84 <thead><tr>
85 <th style="width:80px">Type</th>
86 <th>What</th>
87 <th>Detail</th>
88 <th style="width:170px">When</th>
89 </tr></thead>
90 <tbody>
91 [loop:@recent]
92 <tr>
93 <td><span class="pill $kind_pill">$kind</span></td>
94 <td class="mono" style="font-size:12.5px"><a href="$diff_url" style="color:var(--accent-hi);text-decoration:none">$what</a></td>
95 <td class="dim" style="font-size:12.5px">$detail</td>
96 <td class="mono dim">$ts</td>
97 </tr>
98 [/loop]
99 </tbody>
100 </table>
101 [/if]
102 [if:!$has_recent]
103 <div style="padding:36px 14px;text-align:center;color:var(--text-dim);font-size:13.5px">
104 No activity captured yet. Start a file monitor or point at a database in the <a href="[url:file_monitors]" style="color:var(--accent-hi)">config</a> to begin capture.
105 </div>
106 [/if]
107 </div>
108</div>
109
110<div class="dash-grid" style="grid-template-columns:2fr 1fr">
111 <div class="module glow-emerald">
112 <div class="module-head"><div class="left">
113 <div class="module-icon"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 11l3 3L22 4"/><path d="M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"/></svg></div>
114 <div class="module-title">Named releases</div>
115 <span class="module-subtitle">Recent bookmarks. Any file blob referenced from a named release is protected from auto-purge.</span>
116 </div></div>
117 <div class="module-body tight">
118 [if:$has_releases]
119 <table class="tbl">
120 <thead><tr><th>Name</th><th>By</th><th style="width:130px">When</th></tr></thead>
121 <tbody>
122 [loop:@releases]
123 <tr>
124 <td><strong>$name</strong><div class="dim" style="font-size:11.5px">$description</div></td>
125 <td class="dim">$released_by</td>
126 <td class="mono dim">$released_h</td>
127 </tr>
128 [/loop]
129 </tbody>
130 </table>
131 [/if]
132 [if:!$has_releases]
133 <div style="padding:28px 14px;text-align:center;color:var(--text-dim);font-size:13.5px">
134 No named releases yet. Bookmark a moment to protect it from auto-purge.
135 </div>
136 [/if]
137 </div>
138 </div>
139
140 <div class="module glow-sky">
141 <div class="module-head"><div class="left">
142 <div class="module-icon"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="2" width="20" height="8" rx="2"/><rect x="2" y="14" width="20" height="8" rx="2"/></svg></div>
143 <div class="module-title">Servers</div>
144 <span class="module-subtitle">Central + agent nodes.</span>
145 </div></div>
146 <div class="module-body tight">
147 <table class="tbl">
148 <thead><tr><th>Name</th><th>Status</th><th class="dim" style="width:100px">Last seen</th></tr></thead>
149 <tbody>
150 [loop:@servers]
151 <tr>
152 <td><strong>$server_name</strong> <span class="dim mono" style="font-size:11px">$role</span></td>
153 <td><span class="pill $status_pill">$status</span></td>
154 <td class="mono dim">$last_heartbeat_h</td>
155 </tr>
156 [/loop]
157 </tbody>
158 </table>
159 </div>
160 </div>
161</div>