diff --git a/dashboard/src/models/BackupSitesModel.js b/dashboard/src/models/BackupSitesModel.js index 1579091ab..a5cdd4d1a 100644 --- a/dashboard/src/models/BackupSitesModel.js +++ b/dashboard/src/models/BackupSitesModel.js @@ -1,7 +1,6 @@ import { fetcher } from '@cloudron/pankow'; import { API_ORIGIN } from '../constants.js'; -import { cronDays, cronHours } from '../utils.js'; function create() { const accessToken = localStorage.token; @@ -220,41 +219,7 @@ const backupRetentions = [ { name: 'Forever', id: { keepWithinSecs: -1 }} ]; -function prettyBackupSchedule(pattern) { - if (!pattern) return ''; - - const tmp = pattern.split(' '); - if (tmp.length === 1) return pattern.charAt(0).toUpperCase() + pattern.slice(1); // case for 'never' - capitalize - - const hours = tmp[2].split(','), days = tmp[5].split(','); - let prettyDay; - if (days.length === 7 || days[0] === '*') { - prettyDay = 'Everyday'; - } else { - prettyDay = days.map(function (day) { return cronDays[parseInt(day, 10)].name.substr(0, 3); }).join(','); - } - - const prettyHour = hours.map(function (hour) { return cronHours[parseInt(hour, 10)].name; }).join(','); - return prettyDay + ' at ' + prettyHour; -}; - -function prettyBackupRetention(retention) { - function stableStringify(obj) { return JSON.stringify(obj, Object.keys(obj).sort()); } - const tmp = backupRetentions.find(function (p) { return stableStringify(p.id) === stableStringify(retention); }); - return tmp ? tmp.name : ''; -} - -function prettyBackupContents(contents) { - if (!contents) return 'Everything'; - if (contents.include) return `Only ${contents.include.length} item(s)`; - if (contents.exclude) return `Exclude ${contents.exclude.length} item(s)`; - return ''; -} - export default { create, backupRetentions, - prettyBackupSchedule, - prettyBackupRetention, - prettyBackupContents }; diff --git a/dashboard/src/views/BackupSitesView.vue b/dashboard/src/views/BackupSitesView.vue index f130cc7a8..5cb1258a8 100644 --- a/dashboard/src/views/BackupSitesView.vue +++ b/dashboard/src/views/BackupSitesView.vue @@ -16,7 +16,7 @@ import { TASK_TYPES } from '../constants.js'; import BackupSitesModel from '../models/BackupSitesModel.js'; import ProfileModel from '../models/ProfileModel.js'; import TasksModel from '../models/TasksModel.js'; -import { regionName } from '../utils.js'; +import { cronDays, cronHours, regionName } from '../utils.js'; const profileModel = ProfileModel.create(); const tasksModel = TasksModel.create(); @@ -43,6 +43,37 @@ function onEditSchedule(site) { backupScheduleDialog.value.open(site); } +function prettyBackupSchedule(pattern) { + if (!pattern) return ''; + + const tmp = pattern.split(' '); + if (tmp.length === 1) return pattern.charAt(0).toUpperCase() + pattern.slice(1); // case for 'never' - capitalize + + const hours = tmp[2].split(','), days = tmp[5].split(','); + let prettyDay; + if (days.length === 7 || days[0] === '*') { + prettyDay = 'Everyday'; + } else { + prettyDay = days.map(function (day) { return cronDays[parseInt(day, 10)].name.substr(0, 3); }).join(','); + } + + const prettyHour = hours.map(function (hour) { return cronHours[parseInt(hour, 10)].name; }).join(','); + return prettyDay + ' at ' + prettyHour; +}; + +function prettyBackupRetention(retention) { + function stableStringify(obj) { return JSON.stringify(obj, Object.keys(obj).sort()); } + const tmp = BackupSitesModel.backupRetentions.find(function (p) { return stableStringify(p.id) === stableStringify(retention); }); + return tmp ? tmp.name : ''; +} + +function prettyBackupContents(contents) { + if (!contents) return 'Everything'; + if (contents.include) return `Only ${contents.include.length} item(s)`; + if (contents.exclude) return `Exclude ${contents.exclude.length} item(s)`; + return ''; +} + async function onRemoveSite(site) { const yes = await inputDialog.value.confirm({ title: t('backup.site.removeDialog.title'), @@ -229,7 +260,7 @@ onMounted(async () => {
-
{{ site.name }}{{ BackupSitesModel.prettyBackupContents(site.contents) }}
+
{{ site.name }}{{ prettyBackupContents(site.contents) }}
Storage: {{ site.provider }} ({{ site.format }}) @@ -245,10 +276,10 @@ onMounted(async () => {
- {{ $t('backups.schedule.schedule') }}: {{ BackupSitesModel.prettyBackupSchedule(site.schedule) }} + {{ $t('backups.schedule.schedule') }}: {{ prettyBackupSchedule(site.schedule) }}
- {{ $t('backups.schedule.retentionPolicy') }}: {{ BackupSitesModel.prettyBackupRetention(site.retention) }} + {{ $t('backups.schedule.retentionPolicy') }}: {{ prettyBackupRetention(site.retention) }}
Last backup: Never