{"version":3,"sources":["store/actions/actionTypes.js","Api.js","store/actions/auth.js","containers/Login.js","images/logo.png","images/logo-green.png","containers/Signup.js","config.js","components/Explore.js","components/DrawStyle.js","images/download-button.svg","components/DataExtractionForm.js","components/DataSettingsForm.js","images/delete-button.svg","components/RastersUploadForm.js","components/RedPin.js","components/GreenPin.js","components/Draw.js","components/Swipe.js","components/up42/BackDrop.js","components/up42/CollectionDetail.js","components/CardSection.js","components/CheckoutForm.js","components/up42/Plans.js","components/up42/Stripe.js","images/active-world.svg","images/deactive-world.svg","components/stellaria/screens/BrowseArchiveDate.js","components/stellaria/screens/OrderImageData.js","images/polyline.png","images/normalrgb.png","images/sarcover.png","images/thermalcover.png","components/stellaria/screens/BrowseArchive.js","components/stellaria/screens/OrderImageComponent.js","components/stellaria/screens/ModelDetection.js","images/bulding-detection-1.png","images/bulding-detection-2.png","images/bulding-detection-3.png","images/model-image-1.png","components/stellaria/screens/AiModelData.js","components/stellaria/screens/AiModels.js","images/carPoL.png","images/BuildPoL.png","components/stellaria/screens/patternlife/PatternLifeData.js","components/stellaria/screens/patternlife/FootprintModel.js","components/stellaria/screens/patternlife/LifeModel.js","components/stellaria/screens/patternlife/RenameDialog.js","components/stellaria/screens/patternlife/GraphView.js","components/stellaria/screens/patternlife/DetectionPoL.js","components/stellaria/screens/patternlife/PatternLife.js","components/stellaria/TopBar.js","components/stellaria/Index.js","images/nearIcon.png","components/Home.js","images/1.PNG","images/2.PNG","images/3.PNG","images/4.PNG","images/5.PNG","images/6.PNG","App.js","reportWebVitals.js","store/utility.js","store/reducers/auth.js","index.js"],"names":["AUTH_START","AUTH_SUCCESS","AUTH_FAIL","AUTH_LOGOUT","ANALYZE_ORDER","ANALYZE_ORDER_LODEAR","ANALYZE_ORDER_ERROR","ANALYZE_PROJECT_SIGNAL","ANALYZE_POPUP_SHOW_SIGNAL","DOMAIN","MODEL_DOMIN","APIs","LOGIN_API","SIGNUP_API","RASTER_LIST","GET_JOB_LIST","PROCESS_IMAGE","DOWNLOAD_FILES","GET_IMAGE","GET_COLLECTIONS","GET_SCENE_IDS","GET_PRODUCT_PARAMS","GET_ARCHIVE_CATALOG","PLACE_ORDER","GET_CREDIT_UP42","GET_CREDIT_STRIPE","GET_PLANS","STRIPE_CHECKOUT","GET_ASSET","DOWNLOAD_ASSET","UPDATE_TAGS","GET_ORDER","ESTIMATE_ORDER","STRIPE_PAYMENT_INTENT","STRIPE_PAYMENT_SUCCESS","STRIPE_SINGLE_PRODUCT_INFO","PLACE_FOOTPRINT","analyzeOrderLoader","loderState","type","actionTypes","analyseLoader","analyzeProjectSignal","status","analyzeProjectPopUpSignal","popup_status","analyzeOrderError","msg","analyzeOrder","coordinates_","coordinates","authStart","authSuccess","token","authFail","error","logout","localStorage","removeItem","checkAuthTimeout","expirationDate","dispatch","setTimeout","Login","errorMessage","this","props","message","isAuthenticated","to","className","style","loading","tip","textAlign","width","margin","border","backgroundColor","name","initialValues","remember","onFinish","values","onAuth","email","password","history","push","onFinishFailed","errorInfo","console","log","src","alt","Item","rules","required","size","placeholder","borderRadius","Password","color","block","htmlType","borderColor","React","Component","connect","state","axios","post","then","res","data","key","expirationData","Date","getTime","setItem","catch","err","actions","Option","Select","Signup","logo","padding","float","onSubmit","handleSubmit","confirm","firstname","lastname","companyname","country","scrollToFirstError","marginTop","hasFeedback","dependencies","getFieldValue","validator","rule","value","Promise","reject","resolve","gutter","span","showSearch","optionFilterProp","filterOption","input","option","children","toLowerCase","indexOf","fontFamily","password1","password2","REACT_APP_TOKEN","Layout","Header","getEditHandleStyle","feature","RENDER_STATE","SELECTED","HOVERED","UNCOMMITTED","fill","fillOpacity","stroke","strokeWidth","r","getFeatureStyle","index","CLOSING","strokeDasharray","DataExtractionForm","extent","drawPolygonHandler","isVisible","processTarget","jobsList","submitHandler","orderClickHandler","useState","isDrawing","setIsDrawing","useEffect","htmlFor","id","readOnly","background","onClick","length","getItem","process_target","map","job","mb_tileset_id","date","href","download_url","target","downloadIcon","DataSettingsForm","flagIn","flagOut","deleteData","modelClose","changePinType","resetPins","enabelStartProcess","imageDownlaodProcess","setImageDownlaodProcess","setError","selectedOption","setSelectedOption","downloadProcess","setdownloadProcess","downloadFileSpinner","setDownloadFileSpinner","uuid","setUuid","downloadFiles","fileData","filePath","item","fileUrl","parts","split","path","fetch","method","response","ok","Error","blob","url","window","URL","createObjectURL","a","document","createElement","download","body","appendChild","click","revokeObjectURL","fileDownloader","generateUniqueCode","toString","Math","random","substr","FormControl","component","RadioGroup","row","onChange","event","FormControlLabel","control","Radio","label","CircularProgress","disabled","flagInOutData","JSON","stringify","longitude","latitude","flagInData","drawerBbox","uuid_u","downloadCreatedSagment","RastersUploadForm","rastersList","rasterClickHandler","selectedFile","setSelectedFile","uploading","setUploading","e","preventDefault","formData","FormData","append","finally","files","display","raster","file_name","delete","deleteRaster","deleteIcon","pinStyle","cursor","RedPin","height","viewBox","d","GreenPin","TOKEN","config","mapboxgl","accessToken","mapContainer","position","top","right","left","bottom","makeStyles","theme","backdrop","zIndex","drawer","button","CARD_ELEMENT_OPTIONS","base","fontSize","fontSmoothing","invalid","CardSection","options","root","maxWidth","boxShadow","media","buttonDiv","archiveData","opticalData","minresolution","maxresolution","collection","hostName","setting","productId","collection_","sarData","thumbnail","thermal","newImageryData","images","normalrgb","sar","content","optical","aoi","aoiTypeValue","dubai","riyadh","paris","newyork","BrowseArchive","orderImageHandler_","setContainerWidth_","updateState","forceUpdate","useCallback","archiveCollectionData_","currentDate","setDate","getDate","startDate_","toISOString","slice","endDate_","startDate","setStartDate","endDate","setEndDate","aoiData_","storageAoiType_","aoiType_","setAoiType_","archiveAngle_","parse","angle_","setAngle_","cloudCoverages_","cloudCoverages","setCloudCoverages","filterData_","allfilterData_","setFilterData_","opticalResolutionData_","min","max","unit","opticalResolutionValue","setOpticalResolutionValue","opticalSateliteData_","opticalSatelliteValue","setOpticalSateliteValue","opticalSateliteSettingData_","opticalSatelliteSettingValue","setOpticalSateliteSettingValue","opticalSateliteSettingSelected_","opticalSelectedSettingValue_","setOpticalSelectedSettingValue_","sarSateliteMethod_","sarSateliteSMethodValue","setSateliteSMethodValue","sarSateliteResolution_","sarSateliteResolution","setSarSateliteResolutione","thermalSateliteResolution_","thermalSateliteResolution","setThermalSateliteResolutione","showArchiveModel","setShowArchiveModel","archiveModelData","setArchiveModelData","showArchiveModelLoader","setShowArchiveModelLoader","Object","keys","end","angle","filterInitData","start","localStorageOperations","key_","data_","handleDateChange","date_","filterDataCheck","callAPi","getArchiveCollection","coordinatorFilter","archiveCoordinator","intersects","coordinator_filter","headerOptions","headers","Authorization","json","code","Box","Typography","justifyContent","class","gutterBottom","Slider","newValue","angleValue","valueLabelDisplay","getAriaValueText","cloudValue","mb","aoiType","aoiIsSeletced","dataShow","geometry","archiveAreaInterestSelectHandler","item_","archiveAreaInterest","aoiInit","polyline","imageUrlArray","rid","opticalResolutionImage","isSelected","filter","selectedItem","backgroundImage","opticalResolutionLocalData","existData","existItem","itemIndex","splice","newFilterData","opticalResolutionData","opticalResolutionHandler","checked","opticalResolutionSectionImage","mt","dateItem_","opticalFilterData_","opticalProduct","collectionData","filterOpticalData","product","updateFilterDate","oldFilterData","filterCollectionData","opticalOptionsHandler","opticalOptions","opticalSetting","isExistopticalSetting","settingItem","opticalSelectedSettingValue","filterSetting","settingData","opticalSettingHandler","opticalFilterSetting","imageUrl","seletedMethod","selectedCaptureMethod","filterData","storageCollection","storagefilterCollection","storageItem_","storageCollectionItemIndex","newCollectionData","selectedCapturedMethod","newCollectionData_","updatedFilterData","captureMethodHandler","captureMethodImage","sarResolutionImage","sarResolutionSectionImage","thermalResolutionImage","value_","thermalResolutionSectionImage","m","properties_","properties","num","decimalPlaces","factor","round","roundToDecimalPlaces","providerProperties","incidenceAngle","originalDate","acquisitionDate","formattedDate","getMonth","getFullYear","zoomIn","image_src","file","resolution","cloudCoverage","OrderImageComponent","orderImageHandler","updateMapHeight","analyzeOrderHandler_","polygonCoordinates","useSelector","startDates","endDates","activeTab_","activeTab","setActiveTab","showLoader","setProductType","setProductID","sceneData","fieldData","setAoiType","imageIdLoader","showImageIdsContainer","cart","allError","rid_","useHistory","startDates_","endDates_","dummyData","typeValue_","typeValue","setTypeValue","setTypeImage","setResolutionId_","imageryResolution_","resolutionValue","setResolutionValue","setAoiData","setStartDate_","setEndDate_","cloudCoverage_","setCloudCoverages_","captureMethod_","setCaptureMethodId_","captureMethodValue_","setCaptureMethodValue_","containerWidth","setContainerWidth","handleTabClick","tab","flexDirection","ml","marginLeft","typeData","defaultValue","newImageryTypeOptionHandler","newImageryTypeSectionOption","rightSectionImage","clasName_","resolutionSectionImage","newImageryAreaInterestSelect","newImageryAreaInterest","imageUrlArray_","captureMethodImage_","sceneData_","scene_data","fieldData_","showError_","input_type","orderData","orderDatanew","imageHandler","newImageryImagesIds","ModelDetection","initData","hideAiArchiveHandler_","analyseError","modelData_","oldShowModelData","showRaster","str","modelData","tags","modelTag","imageData","imageSelectedData","setImageSelectedData","aoiData","aoiSelectedData","setAoiDataSelectedData","setOrderData","contanerClass_","contanerClass","setContanerClass","modelsrc","charAt","toUpperCase","description","tag","imageOption","imageOtion","imageObject","removeRaster","image","aoiOption","aoiHandler","areaInterest","AiModelData","rasterId","shpfile","lat","buildingDetection1","layerId","buildingDetectionModel1","buildingDetection2","buildingDetection3","AiModels","hideArchive_","aiModelData","setAiModelData","showAiVaultLoader","setAiVaultLoader","showAiModels_","showAiModels","setShowAiModels","modelActive_","parseInt","modelActiveId","setAiModelsData","hideAiArchive_","hideAiArchive","filteredData","regex","RegExp","test","some","searchVaultHandler","xmlns","vaultTags","poupname","replace","aiModelVaultHandler","patternLifeData","footPrint","FootprintModel","getAllPatternLife","backHandler","useDispatch","projectName_","projectName","setProjectName","selectedDays_","days","selectedDays","setSelectedDays","frequencyValue_","frequencyValue","setFrequencyValue","noOfBuilding","setNoOfBuilding","noOfTotalAreaBuilding","setNoOfTotalAreaBuilding","aoiArea","aoiArea_","footprintData_","footprintData","setFootprintData","showAnalysisLoader","setShowAnalysisLoader","aoiError","setAoiError","generateShortUUID","array","Uint8Array","crypto","getRandomValues","Array","from","byte","padStart","join","placeFootPrint","selectFootPrintData","location","origin","selectedCoordinator","strSelectedCoordinator","process","shp","geojson","totalObject","features","polygon_","drawnPolygon","turf","selectedFeatures","featurePolygon","totalArea","forEach","areaInSquareMeters","totalAreaInKm2","selectedObject","footPrintData","change","selected_change","selected_change_staus","toFixed","key_url","model_api","nameHandler","frequencyValueHandler","footPrintDaysHandler","filterAoi","footPrintAoi","startAnalysis","LifeModel","backToLifeHandler_","getAllPatternLife_","patternLifeData_","setPatternLifeData_","setVaultLoader","show_foot_print_mode","showFootPrintModel","setShowFootPrintModel","footPrintModel_","selectFootPrintModel","setFootPrintModel","searchHandler","vaultHandler","RenameDialog","open","onClose","setName","loader","setLoader","btnName","setBtnName","handleClose","saveHandler","Dialog","pv","GraphView","ResponsiveContainer","LineChart","CartesianGrid","horizontalCoordinatesGenerator","XAxis","dataKey","tickLine","axisLine","YAxis","Line","dot","DetectionPoL","seletcedDetectionPoL","total_object","change_object","selected_object","s_status_object","s_change_object","area_of_building","aoi_area","PatternLife","allLifeData","detectionPoL_","showDetectionPoL","setShowDetectionPoL","show_life_mode","showLifeModel","setShowLifeModel","showLifeLoader","setLifeLoader","anchorEl","setAnchorEl","Boolean","patternLifeItem","setPatternLifeItem","openRename","setOpenRename","deletePattrenLife","renamePattren","downloadReport","f_days","f_value","total","selected_total","seletced_status","jsonData","ws","XLSX","json_to_sheet","wb","book_new","book_append_sheet","removeChild","detectionPoLHandler","icon","carPoLicon","icon_id","BuildPoLicon","currentTarget","Menu","keepMounted","MenuItem","menu","modelname","activeIcon","ActiveIcon","deactiveIcon","DeactiveIcon","TopBar","handler_","analyzeOrderHandler","polygonCoordinates_","updateHeight_","setValue","hideArchive","setHideArchive","TabPanel","other","role","hidden","bgcolor","Tabs","variant","indicatorColor","textColor","Tab","Index","selector","mapRef","useRef","_editorRef","setFeatures","setCoordinates","mode","setMode","selectedFeatureIndex","setSelectedFeatureIndex","setaoiExtent","setDrawerBbox","isShowPolygon","setShowPolygon","shapeFile","setShapeFile","zoom","viewport","setViewport","noOfBuilding_","noOfTotalAreaBuilding_","setAoiArea_","popupSignal_","popupSignal","setPopUpSignal_","handleViewportChange","newViewport","showLayerHandler","imageCoordinates_","uuId_","getSeconds","cityCoordinates_","newLayerId_","map_","current","getMap","OldlayerId_","removeLayer","addLayer","source","layout","paint","entries","coordinate","jumpTo","center","showRaster_","newRasterId_","oldRaterId_","addSource","_onDelete","selectedIndex","deleteFeatures","DrawPolygonMode","handleGeocoderViewportChange","transitionDuration","aiModelanalyze","polygonFeature","getLayer","selectedFeatures_","popupTextName","geometryCentroid","imageIdCoordinates","lon","oldRaterAiId_","oldLayerId_","maphandler","ref","mapboxApiAccessToken","mapStyle","onViewportChange","styleSx","flexWrap","toLocaleLowerCase","pl","clickRadius","onSelect","onUpdate","editType","reduce","acc","x","y","xmin","ymin","xmax","ymax","Infinity","aoiExtent_","drawerBbox_","parseFloat","EditingMode","mapZoom","areaInSquareKilometers","featureStyle","editHandleStyle","editHandleShape","title","marginRight","Content","Sider","setShowHeaderSideBar","filterDate","exact","App","onTryAutoSignup","render","undefined","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","updateObject","oldObject","updatedProperties","initialState","signal","reducer","action","authLogout","composeEnhances","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","store","createStore","applyMiddleware","thunk","app","ReactDOM","getElementById"],"mappings":"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","file":"static/js/main.a9a040ac.chunk.js","sourcesContent":["export const AUTH_START = 'AUTH_START';\r\nexport const AUTH_SUCCESS = 'AUTH_SUCCESS';\r\nexport const AUTH_FAIL = 'AUTH_FAIL';\r\nexport const AUTH_LOGOUT = 'AUTH_LOGOUT';\r\nexport const ANALYZE_ORDER = 'ANALYZE_ORDER';\r\nexport const ANALYZE_ORDER_LODEAR = 'ANALYZE_ORDER_LODEAR';\r\nexport const ANALYZE_ORDER_ERROR = 'ANALYZE_ORDER_ERROR'\r\nexport const ANALYZE_PROJECT_SIGNAL = 'ANALYZE_PROJECT_SIGNAL'\r\nexport const ANALYZE_POPUP_SHOW_SIGNAL = 'ANALYZE_POPUP_SHOW_SIGNAL'","let ENV = process.env.REACT_APP_MODE;\r\nlet DOMAIN = 'https://api.farmin-app.com'\r\nlet MODEL_DOMIN = 'https://model.farmin-app.com'\r\nif(ENV == \"LOCAL\") {\r\n DOMAIN = \"http://127.0.0.1:8000\";\r\n MODEL_DOMIN = 'http://127.0.0.1:8000'\r\n}\r\nconst APIs = {\r\n DOMAIN : DOMAIN,\r\n MODEL_DOMIN:MODEL_DOMIN,\r\n LOGIN_API:DOMAIN+'/rest-auth/login/',\r\n SIGNUP_API:DOMAIN+'/rest-auth/registration/',\r\n RASTER_LIST:DOMAIN+'/raster/',\r\n GET_JOB_LIST:DOMAIN+'/order/',\r\n PROCESS_IMAGE:MODEL_DOMIN+'/process_image/',\r\n DOWNLOAD_FILES:MODEL_DOMIN+'/download-file/',\r\n GET_IMAGE:MODEL_DOMIN+'/get_image/:id',\r\n GET_COLLECTIONS:DOMAIN+'/ai/tasking-collection-all/',\r\n GET_SCENE_IDS:DOMAIN+'/ai/product-ids/',\r\n GET_PRODUCT_PARAMS:DOMAIN+'/ai/tasking-collection/',\r\n GET_ARCHIVE_CATALOG:DOMAIN+'/ai/archive-catalog/',\r\n PLACE_ORDER:DOMAIN+'/ai/order/',\r\n GET_CREDIT_UP42:DOMAIN+'/ai/credit/',\r\n GET_CREDIT_STRIPE:DOMAIN+'/stripe/credit/',\r\n GET_PLANS:DOMAIN+'/stripe/plan/',\r\n STRIPE_CHECKOUT:DOMAIN+'/stripe/checkout/',\r\n GET_ASSET:DOMAIN+'/ai/asset/',\r\n DOWNLOAD_ASSET:DOMAIN+'/ai/download-asset/',\r\n UPDATE_TAGS:DOMAIN+'/ai/update-tags/',\r\n GET_ORDER:DOMAIN+'/ai/all-order/',\r\n ESTIMATE_ORDER:DOMAIN+'/ai/estimate/',\r\n STRIPE_PAYMENT_INTENT:DOMAIN+'/stripe/payment-intent/',\r\n STRIPE_PAYMENT_SUCCESS:DOMAIN+'/stripe/success/',\r\n STRIPE_SINGLE_PRODUCT_INFO:DOMAIN+'/stripe/product-info',\r\n PLACE_FOOTPRINT:DOMAIN+'/ai/footprint/',\r\n}\r\n\r\nexport default APIs;","import axios from 'axios';\r\nimport * as actionTypes from './actionTypes';\r\nimport APIs from '../../Api'\r\n\r\n\r\n\r\nexport const analyzeOrderLoader = (loderState) => {\r\n return {\r\n type: actionTypes.ANALYZE_ORDER_LODEAR,\r\n analyseLoader:loderState\r\n }\r\n}\r\n\r\nexport const analyzeProjectSignal = (status) => {\r\n return {\r\n type: actionTypes.ANALYZE_PROJECT_SIGNAL,\r\n status:status\r\n }\r\n}\r\n\r\nexport const analyzeProjectPopUpSignal = (popup_status) => {\r\n return {\r\n type: actionTypes.ANALYZE_POPUP_SHOW_SIGNAL,\r\n popup_status:popup_status\r\n }\r\n}\r\n\r\n\r\nexport const analyzeOrderError = (msg) => {\r\n return {\r\n type: actionTypes.ANALYZE_ORDER_ERROR,\r\n msg\r\n }\r\n}\r\n\r\nexport const analyzeOrder = (coordinates_) => {\r\n return {\r\n type: actionTypes.ANALYZE_ORDER,\r\n coordinates:coordinates_\r\n }\r\n}\r\n\r\nexport const authStart = () => {\r\n return {\r\n type: actionTypes.AUTH_START\r\n }\r\n}\r\n\r\nexport const authSuccess = token => {\r\n return {\r\n type: actionTypes.AUTH_SUCCESS,\r\n token: token\r\n }\r\n}\r\n\r\nexport const authFail = error => {\r\n return {\r\n type: actionTypes.AUTH_FAIL,\r\n error: error\r\n }\r\n}\r\n\r\nexport const logout = () => {\r\n localStorage.removeItem('user');\r\n localStorage.removeItem('expirationDate');\r\n localStorage.removeItem('email');\r\n return {\r\n type: actionTypes.AUTH_LOGOUT\r\n }\r\n}\r\n\r\nexport const checkAuthTimeout = expirationDate => {\r\n return dispatch => {\r\n setTimeout(() => {\r\n dispatch(logout());\r\n }, expirationDate * 1000)\r\n }\r\n}\r\n\r\nexport const authLogin = (email, password) => {\r\n return dispatch => {\r\n dispatch(authStart());\r\n axios.post(APIs.LOGIN_API, {\r\n email: email,\r\n password: password\r\n })\r\n .then(res => {\r\n const token = res.data.key;\r\n const expirationData = new Date(new Date().getTime() + 3600 * 1000)\r\n localStorage.setItem('token', token);\r\n localStorage.setItem('expirationDate', expirationData);\r\n localStorage.setItem('email', email);\r\n dispatch(authSuccess(token));\r\n dispatch(checkAuthTimeout(3600));\r\n })\r\n .catch(err => {\r\n dispatch(authFail(err))\r\n })\r\n }\r\n}\r\n\r\nexport const authSignup = (\r\n email, \r\n password1, \r\n password2, \r\n firstname,\r\n lastname,\r\n companyname,\r\n country\r\n ) => {\r\n return dispatch => {\r\n dispatch(authStart());\r\n axios.post(APIs.SIGNUP_API, {\r\n email: email,\r\n password1: password1,\r\n password2: password2,\r\n firstname: firstname,\r\n lastname: lastname,\r\n companyname: companyname,\r\n country: country\r\n })\r\n .then(res => {\r\n const token = res.data.key;\r\n const expirationData = new Date(new Date().getTime() + 3600 * 1000)\r\n localStorage.setItem('token', token);\r\n localStorage.setItem('expirationDate', expirationData);\r\n localStorage.setItem('email', email);\r\n dispatch(authSuccess(token));\r\n dispatch(checkAuthTimeout(3600));\r\n })\r\n .catch(err => {\r\n dispatch(authFail(err))\r\n })\r\n }\r\n}\r\n\r\nexport const authCheckState = () => {\r\n return dispatch => {\r\n const token = localStorage.getItem('token');\r\n if (token === undefined) {\r\n dispatch(logout());\r\n } else {\r\n const expirationData = new Date(localStorage.getItem('expirationDate'));\r\n if (expirationData <= new Date()) {\r\n dispatch(logout());\r\n } else {\r\n dispatch(authSuccess(token));\r\n dispatch(checkAuthTimeout( (expirationData.getTime() - new Date().getTime()) / 1000 ));\r\n }\r\n }\r\n }\r\n}\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Form, Input, Button, Spin, Card } from 'antd';\r\nimport { NavLink, Redirect } from 'react-router-dom';\r\nimport * as actions from '../store/actions/auth';\r\nimport logo from '../images/logo.png';\r\n\r\n\r\n\r\nclass Login extends React.Component {\r\n render () {\r\n let errorMessage = null;\r\n if (this.props.error) {\r\n errorMessage = (\r\n

{this.props.error.message}

\r\n );\r\n }\r\n\r\n const onFinish = (values) => {\r\n this.props.onAuth(values.email, values.password);\r\n this.props.history.push('/');\r\n };\r\n \r\n const onFinishFailed = (errorInfo) => {\r\n console.log('Failed:', errorInfo);\r\n };\r\n\r\n return (\r\n this.props.isAuthenticated ?\r\n\r\n \r\n\r\n : \r\n\r\n
\r\n {errorMessage}\r\n {\r\n this.props.loading ?\r\n \r\n \r\n\r\n :\r\n \r\n \r\n\r\n {/* */}\r\n \"main\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Forgot Password?\r\n
\r\n
\r\n \r\n
\r\n
\r\n Sign up\r\n
\r\n \r\n
\r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n loading: state.loading,\r\n error: state.error\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n onAuth: (email, password) => dispatch(actions.authLogin(email, password))\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Login);","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/logo-green.e2968402.png\";","import React from 'react';\r\nimport { NavLink } from 'react-router-dom';\r\nimport * as actions from '../store/actions/auth';\r\nimport { connect } from 'react-redux';\r\nimport logo from '../images/logo-green.png';\r\nimport { Form, Input, Button, Card, Row, Col, Select, } from 'antd';\r\n\r\nconst { Option } = Select;\r\n\r\nclass Signup extends React.Component {\r\n\r\n render () {\r\n\r\n const onFinish = (values) => {\r\n this.props.onAuth(\r\n values.email,\r\n values.password,\r\n values.confirm,\r\n values.firstname,\r\n values.lastname,\r\n values.companyname,\r\n values.country\r\n );\r\n\r\n this.props.history.push('/');\r\n console.log('Received values of form: ', values);\r\n\r\n };\r\n\r\n return (\r\n
\r\n \"side\r\n \r\n \r\n \r\n \r\n {/* \r\n \r\n */}\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n ({\r\n validator(rule, value) {\r\n if (!value || getFieldValue('password') === value) {\r\n return Promise.resolve();\r\n }\r\n \r\n return Promise.reject('The two passwords that you entered do not match!');\r\n },\r\n }),\r\n ]}\r\n >\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n option.children.toLowerCase().indexOf(input.toLowerCase()) >= 0\r\n }\r\n block\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n

By continuing, you agree to Farmin's terms of use and privacy policy.

\r\n\r\n \r\n \r\n
\r\n
\r\n Login\r\n
\r\n \r\n
\r\n
\r\n );\r\n } \r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n loading: state.loading,\r\n error: state.error\r\n }\r\n }\r\n \r\n const mapDispatchToProps = dispatch => {\r\n return {\r\n onAuth: (\r\n email, password, confirm, firstname, lastname, companyname, country\r\n ) => dispatch(actions.authSignup(email, password, confirm, firstname, lastname, companyname, country))\r\n }\r\n }\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Signup);\r\n","export const REACT_APP_TOKEN = 'pk.eyJ1IjoiaGFzc2FubXMiLCJhIjoiY2tna2ptZXUxMDNpYTJ3dGh6dXJrb3UzdSJ9.J-j8CwPP61PAxye6yCMm2A';\r\nexport const SECRET_TOKEN = 'sk.eyJ1IjoiaGFzc2FubXMiLCJhIjoiY2xwMTE4dmM0MGYxejJqcnB5cDVidHdicyJ9.UzVDHC50Cyth2I3-XUhnbA';\r\nexport const MAP_BOX_TOKEN = 'sk.eyJ1IjoiaGFzc2FubXMiLCJhIjoiY2xwMTE4dmM0MGYxejJqcnB5cDVidHdicyJ9.UzVDHC50Cyth2I3-XUhnbA'\r\n\r\n","import React, { useState, useRef, useCallback } from 'react';\r\nimport MapGL, { GeolocateControl, FullscreenControl, NavigationControl, ScaleControl } from 'react-map-gl';\r\nimport LayersControl from './Layers-control';\r\nimport * as config from '../config';\r\nimport 'mapbox-gl/dist/mapbox-gl.css';\r\nimport \"react-map-gl-geocoder/dist/mapbox-gl-geocoder.css\";\r\nimport Geocoder from 'react-map-gl-geocoder'\r\nimport { Layout, Menu, } from 'antd';\r\n\r\nconst { Header } = Layout;\r\n\r\nconst TOKEN = config.REACT_APP_TOKEN\r\n\r\nconst geolocateStyle = {\r\n position: 'absolute',\r\n top: 50,\r\n left: 15,\r\n padding: '10px'\r\n};\r\n\r\nconst fullscreenControlStyle = {\r\n position: 'absolute',\r\n top: 90,\r\n left: 15,\r\n padding: '10px'\r\n};\r\n\r\nconst navStyle = {\r\n position: 'absolute',\r\n top: 130,\r\n left: 15,\r\n padding: '10px'\r\n};\r\n\r\nconst layersStyle = {\r\n position: 'absolute',\r\n top: 230,\r\n left: 15,\r\n padding: '10px'\r\n};\r\n\r\nconst scaleControlStyle = {\r\n position: 'absolute',\r\n bottom: 36,\r\n left: 15,\r\n padding: '10px'\r\n};\r\n\r\nconst Explore = (props) => {\r\n \r\n const [viewport, setViewport] = useState({\r\n width: \"100%\",\r\n height: \"90vh\",\r\n latitude: 24.40029,\r\n longitude: 54.55253,\r\n zoom: 16,\r\n });\r\n\r\n const togglableLyrs = [\r\n {\r\n id:\"adm-q4-final-tiles-43-detect6-aajucn\",\r\n name:\"Buildings\",\r\n color:\"#ef1ae1\"\r\n },\r\n {\r\n id:\"image-stritched-detectobject2-1fxine\",\r\n name:\"Cars\",\r\n color:\"#fa1493\"\r\n },\r\n {\r\n id:\"khalifa-roads-cgey9u\",\r\n name:\"Roads\",\r\n color:\"#cecfce\"\r\n },\r\n {\r\n id:\"kc-ndvi-rendered-vector-7tyx47\",\r\n name:\"Vegetation\",\r\n color:\"#46e637\"\r\n },\r\n {\r\n id:\"undeveloped-areas-93jcpq\",\r\n name:\"Undeveloped areas\",\r\n color:\"#f2f1ee\"\r\n },\r\n {\r\n id:\"before_change-detection_16-11-3h0ohi\",\r\n name:\"detection\",\r\n color:\"#000\"\r\n }\r\n ];\r\n\r\n const mapRef = useRef();\r\n\r\n const handleViewportChange = useCallback(\r\n (newViewport) => setViewport(newViewport),\r\n []\r\n );\r\n\r\n // if you are happy with Geocoder default settings, you can just use handleViewportChange directly\r\n const handleGeocoderViewportChange = useCallback(\r\n (newViewport) => {\r\n const geocoderDefaultOverrides = { transitionDuration: 1000 };\r\n\r\n return handleViewportChange({\r\n ...newViewport,\r\n ...geocoderDefaultOverrides\r\n });\r\n },\r\n [handleViewportChange]\r\n );\r\n\r\n return (\r\n
\r\n \r\n \r\n\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n 45\r\n Extension\r\n \r\n \r\n 30\r\n New House\r\n \r\n \r\n 11\r\n Removed\r\n \r\n \r\n 60\r\n Cars\r\n \r\n \r\n
\r\n
\r\n\r\n\r\n )\r\n}\r\n\r\nexport default Explore;\r\n","import {RENDER_STATE} from 'react-map-gl-draw';\r\n\r\nexport function getEditHandleStyle({feature, state}) {\r\n switch (state) {\r\n case RENDER_STATE.SELECTED:\r\n case RENDER_STATE.HOVERED:\r\n case RENDER_STATE.UNCOMMITTED:\r\n return {\r\n fill: 'rgb(251, 176, 59)',\r\n fillOpacity: 1,\r\n stroke: 'rgb(255, 255, 255)',\r\n strokeWidth: 2,\r\n r: 7\r\n };\r\n\r\n default:\r\n return {\r\n fill: 'rgb(251, 176, 59)',\r\n fillOpacity: 1,\r\n stroke: 'rgb(255, 255, 255)',\r\n strokeWidth: 2,\r\n r: 5\r\n };\r\n }\r\n}\r\n\r\nexport function getFeatureStyle({feature, index, state}) {\r\n switch (state) {\r\n case RENDER_STATE.SELECTED:\r\n case RENDER_STATE.HOVERED:\r\n case RENDER_STATE.UNCOMMITTED:\r\n case RENDER_STATE.CLOSING:\r\n return {\r\n stroke: 'rgb(251, 176, 59)',\r\n strokeWidth: 2,\r\n fill: 'rgb(251, 176, 59)',\r\n fillOpacity: 0.3,\r\n strokeDasharray: '4,2'\r\n };\r\n\r\n default:\r\n return {\r\n stroke: 'rgb(60, 178, 208)',\r\n strokeWidth: 2,\r\n fill: 'rgb(60, 178, 208)',\r\n fillOpacity: 0.1\r\n };\r\n }\r\n}","export default __webpack_public_path__ + \"static/media/download-button.83ea55c4.svg\";","import React, { useState, useEffect } from 'react';\r\nimport axios from 'axios';\r\nimport downloadIcon from '../images/download-button.svg';\r\nimport \"../styles/DataExtractionForm.css\";\r\nimport APIs from '../Api';\r\n\r\nfunction DataExtractionForm({ extent, drawPolygonHandler, isVisible, processTarget, jobsList, submitHandler, orderClickHandler}) {\r\n \r\n const [isDrawing, setIsDrawing] = useState(false);\r\n\r\n const submitForm = () => {\r\n const token = localStorage.getItem(\"token\");\r\n axios.post(APIs.GET_JOB_LIST, {\r\n extent: extent,\r\n process_target: processTarget,\r\n token: token\r\n })\r\n .then(res => {\r\n submitHandler();\r\n })\r\n .catch((err) => console.log(err))\r\n }\r\n\r\n const drawMode = () => {\r\n setIsDrawing(true);\r\n drawPolygonHandler();\r\n }\r\n\r\n useEffect(() => {\r\n setIsDrawing(false);\r\n }, [extent]);\r\n\r\n return (\r\n <>\r\n {\r\n isVisible &&\r\n
\r\n
\r\n

Detect {processTarget}

\r\n \r\n {\r\n jobsList && jobsList.length == 0 &&\r\n

Select an Area of Interest and Create your first Data Extraction Job.

\r\n }\r\n \r\n
\r\n {\r\n jobsList && jobsList.length != 0 &&\r\n
\r\n

Previous Detection Jobs

\r\n
    \r\n {\r\n jobsList.map((job) => {\r\n return (\r\n job.process_target == processTarget &&\r\n
  • \r\n

    orderClickHandler(job.mb_tileset_id, 'vector')}>\r\n {`Order${job.id} of ${job.date}-${job.status}`}\r\n

    \r\n \r\n \r\n \r\n \r\n
  • \r\n )\r\n })\r\n }\r\n
\r\n
\r\n }\r\n
\r\n }\r\n \r\n );\r\n}\r\n\r\nexport default DataExtractionForm;\r\n","import React, { useState } from 'react';\r\nimport axios from 'axios';\r\nimport \"../styles/DataSettingForm.css\";\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport { Radio, RadioGroup, FormControl, FormControlLabel } from '@material-ui/core';\r\nimport APIs from '../Api';\r\n\r\n\r\nfunction DataSettingsForm({ flagIn, flagOut, extent, isVisible, deleteData, modelClose,changePinType,resetPins,enabelStartProcess }) {\r\n\r\n const [imageDownlaodProcess, setImageDownlaodProcess] = useState(false)\r\n const [error, setError] = useState('')\r\n const [selectedOption, setSelectedOption] = useState('green');\r\n const [downloadProcess,setdownloadProcess] = useState(false)\r\n const [downloadFileSpinner,setDownloadFileSpinner] = useState(false)\r\n const [uuid,setUuid] = useState('')\r\n // const [opacity, setOpacity] = useState(0.6);\r\n\r\n const handleChange = (event) => {\r\n setSelectedOption(event.target.value);\r\n changePinType(event.target.value)\r\n };\r\n\r\n\r\n const downloadCreatedSagment = () => {\r\n setImageDownlaodProcess(true)\r\n let flagInOutData = ''\r\n if (flagOut.length > 0) {\r\n flagInOutData = JSON.stringify(flagOut.map(item => [item.longitude, item.latitude]))\r\n }\r\n let flagInData = JSON.stringify(flagIn.map(item => [item.longitude, item.latitude]))\r\n let drawerBbox = extent\r\n const uuid_u = generateUniqueCode()\r\n setUuid(uuid_u)\r\n const data = {\r\n \"path_to_tiff\": `satellite${uuid_u}.tif`,\r\n \"bbox\": drawerBbox,\r\n \"flag_in\": flagInData,\r\n \"flag_out\": flagInOutData,\r\n 'uuid':uuid_u\r\n };\r\n \r\n axios.post(APIs.PROCESS_IMAGE, data)\r\n .then(res => {\r\n if (res.status == 200) {\r\n setImageDownlaodProcess(false)\r\n setdownloadProcess(true)\r\n }\r\n else {\r\n console.log(res,'res PROCESS_IMAGE');\r\n setError('please try again later!')\r\n }\r\n }).catch((err) => {\r\n console.log(err,'err PROCESS_IMAGE');\r\n setImageDownlaodProcess(false)\r\n setError('please try again later!')\r\n })\r\n };\r\n\r\n const fileDownloader = (filePath) => {\r\n try {\r\n filePath.map((data,index)=>{\r\n fetch(data.path, { method: 'GET' }).then(response => {\r\n if (!response.ok) {\r\n throw new Error('Network response was not ok');\r\n }\r\n return response.blob();\r\n }).then(blob => {\r\n const url = window.URL.createObjectURL(blob);\r\n const a = document.createElement('a');\r\n a.href = url;\r\n a.download = data.name;\r\n document.body.appendChild(a);\r\n a.click();\r\n window.URL.revokeObjectURL(url);\r\n setImageDownlaodProcess(false)\r\n \r\n }).catch((error) => {\r\n console.log(error,\" fetch fileDownloader\");\r\n setImageDownlaodProcess(false)\r\n })\r\n })\r\n } catch (error) {\r\n console.log(error,\"fileDownloader\");\r\n }\r\n deleteData()\r\n modelClose()\r\n resetPins()\r\n };\r\n\r\n const restPinHandler = () =>{\r\n resetPins()\r\n }\r\n\r\n const downloadFiles = () =>{\r\n setDownloadFileSpinner(true)\r\n const data = {\r\n 'uuid':uuid\r\n };\r\n axios.post(APIs.DOWNLOAD_FILES,data)\r\n .then(res => {\r\n if (res.status == 200) {\r\n const fileData = res.data\r\n if (fileData.data.length > 0){\r\n const filePath = []\r\n fileData.data.map((item,index)=>{\r\n const fileUrl = `${APIs.MODEL_DOMIN}/${item}`\r\n const parts = item.split('\\\\');\r\n const name = parts[parts.length - 1];\r\n filePath.push({name:name,path:fileUrl})\r\n })\r\n console.log(filePath);\r\n fileDownloader(filePath)\r\n setDownloadFileSpinner(false)\r\n setImageDownlaodProcess(false)\r\n setdownloadProcess(false)\r\n setDownloadFileSpinner(false)\r\n setUuid(\"\")\r\n } else{\r\n setTimeout(() => {\r\n downloadFiles()\r\n }, 30000);\r\n }\r\n }\r\n else {\r\n setDownloadFileSpinner(false)\r\n setImageDownlaodProcess(false)\r\n setdownloadProcess(false)\r\n setDownloadFileSpinner(false)\r\n setUuid(\"\")\r\n console.log(res,'error:- res downloadFiles');\r\n }\r\n }).catch((err) => {\r\n console.log(err,'error:- err downloadFiles');\r\n setDownloadFileSpinner(false)\r\n setImageDownlaodProcess(false)\r\n setdownloadProcess(false)\r\n setDownloadFileSpinner(false)\r\n setUuid(\"\")\r\n })\r\n }\r\n\r\n const generateUniqueCode = () => {\r\n const timestamp = new Date().getTime().toString(36);\r\n const randomString = Math.random().toString(36).substr(2, 6);\r\n return timestamp + randomString;\r\n };\r\n \r\n return (\r\n <>\r\n {\r\n isVisible &&\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n }\r\n label=\"Foreground\"\r\n />\r\n }\r\n label=\"Background\"\r\n />\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n Foreground #:\r\n \r\n Background #:\r\n \r\n
\r\n\r\n
\r\n {\r\n imageDownlaodProcess ?\r\n \r\n \r\n :\r\n \r\n }\r\n \r\n
\r\n { downloadProcess && \r\n
\r\n \r\n
\r\n }\r\n
\r\n

Instructions *

\r\n \r\n Firstly, you have to select the marker option from the bar. It turns green. Now you can pin the areas. You can change red locator for background from the side modal. To select the area , you can choose polygon after disabling the marker option. Now you can draw over the area to select it.\r\n \r\n
\r\n
\r\n }\r\n \r\n );\r\n}\r\n\r\nexport default DataSettingsForm;\r\n","export default __webpack_public_path__ + \"static/media/delete-button.212c8821.svg\";","import React, { useState } from 'react';\r\nimport axios from 'axios';\r\nimport deleteIcon from '../images/delete-button.svg';\r\nimport \"../styles/RasterUploadForm.css\";\r\nimport APIs from '../Api';\r\n\r\nfunction RastersUploadForm({ isVisible, rastersList, submitHandler, rasterClickHandler}) {\r\n const [selectedFile, setSelectedFile] = useState(null);\r\n const [uploading, setUploading] = useState(false);\r\n\r\n const handleUpload = (e) => {\r\n e.preventDefault();\r\n const token = localStorage.getItem(\"token\");\r\n const formData = new FormData();\r\n formData.append('raster_file', selectedFile);\r\n formData.append('token', token);\r\n setUploading(true);\r\n axios.post(APIs.RASTER_LIST, formData)\r\n .then(res => {\r\n submitHandler();\r\n setSelectedFile(null);\r\n })\r\n .catch((err) => console.log(err))\r\n .finally(() => setUploading(false));\r\n }\r\n\r\n const deleteRaster = (raster) => {\r\n var result = window.confirm(`This action will delete ${raster.file_name}, are you sure ?`);\r\n if (result) {\r\n axios.delete(APIs.RASTER_LIST+raster.id)\r\n .then(res => {\r\n submitHandler();\r\n })\r\n .catch((err) => console.log(err))\r\n }\r\n }\r\n\r\n const handleFileChange = (e) => {\r\n setSelectedFile(e.target.files[0]);\r\n };\r\n\r\n const handleCancel = () => {\r\n setSelectedFile(null);\r\n };\r\n\r\n return (\r\n <>\r\n {\r\n isVisible &&\r\n
\r\n
\r\n

Upload a new satellite image

\r\n
\r\n {selectedFile ? (\r\n
\r\n {selectedFile.name}\r\n \r\n \r\n
\r\n ) : (\r\n
\r\n Select a file\r\n \r\n \r\n
\r\n )}\r\n
\r\n {\r\n rastersList && rastersList.length == 0 &&\r\n

Upload your own geotiff raster file to apply detection on it.

\r\n }\r\n
\r\n {\r\n rastersList && rastersList.length != 0 &&\r\n
\r\n

Uploaded images

\r\n
    \r\n {\r\n rastersList.map((raster) => {\r\n return (\r\n
  • \r\n

    rasterClickHandler(raster.mb_tileset_id, \"raster\")}>\r\n {`${raster.date} - ${raster.file_name} (${raster.status})`}\r\n

    \r\n \r\n
  • \r\n )\r\n })\r\n }\r\n
\r\n
\r\n }\r\n
\r\n }\r\n \r\n );\r\n}\r\n\r\nexport default RastersUploadForm;\r\n","import * as React from 'react';\r\n\r\nconst ICON = `M20.2,15.7L20.2,15.7c1.1-1.6,1.8-3.6,1.8-5.7c0-5.6-4.5-10-10-10S2,4.5,2,10c0,2,0.6,3.9,1.6,5.4c0,0.1,0.1,0.2,0.2,0.3\r\n c0,0,0.1,0.1,0.1,0.2c0.2,0.3,0.4,0.6,0.7,0.9c2.6,3.1,7.4,7.6,7.4,7.6s4.8-4.5,7.4-7.5c0.2-0.3,0.5-0.6,0.7-0.9\r\n C20.1,15.8,20.2,15.8,20.2,15.7z`;\r\n\r\nconst pinStyle = {\r\n cursor: 'pointer',\r\n fill: '#d00',\r\n stroke: 'none'\r\n};\r\n\r\nfunction RedPin({size = 20}) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default RedPin;","import * as React from 'react';\r\n\r\nconst ICON = `M20.2,15.7L20.2,15.7c1.1-1.6,1.8-3.6,1.8-5.7c0-5.6-4.5-10-10-10S2,4.5,2,10c0,2,0.6,3.9,1.6,5.4c0,0.1,0.1,0.2,0.2,0.3\r\n c0,0,0.1,0.1,0.1,0.2c0.2,0.3,0.4,0.6,0.7,0.9c2.6,3.1,7.4,7.6,7.4,7.6s4.8-4.5,7.4-7.5c0.2-0.3,0.5-0.6,0.7-0.9\r\n C20.1,15.8,20.2,15.8,20.2,15.7z`;\r\n\r\nconst pinStyle = {\r\n cursor: 'pointer',\r\n fill: '#097969',\r\n stroke: 'none'\r\n};\r\n\r\nfunction GreenPin({size = 20}) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default GreenPin;","import * as React from 'react';\r\nimport { Component } from 'react';\r\nimport MapGL, { Source, Layer, Marker} from 'react-map-gl';\r\nimport { Editor, DrawPolygonMode, EditingMode } from 'react-map-gl-draw';\r\nimport * as config from '../config';\r\nimport { getFeatureStyle, getEditHandleStyle } from './DrawStyle';\r\nimport axios from 'axios';\r\nimport { Image } from 'antd'\r\nimport ApartmentIcon from '@material-ui/icons/Apartment';\r\nimport SatelliteIcon from '@material-ui/icons/Satellite';\r\nimport DriveEtaIcon from '@material-ui/icons/DriveEta';\r\nimport OpacityIcon from '@material-ui/icons/Opacity';\r\nimport LocalDrinkIcon from '@material-ui/icons/LocalDrink';\r\nimport SettingsIcon from '@material-ui/icons/Settings';\r\nimport RemoveRedEyeIcon from '@material-ui/icons/RemoveRedEye';\r\nimport RoomIcon from '@material-ui/icons/Room';\r\nimport DataExtractionForm from \"./DataExtractionForm\";\r\nimport DataSettingsForm from \"./DataSettingsForm\";\r\nimport RastersUploadForm from \"./RastersUploadForm\";\r\nimport RedPin from './RedPin';\r\nimport GreenPin from './GreenPin';\r\nimport APIs from '../Api';\r\n\r\n\r\nconst TOKEN = config.REACT_APP_TOKEN\r\n\r\nexport default class Draw extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.newMapRef = React.createRef();\r\n this._editorRef = null;\r\n this.state = {\r\n viewport: {\r\n latitude: -6.64205545,\r\n longitude: 156.85043421,\r\n zoom: 9\r\n },\r\n features: [],\r\n aoiExtent: '',\r\n mode: null,\r\n selectedFeatureIndex: null,\r\n hideCars: true,\r\n carsFilename: null,\r\n processingBuildings: null,\r\n processingCars: null,\r\n processingSettings: null,\r\n hideShips: true,\r\n shipsFilename: null,\r\n processingShips: null,\r\n hideSpills: true,\r\n spillsFilename: null,\r\n processingSpills: null,\r\n processingImage: null,\r\n showDataExtractionForm: false,\r\n showDataSettingsForm: true,\r\n showRasterForm: false,\r\n process_target: \"\",\r\n jobsList: [],\r\n current_order: null,\r\n previous_tileset_id: null,\r\n mapData: {},\r\n drawerBbox: [],\r\n errorMessage: '',\r\n redPinArea: [],\r\n greenPinArea: [],\r\n pinType: 'green',\r\n maskOpacity:1,\r\n showSegmentLayer:false,\r\n enabelStartProcess:true,\r\n showMarker: false,\r\n layerData:[],\r\n layerOpacity:localStorage.getItem('control')|| 1,\r\n };\r\n this.getTileSets = this.getTileSets.bind(this)\r\n \r\n }\r\n\r\n showProcessingForm = (process_target) => {\r\n const showDataExtractionForm = !this.state.showDataExtractionForm;\r\n this.setState({\r\n process_target: process_target,\r\n showDataExtractionForm: showDataExtractionForm,\r\n });\r\n }\r\n\r\n showSettingForm = () => {\r\n const showDataSettingsForm = !this.state.showDataSettingsForm;\r\n this.setState({\r\n showDataSettingsForm: showDataSettingsForm,\r\n });\r\n }\r\n\r\n showMarker = () => {\r\n const showMarkerToggle = !this.state.showMarker;\r\n \r\n if (showMarkerToggle) {\r\n setTimeout(() => {\r\n this.setState({\r\n showMarker: showMarkerToggle,\r\n });\r\n }, 750);\r\n } else {\r\n this.setState({\r\n showMarker: showMarkerToggle,\r\n });\r\n }\r\n }\r\n \r\n showRasterFormHandler = () => {\r\n const showRasterForm = !this.state.showRasterForm;\r\n this.setState({\r\n showRasterForm: showRasterForm,\r\n });\r\n }\r\n\r\n processShips = () => {\r\n this.setState({ processingShips: true })\r\n\r\n var dataUrl = this.mapInstance.getCanvas().toDataURL()\r\n\r\n axios.post('http://localhost:8000/ships/', {\r\n dataUrl\r\n })\r\n .then(res => {\r\n alert(\"Ships Processing Successful\")\r\n this.setState({ processingShips: false })\r\n this.setState({ shipsFilename: res.data })\r\n this.setState({ hideShips: false })\r\n })\r\n .catch((err) => console.log(err))\r\n }\r\n\r\n processSpills = () => {\r\n this.setState({ processingSpills: true })\r\n\r\n var dataUrl = this.mapInstance.getCanvas().toDataURL()\r\n\r\n axios.post('http://localhost:8000/spills/', {\r\n dataUrl\r\n })\r\n .then(res => {\r\n alert(\"Spills Processing Successful\")\r\n this.setState({ processingSpills: false })\r\n this.setState({ spillsFilename: res.data })\r\n this.setState({ hideSpills: false })\r\n })\r\n .catch((err) => console.log(err))\r\n\r\n }\r\n\r\n _updateViewport = viewport => {\r\n let updateData = this.mapData = {}\r\n if (this.newMapRef.current) {\r\n const bounds = this.newMapRef.current.target.getBounds();\r\n updateData.Bbox = bounds.toArray()\r\n }\r\n this.setState({ viewport });\r\n updateData.longLat = { latitude: viewport.latitude, longitude: viewport.longitude }\r\n this.setState({ mapData: updateData })\r\n };\r\n\r\n _onSelect = options => {\r\n this.setState({ selectedFeatureIndex: options && options.selectedFeatureIndex });\r\n };\r\n\r\n _onDelete = () => {\r\n const selectedIndex = this.state.selectedFeatureIndex || 0;\r\n if (selectedIndex !== null && selectedIndex >= 0) {\r\n this._editorRef.deleteFeatures(selectedIndex);\r\n }\r\n };\r\n\r\n _onUpdate = ({ data, editType }) => {\r\n if (editType === 'addFeature') {\r\n const extent = data[0].geometry.coordinates[0].reduce(\r\n (acc, [x, y]) => {\r\n return {\r\n xmin: Math.min(acc.xmin, x),\r\n ymin: Math.min(acc.ymin, y),\r\n xmax: Math.max(acc.xmax, x),\r\n ymax: Math.max(acc.ymax, y),\r\n };\r\n },\r\n {\r\n xmin: Infinity,\r\n ymin: Infinity,\r\n xmax: -Infinity,\r\n ymax: -Infinity,\r\n }\r\n );\r\n\r\n this.setState({\r\n mode: new EditingMode(),\r\n features: data,\r\n aoiExtent: `${extent.xmin.toFixed(4)} ${extent.ymin.toFixed(4)} ${extent.xmax.toFixed(4)} ${extent.ymax.toFixed(4)}`,\r\n drawerBbox: [parseFloat(extent.xmin.toFixed(4)), parseFloat(extent.ymin.toFixed(4)), parseFloat(extent.xmax.toFixed(4)), parseFloat(extent.ymax.toFixed(4))],\r\n enabelStartProcess:false,\r\n });\r\n\r\n }\r\n };\r\n\r\n getJobsList = () => {\r\n const token = localStorage.getItem(\"token\");\r\n axios.get(APIs.GET_JOB_LIST, {\r\n params: {\r\n token: token\r\n }\r\n })\r\n .then(res => {\r\n this.setState({\r\n jobsList: res.data.orders\r\n })\r\n }).catch((err) => console.log(err))\r\n }\r\n\r\n getRastersList = () => {\r\n const token = localStorage.getItem(\"token\");\r\n axios.get(APIs.RASTER_LIST, {\r\n params: {\r\n token: token\r\n }\r\n })\r\n .then(res => {\r\n this.setState({\r\n rastersList: res.data.rasters\r\n })\r\n }).catch((err) => console.log(err))\r\n }\r\n\r\n showResultOnMap = (mb_tileset_id, type) => {\r\n const { previous_tileset_id } = this.state;\r\n\r\n // Remove previous Source and Layer components from map\r\n if (previous_tileset_id) {\r\n this.mapRef.getMap().removeLayer(previous_tileset_id);\r\n this.mapRef.getMap().removeSource(previous_tileset_id);\r\n }\r\n\r\n // Add new Source and Layer components to map\r\n this.mapRef.getMap().addSource(mb_tileset_id, {\r\n type: type,\r\n url: `mapbox://${mb_tileset_id}`,\r\n });\r\n\r\n if (type == \"vector\") {\r\n if (this.state.process_target == \"cars\") {\r\n this.mapRef.getMap().addLayer({\r\n id: mb_tileset_id,\r\n type: 'line',\r\n source: mb_tileset_id,\r\n 'source-layer': mb_tileset_id.split('.')[1],\r\n paint: {\r\n 'line-color': '#627BC1',\r\n 'line-width': 3,\r\n },\r\n });\r\n } else {\r\n this.mapRef.getMap().addLayer({\r\n id: mb_tileset_id,\r\n type: 'fill',\r\n source: mb_tileset_id,\r\n 'source-layer': mb_tileset_id.split('.')[1],\r\n paint: {\r\n 'fill-color': '#627BC1',\r\n 'fill-opacity': 1,\r\n },\r\n });\r\n }\r\n\r\n } else {\r\n this.mapRef.getMap().addLayer({\r\n id: mb_tileset_id,\r\n type: 'raster',\r\n source: mb_tileset_id,\r\n 'source-layer': mb_tileset_id.split('.')[1],\r\n 'minzoom': 0,\r\n 'maxzoom': 22\r\n });\r\n }\r\n\r\n this.setState({\r\n previous_tileset_id: mb_tileset_id,\r\n });\r\n\r\n }\r\n\r\n drawPolygon = () => {\r\n if (this._editorRef && this.state.features.length > 0) {\r\n this._editorRef.deleteFeatures(0);\r\n }\r\n return new DrawPolygonMode();\r\n };\r\n\r\n drawPolygonHandler = () => {\r\n this.setState({ mode: this.drawPolygon() })\r\n }\r\n\r\n _renderDrawTools = () => {\r\n // copy from mapbox\r\n return (\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n );\r\n };\r\n\r\n handleMapLoad = (map) => {\r\n if (map) {\r\n this.newMapRef.current = map;\r\n }\r\n };\r\n\r\n pins = () => ( \r\n <> \r\n {\r\n this.state.redPinArea && this.state.redPinArea.map((city, index) => (\r\n \r\n \r\n \r\n ))\r\n }\r\n { \r\n this.state.greenPinArea && this.state.greenPinArea.map((city, index) => (\r\n \r\n \r\n \r\n ))\r\n }\r\n \r\n \r\n )\r\n\r\n removeData = () => {\r\n this.setState({ selectedFeatureIndex: null })\r\n }\r\n\r\n onClick = (event => {\r\n if(this.state.showMarker){\r\n let pinType = this.state.pinType\r\n if (pinType == 'red') {\r\n let allRedPinArea = this.state.redPinArea\r\n let newData = { \"longitude\": event.lngLat[0], \"latitude\": event.lngLat[1] }\r\n let updatedData = [...allRedPinArea, newData]\r\n this.setState({ redPinArea: updatedData })\r\n } else {\r\n let allGreenPinArea = this.state.greenPinArea\r\n let newData = { \"longitude\": event.lngLat[0], \"latitude\": event.lngLat[1] }\r\n let updatedData = [...allGreenPinArea, newData]\r\n this.setState({ greenPinArea: updatedData })\r\n }\r\n }\r\n\r\n const { features } = event;\r\n if (features && features.length > 0) {\r\n const clickedLayerId = features[0].layer.id;\r\n \r\n // Assuming your layer IDs follow the pattern 'my-tileset-layer-index'\r\n const index = clickedLayerId.split('-').pop();\r\n \r\n // Hide the layer associated with the clicked layer\r\n const hiddenLayerId = `my-tileset-layer-${index}`;\r\n const { mapRef } = this;\r\n if (mapRef) {\r\n mapRef.getMap().removeLayer(hiddenLayerId);\r\n \r\n // Remove the source associated with the clicked layer\r\n const hiddenSourceId = `my-tileset-source-${index}`;\r\n mapRef.getMap().removeSource(hiddenSourceId);\r\n }\r\n }\r\n });\r\n\r\n changeGroundType = (type) =>{\r\n this.setState({pinType:type})\r\n }\r\n \r\n resetPins = () => {\r\n this.setState({greenPinArea:[],redPinArea:[]})\r\n }\r\n\r\n maskOpacityHandler = (value) => {\r\n this.setState({maskOpacity:value})\r\n }\r\n\r\n // segmentLayer = () =>{\r\n // let flagInData = this.state.greenPinArea.map(item => [item.longitude, item.latitude])\r\n // const greenGeoJson = {\r\n // type: 'FeatureCollection',\r\n // features: [\r\n // {\r\n // type: 'Feature',\r\n // properties: {},\r\n // geometry: {\r\n // type: 'Polygon',\r\n // coordinates: [\r\n // flagInData,\r\n // ],\r\n // },\r\n // },\r\n // ],\r\n // };\r\n\r\n // let flagOutData = this.state.redPinArea.map(item => [item.longitude, item.latitude])\r\n // const redGeoJson = {\r\n // type: 'FeatureCollection',\r\n // features: [\r\n // {\r\n // type: 'Feature',\r\n // properties: {},\r\n // geometry: {\r\n // type: 'Polygon',\r\n // coordinates: [\r\n // flagOutData,\r\n // ],\r\n // },\r\n // },\r\n // ],\r\n // };\r\n // return(\r\n // <>\r\n // { flagInData.length > 0 && \r\n // \r\n // \r\n // \r\n // }\r\n // { flagOutData.length > 0 && \r\n // \r\n // \r\n // \r\n // }\r\n // \r\n // )\r\n // }\r\n\r\n showSegmentLayerHanlder = ()=>{\r\n let showlayer = !this.state.showSegmentLayer\r\n this.setState({showSegmentLayer:showlayer})\r\n }\r\n\r\n showMarker = () => {\r\n const showMarkerToggle = !this.state.showMarker;\r\n \r\n if (showMarkerToggle) {\r\n setTimeout(() => {\r\n this.setState({\r\n showMarker: showMarkerToggle,\r\n });\r\n }, 650);\r\n } else {\r\n this.setState({\r\n showMarker: showMarkerToggle,\r\n });\r\n }\r\n }\r\n\r\n getTileSets = () => {\r\n let that = this\r\n const tilesetsUrl = `https://api.mapbox.com/tilesets/v1/hassanms?access_token=${config.MAP_BOX_TOKEN}`;\r\n axios.get(tilesetsUrl).then(function (response) {\r\n that.setState({layerData:response.data})\r\n\r\n }).catch(function (error) {\r\n console.error('Error:', error);\r\n })\r\n }\r\n\r\n mapLayer = () => ( this.state.layerData.map((item,index)=> (\r\n
\r\n \r\n \r\n
\r\n )\r\n )\r\n )\r\n\r\n componentDidMount() {\r\n this.mapInstance = this.mapRef.getMap()\r\n this.mapInstance = this.mapRef.getMap()\r\n this.getJobsList()\r\n this.getRastersList()\r\n this.getTileSets()\r\n\r\n }\r\n\r\n showLayerHandler = () =>{\r\n let layerControl = this.state.layerOpacity == 1?0:1\r\n this.setState({layerOpacity:layerControl})\r\n localStorage.setItem('control',layerControl)\r\n\r\n \r\n\r\n // const cityCoordinates_ = [\r\n // [\r\n // 156.85043421,\r\n // -6.64205545\r\n // ],\r\n // [\r\n // 156.72339512,\r\n // -6.64252252\r\n // ],\r\n // [\r\n // 156.72371461,\r\n // -6.76794685\r\n // ],\r\n // [\r\n // 156.72371505,\r\n // -6.7687042\r\n // ],\r\n // [\r\n // 156.72366721,\r\n // -6.89357034\r\n // ],\r\n // [\r\n // 156.7236653,\r\n // -6.89434197\r\n // ],\r\n // [\r\n // 156.72331275,\r\n // -7.00693435\r\n // ],\r\n // [\r\n // 156.85046159,\r\n // -7.00760819\r\n // ],\r\n // [\r\n // 156.85069051,\r\n // -6.89454749\r\n // ],\r\n // [\r\n // 156.85068952,\r\n // -6.89376488\r\n // ],\r\n // [\r\n // 156.85082327,\r\n // -6.76879598\r\n // ],\r\n // [\r\n // 156.85082085,\r\n // -6.76801586\r\n // ],\r\n // [\r\n // 156.85043421,\r\n // -6.64205545\r\n // ]\r\n // ]\r\n \r\n\r\n // const map = this.mapRef.getMap()\r\n\r\n // if (map) {\r\n // const imageUrl = 'https://search.21at.net/browser/index/pd/ndi/at21/bj2/2023/05/TRIPLESAT_3_PMS_20230503082337_00445BVI_010/TRIPLESAT_3_MS_20230503082337_00445BVI_010_browser.jpg'\r\n // map.addSource('image-source', {\r\n // type: 'image',\r\n // url: imageUrl,\r\n // coordinates: cityCoordinates,\r\n // });\r\n \r\n // map.addLayer({\r\n // id: 'image-layer',\r\n // type: 'raster',\r\n // source: 'image-source',\r\n // });\r\n \r\n\r\n // map.addLayer({\r\n // id: 'square-border',\r\n // type: 'line',\r\n // source: {\r\n // type: 'geojson',\r\n // data: {\r\n // type: 'Feature',\r\n // geometry: {\r\n // type: 'Polygon',\r\n // coordinates: [cityCoordinates_],\r\n // },\r\n // },\r\n // },\r\n // layout: {},\r\n // paint: {\r\n // 'line-color': '#FF0000',\r\n // 'line-width': 2,\r\n // },\r\n // });\r\n \r\n\r\n // for (const [index, coordinate] of cityCoordinates_.entries()) {\r\n // map.jumpTo({ center: coordinate, zoom: 9 });\r\n // }\r\n \r\n // }\r\n\r\n }\r\n \r\n render() {\r\n\r\n const {\r\n viewport,\r\n mode,\r\n hideCars,\r\n carsFilename,\r\n hideShips,\r\n shipsFilename,\r\n hideSpills,\r\n spillsFilename\r\n } = this.state;\r\n\r\n return (\r\n <>\r\n \r\n this.changeGroundType(type)}\r\n modelClose={this.showSettingForm}\r\n resetPins={this.resetPins}\r\n // opacitys={(value)=>this.maskOpacityHandler(value)}\r\n // showSegment={this.showSegmentLayerHanlder}\r\n enabelStartProcess={this.state.enabelStartProcess}\r\n />\r\n \r\n\r\n this.mapRef = map}\r\n {...viewport}\r\n width=\"100%\"\r\n height=\"100%\"\r\n mapStyle=\"mapbox://styles/hassanms/ckhakjywz52lh19of76vsm4wn\"\r\n mapboxApiAccessToken={TOKEN}\r\n onViewportChange={(viewport) => this._updateViewport(viewport)}\r\n preserveDrawingBuffer={true}\r\n onLoad={this.handleMapLoad}\r\n onClick={this.onClick}\r\n >\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n {this.mapLayer()}\r\n \r\n\r\n {!hideCars && }\r\n\r\n {!hideShips && }\r\n\r\n {!hideSpills && }\r\n\r\n (this._editorRef = _)}\r\n style={{ width: '100%', height: '100%' }}\r\n clickRadius={12}\r\n mode={mode}\r\n onSelect={this._onSelect}\r\n onUpdate={this._onUpdate}\r\n editHandleShape={'circle'}\r\n featureStyle={getFeatureStyle}\r\n features={this.features}\r\n editHandleStyle={getEditHandleStyle}\r\n />\r\n {this._renderDrawTools()}\r\n {this.pins()}\r\n \r\n \r\n );\r\n }\r\n\r\n}","import React from 'react';\r\nimport mapboxgl from 'mapbox-gl';\r\nimport * as config from '../config';\r\nimport MapboxCompare from 'mapbox-gl-compare';\r\nimport axios from 'axios';\r\nimport html2canvas from 'html2canvas';\r\nimport './SwipeStyle.css';\r\nimport { Slider, InputNumber, Row, Col, Button, Image } from 'antd';\r\n\r\nmapboxgl.accessToken = config.REACT_APP_TOKEN;\r\n\r\nconst mapContainer = {\r\n position: \"absolute\",\r\n top: 64,\r\n right: 0,\r\n left: 100,\r\n bottom: 0\r\n}\r\n\r\nconst map = {\r\n position: \"absolute\",\r\n top: 0,\r\n bottom: 0,\r\n width: \"100%\"\r\n}\r\n\r\nclass Swipe extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n lng: 5,\r\n lat: 34,\r\n zoom: 2,\r\n threshold: 255,\r\n hideEdge: true,\r\n edgeFilename: null,\r\n edgeProcessing: false,\r\n hideChange: true,\r\n changeFilename: null,\r\n changeProcessing: false,\r\n hideMask: true,\r\n maskFileName: null,\r\n maskProcessing: false,\r\n };\r\n }\r\n\r\n onChangeValue = value => {\r\n this.setState({\r\n threshold: value,\r\n });\r\n };\r\n\r\n updateHideChange = () => {\r\n this.setState({hideChange: false})\r\n this.setState({changeProcessing: false})\r\n }\r\n\r\n updateChangeFilename = () => {\r\n var hev = document.getElementById('changeFileName').value\r\n this.setState({changeFilename: hev})\r\n } \r\n \r\n updateHideEdge = () => {\r\n // var hev = document.getElementById('hideEdge').value\r\n // this.setState({hideEdge: hev})\r\n this.setState({hideEdge: false})\r\n this.setState({edgeProcessing: false})\r\n } \r\n\r\n updateFilename = () => {\r\n var hev = document.getElementById('fileName').value\r\n // this.state.edgeFilename = hev\r\n this.setState({edgeFilename: hev})\r\n }\r\n\r\n updateHideMask = () => {\r\n this.setState({hideMask: false})\r\n this.setState({maskProcessing: false})\r\n }\r\n\r\n updateMaskFilename = () => {\r\n var hev = document.getElementById('maskFileName').value\r\n this.setState({maskFilename: hev})\r\n } \r\n\r\n maskProcess = () => {\r\n this.setState({maskProcessing: true});\r\n\r\n html2canvas(document.getElementById('before')).then(function (canvas) { \r\n var beforeData = canvas.toDataURL()\r\n\r\n html2canvas(document.getElementById('after')).then(function (canvas) {\r\n var afterData = canvas.toDataURL()\r\n \r\n axios.post('http://localhost:8000/maskchange/', {\r\n beforeData, afterData\r\n })\r\n .then(res => {\r\n alert(\"Mask Change Detection Processing Successful\")\r\n\r\n var hideMask = document.getElementById('hideMask')\r\n hideMask.value = false\r\n var event = new MouseEvent('click', {\r\n 'view': window, \r\n 'bubbles': true, \r\n 'cancelable': false\r\n })\r\n hideMask.dispatchEvent(event)\r\n\r\n var fileName = document.getElementById('maskFileName')\r\n fileName.value = res.data\r\n fileName.dispatchEvent(event)\r\n })\r\n .catch((err) => console.log(err))\r\n })\r\n })\r\n }\r\n\r\n changeProcess = () => {\r\n this.setState({changeProcessing: true})\r\n\r\n html2canvas(document.getElementById('before')).then(function (canvas) { \r\n var beforeData = canvas.toDataURL()\r\n\r\n html2canvas(document.getElementById('after')).then(function (canvas) {\r\n var afterData = canvas.toDataURL()\r\n\r\n var threshold = document.getElementById('value').innerHTML\r\n \r\n axios.post('http://localhost:8000/change/', {\r\n beforeData, afterData, threshold\r\n })\r\n .then(res => {\r\n alert(\"Change Detection Processing Successful\")\r\n\r\n var hideChange = document.getElementById('hideChange')\r\n hideChange.value = false\r\n var event = new MouseEvent('click', {\r\n 'view': window, \r\n 'bubbles': true, \r\n 'cancelable': false\r\n })\r\n hideChange.dispatchEvent(event)\r\n\r\n var fileName = document.getElementById('changeFileName')\r\n fileName.value = res.data\r\n fileName.dispatchEvent(event)\r\n })\r\n .catch((err) => console.log(err))\r\n })\r\n })\r\n }\r\n \r\n process = () => {\r\n // const renderFunction = (canvas) => {\r\n // var a = document.createElement('a');\r\n // // toDataURL defaults to png, so we need to request a jpeg, then convert for file download.\r\n // a.href = canvas.toDataURL(\"image/jpeg\").replace(\"image/jpeg\", \"image/octet-stream\");\r\n // a.download = 'somefilename.jpg';\r\n // a.click();\r\n // }\r\n this.setState({edgeProcessing: true})\r\n\r\n html2canvas(document.getElementById('before')).then(function (canvas) { \r\n var beforeData = canvas.toDataURL()\r\n\r\n html2canvas(document.getElementById('after')).then(function (canvas) {\r\n var afterData = canvas.toDataURL()\r\n\r\n var threshold = document.getElementById('value').innerHTML\r\n \r\n axios.post('http://localhost:8000/edge/', {\r\n beforeData, afterData, threshold\r\n })\r\n .then(res => {\r\n alert(\"Edge Detection Processing Successful\")\r\n\r\n var hideEdge = document.getElementById('hideEdge')\r\n hideEdge.value = false\r\n var event = new MouseEvent('click', {\r\n 'view': window, \r\n 'bubbles': true, \r\n 'cancelable': false\r\n })\r\n hideEdge.dispatchEvent(event)\r\n\r\n var fileName = document.getElementById('fileName')\r\n fileName.value = res.data\r\n fileName.dispatchEvent(event)\r\n })\r\n .catch((err) => console.log(err))\r\n })\r\n })\r\n }\r\n\r\n componentDidMount() {\r\n const beforeMap = new mapboxgl.Map({\r\n container: 'before',\r\n style: 'mapbox://styles/hassanms/cki7c0ix53iqr19rxljjfazjz',\r\n center: [0, 0],\r\n zoom: 0,\r\n preserveDrawingBuffer: true,\r\n attributionControl: false\r\n });\r\n\r\n const afterMap = new mapboxgl.Map({\r\n container: 'after',\r\n style: 'mapbox://styles/hassanms/cki7cdfvp89fh19lrm5s90are',\r\n center: [0, 0],\r\n zoom: 0,\r\n preserveDrawingBuffer: true,\r\n attributionControl: false\r\n });\r\n \r\n const container = '#comparison-container';\r\n \r\n const map = new MapboxCompare(beforeMap, afterMap, container, {\r\n // Set this to enable comparing two maps by mouse movement:\r\n // mousemove: true,\r\n // orientation: 'vertical'\r\n });\r\n }\r\n\r\n render () {\r\n const { threshold } = this.state;\r\n\r\n return (\r\n
\r\n {/*
this.mapContainer = el} style={mapContainer} /> */}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n

{this.state.threshold}

\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n\r\n {!this.state.hideEdge && }\r\n\r\n {!this.state.hideChange && }\r\n\r\n {!this.state.hideMask && } \r\n\r\n
\r\n )\r\n }\r\n\r\n}\r\n\r\nexport default Swipe;","import React from 'react';\r\nimport Backdrop from '@material-ui/core/Backdrop';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n backdrop: {\r\n zIndex: theme.zIndex.drawer + 1,\r\n color: '#fff',\r\n },\r\n}));\r\n\r\nexport default function Backdrops({open}) {\r\n const classes = useStyles();\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n","import React,{useState,useEffect} from 'react';\r\nimport \"../../styles/CollectionsDetail.css\";\r\nimport Button from '@material-ui/core/Button';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Backdrops from './BackDrop.js'\r\nimport CustomModal from './CustomModal'\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport RemoveIcon from '@material-ui/icons/Remove';\r\nimport APIs from '../../Api.js';\r\n\r\nconst useStyles = makeStyles({\r\n button:{\r\n padding:13,\r\n borderRadius:0,\r\n background: 'linear-gradient( 135deg, rgb(49, 0, 62) 0%, rgb(195, 40, 110) 100% )'\r\n }\r\n});\r\n\r\nconst CollectionDetail = ({ collection,type }) => {\r\n const currentDate = new Date();\r\n currentDate.setDate(currentDate.getDate() - 1);\r\n const startDates = currentDate.toISOString().slice(0, 10);\r\n const [endDate, setEndDate] = useState(startDates);\r\n const [startDate, setStartDate] = useState(startDates);\r\n const [orderData,SetOrderData] = useState({})\r\n const [productCollectionData,SetProductCollectionData] = useState('')\r\n const [showBackDrop,SetBackDrop] = useState(false)\r\n const [productType,SetProductType] = useState('select')\r\n const [productID,SetProductID] = useState('')\r\n const [imagesIDs,SetImagesIDs] = useState([])\r\n const classes = useStyles();\r\n const [openModel,SetOpenModel] = useState(false)\r\n const [loader,SetLoader] = useState(false)\r\n const [linkID,SetLinkID] = useState('')\r\n const [IdsData,SetIdsData] = useState('')\r\n const [orderBtnText,SetOrderBtnText] = useState('Place Order')\r\n const [orderloader,SetOrderloader] = useState(false)\r\n const [coordinatorData,SetCoordinatorData] = useState([{lat:'',long:''}])\r\n const [error,SetError] = useState('')\r\n const [orderError,SetPlaceOrderError] = useState('')\r\n const [collectionName_,SetCollectionName] = useState('')\r\n const [estimateOrderLoader,SetEstimateOrderloader] = useState(false)\r\n const [estimateOrderCost,SetEstimateOrderCost] = useState('')\r\n const [paymentInfo,SetPaymentInfo] = useState('')\r\n const [enabelPlaceOrder,SetEnabelPlaceOrder] = useState(false)\r\n \r\n useEffect(()=>{\r\n paymentInfoHandler()\r\n },[])\r\n\r\n const paymentInfoHandler = () =>{\r\n let paymentData = localStorage.getItem('subscribe') || false\r\n if (paymentData){\r\n paymentData = JSON.parse(paymentData)\r\n } \r\n SetPaymentInfo(paymentData)\r\n }\r\n \r\n const selectForm = (option)=>{\r\n return (\r\n <>\r\n { option.key == 'geometry' ?\r\n <>\r\n \r\n {coordinatorFieldForm(option)}\r\n \r\n :\r\n \r\n }\r\n \r\n )\r\n }\r\n\r\n const selectImageIdHandler = (event,data)=>{\r\n SetOpenModel(true)\r\n SetIdsData(data)\r\n } \r\n\r\n const textForm = (data)=>{\r\n let key = data.key\r\n return (\r\n <>\r\n { key == 'id'?\r\n \r\n \r\n \r\n \r\n :\r\n orderParamHandler(event,data)} value={orderData[data.key]} type=\"text\" />\r\n }\r\n \r\n \r\n )\r\n }\r\n\r\n const dateTimeForm = (data)=>{\r\n return (\r\n orderParamHandler(event,data)} value={orderData[data.key]} type=\"date\"/>\r\n )\r\n }\r\n\r\n const orderParamHandler = (event,data)=>{\r\n SetPlaceOrderError(\"\")\r\n let values = event.target.value\r\n if (event.target.type == 'number'){\r\n if (values.indexOf(\".\") !== -1) {\r\n values = parseFloat(values)\r\n } else {\r\n values = parseInt(values)\r\n }\r\n }\r\n let key = data.key\r\n let updateParms = {...orderData,[key]:values}\r\n SetOrderData(updateParms) \r\n }\r\n\r\n const integerForm = (data)=>{\r\n let value_ =orderData[data.key]\r\n let setp_ = 1\r\n if (value_ != '')\r\n if (Number.isInteger(data.maximum)){\r\n value_ = parseInt(value_)\r\n setp_ = 1\r\n } else {\r\n value_ = parseFloat(value_)\r\n setp_=0.1\r\n }\r\n return (\r\n orderParamHandler(event,data)} value={value_} min={data.minimum} max={data.maximum}/>\r\n )\r\n }\r\n\r\n const geoMetryTypeHandler = (event)=>{ \r\n let values = event.target.value\r\n let updateParms = {...orderData,type:values}\r\n SetOrderData(updateParms)\r\n\r\n }\r\n\r\n const coordinatorParamHandler = (event,data,index)=>{\r\n let valueKey = event.target.name\r\n coordinatorData[index][valueKey] = event.target.value\r\n SetCoordinatorData([...coordinatorData]) \r\n let key = data.key\r\n let coordinatorData_ = []\r\n let tempCoordinatorData_ = []\r\n coordinatorData.map((item,index)=>{\r\n let lat = item.lat;\r\n let long = item.long;\r\n tempCoordinatorData_.push([parseFloat(lat),parseFloat(long)])\r\n })\r\n \r\n let type = orderData.type\r\n if (type == 'Point'){\r\n coordinatorData_ = tempCoordinatorData_\r\n } else {\r\n coordinatorData_ = [tempCoordinatorData_]\r\n }\r\n orderData.geokey = key\r\n orderData[key] = coordinatorData_\r\n SetOrderData({...orderData})\r\n }\r\n \r\n const createCoordinatorParamHandler = ()=>{\r\n SetCoordinatorData([...coordinatorData,{lat:'',long:''}])\r\n }\r\n\r\n const removeCoordinatorParamHandler = (event,data,index)=>{\r\n const updatedCoordinatorData = [...coordinatorData];\r\n updatedCoordinatorData.splice(index, 1);\r\n SetCoordinatorData(updatedCoordinatorData);\r\n \r\n let key = data.key\r\n let coordinatorData_ = []\r\n let tempCoordinatorData_ = []\r\n updatedCoordinatorData.map((item,index)=>{\r\n let lat = item.lat;\r\n let long = item.long;\r\n tempCoordinatorData_.push([parseFloat(lat),parseFloat(long)])\r\n })\r\n let type = orderData.type\r\n if (type == 'Point'){\r\n coordinatorData = tempCoordinatorData_\r\n } else {\r\n coordinatorData_ = [tempCoordinatorData_]\r\n }\r\n orderData.geokey = key\r\n orderData[key] = coordinatorData_\r\n\r\n SetOrderData({...orderData})\r\n }\r\n\r\n const coordinatorFieldForm = (data)=>{\r\n return(\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n { \r\n \r\n coordinatorData.map((item,index)=>{\r\n return(\r\n
\r\n \r\n coordinatorParamHandler(event,data,index)} style={{height:28}}>\r\n \r\n \r\n coordinatorParamHandler(event,data,index)} style={{height:28}}>\r\n \r\n { index == 0 &&\r\n createCoordinatorParamHandler()}/>\r\n }\r\n { index != 0 &&\r\n removeCoordinatorParamHandler(event,data,index)}/>\r\n } \r\n
\r\n )\r\n })\r\n }\r\n
\r\n \r\n
\r\n )\r\n }\r\n\r\n const coordinatesForm = (data)=>{\r\n return (\r\n <> \r\n \r\n {coordinatorFieldForm(data)}\r\n \r\n )\r\n }\r\n\r\n const formTypes = (key,data)=>{\r\n switch (key) {\r\n case 'select':\r\n return (selectForm(data))\r\n break;\r\n case 'text':\r\n return (textForm(data))\r\n break;\r\n case 'date-time':\r\n return (dateTimeForm(data))\r\n break;\r\n case 'integer':\r\n return (integerForm(data))\r\n break;\r\n case 'coordinates':\r\n return (coordinatesForm(data))\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n const collectionForm = (params)=>{\r\n let properties = params.properties;\r\n let definitions = params.definitions;\r\n return(\r\n
\r\n { Object.keys(properties).map((item,index)=>{\r\n let data = properties[item]\r\n data['key'] = item\r\n if (data.allOf){\r\n \r\n let coordinatesData = []\r\n let allOfData = data.allOf\r\n allOfData.map((allOfItem,index)=>{\r\n let allOfDef = allOfItem.$ref.replace('#/definitions/','');\r\n const definitionsData = definitions[allOfDef]\r\n if (definitionsData.anyOf){\r\n coordinatesData.push(definitionsData.anyOf)\r\n } else{\r\n coordinatesData.push([definitionsData]) \r\n }\r\n \r\n })\r\n data.input_type = 'select'\r\n data['data'] = coordinatesData\r\n \r\n\r\n } else if (data.anyOf){\r\n let anyOfData = data.anyOf\r\n let coordinatesData = []\r\n let coordinatesSelection = []\r\n anyOfData.map((anyOfItem,index)=>{\r\n let anyOfDef = anyOfItem.$ref.replace('#/definitions/','');\r\n const definitionsData = definitions[anyOfDef]\r\n if (definitionsData.properties){\r\n coordinatesData.push(definitionsData)\r\n coordinatesSelection.push(anyOfDef)\r\n }\r\n })\r\n data.input_type = 'coordinates'\r\n data['data'] = coordinatesData\r\n data['selection'] = coordinatesSelection\r\n\r\n } else if (data.$ref){\r\n let refDef = data.$ref.replace('#/definitions/','');\r\n const definitionsData = definitions[refDef]\r\n let coordinatesData = [definitionsData]\r\n let coordinatesSelection = [refDef]\r\n data.input_type = 'coordinates'\r\n data['data'] = coordinatesData\r\n data['selection'] = coordinatesSelection\r\n data['title'] = item.toUpperCase()\r\n }\r\n else { \r\n if (data.format){\r\n if (data.format == 'date-time'){\r\n data['input_type'] = 'date-time'\r\n data['value'] = ''\r\n } else{\r\n\r\n }\r\n } else if (data.type == 'string'){\r\n data['input_type'] = 'text'\r\n data['value'] = ''\r\n } else if (data.type == 'integer' || data.type == 'number'){\r\n data['input_type'] = 'integer'\r\n data['value'] = 0\r\n } \r\n }\r\n return(\r\n
\r\n \r\n {formTypes(data.input_type,data)}\r\n
\r\n )\r\n })}\r\n
\r\n ) \r\n }\r\n\r\n const placeOrderHandler = async(event)=>{\r\n SetPlaceOrderError('')\r\n SetOrderloader(true)\r\n let product_id = orderData.dataProduct\r\n let params = {\r\n product_type:productType,\r\n order_type:type,\r\n collection_name:collectionName_,\r\n params:{\r\n dataProduct:product_id,\r\n params:orderData\r\n }\r\n }\r\n console.log(collection,params);\r\n const token = localStorage.getItem('token');\r\n const headerOptions = {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': `Token ${token}`,\r\n },\r\n body:JSON.stringify(params)\r\n };\r\n try {\r\n const response = await fetch(APIs.PLACE_ORDER, headerOptions);\r\n const {data,code,message } = await response.json();\r\n if (code == 200){\r\n SetOrderBtnText('Order Placed Successful')\r\n SetOrderData({})\r\n } else{\r\n SetPlaceOrderError(message)\r\n SetOrderData({})\r\n }\r\n SetOrderloader(false)\r\n SetOrderData({})\r\n } catch (error) {\r\n SetOrderloader(false)\r\n SetOrderData({})\r\n }\r\n }\r\n\r\n const productTypeHandler = (event)=>{\r\n let value = event.target.value\r\n let dataProductIds = collection.data_ids\r\n let collectionData = collection.collection_name\r\n if (value != 'select'){\r\n SetImagesIDs([])\r\n setEndDate(startDates)\r\n setStartDate(startDates)\r\n SetProductType(value)\r\n SetLinkID('')\r\n SetProductID(dataProductIds[value])\r\n productParamsHandler(dataProductIds[value],collectionData[value])\r\n SetCollectionName(collectionData[value])\r\n }\r\n }\r\n\r\n const productParamsHandler = async (productId,collection_name,fetchType='self') => {\r\n let productId_ = productID \r\n if (productId && productId !=\"\"){\r\n productId_ = productId\r\n } \r\n\r\n SetBackDrop(true)\r\n const token = localStorage.getItem('token');\r\n const headerOptions = {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': `Token ${token}`,\r\n },\r\n };\r\n let payload = {hostName:collection.hostName,collectionName:collection_name,start:startDate,end:endDate,date:true};\r\n\r\n if (type == 'tasking'){\r\n payload.hostName = false\r\n payload.collectionName = false\r\n payload.date = false\r\n }\r\n \r\n try {\r\n const url = new URL(APIs.GET_PRODUCT_PARAMS+productId_);\r\n url.search = new URLSearchParams(payload).toString();\r\n const response = await fetch(url, headerOptions);\r\n const {code,data } = await response.json();\r\n if (code == 200){\r\n let scene_data = data.scene_data \r\n if (scene_data.length > 0){\r\n let imagesData = []\r\n scene_data.map((item,index)=>{\r\n let ids = item.properties.id\r\n imagesData.push({value:ids,const:ids})\r\n })\r\n \r\n SetImagesIDs(imagesData)\r\n SetLinkID(data.linkid)\r\n } else{\r\n if (fetchType!='self'){\r\n SetError(\"Ids not found this date range\")\r\n }\r\n }\r\n let properties = data.properties\r\n let allKeys = {type:'',dataProduct:productId_,'geokey':''}\r\n Object.keys(properties).map((item,index)=>{\r\n allKeys[item] = ''\r\n })\r\n SetBackDrop(false)\r\n SetOrderData(allKeys)\r\n SetProductCollectionData(data);\r\n SetLoader(false)\r\n } else {\r\n SetBackDrop(false)\r\n SetLoader(false)\r\n }\r\n \r\n } catch (error) {\r\n SetBackDrop(false) \r\n SetLoader(false)\r\n }\r\n }\r\n\r\n const productTypeForm = (collection)=>{\r\n let dataTypes = collection.data_type\r\n return(\r\n <> \r\n \r\n \r\n )\r\n }\r\n\r\n const handleDateChange = (e,type) => {\r\n SetError(\"\")\r\n if (type == 'start'){\r\n setStartDate(e.target.value);\r\n } else {\r\n setEndDate(e.target.value);\r\n }\r\n \r\n };\r\n\r\n const dateRangeForm = (collection)=>{\r\n return(\r\n <> \r\n { type == 'catalog' &&\r\n <>\r\n

Date Range

\r\n
\r\n \r\n handleDateChange(event,'start')} value={startDate} type='date' name=\"start_date\">\r\n
\r\n
\r\n \r\n handleDateChange(event,'end')} value={endDate} name=\"end_date\">\r\n
\r\n \r\n }\r\n \r\n )\r\n }\r\n\r\n const prductInfo =()=>{\r\n let productInfo = collection.info\r\n return(\r\n <>\r\n {\r\n Object.keys(productInfo).map((item,index)=>{\r\n let productData = productInfo[item]\r\n return(\r\n
\r\n

{productData.name}

\r\n
\r\n { productData.content \r\n ?\r\n

{productData.content}

\r\n :\r\n
\r\n { productData.section ?\r\n productData.section.map((sectionItem,index)=>{\r\n return(\r\n
\r\n

{sectionItem.name}

\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n sectionItem.data.map((sectionDataItem,index)=>{\r\n return(\r\n \r\n \r\n \r\n \r\n )\r\n })\r\n } \r\n \r\n
{sectionItem.head.name}{sectionItem.head.content}

{sectionDataItem.name}

\r\n
    \r\n {\r\n sectionDataItem.content!='' ?\r\n sectionDataItem.content.map((contentItem,index)=>{\r\n return(\r\n
  • {contentItem}
  • \r\n )\r\n })\r\n :\r\n sectionDataItem.data.map((contentDataItem,index)=>{\r\n return(\r\n <>\r\n
  • {contentDataItem.name}
  • \r\n
      \r\n {\r\n contentDataItem.content.map((contentItems,index)=>{\r\n return(\r\n
    • {contentItems}
    • \r\n )\r\n })\r\n }\r\n
    \r\n \r\n )\r\n })\r\n } \r\n
\r\n
\r\n
\r\n )\r\n })\r\n :\r\n productData.data.map((dataItem,index)=>{\r\n return(\r\n <>\r\n
{dataItem.name}
\r\n
    \r\n { dataItem.content.map((contentItem,index)=>{\r\n return(\r\n
  • {contentItem}
  • \r\n )\r\n })}\r\n
\r\n \r\n )\r\n })\r\n }\r\n
\r\n }\r\n \r\n
\r\n
\r\n )\r\n })\r\n }\r\n \r\n )\r\n }\r\n\r\n const closeImageIdModel = () => {\r\n SetOpenModel(false)\r\n }\r\n \r\n const loadMoreIdHandler = async(event,linkid) => {\r\n SetLoader(true)\r\n const token = localStorage.getItem('token');\r\n const headerOptions = {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': `Token ${token}`,\r\n },\r\n };\r\n let payload = {hostName:collection.hostName,collectionName:collectionName_};\r\n try {\r\n const url = new URL(APIs.GET_SCENE_IDS+linkid);\r\n url.search = new URLSearchParams(payload).toString();\r\n const response = await fetch(url, headerOptions);\r\n const {code,data } = await response.json();\r\n if (code == 200){\r\n let scene_data = data.scene_data \r\n if (scene_data.length > 0){\r\n let imagesData = []\r\n scene_data.map((item,index)=>{\r\n let ids = item.properties.id\r\n imagesData.push({value:ids,const:ids})\r\n })\r\n let allData = [...imagesIDs,...imagesData]\r\n SetImagesIDs(allData)\r\n SetLinkID(data.linkid)\r\n } else{\r\n SetError(\"Ids not found this date range\")\r\n }\r\n SetLoader(false)\r\n \r\n } else {\r\n SetLoader(false)\r\n //console.log()\r\n }\r\n } catch (error) {\r\n SetLoader(false)\r\n //console.log()\r\n }\r\n }\r\n\r\n const getIdHandler = (event) => {\r\n SetLoader(true)\r\n productParamsHandler('',collectionName_,'model')\r\n }\r\n \r\n const selectedIdHandler = (event)=>{\r\n event.preventDefault();\r\n let updatedData_ = {...orderData,[IdsData.key]:event.target.value}\r\n SetOrderData(updatedData_)\r\n SetOpenModel(false)\r\n }\r\n\r\n const estimateOrderHandler = async(event)=>{\r\n SetPlaceOrderError('')\r\n SetEstimateOrderloader(true)\r\n let product_id = orderData.dataProduct\r\n let params = {order_type:type,params:{dataProduct:product_id,params:orderData}}\r\n const token = localStorage.getItem('token');\r\n const headerOptions = {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': `Token ${token}`,\r\n },\r\n body:JSON.stringify(params)\r\n };\r\n try {\r\n const response = await fetch(APIs.ESTIMATE_ORDER, headerOptions);\r\n const {data,code,message } = await response.json();\r\n if (code == 200){\r\n SetEstimateOrderCost('Order Cost:- '+data.cost)\r\n SetEstimateOrderloader(false)\r\n SetEnabelPlaceOrder(true)\r\n } else{\r\n SetPlaceOrderError(message)\r\n SetEstimateOrderloader(false)\r\n SetEnabelPlaceOrder(false)\r\n SetEstimateOrderCost('')\r\n }\r\n } catch (error) {\r\n SetEstimateOrderloader(false)\r\n SetEnabelPlaceOrder(true)\r\n SetEstimateOrderCost('')\r\n }\r\n }\r\n\r\n return (\r\n
\r\n

{collection.title}

\r\n

{collection.description}

\r\n \"Thumbnail\"\r\n
\r\n {prductInfo()}\r\n
\r\n
\r\n

Product Type

\r\n {productTypeForm(collection)}\r\n
\r\n
\r\n {\r\n productCollectionData &&\r\n <> \r\n

Order product

\r\n {collectionForm(productCollectionData)}\r\n {orderError &&
{orderError}
}\r\n { estimateOrderCost &&
{estimateOrderCost}
}\r\n
\r\n \r\n\r\n {\r\n enabelPlaceOrder &&\r\n \r\n }\r\n
\r\n \r\n }\r\n
\r\n \r\n \r\n
\r\n {dateRangeForm(collection)}\r\n\r\n
\r\n { imagesIDs.length > 0 &&\r\n \r\n } \r\n
\r\n
\r\n {error && {error.error}}\r\n
\r\n { \r\n \r\n \r\n }\r\n \r\n
\r\n
\r\n
\r\n )\r\n};\r\n\r\nexport default CollectionDetail;","import React from \"react\";\r\nimport { CardElement } from \"@stripe/react-stripe-js\";\r\n\r\nconst CARD_ELEMENT_OPTIONS = {\r\n style: {\r\n base: {\r\n color: \"#303238\",\r\n fontSize: \"16px\",\r\n fontFamily: \"sans-serif\",\r\n fontSmoothing: \"antialiased\",\r\n \"::placeholder\": {\r\n color: \"#CFD7DF\"\r\n }\r\n },\r\n invalid: {\r\n color: \"#e5424d\",\r\n \":focus\": {\r\n color: \"#303238\"\r\n }\r\n }\r\n }\r\n};\r\n\r\nfunction CardSection() {\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default CardSection;","import React from \"react\";\r\nimport { ElementsConsumer, CardElement } from \"@stripe/react-stripe-js\";\r\nimport CardSection from \"./CardSection\";\r\nimport APIs from '../Api';\r\n\r\nclass CheckoutForm extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n productInfo:{}\r\n };\r\n }\r\n\r\n handleSubmit = async (event) => {\r\n event.preventDefault();\r\n\r\n const { stripe, elements,getCredit } = this.props;\r\n if (!stripe || !elements) {\r\n return;\r\n }\r\n \r\n const card = elements.getElement(CardElement);\r\n \r\n const { paymentMethod, error } = await stripe.createPaymentMethod({\r\n type: 'card',\r\n card,\r\n });\r\n\r\n if (error) {\r\n console.error(error.message);\r\n } else {\r\n\r\n const token = localStorage.getItem('token');\r\n const headerOptions = {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': `Token ${token}`,\r\n },\r\n };\r\n \r\n headerOptions.body = JSON.stringify({id:paymentMethod.id})\r\n const response = await fetch(APIs.STRIPE_PAYMENT_INTENT, headerOptions);\r\n const { key } = await response.json();\r\n \r\n const confirmResult = await stripe.confirmCardPayment(key, {\r\n payment_method: paymentMethod.id,\r\n return_url: 'http://www.farmin-app.com/',\r\n });\r\n \r\n if (confirmResult.error) {\r\n console.error(confirmResult.error.message);\r\n } else {\r\n let intent_id = confirmResult.paymentIntent.id;\r\n let amount = this.state.productInfo.amount\r\n let credit = 10000\r\n headerOptions.body = JSON.stringify({intent_id,amount,credit})\r\n await fetch(APIs.STRIPE_PAYMENT_SUCCESS, headerOptions);\r\n getCredit()\r\n }\r\n }\r\n };\r\n\r\n getProductInfo = async ()=> {\r\n const token = localStorage.getItem('token');\r\n const headerOptions = {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': `Token ${token}`,\r\n },\r\n };\r\n const response = await fetch(APIs.STRIPE_SINGLE_PRODUCT_INFO, headerOptions);\r\n const {code,data} = await response.json();\r\n if (code == 200){\r\n this.setState({productInfo:data})\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.getProductInfo()\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n

\r\n \r\n Amount: {this.state.productInfo.amount} \r\n {this.state.productInfo.currency}, \r\n Credit: 10000\r\n

\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default function InjectedCheckoutForm(props) {\r\n return (\r\n \r\n {({ stripe, elements }) => (\r\n \r\n )}\r\n \r\n );\r\n}\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardActionArea from '@material-ui/core/CardActionArea';\r\nimport CardActions from '@material-ui/core/CardActions';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport Button from '@material-ui/core/Button';\r\nimport Typography from '@material-ui/core/Typography';\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n maxWidth: '90%',\r\n boxShadow:'0px 10px 30px rgba(0, 0, 0, 0.4)',\r\n borderRadius:10,\r\n background: '#f4f4f4'\r\n },\r\n media: {\r\n height: 140,\r\n },\r\n buttonDiv:{\r\n marginTop:26,\r\n padding:0\r\n },\r\n button:{\r\n padding:13,\r\n borderRadius:0,\r\n background: 'linear-gradient( 135deg, rgb(49, 0, 62) 0%, rgb(195, 40, 110) 100% )'\r\n }\r\n});\r\n\r\nexport default function Plans({planDetails,onClick,purchased}) {\r\n const classes = useStyles();\r\n let amount = planDetails.details.unit_amount.toString().slice(0, -2)\r\n return (\r\n \r\n \r\n \r\n \r\n {planDetails.name} plan\r\n \r\n \r\n Credit {planDetails.credits}\r\n \r\n \r\n {amount} {planDetails.details.currency.toUpperCase()}\r\n \r\n \r\n \r\n \r\n {\r\n purchased ? \r\n \r\n :\r\n \r\n }\r\n \r\n \r\n \r\n );\r\n}\r\n","import React, { useEffect,useState } from 'react';\r\nimport CheckoutForm from \"../CheckoutForm.js\";\r\nimport { Elements } from '@stripe/react-stripe-js';\r\nimport { loadStripe } from \"@stripe/stripe-js\";\r\nimport Plans from './Plans.js'\r\nimport Backdrops from './BackDrop.js'\r\nimport APIs from '../../Api.js';\r\nimport { log } from 'deck.gl';\r\n\r\nconst Stripe = ()=> {\r\n const stripePromise = loadStripe(\"pk_test_51OHM9lKTFbocMdpQKaYXWleSmUWpIoIfOL2aE6KhzeBT26IPubSNCj7jpKYjflZAphvi4CWfZCqB7STHyI9DQYKx00IaOvzAW9\")\r\n const [credit,setCredit] = useState(0)\r\n const [purchasedPlan,SetPurchasedPlan] = useState(false)\r\n const [planData,SetPlanData] = useState([])\r\n const [showBackDrop,SetBackDrop] = useState(true)\r\n\r\n useEffect(()=>{\r\n getCredit()\r\n getAllPlan()\r\n },[])\r\n\r\n const getCredit = async ()=> {\r\n const token = localStorage.getItem('token');\r\n const headerOptions = {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': `Token ${token}`,\r\n },\r\n };\r\n const response = await fetch(APIs.GET_CREDIT_STRIPE, headerOptions);\r\n const { credit,data,code } = await response.json();\r\n if (code == 200){\r\n setCredit(credit)\r\n SetPurchasedPlan(data)\r\n let subscribedPlan = data\r\n if (data){\r\n subscribedPlan = JSON.stringify(data)\r\n }\r\n localStorage.setItem('subscribe',subscribedPlan)\r\n \r\n }\r\n }\r\n\r\n const getAllPlan = async ()=> {\r\n const token = localStorage.getItem('token');\r\n const headerOptions = {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': `Token ${token}`,\r\n },\r\n };\r\n const response = await fetch(APIs.GET_PLANS, headerOptions);\r\n const { code,data } = await response.json();\r\n if (code == 200){\r\n SetPlanData(data)\r\n }\r\n setTimeout(()=>{\r\n SetBackDrop(false)\r\n },500)\r\n }\r\n\r\n const planHandler = async (plan_id)=> {\r\n const token = localStorage.getItem('token');\r\n const headerOptions = {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': `Token ${token}`,\r\n },\r\n body:JSON.stringify({id:plan_id})\r\n };\r\n const response = await fetch(APIs.STRIPE_CHECKOUT, headerOptions);\r\n const {code,url} = await response.json();\r\n if (code == 200){\r\n window.open(url, '_blank');\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n

Remaning Credit {credit}

\r\n
\r\n
\r\n
\r\n { \r\n planData.map((item,index) => \r\n planHandler(plan_id)}\r\n purchased={purchasedPlan}\r\n /> \r\n ) \r\n }\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n );\r\n}\r\n\r\nexport default Stripe;","export default __webpack_public_path__ + \"static/media/active-world.96e7b800.svg\";","export default __webpack_public_path__ + \"static/media/deactive-world.41bbff75.svg\";","export const archiveData = {\r\n opticalData:[\r\n { \r\n minresolution:0,\r\n maxresolution:0.50,\r\n data:[\r\n {\r\n collection:\"pneo\",\r\n name:\"Pléiades Neo\",\r\n hostName: \"oneatlas\",\r\n setting:[\r\n {\r\n name:\"Analytic\",\r\n productId:\"6f722fb5-0323-4c97-9b1e-22870325b8db\",\r\n collection_:\"pneo\",\r\n },\r\n {\r\n name:\"Display\",\r\n productId:\"17745de8-6e7d-4751-99cd-3f8e9e9d290e\",\r\n collection_:\"pneo\",\r\n },\r\n\r\n ]\r\n },\r\n {\r\n collection:\"phr\",\r\n name:\"Pléiades\",\r\n hostName:\"oneatlas\",\r\n setting:[\r\n {\r\n name:\"Analytic\",\r\n productId:\"4f1b2f62-98df-4c74-81f4-5dce45deee99\",\r\n collection_:\"phr\",\r\n },\r\n {\r\n name:\"Pansharpened reflectance\",\r\n productId:\"df4ca029-2f6f-432b-98d5-ef2f5d70baee\",\r\n collection_:\"phr\",\r\n },\r\n {\r\n name:\"Display\",\r\n productId:\"647780db-5a06-4b61-b525-577a8b68bb54\",\r\n collection_:\"phr\",\r\n },\r\n\r\n ]\r\n },\r\n {\r\n collection:\"beijing-3a\",\r\n name:\"Beijing-3A\",\r\n hostName:\"21at\",\r\n setting:[\r\n {\r\n name:\"Mono 16-bit\",\r\n productId:\"e080274b-6cfb-4a89-bc12-64fd4895b3c2\",\r\n collection_:\"beijing-3a\",\r\n },\r\n {\r\n name:\"Stereo 16-bit\",\r\n productId:\"ab6fbe7d-2eb6-4f84-8337-418db71d8e75\",\r\n collection_:\"beijing-3a\",\r\n },\r\n ]\r\n },\r\n ]\r\n },\r\n { \r\n minresolution:0.50,\r\n maxresolution:2,\r\n data:[\r\n {\r\n collection:\"spot\",\r\n name:\"SPOT\",\r\n hostName:\"oneatlas\",\r\n setting:[\r\n {\r\n name:\"Analytic\",\r\n productId:\"b1f8c48e-d16b-44c4-a1bb-5e8a24892e69\",\r\n collection_:\"spot\",\r\n },\r\n {\r\n name:\"Pansharpened reflectance\",\r\n productId:\"df4ca029-2f6f-432b-98d5-ef2f5d70baee\",\r\n collection_:\"spot\",\r\n },\r\n {\r\n name:\"Display\",\r\n productId:\"acc3f9a4-b622-49c1-b1e1-c762aa3e7e13\",\r\n collection_:\"spot\",\r\n },\r\n \r\n ]\r\n },\r\n {\r\n collection:\"triplesat\",\r\n name:\"TripleSat\",\r\n hostName:\"21at\",\r\n setting:[\r\n {\r\n name:\"Level 2 (8-bit)\",\r\n productId:\"2398d8f5-5f7f-4596-884d-345c0b07af149\",\r\n collection_:\"triplesat\",\r\n },\r\n {\r\n name:\"Level 2 (16-bit)\",\r\n productId:\"37c26f4d-f6a9-47c9-ae4d-a095569ab8bc\",\r\n collection_:\"triplesat\",\r\n },\r\n ]\r\n },\r\n ]\r\n },\r\n { \r\n minresolution:2,\r\n maxresolution:20,\r\n data:[\r\n {\r\n collection:\"sentinel-2\",\r\n name:\"Sentinel-2\",\r\n hostName:\"earthsearch-aws\",\r\n setting:[\r\n {\r\n name:\"Level-2A\",\r\n productId:\"c3de9ed8-f6e5-4bb5-a157-f6430ba756da\",\r\n collection_:\"sentinel-2\",\r\n },\r\n ]\r\n }\r\n ]\r\n },\r\n { \r\n minresolution:20,\r\n maxresolution:null,\r\n data:[\r\n {\r\n collection:\"landsat-8\",\r\n name:\"Landsat 8\",\r\n hostName:\"earthsearch-aws\",\r\n setting:[\r\n {\r\n name:\"Level-2SP\",\r\n productId:\"0d6796c4-9e0b-44e8-bb8f-3d0bc9794382\",\r\n collection_:\"landsat-8\",\r\n },\r\n ]\r\n }\r\n ]\r\n }\r\n ],\r\n sarData:[\r\n { \r\n minresolution:0,\r\n maxresolution:0.50,\r\n data:[\r\n {\r\n collection:\"capella-slc\",\r\n name:\"SLC\",\r\n hostName:\"capellaspace\",\r\n productId:\"1f2b0d7f-d3e2-4b3d-96b7-e7c184df7952\",\r\n collection_:\"capella-slc\",\r\n thumbnail:\"sarcover.png\", \r\n },\r\n {\r\n collection:\"capella-gec\",\r\n name:\"GEC\",\r\n productId:\"96072809-d820-4cf9-86dd-d3bff3337c35\",\r\n hostName: \"capellaspace\",\r\n collection_:\"capella-gec\",\r\n thumbnail:\"sarcover.png\",\r\n },\r\n {\r\n collection:\"capella-geo\",\r\n name:\"GEO\",\r\n hostName: \"capellaspace\",\r\n productId:\"d66facaa-533f-49a2-849a-c2910ac9dd31\",\r\n collection_:\"capella-geo\",\r\n thumbnail:\"sarcover.png\",\r\n },\r\n {\r\n collection:\"capella-sicd\",\r\n name:\"SICD\",\r\n hostName: \"capellaspace\",\r\n productId:\"8b0aed07-c565-4bf9-b719-401e692de4a6\",\r\n collection_:\"capella-sicd\",\r\n thumbnail:\"sarcover.png\",\r\n }\r\n ]\r\n } \r\n ],\r\n thermal:[\r\n { \r\n minresolution:10,\r\n maxresolution:20,\r\n data:[\r\n {\r\n collection:\"capella-slc\",\r\n setting:[\r\n {\r\n name:\"SLC\",\r\n productId:\"1f2b0d7f-d3e2-4b3d-96b7-e7c184df7952\",\r\n collection_:\"capella-slc\",\r\n },\r\n ]\r\n },\r\n {\r\n collection:\"capella-gec\",\r\n setting:[\r\n {\r\n name:\"GEC\",\r\n productId:\"96072809-d820-4cf9-86dd-d3bff3337c35\",\r\n collection_:\"capella-gec\",\r\n },\r\n ]\r\n },\r\n {\r\n collection:\"capella-geo\",\r\n setting:[\r\n {\r\n name:\"GEO\",\r\n productId:\"d66facaa-533f-49a2-849a-c2910ac9dd31\",\r\n collection_:\"capella-geo\",\r\n },\r\n ]\r\n },\r\n {\r\n collection:\"capella-sicd\",\r\n setting:[\r\n {\r\n name:\"SICD\",\r\n productId:\"8b0aed07-c565-4bf9-b719-401e692de4a6\",\r\n collection_:\"capella-sicd\",\r\n },\r\n ]\r\n }\r\n ]\r\n } \r\n ]\r\n}\r\n","export const newImageryData = {\r\n type:[\r\n {name:\"Normal RGB\",value:\"normalrgb\"},\r\n {name:\"SAR\",value:\"sar\"},\r\n {name:\"Thermal\",value:\"thermal\"},\r\n ],\r\n images:{\r\n normalrgb:\"normalrgb.png\",\r\n sar:\"sarcover.png\",\r\n thermal:\"thermalcover.png\",\r\n },\r\n content:{\r\n normalrgb:\"Lorem ipsum dolor sit amet consectetur. Amet feugiat vulputate hendrerit accumsan blandit sem felis fames tellus. Ac netus in amet dui nulla ac diam posuere. Vel sed eros fringilla facilisis adipiscing porttitor vel. Mauris volutpat turpis.\",\r\n optical:\"Lorem ipsum dolor sit amet consectetur. Amet feugiat vulputate hendrerit accumsan blandit sem felis fames tellus. Ac netus in amet dui nulla ac diam posuere. Vel sed eros fringilla facilisis adipiscing porttitor vel. Mauris volutpat turpis.\",\r\n sar:\"Lorem ipsum dolor sit amet consectetur. Amet feugiat vulputate hendrerit accumsan blandit sem felis fames tellus. Ac netus in amet dui nulla ac diam posuere. Vel sed eros fringilla facilisis adipiscing porttitor vel. Mauris volutpat turpis.\",\r\n thermal:\"Lorem ipsum dolor sit amet consectetur. Amet feugiat vulputate hendrerit accumsan blandit sem felis fames tellus. Ac netus in amet dui nulla ac diam posuere. Vel sed eros fringilla facilisis adipiscing porttitor vel. Mauris volutpat turpis.\",\r\n },\r\n aoi:[\r\n {name:\"Dubai\",value:\"dubai\"},\r\n {name:\"Riyadh\",value:\"riyadh\"},\r\n {name:\"Paris\",value:\"paris\"},\r\n {name:\"New York\",value:\"newyork\"}\r\n ],\r\n aoiTypeValue:{\r\n dubai:{\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 54.74463718179653,\r\n 24.891856377755563\r\n ],\r\n [\r\n 55.73415415089634,\r\n 24.873309641327108\r\n ],\r\n [\r\n 55.75868762946919,\r\n 25.77879640172932\r\n ],\r\n [\r\n 54.75281500798682,\r\n 25.775114361040988\r\n ],\r\n [\r\n 54.74463718179653,\r\n 24.891856377755563\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"id\": \"4c90faa9-507b-41b2-9d0f-5ab4b6bb25c0\",\r\n \"constellation\": \"spot\",\r\n \"collection\": \"spot\",\r\n \"providerName\": \"oneatlas\",\r\n \"up42:usageType\": [\r\n \"DATA\"\r\n ],\r\n \"providerProperties\": {\r\n \"qualified\": false,\r\n \"sourceIdentifier\": \"DS_SPOT6_202311261001082_FR1_FR1_SV1_SV1_E013N52_03251\",\r\n \"acquisitionStation\": \"SV1\",\r\n \"archivingCenter\": \"FR1\",\r\n \"lastUpdateDate\": \"2023-11-27T09:26:14.346557219Z\",\r\n \"processingDate\": \"2023-11-26T13:57:11.523Z\",\r\n \"parentIdentifier\": \"DS_SPOT6_202311261001082_FR1_FR1_SV1_SV1_E013N52_03251\",\r\n \"azimuthAngle\": 180.01634984157405,\r\n \"title\": \"\",\r\n \"workspaceTitle\": \"Public\",\r\n \"productCategory\": \"image\",\r\n \"spectralRange\": \"VISIBLE\",\r\n \"activityId\": \"2871d2c6-72d1-4b16-aa62-a684ab078b44\",\r\n \"processingLevel\": \"ALBUM\",\r\n \"acquisitionIdentifier\": \"DS_SPOT6_202311261001082_FR1_FR1_SV1_SV1_E013N52_03251\",\r\n \"sensorType\": \"OPTICAL\",\r\n \"productionStatus\": \"ARCHIVED\",\r\n \"geometryCentroid\": {\r\n \"lat\": 25.211346019233744,\r\n \"lon\": 53.6929655754223\r\n },\r\n \"correlationId\": \"e41374d8-d0dc-4620-896d-98d683f60287\",\r\n \"workspaceName\": \"public\",\r\n \"processorName\": \"MMCAT\",\r\n \"publicationDate\": \"2023-11-27T09:26:14.346557219Z\",\r\n \"productType\": \"mono\",\r\n \"illuminationElevationAngle\": 16.219458656832728,\r\n \"workspaceId\": \"0e33eb50-3404-48ad-b835-b0b4b72a5625\",\r\n \"expirationDate\": \"2223-10-10T09:22:29.468992418Z\",\r\n \"incidenceAngleAcrossTrack\": -14.258450470658444,\r\n \"format\": \"image/tiff\",\r\n \"illuminationAzimuthAngle\": 167.19044820267305,\r\n \"incidenceAngleAlongTrack\": -9.229143296356984,\r\n \"incidenceAngle\": 16.539283326759,\r\n \"archiveIdentifier\": \"DS_SPOT6_202311261001082_FR1_FR1_SV1_SV1_E013N52_03251\",\r\n \"processingCenter\": \"MOC\",\r\n \"organisationName\": \"AIRBUS DS GEO\",\r\n \"snowCover\": 0\r\n },\r\n \"sceneId\": \"4c90faa9-507b-41b2-9d0f-5ab4b6bb25c0\",\r\n \"producer\": \"airbus\",\r\n \"acquisitionDate\": \"2023-11-26T10:01:08.249Z\",\r\n \"start_datetime\": null,\r\n \"end_datetime\": null,\r\n \"cloudCoverage\": 31.2,\r\n \"resolution\": 1.5,\r\n \"deliveryTime\": \"HOURS\"\r\n },\r\n \"type\": \"Feature\",\r\n \"bbox\": [\r\n 12.813546555504491,\r\n 51.906473484962824,\r\n 13.766187370220909,\r\n 52.95088361510117\r\n ]\r\n },\r\n riyadh:{\r\n \"geometry\": { \r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 46.016268798079146,\r\n 25.099471945449533\r\n ],\r\n [\r\n 46.01077563401696,\r\n 24.275954391514308\r\n ],\r\n [\r\n 47.449984618391646,\r\n 24.265939124867028\r\n ],\r\n [\r\n 47.43899829026728,\r\n 25.094497384843642\r\n ],\r\n [\r\n 46.016268798079146,\r\n 25.099471945449533\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"id\": \"4c90faa9-507b-41b2-9d0f-5ab4b6bb25c0\",\r\n \"constellation\": \"spot\",\r\n \"collection\": \"spot\",\r\n \"providerName\": \"oneatlas\",\r\n \"up42:usageType\": [\r\n \"DATA\"\r\n ],\r\n \"providerProperties\": {\r\n \"qualified\": false,\r\n \"sourceIdentifier\": \"DS_SPOT6_202311261001082_FR1_FR1_SV1_SV1_E013N52_03251\",\r\n \"acquisitionStation\": \"SV1\",\r\n \"archivingCenter\": \"FR1\",\r\n \"lastUpdateDate\": \"2023-11-27T09:26:14.346557219Z\",\r\n \"processingDate\": \"2023-11-26T13:57:11.523Z\",\r\n \"parentIdentifier\": \"DS_SPOT6_202311261001082_FR1_FR1_SV1_SV1_E013N52_03251\",\r\n \"azimuthAngle\": 180.01634984157405,\r\n \"title\": \"\",\r\n \"workspaceTitle\": \"Public\",\r\n \"productCategory\": \"image\",\r\n \"spectralRange\": \"VISIBLE\",\r\n \"activityId\": \"2871d2c6-72d1-4b16-aa62-a684ab078b44\",\r\n \"processingLevel\": \"ALBUM\",\r\n \"acquisitionIdentifier\": \"DS_SPOT6_202311261001082_FR1_FR1_SV1_SV1_E013N52_03251\",\r\n \"sensorType\": \"OPTICAL\",\r\n \"productionStatus\": \"ARCHIVED\",\r\n \"geometryCentroid\": {\r\n \"lat\": 24.39144479268129,\r\n \"lon\": 45.523519742783954\r\n },\r\n \"correlationId\": \"e41374d8-d0dc-4620-896d-98d683f60287\",\r\n \"workspaceName\": \"public\",\r\n \"processorName\": \"MMCAT\",\r\n \"publicationDate\": \"2023-11-27T09:26:14.346557219Z\",\r\n \"productType\": \"mono\",\r\n \"illuminationElevationAngle\": 16.219458656832728,\r\n \"workspaceId\": \"0e33eb50-3404-48ad-b835-b0b4b72a5625\",\r\n \"expirationDate\": \"2223-10-10T09:22:29.468992418Z\",\r\n \"incidenceAngleAcrossTrack\": -14.258450470658444,\r\n \"format\": \"image/tiff\",\r\n \"illuminationAzimuthAngle\": 167.19044820267305,\r\n \"incidenceAngleAlongTrack\": -9.229143296356984,\r\n \"incidenceAngle\": 16.539283326759,\r\n \"archiveIdentifier\": \"DS_SPOT6_202311261001082_FR1_FR1_SV1_SV1_E013N52_03251\",\r\n \"processingCenter\": \"MOC\",\r\n \"organisationName\": \"AIRBUS DS GEO\",\r\n \"snowCover\": 0\r\n },\r\n \"sceneId\": \"4c90faa9-507b-41b2-9d0f-5ab4b6bb25c0\",\r\n \"producer\": \"airbus\",\r\n \"acquisitionDate\": \"2023-11-26T10:01:08.249Z\",\r\n \"start_datetime\": null,\r\n \"end_datetime\": null,\r\n \"cloudCoverage\": 31.2,\r\n \"resolution\": 1.5,\r\n \"deliveryTime\": \"HOURS\"\r\n },\r\n \"type\": \"Feature\",\r\n \"bbox\": [\r\n 12.813546555504491,\r\n 51.906473484962824,\r\n 13.766187370220909,\r\n 52.95088361510117\r\n ]\r\n },\r\n paris:{\r\n \"geometry\": { \r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 1.432067571096702,\r\n 49.10333945101257\r\n ],\r\n [\r\n 1.4375607351589383,\r\n 48.21805915874694\r\n ],\r\n [\r\n 3.332702336721399,\r\n 48.214398946600106\r\n ],\r\n [\r\n 3.3491818289088977,\r\n 49.10333945101257\r\n ],\r\n [\r\n 1.432067571096702,\r\n 49.10333945101257\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"id\": \"07b-41b2-9d0f-5ab4b6bb25c0\",\r\n \"constellation\": \"spot\",\r\n \"collection\": \"spot\",\r\n \"providerName\": \"oneatlas\",\r\n \"up42:usageType\": [\r\n \"DATA\"\r\n ],\r\n \"providerProperties\": {\r\n \"qualified\": false,\r\n \"sourceIdentifier\": \"DS_SPOT6_202311261001082_FR1_FR1_SV1_SV1_E013N52_03251\",\r\n \"acquisitionStation\": \"SV1\",\r\n \"archivingCenter\": \"FR1\",\r\n \"lastUpdateDate\": \"2023-11-27T09:26:14.346557219Z\",\r\n \"processingDate\": \"2023-11-26T13:57:11.523Z\",\r\n \"parentIdentifier\": \"DS_SPOT6_202311261001082_FR1_FR1_SV1_SV1_E013N52_03251\",\r\n \"azimuthAngle\": 180.01634984157405,\r\n \"title\": \"\",\r\n \"workspaceTitle\": \"Public\",\r\n \"productCategory\": \"image\",\r\n \"spectralRange\": \"VISIBLE\",\r\n \"activityId\": \"2871d2c6-72d1-4b16-aa62-a684ab078b44\",\r\n \"processingLevel\": \"ALBUM\",\r\n \"acquisitionIdentifier\": \"DS_SPOT6_202311261001082_FR1_FR1_SV1_SV1_E013N52_03251\",\r\n \"sensorType\": \"OPTICAL\",\r\n \"productionStatus\": \"ARCHIVED\",\r\n \"geometryCentroid\": {\r\n \"lat\":48.61363861036861,\r\n \"lon\":0.7426754812512015\r\n },\r\n \"correlationId\": \"e41374d8-d0dc-4620-896d-98d683f60287\",\r\n \"workspaceName\": \"public\",\r\n \"processorName\": \"MMCAT\",\r\n \"publicationDate\": \"2023-11-27T09:26:14.346557219Z\",\r\n \"productType\": \"mono\",\r\n \"illuminationElevationAngle\": 16.219458656832728,\r\n \"workspaceId\": \"0e33eb50-3404-48ad-b835-b0b4b72a5625\",\r\n \"expirationDate\": \"2223-10-10T09:22:29.468992418Z\",\r\n \"incidenceAngleAcrossTrack\": -14.258450470658444,\r\n \"format\": \"image/tiff\",\r\n \"illuminationAzimuthAngle\": 167.19044820267305,\r\n \"incidenceAngleAlongTrack\": -9.229143296356984,\r\n \"incidenceAngle\": 16.539283326759,\r\n \"archiveIdentifier\": \"DS_SPOT6_202311261001082_FR1_FR1_SV1_SV1_E013N52_03251\",\r\n \"processingCenter\": \"MOC\",\r\n \"organisationName\": \"AIRBUS DS GEO\",\r\n \"snowCover\": 0\r\n },\r\n \"sceneId\": \"4c90faa9-507b-41b2-9d0f-5ab4b6bb25c0\",\r\n \"producer\": \"airbus\",\r\n \"acquisitionDate\": \"2023-11-26T10:01:08.249Z\",\r\n \"start_datetime\": null,\r\n \"end_datetime\": null,\r\n \"cloudCoverage\": 31.2,\r\n \"resolution\": 1.5,\r\n \"deliveryTime\": \"HOURS\"\r\n },\r\n \"type\": \"Feature\",\r\n \"bbox\": [\r\n 12.813546555504491,\r\n 51.906473484962824,\r\n 13.766187370220909,\r\n 52.95088361510117\r\n ]\r\n },\r\n newyork:{\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n -74.69989389922024,\r\n 41.132848376535975\r\n ],\r\n [\r\n -74.71088022734511,\r\n 40.22890349148231\r\n ],\r\n [\r\n -72.71136850859541,\r\n 40.22890349148231\r\n ],\r\n [\r\n -72.71136850859541,\r\n 41.12457310189462\r\n ],\r\n [\r\n -74.69989389922024,\r\n 41.132848376535975\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"id\": \"9d0f-5ab4b6bb25c0\",\r\n \"constellation\": \"spot\",\r\n \"collection\": \"spot\",\r\n \"providerName\": \"oneatlas\",\r\n \"up42:usageType\": [\r\n \"DATA\"\r\n ],\r\n \"providerProperties\": {\r\n \"qualified\": false,\r\n \"sourceIdentifier\": \"DS_SPOT6_202311261001082_FR1_FR1_SV1_SV1_E013N52_03251\",\r\n \"acquisitionStation\": \"SV1\",\r\n \"archivingCenter\": \"FR1\",\r\n \"lastUpdateDate\": \"2023-11-27T09:26:14.346557219Z\",\r\n \"processingDate\": \"2023-11-26T13:57:11.523Z\",\r\n \"parentIdentifier\": \"DS_SPOT6_202311261001082_FR1_FR1_SV1_SV1_E013N52_03251\",\r\n \"azimuthAngle\": 180.01634984157405,\r\n \"title\": \"\",\r\n \"workspaceTitle\": \"Public\",\r\n \"productCategory\": \"image\",\r\n \"spectralRange\": \"VISIBLE\",\r\n \"activityId\": \"2871d2c6-72d1-4b16-aa62-a684ab078b44\",\r\n \"processingLevel\": \"ALBUM\",\r\n \"acquisitionIdentifier\": \"DS_SPOT6_202311261001082_FR1_FR1_SV1_SV1_E013N52_03251\",\r\n \"sensorType\": \"OPTICAL\",\r\n \"productionStatus\": \"ARCHIVED\",\r\n \"geometryCentroid\": {\r\n \"lat\":40.23938734931336,\r\n \"lon\": -75.25745005156492\r\n },\r\n \"correlationId\": \"e41374d8-d0dc-4620-896d-98d683f60287\",\r\n \"workspaceName\": \"public\",\r\n \"processorName\": \"MMCAT\",\r\n \"publicationDate\": \"2023-11-27T09:26:14.346557219Z\",\r\n \"productType\": \"mono\",\r\n \"illuminationElevationAngle\": 16.219458656832728,\r\n \"workspaceId\": \"0e33eb50-3404-48ad-b835-b0b4b72a5625\",\r\n \"expirationDate\": \"2223-10-10T09:22:29.468992418Z\",\r\n \"incidenceAngleAcrossTrack\": -14.258450470658444,\r\n \"format\": \"image/tiff\",\r\n \"illuminationAzimuthAngle\": 167.19044820267305,\r\n \"incidenceAngleAlongTrack\": -9.229143296356984,\r\n \"incidenceAngle\": 16.539283326759,\r\n \"archiveIdentifier\": \"DS_SPOT6_202311261001082_FR1_FR1_SV1_SV1_E013N52_03251\",\r\n \"processingCenter\": \"MOC\",\r\n \"organisationName\": \"AIRBUS DS GEO\",\r\n \"snowCover\": 0\r\n },\r\n \"sceneId\": \"4c90faa9-507b-41b2-9d0f-5ab4b6bb25c0\",\r\n \"producer\": \"airbus\",\r\n \"acquisitionDate\": \"2023-11-26T10:01:08.249Z\",\r\n \"start_datetime\": null,\r\n \"end_datetime\": null,\r\n \"cloudCoverage\": 31.2,\r\n \"resolution\": 1.5,\r\n \"deliveryTime\": \"HOURS\"\r\n },\r\n \"type\": \"Feature\",\r\n \"bbox\": [\r\n 12.813546555504491,\r\n 51.906473484962824,\r\n 13.766187370220909,\r\n 52.95088361510117\r\n ]\r\n }\r\n }\r\n}\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAQCAYAAAAmlE46AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADYSURBVHgBlVPBEYIwELxjGBlf8sUXJVgCpViCHYiVaCdQir54in+Hcy+AZiDEsAPkILfLziYhcqB5yblpRex72hORD0wlnrVrykvMdnwBuXbNxT6isSjuuRmxeUrOQif03/G3Gy2ApyR8qbSWhIr9lh+LRE3w+yZ0hFLaJXTwkXqrYpL7cZHkP5IiGgyXWcpMKxAPFgtY1lGvNITIrl2hacrGb3lmz4SFkFDmowC/UXdUeImGrMsSkRGAnRZNrREKhQrAwdXe6OMBCBMYT0s/VlrHtAbWmn8Arix52NPUxikAAAAASUVORK5CYII=\"","export default __webpack_public_path__ + \"static/media/normalrgb.a8e4c014.png\";","export default __webpack_public_path__ + \"static/media/sarcover.af3fe6f0.png\";","export default __webpack_public_path__ + \"static/media/thermalcover.7cf8b189.png\";","import React, { useState, useCallback, useEffect } from 'react'\r\nimport { Box, Slider, Typography,CircularProgress } from '@material-ui/core'\r\nimport '../../../styles/BrowseArchive.css'\r\nimport { archiveData } from './BrowseArchiveDate.js'\r\nimport { newImageryData } from './OrderImageData.js'\r\nimport polyline from '../../../images/polyline.png'\r\nimport opticalResolutionImage from '../../../images/normalrgb.png'\r\nimport sarResolutionImage from '../../../images/sarcover.png'\r\nimport thermalResolutionImage from '../../../images/thermalcover.png'\r\nimport APIs from '../../../Api.js'\r\n\r\n\r\n\r\nexport default function BrowseArchive({ orderImageHandler_,setContainerWidth_}) {\r\n\r\n // +++++++++++++++ Force Update State +++++++++++++++++++\r\n const [, updateState] = useState({});\r\n const forceUpdate = useCallback(() => updateState({}), []);\r\n\r\n\r\n // +++++++++++++++ Archive Collection Data +++++++++++++++++++\r\n const [archiveCollectionData_, setArchiveCollectionData_] = useState(archiveData)\r\n\r\n\r\n // +++++++++++++++ Date State +++++++++++++++++++\r\n const currentDate = new Date();\r\n currentDate.setDate(currentDate.getDate() - 25);\r\n const startDate_ = currentDate.toISOString().slice(0, 10);\r\n const endDate_ = new Date().toISOString().slice(0, 10);\r\n const [startDate, setStartDate] = useState(startDate_)\r\n const [endDate, setEndDate] = useState(endDate_)\r\n\r\n\r\n // +++++++++++++++ Area Interest State +++++++++++++++++++\r\n const [aoiData_, setAoiData_] = useState(newImageryData)\r\n const storageAoiType_ = localStorage.getItem('aoi_selected') || 'select'\r\n const [aoiType_, setAoiType_] = useState(storageAoiType_)\r\n\r\n\r\n // +++++++++++++++ Angle State +++++++++++++++++++\r\n let archiveAngle_ = localStorage.getItem('archive_angle') || '[30,70]'\r\n archiveAngle_ = JSON.parse(archiveAngle_)\r\n const [angle_, setAngle_] = useState(archiveAngle_)\r\n\r\n\r\n // +++++++++++++++ Cloud State +++++++++++++++++++\r\n let cloudCoverages_ = localStorage.getItem('archive_cloud') || '[30,70]'\r\n cloudCoverages_ = JSON.parse(cloudCoverages_)\r\n const [cloudCoverages, setCloudCoverages] = useState(cloudCoverages_);\r\n\r\n\r\n // +++++++++++++++ Filter Date +++++++++++++++++++\r\n let filterData_ = localStorage.getItem('filter_date') || '{}'\r\n filterData_ = JSON.parse(filterData_)\r\n const [allfilterData_, setFilterData_] = useState(filterData_);\r\n\r\n\r\n // +++++++++++++++ Optical Resolution State +++++++++++++++++++\r\n let opticalResolutionData_ = localStorage.getItem('optical_resolution') || \"[]\"\r\n opticalResolutionData_ = JSON.parse(opticalResolutionData_)\r\n if (opticalResolutionData_.length == 0){\r\n opticalResolutionData_ = [{min:0,max:0.5,unit:\"m\"}]\r\n }\r\n const [opticalResolutionValue, setOpticalResolutionValue] = useState(opticalResolutionData_);\r\n\r\n\r\n // +++++++++++++++ Optical Satellite State +++++++++++++++++++\r\n let opticalSateliteData_ = localStorage.getItem('optical_satellite') || \"select\"\r\n const [opticalSatelliteValue, setOpticalSateliteValue] = useState(opticalSateliteData_);\r\n\r\n\r\n // +++++++++++++++ Optical Satellite Setting +++++++++++++++++++\r\n let opticalSateliteSettingData_ = localStorage.getItem('optical_satellite_setting') || \"{}\"\r\n opticalSateliteSettingData_ = JSON.parse(opticalSateliteSettingData_)\r\n const [opticalSatelliteSettingValue, setOpticalSateliteSettingValue] = useState(opticalSateliteSettingData_);\r\n\r\n let opticalSateliteSettingSelected_ = localStorage.getItem('optical_setting_selected') || \"[]\"\r\n opticalSateliteSettingSelected_ = JSON.parse(opticalSateliteSettingSelected_)\r\n const [opticalSelectedSettingValue_, setOpticalSelectedSettingValue_] = useState(opticalSateliteSettingSelected_);\r\n\r\n\r\n // +++++++++++++++ Sar Satellite State +++++++++++++++++++\r\n let sarSateliteMethod_ = localStorage.getItem('sar_satelite_method') || \"[]\"\r\n sarSateliteMethod_ = JSON.parse(sarSateliteMethod_)\r\n const [sarSateliteSMethodValue, setSateliteSMethodValue] = useState(sarSateliteMethod_);\r\n\r\n let sarSateliteResolution_ = localStorage.getItem('sar_satelite_resolution') || \"~0.50m\"\r\n const [sarSateliteResolution, setSarSateliteResolutione] = useState(sarSateliteResolution_);\r\n\r\n\r\n // +++++++++++++++ Thermal Satellite State +++++++++++++++++++\r\n let thermalSateliteResolution_ = localStorage.getItem('sar_thermal_resolution') || \"~10cm\"\r\n const [thermalSateliteResolution, setThermalSateliteResolutione] = useState(thermalSateliteResolution_);\r\n\r\n\r\n // +++++++++++++++ Archive Model State +++++++++++++++++++\r\n const [showArchiveModel, setShowArchiveModel] = useState(false);\r\n const [archiveModelData, setArchiveModelData] = useState([]);\r\n const [showArchiveModelLoader, setShowArchiveModelLoader] = useState(false);\r\n\r\n\r\n // +++++++++++++++ use Effect +++++++++++++++++++\r\n useEffect(()=>{\r\n let filterData_ = allfilterData_\r\n if (Object.keys(filterData_).length == 0) {\r\n if (!filterData_.end){\r\n let cloudCoverages_ = cloudCoverages[1] - cloudCoverages[0]\r\n let angle = angle_[1] - angle_[0]\r\n let filterInitData = {...allfilterData_,end:endDate_,start:startDate_,cloudCoverages:cloudCoverages_,angle}\r\n localStorageOperations(\"filter_date\",'set','', filterInitData)\r\n } \r\n }\r\n \r\n },[])\r\n\r\n\r\n\r\n\r\n // +++++++++++++++ local Storage Operations +++++++++++++++++++\r\n const localStorageOperations = (key_ = \"filter_date\", type = 'get', returnType = \"object\", data_) => {\r\n if (type == 'get') {\r\n let data;\r\n if (returnType == 'object') {\r\n data = localStorage.getItem(key_) || '{}'\r\n } else {\r\n data = localStorage.getItem(key_) || '[]'\r\n }\r\n data = JSON.parse(data)\r\n return data\r\n } else if (type == 'set') {\r\n localStorage.setItem(key_, JSON.stringify(data_))\r\n } else if (type == 'remove'){\r\n localStorage.removeItem(key_)\r\n } else {\r\n //console.log();\r\n }\r\n }\r\n\r\n\r\n // +++++++++++++++ Date +++++++++++++++++++\r\n const handleDateChange = (e, type) => {\r\n const date_ = e.target.value\r\n if (type == 'start') {\r\n setStartDate(date_);\r\n } else {\r\n setEndDate(date_);\r\n }\r\n const filterData_ = { ...allfilterData_, [type]: date_ }\r\n setFilterData_(filterData_)\r\n localStorageOperations('filter_date', 'set', '', filterData_)\r\n localStorageOperations('optical_satellite','remove')\r\n localStorageOperations('optical_satellite_setting','remove')\r\n setOpticalSateliteSettingValue({})\r\n setOpticalSateliteValue('select')\r\n localStorageOperations('optical_resolution','remove')\r\n setOpticalResolutionValue([{min:0,max:0.5,unit:\"m\"}])\r\n setShowArchiveModel(false)\r\n };\r\n\r\n\r\n // +++++++++++++++ Angle +++++++++++++++++++\r\n const handleChangeAngle = (e) => {\r\n //console.log()\r\n };\r\n\r\n const angleCommittedHanlder = (event, newValue) => {\r\n setAngle_(newValue);\r\n localStorage.setItem('archive_angle', JSON.stringify(newValue))\r\n const angleValue = newValue[1] - newValue[0]\r\n const filterData_ = { ...allfilterData_, angle: angleValue }\r\n setFilterData_(filterData_)\r\n localStorageOperations('filter_date', 'set', '', filterData_)\r\n localStorageOperations('optical_satellite','remove')\r\n localStorageOperations('optical_satellite_setting','remove')\r\n setOpticalSateliteSettingValue({})\r\n setOpticalSateliteValue('select')\r\n localStorageOperations('optical_resolution','remove')\r\n setOpticalResolutionValue([{min:0,max:0.5,unit:\"m\"}])\r\n setShowArchiveModel(false)\r\n }\r\n\r\n\r\n // +++++++++++++++ Cloud +++++++++++++++++++\r\n const handleChangeCloud = (e) => {\r\n //console.log()\r\n };\r\n\r\n const onChangeCommittedHanlder = (e, newValue) => {\r\n setCloudCoverages(newValue)\r\n localStorage.setItem('archive_cloud', JSON.stringify(newValue))\r\n const cloudValue = newValue[1] - newValue[0]\r\n const filterData_ = { ...allfilterData_, cloudCoverages: cloudValue }\r\n setFilterData_(filterData_)\r\n localStorageOperations('filter_date', 'set', '', filterData_)\r\n localStorageOperations('optical_satellite','remove')\r\n localStorageOperations('optical_satellite_setting','remove') \r\n setOpticalSateliteSettingValue({})\r\n setOpticalSateliteValue('select')\r\n localStorageOperations('optical_resolution','remove')\r\n setOpticalResolutionValue([{min:0,max:0.5,unit:\"m\"}])\r\n setShowArchiveModel(false)\r\n };\r\n\r\n const valuetext = (value) => {\r\n return `${value}°C`;\r\n }\r\n\r\n\r\n // +++++++++++++++ Draw Polygon ++++++++++++++++++ \r\n const drawPolygonHandler = () => {\r\n let aoiInit = localStorage.getItem('aoidraw_enable') || '1'\r\n let data = {}\r\n let aoiIsSeletced = true\r\n if (aoiInit == '0') {\r\n aoiInit = '1'\r\n aoiIsSeletced = false\r\n } else {\r\n aoiInit = '0'\r\n }\r\n data.aoiIsSeletced = aoiIsSeletced\r\n data.dataShow = false\r\n orderImageHandler_(data)\r\n localStorage.setItem('aoidraw_enable', aoiInit)\r\n // localStorage.setItem('aoi_selected', 'select')\r\n localStorageOperations('optical_satellite','remove')\r\n localStorageOperations('optical_satellite_setting','remove')\r\n setOpticalSateliteSettingValue({})\r\n setOpticalSateliteValue('select')\r\n localStorageOperations('optical_resolution','remove')\r\n setOpticalResolutionValue([{min:0,max:0.5,unit:\"m\"}])\r\n setShowArchiveModel(false)\r\n }\r\n\r\n\r\n // +++++++++++++++ Area Interest +++++++++++++++++++ \r\n const archiveAreaInterestSelectHandler = (e) => {\r\n localStorage.setItem('aoidraw_enable', '1')\r\n const { value } = e.target\r\n if (value != 'select') {\r\n let aoiData = aoiData_.aoiTypeValue\r\n let data = aoiData[value]\r\n data.aoiIsSeletced = false\r\n data.dataShow = true\r\n orderImageHandler_(data)\r\n setAoiType_(value)\r\n localStorage.setItem('aoi_selected', value)\r\n localStorageOperations('optical_satellite','remove')\r\n localStorageOperations('optical_satellite_setting','remove')\r\n setOpticalSateliteSettingValue({})\r\n setOpticalSateliteValue('select')\r\n localStorageOperations('optical_resolution','remove')\r\n setOpticalResolutionValue([{min:0,max:0.5,unit:\"m\"}]) \r\n setShowArchiveModel(false)\r\n localStorage.setItem('archive_coordinator',JSON.stringify(data.geometry))\r\n }\r\n }\r\n\r\n const archiveAreaInterest = () => {\r\n let aoiType = aoiData_.aoi\r\n return (\r\n <>\r\n \r\n \r\n )\r\n }\r\n\r\n \r\n // +++++++++++++++ Optical Filter +++++++++++++++++++ \r\n const opticalResolutionHandler = (data) => {\r\n localStorageOperations('optical_satellite','remove')\r\n localStorageOperations('optical_satellite_setting','remove')\r\n setOpticalSateliteValue('select')\r\n // setShowArchiveModel(false)\r\n setOpticalSateliteSettingValue({})\r\n let opticalResolutionLocalData = opticalResolutionValue\r\n if (opticalResolutionLocalData.length > 0){\r\n let existData = opticalResolutionLocalData.filter((data_)=>{\r\n return data_.min == data.min && data_.max == data.max\r\n })\r\n existData.map((existItem,index)=>{\r\n let itemIndex = opticalResolutionLocalData.indexOf(existItem)\r\n opticalResolutionLocalData.splice(itemIndex,1)\r\n })\r\n if (existData.length > 0){\r\n setOpticalResolutionValue(opticalResolutionLocalData)\r\n localStorageOperations('optical_resolution', 'set', '', opticalResolutionLocalData)\r\n } else {\r\n let newFilterData = [...opticalResolutionLocalData,{ min: data.min, max: data.max, unit: data.unit }]\r\n setOpticalResolutionValue(newFilterData)\r\n localStorageOperations('optical_resolution', 'set', '', newFilterData)\r\n }\r\n } else {\r\n let opticalResolutionData = [{ min: data.min, max: data.max, unit: data.unit }]\r\n setOpticalResolutionValue(opticalResolutionData)\r\n localStorageOperations('optical_resolution', 'set', '', opticalResolutionData)\r\n } \r\n forceUpdate() \r\n }\r\n\r\n const opticalResolutionSectionImage = (data) => {\r\n const imageUrl = opticalResolutionImage;\r\n const imageUrlArray = [\r\n { rid: 1, src: imageUrl, value: '~0.50m', min: 0, max: 0.50, unit: \"m\" },\r\n { rid: 2, src: imageUrl, value: '~2m', min: 0.5, max: 2, unit: \"m\" },\r\n { rid: 3, src: imageUrl, value: '~20m', min: 2, max: 20, unit: \"m\" },\r\n { rid: 4, src: imageUrl, value: '~100m', min: 20, max: null, unit: \"m\" },\r\n ];\r\n\r\n return (\r\n <>\r\n {\r\n imageUrlArray.map((item_, index) => {\r\n let selectedOption = opticalResolutionValue.filter((selectedItem)=>{return item_.min ==selectedItem.min;})\r\n let isSelected = selectedOption.length>0?true:false\r\n return (\r\n { opticalResolutionHandler(item_) }}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n })\r\n }\r\n \r\n )\r\n }\r\n\r\n const opticalOptionsHandler = (e,opticalProduct) => {\r\n const { value } = e.target\r\n if (value != 'select') {\r\n let filterOpticalData = opticalProduct.filter((product)=>{return product.collection==value})\r\n if (filterOpticalData.length > 0){\r\n localStorageOperations('optical_satellite_setting','set','',filterOpticalData[0])\r\n setOpticalSateliteSettingValue(filterOpticalData[0])\r\n let updateFilterDate = {...allfilterData_,collection:[{name:value,hostName:filterOpticalData[0].hostName}]}\r\n setFilterData_(updateFilterDate)\r\n let oldFilterData = localStorageOperations('filter_date','get','object',)\r\n if (oldFilterData.collection && oldFilterData.collection.length> 0){\r\n let filterCollectionData = [...oldFilterData.collection,{name:value,hostName:filterOpticalData[0].hostName}]\r\n updateFilterDate = {...allfilterData_,collection:filterCollectionData}\r\n }\r\n localStorageOperations('filter_date','set','',updateFilterDate)\r\n }\r\n localStorage.setItem('optical_satellite',value)\r\n setOpticalSateliteValue(value)\r\n setTimeout(() => {\r\n getArchiveCollection()\r\n }, 1000);\r\n }\r\n }\r\n\r\n const opticalOptions = () => {\r\n let opticalData = archiveCollectionData_.opticalData\r\n if (opticalResolutionValue.length > 0) {\r\n let filterData_ = []\r\n opticalResolutionValue.map((dateItem_)=>{\r\n let opticalFilterData_ = opticalData.filter((item_)=>{return item_.maxresolution==dateItem_.max})\r\n filterData_.push(opticalFilterData_[0])\r\n })\r\n opticalData = filterData_\r\n } else {\r\n opticalData = []\r\n }\r\n\r\n let opticalProduct = []\r\n opticalData.map((item_, index) => {\r\n item_.data.map((collectionData, index) => {\r\n opticalProduct.push(collectionData)\r\n })\r\n })\r\n\r\n return (\r\n \r\n )\r\n }\r\n\r\n\r\n // +++++++++++++++ Optical Filter Setting +++++++++++++++++++ \r\n const opticalSettingHandler = (data) =>{\r\n let opticalSelectedSettingValue = opticalSelectedSettingValue_\r\n if (opticalSelectedSettingValue.length > 0){\r\n let filterSetting = opticalSelectedSettingValue_.filter((item_)=>{\r\n return item_.productId == data.productId\r\n })\r\n if (filterSetting.length > 0){\r\n let itemIndex = -1\r\n itemIndex = opticalSelectedSettingValue.indexOf(filterSetting[0])\r\n if (itemIndex > -1){\r\n opticalSelectedSettingValue.splice(itemIndex,1)\r\n setOpticalSelectedSettingValue_(opticalSelectedSettingValue)\r\n localStorageOperations('optical_setting_selected','set','',opticalSelectedSettingValue)\r\n } else {\r\n const settingData = [...opticalSelectedSettingValue,{...data}]\r\n setOpticalSelectedSettingValue_(settingData)\r\n localStorageOperations('optical_setting_selected','set','',settingData)\r\n }\r\n } else {\r\n const settingData = [...opticalSelectedSettingValue,{...data}]\r\n setOpticalSelectedSettingValue_(settingData)\r\n localStorageOperations('optical_setting_selected','set','',settingData)\r\n }\r\n } else {\r\n setOpticalSelectedSettingValue_([data])\r\n localStorageOperations('optical_setting_selected','set','',[data])\r\n }\r\n forceUpdate()\r\n }\r\n \r\n const opticalFilterSetting = () =>{\r\n let opticalSetting = opticalSatelliteSettingValue.setting\r\n let isExistopticalSetting = true\r\n if (!opticalSetting){\r\n opticalSetting = []\r\n isExistopticalSetting = false\r\n }\r\n\r\n return(\r\n <>\r\n { isExistopticalSetting ? \r\n opticalSetting.map((item,index)=>{\r\n const filterSetting = opticalSelectedSettingValue_.filter((settingItem,)=>{\r\n return settingItem.productId == item.productId\r\n }) \r\n let isSelected = false\r\n if (filterSetting.length>0){\r\n isSelected = true\r\n }\r\n\r\n return(\r\n opticalSettingHandler(item)}>\r\n \r\n \r\n \r\n \r\n {item.name}\r\n \r\n )\r\n })\r\n :\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n Setting 1\r\n \r\n \r\n \r\n \r\n \r\n \r\n Setting 2\r\n \r\n \r\n \r\n \r\n \r\n \r\n Setting 3\r\n \r\n \r\n }\r\n \r\n )\r\n }\r\n\r\n\r\n // +++++++++++++++ Sar Filter +++++++++++++++++++ \r\n const captureMethodHandler = (data) => {\r\n let selectedCaptureMethod = sarSateliteSMethodValue\r\n let filterData = sarSateliteSMethodValue.filter((item_)=>{\r\n return data.collection == item_.collection\r\n })\r\n let itemIndex = -1\r\n if (filterData.length > 0){\r\n itemIndex = sarSateliteSMethodValue.indexOf(filterData[0])\r\n }\r\n let filterData_ = localStorageOperations('filter_date','get','object')\r\n let storageCollection = filterData_.collection\r\n if (!storageCollection){\r\n storageCollection = []\r\n }\r\n\r\n if (itemIndex > -1){\r\n selectedCaptureMethod.splice(itemIndex, 1); \r\n setSateliteSMethodValue(selectedCaptureMethod)\r\n localStorageOperations('sar_satelite_method','set','',selectedCaptureMethod)\r\n \r\n let storagefilterCollection = storageCollection.filter((storageItem_)=>{return data.collection == storageItem_.name})\r\n\r\n let storageCollectionItemIndex = -1\r\n if (storagefilterCollection.length > 0){\r\n storageCollectionItemIndex = storageCollection.indexOf(storagefilterCollection[0])\r\n } \r\n if (storageCollectionItemIndex > -1){\r\n storageCollection.splice(storageCollectionItemIndex, 1);\r\n let newCollectionData = {...filterData_,collection:storageCollection}\r\n localStorageOperations('filter_date','set','',newCollectionData)\r\n } \r\n \r\n } else {\r\n let selectedCapturedMethod = [...selectedCaptureMethod,{collection:data.collection,hostName:data.hostName}]\r\n setSateliteSMethodValue(selectedCapturedMethod)\r\n localStorageOperations('sar_satelite_method','set','',selectedCapturedMethod)\r\n\r\n let newCollectionData_ = [...storageCollection,{name:data.collection,hostName:data.hostName}]\r\n let updatedFilterData = {...filterData_,collection:newCollectionData_}\r\n localStorageOperations('filter_date','set','',updatedFilterData) \r\n }\r\n forceUpdate()\r\n setTimeout(() => {\r\n getArchiveCollection()\r\n }, 3000);\r\n \r\n }\r\n\r\n const captureMethodImage = () => {\r\n let sarData = archiveCollectionData_.sarData[0];\r\n return (\r\n \r\n {\r\n sarData.data.map((item_, index) => {\r\n const imageUrl = `/up42/${item_.thumbnail}`;\r\n let sarSelectedMethod = sarSateliteSMethodValue.filter((seletedMethod,index)=>{\r\n return (seletedMethod.collection == item_.collection)\r\n })\r\n let isSelected = sarSelectedMethod.length > 0 ? true : false\r\n return (\r\n { captureMethodHandler(item_) }}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n })\r\n }\r\n \r\n )\r\n }\r\n\r\n const sarResolutionHandler = (rid) => {\r\n setSarSateliteResolutione(rid)\r\n localStorageOperations('sar_satelite_resolution','set','',rid)\r\n getArchiveCollection()\r\n }\r\n\r\n const sarResolutionSectionImage = (data) => {\r\n const imageUrl = sarResolutionImage;\r\n const imageUrlArray = [\r\n { rid: 5, src: imageUrl, value: '~0.25m',min: 0, max: 0.50, unit: \"m\" },\r\n { rid: 6, src: imageUrl, value: '~0.35m',min: 0, max: 0.50, unit: \"m\" },\r\n { rid: 7, src: imageUrl, value: '~0.50m',min: 0, max: 0.50, unit: \"m\" },\r\n { rid: 8, src: imageUrl, value: '~1.00m',min: 0.50, max: 1000, unit: \"m\" },\r\n ];\r\n\r\n return (\r\n <>\r\n {imageUrlArray.map((item_, index) => (\r\n { sarResolutionHandler(item_.value) }}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n )\r\n }\r\n\r\n\r\n // +++++++++++++++ Thermal Filter +++++++++++++++++++ \r\n const thermalResolutionHandler = (value) => {\r\n localStorageOperations('sar_thermal_resolution','set','',value)\r\n setThermalSateliteResolutione(value)\r\n }\r\n\r\n const thermalResolutionSectionImage = () => {\r\n const imageUrl = thermalResolutionImage;\r\n const imageUrlArray = [\r\n { rid: 1, src: imageUrl, value:'~3m', value_:'~3m', min: 0, max: 0.50, unit: \"m\" },\r\n { rid: 2, src: imageUrl, value:'~30m', value_:'~30m', min: 0, max: 0.50, unit: \"m\" },\r\n ];\r\n\r\n return (\r\n <>\r\n {imageUrlArray.map((item_, index) => (\r\n { thermalResolutionHandler(item_.value_) }}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n )\r\n }\r\n\r\n\r\n // +++++++++++++++ Check filter data +++++++++++++++++++\r\n const filterDataCheck = () =>{\r\n let filterData_ = localStorageOperations('filter_date', 'get', 'object');\r\n let callAPi = true;\r\n if (Object.keys(filterData_).length > 0) {\r\n if (!filterData_.collection){\r\n callAPi = false;\r\n } else {\r\n if (filterData_.collection.length == 0 || !filterData_.start || !filterData_.end || !filterData_.cloudCoverages) {\r\n callAPi = false;\r\n }\r\n }\r\n \r\n if (!filterData_.cloudCoverages){\r\n localStorageOperations(\"filter_date\",'set','', {...allfilterData_,cloudCoverages})\r\n callAPi = true\r\n }\r\n\r\n } else {\r\n callAPi = false;\r\n }\r\n\r\n return callAPi\r\n }\r\n\r\n\r\n // +++++++++++++++ GET Archive Collections +++++++++++++++++++\r\n const getArchiveCollection = async () => {\r\n setContainerWidth_()\r\n let callAPi = filterDataCheck()\r\n let coordinatorFilter = false\r\n let filterData_ = localStorageOperations('filter_date','get','object')\r\n if (!filterData_.collection){\r\n callAPi = false\r\n } else {\r\n if (filterData_.collection.length == 0){\r\n callAPi = false\r\n } \r\n }\r\n let archiveCoordinator = localStorage.getItem('archive_coordinator') || \"{}\"\r\n archiveCoordinator = JSON.parse(archiveCoordinator)\r\n if (Object.keys(archiveCoordinator).length > 0){\r\n coordinatorFilter = true\r\n filterData_.intersects = archiveCoordinator \r\n }\r\n\r\n filterData_.coordinator_filter = coordinatorFilter\r\n if (callAPi) {\r\n setShowArchiveModel(true)\r\n setShowArchiveModelLoader(true)\r\n const token = localStorage.getItem('token');\r\n const headerOptions = {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: `Token ${token}`,\r\n },\r\n body: JSON.stringify(filterData_),\r\n };\r\n try {\r\n const response = await fetch(APIs.GET_ARCHIVE_CATALOG, headerOptions);\r\n const { data, code, message } = await response.json();\r\n if (code === 200) {\r\n // setArchiveModelData([...archiveModelData,data])\r\n setArchiveModelData(data)\r\n setShowArchiveModelLoader(false)\r\n } else {\r\n setShowArchiveModelLoader(false)\r\n console.log(message, 'Error Messgae');\r\n }\r\n } catch (error) {\r\n setShowArchiveModelLoader(false)\r\n // Handle error\r\n }\r\n }\r\n }\r\n\r\n const roundToDecimalPlaces = (num, decimalPlaces) => {\r\n const factor = 10 ** decimalPlaces;\r\n return Math.round(num * factor) / factor;\r\n }\r\n \r\n\r\n // +++++++++++++++ Archive Collections Model +++++++++++++++++++\r\n const imageHandler = (data) =>{\r\n data.aoiIsSeletced = false\r\n data.dataShow = true\r\n data.zoomIn = false\r\n localStorageOperations('optical_satellite_setting','remove')\r\n localStorageOperations('optical_satellite','remove')\r\n setOpticalSateliteValue('select')\r\n setOpticalSateliteSettingValue({})\r\n localStorageOperations('sar_satelite_method','remove')\r\n localStorageOperations('aoi_selected','remove')\r\n setAoiType_('select')\r\n localStorage.setItem('aoidraw_enable', '1')\r\n setSateliteSMethodValue([])\r\n orderImageHandler_(data)\r\n }\r\n\r\n const browseArchiveIds = () =>{\r\n \r\n return(\r\n \r\n {\r\n showArchiveModelLoader ? \r\n \r\n \r\n \r\n :\r\n\r\n <> \r\n
\r\n Archive\r\n
\r\n \r\n Select an image:\r\n {\r\n archiveModelData.length >0 ? \r\n archiveModelData.map((item_,index)=>{\r\n const properties_ = item_.properties\r\n const angle = roundToDecimalPlaces(properties_.providerProperties.incidenceAngle, 2);\r\n const originalDate = new Date(properties_.acquisitionDate);\r\n const formattedDate = `${originalDate.getDate()} - ${originalDate.getMonth()+1} - ${originalDate.getFullYear()}`;\r\n return(\r\n
{imageHandler(item_)}}>\r\n
\r\n \"Image\" \r\n
\r\n
Resolution: {properties_.resolution} cm
\r\n
Captured: {formattedDate}
\r\n
Angle: {angle}o
\r\n
Cloud: {properties_.cloudCoverage}%
\r\n
\r\n )\r\n })\r\n : \r\n
Not Data Found
}\r\n
\r\n \r\n }\r\n
\r\n )\r\n }\r\n\r\n\r\n\r\n\r\n // +++++++++++++++ Return Jsx +++++++++++++++++++ \r\n return (\r\n \r\n \r\n\r\n {/* General Filter*/}\r\n \r\n General Filter\r\n {/* Date and Setting sections in one row */}\r\n \r\n {/* Date Filter */}\r\n \r\n \r\n Date:\r\n
\r\n
\r\n Please select image date:\r\n handleDateChange(event, 'start')} />\r\n handleDateChange(event, 'end')} />\r\n
\r\n\r\n {/* Setting Section */}\r\n \r\n \r\n Settings:\r\n
\r\n \r\n
\r\n \r\n

\r\n Angle:\r\n

\r\n \r\n {angle_[0]}\r\n \r\n {angle_[1]}\r\n \r\n
\r\n \r\n

\r\n Cloud %:\r\n

\r\n \r\n {cloudCoverages[0]}\r\n \r\n {cloudCoverages[1]}\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
Super Resolution
\r\n
\r\n
\r\n
\r\n
\r\n\r\n {/*Area Of Interest */}\r\n \r\n \r\n Area of interest:\r\n \r\n \r\n \r\n {archiveAreaInterest()}\r\n \r\n { drawPolygonHandler() }}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n {/* Collection Filter*/}\r\n \r\n\r\n {/* Optical Filter */}\r\n \r\n {/* Resolution */}\r\n Optical Filter\r\n \r\n \r\n Resolution:\r\n \r\n {opticalResolutionSectionImage()}\r\n \r\n \r\n Satellite:\r\n \r\n {opticalOptions()}\r\n \r\n \r\n \r\n \r\n \r\n Setting:\r\n \r\n \r\n {opticalFilterSetting()}\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {/* Sar Filter */}\r\n \r\n SAR Filter\r\n \r\n \r\n Capture method:\r\n \r\n {captureMethodImage()}\r\n \r\n \r\n \r\n Resolution:\r\n \r\n {sarResolutionSectionImage()}\r\n \r\n \r\n\r\n {/* Thermal Filter */}\r\n \r\n Thermal Filter\r\n \r\n \r\n Resolution:\r\n \r\n {thermalResolutionSectionImage()}\r\n \r\n \r\n \r\n
\r\n \r\n { showArchiveModel && \r\n browseArchiveIds()\r\n }\r\n \r\n
\r\n )\r\n}\r\n","import React, { useState,useEffect } from \"react\";\r\nimport { Box } from \"@material-ui/core\";\r\nimport \"./orderImageComponent.css\";\r\nimport APIs from '../../../Api.js';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Slider from \"@material-ui/core/Slider\";\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport BrowseArchive from \"./BrowseArchive.js\";\r\nimport {useHistory,useLocation} from \"react-router-dom\";\r\nimport {newImageryData} from \"./OrderImageData.js\"\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport polyline from '../../../images/polyline.png'\r\n\r\nconst OrderImageComponent = ({orderImageHandler,analyzeOrderHandler_,polygonCoordinates,updateMapHeight}) => {\r\n const estimatedcoordinatesData = useSelector((state) => state.coordinates);\r\n const currentDate = new Date();\r\n currentDate.setDate(currentDate.getDate() - 25);\r\n const startDates = currentDate.toISOString().slice(0, 10);\r\n const endDates = new Date().toISOString().slice(0, 10);\r\n const [endDate, setEndDate] = useState(endDates);\r\n const [startDate, setStartDate] = useState(startDates);\r\n const activeTab_ = localStorage.getItem('active_tab') || 'newImagery'\r\n const [activeTab, setActiveTab] = useState(activeTab_);\r\n const [collectionData, setCollectionData] = useState([]);\r\n const [selectedCollectionData,setSelectedCollectionData] = useState({})\r\n const [showLoader,setShowLoader] = useState(false)\r\n const [productType,setProductType] = useState('select')\r\n const [productID,setProductID] = useState('')\r\n const [collectionName_,setCollectionName] = useState('')\r\n const [imagesIDs,setImagesIDs] = useState([])\r\n const [orderData,setOrderData] = useState({})\r\n const [productCollectionData,setProductCollectionData] = useState('')\r\n const [linkID,setLinkID] = useState('')\r\n const [cloudCoverages, setCloudCoverages] = useState([0, 100]);\r\n const [sceneData, setSceneData] = useState([]);\r\n const [fieldData,setFieldData] = useState([]);\r\n const [aoiType,setAoiType] = useState('select')\r\n const [imageIdLoader,setImageIdLoader] = useState(false)\r\n const [showImageIdsContainer,setImageIdsContainer] = useState(false)\r\n const [allError,setError] = useState({aoi:\"\",cart:\"\"})\r\n const [estimateCredit,setEstimateCredit] = useState(0)\r\n const [addToCart,setAddToCart] = useState(false) \r\n const [estimateOrderLoader,setEstimateOrderLoader] = useState(false)\r\n const rid_ = localStorage.getItem('rid') || 1\r\n const [resolutionId, setResolutionId] = useState(rid_);\r\n // const imageryResolution_ = localStorage.getItem('imagery_resolution') || '~10CM'\r\n // const [imageryResolution,setImageryResolution] = useState(imageryResolution_)\r\n const [allOrderParms,setAllOrderParms] = useState({})\r\n const history = useHistory();\r\n\r\n\r\n const currentDate_ = new Date();\r\n currentDate.setDate(currentDate.getDate() - 25);\r\n const startDates_ = currentDate.toISOString().slice(0, 10);\r\n const endDates_ = new Date().toISOString().slice(0, 10);\r\n const [dummyData, setDummyData] = useState(newImageryData)\r\n const typeValue_ = localStorage.getItem('type_value') || 'normalrgb'\r\n const [typeValue, setTypeValue] = useState(typeValue_)\r\n const [typeImage, setTypeImage] = useState('normalrgb.png')\r\n const [resolutionId_,setResolutionId_] = useState(1)\r\n const imageryResolution_ = localStorage.getItem('imagery_resolution') || '~10CM'\r\n const [resolutionValue,setResolutionValue] = useState(imageryResolution_)\r\n\r\n\r\n const storageAoiType_ = localStorage.getItem('aoi_selected') || 'select'\r\n const [aoiType_,setAoiType_] = useState(storageAoiType_)\r\n const [aoiData_,setAoiData] = useState({})\r\n const [startDate_,setStartDate_] = useState(startDates_)\r\n const [endDate_,setEndDate_] = useState(endDates_)\r\n const [cloudCoverage_,setCloudCoverages_] = useState([30,70])\r\n const [angle_,setAngle_] = useState([30,70])\r\n\r\n\r\n const captureMethod_ = localStorage.getItem('capture_method') || 'SLC'\r\n const [captureMethodId,setCaptureMethodId_] = useState(5)\r\n const [captureMethodValue_,setCaptureMethodValue_] = useState(captureMethod_)\r\n\r\n const [containerWidth,setContainerWidth] = useState('578px')\r\n\r\n\r\n\r\n\r\n // useEffect(()=>{\r\n // let catalogData = localStorage.getItem('catalog_data') || \"[]\"\r\n // catalogData = JSON.parse(catalogData)\r\n // setCollectionData(catalogData)\r\n // if (catalogData.length == 0){\r\n // getAllTaskingCollection()\r\n // } \r\n \r\n // const productType = localStorage.getItem('product_type') || false\r\n // const collectionName = localStorage.getItem(\"collection_name\") || false\r\n // const productId_ = localStorage.getItem(\"product_id\") || false\r\n // const startDate_ = localStorage.getItem('start_date') || false\r\n // const endDate_ = localStorage.getItem('end_date') || false\r\n // const aoi_ = localStorage.getItem('aoi_') || \"[]\"\r\n // const aoi_options = JSON.parse(aoi_)\r\n // const aoiValue = localStorage.getItem('aoi_value') || \"select\"\r\n // const cloudCoverages_ = localStorage.getItem('cloud') || \"[0, 100]\"\r\n // const cloud = JSON.parse(cloudCoverages_)\r\n\r\n\r\n // setAoiType(aoiValue)\r\n\r\n // setCloudCoverages(cloud)\r\n // setFieldData(aoi_options)\r\n\r\n // if (startDate_){\r\n // setStartDate(startDate_)\r\n // }\r\n\r\n // if (endDate_){\r\n // setEndDate(endDate_)\r\n // }\r\n\r\n // if (collectionName){\r\n // setCollectionName(collectionName)\r\n // }\r\n\r\n // if (productId_){\r\n // setProductID(productId_)\r\n // }\r\n\r\n // if (productType){\r\n // setProductType(productType)\r\n // }\r\n\r\n // },[])\r\n\r\n // const getAllTaskingCollection = async ()=> {\r\n // setShowLoader(true)\r\n // const token = localStorage.getItem('token');\r\n // const headerOptions = {\r\n // method: 'GET',\r\n // headers: {\r\n // 'Content-Type': 'application/json',\r\n // 'Authorization': `Token ${token}`,\r\n // },\r\n // };\r\n // let collectionType = \"catalog\";\r\n // const response = await fetch(APIs.GET_COLLECTIONS+collectionType, headerOptions);\r\n // const {data,code } = await response.json();\r\n // if (code == 200){\r\n // localStorage.setItem('catalog_data',JSON.stringify(data))\r\n // data.map((item_,index)=>{\r\n // if (item_.section == 'Optical satellite imagery'){\r\n // localStorage.setItem(\"selected_catalog\",JSON.stringify(item_.products[0]))\r\n // setSelectedCollectionData(item_.products[0])\r\n // }\r\n // })\r\n // setCollectionData(data)\r\n // setShowLoader(false)\r\n // } else {\r\n // setShowLoader(false)\r\n // }\r\n\r\n // }\r\n\r\n const handleTabClick = (tab) => {\r\n localStorage.setItem('ai_model_init',1)\r\n updateMapHeight(tab)\r\n setActiveTab(tab);\r\n localStorage.setItem('active_tab',tab)\r\n localStorage.setItem('aoi_selected','select')\r\n orderImageHandler(false)\r\n\r\n if (tab=='browseArchive'){\r\n localStorage.removeItem('aoi_value',)\r\n localStorage.removeItem('order_data',)\r\n localStorage.removeItem('aoi_',)\r\n localStorage.removeItem('product_type')\r\n localStorage.removeItem('product_id')\r\n localStorage.removeItem('start_date')\r\n localStorage.removeItem('end_date')\r\n localStorage.removeItem('imagery_resolution')\r\n localStorage.removeItem('rid')\r\n setProductType('select')\r\n setAoiType('select')\r\n setProductID('')\r\n } else {\r\n localStorage.removeItem('optical_satellite')\r\n localStorage.removeItem('aoi_selected')\r\n localStorage.removeItem('optical_satellite_setting')\r\n localStorage.removeItem('optical_resolution')\r\n }\r\n };\r\n\r\n // const newImageryTypeOptionHandler = (e) =>{\r\n // localStorage.removeItem('collection_name')\r\n // localStorage.removeItem('imagery_resolution')\r\n // localStorage.removeItem('rid')\r\n // localStorage.removeItem('product_id')\r\n // localStorage.removeItem('aoi_')\r\n // localStorage.removeItem('aoi_value')\r\n // localStorage.removeItem('product_type')\r\n // setError({aoi:\"\",cart:\"\"})\r\n // setResolutionId(1)\r\n // setImageryResolution('~10CM')\r\n // setProductID('')\r\n // setCollectionName('')\r\n // setAoiType('select')\r\n // setFieldData([])\r\n // setSceneData([])\r\n // const {value} = e.target\r\n // let catalogData = localStorage.getItem('catalog_data') || \"[]\"\r\n // catalogData = JSON.parse(catalogData)\r\n // let optionData_ = []\r\n // catalogData.map((item_,index)=>{optionData_.push(...item_.products)})\r\n // const filterData = optionData_.filter((optionItem)=>{return optionItem.name == value;})\r\n // if (filterData.length>0){\r\n // localStorage.setItem(\"selected_catalog\",JSON.stringify(filterData[0]))\r\n // setSelectedCollectionData(filterData[0])\r\n // }\r\n // }\r\n\r\n const newImageryTypeOptionHandler = (e) =>{\r\n localStorage.removeItem('aoi_selected')\r\n localStorage.removeItem('aoidraw_enable')\r\n localStorage.removeItem('imagery_resolution')\r\n localStorage.removeItem('capture_method')\r\n orderImageHandler(false)\r\n setAoiType_('select')\r\n const {value} = e.target\r\n setTypeValue(value)\r\n setTypeImage(dummyData.images[value])\r\n localStorage.setItem('type_value',value)\r\n }\r\n\r\n // const newImageryTypeSectionOption = () => {\r\n // let catalogData = localStorage.getItem('catalog_data') || \"[]\"\r\n // catalogData = JSON.parse(catalogData)\r\n // let optionData = []\r\n // catalogData.map((item_,index)=>{\r\n // optionData.push(...item_.products)\r\n // })\r\n \r\n // let selectedCatalogData = localStorage.getItem('selected_catalog') || \"[]\"\r\n // selectedCatalogData = JSON.parse(selectedCatalogData)\r\n // return(\r\n // \r\n // )\r\n // }\r\n\r\n\r\n const newImageryTypeSectionOption = () => {\r\n let typeData = dummyData.type\r\n return(\r\n \r\n )\r\n }\r\n\r\n // const rightSectionImage = () =>{\r\n // let selectedCatalogData = localStorage.getItem('selected_catalog') || \"[]\"\r\n // selectedCatalogData = JSON.parse(selectedCatalogData)\r\n // const imageUrl = `/up42/${selectedCatalogData.thumbnail}`;\r\n // return(\r\n // \r\n // )\r\n // }\r\n\r\n const rightSectionImage = () =>{\r\n const imageUrl = `/up42/${dummyData.images[typeValue]}`;\r\n return(\r\n \r\n )\r\n }\r\n\r\n // const resolutionHandler = (rid,value)=>{\r\n // setError({aoi:\"\",cart:\"\"})\r\n // setResolutionId(rid)\r\n // setImageryResolution(value)\r\n // localStorage.setItem('imagery_resolution',value)\r\n // localStorage.setItem('rid',rid) \r\n // if (showImageIdsContainer){\r\n // let productIds = localStorage.getItem('product_id') \r\n // let collection_name_ = localStorage.getItem('collection_name') \r\n // let selectedCatalogData = localStorage.getItem('selected_catalog') || \"{}\"\r\n // selectedCatalogData = JSON.parse(selectedCatalogData)\r\n // let host_name_ = ''\r\n // if (selectedCatalogData?.hostName){\r\n // host_name_ = selectedCatalogData?.hostName\r\n // }\r\n\r\n // let cloudData_ = localStorage.getItem('cloud') || \"[0,100]\"\r\n // cloudData_ = JSON.parse(cloudData_)\r\n // let cloudCoveragesData_ = 100\r\n // if (cloudData_){\r\n // cloudCoveragesData_ = cloudData_[1] - cloudData_[0]\r\n // }\r\n\r\n // productParamsHandler(productIds,collection_name_,host_name_,false,cloudCoveragesData_)\r\n // }\r\n // }\r\n\r\n const resolutionHandler = (rid,value)=>{\r\n setResolutionId_(rid)\r\n setResolutionValue(value)\r\n localStorage.setItem('imagery_resolution',value)\r\n }\r\n\r\n // const resolutionSectionImage = () =>{\r\n // let selectedCatalogData = localStorage.getItem('selected_catalog') || \"[]\"\r\n // selectedCatalogData = JSON.parse(selectedCatalogData)\r\n // const imageUrl = `/up42/${selectedCatalogData.thumbnail}`;\r\n // const imageUrlArray = [\r\n // {rid:1,src:imageUrl,value:'~10CM'},\r\n // {rid:2,src:imageUrl,value:'~30CM'},\r\n // {rid:3,src:imageUrl,value:'~50CM'},\r\n // {rid:4,src:imageUrl,value:'~1M'},\r\n // {rid:5,src:imageUrl,value:'~10M'}\r\n // ];\r\n\r\n // return(\r\n // <>\r\n // {imageUrlArray.map((item_, index) => (\r\n // {resolutionHandler(item_.rid,item_.value)}}\r\n // >\r\n // \r\n // \r\n // \r\n // \r\n // \r\n // \r\n // \r\n // ))}\r\n // \r\n // )\r\n // }\r\n\r\n const resolutionSectionImage = () =>{\r\n const imageUrl = `/up42/${dummyData.images[typeValue]}`;\r\n\r\n let imageUrlArray = [\r\n {rid:1,src:imageUrl,value:'~10CM'},\r\n {rid:2,src:imageUrl,value:'~30CM'},\r\n {rid:3,src:imageUrl,value:'~50CM'},\r\n {rid:4,src:imageUrl,value:'~1M'},\r\n {rid:5,src:imageUrl,value:'~10M'}\r\n ]\r\n let clasName_ = 'normalgrid'\r\n switch (typeValue) {\r\n case 'sar':\r\n imageUrlArray = [\r\n {rid:1,src:imageUrl,value:'~10CM'},\r\n {rid:2,src:imageUrl,value:'~30CM'},\r\n {rid:3,src:imageUrl,value:'~50CM'},\r\n {rid:4,src:imageUrl,value:'~1M'},\r\n ]\r\n clasName_ = 'sargrid'\r\n break;\r\n case 'thermal':\r\n imageUrlArray = [\r\n {rid:1,src:imageUrl,value:'~3M'},\r\n {rid:2,src:imageUrl,value:'~30M'},\r\n ]\r\n clasName_ = 'thermalgrid'\r\n break;\r\n default:\r\n imageUrlArray = imageUrlArray\r\n clasName_ = clasName_\r\n break;\r\n }\r\n\r\n\r\n return(\r\n <>\r\n {\r\n imageUrlArray.map((item_, index) => {\r\n return(\r\n <>\r\n {resolutionHandler(item_.rid,item_.value)}}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n })\r\n }\r\n \r\n )\r\n }\r\n\r\n // const newImageryleftSectionParagraph = () => {\r\n // let selectedCatalogData = localStorage.getItem('selected_catalog') || \"[]\"\r\n // selectedCatalogData = JSON.parse(selectedCatalogData)\r\n // return(\r\n //

{selectedCatalogData.description}

\r\n // )\r\n // }\r\n\r\n const newImageryleftSectionParagraph = () => {\r\n return(\r\n

\r\n Lorem ipsum dolor sit amet consectetur. Amet feugiat vulputate hendrerit accumsan blandit sem felis fames tellus. Ac netus in amet dui nulla ac diam posuere. Vel sed eros fringilla facilisis adipiscing porttitor vel. Mauris volutpat turpis.\r\n

\r\n )\r\n }\r\n\r\n // const collectionForm = (params)=>{\r\n // let properties = params.properties;\r\n // let definitions = params.definitions;\r\n // let fieldData = []\r\n // Object.keys(properties).map((item,index)=>{\r\n // let data = properties[item]\r\n // data['key'] = item\r\n // if (data.allOf){\r\n // let coordinatesData = []\r\n // let allOfData = data.allOf\r\n // allOfData.map((allOfItem,index)=>{\r\n // let allOfDef = allOfItem.$ref.replace('#/definitions/','');\r\n // const definitionsData = definitions[allOfDef]\r\n // if (definitionsData.anyOf){\r\n // coordinatesData.push(definitionsData.anyOf)\r\n // } else{\r\n // coordinatesData.push([definitionsData]) \r\n // }\r\n \r\n // })\r\n // data.input_type = 'select'\r\n // data['data'] = coordinatesData\r\n \r\n\r\n // } else if (data.anyOf){\r\n // let anyOfData = data.anyOf\r\n // let coordinatesData = []\r\n // let coordinatesSelection = []\r\n // anyOfData.map((anyOfItem,index)=>{\r\n // let anyOfDef = anyOfItem.$ref.replace('#/definitions/','');\r\n // const definitionsData = definitions[anyOfDef]\r\n // if (definitionsData.properties){\r\n // coordinatesData.push(definitionsData)\r\n // coordinatesSelection.push(anyOfDef)\r\n // }\r\n // })\r\n // data.input_type = 'coordinates'\r\n // data['data'] = coordinatesData\r\n // data['selection'] = coordinatesSelection\r\n\r\n // } else if (data.$ref){\r\n // let refDef = data.$ref.replace('#/definitions/','');\r\n // const definitionsData = definitions[refDef]\r\n // let coordinatesData = [definitionsData]\r\n // let coordinatesSelection = [refDef]\r\n // data.input_type = 'coordinates'\r\n // data['data'] = coordinatesData\r\n // data['selection'] = coordinatesSelection\r\n // data['title'] = item.toUpperCase()\r\n // }\r\n // else { \r\n // if (data.format){\r\n // if (data.format == 'date-time'){\r\n // data['input_type'] = 'date-time'\r\n // data['value'] = ''\r\n // } else{\r\n\r\n // }\r\n // } else if (data.type == 'string'){\r\n // data['input_type'] = 'text'\r\n // data['value'] = ''\r\n // } else if (data.type == 'integer' || data.type == 'number'){\r\n // data['input_type'] = 'integer'\r\n // data['value'] = 0\r\n // } \r\n // }\r\n // fieldData.push(data)\r\n // }) \r\n // localStorage.removeItem('aoi_','aoi_value')\r\n // setFieldData(fieldData)\r\n // }\r\n\r\n // const productParamsHandler = async (productId,collection_name,hostName_,object,cloudCoverage=100,fetchType='self') => {\r\n // setError({aoi:\"\",cart:\"\"})\r\n // localStorage.removeItem('aoi_')\r\n // localStorage.removeItem('aoi_value')\r\n // setAoiType('select')\r\n // setImageIdLoader(true)\r\n // let type = 'catalog'\r\n // let productId_ = productID \r\n // if (productId && productId !=\"\"){\r\n // productId_ = productId\r\n // } \r\n\r\n // let startDate_ = startDate\r\n // let endDate_ = endDate\r\n // if (object){\r\n // if (object.type == 'start'){\r\n // startDate_ = object.date\r\n // } else {\r\n // endDate_ = object.date\r\n // }\r\n // }\r\n\r\n // const token = localStorage.getItem('token');\r\n // const headerOptions = {\r\n // method: 'GET',\r\n // headers: {\r\n // 'Content-Type': 'application/json',\r\n // 'Authorization': `Token ${token}`,\r\n // },\r\n // };\r\n\r\n // let resolution_ = localStorage.getItem('imagery_resolution') || '~10CM'\r\n // resolution_ = parseInt(resolution_.match(/\\d+/)[0], 10);\r\n \r\n // let payload = {\r\n // hostName:hostName_,\r\n // collectionName:collection_name,\r\n // start:startDate_,\r\n // end:endDate_,\r\n // date:true,\r\n // query:true,\r\n // cloudCoverage,\r\n // resolution_,\r\n // };\r\n\r\n\r\n // if (type == 'tasking'){\r\n // payload.hostName = false\r\n // payload.collectionName = false\r\n // payload.date = false\r\n // }\r\n \r\n // try {\r\n // const url = new URL(APIs.GET_PRODUCT_PARAMS+productId_);\r\n // url.search = new URLSearchParams(payload).toString();\r\n // const response = await fetch(url, headerOptions);\r\n // const {code,data } = await response.json();\r\n // if (code == 200){\r\n // collectionForm(data)\r\n // setSceneData([data])\r\n // let scene_data = data.scene_data \r\n // if (scene_data.length > 0){\r\n // let imagesData = []\r\n // scene_data.map((item,index)=>{\r\n // let ids = item.properties.id\r\n // imagesData.push({value:ids,const:ids})\r\n // })\r\n // setImagesIDs(imagesData)\r\n // setLinkID(data.linkid)\r\n // } else{\r\n // if (fetchType!='self'){\r\n // //setError(\"Ids not found this date range\")\r\n // }\r\n // }\r\n // let properties = data.properties\r\n // let allKeys = {type:'',dataProduct:productId_,'geokey':''}\r\n // Object.keys(properties).map((item,index)=>{\r\n // allKeys[item] = ''\r\n // })\r\n // setOrderData(allKeys)\r\n // localStorage.setItem('order_data',JSON.stringify(allKeys))\r\n // setProductCollectionData(data);\r\n // setImageIdLoader(false)\r\n \r\n // } else {\r\n // setImageIdLoader(false)\r\n // }\r\n \r\n // } catch (error) {\r\n // //setBackDrop(false) \r\n // //setLoader(false)\r\n // setImageIdLoader(false)\r\n // }\r\n // }\r\n\r\n // const productTypeHandler = (event)=>{\r\n // setError({aoi:\"\",cart:\"\"})\r\n // let value = event.target.value\r\n // localStorage.setItem(\"product_type\",value)\r\n // if (value != 'select'){\r\n // setImageIdsContainer(true)\r\n // setFieldData([])\r\n \r\n // let dataType = []\r\n // if (Object.keys(selectedCollectionData).length>0){\r\n // dataType = selectedCollectionData\r\n // } else{\r\n // dataType = localStorage.getItem('selected_catalog') || \"{}\"\r\n // dataType = JSON.parse(dataType)\r\n // if (Object.keys(dataType).length>0){\r\n // dataType = dataType\r\n // }\r\n // }\r\n // let dataProductIds = dataType.data_ids\r\n // let collectionData = dataType.collection_name\r\n // let hostName = dataType.hostName\r\n // setImagesIDs([])\r\n // setLinkID('')\r\n\r\n // let cloudCoverage_ = cloudCoverages[1] - cloudCoverages[0]\r\n // productParamsHandler(dataProductIds[value],collectionData[value],hostName,false,cloudCoverage_)\r\n\r\n // localStorage.setItem(\"product_type\",value)\r\n // localStorage.setItem(\"collection_name\",collectionData[value])\r\n // localStorage.setItem(\"product_id\",dataProductIds[value])\r\n\r\n // setProductType(value)\r\n // setCollectionName(collectionData[value])\r\n // setProductID(dataProductIds[value])\r\n // }\r\n // }\r\n\r\n// const newImageryProductTypes = () => {\r\n// let dataType = []\r\n// if (Object.keys(selectedCollectionData).length>0){\r\n// dataType = selectedCollectionData.data_type\r\n// } else{\r\n// dataType = localStorage.getItem('selected_catalog') || \"[]\"\r\n// dataType = JSON.parse(dataType)\r\n// if (Object.keys(dataType).length>0){\r\n// dataType = dataType.data_type\r\n// }\r\n// }\r\n// return(\r\n// \r\n// )\r\n// }\r\n\r\n // const handleDateChange = (e,type) => {\r\n // setError({aoi:\"\",cart:\"\"})\r\n // let dataType = []\r\n // if (Object.keys(selectedCollectionData).length>0){\r\n // dataType = selectedCollectionData\r\n // } else{\r\n // dataType = localStorage.getItem('selected_catalog') || \"{}\"\r\n // dataType = JSON.parse(dataType)\r\n // if (Object.keys(dataType).length>0){\r\n // dataType = dataType\r\n // }\r\n // }\r\n // let hostName = dataType.hostName\r\n // let date_ = e.target.value\r\n // if (type == 'start'){\r\n // setStartDate(date_);\r\n // localStorage.setItem('start_date',date_)\r\n // } else {\r\n // localStorage.setItem('end_date',date_)\r\n // setEndDate(date_);\r\n // }\r\n // let cloudCoverage_ = cloudCoverages[1] - cloudCoverages[0]\r\n // productParamsHandler(productID,collectionName_,hostName,{date:date_,type},cloudCoverage_)\r\n // if (!showImageIdsContainer){\r\n // setImageIdsContainer(true)\r\n // }\r\n // };\r\n\r\n const handleDateChange = (e,type) => {\r\n const {value} = e.target\r\n if (type == 'start'){\r\n setStartDate_(value);\r\n } else {\r\n setEndDate_(value);\r\n }\r\n };\r\n\r\n const handleChangeAngle = (e)=>{\r\n //console.log();\r\n }\r\n\r\n const handleChange = (event, newValue) => {\r\n //console.log();\r\n }; \r\n\r\n const valuetext = (value) => {\r\n return `${value}°C`;\r\n }\r\n\r\n // const newImageryAreaInterestSelect = (e,key) =>{\r\n // const {value} = e.target\r\n // if (value != 'select'){\r\n // setError({...allError,aoi:\"\"})\r\n // localStorage.setItem('aoi_value',value)\r\n // setAoiType(value)\r\n // setOrderData({...orderData,type:value,geokey:key})\r\n // let orderData_ = localStorage.getItem('order_data') || \"{}\"\r\n // orderData_ = JSON.parse(orderData_)\r\n // localStorage.setItem('order_data',JSON.stringify({...orderData_,type:value,geokey:key}))\r\n // }\r\n // }\r\n\r\n const newImageryAreaInterestSelect = (e) =>{\r\n localStorage.setItem('aoidraw_enable','1')\r\n const {value} = e.target\r\n if (value != 'select'){\r\n let aoiData = dummyData.aoiTypeValue\r\n let data = aoiData[value]\r\n data.aoiIsSeletced = false\r\n data.dataShow = true\r\n orderImageHandler(data)\r\n setAoiData(data)\r\n setAoiType_(value)\r\n localStorage.setItem('aoi_selected',value)\r\n }\r\n }\r\n \r\n // const newImageryAreaInterest = () =>{\r\n // let fieldData_ = fieldData\r\n // let aoiOptions = []\r\n // if (fieldData_.length > 0){\r\n // fieldData_.map((object_,index)=>{\r\n // if (object_.input_type == 'coordinates'){\r\n // aoiOptions.push(object_.selection)\r\n // }\r\n // })\r\n // }\r\n\r\n // if (aoiOptions.length>0){\r\n // const aioData = [{input_type:\"coordinates\",selection:aoiOptions}]\r\n // localStorage.removeItem('aoi_','aoi_value')\r\n // localStorage.setItem('aoi_',JSON.stringify(aioData))\r\n // }\r\n\r\n // return(\r\n // <>\r\n // \r\n // \r\n // )\r\n // }\r\n\r\n\r\n const newImageryAreaInterest = () =>{\r\n let aoiType = dummyData.aoi\r\n return(\r\n <>\r\n \r\n \r\n )\r\n }\r\n\r\n const imageHandler = (data) =>{\r\n let fieldData_ = fieldData\r\n let aoiIsSeletced = true\r\n let dataShow = true\r\n let showError_ = false\r\n if (fieldData_.length > 0){\r\n for (let index=0;index < fieldData_.length;index++){\r\n if (fieldData_[index].input_type == 'coordinates'){\r\n if (aoiType =='select'){\r\n aoiIsSeletced = false\r\n dataShow = false\r\n showError_ = true\r\n break;\r\n } else {\r\n aoiIsSeletced = true\r\n }\r\n } else {\r\n aoiIsSeletced = false\r\n dataShow = true\r\n }\r\n }\r\n }\r\n let orderData = localStorage.getItem('order_data') || \"{}\"\r\n orderData = JSON.parse(orderData)\r\n let cloudCoverage = data.properties.cloudCoverage\r\n let resolution = data.properties.resolution\r\n\r\n let originalDate = new Date(data.properties.acquisitionDate);\r\n let startDate = `${originalDate.getFullYear()}-${originalDate.getMonth()+ 1}-${originalDate.getDate()}`;\r\n\r\n let orderDatanew = {\r\n ...orderData,\r\n id:data.properties.id,\r\n cloudCoverage,\r\n startDate,\r\n resolution,\r\n } \r\n localStorage.setItem('order_data',JSON.stringify(orderDatanew))\r\n\r\n data.aoiIsSeletced = aoiIsSeletced\r\n data.dataShow = dataShow\r\n orderImageHandler(data)\r\n if (showError_){\r\n setError({...allError,aoi:\"Please select the aoi\"})\r\n }\r\n \r\n }\r\n\r\n const newImageryImagesIds = () =>{\r\n let sceneData_ = sceneData\r\n if (sceneData_.length > 0){\r\n sceneData_ = sceneData_[0].scene_data\r\n }\r\n return(\r\n <>\r\n { showImageIdsContainer &&\r\n \r\n {imageIdLoader ? \r\n \r\n \r\n \r\n :\r\n <> \r\n
\r\n Select an image:\r\n
\r\n \r\n { sceneData_.length > 0 ?\r\n <>\r\n { \r\n sceneData_.map((item_,index)=>{\r\n const properties_ = item_.properties\r\n const originalDate = new Date(properties_.acquisitionDate);\r\n const formattedDate = `${originalDate.getDate()} - ${originalDate.getMonth()+1} - ${originalDate.getFullYear()}`;\r\n return(\r\n
{imageHandler(item_)}}>\r\n
\r\n \"Image\"\r\n
\r\n
Resolution: {properties_.resolution} cm
\r\n
Captured: {formattedDate}
\r\n
Cloud: {properties_.cloudCoverage}%
\r\n
\r\n )\r\n })\r\n }\r\n \r\n :\r\n
Not Data Found
\r\n }\r\n
\r\n \r\n }\r\n
\r\n }\r\n \r\n )\r\n }\r\n\r\n // const estimateOrderHandler = async(event)=>{\r\n // setEstimateOrderLoader(true)\r\n // setError({...allError,cart:\"\",aoi:\"\"})\r\n // analyzeOrderHandler_()\r\n // let polygonCoordinates_ = polygonCoordinates\r\n // if (estimatedcoordinatesData.length > 0){\r\n // polygonCoordinates_ = estimatedcoordinatesData\r\n // }\r\n\r\n // let orderData_ = localStorage.getItem(\"order_data\") || \"{}\"\r\n // orderData_ = JSON.parse(orderData_)\r\n // const product_id = orderData_.dataProduct\r\n // let key = orderData_.geokey\r\n // if (key){\r\n // orderData_[key] = polygonCoordinates_\r\n // }\r\n // let selectedCatalogData = localStorage.getItem('selected_catalog') || \"{}\"\r\n // selectedCatalogData = JSON.parse(selectedCatalogData)\r\n // let host_name_ = ''\r\n // if (selectedCatalogData?.hostName){\r\n // host_name_ = selectedCatalogData?.hostName\r\n // }\r\n\r\n \r\n // let collection_name = localStorage.getItem('collection_name') || \"\"\r\n // let product_type = localStorage.getItem('product_type') || \"\"\r\n \r\n // let cloudCoverage = orderData_.cloudCoverage\r\n // let resolution = orderData_.resolution\r\n // let startDate = orderData_.startDate\r\n\r\n // delete orderData_['cloudCoverage'];\r\n // delete orderData_['resolution'];\r\n // delete orderData_['startDate'];\r\n\r\n\r\n // let params = {\r\n // collection_name,\r\n // cloudCoverage,\r\n // resolution,\r\n // startDate,\r\n // product_type,\r\n // host_name_,\r\n // order_type:\"catalog\",\r\n // aoi:\"Polygon\",\r\n // params:{\r\n // dataProduct:product_id,\r\n // params:orderData_\r\n // }\r\n // }\r\n\r\n // const token = localStorage.getItem('token');\r\n // const headerOptions = {\r\n // method: 'POST',\r\n // headers: {\r\n // 'Content-Type': 'application/json',\r\n // 'Authorization': `Token ${token}`,\r\n // },\r\n // body:JSON.stringify(params)\r\n // };\r\n // try {\r\n // const response = await fetch(APIs.ESTIMATE_ORDER, headerOptions);\r\n // const {data,code,message } = await response.json();\r\n // if (code == 200){\r\n // setAllOrderParms(params)\r\n // setEstimateCredit(data.cost)\r\n // setAddToCart(true)\r\n // setEstimateOrderLoader(false)\r\n // } else {\r\n // if (data){\r\n // setEstimateCredit(data.cost)\r\n // setError({...allError,cart:message})\r\n // } else {\r\n // setError({...allError,cart:message})\r\n // }\r\n // localStorage.removeItem('aoi_','aoi_value','product_type')\r\n // setEstimateOrderLoader(false)\r\n // }\r\n // } catch (error) {\r\n // setEstimateOrderLoader(false)\r\n // }\r\n\r\n // }\r\n\r\n // const addToCartHandler = async()=>{\r\n // setError({aoi:\"\",cart:\"\"})\r\n // const token = localStorage.getItem('token');\r\n // const headerOptions = {\r\n // method: 'POST',\r\n // headers: {\r\n // 'Content-Type': 'application/json',\r\n // 'Authorization': `Token ${token}`,\r\n // },\r\n // body:JSON.stringify(allOrderParms)\r\n // };\r\n // try {\r\n // const response = await fetch(APIs.PLACE_ORDER, headerOptions);\r\n // const {data,code,message } = await response.json();\r\n // if (code == 200){\r\n // history.push('/data-collections');\r\n // localStorage.removeItem(\"product_id\")\r\n // localStorage.removeItem(\"collection_name\")\r\n // localStorage.removeItem(\"product_type\")\r\n // localStorage.removeItem(\"aoi_\")\r\n // localStorage.removeItem(\"aoi_value\")\r\n // } else {\r\n // setError({aoi:\"\",cart:message})\r\n // }\r\n // } catch (error) {\r\n \r\n // }\r\n // }\r\n\r\n // const onChangeCommittedHanlder = (event,newValue) =>{\r\n // setCloudCoverages(newValue);\r\n // let dataType = []\r\n // if (Object.keys(selectedCollectionData).length>0){\r\n // dataType = selectedCollectionData\r\n // } else{\r\n // dataType = localStorage.getItem('selected_catalog') || \"{}\"\r\n // dataType = JSON.parse(dataType)\r\n // if (Object.keys(dataType).length>0){\r\n // dataType = dataType\r\n // }\r\n // }\r\n // let hostName_ = dataType.hostName\r\n // let cloudCoverage_ = newValue[1] - newValue[0]\r\n // productParamsHandler(false,collectionName_,hostName_,false,cloudCoverage_)\r\n // localStorage.setItem('cloud',JSON.stringify(newValue))\r\n // if (!showImageIdsContainer){\r\n // setImageIdsContainer(true)\r\n // }\r\n // }\r\n\r\n const onChangeCommittedHanlder = (event,newValue) =>{\r\n setCloudCoverages_(newValue);\r\n }\r\n\r\n const angleCommittedHanlder = (event,newValue) =>{\r\n setAngle_(newValue);\r\n }\r\n\r\n const drawPolygonHandler = () =>{\r\n let aoiInit = localStorage.getItem('aoidraw_enable') || '1'\r\n let data = {}\r\n let aoiIsSeletced = true\r\n if (aoiInit == '0'){\r\n aoiInit = '1'\r\n aoiIsSeletced = false\r\n } else {\r\n aoiInit = '0'\r\n }\r\n data.aoiIsSeletced = aoiIsSeletced\r\n data.dataShow = false\r\n orderImageHandler(data)\r\n localStorage.setItem('aoidraw_enable',aoiInit)\r\n // localStorage.setItem('aoi_selected','select')\r\n }\r\n\r\n\r\n const captureMethodHandler = (rid,value)=>{\r\n setCaptureMethodId_(rid)\r\n setCaptureMethodValue_(value)\r\n localStorage.setItem('capture_method',value)\r\n }\r\n\r\n const captureMethodImage_ = () =>{\r\n const imageUrl = `/up42/${dummyData.images[typeValue]}`;\r\n let imageUrlArray_ = [\r\n {rid:5,src:imageUrl,value:'SLC'},\r\n {rid:6,src:imageUrl,value:'GEC'},\r\n {rid:7,src:imageUrl,value:'GEO'},\r\n {rid:8,src:imageUrl,value:'SICD'},\r\n ]\r\n\r\n return(\r\n \r\n {imageUrlArray_.map((item, index) => (\r\n {captureMethodHandler(item.rid,item.value)}}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n )\r\n }\r\n\r\n return (\r\n \r\n \r\n
\r\n Order Image\r\n
\r\n { showLoader ? \r\n \r\n \r\n \r\n :\r\n <>\r\n
\r\n handleTabClick(\"newImagery\")}\r\n >\r\n New Imagery\r\n
\r\n handleTabClick(\"browseArchive\")}\r\n >\r\n Browse Archive\r\n
\r\n \r\n\r\n \r\n { activeTab == 'newImagery' ? \r\n <>\r\n {/* 'Type' section */}\r\n \r\n\r\n {/* Left Section */}\r\n \r\n \r\n Type:\r\n \r\n {newImageryTypeSectionOption()}\r\n {newImageryleftSectionParagraph()}\r\n \r\n \r\n {/* Right Section */}\r\n \r\n {rightSectionImage()}\r\n \r\n \r\n\r\n \r\n {/* Resolution */}\r\n \r\n \r\n Resolution:\r\n \r\n {resolutionSectionImage()}\r\n \r\n\r\n {/*Select ID */}\r\n {/* \r\n \r\n Select Product Type:\r\n {newImageryProductTypes()}\r\n \r\n */}\r\n\r\n\r\n {/*Area Of Interest */}\r\n \r\n \r\n Area of interest:\r\n \r\n \r\n \r\n {newImageryAreaInterest()}\r\n \r\n {drawPolygonHandler()}}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* Date and Setting sections in one row */}\r\n \r\n {/* Date Filter */}\r\n\r\n \r\n \r\n Date:\r\n
\r\n
\r\n Please select image date:\r\n handleDateChange(event,'start')}/>\r\n handleDateChange(event,'end')} />\r\n
\r\n\r\n {/* Setting Section */}\r\n \r\n\r\n { typeValue != 'sar' ? \r\n \r\n \r\n Settings:\r\n
\r\n \r\n
\r\n \r\n

\r\n Angle:\r\n

\r\n \r\n {angle_[0]}\r\n \r\n {angle_[1]}\r\n \r\n
\r\n \r\n

\r\n Cloud %:\r\n

\r\n \r\n {cloudCoverage_[0]}\r\n \r\n {cloudCoverage_[1]}\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
Super Resolution
\r\n
\r\n
\r\n
\r\n :\r\n \r\n \r\n Capture method:\r\n \r\n \r\n {captureMethodImage_()}\r\n \r\n \r\n }\r\n
\r\n
\r\n \r\n {/* CART section */}\r\n \r\n \r\n Price per km2: 10 Stellars:\r\n {/* Total: {estimateCredit} Stellars */}\r\n Total: 2000 Stellars\r\n { allError.cart && \r\n
{allError.cart}
\r\n }\r\n
\r\n \r\n Add To Cart\r\n \r\n \r\n {/* {\r\n addToCart ?\r\n {addToCartHandler()}}>Add To Cart\r\n :\r\n <>\r\n { estimateOrderLoader ?\r\n \r\n \r\n \r\n :\r\n {estimateOrderHandler()}}>Estimate Order\r\n }\r\n \r\n } */}\r\n
\r\n \r\n :\r\n \r\n {setContainerWidth('570px')}} orderImageHandler_={orderImageHandler}/>\r\n \r\n }\r\n
\r\n \r\n }\r\n \r\n { activeTab == 'newImagery' ? newImageryImagesIds() : ''}\r\n \r\n );\r\n\r\n};\r\n\r\nexport default OrderImageComponent;","import React,{useState,useEffect,useCallback} from \"react\";\r\nimport \"./modelDetection.css\";\r\nimport { Box,CircularProgress } from \"@material-ui/core\";\r\nimport polyline from '../../../images/polyline.png'\r\nimport { useSelector, useDispatch } from 'react-redux';\r\n\r\nfunction ModelDetection({data,initData,orderImageHandler_,analyzeOrderHandler_,hideAiArchiveHandler_}) \r\n{\r\n // +++++++++++++++ Force Update State +++++++++++++++++++\r\n const [, updateState] = useState({});\r\n const forceUpdate = useCallback(() => updateState({}), []);\r\n\r\n const {analyseLoader,analyseError} = useSelector((state) => state);\r\n\r\n let modelData_ = data.filter((item)=>{return item.id == initData.id})\r\n let filterModelData_ = modelData_\r\n let oldShowModelData = localStorage.getItem('show_ai_models') || \"{}\"\r\n if (modelData_.length>0){\r\n modelData_ = modelData_[0]\r\n oldShowModelData = JSON.parse(oldShowModelData)\r\n let data = modelData_\r\n data.aoiIsSeletced = false\r\n data.dataShow = false\r\n data.showRaster = true\r\n let modelInit = localStorage.getItem('ai_model_init')\r\n if (modelInit == '1'){\r\n orderImageHandler_(data)\r\n localStorage.removeItem('ai_model_init')\r\n } else {\r\n if (modelData_.id != oldShowModelData.id){\r\n orderImageHandler_(data)\r\n }\r\n }\r\n }\r\n\r\n\r\n // +++++++++++++++ Model Detection Data +++++++++++++++++++ \r\n const modelData = modelData_.modelData\r\n const tags = modelData.modelTag\r\n\r\n // +++++++++++++++ Model Detection Image State +++++++++++++++++++ \r\n const imageData = localStorage.getItem('ai_detection_image') || \"select\"\r\n const [imageSelectedData,setImageSelectedData] = useState(imageData)\r\n\r\n // +++++++++++++++ Model Detection Aoi State +++++++++++++++++++ \r\n const aoiData = localStorage.getItem('ai_detection_aoi') || \"select\"\r\n const [aoiSelectedData,setAoiDataSelectedData] = useState(aoiData)\r\n\r\n // +++++++++++++++ Order Data State +++++++++++++++++++ \r\n const [orderData,setOrderData] = useState({})\r\n\r\n // +++++++++++++++ Contaner Class State +++++++++++++++++++ \r\n const contanerClass_ = localStorage.getItem('ai_contaner_class') || \"\"\r\n const [contanerClass,setContanerClass] = useState(contanerClass_)\r\n\r\n // +++++++++++++++ use Effect +++++++++++++++++++ \r\n useEffect(()=>{\r\n // setImageSelectedData('select')\r\n // setAoiDataSelectedData('select')\r\n // setOrderData({})\r\n },[initData])\r\n\r\n\r\n\r\n // +++++++++++++++ capitalize First Letter +++++++++++++++++++ \r\n const capitalizeFirstLetter = (str) => {\r\n return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();\r\n }\r\n\r\n\r\n // +++++++++++++++ Image +++++++++++++++++++ \r\n const imageHandler = (e,imageOption) => {\r\n const {value} = e.target\r\n if (value !='select'){\r\n let imageObject = imageOption.filter((item_)=>{\r\n return item_.id == value\r\n })\r\n imageObject[0].aoiIsSeletced = true\r\n imageObject[0].dataShow = false\r\n imageObject[0].showRaster = true\r\n imageObject[0].removeRaster = false\r\n localStorage.setItem('map_zoom','14')\r\n orderImageHandler_(imageObject[0])\r\n setImageSelectedData(value)\r\n localStorage.setItem('ai_detection_image',value)\r\n localStorage.setItem('ai_detection_aoi','select')\r\n setAoiDataSelectedData('select')\r\n localStorage.setItem('hide_ai_archive',1)\r\n setContanerClass('activate_detection')\r\n localStorage.setItem('ai_contaner_class','activate_detection')\r\n }\r\n }\r\n\r\n const image = () =>{\r\n const imageOption = modelData.imageOtion\r\n return(\r\n \r\n )\r\n }\r\n\r\n\r\n // +++++++++++++++ Area Interest +++++++++++++++++++ \r\n const aoiHandler = (e) => {\r\n const {value} = e.target\r\n if (value !='select'){\r\n localStorage.setItem('map_zoom','14')\r\n // setAoiDataSelectedData(value)\r\n localStorage.setItem('ai_detection_aoi',value)\r\n let data = modelData.aoiTypeValue[value]\r\n setOrderData({...orderData,...data})\r\n data.aoiIsSeletced = true\r\n data.dataShow = true\r\n orderImageHandler_(data)\r\n localStorage.setItem('ai_detection_image','select')\r\n setImageSelectedData('select')\r\n localStorage.setItem('hide_ai_archive',1)\r\n setContanerClass('activate_detection')\r\n localStorage.setItem('ai_contaner_class','activate_detection')\r\n }\r\n }\r\n\r\n const areaInterest = () => {\r\n const aoiOption = modelData.aoi\r\n return(\r\n \r\n )\r\n }\r\n\r\n\r\n // +++++++++++++++ Add To Cart Handler+++++++++++++++++++ \r\n const addToCartHandler = () => {\r\n analyzeOrderHandler_()\r\n }\r\n\r\n\r\n const drawPolygonHandler = () => {\r\n localStorage.setItem('map_zoom','14')\r\n localStorage.setItem('hide_ai_archive',1)\r\n setContanerClass('activate_detection')\r\n localStorage.setItem('ai_contaner_class','activate_detection')\r\n hideAiArchiveHandler_()\r\n let aoiInit = localStorage.getItem('aoidraw_enable') || '1'\r\n let data = {}\r\n let aoiIsSeletced = true\r\n if (aoiInit == '0') {\r\n aoiInit = '1'\r\n aoiIsSeletced = false\r\n } else {\r\n aoiInit = '0'\r\n }\r\n data.aoiIsSeletced = aoiIsSeletced\r\n data.dataShow = false\r\n localStorage.setItem('aoidraw_enable', aoiInit)\r\n orderImageHandler_(data)\r\n }\r\n\r\n\r\n // +++++++++++++++ Return Jsx +++++++++++++++++++ \r\n return (\r\n
\r\n
\r\n \r\n
\r\n {capitalizeFirstLetter(modelData_.name)}\r\n {data.description}\r\n
\r\n
\r\n {\r\n tags.map((tag,index)=>{\r\n return(\r\n
\r\n

{tag}

\r\n
\r\n )\r\n })\r\n }\r\n
\r\n
\r\n

\r\n {modelData.content}\r\n

\r\n
\r\n \r\n \r\n {/*Image*/}\r\n \r\n \r\n Image:\r\n \r\n \r\n \r\n {image()}\r\n \r\n \r\n \r\n\r\n {/*Area Of Interest */}\r\n \r\n \r\n Area of interest:\r\n \r\n \r\n \r\n {areaInterest()}\r\n \r\n { drawPolygonHandler() }}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {/* Analyze section */}\r\n \r\n \r\n \r\n Price per km2: 10 Stellars:\r\n Total: 2000 Stellars\r\n \r\n {addToCartHandler()}}>\r\n { analyseLoader\r\n ?\r\n \r\n \r\n \r\n :\r\n \"Analyze\"\r\n }\r\n \r\n \r\n { analyseError&&\r\n \r\n {analyseError}\r\n \r\n }\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default ModelDetection;\r\n","export default __webpack_public_path__ + \"static/media/bulding-detection-1.5ac4143f.png\";","export default __webpack_public_path__ + \"static/media/bulding-detection-2.9b2e34d4.png\";","export default __webpack_public_path__ + \"static/media/bulding-detection-3.2a46f06d.png\";","export default __webpack_public_path__ + \"static/media/model-image-1.994aa703.png\";","import { newImageryData } from \"./OrderImageData\"\r\nimport buildingDetection1 from \"../../../images/bulding-detection-1.png\"\r\nimport buildingDetection2 from \"../../../images/bulding-detection-2.png\"\r\nimport buildingDetection3 from \"../../../images/bulding-detection-3.png\"\r\nimport buildingDetectionModel1 from \"../../../images/model-image-1.png\"\r\nconst aoi = newImageryData.aoi\r\nconst aoiTypeValue = newImageryData.aoiTypeValue\r\nexport const AiModelData = [\r\n { \r\n id:1,\r\n rasterId:\"hassanms.adm_new_24\",\r\n shpfile:\"houses.zip\",\r\n lat:24.434092514791253,\r\n log:54.37896460258118,\r\n name:\"Building Detection\",\r\n description:\"50 Stellars / km2\",\r\n src:buildingDetection1,\r\n layerId:\"dwrtdftgt\",\r\n tag:[\r\n \"10cm\",\r\n \"30cm\",\r\n \"OPTICAL\"\r\n ],\r\n modelData:{\r\n modelsrc:buildingDetectionModel1,\r\n modelTag:[\r\n \"Tag\",\r\n \"Tag\",\r\n \"Tag\"\r\n ],\r\n content:\"Lorem ipsum dolor sit amet consectetur. Ut nibh vestibulum erat elit. Cursus a aliquam odio mi tincidunt. Imperdiet non eleifend at lorem quam justo gravida pulvinar. At ultrices et donec arcu et tellus blandit maecenas. Vestibulum odio ornare amet adipiscing netus nisi sed ut mi. Duis molestie ultrices nunc ornare molestie cursus nunc dictumst. Nulla adipiscing morbi ut nisi vitae pulvinar sed suscipit arcu. Nam enim adipiscing accumsan nulla est cursus cras elementum. Rhoncus scelerisque aliquet posuere platea. Urna augue condimentum libero tincidunt tempus tortor interdum suscipit duis.\",\r\n imageOtion:[\r\n { \r\n id:1,\r\n name:\"Option 1\",\r\n rasterId:\"hassanms.adm_new_24\",\r\n shpfile:\"houses.zip\",\r\n lat:24.432524759418115,\r\n log:54.36999626110498,\r\n },\r\n { \r\n id:2,\r\n name:\"Option 2\",\r\n rasterId:\"hassanms.new_42\",\r\n shpfile:\"shape_42.zip\",\r\n lat:24.433467365288156,\r\n log:54.469773470989324,\r\n },\r\n { \r\n id:3,\r\n name:\"Option 3\",\r\n rasterId:\"hassanms.new_43\",\r\n shpfile:\"shape_43.zip\",\r\n lat:24.43721821580547,\r\n log:54.58221167289039,\r\n },\r\n { \r\n id:4,\r\n name:\"Option 4\",\r\n rasterId:\"hassanms.new_58\",\r\n shpfile:\"shape_58.zip\",\r\n lat:24.33233569672214,\r\n log:54.40241716049134,\r\n },\r\n { \r\n id:5,\r\n name:\"Option 5\",\r\n rasterId:\"hassanms.new_59\",\r\n shpfile:\"shape_59.zip\",\r\n lat:24.327017548251142,\r\n log:54.51811692855525,\r\n },\r\n ],\r\n aoi,\r\n aoiTypeValue,\r\n }\r\n },\r\n { \r\n id:2,\r\n rasterId:\"hassanms.new_58\",\r\n shpfile:\"car_new58.zip\",\r\n lat:24.341538137472096,\r\n log:54.47506886971215,\r\n name:\"Car Detection\",\r\n description:\"50 Stellars / km2\",\r\n src:buildingDetection2,\r\n layerId:\"dwrtdftgt\",\r\n tag:[\r\n \"10cm\",\r\n \"30cm\",\r\n \"OPTICAL\"\r\n ],\r\n modelData:{\r\n modelsrc:buildingDetectionModel1,\r\n modelTag:[\r\n \"Tag\",\r\n \"Tag\",\r\n \"Tag\"\r\n ],\r\n content:\"Lorem ipsum dolor sit amet consectetur. Ut nibh vestibulum erat elit. Cursus a aliquam odio mi tincidunt. Imperdiet non eleifend at lorem quam justo gravida pulvinar. At ultrices et donec arcu et tellus blandit maecenas. Vestibulum odio ornare amet adipiscing netus nisi sed ut mi. Duis molestie ultrices nunc ornare molestie cursus nunc dictumst. Nulla adipiscing morbi ut nisi vitae pulvinar sed suscipit arcu. Nam enim adipiscing accumsan nulla est cursus cras elementum. Rhoncus scelerisque aliquet posuere platea. Urna augue condimentum libero tincidunt tempus tortor interdum suscipit duis.\",\r\n imageOtion:[\r\n { \r\n id:1,\r\n name:\"Option 1\",\r\n rasterId:\"hassanms.new_43\",\r\n shpfile:\"car_new43.zip\",\r\n lat:24.43721821580547,\r\n log:54.58221167289039,\r\n },\r\n { \r\n id:2,\r\n name:\"Option 2\",\r\n rasterId:\"hassanms.new_58\",\r\n shpfile:\"car_new58.zip\",\r\n lat:24.341538137472096,\r\n log:54.47506886971215,\r\n },\r\n { \r\n id:3,\r\n name:\"Option 3\",\r\n rasterId:\"hassanms.new_59\",\r\n shpfile:\"car_new59.zip\",\r\n lat:24.345160901118653,\r\n log:54.5792283787538,\r\n },\r\n ],\r\n aoi,\r\n aoiTypeValue\r\n }\r\n },\r\n { \r\n id:3,\r\n rasterId:\"hassanms.palm_tree_80\",\r\n lat:24.09630,\r\n log:55.20447,\r\n name:\"Palm Detection\",\r\n description:\"50 Stellars / km2\",\r\n src:buildingDetection3,\r\n layerId:\"palamdwrtdftgtt\",\r\n tag:[\r\n \"10cm\",\r\n \"30cm\",\r\n \"OPTICAL\"\r\n ],\r\n modelData:{\r\n modelsrc:buildingDetectionModel1,\r\n modelTag:[\r\n \"Tag\",\r\n \"Tag\",\r\n \"Tag\"\r\n ],\r\n content:\"Lorem ipsum dolor sit amet consectetur. Ut nibh vestibulum erat elit. Cursus a aliquam odio mi tincidunt. Imperdiet non eleifend at lorem quam justo gravida pulvinar. At ultrices et donec arcu et tellus blandit maecenas. Vestibulum odio ornare amet adipiscing netus nisi sed ut mi. Duis molestie ultrices nunc ornare molestie cursus nunc dictumst. Nulla adipiscing morbi ut nisi vitae pulvinar sed suscipit arcu. Nam enim adipiscing accumsan nulla est cursus cras elementum. Rhoncus scelerisque aliquet posuere platea. Urna augue condimentum libero tincidunt tempus tortor interdum suscipit duis.\",\r\n imageOtion:[\r\n { \r\n id:1,\r\n name:\"Option 1\",\r\n rasterId:\"hassanms.palm_tree_80\",\r\n shpfile:\"palm_detection.zip\",\r\n lat:24.09630,\r\n log:55.20447,\r\n },\r\n ],\r\n aoi,\r\n aoiTypeValue\r\n }\r\n },\r\n { \r\n id:4,\r\n rasterId:\"hassanms.adm_new_24\",\r\n lat:24.434092514791253,\r\n log:54.37896460258118,\r\n name:\"Building Detection\",\r\n description:\"50 Stellars / km2\",\r\n src:buildingDetection2,\r\n layerId:\"dwrtdftgt\",\r\n tag:[\r\n \"10cm\",\r\n \"30cm\",\r\n \"OPTICAL\"\r\n ],\r\n modelData:{\r\n modelsrc:buildingDetectionModel1,\r\n modelTag:[\r\n \"Tag\",\r\n \"Tag\",\r\n \"Tag\"\r\n ],\r\n content:\"Lorem ipsum dolor sit amet consectetur. Ut nibh vestibulum erat elit. Cursus a aliquam odio mi tincidunt. Imperdiet non eleifend at lorem quam justo gravida pulvinar. At ultrices et donec arcu et tellus blandit maecenas. Vestibulum odio ornare amet adipiscing netus nisi sed ut mi. Duis molestie ultrices nunc ornare molestie cursus nunc dictumst. Nulla adipiscing morbi ut nisi vitae pulvinar sed suscipit arcu. Nam enim adipiscing accumsan nulla est cursus cras elementum. Rhoncus scelerisque aliquet posuere platea. Urna augue condimentum libero tincidunt tempus tortor interdum suscipit duis.\",\r\n imageOtion:[],\r\n aoi,\r\n aoiTypeValue\r\n }\r\n },\r\n { \r\n id:5,\r\n rasterId:\"hassanms.adm_new_24\",\r\n lat:24.434092514791253,\r\n log:54.37896460258118,\r\n name:\"Building Detection\",\r\n description:\"50 Stellars / km2\",\r\n src:buildingDetection2,\r\n layerId:\"dwrtdftgt\",\r\n tag:[\r\n \"10cm\",\r\n \"30cm\",\r\n \"OPTICAL\"\r\n ],\r\n modelData:{\r\n modelsrc:buildingDetectionModel1,\r\n modelTag:[\r\n \"Tag\",\r\n \"Tag\",\r\n \"Tag\"\r\n ],\r\n content:\"Lorem ipsum dolor sit amet consectetur. Ut nibh vestibulum erat elit. Cursus a aliquam odio mi tincidunt. Imperdiet non eleifend at lorem quam justo gravida pulvinar. At ultrices et donec arcu et tellus blandit maecenas. Vestibulum odio ornare amet adipiscing netus nisi sed ut mi. Duis molestie ultrices nunc ornare molestie cursus nunc dictumst. Nulla adipiscing morbi ut nisi vitae pulvinar sed suscipit arcu. Nam enim adipiscing accumsan nulla est cursus cras elementum. Rhoncus scelerisque aliquet posuere platea. Urna augue condimentum libero tincidunt tempus tortor interdum suscipit duis.\",\r\n imageOtion:[],\r\n aoi,\r\n aoiTypeValue\r\n }\r\n },\r\n { \r\n id:6,\r\n rasterId:\"hassanms.adm_new_24\",\r\n lat:24.434092514791253,\r\n log:54.37896460258118,\r\n name:\"Building Detection\",\r\n description:\"50 Stellars / km2\",\r\n src:buildingDetection2,\r\n layerId:\"dwrtdftgt\",\r\n tag:[\r\n \"10cm\",\r\n \"30cm\",\r\n \"OPTICAL\"\r\n ],\r\n modelData:{\r\n modelsrc:buildingDetectionModel1,\r\n modelTag:[\r\n \"Tag\",\r\n \"Tag\",\r\n \"Tag\"\r\n ],\r\n content:\"Lorem ipsum dolor sit amet consectetur. Ut nibh vestibulum erat elit. Cursus a aliquam odio mi tincidunt. Imperdiet non eleifend at lorem quam justo gravida pulvinar. At ultrices et donec arcu et tellus blandit maecenas. Vestibulum odio ornare amet adipiscing netus nisi sed ut mi. Duis molestie ultrices nunc ornare molestie cursus nunc dictumst. Nulla adipiscing morbi ut nisi vitae pulvinar sed suscipit arcu. Nam enim adipiscing accumsan nulla est cursus cras elementum. Rhoncus scelerisque aliquet posuere platea. Urna augue condimentum libero tincidunt tempus tortor interdum suscipit duis.\",\r\n imageOtion:[],\r\n aoi,\r\n aoiTypeValue\r\n }\r\n }\r\n]","import React,{useState,useCallback, useEffect} from \"react\";\r\n\r\nimport { Box,CircularProgress } from \"@material-ui/core\";\r\nimport \"./aiModel.css\";\r\nimport ModelDetection from \"./ModelDetection\";\r\nimport {AiModelData} from \"./AiModelData.js\"\r\n\r\nexport default function AiModels({orderImageHandler,analyzeOrderHandler_,hideArchive_}) {\r\n\r\n // +++++++++++++++ Force Update State +++++++++++++++++++\r\n const [, updateState] = useState({});\r\n const forceUpdate = useCallback(() => updateState({}), []);\r\n\r\n // +++++++++++++++ Ai Models State +++++++++++++++++++\r\n const [aiModelData,setAiModelData] = useState(AiModelData)\r\n\r\n // +++++++++++++++ Ai Models Loader State +++++++++++++++++++\r\n const [showAiVaultLoader,setAiVaultLoader] = useState(false)\r\n\r\n // +++++++++++++++ Ai Models Model State +++++++++++++++++++\r\n let showAiModels_ = localStorage.getItem('show_ai_models') || \"{}\"\r\n showAiModels_ = JSON.parse(showAiModels_)\r\n const [showAiModels,setShowAiModels] = useState(showAiModels_)\r\n let modelActive_ = localStorage.getItem('model_active') || 0\r\n const [modelActiveId,setModelActive] = useState(parseInt(modelActive_))\r\n const [aiModelsData,setAiModelsData] = useState({})\r\n\r\n // +++++++++++++++ Ai Models Filter Data State +++++++++++++++++++\r\n const [filterDataExist,setFilterData] = useState(true)\r\n\r\n\r\n // +++++++++++++++ Ai Models Model State +++++++++++++++++++\r\n let hideAiArchive_ = localStorage.getItem('hide_ai_archive') || 0\r\n const [hideAiArchive,setHideAiArchive] = useState(hideAiArchive_)\r\n\r\n \r\n useEffect(()=>{\r\n forceUpdate()\r\n },hideArchive_)\r\n\r\n\r\n // +++++++++++++++ Ai Model Search Handler +++++++++++++++++++ \r\n const searchVaultHandler = (e) =>{\r\n const {value} = e.target\r\n if (value != '' || value != ' '){\r\n setAiVaultLoader(true)\r\n const filteredData = AiModelData.filter((data,)=>{\r\n const regex = new RegExp(`${value}`, 'i');\r\n return (\r\n regex.test(data.name) ||\r\n regex.test(data.description) ||\r\n data.tag.some((tag) => regex.test(tag))\r\n ); \r\n })\r\n setTimeout(()=>{\r\n setAiVaultLoader(false)\r\n setAiModelData(filteredData)\r\n },600)\r\n \r\n } else {\r\n setAiModelData(AiModelData)\r\n }\r\n } \r\n\r\n\r\n // +++++++++++++++ Ai Model Vault +++++++++++++++++++ \r\n const aiModelVaultHandler = (modelData) =>{\r\n let poupname = modelData.name.replace(' Detection','')\r\n localStorage.setItem('popup_text_name',poupname)\r\n localStorage.removeItem('ai_contaner_class')\r\n setAiModelsData(modelData)\r\n localStorage.setItem('model_active',modelData.id)\r\n setShowAiModels({id:modelData.id,rasterId:modelData.rasterId})\r\n localStorage.setItem('show_ai_models',JSON.stringify({id:modelData.id,rasterId:modelData.rasterId}))\r\n modelData.aoiIsSeletced = false \r\n modelData.dataShow = false \r\n modelData.showRaster = true \r\n modelData.removeRaster = false\r\n orderImageHandler(modelData)\r\n localStorage.removeItem('ai_detection_image')\r\n localStorage.removeItem('ai_detection_aoi')\r\n forceUpdate()\r\n }\r\n\r\n const aiModelVault = () =>{\r\n return(\r\n <>\r\n { \r\n aiModelData.map((item_,index)=>{\r\n const vaultTags = item_.tag\r\n return(\r\n {aiModelVaultHandler(item_)}} >\r\n \r\n {/* First Layer */}\r\n \r\n {/* Image */}\r\n \r\n \r\n {/* Second Layer */}\r\n \r\n {item_.name}\r\n {item_.description}\r\n \r\n {\r\n vaultTags.map((tag,index)=>{\r\n return(\r\n \r\n {tag}\r\n \r\n )\r\n })\r\n }\r\n \r\n \r\n \r\n \r\n )\r\n })\r\n }\r\n \r\n )\r\n }\r\n\r\n\r\n const hideAiArchiveHandler = () =>{\r\n forceUpdate()\r\n }\r\n\r\n\r\n\r\n // +++++++++++++++ Return Jsx +++++++++++++++++++ \r\n return (\r\n \r\n\r\n { hideAiArchive == 0 &&\r\n \r\n
\r\n AI Models\r\n
\r\n \r\n \r\n \r\n Models Vault:\r\n \r\n
\r\n {searchVaultHandler(e)}}\r\n />\r\n \r\n
\r\n \r\n { showAiVaultLoader ? \r\n \r\n \r\n \r\n :\r\n <>\r\n {aiModelVault()}\r\n \r\n }\r\n \r\n
\r\n
\r\n
\r\n }\r\n\r\n \r\n {\r\n !showAiModels.id ? <>:\r\n }\r\n \r\n
\r\n );\r\n}\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHuSURBVHgB5Ze7L0NRHMe/5xJS0XqEobFKLAaDx4YwGD0mi7CLxegRFRKTSWMufwCzZ8qmFoOIgU3TEI96VL3a4/xOVQS95xdp7h18kpve3nx7v/39zu/8zjkCH8TuZRtSCAigQQLlyD9hWAj5fWKJvghteiunIBGAEwgE/GViWsTu5CDSCMFJCtBuKdMhOA0NaSwuJRxGGcYtuIAqrHJXjIn/Z1zIEYV2E1jeTRp1Po9Ab5MHg60lRi0rYjK9e0yrcpS219lVCsG1B84rzRFHTl8QvU5hrMdrjGRBmQbXEtg7eUFLbZGt1hjxSiST4s76YpP0849tHT4btcaIN9VLaOyC6wlw8Crt6n4SI12l+v5PxhuHT7hPZhrbasRcXF85ir7aptvW+Dj6pj+3J6pU1JlRyRVF9CaFmooCXQ8ds5e6NuyM2fO4e/4KjeMXWNn/GTk965i51IZc+A0ku5b8tqTIbxoGrAZCLA9X6jT+lr6+Zo8egpbaYlUTadb7WMYDizfgwWseBCvVFKmpa2UvrWXATvX2ZDVLVzd6ztLZGlPDJ2iacJnr9+mplf1tLlzZ+hDubQRUH4rDBSyV5wM4T9hSm+sAnEYdZSy/V+zQsQJOQUcYdX76XGo+jjJD6rYdeYbqSA+pxLS/QoTp2Tt7+cYaSeuz2wAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHkSURBVHgB1ZdLLANBGMf/s6hXPSpFGk5uDsTJ40Rw9zgSKRIn3DmIlUi44yot4UjvHqmTxEni4uQmjapotNVGteObVU1abXcqzW78Lrvb/TK/zvd9M9lhSMGffYN0UQHWQ0+NKD1ecLhYi8MtHlhKuv4tNQSVNTs2GPf7nKR3wViGFJLOwnhURmnmMBweVGAKrNEkMWCauFw28OPuBpGjHe2ac6COTtQtrMLS3QcZpJpLyF5XZqC0tqGqfxSstu5XTPT8FEn/I2xbB1JyKfHL8hiSkRDsOx6S1ueMSYbfKG4cZfTnmrYP9YaUq/Hnwz2qRyY0aWBumGZ3kn4XPTtBYH4YirUelQMjiOcpRTZSNRapFXJB7dQSLF296XeWbrpnS9o9D4fyZuRP4poxJyLHu3j3uFEz7sx4V9bajiprAyIeF2IXp1qsDFI1FvULbi7qprGCMmFb25OadVFbZuz6LJ3ybET6ZZeStDjx9JjRUIWoHp3UOrskYtHJCVqjMgipff9SN06quYRUdLN1erlgXJh2NtGEMvyPvVrMSC+m5GKxlOJFDKyHSV8gJtbYTDELwgRIzG9hPF6F+lqF0dABQmE2xxVgqFxldoeb/TzxAB1luHaqGEKpYdRHXCvpBp2bvOKnL7vYt2FYDz5hAAAAAElFTkSuQmCC\"","import { newImageryData } from \"../OrderImageData\"\r\nimport buildingDetection1 from \"../../../../images/bulding-detection-1.png\"\r\nimport carPolIcon from '../../../../images/carPoL.png'\r\nimport buildPoL from '../../../../images/BuildPoL.png'\r\n\r\nconst aoi = newImageryData.aoi\r\nconst aoiTypeValue = newImageryData.aoiTypeValue\r\n\r\nexport const patternLifeData = [\r\n { \r\n id:1,\r\n rasterId:\"hassanms.adm_new_24\",\r\n shpfile:\"houses.zip\",\r\n footPrint:\"Building\",\r\n lat:24.434092514791253,\r\n log:54.37896460258118,\r\n name:\"Building Detection\",\r\n description:\"50 Stellars / km2\",\r\n src:buildingDetection1,\r\n layerId:\"dwrtdftgt\",\r\n tag:[\r\n \"10cm\",\r\n \"30cm\",\r\n \"OPTICAL\"\r\n ],\r\n aoi:[\r\n { \r\n id:1,\r\n name:\"Option 1\",\r\n rasterId:\"hassanms.adm_new_24\",\r\n shpfile:\"houses.zip\",\r\n lat:24.432524759418115,\r\n log:54.36999626110498,\r\n },\r\n { \r\n id:2,\r\n name:\"Option 2\",\r\n rasterId:\"hassanms.new_42\",\r\n shpfile:\"shape_42.zip\",\r\n lat:24.433467365288156,\r\n log:54.469773470989324,\r\n },\r\n { \r\n id:3,\r\n name:\"Option 3\",\r\n rasterId:\"hassanms.new_59\",\r\n shpfile:\"shape_59.zip\",\r\n lat:24.345160901118653,\r\n log:54.5792283787538,\r\n }\r\n ],\r\n },\r\n { \r\n id:2,\r\n rasterId:\"hassanms.new_58\",\r\n shpfile:\"car_new58.zip\",\r\n lat:24.341538137472096,\r\n log:54.47506886971215,\r\n footPrint:\"Car\",\r\n name:\"Car Detection\",\r\n description:\"50 Stellars / km2\",\r\n src:buildingDetection1,\r\n layerId:\"dwrtdftgt\",\r\n tag:[\r\n \"10cm\",\r\n \"30cm\",\r\n \"OPTICAL\"\r\n ],\r\n aoi:[\r\n { \r\n id:1,\r\n name:\"Option 1\",\r\n rasterId:\"hassanms.new_58\",\r\n shpfile:\"car_new58.zip\",\r\n lat:24.341538137472096,\r\n log:54.47506886971215,\r\n },\r\n { \r\n id:2,\r\n name:\"Option 2\",\r\n rasterId:\"hassanms.new_59\",\r\n shpfile:\"car_new59.zip\",\r\n lat:24.345160901118653,\r\n log:54.5792283787538,\r\n },\r\n ]\r\n },\r\n { \r\n id:3,\r\n rasterId:\"hassanms.car_new_60\",\r\n shpfile:\"car_shap.zip\",\r\n footPrint:\"Car\",\r\n lat:24.425652735078057,\r\n log:54.53105658255902,\r\n name:\"Building Detection\",\r\n description:\"50 Stellars / km2\",\r\n src:buildingDetection1,\r\n layerId:\"dwrtdftgt\",\r\n tag:[\r\n \"10cm\",\r\n \"30cm\",\r\n \"OPTICAL\"\r\n ],\r\n modelData:{\r\n aoi,\r\n aoiTypeValue\r\n }\r\n },\r\n { \r\n id:4,\r\n rasterId:\"hassanms.car_new_60\",\r\n shpfile:\"car_shap.zip\",\r\n footPrint:\"Car\",\r\n lat:24.425652735078057,\r\n log:54.53105658255902,\r\n name:\"Building Detection\",\r\n description:\"50 Stellars / km2\",\r\n src:buildingDetection1,\r\n layerId:\"dwrtdftgt\",\r\n tag:[\r\n \"10cm\",\r\n \"30cm\",\r\n \"OPTICAL\"\r\n ],\r\n modelData:{\r\n aoi,\r\n aoiTypeValue\r\n }\r\n },\r\n { \r\n id:5,\r\n rasterId:\"hassanms.car_new_60\",\r\n shpfile:\"car_shap.zip\",\r\n footPrint:\"Car\",\r\n lat:24.425652735078057,\r\n log:54.53105658255902,\r\n name:\"Building Detection\",\r\n description:\"50 Stellars / km2\",\r\n src:buildingDetection1,\r\n layerId:\"dwrtdftgt\",\r\n tag:[\r\n \"10cm\",\r\n \"30cm\",\r\n \"OPTICAL\"\r\n ],\r\n modelData:{\r\n aoi,\r\n aoiTypeValue\r\n }\r\n },\r\n { \r\n id:6,\r\n rasterId:\"hassanms.car_new_60\",\r\n shpfile:\"car_shap.zip\",\r\n footPrint:\"Car\",\r\n lat:24.425652735078057,\r\n log:54.53105658255902,\r\n name:\"Building Detection\",\r\n description:\"50 Stellars / km2\",\r\n src:buildingDetection1,\r\n layerId:\"dwrtdftgt\",\r\n tag:[\r\n \"10cm\",\r\n \"30cm\",\r\n \"OPTICAL\"\r\n ],\r\n modelData:{\r\n aoi,\r\n aoiTypeValue\r\n }\r\n }\r\n]\r\n\r\nexport const lifeData = [\r\n {\r\n id:1,\r\n name:\"Car Detection PoL\",\r\n icon:carPolIcon,\r\n star: \"2024-01-05\",\r\n end: \"2024-01-20\",\r\n value: \"Week\",\r\n days: \"2\",\r\n cars: \"4539\",\r\n change: \"45.56%\",\r\n status: \"up\",\r\n selected_cars: \"201\",\r\n selected_change: \"6.05%\",\r\n selected_change_staus: \"down\"\r\n },\r\n {\r\n id:2,\r\n name:\"Building Footprint PoL\",\r\n icon:buildPoL,\r\n star: \"2023-12-05\",\r\n end: \"2024-01-20\",\r\n value: \"Week\",\r\n days: \"5\",\r\n cars: \"5049\",\r\n change: \"50.56%\",\r\n status: \"up\",\r\n selected_cars: \"504\",\r\n selected_change: \"8.05%\",\r\n selected_change_staus: \"down\"\r\n }\r\n]\r\n\r\n","import React,{useEffect, useState} from 'react'\r\nimport { Box,CircularProgress, Typography,Grid,Button,Dialog,DialogActions,DialogContent,DialogContentText,DialogTitle,Divider } from '@material-ui/core'\r\nimport polyline from '../../../../images/polyline.png'\r\nimport APIs from '../../../../Api'\r\nimport shp from 'shpjs';\r\nimport * as turf from '@turf/turf';\r\nimport { useDispatch } from 'react-redux';\r\nimport { analyzeProjectSignal,analyzeProjectPopUpSignal} from '../../../../store/actions/auth';\r\n\r\nexport default function FootprintModel({orderImageHandler,getAllPatternLife,backHandler,data}) {\r\n\r\n const dispatch = useDispatch()\r\n\r\n\r\n useEffect(()=>{\r\n let showFootprintLayer = localStorage.getItem('show_footprint_layer')\r\n if (showFootprintLayer == '1'){\r\n data.aoiIsSeletced = false\r\n data.dataShow = false\r\n data.showRaster = true\r\n orderImageHandler(data)\r\n localStorage.setItem('show_footprint_layer','0')\r\n } \r\n },[data])\r\n\r\n\r\n\r\n // +++++++++++++++ Project Name State +++++++++++++++++++\r\n let projectName_ = localStorage.getItem('footprint_data') || '{}'\r\n projectName_ = JSON.parse(projectName_)\r\n const [projectName,setProjectName] = useState(projectName_.name)\r\n\r\n\r\n // +++++++++++++++ Date State +++++++++++++++++++\r\n const currentDate = new Date();\r\n currentDate.setDate(currentDate.getDate() - 1);\r\n const startDate_ = currentDate.toISOString().slice(0, 10);\r\n const endDate_ = new Date().toISOString().slice(0, 10);\r\n const [startDate, setStartDate] = useState(startDate_)\r\n const [endDate, setEndDate] = useState(endDate_)\r\n\r\n // +++++++++++++++ Selected Days State +++++++++++++++++++\r\n let selectedDays_ = localStorage.getItem('footprint_data') || '{}'\r\n selectedDays_ = JSON.parse(selectedDays_)\r\n const [selectedDays,setSelectedDays] = useState(selectedDays_.days)\r\n\r\n // +++++++++++++++ Frequency Value State +++++++++++++++++++\r\n let frequencyValue_ = localStorage.getItem('footprint_data') || '{}'\r\n frequencyValue_ = JSON.parse(frequencyValue_)\r\n const [frequencyValue,setFrequencyValue] = useState(frequencyValue_.value)\r\n\r\n // +++++++++++++++ Aoi State +++++++++++++++++++\r\n const storageAoiType_ = localStorage.getItem('aoi_selected_image') || 'select'\r\n const [aoiType_,setAoiType_] = useState(storageAoiType_)\r\n const [aoiData_,setAoiData] = useState({})\r\n\r\n // +++++++++++++++ Number of building State +++++++++++++++++++\r\n const noOfBuilding = localStorage.getItem('no_of_building') || '0'\r\n const [noOfBuilding_,setNoOfBuilding] = useState(noOfBuilding)\r\n\r\n // +++++++++++++++ Number of building State +++++++++++++++++++\r\n const noOfTotalAreaBuilding = localStorage.getItem('area_of_building') || '0'\r\n const [noOfTotalAreaBuilding_,setNoOfTotalAreaBuilding] = useState(noOfTotalAreaBuilding)\r\n\r\n let aoiArea = localStorage.getItem('aoi_area') || '0'\r\n const [aoiArea_,setAoiArea_] = useState(aoiArea)\r\n \r\n\r\n // +++++++++++++++ Order State +++++++++++++++++++\r\n let footprintData_ = localStorage.getItem('footprint_data') || '{}'\r\n footprintData_ = JSON.parse(footprintData_)\r\n const [footprintData,setFootprintData] = useState(footprintData_)\r\n\r\n // +++++++++++++++ Start Analysis State +++++++++++++++++++\r\n const [showAnalysisLoader,setShowAnalysisLoader] = useState(false)\r\n\r\n // +++++++++++++++ Start Analysis State +++++++++++++++++++\r\n const [aoiError,setAoiError] = useState('')\r\n\r\n\r\n // +++++++++++++++ open popup State +++++++++++++++++++\r\n const [open, setOpen] = React.useState(false);\r\n\r\n \r\n // +++++++++++++++ generate Short UUID +++++++++++++++++++\r\n function generateShortUUID() {\r\n const array = new Uint8Array(4);\r\n crypto.getRandomValues(array);\r\n const shortUUID = Array.from(array, (byte) => byte.toString(16).padStart(2, '0')).join('');\r\n return shortUUID;\r\n }\r\n\r\n // +++++++++++++++ Project Name Handler +++++++++++++++++++\r\n const nameHandler = (e) =>{\r\n const {value} = e.target\r\n let id = generateShortUUID()\r\n let orderData = {...footprintData,name:value,id}\r\n setFootprintData(orderData)\r\n localStorage.setItem('footprint_data',JSON.stringify(orderData))\r\n setProjectName(value)\r\n }\r\n\r\n // +++++++++++++++ Date Handler +++++++++++++++++++\r\n const handleDateChange = (e, type) => {\r\n const date_ = e.target.value\r\n if (type == 'start') {\r\n setStartDate(date_);\r\n } else {\r\n setEndDate(date_);\r\n }\r\n let orderData = {...footprintData,[type]:date_}\r\n setFootprintData(orderData)\r\n localStorage.setItem('footprint_data',JSON.stringify(orderData))\r\n };\r\n\r\n // +++++++++++++++ Foot Print Frequency Value +++++++++++++++++++\r\n const frequencyValueHandler = (e) =>{\r\n const {value} = e.target\r\n let orderData = {...footprintData,value}\r\n setFootprintData(orderData)\r\n setFrequencyValue(value)\r\n localStorage.setItem('footprint_data',JSON.stringify(orderData))\r\n }\r\n\r\n // +++++++++++++++ Foot Print Frequency Days +++++++++++++++++++\r\n const footPrintDaysHandler = (e) =>{\r\n const {value} = e.target\r\n if (value != 'select'){\r\n let orderData = {...footprintData,days:value}\r\n setFootprintData(orderData)\r\n localStorage.setItem('footprint_data',JSON.stringify(orderData))\r\n setSelectedDays(value)\r\n }\r\n }\r\n\r\n const footPrintFrequencyDays = () => {\r\n return(\r\n \r\n )\r\n }\r\n\r\n // +++++++++++++++ Aoi +++++++++++++++++++\r\n const aoiHandler = (e) =>{\r\n localStorage.setItem('aoidraw_enable','1')\r\n const {value} = e.target\r\n if (value != 'select'){\r\n let filterAoi = data.aoi.filter((item)=>{\r\n return item.id == parseInt(value)\r\n })\r\n if (filterAoi.length > 0){\r\n let data_ = filterAoi[0]\r\n data_.aoiIsSeletced = false\r\n data_.dataShow = false\r\n data_.showRaster = true\r\n orderImageHandler(data_)\r\n setAoiData(data)\r\n setAoiType_(value)\r\n localStorage.setItem('aoi_selected_image',value)\r\n let orderData = {...footprintData,aoiType:filterAoi[0].rasterId}\r\n setFootprintData(orderData)\r\n localStorage.setItem('footprint_data',JSON.stringify(orderData))\r\n let selectFootPrintData = localStorage.getItem('select_footPrint_data')\r\n selectFootPrintData = JSON.parse(selectFootPrintData)\r\n selectFootPrintData = {...selectFootPrintData,rasterId:filterAoi[0].rasterId,shpfile:filterAoi[0].shpfile}\r\n localStorage.setItem('select_footPrint_data',JSON.stringify(selectFootPrintData))\r\n } \r\n }\r\n }\r\n\r\n const footPrintAoi = () =>{\r\n let aoiType = data.aoi\r\n return(\r\n <>\r\n \r\n \r\n )\r\n }\r\n\r\n // +++++++++++++++ Draw Polygon Handler +++++++++++++++++++\r\n const drawPolygonHandler = () =>{\r\n\r\n localStorage.removeItem('no_of_building','14')\r\n localStorage.removeItem('area_of_building','14')\r\n localStorage.removeItem('aoi_area','14')\r\n\r\n\r\n localStorage.setItem('map_zoom','14')\r\n let aoiInit = localStorage.getItem('aoidraw_enable') || '1'\r\n let data = {}\r\n let aoiIsSeletced = true\r\n if (aoiInit == '0'){\r\n aoiInit = '1'\r\n aoiIsSeletced = false\r\n } else {\r\n aoiInit = '0'\r\n }\r\n data.aoiIsSeletced = aoiIsSeletced\r\n data.dataShow = false\r\n \r\n orderImageHandler(data)\r\n localStorage.setItem('aoidraw_enable',aoiInit)\r\n }\r\n\r\n const startAnalysis = () =>{\r\n let footprintData_ = localStorage.getItem('footprint_data') || \"{}\"\r\n footprintData_ = JSON.parse(footprintData_)\r\n if (!footprintData_.start){\r\n footprintData_.start = startDate\r\n } \r\n if (!footprintData_.end){\r\n footprintData_.end = endDate\r\n }\r\n if (Object.keys(footprintData_).length >= 3){ \r\n setShowAnalysisLoader(true)\r\n footprintData_.change = '45.56%'\r\n footprintData_.status = 'up'\r\n footprintData_.selected_change = '6.05%'\r\n footprintData_.selected_change_staus = 'down'\r\n placeFootPrint(footprintData_)\r\n } \r\n }\r\n\r\n function generateShortUUID() {\r\n const array = new Uint8Array(4);\r\n crypto.getRandomValues(array);\r\n const shortUUID = Array.from(array, (byte) => byte.toString(16).padStart(2, '0')).join('');\r\n return shortUUID;\r\n }\r\n\r\n const placeFootPrint = async(data) => {\r\n let selectFootPrintData = localStorage.getItem('select_footPrint_data')\r\n selectFootPrintData = JSON.parse(selectFootPrintData)\r\n const image = window.location.origin+\"/up42/\"+selectFootPrintData.shpfile;\r\n let selectedCoordinator = localStorage.getItem(\"archive_coordinator\") || \"{}\"\r\n let strSelectedCoordinator = selectedCoordinator\r\n selectedCoordinator = JSON.parse(selectedCoordinator)\r\n let process = false\r\n let coordinates = []\r\n if (Object.keys(selectedCoordinator).length > 0){\r\n process = true\r\n coordinates = selectedCoordinator.coordinates\r\n }\r\n if (process){\r\n let geojson = await shp(image)\r\n\r\n \r\n // let totalArea = 0;\r\n // geojson.features.forEach((feature) => {\r\n // if (feature.geometry && feature.geometry.coordinates){\r\n // const featurePolygon = turf.polygon(feature.geometry.coordinates);\r\n // const areaInSquareMeters = turf.area(featurePolygon);\r\n // totalArea += areaInSquareMeters;\r\n // }\r\n // });\r\n // const totalAreaInKm2 = totalArea / 1e6;\r\n // localStorage.setItem('area_of_building',totalAreaInKm2)\r\n // setNoOfTotalAreaBuilding(totalAreaInKm2)\r\n \r\n \r\n let totalObject = geojson.features.length\r\n const polygon_ = coordinates\r\n const drawnPolygon = turf.polygon(polygon_);\r\n let selectedFeatures = []\r\n\r\n selectedFeatures = geojson.features.filter((feature) => {\r\n if (feature.geometry && feature.geometry.coordinates){\r\n const featurePolygon = turf.polygon(feature.geometry.coordinates);\r\n return turf.booleanWithin(featurePolygon, drawnPolygon);\r\n } else {\r\n return false\r\n }\r\n });\r\n\r\n\r\n let totalArea = 0;\r\n selectedFeatures.forEach((feature) => {\r\n if (feature.geometry && feature.geometry.coordinates){\r\n const featurePolygon = turf.polygon(feature.geometry.coordinates);\r\n const areaInSquareMeters = turf.area(featurePolygon);\r\n totalArea += areaInSquareMeters;\r\n }\r\n });\r\n\r\n const totalAreaInKm2 = totalArea / 1e6;\r\n localStorage.setItem('area_of_building',totalAreaInKm2)\r\n setNoOfTotalAreaBuilding(totalAreaInKm2)\r\n\r\n let selectedObject = selectedFeatures.length\r\n localStorage.setItem('no_of_building',selectedObject)\r\n setNoOfBuilding(selectedObject)\r\n\r\n let footPrintData = {\r\n \"name\": data.name,\r\n \"startDate\": data.start,\r\n \"endDate\": data.end,\r\n \"f_value\": data.value,\r\n \"f_days\": data.days,\r\n \"total_object\": totalObject.toString(),\r\n \"change_object\": data.change,\r\n \"status\": data.status,\r\n \"selected_object\":selectedObject.toString(),\r\n \"s_change_object\": data.selected_change,\r\n \"s_status_object\": data.selected_change_staus,\r\n \"coordinator\": strSelectedCoordinator,\r\n \"graph_change\": \"\",\r\n \"geoJson\":selectedFeatures,\r\n \"area_of_building\":totalAreaInKm2.toFixed(2).toString(),\r\n \"aoi_area\":aoiArea_.toString()\r\n };\r\n const token = localStorage.getItem('token');\r\n footPrintData.token = token\r\n footPrintData.key_url = APIs.PLACE_FOOTPRINT.toString()\r\n footPrintData.uuid = generateShortUUID()\r\n const headerOptions = {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(footPrintData),\r\n };\r\n \r\n try {\r\n let model_api = `${APIs.MODEL_DOMIN}/analyze_footprint/`\r\n const response = await fetch(model_api, headerOptions);\r\n const { data, code, message } = await response.json();\r\n if (code === 200) {\r\n getAllPatternLife()\r\n setTimeout(() => {\r\n localStorage.setItem('show_life_model_','0')\r\n localStorage.setItem('show_footprint_model_','0')\r\n setProjectName('')\r\n setSelectedDays('')\r\n setEndDate()\r\n setStartDate()\r\n setFrequencyValue('')\r\n setAoiType_('select')\r\n setFootprintData({})\r\n localStorage.removeItem('footprint_data')\r\n backHandler()\r\n localStorage.setItem('get_all_life',0)\r\n dispatch(analyzeProjectSignal(true))\r\n }, 4000);\r\n \r\n localStorage.setItem('popup_signal','1')\r\n dispatch(analyzeProjectPopUpSignal(true))\r\n\r\n } else {\r\n //console.log('null');\r\n }\r\n setShowAnalysisLoader(false)\r\n } catch (error) {\r\n setShowAnalysisLoader(false)\r\n\r\n }\r\n } else {\r\n setAoiError('Area of intrest required.')\r\n setShowAnalysisLoader(false)\r\n }\r\n }\r\n\r\n const handleClickOpen = () => {\r\n setOpen(true);\r\n };\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n // getAllPatternLife()\r\n // setTimeout(() => {\r\n // localStorage.setItem('show_life_model_','0')\r\n // localStorage.setItem('show_footprint_model_','0')\r\n // setProjectName('')\r\n // setSelectedDays('')\r\n // setEndDate()\r\n // setStartDate()\r\n // setFrequencyValue('')\r\n // setAoiType_('select')\r\n // setFootprintData({})\r\n // localStorage.removeItem('footprint_data')\r\n // backHandler()\r\n // localStorage.setItem('get_all_life',0)\r\n // }, 2000);\r\n };\r\n\r\n\r\n return (\r\n <> \r\n {/*Project name:*/}\r\n \r\n \r\n \r\n Project name:\r\n \r\n
\r\n {nameHandler(e)}}\r\n />\r\n
\r\n
\r\n
\r\n \r\n {/*Period / Frequency: */}\r\n \r\n \r\n \r\n \r\n Period:\r\n \r\n \r\n handleDateChange(event, 'start')} />\r\n handleDateChange(event, 'end')} /> \r\n \r\n \r\n \r\n \r\n \r\n \r\n Frequency:\r\n \r\n \r\n {frequencyValueHandler(e)}} className='frequency_value' placeholder=\"Value\"/>\r\n {footPrintFrequencyDays()}\r\n \r\n \r\n \r\n \r\n\r\n {/*Area Of Interest */}\r\n \r\n \r\n Area of interest:\r\n \r\n \r\n \r\n {footPrintAoi()}\r\n \r\n {drawPolygonHandler()}}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {/* Analysis section */}\r\n \r\n \r\n Price for full period:\r\n Total: 65000 Stellars\r\n \r\n {\r\n showAnalysisLoader ?\r\n \r\n :\r\n {startAnalysis(e)}}>Start Analysis\r\n }\r\n \r\n { aoiError&&\r\n \r\n {aoiError}\r\n \r\n }\r\n\r\n {/* \r\n \r\n \r\n \r\n \r\n \r\n \r\n Number of buildings:\r\n \r\n \r\n {noOfBuilding_}\r\n \r\n \r\n \r\n \r\n \r\n \r\n Area of select AOI:\r\n \r\n \r\n {aoiArea_}km2\r\n \r\n \r\n \r\n \r\n \r\n \r\n Building area:\r\n \r\n \r\n {noOfTotalAreaBuilding_}km2\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n */}\r\n \r\n )\r\n}","import React,{useState} from 'react'\r\nimport { Box,CircularProgress } from '@material-ui/core'\r\nimport {patternLifeData} from './PatternLifeData'\r\nimport ArrowBackIosIcon from '@material-ui/icons/ArrowBackIos';\r\nimport FootprintModel from './FootprintModel'\r\n\r\nexport default function LifeModel({backToLifeHandler_,orderImageHandler,getAllPatternLife_}) {\r\n\r\n // +++++++++++++++ Pattern Life State +++++++++++++++++++\r\n const [patternLifeData_,setPatternLifeData_] = useState(patternLifeData)\r\n\r\n // +++++++++++++++ Loader State +++++++++++++++++++\r\n const [showLoader,setVaultLoader] = useState(false)\r\n\r\n // +++++++++++++++ Loader State +++++++++++++++++++\r\n let showFootPrintModel_ = localStorage.getItem('show_footprint_model_') || '0'\r\n let show_foot_print_mode = true\r\n if (showFootPrintModel_ == '0'){\r\n show_foot_print_mode = false\r\n }\r\n const [showFootPrintModel,setShowFootPrintModel] = useState(show_foot_print_mode)\r\n \r\n let footPrintModel_ = localStorage.getItem('select_footPrint_data') || '{}'\r\n footPrintModel_ = JSON.parse(footPrintModel_)\r\n const [selectFootPrintModel,setFootPrintModel] = useState(footPrintModel_)\r\n\r\n\r\n\r\n\r\n // +++++++++++++++ Model Vault Search Handler +++++++++++++++++++ \r\n const searchHandler = (e) =>{\r\n const {value} = e.target\r\n if (value != '' || value != ' '){\r\n setVaultLoader(true)\r\n const filteredData = patternLifeData.filter((data,)=>{\r\n const regex = new RegExp(`${value}`, 'i');\r\n return (\r\n regex.test(data.name) ||\r\n regex.test(data.description) ||\r\n data.tag.some((tag) => regex.test(tag))\r\n ); \r\n })\r\n setTimeout(()=>{\r\n setVaultLoader(false)\r\n setPatternLifeData_(filteredData)\r\n },600)\r\n \r\n } else {\r\n setPatternLifeData_(patternLifeData)\r\n }\r\n }\r\n\r\n // +++++++++++++++ Pattren Model Vault +++++++++++++++++++ \r\n const vaultHandler = (modelData) =>{\r\n let poupname = modelData.name.replace(' Detection','')\r\n localStorage.setItem('popup_text_name',poupname)\r\n localStorage.removeItem(\"archive_coordinator\")\r\n setShowFootPrintModel(true)\r\n localStorage.setItem('show_footprint_model_','1')\r\n localStorage.setItem('select_footPrint_data',JSON.stringify(modelData))\r\n setFootPrintModel(modelData)\r\n localStorage.setItem('map_zoom','12')\r\n localStorage.setItem('show_footprint_layer','1')\r\n localStorage.removeItem('aoi_selected_image')\r\n }\r\n\r\n const pattrenModelVault = () =>{\r\n return(\r\n <>\r\n { \r\n patternLifeData_.map((item_,index)=>{\r\n const vaultTags = item_.tag\r\n return(\r\n {vaultHandler(item_)}} >\r\n \r\n {/* First Layer */}\r\n \r\n {/* Image */}\r\n \r\n \r\n {/* Second Layer */}\r\n \r\n {item_.name}\r\n {item_.description}\r\n \r\n {\r\n vaultTags.map((tag,index)=>{\r\n return(\r\n \r\n {tag}\r\n \r\n )\r\n })\r\n }\r\n \r\n \r\n \r\n \r\n )\r\n })\r\n }\r\n \r\n )\r\n }\r\n\r\n // +++++++++++++++ Back to Pattren Model Vault +++++++++++++++++++\r\n const backHandler = () => {\r\n localStorage.setItem('show_footprint_model_','0')\r\n setShowFootPrintModel(false)\r\n orderImageHandler(false)\r\n localStorage.removeItem('aoi_selected_image')\r\n }\r\n\r\n\r\n return (\r\n \r\n <>\r\n { !showFootPrintModel ? \r\n <>\r\n \r\n {backToLifeHandler_()}} className='backArrow'/>\r\n
\r\n Patten of life Models\r\n
\r\n
\r\n \r\n \r\n \r\n Models Vault:\r\n \r\n
\r\n {searchHandler(e)}}\r\n />\r\n \r\n
\r\n \r\n { showLoader ? \r\n \r\n \r\n \r\n :\r\n <>\r\n {pattrenModelVault()}\r\n \r\n }\r\n \r\n
\r\n
\r\n \r\n :\r\n <> \r\n \r\n {backHandler()}} className='backArrow'/>\r\n
\r\n {selectFootPrintModel.footPrint} Footprint\r\n
\r\n
\r\n \r\n \r\n }\r\n \r\n\r\n )\r\n}\r\n","import React, { useState } from 'react';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport { Box,CircularProgress } from '@material-ui/core';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport APIs from '../../../../Api'\r\n\r\nexport default function RenameDialog({data,open,onClose}) {\r\n const [name,setName] = useState(data.name)\r\n const [loader,setLoader] = useState(false)\r\n const [btnName,setBtnName] = useState('Save')\r\n \r\n const handleClose = () => {\r\n onClose();\r\n };\r\n\r\n const nameHandler = (e) => {\r\n setName(e.target.value)\r\n }\r\n\r\n const saveHandler = async(e) =>{\r\n setLoader(true)\r\n const token = localStorage.getItem('token');\r\n const headerOptions = {\r\n method: 'PATCH',\r\n body:JSON.stringify({name:name,id:data.id}),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: `Token ${token}`,\r\n },\r\n };\r\n const response = await fetch(APIs.PLACE_FOOTPRINT, headerOptions);\r\n await response.json();\r\n setBtnName('Success')\r\n setLoader(false) \r\n setTimeout(()=>{\r\n handleClose()\r\n },900) \r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n Name:\r\n \r\n
\r\n {nameHandler(e)}}\r\n />\r\n
\r\n
\r\n
\r\n \r\n {\r\n loader ? \r\n \r\n \r\n \r\n :\r\n {saveHandler()}}>{btnName}\r\n }\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\n","import React from 'react';\r\nimport { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, Legend, ResponsiveContainer } from 'recharts';\r\n\r\nconst data = [\r\n {\r\n name: '11/4/2023',\r\n pv: 2400\r\n },\r\n {\r\n name: '12/4/2023',\r\n pv: 1398\r\n },\r\n {\r\n name: '13/4/2023',\r\n pv: 9800\r\n },\r\n {\r\n name: '14/4/2023',\r\n pv: 3908\r\n },\r\n {\r\n name: '15/4/2023',\r\n pv: 4800,\r\n }\r\n];\r\n\r\nexport default function GraphView() {\r\n return (\r\n \r\n \r\n props.height > 250 ? [75, 150, 225] : [100, 200]} />\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n","import { Box, Typography } from '@material-ui/core'\r\nimport React, { useState } from 'react'\r\nimport './DetectionPoL.css'\r\nimport ArrowDownwardIcon from '@material-ui/icons/ArrowDownward';\r\nimport ArrowUpwardIcon from '@material-ui/icons/ArrowUpward';\r\nimport GraphView from './GraphView';\r\n\r\nexport default function DetectionPoL({data}) {\r\n\r\n let seletcedDetectionPoL = localStorage.getItem('seletced_detectionPoL') || \"{}\"\r\n seletcedDetectionPoL = JSON.parse(seletcedDetectionPoL)\r\n data = seletcedDetectionPoL\r\n return (\r\n \r\n \r\n \r\n \r\n Period:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n General Filter\r\n \r\n \r\n \r\n \r\n Number of {data.name.split(' ')[0]}\r\n \r\n \r\n {data.total_object}\r\n \r\n \r\n \r\n \r\n Change %\r\n \r\n \r\n {data.change_object}\r\n \r\n \r\n {\r\n data.status == 'up' ?\r\n \r\n :\r\n \r\n } \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Selected Area\r\n \r\n \r\n \r\n \r\n Number of {data.name.split(' ')[0]}\r\n \r\n \r\n {data.selected_object}\r\n \r\n \r\n \r\n \r\n Change %\r\n \r\n \r\n {data.s_change_object}\r\n \r\n \r\n {\r\n data.s_status_object == 'up' ?\r\n \r\n :\r\n \r\n } \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Graph Overview\r\n \r\n \r\n \r\n Change:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Number of buildings:\r\n \r\n \r\n {data.selected_object ?? 0}\r\n \r\n \r\n \r\n \r\n Building area:\r\n \r\n \r\n {data.area_of_building ?? 0}km2\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Area of select AOI:\r\n \r\n \r\n {data.aoi_area ?? 0}km2\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}","import React,{useEffect, useState,useCallback} from 'react'\r\nimport { Box, CircularProgress } from '@material-ui/core'\r\nimport './PatternLife.css'\r\nimport LifeModel from './LifeModel'\r\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport BuildPoLicon from '../../../../images/BuildPoL.png'\r\nimport carPoLicon from '../../../../images/carPoL.png'\r\nimport RenameDialog from './RenameDialog'\r\nimport APIs from '../../../../Api'\r\nimport * as XLSX from 'xlsx';\r\nimport ArrowBackIosIcon from '@material-ui/icons/ArrowBackIos';\r\nimport DetectionPol from './DetectionPoL'\r\nimport {analyzeProjectPopUpSignal} from '../../../../store/actions/auth'\r\nimport { useDispatch } from 'react-redux';\r\n\r\nexport default function PatternLife({orderImageHandler}) {\r\n\r\n const dispatch = useDispatch()\r\n\r\n // +++++++++++++++ Pattern Life State +++++++++++++++++++\r\n let allLifeData = localStorage.getItem('allLife_data') || \"[]\"\r\n allLifeData = JSON.parse(allLifeData)\r\n const [patternLifeData_,setPatternLifeData_] = useState(allLifeData)\r\n\r\n // +++++++++++++++ Detection PoL State +++++++++++++++++++\r\n let detection_PoL_ = localStorage.getItem('show_detection_pol_model_') || '0'\r\n let detectionPoL_ = true\r\n if (detection_PoL_ == '0'){\r\n detectionPoL_ = false\r\n }\r\n const [showDetectionPoL,setShowDetectionPoL] = useState(detectionPoL_)\r\n \r\n\r\n // +++++++++++++++ Life Model State +++++++++++++++++++\r\n let showLifeModel_ = localStorage.getItem('show_life_model_') || '0'\r\n let show_life_mode = true\r\n if (showLifeModel_ == '0'){\r\n show_life_mode = false\r\n }\r\n const [showLifeModel,setShowLifeModel] = useState(show_life_mode)\r\n\r\n\r\n // +++++++++++++++ Life Loader State +++++++++++++++++++\r\n const [showLifeLoader,setLifeLoader] = useState(false)\r\n\r\n // +++++++++++++++ Life List Option State +++++++++++++++++++\r\n const [anchorEl, setAnchorEl] = useState(null);\r\n const open = Boolean(anchorEl);\r\n\r\n // +++++++++++++++ Pattern Life Item State +++++++++++++++++++\r\n const [patternLifeItem, setPatternLifeItem] = useState(false);\r\n\r\n // +++++++++++++++ Rename State +++++++++++++++++++\r\n const [openRename, setOpenRename] = useState(false);\r\n\r\n\r\n \r\n\r\n useEffect(()=>{\r\n let getAllLife = localStorage.getItem('get_all_life') || '0'\r\n if (getAllLife == '0'){\r\n getAllPatternLife()\r\n localStorage.setItem('get_all_life',1)\r\n }\r\n },[])\r\n\r\n // +++++++++++++++ Search Handler +++++++++++++++++++\r\n const searchHandler = (e) =>{\r\n const {value} = e.target\r\n if (value != '' || value != ' '){\r\n setLifeLoader(true)\r\n const filteredData = allLifeData.filter((data,)=>{\r\n const regex = new RegExp(`${value}`, 'i');\r\n return regex.test(data.name) \r\n })\r\n setTimeout(()=>{\r\n setLifeLoader(false)\r\n setPatternLifeData_(filteredData)\r\n },600)\r\n \r\n } else {\r\n setPatternLifeData_(allLifeData)\r\n }\r\n }\r\n\r\n // +++++++++++++++ Back Handler +++++++++++++++++++\r\n const backHandler = () =>{\r\n setShowDetectionPoL(true)\r\n setShowLifeModel(false)\r\n localStorage.setItem('show_detection_pol_model_','1')\r\n localStorage.setItem('show_life_model_','0')\r\n }\r\n\r\n\r\n // +++++++++++++++ Pattern Life List +++++++++++++++++++\r\n const handleClick = (event,data) => {\r\n setAnchorEl(event.currentTarget);\r\n setPatternLifeItem(data)\r\n };\r\n\r\n\r\n // +++++++++++++++ Close Menu +++++++++++++++++++\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n // +++++++++++++++ Delete Pattern Life +++++++++++++++++++\r\n const deletePattrenLife = async() => {\r\n const token = localStorage.getItem('token');\r\n const headerOptions = {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: `Token ${token}`,\r\n },\r\n };\r\n const response = await fetch(APIs.PLACE_FOOTPRINT+'?id='+patternLifeItem.id, headerOptions);\r\n await response.json();\r\n getAllPatternLife()\r\n setPatternLifeItem(false)\r\n handleClose()\r\n };\r\n\r\n // +++++++++++++++ Open Rename Pattren Model Handler +++++++++++++++++++\r\n const renamePattren = () =>{\r\n setOpenRename(true)\r\n setAnchorEl(null)\r\n }\r\n\r\n // +++++++++++++++ Download Report Pattren +++++++++++++++++++\r\n const downloadReport = () => {\r\n delete patternLifeItem['id']\r\n delete patternLifeItem['coordinator']\r\n delete patternLifeItem['icon_id']\r\n delete patternLifeItem['user']\r\n patternLifeItem.start = patternLifeItem.startDate\r\n patternLifeItem.end = patternLifeItem.endDate\r\n patternLifeItem[patternLifeItem.f_days] = patternLifeItem.f_value\r\n patternLifeItem.total = patternLifeItem.total_object\r\n patternLifeItem.change = patternLifeItem.change_object\r\n patternLifeItem.selected_total = patternLifeItem.selected_object\r\n patternLifeItem.selected_change = patternLifeItem.s_change_object\r\n patternLifeItem.seletced_status = patternLifeItem.s_status_object\r\n\r\n delete patternLifeItem['startDate']\r\n delete patternLifeItem['endDate']\r\n delete patternLifeItem['f_value']\r\n delete patternLifeItem['f_days']\r\n delete patternLifeItem['total_object']\r\n delete patternLifeItem['change_object']\r\n delete patternLifeItem['selected_object']\r\n delete patternLifeItem['s_change_object']\r\n delete patternLifeItem['s_status_object']\r\n delete patternLifeItem['graph_change']\r\n \r\n\r\n let jsonData = [patternLifeItem]\r\n const ws = XLSX.utils.json_to_sheet(jsonData);\r\n const wb = XLSX.utils.book_new();\r\n XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');\r\n XLSX.writeFile(wb, `test.xlsx`); \r\n\r\n if (patternLifeItem['shap_file']){\r\n let url = APIs.DOMAIN+patternLifeItem['shap_file']\r\n let file_name = patternLifeItem['shap_file']\r\n const a = document.createElement('a');\r\n a.href = url;\r\n a.download = file_name;\r\n a.style.display = 'none';\r\n document.body.appendChild(a);\r\n a.click();\r\n document.body.removeChild(a);\r\n } \r\n }\r\n\r\n // +++++++++++++++ Menu +++++++++++++++++++\r\n const menu = () => {\r\n return (\r\n
\r\n \r\n Rename\r\n Delete\r\n Download\r\n \r\n
\r\n );\r\n }\r\n\r\n const allLifeList = () =>{\r\n return(\r\n \r\n \r\n {\r\n patternLifeData_.map((item,index)=>{\r\n let icon = carPoLicon\r\n if (!item.icon_id=='')\r\n if (item.icon_id == 'building'){\r\n icon = BuildPoLicon\r\n }\r\n return(\r\n <>\r\n \r\n \r\n \r\n \r\n {detectionPoLHandler(item)}}>\r\n {item.name}\r\n \r\n {handleClick(e,item)}} \r\n aria-label=\"more\"\r\n aria-controls=\"long-menu\"\r\n aria-haspopup=\"true\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n )\r\n })\r\n \r\n }\r\n {menu()}\r\n \r\n \r\n )\r\n }\r\n\r\n const goToLifeModelHandler = () => {\r\n setShowLifeModel(true)\r\n localStorage.setItem('show_life_model_','1')\r\n localStorage.setItem('popup_signal','0')\r\n dispatch(analyzeProjectPopUpSignal(false))\r\n }\r\n\r\n const getAllPatternLife = async () => {\r\n const token = localStorage.getItem('token');\r\n const headerOptions = {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: `Token ${token}`,\r\n },\r\n };\r\n try {\r\n const response = await fetch(APIs.PLACE_FOOTPRINT, headerOptions);\r\n const { data, code, message } = await response.json();\r\n if (code === 200) {\r\n localStorage.setItem('allLife_data',JSON.stringify(data))\r\n setPatternLifeData_(data)\r\n } else {\r\n console.log(message, 'Error Messgae');\r\n }\r\n \r\n } catch (error) {\r\n \r\n }\r\n backHandler()\r\n }\r\n\r\n // +++++++++++++++ Close Rename Pattren Model Handler +++++++++++++++++++\r\n const onClose = () => {\r\n setPatternLifeItem(false)\r\n setAnchorEl(null)\r\n setOpenRename(false)\r\n getAllPatternLife()\r\n }\r\n\r\n // +++++++++++++++ Show Detection PoL Model +++++++++++++++++++\r\n const detectionPoLHandler = (data) => {\r\n setShowDetectionPoL(false)\r\n setShowLifeModel(true)\r\n localStorage.setItem('show_detection_pol_model_','0')\r\n localStorage.setItem('show_life_model_','1')\r\n localStorage.setItem('seletced_detectionPoL',JSON.stringify(data))\r\n setPatternLifeItem(data)\r\n }\r\n\r\n\r\n\r\n let seletcedDetectionPoL = localStorage.getItem('seletced_detectionPoL') || \"{}\"\r\n seletcedDetectionPoL = JSON.parse(seletcedDetectionPoL)\r\n return (\r\n \r\n \r\n {!showLifeModel ? \r\n <>\r\n
\r\n Pattern of Life\r\n
\r\n \r\n \r\n \r\n Search:\r\n \r\n
\r\n {searchHandler(e)}}\r\n />\r\n \r\n
\r\n \r\n { showLifeLoader ? \r\n \r\n \r\n \r\n :\r\n <>\r\n {allLifeList()}\r\n \r\n }\r\n \r\n \r\n
\r\n
\r\n \r\n {goToLifeModelHandler()}}>Create New\r\n \r\n \r\n : !showDetectionPoL?\r\n <>\r\n \r\n {backHandler()}} className='backArrow'/>\r\n
\r\n {seletcedDetectionPoL.name}\r\n
\r\n
\r\n \r\n \r\n :\r\n <> \r\n \r\n \r\n }\r\n
\r\n { patternLifeItem &&\r\n \r\n }\r\n
\r\n )\r\n}\r\n","import React from 'react'\r\nimport {Box,Tabs,Tab,Typography,Grid} from '@material-ui/core';\r\nimport ActiveIcon from '../../images/active-world.svg'\r\nimport DeactiveIcon from '../../images/deactive-world.svg';\r\nimport OrderImageComponent from './screens/OrderImageComponent'; \r\nimport AiModels from './screens/AiModels';\r\nimport PatternLife from './screens/patternlife/PatternLife'\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport {analyzeOrderError,analyzeProjectPopUpSignal} from '../../store/actions/auth';\r\n\r\nconst menu = [\r\n {\r\n id:0,\r\n modelname:\"Order\",\r\n activeIcon:ActiveIcon,\r\n deactiveIcon:DeactiveIcon\r\n },\r\n {\r\n id:1,\r\n modelname:\"aiModel\",\r\n activeIcon:ActiveIcon,\r\n deactiveIcon:DeactiveIcon\r\n },\r\n {\r\n id:2,\r\n modelname:\"Order\",\r\n activeIcon:ActiveIcon,\r\n deactiveIcon:DeactiveIcon\r\n },\r\n {\r\n id:3,\r\n modelname:\"Order\",\r\n activeIcon:ActiveIcon,\r\n deactiveIcon:DeactiveIcon\r\n },\r\n {\r\n id:4,\r\n modelname:\"Order\",\r\n activeIcon:ActiveIcon,\r\n deactiveIcon:DeactiveIcon\r\n },\r\n {\r\n id:5,\r\n modelname:\"Order\",\r\n activeIcon:ActiveIcon,\r\n deactiveIcon:DeactiveIcon\r\n },\r\n {\r\n id:6,\r\n modelname:\"Order\",\r\n activeIcon:ActiveIcon,\r\n deactiveIcon:DeactiveIcon\r\n },\r\n {\r\n id:7,\r\n modelname:\"Order\",\r\n activeIcon:ActiveIcon,\r\n deactiveIcon:DeactiveIcon\r\n },\r\n]\r\n\r\n\r\nexport default function TopBar({handler_,analyzeOrderHandler,polygonCoordinates_,updateHeight_}) {\r\n const [value, setValue] = React.useState(0)\r\n const [hideArchive, setHideArchive] = React.useState(0)\r\n const dispatch = useDispatch()\r\n\r\n const handleChange = (event, newValue) => {\r\n localStorage.removeItem('ai_contaner_class')\r\n localStorage.removeItem('aoi_selected_image')\r\n dispatch(analyzeOrderError(''))\r\n localStorage.removeItem('archive_coordinator')\r\n localStorage.setItem('get_all_life','0')\r\n localStorage.removeItem('footprint_data')\r\n localStorage.setItem('aoidraw_enable',1)\r\n handler_(false)\r\n setValue(newValue);\r\n if (newValue==1){\r\n localStorage.setItem('map_zoom','13')\r\n } else {\r\n localStorage.setItem('map_zoom','7')\r\n }\r\n localStorage.setItem('hide_ai_archive',0)\r\n setHideArchive(0)\r\n localStorage.removeItem('ai_model_init')\r\n localStorage.removeItem('model_active')\r\n localStorage.removeItem('show_ai_models')\r\n localStorage.setItem('aoi_selected','select')\r\n localStorage.setItem('show_footprint_model_','0')\r\n localStorage.setItem('show_life_model_','0')\r\n localStorage.setItem('popup_signal','0')\r\n dispatch(analyzeProjectPopUpSignal(false))\r\n };\r\n \r\n const TabPanel = (props) => {\r\n const { children, value, index, ...other } = props;\r\n return (\r\n \r\n );\r\n }\r\n\r\n const orderImageHandler_ = (data) => {\r\n handler_(data)\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n {\r\n menu.map((item_,index)=>{\r\n return(\r\n } aria-label=\"person\" />\r\n )\r\n })\r\n }\r\n \r\n \r\n \r\n \r\n \r\n {updateHeight_(type)}} polygonCoordinates={polygonCoordinates_} analyzeOrderHandler_={()=>{analyzeOrderHandler()}} orderImageHandler={(data)=>{orderImageHandler_(data)}}/>\r\n \r\n \r\n {analyzeOrderHandler()}} orderImageHandler={(data)=>{orderImageHandler_(data)}}/>\r\n \r\n \r\n {analyzeOrderHandler()}} orderImageHandler={(data)=>{orderImageHandler_(data)}}/>\r\n \r\n \r\n \r\n )\r\n}\r\n","import React, { useState, useRef,useCallback, useEffect } from 'react';\r\nimport MapGL, { GeolocateControl, FullscreenControl, NavigationControl, ScaleControl } from 'react-map-gl';\r\nimport { Editor, DrawPolygonMode, EditingMode } from 'react-map-gl-draw';\r\nimport * as config from '../../config';\r\nimport 'mapbox-gl/dist/mapbox-gl.css';\r\nimport \"react-map-gl-geocoder/dist/mapbox-gl-geocoder.css\";\r\nimport Geocoder from 'react-map-gl-geocoder'\r\nimport {Box,Grid,Typography} from '@material-ui/core';\r\nimport TopBar from './TopBar';\r\nimport '../../styles/Stellaria.css'\r\nimport { getFeatureStyle, getEditHandleStyle } from '../DrawStyle';\r\nimport { useDispatch,useSelector } from 'react-redux';\r\nimport { analyzeOrder ,analyzeOrderLoader,analyzeOrderError,analyzeProjectPopUpSignal} from '../../store/actions/auth';\r\nimport latlongIcon from '../../images/nearIcon.png'\r\nimport shp from 'shpjs';\r\nimport * as turf from '@turf/turf';\r\n\r\n\r\nconst TOKEN = config.REACT_APP_TOKEN\r\n\r\nexport default function Index(props){\r\n const dispatch = useDispatch()\r\n const selector = useSelector((state=>state))\r\n const mapRef = useRef();\r\n const _editorRef = useRef();\r\n const [features, setFeatures] = useState([])\r\n const [polygonCoordinates, setCoordinates] = useState([])\r\n const [mode,setMode] = useState(null);\r\n const [selectedFeatureIndex,setSelectedFeatureIndex] = useState(null);\r\n const [aoiExtent, setaoiExtent] = useState('')\r\n const [drawerBbox, setDrawerBbox] = useState([])\r\n const [isShowPolygon,setShowPolygon] = useState(false)\r\n const [shapeFile,setShapeFile] = useState('')\r\n const [viewport, setViewport] = useState({\r\n width: \"100%\",\r\n height: \"945px\",\r\n latitude: 25.12,\r\n longitude: 55.13,\r\n zoom: 11,\r\n });\r\n\r\n // +++++++++++++++ Number of building State +++++++++++++++++++\r\n const noOfBuilding = localStorage.getItem('no_of_building') || '0'\r\n const [noOfBuilding_,setNoOfBuilding] = useState(noOfBuilding)\r\n\r\n // +++++++++++++++ Number of building State +++++++++++++++++++\r\n const noOfTotalAreaBuilding = localStorage.getItem('area_of_building') || '0.0'\r\n const [noOfTotalAreaBuilding_,setNoOfTotalAreaBuilding] = useState(noOfTotalAreaBuilding)\r\n\r\n let aoiArea = localStorage.getItem('aoi_area') || '0'\r\n const [aoiArea_,setAoiArea_] = useState(aoiArea)\r\n\r\n let popupSignal_ = localStorage.getItem('popup_signal') || '0'\r\n const [popupSignal,setPopUpSignal_] = useState(popupSignal_)\r\n\r\n\r\n\r\n // useEffect(()=>{\r\n // const map_ = mapRef.current.getMap()\r\n // if (map_) {\r\n // const polygonFeature = {\r\n // type: \"Feature\",\r\n // geometry: {\r\n // type: \"Polygon\",\r\n // coordinates: [\r\n // [\r\n // [\r\n // 54.413451844939345,\r\n // 24.432964560895357\r\n // ],\r\n // [\r\n // 54.4101566787559,\r\n // 24.424564084248633\r\n // ],\r\n // [\r\n // 54.4170765277409,\r\n // 24.42291392488739\r\n // ],\r\n // [\r\n // 54.41954790237989,\r\n // 24.430764490133605\r\n // ],\r\n // [\r\n // 54.413451844939345,\r\n // 24.432964560895357\r\n // ]\r\n // ]\r\n // ]\r\n // }\r\n // }\r\n // map_.on('load', () => {\r\n // map_.addSource('selected-polygon', {\r\n // type: 'geojson',\r\n // data: {\r\n // type: 'FeatureCollection',\r\n // features: [polygonFeature]\r\n // }\r\n // });\r\n \r\n // map_.addLayer({\r\n // id: 'selected-polygon-layer',\r\n // type: 'fill',\r\n // source: 'selected-polygon',\r\n // paint: {\r\n // 'fill-color': '#FF0000', // Red color for the polygon\r\n // 'fill-opacity': 1\r\n // }\r\n // });\r\n // }) \r\n // }\r\n // },[])\r\n\r\n useEffect(()=>{\r\n const noOfBuilding_ = localStorage.getItem('no_of_building') || '0'\r\n setNoOfBuilding(noOfBuilding_)\r\n const noOfTotalAreaBuilding_ = localStorage.getItem('area_of_building') || '0.0'\r\n setNoOfTotalAreaBuilding(noOfTotalAreaBuilding_)\r\n setPopUpSignal_(selector.popup_status)\r\n\r\n console.log(selector.popup_status,'selector.popup_status');\r\n \r\n if (selector.popup_status){\r\n localStorage.setItem('popup_signal','1')\r\n }\r\n \r\n\r\n },[selector])\r\n\r\n const maphandler = (data) =>{\r\n if (data){\r\n if (data.aoiIsSeletced){\r\n setShowPolygon(true)\r\n } else {\r\n setShowPolygon(false)\r\n }\r\n\r\n if (data.dataShow){\r\n let properties_ = data.properties\r\n let imageCoordinates_ = data.geometry.coordinates\r\n let geometry = properties_.providerProperties.geometryCentroid \r\n let imageIdCoordinates = {...viewport,latitude:imageCoordinates_[0][0][1],longitude:imageCoordinates_[0][0][0]}\r\n if (properties_.providerProperties.geometryCentroid){\r\n imageIdCoordinates = {...viewport,latitude:geometry.lat,longitude:geometry.lon,zoom:7}\r\n }\r\n setViewport(imageIdCoordinates)\r\n showLayerHandler(imageCoordinates_[0],data)\r\n }\r\n\r\n if (data.showRaster){\r\n let imageIdCoordinates = {...viewport,latitude:data.lat,longitude:data.log,zoom:11}\r\n setViewport(imageIdCoordinates)\r\n showRaster_(data)\r\n setShapeFile(data.shpfile)\r\n }\r\n\r\n if (data.removeRaster){\r\n setFeatures([])\r\n setSelectedFeatureIndex(null)\r\n setDrawerBbox([])\r\n setCoordinates([])\r\n setViewport({...viewport,latitude:25.12,longitude:55.13,zoom:11})\r\n const map_ = mapRef.current.getMap()\r\n if (map_) { \r\n\r\n // Remove Old Layer\r\n let oldRaterAiId_ = localStorage.getItem('ai_layer_id') || false\r\n \r\n if (map_.getLayer(oldRaterAiId_)) {\r\n map_.removeLayer(oldRaterAiId_);\r\n localStorage.removeItem('ai_layer_id')\r\n }\r\n\r\n let oldRaterId_ = localStorage.getItem('raster_id') || false\r\n if (map_.getLayer(oldRaterId_)) {\r\n map_.removeLayer(oldRaterId_);\r\n localStorage.removeItem('raster_id')\r\n }\r\n\r\n }\r\n }\r\n\r\n } else {\r\n const map_ = mapRef.current.getMap()\r\n if (map_) { \r\n // Remove Old Layer\r\n let oldRaterId_ = localStorage.getItem('ai_layer_id') || false\r\n if (map_.getLayer(oldRaterId_)) {\r\n map_.removeLayer(oldRaterId_);\r\n }\r\n // Remove Old Layer\r\n let oldLayerId_ = localStorage.getItem('layer_id') || false\r\n if (map_.getLayer(oldLayerId_)) {\r\n map_.removeLayer(oldLayerId_);\r\n }\r\n }\r\n \r\n setShowPolygon(false)\r\n setFeatures([])\r\n setViewport({...viewport,latitude:25.12,longitude:55.13,zoom:11})\r\n }\r\n }\r\n\r\n const handleViewportChange = (newViewport) => {\r\n setViewport(newViewport)\r\n }\r\n\r\n const showLayerHandler = (imageCoordinates_,data_) =>{\r\n let uuId_ = new Date().getSeconds()\r\n const cityCoordinates_ = imageCoordinates_\r\n const newLayerId_ = `square-border-${uuId_}`\r\n const map_ = mapRef.current.getMap()\r\n\r\n if (map_) { \r\n // Remove Old Layer\r\n let OldlayerId_ = localStorage.getItem('layer_id') || false\r\n if (OldlayerId_){\r\n map_.removeLayer(OldlayerId_)\r\n }\r\n \r\n localStorage.setItem('layer_id',newLayerId_)\r\n\r\n // // Draw Square\r\n map_.addLayer({\r\n id: newLayerId_,\r\n type: 'fill',\r\n source: {\r\n type: 'geojson',\r\n data: {\r\n type: 'Feature',\r\n geometry: {\r\n type: 'Polygon',\r\n coordinates: [cityCoordinates_],\r\n },\r\n },\r\n },\r\n layout: {},\r\n paint: {\r\n 'fill-color': 'rgba(14, 98, 232, 0.25)',\r\n 'fill-opacity': 1,\r\n 'fill-outline-color': '#0E62E8', \r\n },\r\n });\r\n \r\n for (const [index, coordinate] of cityCoordinates_.entries()) {\r\n map_.jumpTo({ center: coordinate, zoom: 7 });\r\n }\r\n \r\n }\r\n }\r\n \r\n function generateShortUUID() {\r\n const array = new Uint8Array(4);\r\n crypto.getRandomValues(array);\r\n const shortUUID = Array.from(array, (byte) => byte.toString(16).padStart(2, '0')).join('');\r\n return shortUUID;\r\n }\r\n \r\n const analyzeAiModel = (data_) =>{\r\n dispatch(analyzeOrder(data_));\r\n }\r\n \r\n const showRaster_ = (data) => {\r\n let uuId_ = generateShortUUID();\r\n const newRasterId_ = `raster-layer-${uuId_}-${data.id}`\r\n const map_ = mapRef.current.getMap()\r\n if (map_) { \r\n // Remove Old Raster\r\n let oldRaterId_ = localStorage.getItem('raster_id') || false\r\n if (oldRaterId_){\r\n map_.removeLayer(oldRaterId_)\r\n }\r\n localStorage.setItem('raster_id',newRasterId_)\r\n\r\n map_.addSource(newRasterId_, {\r\n 'type': 'raster',\r\n 'url': `mapbox://${data.rasterId}`\r\n });\r\n map_.addLayer({\r\n 'id': newRasterId_,\r\n 'source': newRasterId_,\r\n 'type': 'raster',\r\n });\r\n }\r\n }\r\n\r\n const _onSelect = (options) =>{\r\n setSelectedFeatureIndex(options.selectedFeatureIndex)\r\n }\r\n\r\n const _onUpdate = ({ data, editType }) =>{\r\n if (editType === 'addFeature') {\r\n localStorage.removeItem('aoi_area')\r\n setCoordinates(data[0].geometry.coordinates)\r\n const extent = data[0].geometry.coordinates[0].reduce(\r\n (acc, [x, y]) => {\r\n return {\r\n xmin: Math.min(acc.xmin, x),\r\n ymin: Math.min(acc.ymin, y),\r\n xmax: Math.max(acc.xmax, x),\r\n ymax: Math.max(acc.ymax, y),\r\n };\r\n },\r\n {\r\n xmin: Infinity,\r\n ymin: Infinity,\r\n xmax: -Infinity,\r\n ymax: -Infinity,\r\n }\r\n );\r\n \r\n const aoiExtent_ = `${extent.xmin.toFixed(4)} ${extent.ymin.toFixed(4)} ${extent.xmax.toFixed(4)} ${extent.ymax.toFixed(4)}`\r\n const drawerBbox_ = [parseFloat(extent.xmin.toFixed(4)), parseFloat(extent.ymin.toFixed(4)), parseFloat(extent.xmax.toFixed(4)), parseFloat(extent.ymax.toFixed(4))]\r\n setMode(new EditingMode())\r\n setFeatures(data)\r\n setaoiExtent(aoiExtent_)\r\n setDrawerBbox(drawerBbox_)\r\n analyzeAiModel(drawerBbox_)\r\n let mapZoom = localStorage.getItem('map_zoom') || '10'\r\n setViewport({...viewport,zoom:parseInt(mapZoom)})\r\n localStorage.setItem('archive_coordinator',JSON.stringify(data[0].geometry))\r\n\r\n const polygonFeature = turf.polygon(data[0].geometry.coordinates);\r\n const areaInSquareMeters = turf.area(polygonFeature);\r\n const areaInSquareKilometers = areaInSquareMeters / 1e6;\r\n localStorage.setItem('aoi_area',areaInSquareKilometers.toFixed(2))\r\n setAoiArea_(areaInSquareKilometers.toFixed(2))\r\n \r\n }\r\n }\r\n\r\n const _onDelete = () => {\r\n const selectedIndex = selectedFeatureIndex || 0;\r\n if (selectedIndex !== null && selectedIndex >= 0) {\r\n _editorRef.current.deleteFeatures(selectedIndex);\r\n setMode(null)\r\n setDrawerBbox([])\r\n setaoiExtent('')\r\n setFeatures([])\r\n setSelectedFeatureIndex(null)\r\n }\r\n };\r\n\r\n const _renderDrawTools = () => {\r\n return (\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n );\r\n };\r\n\r\n const drawPolygonHandler = () =>{\r\n if (_editorRef && features.length > 0) {\r\n _editorRef.current.deleteFeatures(0);\r\n setMode(null)\r\n setDrawerBbox([])\r\n setaoiExtent('')\r\n setFeatures([])\r\n setSelectedFeatureIndex(null)\r\n }\r\n setMode(new DrawPolygonMode())\r\n }\r\n\r\n const handleGeocoderViewportChange = useCallback((newViewport) => {\r\n const geocoderDefaultOverrides = { transitionDuration: 1000 };\r\n return handleViewportChange({ ...newViewport,...geocoderDefaultOverrides});\r\n },[handleViewportChange]\r\n );\r\n\r\n const analyzeOrder_ = () =>{\r\n dispatch(analyzeOrder(polygonCoordinates));\r\n if (features.length > 0){\r\n aiModelanalyze(features)\r\n }\r\n }\r\n\r\n const aiModelanalyze = async(polygonFeature) =>{\r\n localStorage.setItem('popup_signal','0')\r\n localStorage.setItem('no_of_building','0')\r\n localStorage.setItem('area_of_building','0')\r\n setNoOfTotalAreaBuilding(0)\r\n setPopUpSignal_(false)\r\n setNoOfBuilding(0)\r\n dispatch(analyzeProjectPopUpSignal(false))\r\n dispatch(analyzeOrderLoader(true))\r\n dispatch(analyzeOrderError(''))\r\n let uuId_ = generateShortUUID();\r\n const newRasterId_ = `ai-layer-${uuId_}`\r\n const map_ = mapRef.current.getMap()\r\n if (map_) { \r\n // Remove Old Layer\r\n let oldRaterId_ = localStorage.getItem('ai_layer_id') || false\r\n if (map_.getLayer(oldRaterId_)) {\r\n map_.removeLayer(oldRaterId_);\r\n }\r\n localStorage.setItem('ai_layer_id',newRasterId_)\r\n const image = window.location.origin+\"/up42/\"+shapeFile; \r\n try {\r\n await shp(image).then((geojson) => {\r\n setTimeout(async()=>{ \r\n try {\r\n const polygon_ = features[0].geometry.coordinates;\r\n const drawnPolygon = turf.polygon(polygon_);\r\n let selectedFeatures = []\r\n\r\n selectedFeatures = geojson.features.filter((feature) => {\r\n if (feature.geometry && feature.geometry.coordinates){\r\n if (feature.geometry.coordinates[0].length > 3){\r\n const featurePolygon = turf.polygon(feature.geometry.coordinates);\r\n return turf.booleanWithin(featurePolygon, drawnPolygon);\r\n }\r\n } \r\n return false\r\n });\r\n \r\n if (selectedFeatures.length > 0){\r\n\r\n let selectedObject = selectedFeatures.length\r\n localStorage.setItem('no_of_building',selectedObject)\r\n setNoOfBuilding(selectedObject)\r\n\r\n let totalArea = 0;\r\n selectedFeatures.forEach((feature) => {\r\n if (feature.geometry && feature.geometry.coordinates){\r\n const featurePolygon = turf.polygon(feature.geometry.coordinates);\r\n const areaInSquareMeters = turf.area(featurePolygon);\r\n totalArea += areaInSquareMeters;\r\n }\r\n });\r\n const totalAreaInKm2 = totalArea / 1e6;\r\n localStorage.setItem('area_of_building',totalAreaInKm2)\r\n\r\n try {\r\n setNoOfTotalAreaBuilding(totalAreaInKm2.split('.')[0])\r\n } catch (error) {\r\n setNoOfTotalAreaBuilding(totalAreaInKm2)\r\n }\r\n \r\n\r\n let selectedFeatures_ = []\r\n selectedFeatures.map((item_,index)=>{\r\n item_.properties = []\r\n selectedFeatures_.push(item_)\r\n }) \r\n \r\n \r\n map_.addLayer({\r\n id: newRasterId_,\r\n type: 'fill',\r\n source: {\r\n type: 'geojson',\r\n data: {\r\n type: 'FeatureCollection',\r\n features: selectedFeatures_,\r\n },\r\n },\r\n paint: {\r\n 'fill-color': '#c2395b',\r\n 'fill-opacity': 0.75,\r\n },\r\n });\r\n } else {\r\n dispatch(analyzeOrderError('There is no result for selected area.'))\r\n }\r\n } catch (error) {\r\n dispatch(analyzeOrderLoader(false))\r\n dispatch(analyzeOrderError('There is no result for selected area.'))\r\n }\r\n dispatch(analyzeOrderLoader(false))\r\n dispatch(analyzeProjectPopUpSignal(true))\r\n },5000)\r\n });\r\n \r\n }catch (error) {\r\n console.log(error,'error 1');\r\n dispatch(analyzeOrderError('There is no result for selected area.'))\r\n }\r\n }\r\n }\r\n\r\n const updateHeightHandler = (type) =>{\r\n // let height = '1000px'\r\n // if (type != 'newImagery'){\r\n // height = '2000px'\r\n // }\r\n // setViewport({...viewport,height})\r\n }\r\n\r\n let popupTextName = localStorage.getItem('popup_text_name') || ''\r\n\r\n return (\r\n \r\n \r\n {updateHeightHandler(type)}} polygonCoordinates_={polygonCoordinates} handler_={(data)=>maphandler(data)} analyzeOrderHandler={()=>{analyzeOrder_()}}/>\r\n \r\n \r\n \r\n \r\n\r\n\r\n {popupSignal &&\r\n \r\n \r\n \r\n \r\n Number of {popupTextName.toLocaleLowerCase()\r\n }:\r\n \r\n \r\n {noOfBuilding_}\r\n \r\n \r\n \r\n \r\n Area of select AOI:\r\n \r\n \r\n {aoiArea_}km2\r\n \r\n \r\n \r\n \r\n {popupTextName} area:\r\n \r\n \r\n {noOfTotalAreaBuilding_}km2\r\n \r\n \r\n \r\n \r\n }\r\n\r\n\r\n { isShowPolygon &&\r\n <>\r\n \r\n\r\n
\r\n {_renderDrawTools()}\r\n
\r\n \r\n }\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {viewport.latitude.toFixed(5)}\r\n o\r\n N\r\n
,\r\n
\r\n {viewport.longitude.toFixed(5)}\r\n o\r\n E\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n )\r\n}\r\n;\r\n\r\n\r\nlet styleSx = {\r\n top: 'calc(100% - 868px)',\r\n right: '154px',\r\n right: '10px',\r\n background: '#fff',\r\n padding: '20px',\r\n borderRadius: '10px',\r\n}","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADZSURBVHgBpVMLEYMwDO0c1MFwMBx0DjYHlYCESpgEJCABKUiohKzA6y0NvZWWd5fjSPJePoSbugAi0uFhg3WqBUHABJvpB1tL/gTzdMS9RNbBnKi+wPfA+/SPbATZo5sny7OIvc60vooNWKrMX1bjDpep7nJkUXTFyJ0cY3FxO2dEfs+dHTpYmOB0mD0V8slYmYQ3RPgXGkSORax8O+jSorIXsRlCxRVwkgPJsALb6KoGtN/UdgZC+PwvwcTiKJrk7VQKmdhVPBHVCkqvvVetYLtpG4sJ6dKSvxARtg/rOWWgAAAAAElFTkSuQmCC\"","import React,{useEffect, useState} from 'react';\r\nimport { Layout, Menu, } from 'antd';\r\nimport { BrowserRouter, Redirect, Link, Route,useHistory } from 'react-router-dom';\r\nimport * as actions from '../store/actions/auth';\r\nimport { connect } from 'react-redux';\r\nimport Explore from './Explore';\r\nimport Draw from './Draw';\r\nimport Swipe from './Swipe';\r\nimport DataCollections from './DataCollections';\r\nimport Stellaria from './stellaria/Index'\r\n\r\n\r\nimport logo from '../images/logo-white.png';\r\nimport menu1 from '../images/1.PNG';\r\nimport menu2 from '../images/2.PNG';\r\nimport menu3 from '../images/3.PNG';\r\nimport menu4 from '../images/4.PNG';\r\nimport menu5 from '../images/5.PNG';\r\nimport menu6 from '../images/6.PNG';\r\n\r\n\r\nconst { Header, Content, Sider } = Layout;\r\n\r\nconst Home = (props) => {\r\n const [isShowHeaderSideBar,setShowHeaderSideBar] = useState(true)\r\n\r\n const currentDate = new Date();\r\n currentDate.setDate(currentDate.getDate() - 25);\r\n const startDate_ = currentDate.toISOString().slice(0, 10);\r\n const endDate_ = new Date().toISOString().slice(0, 10);\r\n\r\n useEffect(()=>{\r\n setShowHeaderSideBar(true)\r\n localStorage.removeItem('aoi_selected')\r\n localStorage.removeItem('optical_satellite')\r\n localStorage.removeItem('optical_satellite_setting')\r\n localStorage.removeItem('optical_resolution')\r\n localStorage.removeItem('archive_angle')\r\n localStorage.removeItem('archive_aoi_selected')\r\n let filterDate = {\"start\": startDate_,\"end\": endDate_,\"angle\": 40,\"cloudCoverages\": 40}\r\n localStorage.setItem('filter_date',JSON.stringify(filterDate))\r\n localStorage.removeItem('cloud')\r\n localStorage.removeItem('archive_cloud')\r\n localStorage.removeItem('type_value')\r\n localStorage.removeItem('selected_catalog') \r\n localStorage.removeItem('archive_aoidraw_enable')\r\n localStorage.removeItem('sar_satelite_method')\r\n localStorage.removeItem('sar_satelite_resolution')\r\n localStorage.removeItem('optical_setting_selected')\r\n localStorage.removeItem('ai_detection_image')\r\n localStorage.removeItem('ai_detection_aoi')\r\n localStorage.removeItem('ai_model_init')\r\n localStorage.removeItem('model_active')\r\n localStorage.removeItem('show_ai_models')\r\n localStorage.setItem('show_footprint_model_','0')\r\n localStorage.setItem('show_life_model_','0')\r\n localStorage.removeItem('archive_coordinator')\r\n localStorage.removeItem('ai_contaner_class')\r\n localStorage.removeItem('aoi_selected_image')\r\n\r\n // localStorage.setItem('',1) \r\n // localStorage.setItem('',1) \r\n // localStorage.setItem('',JSON.stringify({\"id\":1,\"rasterId\":\"hassanms.adm_q4_final_1\"}))\r\n \r\n },[])\r\n \r\n const StellariaView =() =>{\r\n setShowHeaderSideBar(false)\r\n return(\r\n \r\n )\r\n }\r\n return (\r\n props.isAuthenticated ?\r\n
\r\n \r\n \r\n {/* { isShowHeaderSideBar && \r\n \r\n
\r\n \r\n \"white-logo\"\r\n \r\n \r\n Logout\r\n \r\n \r\n

Logged in as {localStorage.getItem('email')}

\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \"menu1\"/\r\n \r\n \r\n \r\n \"menu2\"/\r\n \r\n \r\n \r\n \"menu3\"/\r\n \r\n \r\n \r\n \"menu4\"/\r\n \r\n \r\n \r\n \"menu5\"/\r\n \r\n \r\n \r\n \"menu6\"/\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n } */}\r\n
\r\n
\r\n : \r\n ) \r\n}\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n logout: () => dispatch(actions.logout())\r\n }\r\n}\r\n\r\nexport default connect(null, mapDispatchToProps)(Home); ","export default __webpack_public_path__ + \"static/media/1.93b33d07.PNG\";","export default __webpack_public_path__ + \"static/media/2.76d305b3.PNG\";","export default __webpack_public_path__ + \"static/media/3.d37136ef.PNG\";","export default __webpack_public_path__ + \"static/media/4.249b3167.PNG\";","export default __webpack_public_path__ + \"static/media/5.0ecbb048.PNG\";","export default __webpack_public_path__ + \"static/media/6.f13fd4f8.PNG\";","import React, { Component } from 'react';\r\nimport { BrowserRouter as Router, Route } from 'react-router-dom';\r\n// import BaseRouter from './routes';\r\nimport { connect } from 'react-redux';\r\nimport 'antd/dist/antd.css';\r\nimport * as actions from './store/actions/auth';\r\nimport './App.css';\r\nimport Login from './containers/Login';\r\nimport Signup from './containers/Signup';\r\nimport Home from './components/Home';\r\nimport 'mapbox-gl/dist/mapbox-gl.css';\r\n\r\nclass App extends Component{\r\n\r\n componentDidMount() {\r\n this.props.onTryAutoSignup();\r\n }\r\n\r\n render () {\r\n return (\r\n
\r\n \r\n {/* \r\n \r\n */}\r\n (\r\n \r\n )}\r\n />\r\n {/* (\r\n \r\n )}\r\n /> */}\r\n (\r\n \r\n )}\r\n component={Signup} />\r\n (\r\n \r\n )}\r\n />\r\n {/* */}\r\n \r\n
\r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n isAuthenticated: state.token !== null\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n onTryAutoSignup: () => dispatch(actions.authCheckState())\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(App);\r\n","const reportWebVitals = onPerfEntry => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","export const updateObject = (oldObject, updatedProperties) => {\r\n return {\r\n ...oldObject,\r\n ...updatedProperties\r\n }\r\n}","import * as actionTypes from '../actions/actionTypes';\r\nimport { updateObject } from '../utility';\r\n\r\nconst initialState = {\r\n token: null,\r\n error: null,\r\n loading: false,\r\n coordinates:[],\r\n analyseLoader:false,\r\n analyseError:\"\",\r\n signal:false,\r\n popup_status:false\r\n}\r\n\r\nconst authStart = (state, action) => {\r\n return updateObject(state, {\r\n error: null,\r\n loading: true\r\n });\r\n}\r\n\r\nconst authSuccess = (state, action) => {\r\n return updateObject(state, {\r\n token: action.token,\r\n error: null,\r\n loading: false\r\n });\r\n}\r\n\r\nconst authFail = (state, action) => {\r\n return updateObject(state, {\r\n error: action.error,\r\n loading: false\r\n })\r\n}\r\n\r\nconst authLogout = (state, action) => {\r\n return updateObject(state, {\r\n token: null\r\n });\r\n}\r\n\r\nconst reducer = (state=initialState, action) => {\r\n switch (action.type) {\r\n case actionTypes.AUTH_START: return authStart(state, action);\r\n case actionTypes.AUTH_SUCCESS: return authSuccess(state, action);\r\n case actionTypes.AUTH_FAIL: return authFail(state, action);\r\n case actionTypes.AUTH_LOGOUT: return authLogout(state, action);\r\n case actionTypes.ANALYZE_ORDER:\r\n return {...state,coordinates: action.coordinates};\r\n case actionTypes.ANALYZE_ORDER_LODEAR:\r\n return {...state,analyseLoader:action.analyseLoader};\r\n case actionTypes.ANALYZE_ORDER_ERROR:\r\n return {...state,analyseError:action.msg};\r\n case actionTypes.ANALYZE_PROJECT_SIGNAL: \r\n return {...state,signal:action.status};\r\n case actionTypes.ANALYZE_POPUP_SHOW_SIGNAL:\r\n return {...state,popup_status:action.popup_status};\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default reducer;","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport App from './App';\r\nimport reportWebVitals from './reportWebVitals';\r\nimport { createStore, compose, applyMiddleware } from 'redux';\r\nimport thunk from 'redux-thunk';\r\nimport { Provider } from 'react-redux';\r\n\r\nimport reducer from './store/reducers/auth';\r\n\r\nconst composeEnhances = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;\r\n\r\nconst store = createStore(reducer, composeEnhances(\r\n applyMiddleware(thunk)\r\n));\r\n\r\nconst app = (\r\n \r\n \r\n \r\n)\r\n\r\nReactDOM.render(\r\n app,\r\n document.getElementById('root')\r\n);\r\n\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n"],"sourceRoot":""}