kin: KIN-138-frontend_dev
This commit is contained in:
parent
e1fe41c428
commit
dadd97a5c5
3 changed files with 80 additions and 15 deletions
|
|
@ -646,6 +646,18 @@ const taskCategories = computed(() => {
|
|||
return Array.from(cats).sort()
|
||||
})
|
||||
|
||||
const taskStats = computed(() => {
|
||||
const tasks = project.value?.tasks || []
|
||||
const total = tasks.length
|
||||
if (!total) return null
|
||||
const done = tasks.filter(t => t.status === 'done').length
|
||||
const running = tasks.filter(t => t.status === 'in_progress').length
|
||||
const review = tasks.filter(t => t.status === 'review').length
|
||||
const blocked = tasks.filter(t => t.status === 'blocked').length
|
||||
const pending = tasks.filter(t => t.status === 'pending').length
|
||||
return { total, done, running, review, blocked, pending, pct: Math.round(done / total * 100) }
|
||||
})
|
||||
|
||||
const searchFilteredTasks = computed(() => {
|
||||
if (!project.value) return []
|
||||
const q = taskSearch.value.trim().toLowerCase()
|
||||
|
|
@ -1079,6 +1091,24 @@ async function addDecision() {
|
|||
|
||||
<!-- Tasks Tab -->
|
||||
<div v-if="activeTab === 'tasks'">
|
||||
<!-- Progress stats bar -->
|
||||
<div v-if="taskStats && taskStats.total > 0" class="mb-3 px-3 py-2 border border-gray-800 rounded-lg bg-gray-900/30">
|
||||
<div class="flex items-center gap-2 mb-1.5">
|
||||
<div class="flex-1 h-1.5 bg-gray-800 rounded-full overflow-hidden flex">
|
||||
<div class="h-full bg-green-700 transition-all rounded-l-full"
|
||||
:style="{ width: `${taskStats.pct}%` }"></div>
|
||||
<div v-if="taskStats.running" class="h-full bg-blue-500 animate-pulse transition-all"
|
||||
:style="{ width: `${Math.round(taskStats.running / taskStats.total * 100)}%` }"></div>
|
||||
</div>
|
||||
<span class="text-xs text-gray-500 shrink-0">{{ taskStats.done }}/{{ taskStats.total }} ({{ taskStats.pct }}%)</span>
|
||||
</div>
|
||||
<div class="flex gap-3 text-[11px]">
|
||||
<span v-if="taskStats.running" class="text-blue-400">● {{ taskStats.running }} running</span>
|
||||
<span v-if="taskStats.review" class="text-yellow-400">⚠ {{ taskStats.review }} review</span>
|
||||
<span v-if="taskStats.blocked" class="text-red-400">✕ {{ taskStats.blocked }} blocked</span>
|
||||
<span v-if="taskStats.pending" class="text-gray-500">○ {{ taskStats.pending }} pending</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-col gap-2 mb-3">
|
||||
<div class="flex items-center justify-between">
|
||||
<div class="flex gap-1 flex-wrap items-center">
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue