{"version":3,"sources":["../node_modules/@stencil/core/internal/client lazy /^/.*$/ include: /.entry/.js$/ exclude: /.system/.entry/.js$/ groupOptions: {} namespace object","components/Menu.tsx","utils/api.tsx","components/LoginForm.tsx","pages/Login.tsx","components/RegistrerenForm.tsx","pages/Registreren.tsx","components/WWVergetenForm.tsx","pages/WWVergeten.tsx","components/WWResetForm.tsx","pages/WWReset.tsx","components/EmailValidateForm.tsx","pages/EmailValidate.tsx","pages/Logout.tsx","components/Home.tsx","pages/Home.tsx","components/Account.tsx","pages/Account.tsx","utils/fetch.tsx","components/OverzichtScreen.tsx","pages/Overzicht.tsx","assets/images/Coastbusterssites2021.jpg","components/Logboek.tsx","utils/device.tsx","pages/Logboek.tsx","components/VangstToevoegenScreen.tsx","pages/VangstToevoegen.tsx","App.tsx","serviceWorkerRegistration.ts","reportWebVitals.ts","index.tsx"],"names":["webpackEmptyAsyncContext","req","Promise","resolve","then","e","Error","code","keys","module","exports","id","appPages","title","url","iosIcon","homeOutline","mdIcon","homeSharp","readerOutline","readerSharp","personOutline","personSharp","logOutOutline","logOutSharp","Menu","location","useLocation","pathname","toLowerCase","contentId","type","swipeGesture","className","src","alt","map","appPage","index","autoHide","routerLink","routerDirection","lines","detail","slot","ios","md","API_URL","LoginForm","history","useHistory","useState","gebruikersnaam","setGebruikersnaam","wachtwoord","setWachtwoord","error","setError","spinner","setSpinner","gebruiker","username","password","useEffect","a","Storage","get","key","tokenValidTo","value","parseInt","Date","getTime","push","document","getElementById","classList","remove","handleSubmit","requestOptions","method","headers","body","JSON","stringify","fetch","response","ok","text","json","data","set","token","endTime","toString","isAdmin","catch","message","htmlFor","onChange","target","disabled","length","onClick","Login","RegistrerenForm","voornaam","setVoornaam","familienaam","setFamilienaam","emailadres","setEmailadres","cwachtwoord","setCWachtwoord","wantpaperLogbook","setWantpaperLogbook","telefoon","setTelefoon","adress","setAdress","postcode","setPostcode","plaatsnaam","setPlaatsnaam","land","setLand","privacy","setPrivacy","info","setInfo","firstname","lastname","email","confirmpassword","phone","address","postalCode","city","country","style","display","checked","val","min","max","Math","floor","name","href","Registreren","WWVergetenForm","setEmail","isRunning","setIsRunning","WWVergeten","WWResetForm","wachtwoord2","setWachtwoord2","userid","URLSearchParams","window","search","pwresettoken","userId","WWReset","EmailValidateForm","emailtoken","encodeURI","Logout","Plugins","state","fromDashboard","removeLocalstorage","Home","setCode","isNew","setIsNew","date","setDate","checkAuthentication","result","parse","duur","datum","admvalue","OpenLogboek","aas","locaties","array","techniek","visvangst","SluitLogboek","useIonAlert","presentAlert","getDate","getMonth","getFullYear","color","header","cssClass","buttons","handler","fullscreen","AccountComponent","setToken","setPassword","ionAlert","deleteSuccessAlert","setUsername","present","myHeaders","Headers","append","dtoAccount","account","VerwijderAccountVraag","VerwijderAccount","backdropDismiss","toggleIconSlot","placeholder","autocomplete","onIonChange","Account","dataAccess","endpoint","r","console","log","ret","OverzichtScreen","showPopover","event","undefined","popoverState","setShowPopover","overview","setOverview","emptyMessage","setEmptyMessage","selected","setSelected","years","setYears","year","setYear","vissen","setVissen","setIsAdmin","getData","y","getItem","replace","Edit","logboek","filter","x","isOpen","onDidDismiss","dateString","dateArray","split","dateLogboek","dateNow","abs","IsLastTwoWeeks","datumString","compareWith","e1","e2","multiple","vv","vis","measure","houden","kg","bovenmaats","ondermaats","lengtesHouden","join","lengtesTeruggooi","persist","ellipsisVertical","Overzicht","Stap1","PropsForm","user","setUser","setDatum","getTimezoneOffset","setDuur","initialLoad","setInitialLoad","tmpAdm","idval","toUTCString","slice","newDate","totalDuur","getHours","getMinutes","currentStep","readonly","datetime","keepContentsMounted","presentation","locale","firstDayOfWeek","setFullYear","toISOString","minuteValues","hourCycle","hour","minutes","String","padStart","formatDuurString","time","hours","convertToTime","Stap2","setAas","azen","setAzen","Stap3","visTechnieken","setVisTechnieken","vistechniek","setVisTechniek","passieveStrandvisserij","setPassieveStrandvisserij","aantal","setAantal","passieveStrandvisserijTypes","setPassieveStrandvisserijTypes","showAdditionalControls","setShowAdditionalControls","pTypes","Stap4","countries","setCountries","countriesSep","setCountriesSep","setcountry","forEach","showInList","Stap5","locations","setLocations","setLocation","showModal","setShowModal","locatie","includes","indexOf","concat","handleChange","helpCircle","preventDefault","showCoastBustersImg","coastbustersimg","Stap6","vangstToevoegenScreen","setVangstToevoegenScreen","setVis","visFull","setVisFull","countHouden","setCountHouden","countTeruggooi","setCountTeruggooi","dataVisVangst","setDataVisVangst","setKg","cmHouden","setCmHouden","cmTeruggooi","setCmTeruggooi","setHouden","setOndermaats","setBovenmaats","rows","loadInitial","isAdm","element","vangst","find","vangstToevoegen","visId","geregistreerdeVissen","andereVissen","v","newList","Delete","interfaceOptions","translucent","popovers","getElementsByClassName","i","setAttribute","bestaandeVis","step","lang","parseFloat","Number","isNaN","HoudenInputs","isInteger","addToListHouden","RenderHouden","TeruggooiInputs","addToListTeruggooi","RenderTeruggooi","NieuweVisToevoegen","closeScreen","toevoegen","Logboek","PropsProgressbar","setCurrentStep","setId","showButtons","logboekOpen","setLogboekOpen","isReadOnly","setIsReadOnly","Afsluiten","goBack","codeValue","userCode","logboekValue","lb","d","progressbar","changeProgress","stepNr","innerHTML","previous","Next","tmpDate","CheckIfReady","UploadForm","build","completePost","nieuwe","role","hengel","previousButton","nextButton","useParams","setProgressbar","VangstToevoegenScreen","count","setCount","close","splice","closeOutline","addOutline","chevronBackOutline","VangstToevoegen","App","setAuthenticated","setupIonicReact","path","exact","to","isLocalhost","Boolean","hostname","match","registerValidSW","swUrl","config","navigator","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","onUpdate","onSuccess","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","container","createRoot","render","URL","process","origin","addEventListener","contentType","status","ready","unregister","reload","checkValidServiceWorker","serviceWorkerRegistration"],"mappings":"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","file":"static/js/main.a59a654b.chunk.js","sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 62;","import { IonContent, IonIcon, IonItem, IonLabel, IonList, IonListHeader, IonMenu, IonMenuToggle, IonNote } from '@ionic/react';\r\n\r\nimport { useLocation } from 'react-router-dom';\r\nimport { homeOutline, homeSharp, logOutOutline, logOutSharp, personOutline, personSharp, readerOutline, readerSharp } from 'ionicons/icons';\r\n\r\ninterface AppPage {\r\n url: string;\r\n iosIcon: string;\r\n mdIcon: string;\r\n title: string;\r\n}\r\n\r\nconst appPages: AppPage[] = [\r\n {\r\n title: 'Home',\r\n url: '/Home',\r\n iosIcon: homeOutline,\r\n mdIcon: homeSharp,\r\n },\r\n {\r\n title: 'Logboeken',\r\n url: '/Overzicht',\r\n iosIcon: readerOutline,\r\n mdIcon: readerSharp,\r\n },\r\n {\r\n title: 'Profiel',\r\n url: '/Account',\r\n iosIcon: personOutline,\r\n mdIcon: personSharp,\r\n },\r\n {\r\n title: 'Afmelden',\r\n url: '/Logout',\r\n iosIcon: logOutOutline,\r\n mdIcon: logOutSharp,\r\n },\r\n];\r\n\r\nconst Menu: React.FC = () => {\r\n const location = useLocation();\r\n //console.log(location.pathname);\r\n if (location.pathname == '/' \r\n || location.pathname.toLowerCase() == '/login' \r\n || location.pathname.toLowerCase() == '/logout' \r\n || location.pathname.toLowerCase() == '/registreren' \r\n || location.pathname.toLowerCase() == '/wachtwoordvergeten' \r\n || location.pathname.toLowerCase() == '/wachtwoordreset'\r\n || location.pathname.toLowerCase() == '/valideer-email' \r\n ) {\r\n return <>;\r\n } else {\r\n return (\r\n \r\n \r\n \"logo\r\n\r\n \r\n {/* MENU */}\r\n {appPages.map((appPage, index) => {\r\n return (\r\n \r\n \r\n \r\n {appPage.title}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n};\r\n\r\nexport default Menu;\r\n","export const API_URL: string = 'https://api.recreatievezeevisserij.be/Recvis';\r\n//export const API_URL: string = 'https://dev-api.recreatievezeevisserij.be/Recvis';\r\n//export const API_URL: string = 'https://localhost:44341/recvis';\r\n\r\n// export const get = (endpoint: string) => {\r\n// return fetch(`${BACKEND_URL}/${endpoint}`)\r\n// .then((r) => r.json())\r\n// .catch((err) => console.error(err));\r\n// };\r\nexport default API_URL;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { Storage } from '@capacitor/storage';\r\nimport { IonSpinner, IonContent, IonButton, IonItem, IonLabel, IonRouterLink } from '@ionic/react';\r\nimport API_URL from '../utils/api';\r\n\r\nconst LoginForm: React.FC = () => {\r\n const history = useHistory();\r\n const [gebruikersnaam, setGebruikersnaam] = useState('');\r\n const [wachtwoord, setWachtwoord] = useState('');\r\n const [error, setError] = useState('');\r\n const [spinner, setSpinner] = useState('c-spinner-hide');\r\n const gebruiker = {\r\n username: gebruikersnaam,\r\n password: wachtwoord,\r\n };\r\n\r\n useEffect(() => {\r\n (async function () {\r\n const code = await Storage.get({ key: `code` });\r\n const tokenValidTo = await Storage.get({ key: `token_valid_to` });\r\n if (code.value && tokenValidTo.value) {\r\n // @ts-ignore\r\n if(parseInt(tokenValidTo.value) > new Date().getTime()){\r\n history.push('/Home');\r\n }\r\n }\r\n // hackjob\r\n document.getElementById('main').classList.remove(\"menu-content-open\");\r\n })();\r\n }, []);\r\n\r\n const validateForm = () => {\r\n return gebruikersnaam.length > 0 && wachtwoord.length > 0;\r\n };\r\n\r\n const handleSubmit = async () => {\r\n setSpinner('c-spinner');\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(gebruiker),\r\n };\r\n await fetch(`${API_URL}/login`, requestOptions)\r\n .then(async (response) => {\r\n if(!response.ok){\r\n throw await response.text();\r\n }\r\n const data = await response.json();\r\n\r\n await Storage.set({\r\n key: 'token',\r\n value: data.token,\r\n });\r\n await Storage.set({\r\n key: 'token_valid_to',\r\n value: data.endTime.toString(),\r\n });\r\n await Storage.set({\r\n key: 'admin',\r\n value: data.isAdmin.toString(),\r\n });\r\n await Storage.set({\r\n key: 'code',\r\n value: data.code,\r\n });\r\n setSpinner('c-spinner-hide');\r\n history.push('/Home');\r\n })\r\n .catch((error) => {\r\n setSpinner('c-spinner-hide');\r\n if(error.message){\r\n setError(error.message);\r\n }\r\n else{\r\n setError(error);\r\n }\r\n });\r\n };\r\n\r\n return (\r\n
\r\n \"logo\r\n
\r\n

{error}

\r\n
\r\n \r\n setGebruikersnaam(e.target.value)} />\r\n
\r\n
\r\n \r\n setWachtwoord(e.target.value)} />\r\n\r\n
\r\n
\r\n {/* */}\r\n handleSubmit()}>Log in\r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n \r\n

Nog geen account? Registreer je nu!\r\n

\r\n

Wachtwoord vergeten?

\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default LoginForm;\r\n","import { IonButtons, IonContent, IonHeader, IonMenuButton, IonPage, IonTitle, IonToolbar } from '@ionic/react';\r\nimport { useParams } from 'react-router';\r\nimport LoginForm from '../components/LoginForm';\r\n\r\nconst Login: React.FC = () => {\r\n return ;\r\n};\r\n\r\nexport default Login;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { Storage } from '@capacitor/storage';\r\nimport API_URL from '../utils/api';\r\nimport { IonButton, IonRouterLink } from '@ionic/react';\r\n\r\nconst RegistrerenForm: React.FC = () => {\r\n const history = useHistory();\r\n const [voornaam, setVoornaam] = useState('');\r\n const [familienaam, setFamilienaam] = useState('');\r\n const [emailadres, setEmailadres] = useState('');\r\n const [wachtwoord, setWachtwoord] = useState('');\r\n const [cwachtwoord, setCWachtwoord] = useState('');\r\n const [wantpaperLogbook, setWantpaperLogbook] = useState(false);\r\n const [telefoon, setTelefoon] = useState();\r\n const [adress, setAdress] = useState('');\r\n const [postcode, setPostcode] = useState();\r\n const [plaatsnaam, setPlaatsnaam] = useState('');\r\n const [land, setLand] = useState('België');\r\n const [privacy, setPrivacy] = useState(false);\r\n const [info, setInfo] = useState('');\r\n const [error, setError] = useState('');\r\n const [spinner, setSpinner] = useState('c-spinner-hide');\r\n\r\n const gebruiker = {\r\n firstname: voornaam,\r\n lastname: familienaam,\r\n email: emailadres,\r\n password: wachtwoord,\r\n confirmpassword: cwachtwoord,\r\n wantpaperLogbook: wantpaperLogbook,\r\n phone: telefoon,\r\n address: adress,\r\n postalCode: postcode,\r\n city: plaatsnaam,\r\n country: land,\r\n };\r\n\r\n const handleSubmit = async () => {\r\n\r\n if (wachtwoord != cwachtwoord) {\r\n setError(\"Beide wachtwoorden moeten overeenkomen\");\r\n return;\r\n }\r\n\r\n setSpinner('c-spinner');\r\n if(!privacy){\r\n setError(\"U moet de privacyvoorwaarden aanvaarden om te kunnen registreren!\");\r\n return;\r\n }\r\n\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(gebruiker),\r\n };\r\n await fetch(`${API_URL}/register`, requestOptions)\r\n .then(async (response) => {\r\n if(!response.ok){\r\n throw await response.text();\r\n }\r\n setError('');\r\n setInfo(await response.text());\r\n document.getElementById('register-form-content').style.display ='none';\r\n document.getElementById('register-input-success').style.display ='flex';\r\n setSpinner('c-spinner-hide');\r\n //history.push('/Login');\r\n })\r\n .catch((error) => {\r\n if(error.message){\r\n setError(error.message);\r\n }\r\n else{\r\n setError(error);\r\n }\r\n setSpinner('c-spinner-hide');\r\n });\r\n };\r\n\r\n const validatePostcode = (val: number, max: number) => {\r\n if(val < 0) val = 0;\r\n if(val > max) val = Math.floor(val/10);\r\n setPostcode(val);\r\n };\r\n\r\n const validateTelefoon = (val: number, max: number) => {\r\n if(val < 0) val = 0;\r\n if(val > max) val = Math.floor(val/10);\r\n setTelefoon(val);\r\n };\r\n\r\n const setWant = (val: boolean) => {\r\n setWantpaperLogbook(val);\r\n if(val){\r\n document.getElementById('paper-want').style.display ='block';\r\n }\r\n else{\r\n document.getElementById('paper-want').style.display ='none';\r\n }\r\n };\r\n\r\n return (\r\n
\r\n \"logo\r\n
\r\n

{error}

\r\n
\r\n

{info}

\r\n
\r\n
\r\n
\r\n \r\n setVoornaam(e.target.value)} />\r\n
\r\n
\r\n \r\n setFamilienaam(e.target.value)} />\r\n
\r\n
\r\n \r\n setEmailadres(e.target.value)} />\r\n
\r\n
\r\n \r\n setWachtwoord(e.target.value)} />\r\n
\r\n
\r\n \r\n setCWachtwoord(e.target.value)} />\r\n
\r\n
\r\n setWant(e.target.checked)} />\r\n \r\n
\r\n
\r\n
\r\n \r\n validateTelefoon(parseInt(e.target.value),9999999999)} />\r\n
\r\n
\r\n \r\n setAdress(e.target.value)} />\r\n
\r\n
\r\n \r\n validatePostcode(parseInt(e.target.value),9999)} />\r\n
\r\n
\r\n \r\n setPlaatsnaam(e.target.value)} />\r\n
\r\n
\r\n \r\n setLand(e.target.value)} />\r\n
\r\n\r\n
\r\n
\r\n setPrivacy(e.target.checked)} />\r\n \r\n
\r\n \r\n
\r\n handleSubmit()}>Registreren\r\n
\r\n {/* */}\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n

Al een account? Log je in!

\r\n\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default RegistrerenForm;\r\n","import { IonButtons, IonContent, IonHeader, IonMenuButton, IonPage, IonTitle, IonToolbar } from '@ionic/react';\r\nimport { useParams } from 'react-router';\r\nimport RegistrerenForm from '../components/RegistrerenForm';\r\n\r\nconst Registreren: React.FC = () => {\r\n return ;\r\n};\r\n\r\nexport default Registreren;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { Storage } from '@capacitor/storage';\r\nimport API_URL from '../utils/api';\r\nimport { IonButton, IonRouterLink, IonSpinner } from '@ionic/react';\r\n\r\nconst WWVergetenForm: React.FC = () => {\r\n const history = useHistory();\r\n const [email, setEmail] = useState('');\r\n const [info, setInfo] = useState('');\r\n const [isRunning, setIsRunning] = useState(false);\r\n const [error, setError] = useState('');\r\n const [spinner, setSpinner] = useState('c-spinner-hide');\r\n const handleSubmit = async () => {\r\n if(!isRunning){\r\n setSpinner('c-spinner');\r\n setIsRunning(true);\r\n \r\n await fetch(`${API_URL}/forgotpassword?email=${email}`)\r\n .then(async (response) => {\r\n if(!response.ok){\r\n throw await response.text();\r\n }\r\n setInfo(await response.text());\r\n setSpinner('c-spinner-hide');\r\n document.getElementById('forgot-input-success').style.display ='flex';\r\n document.getElementById('forgot-input-complete').style.display ='none';\r\n setIsRunning(false);\r\n })\r\n .catch((error) => {\r\n setSpinner('c-spinner-hide');\r\n if(error.message){\r\n setError(error.message);\r\n }\r\n else{\r\n setError(error);\r\n }\r\n setIsRunning(false);\r\n });\r\n }\r\n \r\n };\r\n return (\r\n
\r\n \"logo\r\n
\r\n

{error}

\r\n
\r\n

{info}

\r\n
\r\n
\r\n
\r\n \r\n setEmail(e.target.value)} />\r\n
\r\n
\r\n handleSubmit()}>E-mail verzenden\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n

Terug naar Login

\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default WWVergetenForm;\r\n","import { IonButtons, IonContent, IonHeader, IonMenuButton, IonPage, IonTitle, IonToolbar } from '@ionic/react';\r\nimport { useParams } from 'react-router';\r\nimport WWVergetenForm from '../components/WWVergetenForm';\r\n\r\nconst WWVergeten: React.FC = () => {\r\n return ;\r\n};\r\n\r\nexport default WWVergeten;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { useHistory, useParams } from 'react-router-dom';\r\nimport { Storage } from '@capacitor/storage';\r\nimport API_URL from '../utils/api';\r\nimport { IonButton, IonRouterLink, IonSpinner } from '@ionic/react';\r\nimport { url } from 'inspector';\r\n\r\n\r\nconst WWResetForm: React.FC = () => {\r\n const history = useHistory();\r\n const [wachtwoord, setWachtwoord] = useState('');\r\n const [wachtwoord2, setWachtwoord2] = useState('');\r\n const [error, setError] = useState('');\r\n const [info, setInfo] = useState('');\r\n const [spinner, setSpinner] = useState('c-spinner-hide');\r\n const userid = new URLSearchParams(window.location.search).get(\"userid\")\r\n const pwresettoken = new URLSearchParams(window.location.search).get(\"pwresettoken\")\r\n const gebruiker = {\r\n userId: parseInt(userid),\r\n pwresettoken: pwresettoken,\r\n password: wachtwoord,\r\n };\r\n const handleSubmit = async () => {\r\n if (wachtwoord != wachtwoord2) {\r\n setError(\"Beide wachtwoorden moeten overeenkomen\");\r\n return;\r\n }\r\n\r\n setSpinner('c-spinner');\r\n \r\n const requestOptions = {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(gebruiker),\r\n };\r\n await fetch(`${API_URL}/resetpassword`, requestOptions)\r\n .then(async (response) => {\r\n if(!response.ok){\r\n throw await response.text();\r\n }\r\n \r\n setInfo(await response.text());\r\n setSpinner('c-spinner-hide');\r\n document.getElementById('reset-input-success').style.display ='flex';\r\n document.getElementById('forgot-input-complete').style.display ='none';\r\n //history.push('/Login');\r\n })\r\n .catch((error) => {\r\n if(error.message){\r\n setError(error.message);\r\n }\r\n else{\r\n setError(error);\r\n }\r\n \r\n setSpinner('c-spinner-hide');\r\n });\r\n };\r\n return (\r\n
\r\n \"logo\r\n
\r\n

{error}

\r\n
\r\n

{info}

\r\n
\r\n \r\n

Terug naar Login

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n setWachtwoord(e.target.value)} />\r\n
\r\n
\r\n \r\n setWachtwoord2(e.target.value)} />\r\n
\r\n
\r\n handleSubmit()}>Wachtwoord instellen\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default WWResetForm;\r\n","import { IonButtons, IonContent, IonHeader, IonMenuButton, IonPage, IonTitle, IonToolbar } from '@ionic/react';\r\nimport { useParams } from 'react-router';\r\nimport WWResetForm from '../components/WWResetForm';\r\n\r\nconst WWReset: React.FC = () => {\r\n return ;\r\n};\r\n\r\nexport default WWReset;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { useHistory, useParams } from 'react-router-dom';\r\nimport { Storage } from '@capacitor/storage';\r\nimport API_URL from '../utils/api';\r\nimport { IonButton, IonRouterLink, IonSpinner } from '@ionic/react';\r\nimport { url } from 'inspector';\r\n\r\n\r\nconst EmailValidateForm: React.FC = () => {\r\n const history = useHistory();\r\n const [error, setError] = useState('');\r\n const [info, setInfo] = useState('');\r\n const [spinner, setSpinner] = useState('c-spinner');\r\n const userid = new URLSearchParams(window.location.search).get(\"userid\")\r\n const emailtoken = new URLSearchParams(window.location.search).get(\"emailtoken\")\r\n\r\n useEffect(() => {\r\n setSpinner('c-spinner');\r\n \r\n const requestOptions = {\r\n method: 'GET',\r\n };\r\n var url = encodeURI(`${API_URL}/validate?userid=${userid}&token=${emailtoken}`);\r\n fetch(url, requestOptions)\r\n .then(async (response) => {\r\n if(!response.ok){\r\n throw await response.text();\r\n }\r\n \r\n setInfo(await response.text());\r\n setSpinner('c-spinner-hide');\r\n document.getElementById('validate-input-success').style.display ='flex';\r\n //history.push('/Login');\r\n })\r\n .catch((error) => {\r\n if(error.message){\r\n setError(error.message);\r\n }\r\n else{\r\n setError(error);\r\n }\r\n \r\n setSpinner('c-spinner-hide');\r\n });\r\n }, []);\r\n\r\n\r\n return (\r\n
\r\n \"logo\r\n
\r\n

{error}

\r\n
\r\n

{info}

\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default EmailValidateForm;\r\n","import { IonButtons, IonContent, IonHeader, IonMenuButton, IonPage, IonTitle, IonToolbar } from '@ionic/react';\r\nimport { useParams } from 'react-router';\r\nimport EmailValidateForm from '../components/EmailValidateForm';\r\n\r\nconst WWReset: React.FC = () => {\r\n return ;\r\n};\r\n\r\nexport default WWReset;\r\n","import { IonButtons, IonContent, IonHeader, IonMenuButton, IonPage, IonTitle, IonToolbar } from '@ionic/react';\r\nimport { useParams } from 'react-router';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { Redirect } from 'react-router-dom';\r\nimport { Plugins } from '@capacitor/core';\r\nimport React, { useState, useEffect } from 'react';\r\nconst Logout: React.FC = () => {\r\n const history = useHistory();\r\n const { Storage } = Plugins;\r\n\r\n useEffect(() => {\r\n const location = {\r\n pathname: '/login',\r\n state: { fromDashboard: true },\r\n };\r\n const removeLocalstorage = async () => {\r\n await Storage.remove({ key: 'token' });\r\n await Storage.remove({ key: 'admin' });\r\n await Storage.remove({ key: 'code' });\r\n await Storage.remove({ key: 'token_valid_to' });\r\n };\r\n removeLocalstorage().then(response => {\r\n history.push(location);\r\n });\r\n \r\n }, []);\r\n return <>;\r\n};\r\n\r\nexport default Logout;\r\n","import { useHistory } from 'react-router-dom';\r\nimport { Storage } from '@capacitor/storage';\r\nimport { IonPopover, IonButton, IonAlert, useIonAlert } from '@ionic/react';\r\nimport React, { useState, useEffect } from 'react';\r\nimport API_URL from '../utils/api';\r\n\r\ninterface data {\r\n date: string;\r\n time: string;\r\n location: string;\r\n}\r\n\r\nconst Home: React.FC = () => {\r\n //const [popoverState, setShowPopover] = useState({ showPopover: false, event: undefined });\r\n const [code, setCode] = useState('');\r\n const [isNew, setIsNew] = useState(true);\r\n const [date, setDate] = useState(new Date());\r\n const [overview, setOverview] = useState([]);\r\n const history = useHistory();\r\n\r\n\r\n useEffect(() => {\r\n (async function () {\r\n checkAuthentication();\r\n Storage.get({ key: `code` }).then((value: any) => {\r\n if(value){\r\n Storage.get({ key: `${value.value}_` })\r\n .then((result: any) => {\r\n let data = JSON.parse(result.value);\r\n if (!data || !data.duur || data.duur === 0) { // als de gebruiker al een duur heeft ingevuld (1ste stap)\r\n setIsNew(true);\r\n setDate(null);\r\n } else {\r\n setIsNew(false);\r\n setDate(data.datum);\r\n }\r\n\r\n Storage.get({ key: `admin` }).then((admvalue: any) => {\r\n let tmpAdm = JSON.parse(admvalue.value);\r\n if(!tmpAdm){\r\n setCode(value.value);\r\n }\r\n });\r\n });\r\n\r\n \r\n }})\r\n\r\n })();\r\n }, []);\r\n\r\n\r\n const checkAuthentication = async () => {\r\n const tokenValidTo = await Storage.get({ key: `token_valid_to` });\r\n if (tokenValidTo.value && parseInt(tokenValidTo.value) > new Date().getTime()) {\r\n //ok\r\n }\r\n else{\r\n const location = {\r\n pathname: '/login',\r\n state: { fromDashboard: true },\r\n };\r\n const removeLocalstorage = async () => {\r\n await Storage.remove({ key: 'token' });\r\n await Storage.remove({ key: 'admin' });\r\n await Storage.remove({ key: 'code' });\r\n await Storage.remove({ key: 'token_valid_to' });\r\n };\r\n removeLocalstorage().then(response => {\r\n history.push(location);\r\n });\r\n }\r\n };\r\n\r\n const OpenLogboek = async () => {\r\n await Storage.set({\r\n key: `id`,\r\n value: '',\r\n });\r\n\r\n if(!isNew){\r\n history.push('/Logboek');\r\n\r\n }\r\n else{\r\n await Storage.remove({ key: code + \"_\" });\r\n let locaties: { array: any[] } = { array: [] }\r\n let vv: { array: any[] } = { array: [] }\r\n const data = { code: code, datum: '', duur: 0, aas: '', land: '72dad0d1-a614-4351-b90e-966c83c264ab', locaties: locaties, techniek: '', visvangst: vv };\r\n await Storage.set({\r\n key: `${code}_`,\r\n value: JSON.stringify(data),\r\n });\r\n \r\n history.push('/Logboek');\r\n }\r\n\r\n };\r\n\r\n const SluitLogboek = async () => {\r\n\r\n Storage.get({ key: `code` }).then(async (value: any) => {\r\n if(value){\r\n await Storage.set({\r\n key: `${value.value}_`,\r\n value: JSON.stringify({ land: '72dad0d1-a614-4351-b90e-966c83c264ab'}),\r\n });\r\n \r\n setIsNew(true);\r\n }\r\n }); \r\n };\r\n\r\n const [presentAlert] = useIonAlert();\r\n return (\r\n
\r\n
\r\n
\r\n{/*

Doorsturen vangsten

*/}\r\n\r\n {isNew ?
Welkom

Registreer nu uw vangst van de voorbije trip.\r\nVroegere vangsten kan u steeds nakijken via het\r\nmenu-item logboeken.

:\r\n
Openstaand logboek

We stellen vast dat er nog een niet verstuurd\r\n logboek met visactiviteit op {new Date(date).getDate()}-{new Date(date).getMonth()+1}-{new Date(date).getFullYear()} aanwezig is. Gelieve dit logboek eerst af te werken en te versturen of te verwijderen.

\r\n }\r\n {/* */}\r\n
\r\n \r\n {\r\n !isNew ?
\r\n OpenLogboek()}>Bewerk logboek\r\n \r\n presentAlert({\r\n header: 'Bent u zeker dat u het openstaande logboek wilt verwijderen?',\r\n cssClass: 'custom-alert',\r\n buttons: [\r\n {\r\n text: 'Nee',\r\n cssClass: 'alert-button-cancel',\r\n },\r\n {\r\n text: 'Ja',\r\n cssClass: 'alert-button-confirm',\r\n handler: () => {\r\n SluitLogboek();\r\n },\r\n },\r\n ],\r\n })\r\n }>{ Verwijder}\r\n
:
\r\n OpenLogboek()}>Registreer vangst\r\n
\r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Home;\r\n","import { IonButtons, IonContent, IonHeader, IonMenuButton, IonPage, IonTitle, IonToolbar } from '@ionic/react';\r\nimport { useParams } from 'react-router';\r\nimport HomeScreen from '../components/Home';\r\n\r\nconst Home: React.FC = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n Home\r\n \"logo\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Home;\r\n","import { useHistory } from 'react-router-dom';\r\nimport { Storage } from '@capacitor/storage';\r\n\r\nimport { IonPopover, IonButton, IonAlert, useIonAlert, IonText, IonInput, IonLabel, IonItem, IonAccordionGroup, IonAccordion, IonSpinner } from '@ionic/react';\r\nimport React, { useState, useEffect, useRef } from 'react';\r\nimport API_URL from '../utils/api';\r\n\r\ninterface data {\r\n date: string;\r\n time: string;\r\n location: string;\r\n}\r\n\r\nconst AccountComponent: React.FC = () => {\r\n //const [popoverState, setShowPopover] = useState({ showPopover: false, event: undefined });\r\n const [token, setToken] = useState('');\r\n const [password, setPassword] = useState('');\r\n const history = useHistory();\r\n const [ionAlert] = useIonAlert();\r\n var [deleteSuccessAlert] = useIonAlert();\r\n const [voornaam, setVoornaam] = useState('');\r\n const [familienaam, setFamilienaam] = useState('');\r\n const [username, setUsername] = useState('');\r\n const [emailadres, setEmailadres] = useState('');\r\n const [wachtwoord, setWachtwoord] = useState('');\r\n const [cwachtwoord, setCWachtwoord] = useState('');\r\n const [telefoon, setTelefoon] = useState(0);\r\n const [adress, setAdress] = useState('');\r\n const [postcode, setPostcode] = useState(0);\r\n const [plaatsnaam, setPlaatsnaam] = useState('');\r\n const [land, setLand] = useState('');\r\n const [info, setInfo] = useState('');\r\n const [error, setError] = useState('');\r\n const [spinner, setSpinner] = useState('c-spinner-hide');\r\n const [present] = useIonAlert();\r\n\r\n\r\n\r\n\r\n\r\n useEffect(() => {\r\n checkAuthentication();\r\n\r\n\r\n }, []);\r\n\r\n\r\n\r\n const checkAuthentication = async () => {\r\n const tokenValidTo = await Storage.get({ key: `token_valid_to` });\r\n if (tokenValidTo.value && parseInt(tokenValidTo.value) > new Date().getTime()) {\r\n const { value } = await Storage.get({ key: 'token' });\r\n var myHeaders = new Headers();\r\n myHeaders.append('Authorization', 'Bearer ' + value);\r\n //myHeaders.append('Content-Type', 'application/json');\r\n const requestOptions = {\r\n method: 'GET',\r\n headers: myHeaders,\r\n };\r\n setSpinner('c-spinner');\r\n\r\n await fetch(`${API_URL}/account`, requestOptions)\r\n .then(async (response) => {\r\n if (!response.ok) {\r\n throw await response.text();\r\n }\r\n setError('');\r\n //setInfo(await response.text());\r\n setSpinner('c-spinner-hide');\r\n response.text().then(dtoAccount => {\r\n var account = JSON.parse(dtoAccount);\r\n if(account.firstname) setVoornaam(account.firstname);\r\n if(account.lastname) setFamilienaam(account.lastname);\r\n if(account.username) setUsername(account.username);\r\n if(account.email) setEmailadres(account.email);\r\n if(account.phone) {\r\n setTelefoon(account.phone);\r\n }\r\n \r\n if(account.address) setAdress(account.address);\r\n if(account.postalCode) {\r\n setPostcode(account.postalCode);\r\n }\r\n \r\n // if(account.city) setPlaatsnaam(account.city);\r\n // if(account.country) setLand(account.country);\r\n\r\n })\r\n })\r\n .catch((error) => {\r\n if (error.message) {\r\n setError(error.message);\r\n }\r\n else {\r\n setError(error);\r\n }\r\n setSpinner('c-spinner-hide');\r\n });\r\n }\r\n else {\r\n const location = {\r\n pathname: '/login',\r\n state: { fromDashboard: true },\r\n };\r\n const removeLocalstorage = async () => {\r\n await Storage.remove({ key: 'token' });\r\n await Storage.remove({ key: 'admin' });\r\n await Storage.remove({ key: 'code' });\r\n await Storage.remove({ key: 'token_valid_to' });\r\n };\r\n removeLocalstorage().then(response => {\r\n history.push(location);\r\n });\r\n }\r\n };\r\n\r\n const VerwijderAccountVraag = async () => {\r\n\r\n const { value } = await Storage.get({ key: 'token' });\r\n // @ts-ignore\r\n setToken(value);\r\n\r\n var myHeaders = new Headers();\r\n myHeaders.append('Authorization', 'Bearer ' + value);\r\n\r\n var requestOptions = {\r\n method: 'DELETE',\r\n headers: myHeaders,\r\n };\r\n\r\n\r\n fetch(`${API_URL}/account?password=${password}`, requestOptions)\r\n .then((response) => {\r\n\r\n if (response.ok) {\r\n response.text()\r\n .then((result) => {\r\n VerwijderAccount(result);\r\n\r\n });\r\n\r\n }\r\n else {\r\n response.text()\r\n .then((result) => {\r\n ionAlert({\r\n cssClass: 'alert-css',\r\n header: 'Fout',\r\n message: result,\r\n buttons: [\r\n 'ok'\r\n ]\r\n });\r\n\r\n })\r\n }\r\n }\r\n )\r\n };\r\n\r\n const VerwijderAccount = (message: String) => {\r\n\r\n\r\n\r\n deleteSuccessAlert({\r\n cssClass: 'alert-css',\r\n header: 'Verwijderen gelukt',\r\n message: message.toString(),\r\n buttons: [\r\n 'ok'\r\n ]\r\n });\r\n\r\n\r\n const location = {\r\n pathname: '/login',\r\n state: { fromDashboard: true },\r\n };\r\n const removeLocalstorage = async () => {\r\n await Storage.remove({ key: 'token' });\r\n await Storage.remove({ key: 'admin' });\r\n await Storage.remove({ key: 'code' });\r\n await Storage.remove({ key: 'token_valid_to' });\r\n };\r\n removeLocalstorage().then(response => {\r\n history.push(location);\r\n });\r\n\r\n }\r\n\r\n const handleSubmit = async () => {\r\n\r\n if (wachtwoord != cwachtwoord) {\r\n setError(\"Beide wachtwoorden moeten overeenkomen\");\r\n return;\r\n }\r\n\r\n setSpinner('c-spinner');\r\n \r\n const { value } = await Storage.get({ key: 'token' });\r\n const requestOptions = {\r\n method: 'PUT',\r\n headers: { 'Content-Type': 'application/json',\r\n 'Authorization': 'Bearer ' + value\r\n \r\n },\r\n body: JSON.stringify({\r\n firstname: voornaam,\r\n lastname: familienaam,\r\n username: username,\r\n email: emailadres,\r\n password: wachtwoord,\r\n confirmpassword: cwachtwoord,\r\n phone: telefoon,\r\n address: adress,\r\n postalCode: postcode,\r\n city: plaatsnaam,\r\n country: land,\r\n }),\r\n };\r\n await fetch(`${API_URL}/account`, requestOptions)\r\n .then(async (response) => {\r\n if (!response.ok) {\r\n throw await response.text();\r\n }\r\n setError('');\r\n // setInfo(await response.text());\r\n // document.getElementById('register-form-content').style.display = 'none';\r\n // document.getElementById('register-input-success').style.display = 'flex';\r\n setSpinner('c-spinner-hide');\r\n present({\r\n cssClass: 'alert-css',\r\n header: 'Profiel update',\r\n message: 'We hebben uw profielgegevens met succes bijgewerkt',\r\n backdropDismiss: false,\r\n buttons: [\r\n 'ok'\r\n ]\r\n \r\n });\r\n //history.push('/Login');\r\n })\r\n .catch((error) => {\r\n if (error.message) {\r\n setError(error.message);\r\n }\r\n else {\r\n setError(error);\r\n }\r\n setSpinner('c-spinner-hide');\r\n });\r\n };\r\n\r\n const validatePostcode = (val: number, max: number) => {\r\n if (val < 0) val = 0;\r\n if (val > max) val = Math.floor(val / 10);\r\n setPostcode(val);\r\n };\r\n\r\n const validateTelefoon = (val: number, max: number) => {\r\n if (val < 0) val = 0;\r\n if (val > max) val = Math.floor(val / 10);\r\n setTelefoon(val);\r\n };\r\n\r\n\r\n\r\n return (\r\n
\r\n {/* */}\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n
\r\n Bewerk profiel\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n

{error}

\r\n
\r\n

{info}

\r\n
\r\n
\r\n
\r\n \r\n setVoornaam(e.target.value)} />\r\n
\r\n
\r\n \r\n setFamilienaam(e.target.value)} />\r\n
\r\n
\r\n \r\n setEmailadres(e.target.value)} />\r\n
\r\n
\r\n \r\n setUsername(e.target.value)} />\r\n
\r\n
\r\n \r\n setWachtwoord(e.target.value)} />\r\n
\r\n
\r\n \r\n setCWachtwoord(e.target.value)} />\r\n
\r\n\r\n
\r\n \r\n validateTelefoon(parseInt(e.target.value), 9999999999)} />\r\n
\r\n
\r\n \r\n setAdress(e.target.value)} />\r\n
\r\n
\r\n \r\n validatePostcode(parseInt(e.target.value), 9999)} />\r\n
\r\n
\r\n \r\n setPlaatsnaam(e.target.value)} />\r\n
\r\n
\r\n \r\n setLand(e.target.value)} />\r\n
\r\n
\r\n handleSubmit()}>Opslaan\r\n
\r\n {/* */}\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n\r\n
\r\n Verwijder profiel\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n

\r\n Verwijderen houdt in dat al uw persoonsgegevens in ons systeem verwijderd worden. Alle gegevens over visactiviteiten zullen nog steeds worden bewaard maar zullen geen link meer bevatten met u als persoon. Uw profiel zal na deze actie niet meer gebruikt kunnen worden.\r\n

\r\n

\r\n Om uw profiel te verwijderen vragen we uw om te bevestigen met uw wachtwoord.\r\n

\r\n \r\n setPassword(e.detail.value)}>\r\n \r\n\r\n \r\n ionAlert({\r\n header: 'Bent u zeker dat u uw profiel wilt verwijderen?',\r\n cssClass: 'custom-alert',\r\n buttons: [\r\n {\r\n text: 'Nee',\r\n cssClass: 'alert-button-cancel',\r\n },\r\n {\r\n text: 'Ja',\r\n cssClass: 'alert-button-confirm',\r\n handler: () => {\r\n VerwijderAccountVraag();\r\n },\r\n },\r\n ],\r\n })\r\n }>{Verwijder Profiel}\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default AccountComponent;\r\n","import { IonButtons, IonContent, IonHeader, IonMenuButton, IonPage, IonTitle, IonToolbar } from '@ionic/react';\r\nimport { useParams } from 'react-router';\r\nimport AccountComponent from '../components/Account';\r\n\r\nconst Account: React.FC = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n Profiel\r\n \"logo\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Account;\r\n","import API_URL from './api';\r\nimport { Plugins } from '@capacitor/core';\r\nconst { Storage } = Plugins;\r\n\r\nconst dataAccess = (function () {\r\n const get = (endpoint: string) => {\r\n return fetch(`${API_URL}/${endpoint}`)\r\n .then((r) => r.json())\r\n .then(async (data) => {\r\n await Storage.set({\r\n key: `${endpoint}`,\r\n value: JSON.stringify(data),\r\n });\r\n return data;\r\n })\r\n .then((data) => data)\r\n .catch(async (error) => {\r\n console.log(error);\r\n const ret = await Storage.get({ key: `${endpoint}` });\r\n\r\n // @ts-ignore\r\n const data = JSON.parse(ret.value);\r\n console.log(data);\r\n if (data.length != 0) {\r\n return data;\r\n }\r\n });\r\n };\r\n return {\r\n get: get,\r\n };\r\n})();\r\n\r\nexport default dataAccess;\r\n","import { useHistory } from 'react-router-dom';\r\nimport { Storage } from '@capacitor/storage';\r\nimport { IonPopover, IonButton, IonSpinner, IonFab, IonFabButton, IonIcon, IonList, IonListHeader, IonLabel, IonSelect, IonSelectOption, useIonAlert, IonAccordion, IonAccordionGroup, IonItem} from '@ionic/react';\r\nimport { ellipsisVertical } from 'ionicons/icons';\r\nimport dataAccess from '../utils/fetch';\r\n\r\nimport React, { useState, useEffect } from 'react';\r\nimport API_URL from '../utils/api';\r\n\r\ninterface data {\r\n id: string;\r\n code: string\r\n datumString: string;\r\n duurString: string;\r\n locatieString: string;\r\n visvangst: any[];\r\n}\r\n\r\ninterface vis {\r\n id: string;\r\n measure: string\r\n name: string;\r\n place: string;\r\n}\r\n\r\nconst OverzichtScreen: React.FC = () => {\r\n const [popoverState, setShowPopover] = useState({ showPopover: false, event: undefined });\r\n const [overview, setOverview] = useState([]);\r\n const [token, setToken] = useState('');\r\n const [emptyMessage, setEmptyMessage] = useState('Logboeken ophalen...');\r\n const [spinner, setSpinner] = useState('c-spinner-hide');\r\n const [selected, setSelected] = useState('');\r\n const [years, setYears] = useState([]);\r\n const [year, setYear] = useState(new Date().getFullYear());\r\n const [vissen, setVissen] = useState([]);\r\n const history = useHistory();\r\n var [isAdmin, setIsAdmin] = useState(false);\r\n const [presentAlert] = useIonAlert();\r\n const NieuwLogboekMaken = () => {\r\n history.push('/Logboek');\r\n };\r\n const getData = async () => {\r\n setSpinner('c-spinner');\r\n const { value } = await Storage.get({ key: 'token' });\r\n // @ts-ignore\r\n setToken(value);\r\n var myHeaders = new Headers();\r\n myHeaders.append('Authorization', 'Bearer ' + value);\r\n\r\n var requestOptions = {\r\n method: 'GET',\r\n headers: myHeaders,\r\n };\r\n fetch(`${API_URL}/overview?year=${year}`, requestOptions)\r\n .then((r) => r.json())\r\n .then((data) => {\r\n setSpinner('c-spinner-hide');\r\n setOverview(data);\r\n if(data.length === 0){\r\n setEmptyMessage('Geen logboeken');\r\n }\r\n });\r\n\r\n };\r\n useEffect(() => {\r\n (async function () {\r\n Storage.get({ key: `admin` }).then((admvalue: any) => {\r\n let isAdmin = JSON.parse(admvalue.value);\r\n setIsAdmin(isAdmin === true);\r\n });\r\n \r\n const data = await dataAccess.get('species');\r\n setVissen(data);\r\n \r\n var y = [];\r\n for (let index = new Date().getFullYear(); index >= 2017; index--) {\r\n y.push(index);\r\n }\r\n setYears(y);\r\n getData();\r\n \r\n })();\r\n \r\n \r\n }, [year]);\r\n const getItem = async () => {\r\n const { value } = await Storage.get({ key: 'code' });\r\n const location = {\r\n pathname: '/login',\r\n state: { fromDashboard: true },\r\n };\r\n if (value == null) {\r\n history.replace(location);\r\n }\r\n };\r\n getItem();\r\n const Delete = (id: string) => {\r\n setShowPopover({ showPopover: false, event: undefined });\r\n\r\n presentAlert({\r\n header: 'Bent u zeker dat u het geselecteerde logboek wilt verwijderen?',\r\n cssClass: 'custom-alert',\r\n buttons: [\r\n {\r\n text: 'Nee',\r\n cssClass: 'alert-button-cancel',\r\n },\r\n {\r\n text: 'Ja',\r\n cssClass: 'alert-button-confirm',\r\n handler: () => {\r\n var myHeaders = new Headers();\r\n myHeaders.append('Authorization', 'Bearer ' + token);\r\n\r\n var requestOptions = {\r\n method: 'DELETE',\r\n headers: myHeaders,\r\n };\r\n\r\n\r\n fetch(`${API_URL}/logboek?id=${id}`, requestOptions)\r\n .then((response) => {\r\n if(response.ok){\r\n setShowPopover({ showPopover: false, event: undefined })\r\n getData();\r\n }\r\n else\r\n {\r\n response.text()\r\n .then((result) => {\r\n presentAlert({\r\n cssClass: 'alert-css',\r\n header: 'Fout',\r\n message: result,\r\n buttons: [\r\n 'ok'\r\n ]\r\n });\r\n \r\n })\r\n }\r\n } \r\n )\r\n }}],\r\n })\r\n };\r\n\r\n const CatchDetails = async (id: string) => {\r\n setShowPopover({ showPopover: false, event: undefined });\r\n // var myHeaders = new Headers();\r\n // myHeaders.append('Authorization', 'Bearer ' + token);\r\n\r\n // var requestOptions = {\r\n // method: 'GET',\r\n // headers: myHeaders,\r\n // };\r\n\r\n // const code = await Storage.get({ key: `code` });\r\n // //const ret = await Storage.get({ key: `${code.value}`});\r\n\r\n // fetch(`${API_URL}/logboek?id=${id}`, requestOptions)\r\n // .then(async response => {\r\n \r\n // var logboek = await response.text();\r\n\r\n // await Storage.set({\r\n // key: `id`,\r\n // value: `${id}`,\r\n // });\r\n \r\n // await Storage.set({\r\n // key: `${code.value}_${id}`,\r\n // value: logboek,\r\n // });\r\n // history.push(`/Logboek/${id}`)\r\n // })\r\n // .catch((error) => console.log('error', error));\r\n };\r\n\r\n const compareWith = (e1: number, e2: number) => {\r\n \r\n return e1 && e2 ? e1 === e2 || e1 == e2 : false;\r\n }\r\n\r\n const IsLastTwoWeeks = (dateString: string) => {\r\n \r\n var dateArray = dateString.split(\"/\");\r\n var dateLogboek = new Date(dateArray[2] + '-' + dateArray[1] + '-' + dateArray[0]);\r\n var dateNow = new Date();\r\n\r\n const diffTime = Math.abs(dateNow.getTime() - dateLogboek.getTime());\r\n const diffDays = diffTime / (1000 * 60 * 60 * 24); \r\n\r\n return diffDays < 15;\r\n //const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24)); \r\n }\r\n\r\n const Edit = async (id: string) => {\r\n setShowPopover({ showPopover: false, event: undefined });\r\n var myHeaders = new Headers();\r\n myHeaders.append('Authorization', 'Bearer ' + token);\r\n\r\n var requestOptions = {\r\n method: 'GET',\r\n headers: myHeaders,\r\n };\r\n\r\n const code = await Storage.get({ key: `code` });\r\n //const ret = await Storage.get({ key: `${code.value}`});\r\n\r\n fetch(`${API_URL}/logboek?id=${id}`, requestOptions)\r\n .then(async response => {\r\n \r\n var logboek = await response.text();\r\n\r\n await Storage.set({\r\n key: `id`,\r\n value: `${id}`,\r\n });\r\n\r\n await Storage.set({\r\n key: `userCode`,\r\n value: `${overview.filter(x => x.id === selected)[0].code}`,\r\n });\r\n \r\n await Storage.set({\r\n key: `${code.value}_${id}`,\r\n value: logboek,\r\n });\r\n history.push(`/Logboek/${id}`)\r\n })\r\n .catch((error) => console.log('error', error));\r\n };\r\n\r\n return (\r\n \r\n
\r\n setShowPopover({ showPopover: false, event: undefined })}>\r\n {\r\n isAdmin || (selected != null && selected != undefined && overview && overview.length > 0 && overview.filter(x => x.id === selected).length === 1 && IsLastTwoWeeks(overview.filter(x => x.id === selected)[0].datumString)) ?\r\n
\r\n \r\n \r\n
\r\n \r\n :\r\n
\r\n \r\n
\r\n \r\n }\r\n \r\n
\r\n {/*

Logboeken

*/}\r\n \r\n
\r\n setYear(e.detail.value)}>\r\n {years.map((message) => (\r\n {message}\r\n ))}\r\n \r\n
Overzicht logboeken
\r\n
\r\n {\r\n overview.length <= 0 ?

{emptyMessage}

\r\n :\r\n
\r\n \r\n {\r\n overview.map((message) => (\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n {\r\n isAdmin ? {message.datumString}   {message.code} : {message.datumString}\r\n }\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n {\r\n message.visvangst.length === 0 ? \"Geen vangsten\" : \r\n message.visvangst.map((vv) => (\r\n \r\n vissen.filter(x => x.name === vv.vis)[0].measure == \"hoeveelheid+gewicht\" ? \r\n
\r\n {vv.vis}\r\n
\r\n
\r\n # Houden: {vv.houden}\r\n
\r\n
\r\n Gewicht: {vv.kg}kg\r\n
\r\n
\r\n
\r\n
\r\n # Teruggooi bovenmaats: {vv.bovenmaats}\r\n
\r\n
\r\n # Teruggooi ondermaats: {vv.ondermaats}\r\n
\r\n
\r\n
\r\n \r\n : vissen.filter(x => x.name === vv.vis)[0].measure == \"lengtes\" ? \r\n
\r\n {vv.vis}\r\n
\r\n Lengtes houden: {vv.lengtesHouden.join(\", \")}\r\n
\r\n
\r\n Lengtes teruggooi: {vv.lengtesTeruggooi.join(\", \")}\r\n
\r\n
\r\n : \r\n
\r\n {vv.vis}\r\n
\r\n Gewicht: {vv.kg}kg\r\n
\r\n
\r\n ))} \r\n \r\n
\r\n
\r\n
{\r\n e.persist();\r\n setSelected(message.id);\r\n setShowPopover({ showPopover: true, event: e });\r\n }}>\r\n \r\n
\r\n
\r\n \r\n \r\n ))} \r\n
\r\n
\r\n \r\n }\r\n
\r\n
\r\n {/* \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {overview.map((message) => (\r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n
PlaatsDatum
{message.location}{message.date}\r\n \r\n {\r\n e.persist();\r\n setSelected(message.id);\r\n setShowPopover({ showPopover: true, event: e });\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
*/}\r\n
\r\n \r\n
\r\n {/* \r\n \r\n \r\n \r\n */}\r\n
\r\n );\r\n\r\n};\r\n\r\nexport default OverzichtScreen;\r\n","import { IonButtons, IonContent, IonHeader, IonMenuButton, IonPage, IonTitle, IonToolbar } from '@ionic/react';\r\nimport { useParams } from 'react-router';\r\nimport OverzichtScreen from '../components/OverzichtScreen';\r\n\r\nconst Overzicht: React.FC = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n Logboeken\r\n \"logo\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Overzicht;\r\n","export default __webpack_public_path__ + \"static/media/Coastbusterssites2021.68d3c810.jpg\";","import React, { useState, useEffect, useRef } from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { IonButtons, IonContent, IonLabel, IonDatetime, IonItem, IonIcon, IonSpinner, IonButton, IonPage, IonAlert, IonInput, IonList, IonRadioGroup, IonRadio, IonCheckbox, useIonAlert, IonSelect, IonSelectOption, IonModal, IonPopover, IonDatetimeButton } from '@ionic/react';\r\nimport { addOutline, closeOutline, chevronBackOutline, locate, help, helpCircle, ellipsisVertical, addCircle } from 'ionicons/icons';\r\n// import { useIonAlert } from '@ionic/react';\r\nimport API_URL from '../utils/api';\r\nimport dataAccess from '../utils/fetch';\r\nimport { Storage } from '@capacitor/storage';\r\nimport { useStorage } from '@capacitor-community/react-hooks/storage'\r\nimport coastbustersimg from '../assets/images/Coastbusterssites2021.jpg';\r\nimport DEVICE from '../utils/device';\r\n\r\n\r\ninterface PropsProgressbar {\r\n progressbar: any;\r\n id: string;\r\n}\r\ninterface PropsForm {\r\n currentStep: number;\r\n code: string;\r\n datum?: Date;\r\n duur?: number;\r\n aas?: string;\r\n hengel?: string;\r\n country?: string;\r\n show?: any;\r\n readonly: boolean;\r\n}\r\ninterface data {\r\n id: string;\r\n name: string;\r\n variable: any;\r\n}\r\ninterface vis {\r\n id: string;\r\n measure: string\r\n name: string;\r\n place: string;\r\n}\r\ninterface formDataEdit {\r\n code: string;\r\n datum: Date;\r\n duur: number;\r\n aas: string;\r\n land: string;\r\n locaties: [];\r\n techniek: string;\r\n visvangst: [];\r\n}\r\nconst Logboek: React.FC = (PropsProgressbar) => {\r\n // var tmp = useStorage().get('code');\r\n const [present] = useIonAlert();\r\n //UseState maken voor het tellen op welke stap de gebruiker is\r\n const [currentStep, setCurrentStep] = useState(1);\r\n const [code, setCode] = useState('');\r\n const [id, setId] = useState(PropsProgressbar.id == undefined ? '' : PropsProgressbar.id);\r\n const [showButtons, setShowButtons] = useState('false');\r\n // const [dataEdit, setDataEdit] = useState([]);\r\n const [spinner, setSpinner] = useState('c-spinner-hide');\r\n const [logboekOpen, setLogboekOpen] = useState(false);\r\n const [isReadOnly, setIsReadOnly] = useState(false);\r\n //History functie wordt opgeroepen voor de stack van de screnen te veranderen\r\n const history = useHistory();\r\n var [initialLoad, setInitialLoad] = useState(true);\r\n\r\n const [presentAlert] = useIonAlert();\r\n\r\n //check if logged in\r\n const loadInitial = (): void => {\r\n Storage.get({ key: 'id' }).then((value: any) => {\r\n if(value.value == undefined || value.value == null){\r\n setId('');\r\n }\r\n\r\n Storage.get({ key: 'code' }).then((codeValue: any) => {\r\n if(codeValue != ''){\r\n setCode(codeValue.value);\r\n // Storage.get({ key: `${code}_${id}` }).then(async (result: any) => {\r\n // let data = JSON.parse(result.value);\r\n // if(data.)\r\n // });\r\n\r\n setInitialLoad(false);\r\n }\r\n else\r\n {\r\n const location = {\r\n pathname: '/login',\r\n state: { fromDashboard: true },\r\n };\r\n history.replace(location);\r\n }\r\n\r\n Storage.get({ key: `admin` }).then((isAdm: any) => {\r\n if(isAdm.value === \"false\" && id !== ''){\r\n \r\n Storage.get({ key: `userCode` }).then((userCode: any) => {\r\n // @ts-ignore\r\n Storage.get({ key: `${userCode.value}_${value.value}` }).then((logboekValue: any) => {\r\n var lb = JSON.parse(logboekValue.value);\r\n var d = new Date(lb.datum);\r\n\r\n var dateNow = new Date();\r\n\r\n const diffTime = Math.abs(dateNow.getTime() - d.getTime());\r\n const diffDays = diffTime / (1000 * 60 * 60 * 24); \r\n\r\n if(diffDays >= 15){\r\n setIsReadOnly(true);\r\n\r\n }\r\n });\r\n });\r\n }\r\n });\r\n });\r\n });\r\n\r\n }\r\n // (async function () {\r\n // const { value } = await Storage.get({ key: 'code' });\r\n // // @ts-ignore\r\n // setCode(value);\r\n // const location = {\r\n // pathname: '/login',\r\n // state: { fromDashboard: true },\r\n // };\r\n // if (value == null) {\r\n // history.replace(location);\r\n // }\r\n // })();\r\n //Afsluiten functie wordt gebruikt bij de afsluiten knop op lijn 38\r\n const Afsluiten = () => {\r\n history.goBack();\r\n };\r\n // const datatoevoegen = (result: any) => {\r\n // const newList = dataEdit.concat(result);\r\n // console.log(newList);\r\n // setDataEdit(newList);\r\n // };\r\n // const stappen = async () => {\r\n // if (typeof PropsProgressbar.id !== 'undefined') {\r\n // const { value } = await Storage.get({ key: 'token' });\r\n // var myHeaders = new Headers();\r\n // myHeaders.append('Authorization', `Bearer ${value}`);\r\n\r\n // var requestOptions = {\r\n // method: 'GET',\r\n // headers: myHeaders,\r\n // };\r\n\r\n // await fetch(`${API_URL}/logboek?id=${PropsProgressbar.id}`, requestOptions)\r\n // .then((response) => response.json())\r\n // .then((result) => datatoevoegen(result))\r\n // .catch((error) => console.log('error', error));\r\n // }\r\n // return (\r\n // <>\r\n // \r\n // \r\n // \r\n // \r\n // \r\n // \r\n // \r\n // );\r\n // };\r\n //Hier wordt de progressbar in NieuwLogboek teruggestuurd met de actuele stap waarop de gebruiker is\r\n useEffect(() => {\r\n if(initialLoad){\r\n loadInitial();\r\n }\r\n PropsProgressbar.progressbar(currentStep / 6);\r\n }, [currentStep, code, id]);\r\n\r\n const previousButton = () => {\r\n //Als de momentele stap kleiner is als het totaal aantal stappen dan komt de \"Vorige\" knop er zoniet komt de \"Afsluiten\" knop er\r\n //Deze functie wordt opgeroepen in het form lijn 74\r\n if (showButtons == 'false') {\r\n if (currentStep !== 1) {\r\n return (\r\n // \r\n previous()}>Vorige\r\n );\r\n }\r\n return (\r\n Afsluiten()}>Terug\r\n );\r\n }\r\n };\r\n const nextButton = () => {\r\n //Als de momentele stap kleiner is als het totaal aantal stappen dan komt de \"Volgende\" knop er, zoniet komt de \"Voltooien\" knop er\r\n //Deze functie wordt opgeroepen in het form lijn 76\r\n if (showButtons == 'false') {\r\n if (currentStep < 6) {\r\n return (\r\n Next()}>Volgende\r\n );\r\n }\r\n else if(isReadOnly)\r\n {\r\n return (\r\n Afsluiten()}>Sluiten\r\n );\r\n \r\n }\r\n return (\r\n CheckIfReady()}>Versturen\r\n );\r\n }\r\n };\r\n const changeProgress = (stepNr: number) => {\r\n //Momentele stap verminderen met 1 als het niet kleiner of gelijk is aan 1\r\n //Deze functie wordt gebruikt bij de previousButton functie\r\n setCurrentStep(stepNr);\r\n document.getElementById(\"progress-step\").innerHTML = `Stap ${stepNr}/6`;\r\n \r\n };\r\n\r\n const previous = () => {\r\n //Momentele stap verminderen met 1 als het niet kleiner of gelijk is aan 1\r\n //Deze functie wordt gebruikt bij de previousButton functie\r\n changeProgress(currentStep <= 1 ? 1 : currentStep - 1);\r\n };\r\n const Next = async () => {\r\n //Momentele stap vermeerderen met 1 als het niet groter of gelijk is aan het totaal aantal stappen - 1\r\n //Deze functie wordt gebruikt bij de nextButton functie\r\n var ret = await Storage.get({ key: `${code}_${id}` });\r\n // @ts-ignore\r\n var data = JSON.parse(ret.value);\r\n // console.log(data);\r\n if(currentStep == 1){\r\n var tmpDate = new Date();\r\n if(new Date(data.datum) > tmpDate){\r\n present({\r\n cssClass: 'alert-css',\r\n header: 'Opgelet',\r\n message: 'Een datum in de toekomst wordt niet geaccepteerd',\r\n buttons: [\r\n 'ok'\r\n ]\r\n })\r\n\r\n return;\r\n }\r\n if(data.duur <= 0){\r\n present({\r\n cssClass: 'alert-css',\r\n header: 'Opgelet',\r\n message: 'Gelieve een geldige tijdsduur in te geven',\r\n buttons: [\r\n 'ok'\r\n ]\r\n })\r\n return;\r\n }\r\n }\r\n if(currentStep == 2){\r\n if(!data.aas){\r\n present({\r\n cssClass: 'alert-css',\r\n header: 'Opgelet',\r\n message: 'Gelieve een type aas te selecteren',\r\n buttons: [\r\n 'ok'\r\n ]\r\n })\r\n return;\r\n }\r\n }\r\n if(currentStep == 3){\r\n if(!data.techniek){\r\n present({\r\n cssClass: 'alert-css',\r\n header: 'Opgelet',\r\n message: 'Gelieve een vistechniek te selecteren',\r\n buttons: [\r\n 'ok'\r\n ]\r\n })\r\n return;\r\n }\r\n }\r\n if(currentStep == 5){\r\n if(data.locaties.length == undefined || data.locaties.length === 0){\r\n present({\r\n cssClass: 'alert-css',\r\n header: 'Opgelet',\r\n message: 'Gelieve 1 of meerdere locaties te kiezen',\r\n buttons: [\r\n 'ok'\r\n ]\r\n })\r\n return;\r\n }\r\n }\r\n changeProgress(currentStep >= 5 ? 6 : currentStep + 1);\r\n };\r\n\r\n const CheckIfReady = async () => {\r\n const ret = await Storage.get({ key: `${code}_${id}` });\r\n const { value } = await Storage.get({ key: 'token' });\r\n // @ts-ignore\r\n const data = JSON.parse(ret.value);\r\n // console.log(data);\r\n if(!data.visvangst || data.visvangst.length === undefined || data.visvangst.length === 0){\r\n presentAlert({\r\n header: 'Waarschuwing',\r\n message: 'Dit logboek bevat geen visvangst gegevens. Bent u zeker dat u het logboek wilt versturen?',\r\n cssClass: 'custom-alert',\r\n buttons: [\r\n {\r\n text: 'Nee',\r\n cssClass: 'alert-button-cancel',\r\n },\r\n {\r\n text: 'Ja',\r\n cssClass: 'alert-button-confirm',\r\n handler: () => {\r\n UploadForm();\r\n },\r\n },\r\n ],\r\n })\r\n }\r\n else\r\n {\r\n UploadForm();\r\n }\r\n };\r\n const UploadForm = async () => {\r\n\r\n const ret = await Storage.get({ key: `${code}_${id}` });\r\n const { value } = await Storage.get({ key: 'token' });\r\n // @ts-ignore\r\n const data = JSON.parse(ret.value);\r\n // console.log(data);\r\n if(!data.visvangst){\r\n data.visvangst = [];\r\n }\r\n\r\n setSpinner('c-spinner');\r\n\r\n if (data.datum == '' || data.duur == 0 || data.aas == '' || data.techniek == '' || data.locaties.length === 0 || data.land == '') {\r\n setLogboekOpen(true);\r\n setSpinner('c-spinner-hide');\r\n } else {\r\n if(!data.visvangst.length){\r\n data.visvangst = [];\r\n }\r\n data.build = DEVICE;\r\n var myHeaders = new Headers();\r\n myHeaders.append('Authorization', 'Bearer ' + value);\r\n myHeaders.append('Content-Type', 'application/json');\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: myHeaders,\r\n body: JSON.stringify(data),\r\n };\r\n const completePost = async () => {\r\n await Storage.remove({ key: `${code}_${id}` });\r\n setSpinner('c-spinner-hide');\r\n // todo show a message\r\n };\r\n await fetch(`${API_URL}/postlogboek?id=${id}`, requestOptions)\r\n //await fetch(`https://localhost:44341/recvis/postlogboek?id=${id}`, requestOptions)\r\n .then((response) => {\r\n if(response.ok){\r\n completePost();\r\n present({\r\n cssClass: 'alert-css',\r\n header: 'Logboek verzonden!',\r\n message: 'We hebben uw logboek correct ontvangen. Wilt u een nieuw logboek aanmaken?',\r\n backdropDismiss: false,\r\n buttons: [{\r\n text: 'Nee',\r\n cssClass: 'alert-button-cancel',\r\n handler: () => {\r\n history.push('/Overzicht');\r\n },\r\n },\r\n {\r\n text: 'Ja',\r\n cssClass: 'alert-button-confirm',\r\n handler: () => {\r\n nieuwe();\r\n },\r\n },\r\n ]\r\n });\r\n // @ts-ignore\r\n //document.getElementById('logboek-confirm-message').style.display ='none';\r\n //document.getElementById('wizard-buttons').style.display ='none';\r\n //document.getElementById('wizard-complete-buttons').style.display ='flex';\r\n //document.getElementById('logboek-received-message').style.display ='flex';\r\n }\r\n else{\r\n \r\n response.text().then(text => {\r\n present({\r\n cssClass: 'alert-css',\r\n header: 'Opgelet',\r\n message: text,\r\n buttons: [\r\n 'ok'\r\n ]\r\n });\r\n })\r\n \r\n }\r\n setSpinner('c-spinner-hide');\r\n\r\n })\r\n .catch((error) => {\r\n console.error('Error', error);\r\n setSpinner('c-spinner-hide');\r\n\r\n })\r\n }\r\n };\r\n\r\n const afsluiten = () => {\r\n history.push('/Overzicht');\r\n }\r\n\r\n const nieuwe = async () => {\r\n let locaties: [];\r\n let vv: [];\r\n const data = { code: code, datum: '', duur: 0, aas: '', land: '72dad0d1-a614-4351-b90e-966c83c264ab', locaties: locaties, techniek: '', visvangst: vv };\r\n await Storage.set({\r\n key: `${code}_`,\r\n value: JSON.stringify(data),\r\n });\r\n document.location.href = document.location.href;\r\n }\r\n return (\r\n
\r\n
\r\n setLogboekOpen(false)}\r\n cssClass=\"my-custom-class\"\r\n header={'Opgelet'}\r\n message={'Gelieve alle velden in te vullen!'}\r\n buttons={[\r\n {\r\n text: 'Ok',\r\n role: 'cancel',\r\n cssClass: 'secondary',\r\n handler: () => {\r\n setLogboekOpen(false);\r\n },\r\n },\r\n ]}\r\n />\r\n {/* {stappen} */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* */}\r\n
\r\n \r\n
\r\n
\r\n {previousButton()}\r\n
\r\n {nextButton()}\r\n
\r\n
\r\n afsluiten()}>Afsluiten\r\n
\r\n nieuwe()}>Nieuwe maken\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nconst Stap1: React.FC = (PropsForm) => {\r\n var [isAdmin, setIsAdmin] = useState(false);\r\n var [user, setUser] = useState('');\r\n var [datum, setDatum] = useState(new Date());\r\n var [duur, setDuur] = useState(new Date(new Date(2022, 1, 1, 0, 0, 0, 0).getTime() - new Date().getTimezoneOffset() * 60000 ));\r\n var [initialLoad, setInitialLoad] = useState(true);\r\n const loadInitial = (): void => {\r\n Storage.get({ key: `admin` }).then((admvalue: any) => {\r\n let tmpAdm = JSON.parse(admvalue.value);\r\n setIsAdmin(tmpAdm);\r\n if(!tmpAdm){\r\n setUser(PropsForm.code);\r\n }\r\n });\r\n Storage.get({ key: `code` }).then((value: any) => {\r\n if(value){\r\n Storage.get({ key: `id` }).then((idval: any) => {\r\n if(idval){\r\n Storage.get({ key: `${value.value}_${idval.value}` }).then(async (result: any) => {\r\n let data = JSON.parse(result.value);\r\n\r\n \r\n\r\n if(data === null){\r\n data = { land: '72dad0d1-a614-4351-b90e-966c83c264ab'};\r\n }\r\n\r\n if(!data.datum){\r\n setDatum(new Date(new Date().toUTCString().slice(0, -4)));\r\n data.datum = new Date(new Date().toUTCString().slice(0, -4));\r\n }\r\n else\r\n {\r\n setDatum(new Date(data.datum))\r\n }\r\n \r\n if(data.duur === undefined){\r\n var newDate = new Date(2022, 1, 1, 0, 0, 0, 0 );\r\n setDuur(newDate);\r\n data.duur = 0;\r\n }\r\n else{\r\n setDuur(new Date(new Date(2022, 1, 1, 0, 0, 0, 0).getTime() + data.duur*60*1000));\r\n }\r\n\r\n if(data.code){\r\n setUser(data.code);\r\n }\r\n \r\n \r\n setInitialLoad(false);\r\n await Storage.set({\r\n key: `${value.value}_${idval.value}`,\r\n value: JSON.stringify(data),\r\n });\r\n });\r\n }\r\n })\r\n }\r\n });\r\n}\r\n useEffect(() => {\r\n (async function () {\r\n if(initialLoad){\r\n loadInitial();\r\n }\r\n else{\r\n const code = await Storage.get({ key: `code` });\r\n const id = await Storage.get({ key: `id` });\r\n const ret = await Storage.get({ key: `${code.value}_${id.value}`});\r\n if (ret.value != 'null') {\r\n // @ts-ignore\r\n let data = JSON.parse(ret.value);\r\n \r\n // datum = new Date(data['datum']);\r\n // duur = new Date(data['duur']);\r\n \r\n let totalDuur = duur.getHours() * 60 + duur.getMinutes(); \r\n \r\n \r\n data['datum'] = datum;\r\n data['duur'] = totalDuur;\r\n data['code'] = user;\r\n \r\n await Storage.set({\r\n key: `${PropsForm.code}_${id.value}`,\r\n value: JSON.stringify(data),\r\n });\r\n }\r\n }\r\n \r\n })();\r\n }, [datum, duur, user]);\r\n if (PropsForm.currentStep !== 1) {\r\n // Prop: The current step\r\n return null;\r\n }\r\n\r\n const formatDuurString = (date: Date) => {\r\n //console.log(\"format duur\");\r\n var hour = date.getHours();\r\n var minutes = date.getMinutes();\r\n\r\n return \"0000-01-01T\" + String(hour).padStart(2, '0') + \":\" + String(minutes).padStart(2, '0') + \":00\";\r\n };\r\n\r\n const convertToTime = (val: String) => {\r\n //console.log(\"convert date\");\r\n var time = val.split('T')[1];\r\n var hours = time.split(':')[0];\r\n var minutes = time.split(':')[1];\r\n var tempDuur = new Date(new Date(2022, 1, 1, parseInt(hours), parseInt(minutes), 0, 0).getTime());\r\n\r\n return tempDuur;\r\n };\r\n // The markup for the Step 1 UI\r\n return (\r\n <>\r\n {/*

Info

*/}\r\n
\r\n {\r\n isAdmin ? \r\n
\r\n
\r\n
\r\n E-mail of identificatiecode\r\n
\r\n
\r\n
\r\n
\r\n setUser(e.target.value)} />\r\n
\r\n
\r\n
\r\n :\r\n \"\"\r\n }\r\n\r\n\r\n
\r\n
\r\n Datum visvangst\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n setDatum(new Date(e.detail.value.toString()))}>\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n Duur (uu:mm)\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n setDuur(convertToTime(e.detail.value.toString()))} disabled={PropsForm.readonly} >\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n );\r\n};\r\nconst Stap2: React.FC = (PropsForm) => {\r\n const [aas, setAas] = useState('');\r\n const [azen, setAzen] = useState([]);\r\n const [initialLoad, setInitialLoad] = useState(true);\r\n const loadInitial = (): void => {\r\n Storage.get({ key: `code` }).then((value: any) => {\r\n \r\n if(value){\r\n Storage.get({ key: `id` }).then((id: any) => {\r\n Storage.get({ key: `${value.value}_${id.value}` }).then((result: any) => {\r\n let data = JSON.parse(result.value);\r\n if(data != null && data.aas){\r\n setAas(data.aas);\r\n }\r\n \r\n setInitialLoad(false);\r\n });\r\n })\r\n \r\n \r\n }\r\n else\r\n {\r\n setInitialLoad(true);\r\n }\r\n });\r\n }\r\n useEffect(() => {\r\n (async function () {\r\n if(initialLoad){\r\n loadInitial();\r\n }\r\n else\r\n {\r\n const code = await Storage.get({ key: `code` });\r\n const id = await Storage.get({ key: `id` });\r\n const ret = await Storage.get({ key: `${code.value}_${id.value}` });\r\n if (ret.value != 'null') {\r\n var data = {};\r\n // @ts-ignore\r\n data = JSON.parse(ret.value);\r\n // @ts-ignore\r\n data['aas'] = aas;\r\n await Storage.set({\r\n key: `${code.value}_${id.value}`,\r\n value: JSON.stringify(data),\r\n });\r\n }\r\n }\r\n \r\n })();\r\n }, [aas, initialLoad]);\r\n useEffect(() => {\r\n (async function () {\r\n const data = await dataAccess.get('rodtypes');\r\n setAzen(data);\r\n })();\r\n }, []);\r\n\r\n if (PropsForm.currentStep !== 2) {\r\n // Prop: The current step\r\n return null;\r\n }\r\n // The markup for the Step 2 UI\r\n return (\r\n <>\r\n {/*

Vistechniek

*/}\r\n
\r\n \r\n \r\n\r\n setAas(e.detail.value)}>\r\n {azen.map((message) => (\r\n \r\n {message.name}\r\n \r\n \r\n ))}\r\n \r\n \r\n
\r\n \r\n );\r\n};\r\nconst Stap3: React.FC = (PropsForm) => {\r\n const [visTechnieken, setVisTechnieken] = useState([]);\r\n const [vistechniek, setVisTechniek] = useState('');\r\n const [passieveStrandvisserij, setPassieveStrandvisserij] = useState('');\r\n const [aantal, setAantal] = useState(0);\r\n const [passieveStrandvisserijTypes, setPassieveStrandvisserijTypes] = useState([]);\r\n\r\n const [showAdditionalControls, setShowAdditionalControls] = useState(false);\r\n const [initialLoad, setInitialLoad] = useState(true);\r\n const loadInitial = (): void => {\r\n\r\n Storage.get({ key: `code` }).then((value: any) => {\r\n if(value){\r\n Storage.get({ key: `id` }).then((id: any) => {\r\n Storage.get({ key: `${value.value}_${id.value}` }).then((result: any) => {\r\n let data = JSON.parse(result.value);\r\n if(data != null && data.techniek){\r\n setVisTechniek(data.techniek);\r\n }\r\n setInitialLoad(false);\r\n });\r\n });\r\n }\r\n else\r\n {\r\n setInitialLoad(true);\r\n }\r\n });\r\n }\r\n useEffect(() => {\r\n (async function () {\r\n if(initialLoad){\r\n loadInitial();\r\n }\r\n else\r\n {\r\n let pTypes = await dataAccess.get('beachfishingtypes');\r\n setPassieveStrandvisserijTypes(pTypes);\r\n\r\n const code = await Storage.get({ key: `code` });\r\n const id = await Storage.get({ key: `id` });\r\n const ret = await Storage.get({ key: `${code.value}_${id.value}` });\r\n if (ret.value != 'null') {\r\n let data = {};\r\n // @ts-ignore\r\n data = JSON.parse(ret.value);\r\n // @ts-ignore\r\n data['techniek'] = vistechniek;\r\n // @ts-ignore\r\n data['passieveStrandvisserij'] = passieveStrandvisserij;\r\n // @ts-ignore\r\n data['aantal'] = aantal;\r\n if(vistechniek === 'da34801e-fa86-4494-ab9e-3519ecfc66ce'){\r\n setShowAdditionalControls(true);\r\n }\r\n else{\r\n setShowAdditionalControls(false);\r\n }\r\n \r\n await Storage.set({\r\n key: `${code.value}_${id.value}`,\r\n value: JSON.stringify(data),\r\n });\r\n }\r\n }\r\n \r\n })();\r\n }, [vistechniek, passieveStrandvisserij, aantal , initialLoad]);\r\n useEffect(() => {\r\n (async function () {\r\n const data = await dataAccess.get('techniques');\r\n setVisTechnieken(data);\r\n })();\r\n }, []);\r\n\r\n // const ListVisTechniekGen = ({ name, id, variable }: data) => {\r\n // return (\r\n //
\r\n // variable(e.target.value)} />\r\n // \r\n //
\r\n // );\r\n // };\r\n if (PropsForm.currentStep !== 3) {\r\n // Prop: The current step\r\n return null;\r\n }\r\n // The markup for the Step 3 UI\r\n return (\r\n <>\r\n {/*

Vistechniek

*/}\r\n
\r\n \r\n \r\n\r\n setVisTechniek(e.detail.value)}>\r\n {visTechnieken.map((message) => (\r\n \r\n {message.name}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n {\r\n showAdditionalControls ? \r\n
\r\n
\r\n \r\n
\r\n {/* Type: */}\r\n {/* */}\r\n setPassieveStrandvisserij(e.detail.value)}>\r\n {passieveStrandvisserijTypes.map((message) => (\r\n {message.name}\r\n ))}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n Aantal\r\n
\r\n
\r\n
\r\n
\r\n setAantal(parseInt(e.target.value))} />\r\n
\r\n
\r\n
\r\n
: \"\"\r\n }\r\n
\r\n \r\n );\r\n};\r\nconst Stap4: React.FC = (PropsForm) => {\r\n const [countries, setCountries] = useState([]);\r\n const [countriesSep, setCountriesSep] = useState([]);\r\n const [country, setcountry] = useState('72dad0d1-a614-4351-b90e-966c83c264ab');\r\n const [initialLoad, setInitialLoad] = useState(true);\r\n const loadInitial = (): void => {\r\n Storage.get({ key: `code` }).then((value: any) => {\r\n \r\n if(value){\r\n Storage.get({ key: `id` }).then((id: any) => {\r\n Storage.get({ key: `${value.value}_${id.value}` }).then((result: any) => {\r\n let data = JSON.parse(result.value);\r\n if(data != null && data.land){\r\n setcountry(data.land);\r\n }\r\n \r\n setInitialLoad(false);\r\n });\r\n })\r\n }\r\n else\r\n {\r\n setInitialLoad(true);\r\n }\r\n });\r\n }\r\n\r\n useEffect(() => {\r\n (async function () {\r\n let countries = await dataAccess.get('countries');\r\n\r\n countriesSep.length = 0;\r\n // @ts-ignore\r\n countries.forEach((land) => {\r\n if (land.showInList == false) {\r\n setCountriesSep((countriesSep) => [...countriesSep, land]);\r\n } else {\r\n setCountries((countries) => [...countries, land]);\r\n }\r\n });\r\n })();\r\n }, []);\r\n useEffect(() => {\r\n (async function () {\r\n if(initialLoad){\r\n loadInitial();\r\n }\r\n else\r\n {\r\n const code = await Storage.get({ key: `code` });\r\n const id = await Storage.get({ key: `id` });\r\n const ret = await Storage.get({ key: `${code.value}_${id.value}` });\r\n if (ret.value != 'null') {\r\n let data = {};\r\n // @ts-ignore\r\n data = JSON.parse(ret.value);\r\n // @ts-ignore\r\n data['land'] = country;\r\n await Storage.set({\r\n key: `${code.value}_${id.value}`,\r\n value: JSON.stringify(data),\r\n });\r\n }\r\n }\r\n\r\n \r\n })();\r\n }, [country]);\r\n // const listCountriesGen = () => {\r\n // return (\r\n // <>\r\n // {countries.map((message) => (\r\n // \r\n // ))}\r\n // \r\n // );\r\n // };\r\n\r\n if (PropsForm.currentStep !== 4) {\r\n // Prop: The current step\r\n return null;\r\n }\r\n // The markup for the Step 4 UI\r\n return (\r\n <>\r\n {/*

Land Visvangst

*/}\r\n
\r\n \r\n \r\n\r\n setcountry(e.detail.value)}>\r\n {countriesSep.map((message) => (\r\n \r\n {message.name}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n
\r\n{/* */}\r\n setcountry(e.detail.value)}>\r\n {countries.map((message) => (\r\n {message.name}\r\n ))}\r\n \r\n
\r\n \r\n
\r\n \r\n );\r\n};\r\nconst Stap5: React.FC = (PropsForm) => {\r\n const [locations, setLocations] = useState([]);\r\n const [location, setLocation] = useState([]);\r\n const [country, setcountry] = useState('');\r\n const [initialLoad, setInitialLoad] = useState(true);\r\n const [showModal, setShowModal] = useState(false);\r\n\r\n const loadInitial = (): void => {\r\n Storage.get({ key: `code` }).then((value: any) => {\r\n \r\n if(value){\r\n Storage.get({ key: `id` }).then((id: any) => {\r\n Storage.get({ key: `${value.value}_${id.value}` }).then((result: any) => {\r\n let data = JSON.parse(result.value);\r\n if(data != null && data.locaties){\r\n setLocation(data.locaties);\r\n }\r\n if(data != null && data.land){\r\n setcountry(data.land);\r\n }\r\n \r\n setInitialLoad(false);\r\n });\r\n })\r\n \r\n \r\n }\r\n else\r\n {\r\n setInitialLoad(true);\r\n }\r\n });\r\n }\r\n const showCoastBustersImg = (e: React.MouseEvent): void => {\r\n setShowModal(true);\r\n\r\n e.preventDefault();\r\n }\r\n\r\n useEffect(() => {\r\n (async function () {\r\n\r\n if(initialLoad){\r\n loadInitial();\r\n }\r\n else\r\n {\r\n const code = await Storage.get({ key: `code` });\r\n const id = await Storage.get({ key: `id` });\r\n const ret = await Storage.get({ key: `${code.value}_${id.value}` });\r\n if (ret.value != 'null') {\r\n let data = {};\r\n // @ts-ignore\r\n data = JSON.parse(ret.value);\r\n // @ts-ignore\r\n data['locaties'] = location;\r\n await Storage.set({\r\n key: `${code.value}_${id.value}`,\r\n value: JSON.stringify(data),\r\n });\r\n }\r\n }\r\n \r\n })();\r\n }, [location]);\r\n useEffect(() => {\r\n (async function () {\r\n let locations = await dataAccess.get('locations');\r\n setLocations(locations);\r\n })();\r\n }, []);\r\n\r\n // const ListLocatiesGen = ({ name, id, variable }: data) => {\r\n // const [checkedLocation, setCheckedLocation] = useState([]);\r\n // const handleChange = (e: any) => {\r\n // const value = e.target.value;\r\n\r\n // setCheckedLocation(checkedLocation.concat(value));\r\n // console.log(checkedLocation);\r\n // variable = checkedLocation;\r\n // };\r\n\r\n // //console.log(variable);\r\n // return (\r\n\r\n // );\r\n // };\r\n\r\n const handleChange = (e: any) => {\r\n const value = e.target.value;\r\n const checked = e.target.checked;\r\n if (checked == true) {\r\n if(location.length === undefined ||location.length === 0){\r\n setLocation([value]);\r\n }\r\n else{\r\n setLocation((location) => [...location, value]);\r\n }\r\n } else if (checked == false) {\r\n const index = location.indexOf(value);\r\n if (index > -1) {\r\n setLocation(location.slice(0, index).concat(location.slice(index + 1)));\r\n }\r\n }\r\n };\r\n if (PropsForm.currentStep !== 5) {\r\n // Prop: The current step\r\n return null;\r\n }\r\n // The markup for the Step 5 UI\r\n return (\r\n <>\r\n {/*

Vislocatie

*/}\r\n
\r\n \r\n \r\n {locations.map((locatie) => (\r\n \r\n \r\n {locatie.name}\r\n 0 && location.includes(locatie.id)} disabled={PropsForm.readonly} onIonChange={e => handleChange(e)} />\r\n
\r\n{locatie.id === '8de81202-c837-4181-9537-44fb853c8c42' ? showCoastBustersImg(e)}> : \"\"}\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n ))}\r\n
\r\n \r\n \r\n \"Coastbusters\r\n setShowModal(false)}>Sluiten\r\n \r\n
\r\n \r\n );\r\n};\r\nconst Stap6: React.FC = (PropsForm) => {\r\n const history = useHistory();\r\n const [popoverState, setShowPopover] = useState({ showPopover: false, event: undefined });\r\n const [present] = useIonAlert();\r\n const [selected, setSelected] = useState('');\r\n const [vangstToevoegenScreen, setVangstToevoegenScreen] = useState(false);\r\n const [vissen, setVissen] = useState([]);\r\n const [vis, setVis] = useState('');\r\n const [visFull, setVisFull] = useState({});\r\n const [countHouden, setCountHouden] = useState();\r\n const [countTeruggooi, setCountTeruggooi] = useState();\r\n const [dataVisVangst, setDataVisVangst] = useState([]);\r\n const [kg, setKg] = useState(0);\r\n const [cmHouden, setCmHouden] = useState([]);\r\n const [cmTeruggooi, setCmTeruggooi] = useState([]);\r\n const [houden, setHouden] = useState();\r\n const [ondermaats, setOndermaats] = useState();\r\n const [bovenmaats, setBovenmaats] = useState();\r\n const [isAdmin, setIsAdmin] = useState(false);\r\n let rows: any = [];\r\n\r\n var [initialLoad, setInitialLoad] = useState(true);\r\n const loadInitial = (): void => {\r\n Storage.get({ key: `code` }).then((value: any) => {\r\n if(value){\r\n Storage.get({ key: `id` }).then((id: any) => {\r\n Storage.get({ key: `${value.value}_${id.value}` }).then((result: any) => {\r\n let data = JSON.parse(result.value);\r\n if(data != null && data.visvangst){\r\n setDataVisVangst(data.visvangst);\r\n }\r\n Storage.get({ key: `admin` }).then((isAdm: any) => {\r\n setIsAdmin(isAdm.value === \"true\");\r\n\r\n setInitialLoad(false);\r\n });\r\n });\r\n });\r\n }\r\n });\r\n}\r\n\r\n // useEffect(() => {\r\n // PropsForm.show(vangstToevoegenScreen.toString());\r\n // const vissenSelect = document.querySelector('ion-select');\r\n // if (vissenSelect) {\r\n // vissenSelect.open();\r\n // }\r\n // }, [vangstToevoegenScreen]);\r\n useEffect(() => {\r\n (async function () {\r\n if(initialLoad){\r\n loadInitial();\r\n }\r\n else{\r\n const code = await Storage.get({ key: `code` });\r\n const id = await Storage.get({ key: `id` });\r\n const ret = await Storage.get({ key: `${code.value}_${id.value}`});\r\n if (ret.value != 'null') {\r\n let data = {};\r\n // @ts-ignore\r\n data = JSON.parse(ret.value);\r\n\r\n // @ts-ignore\r\n data['visvangst'] = dataVisVangst;\r\n await Storage.set({\r\n key: `${code.value}_${id.value}`,\r\n value: JSON.stringify(data),\r\n });\r\n }\r\n }\r\n })();\r\n }, [dataVisVangst]);\r\n useEffect(() => {\r\n (async function () {\r\n if(initialLoad){\r\n loadInitial();\r\n const data = await dataAccess.get('species');\r\n setVisFull({});\r\n setVissen(data);\r\n data.forEach((element: any) => {\r\n if (element.id == vis) {\r\n setVisFull(element);\r\n }\r\n });\r\n }\r\n else{\r\n const data = await dataAccess.get('species');\r\n setVisFull({});\r\n setVissen(data);\r\n data.forEach((element: any) => {\r\n if (element.id == vis) {\r\n setVisFull(element);\r\n }\r\n });\r\n\r\n if (dataVisVangst != null && dataVisVangst.length > 0) {\r\n // console.log(dataVisVangst);\r\n var vangst = dataVisVangst.find(x => x.id === vis);\r\n if(vangst){\r\n vangst.bovenmaats ? setBovenmaats(vangst.bovenmaats) : setBovenmaats(0);\r\n vangst.ondermaats ? setOndermaats(vangst.ondermaats) : setOndermaats(0);\r\n vangst.houden ? setHouden(vangst.houden) : setHouden(0);\r\n vangst.kg ? setKg(vangst.kg) : setKg(0);\r\n vangst.lengtesHouden ? setCountHouden(vangst.lengtesHouden.length) : setCountHouden(0);\r\n vangst.lengtesTeruggooi ? setCountTeruggooi(vangst.lengtesTeruggooi.length) : setCountTeruggooi(0);\r\n vangst.lengtesHouden ? setCmHouden(vangst.lengtesHouden) : setCmHouden([]);\r\n vangst.lengtesTeruggooi ? setCmTeruggooi(vangst.lengtesTeruggooi) : setCmTeruggooi([]);\r\n }else\r\n {\r\n setBovenmaats(0);\r\n setOndermaats(0);\r\n setHouden(0);\r\n setKg(0);\r\n setCountHouden(0);\r\n setCountTeruggooi(0);\r\n setCmHouden([]);\r\n setCmTeruggooi([]);\r\n }\r\n \r\n }\r\n\r\n \r\n }\r\n \r\n })();\r\n }, [vis, dataVisVangst])\r\n // const close = (id: number) => {\r\n // rows.splice(id, 1);\r\n // setCount(count - 1);\r\n // NieuweVisToevoegen();\r\n // };\r\n\r\n // const processKgInput = (val: string) =>{\r\n // if(!val){\r\n // setKg(0);\r\n // }\r\n // else{\r\n // setKg(parseFloat(val));\r\n // }\r\n // }\r\n\r\n const Delete = (id: string) => {\r\n let newList = [];\r\n if(dataVisVangst.length !== 0 && dataVisVangst.length !== undefined){\r\n newList = dataVisVangst.filter(x => x.id !== id);\r\n }\r\n setDataVisVangst(newList);\r\n\r\n setShowPopover({ showPopover: false, event: undefined });\r\n };\r\n\r\n const vangstToevoegen = (visId: React.SetStateAction | undefined | null) => {\r\n\r\n setShowPopover({ showPopover: false, event: undefined });\r\n\r\n if(visId){\r\n\r\n setVis(visId);\r\n }\r\n else{\r\n setVis('');\r\n if(vis === ''){\r\n // const vissenSelect = document.querySelector('ion-select');\r\n // if (vissenSelect) {\r\n // vissenSelect.open();\r\n // }\r\n }\r\n }\r\n\r\n setVangstToevoegenScreen(true);\r\n\r\n setShowPopover({ showPopover: false, event: undefined });\r\n\r\n //history.push('/VangstToevoegen');\r\n };\r\n\r\n const terug = () => {\r\n setVangstToevoegenScreen(false);\r\n };\r\n const toevoegen = () => {\r\n let closeScreen = true;\r\n let newList = [];\r\n if(dataVisVangst.length !== 0 && dataVisVangst.length !== undefined){\r\n newList = dataVisVangst.filter(x => x.id !== vis);\r\n\r\n }\r\n\r\n if (visFull['measure'] == 'hoeveelheid+gewicht') {\r\n const data = { id: vis, vis: visFull.name, houden: houden, kg: kg, ondermaats: ondermaats, bovenmaats: bovenmaats };\r\n newList = newList.concat(data);\r\n // console.log(data);\r\n setDataVisVangst(newList);\r\n setHouden(0);\r\n setKg(0);\r\n setOndermaats(0);\r\n setBovenmaats(0);\r\n } else if (visFull['measure'] == 'gewicht') {\r\n const data: any = { id: vis, vis: visFull.name, kg: kg };\r\n newList = newList.concat(data);\r\n setDataVisVangst(newList);\r\n setKg(0);\r\n } else if (visFull['measure'] == 'lengtes') {\r\n const data: any = { id: vis, vis: visFull.name, lengtesHouden: cmHouden.slice(0,countHouden), lengtesTeruggooi: cmTeruggooi.slice(0,countTeruggooi) };\r\n newList = newList.concat(data);\r\n setDataVisVangst(newList);\r\n setCmHouden([]);\r\n setCmTeruggooi([]);\r\n }\r\n else\r\n {\r\n closeScreen = false;\r\n\r\n present({\r\n cssClass: 'alert-css',\r\n header: 'Opgelet',\r\n message: 'Gelieve een vissoort te kiezen',\r\n buttons: [\r\n 'ok'\r\n ]\r\n });\r\n\r\n }\r\n\r\n if(closeScreen){\r\n setVangstToevoegenScreen(false);\r\n }\r\n };\r\n const NieuweVisToevoegen = () => {\r\n const addToListHouden = (e: any, i: number) => {\r\n var newList = cmHouden.slice(0, countHouden);\r\n var val = parseInt(e.target.value);\r\n if(val < 0 || Number.isNaN(val)){\r\n val = 0;\r\n }\r\n if(val > 200){\r\n val = 200;\r\n }\r\n if(Number.isInteger(val)){\r\n newList[i] = val;\r\n }\r\n newList = newList.filter(Number) \r\n //const newList = cmHouden.slice(0, i).concat(parseInt(e.target.value));\r\n //const newList = [...cmHouden.slice(0, i), ...cmHouden.slice(i + 1)];\r\n //const newList = cmHouden.splice(i, 0, e.target.value);\r\n setCmHouden(newList);\r\n };\r\n const addToListTeruggooi = (e: any, i: number) => {\r\n var newList = cmTeruggooi.slice(0, countTeruggooi);\r\n var val = parseInt(e.target.value);\r\n if(val < 0 || Number.isNaN(val)){\r\n val = 0;\r\n }\r\n if(val > 200){\r\n val = 200;\r\n }\r\n if(Number.isInteger(val)){\r\n newList[i] = val;\r\n }\r\n\r\n newList = newList.filter(Number) \r\n \r\n //const newList = cmTeruggooi.slice(0, i).concat(parseInt(e.target.value));\r\n //const newList = [...cmTeruggooi.slice(0, i), ...cmTeruggooi.slice(i + 1)];\r\n //const newList = cmTeruggooi.splice(i, 0, e.target.value);\r\n setCmTeruggooi(newList);\r\n };\r\n\r\n if (visFull['measure'] == 'gewicht') {\r\n rows.push(\r\n
\r\n
\r\n
\r\n Totaal aantal kg {\r\n var val = parseFloat(e.target.value);\r\n if(val < 0 || Number.isNaN(val)){\r\n val = 0;\r\n }\r\n if(val > 300){\r\n val = 300\r\n }\r\n setKg(val);\r\n }} />\r\n {/* setKg(e.detail.value)}> */}\r\n\r\n
\r\n
\r\n
\r\n );\r\n } else if (visFull['measure'] == 'lengtes') {\r\n const RenderHouden = () => {\r\n let HoudenInputs: any = [];\r\n for (let i = 0; i < countHouden; i++) {\r\n HoudenInputs.push(\r\n
\r\n
Lengte vis {i + 1} (cm)
\r\n addToListHouden(e, i)} />\r\n
\r\n );\r\n }\r\n return HoudenInputs;\r\n };\r\n const RenderTeruggooi = () => {\r\n let TeruggooiInputs: any = [];\r\n for (let i = 0; i < countTeruggooi; i++) {\r\n TeruggooiInputs.push(\r\n
\r\n
Lengte vis {i + 1} (cm)
\r\n addToListTeruggooi(e, i)} />\r\n
\r\n );\r\n }\r\n return TeruggooiInputs;\r\n };\r\n rows.push(\r\n
\r\n
\r\n
Houden
\r\n
\r\n
Aantal houden
\r\n \r\n {\r\n var val = parseFloat(e.target.value);\r\n if(val < 0 || Number.isNaN(val)){\r\n val = 0;\r\n }\r\n if(val > 1000){\r\n val = 1000\r\n }\r\n setCountHouden(val);\r\n }} />\r\n
\r\n
{RenderHouden()}
\r\n\r\n

\r\n
Teruggooi
\r\n
\r\n
Aantal teruggegooid
\r\n {\r\n var val = parseFloat(e.target.value);\r\n if(val < 0 || Number.isNaN(val)){\r\n val = 0;\r\n }\r\n if(val > 1000){\r\n val = 1000\r\n }\r\n setCountTeruggooi(val);\r\n }} />\r\n
\r\n
{RenderTeruggooi()}
\r\n
\r\n
\r\n //
\r\n // \r\n //
\r\n //
\r\n //
\r\n // \r\n // \r\n //
\r\n //
\r\n // \r\n // \r\n //
\r\n //
\r\n //
\r\n // addToList(e, i)} /> cm\r\n //
\r\n //
\r\n //
\r\n );\r\n // rows.push(\r\n // \r\n // );\r\n } else if(visFull['measure'] == 'hoeveelheid+gewicht') {\r\n rows.push(\r\n
\r\n
\r\n
Houden
\r\n
\r\n
Aantal houden
\r\n {\r\n var val = parseFloat(e.target.value);\r\n if(val < 0 || Number.isNaN(val)){\r\n val = 0;\r\n }\r\n if(val > 1000){\r\n val = 1000\r\n }\r\n setHouden(val);\r\n }} />\r\n
\r\n
\r\n \r\n
Totaal aantal kg
\r\n {\r\n var val = parseFloat(e.target.value);\r\n if(val < 0 || Number.isNaN(val)){\r\n val = 0;\r\n }\r\n if(val > 300){\r\n val = 300\r\n }\r\n setKg(val);\r\n }} />\r\n
\r\n

\r\n
Teruggooi
\r\n
\r\n \r\n
Aantal ondermaats
\r\n {\r\n var val = parseFloat(e.target.value);\r\n if(val < 0 || Number.isNaN(val)){\r\n val = 0;\r\n }\r\n if(val > 1000){\r\n val = 1000\r\n }\r\n setOndermaats(val);\r\n }} />\r\n
\r\n
\r\n
Aantal bovenmaats
\r\n {\r\n var val = parseFloat(e.target.value);\r\n if(val < 0 || Number.isNaN(val)){\r\n val = 0;\r\n }\r\n if(val > 1000){\r\n val = 1000\r\n }\r\n setBovenmaats(val);\r\n }} />\r\n
\r\n
\r\n
\r\n );\r\n }\r\n return rows;\r\n };\r\n // const listVisGen = () => {\r\n // return (\r\n // <>\r\n // {vissen.map((message) => (\r\n // \r\n // ))}\r\n // \r\n // );\r\n // };\r\n\r\n\r\n const vissoortHeaderModalOptions = {\r\n header: 'Kies een vissoort',\r\n //subHeader: 'Select your favorite topping',\r\n message: '(scrollen mogelijk)',\r\n translucent: true\r\n };\r\n\r\n if (PropsForm.currentStep !== 6) {\r\n // Prop: The current step\r\n return null;\r\n }\r\n // The markup for the Step 6 UI\r\n if (vangstToevoegenScreen == false) {\r\n // @ts-ignore\r\n document.getElementById('wizard-buttons').style.display ='flex'; \r\n\r\n var geregistreerdeVissen: string | any[] = [];\r\n if(dataVisVangst.length !== 0 && dataVisVangst.length !== undefined){\r\n try{\r\n geregistreerdeVissen = dataVisVangst.map(a => a.id);\r\n }\r\n catch(e){\r\n \r\n }\r\n }\r\n\r\n let andereVissen = vissen.filter(v => !geregistreerdeVissen.includes(v.id))\r\n return (\r\n <>\r\n setShowPopover({ showPopover: false, event: undefined })}>\r\n {\r\n PropsForm.readonly ?\r\n
\r\n \r\n
\r\n :\r\n
\r\n \r\n \r\n
\r\n }\r\n \r\n
\r\n
\r\n \r\n {\r\n PropsForm.readonly ? \"\"\r\n :\r\n
\r\n\r\n \r\n vangstToevoegen(e.detail.value)} className='full-width padding-left-0 div-left'>\r\n {\r\n andereVissen.map((message) => (\r\n {message.name}\r\n ))\r\n }\r\n
Vissoort toevoegen
\r\n
\r\n \r\n\r\n
\r\n\r\n }\r\n { !dataVisVangst ? \"\" :\r\n
\r\n {\r\n\r\n dataVisVangst && dataVisVangst.length > 0 ?\r\n \r\n dataVisVangst.map((message: any) => (\r\n \r\n
\r\n
{message.vis}\r\n
{\r\n e.persist();\r\n setSelected(message.id);\r\n setShowPopover({ showPopover: true, event: e });\r\n }} >\r\n {\r\n PropsForm.readonly ? \"\" : \r\n }\r\n
\r\n {\r\n //message.houden != null && message.houden != undefined && message.lengtesHouden.length === 0 && message.lengtesHouden.length === 0 \r\n vissen.filter(x => x.name === message.vis)[0].measure == \"hoeveelheid+gewicht\" ? \r\n
\r\n
\r\n
\r\n # Houden: {message.houden}\r\n
\r\n
\r\n Gewicht: {message.kg}kg\r\n
\r\n
\r\n
\r\n
\r\n # Teruggooi bovenmaats: {message.bovenmaats}\r\n
\r\n
\r\n # Teruggooi ondermaats: {message.ondermaats}\r\n
\r\n
\r\n
\r\n \r\n : vissen.filter(x => x.name === message.vis)[0].measure == \"lengtes\" ? \r\n
\r\n
\r\n Lengtes houden: {message.lengtesHouden.join(\", \")}\r\n
\r\n
\r\n Lengtes teruggooi: {message.lengtesTeruggooi.join(\", \")}\r\n
\r\n
\r\n : \r\n
\r\n Gewicht: {message.kg}kg\r\n
\r\n }\r\n \r\n
\r\n
\r\n )\r\n ) :
Nog geen vangsten geregistreerd
}\r\n
\r\n }\r\n\r\n\r\n\r\n
\r\n \r\n\r\n \r\n );\r\n } else if (vangstToevoegenScreen == true) {\r\n\r\n // HACKJOB\r\n const popovers = document.getElementsByClassName(\"c-pop-over\");\r\n for (var i = 0; i < popovers.length; i++) {\r\n popovers[i].setAttribute('is-open', 'false');\r\n }\r\n\r\n document.getElementById('wizard-buttons').style.display ='none'; \r\n // let geregistreerdeVissen = dataVisVangst.map(a => a.id);\r\n // let andereVissen = vissen.filter(v => !geregistreerdeVissen.includes(v.id))\r\n // let alGeregistreerd = geregistreerdeVissen.includes(vis);\r\n var bestaandeVis = vissen.find(v => v.id === vis);\r\n return (\r\n
\r\n
\r\n \r\n
\r\n \r\n {NieuweVisToevoegen()}\r\n\r\n
\r\n \r\n {/* */}\r\n {/* {!alGeregistreerd ?\r\n
\r\n\r\n Kies een vissoort\r\n setVis(e.detail.value)}>\r\n {\r\n andereVissen.map((message) => (\r\n {message.name}\r\n ))\r\n }\r\n \r\n\r\n \r\n
\r\n\r\n :\r\n
{bestaandeVis?.name}
\r\n } */}\r\n\r\n\r\n \r\n\r\n
\r\n terug()}>Vorige\r\n
\r\n toevoegen()}>Toevoegen\r\n
\r\n
\r\n
\r\n );\r\n }\r\n return <>;\r\n};\r\n// const Stap7: React.FC = (PropsForm) => {\r\n// const history = useHistory();\r\n\r\n// if (PropsForm.currentStep !== 7) {\r\n// // Prop: The current step\r\n// return null;\r\n// }\r\n\r\n\r\n\r\n// // The markup for the Step 7 UI\r\n// return (\r\n// <>\r\n// {/*

Info

*/}\r\n \r\n//
\r\n// \r\n// {\r\n// PropsForm.readonly ?

Dit logboek werd eerder al verstuurd. Deze opnieuw versturen is niet meer mogelijk.

\r\n// :\r\n//

Bedankt voor de registratie. Indien de gegevens volledig zijn kunt u deze nu doorsturen.

\r\n// }\r\n\r\n\r\n//
\r\n//
\r\n// \r\n//

Bedankt, we hebben uw logboek ontvangen!

\r\n \r\n\r\n//
\r\n\r\n// \r\n// );\r\n//};\r\nexport default Logboek;","export const DEVICE: string = 'PWA';\r\n\r\nexport default DEVICE;\r\n","import { IonButtons, IonContent, IonHeader, IonMenuButton, IonPage, IonTitle, IonToolbar, IonProgressBar, IonLabel } from '@ionic/react';\r\nimport { useParams } from 'react-router';\r\nimport React, { useState, useEffect } from 'react';\r\nimport LogboekScreen from '../components/Logboek';\r\n\r\ninterface Params {\r\n id: string;\r\n}\r\nconst Logboek: React.FC = () => {\r\n const { id } = useParams();\r\n const [progressbar, setProgressbar] = useState(0);\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n Vangstregistratie\r\n \"logo\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n
Stap 1/6
\r\n\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Logboek;\r\n","import { useHistory } from 'react-router-dom';\r\nimport { Storage } from '@capacitor/storage';\r\nimport { IonPopover, IonButton, IonIcon } from '@ionic/react';\r\nimport React, { useState, useEffect, useRef } from 'react';\r\nimport { addOutline, closeOutline, chevronBackOutline } from 'ionicons/icons';\r\nimport API_URL from '../utils/api';\r\nimport dataAccess from '../utils/fetch';\r\nimport { refreshSharp } from 'ionicons/icons';\r\n\r\ninterface data {\r\n id: string;\r\n name: string;\r\n location: string;\r\n measur: string;\r\n}\r\n\r\nconst VangstToevoegenScreen: React.FC = () => {\r\n const [vissen, setVissen] = useState([]);\r\n const [vis, setVis] = useState();\r\n const [visFull, setVisFull] = useState({});\r\n const [count, setCount] = useState(1);\r\n const history = useHistory();\r\n let rows: any = [];\r\n useEffect(() => {\r\n (async function () {\r\n let vissen = await dataAccess.get('species');\r\n setVissen(vissen);\r\n })();\r\n vissen.forEach((element) => {\r\n if (element.id == vis) {\r\n setVisFull(element);\r\n }\r\n });\r\n }, [vis, count]);\r\n\r\n const close = (id: number) => {\r\n rows.splice(id, 1);\r\n setCount(count - 1);\r\n NieuweVisToevoegen();\r\n };\r\n\r\n const terug = () => {\r\n history.goBack();\r\n };\r\n const toevoegen = () => {\r\n if (visFull['measure'] == 'hoeveelheid+gewicht') {\r\n } else if (visFull['measure'] == 'gewicht') {\r\n } else if (visFull['measure'] == 'lengtes') {\r\n }\r\n };\r\n const NieuweVisToevoegen = () => {\r\n if (visFull['measure'] == 'hoeveelheid+gewicht') {\r\n rows.push(\r\n
\r\n
\r\n
Houden
\r\n
\r\n stuks\r\n
\r\n
\r\n Totaal aantal kg: \r\n
\r\n
\r\n
Teruggooi
\r\n
\r\n Ondermaats\r\n stuks\r\n
\r\n
\r\n Bovenmaats\r\n stuks\r\n
\r\n
\r\n
\r\n );\r\n } else if (visFull['measure'] == 'gewicht') {\r\n rows.push(\r\n
\r\n
\r\n
\r\n Totaal aantal kg: \r\n
\r\n
\r\n
\r\n );\r\n } else if (visFull['measure'] == 'lengtes') {\r\n for (let i = 0; i < count; i++) {\r\n rows.push(\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n cm\r\n
\r\n
\r\n
\r\n );\r\n }\r\n rows.push(\r\n \r\n );\r\n }\r\n\r\n return rows;\r\n };\r\n const listVisGen = () => {\r\n return (\r\n <>\r\n {vissen.map((message) => (\r\n \r\n ))}\r\n \r\n );\r\n };\r\n return (\r\n
\r\n
\r\n

Vangst

\r\n \r\n
\r\n \r\n {NieuweVisToevoegen()}\r\n\r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default VangstToevoegenScreen;\r\n","import { IonButtons, IonContent, IonHeader, IonMenuButton, IonPage, IonTitle, IonToolbar } from '@ionic/react';\r\nimport { useParams } from 'react-router';\r\nimport VangstToevoegenScreen from '../components/VangstToevoegenScreen';\r\n\r\nconst VangstToevoegen: React.FC = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n Vangst toevoegen\r\n \"logo\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default VangstToevoegen;\r\n","import { IonApp, IonRouterOutlet, IonSplitPane } from '@ionic/react';\r\nimport { IonReactRouter } from '@ionic/react-router';\r\nimport { Redirect, Route, Switch } from 'react-router-dom';\r\nimport { Plugins } from '@capacitor/core';\r\nimport React, { useState } from 'react';\r\nimport { setupIonicReact } from '@ionic/react';\r\nimport Menu from './components/Menu';\r\nimport Login from './pages/Login';\r\nimport Registreren from './pages/Registreren';\r\nimport WwVergeten from './pages/WWVergeten';\r\nimport WwReset from './pages/WWReset';\r\nimport VEmail from './pages/EmailValidate';\r\nimport Logout from './pages/Logout';\r\nimport Home from './pages/Home';\r\nimport Account from './pages/Account';\r\nimport Overzicht from './pages/Overzicht';\r\nimport Logboek from './pages/Logboek';\r\nimport VangstToevoegen from './pages/VangstToevoegen';\r\n/* Core CSS required for Ionic components to work properly */\r\nimport '@ionic/react/css/core.css';\r\n\r\n/* Basic CSS for apps built with Ionic */\r\nimport '@ionic/react/css/normalize.css';\r\nimport '@ionic/react/css/structure.css';\r\nimport '@ionic/react/css/typography.css';\r\n\r\n/* Optional CSS utils that can be commented out */\r\nimport '@ionic/react/css/padding.css';\r\nimport '@ionic/react/css/float-elements.css';\r\nimport '@ionic/react/css/text-alignment.css';\r\nimport '@ionic/react/css/text-transformation.css';\r\nimport '@ionic/react/css/flex-utils.css';\r\nimport '@ionic/react/css/display.css';\r\n\r\n/* Theme variables */\r\nimport './theme/variables.css';\r\nimport './style/screen.scss';\r\n\r\n// setupIonicReact({\r\n// mode: 'ios'\r\n// });\r\n\r\nconst App: React.FC = () => {\r\n const { Storage } = Plugins;\r\n const [authenticated, setAuthenticated] = useState(false);\r\n\r\n setupIonicReact({\r\n //mode: 'md'\r\n });\r\n\r\n const getItem = async () => {\r\n const value = await Storage.get({ key: 'Logged-in' });\r\n if (value.value == 'true') {\r\n setAuthenticated(true);\r\n }\r\n };\r\n getItem();\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default App;\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://cra.link/PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.0/8 are considered localhost for IPv4.\r\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\r\n);\r\n\r\ntype Config = {\r\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\r\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\r\n};\r\n\r\nexport function register(config?: Config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js?v=2`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://cra.link/PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl: string, config?: Config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then((registration) => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://cra.link/PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch((error) => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl, {\r\n headers: { 'Service-Worker': 'script' },\r\n })\r\n .then((response) => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then((registration) => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log('No internet connection found. App is running in offline mode.');\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready\r\n .then((registration) => {\r\n registration.unregister();\r\n })\r\n .catch((error) => {\r\n console.error(error.message);\r\n });\r\n }\r\n}\r\n","import { ReportHandler } from 'web-vitals';\r\n\r\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","import React from 'react';\r\nimport { createRoot } from 'react-dom/client';\r\nimport App from './App';\r\nimport * as serviceWorkerRegistration from './serviceWorkerRegistration';\r\nimport reportWebVitals from './reportWebVitals';\r\n\r\nconst container = document.getElementById('root');\r\nconst root = createRoot(container!); // createRoot(container!) if you use TypeScript\r\nroot.render();\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://cra.link/PWA\r\nserviceWorkerRegistration.register();\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n"],"sourceRoot":""}