From 8c31ab39987be6178d6a561da8112ac369971410 Mon Sep 17 00:00:00 2001 From: Christian Date: Thu, 10 Jul 2025 14:36:14 -0600 Subject: [PATCH 1/3] all messages anchor links poc --- .../src/components/audit/AuditListItem.vue | 43 +++++++++++++++++-- 1 file changed, 39 insertions(+), 4 deletions(-) diff --git a/src/Frontend/src/components/audit/AuditListItem.vue b/src/Frontend/src/components/audit/AuditListItem.vue index c44e1ffa6..3afe014d3 100644 --- a/src/Frontend/src/components/audit/AuditListItem.vue +++ b/src/Frontend/src/components/audit/AuditListItem.vue @@ -13,18 +13,51 @@ const props = defineProps<{ message: Message; }>(); -function navigateToMessage(message: Message) { +function getMessageUrl(message: Message) { + const path = message.status === MessageStatus.Successful || message.status === MessageStatus.ResolvedSuccessfully ? routeLinks.messages.successMessage.link(message.message_id, message.id) : routeLinks.messages.failedMessage.link(message.id); + + // Build the complete URL with hash routing and query parameters + const query = router.currentRoute.value.query; + const queryParams = new URLSearchParams(); + + // Add existing query parameters + Object.entries(query).forEach(([key, value]) => { + if (value !== null && value !== undefined) { + queryParams.append(key, String(value)); + } + }); + + // Add the back parameter + queryParams.set("back", route.path); + + const queryString = queryParams.toString(); + return `#${path}${queryString ? `?${queryString}` : ""}`; +} + +function navigateToMessage(message: Message, event?: MouseEvent) { + // Allow browser's native tab/window opening behavior + if (event && (event.metaKey || event.ctrlKey || event.shiftKey || event.button === 1)) { + return; + } + + // For normal left-clicks, prevent default anchor behavior and use Vue Router + // This maintains SPA navigation and preserves the "back" query parameter + if (event) { + event.preventDefault(); + } + const query = router.currentRoute.value.query; + const path = message.status === MessageStatus.Successful || message.status === MessageStatus.ResolvedSuccessfully ? routeLinks.messages.successMessage.link(message.message_id, message.id) : routeLinks.messages.failedMessage.link(message.id); router.push({ - path: message.status === MessageStatus.Successful || message.status === MessageStatus.ResolvedSuccessfully ? routeLinks.messages.successMessage.link(message.message_id, message.id) : routeLinks.messages.failedMessage.link(message.id), + path, query: { ...query, ...{ back: route.path } }, }); }