Custom field editing

This commit is contained in:
Gordon
2021-06-08 01:51:57 +01:00
parent 0aa5776af3
commit 026fbf95cd
6 changed files with 556 additions and 461 deletions

View File

@ -3,7 +3,10 @@ import * as vscode from "vscode";
import getNonce from "./getNonce";
import { v4 as uuidv4 } from "uuid";
function transformTaskData(taskData: any) {
function transformTaskData(
taskData: any,
customFields: { name: string, type: 'boolean' | 'date' | 'number' | 'string'}[]
) {
const result = {
id: taskData.id,
name: taskData.name,
@ -50,6 +53,17 @@ function transformTaskData(taskData: any) {
result.metadata["completed"] = new Date(Date.parse(taskData.metadata.completed));
}
// Add custom fields
for (let customField of customFields) {
if (customField.name in taskData.metadata && taskData.metadata[customField.name] !== null) {
if (customField.type === 'date') {
result.metadata[customField.name] = new Date(Date.parse(taskData.metadata[customField.name]));
} else {
result.metadata[customField.name] = taskData.metadata[customField.name];
}
}
}
return result;
}
@ -162,7 +176,10 @@ export default class KanbnTaskPanel {
// Create a task
case "kanbn.create":
await this._kanbn.createTask(transformTaskData(message.taskData), message.taskData.column);
await this._kanbn.createTask(
transformTaskData(message.taskData, message.customFields),
message.taskData.column
);
KanbnTaskPanel.panels[message.panelUuid]._taskId = message.taskData.id;
KanbnTaskPanel.panels[message.panelUuid]._columnName = message.taskData.column;
KanbnTaskPanel.panels[message.panelUuid].update();
@ -173,7 +190,11 @@ export default class KanbnTaskPanel {
// Update a task
case "kanbn.update":
await this._kanbn.updateTask(message.taskId, transformTaskData(message.taskData), message.taskData.column);
await this._kanbn.updateTask(
message.taskId,
transformTaskData(message.taskData, message.customFields),
message.taskData.column
);
KanbnTaskPanel.panels[message.panelUuid]._taskId = message.taskData.id;
KanbnTaskPanel.panels[message.panelUuid]._columnName = message.taskData.column;
KanbnTaskPanel.panels[message.panelUuid].update();
@ -258,6 +279,7 @@ export default class KanbnTaskPanel {
index,
task,
tasks,
customFields: index.options.customFields ?? [],
columnName: this._columnName,
dateFormat: this._kanbn.getDateFormat(index),
panelUuid: this._panelUuid,