You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mediarepo/mediarepo-ui/src/app/components/core/repositories-tab/repository-details-view/repository-details-view.com...

74 lines
2.1 KiB
TypeScript

import {
Component,
Input,
OnChanges, OnDestroy,
OnInit,
SimpleChanges
} from "@angular/core";
import {Repository} from "../../../../models/Repository";
import {
RepositoryService
} from "../../../../services/repository/repository.service";
import {RepositoryMetadata} from "../../../../models/RepositoryMetadata";
@Component({
selector: "app-repository-details-view",
templateUrl: "./repository-details-view.component.html",
styleUrls: ["./repository-details-view.component.scss"]
})
export class RepositoryDetailsViewComponent implements OnInit, OnChanges, OnDestroy {
@Input() repository!: Repository;
public metadata?: RepositoryMetadata;
private refreshMetadataInterval?: number;
constructor(private repoService: RepositoryService) {
}
public async ngOnInit() {
await this.loadMetadata();
this.refreshMetadataInterval = setInterval(async () => this.loadMetadata(), 30000);
}
public async ngOnChanges(changes: SimpleChanges) {
if (changes["repository"]) {
await this.loadMetadata();
}
}
public ngOnDestroy(): void {
clearInterval(this.refreshMetadataInterval);
}
public async closeRepository() {
if (this.repository?.local) {
await this.repoService.closeSelectedRepository();
} else {
await this.repoService.disconnectSelectedRepository();
}
}
public formatByteSize(size: number): string {
const kib = 1024;
const mib = kib ** 2;
const gib = kib ** 3;
const tib = kib ** 4;
if (size >= tib) {
return (size / tib).toFixed(2) + " TiB";
} else if (size >= gib) {
return (size / gib).toFixed(2) + " GiB";
} else if (size >= mib) {
return (size / mib).toFixed(2) + " MiB";
} else if (size >= kib) {
return (size / kib).toFixed(2) + " KiB";
} else {
return size + " B"
}
}
public async loadMetadata() {
this.metadata = await this.repoService.getRepositoryMetadata();
}
}