Diff -- /var/www/vhosts/3dshawn.com/site1/TEMPLATES/export.html
Diff
/var/www/vhosts/3dshawn.com/site1/TEMPLATES/export.html
added on local at 2026-07-11 18:27:48
Added
+91
lines
Removed
-0
lines
Context
0
unchanged
Blobs
from
to a061399f5860
to a061399f5860
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> Compliance</span> | |
| 3 | <h1 class="page-title">Compliance export</h1> | |
| 4 | <p class="page-subtitle">Dump every captured file + schema change to CSV over a window you pick. One row per change, with a diff URL and blob SHA so an auditor can independently verify the "before / after" content lives in BLOB_STORE.</p> | |
| 5 | </div> | |
| 6 | ||
| 7 | <div class="dash-grid" style="grid-template-columns:1fr 1fr;margin-bottom:16px"> | |
| 8 | <div class="module glow-teal"> | |
| 9 | <div class="module-head"><div class="left"> | |
| 10 | <div class="module-title">File changes in window</div> | |
| 11 | <span class="module-subtitle">Every FILE_CHANGES row inside your selected date range.</span> | |
| 12 | </div></div> | |
| 13 | <div class="module-body kpi kpi-teal"> | |
| 14 | <div class="num">$file_ct</div> | |
| 15 | <div class="lbl">Rows in export</div> | |
| 16 | <div class="sub">Excludes ts-only unless you tick the box</div> | |
| 17 | </div> | |
| 18 | </div> | |
| 19 | <div class="module glow-amber"> | |
| 20 | <div class="module-head"><div class="left"> | |
| 21 | <div class="module-title">Schema changes in window</div> | |
| 22 | <span class="module-subtitle">Every SCHEMA_CHANGE row inside your selected date range.</span> | |
| 23 | </div></div> | |
| 24 | <div class="module-body kpi kpi-amber"> | |
| 25 | <div class="num">$schema_ct</div> | |
| 26 | <div class="lbl">Rows in export</div> | |
| 27 | <div class="sub">DDL diffs across all monitored DBs</div> | |
| 28 | </div> | |
| 29 | </div> | |
| 30 | </div> | |
| 31 | ||
| 32 | <div class="module glow-emerald"> | |
| 33 | <div class="module-head"><div class="left"> | |
| 34 | <div class="module-icon"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></svg></div> | |
| 35 | <div class="module-title">Download CSV</div> | |
| 36 | <span class="module-subtitle">Streamed straight from the DB in 5000-row chunks -- safe on multi-million-row histories.</span> | |
| 37 | </div></div> | |
| 38 | <div class="module-body"> | |
| 39 | <form method="get" action="/export.cgi" style="display:flex;flex-direction:column;gap:14px;max-width:640px"> | |
| 40 | <input type="hidden" name="fmt" value="csv"> | |
| 41 | ||
| 42 | <div style="display:flex;gap:12px"> | |
| 43 | <label style="flex:1;display:flex;flex-direction:column;gap:4px"> | |
| 44 | <span class="rb-label">From</span> | |
| 45 | <input type="date" name="from" value="$from_h" | |
| 46 | style="background:var(--bg-1);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:8px 12px;font-family:inherit"> | |
| 47 | </label> | |
| 48 | <label style="flex:1;display:flex;flex-direction:column;gap:4px"> | |
| 49 | <span class="rb-label">To</span> | |
| 50 | <input type="date" name="to" value="$to_h" | |
| 51 | style="background:var(--bg-1);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:8px 12px;font-family:inherit"> | |
| 52 | </label> | |
| 53 | </div> | |
| 54 | ||
| 55 | <div style="display:flex;gap:12px"> | |
| 56 | <label style="flex:1;display:flex;flex-direction:column;gap:4px"> | |
| 57 | <span class="rb-label">Kind</span> | |
| 58 | <select name="kind" style="background:var(--bg-1);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:8px 12px"> | |
| 59 | <option value="both" $kind_both_sel>Both</option> | |
| 60 | <option value="file" $kind_file_sel>File changes only</option> | |
| 61 | <option value="schema" $kind_schema_sel>Schema changes only</option> | |
| 62 | </select> | |
| 63 | </label> | |
| 64 | <label style="flex:1;display:flex;flex-direction:column;gap:4px"> | |
| 65 | <span class="rb-label">Server</span> | |
| 66 | <select name="server_id" style="background:var(--bg-1);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:8px 12px"> | |
| 67 | <option value="0">All servers</option> | |
| 68 | [loop:@servers] | |
| 69 | <option value="$server_id" $selected>$server_name</option> | |
| 70 | [/loop] | |
| 71 | </select> | |
| 72 | </label> | |
| 73 | </div> | |
| 74 | ||
| 75 | <label style="display:flex;align-items:center;gap:8px"> | |
| 76 | <input type="checkbox" name="include_ts_only" value="1" $incl_ts_checked> | |
| 77 | <span style="font-size:12.5px;color:var(--text-dim)">Include timestamp-only file changes (usually noise -- default excluded)</span> | |
| 78 | </label> | |
| 79 | ||
| 80 | <div style="display:flex;gap:8px;justify-content:flex-start;margin-top:6px"> | |
| 81 | <button type="submit" class="tr-chip is-active" style="border:none;padding:8px 20px">Download CSV</button> | |
| 82 | </div> | |
| 83 | </form> | |
| 84 | ||
| 85 | <div style="margin-top:20px;padding-top:16px;border-top:1px solid var(--border);font-size:12px;color:var(--text-dim);line-height:1.7"> | |
| 86 | <strong style="color:var(--text);text-transform:uppercase;letter-spacing:1.2px;font-size:11px">CSV columns</strong><br> | |
| 87 | <code>change_id, kind, captured_at, server_name, target, status, blob_sha, is_ts_only, diff_url, change_summary</code><br> | |
| 88 | Auditors can hit <code>diff_url</code> for the full before/after content; <code>blob_sha</code> is the content-addressable pointer into BLOB_STORE for independent verification. | |
| 89 | </div> | |
| 90 | </div> | |
| 91 | </div> |