|
|
@ -6,81 +6,89 @@ |
|
|
</ng-container> |
|
|
</ng-container> |
|
|
|
|
|
|
|
|
<ng-container menu> |
|
|
<ng-container menu> |
|
|
|
|
|
<button class="btn btn-link btn-secondary" (click)="reload()" title="Refresh backups (CTRL + SHIFT + R)"> |
|
|
|
|
|
<i class="icon-reset"></i> Refresh |
|
|
|
|
|
</button> |
|
|
|
|
|
|
|
|
|
|
|
<sqx-shortcut keys="ctrl+shift+r" (trigger)="reload()"></sqx-shortcut> |
|
|
|
|
|
|
|
|
<button class="btn btn-success" [disabled]="backupsState.maxBackupsReached | async" (click)="start()"> |
|
|
<button class="btn btn-success" [disabled]="backupsState.maxBackupsReached | async" (click)="start()"> |
|
|
Start Backup |
|
|
Start Backup |
|
|
</button> |
|
|
</button> |
|
|
</ng-container> |
|
|
</ng-container> |
|
|
|
|
|
|
|
|
<ng-container content> |
|
|
<ng-container content> |
|
|
<div class="panel-alert panel-alert-danger" *ngIf="backupsState.maxBackupsReached | async"> |
|
|
<ng-container *ngIf="backupsState.isLoaded | async"> |
|
|
Your have reached the maximum number of backups: 10. |
|
|
<div class="panel-alert panel-alert-danger" *ngIf="backupsState.maxBackupsReached | async"> |
|
|
</div> |
|
|
Your have reached the maximum number of backups: 10. |
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
<ng-container *ngIf="backupsState.backups | async; let backups"> |
|
|
<ng-container *ngIf="backupsState.backups | async; let backups"> |
|
|
<div class="table-items-row table-items-row-empty" *ngIf="backups.length === 0"> |
|
|
<div class="table-items-row table-items-row-empty" *ngIf="backups.length === 0"> |
|
|
No backups created yet. |
|
|
No backups created yet. |
|
|
|
|
|
|
|
|
<button class="btn btn-success btn-sm ml-2" (click)="start()"> |
|
|
<button class="btn btn-success btn-sm ml-2" (click)="start()"> |
|
|
Start Backup |
|
|
Start Backup |
|
|
</button> |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="table-items-row" *ngFor="let backup of backups; trackBy: trackByBackup"> |
|
|
<div class="table-items-row" *ngFor="let backup of backups; trackBy: trackByBackup"> |
|
|
<div class="row no-gutter"> |
|
|
<div class="row no-gutter"> |
|
|
<div class="col col-auto"> |
|
|
<div class="col col-auto"> |
|
|
<div *ngIf="!backup.stopped" class="backup-status backup-status-pending spin"> |
|
|
<div *ngIf="!backup.stopped" class="backup-status backup-status-pending spin"> |
|
|
<i class="icon-hour-glass"></i> |
|
|
<i class="icon-hour-glass"></i> |
|
|
</div> |
|
|
</div> |
|
|
<div *ngIf="backup.stopped && backup.isFailed" class="backup-status backup-status-failed"> |
|
|
<div *ngIf="backup.stopped && backup.isFailed" class="backup-status backup-status-failed"> |
|
|
<i class="icon-exclamation"></i> |
|
|
<i class="icon-exclamation"></i> |
|
|
</div> |
|
|
</div> |
|
|
<div *ngIf="backup.stopped && !backup.isFailed" class="backup-status backup-status-success"> |
|
|
<div *ngIf="backup.stopped && !backup.isFailed" class="backup-status backup-status-success"> |
|
|
<i class="icon-checkmark"></i> |
|
|
<i class="icon-checkmark"></i> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="col col-auto"> |
|
|
|
|
|
<div> |
|
|
|
|
|
Started: |
|
|
|
|
|
</div> |
|
|
|
|
|
<div> |
|
|
|
|
|
Duration: |
|
|
|
|
|
</div> |
|
|
|
|
|
</div> |
|
|
|
|
|
<div class="col col-auto"> |
|
|
|
|
|
<div> |
|
|
|
|
|
{{backup.started | sqxISODate}} |
|
|
|
|
|
</div> |
|
|
</div> |
|
|
<div *ngIf="backup.stopped"> |
|
|
<div class="col col-auto"> |
|
|
{{backup | sqxBackupDuration}} |
|
|
<div> |
|
|
|
|
|
Started: |
|
|
|
|
|
</div> |
|
|
|
|
|
<div> |
|
|
|
|
|
Duration: |
|
|
|
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
<div class="col col-auto"> |
|
|
<div class="col"> |
|
|
<div> |
|
|
<div> |
|
|
{{backup.started | sqxISODate}} |
|
|
<span title="Archived events"> |
|
|
</div> |
|
|
Events: <strong class="backup-progress">{{backup.handledEvents | sqxKNumber}}</strong> |
|
|
<div *ngIf="backup.stopped"> |
|
|
</span>, |
|
|
{{backup | sqxBackupDuration}} |
|
|
<span title="Archived assets"> |
|
|
</div> |
|
|
Assets: <strong class="backup-progress">{{backup.handledAssets | sqxKNumber}}</strong> |
|
|
|
|
|
</span> |
|
|
|
|
|
</div> |
|
|
</div> |
|
|
<div *ngIf="backup.stopped && !backup.isFailed"> |
|
|
<div class="col"> |
|
|
Download: |
|
|
<div> |
|
|
|
|
|
<span title="Archived events"> |
|
|
|
|
|
Events: <strong class="backup-progress">{{backup.handledEvents | sqxKNumber}}</strong> |
|
|
|
|
|
</span>, |
|
|
|
|
|
<span title="Archived assets"> |
|
|
|
|
|
Assets: <strong class="backup-progress">{{backup.handledAssets | sqxKNumber}}</strong> |
|
|
|
|
|
</span> |
|
|
|
|
|
</div> |
|
|
|
|
|
<div *ngIf="backup.stopped && !backup.isFailed"> |
|
|
|
|
|
Download: |
|
|
|
|
|
|
|
|
<a href="{{backup | sqxBackupDownloadUrl}}" target="_blank"> |
|
|
<a href="{{backup | sqxBackupDownloadUrl}}" target="_blank"> |
|
|
Ready |
|
|
Ready |
|
|
</a> |
|
|
</a> |
|
|
|
|
|
</div> |
|
|
|
|
|
</div> |
|
|
|
|
|
<div class="col col-auto"> |
|
|
|
|
|
<button type="button" class="btn btn-link btn-danger" |
|
|
|
|
|
(sqxConfirmClick)="delete(backup)" |
|
|
|
|
|
confirmTitle="Delete backup" |
|
|
|
|
|
confirmText="Do you really want to delete the backup?"> |
|
|
|
|
|
<i class="icon-bin2"></i> |
|
|
|
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="col col-auto"> |
|
|
|
|
|
<button type="button" class="btn btn-link btn-danger" |
|
|
|
|
|
(sqxConfirmClick)="delete(backup)" |
|
|
|
|
|
confirmTitle="Delete backup" |
|
|
|
|
|
confirmText="Do you really want to delete the backup?"> |
|
|
|
|
|
<i class="icon-bin2"></i> |
|
|
|
|
|
</button> |
|
|
|
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</ng-container> |
|
|
</ng-container> |
|
|
</ng-container> |
|
|
</ng-container> |
|
|
</ng-container> |
|
|
</sqx-panel> |
|
|
</sqx-panel> |