VoiceAssist / vafront /src /Pages /RollDetailPage.jsx
thejagstudio's picture
Upload 39 files
49d3082 verified
import React, { useState, useEffect } from "react";
import { useAtom } from "jotai";
import { CurrentRollAtom, VoiceAssistAtom, searchAtom, grnsAtom, CurrentGRNAtom, TranscribeAtom } from "../Variables";
import { useNavigate } from "react-router";
function RollDetailPage() {
const [name, setName] = useState("");
const [GRN, setGRN] = useState("");
const [rLength, setRLength] = useState("");
const [aLength, setALength] = useState("");
const [minWidth, setMinWidth] = useState("");
const [maxWidth, setMaxWidth] = useState("");
const [CS, setCS] = useState("");
const [LWV, setLWV] = useState("");
const [EPI, setEPI] = useState("");
const [PPI, setPPI] = useState("");
const [CutPcs, setCutPcs] = useState("");
const [sWarp, setSWarp] = useState("");
const [sWeft, setSWeft] = useState("");
const [GSM, setGSM] = useState("");
const [SL, setSL] = useState("");
const [SG, setSG] = useState("");
const [Bowing, setBowing] = useState("");
const [success, setSuccess] = useState(null);
const [error, setError] = useState(null);
const [search, setSearch] = useAtom(searchAtom);
const [currentRoll, setCurrentRoll] = useAtom(CurrentRollAtom);
const [grns, setGrns] = useAtom(grnsAtom);
const [transcribe, setTranscribe] = useAtom(TranscribeAtom);
const [currentGRN, setCurrentGRN] = useAtom(CurrentGRNAtom);
const [voiceAssist, setVoiceAssist] = useAtom(VoiceAssistAtom);
const navigate = useNavigate();
useEffect(() => {
if (currentRoll.name === "") {
voiceAssist.say("No roll selected, redirecting to home page", {
onEnd: () => {
navigate("/");
},
});
} else {
setName(currentRoll?.name || "");
setGRN(currentRoll?.GRN || "");
setRLength(currentRoll?.rLength || "");
setALength(currentRoll?.aLength || "");
setMinWidth(currentRoll?.minWidth || "");
setMaxWidth(currentRoll?.maxWidth || "");
setCS(currentRoll?.CS || "");
setLWV(currentRoll?.LWV || "");
setEPI(currentRoll?.EPI || "");
setPPI(currentRoll?.PPI || "");
setCutPcs(currentRoll?.CutPcs || "");
setSWarp(currentRoll?.sWarp || "");
setSWeft(currentRoll?.sWeft || "");
setGSM(currentRoll?.GSM || "");
setSL(currentRoll?.SL || "");
setSG(currentRoll?.SG || "");
setBowing(currentRoll?.Bowing || "");
}
}, [currentRoll, navigate, voiceAssist]);
const handleSubmit = () => {
// if (!name || !GRN || !rLength || !aLength || !minWidth || !maxWidth || !CS || !LWV || !EPI || !PPI || !CutPcs || !sWarp || !sWeft || !GSM || !SL || !SG || !Bowing) {
// setError("Please fill all the fields");
// setTimeout(() => setError(null), 3000);
// return;
// }
const data = new FormData();
if (rLength !== "") data.append("rLength", rLength);
if (aLength !== "") data.append("aLength", aLength);
if (minWidth !== "") data.append("minWidth", minWidth);
if (maxWidth !== "") data.append("maxWidth", maxWidth);
if (CS !== "") data.append("CS", CS);
if (LWV !== "") data.append("LWV", LWV);
if (EPI !== "") data.append("EPI", EPI);
if (PPI !== "") data.append("PPI", PPI);
if (CutPcs !== "") data.append("CutPcs", CutPcs);
if (sWarp !== "") data.append("sWarp", sWarp);
if (sWeft !== "") data.append("sWeft", sWeft);
if (GSM !== "") data.append("GSM", GSM);
if (SL !== "") data.append("SL", SL);
if (SG !== "") data.append("SG", SG);
if (Bowing !== "") data.append("Bowing", Bowing);
fetch(`/api/rollUpdate/${currentRoll?.name}`, {
method: "POST",
body: data,
})
.then((response) => response.json())
.then((data) => {
if (data.status === "success") {
setSuccess(data.msg);
setTimeout(() => setSuccess(null), 3000);
setTranscribe((prev) => [...prev.slice(0, -1), { msg: data.msg, isCommand: true }]);
voiceAssist.say(data.msg);
navigate("/grn");
} else {
setError(data.msg);
setTimeout(() => setError(null), 3000);
voiceAssist.say(data.msg);
}
})
.catch((error) => {console.error("Error:", error);window.location.href = "/";});
};
useEffect(() => {
voiceAssist.emptyCommands();
voiceAssist.on(["open *", "grn *", "open grn *"], true).then((i, wildcard) => {
wildcard = wildcard.replace(/\s/g, "");
let found = false;
for (let index = 0; index < grns.length; index++) {
if (grns[index].GRN.toLowerCase() == wildcard.toLowerCase()) {
setCurrentGRN(grns[index]);
setTranscribe((prev) => [...prev.slice(0, -1), { msg: "open GRN " + wildcard, isCommand: true }]);
navigate("/grn");
localStorage.setItem("currentGRN", JSON.stringify(grns[index]));
found = true;
}
}
if (!found) {
voiceAssist.say("No GRN found with that Number");
}
});
voiceAssist.on(["search *"], true).then((i, wildcard) => {
wildcard = wildcard.replace(/ /g, "");
setSearch(wildcard);
setTranscribe((prev) => [...prev.slice(0, -1), { msg: "search " + wildcard, isCommand: true }]);
});
voiceAssist.on(["transcribe"]).then((i) => {
setTranscribe((prev) => [...prev.slice(0, -1), { msg: "transcribe", isCommand: true }]);
navigate("/transcribe");
});
voiceAssist.on(["home", "go to home"]).then((i) => {
setTranscribe((prev) => [...prev.slice(0, -1), { msg: "home", isCommand: true }]);
navigate("/");
});
voiceAssist.on(["refresh"]).then((i) => {
window.location.reload();
});
voiceAssist.on(["A1 *", "A 1 *", "a1 *", "a 1 *", "A1*", "A 1*", "a1*", "a 1*"], true).then((i, wildcard) => {
setRLength(parseFloat(wildcard));
setTranscribe((prev) => [...prev.slice(0, -1), { msg: "Roll Length Updated to " + parseFloat(wildcard), isCommand: true }]);
});
voiceAssist.on(["A2 *", "A 2 *", "a 2 *", "a2 *", "A2*", "A 2*", "a 2*", "a2*"], true).then((i, wildcard) => {
setALength(parseFloat(wildcard));
setTranscribe((prev) => [...prev.slice(0, -1), { msg: "Actual Length Updated to " + parseFloat(wildcard), isCommand: true }]);
});
voiceAssist.on(["B1 *", "B 1 *", "b 1 *", "b1 *", "B1*", "B 1*", "b 1*", "b1*"], true).then((i, wildcard) => {
setMinWidth(parseFloat(wildcard));
setTranscribe((prev) => [...prev.slice(0, -1), { msg: "Min Width Updated to " + parseFloat(wildcard), isCommand: true }]);
});
voiceAssist.on(["B2 *", "B 2 *", "b 2 *", "b2 *", "B2*", "B 2*", "b 2*", "b2*"], true).then((i, wildcard) => {
setMaxWidth(parseFloat(wildcard));
setTranscribe((prev) => [...prev.slice(0, -1), { msg: "Max Width Updated to " + parseFloat(wildcard), isCommand: true }]);
});
voiceAssist.on(["B3 *", "B 3 *", "b 3 *", "b3 *", "B3*", "B 3*", "b 3*", "b3*"], true).then((i, wildcard) => {
setCS(wildcard);
setTranscribe((prev) => [...prev.slice(0, -1), { msg: "CS Updated to " + wildcard, isCommand: true }]);
});
voiceAssist.on(["B5 *", "B 5 *", "b 5 *", "b5 *", "B5*", "B 5*", "b 5*", "b5*"], true).then((i, wildcard) => {
setLWV(wildcard);
setTranscribe((prev) => [...prev.slice(0, -1), { msg: "LWV Updated to " + wildcard, isCommand: true }]);
});
voiceAssist.on(["D1 *", "D 1 *", "d 1 *", "d1 *", "D1*", "D 1*", "d 1*", "d1*"], true).then((i, wildcard) => {
setEPI(parseFloat(wildcard));
setTranscribe((prev) => [...prev.slice(0, -1), { msg: "EPI Updated to " + parseFloat(wildcard), isCommand: true }]);
});
voiceAssist.on(["D2 *", "D 2 *", "d 2 *", "d2 *", "D2*", "D 2*", "d 2*", "d2*"], true).then((i, wildcard) => {
setPPI(parseFloat(wildcard));
setTranscribe((prev) => [...prev.slice(0, -1), { msg: "PPI Updated to " + parseFloat(wildcard), isCommand: true }]);
});
voiceAssist.on(["D3 *", "D 3 *", "d 3 *", "d3 *", "D3*", "D 3*", "d 3*", "d3*"], true).then((i, wildcard) => {
setCutPcs(parseFloat(wildcard));
setTranscribe((prev) => [...prev.slice(0, -1), { msg: "Cut Pcs Updated to " + parseFloat(wildcard), isCommand: true }]);
});
voiceAssist.on(["D4 *", "D 4 *", "d 4 *", "d4 *", "D4*", "D 4*", "d 4*", "d4*"], true).then((i, wildcard) => {
setSWarp(wildcard);
setTranscribe((prev) => [...prev.slice(0, -1), { msg: "Shrinkage Warp Updated to " + wildcard, isCommand: true }]);
});
voiceAssist.on(["F1 *", "F 1 *", "f 1 *", "f1 *", "F1*", "F 1*", "f 1*", "f1*"], true).then((i, wildcard) => {
setSWeft(wildcard);
setTranscribe((prev) => [...prev.slice(0, -1), { msg: "Shrinkage Weft Updated to " + wildcard, isCommand: true }]);
});
voiceAssist.on(["F2 *", "F 2 *", "f 2 *", "f2 *", "F2*", "F 2*", "f 2*", "f2*"], true).then((i, wildcard) => {
setGSM(parseFloat(wildcard));
setTranscribe((prev) => [...prev.slice(0, -1), { msg: "GSM Updated to " + parseFloat(wildcard), isCommand: true }]);
});
voiceAssist.on(["F3 *", "F 3 *", "f 3 *", "f3 *", "F3*", "F 3*", "f 3*", "f3*"], true).then((i, wildcard) => {
setSL(wildcard);
setTranscribe((prev) => [...prev.slice(0, -1), { msg: "SL Updated to " + wildcard, isCommand: true }]);
});
voiceAssist.on(["F4 *", "F 4 *", "f 4 *", "f4 *", "F4*", "F 4*", "f 4*", "f4*"], true).then((i, wildcard) => {
setSG(wildcard);
setTranscribe((prev) => [...prev.slice(0, -1), { msg: "SG Updated to " + wildcard, isCommand: true }]);
});
voiceAssist.on(["F5 *", "F 5 *", "f 5 *", "f5 *", "F5*", "F 5*", "f 5*", "f5*"], true).then((i, wildcard) => {
setBowing(wildcard);
setTranscribe((prev) => [...prev.slice(0, -1), { msg: "Bowing Updated to " + wildcard, isCommand: true }]);
});
voiceAssist.on(["update", "submit"]).then((i) => {
console.log("submitting");
submitBtn.click();
});
voiceAssist.on(["clear all", "clear"]).then((i) => {
setRLength("");
setALength("");
setMinWidth("");
setMaxWidth("");
setCS("");
setLWV("");
setEPI("");
setPPI("");
setCutPcs("");
setSWarp("");
setSWeft("");
setGSM("");
setSL("");
setSG("");
setBowing("");
setTranscribe((prev) => [...prev.slice(0, -1), { msg: "clear all", isCommand: true }]);
});
console.log("Commands", voiceAssist?.getAvailableCommands().length);
}, [voiceAssist]);
return (
<div className="w-full h-fit min-h-[calc(100vh-4.1rem)] overflow-y-auto custom-scrollbar flex items-center justify-center">
{currentRoll.name !== "" && (
<div className="relative flex gap-10 bg-clip-border rounded-xl bg-white text-gray-700 w-full max-w-[48rem] flex-row">
<div className="relative flex flex-col bg-clip-border rounded-xl bg-transparent text-primary-700 shadow-none">
{success && (
<div role="alert" className="relative w-full text-base font-regular px-4 py-4 mt-3 rounded-none border-l-4 border-green-600 bg-green-600/10 font-medium text-green-600 flex" style={{ opacity: 1 }}>
<div className="shrink-0">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" className="h-6 w-6">
<path fillRule="evenodd" d="M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12zm13.36-1.814a.75.75 0 10-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 00-1.06 1.06l2.25 2.25a.75.75 0 001.14-.094l3.75-5.25z" clipRule="evenodd" />
</svg>
</div>
<div className="ml-3 mr-12 truncate" id="successMsg">
{success}
</div>
</div>
)}
{error && (
<div role="alert" className="relative w-full text-base font-regular px-4 py-4 mt-3 rounded-none border-l-4 border-red-500 bg-red-500/10 font-medium text-red-500 flex" style={{ opacity: 1 }}>
<div className="shrink-0">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" className="h-6 w-6">
<path fillRule="evenodd" d="M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12zm13.36-1.814a.75.75 0 10-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 00-1.06 1.06l2.25 2.25a.75.75 0 001.14-.094l3.75-5.25z" clipRule="evenodd" />
</svg>
</div>
<div className="ml-3 mr-12 truncate" id="errorMsg">
{error}
</div>
</div>
)}
<div className="mt-8 mb-2 lg:w-full w-[80%] lg:mx-0 mx-auto">
<div className="mb-1 grid grid-cols-2 md:grid-cols-4 gap-3">
<div>
<h6 className="font-semibold text-primary-900 mb-3">Name</h6>
<input onChange={(event) => setName(event.target.value)} value={name} disabled placeholder="Name" type="text" className="w-full h-11 bg-transparent text-primary-700 font-normal outline outline-0 focus:outline-0 disabled:bg-blue-gray-50 disabled:border-0 disabled:cursor-not-allowed transition-all placeholder-shown:border border focus:border-2 border-t-transparent focus:border-t-transparent text-sm px-3 py-3 rounded-md border-blue-gray-200 focus:border-gray-900 !border-t-blue-gray-200 focus:!border-t-gray-900" />
</div>
<div>
<h6 className="font-semibold text-primary-900 mb-3">GRN</h6>
<input onChange={(event) => setGRN(event.target.value)} value={GRN} disabled placeholder="GRN" type="text" className="w-full h-11 bg-transparent text-primary-700 font-normal outline outline-0 focus:outline-0 disabled:bg-blue-gray-50 disabled:border-0 disabled:cursor-not-allowed transition-all placeholder-shown:border border focus:border-2 border-t-transparent focus:border-t-transparent text-sm px-3 py-3 rounded-md border-blue-gray-200 focus:border-gray-900 !border-t-blue-gray-200 focus:!border-t-gray-900" />
</div>
<div>
<h6 className="font-semibold text-primary-900 mb-1 flex items-center justify-between">
Roll Length <span className="bg-primary-200 font-normal p-1 rounded">(A1)</span>
</h6>
<input onChange={(event) => setRLength(event.target.value)} value={rLength} placeholder="Roll Length" type="number" className="w-full h-11 bg-transparent text-primary-700 font-normal outline outline-0 focus:outline-0 disabled:bg-blue-gray-50 disabled:border-0 disabled:cursor-not-allowed transition-all placeholder-shown:border border focus:border-2 border-t-transparent focus:border-t-transparent text-sm px-3 py-3 rounded-md border-blue-gray-200 focus:border-gray-900 !border-t-blue-gray-200 focus:!border-t-gray-900" />
</div>
<div>
<h6 className="font-semibold text-primary-900 mb-1 flex items-center justify-between">
Actual Length <span className="bg-primary-200 font-normal p-1 rounded">(A2)</span>
</h6>
<input onChange={(event) => setALength(event.target.value)} value={aLength} placeholder="Actual Length" type="number" className="w-full h-11 bg-transparent text-primary-700 font-normal outline outline-0 focus:outline-0 disabled:bg-blue-gray-50 disabled:border-0 disabled:cursor-not-allowed transition-all placeholder-shown:border border focus:border-2 border-t-transparent focus:border-t-transparent text-sm px-3 py-3 rounded-md border-blue-gray-200 focus:border-gray-900 !border-t-blue-gray-200 focus:!border-t-gray-900" />
</div>
<div>
<h6 className="font-semibold text-primary-900 mb-1 flex items-center justify-between">
Min Width <span className="bg-primary-200 font-normal p-1 rounded">(B1)</span>
</h6>
<input onChange={(event) => setMinWidth(event.target.value)} value={minWidth} placeholder="Min Width" type="number" className="w-full h-11 bg-transparent text-primary-700 font-normal outline outline-0 focus:outline-0 disabled:bg-blue-gray-50 disabled:border-0 disabled:cursor-not-allowed transition-all placeholder-shown:border border focus:border-2 border-t-transparent focus:border-t-transparent text-sm px-3 py-3 rounded-md border-blue-gray-200 focus:border-gray-900 !border-t-blue-gray-200 focus:!border-t-gray-900" />
</div>
<div>
<h6 className="font-semibold text-primary-900 mb-1 flex items-center justify-between">
Max Width <span className="bg-primary-200 font-normal p-1 rounded">(B2)</span>
</h6>
<input onChange={(event) => setMaxWidth(event.target.value)} value={maxWidth} placeholder="Max Width" type="number" className="w-full h-11 bg-transparent text-primary-700 font-normal outline outline-0 focus:outline-0 disabled:bg-blue-gray-50 disabled:border-0 disabled:cursor-not-allowed transition-all placeholder-shown:border border focus:border-2 border-t-transparent focus:border-t-transparent text-sm px-3 py-3 rounded-md border-blue-gray-200 focus:border-gray-900 !border-t-blue-gray-200 focus:!border-t-gray-900" />
</div>
<div>
<h6 className="font-semibold text-primary-900 mb-1 flex items-center justify-between">
CS <span className="bg-primary-200 font-normal p-1 rounded">(B3)</span>
</h6>
<input onChange={(event) => setCS(event.target.value)} value={CS} placeholder="CS" type="text" className="w-full h-11 bg-transparent text-primary-700 font-normal outline outline-0 focus:outline-0 disabled:bg-blue-gray-50 disabled:border-0 disabled:cursor-not-allowed transition-all placeholder-shown:border border focus:border-2 border-t-transparent focus:border-t-transparent text-sm px-3 py-3 rounded-md border-blue-gray-200 focus:border-gray-900 !border-t-blue-gray-200 focus:!border-t-gray-900" />
</div>
<div>
<h6 className="font-semibold text-primary-900 mb-1 flex items-center justify-between">
LWV <span className="bg-primary-200 font-normal p-1 rounded">(B5)</span>
</h6>
<input onChange={(event) => setLWV(event.target.value)} value={LWV} placeholder="LWV" type="text" className="w-full h-11 bg-transparent text-primary-700 font-normal outline outline-0 focus:outline-0 disabled:bg-blue-gray-50 disabled:border-0 disabled:cursor-not-allowed transition-all placeholder-shown:border border focus:border-2 border-t-transparent focus:border-t-transparent text-sm px-3 py-3 rounded-md border-blue-gray-200 focus:border-gray-900 !border-t-blue-gray-200 focus:!border-t-gray-900" />
</div>
<div>
<h6 className="font-semibold text-primary-900 mb-1 flex items-center justify-between">
EPI <span className="bg-primary-200 font-normal p-1 rounded">(D1)</span>
</h6>
<input onChange={(event) => setEPI(event.target.value)} value={EPI} placeholder="EPI" type="number" className="w-full h-11 bg-transparent text-primary-700 font-normal outline outline-0 focus:outline-0 disabled:bg-blue-gray-50 disabled:border-0 disabled:cursor-not-allowed transition-all placeholder-shown:border border focus:border-2 border-t-transparent focus:border-t-transparent text-sm px-3 py-3 rounded-md border-blue-gray-200 focus:border-gray-900 !border-t-blue-gray-200 focus:!border-t-gray-900" />
</div>
<div>
<h6 className="font-semibold text-primary-900 mb-1 flex items-center justify-between">
PPI <span className="bg-primary-200 font-normal p-1 rounded">(D2)</span>
</h6>
<input onChange={(event) => setPPI(event.target.value)} value={PPI} placeholder="PPI" type="number" className="w-full h-11 bg-transparent text-primary-700 font-normal outline outline-0 focus:outline-0 disabled:bg-blue-gray-50 disabled:border-0 disabled:cursor-not-allowed transition-all placeholder-shown:border border focus:border-2 border-t-transparent focus:border-t-transparent text-sm px-3 py-3 rounded-md border-blue-gray-200 focus:border-gray-900 !border-t-blue-gray-200 focus:!border-t-gray-900" />
</div>
<div>
<h6 className="font-semibold text-primary-900 mb-1 flex items-center justify-between">
Cut Pcs <span className="bg-primary-200 font-normal p-1 rounded">(D3)</span>
</h6>
<input onChange={(event) => setCutPcs(event.target.value)} value={CutPcs} placeholder="Cut Pcs" type="number" className="w-full h-11 bg-transparent text-primary-700 font-normal outline outline-0 focus:outline-0 disabled:bg-blue-gray-50 disabled:border-0 disabled:cursor-not-allowed transition-all placeholder-shown:border border focus:border-2 border-t-transparent focus:border-t-transparent text-sm px-3 py-3 rounded-md border-blue-gray-200 focus:border-gray-900 !border-t-blue-gray-200 focus:!border-t-gray-900" />
</div>
<div>
<h6 className="font-semibold text-primary-900 mb-1 flex items-center justify-between">
Shinkage Warp <span className="bg-primary-200 font-normal p-1 rounded">(D4)</span>
</h6>
<input onChange={(event) => setSWarp(event.target.value)} value={sWarp} placeholder="sWarp" type="text" className="w-full h-11 bg-transparent text-primary-700 font-normal outline outline-0 focus:outline-0 disabled:bg-blue-gray-50 disabled:border-0 disabled:cursor-not-allowed transition-all placeholder-shown:border border focus:border-2 border-t-transparent focus:border-t-transparent text-sm px-3 py-3 rounded-md border-blue-gray-200 focus:border-gray-900 !border-t-blue-gray-200 focus:!border-t-gray-900" />
</div>
<div>
<h6 className="font-semibold text-primary-900 mb-1 flex items-center justify-between">
Shinkage Weft <span className="bg-primary-200 font-normal p-1 rounded">(F1)</span>
</h6>
<input onChange={(event) => setSWeft(event.target.value)} value={sWeft} placeholder="sWeft" type="text" className="w-full h-11 bg-transparent text-primary-700 font-normal outline outline-0 focus:outline-0 disabled:bg-blue-gray-50 disabled:border-0 disabled:cursor-not-allowed transition-all placeholder-shown:border border focus:border-2 border-t-transparent focus:border-t-transparent text-sm px-3 py-3 rounded-md border-blue-gray-200 focus:border-gray-900 !border-t-blue-gray-200 focus:!border-t-gray-900" />
</div>
<div>
<h6 className="font-semibold text-primary-900 mb-1 flex items-center justify-between">
GSM <span className="bg-primary-200 font-normal p-1 rounded">(F2)</span>
</h6>
<input onChange={(event) => setGSM(event.target.value)} value={GSM} placeholder="GSM" type="number" className="w-full h-11 bg-transparent text-primary-700 font-normal outline outline-0 focus:outline-0 disabled:bg-blue-gray-50 disabled:border-0 disabled:cursor-not-allowed transition-all placeholder-shown:border border focus:border-2 border-t-transparent focus:border-t-transparent text-sm px-3 py-3 rounded-md border-blue-gray-200 focus:border-gray-900 !border-t-blue-gray-200 focus:!border-t-gray-900" />
</div>
<div>
<h6 className="font-semibold text-primary-900 mb-1 flex items-center justify-between">
SL <span className="bg-primary-200 font-normal p-1 rounded">(F3)</span>
</h6>
<input onChange={(event) => setSL(event.target.value)} value={SL} placeholder="SL" type="text" className="w-full h-11 bg-transparent text-primary-700 font-normal outline outline-0 focus:outline-0 disabled:bg-blue-gray-50 disabled:border-0 disabled:cursor-not-allowed transition-all placeholder-shown:border border focus:border-2 border-t-transparent focus:border-t-transparent text-sm px-3 py-3 rounded-md border-blue-gray-200 focus:border-gray-900 !border-t-blue-gray-200 focus:!border-t-gray-900" />
</div>
<div>
<h6 className="font-semibold text-primary-900 mb-1 flex items-center justify-between">
SG <span className="bg-primary-200 font-normal p-1 rounded">(F4)</span>
</h6>
<input onChange={(event) => setSG(event.target.value)} value={SG} placeholder="SG" type="text" className="w-full h-11 bg-transparent text-primary-700 font-normal outline outline-0 focus:outline-0 disabled:bg-blue-gray-50 disabled:border-0 disabled:cursor-not-allowed transition-all placeholder-shown:border border focus:border-2 border-t-transparent focus:border-t-transparent text-sm px-3 py-3 rounded-md border-blue-gray-200 focus:border-gray-900 !border-t-blue-gray-200 focus:!border-t-gray-900" />
</div>
<div className="col-span-2">
<h6 className="font-semibold text-primary-900 mb-1 flex items-center justify-between">
Bowing <span className="bg-primary-200 font-normal p-1 rounded">(F5)</span>
</h6>
<input onChange={(event) => setBowing(event.target.value)} value={Bowing} placeholder="Bowing" type="text" className="w-full h-11 bg-transparent text-primary-700 font-normal outline outline-0 focus:outline-0 disabled:bg-blue-gray-50 disabled:border-0 disabled:cursor-not-allowed transition-all placeholder-shown:border border focus:border-2 border-t-transparent focus:border-t-transparent text-sm px-3 py-3 rounded-md border-blue-gray-200 focus:border-gray-900 !border-t-blue-gray-200 focus:!border-t-gray-900" />
</div>
</div>
<button id="submitBtn" onClick={handleSubmit} className="align-middle select-none font-sans font-bold text-center uppercase transition-all disabled:opacity-50 disabled:shadow-none disabled:pointer-events-none text-xs py-3 px-6 rounded-lg bg-gradient-to-tr from-primary-950 to-primary-800 text-white shadow-md shadow-gray-900/10 hover:shadow-lg hover:shadow-gray-900/20 focus:opacity-[0.85] focus:shadow-none active:opacity-[0.85] active:shadow-none block w-full mt-6" type="button">
Update
</button>
</div>
</div>
</div>
)}
{currentRoll.name === "" && (
<div className="flex flex-col items-center justify-center gap-5">
<svg xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 647.636 632.174" className="w-[50%] h-[50%] opacity-80">
<path d="M411.146 142.174h-174.51a15.02 15.02 0 0 0-15 15v387.85l-2 .61-42.81 13.11a8.007 8.007 0 0 1-9.99-5.31l-127.34-415.95a8.003 8.003 0 0 1 5.31-9.99l65.97-20.2 191.25-58.54 65.97-20.2a7.99 7.99 0 0 1 9.99 5.3l32.55 106.32Z" fill="#f2f2f2" />
<path d="m449.226 140.174-39.23-128.14a16.994 16.994 0 0 0-21.23-11.28l-92.75 28.39-191.24 58.55-92.75 28.4a17.015 17.015 0 0 0-11.28 21.23l134.08 437.93a17.03 17.03 0 0 0 16.26 12.03 16.8 16.8 0 0 0 4.97-.75l63.58-19.46 2-.62v-2.09l-2 .61-64.17 19.65a15.015 15.015 0 0 1-18.73-9.95L2.666 136.734a14.98 14.98 0 0 1 9.95-18.73l92.75-28.4 191.24-58.54 92.75-28.4a15.2 15.2 0 0 1 4.41-.66 15.015 15.015 0 0 1 14.32 10.61l39.05 127.56.62 2h2.08Z" fill="#3f3d56" />
<path d="M122.68 127.82a9.02 9.02 0 0 1-8.61-6.366l-12.88-42.072a9 9 0 0 1 5.97-11.24L283.1 14.278a9.01 9.01 0 0 1 11.24 5.971l12.88 42.072a9.01 9.01 0 0 1-5.97 11.241l-175.94 53.864a9 9 0 0 1-2.63.395" fill="#285c7c" />
<circle cx={190.154} cy={24.955} r={20} fill="#285c7c" />
<circle cx={190.154} cy={24.955} r={12.665} fill="#fff" />
<path d="M602.636 582.174h-338a8.51 8.51 0 0 1-8.5-8.5v-405a8.51 8.51 0 0 1 8.5-8.5h338a8.51 8.51 0 0 1 8.5 8.5v405a8.51 8.51 0 0 1-8.5 8.5" fill="#e6e6e6" />
<path d="M447.136 140.174h-210.5a17.024 17.024 0 0 0-17 17v407.8l2-.61v-407.19a15.02 15.02 0 0 1 15-15h211.12Zm183.5 0h-394a17.024 17.024 0 0 0-17 17v458a17.024 17.024 0 0 0 17 17h394a17.024 17.024 0 0 0 17-17v-458a17.024 17.024 0 0 0-17-17m15 475a15.02 15.02 0 0 1-15 15h-394a15.02 15.02 0 0 1-15-15v-458a15.02 15.02 0 0 1 15-15h394a15.02 15.02 0 0 1 15 15Z" fill="#3f3d56" />
<path d="M525.636 184.174h-184a9.01 9.01 0 0 1-9-9v-44a9.01 9.01 0 0 1 9-9h184a9.01 9.01 0 0 1 9 9v44a9.01 9.01 0 0 1-9 9" fill="#285c7c" />
<circle cx={433.636} cy={105.174} r={20} fill="#285c7c" />
<circle cx={433.636} cy={105.174} r={12.182} fill="#fff" />
</svg>
<p className="text-3xl text-primary-700">No roll selected, Please select a roll</p>
</div>
)}
</div>
);
}
export default RollDetailPage;