{"version":3,"sources":["components/GPSMapContainer.js","assets/DownloadWhite.webp","components/Table.js","assets/FilterWhite.webp","components/ThreeWindow.js","components/PopUp.js","assets/person.svg","components/ThreeWindow_Plane.js","components/Home.js","Auth0Config.js","AuthService.js","App.js","registerServiceWorker.js","index.js"],"names":["GPSMapContainer","props","showPolyline","lat1","long1","lat2","long2","captureCircleRefs","capturedataLoaded","capturedata","map","row","push","React","createRef","missingCircleRefs","missingPolylineRefs","missingdataLoaded","missingdata","state","pageCaptureClickedIndex","pageCaptureClickedData","pageMissingClickedIndex","pageMissingClickedData","pageMissingShowPolyline","pageMissingShowPolyline_Latitude1","pageMissingShowPolyline_Longitude1","pageMissingShowPolyline_Latitude2","pageMissingShowPolyline_Longitude2","pageResetNextClick","prevProps","prevState","this","selectionModeEnabled","index","current","setStyle","fillOpacity","fillColor","setState","capturedataIndex","capturedataData","missingdataIndex","missingdataData","Latitude","Longitude","i","selectionModeSelections","length","e","console","log","target","options","rowData","rowIndex","alreadySelected","selectionModeUpdate","polyline","overrideColorsForSelection","data","findindex","bounds","extend","createbounds","plandataLoaded","plandata","center","latLngBounds","extendbounds","id","MapContainer","whenCreated","mapInstance","PDFref","preferCanvas","scrollWheelZoom","style","height","width","boundsOptions","padding","LayersControl","position","tilelayerenabled","BaseLayer","name","TileLayer","maxNativeZoom","maxZoom","attribution","url","window","_env_","REACT_APP_ESRIMAP_CLIENTAPIKEY","checked","Overlay","FeatureGroup","pathOptions","color","Circle","radius","eventHandlers","click","clickEventCapture","ref","Tooltip","dateTimeLocalString","depthhole_rounded","JSON","parse","toerl","reflecthole_data","pointcount","capturetype_data","AssocCaptureId","AssocCaptureDistDiff","missingcolour","clickEventMissing","Name","Polyline","positions","diffcolour","diffdataLoaded","diffdata","Latitude_Plan","Longitude_Plan","Latitude_Capture","Longitude_Capture","Diff_HoleDepth","Diff_ToeRL","Component","Table","myRef","exportFile","bind","handsetID","endtime","postUploadFull","getDataCaptureOneDetailed","toggleFilter","togglePlan","toggleDispatch","toggleConfig","toggleCapture","toggleReview","toggleReport","contents","loading","paddingTop","paddingBottom","textAlign","className","textDecoration","deleted","dateTimeLocalDateString","dateTimeLocalTimeString","rovergpslat","rovergpslong","wetness_data","starttime","deletedString","commentString","detailedDataAvailable","Button","onClick","showDetailedData","showGPSMap","Container","fluid","Row","backgroundColor","Col","display","justifyContent","flexDirection","toggleFilterModal","toggleConfigModal","togglePlanModal","toggleDispatchModal","alignItems","fontSize","toggleCaptureModal","toggleReviewModal","toggleReportModal","src","downloadIcon","ws","XLSX","utils","table_to_sheet","wb","book_new","book_append_sheet","datestring","endDate","getFullYear","getMonth","getDate","getHours","getMinutes","writeFile","selectedhardwareID","renderTable","displayName","ThreeWindow","sceneSetup","el","clientWidth","clientHeight","scene","THREE","camera","x","controls","OrbitControls","renderer","setSize","appendChild","domElement","addCustomSceneObjects","colors","pointcloud","threeWindowPointsData","y","z","vx","r","setRGB","g","b","geometry","setAttribute","computeBoundingSphere","material","size","vertexColors","points","add","startAnimationLoop","render","requestID","requestAnimationFrame","handleWindowResize","aspect","updateProjectionMatrix","addEventListener","removeEventListener","cancelAnimationFrame","dispose","PopUp","handleClick","toggle","toggleTab","activeTab","tab","Modal","isOpen","showDetailedWindow","scrollable","maxWidth","ModalHeader","ModalBody","popupDetailedData","Nav","tabs","NavItem","NavLink","classnames","active","mode","opacity","line","reversescale","type","layout","showlegend","title","aspectmode","aspectratio","ThreeWindow_Plane","Home","setUserData","user","organisationName","getLocationAll","togglePop","seen","toggleDropdown","dropdownOpen","toggleNavCollapse","navOpen","toggleValidation","checkValidation","toggleFilterHome","filterOpen","togglePlanHome","planOpen","dataLoaded","toggleDispatchHome","dispatchOpen","createdispatchName","toggleDispatchCheckboxIncludeRef","dispatchCheckboxIncludeRefSelected","toggleConfigHome","configOpen","toggleCaptureHome","captureOpen","toggleReviewHome","reviewOpen","toggleReportHome","reportOpen","loadedreport","PDFgenerated","PDFloading","closeErrorAlert","anyPageError","anyPageErrorDetails","setStartDate","date","startDate","setEndDate","setSelectedHardware","value","pagePreload","value2","selectedlocationID","getDispatchByHardware","loadingdispatch","selecteddispatchID","setSelectedLocation","getHardwareAll","getSubLocationAll","loadinghardware","loadingsublocation","selectedsublocationID","loadingsequence","selectedsequenceID","loadingsubsequence","selectedsubsequenceID","loadingplan","selectedplanID","setSelectedSubLocation","getSequenceAll","setCreateSubLocationName","createsublocationName","setSelectedSequence","getSubSequenceAll","setCreateSequenceName","createsequenceName","setSelectedSubSequence","getPlanAll","setCreateSubSequenceName","createsubsequenceName","setSelectedPlan","loadingplandetails","getPlanDetailsAll","setCreatePlanVersion","createplanVersion","parseInt","setCreatePlanStartTime","createplanStartTime","setCreatePlanEndTime","createplanEndTime","setCreatePlanData","createplanData","setSelectedDispatch","setCreateDispatchName","setSelectedDispatchPlan","opt","opts","selected","selectedDispatchPlanIDRequested","getPlanDetailsAllForDispatch","selectedDispatchPlanID","dispatchPlanDetailsSelected","selectedDispatchPlanDetailsID","dispatchPlanDetailsAll","dispatchPlanDetails","dispatchPlanDetailsNot","setSelectedDispatchPlanDetails","datanot","openFileBrowser","fileInput","renderFile","fileObj","fileReader","FileReader","readAsArrayBuffer","onload","locationIndex","location","findIndex","locationUTMZoneNum","locationUTMZoneLet","bstr","result","read","wsname","SheetNames","Sheets","json","sheet_to_json","header","planHeaders","shift","validateExcelPlanHeaders","originalDataHeaders","originalDataRows","stringify","key","splice","cols","rows","planData","holeIDArr","Array","holeCoords","eastingArr","northingArr","rlArr","depthArr","diamArr","extradata","extradata_line","validationErrors","tempHoleID","validateHoleID","tempCoordsEast","validateCoord","tempCoordsNorth","tempRL","validateRL","tempDepth","validateDepth","tempDiam","validateDiam","LatLong","toLatLon","tempArray","validatePlan","filePlanData","extra","extra_line","renderFileXML","readAsText","xmlFile","DOMParser","parseFromString","holeData","validatePlanHoleData","getElementsByTagName","innerHTML","excelPlanHeaders","tempArr","planHoleData","diam","depth","NewDepth","toFixed","rl","coord","holeID","dupeHoleID","findDuplicates","dupeHoleArr","getAllIndexes","eastDupe","eastIndexArr","findNorthDuplicates","northArr","duplicateCoords","dupeCoords","n","validateArr","distinct","Set","filtered","filter","item","has","delete","arr","val","indexes","planFileHandler","event","files","fileName","slice","lastIndexOf","uploadedFileName","isFormInvalid","captureFileHandler","postDataCaptureInsert","PDFgenerate","PDFleafletref","PDFtableref","Plotly","toImage","PDFplotDivId","format","filename","then","dataURL0","plotlyPDFcanvas0","dataURL1","plotlyPDFcanvas1","dataURL2","plotlyPDFcanvas2","leafletImage","err","canvas0","leafletPDFcanvas0","toDataURL","canvas1","leafletPDFcanvas1","canvas2","leafletPDFcanvas2","canvas3","leafletPDFcanvas3","ExportExtraData","Extratableref_DiffvsPlan","Extratableref_Additional","Extratableref_Missing","ExtraDataLoading","report","ReportDetails","Summary","TotalCountDiffvsPlan","toString","ws2","TotalCountAdditional","ws3","TotalCountMissing","currDate","Date","setTime","getTime","nonPDFleafletref","styles","StyleSheet","create","page","headerTitle","left","top","fontStyle","fontWeight","headerText","right","headerGenerated","bottom","headerCustomField","headerLogo","headerImage","borderWidth","borderStyle","borderColor","footerLogo","footerText","footerBreak","pageTitle","pageSummary","pageKey","imageTable","margin","imageLeaflet","imagePlotly","pageDataSummary","captureData","anyPageDataLoading","anyPageDataLoadingDetails","loadinglocation","sublocation","sequence","subsequence","plan","plandetails","dispatch","createdispatchTime","dispatchPlanDetailsShow","dispatchToDeviceLoading","review","loadedreview","reviewSelectionMode","reviewSelections","optionsIncludePageSelected","reportHeaderCustomField","hardware","accessToken","auth","getAccessToken","getUserInfo","array","data2","tempPlanDetailsNot","tempLatLon","latitude","longitude","object","tempreview","Navbar","light","expand","NavbarBrand","href","REACT_APP_CONTENT_TITLE","NavbarToggler","Collapse","navbar","Dropdown","DropdownToggle","caret","nav","userIcon","DropdownMenu","DropdownItem","divider","logout","Form","FormGroup","sm","Label","marginTop","disabled","onChange","InputGroup","Input","placeholder","InputGroupAddon","addonType","postsublocationInsert","postsequenceInsert","postsubsequenceInsert","showTimeSelect","timeFormat","timeIntervals","timeCaption","dateFormat","popperModifiers","preventOverflow","enabled","escapeWithReference","boundariesElement","postplanInsert","marginLeft","zIndex","hidden","readOnly","invalid","FormFeedback","Fade","in","tag","postplandetailsInsertArray","convertPlanRowColsToObject","errorText","columns","defaultColumnOptions","resizable","Card","body","outline","manipulateUploadPlanDataForMapView","toggleDispatchPlanDetails","check","postDispatch","createDispatchPlanDetailsForPost","multiple","planId","manipulateDispatchDetailsDataForMapView","postDispatchToDevice","Spinner","as","animation","role","postReuploadAll","for","xs","lg","marginBottom","marginRight","ModalFooter","getDataCaptureAllFiltered","getDispatchReview","ReviewDetails","ReviewLog","postDispatchReviewEdits","capture_rowIndex","capture_rowData","Id","missing_rowData","Captures_Raw","ReviewPlans","Missing","DiffvsPlan","toggleReportOptionsIncludePage","setReportHeaderCustomField","getPlanReport","document","author","keywords","subject","orientation","dpi","blob","error","Chart","RedrillMapData","BackfillMapData","divId","marker","ncontours","colorscale","showscale","yaxis","xaxis","autosize","t","hovermode","bargap","domain","showgrid","zeroline","xaxis2","yaxis2","Diff_HoleDepth_Severity","Diff_ToeRL_Severity","CollarEast_Capture","CollarNorth_Capture","CollarDepth_Capture","ToeRLEast_Capture","ToeRLNorth_Capture","ToeRL_Capture","HoleLength_Capture","PreviousAuto_HoleDepth","DateTime_Capture","reflecthole_Capture","wetness_Capture","capturetype_Capture","deletedString_Capture","commentString_Capture","PlanDetailsId","CaptureId","CalculationType","Additional","getDetailed","Alert","zindex","Toast","ToastBody","REACT_APP_CONTENT_COMPANY","timestring","getSeconds","Math","round","depthhole","reflectivity","reflecthole","reflectivitystring","capturetype","capturtypestring","deletedflag","deletedstring","comment","commentstring","fetch","REACT_APP_API_ADDRESS","headers","Headers","response","status","unshift","checkMatch","locationID","sublocationName","requestOptions","method","sublocationID","sequenceName","sequenceID","subsequenceName","subsequenceID","greatestVerNo","greatestVerIndex","subSequenceId","version","planID","sendobject","arrayobject","tempdataobject","j","hardwareID","greatestTimeNo","greatestTimeIndex","temptime","dispatchTime","dispatchID","manipulateCaptureDataForFrontEnd","manipulatePlanDataForFrontEnd","manipulateSummaryForFrontEnd","reviewselections","manualselections","tempobject","bodystring","hasOwnProperty","RadarData","RadarDataNorthArray","RadarDataEastArray","BarDepthData","BarDepthDataCountArray","SeverityIndex","BarToeRLData","BarToeRLDataCountArray","TempObject","dispatchtime","toISOString","dataobject","detailedData","referencestring","canvas","createElement","context","getContext","imagesrc","img","drawflirrender","colorstops","drawImage","imageData","getImageData","avg","closestColorIndex","color1","color2","substring","putImageData","renderedimage","replace","jsonstring","AUTH_CONFIG","REACT_APP_AUTH0_DOMAIN","clientID","REACT_APP_AUTH0_CLIENTID","redirectUri","REACT_APP_AUTH0_REDIRECTURI","audience","REACT_APP_AUTH0_AUDIENCE","logoutUri","REACT_APP_AUTH0_LOGOUTURI","AuthService","auth0","WebAuth","responseType","scope","authorize","sessionStorage","removeItem","returnTo","history","parseHash","authResult","idToken","setSession","expiresAt","expiresIn","setItem","getItem","Error","callback","client","userInfo","App","authService","resultComponent","isAuthenticated","login","handleAuthentication","exact","path","renderHome","startSession","isLocalhost","Boolean","hostname","match","registerValidSW","swUrl","navigator","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","catch","baseUrl","getAttribute","rootElement","getElementById","ReactDOM","basename","URL","process","origin","get","indexOf","ready","unregister","reload","checkValidServiceWorker","registerServiceWorker"],"mappings":"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","file":"static/js/main.18e375a7.chunk.js","sourcesContent":["import React, { Component } from 'react';\nimport { MapContainer, Circle, FeatureGroup, Tooltip, LayersControl, TileLayer, Polyline } from 'react-leaflet'\nimport { latLngBounds } from 'leaflet'\n\nexport class GPSMapContainer extends Component {\n constructor(props) {\n super(props);\n\n var showPolyline = [];\n var lat1 = [];\n var long1 = [];\n var lat2 = [];\n var long2 = [];\n\n //Create refs\n this.captureCircleRefs = [];\n if (this.props.capturedataLoaded) { \n this.props.capturedata.map(row => {\n this.captureCircleRefs.push(React.createRef());\n });\n }\n this.missingCircleRefs = [];\n this.missingPolylineRefs = [];\n if (this.props.missingdataLoaded) {\n this.props.missingdata.map(row => {\n this.missingCircleRefs.push(React.createRef());\n this.missingPolylineRefs.push(React.createRef());\n showPolyline.push(false);\n lat1.push(0);\n long1.push(0);\n lat2.push(0);\n long2.push(0);\n });\n }\n\n this.state = {\n //Init - config\n pageCaptureClickedIndex: -1,\n pageCaptureClickedData: {},\n pageMissingClickedIndex: -1,\n pageMissingClickedData: {},\n pageMissingShowPolyline: showPolyline,\n pageMissingShowPolyline_Latitude1: lat1,\n pageMissingShowPolyline_Longitude1: long1,\n pageMissingShowPolyline_Latitude2: lat2,\n pageMissingShowPolyline_Longitude2: long2,\n pageResetNextClick: false\n }\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (!this.props.selectionModeEnabled && prevProps.selectionModeEnabled) {\n var showPolyline = [];\n var lat1 = [];\n var long1 = [];\n var lat2 = [];\n var long2 = [];\n\n //Update refs where required\n if (this.props.capturedataLoaded) {\n this.props.capturedata.map((row, index) => {\n if (this.captureCircleRefs[index].current != null) {\n this.captureCircleRefs[index].current.setStyle({ fillOpacity: 0.2, fillColor: 'green' })\n }\n });\n }\n if (this.props.missingdataLoaded) {\n this.props.missingdata.map((row, index) => {\n if (this.missingCircleRefs[index].current != null) {\n this.missingCircleRefs[index].current.setStyle({ fillOpacity: 0.2, fillColor: 'red' })\n }\n showPolyline.push(false);\n lat1.push(0);\n long1.push(0);\n lat2.push(0);\n long2.push(0);\n });\n }\n this.setState({\n //Init - config\n pageCaptureClickedIndex: -1,\n pageCaptureClickedData: {},\n pageMissingClickedIndex: -1,\n pageMissingClickedData: {},\n pageMissingShowPolyline: showPolyline,\n pageMissingShowPolyline_Latitude1: lat1,\n pageMissingShowPolyline_Longitude1: long1,\n pageMissingShowPolyline_Latitude2: lat2,\n pageMissingShowPolyline_Longitude2: long2,\n pageResetNextClick: false\n });\n }\n }\n\n overrideColorsForSelection(capturedataIndex, capturedataData, missingdataIndex, missingdataData) {\n var showPolyline = this.state.pageMissingShowPolyline;\n var lat1 = this.state.pageMissingShowPolyline_Latitude1;\n var long1 = this.state.pageMissingShowPolyline_Longitude1;\n var lat2 = this.state.pageMissingShowPolyline_Latitude2;\n var long2 = this.state.pageMissingShowPolyline_Longitude2;\n\n //Mark clicked black\n if (capturedataIndex >= 0) {\n if (this.state.pageCaptureClickedIndex != null) {\n if ((this.state.pageCaptureClickedIndex != capturedataIndex) && (this.state.pageCaptureClickedIndex >= 0)) {\n //Set old one back to original color\n this.captureCircleRefs[this.state.pageCaptureClickedIndex].current.setStyle({ fillOpacity: 0.2, fillColor: 'green' })\n }\n }\n this.captureCircleRefs[capturedataIndex].current.setStyle({ fillOpacity: 1, fillColor: 'black' })\n }\n if (missingdataIndex >= 0) {\n if (this.state.pageMissingClickedIndex != null) {\n if ((this.state.pageMissingClickedIndex != missingdataIndex) && (this.state.pageMissingClickedIndex >= 0)) {\n //Set old one back to original color\n this.missingCircleRefs[this.state.pageMissingClickedIndex].current.setStyle({ fillOpacity: 0.2, fillColor: 'red' })\n }\n }\n this.missingCircleRefs[missingdataIndex].current.setStyle({ fillOpacity: 1, fillColor: 'black' })\n }\n if ((capturedataIndex >= 0) && (missingdataIndex >= 0)) {\n if (this.missingPolylineRefs[missingdataIndex].current != null) {\n this.missingPolylineRefs[missingdataIndex].current.setStyle({ fillOpacity: 1, fillColor: 'black' }) //done need to switch off as isnt shown\n }\n lat1[missingdataIndex] = capturedataData.Latitude;\n long1[missingdataIndex] = capturedataData.Longitude;\n lat2[missingdataIndex] = missingdataData.Latitude;\n long2[missingdataIndex] = missingdataData.Longitude;\n showPolyline[missingdataIndex] = true;\n } else {\n //No longer show polyline\n showPolyline[this.state.pageMissingClickedIndex] = false;\n }\n\n //Mark previous array brown\n var index;\n if (this.props.selectionModeEnabled) {\n for (var i = 0; i < this.props.selectionModeSelections.length; i++) {\n index = this.props.selectionModeSelections[i]['capture_rowIndex'];\n if ((index != null) && (index >= 0)) {\n this.captureCircleRefs[index].current.setStyle({ fillOpacity: 1, fillColor: 'brown' })\n }\n index = this.props.selectionModeSelections[i]['missing_rowIndex'];\n if ((index != null) && (index >= 0)) {\n this.missingCircleRefs[index].current.setStyle({ fillOpacity: 1, fillColor: 'brown' })\n if (this.missingPolylineRefs[index].current != null) {\n this.missingPolylineRefs[index].current.setStyle({ fillOpacity: 1, fillColor: 'brown' }) //done need to switch off as isnt shown\n }\n lat1[index] = this.props.selectionModeSelections[i][\"capture_rowData\"].Latitude;\n long1[index] = this.props.selectionModeSelections[i][\"capture_rowData\"].Longitude;\n lat2[index] = this.props.selectionModeSelections[i][\"missing_rowData\"].Latitude;\n long2[index] = this.props.selectionModeSelections[i][\"missing_rowData\"].Longitude;\n showPolyline[index] = true;\n }\n }\n }\n\n this.setState({\n //Store\n pageCaptureClickedIndex: capturedataIndex,\n pageCaptureClickedData: capturedataData,\n pageMissingClickedIndex: missingdataIndex,\n pageMissingClickedData: missingdataData,\n pageMissingShowPolyline: showPolyline,\n pageMissingShowPolyline_Latitude1: lat1,\n pageMissingShowPolyline_Longitude1: long1,\n pageMissingShowPolyline_Latitude2: lat2,\n pageMissingShowPolyline_Longitude2: long2,\n });\n }\n\n clickEventCapture(e) {\n if (this.props.selectionModeEnabled) {\n console.log('capture marker clicked', e.target.options.rowData); // logs position.\n if (e.target.options.rowIndex != null) {\n ///Check if already selected\n var alreadySelected = false\n var index;\n for (var i = 0; i < this.props.selectionModeSelections.length; i++) {\n index = this.props.selectionModeSelections[i]['capture_rowIndex'];\n if ((index != null) && (index >= 0)) {\n if (e.target.options.rowIndex == index) {\n //match found - no valid hole selected\n alreadySelected = true;\n break;\n }\n }\n }\n if (!alreadySelected) {\n if ((this.state.pageMissingClickedIndex >= 0) && !this.state.pageResetNextClick) {\n //Have both clicks - store in props\n this.props.selectionModeUpdate({\n 'capture_rowIndex': e.target.options.rowIndex,\n 'capture_rowData': e.target.options.rowData,\n 'missing_rowIndex': this.state.pageMissingClickedIndex,\n 'missing_rowData': this.state.pageMissingClickedData,\n });\n }\n if (this.state.pageResetNextClick) {\n //switch off polyline temporarily\n if (this.state.pageMissingClickedIndex != null) {\n if (this.state.pageMissingClickedIndex >= 0) {\n var polyline = this.state.pageMissingShowPolyline\n polyline[this.state.pageMissingClickedIndex] = false;\n this.setState({\n pageMissingShowPolyline: polyline,\n });\n }\n }\n this.setState({\n pageResetNextClick: false, \n pageCaptureClickedIndex: -1,\n pageCaptureClickedData: {},\n pageMissingClickedIndex: -1,\n pageMissingClickedData: {},\n });\n }\n if (this.state.pageMissingClickedIndex >= 0) {\n this.setState({\n pageResetNextClick: true\n });\n }\n this.overrideColorsForSelection(e.target.options.rowIndex, e.target.options.rowData, this.state.pageMissingClickedIndex, this.state.pageMissingClickedData);\n }\n }\n }\n }\n\n clickEventMissing(e) {\n if (this.props.selectionModeEnabled) {\n console.log('plan marker clicked', e.target.options.rowData); // logs position.\n if (e.target.options.rowIndex != null) {\n ///Check if already selected\n var alreadySelected = false\n var index;\n for (var i = 0; i < this.props.selectionModeSelections.length; i++) {\n index = this.props.selectionModeSelections[i]['missing_rowIndex'];\n if ((index != null) && (index >= 0)) {\n if (e.target.options.rowIndex == index) {\n //match found - no valid hole selected\n alreadySelected = true;\n break;\n }\n }\n }\n if (!alreadySelected) {\n if ((this.state.pageCaptureClickedIndex >= 0) && !this.state.pageResetNextClick) {\n //Have both clicks - store in props\n this.props.selectionModeUpdate({\n 'capture_rowIndex': this.state.pageCaptureClickedIndex,\n 'capture_rowData': this.state.pageCaptureClickedData,\n 'missing_rowIndex': e.target.options.rowIndex,\n 'missing_rowData': e.target.options.rowData,\n });\n }\n //Check for reset first\n if (this.state.pageResetNextClick) {\n if (e.target.options.rowIndex != null) {\n if (e.target.options.rowIndex >= 0) {\n var polyline = this.state.pageMissingShowPolyline\n polyline[e.target.options.rowIndex] = false;\n this.setState({\n pageMissingShowPolyline: polyline,\n });\n }\n }\n this.setState({\n pageResetNextClick: false,\n pageCaptureClickedIndex: -1,\n pageCaptureClickedData: {},\n pageMissingClickedIndex: -1,\n pageMissingClickedData: {},\n });\n }\n if (this.state.pageCaptureClickedIndex >= 0) {\n this.setState({\n pageResetNextClick: true\n });\n }\n this.overrideColorsForSelection(this.state.pageCaptureClickedIndex, this.state.pageCaptureClickedData, e.target.options.rowIndex, e.target.options.rowData);\n }\n }\n }\n }\n\n createbounds(data) {\n var findindex = 0;\n for (var i = 0; i < data.length; i++) {\n if (data[i].Latitude != 0 && data[i].Longitude != 0) {\n findindex = i;\n break;\n }\n }\n return findindex;\n }\n\n extendbounds(data, bounds) {\n data.map(row => {\n if (row.Latitude != 0 && row.Longitude != 0) {\n //Valid GPS locatiosn only\n bounds.extend([row.Latitude, row.Longitude])\n }\n })\n if (data.length == 1) {\n bounds.extend([data[0].Latitude + 0.001, data[0].Longitude + 0.001]) //to not have single latlong other the extend function crashes\n }\n }\n\n render() {\n var findindex;\n var data;\n if (this.props.capturedataLoaded) {\n findindex = this.createbounds(this.props.capturedata);\n data = this.props.capturedata;\n\n } else if (this.props.plandataLoaded) {\n findindex = this.createbounds(this.props.plandata);\n data = this.props.plandata;\n }\n const center = [data[findindex].Latitude, data[findindex].Longitude]\n const bounds = latLngBounds(data[findindex].Latitude, data[findindex].Longitude)\n this.extendbounds(data, bounds);\n\n return (\n
\n { this.props.PDFref.current = mapInstance }} center={center} preferCanvas={true} scrollWheelZoom={true} style={{ height: \"100%\", width: \"100%\" }} bounds={bounds} boundsOptions={{ padding: [100, 100] }}>\n \n {this.props.tilelayerenabled &&\n \n \n \n }\n {this.props.tilelayerenabled &&\n \n \n \n }\n \n \n {this.props.capturedataLoaded &&\n this.props.capturedata.map((row, index) =>\n row.Latitude != 0 && row.Longitude != 0 ?\n
\n { this.clickEventCapture(e) } }} ref={(ref) => { this.captureCircleRefs[index].current = ref; }}>\n \n
\n
Capture ID: {row.id}
\n
DateTime: {row.dateTimeLocalString}
\n
Depth Measured(mm): {row.depthhole_rounded}
\n
Toe RL(m): {JSON.parse(row.data).toerl}
\n
Reflectivity(%): {row.reflecthole_data}
\n
Points Collected: {JSON.parse(row.data).pointcount}
\n
Capture Type: {row.capturetype_data}
\n
\n
\n
\n
\n :
\n )}\n
\n
\n \n \n {this.props.plandataLoaded &&\n this.props.plandata.map(row =>\n row.Latitude != 0 && row.Longitude != 0 ?\n
\n \n \n
\n
Assoc Capture ID: {row.AssocCaptureId}
\n
Assoc Capture Dist: {row.AssocCaptureDistDiff}
\n
\n
\n
\n
\n :
\n )}\n
\n
\n \n \n {this.props.missingdataLoaded &&\n this.props.missingdata.map((row,index) =>\n row.Latitude != 0 && row.Longitude != 0 ?\n
\n { this.clickEventMissing(e) } }} ref={(ref) => { this.missingCircleRefs[index].current = ref; }}>\n \n
\n
Missing Name: {row.Name}
\n
\n
\n
\n
\n :
\n )}\n
\n {this.props.selectionModeEnabled &&\n \n {this.props.missingdataLoaded &&\n this.props.missingdata.map((row, index) =>\n row.Latitude != 0 && row.Longitude != 0 ?\n
\n {(this.state.pageMissingShowPolyline[index]) &&\n { this.missingPolylineRefs[index].current = ref; }} />\n }\n
\n :
\n )}\n
\n }\n
\n \n \n {this.props.diffdataLoaded &&\n this.props.diffdata.map(row =>\n row.Latitude_Plan != 0 && row.Longitude_Plan != 0 && row.Latitude_Capture != 0 && row.Longitude_Capture != 0?\n
\n \n \n
\n
Diff Hole Depth: {row.Diff_HoleDepth}
\n
Diff Toe RL: {row.Diff_ToeRL}
\n
\n
\n
\n \n
\n :
\n )}\n
\n
\n
\n
\n
\n );\n }\n}","export default __webpack_public_path__ + \"static/media/DownloadWhite.8747c68f.webp\";","import React, { Component } from 'react';\nimport { Button, Row, Col, Container } from 'reactstrap';\nimport XLSX from 'xlsx';\nimport \"../assets/css/bootstrap.min.css\";\nimport { GPSMapContainer } from './GPSMapContainer';\nimport downloadIcon from '../assets/DownloadWhite.webp';\nimport filterIcon from '../assets/FilterWhite.webp';\n\nexport class Table extends Component {\n static displayName = Table.name;\n\n constructor(props) {\n super(props);\n this.myRef = React.createRef();\n this.exportFile = this.exportFile.bind(this);\n }\n\n postUploadFull(handsetID, endtime) {\n this.props.postUploadFull(handsetID, endtime);\n }\n\n showDetailedData(id) {\n this.props.getDataCaptureOneDetailed(id);\n }\n\n toggleFilterModal() {\n this.props.toggleFilter();\n }\n\n togglePlanModal() {\n this.props.togglePlan();\n }\n\n toggleDispatchModal() {\n this.props.toggleDispatch();\n }\n\n toggleConfigModal() {\n this.props.toggleConfig();\n }\n\n toggleCaptureModal() {\n this.props.toggleCapture();\n }\n\n toggleReviewModal() {\n this.props.toggleReview();\n }\n\n toggleReportModal() {\n this.props.toggleReport();\n }\n\n renderTable(data) {\n let contents = this.props.loading\n ?\n
\n
\n Click Filter to retrieve data\n
\n
\n\n : \n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {data.map(row =>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )}\n \n
Capture IDDate (dd/mm/yyyy)Time (hh:mm:ss)GPS LatGPS LongDepth Measured(mm)Toe RL(m)Reflectivity(%)WetnessPoints CollectedTime to Collect(s)Capture TypeDeletedCommentDetailed Data
{row.id}{row.dateTimeLocalDateString}{row.dateTimeLocalTimeString}{JSON.parse(row.data).rovergpslat}{JSON.parse(row.data).rovergpslong}{row.depthhole_rounded}{JSON.parse(row.data).toerl}{row.reflecthole_data}{row.wetness_data}{JSON.parse(row.data).pointcount}{(JSON.parse(row.data).endtime - JSON.parse(row.data).starttime) / 1000}{row.capturetype_data}{row.deletedString}{row.commentString}\n {row.detailedDataAvailable == 0 &&\n \n }\n {row.detailedDataAvailable == 1 &&\n \n }\n {row.detailedDataAvailable == 2 &&\n
\n Pending\n
\n }\n
\n
\n
\n {this.props.showGPSMap ? :
}\n
\n
\n\n return (\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Dashboard\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n {contents}\n\n
\n );\n }\n\n exportFile() {\n /* convert table to worksheet */\n const ws = XLSX.utils.table_to_sheet(this.myRef.current); /*refes to DOM element*/\n\n /* build new workbook */\n const wb = XLSX.utils.book_new();\n XLSX.utils.book_append_sheet(wb, ws, \"Dipstick\");\n\n /* write file */\n const datestring = this.props.endDate.getFullYear() + \"-\" + (this.props.endDate.getMonth() + 1) + \"-\" +this.props.endDate.getDate() + \"_\" + this.props.endDate.getHours() + this.props.endDate.getMinutes();\n XLSX.writeFile(wb, \"Dipstick-\" + this.props.selectedhardwareID + \"_\" + datestring + '.xlsx');\n }\n\n render() {\n let contents = this.renderTable(this.props.data);\n\n return (\n
\n {contents}\n
\n );\n }\n\n}\n","export default __webpack_public_path__ + \"static/media/FilterWhite.de79599c.webp\";","import React, { Component } from 'react';\nimport * as THREE from \"three\";\nimport { OrbitControls } from \"three/examples/jsm/controls/OrbitControls\";\n\n const style = {\n height: \"60vh\" // we can control scene size by setting container dimensions\n};\n\nexport class ThreeWindow extends Component {\n static displayName = ThreeWindow.name;\n\n constructor(props) {\n super(props);\n }\n\n componentDidMount() {\n this.sceneSetup();\n this.addCustomSceneObjects();\n this.startAnimationLoop();\n window.addEventListener(\"resize\", this.handleWindowResize);\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"resize\", this.handleWindowResize);\n window.cancelAnimationFrame(this.requestID);\n this.controls.dispose();\n }\n\n // Standard scene setup in Three.js. Check \"Creating a scene\" manual for more information\n // https://threejs.org/docs/#manual/en/introduction/Creating-a-scene\n sceneSetup = () => {\n // get container dimensions and use them for scene sizing\n const width = this.el.clientWidth;\n const height = this.el.clientHeight;\n\n this.scene = new THREE.Scene();\n\n this.camera = new THREE.PerspectiveCamera(\n 27, // fov = field of view\n width / height, // aspect ratio\n 5, // near plane\n 35000 // far plane\n );\n this.camera.position.x = 27500;\n\n // OrbitControls allow a camera to orbit around the object\n // https://threejs.org/docs/#examples/controls/OrbitControls\n this.controls = new OrbitControls(this.camera, this.el);\n this.renderer = new THREE.WebGLRenderer();\n this.renderer.setSize(width, height);\n this.el.appendChild(this.renderer.domElement); // mount using React ref\n };\n\n addCustomSceneObjects = () => {\n var positions = [];\n var colors = [];\n var color = new THREE.Color();\n\n //Init Data - Base Station\n //var teststring = \"{ points: [{ x: 0, y: 0, z: 0, r: 0 },{ x: 0, y: 0, z: 0, r: 0 },{ x: 0, y: 0, z: 0, r: 0 }]}\"\n //var teststring = JSON.stringify(this.props.threeWindowPointsData);\n //teststring = teststring.replace(/x:/g, \"\\\"x\\\":\")\n //teststring = teststring.replace(/y:/g, \"\\\"y\\\":\")\n //teststring = teststring.replace(/z:/g, \"\\\"z\\\":\")\n //teststring = teststring.replace(/r:/g, \"\\\"r\\\":\")\n //teststring = teststring.replace(\"points:\", \"\\\"points\\\":\")\n var pointcloud = this.props.threeWindowPointsData;\n for (var i = 0; i < pointcloud.length; i++) {\n\n // positions\n var x = pointcloud[i].x;\n var y = pointcloud[i].y;\n var z = pointcloud[i].z;\n\n if (x !== 0 && y !== 0 && z !== 0) {\n //push non-zero values\n positions.push(x, y, z);\n // colors\n var vx = pointcloud[i].r;\n var vy = 255;\n var vz = 0;\n color.setRGB(vx, vy, vz);\n colors.push(color.r, color.g, color.b);\n }\n }\n\n var geometry = new THREE.BufferGeometry();\n geometry.setAttribute('position', new THREE.Float32BufferAttribute(positions, 3));\n geometry.setAttribute('color', new THREE.Float32BufferAttribute(colors, 3));\n geometry.computeBoundingSphere();\n\n var material = new THREE.PointsMaterial({ size: 10, vertexColors: THREE.VertexColors });\n var points = new THREE.Points(geometry, material);\n this.scene.add(points);\n };\n\n startAnimationLoop = () => {\n //this.cube.rotation.x += 0.01;\n //this.cube.rotation.y += 0.01;\n\n this.renderer.render(this.scene, this.camera);\n\n // The window.requestAnimationFrame() method tells the browser that you wish to perform\n // an animation and requests that the browser call a specified function\n // to update an animation before the next repaint\n this.requestID = window.requestAnimationFrame(this.startAnimationLoop);\n };\n\n handleWindowResize = () => {\n const width = this.el.clientWidth;\n const height = this.el.clientHeight;\n\n this.renderer.setSize(width, height);\n this.camera.aspect = width / height;\n this.camera.updateProjectionMatrix();\n };\n\n render() {\n return
(this.el = ref)} />;\n }\n\n}\n","import React, { Component } from \"react\";\nimport { ThreeWindow } from './ThreeWindow';\nimport { Modal, ModalHeader, ModalBody, Nav, NavItem, NavLink, Row, Col, Container } from 'reactstrap';\nimport classnames from 'classnames';\nimport Plot from 'react-plotly.js';\n\nexport default class PopUp extends Component {\n constructor(props) {\n super(props);\n\n this.toggleTab = this.toggleTab.bind(this);\n this.state = {\n activeTab: '3'\n };\n }\n\n toggleTab(tab) {\n if (this.state.activeTab !== tab) {\n this.setState({\n activeTab: tab\n });\n }\n }\n\n handleClick = () => {\n this.props.toggle();\n };\n\n render() {\n return (\n \n Detailed Data:\n \n {this.props.showDetailedWindow ?\n
\n {(this.props.popupDetailedData != '{}') ?\n
\n \n {(this.state.activeTab == 1) &&\n
\n \n \n \n \n \n \n \n
\n }\n {(this.state.activeTab == 2) &&\n
\n \n \n \n \n \n \n \n
\n }\n {(this.state.activeTab == 3) &&\n
\n \n \n \n
\n \n
\n
\n
\n }\n {(this.state.activeTab == 4) &&\n
\n \n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n
\n }\n
\n :
No Detailed Data
\n }\n
\n :
Loading Data...
\n }\n
\n
\n );\n }\n}","export default __webpack_public_path__ + \"static/media/person.efb69620.svg\";","import React, { Component } from 'react';\nimport * as THREE from \"three\";\nimport { OrbitControls } from \"three/examples/jsm/controls/OrbitControls\";\n\n const style = {\n height: \"60vh\" // we can control scene size by setting container dimensions\n};\n\nexport class ThreeWindow_Plane extends Component {\n static displayName = ThreeWindow_Plane.name;\n\n constructor(props) {\n super(props);\n }\n\n componentDidMount() {\n this.sceneSetup();\n this.addCustomSceneObjects();\n this.startAnimationLoop();\n window.addEventListener(\"resize\", this.handleWindowResize);\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"resize\", this.handleWindowResize);\n window.cancelAnimationFrame(this.requestID);\n this.controls.dispose();\n }\n\n // Standard scene setup in Three.js. Check \"Creating a scene\" manual for more information\n // https://threejs.org/docs/#manual/en/introduction/Creating-a-scene\n sceneSetup = () => {\n // get container dimensions and use them for scene sizing\n const width = this.el.clientWidth;\n const height = this.el.clientHeight;\n\n this.scene = new THREE.Scene();\n\n this.camera = new THREE.PerspectiveCamera(\n 27, // fov = field of view\n width / height, // aspect ratio\n 5, // near plane\n 35000 // far plane\n );\n this.camera.position.x = 27500;\n\n // OrbitControls allow a camera to orbit around the object\n // https://threejs.org/docs/#examples/controls/OrbitControls\n this.controls = new OrbitControls(this.camera, this.el);\n this.renderer = new THREE.WebGLRenderer();\n this.renderer.setSize(width, height);\n this.el.appendChild(this.renderer.domElement); // mount using React ref\n };\n\n addCustomSceneObjects = () => {\n var positions = [];\n var colors = [];\n var color = new THREE.Color();\n\n ////Init Data - Base Station\n //for (var i = 0; i < pointcloud.points.length; i++) {\n\n // // positions\n // var x = pointcloud.points[i].x;\n // var y = pointcloud.points[i].y;\n // var z = pointcloud.points[i].z;\n\n // if (x !== 0 && y !== 0 && z !== 0) {\n // //push non-zero values\n // positions.push(x, y, z);\n // // colors\n // var vx = pointcloud.points[i].r;\n // var vy = 255;\n // var vz = 0;\n // color.setRGB(vx, vy, vz);\n // colors.push(color.r, color.g, color.b);\n // }\n //}\n\n var geometry = new THREE.BufferGeometry();\n geometry.setAttribute('position', new THREE.Float32BufferAttribute(positions, 3));\n geometry.setAttribute('color', new THREE.Float32BufferAttribute(colors, 3));\n geometry.computeBoundingSphere();\n\n var material = new THREE.PointsMaterial({ size: 10, vertexColors: THREE.VertexColors });\n var points = new THREE.Points(geometry, material);\n this.scene.add(points);\n };\n\n startAnimationLoop = () => {\n //this.cube.rotation.x += 0.01;\n //this.cube.rotation.y += 0.01;\n\n this.renderer.render(this.scene, this.camera);\n\n // The window.requestAnimationFrame() method tells the browser that you wish to perform\n // an animation and requests that the browser call a specified function\n // to update an animation before the next repaint\n this.requestID = window.requestAnimationFrame(this.startAnimationLoop);\n };\n\n handleWindowResize = () => {\n const width = this.el.clientWidth;\n const height = this.el.clientHeight;\n\n this.renderer.setSize(width, height);\n this.camera.aspect = width / height;\n this.camera.updateProjectionMatrix();\n };\n\n render() {\n return
(this.el = ref)} />;\n }\n\n}\n","import React, { Component, useCallback } from 'react';\nimport { Table } from './Table';\nimport { Alert, Col, Modal, ModalBody, Row, Button, Navbar, Container, NavbarBrand, NavbarToggler, Nav, NavItem, Dropdown, DropdownToggle, DropdownMenu, DropdownItem, Form, Label, FormGroup, Collapse, ModalHeader, ModalFooter, InputGroup, InputGroupAddon, InputGroupText, Input, FormFeedback, Fade, Card, Spinner, Toast, ToastBody} from 'reactstrap';\nimport DatePicker from 'react-datepicker';\nimport DataGrid from 'react-data-grid';\nimport XLSX from 'xlsx';\nimport PopUp from \"./PopUp\"; \nimport \"react-datepicker/dist/react-datepicker.css\";\nimport { toLatLon } from 'utm';\nimport userIcon from '../assets/person.svg';\nimport { GPSMapContainer } from './GPSMapContainer';\nimport { ThreeWindow_Plane } from './ThreeWindow_Plane';\nimport { Canvas, Page, Text, View, Document, StyleSheet, Image, PDFDownloadLink } from '@react-pdf/renderer';\nimport { toPng } from 'html-to-image';\nimport leafletImage from 'leaflet-image';\nimport Plot from 'react-plotly.js';\nimport Plotly from 'plotly.js';\n\nexport class Home extends Component {\n static displayName = Home.name;\n\n constructor(props) {\n super(props);\n\n //Init\n var dateOffset = (24 * 60 * 60 * 1000) * 30; //30days\n var startDate = new Date();\n startDate.setTime(startDate.getTime() - dateOffset);\n\n //File upload ref\n this.fileInput = React.createRef();\n\n //PDF download ref\n\n this.PDFleafletref = [React.createRef(), React.createRef(), React.createRef(), React.createRef()];\n this.nonPDFleafletref = React.createRef();\n this.PDFtableref = React.createRef();\n this.Extratableref_DiffvsPlan = React.createRef();\n this.Extratableref_Additional = React.createRef();\n this.Extratableref_Missing = React.createRef();\n this.styles = StyleSheet.create({\n page: {\n backgroundColor: \"white\",\n },\n headerTitle: {\n position: \"absolute\",\n left: \"7%\",\n top: \"12%\",\n fontSize: 47,\n fontStyle: \"normal\", //normal, italic\n fontWeight: \"bold\", //normal, bold, bolder\n color: \"#0E2836\", //Diptek Blue\n },\n headerText: {\n position: \"absolute\",\n top: \"15%\",\n right: \"20%\",\n fontSize: 25,\n fontStyle: \"normal\", //normal, italic\n fontWeight: \"bold\", //normal, bold, bolder\n color: \"#0E2836\", //Diptek Blue\n },\n headerGenerated: {\n position: \"absolute\",\n bottom: \"2%\",\n fontSize: 10,\n fontStyle: \"normal\", //normal, italic\n fontWeight: \"normal\", //normal, bold, bolder\n textAlign: \"center\",\n color: \"#939a9e\", //Light Grey\n },\n headerCustomField: {\n position: \"absolute\",\n left: \"7%\",\n bottom: \"15%\",\n fontSize: 20,\n fontStyle: \"normal\", //normal, italic\n fontWeight: \"normal\", //normal, bold, bolder\n color: \"#0E2836\", //Diptek Blue\n },\n headerLogo: {\n position: \"absolute\",\n height: \"auto\",\n width: \"30%\",\n right: \"10%\",\n bottom: \"10%\",\n },\n headerImage: {\n borderWidth: 2,\n borderStyle: \"solid\",\n borderColor: \"#0E2836\",\n position: \"absolute\",\n height: \"40%\",\n left: \"-1%\",\n right: \"-1%\",\n bottom: \"30%\",\n },\n footerLogo: {\n position: \"absolute\",\n height: \"10%\",\n width: \"20%\",\n left: \"2%\",\n bottom: \"2%\",\n },\n footerText: {\n position: \"absolute\",\n left: \"28%\",\n bottom: \"6.5%\",\n fontSize: 16,\n fontStyle: \"normal\", //normal, italic\n fontWeight: \"bold\", //normal, bold, bolder\n color: \"#0E2836\", //Diptek Blue\n },\n footerBreak: {\n position: \"absolute\",\n height: \"0.2%\",\n width: \"96%\",\n left: \"2%\",\n bottom: \"14%\",\n color: \"#0E2836\", //Diptek Blue\n },\n pageTitle: {\n position: \"absolute\",\n left: \"2%\",\n top: \"2%\",\n fontSize: 20,\n fontStyle: \"normal\", //normal, italic\n fontWeight: \"bolder\", //normal, bold, bolder\n color: \"#0E2836\", //Diptek Blue\n textDecoration: \"underline\",\n },\n pageSummary: {\n position: \"absolute\",\n left: \"2%\",\n top: \"7%\",\n fontSize: 16,\n fontStyle: \"normal\", //normal, italic\n fontWeight: \"normal\", //normal, bold, bolder\n color: \"#0E2836\", //Diptek Blue\n },\n pageKey: {\n position: \"absolute\",\n right: \"10%\",\n bottom: \"0%\",\n fontSize: 10,\n fontStyle: \"normal\", //normal, italic\n fontWeight: \"bolder\", //normal, bold, bolder\n color: \"#0E2836\", //Diptek Blue\n },\n imageTable: {\n backgroundColor: \"white\",\n margin: 0,\n },\n imageLeaflet: {\n position: \"absolute\",\n height: \"auto\",\n width: \"100%\",\n left: \"0%\",\n top: \"0%\",\n backgroundColor: \"white\",\n margin: 0,\n },\n imagePlotly: {\n position: \"absolute\",\n height: \"auto\",\n width: \"60%\",\n left: \"20%\",\n top: \"0%\",\n backgroundColor: \"white\",\n margin: 0,\n },\n });\n\n this.state = {\n //Init - config\n pagePreload: false,\n pageDataSummary: true,\n\n //General\n captureData: [],\n loading: true,\n startDate: startDate,\n endDate: new Date(),\n\n //AnyPageDataLoading\n anyPageDataLoading: 0,\n anyPageDataLoadingDetails: \"\",\n\n //AnyPageDataLoading\n anyPageError: false,\n anyPageErrorDetails: \"\",\n\n //Popup\n seen: false,\n showDetailedWindow: false,\n popupDetailedData: {},\n\n //User Data\n name: \"User\",\n organisationName: \"Company\",\n\n //locations\n location: [],\n loadinglocation: true,\n selectedlocationID: \"0\",\n\n //sublocations\n sublocation: [],\n loadingsublocation: true,\n selectedsublocationID: \"0\",\n createsublocationName: \"\",\n\n //sequence\n sequence: [],\n loadingsequence: true,\n selectedsequenceID: \"0\",\n createsequenceName: \"\",\n\n //subsequence\n subsequence: [],\n loadingsubsequence: true,\n selectedsubsequenceID: \"0\",\n createsubsequenceName: \"\",\n\n //plan\n plan: [],\n loadingplan: true,\n selectedplanID: \"0\",\n createplanVersion: 0,\n createplanStartTime: new Date(),\n createplanEndTime: new Date(),\n createplanData: { 'Name': \"\" },\n\n //plandetails\n plandetails: [],\n loadingplandetails: true,\n\n //dispatch\n dispatch: [],\n loadingdispatch: true,\n selecteddispatchID: \"0\",\n createdispatchName: \"\",\n createdispatchTime: new Date(0), //deafult to epoch 1970, used to show actual dispatch datetime\n\n dispatchPlanDetailsSelected: false,\n dispatchPlanDetailsShow: false,\n selectedDispatchPlanDetailsID: \"0\",\n selectedDispatchPlanID: [],\n selectedDispatchPlanIDRequested: [],\n dispatchPlanDetailsAll: [],\n dispatchPlanDetails: [],\n dispatchPlanDetailsNot: [],\n\n dispatchCheckboxIncludeRefSelected: true,\n dispatchToDeviceLoading: false,\n\n //review\n review: [],\n loadedreview: false,\n reviewSelectionMode: false,\n reviewSelections: [],\n\n\n //report\n report: [],\n loadedreport: false,\n optionsIncludePageSelected: [true,true,true,true,true,true,true,true,true,true],\n reportHeaderCustomField: [\"\", \"\", \"\", \"\", \"\", \"ToeRL\", \"ToeRL\", \"\", \"\", \"\"],\n\n //hardware\n hardware: [],\n loadinghardware: true,\n selectedhardwareID: \"0\",\n\n //Dropdown Open\n dropdownOpen: false,\n\n //NavBarCollapse\n navOpen: false,\n\n //Filter Collapse Toggle\n filterOpen: false,\n planOpen: false,\n dispatchOpen: false,\n configOpen: false,\n captureOpen: false,\n reviewOpen: false,\n reportOpen: false,\n\n //Fileupload open\n isOpen: false,\n dataLoaded: false,\n isFormInvalid: false,\n checkValidation: true,\n validationErrors: [],\n rows: [],\n cols: [],\n extra: [],\n extra_line: [],\n filePlanData: [],\n\n //PDF\n leafletPDFcanvas0: null,\n leafletPDFcanvas1: null,\n leafletPDFcanvas2: null,\n leafletPDFcanvas3: null,\n plotlyPDFcanvas0: null,\n plotlyPDFcanvas1: null,\n plotlyPDFcanvas2: null,\n PDFgenerated: false,\n PDFloading: false,\n PDFplotDivId: [\"PDFplotDivId0\", \"PDFplotDivId1\", \"PDFplotDivId2\"], //Unique name/numbers\n ExtraDataLoading: false,\n };\n }\n\n componentDidMount() {\n const accessToken = this.props.auth.getAccessToken();\n\n //Get user info meta data\n this.props.auth.getUserInfo(accessToken, this.setUserData)\n }\n\n setUserData = user => {\n this.setState({\n name: user.name,\n organisationName: user.organisationName\n });\n\n //First we run\n this.getLocationAll();\n }\n\n togglePop = () => {\n this.setState({\n seen: !this.state.seen\n });\n\n //reset three window when closed\n if (this.state.seen) {\n this.setState({\n showDetailedWindow: false\n });\n }\n };\n\n toggleDropdown = () => {\n this.setState({\n dropdownOpen: !this.state.dropdownOpen\n });\n\n };\n\n toggleNavCollapse = () => {\n this.setState({\n navOpen: !this.state.navOpen\n });\n };\n\n toggleFilter() {\n this.setState({\n filterOpen: !this.state.filterOpen\n });\n };\n\n toggleValidation = () => {\n this.setState({\n checkValidation: !this.state.checkValidation\n });\n };\n\n\n\n toggleFilterHome = () => {\n this.setState({\n filterOpen: !this.state.filterOpen\n });\n };\n\n togglePlan() {\n if (!this.state.pagePreload) {\n if (!this.state.planOpen) {\n if (this.state.loadingplan) {\n var value = this.state.selectedsubsequenceID;\n if (value !== \"0\") {\n this.getPlanAll(value);\n }\n }\n }\n }\n if (this.state.planOpen) {\n this.setState({\n //Only on close\n dataLoaded: false,\n });\n }\n this.setState({\n planOpen: !this.state.planOpen\n });\n };\n\n togglePlanHome = () => {\n if (this.state.planOpen) {\n this.setState({\n //Only on close\n dataLoaded: false,\n });\n }\n this.setState({\n planOpen: !this.state.planOpen\n });\n };\n\n toggleDispatch() {\n if (!this.state.pagePreload) {\n if (!this.state.dispatchOpen) {\n if (this.state.loadingdispatch) {\n var value = this.state.selectedlocationID;\n var value2 = this.state.selectedhardwareID;\n if ((value !== \"0\") && (value2 !== \"0\")) {\n this.getDispatchByHardware(value, value2);\n }\n }\n }\n }\n if (this.state.dispatchOpen) {\n this.setState({\n //Only on close\n createdispatchName: \"\",\n dataLoaded: false,\n });\n }\n this.setState({\n dispatchOpen: !this.state.dispatchOpen\n });\n };\n\n toggleDispatchHome = () => {\n if (this.state.dispatchOpen) {\n this.setState({\n //Only on close\n createdispatchName: \"\",\n dataLoaded: false,\n });\n }\n this.setState({\n dispatchOpen: !this.state.dispatchOpen\n });\n };\n\n toggleDispatchCheckboxIncludeRef = () => {\n this.setState({\n dispatchCheckboxIncludeRefSelected: !this.state.dispatchCheckboxIncludeRefSelected\n });\n };\n\n toggleConfig() {\n if (!this.state.pagePreload) {\n if (!this.state.configOpen) {\n if (this.state.loadingsublocation) {\n var value = this.state.selectedlocationID;\n if (value !== \"0\") {\n this.getSubLocationAll(value);\n }\n }\n }\n }\n this.setState({\n configOpen: !this.state.configOpen\n });\n };\n\n toggleConfigHome = () => {\n this.setState({\n configOpen: !this.state.configOpen\n });\n };\n\n toggleCapture() {\n this.setState({\n captureOpen: !this.state.captureOpen\n });\n };\n\n toggleCaptureHome = () => {\n this.setState({\n captureOpen: !this.state.captureOpen\n });\n };\n\n toggleReview() {\n if (!this.state.pagePreload) {\n if (!this.state.reviewOpen) {\n if (this.state.loadingdispatch) {\n var value = this.state.selectedlocationID;\n var value2 = this.state.selectedhardwareID;\n if ((value !== \"0\") && (value2 !== \"0\")) {\n this.getDispatchByHardware(value, value2);\n }\n }\n }\n }\n this.setState({\n reviewOpen: !this.state.reviewOpen,\n });\n };\n\n toggleReviewHome = () => {\n this.setState({\n reviewOpen: !this.state.reviewOpen,\n });\n };\n\n toggleReport() {\n if (!this.state.pagePreload) {\n if (!this.state.reportOpen) {\n if (this.state.loadingplan) {\n var value = this.state.selectedsubsequenceID;\n if (value !== \"0\") {\n this.getPlanAll(value);\n }\n }\n }\n }\n this.setState({\n reportOpen: !this.state.reportOpen,\n\n loadedreport: false,\n PDFgenerated: false,\n PDFloading: false\n });\n };\n\n toggleReportHome = () => {\n this.setState({\n reportOpen: !this.state.reportOpen,\n\n loadedreport: false,\n PDFgenerated: false,\n PDFloading: false\n });\n };\n\n closeErrorAlert = () => {\n this.setState({\n anyPageError: false,\n anyPageErrorDetails: \"\"\n });\n };\n\n toggleReportOptionsIncludePage(e, index) {\n //Turn off report loaded\n this.setState({\n loadedreport: false,\n PDFgenerated: false,\n PDFloading: false\n });\n\n var array = this.state.optionsIncludePageSelected\n array[index] = !array[index]\n this.setState({\n optionsIncludePageSelected: array\n });\n };\n\n toggleDispatchPlanDetails() {\n //Store results\n this.setState({\n dispatchPlanDetailsShow: !this.state.dispatchPlanDetailsShow,\n dispatchPlanDetailsSelected: false,\n selectedDispatchPlanDetailsID: \"0\",\n dispatchPlanDetailsAll: [], //Reset\n dispatchPlanDetails: [], //Reset\n dispatchPlanDetailsNot: [], //Reset\n selectedDispatchPlanID: [], //Reset\n selectedDispatchPlanIDRequested: [], //Reset\n });\n };\n\n setStartDate = date => {\n this.setState({\n startDate: date\n });\n //console.log(new Date(date + \" UTC\").toISOString());\n };\n\n setEndDate = date => {\n this.setState({\n endDate: date\n });\n };\n\n setSelectedHardware = (e) => {\n var value = e.target.value;\n this.setState({\n selectedhardwareID: value\n });\n if (this.state.pagePreload) {\n if (value !== \"0\") {\n\n //Request for the Dispatch for this location\n var value2 = this.state.selectedlocationID;\n if (value2 !== \"0\") {\n this.getDispatchByHardware(value2, value);\n }\n };\n } else {\n this.setState({\n loadingdispatch: true,\n selecteddispatchID: \"0\",\n });\n var value2 = this.state.selectedlocationID;\n if ((value !== \"0\") && (value2 !== \"0\")) {\n this.getDispatchByHardware(value2, value);\n };\n };\n };\n\n setSelectedLocation = (e) => {\n var value = e.target.value;\n this.setState({\n selectedlocationID: value\n });\n\n if (this.state.pagePreload) {\n if (value !== \"0\") {\n //Request for the hardware for this location\n this.getHardwareAll(value);\n\n //Request for the hardware for this location\n this.getSubLocationAll(value);\n\n //Request for the Dispatch for this location\n var value2 = this.state.selectedhardwareID;\n if (value2 !== \"0\") {\n this.getDispatchByHardware(value, value2);\n }\n };\n } else {\n this.setState({\n loadinghardware: true,\n selectedhardwareID: \"0\",\n loadingsublocation: true,\n selectedsublocationID: \"0\",\n loadingsequence: true,\n selectedsequenceID: \"0\",\n loadingsubsequence: true,\n selectedsubsequenceID: \"0\",\n loadingplan: true,\n selectedplanID: \"0\",\n loadingdispatch: true,\n selecteddispatchID: \"0\",\n });\n if (value !== \"0\") {\n this.getHardwareAll(value);\n };\n };\n };\n\n setSelectedSubLocation = (e) => {\n var value = e.target.value;\n this.setState({\n selectedsublocationID: value\n });\n\n if (this.state.pagePreload) {\n //Request for the sequence for this sublocation\n if (value !== \"0\") {\n this.getSequenceAll(value);\n };\n } else {\n this.setState({\n loadingsequence: true,\n selectedsequenceID: \"0\",\n loadingsubsequence: true,\n selectedsubsequenceID: \"0\",\n });\n if (value !== \"0\") {\n this.getSequenceAll(value);\n };\n };\n };\n\n setCreateSubLocationName = (e) => {\n var value = e.target.value;\n this.setState({\n createsublocationName: value\n });\n };\n\n setSelectedSequence = (e) => {\n var value = e.target.value;\n this.setState({\n selectedsequenceID: value\n });\n\n if (this.state.pagePreload) {\n //Request for the subsequence for this sequence\n if (value !== \"0\") {\n this.getSubSequenceAll(value);\n };\n } else {\n this.setState({\n loadingsubsequence: true,\n selectedsubsequenceID: \"0\",\n });\n if (value !== \"0\") {\n this.getSubSequenceAll(value);\n };\n };\n };\n\n setCreateSequenceName = (e) => {\n var value = e.target.value;\n this.setState({\n createsequenceName: value\n });\n };\n\n setSelectedSubSequence = (e) => {\n var value = e.target.value;\n this.setState({\n selectedsubsequenceID: value\n });\n\n if (this.state.pagePreload) {\n //Request for the Plan for this sub-sequence\n if (value !== \"0\") {\n this.getPlanAll(value);\n };\n } else {\n this.setState({\n loadingplan: true,\n selectedplanID: \"0\",\n });\n if (value !== \"0\") {\n this.getPlanAll(value);\n };\n };\n };\n\n setCreateSubSequenceName = (e) => {\n var value = e.target.value;\n this.setState({\n createsubsequenceName: value\n });\n };\n\n setSelectedPlan = (e) => {\n var value = e.target.value;\n this.setState({\n selectedplanID: value\n });\n\n if (this.state.pagePreload) {\n //Request for the PlanDetails for this Plan\n if (value !== \"0\") {\n this.getPlanDetailsAll(value);\n };\n } else {\n this.setState({\n loadingplandetails: true,\n });\n if (value !== \"0\") {\n this.getPlanDetailsAll(value);\n };\n };\n };\n\n setCreatePlanVersion = (e) => {\n var value = e.target.value;\n this.setState({\n createplanVersion: parseInt(value)\n });\n };\n\n setCreatePlanStartTime = (e) => {\n var value = e.target.value;\n this.setState({\n createplanStartTime: value\n });\n };\n\n setCreatePlanEndTime = (e) => {\n var value = e.target.value;\n this.setState({\n createplanEndTime: value\n });\n };\n\n setCreatePlanData = (e) => {\n var value = e.target.value;\n this.setState({\n createplanData: { 'Name': value },\n });\n };\n\n setSelectedDispatch = (e) => {\n var value = e.target.value;\n this.setState({\n selecteddispatchID: value\n });\n };\n\n setCreateDispatchName = (e) => {\n var value = e.target.value;\n this.setState({\n createdispatchName: value\n });\n };\n\n setSelectedDispatchPlan = (e) => {\n var opts = [], opt;\n for (var i = 0; i < e.target.options.length; i++) {\n opt = e.target.options[i];\n if (opt.selected) {\n opts.push(opt.value);\n\n //Get detailed plan request\n if (this.state.selectedDispatchPlanIDRequested[i] !== opt.value) {\n this.getPlanDetailsAllForDispatch(opt.value);\n }\n }\n }\n this.setState({\n selectedDispatchPlanID: opts,\n selectedDispatchPlanIDRequested: e.target.options,\n\n //clear Dispatchdetails select list\n dispatchPlanDetailsSelected: false, //turns off the map\n selectedDispatchPlanDetailsID: \"0\",\n dispatchPlanDetailsAll: [], //Reset\n dispatchPlanDetails: [], //Reset\n dispatchPlanDetailsNot: [], //Reset\n\n });\n }\n\n setSelectedDispatchPlanDetails = (e) => {\n var opts = [], opt;\n var data = [], datanot = [];\n for (var i = 0; i < e.target.options.length; i++) {\n opt = e.target.options[i];\n if (opt.selected) {\n opts.push(opt.value);\n data.push(this.state.dispatchPlanDetailsAll[i]);\n } else {\n //Not selected but kept incase needed for reference\n datanot.push(this.state.dispatchPlanDetailsAll[i]);\n }\n }\n this.setState({\n selectedDispatchPlanDetailsID: opts,\n dispatchPlanDetails: data,\n dispatchPlanDetailsNot: datanot,\n });\n\n //Store results\n var selected = false;\n if (data.length > 0) {\n selected = true;\n }\n this.setState({\n dispatchPlanDetailsSelected: selected,\n });\n }\n\n setReportHeaderCustomField(e, index) {\n //Turn off report loaded\n this.setState({\n loadedreport: false,\n PDFgenerated: false,\n PDFloading: false\n });\n\n var value = e.target.value;\n var array = this.state.reportHeaderCustomField;\n array[index] = value;\n this.setState({\n reportHeaderCustomField: array\n });\n };\n\n createDispatchPlanDetailsForPost() {\n //Add to Dispatch List\n var data2 = this.state.dispatchPlanDetails;\n if (this.state.dispatchCheckboxIncludeRefSelected) {\n //Include Not details for reference\n var locationIndex = this.state.location.findIndex(x => x.id == this.state.selectedlocationID);\n var locationUTMZoneNum = parseInt(this.state.location[locationIndex].data[\"UTMZoneNum\"]);\n var locationUTMZoneLet = this.state.location[locationIndex].data[\"UTMZoneLet\"];\n\n for (var i = 0; i < this.state.dispatchPlanDetailsNot.length; i++) {\n var tempPlanDetailsNot = this.state.dispatchPlanDetailsNot[i];\n //manage for -ve numbers (react-leaflet cant handle)\n var tempLatLon = toLatLon(tempPlanDetailsNot.data[\"Easting\"], tempPlanDetailsNot.data[\"Northing\"], locationUTMZoneNum, locationUTMZoneLet); //Easting, Northing\n tempPlanDetailsNot[\"Latitude\"] = tempLatLon.latitude;\n tempPlanDetailsNot[\"Longitude\"] = tempLatLon.longitude;\n tempPlanDetailsNot[\"AssocCaptureId\"] = 0;\n tempPlanDetailsNot[\"AssocCaptureDistDiff\"] = 0;\n\n //Override\n tempPlanDetailsNot[\"dispatchOrder\"] = -1; //Flag as only for reference\n\n data2.push(tempPlanDetailsNot);\n }\n }\n return data2;\n }\n\n selectionModeUpdate(object) {\n var tempreview = this.state.reviewSelections;\n tempreview.push(object);\n this.setState({\n reviewSelections: tempreview\n });\n };\n\n openFileBrowser = () => {\n this.fileInput.current.click();\n }\n\n renderFile = (fileObj) => {\n\n // Pass file object as param\n const fileReader = new FileReader();\n fileReader.readAsArrayBuffer(fileObj);\n fileReader.onload = e => {\n\n var locationIndex = this.state.location.findIndex(x => x.id == this.state.selectedlocationID);\n var locationUTMZoneNum = parseInt(this.state.location[locationIndex].data[\"UTMZoneNum\"]);\n var locationUTMZoneLet = this.state.location[locationIndex].data[\"UTMZoneLet\"];\n \n var bstr = e.target.result;\n var wb = XLSX.read(bstr, { type: \"array\" });\n\n // Get first worksheet \n var wsname = wb.SheetNames[0];\n var ws = wb.Sheets[wsname];\n // Parse excel plan \n var json = XLSX.utils.sheet_to_json(ws, { header: 1 });\n var planHeaders = json.shift();\n // Validate Headers are as expected\n this.validateExcelPlanHeaders(planHeaders);\n var originalDataHeaders = []\n var originalDataRows = JSON.parse(JSON.stringify(json));\n\n if (planHeaders != null) {\n if (planHeaders.length > 0) {\n // Get Sheet Headers 'as is' to display in Table\n originalDataHeaders[0] = { name: \"Row#\", key: 0 }\n for (var i = 0; i < planHeaders.length; i++) {\n originalDataHeaders[i + 1] = { name: planHeaders[i], key: (i + 1) };\n }\n // Table Data 'as is'\n for (var i = 0; i < originalDataRows.length; i++) {\n originalDataRows[i].splice(0, 0, i);\n }\n }\n }\n\n this.setState({\n cols: originalDataHeaders,\n rows: originalDataRows\n });\n\n\n var planData = {\n holeIDArr: new Array(),\n holeCoords: {\n eastingArr: new Array(),\n northingArr: new Array()\n },\n rlArr: new Array(),\n depthArr: new Array(),\n diamArr: new Array()\n }\n\n var extradata = [];\n var extradata_line = [];\n\n if (this.state.validationErrors.length == 0) {\n for (var i = 0; i < json.length; i++) {\n var tempHoleID = this.validateHoleID(json[i][0], i)\n var tempCoordsEast = this.validateCoord(json[i][1], i)\n var tempCoordsNorth = this.validateCoord(json[i][2], i)\n var tempRL = this.validateRL(json[i][3], i)\n var tempDepth = this.validateDepth(json[i][4], i)\n var tempDiam = this.validateDiam(json[i][5], i)\n\n planData.holeIDArr[i] = tempHoleID\n planData.holeCoords.eastingArr[i] = tempCoordsEast\n planData.holeCoords.northingArr[i] = tempCoordsNorth\n planData.rlArr[i] = tempRL\n planData.depthArr[i] = tempDepth\n planData.diamArr[i] = tempDiam\n\n //Store LatLong\n if ((tempCoordsEast != null) && (tempCoordsNorth != null)) {\n var LatLong = toLatLon(tempCoordsEast, tempCoordsNorth, locationUTMZoneNum, locationUTMZoneLet); //Convert Easting, Northing, ZoneNumber (50), Zone Letter (J) to Lat Long\n extradata.push(LatLong); // Store Lat Long\n if (extradata.length > 0) {\n var tempArray = [extradata[i - 1], extradata[i]];\n extradata_line.push(tempArray);\n }\n }\n }\n\n // Validates for Duplicate HoleID's & Coordinates\n this.validatePlan(planData)\n\n // If no errors set data as expected\n if (this.state.validationErrors.length == 0) {\n //Set state\n this.setState({\n dataLoaded: true,\n filePlanData: planData,\n extra: extradata,\n extra_line: extradata_line\n });\n }\n }\n }\n }\n\n renderFileXML = (fileObj) => {\n\n // Pass file object as param\n const fileReader = new FileReader();\n fileReader.readAsText(fileObj, \"UTF-8\");\n fileReader.onload = e => {\n // once file opened, parse\n const parser = new DOMParser();\n const xmlFile = parser.parseFromString(e.target.result, \"application/xml\");\n const holeData = this.validatePlanHoleData(xmlFile.getElementsByTagName(\"Hole\"));\n\n var originalDataHeaders = [\n {\n \"name\": \"Row#\",\n \"key\": 0\n },\n {\n \"name\": \"Hole ID#\",\n \"key\": 1\n },\n {\n \"name\": \"Easting\",\n \"key\": 2\n },\n {\n \"name\": \"Northing\",\n \"key\": 3\n },\n {\n \"name\": \"RL (m)\",\n \"key\": 4\n },\n {\n \"name\": \"Design Depth (m)\",\n \"key\": 5\n },\n {\n \"name\": \"Diameter (mm)\",\n \"key\": 6\n }\n ]\n\n // i starts at 1 to get first hole, 0'th element is NumberOfHoles. Finishes at -1 length as the last child is EquipmentData\n // HoleID: holeData[i].children[0].innerHTML \n // Easting: holeData[i].children[2].children[1].innerHTML\n // Northing: holeData[i].children[2].children[0].innerHTML\n // RL (End Z): holeData[i].children[3].children[2].innerHTML\n // Depth (Start Z - End Z): holeData[i].children[2].children[2].innerHTML - holeData[i].children[3].children[2].innerHTML\n // Diameter: holeData[i].children[5].innerHTML\n\n var planData = {\n holeIDArr: new Array(),\n holeCoords: {\n eastingArr: new Array(),\n northingArr: new Array()\n },\n rlArr: new Array(),\n depthArr: new Array(),\n diamArr: new Array()\n }\n\n var extradata = [];\n var extradata_line = [];\n var originalDataRows = [];\n\n var locationIndex = this.state.location.findIndex(x => x.id == this.state.selectedlocationID);\n var locationUTMZoneNum = parseInt(this.state.location[locationIndex].data[\"UTMZoneNum\"]);\n var locationUTMZoneLet = this.state.location[locationIndex].data[\"UTMZoneLet\"];\n\n if (this.state.validationErrors.length == 0) { \n for (var i = 0; i < holeData.length; i++) {\n // * 1 to convert str to value\n var tempHoleID = this.validateHoleID(holeData[i].getElementsByTagName(\"HoleId\")[0].innerHTML, i)\n var tempCoordsEast = this.validateCoord(holeData[i].getElementsByTagName(\"IR:PointY\")[0].innerHTML * 1, i)\n var tempCoordsNorth = this.validateCoord(holeData[i].getElementsByTagName(\"IR:PointX\")[0].innerHTML * 1, i)\n var tempRL = this.validateRL(holeData[i].getElementsByTagName(\"IR:PointZ\")[1].innerHTML * 1, i) // [1] for the end Z value\n var tempDepth = this.validateDepth((holeData[i].getElementsByTagName(\"IR:PointZ\")[0].innerHTML - holeData[i].getElementsByTagName(\"IR:PointZ\")[1].innerHTML), i) // Start Z minus End Z\n var tempDiam = this.validateDiam(holeData[i].getElementsByTagName(\"DrillBitDia\")[0].innerHTML * 1, i)\n\n planData.holeIDArr[i] = tempHoleID\n planData.holeCoords.eastingArr[i] = tempCoordsEast\n planData.holeCoords.northingArr[i] = tempCoordsNorth\n planData.rlArr[i] = tempRL\n planData.depthArr[i] = tempDepth\n planData.diamArr[i] = tempDiam\n\n //Store LatLong\n if ((tempCoordsEast != null) && (tempCoordsNorth != null)) {\n var LatLong = toLatLon(tempCoordsEast, tempCoordsNorth, locationUTMZoneNum, locationUTMZoneLet); //Convert Easting, Northing, ZoneNumber (50), Zone Letter (J) to Lat Long\n extradata.push(LatLong); // Store Lat Long\n if (extradata.length > 0) {\n var tempArray = [extradata[i - 1], extradata[i]];\n extradata_line.push(tempArray);\n }\n\n // Rows required for gps map \n originalDataRows[i] = [\n i,\n tempHoleID,\n tempCoordsEast,\n tempCoordsNorth,\n tempRL,\n tempDepth,\n tempDiam\n ]\n }\n }\n \n //Validate Duplicates\n this.validatePlan(planData)\n\n if (this.state.validationErrors.length == 0) {\n //Set state\n this.setState({\n dataLoaded: true,\n cols: originalDataHeaders,\n rows: originalDataRows,\n filePlanData: planData,\n extra: extradata,\n extra_line: extradata_line\n });\n }\n else {\n this.setState({\n cols: originalDataHeaders,\n rows: originalDataRows\n });\n }\n }\n }\n }\n\n validateExcelPlanHeaders = (excelPlanHeaders) => {\n var tempArr = this.state.validationErrors\n if (this.state.checkValidation) {\n if (excelPlanHeaders == null) {\n tempArr.push(\"Error: No plan data found\");\n }\n else if (excelPlanHeaders.length == 6){\n if (excelPlanHeaders[0] !== \"Hole ID#\") {\n tempArr.push(\"Incorrect Plan Header at column 2. Expected 'Hole ID#'\");\n }\n if (excelPlanHeaders[1] !== \"Easting\") {\n tempArr.push(\"Incorrect Plan Header at column 3. Expected 'Easting'\");\n }\n if (excelPlanHeaders[2] !== \"Northing\") {\n tempArr.push(\"Incorrect Plan Header at column 4. Expected 'Northing'\");\n }\n if (excelPlanHeaders[3] !== \"RL (m)\") {\n tempArr.push(\"Incorrect Plan Header at column 5. Expected 'RL (m)'\");\n }\n if (excelPlanHeaders[4] !== \"Design Depth (m)\") {\n tempArr.push(\"Incorrect Plan Header at column 6. Expected 'Design Depth (m)'\");\n }\n if (excelPlanHeaders[5] !== \"Diameter (mm)\") {\n tempArr.push(\"Incorrect Plan Header at column 7. Expected 'Diameter (mm)'\");\n }\n }\n else {\n if (excelPlanHeaders.length > 6) {\n tempArr.push(\"Found more Plan Headers expected. Only expected 7 Headers. Found: \" + (excelPlanHeaders.length+1));\n }\n else {\n tempArr.push(\"Found less Plan Headers expected. Expected 7 Headers. Found: \" + (excelPlanHeaders.length+1));\n }\n }\n this.setState({\n validationErrors: tempArr\n });\n } \n }\n\n validatePlanHoleData = (planHoleData) => {\n if (this.state.checkValidation) {\n var tempArr = this.state.validationErrors\n if (planHoleData == null) {\n tempArr.push(\"No hole data found in plan.\")\n this.setState({\n validationErrors: tempArr\n });\n }\n }\n return planHoleData;\n }\n\n validateDiam = (diam, row) => {\n if (this.state.checkValidation) {\n var tempArr = this.state.validationErrors\n if ((diam == null) || (diam < 0)) {\n // Invalid Diam\n tempArr.push(\"Negative or missing diameter value for row: \" + row)\n this.setState({\n validationErrors: tempArr\n });\n }\n }\n return diam;\n }\n\n validateDepth = (depth, row) => {\n if (this.state.checkValidation) {\n var tempArr = this.state.validationErrors\n var NewDepth = depth;\n if ((depth == null) || (depth < 0)) {\n // Invalid depth\n tempArr.push(\"Negative or missing depth value for row: \" + row)\n this.setState({\n validationErrors: tempArr\n });\n }\n else {\n NewDepth = depth.toFixed(3)\n }\n }\n return NewDepth;\n }\n\n validateRL = (rl, row) => {\n if (this.state.checkValidation) {\n var tempArr = this.state.validationErrors\n if ((rl == null) || (rl < 0)) {\n // Invalid RL\n tempArr.push(\"Negative or missing RL value for row: \" + row)\n this.setState({\n validationErrors: tempArr\n });\n }\n }\n return rl;\n }\n\n validateCoord = (coord, row) => {\n if (this.state.checkValidation) {\n var tempArr = this.state.validationErrors\n if (coord == null) {\n // Invalid Coordinate\n tempArr.push(\"No coordinate found on row: \" + row)\n this.setState({\n validationErrors: tempArr\n });\n }\n }\n return coord;\n }\n\n validateHoleID = (holeID, row) => {\n if (this.state.checkValidation) {\n var tempArr = this.state.validationErrors\n if ((holeID == null) || (holeID == \"\")) {\n // Invalid HoleID\n tempArr.push(\"No holeID found on row: \" + row)\n this.setState({\n validationErrors: tempArr\n });\n }\n }\n return holeID;\n }\n\n //Input Array \n validatePlan = (planData) => { \n if (this.state.checkValidation) {\n // Validate for duplicate Hole ID's\n var dupeHoleID = this.findDuplicates(planData.holeIDArr)\n if (dupeHoleID.length > 0) { // Duplicate found\n var dupeHoleArr = this.state.validationErrors\n for (var i = 0; i < dupeHoleID.length; i++) { // Find the index where that duplicate is\n dupeHoleArr.push(\"Duplicate HoleID's found at rows: \" + this.getAllIndexes(planData.holeIDArr, dupeHoleID[i]))\n }\n this.setState({\n validationErrors: dupeHoleArr\n });\n }\n\n // Validate for duplicate Hole Coords\n // Check if a duplicate exists only in the Easting\n // If a duplicate exists, compare the northing with the other northing pairs (only east duplicate pairs)\n // If a northing duplicate exists then \n var eastDupe = this.findDuplicates(planData.holeCoords.eastingArr)\n if (eastDupe.length > 0) // At least 1 dupe in Easting array found\n {\n var eastIndexArr = [];\n for (var i = 0; i < eastDupe.length; i++) { // Find the index where that duplicate is\n eastIndexArr.push(this.getAllIndexes(planData.holeCoords.eastingArr, eastDupe[i]))\n }\n if (eastIndexArr.length > 0) // At least 1 dupe index found (Sanity Check)\n {\n this.findNorthDuplicates(planData.holeCoords.northingArr, eastIndexArr)\n }\n }\n }\n }\n\n // Find North Duplicates only concerned with the east duplicates\n findNorthDuplicates = (northArr, eastIndexArr) => {\n var duplicateCoords = this.state.validationErrors;\n var dupeCoords = false;\n for (var y = 0; y < eastIndexArr.length; y++) { // Loop through for each Duplicate Value\n for (var i = 0; i < eastIndexArr[y].length; i++) { // Loop through for each duplicate per value\n for (var n = i; n < eastIndexArr[y].length; n++) { //Check yourself and ahead in array (dont check again for past duplicates)\n if (i != n) { // Dont comapre the same index as it will always return a duplicate (ie checking yourself with yourself)\n if (northArr[eastIndexArr[y][i]] == northArr[eastIndexArr[y][n]]) {//Duplicate North & East Pair found\n duplicateCoords.push(\"Duplicate Coordinates found at row: \" + eastIndexArr[y][i] + \" and row: \" + eastIndexArr[y][n])\n dupeCoords = true;\n }\n }\n }\n }\n }\n if (dupeCoords) {\n this.setState({\n validationErrors: duplicateCoords\n });\n }\n return duplicateCoords\n }\n\n // Find duplicate elements in an array\n findDuplicates = (validateArr) => {\n const distinct = new Set(validateArr); // Sets to improve performance\n const filtered = validateArr.filter(item => {\n if (distinct.has(item)) { // Remove the element from the set on very first encounter\n distinct.delete(item);\n }\n else {\n return item; // return the element on subsequent encounters\n }\n });\n return [...new Set(filtered)] // Use set as there could be duplicate dupes...\n }\n\n // Find index of all occurances where val is in arr\n getAllIndexes = (arr, val) => { \n var indexes = [];\n for (var i = 0; i < arr.length; i++) {\n if (arr[i] === val) {\n indexes.push(i);\n }\n }\n return indexes;\n }\n\n planFileHandler = (event) => {\n if (event.target.files.length) {\n let fileObj = event.target.files[0];\n let fileName = fileObj.name;\n\n //check for file extension and pass only if it is .xlsx or .xml and display error message otherwise\n if (fileName.slice(fileName.lastIndexOf('.') + 1) === \"xlsx\") {\n this.setState({\n uploadedFileName: fileName,\n isFormInvalid: false\n });\n this.renderFile(fileObj)\n }\n else if (fileName.slice(fileName.lastIndexOf('.') + 1) === \"xml\") {\n this.setState({\n uploadedFileName: fileName,\n isFormInvalid: false\n });\n this.renderFileXML(fileObj)\n }\n else {\n this.setState({\n isFormInvalid: true,\n uploadedFileName: \"\"\n })\n }\n }\n }\n\n captureFileHandler = (event) => {\n if (event.target.files.length) {\n //For loop through multiple files\n for (var i = 0; i < event.target.files.length; i++) {\n let fileObj = event.target.files[i];\n let fileName = fileObj.name;\n\n //check for file extension and pass only if it is .json and display error message otherwise\n if (fileName.slice(fileName.lastIndexOf('.') + 1) === \"json\") {\n this.setState({\n uploadedFileName: fileName,\n isFormInvalid: false\n });\n\n //Send the file\n const fileReader = new FileReader();\n fileReader.readAsText(fileObj, \"UTF-8\");\n fileReader.onload = e => {\n //Send to API\n this.postDataCaptureInsert(e.target.result);\n }\n }\n else {\n this.setState({\n isFormInvalid: true,\n uploadedFileName: \"\"\n })\n }\n }\n }\n }\n\n //PDF\n PDFgenerate = () => {\n\n if ((this.PDFleafletref === null) || (this.PDFtableref === null)) {\n return\n }\n for (var i = 0; i < this.PDFleafletref.length; i++) {\n if (this.PDFleafletref[i] === null) {\n return\n }\n }\n\n //Set Loading\n this.setState({\n PDFloading: true\n })\n\n //Generate Images - Plot\n Plotly.toImage(this.state.PDFplotDivId[0], { format: 'png', width: 720, height: 720, filename: \"plot\" }).then(dataURL0 => {\n this.setState({\n plotlyPDFcanvas0: dataURL0\n })\n\n Plotly.toImage(this.state.PDFplotDivId[1], { format: 'png', width: 800, height: 400, filename: \"plot\" }).then(dataURL1 => {\n this.setState({\n plotlyPDFcanvas1: dataURL1\n })\n\n Plotly.toImage(this.state.PDFplotDivId[2], { format: 'png', width: 800, height: 400, filename: \"plot\" }).then(dataURL2 => {\n this.setState({\n plotlyPDFcanvas2: dataURL2\n })\n\n //Generate Images - Leaflet\n leafletImage(this.PDFleafletref[0].current, (err, canvas0) => {\n this.setState({\n leafletPDFcanvas0: canvas0.toDataURL('image/png', 1.0), //Full Quality\n })\n\n leafletImage(this.PDFleafletref[1].current, (err, canvas1) => {\n this.setState({\n leafletPDFcanvas1: canvas1.toDataURL('image/png', 1.0), //Full Quality\n })\n\n leafletImage(this.PDFleafletref[2].current, (err, canvas2) => {\n this.setState({\n leafletPDFcanvas2: canvas2.toDataURL('image/png', 1.0), //Full Quality\n })\n\n leafletImage(this.PDFleafletref[3].current, (err, canvas3) => {\n this.setState({\n leafletPDFcanvas3: canvas3.toDataURL('image/png', 1.0), //Full Quality\n })\n\n //Flag as finished\n this.setState({\n PDFgenerated: true,\n })\n\n });\n\n });\n\n });\n\n });\n\n });\n });\n });\n\n }\n\n ExportExtraData = () => {\n if ((this.Extratableref_DiffvsPlan === null) || (this.Extratableref_Additional === null) || (this.Extratableref_Missing === null)) {\n return\n }\n\n //Set Loading\n this.setState({\n ExtraDataLoading: true\n })\n\n /* build new workbook */\n const wb = XLSX.utils.book_new();\n\n const ws = XLSX.utils.table_to_sheet(this.Extratableref_DiffvsPlan.current); /*convert table to worksheet - refes to DOM element*/\n XLSX.utils.book_append_sheet(wb, ws, \"DiffVsPlan (\" + this.state.report.data.ReportDetails.Summary.TotalCountDiffvsPlan.toString() + \")\");\n\n const ws2 = XLSX.utils.table_to_sheet(this.Extratableref_Additional.current); /*convert table to worksheet - refes to DOM element*/\n XLSX.utils.book_append_sheet(wb, ws2, \"Additional (\" + this.state.report.data.ReportDetails.Summary.TotalCountAdditional.toString() + \")\");\n\n const ws3 = XLSX.utils.table_to_sheet(this.Extratableref_Missing.current); /*convert table to worksheet - refes to DOM element*/\n XLSX.utils.book_append_sheet(wb, ws3, \"Missing (\" + this.state.report.data.ReportDetails.Summary.TotalCountMissing.toString() + \")\");\n\n /* write file */\n var currDate = new Date();\n const datestring = currDate.getFullYear() + \"-\" + (currDate.getMonth() + 1) + \"-\" + currDate.getDate() + \"_\" + currDate.getHours() + currDate.getMinutes();\n XLSX.writeFile(wb, \"Dipstick-ExtraData\" + this.state.selectedplanID + \"_\" + datestring + '.xlsx');\n\n //Set Loading\n this.setState({\n ExtraDataLoading: false\n })\n }\n\n\n\n render() {\n return (\n
\n
\n \n {window._env_.REACT_APP_CONTENT_TITLE}\n \n \n \n \n \n
\n\n {this.state.seen ? : null}\n\n
\n \n Filter Data\n \n
\n \n \n \n {this.state.loadinglocation\n ? \n : \n }\n \n \n \n {this.state.loadinghardware\n ? \n : \n }\n \n \n\n
\n
\n
\n
\n\n
\n \n Config Data\n \n
\n \n \n \n {this.state.loadingsublocation\n ? \n : \n }\n \n \n
\n \n \n \n \n \n \n \n
\n\n \n \n \n {this.state.loadingsequence\n ? \n : \n }\n \n \n
\n \n \n \n \n \n \n \n
\n\n \n \n \n {this.state.loadingsubsequence\n ? \n : \n }\n \n \n
\n \n \n \n \n \n \n \n
\n
\n
\n
\n
\n\n
\n \n Plan Data\n \n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n \n \n \n \n
\n\n \n \n \n {this.state.loadingplan\n ? \n : \n }\n \n \n \n this.toggleValidation()}/>\n \n \n \n \n \n { event.target.value = null }} style={{ \"padding\": \"10px\" }} />\n \n\n \n \n \n Please select a .xlsx or .xml file only !\n \n \n \n \n \n \n \n \n\n
\n {this.state.validationErrors != 0 &&\n
\n
    \n {this.state.validationErrors.map(errorText =>
  • {errorText}
  • )}\n
\n \n
\n }\n {this.state.dataLoaded &&\n
\n \n \n \n \n\n \n
}\n
\n
\n
\n
\n
\n \n
\n \n Dispatch Data\n \n
\n \n \n \n \n \n \n \n \n \n \n \n\n {this.state.dispatchPlanDetailsShow &&\n
\n \n \n\n \n\n {this.state.loadingplan\n ? \n : \n }\n\n {(this.state.dispatchPlanDetailsAll.length == 0)\n ? \n : \n }\n\n {this.state.dispatchPlanDetailsSelected &&\n \n }\n \n
}\n\n \n\n \n \n \n \n {this.state.loadingdispatch\n ? \n : \n }\n {this.state.loadinghardware\n ? \n : \n }\n\n \n {this.state.dispatchToDeviceLoading &&\n }\n \n \n\n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n { event.target.value = null }} style={{ \"padding\": \"10px\" }} />\n \n \n \n \n Please select a .json file only !\n \n \n \n \n\n {this.state.dataLoaded &&\n
\n \n \n \n
}\n \n
\n \n
\n\n
\n
\n
\n
\n\n
\n \n Capture Data\n \n
\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n
\n
\n \n \n \n
\n
\n\n
\n \n Review Data\n \n
\n \n \n {this.state.loadingdispatch\n ? \n : \n }\n \n \n\n {this.state.loadedreview &&\n
\n \n Review Data\n
\n \n \n \n \n \n \n \n {this.state.review.data.ReviewDetails.ReviewLog.map(row =>\n \n \n \n )}\n \n
Review Info
{row}
\n \n \n \n \n
\n
\n
}\n\n
\n
\n \n \n
\n
\n\n
\n \n Report Data\n \n
\n \n \n {this.state.loadingplan\n ? \n : \n }\n \n \n \n \n \n \n { this.toggleReportOptionsIncludePage(e, 0) }} disabled={this.state.loadingplan || (this.state.selectedplanID == \"0\")} />{' '}\n \n { this.setReportHeaderCustomField(e, 0) }} placeholder=\"(Optional) Header Custom Field e.g. Author: John Smith\" />\n \n \n { this.toggleReportOptionsIncludePage(e, 1) }} disabled={this.state.loadingplan || (this.state.selectedplanID == \"0\")} />{' '}\n \n \n \n { this.toggleReportOptionsIncludePage(e, 2) }} disabled={this.state.loadingplan || (this.state.selectedplanID == \"0\")} />{' '}\n \n \n \n { this.toggleReportOptionsIncludePage(e, 3) }} disabled={this.state.loadingplan || (this.state.selectedplanID == \"0\")} />{' '}\n \n \n \n { this.toggleReportOptionsIncludePage(e, 4) }} disabled={this.state.loadingplan || (this.state.selectedplanID == \"0\")} />{' '}\n \n \n \n { this.toggleReportOptionsIncludePage(e, 5) }} disabled={this.state.loadingplan || (this.state.selectedplanID == \"0\")} />{' '}\n \n \n \n \n { this.toggleReportOptionsIncludePage(e, 6) }} disabled={this.state.loadingplan || (this.state.selectedplanID == \"0\")} />{' '}\n \n \n \n \n { this.toggleReportOptionsIncludePage(e, 7) }} disabled={this.state.loadingplan || (this.state.selectedplanID == \"0\")} />{' '}\n \n \n \n \n \n \n\n {this.state.loadedreport &&\n
\n \n \n \n {!this.state.PDFgenerated\n ? \n \n\n : \n {this.state.optionsIncludePageSelected[0] &&\n \n \n \n \n \n \n \n \n {\"Dipstick Report\"} \n \n \n {\"Plan: \" + this.state.selectedplanID} \n \n \n {this.state.reportHeaderCustomField[0]} \n \n \n {\"Generated: \" + new Date()} \n \n \n }\n {this.state.optionsIncludePageSelected[1] &&\n \n \n \n \n \n {\"Progress Report\"} \n \n \n {\"Percentage Dipped: \" + this.state.report[\"data\"][\"Chart\"][\"PercentDiffvsPlan\"] + \"%\"} \n \n \n {\"Designed Hole: \"} \n \n {\"Dipped Hole: \"} \n \n \n \n \n \n \n \n \n \n {\"Location: \" + this.state.sublocation[this.state.sublocation.findIndex(x => x.id == this.state.selectedsublocationID)].name + \" Hardware: \" + this.state.hardware[this.state.hardware.findIndex(x => x.id == this.state.selectedhardwareID)].name + \" Shot ID: \" + this.state.subsequence[this.state.subsequence.findIndex(x => x.id == this.state.selectedsubsequenceID)].name} \n \n \n {\"Generated: \" + new Date()} \n \n \n }\n {this.state.optionsIncludePageSelected[2] &&\n \n \n \n \n \n {\"Length Conformance\"} \n \n \n {\"[Capture vs Plan]\"} \n \n \n \n \n \n \n \n \n {\"Location: \" + this.state.sublocation[this.state.sublocation.findIndex(x => x.id == this.state.selectedsublocationID)].name + \" Hardware: \" + this.state.hardware[this.state.hardware.findIndex(x => x.id == this.state.selectedhardwareID)].name + \" Shot ID: \" + this.state.subsequence[this.state.subsequence.findIndex(x => x.id == this.state.selectedsubsequenceID)].name} \n \n \n {\"Generated: \" + new Date()} \n \n \n }\n {this.state.optionsIncludePageSelected[3] &&\n \n \n \n \n \n {\"RL Conformance\"} \n \n \n {\"[Plan vs Capture]\"} \n \n \n \n \n \n \n \n \n {\"Location: \" + this.state.sublocation[this.state.sublocation.findIndex(x => x.id == this.state.selectedsublocationID)].name + \" Hardware: \" + this.state.hardware[this.state.hardware.findIndex(x => x.id == this.state.selectedhardwareID)].name + \" Shot ID: \" + this.state.subsequence[this.state.subsequence.findIndex(x => x.id == this.state.selectedsubsequenceID)].name} \n \n \n {\"Generated: \" + new Date()} \n \n \n }\n {this.state.optionsIncludePageSelected[4] &&\n \n \n \n \n \n {\"Collaring Conformance\"} \n \n \n \n \n \n \n \n \n {\"Location: \" + this.state.sublocation[this.state.sublocation.findIndex(x => x.id == this.state.selectedsublocationID)].name + \" Hardware: \" + this.state.hardware[this.state.hardware.findIndex(x => x.id == this.state.selectedhardwareID)].name + \" Shot ID: \" + this.state.subsequence[this.state.subsequence.findIndex(x => x.id == this.state.selectedsubsequenceID)].name} \n \n \n {\"Generated: \" + new Date()} \n \n \n }\n {this.state.optionsIncludePageSelected[5] &&\n \n \n \n \n \n {\"Redrill Map\"} \n \n \n {\"Redrills >1.0m (\" + this.state.reportHeaderCustomField[5] + \")\"} \n \n \n {\"Designed Hole: \"} \n \n {\"Redrill Hole: \"} \n \n \n \n \n \n \n \n \n \n {\"Location: \" + this.state.sublocation[this.state.sublocation.findIndex(x => x.id == this.state.selectedsublocationID)].name + \" Hardware: \" + this.state.hardware[this.state.hardware.findIndex(x => x.id == this.state.selectedhardwareID)].name + \" Shot ID: \" + this.state.subsequence[this.state.subsequence.findIndex(x => x.id == this.state.selectedsubsequenceID)].name} \n \n \n {\"Generated: \" + new Date()} \n \n \n }\n {this.state.optionsIncludePageSelected[6] &&\n \n \n \n \n \n {\"Backfill Map\"} \n \n \n {\"Backfills >1.0m (\" + this.state.reportHeaderCustomField[6] + \")\"} \n \n \n {\"Designed Hole: \"} \n \n {\"Backfill Hole: \"} \n \n \n \n \n \n \n \n \n \n {\"Location: \" + this.state.sublocation[this.state.sublocation.findIndex(x => x.id == this.state.selectedsublocationID)].name + \" Hardware: \" + this.state.hardware[this.state.hardware.findIndex(x => x.id == this.state.selectedhardwareID)].name + \" Shot ID: \" + this.state.subsequence[this.state.subsequence.findIndex(x => x.id == this.state.selectedsubsequenceID)].name} \n \n \n {\"Generated: \" + new Date()} \n \n \n }\n {this.state.optionsIncludePageSelected[6] &&\n \n \n \n \n \n {\"Missing Map\"} \n \n \n {\"Designed Hole: \"} \n \n {\"Missing Hole: \"} \n \n \n \n \n \n \n \n \n \n {\"Location: \" + this.state.sublocation[this.state.sublocation.findIndex(x => x.id == this.state.selectedsublocationID)].name + \" Hardware: \" + this.state.hardware[this.state.hardware.findIndex(x => x.id == this.state.selectedhardwareID)].name + \" Shot ID: \" + this.state.subsequence[this.state.subsequence.findIndex(x => x.id == this.state.selectedsubsequenceID)].name} \n \n \n {\"Generated: \" + new Date()} \n \n \n }\n \n } fileName={\"DipstickReport_Plan\" + this.state.selectedplanID} >\n {({ blob, url, loading, error }) => (loading ? 'Loading document...' : 'Download now!')}\n \n }\n
\n \n
\n \n
\n
\n \n \n \n \n \n\n 1.0m\", \">0.5m\", \"0.5-0.5m\", \">-0.5m\", \">-1.0m\"],\n y: this.state.report[\"data\"][\"Chart\"][\"BarDepthData\"][\"x\"],\n marker: { color: ['red', 'indianred', 'green', 'cornflowerblue', 'blue'] },\n type: 'bar',\n },\n ]}\n layout={{\n width: 1080,\n height: 720,\n }}\n />\n\n 1.0m\", \">0.5m\", \"0.5-0.5m\", \">-0.5m\", \">-1.0m\"],\n y: this.state.report[\"data\"][\"Chart\"][\"BarToelRLData\"][\"x\"],\n marker: { color: ['red', 'indianred', 'green', 'cornflowerblue', 'blue'] },\n type: 'bar',\n },\n ]}\n layout={{\n width: 1080,\n height: 720,\n }}\n />\n\n\n
\n Missing Hole Data\n \n \n \n \n \n \n \n {this.state.report.data.ReportDetails.Summary.Missing.map(row =>\n \n \n \n )}\n \n
Hole #
{row.Name}
\n Hole Diff Data\n \n \n \n \n \n \n \n \n \n {this.state.report.data.ReportDetails.Summary.DiffvsPlan.map(row =>\n \n \n {row.Diff_HoleDepth_Severity == 1 ?\n \n : \n }\n {row.Diff_ToeRL_Severity == 1 ?\n \n : \n }\n \n )}\n \n
Hole #Length Acc. (m)Toe Acc. (m)
{row.Name}{row.Diff_HoleDepth}{row.Diff_HoleDepth}{row.Diff_ToeRL}{row.Diff_ToeRL}
\n
\n
\n Extra Data - DiffvsPlan\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {this.state.report.data.ReportDetails.Summary.DiffvsPlan.map(row =>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )}\n \n
Hole IDCollarX (Easting)CollarY (Northing)CollarZ (m)ToeX (Easting)ToeY (Northing)ToeZ (m)HoleLength (m)PrevAuto HoleLength (m)DateTimeReflectivity (%)WetnessCapture TypeDeletedCommentPlanDetails IDCapture IDCalculation Type
{row.Name}{row.CollarEast_Capture}{row.CollarNorth_Capture}{row.CollarDepth_Capture.toFixed(3)}{row.ToeRLEast_Capture}{row.ToeRLNorth_Capture}{row.ToeRL_Capture.toFixed(3)}{row.HoleLength_Capture.toFixed(3)}{row.PreviousAuto_HoleDepth.toFixed(3)}{row.DateTime_Capture}{row.reflecthole_Capture}{row.wetness_Capture}{row.capturetype_Capture}{row.deletedString_Capture}{row.commentString_Capture}{row.PlanDetailsId}{row.CaptureId}{row.CalculationType}
\n
\n
\n Extra Data - Additional\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {this.state.report.data.ReportDetails.Summary.Additional.map(row =>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )}\n \n
Hole IDCollarX (Easting)CollarY (Northing)CollarZ (m)ToeX (Easting)ToeY (Northing)ToeZ (m)HoleLength (m)PrevAuto HoleLength (m)DateTimeReflectivity (%)WetnessCapture TypeDeletedCommentCapture ID
{row.Name}{row.CollarEast_Capture}{row.CollarNorth_Capture}{row.CollarDepth_Capture.toFixed(3)}{row.ToeRLEast_Capture}{row.ToeRLNorth_Capture}{row.ToeRL_Capture.toFixed(3)}{row.HoleLength_Capture.toFixed(3)}{row.PreviousAuto_HoleDepth.toFixed(3)}{row.DateTime_Capture}{row.reflecthole_Capture}{row.wetness_Capture}{row.capturetype_Capture}{row.deletedString_Capture}{row.commentString_Capture}{row.CaptureId}
\n
\n
\n Extra Data - Missing\n \n \n \n \n \n \n \n \n {this.state.report.data.ReportDetails.Summary.Missing.map(row =>\n \n \n \n \n )}\n \n
Hole IDPlanDetails ID
{row.Name}{row.PlanDetailsId}
\n
\n
}\n
\n
\n \n \n
\n
\n\n
\n \n \n\n \n Page Error - {this.state.anyPageErrorDetails}\n \n\n {(this.state.anyPageDataLoading > 0) &&\n
\n \n \n Data Loading ({this.state.anyPageDataLoading}) - {this.state.anyPageDataLoadingDetails}\n \n \n
\n }\n\n {(this.state.pageDataSummary) &&\n
\n \n \n Location: {this.state.loadinglocation ? \"Loading...\" : this.state.location[this.state.location.findIndex(x => x.id == this.state.selectedlocationID)].name}
\n SubLocation: {this.state.loadingsublocation ? \"Loading...\" : this.state.sublocation[this.state.sublocation.findIndex(x => x.id == this.state.selectedsublocationID)].name}
\n Seqeuence: {this.state.loadingsequence ? \"Loading...\" : this.state.sequence[this.state.sequence.findIndex(x => x.id == this.state.selectedsequenceID)].name}
\n SubSequence: {this.state.loadingsubsequence ? \"Loading...\" : this.state.subsequence[this.state.subsequence.findIndex(x => x.id == this.state.selectedsubsequenceID)].name}
\n Plan: {this.state.loadingplan ? \"Loading...\" : this.state.plan[this.state.plan.findIndex(x => x.id == this.state.selectedplanID)].data[\"Name\"]}
\n Hardware: {this.state.loadinghardware ? \"Loading...\" : this.state.hardware[this.state.hardware.findIndex(x => x.id == this.state.selectedhardwareID)].name}
\n Dispatch: {this.state.loadingdispatch ? \"Loading...\" : this.state.dispatch[this.state.dispatch.findIndex(x => x.id == this.state.selecteddispatchID)].name}
\n
\n
\n
\n }\n \n
\n \n
\n Copyright © 2020 {window._env_.REACT_APP_CONTENT_COMPANY}\n
\n
\n
\n\n \n\n );\n }\n\n manipulateCaptureDataForFrontEnd(data) {\n for (let i in data) {\n //******************fix for uppercase on first letter sometimes*********************** TEMP\n if (data[i][\"dateTime\"] == null) {\n data[i][\"dateTime\"] = data[i][\"DateTime\"];\n }\n if (data[i][\"data\"] == null) {\n data[i][\"data\"] = data[i][\"Data\"];\n }\n if (data[i][\"detailedData\"] == null) {\n data[i][\"detailedData\"] = data[i][\"DetailedData\"];\n }\n if (data[i][\"detailedDataAvailable\"] == null) {\n data[i][\"detailedDataAvailable\"] = data[i][\"DetailedDataAvailable\"];\n }\n if (data[i][\"dispatchId\"] == null) {\n data[i][\"dispatchId\"] = data[i][\"DispatchId\"];\n }\n if (data[i][\"hardwareId\"] == null) {\n data[i][\"hardwareId\"] = data[i][\"HardwareId\"];\n }\n if (data[i][\"id\"] == null) {\n data[i][\"id\"] = data[i][\"Id\"];\n }\n\n //manage for -ve numbers (react-leaflet cant handle)\n data[i][\"Latitude\"] = JSON.parse(data[i][\"data\"]).rovergpslat;\n if (data[i][\"Latitude\"] == -1) {\n data[i][\"Latitude\"] = 0;\n }\n data[i][\"Longitude\"] = JSON.parse(data[i][\"data\"]).rovergpslong;\n if (data[i][\"Longitude\"] == -1) {\n data[i][\"Longitude\"] = 0;\n }\n\n //generate dates to local\n var date = new Date(data[i][\"dateTime\"] + \"Z\");\n var datestring = ('0' + date.getDate()).slice(-2) + \"/\" + ('0' + (date.getMonth()+1)).slice(-2) + \"/\" + date.getFullYear(); //Month is 0-11\n var timestring = ('0' + date.getHours()).slice(-2) + \":\" + ('0' + date.getMinutes()).slice(-2) + \":\" + ('0' + date.getSeconds()).slice(-2);\n\n data[i][\"dateTimeLocalDateString\"] = datestring;\n data[i][\"dateTimeLocalTimeString\"] = timestring;\n data[i][\"dateTimeLocalString\"] = datestring + \" \" + timestring;\n\n //Round depthhole\n data[i][\"depthhole_rounded\"] = Math.round(JSON.parse(data[i][\"data\"]).depthhole); \n\n //Calculate Reflectivity\n var reflectivity = JSON.parse(data[i][\"data\"]).reflecthole;\n var reflectivitystring = \"n/a\";\n if (reflectivity != null) {\n if (reflectivity > 8) {\n reflectivitystring = \"Wet\"\n } else {\n reflectivitystring = \"Dry\"\n }\n }\n data[i][\"reflecthole_data\"] = reflectivity;\n data[i][\"wetness_data\"] = reflectivitystring;\n\n //Calculate CaptureType\n var capturetype = JSON.parse(data[i][\"data\"]).capturetype;\n var capturtypestring = \"n/a\";\n if (capturetype != null) {\n capturtypestring = capturetype\n }\n data[i][\"capturetype_data\"] = capturtypestring;\n\n //Calculate Deleted\n var deletedflag = JSON.parse(data[i][\"data\"]).deleted;\n var deletedstring = \"False\";\n if (deletedflag != null) {\n if (deletedflag > 0) {\n deletedstring = \"True\";\n }\n }\n data[i][\"deletedString\"] = deletedstring;\n\n //Calculate Comment\n var comment = JSON.parse(data[i][\"data\"]).comment;\n var commentstring = \"-\";\n if (comment != null) {\n if (comment != \"\") {\n commentstring = comment;\n }\n }\n data[i][\"commentString\"] = commentstring;\n };\n return data;\n }\n\n manipulatePlanDataForFrontEnd(data) {\n for (let i in data) {\n //manage for -ve numbers (react-leaflet cant handle)\n if (data[i][\"Latitude\"] == -1) {\n data[i][\"Latitude\"] = 0;\n }\n if (data[i][\"Longitude\"] == -1) {\n data[i][\"Longitude\"] = 0;\n }\n };\n return data;\n }\n\n manipulateUploadPlanDataForMapView(data,extra) {\n for (let i in data) {\n //Add additional data\n data[i][\"Latitude\"] = extra[i].latitude;\n data[i][\"Longitude\"] = extra[i].longitude;\n data[i][\"AssocCaptureId\"] = 0;\n data[i][\"AssocCaptureDistDiff\"] = 0;\n };\n return data;\n }\n\n manipulateDispatchDetailsDataForMapView(data) {\n var locationIndex = this.state.location.findIndex(x => x.id == this.state.selectedlocationID);\n var locationUTMZoneNum = parseInt(this.state.location[locationIndex].data[\"UTMZoneNum\"]);\n var locationUTMZoneLet = this.state.location[locationIndex].data[\"UTMZoneLet\"];\n for (let i in data) {\n //manage for -ve numbers (react-leaflet cant handle)\n var tempLatLon = toLatLon(data[i].data[\"Easting\"], data[i].data[\"Northing\"], locationUTMZoneNum, locationUTMZoneLet); //Easting, Northing\n data[i][\"Latitude\"] = tempLatLon.latitude;\n data[i][\"Longitude\"] = tempLatLon.longitude;\n data[i][\"AssocCaptureId\"] = 0;\n data[i][\"AssocCaptureDistDiff\"] = 0;\n };\n return data;\n }\n\n manipulateSummaryForFrontEnd(data) {\n for (var i = data[\"Missing\"].length - 1; i >= 0; --i) {\n //Remvoe Nulls from summary data\n if ((data[\"Missing\"][i][\"PlanDetailsId\"] == null) || (data[\"Missing\"][i][\"PlanDetailsId\"] == -1)) {\n //Remove 0 element of length 1\n data[\"Missing\"].splice(i, 1);\n }\n };\n for (var i = data[\"DiffvsPlan\"].length - 1; i >= 0; --i) {\n //Remvoe Nulls from summary data\n if ((data[\"DiffvsPlan\"][i][\"PlanDetailsId\"] == null) || (data[\"DiffvsPlan\"][i][\"PlanDetailsId\"] == -1)) {\n //Remove 0 element of length 1\n data[\"DiffvsPlan\"].splice(i, 1);\n }\n };\n for (var i = data[\"DiffvsPlan\"].length - 1; i >= 0; --i) {\n //manage for -ve numbers (react-leaflet cant handle)\n if (data[\"DiffvsPlan\"][i][\"Latitude_Plan\"] == -1) {\n data[\"DiffvsPlan\"][i][\"Latitude_Plan\"] = 0;\n }\n if (data[\"DiffvsPlan\"][i][\"Longitude_Plan\"] == -1) {\n data[\"DiffvsPlan\"][i][\"Longitude_Plan\"] = 0;\n }\n if (data[\"DiffvsPlan\"][i][\"Latitude_Capture\"] == -1) {\n data[\"DiffvsPlan\"][i][\"Latitude_Capture\"] = 0;\n }\n if (data[\"DiffvsPlan\"][i][\"Longitude_Capture\"] == -1) {\n data[\"DiffvsPlan\"][i][\"Longitude_Capture\"] = 0;\n }\n };\n //Unpack data section (if available)\n for (var i = data[\"DiffvsPlan\"].length - 1; i >= 0; --i) {\n if (data[\"DiffvsPlan\"][i][\"Data_Capture\"] != null) {\n\n //Calculate Reflectivity\n var reflectivity = JSON.parse(data[\"DiffvsPlan\"][i][\"Data_Capture\"]).reflecthole;\n var reflectivitystring = \"n/a\";\n if (reflectivity != null) {\n if (reflectivity > 8) {\n reflectivitystring = \"Wet\"\n } else {\n reflectivitystring = \"Dry\"\n }\n }\n data[\"DiffvsPlan\"][i][\"reflecthole_Capture\"] = reflectivity;\n data[\"DiffvsPlan\"][i][\"wetness_Capture\"] = reflectivitystring;\n\n //Calculate CaptureType\n var capturetype = JSON.parse(data[\"DiffvsPlan\"][i][\"Data_Capture\"]).capturetype;\n var capturtypestring = \"n/a\";\n if (capturetype != null) {\n capturtypestring = capturetype\n }\n data[\"DiffvsPlan\"][i][\"capturetype_Capture\"] = capturtypestring;\n\n //Calculate Deleted\n var deletedflag = JSON.parse(data[\"DiffvsPlan\"][i][\"Data_Capture\"]).deleted;\n var deletedstring = \"False\";\n if (deletedflag != null) {\n if (deletedflag > 0) {\n deletedstring = \"True\";\n }\n }\n data[\"DiffvsPlan\"][i][\"deletedString_Capture\"] = deletedstring;\n\n //Calculate Comment\n var comment = JSON.parse(data[\"DiffvsPlan\"][i][\"Data_Capture\"]).comment;\n var commentstring = \"-\";\n if (comment != null) {\n if (comment != \"\") {\n commentstring = comment;\n }\n }\n data[\"DiffvsPlan\"][i][\"commentString_Capture\"] = commentstring;\n }\n }\n\n //Additional\n if (data[\"Additional\"] != null) {\n for (var i = data[\"Additional\"].length - 1; i >= 0; --i) {\n //Remvoe Nulls from summary data\n if ((data[\"Additional\"][i][\"CaptureId\"] == null) || (data[\"Additional\"][i][\"CaptureId\"] == -1)) {\n //Remove 0 element of length 1\n data[\"Additional\"].splice(i, 1);\n }\n };\n for (var i = data[\"Additional\"].length - 1; i >= 0; --i) {\n //manage for -ve numbers (react-leaflet cant handle)\n if (data[\"Additional\"][i][\"Latitude_Capture\"] == -1) {\n data[\"Additional\"][i][\"Latitude_Capture\"] = 0;\n }\n if (data[\"Additional\"][i][\"Longitude_Capture\"] == -1) {\n data[\"Additional\"][i][\"Longitude_Capture\"] = 0;\n }\n };\n for (var i = data[\"Additional\"].length - 1; i >= 0; --i) {\n if (data[\"Additional\"][i][\"Data_Capture\"] != null) {\n\n //Calculate Reflectivity\n var reflectivity = JSON.parse(data[\"Additional\"][i][\"Data_Capture\"]).reflecthole;\n var reflectivitystring = \"n/a\";\n if (reflectivity != null) {\n if (reflectivity > 8) {\n reflectivitystring = \"Wet\"\n } else {\n reflectivitystring = \"Dry\"\n }\n }\n data[\"Additional\"][i][\"reflecthole_Capture\"] = reflectivity;\n data[\"Additional\"][i][\"wetness_Capture\"] = reflectivitystring;\n\n //Calculate CaptureType\n var capturetype = JSON.parse(data[\"Additional\"][i][\"Data_Capture\"]).capturetype;\n var capturtypestring = \"n/a\";\n if (capturetype != null) {\n capturtypestring = capturetype\n }\n data[\"Additional\"][i][\"capturetype_Capture\"] = capturtypestring;\n\n //Calculate Deleted\n var deletedflag = JSON.parse(data[\"Additional\"][i][\"Data_Capture\"]).deleted;\n var deletedstring = \"False\";\n if (deletedflag != null) {\n if (deletedflag > 0) {\n deletedstring = \"True\";\n }\n }\n data[\"Additional\"][i][\"deletedString_Capture\"] = deletedstring;\n\n //Calculate Comment\n var comment = JSON.parse(data[\"Additional\"][i][\"Data_Capture\"]).comment;\n var commentstring = \"-\";\n if (comment != null) {\n if (comment != \"\") {\n commentstring = comment;\n }\n }\n data[\"Additional\"][i][\"commentString_Capture\"] = commentstring;\n }\n }\n }\n\n return data;\n }\n\n async getLocationAll() {\n this.setState((prevState) => ({ anyPageDataLoading: prevState.anyPageDataLoading + 1, anyPageDataLoadingDetails: \"Location\" }));\n const accessToken = this.props.auth.getAccessToken();\n const response = await fetch(window._env_.REACT_APP_API_ADDRESS + '/api/db/locationall', {\n headers: new Headers({\n \"Accept\": \"application/json\",\n \"Authorization\": `Bearer ${accessToken}`\n })\n }); //TODO: Need to change from hardcoding\n if (response.status === 200) {\n var data = await response.json();\n\n //Unpack data object\n if ((data !== null) && (data.length !== 0)) {\n for (var i = 0; i < data.length; i++) {\n data[i][\"data\"] = JSON.parse(data[i][\"data\"]); //Parse string into object\n }\n }\n\n //Insert blank\n data.unshift({\n id: '0',\n name: '---Select---',\n });\n \n //Request for the hardware for this location if we have it\n var checkMatch = false;\n for (var i = 0; i < data.length; i++) {\n if (this.state.selectedlocationID == data[i].id) {\n checkMatch = true;\n break;\n }\n }\n if (checkMatch == false) {\n var value = data[0].id;\n if (value !== null) {\n this.setState({\n selectedlocationID: value\n });\n\n this.setState({ loadinghardware: true, selectedhardwareID: \"0\", loadingsublocation: true, selectedsublocationID: \"0\", loadingdispatch: true, selecteddispatchID: \"0\", });\n\n if (this.state.pagePreload) {\n this.getHardwareAll(value); //have to use currnet as state is not snyc\n this.getSubLocationAll(value); //Request for the Sublocation for this location\n var value2 = this.state.selectedhardwareID;\n if (value2 !== 0) {\n this.getDispatchByHardware(value, value2); //request for dispatch\n }\n }\n }\n }\n this.setState({ location: data, loadinglocation: false, });\n\n \n } else {\n console.log(\"Error in response: \" + response.status);\n }\n this.setState((prevState) => ({ anyPageDataLoading: prevState.anyPageDataLoading - 1 }));\n }\n\n async getSubLocationAll(locationID) {\n this.setState((prevState) => ({ anyPageDataLoading: prevState.anyPageDataLoading + 1, anyPageDataLoadingDetails: \"SubLocation\" }));\n const accessToken = this.props.auth.getAccessToken();\n const response = await fetch(window._env_.REACT_APP_API_ADDRESS + '/api/db/sublocationall/' + locationID, {\n headers: new Headers({\n \"Accept\": \"application/json\",\n \"Authorization\": `Bearer ${accessToken}`\n })\n }); //TODO: Need to change from hardcoding\n if (response.status === 200) {\n var data = await response.json();\n\n //Insert blank\n data.unshift({\n id: '0',\n name: '---Select---',\n });\n\n //Match drop down if required\n if (data !== null) {\n var checkMatch = false;\n for (var i = 0; i < data.length; i++) {\n if (this.state.selectedsublocationID == data[i].id) {\n checkMatch = true;\n break;\n }\n }\n if (checkMatch == false) {\n if (typeof data[0] === \"undefined\") {\n } else {\n var value = data[0].id;\n if (value !== null) {\n this.setState({\n selectedsublocationID: value\n });\n }\n this.setState({ loadingsequence: true, selectedsequenceID: \"0\", });\n\n if (this.state.pagePreload) {\n this.getSequenceAll(value); //Request\n }\n }\n }\n }\n this.setState({ sublocation: data, loadingsublocation: false, });\n\n } else {\n console.log(\"Error in response: \" + response.status);\n }\n this.setState((prevState) => ({ anyPageDataLoading: prevState.anyPageDataLoading - 1 }));\n }\n\n async postsublocationInsert(locationID, sublocationName) {\n const accessToken = this.props.auth.getAccessToken();\n const requestOptions = {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', \"Accept\": \"application/json\", \"Authorization\": `Bearer ${accessToken}` },\n body: JSON.stringify({'LocationId': locationID, 'Name': sublocationName, 'Description': sublocationName })\n };\n\n fetch(window._env_.REACT_APP_API_ADDRESS + '/api/db/insert/sublocation', requestOptions)\n .then(response => {\n //Get latest list of\n this.setState({ loadingsublocation: true, });\n this.getSubLocationAll(this.state.selectedlocationID);\n });\n }\n\n async getSequenceAll(sublocationID) {\n this.setState((prevState) => ({ anyPageDataLoading: prevState.anyPageDataLoading + 1, anyPageDataLoadingDetails: \"Sequence\" }));\n const accessToken = this.props.auth.getAccessToken();\n const response = await fetch(window._env_.REACT_APP_API_ADDRESS + '/api/db/sequenceall/' + sublocationID, {\n headers: new Headers({\n \"Accept\": \"application/json\",\n \"Authorization\": `Bearer ${accessToken}`\n })\n }); //TODO: Need to change from hardcoding\n if (response.status === 200) {\n var data = await response.json();\n\n //Insert blank\n data.unshift({\n id: '0',\n name: '---Select---',\n });\n\n //Match drop down if required\n if (data !== null) {\n var checkMatch = false;\n for (var i = 0; i < data.length; i++) {\n if (this.state.selectedsequenceID == data[i].id) {\n checkMatch = true;\n break;\n }\n }\n if (checkMatch == false) {\n if (typeof data[0] === \"undefined\") {\n } else {\n var value = data[0].id;\n if (value !== null) {\n this.setState({\n selectedsequenceID: value\n });\n\n this.setState({ loadingsubsequence: true, selectedsubsequenceID: \"0\", });\n\n if (this.state.pagePreload) {\n this.getSubSequenceAll(value); //Request\n }\n\n }\n }\n }\n }\n this.setState({ sequence: data, loadingsequence: false, });\n\n } else {\n console.log(\"Error in response: \" + response.status);\n }\n this.setState((prevState) => ({ anyPageDataLoading: prevState.anyPageDataLoading - 1 }));\n }\n\n async postsequenceInsert(sublocationID, sequenceName) {\n const accessToken = this.props.auth.getAccessToken();\n const requestOptions = {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', \"Accept\": \"application/json\", \"Authorization\": `Bearer ${accessToken}` },\n body: JSON.stringify({ 'SubLocationId': sublocationID, 'Name': sequenceName, 'Description': sequenceName })\n };\n\n fetch(window._env_.REACT_APP_API_ADDRESS + '/api/db/insert/sequence', requestOptions)\n .then(response => {\n //Get latest list of\n this.setState({ loadingsequence: true, selectedsequenceID: \"0\", });\n this.getSequenceAll(this.state.selectedsublocationID);\n });\n }\n\n async getSubSequenceAll(sequenceID) {\n this.setState((prevState) => ({ anyPageDataLoading: prevState.anyPageDataLoading + 1, anyPageDataLoadingDetails: \"SubSequence\" }));\n const accessToken = this.props.auth.getAccessToken();\n const response = await fetch(window._env_.REACT_APP_API_ADDRESS + '/api/db/subsequenceall/' + sequenceID, {\n headers: new Headers({\n \"Accept\": \"application/json\",\n \"Authorization\": `Bearer ${accessToken}`\n })\n }); //TODO: Need to change from hardcoding\n if (response.status === 200) {\n var data = await response.json();\n\n //Insert blank\n data.unshift({\n id: '0',\n name: '---Select---',\n });\n\n //Match drop down if required\n if (data !== null) {\n var checkMatch = false;\n for (var i = 0; i < data.length; i++) {\n if (this.state.selectedsubsequenceID == data[i].id) {\n checkMatch = true;\n break;\n }\n }\n if (checkMatch == false) {\n if (typeof data[0] === \"undefined\") {\n } else {\n var value = data[0].id;\n if (value !== null) {\n this.setState({\n selectedsubsequenceID: value\n });\n\n this.setState({ loadingplan: true, selectedplanID: \"0\", });\n\n if (this.state.pagePreload) {\n this.getPlanAll(value); //Request\n }\n \n }\n }\n }\n }\n this.setState({ subsequence: data, loadingsubsequence: false, });\n\n } else {\n console.log(\"Error in response: \" + response.status);\n }\n this.setState((prevState) => ({ anyPageDataLoading: prevState.anyPageDataLoading - 1 }));\n }\n\n async postsubsequenceInsert(sequenceID, subsequenceName) {\n const accessToken = this.props.auth.getAccessToken();\n const requestOptions = {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', \"Accept\": \"application/json\", \"Authorization\": `Bearer ${accessToken}` },\n body: JSON.stringify({ 'SequenceId': sequenceID, 'Name': subsequenceName, 'Description': subsequenceName })\n };\n\n fetch(window._env_.REACT_APP_API_ADDRESS + '/api/db/insert/subsequence', requestOptions)\n .then(response => {\n //Get latest list of\n this.setState({ loadingsubsequence: true, selectedsubsequenceID: \"0\", });\n this.getSubSequenceAll(this.state.selectedsequenceID);\n });\n }\n\n async getPlanAll(subsequenceID) {\n this.setState((prevState) => ({ anyPageDataLoading: prevState.anyPageDataLoading + 1, anyPageDataLoadingDetails: \"Plan\" }));\n const accessToken = this.props.auth.getAccessToken();\n const response = await fetch(window._env_.REACT_APP_API_ADDRESS + '/api/db/planall/' + subsequenceID, {\n headers: new Headers({\n \"Accept\": \"application/json\",\n \"Authorization\": `Bearer ${accessToken}`\n })\n }); //TODO: Need to change from hardcoding\n if (response.status === 200) {\n var data = await response.json();\n for (var i = 0; i < data.length; i++) {\n data[i][\"data\"] = JSON.parse(data[i][\"data\"]); //Parse string into object\n }\n\n //Insert blank\n data.unshift({\n id: '0',\n data: {\n Name: '---Select---'\n },\n });\n\n //Match drop down if required\n if (data !== null) {\n var checkMatch = false;\n for (var i = 0; i < data.length; i++) {\n if (this.state.selectedplanID == data[i].id) {\n checkMatch = true;\n break;\n }\n }\n if (checkMatch == false) {\n if (typeof data[0] === \"undefined\") {\n } else {\n var value = data[0].id;\n if (value !== null) {\n this.setState({\n selectedplanID: value\n });\n\n this.setState({ loadingplandetails: true, });\n\n if (this.state.pagePreload) {\n this.getPlanDetailsAll(value); //Request\n }\n }\n }\n }\n }\n\n //Set greatest Verno for create\n var greatestVerNo = 0;\n var greatestVerIndex = 0;\n if (data !== null) {\n var checkMatch = false;\n for (var i = 0; i < data.length; i++) {\n if (data[i].subSequenceId = this.state.selectedsubsequenceID) {\n if (data[i].version > greatestVerNo) {\n greatestVerNo = data[i].version;\n greatestVerIndex = i;\n }\n }\n }\n }\n data[greatestVerIndex].data[\"Name\"] = data[greatestVerIndex].data[\"Name\"] + \" [Latest]\";\n this.setState({\n createplanVersion: greatestVerNo + 1\n });\n\n this.setState({ plan: data, loadingplan: false, });\n\n } else {\n console.log(\"Error in response: \" + response.status);\n }\n this.setState((prevState) => ({ anyPageDataLoading: prevState.anyPageDataLoading - 1 }));\n }\n\n async postplanInsert(subsequenceID, version, starttime, endtime, data) {\n const accessToken = this.props.auth.getAccessToken();\n const requestOptions = {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', \"Accept\": \"application/json\", \"Authorization\": `Bearer ${accessToken}` },\n body: JSON.stringify({ 'SubSequenceId': subsequenceID, 'Version': version, 'StartTime': starttime, 'EndTime': endtime, 'Data': JSON.stringify(data) })\n };\n\n fetch(window._env_.REACT_APP_API_ADDRESS + '/api/db/insert/plan', requestOptions)\n .then(response => {\n //Get latest list of\n this.setState({ loadingplan: true, selectedplanID: \"0\", });\n this.getPlanAll(this.state.selectedsubsequenceID);\n });\n }\n\n convertPlanRowColsToObject(planID, rows, cols) {\n var sendobject = [];\n var arrayobject = {};\n var tempdataobject = {};\n for (var i = 0; i < rows.length; i++) {\n arrayobject = {};\n arrayobject[\"Id\"] = i; //Not used\n arrayobject[\"PlanId\"] = parseInt(planID);\n arrayobject[\"PlanOrder\"] = i;\n arrayobject[\"DispatchId\"] = -1; //Not used\n arrayobject[\"DispatchOrder\"] = -1; //Not used\n\n //Temp data object from upload information\n tempdataobject = {}\n for (var j = 1; j < cols.length; j++) { //As Row# in first spot and dont want\n tempdataobject[cols[j].name] = rows[i][j];\n }\n arrayobject[\"Data\"] = JSON.stringify(tempdataobject);\n sendobject.push(arrayobject);\n }\n return sendobject;\n }\n\n async postplandetailsInsertArray(planID, sendobject) {\n\n //Remove upload window state\n this.setState({\n dataLoaded: false,\n rows: null,\n cols: null,\n extra: null,\n extra_line: null\n });\n\n const accessToken = this.props.auth.getAccessToken();\n const requestOptions = {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', \"Accept\": \"application/json\", \"Authorization\": `Bearer ${accessToken}` },\n body: JSON.stringify(sendobject)\n };\n\n fetch(window._env_.REACT_APP_API_ADDRESS + '/api/db/insert/plandetailsarray/' + planID, requestOptions)\n .then(response => {\n //Get Plan details\n this.setState({ loadingplandetails: true, });\n this.getPlanDetailsAll(planID);\n });\n }\n\n async getPlanDetailsAll(planID) {\n this.setState((prevState) => ({ anyPageDataLoading: prevState.anyPageDataLoading + 1, anyPageDataLoadingDetails: \"PlanDetails\" }));\n const accessToken = this.props.auth.getAccessToken();\n const response = await fetch(window._env_.REACT_APP_API_ADDRESS + '/api/db/plandetailsall/' + planID, {\n headers: new Headers({\n \"Accept\": \"application/json\",\n \"Authorization\": `Bearer ${accessToken}`\n })\n }); //TODO: Need to change from hardcoding\n if (response.status === 200) {\n var data = await response.json();\n if ((data !== null) && (data.length !== 0)) {\n for (var i = 0; i < data.length; i++) {\n data[i][\"data\"] = JSON.parse(data[i][\"data\"]); //Parse string into object\n }\n this.setState({ plandetails: data, loadingplandetails: false, });\n } \n } else {\n console.log(\"Error in response: \" + response.status);\n }\n this.setState((prevState) => ({ anyPageDataLoading: prevState.anyPageDataLoading - 1 }));\n }\n\n async getPlanDetailsAllForDispatch(planID) {\n this.setState((prevState) => ({ anyPageDataLoading: prevState.anyPageDataLoading + 1, anyPageDataLoadingDetails: \"PlanDetailsForDispatch\" }));\n const accessToken = this.props.auth.getAccessToken();\n const response = await fetch(window._env_.REACT_APP_API_ADDRESS + '/api/db/plandetailsall/' + planID, {\n headers: new Headers({\n \"Accept\": \"application/json\",\n \"Authorization\": `Bearer ${accessToken}`\n })\n }); //TODO: Need to change from hardcoding\n if (response.status === 200) {\n var data = await response.json();\n if ((data !== null) && (data.length !== 0)) {\n for (var i = 0; i < data.length; i++) {\n data[i][\"data\"] = JSON.parse(data[i][\"data\"]); //Parse string into object\n }\n this.setState({ plandetails: data, loadingplandetails: false, });\n\n //Add to Dispatch List\n var data2 = this.state.dispatchPlanDetailsAll;\n for (var i = 0; i < data.length; i++) {\n data2.push(data[i]);\n }\n this.setState({ dispatchPlanDetailsAll: data2 });\n }\n } else {\n console.log(\"Error in response: \" + response.status);\n }\n this.setState((prevState) => ({ anyPageDataLoading: prevState.anyPageDataLoading - 1 }));\n }\n\n async getDispatchByHardware(locationID,hardwareID) {\n this.setState((prevState) => ({ anyPageDataLoading: prevState.anyPageDataLoading + 1, anyPageDataLoadingDetails: \"Dispatch\" }));\n const accessToken = this.props.auth.getAccessToken();\n const response = await fetch(window._env_.REACT_APP_API_ADDRESS + '/api/db/dispatchbyhardware/' + locationID + '/' + hardwareID, {\n headers: new Headers({\n \"Accept\": \"application/json\",\n \"Authorization\": `Bearer ${accessToken}`\n })\n }); //TODO: Need to change from hardcoding\n if (response.status === 200) {\n var data = await response.json();\n if ((data !== null) && (data.length !== 0)) {\n for (var i = 0; i < data.length; i++) {\n data[i][\"data\"] = JSON.parse(data[i][\"data\"]); //Parse string into object\n }\n\n //Set greatest Time for dispatch\n var greatestTimeNo = 0;\n var greatestTimeIndex = 0;\n var temptime;\n if (data !== null) {\n for (var i = 0; i < data.length; i++) {\n temptime = Date.parse(data[i].dispatchTime);\n if (temptime > 0) {\n data[i].name = data[i].name + \" (Dispatched @ \" + data[i].dispatchTime + \")\"; //Show dispatch time\n }\n if (temptime > greatestTimeNo) {\n greatestTimeNo = temptime;\n greatestTimeIndex = i;\n }\n }\n }\n data[greatestTimeIndex].name = data[greatestTimeIndex].name + \" [Device]\"; //Show latest on device\n\n //Insert blank\n data.unshift({\n id: '0',\n name: '---Select---',\n });\n\n //Match drop down if required\n if (data !== null) {\n var checkMatch = false;\n for (var i = 0; i < data.length; i++) {\n if (this.state.selecteddispatchID == data[i].id) {\n checkMatch = true;\n break;\n }\n }\n if (checkMatch == false) {\n if (typeof data[0] === \"undefined\") {\n } else {\n var value = data[0].id;\n if (value !== null) {\n this.setState({\n selecteddispatchID: value\n });\n\n if (this.state.pagePreload) {\n //this.getDispatchDetailsAll(value); //***********************FUTURE\n }\n }\n }\n }\n }\n this.setState({ dispatch: data, loadingdispatch: false, });\n }\n } else {\n console.log(\"Error in response: \" + response.status);\n }\n this.setState((prevState) => ({ anyPageDataLoading: prevState.anyPageDataLoading - 1 }));\n }\n\n async getDispatchAll(locationID) {\n this.setState((prevState) => ({ anyPageDataLoading: prevState.anyPageDataLoading + 1, anyPageDataLoadingDetails: \"Dispatch\" }));\n const accessToken = this.props.auth.getAccessToken();\n const response = await fetch(window._env_.REACT_APP_API_ADDRESS + '/api/db/dispatchall/' + locationID, {\n headers: new Headers({\n \"Accept\": \"application/json\",\n \"Authorization\": `Bearer ${accessToken}`\n })\n }); //TODO: Need to change from hardcoding\n if (response.status === 200) {\n var data = await response.json();\n if ((data !== null) && (data.length !== 0)) {\n for (var i = 0; i < data.length; i++) {\n data[i][\"data\"] = JSON.parse(data[i][\"data\"]); //Parse string into object\n }\n\n //Set greatest Time for dispatch\n var greatestTimeNo = 0;\n var greatestTimeIndex = 0;\n var temptime;\n if (data !== null) {\n for (var i = 0; i < data.length; i++) {\n temptime = Date.parse(data[i].dispatchTime);\n if (temptime > 0) {\n data[i].name = data[i].name + \" (Dispatched @ \" + data[i].dispatchTime + \")\"; //Show dispatch time\n }\n if (temptime > greatestTimeNo) {\n greatestTimeNo = temptime;\n greatestTimeIndex = i;\n }\n }\n }\n data[greatestTimeIndex].name = data[greatestTimeIndex].name + \" [Device]\"; //Show latest on device\n\n //Insert blank\n data.unshift({\n id: '0',\n name: '---Select---',\n });\n\n //Match drop down if required\n if (data !== null) {\n var checkMatch = false;\n for (var i = 0; i < data.length; i++) {\n if (this.state.selecteddispatchID == data[i].id) {\n checkMatch = true;\n break;\n }\n }\n if (checkMatch == false) {\n if (typeof data[0] === \"undefined\") {\n } else {\n var value = data[0].id;\n if (value !== null) {\n this.setState({\n selecteddispatchID: value\n });\n\n if (this.state.pagePreload) {\n //this.getDispatchDetailsAll(value); //***********************FUTURE\n }\n }\n }\n }\n }\n this.setState({ dispatch: data, loadingdispatch: false, });\n } \n } else {\n console.log(\"Error in response: \" + response.status);\n }\n this.setState((prevState) => ({ anyPageDataLoading: prevState.anyPageDataLoading - 1 }));\n }\n\n async getDispatchReview(dispatchID, locationID) {\n this.setState((prevState) => ({ anyPageDataLoading: prevState.anyPageDataLoading + 1, anyPageDataLoadingDetails: \"DispatchReview\" }));\n this.setState({ review: [], loadedreview: false, reviewSelectionMode: false, reviewSelections: [] });\n\n const accessToken = this.props.auth.getAccessToken();\n const response = await fetch(window._env_.REACT_APP_API_ADDRESS + '/api/db/dispatchreview/' + locationID + '/' + dispatchID, {\n headers: new Headers({\n \"Accept\": \"application/json\",\n \"Authorization\": `Bearer ${accessToken}`\n })\n }); //TODO: Need to change from hardcoding\n if (response.status === 200) {\n var data = await response.json();\n if ((data !== null) && (data.length !== 0)) {\n for (var i = 0; i < data.length; i++) {\n data[i][\"data\"] = JSON.parse(data[i][\"data\"]); //Parse string into object\n }\n //Not requried expected to be string\n //for (var i = 0; i < data.length; i++) {\n // for (var j = 0; j < data[i][\"data\"][\"ReviewDetails\"][\"Captures_Raw\"].length; j++) {\n // data[i][\"data\"][\"ReviewDetails\"][\"Captures_Raw\"][j][\"Data\"] = JSON.parse(data[i][\"data\"][\"ReviewDetails\"][\"Captures_Raw\"][j][\"Data\"]); //Parse string into object\n // }\n //}\n\n //adjust data for show\n data[0][\"data\"][\"ReviewDetails\"][\"Captures_Raw\"] = this.manipulateCaptureDataForFrontEnd(data[0][\"data\"][\"ReviewDetails\"][\"Captures_Raw\"]);\n data[0][\"data\"][\"ReviewDetails\"][\"ReviewPlans\"] = this.manipulatePlanDataForFrontEnd(data[0][\"data\"][\"ReviewDetails\"][\"ReviewPlans\"]);\n data[0][\"data\"][\"ReviewDetails\"][\"Summary\"] = this.manipulateSummaryForFrontEnd(data[0][\"data\"][\"ReviewDetails\"][\"Summary\"]);\n\n this.setState({ review: data[0], loadedreview: true, });\n } else {\n //Loading error\n this.setState({ reviewOpen: false, anyPageError: true, anyPageErrorDetails: '1: API returned null results for review' });\n }\n } else {\n console.log(\"Error in response: \" + response.status);\n }\n this.setState((prevState) => ({ anyPageDataLoading: prevState.anyPageDataLoading - 1 }));\n }\n\n async postDispatchReviewEdits(dispatchID, locationID, reviewselections) {\n this.setState({ review: [], loadedreview: false, reviewSelectionMode: false, reviewSelections: [] });\n const accessToken = this.props.auth.getAccessToken();\n var manualselections = [];\n var tempobject;\n for (var i = 0; i < reviewselections.length; i++) {\n tempobject = {}\n tempobject[\"CaptureId\"] = reviewselections[i][\"capture_rowData\"]['Id'];\n tempobject[\"PlandetailsId\"] = reviewselections[i][\"missing_rowData\"]['PlanDetailsId'];\n manualselections.push(tempobject);\n }\n const bodystring = JSON.stringify({ 'ManualSelections': manualselections });\n const requestOptions = {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', \"Accept\": \"application/json\", \"Authorization\": `Bearer ${accessToken}` },\n body: bodystring\n };\n\n fetch(window._env_.REACT_APP_API_ADDRESS + '/api/db/insert/dispatchreviewedits/' + locationID + '/' + dispatchID, requestOptions)\n .then(response => {\n //Get dispatch info for drop down\n //this.setState({ review: [], loadedreview: false });\n var data = response.json();\n if ((data !== null) && (data.length !== 0)) {\n for (var i = 0; i < data.length; i++) {\n data[i][\"data\"] = JSON.parse(data[i][\"data\"]); //Parse string into object\n }\n //Not requried expected to be string\n //for (var i = 0; i < data.length; i++) {\n // for (var j = 0; j < data[i][\"data\"][\"ReviewDetails\"][\"Captures_Raw\"].length; j++) {\n // data[i][\"data\"][\"ReviewDetails\"][\"Captures_Raw\"][j][\"Data\"] = JSON.parse(data[i][\"data\"][\"ReviewDetails\"][\"Captures_Raw\"][j][\"Data\"]); //Parse string into object\n // }\n //}\n\n //adjust data for show\n data[0][\"data\"][\"ReviewDetails\"][\"Captures_Raw\"] = this.manipulateCaptureDataForFrontEnd(data[0][\"data\"][\"ReviewDetails\"][\"Captures_Raw\"]);\n data[0][\"data\"][\"ReviewDetails\"][\"ReviewPlans\"] = this.manipulatePlanDataForFrontEnd(data[0][\"data\"][\"ReviewDetails\"][\"ReviewPlans\"]);\n data[0][\"data\"][\"ReviewDetails\"][\"Summary\"] = this.manipulateSummaryForFrontEnd(data[0][\"data\"][\"ReviewDetails\"][\"Summary\"]);\n\n this.setState({ review: data[0], loadedreview: true });\n } else {\n //Loading error\n this.setState({ reviewOpen: false, anyPageError: true, anyPageErrorDetails: '1: API returned null results for review edits' });\n }\n });\n }\n\n async getPlanReport(subsequenceID, planID) {\n this.setState((prevState) => ({ anyPageDataLoading: prevState.anyPageDataLoading + 1, anyPageDataLoadingDetails: \"PlanReport\" }));\n this.setState({ report: [], loadedreport: false, PDFgenerated: false, PDFloading: false });\n\n const accessToken = this.props.auth.getAccessToken();\n const response = await fetch(window._env_.REACT_APP_API_ADDRESS + '/api/db/planreport/' + subsequenceID + '/' + planID, {\n headers: new Headers({\n \"Accept\": \"application/json\",\n \"Authorization\": `Bearer ${accessToken}`\n })\n }); //TODO: Need to change from hardcoding\n if (response.status === 200) {\n var data = await response.json();\n if ((data !== null) && (data.length !== 0)) {\n for (var i = 0; i < data.length; i++) {\n data[i][\"data\"] = JSON.parse(data[i][\"data\"]); //Parse string into object\n }\n\n if ((data[0][\"data\"][\"ReportDetails\"][\"ReviewPlans\"].length > 0) && (data[0][\"data\"][\"ReportDetails\"].hasOwnProperty(\"Summary\"))) {\n //adjust data for show\n data[0][\"data\"][\"ReportDetails\"][\"ReviewPlans\"] = this.manipulatePlanDataForFrontEnd(data[0][\"data\"][\"ReportDetails\"][\"ReviewPlans\"]);\n data[0][\"data\"][\"ReportDetails\"][\"Summary\"] = this.manipulateSummaryForFrontEnd(data[0][\"data\"][\"ReportDetails\"][\"Summary\"]);\n\n\n //Generate Plotly data\n //------------------------------------------\n var Chart = {};\n\n //Percent Diff\n Chart[\"PercentDiffvsPlan\"] = ((data[0][\"data\"][\"ReportDetails\"][\"Summary\"][\"TotalCountDiffvsPlan\"] * 100 / data[0][\"data\"][\"ReportDetails\"][\"Summary\"][\"TotalCountPlan\"])).toFixed();\n\n //Radar Data\n var RadarData = {};\n var RadarDataNorthArray = [];\n var RadarDataEastArray = [];\n for (var i = data[0][\"data\"][\"ReportDetails\"][\"Summary\"][\"DiffvsPlan\"].length - 1; i >= 0; --i) {\n RadarDataEastArray.push(data[0][\"data\"][\"ReportDetails\"][\"Summary\"][\"DiffvsPlan\"][i][\"Diff_DistEast\"]);\n RadarDataNorthArray.push(data[0][\"data\"][\"ReportDetails\"][\"Summary\"][\"DiffvsPlan\"][i][\"Diff_DistNorth\"]);\n };\n RadarData[\"x\"] = RadarDataEastArray;\n RadarData[\"y\"] = RadarDataNorthArray;\n Chart[\"RadarData\"] = RadarData;\n\n //Bar Depth Data \n var BarDepthData = {};\n var BarDepthDataCountArray = [0, 0, 0, 0, 0];\n for (var i = data[0][\"data\"][\"ReportDetails\"][\"Summary\"][\"DiffvsPlan\"].length - 1; i >= 0; --i) {\n //Count\n var SeverityIndex = data[0][\"data\"][\"ReportDetails\"][\"Summary\"][\"DiffvsPlan\"][i][\"Diff_HoleDepth_Severity\"] - 1; //Array offset to 0\n BarDepthDataCountArray[SeverityIndex] = BarDepthDataCountArray[SeverityIndex] + 1;\n };\n BarDepthDataCountArray[3] = BarDepthDataCountArray[3] * -1; //Flip count\n BarDepthDataCountArray[4] = BarDepthDataCountArray[4] * -1; //Flip count\n BarDepthData[\"x\"] = BarDepthDataCountArray;\n Chart[\"BarDepthData\"] = BarDepthData;\n\n //Bar ToelRL Data \n var BarToeRLData = {};\n var BarToeRLDataCountArray = [0, 0, 0, 0, 0];\n for (var i = data[0][\"data\"][\"ReportDetails\"][\"Summary\"][\"DiffvsPlan\"].length - 1; i >= 0; --i) {\n //Count\n var SeverityIndex = data[0][\"data\"][\"ReportDetails\"][\"Summary\"][\"DiffvsPlan\"][i][\"Diff_ToeRL_Severity\"] - 1; //Array offset to 0\n BarToeRLDataCountArray[SeverityIndex] = BarToeRLDataCountArray[SeverityIndex] + 1;\n };\n BarToeRLDataCountArray[3] = BarToeRLDataCountArray[3] * -1; //Flip count\n BarToeRLDataCountArray[4] = BarToeRLDataCountArray[4] * -1; //Flip count\n BarToeRLData[\"x\"] = BarToeRLDataCountArray;\n Chart[\"BarToelRLData\"] = BarToeRLData;\n\n //Generate Redrill Map\n var RedrillMapData = [];\n for (var i = 0; i <= data[0][\"data\"][\"ReportDetails\"][\"Summary\"][\"DiffvsPlan\"].length - 1; i++) {\n //Count\n if (data[0][\"data\"][\"ReportDetails\"][\"Summary\"][\"DiffvsPlan\"][i][\"Diff_\" + this.state.reportHeaderCustomField[5] + \"_Severity\"] === 1) { // Underdrill -1m\n //Reformat\n var TempObject = {};\n TempObject[\"Latitude\"] = data[0][\"data\"][\"ReportDetails\"][\"Summary\"][\"DiffvsPlan\"][i][\"Latitude_Plan\"];\n TempObject[\"Longitude\"] = data[0][\"data\"][\"ReportDetails\"][\"Summary\"][\"DiffvsPlan\"][i][\"Longitude_Plan\"];\n TempObject[\"Name\"] = data[0][\"data\"][\"ReportDetails\"][\"Summary\"][\"DiffvsPlan\"][i][\"Name\"];\n TempObject[\"PlanDetailsId\"] = data[0][\"data\"][\"ReportDetails\"][\"Summary\"][\"DiffvsPlan\"][i][\"PlanDetailsId\"];\n RedrillMapData.push(TempObject);\n }\n };\n Chart[\"RedrillMapData\"] = RedrillMapData;\n\n //Generate Backfill Map\n var BackfillMapData = [];\n for (var i = 0; i <= data[0][\"data\"][\"ReportDetails\"][\"Summary\"][\"DiffvsPlan\"].length - 1; i++) {\n //Count\n if (data[0][\"data\"][\"ReportDetails\"][\"Summary\"][\"DiffvsPlan\"][i][\"Diff_\" + this.state.reportHeaderCustomField[6] + \"_Severity\"] === 5) { // Overdrill +1m\n //Reformat\n var TempObject = {};\n TempObject[\"Latitude\"] = data[0][\"data\"][\"ReportDetails\"][\"Summary\"][\"DiffvsPlan\"][i][\"Latitude_Plan\"];\n TempObject[\"Longitude\"] = data[0][\"data\"][\"ReportDetails\"][\"Summary\"][\"DiffvsPlan\"][i][\"Longitude_Plan\"];\n TempObject[\"Name\"] = data[0][\"data\"][\"ReportDetails\"][\"Summary\"][\"DiffvsPlan\"][i][\"Name\"];\n TempObject[\"PlanDetailsId\"] = data[0][\"data\"][\"ReportDetails\"][\"Summary\"][\"DiffvsPlan\"][i][\"PlanDetailsId\"];\n BackfillMapData.push(TempObject);\n }\n };\n Chart[\"BackfillMapData\"] = BackfillMapData;\n\n data[0][\"data\"][\"Chart\"] = Chart;\n this.setState({ report: data[0], loadedreport: true });\n } else {\n //Loading error\n this.setState({ reportOpen: false, anyPageError: true, anyPageErrorDetails: '1: API returned null results for report' });\n }\n } \n } else {\n console.log(\"Error in response: \" + response.status);\n }\n this.setState((prevState) => ({ anyPageDataLoading: prevState.anyPageDataLoading - 1 }));\n }\n\n async postDispatch(name, hardwareID, locationID, dispatchtime, data) {\n const accessToken = this.props.auth.getAccessToken();\n const requestOptions = {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', \"Accept\": \"application/json\", \"Authorization\": `Bearer ${accessToken}` },\n body: JSON.stringify({ 'Id': -1, 'Name': name, 'HardwareId': hardwareID, 'LocationId': locationID, 'DispatchTime': dispatchtime, 'Data': JSON.stringify(data) })\n };\n\n fetch(window._env_.REACT_APP_API_ADDRESS + '/api/db/insert/dispatch', requestOptions)\n .then(response => {\n //Get dispatch info for drop down\n this.setState({ loadingdispatch: true, dispatchPlanDetailsShow: false, });\n this.getDispatchByHardware(locationID,hardwareID);\n });\n }\n\n async postDispatchToDevice(dispatchID, locationID) {\n this.setState({ dispatchToDeviceLoading: true });\n const accessToken = this.props.auth.getAccessToken();\n const requestOptions = {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', \"Accept\": \"application/json\", \"Authorization\": `Bearer ${accessToken}` },\n body: JSON.stringify({ title: 'React POST Request Example' })\n };\n\n fetch(window._env_.REACT_APP_API_ADDRESS + '/api/RabbitMQPublish/dispatchtodevice/' + locationID + '/' + dispatchID, requestOptions)\n .then(response => {\n //Nothing\n this.setState({ dispatchToDeviceLoading: false });\n });\n }\n\n\n async getHardwareAll(locationID) {\n this.setState((prevState) => ({ anyPageDataLoading: prevState.anyPageDataLoading + 1, anyPageDataLoadingDetails: \"Hardware\" }));\n const accessToken = this.props.auth.getAccessToken();\n const response = await fetch(window._env_.REACT_APP_API_ADDRESS + '/api/db/hardwareall/' + locationID, {\n headers: new Headers({\n \"Accept\": \"application/json\",\n \"Authorization\": `Bearer ${accessToken}`\n })\n }); //TODO: Need to change from hardcode\n if (response.status === 200) {\n var data = await response.json();\n\n //Insert blank\n data.unshift({\n id: '0',\n name: '---Select---',\n });\n\n //Request for the hardware for this location if we have it\n if (data !== null) {\n var checkMatch = false;\n for (var i = 0; i < data.length; i++) {\n if (this.state.selectedhardwareID == data[i].id) {\n checkMatch = true;\n break;\n }\n }\n if (checkMatch == false) {\n if (typeof data[0] === \"undefined\") {\n } else {\n var value = data[0].id;\n if (value !== null) {\n this.setState({\n selectedhardwareID: value\n });\n //this.getDataCaptureAllFiltered(this.state.selectedlocationID, value); //have to use currnet as state is not snyc\n }\n }\n }\n }\n this.setState({ hardware: data, loadinghardware: false });\n\n } else {\n console.log(\"Error in response: \" + response.status);\n }\n this.setState((prevState) => ({ anyPageDataLoading: prevState.anyPageDataLoading - 1 }));\n\n }\n\n async getDataCaptureAll(locationID, hardwareID) {\n //reset\n this.setState((prevState) => ({ anyPageDataLoading: prevState.anyPageDataLoading + 1, anyPageDataLoadingDetails: \"DataCapture\" }));\n this.setState({ captureData: [], loading: true });\n\n const accessToken = this.props.auth.getAccessToken();\n const response = await fetch(window._env_.REACT_APP_API_ADDRESS + '/api/db/datacaptureall/' + locationID + '/' + hardwareID, {\n headers: new Headers({\n \"Accept\": \"application/json\",\n \"Authorization\": `Bearer ${accessToken}`\n })\n }); //TODO: Need to change from hardcode\n if (response.status === 200) {\n var data = await response.json();\n\n if ((data !== null) && (data.length !== 0)) {\n //adjust data for show\n data = this.manipulateCaptureDataForFrontEnd(data);\n this.setState({ captureData: data, loading: false, captureOpen: false });\n console.log(\"Got data: \" + data);\n } else {\n //Loading error\n this.setState({ anyPageError: true, anyPageErrorDetails: '2: API returned no results for selected time period' });\n }\n } else {\n console.log(\"Error in response: \" + response.status);\n }\n this.setState((prevState) => ({ anyPageDataLoading: prevState.anyPageDataLoading - 1 }));\n\n }\n\n async getDataCaptureAllFiltered(locationID, hardwareID) {\n //reset\n this.setState((prevState) => ({ anyPageDataLoading: prevState.anyPageDataLoading + 1, anyPageDataLoadingDetails: \"DataCapture\" }));\n this.setState({ filterOpen: false });\n this.setState({ captureData: [], loading: true });\n\n const accessToken = this.props.auth.getAccessToken();\n const response = await fetch(window._env_.REACT_APP_API_ADDRESS + '/api/db/datacaptureallfiltered/' + locationID + '/' + hardwareID + '/' + this.state.startDate.toISOString() + '/' + this.state.endDate.toISOString(), {\n headers: new Headers({\n \"Accept\": \"application/json\",\n \"Authorization\": `Bearer ${accessToken}`\n })\n }); //TODO: Need to change from hardcode\n if (response.status === 200) {\n var data = await response.json();\n\n if ((data !== null) && (data.length !== 0)) {\n //adjust data for show\n data = this.manipulateCaptureDataForFrontEnd(data);\n this.setState({ captureData: data, loading: false, captureOpen: false });\n console.log(\"Got data: \" + data);\n } else {\n //Loading error\n this.setState({ anyPageError: true, anyPageErrorDetails: '3: API returned no results for selected time period' });\n }\n } else {\n console.log(\"Error in response: \" + response.status);\n }\n this.setState((prevState) => ({ anyPageDataLoading: prevState.anyPageDataLoading - 1 }));\n\n }\n\n async getDataCaptureOneDetailed(id) {\n //Popup detailed display - on\n this.setState((prevState) => ({ anyPageDataLoading: prevState.anyPageDataLoading + 1, anyPageDataLoadingDetails: \"DataCaptureDetailed\" }));\n this.setState({\n seen: true\n });\n\n const accessToken = this.props.auth.getAccessToken();\n const response = await fetch(window._env_.REACT_APP_API_ADDRESS + '/api/db/datacaptureonedetailed/' + this.state.selectedlocationID + '/' + this.state.selectedhardwareID + '/' + id, {\n headers: new Headers({\n \"Accept\": \"application/json\",\n \"Authorization\": `Bearer ${accessToken}`\n })\n }); //TODO: Need to change from hardcode\n if (response.status === 200) {\n var data = await response.json();\n\n //Store data and Popup detailed display - on\n var dataobject = JSON.parse(data[0].detailedData);\n\n //unpack hole data if avail\n if (dataobject[\"holedata\"] != null) {\n if (dataobject[\"holedata\"] != \"\") {\n dataobject[\"holedata\"] = JSON.parse(dataobject[\"holedata\"]);\n\n //unpack data for maps\n var referencestring;\n dataobject[\"holedata\"][\"x1\"] = [];\n dataobject[\"holedata\"][\"y1\"] = [];\n dataobject[\"holedata\"][\"z1\"] = [];\n dataobject[\"holedata\"][\"x2\"] = [];\n dataobject[\"holedata\"][\"y2\"] = [];\n dataobject[\"holedata\"][\"z2\"] = [];\n for (var i = 0; i < dataobject[\"holedata\"][\"utc\"].length; i++) {\n referencestring = \"x\" + dataobject[\"holedata\"][\"sequence\"][i];\n dataobject[\"holedata\"][referencestring].push(dataobject[\"holedata\"][\"x\"][i])\n referencestring = \"y\" + dataobject[\"holedata\"][\"sequence\"][i];\n dataobject[\"holedata\"][referencestring].push(dataobject[\"holedata\"][\"y\"][i])\n referencestring = \"z\" + dataobject[\"holedata\"][\"sequence\"][i];\n dataobject[\"holedata\"][referencestring].push(dataobject[\"holedata\"][\"z\"][i])\n }\n }\n }\n\n //Convert FLIR to rendered\n var canvas = document.createElement('canvas');\n canvas.width = 640;\n canvas.height = 512;\n var context = canvas.getContext('2d');\n var imagesrc = dataobject[\"flirimage\"];\n var img = document.createElement('img');\n img.src = imagesrc;\n img.onload = () => { this.drawflirrender(canvas, dataobject, context, img) };\n \n } else {\n console.log(\"Error in response: \" + response.status);\n }\n this.setState((prevState) => ({ anyPageDataLoading: prevState.anyPageDataLoading - 1 }));\n\n }\n\n drawflirrender(canvas, dataobject, context, img) {\n //const colorstops = [\"#ffffff\", \"#ffd700\", \"#cc0077\", \"#20008c\", \"#000000\"]; // palette\n const colorstops = [\"#000000\", \"#20008c\", \"#cc0077\", \"#ffd700\", \"#ffffff\"]; // palette\n\n context.drawImage(img, 0, 0);\n\n var imageData = context.getImageData(0, 0, img.width, img.height);\n\n for (let i = 0; i < imageData.data.length; i += 4) {\n let avg = (imageData.data[i] + imageData.data[i + 1] + imageData.data[i + 2]) / 3;\n\n // find the closest color in the custom palette\n let closestColorIndex = 0;\n for (let j = 0; j < colorstops.length - 1; j++) {\n if (avg >= (j * 255 / (colorstops.length - 1)) && avg <= ((j + 1) * 255 / (colorstops.length - 1))) {\n closestColorIndex = j;\n break;\n }\n }\n\n // determine the values for each color channel based on linear interpolation\n let color1 = colorstops[closestColorIndex];\n let color2 = colorstops[closestColorIndex + 1];\n let t = (avg - (closestColorIndex * 255 / (colorstops.length - 1))) / (255 / (colorstops.length - 1));\n\n imageData.data[i] = parseInt(color1.substring(1, 3), 16) + (parseInt(color2.substring(1, 3), 16) - parseInt(color1.substring(1, 3), 16)) * t;\n imageData.data[i + 1] = parseInt(color1.substring(3, 5), 16) + (parseInt(color2.substring(3, 5), 16) - parseInt(color1.substring(3, 5), 16)) * t;\n imageData.data[i + 2] = parseInt(color1.substring(5, 7), 16) + (parseInt(color2.substring(5, 7), 16) - parseInt(color1.substring(5, 7), 16)) * t;\n }\n context.putImageData(imageData, 0, 0);\n\n var renderedimage = canvas.toDataURL(\"image/png\").replace(\"image/png\", \"image/octet-stream\"); // here is the most important part because if you dont replace you will get a DOM 18 exception.\n dataobject[\"flirimage_rendered\"] = renderedimage;\n\n this.setState({\n seen: true,\n showDetailedWindow: true,\n popupDetailedData: dataobject\n });\n\n }\n\n async postDataCaptureInsert(jsonstring) {\n const accessToken = this.props.auth.getAccessToken();\n const requestOptions = {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', \"Accept\": \"application/json\", \"Authorization\": `Bearer ${accessToken}` },\n body: JSON.stringify(jsonstring)\n };\n\n fetch(window._env_.REACT_APP_API_ADDRESS + '/api/db/insert/datacapture', requestOptions)\n .then(response => {\n //Get latest list of\n this.setState({ loading: true, });\n this.getDataCaptureAllFiltered(this.state.selectedlocationID, this.state.selectedhardwareID); //refresh data on page\n });\n }\n\n async postUploadFull(handsetID, endtime) {\n const accessToken = this.props.auth.getAccessToken();\n const requestOptions = {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', \"Accept\": \"application/json\", \"Authorization\": `Bearer ${accessToken}` },\n body: JSON.stringify({ title: 'React POST Request Example' })\n };\n\n fetch(window._env_.REACT_APP_API_ADDRESS + '/api/RabbitMQPublish/getuploadfull/' + handsetID + '/' + endtime, requestOptions)\n .then(response => {\n this.setState({ loading: true, });\n this.getDataCaptureAllFiltered(this.state.selectedlocationID, this.state.selectedhardwareID); //refresh data on page\n });\n }\n\n async postReuploadAll(handsetID) {\n const accessToken = this.props.auth.getAccessToken();\n const requestOptions = {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', \"Accept\": \"application/json\", \"Authorization\": `Bearer ${accessToken}` },\n body: JSON.stringify({ title: 'React POST Request Example' })\n };\n\n fetch(window._env_.REACT_APP_API_ADDRESS + '/api/RabbitMQPublish/getreuploadall/' + handsetID, requestOptions)\n .then(response => {\n this.setState({ loading: true, });\n this.getDataCaptureAllFiltered(this.state.selectedlocationID, this.state.selectedhardwareID); //refresh data on page\n });\n }\n}\n","export const AUTH_CONFIG = {\n domain: window._env_.REACT_APP_AUTH0_DOMAIN,\n clientID: window._env_.REACT_APP_AUTH0_CLIENTID,\n redirectUri: window._env_.REACT_APP_AUTH0_REDIRECTURI,\n audience: window._env_.REACT_APP_AUTH0_AUDIENCE,\n logoutUri: window._env_.REACT_APP_AUTH0_LOGOUTURI\n};","import auth0 from 'auth0-js';\nimport { AUTH_CONFIG } from './Auth0Config';\n\nexport default class AuthService {\n\n constructor(props) {\n this.state = {\n //User Data\n name: \"User\",\n organisationName: \"Company\"\n };\n }\n\n auth0 = new auth0.WebAuth({\n domain: AUTH_CONFIG.domain,\n clientID: AUTH_CONFIG.clientID,\n redirectUri: AUTH_CONFIG.redirectUri,\n audience: AUTH_CONFIG.audience,\n responseType: 'token id_token',\n scope: 'openid https://athena.com/user_metadata'\n });\n\n login() {\n this.auth0.authorize();\n }\n\n logout() {\n sessionStorage.removeItem('access_token');\n sessionStorage.removeItem('id_token');\n sessionStorage.removeItem('expires_at');\n this.auth0.logout({\n returnTo: AUTH_CONFIG.logoutUri,\n clientID: AUTH_CONFIG.clientID\n });\n }\n\n handleAuthentication(history) {\n this.auth0.parseHash((err, authResult) => {\n if (authResult && authResult.accessToken && authResult.idToken) {\n this.setSession(authResult);\n history.push(\"/\");\n } else if (err) {\n console.log(err);\n }\n });\n }\n\n setSession(authResult) {\n let expiresAt = JSON.stringify((authResult.expiresIn * 1000) + new Date().getTime());\n sessionStorage.setItem('access_token', authResult.accessToken);\n sessionStorage.setItem('id_token', authResult.idToken);\n sessionStorage.setItem('expires_at', expiresAt);\n }\n\n isAuthenticated() {\n let expiresAt = JSON.parse(sessionStorage.getItem('expires_at')); //Can use localStorage if you dont want to be cleaned on browser closure\n return new Date().getTime() < expiresAt;\n }\n\n getAccessToken() {\n const accessToken = sessionStorage.getItem('access_token');\n if (!accessToken) {\n throw new Error('No access token found');\n }\n return accessToken;\n }\n\n getUserInfo(accessToken, callback) {\n this.auth0.client.userInfo(accessToken, function (err, user) {\n // Now you have the user's information\n callback(user[\"https://athena.com/user_metadata\"]);\n });\n }\n\n}","import React, { Component } from 'react';\nimport { Switch, Route } from 'react-router';\nimport { Home } from './components/Home';\nimport AuthService from './AuthService'; //Auth0\n\nexport default class App extends Component {\n static displayName = App.name;\n\n constructor() {\n super();\n this.authService = new AuthService(); //Auth0\n }\n\n renderHome() {\n let resultComponent = ;\n\n if (!this.authService.isAuthenticated()) {\n this.authService.login();\n resultComponent =

Redirecting to the authentication service...

\n }\n\n return resultComponent;\n }\n\n startSession(history) {\n this.authService.handleAuthentication(history);\n return

Starting session...

;\n }\n\n render() {\n return (\n \n this.renderHome()} />\n this.startSession(history)} />\n \n );\n }\n}\n","// In production, we register a service worker to serve assets from local cache.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\n// cached resources are updated in the background.\n\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\n// This link also includes instructions on opting out of this behavior.\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport default function register () {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Lets check if a service worker still exists or not.\n checkValidServiceWorker(swUrl);\n } else {\n // Is not local host. Just register service worker\n registerValidSW(swUrl);\n }\n });\n }\n}\n\nfunction registerValidSW (swUrl) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and\n // the fresh content will have been added to the cache.\n // It's the perfect time to display a \"New content is\n // available; please refresh.\" message in your web app.\n console.log('New content is available; please refresh.');\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker (swUrl) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n if (\n response.status === 404 ||\n response.headers.get('content-type').indexOf('javascript') === -1\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister () {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { BrowserRouter } from 'react-router-dom';\nimport App from './App';\nimport registerServiceWorker from './registerServiceWorker';\n\nimport \"./assets/css/bootstrap.min.css\";\n//import \"./assets/css/paper-kit.css\";\nimport \"./custom.css\"\n\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\nconst rootElement = document.getElementById('root');\n\nReactDOM.render(\n \n \n ,\n rootElement);\n\nregisterServiceWorker();\n\n"],"sourceRoot":""}