implement task version history

This commit is contained in:
marlon-erler
2024-07-24 15:57:02 +02:00
parent 47fa0938e9
commit a87f025ea0
8 changed files with 152 additions and 20 deletions
+1 -1
View File
@@ -175,7 +175,7 @@ export default class BoardViewModel {
);
for (const taskId of taskIds) {
const taskFileContent: TaskFileContent | null =
this.boardModel.getTaskFileContent(taskId);
this.boardModel.getLatestTaskFileContent(taskId);
if (taskFileContent == null) continue;
const taskViewModel: TaskViewModel = new TaskViewModel(
+35 -1
View File
@@ -1,9 +1,9 @@
import * as React from "bloatless-react";
import BoardModel, { TaskFileContent } from "../../Model/Files/boardModel";
import { localeCompare, padZero } from "../../Model/Utility/utility";
import BoardViewModel from "./boardViewModel";
import { padZero } from "../../Model/Utility/utility";
export default class TaskViewModel {
boardModel: BoardModel;
@@ -49,6 +49,9 @@ export default class TaskViewModel {
date: React.State<string> = new React.State("");
time: React.State<string> = new React.State("");
selectedVersionId: React.State<string> = new React.State("");
versionIds: React.ListState<string> = new React.ListState();
// view
open = (): void => {
this.boardViewModel.selectTask(this);
@@ -96,7 +99,30 @@ export default class TaskViewModel {
};
// load
loadVersionIds = (): void => {
const versionIds: string[] = this.boardModel.listTaskVersionIds(
this.task.fileId
);
const sortedVersionIds = versionIds.sort(localeCompare).reverse();
this.versionIds.clear();
this.versionIds.add(...sortedVersionIds);
};
switchVersion = (versionId: string): void => {
const taskFileContent: TaskFileContent | null =
this.boardModel.getSpecificTaskFileContent(this.task.fileId, versionId);
if (taskFileContent == null) return;
this.task = taskFileContent;
this.loadTaskData();
};
loadAllData = (): void => {
this.loadTaskData();
this.loadVersionIds();
};
loadTaskData = (): void => {
this.name.value = this.task.name;
this.description.value = this.task.description ?? "";
@@ -106,6 +132,8 @@ export default class TaskViewModel {
this.date.value = this.task.date ?? "";
this.time.value = this.task.time ?? "";
this.selectedVersionId.value = this.task.fileContentId;
};
// init
@@ -119,6 +147,12 @@ export default class TaskViewModel {
this.task = taskFileContent;
// load
this.loadAllData();
// subscriptions
this.selectedVersionId.subscribeSilent((selectedVersionId) => {
this.switchVersion(selectedVersionId);
});
}
}