integrity: show log link

in the previous approach, we used to clear the taskId after
the integrity check completes. for one, we lose track of the
task (to show the logs). for another, we have to clear these
taskId on platform startup to handle crashes.

in the new approach, we keep the taskId and use the task's
active flag to determine if task is active.
This commit is contained in:
Girish Ramakrishnan
2026-03-03 18:41:57 +05:30
parent 1179a78fe1
commit 23c3263562
4 changed files with 26 additions and 24 deletions
+13 -3
View File
@@ -37,7 +37,7 @@ const backupContentTableColumns = computed(() => {
},
};
if (backup.value.lastIntegrityCheckTime || backup.value.integrityCheckTask?.active) {
if (backup.value.lastIntegrityCheckTime || backup.value.integrityCheckTask) {
columns.integrity = {
label: 'Integrity',
sort: false,
@@ -82,10 +82,11 @@ defineExpose({
if (!match) continue;
const [error, result] = await backupsModel.get(contentId);
if (error) console.error(error);
const content = { id: null, label: null, fqdn: null, stats: null, integrityCheckStatus: null, lastIntegrityCheckTime: null };
const content = { id: null, label: null, fqdn: null, stats: null, integrityCheckStatus: null, lastIntegrityCheckTime: null, integrityCheckTask: null };
content.stats = result.stats;
content.integrityCheckStatus = result.integrityCheckStatus;
content.lastIntegrityCheckTime = result.lastIntegrityCheckTime;
content.integrityCheckTask = result.integrityCheckTask;
if (match[1] === 'mail') {
content.id = 'mail';
content.label = 'Mail Server';
@@ -153,6 +154,11 @@ defineExpose({
<div class="info-label">{{ $t('backups.backupDetails.lastIntegrityCheck') }}</div>
<div class="info-value">
<a v-if="backup.integrityCheckTask?.active" :href="`/logs.html?taskId=${backup.integrityCheckTask.id}`" target="_blank">{{ $t('backups.backupDetails.integrityInProgress') }}</a>
<a v-else-if="backup.lastIntegrityCheckTime && backup.integrityCheckTask" :href="`/logs.html?taskId=${backup.integrityCheckTask.id}`" target="_blank">
<i v-if="backup.integrityCheckStatus === 'passed'" class="fa-solid fa-check-circle"></i>
<i v-else class="fa-solid fa-times-circle"></i>
{{ prettyLongDate(backup.lastIntegrityCheckTime) }}
</a>
<span v-else-if="backup.lastIntegrityCheckTime">
<i v-if="backup.integrityCheckStatus === 'passed'" class="fa-solid fa-check-circle"></i>
<i v-else class="fa-solid fa-times-circle"></i>
@@ -181,7 +187,11 @@ defineExpose({
<div v-else style="text-align: right">-</div>
</template>
<template #integrity="{ item:content }">
<div v-if="content.lastIntegrityCheckTime" style="display: flex; align-items: center; justify-content: center;">
<a v-if="content.lastIntegrityCheckTime && content.integrityCheckTask" :href="`/logs.html?taskId=${content.integrityCheckTask.id}`" target="_blank" style="display: flex; align-items: center; justify-content: center;">
<i v-if="content.integrityCheckStatus === 'passed'" class="fa-solid fa-check-circle" v-tooltip="prettyLongDate(content.lastIntegrityCheckTime)"></i>
<i v-else class="fa-solid fa-times-circle" v-tooltip="prettyLongDate(content.lastIntegrityCheckTime)"></i>
</a>
<div v-else-if="content.lastIntegrityCheckTime" style="display: flex; align-items: center; justify-content: center;">
<i v-if="content.integrityCheckStatus === 'passed'" class="fa-solid fa-check-circle" v-tooltip="prettyLongDate(content.lastIntegrityCheckTime)"></i>
<i v-else class="fa-solid fa-times-circle" v-tooltip="prettyLongDate(content.lastIntegrityCheckTime)"></i>
</div>