mirror of
https://github.com/amir20/dozzle.git
synced 2026-08-07 10:14:44 +00:00
feat: shows error when copy is not supported (#4318)
This commit is contained in:
@@ -44,18 +44,29 @@
|
||||
{{ $t("action.see-in-context") }}
|
||||
</router-link>
|
||||
</li>
|
||||
<li v-if="isSupported">
|
||||
<a @click="copyLogMessage()">
|
||||
<li>
|
||||
<a
|
||||
@click="copyLogMessage()"
|
||||
:disabled="!isSupported"
|
||||
:title="!isSupported ? $t('error.copy-not-supported') : ''"
|
||||
:class="{ 'cursor-not-allowed opacity-50': !isSupported }"
|
||||
>
|
||||
<material-symbols:content-copy />
|
||||
{{ $t("action.copy-log") }}
|
||||
</a>
|
||||
</li>
|
||||
<li v-if="isSupported">
|
||||
<a @click="copyPermalink()">
|
||||
<li>
|
||||
<a
|
||||
@click="copyPermalink()"
|
||||
:disabled="!isSupported"
|
||||
:title="!isSupported ? $t('error.copy-not-supported') : ''"
|
||||
:class="{ 'cursor-not-allowed opacity-50': !isSupported }"
|
||||
>
|
||||
<material-symbols:link />
|
||||
{{ $t("action.copy-link") }}
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li v-if="logEntry instanceof ComplexLogEntry">
|
||||
<a @click="showDrawer(LogDetails, { entry: logEntry })">
|
||||
<material-symbols:code-blocks-rounded />
|
||||
@@ -86,6 +97,10 @@ const { copy, isSupported, copied } = useClipboard();
|
||||
const { t } = useI18n();
|
||||
|
||||
async function copyLogMessage() {
|
||||
if (!isSupported.value) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (logEntry instanceof ComplexLogEntry) {
|
||||
await copy(stripAnsi(logEntry.rawMessage));
|
||||
} else if (logEntry instanceof SimpleLogEntry) {
|
||||
@@ -105,6 +120,9 @@ async function copyLogMessage() {
|
||||
}
|
||||
|
||||
async function copyPermalink() {
|
||||
if (!isSupported.value) {
|
||||
return;
|
||||
}
|
||||
const url = router.resolve({
|
||||
name: "/container/[id].time.[datetime]",
|
||||
params: { id: container.id, datetime: logEntry.date.toISOString() },
|
||||
|
||||
@@ -14,8 +14,12 @@ exports[`<ContainerEventSource /> > render html correctly > should render dates
|
||||
</svg></button>
|
||||
<ul tabindex="0" class="menu dropdown-content rounded-box bg-base-200 border-base-content/20 z-50 w-52 border p-1 text-sm shadow-sm">
|
||||
<!--v-if-->
|
||||
<!--v-if-->
|
||||
<!--v-if-->
|
||||
<li><a disabled="true" title="error.copy-not-supported" class="cursor-not-allowed opacity-50"><svg viewBox="0 0 24 24" width="1.2em" height="1.2em">
|
||||
<path fill="currentColor" d="M9 18q-.825 0-1.412-.587T7 16V4q0-.825.588-1.412T9 2h9q.825 0 1.413.588T20 4v12q0 .825-.587 1.413T18 18zm-4 4q-.825 0-1.412-.587T3 20V6h2v14h11v2z"></path>
|
||||
</svg> action.copy-log</a></li>
|
||||
<li><a disabled="true" title="error.copy-not-supported" class="cursor-not-allowed opacity-50"><svg viewBox="0 0 24 24" width="1.2em" height="1.2em">
|
||||
<path fill="currentColor" d="M11 17H7q-2.075 0-3.537-1.463T2 12t1.463-3.537T7 7h4v2H7q-1.25 0-2.125.875T4 12t.875 2.125T7 15h4zm-3-4v-2h8v2zm5 4v-2h4q1.25 0 2.125-.875T20 12t-.875-2.125T17 9h-4V7h4q2.075 0 3.538 1.463T22 12t-1.463 3.538T17 17z"></path>
|
||||
</svg> action.copy-link</a></li>
|
||||
<!--v-if-->
|
||||
</ul>
|
||||
</div>
|
||||
@@ -48,8 +52,12 @@ exports[`<ContainerEventSource /> > render html correctly > should render dates
|
||||
</svg></button>
|
||||
<ul tabindex="0" class="menu dropdown-content rounded-box bg-base-200 border-base-content/20 z-50 w-52 border p-1 text-sm shadow-sm">
|
||||
<!--v-if-->
|
||||
<!--v-if-->
|
||||
<!--v-if-->
|
||||
<li><a disabled="true" title="error.copy-not-supported" class="cursor-not-allowed opacity-50"><svg viewBox="0 0 24 24" width="1.2em" height="1.2em">
|
||||
<path fill="currentColor" d="M9 18q-.825 0-1.412-.587T7 16V4q0-.825.588-1.412T9 2h9q.825 0 1.413.588T20 4v12q0 .825-.587 1.413T18 18zm-4 4q-.825 0-1.412-.587T3 20V6h2v14h11v2z"></path>
|
||||
</svg> action.copy-log</a></li>
|
||||
<li><a disabled="true" title="error.copy-not-supported" class="cursor-not-allowed opacity-50"><svg viewBox="0 0 24 24" width="1.2em" height="1.2em">
|
||||
<path fill="currentColor" d="M11 17H7q-2.075 0-3.537-1.463T2 12t1.463-3.537T7 7h4v2H7q-1.25 0-2.125.875T4 12t.875 2.125T7 15h4zm-3-4v-2h8v2zm5 4v-2h4q1.25 0 2.125-.875T20 12t-.875-2.125T17 9h-4V7h4q2.075 0 3.538 1.463T22 12t-1.463 3.538T17 17z"></path>
|
||||
</svg> action.copy-link</a></li>
|
||||
<!--v-if-->
|
||||
</ul>
|
||||
</div>
|
||||
@@ -82,8 +90,12 @@ exports[`<ContainerEventSource /> > render html correctly > should render messag
|
||||
</svg></button>
|
||||
<ul tabindex="0" class="menu dropdown-content rounded-box bg-base-200 border-base-content/20 z-50 w-52 border p-1 text-sm shadow-sm">
|
||||
<!--v-if-->
|
||||
<!--v-if-->
|
||||
<!--v-if-->
|
||||
<li><a disabled="true" title="error.copy-not-supported" class="cursor-not-allowed opacity-50"><svg viewBox="0 0 24 24" width="1.2em" height="1.2em">
|
||||
<path fill="currentColor" d="M9 18q-.825 0-1.412-.587T7 16V4q0-.825.588-1.412T9 2h9q.825 0 1.413.588T20 4v12q0 .825-.587 1.413T18 18zm-4 4q-.825 0-1.412-.587T3 20V6h2v14h11v2z"></path>
|
||||
</svg> action.copy-log</a></li>
|
||||
<li><a disabled="true" title="error.copy-not-supported" class="cursor-not-allowed opacity-50"><svg viewBox="0 0 24 24" width="1.2em" height="1.2em">
|
||||
<path fill="currentColor" d="M11 17H7q-2.075 0-3.537-1.463T2 12t1.463-3.537T7 7h4v2H7q-1.25 0-2.125.875T4 12t.875 2.125T7 15h4zm-3-4v-2h8v2zm5 4v-2h4q1.25 0 2.125-.875T20 12t-.875-2.125T17 9h-4V7h4q2.075 0 3.538 1.463T22 12t-1.463 3.538T17 17z"></path>
|
||||
</svg> action.copy-link</a></li>
|
||||
<!--v-if-->
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -50,6 +50,7 @@ tooltip:
|
||||
error:
|
||||
page-not-found: Denne side eksisterer ikke
|
||||
invalid-auth: Brugernavn eller kodeord er ikke gyldig
|
||||
copy-not-supported: Kopiering til udklipsholder understøttes ikke i din browser
|
||||
logs-skipped: Vis {total} skjulte indtastninger
|
||||
container-not-found: Container ikke fundet
|
||||
events-stream:
|
||||
|
||||
@@ -50,6 +50,7 @@ tooltip:
|
||||
error:
|
||||
page-not-found: Diese Seite existiert nicht.
|
||||
invalid-auth: Benutzername und Passwort sind ungültig.
|
||||
copy-not-supported: Kopieren in die Zwischenablage wird von Ihrem Browser nicht unterstützt
|
||||
logs-skipped: Zeige {total} versteckte Einträge
|
||||
container-not-found: Container nicht gefunden.
|
||||
events-stream:
|
||||
|
||||
@@ -50,6 +50,7 @@ tooltip:
|
||||
error:
|
||||
page-not-found: This page does not exist
|
||||
invalid-auth: Username or password are not valid
|
||||
copy-not-supported: Copy to clipboard is not supported in your browser
|
||||
logs-skipped: Show {total} hidden entries
|
||||
container-not-found: Container not found
|
||||
events-stream:
|
||||
|
||||
@@ -50,6 +50,7 @@ tooltip:
|
||||
error:
|
||||
page-not-found: Esta página no existe.
|
||||
invalid-auth: El nombre de usuario y la contraseña no son válidos.
|
||||
copy-not-supported: Copiar al portapapeles no está soportado en su navegador
|
||||
logs-skipped: Mostrar {total} entradas ocultas
|
||||
container-not-found: Contenedor no encontrado.
|
||||
events-stream:
|
||||
|
||||
@@ -50,6 +50,7 @@ tooltip:
|
||||
error:
|
||||
page-not-found: Cette page n'existe pas
|
||||
invalid-auth: Nom d'utilisateur ou mot de passe non valides
|
||||
copy-not-supported: La copie dans le presse-papiers n'est pas prise en charge par votre navigateur
|
||||
logs-skipped: Afficher {total} entrées cachées
|
||||
container-not-found: Conteneur non trouvé
|
||||
events-stream:
|
||||
|
||||
@@ -53,6 +53,7 @@ tooltip:
|
||||
error:
|
||||
page-not-found: Halaman ini tidak ada
|
||||
invalid-auth: Nama pengguna atau kata sandi tidak valid
|
||||
copy-not-supported: Salin ke clipboard tidak didukung di browser Anda
|
||||
logs-skipped: Tampilkan {total} entri tersembunyi
|
||||
container-not-found: Kontainer tidak ditemukan
|
||||
events-stream:
|
||||
|
||||
@@ -50,6 +50,7 @@ tooltip:
|
||||
error:
|
||||
page-not-found: Questa pagina non esiste
|
||||
invalid-auth: Username o password non valide
|
||||
copy-not-supported: La copia negli appunti non è supportata dal tuo browser
|
||||
logs-skipped: Mostra {total} voci nascoste
|
||||
container-not-found: Container non trovato
|
||||
events-stream:
|
||||
|
||||
@@ -50,6 +50,7 @@ tooltip:
|
||||
error:
|
||||
page-not-found: 페이지를 찾을 수 없습니다
|
||||
invalid-auth: 사용자 이름 또는 비밀번호가 올바르지 않습니다
|
||||
copy-not-supported: 클립보드 복사는 브라우저에서 지원되지 않습니다
|
||||
logs-skipped: 숨겨진 항목 {total}개 보기
|
||||
container-not-found: 컨테이너를 찾을 수 없습니다
|
||||
events-stream:
|
||||
|
||||
@@ -50,6 +50,7 @@ tooltip:
|
||||
error:
|
||||
page-not-found: Deze pagina bestaat niet
|
||||
invalid-auth: Gebruikersnaam of wachtwoord is ongeldig
|
||||
copy-not-supported: Kopiëren naar klembord wordt niet ondersteund in je browser
|
||||
logs-skipped: Toon {total} verborgen items
|
||||
container-not-found: Container niet gevonden
|
||||
events-stream:
|
||||
|
||||
@@ -54,6 +54,7 @@ tooltip:
|
||||
error:
|
||||
page-not-found: Ta strona nie istnieje
|
||||
invalid-auth: Nazwa użytkownika lub hasło są niepoprawne
|
||||
copy-not-supported: Kopiowanie do schowka nie jest obsługiwane w twojej przeglądarce
|
||||
logs-skipped: Pokaż {total} ukrytych wpisów
|
||||
container-not-found: Kontener nie został znaleziony
|
||||
events-stream:
|
||||
|
||||
@@ -54,6 +54,7 @@ tooltip:
|
||||
error:
|
||||
page-not-found: Esta página não existe.
|
||||
invalid-auth: O nome de usuário e a senha não são válidos.
|
||||
copy-not-supported: Copiar para a área de transferência não é suportado no seu navegador
|
||||
logs-skipped: Mostrar {total} entradas ocultas
|
||||
container-not-found: Contentor não encontrado.
|
||||
events-stream:
|
||||
|
||||
@@ -50,6 +50,7 @@ tooltip:
|
||||
error:
|
||||
page-not-found: Esta página não existe
|
||||
invalid-auth: Usuário ou senha inválidos
|
||||
copy-not-supported: Copiar para a área de transferência não é suportado no seu navegador
|
||||
logs-skipped: Mostrar {total} entradas ocultas
|
||||
container-not-found: Container não encontrado
|
||||
events-stream:
|
||||
|
||||
@@ -50,6 +50,7 @@ tooltip:
|
||||
error:
|
||||
page-not-found: Эта страница не доступна.
|
||||
invalid-auth: Имя пользователя или пароль неверны.
|
||||
copy-not-supported: Копирование в буфер обмена не поддерживается вашим браузером
|
||||
logs-skipped: Показать {total} скрытых записей
|
||||
container-not-found: Контейнер не найден.
|
||||
events-stream:
|
||||
|
||||
@@ -50,6 +50,7 @@ tooltip:
|
||||
error:
|
||||
page-not-found: Ta stran ne obstaja
|
||||
invalid-auth: Uporabniško ime ali geslo nista veljavna
|
||||
copy-not-supported: Kopiranje v odložišče ni podprto v vašem brskalniku
|
||||
logs-skipped: Prikaži {total} skritih vnosov
|
||||
events-stream:
|
||||
title: Nepričakovana napaka
|
||||
|
||||
@@ -56,6 +56,7 @@ tooltip:
|
||||
error:
|
||||
page-not-found: Bu sayfa bulunamadı
|
||||
invalid-auth: Kullanıcı adı veya şifre geçersiz
|
||||
copy-not-supported: Panoya kopyalama tarayıcınızda desteklenmiyor
|
||||
logs-skipped: "{total} gizli girişi göster"
|
||||
container-not-found: Konteyner bulunamadı
|
||||
events-stream:
|
||||
|
||||
@@ -50,6 +50,7 @@ tooltip:
|
||||
error:
|
||||
page-not-found: 此頁面不存在
|
||||
invalid-auth: 使用者名稱或密碼不正確
|
||||
copy-not-supported: 您的瀏覽器不支援複製到剪貼簿
|
||||
logs-skipped: 顯示 {total} 個隱藏項目
|
||||
container-not-found: 找不到容器
|
||||
events-stream:
|
||||
|
||||
@@ -50,6 +50,7 @@ tooltip:
|
||||
error:
|
||||
page-not-found: 此页面不存在。
|
||||
invalid-auth: 用户名和密码无效。
|
||||
copy-not-supported: 您的浏览器不支持复制到剪贴板
|
||||
logs-skipped: 显示 {total} 个隐藏条目
|
||||
container-not-found: 容器未找到。
|
||||
events-stream:
|
||||
|
||||
Reference in New Issue
Block a user