From 4b3770b3111d16890946d6289625da4c9397576f Mon Sep 17 00:00:00 2001 From: busya Date: Wed, 17 Jun 2026 14:21:08 +0300 Subject: [PATCH] refactor(frontend): migrate badge patterns to Badge component (8 files) Replaced inline rounded-full badge patterns and removed 5 duplicated helper functions: - getStatusBadgeClass (translate/+page, validation-tasks/[policyId]) - getRunStatusBadgeClass (validation-tasks/[policyId]) - getStateClass (LaunchConfirmationPanel) - getStateTone (CompiledSQLPreview) All badges now use from $lib/ui. --- .../dataset-review/CompiledSQLPreview.svelte | 21 ++--------- .../ExecutionMappingReview.svelte | 37 +++++++------------ .../LaunchConfirmationPanel.svelte | 15 ++------ .../ValidationFindingsPanel.svelte | 13 ++----- .../review/ReviewWorkspaceHeader.svelte | 17 +++------ .../routes/datasets/review/[id]/+page.svelte | 19 +++------- frontend/src/routes/translate/+page.svelte | 20 ++-------- .../validation-tasks/[policyId]/+page.svelte | 37 +++---------------- 8 files changed, 45 insertions(+), 134 deletions(-) diff --git a/frontend/src/lib/components/dataset-review/CompiledSQLPreview.svelte b/frontend/src/lib/components/dataset-review/CompiledSQLPreview.svelte index e2facbe0..d3c9b37b 100644 --- a/frontend/src/lib/components/dataset-review/CompiledSQLPreview.svelte +++ b/frontend/src/lib/components/dataset-review/CompiledSQLPreview.svelte @@ -22,6 +22,7 @@ @@ -23,20 +24,12 @@
{#if session} - - {session.source_kind || $t.dataset_review?.workspace?.source_badge_fallback} - - - {profile?.dataset_name || session.dataset_ref} - + {session.source_kind || $t.dataset_review?.workspace?.source_badge_fallback} + {profile?.dataset_name || session.dataset_ref} {/if} - - {$t.dataset_review?.workspace?.state_label}: {getWorkspaceStateLabel(currentWorkspaceState)} - + {$t.dataset_review?.workspace?.state_label}: {getWorkspaceStateLabel(currentWorkspaceState)} {#if session} - - {$t.dataset_review?.workspace?.readiness_label}: {readinessLabel} - + {$t.dataset_review?.workspace?.readiness_label}: {readinessLabel} {/if}
diff --git a/frontend/src/routes/datasets/review/[id]/+page.svelte b/frontend/src/routes/datasets/review/[id]/+page.svelte index d95497f2..345c8542 100644 --- a/frontend/src/routes/datasets/review/[id]/+page.svelte +++ b/frontend/src/routes/datasets/review/[id]/+page.svelte @@ -26,7 +26,7 @@ import { page } from "$app/state"; import { goto } from "$app/navigation"; import { t } from "$lib/i18n/index.svelte.js"; - import { Button } from "$lib/ui"; + import { Badge, Button } from "$lib/ui"; import SourceIntakePanel from "$lib/components/dataset-review/SourceIntakePanel.svelte"; import ValidationFindingsPanel from "$lib/components/dataset-review/ValidationFindingsPanel.svelte"; import SemanticLayerReview from "$lib/components/dataset-review/SemanticLayerReview.svelte"; @@ -207,20 +207,11 @@
{getRecommendedActionLabel($t, m.session?.recommended_action)}
{#if m.session?.readiness_state === "run_ready"} - - - Готов к запуску - + Готов к запуску {:else if m.session?.readiness_state === "review_ready"} - - - Готов к проверке - + Готов к проверке {:else if m.session?.readiness_state === "recovery_required" || m.session?.readiness_state === "partially_ready"} - - - Частичное восстановление - + Частичное восстановление {/if} @@ -229,7 +220,7 @@
{$t.dataset_review?.workspace?.recovered_filters_title || "Фильтры из дашборда"} - {m.importedFilters.length} + {m.importedFilters.length}
{#each m.importedFilters.slice(0, 6) as filter} diff --git a/frontend/src/routes/translate/+page.svelte b/frontend/src/routes/translate/+page.svelte index afcd0020..847d6c76 100644 --- a/frontend/src/routes/translate/+page.svelte +++ b/frontend/src/routes/translate/+page.svelte @@ -6,7 +6,7 @@ import { ROUTES } from '$lib/routes'; import { t, _ } from '$lib/i18n/index.svelte.js'; import { addToast } from '$lib/toasts.svelte.js'; - import { Button, EmptyState } from '$lib/ui'; + import { Badge, Button, EmptyState } from '$lib/ui'; import { fetchJobs, deleteJob, duplicateJob } from '$lib/api/translate.js'; /** @type {string} idle | loading | empty | populated | error */ @@ -98,18 +98,7 @@ } } - /** @param {string} status */ - function getStatusBadgeClass(status) { - const map = { - DRAFT: 'bg-surface-muted text-text', - READY: 'bg-primary-light text-primary', - RUNNING: 'bg-warning-light text-warning', - COMPLETED: 'bg-success-light text-success', - FAILED: 'bg-destructive-light text-destructive', - CANCELLED: 'bg-surface-muted text-text-muted', - }; - return map[status] || 'bg-surface-muted text-text'; - } +
@@ -196,6 +185,7 @@ {:else if uxState === 'populated'}
{#each jobs as job} + {@const statusVariant = ({ DRAFT: "muted", READY: "primary", RUNNING: "warning", COMPLETED: "success", FAILED: "destructive", CANCELLED: "muted" })[job.status] || "muted"}
navigateToConfig(job.id)} class="bg-surface-card border border-border rounded-lg p-4 hover:shadow-md hover:border-border-strong transition-all cursor-pointer" @@ -204,9 +194,7 @@

{job.name}

- - {job.status} - + {job.status}
{#if job.description}

{job.description}

diff --git a/frontend/src/routes/validation-tasks/[policyId]/+page.svelte b/frontend/src/routes/validation-tasks/[policyId]/+page.svelte index c1dfd2b9..11cbf363 100644 --- a/frontend/src/routes/validation-tasks/[policyId]/+page.svelte +++ b/frontend/src/routes/validation-tasks/[policyId]/+page.svelte @@ -14,7 +14,7 @@ import { goto } from '$app/navigation'; import { ROUTES } from '$lib/routes'; import { t } from '$lib/i18n/index.svelte.js'; - import { EmptyState } from '$lib/ui'; + import { Badge, EmptyState } from '$lib/ui'; import { addToast } from '$lib/toasts.svelte.js'; import { triggerValidationRun as triggerRun, deleteValidationTask as deleteTask, getValidationRuns as fetchRuns } from '$lib/api.js'; import { page } from '$app/state'; @@ -43,22 +43,7 @@ // Derived status let isScheduled = $derived(task?.schedule_days?.length > 0); - /** @param {string} status */ - function getStatusBadgeClass(status) { - const map = { - PASS: 'bg-success-light text-success', - WARN: 'bg-warning-light text-warning', - FAIL: 'bg-destructive-light text-destructive', - UNKNOWN: 'bg-surface-muted text-text-muted', - RUNNING: 'bg-primary-light text-primary', - PENDING: 'bg-warning-light text-warning', - COMPLETED: 'bg-success-light text-success', - }; - return map[status] || 'bg-surface-muted text-text-muted'; - } - /** @param {string} status */ - const getRunStatusBadgeClass = getStatusBadgeClass; /** @param {number} ms */ function formatDuration(ms) { @@ -166,22 +151,14 @@

{task?.name || '-'}

{#if task?.is_active !== false} - - {$t.validation?.active || 'Active'} - + {$t.validation?.active || 'Active'} {:else} - - {$t.validation?.inactive || 'Inactive'} - + {$t.validation?.inactive || 'Inactive'} {/if} {#if isScheduled} - - {$t.validation?.scheduled || 'Scheduled'} - + {$t.validation?.scheduled || 'Scheduled'} {:else} - - {$t.validation?.manual_only || 'Manual only'} - + {$t.validation?.manual_only || 'Manual only'} {/if}
@@ -342,9 +319,7 @@ {getTriggerLabel(run.trigger)} - - {run.status || 'UNKNOWN'} - + {run.status || 'UNKNOWN'} {getAggregateSummary(run)}