From bba319b2826f4d264ecebef3258d3c3f16237cc5 Mon Sep 17 00:00:00 2001 From: Pyra <92104930+pyranota@users.noreply.github.com> Date: Tue, 17 Feb 2026 08:36:59 +0100 Subject: [PATCH] fix: download audit logs (#7965) * feat: download audit logs Signed-off-by: pyranota * add on hover Signed-off-by: pyranota --------- Signed-off-by: pyranota --- .../auditLogs/AuditLogsFilters.svelte | 35 ++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/frontend/src/lib/components/auditLogs/AuditLogsFilters.svelte b/frontend/src/lib/components/auditLogs/AuditLogsFilters.svelte index 3caa73832f..3bc97538d9 100644 --- a/frontend/src/lib/components/auditLogs/AuditLogsFilters.svelte +++ b/frontend/src/lib/components/auditLogs/AuditLogsFilters.svelte @@ -31,7 +31,7 @@ } from '$lib/gen' import { userStore, workspaceStore } from '$lib/stores' - import { ChevronDown, Loader2, RefreshCcw } from 'lucide-svelte' + import { ChevronDown, Download, Loader2, RefreshCcw } from 'lucide-svelte' import { onDestroy, untrack } from 'svelte' import ToggleButtonGroup from '../common/toggleButton-v2/ToggleButtonGroup.svelte' import ToggleButton from '../common/toggleButton-v2/ToggleButton.svelte' @@ -279,6 +279,28 @@ let refresh = $state(0) let lastRefresh = $state(-1) + function downloadAuditLogsAsJson() { + if (!logs || logs.length === 0) { + sendUserToast('No audit logs to download', true) + return + } + + const jsonContent = JSON.stringify(logs, null, 2) + const blob = new Blob([jsonContent], { type: 'application/json' }) + const url = URL.createObjectURL(blob) + + const timestamp = new Date().toISOString().replace(/[:.]/g, '-') + const filename = `audit_logs_${$workspaceStore}_${timestamp}.json` + + const link = document.createElement('a') + link.href = url + link.download = filename + document.body.appendChild(link) + link.click() + document.body.removeChild(link) + URL.revokeObjectURL(url) + } + // observe all the variables that should trigger an update $effect(() => { ;[refresh, username, perPage, before, after, operation, resource, actionKind, scope, pageIndex] @@ -438,6 +460,17 @@ > Clear filters +