diff --git a/mediarepo-ui/src-tauri/Cargo.lock b/mediarepo-ui/src-tauri/Cargo.lock index 4b93012..c4516b2 100644 --- a/mediarepo-ui/src-tauri/Cargo.lock +++ b/mediarepo-ui/src-tauri/Cargo.lock @@ -1489,8 +1489,8 @@ checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" [[package]] name = "mediarepo-api" -version = "0.18.0" -source = "git+https://github.com/Trivernis/mediarepo-api.git?rev=c5f2bfa48e822e9a761191c9a7ef42e2dbf811b5#c5f2bfa48e822e9a761191c9a7ef42e2dbf811b5" +version = "0.19.0" +source = "git+https://github.com/Trivernis/mediarepo-api.git?rev=6dd3fc2001177ab8222daad3e0b2d78cd37f4b19#6dd3fc2001177ab8222daad3e0b2d78cd37f4b19" dependencies = [ "async-trait", "bromine", diff --git a/mediarepo-ui/src-tauri/Cargo.toml b/mediarepo-ui/src-tauri/Cargo.toml index 522ef66..485a438 100644 --- a/mediarepo-ui/src-tauri/Cargo.toml +++ b/mediarepo-ui/src-tauri/Cargo.toml @@ -25,7 +25,7 @@ features = [ "env-filter" ] [dependencies.mediarepo-api] git = "https://github.com/Trivernis/mediarepo-api.git" -rev = "c5f2bfa48e822e9a761191c9a7ef42e2dbf811b5" +rev = "6dd3fc2001177ab8222daad3e0b2d78cd37f4b19" features = [ "tauri-plugin" ] [features] diff --git a/mediarepo-ui/src/app/components/core/repositories-tab/repository-details-view/repository-details-view.component.html b/mediarepo-ui/src/app/components/core/repositories-tab/repository-details-view/repository-details-view.component.html index b8ba1dc..bc84cde 100644 --- a/mediarepo-ui/src/app/components/core/repositories-tab/repository-details-view/repository-details-view.component.html +++ b/mediarepo-ui/src/app/components/core/repositories-tab/repository-details-view/repository-details-view.component.html @@ -1,21 +1,44 @@ {{repository.name}} - +

Stats

- - - - - - - - - - - - + {{repository.path}} + {{repository.address}} + + + {{metadata? metadata!.file_count.toString() : ''}} + + + + {{metadata? metadata!.tag_count.toString() : ''}} + + + + {{metadata? metadata!.namespace_count.toString() : ''}} + + + + {{metadata? metadata!.mapping_count.toString() : ''}} + + + + {{this.totalSize | async}} + + + + {{this.fileFolderSize | async}} + + + + {{this.thumbFolderSize | async}} + + + + {{this.databaseFileSize | async}} +
diff --git a/mediarepo-ui/src/app/components/core/repositories-tab/repository-details-view/repository-details-view.component.ts b/mediarepo-ui/src/app/components/core/repositories-tab/repository-details-view/repository-details-view.component.ts index 2f72e6b..23a861e 100644 --- a/mediarepo-ui/src/app/components/core/repositories-tab/repository-details-view/repository-details-view.component.ts +++ b/mediarepo-ui/src/app/components/core/repositories-tab/repository-details-view/repository-details-view.component.ts @@ -1,7 +1,8 @@ import { Component, Input, - OnChanges, OnDestroy, + OnChanges, + OnDestroy, OnInit, SimpleChanges } from "@angular/core"; @@ -10,6 +11,8 @@ import { RepositoryService } from "../../../../services/repository/repository.service"; import {RepositoryMetadata} from "../../../../models/RepositoryMetadata"; +import {BehaviorSubject} from "rxjs"; +import {SizeType} from "../../../../models/SizeMetadata"; @Component({ selector: "app-repository-details-view", @@ -22,6 +25,11 @@ export class RepositoryDetailsViewComponent implements OnInit, OnChanges, OnDest public metadata?: RepositoryMetadata; private refreshMetadataInterval?: number; + public totalSize = new BehaviorSubject(undefined); + public fileFolderSize = new BehaviorSubject(undefined); + public thumbFolderSize = new BehaviorSubject(undefined); + public databaseFileSize = new BehaviorSubject(undefined); + constructor(private repoService: RepositoryService) { } @@ -48,6 +56,17 @@ export class RepositoryDetailsViewComponent implements OnInit, OnChanges, OnDest } } + public async getSizes() { + const totalSize = await this.repoService.getSize(SizeType.Total) + this.totalSize.next(this.formatByteSize(totalSize.size)); + const fileSize = await this.repoService.getSize(SizeType.FileFolder); + this.fileFolderSize.next(this.formatByteSize(fileSize.size)); + const thumbSize = await this.repoService.getSize(SizeType.ThumbFolder); + this.thumbFolderSize.next(this.formatByteSize(thumbSize.size)); + const databaseSize = await this.repoService.getSize(SizeType.DatabaseFile); + this.databaseFileSize.next(this.formatByteSize(databaseSize.size)); + } + public formatByteSize(size: number): string { const kib = 1024; const mib = kib ** 2; @@ -69,5 +88,6 @@ export class RepositoryDetailsViewComponent implements OnInit, OnChanges, OnDest public async loadMetadata() { this.metadata = await this.repoService.getRepositoryMetadata(); + await this.getSizes(); } } diff --git a/mediarepo-ui/src/app/components/shared/app-common/metadata-entry/metadata-entry.component.html b/mediarepo-ui/src/app/components/shared/app-common/metadata-entry/metadata-entry.component.html index 39c7cee..9edc4cb 100644 --- a/mediarepo-ui/src/app/components/shared/app-common/metadata-entry/metadata-entry.component.html +++ b/mediarepo-ui/src/app/components/shared/app-common/metadata-entry/metadata-entry.component.html @@ -1,4 +1,6 @@ diff --git a/mediarepo-ui/src/app/components/shared/sidebar/file-metadata/editable-metadata-entry/editable-metadata-entry.component.html b/mediarepo-ui/src/app/components/shared/sidebar/file-metadata/editable-metadata-entry/editable-metadata-entry.component.html index 7c10398..83356c9 100644 --- a/mediarepo-ui/src/app/components/shared/sidebar/file-metadata/editable-metadata-entry/editable-metadata-entry.component.html +++ b/mediarepo-ui/src/app/components/shared/sidebar/file-metadata/editable-metadata-entry/editable-metadata-entry.component.html @@ -1,5 +1,5 @@ + diff --git a/mediarepo-ui/src/app/components/shared/sidebar/file-metadata/editable-metadata-entry/editable-metadata-entry.component.ts b/mediarepo-ui/src/app/components/shared/sidebar/file-metadata/editable-metadata-entry/editable-metadata-entry.component.ts index 801ac31..32d6ead 100644 --- a/mediarepo-ui/src/app/components/shared/sidebar/file-metadata/editable-metadata-entry/editable-metadata-entry.component.ts +++ b/mediarepo-ui/src/app/components/shared/sidebar/file-metadata/editable-metadata-entry/editable-metadata-entry.component.ts @@ -9,7 +9,7 @@ import {FormControl} from "@angular/forms"; export class EditableMetadataEntryComponent implements OnInit{ @Input() attributeName!: string; - @Input() value!: string; + @Input() value!: string | number; @Input() mode: "read" | "write" = "read"; @Output() valueChangeEvent = new EventEmitter(); diff --git a/mediarepo-ui/src/app/components/shared/sidebar/file-metadata/file-metadata.component.html b/mediarepo-ui/src/app/components/shared/sidebar/file-metadata/file-metadata.component.html index 00f97c7..75427d7 100644 --- a/mediarepo-ui/src/app/components/shared/sidebar/file-metadata/file-metadata.component.html +++ b/mediarepo-ui/src/app/components/shared/sidebar/file-metadata/file-metadata.component.html @@ -7,11 +7,11 @@ diff --git a/mediarepo-ui/src/app/models/RepositoryMetadata.ts b/mediarepo-ui/src/app/models/RepositoryMetadata.ts index 86d35ea..a7aa482 100644 --- a/mediarepo-ui/src/app/models/RepositoryMetadata.ts +++ b/mediarepo-ui/src/app/models/RepositoryMetadata.ts @@ -5,8 +5,4 @@ export type RepositoryMetadata = { namespace_count: number, mapping_count: number, hash_count: number, - total_size: number, - file_size: number, - database_size: number, - thumbnail_size: number, }; diff --git a/mediarepo-ui/src/app/models/SizeMetadata.ts b/mediarepo-ui/src/app/models/SizeMetadata.ts new file mode 100644 index 0000000..78a86e0 --- /dev/null +++ b/mediarepo-ui/src/app/models/SizeMetadata.ts @@ -0,0 +1,11 @@ +export enum SizeType { + Total = "Total", + FileFolder = "FileFolder", + ThumbFolder = "ThumbFolder", + DatabaseFile = "DatabaseFile", +} + +export type SizeMetadata = { + size_type: SizeType, + size: number, +} diff --git a/mediarepo-ui/src/app/services/repository/repository.service.ts b/mediarepo-ui/src/app/services/repository/repository.service.ts index c746a62..a12f78c 100644 --- a/mediarepo-ui/src/app/services/repository/repository.service.ts +++ b/mediarepo-ui/src/app/services/repository/repository.service.ts @@ -7,6 +7,7 @@ import {Info} from "../../models/Info"; import {ErrorBrokerService} from "../error-broker/error-broker.service"; import {FileService} from "../file/file.service"; import {RepositoryMetadata} from "../../models/RepositoryMetadata"; +import {SizeMetadata, SizeType} from "../../models/SizeMetadata"; @Injectable({ providedIn: "root" @@ -172,6 +173,15 @@ export class RepositoryService { return await invoke("plugin:mediarepo|get_repo_metadata"); } + /** + * Returns a specific size + * @param {SizeType} type + * @returns {Promise} + */ + public async getSize(sizeType: SizeType): Promise { + return await invoke("plugin:mediarepo|get_size", {sizeType}); + } + async loadSelectedRepository() { let active_repo = await invoke( "plugin:mediarepo|get_active_repository");