{"version":3,"sources":["theme.js","AppUtility.js","Map/Map.js","Navbar/Navbar.js","ApiManager.js","ActionPane/AddPhoto/AnswerQuestionsStep.js","ActionPane/AddPhoto/AnswerQuestionsStep2.js","ActionPane/AddPhoto/AnswerQuestionsStepb.js","ActionPane/AddPhoto/AddPhoto.js","ActionPane/PostPhoto/PostPhoto.js","ActionPane/Timeline/Timeline.js","ActionPane/ActionPane.js","ModalView/ModalView.js","App.js","serviceWorker.js","index.js","ActionPane/AddPhoto/assets/image1.jpg","ActionPane/AddPhoto/assets/image2.jpg","ActionPane/AddPhoto/assets/image10.jpg","ActionPane/AddPhoto/assets/image3.png","ActionPane/AddPhoto/assets/image4.png","ActionPane/AddPhoto/assets/image6.png","ActionPane/AddPhoto/assets/image7.png","ActionPane/AddPhoto/assets/image8.png","ActionPane/AddPhoto/assets/image5.png","ActionPane/AddPhoto/assets/image9.png"],"names":["theme","palette","common","color","primary","main","contrastText","secondary","info","typography","htmlFontSize","fontFamily","join","h1","fontWeight","lineHeight","textTransform","fontSize","h2","display","background","padding","paddingLeft","paddingRight","width","transform","marginBottom","h3","h4","h5","subtitle1","textAlign","subtitle2","body1","hyphens","AppUtility","actionPaneMode","none","addPhoto","postPhoto","timeline","L","Icon","Default","prototype","_getIconUrl","mergeOptions","iconRetinaUrl","require","iconUrl","shadowUrl","GEOMETRY_STYLES","field","weight","fillOpacity","nearbyField","selectedNearbyField","selectedField","accuracyCircle","MainMap","props","leafletMap","handleFeatureClick","feature","selectLocation","onFeatureClick","handleCircleClick","componentDidUpdate","prevProps","geoJsons","position","flyToPos","coords","geoJsonElements","map","geometry","type","coordinates","lng","lat","CircleMarker","key","properties","id","center","radius","onClick","GeoJSON","data","style","onEachFeature","layer","on","click","setState","selectedFeature","selectedGeoJsonElement","pos","zoom","leafletElement","current","flyTo","animate","onLeafletViewportChange","getCenter","onLeafletViewportChanged","setNewViewportTimer","clearTimeout","setTimeout","screenBounds","getBounds","bounds","xMin","getWest","xMax","getEast","yMin","getSouth","yMax","getNorth","state","firsttime","onMapBoundsChange","React","createRef","drawAccuracyCircle","this","attributionControl","setPrefix","fullStyle","height","positionMarker","Marker","opacity","Popup","Circle","JSON","stringify","accuracy","interactive","Map","ref","zoomSnap","zoomDelta","zoomControl","onViewportChanged","onViewportChange","Pane","zIndex","TileLayer","url","maxNativeZoom","maxZoom","noWrap","draggable","Component","NavBar","componentDidMount","open","AppBar","className","Toolbar","src","alt","Button","onOpenAccount","user","username","apiUrl","ApiManager","adminUserName","accessLevels","viewMap","aggregatedData","viewGeoMessages","addGeoMessages","addGeoMessageImage","addPrivateGeoMessage","addPolygons","submitRasterData","addRestrictedPolygons","viewPrivateGeoMessages","deleteGeomessages","alterOrDeleteCustomPolygons","forms","customPolygonLayers","userManagement","owner","mapPublicLevelOne","mapPublicLevelTwo","min","max","get","body","apiManagerFetch","post","fetch","method","CustomError","status","message","error","Error","call","name","stack","a","headers","token","gottenResponse","isText","isJson","options","then","response","ok","alert","contentType","includes","json","text","blob","result","Object","create","constructor","AnswerQuestionsStep","onSubmitInfo","useState","start","setStart","handleSubmit","value","class","handleNoClick","console","log","Paper","variant","square","backgroundColor","flexDirection","Typography","justifyContent","paddingTop","startIcon","AnswerQuestionsStep2","answer1","setAnswer1","answer2","setAnswer2","answer3","setAnswer3","FormControl","fullWidth","Select","onChange","event","target","label","MenuItem","component","1","2","3","AnswerQuestionsStepb","Alert","elevation","useStyles","makeStyles","listItem","gap","Instructions","styles","canProceed","count","example1","example2","createMuiTheme","blue","ProceedButton","visible","handleProceedClick","ThemeProvider","UploadButton","step","onPhotoChange","accept","capture","htmlFor","AddPhoto","handleClose","reason","complete","answerType","session","sessionId","location","x","y","mapId","extMap","layerId","geometryId","addedFeature","onActionPaneModeChange","catch","err","handleSubmitInfo1","onTypeChange","handleSubmitInfo2","onOpenSnackbar","handleRejectClick","confirm","handleConfirmClick","base64","photos","push","image","photoType","e","file","files","toBase64","length","Snackbar","snackbarOpen","autoHideDuration","onClose","anchorOrigin","vertical","horizontal","severity","Promise","resolve","reject","reader","FileReader","readAsDataURL","onload","onerror","PostPhoto","manualSelect","handleManualButtonClick","onLocationSelect","handleSubmitButtonClick","alignItems","marginTop","getMessageData","parse","combineMessages","messages","forEach","keys","items","descriptionItem","find","item","group","images","filter","textMessages","sort","b","aDate","moment","date","bDate","isBefore","isAfter","Timeline","getMessages","elementId","geometryIds","getGeoMessages","geoMessages","combined","viewImage","geoMessage","fullImage","onModalChange","messageId","onloadend","deleteMessage","onDelete","window","promises","all","remainingGeoMessages","timelineItems","canDelete","accessLevel","Step","active","StepLabel","IconButton","format","StepContent","listStyleType","margin","flexWrap","thumbnail","Stepper","orientation","LetOp","ActionPane","onCloseActionPane","photoBase64","handleTypeChange","prevActionPaneMode","mode","paddingBottom","caption","overflow","ModalView","closeModal","uploading","children","DefaultTheme","ACCOUNTS_URL","PERCELEN_LAYER_ID","FREE_PERCELEN_LAYER_ID","App","locationError","gettingGeometries","freezeGeometries","lastGetGeometriesCall","validateUser","onLogout","initAccount","initObject","dev","document","getElementById","contentWindow","postMessage","onLocationChange","newPos","latitude","longitude","getGeometriesNearPos","onLocationChangeErr","code","retrieveUser","cb","userJson","localStorage","getItem","toLowerCase","removeItem","initMapData","access","pageSize","results","maps","metadata","freeAccessMap","freeAccessMapMetadata","plotsNetherlandsMap","geometryLayers","getGeometry","features","getFeatures","getGeometries","floatingMessage","extGeoMessages","allMessages","i","featureCollection","featureCollection2","long","maxDeviation","longDiff","Math","cos","PI","nearbyBounds","latDiff","r","onAccountAction","onLogin","openAccount","setItem","mapBounds","mapCenter","hard","handleLocationSelect","onAddPhotoClick","submitNewPlot","addedId","onShowFloatingMessage","box","bbox","lon","onFreezeGeometries","freeze","content","modalContent","accountsUrl","split","href","parseInt","init","openAddTooltip","addEventListener","locationOpts","enableHighAccuracy","navigator","geolocation","getCurrentPosition","watchPosition","prevState","iframe","commonProps","size","openSnackbar","title","onLoad","Boolean","hostname","match","ReactDOM","render","StrictMode","serviceWorker","ready","registration","unregister","module","exports"],"mappings":"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","file":"static/js/main.028657d2.chunk.js","sourcesContent":["var theme =\n{\n\tpalette: {\n\t\tcommon: { color: '#fff' },\n\t\tprimary: { main: '#4caeb1', contrastText: '#fff' },\n secondary: { main: '#ffffff', contrastText: '#026464' },\n info: { main: '#f5f5f5' }\n\t},\n\ttypography: {\n\t\thtmlFontSize: 14,\n\t\tfontFamily: [\n\t\t\t'\"Roboto Condensed\"',\n\t\t\t'\"Roboto\"',\n\t\t\t'\"-apple-system\"',\n\t\t\t'\"BlinkMacSystemFont\"',\n\t\t\t'\"Segoe UI\"',\n\t\t\t'\"Helvetica Neue\"',\n\t\t\t'\"Arial\"',\n\t\t\t'\"sans-serif\"',\n\t\t\t'\"Apple Color Emoji\"',\n\t\t\t'\"Segoe UI Emoji\"',\n\t\t\t'\"Segoe UI Symbol\"',\n\t\t\t'\"Exo 2\"',\n\t\t].join(','),\n\t\th1: {\n\t\t\tfontFamily: '\"Exo 2\", \"Roboto Condensed\", \"Roboto\", \"Arial\", \"sans-serif\"',\n\t\t\tfontWeight: 500,\n\t\t\tlineHeight: 1.25,\n\t\t\ttextTransform: 'uppercase',\n\t\t\tfontSize: '2.5rem',\n\t\t},\n\t\th2: {\n\t\t\tfontFamily: '\"Exo 2\", \"Roboto Condensed\", \"Roboto\", \"Arial\", \"sans-serif\"',\n\t\t\tfontWeight: 400,\n\t\t\tfontSize: '2.5rem',\n\t\t\tlineHeight: 1,\n\t\t\ttextTransform: 'uppercase',\n\t\t\tdisplay: 'block',\n\t\t\tbackground: '#026464',\n\t\t\tpadding: '1.5rem',\n\t\t\tpaddingLeft: '20vw',\n\t\t\tpaddingRight: '5vw',\n\t\t\twidth: '100vw',\n\t\t\ttransform: 'translateX(-20vw)',\n\t\t\tcolor: 'white',\n\t\t\tmarginBottom: '2rem',\n\t\t},\n\t\th3: {\n\t\t\tfontFamily: '\"Exo 2\", \"Roboto Condensed\", \"Roboto\", \"Arial\", \"sans-serif\"',\n\t\t\tfontWeight: 700,\n\t\t\tfontSize: '2rem',\n\t\t\tlineHeight: 1.25,\n\t\t\ttextTransform: 'uppercase',\n\t\t},\n\t\th4: {\n\t\t\tfontFamily: '\"Roboto Condensed\", \"Roboto\", \"Arial\", \"sans-serif\"',\n\t\t\tfontWeight: 400,\n\t\t\tfontSize: '1.5rem',\n\t\t\tlineHeight: 1.5,\n\t\t},\n\t\th5: {\n\t\t\tfontFamily: '\"Roboto Condensed\", \"Roboto\", \"Arial\", \"sans-serif\"',\n\t\t\tfontWeight: 700,\n\t\t\tfontSize: '1.5rem',\n\t\t\tlineHeight: 1,\n\t\t},\n\t\tsubtitle1: {\n\t\t\tfontFamily: '\"Roboto Condensed\", \"Roboto\", \"Arial\", \"sans-serif\"',\n\t\t\tfontWeight: 300,\n\t\t\tfontSize: '1.25rem',\n\t\t\tlineHeight: 1.5,\n\t\t\ttextAlign: 'left',\n\t\t},\n\t\tsubtitle2: {\n\t\t\tfontFamily: '\"Roboto Condensed\", \"Roboto\", \"Arial\", \"sans-serif\"',\n\t\t\tfontWeight: 400,\n\t\t\tfontSize: '1rem',\n\t\t\tlineHeight: 1,\n\t\t\ttextTransform: 'uppercase',\n\t\t},\n\t\tbody1: {\n\t\t\tfontFamily: '\"Roboto Condensed\", \"Roboto\", \"Arial\", \"sans-serif\"',\n\t\t\tfontWeight: 400,\n\t\t\tfontSize: '1.1rem',\n\t\t\tlineHeight: 1.5,\n\t\t\thyphens: 'auto',\n\t\t\ttextAlign: 'justify',\n\t\t},\n\t},\n}\n\nexport default theme;","const AppUtility = {\n actionPaneMode: {\n none: 0,\n addPhoto: 1,\n postPhoto: 2,\n timeline: 3,\n },\n};\n\nexport default AppUtility;\n","import React, { Component } from \"react\";\nimport { Map, TileLayer, Pane, Marker, Popup, Circle, GeoJSON, CircleMarker } from \"react-leaflet\";\nimport L from \"leaflet\";\nimport \"leaflet/dist/leaflet.css\";\n\nimport AppUtility from \"../AppUtility\";\n\nimport \"./Map.css\";\n\ndelete L.Icon.Default.prototype._getIconUrl;\n\nL.Icon.Default.mergeOptions({\n iconRetinaUrl: require(\"leaflet/dist/images/marker-icon-2x.png\"),\n iconUrl: require(\"leaflet/dist/images/marker-icon.png\"),\n shadowUrl: require(\"leaflet/dist/images/marker-shadow.png\"),\n});\n\n// const NEARBY_STYLE = {\n// // color: '#b3ce8c',\n// color: '#ff0000',\n// weight: 2,\n// fillOpacity: 0.2\n// };\n\nconst GEOMETRY_STYLES = {\n field: {\n color: \"#b3ce8c\",\n // color: '#ffa500',\n weight: 2,\n fillOpacity: 0.4,\n },\n nearbyField: {\n // color: '#3388ff',\n // color: '#ffa500',\n weight: 2,\n fillOpacity: 0.0,\n },\n selectedNearbyField: {\n color: \"#66a6ff\",\n // color: '#ffa500',\n weight: 2,\n fillOpacity: 0.3,\n },\n selectedField: {\n color: \"#4caeb1\",\n weight: 2,\n fillOpacity: 0.2,\n },\n accuracyCircle: {\n color: \"#3388ff\",\n weight: 2,\n fillOpacity: 0.1,\n },\n};\n\nclass MainMap extends Component {\n leafletMap = null;\n\n constructor(props) {\n super(props);\n\n this.leafletMap = React.createRef();\n\n this.state = {\n center: null,\n geoJsonElements: [],\n selectedGeoJsonElement: null,\n firsttime: true,\n drawAccuracyCircle: false,\n };\n }\n\n componentDidMount() {\n let leafletElement = this.leafletMap.current.leafletElement;\n\n leafletElement.attributionControl.setPrefix(false);\n\n let position = this.props.position;\n if (position) {\n setTimeout(() => this.setState({ drawAccuracyCircle: true }), 5000);\n this.flyToPos(position.coords);\n }\n }\n\n handleFeatureClick = (feature) => () => {\n if (this.props.selectLocation) {\n return;\n }\n this.props.onFeatureClick(feature);\n };\n handleCircleClick = (feature) => () => {\n if (this.props.selectLocation || this.props.actionPaneMode === AppUtility.actionPaneMode.postPhoto) {\n return;\n }\n this.props.onFeatureClick(feature);\n };\n componentDidUpdate = (prevProps) => {\n const { geoJsons, position } = this.props;\n\n if (!prevProps.position && position) {\n this.flyToPos(position.coords);\n } else if (\n prevProps.actionPaneMode !== AppUtility.actionPaneMode.postPhoto &&\n this.props.actionPaneMode === AppUtility.actionPaneMode.postPhoto\n ) {\n this.flyToPos(position.coords);\n }\n\n if (prevProps.geoJsons !== geoJsons) {\n let geoJsonElements = geoJsons.map((feature) => {\n if (feature.geometry.type === \"Point\") {\n if (this.props.actionPaneMode === AppUtility.actionPaneMode.postPhoto) {\n return null;\n }\n const [lng, lat] = feature.geometry.coordinates;\n return (\n \n );\n }\n return (\n layer.on({ click: this.handleFeatureClick(feature) })}\n />\n );\n });\n\n this.setState({ geoJsonElements: geoJsonElements });\n }\n\n let selectedFeature = this.props.selectedFeature;\n\n if (prevProps.selectedFeature !== selectedFeature) {\n let selectedGeoJsonElement = null;\n\n if (selectedFeature) {\n selectedGeoJsonElement = (\n \n );\n }\n\n this.setState({ selectedGeoJsonElement: selectedGeoJsonElement });\n }\n };\n\n flyToPos = (pos, zoom = 16) => {\n let leafletElement = this.leafletMap.current.leafletElement;\n\n leafletElement.flyTo(pos, zoom, { animate: true });\n };\n\n onLeafletViewportChange = () => {\n const center = this.leafletMap.current.leafletElement.getCenter(); //get map center\n this.setState({ center });\n };\n onLeafletViewportChanged = () => {\n if (this.setNewViewportTimer) {\n clearTimeout(this.setNewViewportTimer);\n }\n\n let cb = () => {\n const center = this.leafletMap.current.leafletElement.getCenter(); //get map center\n const screenBounds = this.leafletMap.current.leafletElement.getBounds();\n const bounds = {\n xMin: screenBounds.getWest(),\n xMax: screenBounds.getEast(),\n yMin: screenBounds.getSouth(),\n yMax: screenBounds.getNorth(),\n };\n\n if (this.state.firsttime) {\n this.setState({ firsttime: false }, () => {\n this.props.onMapBoundsChange(bounds, center, true);\n });\n } else {\n this.props.onMapBoundsChange(bounds, center, false);\n }\n };\n\n this.setNewViewportTimer = setTimeout(cb, 400);\n };\n\n render() {\n const mapCenter = [52.09, 5.1]; // Utrecht\n\n const fullStyle = { height: \"100%\", width: \"100%\" };\n\n const { position } = this.props;\n let positionMarker = null;\n let accuracyCircle = null;\n if (position) {\n positionMarker = (\n \n U bent hier\n \n );\n\n accuracyCircle = (\n \n );\n }\n\n return (\n
\n \n \n \n \n \n {this.state.geoJsonElements}\n {this.state.selectedGeoJsonElement}\n \n \n {true ? accuracyCircle : null}\n {positionMarker}\n {this.props.selectLocation && this.state.center && (\n \n New plot position\n \n )}\n \n \n
\n );\n }\n}\n\nexport default MainMap;\n","import React, { Component } from 'react';\n\nimport Button from '@material-ui/core/Button';\nimport AppBar from '@material-ui/core/AppBar';\nimport Toolbar from '@material-ui/core/Toolbar';\n\nimport './Navbar.css'\n\nclass NavBar extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\topen: false\n\t\t};\n\t}\n\n\tcomponentDidMount = () => {\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tBiodiversiteits Monitor\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n}\n\nexport default NavBar;\n","const apiUrl = \"https://api.ellipsis-drive.com/v1\";\n// const apiUrl = \"https://dev.api.ellipsis-drive.com/v1\";\n\n// const apiUrl = 'http://localhost:7553/v1';\n\nconst ApiManager = {\n adminUserName: \"admin\",\n\n apiUrl: apiUrl,\n\n accessLevels: {\n viewMap: 100,\n aggregatedData: 200,\n viewGeoMessages: 300,\n addGeoMessages: 400,\n addGeoMessageImage: 410,\n addPrivateGeoMessage: 420,\n addPolygons: 500,\n submitRasterData: 515,\n addRestrictedPolygons: 525,\n viewPrivateGeoMessages: 550,\n deleteGeomessages: 600,\n alterOrDeleteCustomPolygons: 700,\n forms: 750,\n customPolygonLayers: 800,\n userManagement: 900,\n owner: 1000,\n\n mapPublicLevelOne: 300, // viewGeoMessages\n mapPublicLevelTwo: 500, // addPolygons\n\n min: 0,\n max: 1000,\n },\n\n get: (url, body, user) => {\n return apiManagerFetch(\"GET\", url, body, user);\n },\n\n post: (url, body, user) => {\n return apiManagerFetch(\"POST\", url, body, user);\n },\n\n fetch: (method, url, body, user) => {\n return apiManagerFetch(method, url, body, user);\n },\n};\n\nfunction CustomError(status, message) {\n var error = Error.call(this, message);\n\n this.name = \"API Error\";\n this.message = error.message;\n this.stack = error.stack;\n this.status = status;\n}\n\nCustomError.prototype = Object.create(Error.prototype);\nCustomError.prototype.constructor = CustomError;\n\nasync function apiManagerFetch(method, url, body, user) {\n url = `${apiUrl}${url}`;\n let headers = {};\n\n if (body) {\n headers[\"Content-Type\"] = \"application/json\";\n }\n\n if (user) {\n headers[\"Authorization\"] = `Bearer ${user.token}`;\n }\n\n let gottenResponse = null;\n let isText = false;\n let isJson = false;\n\n let options = {\n method: method,\n headers: headers,\n };\n\n if (body) {\n options.body = JSON.stringify(body);\n }\n\n return await fetch(url, options)\n .then((response) => {\n if (!response.ok) {\n if (response.status === 429) {\n alert(\n `U heeft de kaart te veel bevraagd. Probeer over een minuut nog eens. Neem contact op met de eigenaar van de kaart om uw limiet te verhogen.`\n );\n }\n\n let err = { status: response.status, message: response.message };\n\n throw err;\n }\n\n gottenResponse = response;\n\n let contentType = response.headers.get(\"Content-Type\");\n\n if (contentType) {\n isText = contentType.includes(\"text\");\n isJson = contentType.includes(\"application/json\");\n } else {\n isText = true;\n }\n\n if (isJson) {\n return response.json();\n } else if (isText) {\n return response.text();\n } else {\n return response.blob();\n }\n })\n .then((result) => {\n if (gottenResponse.status === 200) {\n return result;\n } else {\n if (!isText) {\n throw new CustomError(gottenResponse.status, result.message);\n } else {\n throw new CustomError(gottenResponse.status, result);\n }\n }\n });\n}\n\nexport default ApiManager;\n","import React, { useState } from \"react\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Button from \"@material-ui/core/Button\";\nimport NavigateNextIcon from \"@material-ui/icons/NavigateNext\";\nimport { Paper } from \"@material-ui/core\";\n\nimport choice1 from \"./assets/image1.jpg\";\nimport choice2 from \"./assets/image2.jpg\";\nimport choice3 from \"./assets/image10.jpg\";\nimport choice4 from \"./assets/image3.png\";\nimport choice5 from \"./assets/image4.png\";\nimport choice6 from \"./assets/image6.png\";\nimport choice7 from \"./assets/image7.png\";\nimport choice8 from \"./assets/image8.png\";\n\nexport const AnswerQuestionsStep = ({ onSubmitInfo }) => {\n const [start, setStart] = useState(true);\n\n const handleSubmit = (value) => () => {\n onSubmitInfo({ class: value });\n };\n const handleYesClick = () => {\n setStart(true);\n };\n const handleNoClick = () => {\n console.log(\"NO\");\n onSubmitInfo(null);\n };\n if (!start) {\n return (\n \n \n Bent u deskundig op het terrein van kruidenrijkdom van graslanden, zodat u het grasland kunt typeren (we\n gebruiken de graslandtypen van de veldgids van Schippers et al., 2012).\n \n
\n \n \n
\n \n );\n }\n return (\n
\n \n \n Bent u in staat om voor dit perceel het volgende onderscheid te maken? Zo ja vink dan aan, kies anders nee\n \n \n\n \n \n 0-A. Engels Raaigrasland\n \n \n glanzend groene productieve grassoorten; Type 0 in Schippers et al., 2012\n \n\n
{true ? null : }
\n \n \n \n \n 0-B. Productieve voederkruiden\n \n \n Ingezaaide productieve voederkruiden (productieve grassen met o.a. smalle weegbree, cichorei en div. klavers)\n \n\n
{true ? null : }
\n \n \n \n \n 0-C. Productief klavergrasland\n \n Productief klavergrasland (productieve grassen met minimaal 10% klaver)\n\n
{true ? null : }
\n \n \n \n \n Geen van de typen 0-A, 0-B of 0-C \n (kies dit alleen als u het onderscheid tussen typen 1-5 niet kent) )\n \n Het grasland voldoet aan geen van de genoemde typen\n\n
{true ? null : }
\n \n \n\n \n \n Nee\n \n Ik ben niet in staat deze typering goed te maken.\n
{true ? null : }
\n \n \n\n
\n \n
\n
\n );\n};\n","import React, { useState } from \"react\";\nimport Typography from \"@material-ui/core/Typography\";\nimport { FormControl, MenuItem, Paper, Select } from \"@material-ui/core\";\nimport Button from \"@material-ui/core/Button\";\nimport DoneIcon from \"@material-ui/icons/Done\";\nimport NavigateNextIcon from \"@material-ui/icons/NavigateNext\";\n\nexport const AnswerQuestionsStep2 = ({ onSubmitInfo }) => {\n const [start, setStart] = useState(false);\n const [answer1, setAnswer1] = useState(null);\n const [answer2, setAnswer2] = useState(null);\n const [answer3, setAnswer3] = useState(null);\n\n const handleGrazingChange = (event) => {\n setAnswer1(event.target.value);\n };\n const handleOverseededChange = (event) => {\n setAnswer2(event.target.value);\n };\n const handleRateChange = (event) => {\n setAnswer3(event.target.value);\n };\n const handleSubmitClick = () => {\n onSubmitInfo({ 1: answer1, 2: answer2, 3: answer3 });\n };\n const handleYesClick = () => {\n setStart(true);\n };\n const handleNoClick = () => {\n onSubmitInfo(null);\n };\n if (!start) {\n return (\n \n Bent u bekend met het beheer of gebruik van dit grasland?\n
\n \n \n
\n \n );\n }\n return (\n
\n Fill:\n\n Wordt dit perceel begraasd?\n \n \n \n\n\n Is dit grasland recentelijk (afgelopen 5 jaar) ingezaaid of doorgezaaid?\n \n \n \n Hoe productief schat u dit grasland in?\n \n \n \n
\n }\n onClick={handleSubmitClick}\n >\n Klaar met deze stap\n \n \n
\n
\n );\n};\n","import React, { useState } from \"react\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Button from \"@material-ui/core/Button\";\nimport NavigateNextIcon from \"@material-ui/icons/NavigateNext\";\nimport { Paper } from \"@material-ui/core\";\n\nimport choice1 from \"./assets/image1.jpg\";\nimport choice2 from \"./assets/image2.jpg\";\nimport choice3 from \"./assets/image10.jpg\";\nimport choice4 from \"./assets/image3.png\";\nimport choice5 from \"./assets/image4.png\";\nimport choice6 from \"./assets/image6.png\";\nimport choice7 from \"./assets/image7.png\";\nimport choice8 from \"./assets/image8.png\";\n\nexport const AnswerQuestionsStepb = ({ onSubmitInfo }) => {\n const [start, setStart] = useState(true);\n\n const handleSubmit = (value) => () => {\n onSubmitInfo({ class: value });\n };\n const handleYesClick = () => {\n setStart(true);\n };\n const handleNoClick = () => {\n onSubmitInfo(null);\n };\n if (!start) {\n return (\n \n \n Bent u deskundig op het terrein van kruidenrijkdom van graslanden, zodat u het grasland kunt typeren (we\n gebruiken de graslandtypen van de veldgids van Schippers et al., 2012).\n \n
\n \n \n
\n \n );\n }\n return (\n
\n \n \n Bent u bekend met de indeling van Wim Schippers’ veldgids uit 2012? Zo ja vink dat dan het juiste type aan,\n kies anders nee\n \n \n\n \n \n 1. Grassen-mix (Type 1 in Schippers, 2012)\n \n\n
{true ? null : }
\n \n \n \n \n 2. Dominant stadium (Type 2 in Schippers, 2012)\n \n\n
{true ? null : }
\n \n \n \n \n 3. Gras-kruiden-mix (Type 3 in Schippers, 2012)\n \n\n
{true ? null : }
\n \n \n \n \n 4. Bloemrijk grasland (Type 4 in Schippers, 2012)\n \n\n
{true ? null : }
\n \n \n \n \n 5. Schraalland (Type 5 in Schippers, 2012)\n \n\n
{true ? null : }
\n \n \n\n \n \n 6. Nee ik ben hier niet mee bekend\n \n\n
{true ? null : }
\n \n \n\n
\n \n
\n
\n );\n};\n","import React, { Component } from \"react\";\n\nimport Button from \"@material-ui/core/Button\";\nimport { makeStyles } from \"@material-ui/core/styles\";\n\nimport AddAPhotoIcon from \"@material-ui/icons/AddAPhoto\";\n\nimport AppUtility from \"../../AppUtility\";\nimport MuiAlert from \"@material-ui/lab/Alert\";\n\nimport \"./AddPhoto.css\";\nimport { Paper, Snackbar, Typography } from \"@material-ui/core\";\nimport ApiManager from \"../../ApiManager\";\nimport PublishIcon from \"@material-ui/icons/Publish\";\nimport CancelIcon from \"@material-ui/icons/Cancel\";\nimport NavigateNextIcon from \"@material-ui/icons/NavigateNext\";\n\nimport { createMuiTheme, ThemeProvider } from \"@material-ui/core/styles\";\nimport { blue } from \"@material-ui/core/colors\";\nimport { AnswerQuestionsStep } from \"./AnswerQuestionsStep\";\nimport { AnswerQuestionsStep2 } from \"./AnswerQuestionsStep2\";\nimport { AnswerQuestionsStepb } from \"./AnswerQuestionsStepb\";\n\nimport example1 from \"./assets/image5.png\";\nimport example2 from \"./assets/image9.png\";\n\nfunction Alert(props) {\n return ;\n}\n\nconst useStyles = makeStyles(\n (theme) => ({\n listItem: {\n display: \"flex\",\n gap: \"6px\",\n },\n }),\n { name: \"AddPhoto\" }\n);\n\nconst Instructions = ({ type, canProceed, count }) => {\n const styles = useStyles();\n if (type === 0) {\n return (\n \n
\n -\n \n Vanaf de rand van het perceel, neemt u de foto’s staand en op ooghoogte\n \n
\n
\n -Neem 2 foto’s en vermijd daarbij overlap\n
\n
\n -Zorg dat u een klein stukje horizon of lucht op de foto zet\n
\n
\n -\n \n Vermijd storende/afwijkende objecten op de foto, zoals een hekwerk of koe\n \n
\n
\n -Vermijd de perceelrand en/of de slootkant\n
\n
\n -Voorbeeld van een goede overzichtsfoto:\n
\n
\n \n
\n \n );\n }\n return (\n \n
\n -\n \n Richt de camera meer naar beneden voor het vastleggen van plantensoorten\n \n
\n
\n -Maak representatieve fotos niet alleen de mooiste stukjes\n
\n
\n -Neem 2 foto’s en vermijd daarbij overlap\n
\n
\n -\n \n Als u daarvoor toestemming heeft en geen dieren verstoort, kunt u in het perceel gaan staan en meerdere\n detailfoto’s maken op verschillende plekken in het perceel\n \n
\n
\n -\n \n Maak niet alleen foto’s van de allermooiste stukjes, maar juist van representatieve gedeelten\n \n
\n
\n -Vermijd storende objecten zoals uw eigen schoenen\n
\n
\n -Vermijd overlap tussen de foto’s\n
\n
\n \n
\n \n );\n};\n\nconst Confirmation = ({ src, handleConfirmClick, handleRejectClick }) => {\n return (\n
\n \n
\n \n\n }\n onClick={handleConfirmClick}\n >\n Gebruik deze foto\n \n
\n
\n );\n};\n\nconst theme = createMuiTheme({ palette: { primary: blue } });\n\nconst ProceedButton = ({ visible, handleProceedClick }) => {\n if (!visible) {\n return null;\n }\n return (\n
\n \n \n \n
\n );\n};\n\nconst UploadButton = ({ step, type, onPhotoChange }) => {\n return (\n
\n \n \n
\n );\n};\n\nclass AddPhoto extends Component {\n constructor(props) {\n super(props);\n this.state = { step: 1, open: false, photos: [[], []] };\n }\n\n handleClose = (event, reason) => {\n if (reason === \"clickaway\") {\n return;\n }\n\n this.setState({ open: false });\n };\n handleSubmit = (message, complete, answerType) => {\n const body = {\n text: JSON.stringify({ ...message, session: this.props.sessionId, answerType }),\n location: {\n x: this.props.position.coords[1],\n y: this.props.position.coords[0],\n },\n };\n\n body.mapId = this.props.extMap.id;\n body.layerId = \"e13b1302-2c96-445d-adf7-611c83f985eb\";\n body.geometryId = this.props.addedFeature.properties.id;\n\n ApiManager.post(\"/message/add\", body, this.props.user)\n .then(() => {\n complete && this.props.onActionPaneModeChange(AppUtility.actionPaneMode.none);\n })\n .catch((err) => {\n alert(\"Er is een fout opgetreden. Probeer nog eens.\");\n });\n };\n handleSubmitInfo1 = (message) => {\n this.props.onTypeChange();\n message && this.handleSubmit(message, false, 1);\n };\n handleSubmitInfo2 = (message) => {\n this.props.onOpenSnackbar();\n if (message) {\n this.handleSubmit(message, true, 2);\n } else {\n this.props.onActionPaneModeChange(AppUtility.actionPaneMode.none);\n }\n };\n handleProceedClick = () => {\n this.setState({ step: 1 });\n this.props.onTypeChange();\n };\n handleRejectClick = () => {\n this.setState({ confirm: null });\n };\n\n handleConfirmClick = (base64) => {\n const photos = [...this.state.photos];\n photos[this.props.type].push(base64);\n\n const body = {\n image: base64,\n text: JSON.stringify({\n session: this.props.sessionId,\n photoType: this.props.type ? \"Detailfoto\" : \"Overzichtfoto\",\n }),\n location: {\n x: this.props.position.coords[1],\n y: this.props.position.coords[0],\n },\n };\n\n body.mapId = this.props.extMap.id;\n body.layerId = \"e13b1302-2c96-445d-adf7-611c83f985eb\";\n body.geometryId = this.props.addedFeature.properties.id;\n\n ApiManager.post(\"/message/add\", body, this.props.user)\n .then((result) => {\n // this.setState({ open: true, snackbarOpen: true });\n })\n .catch((err) => {\n alert(\"Er is een fout opgetreden. Probeer nog eens.\");\n });\n this.setState({ step: this.state.step + 1, photos, confirm: null });\n };\n onPhotoChange = (e) => {\n let file = e.target.files[0];\n\n if (!file.type.includes(\"image\")) {\n alert(\"Foto moet een plaatje zijn.\");\n return;\n }\n\n toBase64(file)\n .then((base64) => {\n console.log(\"uploaded\");\n console.log(base64);\n this.handleConfirmClick(base64);\n this.setState({ confirm: base64 });\n })\n .catch((err) => {\n alert(`Foutief bestand. Probeer nog eens of een ander bestand.`);\n });\n };\n\n render() {\n if (this.props.type === 2) {\n return ;\n }\n if (this.props.type === 3) {\n return ;\n }\n\n if (this.props.type === 4) {\n return ;\n }\n\n const canProceed = this.state.photos[this.props.type] && this.state.photos[this.props.type].length > 1;\n return (\n <>\n \n \n \n {\n this.setState({ snackbarOpen: false });\n }}\n anchorOrigin={{ vertical: \"top\", horizontal: \"center\" }}\n >\n Upload gelukt!\n \n \n );\n }\n}\n\nconst toBase64 = (file) =>\n new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n\n reader.onload = () => resolve(reader.result);\n reader.onerror = (error) => reject(error);\n });\n\nexport default AddPhoto;\n","import React, { Component } from \"react\";\n\nimport Button from \"@material-ui/core/Button\";\nimport TouchAppIcon from \"@material-ui/icons/TouchApp\";\nimport ControlCameraIcon from \"@material-ui/icons/ControlCamera\";\nimport AppUtility from \"../../AppUtility\";\n\nimport \"./PostPhoto.css\";\nimport { Paper, Typography } from \"@material-ui/core\";\n\nclass PostPhoto extends Component {\n state = { manualSelect: false };\n\n componentDidUpdate(prevProps) {\n if (this.props.selectedFeature && prevProps.selectedFeature !== this.props.selectedFeature) {\n this.props.onActionPaneModeChange(AppUtility.actionPaneMode.addPhoto);\n }\n }\n\n handleManualButtonClick = () => {\n this.setState({ manualSelect: true });\n this.props.onLocationSelect(true);\n };\n handleSubmitButtonClick = () => {\n this.props.onActionPaneModeChange(AppUtility.actionPaneMode.addPhoto, this.state.manualSelect);\n };\n\n render() {\n if (this.state.manualSelect) {\n return (\n <>\n \n \n Drag map to point\n \n\n
\n \n
\n \n );\n }\n return (\n <>\n \n \n Selecteer perceel op kaart\n \n\n
\n \n
\n \n );\n }\n}\n\nexport default PostPhoto;\n","import React, { Component } from \"react\";\nimport moment from \"moment\";\n\nimport Stepper from \"@material-ui/core/Stepper\";\nimport Step from \"@material-ui/core/Step\";\nimport StepLabel from \"@material-ui/core/StepLabel\";\nimport StepContent from \"@material-ui/core/StepContent\";\nimport Typography from \"@material-ui/core/Typography\";\nimport IconButton from \"@material-ui/core/IconButton\";\n\nimport DeleteIcon from \"@material-ui/icons/Delete\";\n\nimport ApiManager from \"../../ApiManager\";\n\nimport \"./Timeline.css\";\n\nconst getMessageData = (message) => {\n try {\n return JSON.parse(message.text);\n } catch {\n return {};\n }\n};\nconst combineMessages = (messages) => {\n const map = {};\n const result = [];\n messages.forEach((message) => {\n const data = getMessageData(message);\n if (data.session) {\n if (!map[data.session]) {\n map[data.session] = [];\n }\n map[data.session].push(message);\n } else {\n result.push(message);\n }\n });\n Object.keys(map).forEach((session) => {\n const items = map[session];\n const descriptionItem = items.find((item) => !item.image);\n const group = { ...descriptionItem, group: true };\n group.images = items.map((item) => item).filter((item) => !!item.image);\n group.textMessages = items.map((item) => item).filter((item) => !item.image);\n result.push(group);\n });\n return result.sort((a, b) => {\n const aDate = moment(a.date);\n const bDate = moment(b.date);\n\n if (aDate.isBefore(bDate)) {\n return 1;\n }\n if (aDate.isAfter(bDate)) {\n return -1;\n }\n return 0;\n });\n};\n\nclass Timeline extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n geoMessages: null,\n };\n }\n\n componentDidMount() {\n console.log('MOUNTING timeline')\n console.log(this.props)\n this.getGeoMessages();\n }\n\n getMessages = async (mapId, layerId, elementId) => {\n let body = {\n mapId,\n layerId,\n geometryIds:[elementId],\n };\n\n const { result } = await ApiManager.post(\"/message/get\", body, this.props.user);\n return result;\n };\n getGeoMessages = async () => {\n const { selectedFeature } = this.props;\n console.log('getting messages for')\n console.log(selectedFeature)\n let geoMessages\n try {\n geoMessages = await this.getMessages(selectedFeature.properties.mapId, selectedFeature.properties.layerId, selectedFeature.properties.id);\n console.log('found messages')\n console.log(geoMessages)\n } catch (err) {\n alert(\"Er is een fout opgetreden. Herlaadt de pagina en probeer nog eens.\");\n this.setState({ geoMessages: [] });\n }\n let combined = combineMessages(geoMessages)\n console.log(combined)\n this.setState({ geoMessages: combined });\n\n\n };\n\n viewImage = (geoMessage) => {\n if (geoMessage.fullImage) {\n this.props.onModalChange();\n return;\n }\n\n let body = {\n mapId: this.props.selectedFeature.properties.mapId,\n layerId: this.props.selectedFeature.properties.layerId,\n messageId: geoMessage.id,\n };\n ApiManager.post(\"/message/image\", body, this.props.user)\n .then((fullImage) => {\n let reader = new FileReader();\n reader.readAsDataURL(fullImage);\n reader.onloadend = () => {\n geoMessage.fullImage = reader.result;\n this.viewImage(geoMessage);\n };\n })\n .catch((err) => {\n alert(\"Er is een fout opgetreden. Probeer nog eens.\");\n });\n };\n\n deleteMessage = async (geoMessage) => {\n const body = {\n mapId: this.props.selectedFeature.properties.mapId,\n layerId: this.props.selectedFeature.properties.layerId,\n messageId: geoMessage.id,\n };\n return ApiManager.post(\"/message/delete\", body, this.props.user);\n };\n onDelete = (geoMessage) => {\n const user = geoMessage.user || geoMessage.images[0].user;\n let confirm = window.confirm(`Weet u zeker dat u deze foto van \"${user.username}\" wilt deleten?`);\n\n if (!confirm) {\n return;\n }\n\n if (geoMessage.group) {\n const promises = geoMessage.images.map((image) => this.deleteMessage(image));\n if (geoMessage.id) {\n promises.push(this.deleteMessage(geoMessage));\n }\n\n Promise.all(promises)\n .then(() => {\n const remainingGeoMessages = this.state.geoMessages.filter((x) => x.id !== geoMessage.id);\n this.setState({ geoMessages: remainingGeoMessages });\n })\n .catch((err) => {\n console.error(err);\n alert(\"Er is een fout opgetreden. Probeer nog eens.\");\n });\n return;\n }\n this.deleteMessage(geoMessage)\n .then(() => {\n const remainingGeoMessages = this.state.geoMessages.filter((x) => x.id !== geoMessage.id);\n this.setState({ geoMessages: remainingGeoMessages });\n })\n .catch((err) => {\n alert(\"Er is een fout opgetreden. Probeer nog eens.\");\n });\n };\n\n render() {\n const { user, map } = this.props;\n\n let timelineItems = null;\n if (this.state.geoMessages) {\n timelineItems = this.state.geoMessages.map((geoMessage) => {\n let canDelete = map.accessLevel >= 600 || (user && geoMessage.user && geoMessage.user.username === user.username);\n\n return (\n \n \n {\n
\n
\n {geoMessage.user ? geoMessage.user.username : null}\n {canDelete ? (\n this.onDelete(geoMessage)}\n >\n \n \n ) : null}\n
\n
{moment(geoMessage.date).format(\"DD-MM-YYYY HH:mm\")}
\n
\n }\n
\n {geoMessage.group ? (\n \n {geoMessage.textMessages.map((message) => {\n const data = getMessageData(message);\n if (data.answerType === 1) {\n return (\n
    \n
  • \n Class: {data.class}\n
  • \n
\n );\n }\n return (\n
    \n
  • \n 1: {data[1]}\n
  • \n
  • \n 2: {data[2]}\n
  • \n
  • \n 3: {data[3]}\n
  • \n
\n );\n })}\n
\n {geoMessage.images.map((image) => (\n
\n this.viewImage(image)} />\n
\n ))}\n
\n
\n ) : (\n \n {geoMessage.message}\n {geoMessage.image ? (\n this.viewImage(geoMessage)} />\n ) : null}\n \n )}\n
\n );\n });\n }\n\n return (\n
\n {timelineItems}\n
\n );\n }\n}\n\nexport default Timeline;\n","import React, { Component } from \"react\";\n\nimport Paper from \"@material-ui/core/Paper\";\nimport IconButton from \"@material-ui/core/IconButton\";\n\nimport CloseIcon from \"@material-ui/icons/Close\";\n\nimport AddPhoto from \"./AddPhoto/AddPhoto\";\nimport PostPhoto from \"./PostPhoto/PostPhoto\";\nimport Timeline from \"./Timeline/Timeline\";\n\nimport AppUtility from \"../AppUtility\";\n\nimport \"./ActionPane.css\";\nimport { Typography } from \"@material-ui/core\";\n\nconst LetOp = () => {\n return (\n \n \n Let op: het is broedseizoen, betreed kruidenrijk grasland percelen niet of zo min mogelijk en alleen met\n toestemming van de eigenaar van de percelen\n \n \n );\n};\n\nclass ActionPane extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n photoBase64: null,\n type: 0,\n };\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.actionPaneMode !== this.props.actionPaneMode) {\n this.setState({ prevActionPaneMode: prevProps.actionPaneMode });\n }\n }\n\n onCloseActionPane = () => {\n this.setState({ photoBase64: null });\n this.props.onActionPaneModeChange(AppUtility.actionPaneMode.none);\n ///\n };\n\n handleTypeChange = () => {\n this.setState({ type: this.state.type + 1 });\n };\n\n render() {\n let mode = this.props.actionPaneMode;\n console.log(mode);\n // First step\n if (mode === AppUtility.actionPaneMode.postPhoto) {\n return (\n \n \n Select Location\n \n \n \n \n
\n \n
\n
\n );\n }\n\n // Second step\n if (mode === AppUtility.actionPaneMode.addPhoto) {\n let caption = \"Stap 1: Overzichtfotos\";\n if (this.state.type === 1) {\n caption = \"Stap 2: Detailfotos\";\n }\n if (this.state.type === 2) {\n caption = \"Stap 3a: Classificatie\";\n }\n if (this.state.type === 3) {\n caption = \"Stap 3b: Classificatie\";\n }\n if (this.state.type === 4) {\n caption = \"Stap 4: Productiviteit van grasland\";\n }\n return (\n \n \n {caption}\n \n \n \n \n
\n {this.state.type === 1 ? : null}\n
\n \n
\n
\n
\n );\n }\n\n // Results on timeline\n return (\n \n
\n

{`Perceel ${this.props.selectedFeature.properties.id}`}

\n \n \n \n
\n
\n map.id === this.props.selectedFeature.properties.mapId\n )}\n />\n
\n
\n );\n }\n}\n\nexport default ActionPane;\n","import React, { Component } from 'react';\n\nimport IconButton from '@material-ui/core/IconButton';\n\nimport CloseIcon from '@material-ui/icons/Close';\n\nimport ApiManager from '../ApiManager';\n\nimport './ModalView.css';\nimport { Icon } from '@material-ui/core';\n\nclass ModalView extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n uploading: false,\n message: ''\n };\n }\n \n componentDidMount() {\n\n }\n\n closeModal = () => {\n this.props.onModalChange(null);\n }\n\n render() {\n let children = this.props.children;\n\n if (!children) {\n return null;\n }\n\n return (\n
\n
\n \n \n \n
\n
\n {children}\n
\n
\n );\n }\n}\n\nexport default ModalView;\n","import React, { Component } from \"react\";\n\nimport { createMuiTheme, ThemeProvider } from \"@material-ui/core/styles\";\nimport Button from \"@material-ui/core/Button\";\nimport IconButton from \"@material-ui/core/Button\";\nimport { Paper, Snackbar, Typography } from \"@material-ui/core\";\n\nimport DefaultTheme from \"./theme\";\n\nimport AddIcon from \"@material-ui/icons/Add\";\nimport bbox from \"geojson-bbox\";\nimport Map from \"./Map/Map\";\nimport Navbar from \"./Navbar/Navbar\";\nimport ActionPane from \"./ActionPane/ActionPane\";\nimport ModalView from \"./ModalView/ModalView\";\n\nimport ApiManager from \"./ApiManager\";\nimport AppUtility from \"./AppUtility\";\n\nimport \"./App.css\";\nimport moment from \"moment\";\nimport MuiAlert from \"@material-ui/lab/Alert\";\nconst theme = createMuiTheme(DefaultTheme);\n\nconst ACCOUNTS_URL = \"https://account.ellipsis-drive.com/v2\";\n// const ACCOUNTS_URL = \"https://dev.account.ellipsis-drive.com\";\n// const ACCOUNTS_URL = 'http://localhost:3001';\n\nconst LOCAL_STORE_USER_KEY = \"user\";\n\nexport const PLOT_FREE_AREA_MAP_ID = \"cee89344-dfe2-41b1-a9ea-c1f4acdf8bfa\";\nconst PLOT_NETHERLANDS_AREA_MAP_ID = \"60b634e1-8dfd-4612-bfe2-b828c81e8dce\";\nconst PERCELEN_LAYER_ID = \"e3a7b9bf-dba4-4d4f-9738-954973ab0c86\";\nconst FREE_PERCELEN_LAYER_ID = \"e13b1302-2c96-445d-adf7-611c83f985eb\";\n\nconst GEOMESSAGE_LIMIT = 100;\nconst NEARBY_FIELDS_METER = 15;\nconst NEARBY_FIELDS_ACCURACY_MODIFIER = 1;\nfunction Alert(props) {\n return ;\n}\n\nclass App extends Component {\n locationError = false;\n gettingGeometries = false;\n freezeGeometries = false;\n lastGetGeometriesCall = null;\n\n constructor(props) {\n super(props);\n\n this.dev = false;\n let accountsUrl = \"\";\n\n if (!this.dev) {\n accountsUrl = \"https://account.ellipsis-drive.com/\";\n } else {\n let url = window.location.href;\n let split = url.split(\":\");\n accountsUrl = `${split[0]}:${split[1]}:${parseInt(split[2].split(\"/\")[0]) + 1}/`;\n }\n\n this.state = {\n init: null,\n\n user: null,\n\n accountsUrl: accountsUrl,\n openAccount: false,\n\n actionPaneMode: AppUtility.actionPaneMode.none,\n\n geoJsons: [],\n floatingMessage: null,\n\n openAddTooltip: false,\n sessionId: null,\n selectLocation: false,\n };\n }\n\n componentDidMount() {\n this.retrieveUser(() => {\n this.initMapData(() => {\n window.addEventListener(\"message\", this.onAccountAction, false);\n\n this.setState({ init: true });\n });\n });\n\n let locationOpts = { enableHighAccuracy: true };\n\n navigator.geolocation.getCurrentPosition(this.onLocationChange, this.onLocationChangeErr, locationOpts);\n navigator.geolocation.watchPosition(this.onLocationChange, this.onLocationChangeErr, locationOpts);\n\n if (this.state.user) {\n this.validateUser();\n }\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (this.state.user) {\n if (!prevState.user || this.state.user.id !== prevState.user.id) {\n this.validateUser();\n }\n }\n }\n\n validateUser = () => {\n ApiManager.get(\"/account/info\", null, this.state.user)\n .then(() => {\n console.log(\"user valid\");\n })\n .catch(() => {\n console.log(\"user not valid\");\n this.onLogout();\n });\n };\n\n initAccount = async () => {\n let initObject = { type: \"init\", dev: false };\n if (this.state.user) {\n initObject.data = this.state.user;\n }\n let iframe = document.getElementById(\"account\");\n\n iframe.contentWindow.postMessage(initObject, ACCOUNTS_URL);\n };\n\n onLocationChange = (pos) => {\n let newPos = {\n coords: [pos.coords.latitude, pos.coords.longitude],\n accuracy: pos.coords.accuracy,\n };\n\n this.setState({ position: newPos }, () => {\n if (this.state.actionPaneMode === AppUtility.actionPaneMode.postPhoto) {\n this.getGeometriesNearPos();\n }\n });\n };\n\n onLocationChangeErr = (err) => {\n if (!this.locationError) {\n alert(\n `Er is een probleem opgetreden bij het ophalen van uw locatie. Controleer of u de app toestemming heeft gegeven tot uw locatie. Code: ${\n err.code\n }, ${err[err.code] ? err[err.code] : err.message}`\n );\n }\n\n console.log(err);\n\n this.locationError = true;\n };\n\n retrieveUser = async (cb) => {\n let user = null;\n let userJson = localStorage.getItem(LOCAL_STORE_USER_KEY);\n\n if (!userJson) {\n if (cb) {\n cb();\n }\n return;\n }\n\n user = JSON.parse(userJson);\n\n ApiManager.get(\"/account/validateLogin\", null, user)\n .then(() => {\n if (user.username) {\n user.username = user.username.toLowerCase();\n }\n\n this.setState({ user: user }, cb);\n })\n .catch((err) => {\n console.error(err);\n localStorage.removeItem(LOCAL_STORE_USER_KEY);\n\n this.setState({ user: null }, cb);\n });\n };\n\n initMapData = async (cb) => {\n const { user } = this.state;\n\n let promises = [\n ApiManager.post(\n \"/account/shapes\",\n { access: [\"subscribed\", \"public\", \"owned\"], name: \"fotos aan percelen (2021)\", pageSize: 20 },\n user\n ),\n\n ApiManager.post(\"/metadata\", { mapId: PLOT_NETHERLANDS_AREA_MAP_ID }, user),\n ApiManager.post(\n \"/account/shapes\",\n { access: [\"subscribed\", \"public\", \"owned\"], name: \"fotos aan locaties (2021)\", pageSize: 20 },\n user\n ),\n ApiManager.post(\"/metadata\", { mapId: PLOT_FREE_AREA_MAP_ID }, user),\n ];\n\n await Promise.all(promises)\n .then((results) => {\n const [maps, metadata, freeAccessMap, freeAccessMapMetadata] = results;\n let plotsNetherlandsMap = maps.result.find((x) => x.id === PLOT_NETHERLANDS_AREA_MAP_ID);\n let extMap = freeAccessMap.result.find((x) => x.id === PLOT_FREE_AREA_MAP_ID);\n if (!plotsNetherlandsMap || !extMap) {\n let err = {\n status: 500,\n message: \"Target map was not found in API result.\",\n };\n throw err;\n }\n\n plotsNetherlandsMap.metadata = metadata;\n extMap.metadata = freeAccessMapMetadata;\n\n let targetPolygonLayer = plotsNetherlandsMap.metadata.geometryLayers.find((x) => x.id === PERCELEN_LAYER_ID);\n\n if (!targetPolygonLayer) {\n let err = {\n status: 500,\n message: \"Target polygon layer was not found in API result.\",\n };\n throw err;\n }\n\n this.setState({ map: plotsNetherlandsMap, extMap }, cb);\n })\n .catch((err) => {\n console.log(err);\n alert(`Er is een fout opgetreden. Herlaadt de pagina en probeer opnieuw.`);\n });\n };\n getMessages = async (mapId, layerId) => {\n return [];\n const body = {\n mapId: mapId,\n layerId: layerId,\n pageSize: 100,\n };\n\n const { result } = await ApiManager.post(\"/message/get\", body, this.state.user);\n console.log(result);\n return result;\n };\n\n getGeometry = async (mapId, layerId, bounds) => {\n let body = {\n mapId,\n layerId: layerId,\n bounds,\n };\n\n const { result } = await ApiManager.post(\"/geometry/get\", body, this.state.user);\n return result.features.map((item) => {\n item.properties.mapId = mapId;\n item.properties.layerId = layerId;\n return item;\n });\n };\n getFeatures = async (mapId, geometryIds, layerId) => {\n const body = { mapId: mapId, layerId: layerId, geometryIds: geometryIds };\n\n const { result } = await ApiManager.post(\"/geometry/ids\", body, this.state.user);\n return result.features.map((item) => {\n item.properties.mapId = mapId;\n item.properties.layerId = layerId;\n return item;\n });\n };\n getGeometries = async (bounds, all, cb) => {\n if (this.gettingGeometries) {\n return;\n }\n\n if (this.freezeGeometries) {\n this.lastGetGeometriesCall = () => this.getGeometries(bounds, all, cb);\n return;\n }\n\n this.gettingGeometries = true;\n\n const { map, extMap } = this.state;\n\n let geometryIds = [];\n let geoJsons = [];\n let floatingMessage = \"\";\n\n const geoMessages = await this.getMessages(map.id, PERCELEN_LAYER_ID);\n const extGeoMessages = await this.getMessages(this.state.extMap.id, FREE_PERCELEN_LAYER_ID);\n\n const allMessages = [...geoMessages, ...extGeoMessages];\n if (allMessages) {\n for (let i = 0; i < allMessages.length; i++) {\n const message = allMessages[i];\n\n if (!geometryIds.includes(message.geometryId)) {\n geometryIds.push(message.geometryId);\n }\n }\n }\n\n this.setState({ geoMessages: allMessages });\n\n if (geometryIds.length) {\n const featureCollection = await this.getFeatures(map.id, geometryIds, PERCELEN_LAYER_ID);\n const featureCollection2 = await this.getFeatures(extMap.id, geometryIds, FREE_PERCELEN_LAYER_ID);\n\n geoJsons = [...featureCollection, ...featureCollection2];\n\n floatingMessage = `Getoond: Percelen met meest recente foto's`;\n } else {\n floatingMessage = \"Geen berichten gevonden binnen het scherm\";\n }\n\n this.setState(\n {\n geoJsons: geoJsons,\n floatingMessage: floatingMessage,\n },\n cb\n );\n\n this.gettingGeometries = false;\n };\n\n getGeometriesNearPos = async () => {\n let position = this.state.position;\n\n let long = position.coords[1];\n let lat = position.coords[0];\n\n let maxDeviation = NEARBY_FIELDS_METER + NEARBY_FIELDS_ACCURACY_MODIFIER * position.accuracy;\n if (maxDeviation > 1000) {\n maxDeviation = 1000;\n }\n maxDeviation = 500;\n let longDiff = (360 / (40000000 * Math.cos((2 * Math.PI * lat) / 360))) * maxDeviation;\n let latDiff = (360 / 40000000) * maxDeviation;\n\n let bounds = {\n xMin: long - longDiff,\n xMax: long + longDiff,\n yMin: lat - latDiff,\n yMax: lat + latDiff,\n };\n\n let cb = () => {\n let geoJsons = this.state.geoJsons;\n\n this.setState({ nearbyBounds: bounds });\n\n if (!this.state.selectedFeature) {\n if (geoJsons.length > 0) {\n this.setState({\n floatingMessage: \"Selecteer het perceel waarvoor de foto is\",\n });\n } else {\n this.setState({\n floatingMessage: \"Geen percelen in de buurt. Ga dichter bij een perceel staan.\",\n });\n }\n }\n };\n\n let body = {\n mapId: PLOT_NETHERLANDS_AREA_MAP_ID,\n layerId: PERCELEN_LAYER_ID,\n bounds: bounds,\n pageSize: 30,\n };\n\n ApiManager.post(\"/geometry/bounds\", body, this.state.user)\n .then((r) => {\n console.log(r);\n let result = r.result.features.map((item) => {\n item.properties.mapId = PLOT_NETHERLANDS_AREA_MAP_ID;\n item.properties.layerId = PERCELEN_LAYER_ID;\n return item;\n });\n this.setState({ geoJsons: result }, cb);\n })\n .catch((e) => {\n console.log(e);\n });\n };\n\n onAccountAction = (event) => {\n if (event.data.type && event.data.type === \"login\") {\n this.onLogin(event.data.data);\n } else if (event.data.type && event.data.type === \"logout\") {\n this.onLogout();\n } else if (event.data.type && event.data.type === \"overlayClose\") {\n this.setState({ openAccount: false });\n }\n };\n\n onOpenAccount = (open) => {\n if (this.state.openAccount !== open) {\n this.setState({ openAccount: open });\n }\n };\n\n onLogin = (user) => {\n localStorage.setItem(LOCAL_STORE_USER_KEY, JSON.stringify(user));\n\n this.setState({ user: user }, this.initMapData);\n };\n\n onLogout = () => {\n localStorage.removeItem(LOCAL_STORE_USER_KEY);\n\n this.setState(\n {\n user: null,\n actionPaneMode: AppUtility.actionPaneMode.none,\n selectedFeature: null,\n },\n this.initMapData\n );\n };\n\n onMapBoundsChange = (mapBounds, mapCenter, hard = false) => {\n if (this.state.actionPaneMode !== AppUtility.actionPaneMode.postPhoto) {\n this.setState({ mapBounds });\n if (hard) {\n this.getGeometries(mapBounds, false);\n }\n } else {\n this.setState({ mapCenter });\n }\n };\n\n handleLocationSelect = (selectLocation) => {\n this.setState({ selectLocation });\n };\n onAddPhotoClick = () => {\n let user = this.state.user;\n\n if (!user) {\n this.onOpenAccount(true);\n return;\n }\n\n if (!this.state.position) {\n alert(\"Uw locatie is niet gevonden. Sta toe dat deze app uw locatie kan opvragen en probeer daarna nog eens.\");\n return;\n }\n\n this.setState({ sessionId: moment().format() + \"_\" + user.username });\n this.onActionPaneModeChange(AppUtility.actionPaneMode.postPhoto);\n };\n\n onActionPaneModeChange = (mode, selectLocation) => {\n if (this.state.actionPaneMode === mode) {\n return;\n }\n this.setState({ actionPaneMode: mode, selectLocation: false });\n\n if (mode === AppUtility.actionPaneMode.addPhoto && selectLocation) {\n let lng = this.state.mapCenter.lng;\n let lat = this.state.mapCenter.lat;\n this.submitNewPlot(lng, lat);\n return;\n }\n if (mode === AppUtility.actionPaneMode.postPhoto) {\n this.getGeometriesNearPos();\n return;\n }\n if (mode === AppUtility.actionPaneMode.none) {\n this.setState({\n floatingMessage: null,\n geoJsons: [],\n selectedFeature: null,\n });\n this.getGeometries(this.state.mapBounds);\n }\n };\n\n submitNewPlot = (lng, lat) => {\n const layer = this.state.extMap.metadata.geometryLayers.find((x) => x.id === FREE_PERCELEN_LAYER_ID);\n const feature = {\n type: \"Feature\",\n geometry: {\n type: \"Point\",\n coordinates: [lng, lat],\n },\n properties: {},\n };\n const body = {\n mapId: this.state.extMap.id,\n layerId: FREE_PERCELEN_LAYER_ID,\n features: [feature],\n };\n ApiManager.post(\"/geometry/add\", body, this.state.user)\n .then((result) => {\n const [addedId] = result;\n feature.properties.id = addedId;\n this.setState({ addedFeature: feature });\n })\n .catch((err) => {\n alert(\"Er is een fout opgetreden. Probeer nog eens.\");\n });\n };\n\n onShowFloatingMessage = (message) => {\n this.setState({ floatingMessage: message });\n };\n\n onFeatureClick = (feature) => {\n if (this.state.selectedFeature !== feature) {\n this.setState({ selectedFeature: feature });\n }\n\n if (this.state.actionPaneMode === AppUtility.actionPaneMode.addPhoto) {\n let box = bbox(feature);\n\n let lat = (box[0] + box[2]) / 2;\n let lon = (box[1] + box[3]) / 2;\n this.submitNewPlot(lat, lon);\n } else if (this.state.actionPaneMode === AppUtility.actionPaneMode.postPhoto) {\n this.setState({ floatingMessage: null });\n } else if (this.state.actionPaneMode === AppUtility.actionPaneMode.none) {\n this.onActionPaneModeChange(AppUtility.actionPaneMode.timeline);\n }\n };\n\n onFreezeGeometries = (freeze) => {\n this.freezeGeometries = freeze;\n if (this.lastGetGeometriesCall && !freeze) {\n this.lastGetGeometriesCall();\n this.lastGetGeometriesCall = null;\n }\n };\n\n onModalChange = (content) => {\n if (this.state.modalContent !== content) {\n this.setState({ modalContent: content });\n }\n };\n\n render() {\n if (!this.state.init) {\n return null;\n }\n\n let user = this.state.user;\n\n if (this.state.openAccount) {\n let initObject = { type: \"init\" };\n if (this.state.user) {\n initObject.data = this.state.user;\n }\n let iframe = document.getElementById(\"account\");\n if (iframe) {\n iframe.contentWindow.postMessage(initObject, ACCOUNTS_URL);\n }\n }\n\n let commonProps = {\n user: user,\n map: this.state.map,\n\n actionPaneMode: this.state.actionPaneMode,\n selectedFeature: this.state.selectedFeature,\n\n position: this.state.position,\n mapBounds: this.state.mapBounds,\n geoJsons: this.state.geoJsons,\n geoMessages: this.state.geoMessages,\n\n nearbyBounds: this.state.nearbyBounds,\n\n onOpenAccount: this.onOpenAccount,\n onActionPaneModeChange: this.onActionPaneModeChange,\n onShowFloatingMessage: this.onShowFloatingMessage,\n onFeatureClick: this.onFeatureClick,\n onFreezeGeometries: this.onFreezeGeometries,\n onModalChange: this.onModalChange,\n };\n\n let floatingMessage = null;\n if (this.state.floatingMessage) {\n floatingMessage = (\n
\n \n {this.state.floatingMessage}\n \n
\n );\n }\n\n return (\n \n \n
\n \n
\n {floatingMessage}\n \n \n \n {this.state.actionPaneMode && (\n {\n console.log(\"opening\");\n this.setState({ openSnackbar: true });\n }}\n sessionId={this.state.sessionId}\n onLocationSelect={this.handleLocationSelect}\n mapCenter={this.state.mapCenter}\n addedFeature={this.state.addedFeature}\n extMap={this.state.extMap}\n />\n )}\n {\n this.setState({ openSnackbar: false });\n }}\n >\n Upload gelukt!\n \n
\n