diff --git a/dashboard/src/models/BackupTargetsModel.js b/dashboard/src/models/BackupTargetsModel.js index 70703d7ba..e47298463 100644 --- a/dashboard/src/models/BackupTargetsModel.js +++ b/dashboard/src/models/BackupTargetsModel.js @@ -137,10 +137,10 @@ function create() { if (error || result.status !== 202) return [error || result]; return [null, result.body.taskId]; }, - async mountStatus(id) { + async status(id) { let error, result; try { - result = await fetcher.get(`${API_ORIGIN}/api/v1/backup_targets/${id}/mount_status`, { access_token: accessToken }); + result = await fetcher.get(`${API_ORIGIN}/api/v1/backup_targets/${id}/status`, { access_token: accessToken }); } catch (e) { error = e; } diff --git a/dashboard/src/views/BackupTargetsView.vue b/dashboard/src/views/BackupTargetsView.vue index 7d15a305e..e1d9d83da 100644 --- a/dashboard/src/views/BackupTargetsView.vue +++ b/dashboard/src/views/BackupTargetsView.vue @@ -7,6 +7,7 @@ const t = i18n.t; import { ref, onMounted, useTemplateRef } from 'vue'; import { Button, ButtonGroup, TableView, InputDialog } from '@cloudron/pankow'; import Section from '../components/Section.vue'; +import StateLED from '../components/StateLED.vue'; import BackupScheduleDialog from '../components/BackupScheduleDialog.vue'; import BackupTargetDialog from '../components/BackupTargetDialog.vue'; import BackupList from '../components/BackupList.vue'; @@ -28,6 +29,9 @@ const columns = { width: '40px', sort: true }, + status: { + width: '40px', + }, provider: { label: 'Provider', sort: true, @@ -96,6 +100,21 @@ async function refresh() { const [error, result] = await backupTargetsModel.list(); if (error) return console.error(error); + for (const target of result) { + target.status = { busy: true, state: '', message: '' }; + } + + for (const target of result) { + const [error, status] = await backupTargetsModel.status(target.id); + if (error) { + console.error(error); + continue; + } + + target.status.state = status.state === 'active' ? 'success' : 'danger'; + target.status.busy = false; + } + targets.value = result; } @@ -128,6 +147,12 @@ onMounted(async () => { + +