From ab1b3bd767b0325ae5a4afcf565ec48dc40b5bcc Mon Sep 17 00:00:00 2001 From: poanse <50020771+poanse@users.noreply.github.com> Date: Sat, 20 Dec 2025 05:01:48 +0300 Subject: [PATCH] implemented lines --- src/Constants.ts | 2 +- src/NodePositionsCalculator.ts | 14 ++-- src/ProjectData.svelte.ts | 6 +- src/components/Connection.svelte | 31 +++++++ src/components/Task.svelte | 4 +- src/components/TaskmapContainer.svelte | 107 ++++++++++++++++++++----- 6 files changed, 133 insertions(+), 31 deletions(-) create mode 100644 src/components/Connection.svelte diff --git a/src/Constants.ts b/src/Constants.ts index ecd0188..50e19f2 100644 --- a/src/Constants.ts +++ b/src/Constants.ts @@ -1,7 +1,7 @@ export const BUTTON_SIZE = 18 * 2; export const TOOLBAR_GAP = 2; export const TOOLBAR_PADDING = { x: 4, y: 4 }; -export const TOOLBAR_SHIFT = 4 * 2; +export const TOOLBAR_SHIFT = 4; export const SUBTOOLBAR_SHIFT = 2; export const TOOLBAR_SIZE = { diff --git a/src/NodePositionsCalculator.ts b/src/NodePositionsCalculator.ts index b4d47bc..66ead31 100644 --- a/src/NodePositionsCalculator.ts +++ b/src/NodePositionsCalculator.ts @@ -1,11 +1,11 @@ // Assumed types and constants based on usage import type { TaskData, TaskId, Vector2 } from "./types"; -export const NoNodeId = -1 as TaskId; -export const RootNodeId = 0 as TaskId; +export const NoTaskId = -1 as TaskId; +export const RootTaskId = 0 as TaskId; // Helper for Vector2 operations since TS doesn't support operator overloading -const V2 = { +export const V2 = { Zero: { x: 0, y: 0 }, One: { x: 1, y: 1 }, add: (v1: Vector2, v2: Vector2): Vector2 => ({ @@ -65,7 +65,7 @@ export class NodePositionsCalculator { const parentFramePositions = this.CalculatePositionsInParentFrame(tasks); const positions: Map = new Map(); - positions.set(NoNodeId, V2.Zero); + positions.set(NoTaskId, V2.Zero); tasks.forEach((t) => { const parentPos = positions.get(t.parentId)!; @@ -125,7 +125,7 @@ export class NodePositionsCalculator { Vector2 >(); - const allIdsToProcess = [...sortedTasks.map((t) => t.taskId), NoNodeId]; + const allIdsToProcess = [...sortedTasks.map((t) => t.taskId), NoTaskId]; allIdsToProcess.forEach((id) => { if (childrenIdsByParentId.has(id)) { @@ -229,7 +229,7 @@ export class NodePositionsCalculator { }); const rootTaskHasMultipleVisibleChildren = - (childrenIdsByParentId.get(RootNodeId)! || []).length > 1; + (childrenIdsByParentId.get(RootTaskId)! || []).length > 1; if ( rootTaskHasMultipleVisibleChildren && @@ -296,7 +296,7 @@ export class NodePositionsCalculator { TaskId >; const rootChildren = - childrenIdsByParentId.get(RootNodeId) ?? []; + childrenIdsByParentId.get(RootTaskId) ?? []; rootChildren.forEach((id, idx) => { // reenumerate priorities based on index rootChildrenByPriority.set(idx, id); diff --git a/src/ProjectData.svelte.ts b/src/ProjectData.svelte.ts index 7061f5e..3ce52c1 100644 --- a/src/ProjectData.svelte.ts +++ b/src/ProjectData.svelte.ts @@ -1,9 +1,9 @@ import { StatusCode, type TaskData, type TaskId } from "./types"; -import { NoNodeId, RootNodeId } from "./NodePositionsCalculator"; +import { NoTaskId, RootTaskId } from "./NodePositionsCalculator"; export class ProjectData { tasks = $state(new Array()); - curTaskId = RootNodeId; + curTaskId = RootTaskId; public static getDefault(): ProjectData { return new ProjectData({ @@ -31,7 +31,7 @@ export class ProjectData { public addRootTask() { this.tasks.push({ taskId: this.curTaskId, - parentId: NoNodeId, + parentId: NoTaskId, status: StatusCode.IN_PROGRESS, name: "root", priority: 0, diff --git a/src/components/Connection.svelte b/src/components/Connection.svelte new file mode 100644 index 0000000..ceb5463 --- /dev/null +++ b/src/components/Connection.svelte @@ -0,0 +1,31 @@ + + + + + diff --git a/src/components/Task.svelte b/src/components/Task.svelte index ff08900..a37c6ea 100644 --- a/src/components/Task.svelte +++ b/src/components/Task.svelte @@ -161,7 +161,9 @@ {/if}