import Head from "next/head"; import styles from "../styles/Home.module.css"; import Nav from "../components/templates/nav"; import UserTop from "../components/templates/userTop"; import { useSession, signIn, signOut } from "next-auth/react"; import { useState, useCallback } from "react"; import { Pane, TextInputField, TextareaField, Button, BuildIcon, toaster, Alert, FileUploader, FilePicker, FileCard, RadioGroup, Autocomplete, } from "evergreen-ui"; import PizZip from "pizzip"; import Docxtemplater from "docxtemplater"; import DatePicker from "react-datepicker"; import { registerLocale, setDefaultLocale } from "react-datepicker"; import "react-datepicker/dist/react-datepicker.css"; import pl from "date-fns/locale/pl"; registerLocale("pl", pl); export default function Rezy() { const { data: session } = useSession(); const [currentStep, setCurrentStep] = useState(1); const [ground, setGround] = useState({ wet_coef: 0, resistivity: 0, resistance: 0, measure_dist: 0, rod_len: 0, rod_num: 0, rod_coef: 0, hor_len: 0, result_v: 0, result_h: 0, result: 0, wszrg_h: 0, wszrg_v: 0, wanted: 0, date: undefined, no: 0, pr_title: "Budowa przyłącza kablowego nN", in_city: undefined, commune: undefined, all_parcels: undefined, target_parcel: undefined, geo_data: undefined, object: "Przyłącz kablowy nN", objValue1: "proj.", objName: undefined, }); // Function to go to the next step const goToNextStep = () => { if (currentStep < 3) { setCurrentStep(currentStep + 1); } }; // Function to go to the previous step const goToPreviousStep = () => { if (currentStep > 1) { setCurrentStep(currentStep - 1); } }; const [date, setDate] = useState(null); const [calDate, setCalDate] = useState(null); const [options] = useState([ { label: "5 Ω", value: "5" }, { label: "10 Ω", value: "10" }, { label: "15 Ω", value: "15" }, { label: "30 Ω", value: "30" }, ]); const [neededValue, setNeededValue] = useState("5"); const [resHValue, setResHValue] = useState("88"); const [resVValue, setResVValue] = useState("89"); const [objOptions1] = useState([ { label: "proj.", value: "proj." }, { label: "istn.", value: "istn." }, ]); const [objValue1, setObjValue1] = useState("proj."); function getRandomInt(min, max) { min = Math.ceil(min); max = Math.floor(max); return Math.floor(Math.random() * (max - min + 1)) + min; } function parseDate(dateString) { console.log(dateString); const parts = dateString.split("."); const day = parseInt(parts[0], 10); const month = parseInt(parts[1], 10) - 1; // Months are 0-indexed in JavaScript Dates const year = parseInt(parts[2], 10); return new Date(year, month, day); } function getGrounding(wanted, wszrg_h, wszrg_v, date) { const dateObject = parseDate(date); const month = dateObject.getMonth() + 1; // JavaScript months are 0-indexed const wet_coef = month >= 6 && month <= 9 ? 1.2 : 1.6; const rod_len = wanted === 30 ? 2 : 3; const resistivity_h = wszrg_h / wet_coef; const measure_dist_h = 1; const resistance_h = resistivity_h / (2 * Math.PI * measure_dist_h); const resistivity_v = wszrg_v / wet_coef; const measure_dist_v = 1 + rod_len; const resistance_v = resistivity_v / (2 * Math.PI * measure_dist_v); const result_v = (wszrg_v / (2 * Math.PI * rod_len)) * (Math.log((8 * rod_len) / 0.016) - 1); let rod_num = 2; //minimum 2 rods let hor_len = 1 + (rod_num - 1) * rod_len * 2; let result_h = (wszrg_h / (2 * Math.PI * hor_len)) * Math.log((hor_len * hor_len) / (1 * 0.0191)); let rod_coef = Math.pow(rod_num, 4) * 0.00002 - Math.pow(rod_num, 3) * 0.0009 + Math.pow(rod_num, 2) * 0.0137 - rod_num * 0.0981 + 1.0468; let result = (result_v * result_h) / (result_v * rod_coef + rod_num * result_h * rod_coef); while (result > wanted) { rod_num += 1; hor_len = 1 + (rod_num - 1) * rod_len * 2; result_h = (wszrg_h / (2 * Math.PI * hor_len)) * Math.log((hor_len * hor_len) / (1 * 0.0191)); rod_coef = Math.pow(rod_num, 4) * 0.00002 - Math.pow(rod_num, 3) * 0.0009 + Math.pow(rod_num, 2) * 0.0137 - rod_num * 0.0981 + 1.0468; result = (result_v * result_h) / (result_v * rod_coef + rod_num * result_h * rod_coef); console.log(result, rod_num); } console.log(result, rod_num); return { wet_coef: wet_coef, resistivity_h: resistivity_h.toFixed(2), resistance_h: resistance_h.toFixed(2), measure_dist_h: measure_dist_h, resistivity_v: resistivity_v.toFixed(2), resistance_v: resistance_v.toFixed(2), measure_dist_v: measure_dist_v, rod_len: rod_len, rod_num: rod_num, rod_coef: rod_coef.toFixed(2), hor_len: hor_len, result_v: result_v.toFixed(2), result_h: result_h.toFixed(2), result: result.toFixed(2), wszrg_h: wszrg_h, wszrg_v: wszrg_v, wanted: neededValue, }; } const generateDocument = async (ground) => { const data = { ...ground, resisted_object: ground.objValue1 + " " + ground.objName, }; try { const response = await fetch("/api/generateDocx", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify(data), }); if (!response.ok) { throw new Error(`Error: ${response.status}`); } // Convert the response to a blob and download it const blob = await response.blob(); const downloadUrl = window.URL.createObjectURL(blob); const link = document.createElement("a"); link.href = downloadUrl; link.download = "opis.docx"; document.body.appendChild(link); link.click(); link.remove(); } catch (error) { console.error("Failed to generate document:", error); } }; const generateDxf = async () => { // Data that you want to send to the backend var dateParts = ground.date.split("."); // Extract day, month, and year var day = parseInt(dateParts[0], 10); var month = parseInt(dateParts[1], 10); var year = parseInt(dateParts[2], 10); // Format the result var formattedDate = month.toString().padStart(2, "0") + "." + year; const inputData = { args: [ ground.objValue1 + ground.objName, ground.pr_title, ground.object, ground.in_city + ", " + ground.commune + ", dz. nr " + ground.all_parcels, formattedDate, ground.hor_len, ground.rod_len, ], }; // object1 = args[0] #ZK2a-1P // object2 = args[1] #Budowa przyłącza // object3 = args[2] #Przyłącze kablowe // adres = args[3] // date = args[4] // len_h = int(args[5]) // len_v = int(args[6]) try { const response = await fetch("/api/generateDxf", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify(inputData), }); if (!response.ok) { throw new Error("Response was not ok."); } // Download the response (the output file) const blob = await response.blob(); const downloadUrl = URL.createObjectURL(blob); const a = document.createElement("a"); a.href = downloadUrl; a.download = "uziom.dxf"; document.body.appendChild(a); a.click(); a.remove(); } catch (error) { console.error("There was an error:", error); } }; if (session) { return (
Wastpol
1. Data wykonania pomiaru

{ console.log(date); console.log(typeof date); const day = date.getDate().toString().padStart(2, "0"); // Add leading zero if necessary const month = (date.getMonth() + 1) .toString() .padStart(2, "0"); // Month is 0-indexed, add 1 to get the correct month const year = date.getFullYear(); const formattedDate = `${day}.${month}.${year}`; console.log(formattedDate); setGround((current) => ({ ...current, date: formattedDate, })); setCalDate(date); }} placeholderText="Wybierz datę" dateFormat="dd.MM.yyyy" />

{ setNeededValue(event.target.value); }} /> { setResHValue(e.target.value); setResVValue((ground.wanted==30)? getRandomInt( parseInt(e.target.value) - 10, parseInt(e.target.value) - 4 ):getRandomInt( parseInt(e.target.value) - 20, parseInt(e.target.value) - 10 ) ); }} value={resHValue} /> setGround((current) => ({ ...current, no: e.target.value })) } value={ground.no} />{" "}
setGround((current) => ({ ...current, pr_title: e.target.value, })) } value={ground.pr_title} /> setGround((current) => ({ ...current, object: e.target.value, })) } value={ground.object} /> setGround((current) => ({ ...current, in_city: e.target.value, })) } value={ground.in_city} /> setGround((current) => ({ ...current, commune: e.target.value, })) } value={ground.commune} /> setGround((current) => ({ ...current, all_parcels: e.target.value, })) } value={ground.all_parcels} /> setGround((current) => ({ ...current, target_parcel: e.target.value, })) } value={ground.target_parcel} /> setGround((current) => ({ ...current, geo_data: e.target.value, })) } value={ground.geo_data} />{" "}
{ setObjValue1(event.target.value); setGround((current) => ({ ...current, objValue1: event.target.value, })); }} /> setGround((current) => ({ ...current, objName: e.target.value, })) } value={ground.objName} />

Uziemienie poziome: {ground.result_h} Ω ({ground.wszrg_h})

Uziemienie pionowe: {ground.result_v} Ω ({ground.wszrg_v})

Uziemienie: {ground.result} Ω

Szpile: {ground.rod_num} szt

Bednarka: {ground.hor_len} m

); } return (
Wastpol

Nie zalogowano



); }