restore: add ... animation

This commit is contained in:
Girish Ramakrishnan
2025-10-07 20:57:03 +02:00
parent 1b91ae1ab3
commit c0972b3e14
3 changed files with 30 additions and 2 deletions
+26
View File
@@ -0,0 +1,26 @@
<template>
<span class="dots"></span>
</template>
<style scoped>
.dots {
display: inline-block;
width: 1.5em; /* reserve enough space for '...' */
text-align: left;
}
.dots::after {
content: '';
animation: dots 1.5s steps(4, end) infinite;
}
@keyframes dots {
0% { content: ''; }
25% { content: '.'; }
50% { content: '..'; }
75% { content: '...'; }
100% { content: ''; }
}
</style>
+2 -1
View File
@@ -8,6 +8,7 @@ import { redirectIfNeeded, mountlike, s3like } from '../utils.js';
import ProvisionModel from '../models/ProvisionModel.js';
import BackupProviderForm from '../components/BackupProviderForm.vue';
import Whirlpool from '../components/Whirlpool.vue';
import AnimatedDots from '../components/AnimatedDots.vue';
const provisionModel = ProvisionModel.create();
@@ -324,7 +325,7 @@ onMounted(async () => {
<div class="view" v-if="waitingForRestore" style="max-width: unset; height: 100%;">
<div style="display: flex; flex-direction: column; height: 100%; align-items: center;">
<Whirlpool/>
<h1>Please wait while Cloudron is restoring ...</h1>
<h1>Please wait while Cloudron is restoring <AnimatedDots/></h1>
<h4 style="margin-top: 0">{{ progressMessage }}</h4>
<small>You can follow the logs on the server at <code @click="onCopyToClipboard('/home/yellowtent/platformdata/logs/box.log')">/home/yellowtent/platformdata/logs/box.log</code></small>
<p v-show="taskMinutesActive >= 4">If restore appears stuck, it can be restarted by running <code @click="onCopyToClipboard('systemctl restart box')">systemctl restart box</code> and reloading this page.</p>
+2 -1
View File
@@ -8,6 +8,7 @@ import DomainsModel from '../models/DomainsModel.js';
import ProvisionModel from '../models/ProvisionModel.js';
import DomainProviderForm from '../components/DomainProviderForm.vue';
import Whirlpool from '../components/Whirlpool.vue';
import AnimatedDots from '../components/AnimatedDots.vue';
const provisionModel = ProvisionModel.create();
@@ -175,7 +176,7 @@ onMounted(async () => {
<div class="view" v-if="waitingForDnsSetup" style="max-width: unset; height: 100%;">
<div style="display: flex; flex-direction: column; height: 100%; align-items: center;">
<Whirlpool/>
<h1>Please wait while Cloudron is setting up the dashboard ...</h1>
<h1>Please wait while Cloudron is setting up the dashboard <AnimatedDots/></h1>
<h4 style="margin-top: 0">{{ progressMessage }}</h4>
<small>You can follow the logs on the server at <code @click="onCopyToClipboard('/home/yellowtent/platformdata/logs/box.log')">/home/yellowtent/platformdata/logs/box.log</code></small>
</div>