From 89ce77b63144adf3dd7010df56d87fbe88a10f40 Mon Sep 17 00:00:00 2001 From: muhamad fais aizat Date: Wed, 7 May 2025 17:19:27 +0700 Subject: [PATCH] fix:memperbaiki predictTomat, testingModel dan landingpage --- .../__pycache__/predictTomat.cpython-310.pyc | Bin 8155 -> 8826 bytes .../__pycache__/testingModel.cpython-310.pyc | Bin 4289 -> 4164 bytes backend/routes/predictTomat.py | 97 +++++++++++++----- backend/routes/testingModel.py | 68 ++++++++---- frontend/src/pages/LandingPage/ViewGrafik.jsx | 16 ++- 5 files changed, 127 insertions(+), 54 deletions(-) diff --git a/backend/routes/__pycache__/predictTomat.cpython-310.pyc b/backend/routes/__pycache__/predictTomat.cpython-310.pyc index 326c47ffa0b9dbd1c30fea12d770f6df0c3bdd63..bf2d30a48648c39f27a34abb5e768bc8575f9f21 100644 GIT binary patch delta 4670 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 delta 732 zcmaiw&ubGw6vyZ7#!Z@Jw`rTkY<{$BZPjS~ffp}56zxH64TbcS%QAJQn@x7JVKyle zruL)1uhbg_)hySYXwoJMBEeMKO8ENpYULo>tt~S@kGDCbqkTDx1gf|jB}xc^ioLc3Q<`hP`}%BMbX~LY^mA#CWV8CzB-A0}%Ncy|jYbk$OV#DIF1& zXgw*+!>Kc!S4V7GNBtz35zmW}^gp`nYyY`$S?IulEHtDyz+Q5x2}BTbeHV#3;PR-B z@N-<@c|O78JjrKxj%WCJo+UR9WODOBt)SAaVKMq#1|?XX(39-0_|H<5Er}xp`yh+|^IAq3myJ!z+StXX z%E`%X@GX8vQ>&DD z<{EBebHlTOxx^041gJDM*3z_m)By`KA0|=J2WZ L2*3 { const { toast } = useToast(); const [dateTerbaru, setDateTerbaru] = useState(null); + const [dateTerlama, setDateTerlama] = useState(null); + const oldestDate = dateTerlama ? parseISO(dateTerlama) : null; const latestDate = dateTerbaru ? parseISO(dateTerbaru) : null; const handleDateChange = (selectedDate) => setDate(selectedDate); @@ -52,8 +54,9 @@ const ViewGrafik = ({ date, setDate, dataYAxis, setDataYAxis, priceType, setPric try { const response = await axios.get(`${API_URL}/predict/date`); - console.log(response.data.tanggal) - setDateTerbaru(response.data.tanggal) + console.log(response.data.tanggal_old) + setDateTerbaru(response.data.tanggal_new) + setDateTerlama(response.data.tanggal_old) } catch (error) { console.error("Error fetching data", error); } @@ -119,7 +122,12 @@ const ViewGrafik = ({ date, setDate, dataYAxis, setDataYAxis, priceType, setPric onSelect={handleDateChange} initialFocus defaultMonth={latestDate} - disabled={(day) => latestDate && isAfter(startOfDay(day), latestDate)} + disabled={(day) => + // Nonaktifkan tanggal SETELAH tanggal terbaru + (latestDate && isAfter(startOfDay(day), latestDate)) || + // Nonaktifkan tanggal SEBELUM tanggal terlama + (oldestDate && isBefore(startOfDay(day), oldestDate)) + } />