diff --git a/website/src/App.tsx b/website/src/App.tsx index ae8f421..bac072e 100644 --- a/website/src/App.tsx +++ b/website/src/App.tsx @@ -142,11 +142,11 @@ export default function (props: JSX.HTMLAttributes) { // .order("created_time", { ascending: false }) // .limit(1); - if (lastData1![0] == lastData2![0]) { - alert("Device offline!"); - } else if (lastData1![0].created_time == lastData2![0].created_time) { - alert("Device offline!"); - } + // if (lastData1![0] == lastData2![0]) { + // alert("Device offline!"); + // } else if (lastData1![0].created_time == lastData2![0].created_time) { + // alert("Device offline!"); + // } await checkStatusDevice(); } @@ -160,7 +160,7 @@ export default function (props: JSX.HTMLAttributes) { if (!item.running) { if (location.pathname != "/") { - navigate("/"); + // navigate("/"); } } else { setCanNavigate(true); diff --git a/website/src/pages/Index.tsx b/website/src/pages/Index.tsx index c014cb2..fcea484 100644 --- a/website/src/pages/Index.tsx +++ b/website/src/pages/Index.tsx @@ -14,6 +14,7 @@ export default function () { const [kelembaban, setKelembaban] = createSignal(0); const [kadarGas, setKadarGas] = createSignal([]); const [timeStamps, setTimeStamps] = createSignal([]); + const [lamaJam, setLamaJam] = createSignal(); const [lastHistori, setLastHistori] = createSignal(null); const [pengaturan, setPengaturan] = createSignal(null); @@ -31,6 +32,37 @@ export default function () { } }; + const getLamaFermentasi = async () => { + const { data: dataAwals } = await supabase + .from("kondisi_tapai") + .select("created_time") + .limit(1) + .order("created_time", { ascending: true }); + + const { data: dataAkhirs } = await supabase + .from("kondisi_tapai") + .select("created_time") + .limit(1) + .order("created_time", { ascending: false }); + + type CData = { + created_time: number; + }; + + let lama = 0; + + console.log(dataAwals); + + if (dataAwals?.length) { + const dataAwal: CData = dataAwals![0]; + const dataAkhir: CData = dataAkhirs![0]; + + lama = dataAkhir.created_time - dataAwal.created_time; + } + + setLamaJam(Math.round(lama / 3600)); + }; + const getData = async () => { const { data } = await supabase .from("realtime_data") @@ -130,10 +162,24 @@ export default function () { display: true, title: { display: true, - text: "Nilai", + text: "Kadar Gas Alkohol", }, min: 0, max: 10, + ticks: { + callback: (val) => { + return val + "%"; + }, + }, + }, + }, + plugins: { + tooltip: { + callbacks: { + label(tooltipItem) { + return "Kadar Gas: " + tooltipItem.parsed.y + "%"; + }, + }, }, }, }, @@ -152,6 +198,7 @@ export default function () { setTimeout(async () => { await renderChart(); + await getLamaFermentasi(); await getLastHistori(); }, 4000); }; @@ -192,6 +239,7 @@ export default function () { await getPengaturan(); Chart.register(...registerables); await renderChart(); + await getLamaFermentasi(); await getLastHistori(); }); @@ -224,40 +272,32 @@ export default function () {
0 ? "" : "hidden")}> -
+
-
- {lastHistori()?.selesai == false - ? lastHistori()?.berhasil - ? "Matang" - : "Gagal" - : "Menunggu"} +
+ Status Fermentasi:{" "} + + {lastHistori()?.selesai == false + ? lastHistori()?.berhasil + ? "Matang" + : "Gagal" + : "Menunggu"} +
-
-
-
- -
- {suhu().toString().slice(0, 4)} °C -
-
-
- -
- {kelembaban().toString().slice(0, 4)} % -
+
+
Waktu Berlalu : {lamaJam()} jam
+
Terjadi kesalahan dan ingin membatalkan fermentasi? Klik di{" "}
+ +
+
+
+ +
+
+
Temperatur
+
+ {suhu().toString().slice(0, 4)} C +
+
+
+
+
+ +
+
+
Kelembaban
+
+ {kelembaban().toString().slice(0, 4)} % +
+
+
+
Grafik Kadar Gas
+
+ Waktu Fermentasi +
diff --git a/website/src/pages/Kontrol.tsx b/website/src/pages/Kontrol.tsx index 1c425d1..4afe65b 100644 --- a/website/src/pages/Kontrol.tsx +++ b/website/src/pages/Kontrol.tsx @@ -40,34 +40,63 @@ export default function () { await getData(); }; + const getSuhu = () => { + let suhu = []; + for (let i = 30; i <= 40; i++) { + suhu.push(i); + } + + return suhu; + }; + onMount(async () => { await getData(); }); return (
-
-
Kontrol Alat
-

- Pemilik bisa mengatur environment untuk pengendalian suhu secara - otomatis atau secara manual -

-
- +
+
+
Kontrol Alarm
+

Matikan buzzer alarm setelah selang waktu

+ +
+
+
Kontrol Alat
+

+ Atur pengendalian suhu secara otomatis atau secara manual +

+
+ +
{ - handleReqChange("suhu_min", e.target.value); + handleReqChange("suhu_min", e.currentTarget.value); handleSubmit(); }} class="input" > - {Array.from({ length: 11 }).map((_, i) => ( - + {getSuhu().map((i) => ( + ))}
@@ -143,13 +172,13 @@ export default function () {
diff --git a/website/src/types/Pengaturan.ts b/website/src/types/Pengaturan.ts index 211f72e..631ccad 100644 --- a/website/src/types/Pengaturan.ts +++ b/website/src/types/Pengaturan.ts @@ -8,4 +8,5 @@ export interface Pengaturan { auto: boolean; fan_on: boolean; lamp_on: boolean; + buzzer_timer: number; } \ No newline at end of file