From d07d47b974092081fd94eb8bb9f3bd8d0cde7144 Mon Sep 17 00:00:00 2001 From: seriouselly Date: Sun, 14 Jun 2026 23:19:42 +0700 Subject: [PATCH] refactor(diagnosis): enhance detail page usability and data robustness - Implement `useEffect` to ensure smooth scroll-to-top on navigation. - Add fallback logic to populate medicine recommendations from local seed data if backend payload is incomplete. - Integrate dynamic `RiskBadge` component with automated severity-to-color mapping for better visual clarity. --- apps/web/src/components/diagnose-result-view.tsx | 15 +++++++++++---- apps/web/src/pages/diagnosis-detail-page.tsx | 4 ++-- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/apps/web/src/components/diagnose-result-view.tsx b/apps/web/src/components/diagnose-result-view.tsx index 4f6a6ba..cd1fbe3 100644 --- a/apps/web/src/components/diagnose-result-view.tsx +++ b/apps/web/src/components/diagnose-result-view.tsx @@ -7,7 +7,9 @@ import { ShieldCheck, Pill, RefreshCcw, + FlaskConical, } from "lucide-react"; +import { RiskBadge } from "./risk-badge"; type Props = { imageUrl: string; @@ -36,6 +38,13 @@ export function DiagnosisResultView({ }: Props) { const [openSection, setOpenSection] = useState("detail"); + const getRiskLevelKey = (level: string): "low" | "medium" | "high" => { + const normalized = level.toLowerCase(); + if (normalized.includes("rendah")) return "low"; + if (normalized.includes("tinggi")) return "high"; + return "medium"; + }; + const toggleSection = (section: string) => { setOpenSection(openSection === section ? "" : section); }; @@ -94,9 +103,7 @@ export function DiagnosisResultView({ Tingkat Keparahan: - - {riskLevel.toUpperCase()} - + @@ -201,7 +208,7 @@ export function DiagnosisResultView({
    {medicines.map((med, i) => (
  • - ⚕️{" "} + {" "} {med}
  • ))} diff --git a/apps/web/src/pages/diagnosis-detail-page.tsx b/apps/web/src/pages/diagnosis-detail-page.tsx index 11d1c74..8303407 100644 --- a/apps/web/src/pages/diagnosis-detail-page.tsx +++ b/apps/web/src/pages/diagnosis-detail-page.tsx @@ -45,7 +45,7 @@ export function DiagnosisDetailPage() { const diagnosis = query.data; - // fallback Logic for image and medicine recommendations + // Fallback logic for image and medicine recommendations const finalImageUrl = diagnosis.imageUrl || "/src/assets/images/placeholder-image.png"; @@ -64,7 +64,7 @@ export function DiagnosisDetailPage() {
    -

    +

    Analisis & Modul Edukasi