kin: KIN-UI-025-frontend_dev
This commit is contained in:
parent
d5125793d0
commit
cacd8ef1d7
4 changed files with 11 additions and 2 deletions
|
|
@ -54,6 +54,7 @@
|
|||
"proxy_jump_placeholder": "ProxyJump (optional, e.g. jumpt)",
|
||||
"path_required": "Path is required",
|
||||
"ssh_host_required": "SSH host is required for operations projects",
|
||||
"search_placeholder": "Search projects...",
|
||||
"bootstrap_path_placeholder": "Project path (e.g. ~/projects/vdolipoperek)",
|
||||
"roles": {
|
||||
"business_analyst": {
|
||||
|
|
|
|||
|
|
@ -54,6 +54,7 @@
|
|||
"proxy_jump_placeholder": "ProxyJump (опционально, например jumpt)",
|
||||
"path_required": "Путь обязателен",
|
||||
"ssh_host_required": "SSH хост обязателен для операционных проектов",
|
||||
"search_placeholder": "Поиск проектов...",
|
||||
"bootstrap_path_placeholder": "Путь к проекту (например ~/projects/vdolipoperek)",
|
||||
"roles": {
|
||||
"business_analyst": {
|
||||
|
|
|
|||
|
|
@ -205,6 +205,7 @@ async function createNewProject() {
|
|||
<p class="text-sm text-gray-500" v-if="totalCost > 0">{{ t('dashboard.cost_this_week') }}: ${{ totalCost.toFixed(2) }}</p>
|
||||
</div>
|
||||
<div class="relative">
|
||||
<div v-if="showNewMenu" class="fixed inset-0 z-[5]" @click="showNewMenu = false"></div>
|
||||
<button @click="showNewMenu = !showNewMenu"
|
||||
class="px-3 py-1.5 text-xs bg-gray-800 text-gray-300 border border-gray-700 rounded hover:bg-gray-700 flex items-center gap-1">
|
||||
+ {{ t('dashboard.new_project') }} ▾
|
||||
|
|
@ -228,7 +229,7 @@ async function createNewProject() {
|
|||
|
||||
<div v-if="!loading && !error" class="mb-3">
|
||||
<input v-model="projectSearch"
|
||||
:placeholder="t('dashboard.search_placeholder', 'Search projects...')"
|
||||
:placeholder="t('dashboard.search_placeholder')"
|
||||
class="w-full bg-gray-800 border border-gray-700 rounded px-3 py-1.5 text-sm text-gray-300 placeholder-gray-600 focus:border-gray-500 outline-none" />
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -655,7 +655,10 @@ const taskStats = computed(() => {
|
|||
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 revising = tasks.filter(t => t.status === 'revising').length
|
||||
const cancelled = tasks.filter(t => t.status === 'cancelled').length
|
||||
const decomposed = tasks.filter(t => t.status === 'decomposed').length
|
||||
return { total, done, running, review, blocked, pending, revising, cancelled, decomposed, pct: Math.round(done / total * 100) }
|
||||
})
|
||||
|
||||
const searchFilteredTasks = computed(() => {
|
||||
|
|
@ -1107,6 +1110,9 @@ async function addDecision() {
|
|||
<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>
|
||||
<span v-if="taskStats.revising" class="text-orange-400">↻ {{ taskStats.revising }} revising</span>
|
||||
<span v-if="taskStats.cancelled" class="text-gray-500">— {{ taskStats.cancelled }} cancelled</span>
|
||||
<span v-if="taskStats.decomposed" class="text-gray-500">⊕ {{ taskStats.decomposed }} decomposed</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-col gap-2 mb-3">
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue