Added live refresh to admin UI

- Added lastLogin UI
- Added operational time
This commit is contained in:
2024-05-30 20:40:58 +02:00
parent 017ef0afca
commit dbb53ca9da
6 changed files with 121 additions and 6 deletions

View File

@ -22,7 +22,7 @@
<div class="shadow stats bg-white">
<div class="stat">
<div class="stat-title">Operational For</div>
<div class="stat-value">2 Years</div>
<div class="stat-value">{{ statistics.applicationOnlineTime | duration }}</div>
<div class="stat-desc">Since launch</div>
</div>
</div>
@ -38,7 +38,7 @@
<div class="shadow stats bg-white">
<div class="stat">
<div class="stat-title">Last Admin Login</div>
<div class="stat-value">2 days ago</div>
<div class="stat-value">{{ statistics.lastUserLogin | relativeTime }}</div>
<div class="stat-desc">Most recent login</div>
</div>
</div>

View File

@ -6,6 +6,8 @@ import {DevelopmentStore} from "../../store/DevelopmentStore";
import {AuthStore} from "../../store/authStore";
import {Router} from "@angular/router";
import {FormatFileSizePipePipe} from "../format-file-size-pipe.pipe";
import {DurationPipe} from "../duration.pipe";
import {RelativeTimePipe} from "../relative-time.pipe";
@Component({
selector: 'app-adminui',
@ -14,7 +16,9 @@ import {FormatFileSizePipePipe} from "../format-file-size-pipe.pipe";
DatePipe,
DecimalPipe,
NgForOf,
FormatFileSizePipePipe
FormatFileSizePipePipe,
DurationPipe,
RelativeTimePipe
],
templateUrl: './adminui.component.html',
styleUrl: './adminui.component.scss'
@ -25,9 +29,12 @@ export class AdminuiComponent {
expiredFileUploads: any[] = [];
totalFileSizeOnDisk: number = 0;
totalFileDownloads = 0;
statistics: any = {};
constructor(private developmentStore: DevelopmentStore, private authStore: AuthStore, private router: Router) {
this.verifyToken();
setInterval(() => {
this.verifyToken();
}, 1000);
}
async verifyToken() {
@ -38,12 +45,14 @@ export class AdminuiComponent {
}
await this.fetchFileUploads();
await this.fetchExpiredFileUploads();
await this.fetchStatistics();
await this.calculateStatistics();
}
async calculateStatistics() {
console.log("Calculating statistics...");
console.log(this.fileUploads)
this.totalFileSizeOnDisk = 0;
this.totalFileDownloads = 0;
for(let fileUpload of this.fileUploads) {
this.totalFileSizeOnDisk += fileUpload.fileSize;
}
@ -86,4 +95,20 @@ export class AdminuiComponent {
console.error(error);
}
}
async fetchStatistics() {
try {
const response = await axios({
method: 'get',
url: this.developmentStore.getBaseUrl() + 'api/v1/secure/statistics',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + await firstValueFrom(this.authStore.token$)
}
});
this.statistics = response.data;
console.log(this.statistics)
} catch (error) {
console.error(error);
}
}
}