Add editable status column and submission markers to the Gantt chart

Adds a second frozen "Task Status" column (EditableTaskStatus) next to
the task name, and small white dot markers on each bar showing
submission dates - backed by a new lightweight GET /tasks/submission-dates
endpoint (task_id + submitted_at only, to avoid an N+1 fetch across
potentially hundreds of scheduled tasks).

Restructures the chart's scroll handling from a single scrolling
container with sticky-positioned columns to two independently-scrolled
panes (frozen name/status columns, and the timeline), synced on
vertical scroll. This fixes several issues that came with the sticky
approach - transparency bleed-through on hover and on group-header
rows, row heights not matching between columns, and the horizontal
scrollbar spanning the frozen columns instead of just the timeline.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-21 03:20:28 +08:00
parent 04c85be0f7
commit 7f260067a2
4 changed files with 266 additions and 103 deletions
+10
View File
@@ -109,6 +109,11 @@ export interface Submission {
stream_url?: string
}
export interface SubmissionDateInfo {
task_id: number
submitted_at: string
}
export interface TaskFilters {
projectId?: number
shotId?: number
@@ -249,6 +254,11 @@ class TaskService {
return response.data
}
async getSubmissionDates(projectId: number): Promise<SubmissionDateInfo[]> {
const response = await apiClient.get(`/tasks/submission-dates?project_id=${projectId}`)
return response.data
}
async submitWork(taskId: number, file: File, notes?: string): Promise<Submission> {
const formData = new FormData()
formData.append('file', file)