fix(ui): гард деления на ноль в прогрессе проекта (NaN%) + битый класс gap-N→ga-N (Vuetify)
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<v-card class="bulk-actions-bar" elevation="6">
|
||||
<DevIndexBadge :index="20" label="BulkActionsBar" :dialog-mode="true" style="top: 4px; right: 4px" />
|
||||
<v-card-text class="d-flex align-center gap-3 flex-wrap">
|
||||
<v-card-text class="d-flex align-center ga-3 flex-wrap">
|
||||
<strong>Выбрано: {{ store.selectedIds.size }}</strong>
|
||||
|
||||
<v-divider vertical />
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<v-card-text>
|
||||
<div class="mb-4">
|
||||
<div class="text-caption text-success font-weight-medium mb-2">➕ Добавить дни</div>
|
||||
<div class="d-flex gap-2">
|
||||
<div class="d-flex ga-2">
|
||||
<v-btn
|
||||
v-for="d in WEEKDAYS"
|
||||
:key="`add-${d.bit}`"
|
||||
@@ -20,7 +20,7 @@
|
||||
</div>
|
||||
<div>
|
||||
<div class="text-caption text-error font-weight-medium mb-2">➖ Убрать дни</div>
|
||||
<div class="d-flex gap-2">
|
||||
<div class="d-flex ga-2">
|
||||
<v-btn
|
||||
v-for="d in WEEKDAYS"
|
||||
:key="`remove-${d.bit}`"
|
||||
|
||||
@@ -110,9 +110,11 @@ const identifierDisplay = computed(() => {
|
||||
}
|
||||
return props.project.signal_identifier ?? '';
|
||||
});
|
||||
const progressPercent = computed(() =>
|
||||
Math.min(100, Math.round((props.project.delivered_today / props.project.daily_limit_target) * 100)),
|
||||
);
|
||||
const progressPercent = computed(() => {
|
||||
// Гард деления на ноль: активный проект с лимитом 0 возможен → без гарда «NaN%».
|
||||
const limit = props.project.daily_limit_target;
|
||||
return limit > 0 ? Math.min(100, Math.round((props.project.delivered_today / limit) * 100)) : 0;
|
||||
});
|
||||
const progressColor = computed(() => (progressPercent.value >= 90 ? 'success' : 'primary'));
|
||||
const syncStatusLabel = computed(
|
||||
() => ({ ok: 'Sync OK', pending: 'Sync pending', failed: 'Sync failed' })[props.project.sync_status],
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
border="start"
|
||||
class="mb-4"
|
||||
>
|
||||
<div class="d-flex justify-space-between align-start gap-2">
|
||||
<div class="d-flex justify-space-between align-start ga-2">
|
||||
<span>
|
||||
Важно: изменения по проектам (добавление, удаление, лимиты, рабочие дни, регионы) вносите
|
||||
<strong>до 18:00 МСК</strong>. Изменения после 18:00 применяются при следующей синхронизации — на
|
||||
@@ -30,7 +30,7 @@
|
||||
</div>
|
||||
</v-alert>
|
||||
|
||||
<div class="d-flex flex-wrap gap-3 mb-4">
|
||||
<div class="d-flex flex-wrap ga-3 mb-4">
|
||||
<v-select
|
||||
v-model="store.filters.signal_type"
|
||||
:items="typeFilters"
|
||||
@@ -101,7 +101,7 @@
|
||||
</div>
|
||||
|
||||
<!-- #6: Селектор количества на странице (паттерн как в DealsView). -->
|
||||
<div class="perpage mb-3 d-flex align-center gap-3">
|
||||
<div class="perpage mb-3 d-flex align-center ga-3">
|
||||
<span class="text-body-2 text-medium-emphasis">Показывать по:</span>
|
||||
<v-btn-toggle
|
||||
v-model="store.filters.per_page"
|
||||
@@ -116,7 +116,7 @@
|
||||
</v-btn-toggle>
|
||||
</div>
|
||||
|
||||
<div v-if="!store.loading && store.items.length > 0" class="projects-toolbar d-flex align-center gap-3 mb-3">
|
||||
<div v-if="!store.loading && store.items.length > 0" class="projects-toolbar d-flex align-center ga-3 mb-3">
|
||||
<label class="toolbar-check" data-testid="select-all-toggle">
|
||||
<input
|
||||
type="checkbox"
|
||||
|
||||
Reference in New Issue
Block a user