From 7a73a48b6377f7858023bfba29ffa1b3955f8168 Mon Sep 17 00:00:00 2001
From: paul-nothaft <40865108-paul-nothaft@users.noreply.replit.com>
Date: Thu, 11 Sep 2025 14:18:38 +0000
Subject: [PATCH] Remove calendar functionality from the Kanban board view
Removes the weekly calendar rendering and task dropping logic from the KanbanBoard component, simplifying its functionality to focus solely on board display.
Replit-Commit-Author: Agent
Replit-Commit-Session-Id: ceced2fc-aa46-458d-ba87-ddd4b7bb1518
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/659922a9-0087-461c-90dd-6d9a58b81d4d/ceced2fc-aa46-458d-ba87-ddd4b7bb1518/bLPlkWk
---
.replit | 2 +-
client/src/components/KanbanBoard.tsx | 313 ++++++++++----------------
2 files changed, 121 insertions(+), 194 deletions(-)
diff --git a/.replit b/.replit
index ccafaa6..4f7eaad 100644
--- a/.replit
+++ b/.replit
@@ -19,7 +19,7 @@ localPort = 35345
externalPort = 3002
[[ports]]
-localPort = 40293
+localPort = 39333
externalPort = 3001
[[ports]]
diff --git a/client/src/components/KanbanBoard.tsx b/client/src/components/KanbanBoard.tsx
index 913beaa..0ed76a4 100644
--- a/client/src/components/KanbanBoard.tsx
+++ b/client/src/components/KanbanBoard.tsx
@@ -7,7 +7,7 @@ import { LayoutGrid, Calendar as CalendarIcon, ChevronLeft, ChevronRight } from
import { Task, Label } from '@shared/schema';
import TaskCard from './TaskCard';
import { useQuery } from '@tanstack/react-query';
-import { format, startOfWeek, endOfWeek, startOfMonth, endOfMonth, addWeeks, addMonths, isWithinInterval, addDays, isSameDay, getDaysInMonth } from 'date-fns';
+import { format, startOfWeek, endOfWeek, startOfMonth, endOfMonth, addWeeks, addMonths, isWithinInterval } from 'date-fns';
interface KanbanBoardProps {
tasks: Task[];
@@ -78,8 +78,10 @@ export default function KanbanBoard({ tasks, onTaskStatusChange, onTaskUpdate }:
const navigatePeriod = (direction: 'prev' | 'next') => {
if (viewMode === 'weekly') {
setCurrentDate(addWeeks(currentDate, direction === 'next' ? 1 : -1));
+ console.log(`Navigating to week of ${format(addWeeks(currentDate, direction === 'next' ? 1 : -1), 'd.M.yyyy')}`);
} else if (viewMode === 'monthly') {
setCurrentDate(addMonths(currentDate, direction === 'next' ? 1 : -1));
+ console.log(`Navigating to month of ${format(addMonths(currentDate, direction === 'next' ? 1 : -1), 'MMM yyyy')}`);
}
};
@@ -92,195 +94,6 @@ export default function KanbanBoard({ tasks, onTaskStatusChange, onTaskUpdate }:
return 'All Tasks';
};
- const getTasksForDate = (date: Date) => {
- return tasks.filter(task =>
- task.dueDate && isSameDay(task.dueDate, date)
- );
- };
-
- const handleDateDrop = (date: Date) => {
- if (draggedTask) {
- const task = tasks.find(t => t.id === draggedTask);
- if (task) {
- onTaskUpdate?.(draggedTask, { dueDate: date });
- console.log(`Task ${draggedTask} moved to ${format(date, 'yyyy-MM-dd')}`);
- }
- setDraggedTask(null);
- }
- };
-
- const renderWeeklyCalendar = () => {
- const weekStart = startOfWeek(currentDate);
- const dates = Array.from({ length: 7 }, (_, i) => addDays(weekStart, i));
-
- return (
-
- {dates.map((date, index) => {
- const dayTasks = getTasksForDate(date);
- const isToday = isSameDay(date, new Date());
- const isWeekend = date.getDay() === 0 || date.getDay() === 6;
-
- return (
-
handleDateDrop(date)}
- data-testid={`calendar-date-${format(date, 'yyyy-MM-dd')}`}
- >
-
-
- {format(date, 'EEE')}
-
-
- {format(date, 'd')}
-
-
-
-
- {dayTasks.slice(0, 3).map((task) => {
- const taskLabel = task.labelId && labels.length > 0 ? labels.find(label => label.id === task.labelId) : null;
-
- return (
-
handleDragStart(task.id)}
- onDragEnd={handleDragEnd}
- className={`cursor-move ${draggedTask === task.id ? 'opacity-50' : ''}`}
- data-testid={`calendar-task-${task.id}`}
- >
-
-
- {task.title}
-
-
-
- );
- })}
-
- {dayTasks.length > 3 && (
-
- +{dayTasks.length - 3} more
-
- )}
-
-
- );
- })}
-
- );
- };
-
- const renderMonthlyCalendar = () => {
- const monthStart = startOfMonth(currentDate);
- const monthEnd = endOfMonth(currentDate);
- const calendarStart = startOfWeek(monthStart);
- const calendarEnd = endOfWeek(monthEnd);
-
- const dates = [];
- let currentDateIterator = calendarStart;
-
- while (currentDateIterator <= calendarEnd) {
- dates.push(currentDateIterator);
- currentDateIterator = addDays(currentDateIterator, 1);
- }
-
- return (
-
- {/* Month grid header */}
-
- {['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'].map(day => (
-
- {day}
-
- ))}
-
-
- {/* Month grid */}
-
- {dates.map((date, index) => {
- const dayTasks = getTasksForDate(date);
- const isToday = isSameDay(date, new Date());
- const isCurrentMonth = date >= monthStart && date <= monthEnd;
-
- return (
-
handleDateDrop(date)}
- data-testid={`calendar-date-${format(date, 'yyyy-MM-dd')}`}
- >
-
-
- {format(date, 'd')}
-
-
-
-
- {dayTasks.slice(0, 2).map((task) => {
- const taskLabel = task.labelId && labels.length > 0 ? labels.find(label => label.id === task.labelId) : null;
-
- return (
-
handleDragStart(task.id)}
- onDragEnd={handleDragEnd}
- className={`cursor-move ${draggedTask === task.id ? 'opacity-50' : ''}`}
- data-testid={`calendar-task-${task.id}`}
- >
-
-
- {task.title}
-
-
-
- );
- })}
-
- {dayTasks.length > 2 && (
-
- +{dayTasks.length - 2}
-
- )}
-
-
- );
- })}
-
-
- );
- };
return (
@@ -339,8 +152,8 @@ export default function KanbanBoard({ tasks, onTaskStatusChange, onTaskUpdate }:
+ {/* All view modes use the same kanban layout, just with different filtering */}
- {/* Kanban Columns */}
{columns.map((column) => {
const columnTasks = getTasksForColumn(column.status);
@@ -402,11 +215,125 @@ export default function KanbanBoard({ tasks, onTaskStatusChange, onTaskUpdate }:
- {renderWeeklyCalendar()}
+
+ {columns.map((column) => {
+ const columnTasks = getTasksForColumn(column.status);
+
+ return (
+
handleDrop(column.status)}
+ data-testid={`column-${column.id}`}
+ >
+
+
+ {column.title}
+
+
+ {columnTasks.length}
+
+
+
+
+ {columnTasks.map((task) => (
+
handleDragStart(task.id)}
+ onDragEnd={handleDragEnd}
+ className={`cursor-move ${draggedTask === task.id ? 'opacity-50' : ''}`}
+ >
+ {
+ onTaskUpdate?.(task.id, { isTracking: true });
+ console.log(`Timer started for ${task.title}`);
+ }}
+ onPause={() => {
+ onTaskUpdate?.(task.id, { isTracking: false });
+ console.log(`Timer paused for ${task.title}`);
+ }}
+ onEdit={() => {
+ console.log(`Edit task ${task.title}`);
+ }}
+ isDragging={draggedTask === task.id}
+ />
+
+ ))}
+
+ {columnTasks.length === 0 && (
+
+ No tasks in {column.title.toLowerCase()} for this week
+
+ )}
+
+
+ );
+ })}
+
- {renderMonthlyCalendar()}
+
+ {columns.map((column) => {
+ const columnTasks = getTasksForColumn(column.status);
+
+ return (
+
handleDrop(column.status)}
+ data-testid={`column-${column.id}`}
+ >
+
+
+ {column.title}
+
+
+ {columnTasks.length}
+
+
+
+
+ {columnTasks.map((task) => (
+
handleDragStart(task.id)}
+ onDragEnd={handleDragEnd}
+ className={`cursor-move ${draggedTask === task.id ? 'opacity-50' : ''}`}
+ >
+ {
+ onTaskUpdate?.(task.id, { isTracking: true });
+ console.log(`Timer started for ${task.title}`);
+ }}
+ onPause={() => {
+ onTaskUpdate?.(task.id, { isTracking: false });
+ console.log(`Timer paused for ${task.title}`);
+ }}
+ onEdit={() => {
+ console.log(`Edit task ${task.title}`);
+ }}
+ isDragging={draggedTask === task.id}
+ />
+
+ ))}
+
+ {columnTasks.length === 0 && (
+
+ No tasks in {column.title.toLowerCase()} for this month
+
+ )}
+
+
+ );
+ })}
+