diff --git a/src/localization/en.json b/src/localization/en.json
index d8005621..c7393c60 100644
--- a/src/localization/en.json
+++ b/src/localization/en.json
@@ -18,7 +18,9 @@
"view_details": "View Details",
"configure": "Configure",
"refresh": "Refresh",
- "cancel": "Cancel"
+ "cancel": "Cancel",
+ "copy": "Copy",
+ "open_link": "Open Link"
},
"sort_by": "Sort by:",
"time_units": {
diff --git a/src/views/GameLog/columns.jsx b/src/views/GameLog/columns.jsx
index 645da87d..b5d1711a 100644
--- a/src/views/GameLog/columns.jsx
+++ b/src/views/GameLog/columns.jsx
@@ -1,11 +1,18 @@
import Location from '../../components/Location.vue';
import { Badge } from '../../components/ui/badge';
import { Button } from '../../components/ui/button';
+import {
+ ContextMenu,
+ ContextMenuContent,
+ ContextMenuItem,
+ ContextMenuSeparator,
+ ContextMenuTrigger
+} from '../../components/ui/context-menu';
import { TooltipWrapper } from '../../components/ui/tooltip';
-import { ArrowUpDown, FileText, Trash2, X } from 'lucide-vue-next';
+import { ArrowUpDown, Copy, ExternalLink, FileText, Trash2, X } from 'lucide-vue-next';
import { storeToRefs } from 'pinia';
-import { formatDateFilter, openExternalLink } from '../../shared/utils';
+import { copyToClipboard, formatDateFilter, openExternalLink } from '../../shared/utils';
import { i18n } from '../../plugins';
import {
useInstanceStore,
@@ -158,11 +165,23 @@ export const createColumns = ({ getCreatedAt, onDelete, onDeletePrompt }) => {
if (original.type === 'Event') {
return (
-
-
- {original.data}
-
-
+
+
+
+
+ {original.data}
+
+
+
+
+ copyToClipboard(original.data)}
+ >
+
+ {t('common.actions.copy')}
+
+
+
);
}
@@ -188,27 +207,54 @@ export const createColumns = ({ getCreatedAt, onDelete, onDeletePrompt }) => {
? `${original.videoId}: ${label}`
: label;
return (
-
-
- {original.videoId ? (
-
- {original.videoId}:
+
+
+
+
+ {original.videoId ? (
+
+ {original.videoId}:
+
+ ) : null}
+ {showLink ? (
+
+ openExternalLink(original.videoUrl)
+ }
+ >
+ {label}
+
+ ) : (
+ {original.videoName}
+ )}
- ) : null}
+
+
+
{showLink ? (
-
- openExternalLink(original.videoUrl)
- }
- >
- {label}
-
- ) : (
- {original.videoName}
- )}
-
-
+ <>
+
+ openExternalLink(original.videoUrl)
+ }
+ >
+
+ {t('common.actions.open_link')}
+
+
+ >
+ ) : null}
+
+ copyToClipboard(original.videoUrl)
+ }
+ >
+
+ {t('common.actions.copy')}
+
+
+
);
}
@@ -217,21 +263,44 @@ export const createColumns = ({ getCreatedAt, onDelete, onDeletePrompt }) => {
original.type === 'StringLoad'
) {
return (
-
-
-
+
+
+
+
+ openExternalLink(original.resourceUrl)
+ }
+ >
+ {original.resourceUrl}
+
+
+
+
+
+
openExternalLink(original.resourceUrl)
}
>
- {original.resourceUrl}
-
-
-
+
+ {t('common.actions.open_link')}
+
+
+
+ copyToClipboard(original.resourceUrl)
+ }
+ >
+
+ {t('common.actions.copy')}
+
+
+
);
}