diff --git a/go-backend/internal/tasks/model.go b/go-backend/internal/tasks/model.go index 97606cb..0e9bbfd 100644 --- a/go-backend/internal/tasks/model.go +++ b/go-backend/internal/tasks/model.go @@ -53,6 +53,7 @@ type CreateInput struct { type UpdateInput struct { ID uuid.UUID OwnerID uuid.UUID + TabloID uuid.UUID Title string Description string Status Status @@ -66,6 +67,29 @@ type ListByTabloInput struct { TabloID uuid.UUID } +type TaskView string + +const ( + TaskViewKanban TaskView = "kanban" + TaskViewList TaskView = "list" + TaskViewRoadmap TaskView = "roadmap" +) + +type TaskRoadmapMode string + +const ( + TaskRoadmapModeWeek TaskRoadmapMode = "week" + TaskRoadmapModeMonth TaskRoadmapMode = "month" +) + +type TaskPageState struct { + View TaskView + RoadmapMode TaskRoadmapMode + TabloIDs []uuid.UUID + AssigneeIDs []uuid.UUID + Statuses []Status +} + func ParseStatus(raw string) (Status, error) { switch Status(strings.TrimSpace(raw)) { case StatusTodo, StatusInProgress, StatusInReview, StatusDone: @@ -74,3 +98,23 @@ func ParseStatus(raw string) (Status, error) { return "", ErrInvalidStatus } } + +func NormalizeTaskView(raw string) TaskView { + switch TaskView(strings.TrimSpace(raw)) { + case TaskViewList: + return TaskViewList + case TaskViewRoadmap: + return TaskViewRoadmap + default: + return TaskViewKanban + } +} + +func NormalizeTaskRoadmapMode(raw string) TaskRoadmapMode { + switch TaskRoadmapMode(strings.TrimSpace(raw)) { + case TaskRoadmapModeMonth: + return TaskRoadmapModeMonth + default: + return TaskRoadmapModeWeek + } +} diff --git a/go-backend/internal/web/handlers/auth_test.go b/go-backend/internal/web/handlers/auth_test.go index 43f5641..4937207 100644 --- a/go-backend/internal/web/handlers/auth_test.go +++ b/go-backend/internal/web/handlers/auth_test.go @@ -150,18 +150,25 @@ func TestTasksPageSidebarShowsRealTablos(t *testing.T) { } body := rec.Body.String() + projectSection := body + if index := strings.Index(body, `id="sidebar-projects-section"`); index >= 0 { + projectSection = body[index:] + if end := strings.Index(projectSection, `