User commited on
Commit
045d38f
·
1 Parent(s): 58aaf9d

fix: kanbanboard and dashboard ui

Browse files
TaskTrackingSystem.WebApp/Components/App.razor CHANGED
@@ -128,6 +128,42 @@
128
  800: semanticGreenText,
129
  900: semanticGreenText
130
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
131
  blue: {
132
  50: semanticNeutralBg,
133
  100: semanticNeutralBg,
@@ -442,18 +478,6 @@
442
  initFlatpickr();
443
  }
444
  }
445
- window.taskKanban = {
446
- draggedTaskId: null,
447
- setDraggedTask(taskId) {
448
- this.draggedTaskId = taskId?.toString() ?? null;
449
- },
450
- getDraggedTask() {
451
- return this.draggedTaskId;
452
- },
453
- clearDraggedTask() {
454
- this.draggedTaskId = null;
455
- }
456
- };
457
  const themePreferenceStorageKey = 'tts-theme';
458
  const normalizeThemePreference = theme =>
459
  theme === 'dark' || theme === 'light' ? theme : 'light';
 
128
  800: semanticGreenText,
129
  900: semanticGreenText
130
  },
131
+ teal: {
132
+ 50: "#F0FDFA",
133
+ 100: "#CCFBF1",
134
+ 200: "#99F6E4",
135
+ 300: "#5EEAD4",
136
+ 400: "#2DD4BF",
137
+ 500: "#14B8A6",
138
+ 600: "#0D9488",
139
+ 700: "#0F766E",
140
+ 800: "#115E59",
141
+ 900: "#134E4A"
142
+ },
143
+ cyan: {
144
+ 50: "#ECFEFF",
145
+ 100: "#CFFAFE",
146
+ 200: "#A5F3FC",
147
+ 300: "#67E8F9",
148
+ 400: "#22D3EE",
149
+ 500: "#06B6D4",
150
+ 600: "#0891B2",
151
+ 700: "#0E7490",
152
+ 800: "#155E75",
153
+ 900: "#164E63"
154
+ },
155
+ sky: {
156
+ 50: "#F0F9FF",
157
+ 100: "#E0F2FE",
158
+ 200: "#BAE6FD",
159
+ 300: "#7DD3FC",
160
+ 400: "#38BDF8",
161
+ 500: "#0EA5E9",
162
+ 600: "#0284C7",
163
+ 700: "#0369A1",
164
+ 800: "#075985",
165
+ 900: "#0C4A6E"
166
+ },
167
  blue: {
168
  50: semanticNeutralBg,
169
  100: semanticNeutralBg,
 
478
  initFlatpickr();
479
  }
480
  }
 
 
 
 
 
 
 
 
 
 
 
 
481
  const themePreferenceStorageKey = 'tts-theme';
482
  const normalizeThemePreference = theme =>
483
  theme === 'dark' || theme === 'light' ? theme : 'light';
TaskTrackingSystem.WebApp/Components/Pages/KanbanBoard.razor CHANGED
@@ -77,7 +77,7 @@
77
  @foreach (var column in columns)
78
  {
79
  var tasksInColumn = VisibleTasks.Where(t => t.StatusId == column.StatusId).ToList();
80
- <div class="flex flex-col rounded-xl border border-slate-200 bg-slate-50/50 overflow-hidden min-h-[400px]">
81
  <!-- Column Header -->
82
  <div class="flex items-center justify-between px-4 py-3 bg-white border-b border-slate-100">
83
  <div class="flex items-center space-x-2">
@@ -98,7 +98,7 @@
98
  {
99
  @foreach (var task in tasksInColumn)
100
  {
101
- <div class="rounded-lg border border-slate-200 bg-white p-4 shadow-sm hover:shadow-md transition-shadow @(canUpdateTask ? "cursor-grab active:cursor-grabbing" : "cursor-default")"
102
  data-task-id="@task.Id"
103
  draggable="@canUpdateTask"
104
  @ondragstart="() => HandleDragStart(task)"
@@ -268,15 +268,16 @@
268
  ? tasks.Where(t => t.ProjectId == selectedProjectId)
269
  : tasks;
270
 
271
- private async Task HandleDragStart(TaskDto task)
272
  {
273
  if (!canUpdateTask)
274
  {
275
- return;
276
  }
277
 
278
  draggedTask = task;
279
- await JS.InvokeVoidAsync("taskKanban.setDraggedTask", task.Id);
 
280
  }
281
 
282
  private void HandleDragOver()
@@ -300,14 +301,6 @@
300
  private async Task HandleDrop(AppTaskStatus newStatusId)
301
  {
302
  var taskToMove = draggedTask;
303
- if (taskToMove == null)
304
- {
305
- var draggedTaskId = await JS.InvokeAsync<string?>("taskKanban.getDraggedTask");
306
- if (long.TryParse(draggedTaskId, out var id))
307
- {
308
- taskToMove = tasks.FirstOrDefault(t => t.Id == id);
309
- }
310
- }
311
 
312
  if (taskToMove != null && taskToMove.StatusId != newStatusId)
313
  {
@@ -316,14 +309,13 @@
316
 
317
  draggedTask = null;
318
  dropTargetStatus = null;
319
- await JS.InvokeVoidAsync("taskKanban.clearDraggedTask");
320
  }
321
 
322
- private async Task HandleDragEnd()
323
  {
324
  draggedTask = null;
325
  dropTargetStatus = null;
326
- await JS.InvokeVoidAsync("taskKanban.clearDraggedTask");
327
  }
328
 
329
  protected override async Task OnInitializedAsync()
 
77
  @foreach (var column in columns)
78
  {
79
  var tasksInColumn = VisibleTasks.Where(t => t.StatusId == column.StatusId).ToList();
80
+ <div @key="column.StatusId" class="flex flex-col rounded-xl border border-slate-200 bg-slate-50/50 overflow-hidden min-h-[400px]">
81
  <!-- Column Header -->
82
  <div class="flex items-center justify-between px-4 py-3 bg-white border-b border-slate-100">
83
  <div class="flex items-center space-x-2">
 
98
  {
99
  @foreach (var task in tasksInColumn)
100
  {
101
+ <div @key="task.Id" class="rounded-lg border border-slate-200 bg-white p-4 shadow-sm hover:shadow-md transition-shadow @(canUpdateTask ? "cursor-grab active:cursor-grabbing" : "cursor-default")"
102
  data-task-id="@task.Id"
103
  draggable="@canUpdateTask"
104
  @ondragstart="() => HandleDragStart(task)"
 
268
  ? tasks.Where(t => t.ProjectId == selectedProjectId)
269
  : tasks;
270
 
271
+ private Task HandleDragStart(TaskDto task)
272
  {
273
  if (!canUpdateTask)
274
  {
275
+ return Task.CompletedTask;
276
  }
277
 
278
  draggedTask = task;
279
+ dropTargetStatus = null;
280
+ return Task.CompletedTask;
281
  }
282
 
283
  private void HandleDragOver()
 
301
  private async Task HandleDrop(AppTaskStatus newStatusId)
302
  {
303
  var taskToMove = draggedTask;
 
 
 
 
 
 
 
 
304
 
305
  if (taskToMove != null && taskToMove.StatusId != newStatusId)
306
  {
 
309
 
310
  draggedTask = null;
311
  dropTargetStatus = null;
 
312
  }
313
 
314
+ private Task HandleDragEnd()
315
  {
316
  draggedTask = null;
317
  dropTargetStatus = null;
318
+ return Task.CompletedTask;
319
  }
320
 
321
  protected override async Task OnInitializedAsync()