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}}
-
+
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 @@
{{attributeName}}:
- {{value}}
+
+
+
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");