{"version":3,"sources":["../node_modules/@esri/calcite-components/dist/esm-es5 lazy /^/.*/.entry/.js$/ groupOptions: {} namespace object","config/default.js","redux/constants/addressingResultActionTypes.js","redux/actions/addressingResultActions.js","redux/reducers/addressDetailsReducer.js","components/mappers/addressingMappers.js","serviceClients/addressingClient.js","redux/constants/actionTypes.js","redux/actions/mapPanelControlActions.js","components/MapSearch/MapSearchbar.js","components/map/drawerIcons.js","components/map/mapActions.js","components/map/rakBoundaryGeom.js","components/map/addressConfigUtils.js","components/map/TranspController.js","assets/img/RakStreetsLogo.png","assets/img/RakSatelliteLogo.JPG","components/map/MapSwitcher.js","components/map/AddressingMapView.js","components/map/AddressingMapViewOption2.js","components/map/AddressingMapViewOption3.js","components/AddressIssues/IssueInboxGrid.js","redux/reducers/addressIssueTypesReducer.js","redux/reducers/addressIssueStatusTypesReducer.js","components/ui/Dialog/CustomDialog.js","components/AddressIssues/IssueDetailsDisplay.js","components/AddressIssues/IssuesInbox.js","components/ui/LightTooltip.js","components/ui/Icons/CustomIcons.js","redux/actions/appSettingsActions.js","components/AddressResult/ReportIssueDialog.js","components/AddressResult/ShareAddressDialog.js","components/AddressResult/InfoHelp.js","components/AddressResult/ShareAddressComponent.js","components/AddressResult/AddressDetailsPane.js","assets/img/plusCode.png","assets/img/W3W.png","assets/img/makani-icon.png","components/map/mapWrapper.js","assets/img/mun_logo.jpg","assets/img/Goverment.png","assets/img/logo.jpg","assets/img/logo-web.png","assets/img/logo-mobile.png","assets/docs/manual_Ar.pdf","assets/docs/manual_En.pdf","components/header.js","components/footer.js","components/home/homePage.js","components/LoginUaePassCallback.js","components/contact.js","assets/img/slide/BackImage.png","components/login.js","assets/img/UAEPass_LoginButton_Green_Pressed.png","assets/img/AR_UAEPass_LoginButton_Green_Pressed.png","components/showAddress.js","assets/img/pageNotFound.JPG","components/PageNotFound.js","components/ui/Theme.js","components/TimeOutHOC.js","components/AlertDialog.js","App.js","reportWebVitals.js","redux/reducers/appSettingsReducer.js","redux/reducers/addressingResultReducer.js","redux/reducers/mapPanelControlReducer.js","redux/reducers/index.js","redux/store.js","i18n.js","assets/css/Tajawal-Bold.ttf","index.js"],"names":["map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","ids","id","all","slice","keys","Object","module","exports","appConifg","Map","AerialImagery","process","PortalUrl","Address","GeometryServiceUrl","LocatorServiceUrl","SuggestionsUrlEN","FindAddressUrlEN","SuggestionsUrlAR","FindAddressUrlAR","ParcelServiceUrl","StreetsServiceUrl","PostalServiceUrl","AreaServiceUrl","PointAddressServiceUrl","RakStreetsTileEnglish","RakStreetsTileArabic","RakStreetsMapEnglish","RakStreetsMapArabic","RakBoundaryMapEnglish","RakBoundarysMapArabic","AddressApiUrl","SiteName","ShareAddressBaseUrl","ProxyUrl","IssueInbox","OpenIssueTypeId","ClosedIssueTypeId","AnonymousUser","username","password","UaePassDetails","loginUrl","clientId","redirectUrl","logoutUrl","AddressingResultActionTypes","fetchAddressResultRequest","fetch_type","fetch_input","type","payload","fetchType","fetchInput","fetchAddressResultSuccess","data","fetchAddressResultFailure","error","AddressDetails_ActionTypes","fetchAddressDetailsRequest","fetchAdressDetailsSuccess","fetchAddressDetailsFailure","paylod","clearAddressDetails","initialState","loading","moment","require","addressingApiResponseMapper","response","isSuccess","isSucceeded","isPartial","status","message","respData","successObj","failedObj","addressDetailsMapper","item","addressPointId","addressId","addressID","buildingNameE","buidlingNameE","buildingNameA","communityNameE","communityNameA","emirate","postalCode","countryName","longitude","positionX","positionY","makani","latitude","threeWordsEn","threeWordsAr","threeWordsUrdu","plusCode","parcelId","fullStreetNameEnglish","streetNameEnglish","fullStreetNameArabic","streetNameArabic","areaNameEn","areaNameAr","parcelGeometry","_ADDRESS_SUGGESTIONS_URLEN","_ADDRESS_SUGGESTIONS_URLAR","_FIND_ADDRESS_URLEN","_FIND_ADDRESS_URLAR","_STREET_SERVICE_URL","_POSTAL_SERVICE_URL","_AREA_SERVICE_URL","_PROXY_URL","TokenUrl","PortalUserName","PortalPassword","AppReferer","_ADDRESS_API_URL","API_CLIENT","axios","create","getAuthorizatonHeader","token","Authorization","getReqUrlEncodeParms","params","key","encodeURIComponent","join","getStreetDetails","street_number","source","CancelToken","where","f","req_data","post","getPostalAreaDetails","emPostCode","outFields","getAreaDetails","areaId","getAddressCandidateByText","text","language","getAddressIssueTypes","endPoint","get","headers","getAddressDetials","pointId","streetId","reqData","PointId","AreaId","StreetNumber","getAddressDetailsFromParcelId","parcelid","ActionTypes","setSidePanelopen","setSidePanelResultType","setSidePanelStatusAndResultType","useStyles","makeStyles","theme","mapSearchBarDesktop","display","breakpoints","up","position","marginTop","marginLeft","marginRight","width","zIndex","maxWidth","mapSearchBarMobile","connect","state","addressingResult","addressDetails","isAddressPanelOpen","mapPanelSetting","isSidePanelOpen","resultType","appSettings","settings","dispatch","openAddressPanel","props","classes","t","i18n","useTranslation","reduxDispatch","useDispatch","userCredentials","access_token","suggestionsState","setSuggestionsState","useState","isLoading","options","query","searchBarRef","useRef","useEffect","mapSearchValueDummy","console","log","current","clear","blur","removeLastPartARE","txt","restArry","split","pop","toString","handleSuggestionSearch","trim","length","p1","c1","searchTxt","category","maxSuggestions","getPointAddressSuggestions","p2","c2","getStreetAddressSuggestions","p3","c3","getAreaAddressSuggestions","p4","c4","getPostalAddressSuggestions","sug1","suggestions","i","suggestionType","sug2","sug3","sug4","allSug","concat","magicKey","suggestion","catch","err","getAddressResultBySuggestedSelection","promise","getAddressCandidateByMkey","resp","candidates","errMsg","getAddressResultByUserSearchText","search_text","eror","handleSuggestionSelected","selected","evt","customOption","user_entered_text","magic_key","activeIndex","setActiveIndex","onKeyDown","keyCode","target","value","className","ref","clearButton","delay","emptyLabel","ignoreDiacritics","labelKey","minLength","onSearch","placeholder","promptText","searchText","filterBy","onChange","allowNew","newSelectionPrefix","useCache","drawerIconBtn","backgroundColor","palette","primary","light","DrawerIcons","panelProps","useSelector","IconButton","aria-label","style","color","onClick","root","margin","spacing","extendedIcon","signIn","right","actionBar","top","const_address_point_symbol","path","size","outline","const_address_parcel_graphic_symbol","const_not_found_point_symbol","const_address_line_street_symbol","const_address_area_symbol","const_txt_symobl_for_graphics","font","family","weight","haloSize","horizontalAlignment","verticalAlignment","const_isssue_address_point","height","TranspController","only","maxHeight","cursor","MapSwitcher","showTile","setShowTile","handleClick2","toggleRakBoundaryService","StreetImgBox","Box","elevation","border","borderRadius","boxShadow","bgcolor","borderColor","src","StreetsThumb","SatImgBox","SatelliteThumb","showMapSwitcher","_AERIAL_IMAGERY","_LOCATOR_SERVICE_URL","_POINT_ADDRESS_SERVICE_URL","_GEOMETRY_SERVICE_URL","_RAK_STREETS_TILE_En","_RAK_STREETS_TILE_Ar","_RAK_STREETS_MAP_En","_RAK_STREETS_MAP_Ar","_RAK_BOUNDARY_MAP_En","_RAK_BOUNDARY_MAP_Ar","option2Url","option3Url","esriConfig","assetsPath","proxy_rules","urlPrefix","proxyUrl","esriCoreUrlUtils","view","ae2019ImgLyr","ImageryLayer","url","Rak_Boundary_Geom_4326","Polygon","fromJSON","spatialReference","wkid","latestWkid","ae2019BaseMap","Basemap","baseLayers","title","initialExtent","Extent","ymax","xmin","xmax","ymin","SpatialReference","basemap","RAKMapAerialBaseMap","EsriSatelliteBaseMap","homeWidget","Home","basemapGallery","BaseMapGallery","scaleBar","ScaleBar","unit","layerList","LayerList","layerListExpand","Expand","expandIconClass","content","mapGraphicLayer","GraphicsLayer","listMode","rak_streetsLyrEn","MapImageLayer","visible","rak_streetsLyrAr","emirate_boundaryLyrEn","emirate_boundaryLyrAr","option2Service","option3Service","locatorTask","Locator","geometryServiceTask","GeometryService","initiatingAddressDetailsFetch","fetchedAddressDetailsSuccessfully","faiedTofetchAddressDetails","closeAddressPanel","mapDiv","setShowMapSwitcher","store_address_result","store_appToken","isReverseGeoCodingInProgress","SetIsReverseGeoCodingInProgress","mounted","showMap","MapView","container","extent","constraints","snapToZoom","rotationEnabled","ui","add","popup","autoOpenEnabled","locateBtn","Locate","on","event","mapPoint","clearAddressGraphicsLayer","toJSON","outSpatialReference","esriProject","projectPnt4326","reverseGeoCode2","when","obj","Array","isArray","zoomToDisplayedAddressGraphic","zoom","watch","scaleVal","isMobile","isTablet","isMobileOnly","rk_streets","allLayers","find","lyr","remove","rk_boundary","layers","isParcelSearch","isReverseGeocode","address_candiate","displayAddressGraphic","address_data","displayPointAddressGraphic2","x","y","clickPoint4326","triggerAddressPanelOpen","clearMapSearchText","location","locationToAddress","parcel_address","address","getAndDisplayAddressDetailsFromParcelId","noResultFromReverseGeoCodeAction","dipatchData","addressNotFound","Graphic","geometry","symbol","addGraphicToAddressGraphicLayer","attributes","Addr_type","StreetId","point_id","AddressPointId","area_id","getAndDrawAddressPointDetails","displayStreetAddressGraphic","displayAreaGraphic","displayPostalAreaGraphic","setMapSearchValueDummy","MapSearchbar","address_location","parcel_geometry","pracel_polygon_json","rings","address_point_32640","Point","addressGraphic","address_type","zoomToSingleGraphic","features","pfeatures","paths","pGraphic","zoomToAreaGraphic","langauge","fAttributes","pfeature","labelPoints","labelPoint","txtSymbol","TextSymbol","NameEn","NameAR","labelPointGraphic","graphics","Postal","farea","City","EmPostCode","graphic","removeAll","toZoomGeom","goTo","duration","veiwWKID","gGeom","expand","clone","address_g","getItemAt","DisplayAddressIssuePointOnMap","lat","lng","p4326","pView","graphicId","toRemoveGraphic","g","removeGraphicFromGraphicLayer","issueGraphic","scale","boundaryLyr","QueryTask","parcel_graphic","iconButton","iconContainer","initialstate","refresh","page","pagination","count","rowsPerPage","sortOrder","name","direction","IssueStauses","IssueTypes","ISSUE_STATUS_OPEN_ID","ISSUE_STATUS_CLOSED_ID","addressIssueTypes","addressIssueStatus","addressIssueStatusTypes","AdddressIssueTypesHashMap","setAdddressIssueTypesHashMap","AddressStatusTypesHashMap","setAddressStatusTypesHashMap","IHM","reduce","SHM","setState","activeFilterChip","setActiveFilterChip","ChipIssueStatusFilter","Chip","label","parmsObj","JSON","stringify","OrderBy","values","PageNo","PageSize","ReportUserNames","MobileNUmbers","AssignedUserNames","getAddressIssuesPaginated","aresp","pageNo","pageSize","totalCount","acmApiPaginatedResponseMapper","issuesData","reportUserName","reportedDate","format","reporterDescription","email","mobile","fK_Issue_TypeId","fK_Issue_StatusId","responderUserName","responderComments","respondedDate","filter","refreshGridValue","grid_columns_names","getGridRowDataArrayToObj","row_data","row_data_json","forEach","index","grid_columns","searchable","filterOptions","names","customBodyRender","tableMeta","updatedValue","rowData","fk_Issue_TypeId","updatedVaule","Link","component","sort","showIssueDetails","Tooltip","grid_options","rowsPerPageOptions","serverSide","rowPerPage","viewColumns","jumpToPage","print","download","selectableRows","responsive","search","customToolbar","refreshGrid","fontSize","onTableChange","action","tableState","filterList","textLabels","body","noMatch","reset","next","previous","displayRows","Grid","xs","columns","AddressIssueTypes_ActionsTypes","AddressIssueStatusTypes_ActionsTypes","DialogContent","withStyles","styles","MuiDialogContent","DialogTitle","padding","closeButton","grey","children","onClose","other","disableTypography","Typography","variant","disabled","DialogActions","MuiDialogActions","attachmenticon","transform","loginUserDetails","user","addToast","useToasts","respondTxt","setRespondTxt","loggedInCustodianName","userName","issueInfo","issueId","issueType","issueStatusId","reportedUserName","reporterEmail","isSubmintInProgress","setIsSubmitInProgress","isRespondedStatus","getAndDisplayIssueAttachment","getAddressIssueAttachment","fileContent","fileName","triggerBase64Download","alert","sendResponseToUser","toast","responderName","comment","IssueId","ResponderUserName","ResponderComment","respondToAddressIssue","success","Dialog","open","aria-labelledby","disableBackdropClick","fullWidth","dividers","justify","List","ListItem","ListItemText","secondary","Fab","TextareaAutosize","rows","Button","autoFocus","startIcon","LinearProgress","addressIssueTypesStateStore","addressIssueStatusStateStore","fetchAddressIssueTypes","fetchedAddressIssueTypesSuccessfully","fetchAddressIssueTypesSuccess","fetchAddressIssueTypesFailed","errMessage","fetchAddressIssueStatusTypes","fetchedAddressIssueStatusTypesSuccessfully","fetchAddressIssueStatusTypesSuccess","fetchAddressIssueStatusTypesFailed","singleIssueDetails","setSingleIssueDetails","setRefreshGridValue","nameEN","nameAR","promise2","source2","getAddressIssueStatuTypes","cancel","issueData","lightToolTipClass","tooltip","common","lightgrey","blue","shadows","arrow","LightTooltip","StreetSvg2","SvgIcon","viewBox","d","PolygonSvg","LetterBoxSvg","setActivePage","setActiveLanguage","setUserCredentials","credential","setAlert","alertObj","IssueTooltip","typography","pxToRem","formRef","createRef","comments","setComments","setName","phone","setPhone","setEmail","showReportAlert","setShowReportAlert","alertReportType","setAlertReportType","alertReportMsg","setAlertReportMsg","setIssueType","issueTypes","setIssueTypes","attachment","setAttachment","setIsLoading","showAttachError","setShowAttachError","promiseIssueType","uaePassUser","fullnameEN","ValidatorForm","addValidationRule","match","onSubmit","ReportUserName","Email","Mobile","Latitude","Longitude","FK_Issue_TypeId","FK_Issue_StatusId","searchedText","Attachments","ArabicEmailFormat","onSuccess","ReactGA","ex","DialogContentText","validators","errorMessages","InputLabel","marginBottom","Select","labelId","Type","Fragment","detailsNameEN","deatilsNameAR","MenuItem","multiline","accept","multiple","from","files","element","file","baseURL","reader","FileReader","readAsDataURL","onload","result","fileInfo","old","lastModified","FileName","FileExtension","FileContent","htmlFor","class","dense","ListItemSecondaryAction","edge","items","removeFileItem","Alert","severity","AlertTitle","senderEmail","setSenderEmail","isDiffUser","setIsDiffUser","showShareAlert","setShowShareAlert","alertShareType","setAlertShareType","alertShareMsg","setAlertShareMsg","PlusCode","ThreeWordsAddress","Makani","receiverEmail","ThreeWordsAddressAR","required","FormControlLabel","control","Checkbox","checked","PlusCodeInfo","What3WordsInfo","LatLngInfo","MakaniInfo","ShareAddressComponent","store_addressDetailsData","setShareOpen","lang","isLangArActive","AddNum","StNameEn","StNameAr","AreaEn","AreaAr","PostalCode","addressLink","GreetingsTxt","BuildingNoTxt","StreetTxt","AreaTxt","PostalCodeTxt","AddressLinkTxt","formatedAddressMessageEn","formatedAddressMessageAr","p","alignItems","justifyContent","m","EmailIcon","WhatsappShareButton","WhatsappIcon","background","paper","overflow","chip","divider","card","cardHeader","section1","section2","section3","formControl","minWidth","button","backdrop","drawer","avatar","cardAction","customAccordian","clearAddressDisplay","history","useHistory","showOtherAddressFormats","setShowOtherAddressFormats","store_address_result_loading","store_addressDetails","hasValue","ParcelId","Lat","Lng","ThreeWordsEn","ThreeWordsAr","ThreeWordsUrdu","BuildingNameE","BuildingNameA","CommunityNameE","CommunityNameA","MakaniNumber","shareOpen","reportOpen","setReportOpen","snackOpen","setSnackOpen","toastMsg","setToastMsg","loginAlertflg","setLoginAlertflg","zoomToMapAddressGraphic","setTimeout","handleSnackClose","successMessageToast","Message","getGooglePlusCodeLink","replace","getGoogleLatLngLink","getW3WLink","w3w","OtherAddressFormatsAccordian","Collapse","in","timeout","unmountOnExit","paddingBottom","hidden","Divider","PlusCodeBit","LatLngAddressBit","W3wBit","MakaniBit","ExpandMore","handleExpandClick","aria-expanded","interactive","styled","transition","transitions","shortest","AddressBit","sm","md","lg","mt","LocationOn","UserActionButtons","href","rel","Language","Avatar","ButtonGroup","HandleReportIssue","Clear","DisplayAddressHTML","Card","raised","CardContent","DisplayClickInsideRakBoundary","LatLngBit","toFixed","CardActions","ErrorDisplayHTML","ReportIssueButton","acmUser","DisplayWelcomeHTML","CardHeader","DisplayContent","CircularProgress","point_4326","mPoint","geometryEngine","IsPointInsideRakBoundary_4326","NoAddressFoundContent","NotPointAddressFoundContent","address_candidate_attributes","Match_addr","display_cnt","address_typ","address_content","icon","LoginAlert","aria-describedby","push","msg","Snackbar","autoHideDuration","drawerWidth","document","offsetWidth","sideFlag","root2","flexGrow","menuButton","hide","flexShrink","drawerPaper","drawerHeader","indicator","easing","sharp","leavingScreen","contentShift","easeOut","enteringScreen","contentRtl","contentShiftRtl","MapWrapper","useTheme","pageview","window","pathname","Drawer","anchor","Tabs","Tab","roleNames","includes","clsx","purple","getContrastText","deepPurple","loggedInUserAvatar","headerDesktop","headerMobile","sectionDesktop","sectionMobile","languageIcon","Header","pageSettings","anchorEl","setAnchorEl","signOpen","Boolean","cookiesStore","setCookieStore","useCookies","handleSignClose","handleLangChange","changeLanguage","classList","handleSignout","axiosConfig","flag","mobilePopperOpen","setMobilePopperOpen","anchorRef","handleClose","contains","String","govLogo","alt","logo","activePage","newValue","indicatorColor","textColor","centered","isLoggedIn","aria-controls","aria-haspopup","currentTarget","charAt","toUpperCase","Popover","anchorOrigin","vertical","horizontal","transformOrigin","PaperProps","userTypeName","Pdf_en","Pdf_ar","without","undefined","prevOpen","SwipeableDrawer","onOpen","Paper","ClickAwayListener","onClickAway","MenuList","autoFocusItem","preventDefault","Footer","LoginUaePassCallback","removeCookieStore","getQueryVariable","store","isAlert","alertMsg","userType","variable","substring","vars","pair","Contact","frameBorder","allowFullScreen","image","backgroundImage","slide1","backgroundRepeat","backgroundSize","backgroundPosition","flexDirection","main","form","submit","setPassword","setUsername","isRemember","setIsRemember","isPressed","setIsPressed","currentPassword","setCurrentPassword","newPassword","setNewPassword","confirmPassword","setConfirmPassword","showAlert","setShowAlert","alertType","setAlertType","setAlertMsg","localStorage","getItem","bytes","CryptoJS","AES","decrypt","userCreds","parse","enc","Utf8","CssBaseline","square","noValidate","TextField","onInput","autoComplete","UserName","OldPassword","NewPassword","cipherUsercreds","encrypt","setItem","removeItem","getAddressResultByHashKey","getAddressByHashkey","PageNotFound","alignSelf","notFoundImage","createMuiTheme","orange","white","red","bluegrident","MuiTableCell","overrides","MuiTooltip","TimeOutHOC","isIdle","setIsIdle","timeUp","setTimeUp","pause","resume","getRemainingTime","getLastActiveTime","getElapsedTime","useIdleTimer","onActive","onIdle","LoadingMessage","App","setShowMap","initialize","ThemeProvider","placement","autoDismiss","CookiesProvider","basename","slot","exact","render","to","ShowAddress","LoginPage","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","reducer","combineReducers","createStore","composeWithDevTools","applyMiddleware","thunk","resources","en","contact","contactTransEn","header","headerTransEn","homepage","homePageEn","footer","footerEn","loginPage","loginPageEn","mapPage","mapPageEn","reportIssuePage","reportIssuePageEN","ShareAddress","ShareAddressEn","issueInboxPage","issueInboxPageEn","timeOutPage","timeOutPageEN","uaePassPage","uaePassPageEN","ar","contactTransAr","headerTransAr","homePageAr","footerAr","loginPageAr","mapPageAr","reportIssuePageAr","ShareAddressAr","issueInboxPageAr","timeOutPageAr","uaePassPageAr","use","Backend","initReactI18next","init","defaultNS","fallbackLng","debug","react","bindI18n","bindI18nStore","transEmptyNodeValue","transSupportBasicHtmlNodes","transKeepBasicHtmlNodesFor","useSuspense","applyPolyfills","defineCustomElements","ReactDOM","StrictMode","getElementById"],"mappings":"iq6BAAA,IAAIA,EAAM,CACT,iCAAkC,CACjC,KACA,IAED,8BAA+B,CAC9B,KACA,IAED,2BAA4B,CAC3B,KACA,IAED,4BAA6B,CAC5B,KACA,IAED,6BAA8B,CAC7B,KACA,IAED,4BAA6B,CAC5B,KACA,IAED,0BAA2B,CAC1B,KACA,IAED,8BAA+B,CAC9B,KACA,IAED,0BAA2B,CAC1B,KACA,IAED,oCAAqC,CACpC,KACA,IAED,gCAAiC,CAChC,KACA,EACA,IAED,mCAAoC,CACnC,KACA,IAED,gCAAiC,CAChC,KACA,EACA,KAED,yBAA0B,CACzB,KACA,KAED,4BAA6B,CAC5B,KACA,IAED,4BAA6B,CAC5B,KACA,IAED,2BAA4B,CAC3B,KACA,KAED,4BAA6B,CAC5B,KACA,KAED,0BAA2B,CAC1B,KACA,KAED,qCAAsC,CACrC,KACA,KAED,uCAAwC,CACvC,KACA,EACA,IAED,mCAAoC,CACnC,KACA,IAED,2BAA4B,CAC3B,KACA,IAED,2BAA4B,CAC3B,KACA,KAED,0BAA2B,CAC1B,KACA,KAED,4BAA6B,CAC5B,KACA,KAED,2BAA4B,CAC3B,KACA,IAED,4BAA6B,CAC5B,KACA,KAED,8BAA+B,CAC9B,KACA,KAED,gCAAiC,CAChC,KACA,KAED,qCAAsC,CACrC,KACA,IAED,oCAAqC,CACpC,KACA,IAED,+BAAgC,CAC/B,KACA,IAED,+BAAgC,CAC/B,KACA,EACA,KAED,8BAA+B,CAC9B,KACA,KAED,wCAAyC,CACxC,KACA,KAED,kCAAmC,CAClC,KACA,IAED,mCAAoC,CACnC,KACA,KAED,2BAA4B,CAC3B,KACA,KAED,4BAA6B,CAC5B,KACA,KAED,2BAA4B,CAC3B,KACA,KAED,sCAAuC,CACtC,KACA,KAED,6BAA8B,CAC7B,KACA,KAED,4BAA6B,CAC5B,KACA,IAED,mCAAoC,CACnC,KACA,GACA,KAED,kCAAmC,CAClC,KACA,KAED,+BAAgC,CAC/B,KACA,KAED,4BAA6B,CAC5B,KACA,IAED,2BAA4B,CAC3B,KACA,IAED,uCAAwC,CACvC,KACA,KAED,i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AmB,mBAAoB,CAAC,kBAAkB,mBAAoB,CAAC,kBAAmB,mBAAoB,CAAC,kBAAkB,mBAAoB,CAAC,kBAAmB,oBAAoB,CAAC,kBAAmB,oBAAoB,CAAC,kBAAkB,mBAAmB,CAAC,kBAAmB,mBAAoB,CAAC,kBAAmB,oBAAoB,CAAC,kBAAmB,oBAAoB,CAAC,kBAAmB,mBAAmB,CAAC,mBAAmB,oBAAoB,CAAC,kBAAmB,qBAAqB,CAAC,CAAC,kBAAmB,oBAAoB,CAAC,kBAAmB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,mBAAmB,mBAAmB,CAAC,kBAAmB,mBAAoB,CAAC,kBAAmB,mBAAmB,CAAC,mBAAmB,oBAAoB,CAAC,kBAAmB,oBAAoB,CAAC,kBAAmB,oBAAoB,CAAC,kBAAmB,mBAAmB,CAAC,kBAAmB,oBAAoB,CAAC,kBAAmB,mBAAoB,CAAC,kBAAmB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,kBAAmB,oBAAoB,CAAC,kBAAmB,oBAAoB,CAAC,kBAAmB,oBAAoB,CAAC,kBAAmB,mBAAmB,CAAC,kBAAmB,mBAAmB,CAAC,kBAAmB,mBAAoB,CAAC,kBAAmB,mBAAmB,CAAC,kBAAmB,oBAAoB,CAAC,kBAAmB,oBAAoB,CAAC,kBAAmB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,kBAAmB,mBAAoB,CAAC,kBAAmB,oBAAoB,CAAC,kBAAmB,oBAAoB,CAAC,kBAAmB,mBAAoB,CAAC,mBAAmB,mBAAoB,CAAC,kBAAmB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,kBAAmB,mBAAmB,CAAC,kBAAmB,mBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,kBAAmB,mBAAoB,CAAC,kBAAmB,mBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,kBAAmB,oBAAoB,CAAC,kBAAmB,oBAAoB,CAAC,kBAAmB,oBAAoB,CAAC,kBAAkB,oBAAoB,CAAC,mBAAmB,oBAAoB,CAAC,kBAAmB,oBAAoB,CAAC,kBAAmB,mBAAmB,CAAC,kBAAmB,oBAAoB,CAAC,kBAAmB,oBAAoB,CAAC,kBAAmB,mBAAmB,CAAC,kBAAmB,oBAAoB,CAAC,k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","file":"static/js/main.38a1805e.chunk.js","sourcesContent":["var map = {\n\t\"./calcite-accordion_2.entry.js\": [\n\t\t1565,\n\t\t77\n\t],\n\t\"./calcite-action_5.entry.js\": [\n\t\t1566,\n\t\t67\n\t],\n\t\"./calcite-alert.entry.js\": [\n\t\t1567,\n\t\t93\n\t],\n\t\"./calcite-avatar.entry.js\": [\n\t\t1568,\n\t\t94\n\t],\n\t\"./calcite-block_2.entry.js\": [\n\t\t1569,\n\t\t66\n\t],\n\t\"./calcite-button.entry.js\": [\n\t\t1570,\n\t\t95\n\t],\n\t\"./calcite-card.entry.js\": [\n\t\t1571,\n\t\t96\n\t],\n\t\"./calcite-checkbox.entry.js\": [\n\t\t1572,\n\t\t78\n\t],\n\t\"./calcite-chip.entry.js\": [\n\t\t1573,\n\t\t97\n\t],\n\t\"./calcite-color-picker_3.entry.js\": [\n\t\t1574,\n\t\t68\n\t],\n\t\"./calcite-combobox_3.entry.js\": [\n\t\t1575,\n\t\t6,\n\t\t59\n\t],\n\t\"./calcite-date-picker_4.entry.js\": [\n\t\t1576,\n\t\t56\n\t],\n\t\"./calcite-dropdown_3.entry.js\": [\n\t\t1577,\n\t\t6,\n\t\t119\n\t],\n\t\"./calcite-fab.entry.js\": [\n\t\t1578,\n\t\t120\n\t],\n\t\"./calcite-filter.entry.js\": [\n\t\t1579,\n\t\t60\n\t],\n\t\"./calcite-flow_2.entry.js\": [\n\t\t1580,\n\t\t75\n\t],\n\t\"./calcite-graph.entry.js\": [\n\t\t1581,\n\t\t121\n\t],\n\t\"./calcite-handle.entry.js\": [\n\t\t1582,\n\t\t209\n\t],\n\t\"./calcite-icon.entry.js\": [\n\t\t1583,\n\t\t122\n\t],\n\t\"./calcite-inline-editable.entry.js\": [\n\t\t1584,\n\t\t123\n\t],\n\t\"./calcite-input-date-picker.entry.js\": [\n\t\t1585,\n\t\t6,\n\t\t79\n\t],\n\t\"./calcite-input-message.entry.js\": [\n\t\t1586,\n\t\t98\n\t],\n\t\"./calcite-input.entry.js\": [\n\t\t1587,\n\t\t69\n\t],\n\t\"./calcite-label.entry.js\": [\n\t\t1588,\n\t\t124\n\t],\n\t\"./calcite-link.entry.js\": [\n\t\t1589,\n\t\t125\n\t],\n\t\"./calcite-loader.entry.js\": [\n\t\t1590,\n\t\t126\n\t],\n\t\"./calcite-modal.entry.js\": [\n\t\t1591,\n\t\t99\n\t],\n\t\"./calcite-notice.entry.js\": [\n\t\t1592,\n\t\t100\n\t],\n\t\"./calcite-option_3.entry.js\": [\n\t\t1593,\n\t\t127\n\t],\n\t\"./calcite-pagination.entry.js\": [\n\t\t1594,\n\t\t128\n\t],\n\t\"./calcite-pick-list-group.entry.js\": [\n\t\t1595,\n\t\t76\n\t],\n\t\"./calcite-pick-list-item.entry.js\": [\n\t\t1596,\n\t\t80\n\t],\n\t\"./calcite-pick-list.entry.js\": [\n\t\t1597,\n\t\t57\n\t],\n\t\"./calcite-popover_2.entry.js\": [\n\t\t1598,\n\t\t6,\n\t\t101\n\t],\n\t\"./calcite-progress.entry.js\": [\n\t\t1599,\n\t\t210\n\t],\n\t\"./calcite-radio-button-group.entry.js\": [\n\t\t1600,\n\t\t211\n\t],\n\t\"./calcite-radio-button.entry.js\": [\n\t\t1601,\n\t\t81\n\t],\n\t\"./calcite-radio-group_2.entry.js\": [\n\t\t1602,\n\t\t102\n\t],\n\t\"./calcite-radio.entry.js\": [\n\t\t1603,\n\t\t212\n\t],\n\t\"./calcite-rating.entry.js\": [\n\t\t1604,\n\t\t103\n\t],\n\t\"./calcite-scrim.entry.js\": [\n\t\t1605,\n\t\t213\n\t],\n\t\"./calcite-shell-center-row.entry.js\": [\n\t\t1606,\n\t\t104\n\t],\n\t\"./calcite-shell_2.entry.js\": [\n\t\t1607,\n\t\t129\n\t],\n\t\"./calcite-slider.entry.js\": [\n\t\t1608,\n\t\t82\n\t],\n\t\"./calcite-sortable-list.entry.js\": [\n\t\t1609,\n\t\t25,\n\t\t214\n\t],\n\t\"./calcite-split-button.entry.js\": [\n\t\t1610,\n\t\t130\n\t],\n\t\"./calcite-stepper_2.entry.js\": [\n\t\t1611,\n\t\t105\n\t],\n\t\"./calcite-switch.entry.js\": [\n\t\t1612,\n\t\t61\n\t],\n\t\"./calcite-tab_4.entry.js\": [\n\t\t1613,\n\t\t83\n\t],\n\t\"./calcite-tile-select-group.entry.js\": [\n\t\t1614,\n\t\t215\n\t],\n\t\"./calcite-tile-select.entry.js\": [\n\t\t1615,\n\t\t131\n\t],\n\t\"./calcite-tile.entry.js\": [\n\t\t1616,\n\t\t216\n\t],\n\t\"./calcite-tip_3.entry.js\": [\n\t\t1617,\n\t\t92\n\t],\n\t\"./calcite-tooltip_2.entry.js\": [\n\t\t1618,\n\t\t6,\n\t\t106\n\t],\n\t\"./calcite-tree_2.entry.js\": [\n\t\t1619,\n\t\t107\n\t],\n\t\"./calcite-value-list-item.entry.js\": [\n\t\t1620,\n\t\t70\n\t],\n\t\"./calcite-value-list.entry.js\": [\n\t\t1621,\n\t\t25,\n\t\t58\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 1536;\nmodule.exports = webpackAsyncContext;","export const appConifg = {\r\n Map: {\r\n AerialImagery:\r\n process.env.REACT_APP_GIS_BASE_URL +\r\n \"serverimage/rest/services/Aerial_Imagery_2019/ImageServer\",\r\n PortalUrl: process.env.REACT_APP_ARCGIS_PORTAL_URL,\r\n },\r\n Address: {\r\n GeometryServiceUrl:\r\n process.env.REACT_APP_GIS_BASE_URL +\r\n \"server/rest/services/Utilities/Geometry/GeometryServer\",\r\n LocatorServiceUrl:\r\n process.env.REACT_APP_GIS_BASE_URL +\r\n process.env.REACT_APP_LOCATORSERVICE_URL,\r\n SuggestionsUrlEN:\r\n process.env.REACT_APP_GIS_BASE_URL +\r\n process.env.REACT_APP_LOCATOR_URL_EN +\r\n \"/suggest\",\r\n FindAddressUrlEN:\r\n process.env.REACT_APP_GIS_BASE_URL +\r\n process.env.REACT_APP_LOCATOR_URL_EN +\r\n \"/findAddressCandidates\",\r\n SuggestionsUrlAR:\r\n process.env.REACT_APP_GIS_BASE_URL +\r\n process.env.REACT_APP_LOCATOR_URL_AR +\r\n \"/suggest\",\r\n FindAddressUrlAR:\r\n process.env.REACT_APP_GIS_BASE_URL +\r\n process.env.REACT_APP_LOCATOR_URL_AR +\r\n \"/findAddressCandidates\",\r\n ParcelServiceUrl:\r\n process.env.REACT_APP_GIS_BASE_URL +\r\n \"server/rest/services/RakLocatorMap/RakLocatorMap/MapServer/4\",\r\n StreetsServiceUrl:\r\n process.env.REACT_APP_GIS_BASE_URL +\r\n \"server/rest/services/RakLocatorMap/RakLocatorMap/MapServer/2\",\r\n PostalServiceUrl:\r\n process.env.REACT_APP_GIS_BASE_URL +\r\n \"server/rest/services/RakLocatorMap/RakLocatorMap/MapServer/3\",\r\n AreaServiceUrl:\r\n process.env.REACT_APP_GIS_BASE_URL +\r\n \"server/rest/services/RakLocatorMap/RakLocatorMap/MapServer/5\",\r\n PointAddressServiceUrl:\r\n process.env.REACT_APP_GIS_BASE_URL +\r\n \"server/rest/services/RakLocatorMap/RakLocatorMap/MapServer/1\",\r\n RakStreetsTileEnglish:\r\n process.env.REACT_APP_GIS_BASE_URL +\r\n \"server/rest/services/Hosted/AddressBaseMap/VectorTileServer\",\r\n RakStreetsTileArabic:\r\n process.env.REACT_APP_GIS_BASE_URL +\r\n \"server/rest/services/Hosted/AddressBaseMapArabic/VectorTileServer\",\r\n RakStreetsMapEnglish:\r\n process.env.REACT_APP_GIS_BASE_URL +\r\n \"server/rest/services/RakLocatorMap/AddressBaseMapEnglishHollow/MapServer\",\r\n RakStreetsMapArabic:\r\n process.env.REACT_APP_GIS_BASE_URL +\r\n \"server/rest/services/RakLocatorMap/AddressBaseMapArabicHollow/MapServer\",\r\n RakBoundaryMapEnglish:\r\n process.env.REACT_APP_GIS_BASE_URL +\r\n \"server/rest/services/RakLocatorMap/AddressBaseMapEnglish/MapServer\",\r\n RakBoundarysMapArabic:\r\n process.env.REACT_APP_GIS_BASE_URL +\r\n \"server/rest/services/RakLocatorMap/AddressBaseMapArabic/MapServer\",\r\n AddressApiUrl: process.env.REACT_APP_BASE_URL + \"api\",\r\n SiteName: process.env.REACT_APP_SITE_NAME,\r\n ShareAddressBaseUrl : process.env.REACT_APP_SHARE_ADDRESS_BASE_URL\r\n },\r\n ProxyUrl: process.env.REACT_APP_PROXY_URL,\r\n IssueInbox: {\r\n OpenIssueTypeId: 1,\r\n ClosedIssueTypeId: 3,\r\n },\r\n AnonymousUser: {\r\n username: process.env.REACT_APP_ANONYMOUS_UN,\r\n password: process.env.REACT_APP_ANONYMOUS_PW,\r\n },\r\n UaePassDetails: {\r\n loginUrl: process.env.REACT_APP_UAEPASS_LOGIN_URL,\r\n clientId: process.env.REACT_APP_UAEPASS_CLIENT_ID,\r\n redirectUrl: process.env.REACT_APP_UAEPASS_REDIRECT_URL,\r\n logoutUrl: process.env.REACT_APP_UAEPASS_LOGOUT_URL,\r\n }\r\n};\r\n","export const AddressingResultActionTypes = {\r\n FETCH_AddressResults_REQUEST: \"FETCH_AddressResults_REQUEST\",\r\n FETCH_AddressResults_SUCCESS: \"FETCH_AddressResults_SUCCESS\",\r\n FETCH_AddressResults_FAILURE: \"FETCH_AddressResults_FAILURE\",\r\n CLEAR_AddressResults: \"CLEAR_AddressResults\",\r\n FETCH_DATA_FROM_COOKIES: \"FETCH_DATA_FROM_COOKIES\",\r\n};\r\n","import { AddressingResultActionTypes } from \"../constants/addressingResultActionTypes\";\r\n\r\nexport const fetchAddressResultRequest = (fetch_type, fetch_input) => {\r\n //will recive FetchType\r\n return {\r\n type: AddressingResultActionTypes.FETCH_AddressResults_REQUEST,\r\n payload: { fetchType: fetch_type, fetchInput: fetch_input },\r\n };\r\n};\r\n\r\nexport const fetchAddressResultSuccess = (data) => {\r\n return {\r\n type: AddressingResultActionTypes.FETCH_AddressResults_SUCCESS,\r\n payload: data,\r\n };\r\n};\r\n\r\nexport const fetchAddressResultFailure = (error) => {\r\n return {\r\n type: AddressingResultActionTypes.FETCH_AddressResults_FAILURE,\r\n payload: error,\r\n };\r\n};\r\n\r\n//Update Shamnas -- get data from cookies\r\nexport const fetchAddressResultFromCookie = (data) => {\r\n return {\r\n type: AddressingResultActionTypes.FETCH_DATA_FROM_COOKIES,\r\n payload: data,\r\n };\r\n};\r\n\r\nexport const clearAddressResult = () => {\r\n return {\r\n type: AddressingResultActionTypes.CLEAR_AddressResults,\r\n };\r\n};\r\n","//Action Type\r\nexport const AddressDetails_ActionTypes = {\r\n FETCH_AddressDetails_REQUEST : 'FETCH_AddressDetails_REQUEST',\r\n FETCH_AddressDetails_SUCCESS : 'FETCH_AddressDetails_SUCCESS',\r\n FETCH_AddressDetails_FAILURE : 'FETCH_AddressDetails_FAILURE',\r\n CLEAR_AddressDetails : 'CLEAR_AddressDetails'\r\n}\r\n\r\n//Action\r\nexport const fetchAddressDetailsRequest = (fetch_type)=>{ //fetch_type can be -Suggestion_Select , Text_Search , Map_Click\r\n return {\r\n type : AddressDetails_ActionTypes.FETCH_AddressDetails_REQUEST,\r\n payload : fetch_type\r\n }\r\n}\r\n\r\nexport const fetchAdressDetailsSuccess = (data)=>{\r\n return {\r\n type : AddressDetails_ActionTypes.FETCH_AddressDetails_SUCCESS,\r\n payload : data\r\n }\r\n}\r\n\r\nexport const fetchAddressDetailsFailure = (error)=>{\r\n return {\r\n type :AddressDetails_ActionTypes.FETCH_AddressDetails_FAILURE,\r\n paylod : error\r\n }\r\n}\r\n\r\nexport const clearAddressDetails = ()=>{\r\n return {\r\n type :AddressDetails_ActionTypes.CLEAR_AddressDetails\r\n }\r\n}\r\n\r\nconst initialState = {\r\n data : [],\r\n loading : false,\r\n error : '',\r\n fetchType : '' // //fetch_type can be -Suggestion_Select , Text_Search , Map_Click\r\n}\r\n\r\n//Reducer\r\nexport const addressDetailsReducer = (state = initialState , {type, payload})=>{\r\n switch (type) {\r\n case AddressDetails_ActionTypes.FETCH_AddressDetails_REQUEST:\r\n return {\r\n ...state,\r\n data : [],\r\n loading : true,\r\n error : ''\r\n }\r\n\r\n case AddressDetails_ActionTypes.FETCH_AddressDetails_SUCCESS:\r\n return {\r\n ...state,\r\n data : payload,\r\n loading : false,\r\n error : ''\r\n }\r\n\r\n case AddressDetails_ActionTypes.FETCH_AddressDetails_FAILURE:\r\n return {\r\n ...state,\r\n data : [],\r\n loading : false,\r\n error : payload\r\n }\r\n\r\n case AddressDetails_ActionTypes.CLEAR_AddressDetails:\r\n return {\r\n ...state,\r\n data : [],\r\n loading : false,\r\n error : '',\r\n }\r\n\r\n default:\r\n return state;\r\n }\r\n \r\n}\r\n","const moment = require(\"moment\");\r\n\r\nexport const acmApiPaginatedResponseMapper = (response) => {\r\n var isSuccess = response.isSucceeded;\r\n var code = response.status.code;\r\n var message = response.status.message;\r\n var isPartial = code === 3;\r\n var successObj = {};\r\n var failedObj = {};\r\n var pageNo = response.data.pageNo;\r\n var pageSize = response.data.pageSize;\r\n var totalCount = response.data.count;\r\n var respData = response.data.data ? response.data.data : [];\r\n\r\n return {\r\n isSuccess,\r\n isPartial,\r\n message,\r\n respData,\r\n pageNo,\r\n pageSize,\r\n totalCount,\r\n successObj,\r\n failedObj,\r\n };\r\n};\r\n\r\nexport const addressingApiResponseMapper = (response) => {\r\n var isSuccess = response.isSucceeded;\r\n var code = response.status.code;\r\n var message = response.status.message;\r\n var isPartial = code === 3;\r\n var successObj = {};\r\n var failedObj = {};\r\n var respData = response.data;\r\n\r\n return {\r\n isSuccess,\r\n isPartial,\r\n message,\r\n respData,\r\n successObj,\r\n failedObj,\r\n };\r\n};\r\n\r\nexport const addressIssueStatusTypesMapper = (data) => {\r\n return data.map((item) => ({\r\n id: item.id,\r\n name: item.name,\r\n }));\r\n};\r\n\r\nexport const addressIssueTypesMapper = (data, language) => {\r\n return data.map((item) => ({\r\n id: item.id,\r\n name: language == \"en\" ? item.nameEN : item.nameAR,\r\n }));\r\n};\r\n\r\nexport const addressIssuesMapper = (data) => {\r\n return data.map((item) => ({\r\n reportUserName: item.reportUserName,\r\n // reportedDate : item.reportedDate,\r\n reportedDate: moment(item.reportedDate).format(\"DD MMM YY\"),\r\n reporterDescription: item.reporterDescription,\r\n email: item.email,\r\n mobile: item.mobile,\r\n longitude: item.longitude,\r\n latitude: item.latitude,\r\n searchText: item.searchText,\r\n fK_Issue_TypeId: item.fK_Issue_TypeId,\r\n fK_Issue_StatusId: item.fK_Issue_StatusId,\r\n responderUserName: item.responderUserName,\r\n responderComments: item.responderComments,\r\n respondedDate: item.respondedDate,\r\n id: item.id,\r\n }));\r\n};\r\n\r\nexport const addressDetailsMapper = (item) => {\r\n return {\r\n addressPointId : item.addressPointId,\r\n addressId: item.addressID,\r\n buildingNameE: item.buidlingNameE,\r\n buildingNameA: item.buildingNameA,\r\n communityNameE: item.communityNameE,\r\n communityNameA: item.communityNameA,\r\n emirate: item.emirate,\r\n postalCode: item.postalCode,\r\n countryName: item.countryName,\r\n longitude: item.longitude,\r\n positionX: item.positionX,\r\n positionY: item.positionY,\r\n makani: item.makani,\r\n latitude: item.latitude,\r\n threeWordsEn: item.threeWordsEn,\r\n threeWordsAr: item.threeWordsAr,\r\n threeWordsUrdu: item.threeWordsUrdu,\r\n plusCode: item.plusCode,\r\n parcelId: item.parcelId,\r\n fullStreetNameEnglish: item.fullStreetNameEnglish,\r\n streetNameEnglish: item.streetNameEnglish,\r\n fullStreetNameArabic: item.fullStreetNameArabic,\r\n streetNameArabic: item.streetNameArabic,\r\n areaNameEn: item.areaNameEn,\r\n areaNameAr: item.areaNameAr,\r\n parcelGeometry: item.parcelGeometry,\r\n };\r\n};\r\n\r\nexport const addressIssueAttachmentMapper = (data) => {\r\n var item = data[0];\r\n return {\r\n fk_Issue_TypeId: item.fk_Issue_TypeId,\r\n fileName: item.fileName,\r\n fileContent: item.fileName,\r\n fileExtension: item.fileExtension,\r\n id: item.id,\r\n };\r\n};\r\n","import axios from \"axios\";\r\nimport { appConifg } from \"../config/default\";\r\n//import axiosClientWrapper from './axiosClientWrapper'\r\n\r\nconst HARD_CODE_TOKEN =\r\n \"GLHppyIaWuHJmmiVacGhfbG8FR6IjUQpmZJfbxt0O4KEwTOpeZaHKk7lcyn4-eT0mLF61T1ecdYWlVQVWlJgBWsNvHmpaGGiCF52xyZClXLZ0jzzTlHWvQ3nyfXgBh8AQ2mGvHIHorzkTDaDkmV7Tg..\";\r\n\r\nconst _ADDRESS_SUGGESTIONS_URLEN = appConifg.Address.SuggestionsUrlEN;\r\nconst _ADDRESS_SUGGESTIONS_URLAR = appConifg.Address.SuggestionsUrlAR;\r\nconst _FIND_ADDRESS_URLEN = appConifg.Address.FindAddressUrlEN;\r\nconst _FIND_ADDRESS_URLAR = appConifg.Address.FindAddressUrlAR;\r\nconst _PARCEL_SERVICE_URL = appConifg.Address.ParcelServiceUrl;\r\nconst _STREET_SERVICE_URL = appConifg.Address.StreetsServiceUrl;\r\nconst _POSTAL_SERVICE_URL = appConifg.Address.PostalServiceUrl;\r\nconst _AREA_SERVICE_URL = appConifg.Address.AreaServiceUrl;\r\nconst _TOKEN_URL = appConifg.Map.TokenUrl;\r\nconst _PORTAL_USER_NAME = appConifg.Map.PortalUserName;\r\nconst _PORTAL_PASSWORD = appConifg.Map.PortalPassword;\r\nconst _APP_REFERER = appConifg.Map.AppReferer;\r\nconst _PROXY_URL = appConifg.ProxyUrl;\r\nconst _ADDRESS_API_URL = appConifg.Address.AddressApiUrl;\r\nconst _GEOMETRY_SERVICE_URL = appConifg.Address.GeometryServiceUrl;\r\n\r\n// const hObje_urlEncded = {\r\n// headers : {\r\n// \"Content-Type\" : \"application/x-www-form-urlencoded\",\r\n// \"Access-Control-Allow-Origin\" : \"*\"\r\n// }\r\n// }\r\n\r\n// const _headerObj = {\r\n// \"Content-Type\" : \"application/x-www-form-urlencoded\",\r\n// \"Access-Control-Allow-Origin\" : \"*\"\r\n// }\r\n\r\nconst API_CLIENT = axios.create({\r\n //headers : _headerObj\r\n});\r\n\r\nconst getAuthorizatonHeader = (token) => {\r\n return {\r\n Authorization: \"bearer \" + token,\r\n };\r\n};\r\n\r\nconst getReqUrlEncodeParms = (params) =>\r\n Object.keys(params)\r\n .map((key) => `${key}=${encodeURIComponent(params[key])}`)\r\n .join(\"&\");\r\n\r\nexport const getParcelDetails = (parcelid, token) => {\r\n let source = axios.CancelToken.source();\r\n var whereClause = `PARCELID='${parcelid}'`;\r\n var params = { where: whereClause, f: \"json\" };\r\n const req_data = Object.keys(params)\r\n .map((key) => `${key}=${encodeURIComponent(params[key])}`)\r\n .join(\"&\");\r\n let promise = API_CLIENT.post(\r\n _PROXY_URL + \"?\" + _PARCEL_SERVICE_URL + \"/query\",\r\n req_data,\r\n { CancelToken: source.token }\r\n );\r\n return [promise, source];\r\n};\r\n\r\nexport const getStreetDetails = (street_number, token) => {\r\n let source = axios.CancelToken.source();\r\n var whereClause = `StreetNumber ='${street_number}'`;\r\n var params = { where: whereClause, f: \"json\" };\r\n const req_data = Object.keys(params)\r\n .map((key) => `${key}=${encodeURIComponent(params[key])}`)\r\n .join(\"&\");\r\n let promise = API_CLIENT.post(\r\n _PROXY_URL + \"?\" + _STREET_SERVICE_URL + \"/query\",\r\n req_data,\r\n { CancelToken: source.token }\r\n );\r\n return [promise, source];\r\n};\r\n\r\nexport const getPostalAreaDetails = (emPostCode, token) => {\r\n let source = axios.CancelToken.source();\r\n var whereClause = `EmPostCode ='${emPostCode}'`;\r\n var params = { where: whereClause, f: \"json\", outFields: \"*\" };\r\n const req_data = Object.keys(params)\r\n .map((key) => `${key}=${encodeURIComponent(params[key])}`)\r\n .join(\"&\");\r\n let promise = API_CLIENT.post(\r\n _PROXY_URL + \"?\" + _POSTAL_SERVICE_URL + \"/query\",\r\n req_data,\r\n { CancelToken: source.token }\r\n );\r\n return [promise, source];\r\n};\r\n\r\nexport const getAreaDetails = (areaId, token) => {\r\n let source = axios.CancelToken.source();\r\n var whereClause = `AreaID ='${areaId}'`;\r\n var params = { where: whereClause, f: \"json\", outFields: \"*\" };\r\n const req_data = Object.keys(params)\r\n .map((key) => `${key}=${encodeURIComponent(params[key])}`)\r\n .join(\"&\");\r\n let promise = API_CLIENT.post(\r\n _PROXY_URL + \"?\" + _AREA_SERVICE_URL + \"/query\",\r\n req_data,\r\n { CancelToken: source.token }\r\n );\r\n return [promise, source];\r\n};\r\n\r\nexport const generatePortalToken = () => {\r\n let source = axios.CancelToken.source();\r\n\r\n const tokenUrl = _TOKEN_URL;\r\n var userName = _PORTAL_USER_NAME;\r\n var password = _PORTAL_PASSWORD;\r\n var referer = _APP_REFERER;\r\n var params = {\r\n f: \"json\",\r\n username: userName,\r\n password: password,\r\n referer: referer,\r\n };\r\n const req_data = Object.keys(params)\r\n .map((key) => `${key}=${encodeURIComponent(params[key])}`)\r\n .join(\"&\");\r\n\r\n let promise = API_CLIENT.post(tokenUrl, req_data, {\r\n CancelToken: source.token,\r\n });\r\n return [promise, source];\r\n};\r\n\r\nexport const getPointAddressSuggestions = (searchTxt, language) => {\r\n let source = axios.CancelToken.source();\r\n var adress_req_data = {\r\n text: searchTxt,\r\n category: \"Point Address\",\r\n f: \"json\",\r\n maxSuggestions: 10,\r\n };\r\n const req_data = getReqUrlEncodeParms(adress_req_data);\r\n let promise = API_CLIENT.post(\r\n _PROXY_URL +\r\n \"?\" +\r\n (language == \"en\"\r\n ? _ADDRESS_SUGGESTIONS_URLEN\r\n : _ADDRESS_SUGGESTIONS_URLAR),\r\n req_data,\r\n { CancelToken: source.token }\r\n );\r\n return [promise, source];\r\n};\r\n\r\nexport const getStreetAddressSuggestions = (searchTxt, language) => {\r\n let source = axios.CancelToken.source();\r\n var adress_req_data = { text: searchTxt, category: \"Street Name\", f: \"json\" };\r\n //var adress_req_data = {\"text\" : searchTxt , f :\"json\"}\r\n const req_data = getReqUrlEncodeParms(adress_req_data);\r\n let promise = API_CLIENT.post(\r\n _PROXY_URL +\r\n \"?\" +\r\n (language == \"en\"\r\n ? _ADDRESS_SUGGESTIONS_URLEN\r\n : _ADDRESS_SUGGESTIONS_URLAR),\r\n req_data,\r\n { CancelToken: source.token }\r\n );\r\n return [promise, source];\r\n};\r\n\r\nexport const getAreaAddressSuggestions = (searchTxt, language) => {\r\n let source = axios.CancelToken.source();\r\n var adress_req_data = {\r\n text: searchTxt,\r\n category: \"Populated Place\",\r\n f: \"json\",\r\n };\r\n const req_data = getReqUrlEncodeParms(adress_req_data);\r\n let promise = API_CLIENT.post(\r\n _PROXY_URL +\r\n \"?\" +\r\n (language == \"en\"\r\n ? _ADDRESS_SUGGESTIONS_URLEN\r\n : _ADDRESS_SUGGESTIONS_URLAR),\r\n req_data,\r\n { CancelToken: source.token }\r\n );\r\n return [promise, source];\r\n};\r\n\r\nexport const getPostalAddressSuggestions = (searchTxt, language) => {\r\n let source = axios.CancelToken.source();\r\n var adress_req_data = { text: searchTxt, category: \"Postal\", f: \"json\" };\r\n const req_data = getReqUrlEncodeParms(adress_req_data);\r\n let promise = API_CLIENT.post(\r\n _PROXY_URL +\r\n \"?\" +\r\n (language == \"en\"\r\n ? _ADDRESS_SUGGESTIONS_URLEN\r\n : _ADDRESS_SUGGESTIONS_URLAR),\r\n req_data,\r\n { CancelToken: source.token }\r\n );\r\n return [promise, source];\r\n};\r\n\r\nexport const getAddressCandidateByMkey = (magicKey, language) => {\r\n let source = axios.CancelToken.source();\r\n var adress_req_data = {\r\n magicKey: magicKey,\r\n f: \"json\",\r\n outFields: \"*\",\r\n };\r\n const req_data = getReqUrlEncodeParms(adress_req_data);\r\n let promise = API_CLIENT.post(\r\n _PROXY_URL +\r\n \"?\" +\r\n (language == \"en\" ? _FIND_ADDRESS_URLEN : _FIND_ADDRESS_URLAR),\r\n req_data,\r\n { CancelToken: source.token }\r\n );\r\n return [promise, source];\r\n};\r\n\r\nexport const getAddressCandidateByText = (text, language) => {\r\n let source = axios.CancelToken.source();\r\n var adress_req_data = {\r\n Address: text,\r\n f: \"json\",\r\n outFields: \"*\",\r\n };\r\n const req_data = getReqUrlEncodeParms(adress_req_data);\r\n let promise = API_CLIENT.post(\r\n _PROXY_URL +\r\n \"?\" +\r\n (language == \"en\" ? _FIND_ADDRESS_URLEN : _FIND_ADDRESS_URLAR),\r\n req_data,\r\n { CancelToken: source.token }\r\n );\r\n return [promise, source];\r\n};\r\n\r\nexport const getAddressIssueStatuTypes = (token) => {\r\n let source = axios.CancelToken.source();\r\n var endPoint = _ADDRESS_API_URL + \"/AddressingIssuesStatus/getall\";\r\n\r\n let promise = API_CLIENT.get(endPoint, {\r\n CancelToken: source.token,\r\n headers: getAuthorizatonHeader(token),\r\n });\r\n return [promise, source];\r\n};\r\n\r\nexport const getAddressIssueTypes = (token) => {\r\n let source = axios.CancelToken.source();\r\n var endPoint = _ADDRESS_API_URL + \"/AddressingIssuesType/getall\";\r\n\r\n let promise = API_CLIENT.get(endPoint, {\r\n CancelToken: source.token,\r\n headers: getAuthorizatonHeader(token),\r\n });\r\n return [promise, source];\r\n};\r\n\r\nexport const getAddressByHashkey = (key, token) => {\r\n let source = axios.CancelToken.source();\r\n var endPoint =\r\n _ADDRESS_API_URL +\r\n \"/LocatorDetails/GetLocatorDetailsByAddressPointId/\" +\r\n key;\r\n let promise = API_CLIENT.get(endPoint, {\r\n CancelToken: source.token,\r\n headers: getAuthorizatonHeader(token),\r\n });\r\n return [promise, source];\r\n};\r\n\r\nexport const getAllAddressIssues = (token) => {\r\n let source = axios.CancelToken.source();\r\n var endPoint = _ADDRESS_API_URL + \"/AddressingIssues/getall\";\r\n\r\n let promise = API_CLIENT.get(endPoint, {\r\n CancelToken: source.token,\r\n headers: getAuthorizatonHeader(token),\r\n });\r\n return [promise, source];\r\n};\r\n\r\n//this is to get AddressPoint Details from the AddressingAPI backend\r\nexport const getAddressDetials = (pointId, streetId, areaId, token) => {\r\n let source = axios.CancelToken.source();\r\n\r\n var endPoint = _ADDRESS_API_URL + \"/LocatorDetails/GetLocatorDetails\";\r\n var reqData = {\r\n PointId: pointId,\r\n AreaId: areaId,\r\n StreetNumber: streetId,\r\n };\r\n let promise = API_CLIENT.post(endPoint, reqData, {\r\n CancelToken: source.token,\r\n headers: getAuthorizatonHeader(token),\r\n });\r\n return [promise, source];\r\n};\r\n\r\nexport const getAddressDetailsFromParcelId = (parcelid, token) => {\r\n let source = axios.CancelToken.source();\r\n var endPoint =\r\n _ADDRESS_API_URL +\r\n \"/LocatorDetails/GetLocatorDetailsByParcelId/\" +\r\n parcelid;\r\n let promise = API_CLIENT.get(endPoint, {\r\n CancelToken: source.token,\r\n headers: getAuthorizatonHeader(token),\r\n });\r\n return [promise, source];\r\n};\r\n\r\n//Using Geomtetry Service\r\nexport const getLabelPointOfPolygon = (polygon) => {\r\n let source = axios.CancelToken.source();\r\n var params = {\r\n \"polygons \": [{ rings: polygon.rings }],\r\n f: \"json\",\r\n sr: polygon.spatialReference.wkid,\r\n };\r\n const req_data = Object.keys(params)\r\n .map((key) => `${key}=${encodeURIComponent(params[key])}`)\r\n .join(\"&\");\r\n let promise = API_CLIENT.post(\r\n _PROXY_URL + \"?\" + _GEOMETRY_SERVICE_URL + \"/labelPoints\",\r\n params,\r\n { CancelToken: source.token }\r\n );\r\n return [promise, source];\r\n};\r\n\r\nexport const getAddressIssuesPaginated = (parmsObj, token) => {\r\n console.log(\"parmsObj\", JSON.stringify(parmsObj));\r\n var endPoint = _ADDRESS_API_URL + \"/AddressingIssues/GetPaginated\";\r\n\r\n var OrderBy =\r\n Object.values(parmsObj.sortOrder) < 1\r\n ? null\r\n : parmsObj.sortOrder.name + \" \" + parmsObj.sortOrder.direction;\r\n var reqData = {\r\n PageNo: parmsObj.page ? parmsObj.page + 1 : 1,\r\n PageSize: parmsObj.rowsPerPage ? parmsObj.rowsPerPage : 10,\r\n OrderBy: OrderBy,\r\n ReportUserNames: null,\r\n MobileNUmbers: null,\r\n AssignedUserNames: null,\r\n IssueStauses: parmsObj.IssueStauses.length > 0 ? parmsObj.IssueStauses : [],\r\n IssueTypes: parmsObj.IssueTypes.length > 0 ? parmsObj.IssueTypes : [],\r\n };\r\n\r\n let source = axios.CancelToken.source();\r\n let promise = API_CLIENT.post(endPoint, reqData, {\r\n CancelToken: source.token,\r\n headers: getAuthorizatonHeader(token),\r\n });\r\n return [promise, source];\r\n};\r\n\r\nexport const getAddressIssueAttachment = (issueId, token) => {\r\n let source = axios.CancelToken.source();\r\n\r\n var endPoint =\r\n _ADDRESS_API_URL +\r\n \"/AddressingIssuesAttachments/GetAttachmentsByIssueId/\" +\r\n issueId;\r\n let promise = API_CLIENT.get(endPoint, {\r\n CancelToken: source.token,\r\n headers: getAuthorizatonHeader(token),\r\n });\r\n return [promise, source];\r\n};\r\n\r\nexport const respondToAddressIssue = (\r\n issueId,\r\n responderName,\r\n comment,\r\n token\r\n) => {\r\n var reqData = {\r\n IssueId: issueId,\r\n ResponderUserName: responderName,\r\n ResponderComment: comment,\r\n };\r\n\r\n let source = axios.CancelToken.source();\r\n var endPoint = _ADDRESS_API_URL + \"/AddressingIssues/RespondToIssue\";\r\n let promise = API_CLIENT.post(endPoint, reqData, {\r\n CancelToken: source.token,\r\n headers: getAuthorizatonHeader(token),\r\n });\r\n return [promise, source];\r\n};\r\n","export const ActionTypes = {\r\n SET_ACTIVE_PAGE: \"SET_ACTIVE_PAGE\",\r\n SET_ACTIVE_LANGUAGE: \"SET_ACTIVE_LANGUAGE\",\r\n SET_USER_CREDENTIALS: \"SET_USER_CREDENTIALS\",\r\n SET_SIDE_PANEL_STATUS: \"SET_SIDE_PANEL_STATUS\",\r\n SET_SIDE_PANEL_STATUS_AND_TYPE: \"SET_SIDE_PANEL_STATUS_AND_TYPE\",\r\n SET_SIDE_PANEL_RESULT_TYPE: \"SET_SIDE_PANEL_RESULT_TYPE\",\r\n SET_ALERT: \"SET_ALERT\",\r\n};\r\n","import { ActionTypes } from \"../constants/actionTypes\";\r\nexport const setSidePanelopen = (status) => {\r\n return {\r\n type: ActionTypes.SET_SIDE_PANEL_STATUS,\r\n payload: status,\r\n };\r\n};\r\nexport const setSidePanelResultType = (type) => {\r\n return {\r\n type: ActionTypes.SET_SIDE_PANEL_RESULT_TYPE,\r\n payload: type,\r\n };\r\n};\r\nexport const setSidePanelStatusAndResultType = (status, type) => {\r\n return {\r\n type: ActionTypes.SET_SIDE_PANEL_STATUS_AND_TYPE,\r\n payload: { status: status, type: type },\r\n };\r\n};\r\n","import React, { useState, useEffect, useCallback, useRef } from \"react\";\r\n\r\nimport { connect } from \"react-redux\";\r\nimport qs from \"qs\";\r\nimport axios from \"axios\";\r\nimport { appConifg } from \"../../config/default\";\r\nimport {\r\n AsyncTypeahead,\r\n Highlighter,\r\n Menu,\r\n MenuItem,\r\n Typeahead,\r\n} from \"react-bootstrap-typeahead\";\r\nimport \"react-bootstrap-typeahead/css/Typeahead.css\";\r\n\r\nimport {\r\n fetchAddressResultRequest,\r\n fetchAddressResultSuccess,\r\n fetchAddressResultFailure,\r\n} from \"../../redux/actions/addressingResultActions\";\r\nimport { clearAddressDetails } from \"../../redux/reducers/addressDetailsReducer\";\r\nimport { useDispatch } from \"react-redux\";\r\n\r\nimport {\r\n addressingApiResponseMapper,\r\n addressDetailsMapper,\r\n} from \"../mappers/addressingMappers\";\r\n\r\nimport {\r\n getPointAddressSuggestions,\r\n getStreetAddressSuggestions,\r\n getAreaAddressSuggestions,\r\n getPostalAddressSuggestions,\r\n getAddressCandidateByMkey,\r\n getAddressCandidateByText,\r\n getAddressDetailsFromParcelId,\r\n} from \"../../serviceClients/addressingClient\";\r\nimport { Fragment } from \"react\";\r\n\r\nimport { setSidePanelStatusAndResultType } from \"../../redux/actions/mapPanelControlActions\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n\r\n// const mapSearchBarStyle = {\r\n// position: \"fixed\",\r\n// marginTop: \"60px\",\r\n// //right: \"15px\",\r\n// marginLeft: \"53px\",\r\n// marginRight: \"53px\",\r\n// width: \"30rem\",\r\n// zIndex: \"999\",\r\n// maxWidth: \"50%\",\r\n// };\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n mapSearchBarDesktop: {\r\n display: \"none\",\r\n [theme.breakpoints.up(\"md\")]: {\r\n display: \"block\",\r\n position: \"fixed\",\r\n marginTop: \"60px\",\r\n //right: \"15px\",\r\n marginLeft: \"53px\",\r\n marginRight: \"53px\",\r\n width: \"30rem\",\r\n zIndex: \"999\",\r\n maxWidth: \"50%\",\r\n },\r\n },\r\n mapSearchBarMobile: {\r\n display: \"block\",\r\n position: \"fixed\",\r\n marginTop: \"60px\",\r\n //right: \"15px\",\r\n marginLeft: \"53px\",\r\n marginRight: \"53px\",\r\n width: \"30rem\",\r\n zIndex: \"999\",\r\n maxWidth: \"80%\",\r\n [theme.breakpoints.up(\"md\")]: {\r\n display: \"none\",\r\n },\r\n },\r\n}));\r\n\r\nconst getParms = (params) =>\r\n Object.keys(params)\r\n .map((key) => `${key}=${encodeURIComponent(params[key])}`)\r\n .join(\"&\");\r\n\r\nfunction MapSearchBar(props) {\r\n const classes = useStyles();\r\n const { t, i18n } = useTranslation(\"mapPage\");\r\n const reduxDispatch = useDispatch();\r\n var hObje = {\r\n headers: {\r\n \"Content-Type\": \"application/x-www-form-urlencoded\",\r\n },\r\n };\r\n const store_appToken =\r\n props.appSettings &&\r\n props.appSettings.userCredentials &&\r\n props.appSettings.userCredentials.token\r\n ? props.appSettings.userCredentials.token.access_token\r\n : null;\r\n\r\n const [suggestionsState, setSuggestionsState] = useState({\r\n isLoading: false,\r\n options: [],\r\n query: \" \",\r\n });\r\n const searchBarRef = useRef(null);\r\n\r\n useEffect(() => {\r\n if (!props.mapSearchValueDummy) return;\r\n console.log(\"clear the value map search bar text\");\r\n searchBarRef && searchBarRef.current.clear() && searchBarRef.current.blur(); //Bad way to clear map search bar text\r\n }, [props.mapSearchValueDummy]);\r\n\r\n const removeLastPartARE = (txt) => {\r\n if (!txt) return;\r\n var restArry = txt.split(\",\");\r\n restArry.pop();\r\n return restArry.toString();\r\n };\r\n\r\n const handleSuggestionSearch = (query) => {\r\n if (!query || query.trim().length === 0) return;\r\n query = query.trim();\r\n\r\n setSuggestionsState({\r\n ...suggestionsState,\r\n options: [],\r\n isLoading: true,\r\n });\r\n\r\n const [p1, c1] = getPointAddressSuggestions(\r\n query,\r\n props.appSettings.language\r\n );\r\n const [p2, c2] = getStreetAddressSuggestions(\r\n query,\r\n props.appSettings.language\r\n );\r\n const [p3, c3] = getAreaAddressSuggestions(\r\n query,\r\n props.appSettings.language\r\n );\r\n const [p4, c4] = getPostalAddressSuggestions(\r\n query,\r\n props.appSettings.language\r\n );\r\n\r\n axios\r\n .all([p1, p2, p3, p4])\r\n .then((response) => {\r\n var sug0 = []; //TODO : remove the last part \",ARE \" from the locator\r\n if (response[0].data.error) {\r\n console.log(\r\n \"Unable to Reterieve Point AddressSuggestions \",\r\n response[0].data.error.code,\r\n response[0].data.error.message\r\n );\r\n }\r\n if (response[1].data.error) {\r\n console.log(\r\n \"Unable to Reterieve Streets Suggestions \",\r\n response[0].data.error.code,\r\n response[0].data.error.message\r\n );\r\n }\r\n if (response[2].data.error) {\r\n console.log(\r\n \"Unable to Reterieve Areas Suggestions \",\r\n response[0].data.error.code,\r\n response[0].data.error.message\r\n );\r\n }\r\n if (response[3].data.error) {\r\n console.log(\r\n \"Unable to Reterieve Postal Locality Suggestions \",\r\n response[0].data.error.code,\r\n response[0].data.error.message\r\n );\r\n }\r\n\r\n var sug1 = response[0].data.suggestions\r\n ? response[0].data.suggestions.map((i) => ({\r\n ...i,\r\n suggestionType: \"Point Addresses\",\r\n text: removeLastPartARE(i.text),\r\n }))\r\n : [];\r\n\r\n var sug2 = response[1].data.suggestions\r\n ? response[1].data.suggestions.map((i) => ({\r\n ...i,\r\n suggestionType: \"Streets\",\r\n text: removeLastPartARE(i.text),\r\n }))\r\n : [];\r\n\r\n var sug3 = response[2].data.suggestions\r\n ? response[2].data.suggestions.map((i) => ({\r\n ...i,\r\n suggestionType: \"Areas\",\r\n text: removeLastPartARE(i.text),\r\n }))\r\n : [];\r\n\r\n var sug4 = response[3].data.suggestions\r\n ? response[3].data.suggestions.map((i) => ({\r\n ...i,\r\n suggestionType: \"Postal Locality\",\r\n text: removeLastPartARE(i.text),\r\n }))\r\n : [];\r\n\r\n // var sug1 = response[0].data.suggestions.map((i) => ({\r\n // ...i,\r\n // suggestionType: \"Point Addresses\",\r\n // text: removeLastPartARE(i.text),\r\n // }));\r\n // var sug2 = response[1].data.suggestions.map((i) => ({\r\n // ...i,\r\n // suggestionType: \"Streets\",\r\n // text: removeLastPartARE(i.text),\r\n // }));\r\n // var sug3 = response[2].data.suggestions.map((i) => ({\r\n // ...i,\r\n // suggestionType: \"Areas\",\r\n // text: removeLastPartARE(i.text),\r\n // }));\r\n // var sug4 = response[3].data.suggestions.map((i) => ({\r\n // ...i,\r\n // suggestionType: \"Postal Locality\",\r\n // text: removeLastPartARE(i.text),\r\n // }));\r\n\r\n var allSug = sug0.concat(sug1, sug2, sug3, sug4);\r\n // var allSug = sug0.concat(sug1, sug2)\r\n\r\n if (allSug && allSug.length > 0) {\r\n var options = allSug.map((i) => ({\r\n id: i.magicKey,\r\n suggestion: i.text,\r\n suggestionType: i.suggestionType,\r\n }));\r\n\r\n setSuggestionsState({\r\n ...suggestionsState,\r\n isLoading: false,\r\n options: options,\r\n });\r\n } else {\r\n setSuggestionsState({\r\n ...suggestionsState,\r\n isLoading: false,\r\n options: [],\r\n });\r\n }\r\n })\r\n .catch((err) => {\r\n console.log(\"Error in gettingSuggestions \", err.message);\r\n })\r\n .then();\r\n\r\n return; //moved the below code to addressingClient.js so return from here\r\n };\r\n\r\n const getAddressResultBySuggestedSelection = (magicKey) => {\r\n if (!props.isAddressPanelOpen) props.openAddressPanel();\r\n reduxDispatch(fetchAddressResultRequest(\"Suggestion_Select\", magicKey));\r\n const [promise, source] = getAddressCandidateByMkey(\r\n magicKey,\r\n props.appSettings.language\r\n );\r\n promise\r\n .then((resp) => {\r\n console.log(resp.data);\r\n var candidates = resp.data.candidates;\r\n reduxDispatch(fetchAddressResultSuccess(candidates));\r\n })\r\n .catch((err) => {\r\n console.log(\"Coundnt Fetch Address Detail \", err.message);\r\n const errMsg = err.message;\r\n reduxDispatch(fetchAddressResultFailure(errMsg));\r\n });\r\n };\r\n\r\n //const parcelIdPatter = new RegExp(\"^(\\d{7}|\\d{9})$\"); //ParcelID RegEx 7 or 9 digits\r\n const isNumeric = (num) =>\r\n (typeof num === \"number\" ||\r\n (typeof num === \"string\" && num.trim() !== \"\")) &&\r\n !isNaN(num);\r\n\r\n const getAddressResultByUserSearchText = (search_text) => {\r\n if (!search_text || search_text.trim() < 1) return;\r\n search_text = search_text.trim();\r\n if (!props.isAddressPanelOpen) props.openAddressPanel();\r\n\r\n //Commented to disaply search by Parce id\r\n // if (\r\n // isNumeric(search_text) &&\r\n // search_text.length == 9 &&\r\n // Number.isInteger(parseInt(search_text)) &&\r\n // parseInt(search_text) > 0\r\n // ) {\r\n // searchAddressByParcelId(search_text);\r\n // return;\r\n // }\r\n\r\n reduxDispatch(fetchAddressResultRequest(\"Text_Search\", search_text));\r\n //clear the previous search results also\r\n reduxDispatch(clearAddressDetails());\r\n //setSuggestionsState({isLoading:true, options :[] , query : ' ' ,disbled : true })\r\n const [promise, source] = getAddressCandidateByText(\r\n search_text,\r\n props.appSettings.language\r\n );\r\n promise\r\n .then((resp) => {\r\n if (resp.data.error) {\r\n console.log(\r\n \"Unable to get address Candiate \",\r\n resp.data.error.code,\r\n \"_\",\r\n resp.data.eror.message\r\n );\r\n reduxDispatch(\r\n fetchAddressResultFailure(\r\n resp.data.error.code,\r\n \"_\",\r\n resp.data.eror.message\r\n )\r\n );\r\n return;\r\n }\r\n var candidates = resp.data.candidates;\r\n //setSuggestionsState({isLoading:false, options :[] , query : search_text ,disbled : false })\r\n reduxDispatch(fetchAddressResultSuccess(candidates));\r\n })\r\n .catch((err) => {\r\n //setSuggestionsState({isLoading:false, options :[] , query : search_text ,disbled : false })\r\n console.log(\"Coudnt Fetch Address Detail \", err.message);\r\n const errMsg = err.message;\r\n reduxDispatch(fetchAddressResultFailure(errMsg));\r\n });\r\n };\r\n\r\n const searchAddressByParcelId = (search_text) => {\r\n //console.log(\" May be parcel id so will get details from Parcel Id\");\r\n reduxDispatch(clearAddressDetails());\r\n reduxDispatch(fetchAddressResultRequest(\"Text_Search\", search_text));\r\n const [promise, source] = getAddressDetailsFromParcelId(\r\n search_text,\r\n store_appToken\r\n );\r\n promise\r\n .then((resp) => {\r\n console.log(resp.data);\r\n const {\r\n isSuccess,\r\n isPartial,\r\n message,\r\n respData,\r\n successObj,\r\n failedObj,\r\n } = addressingApiResponseMapper(resp.data);\r\n if (isSuccess) {\r\n var addressData = addressDetailsMapper(respData);\r\n var dipatchData = { ...addressData, isParcelSearch: true };\r\n reduxDispatch(fetchAddressResultSuccess([dipatchData]));\r\n } else {\r\n if (message === \"No Records Found\") {\r\n reduxDispatch(fetchAddressResultFailure(message)); //No Records Found\r\n }\r\n reduxDispatch(fetchAddressResultFailure(message));\r\n }\r\n })\r\n .catch((err) => {\r\n //setSuggestionsState({isLoading:false, options :[] , query : search_text ,disbled : false })\r\n console.log(\"Coudnt Fetch Address Detail From Parcel ID \", err.message);\r\n const errMsg = err.message;\r\n reduxDispatch(fetchAddressResultFailure(errMsg));\r\n });\r\n };\r\n\r\n const handleSuggestionSelected = (selected, evt) => {\r\n if (!selected || selected.length < 1) return;\r\n if (selected[0].customOption) {\r\n //custom search\r\n let user_entered_text = selected[0].suggestion.trim();\r\n if (!user_entered_text) return;\r\n\r\n getAddressResultByUserSearchText(user_entered_text);\r\n } else {\r\n var magic_key = selected[0].id;\r\n\r\n getAddressResultBySuggestedSelection(magic_key);\r\n }\r\n };\r\n\r\n //check & Remove- from code\r\n const searchAddressCandate = (text) => {\r\n if (!text || text.length < 1) return;\r\n\r\n setSuggestionsState({\r\n isLoading: true,\r\n options: [],\r\n query: \" \",\r\n disbled: true,\r\n });\r\n\r\n reduxDispatch(fetchAddressResultRequest);\r\n const [promise, source] = getAddressCandidateByText(\r\n text,\r\n props.appSettings.language\r\n );\r\n promise\r\n .then((resp) => {\r\n console.log(resp.data);\r\n var candidates = resp.data.candidates;\r\n\r\n setSuggestionsState({\r\n isLoading: false,\r\n options: [],\r\n query: text,\r\n disbled: false,\r\n });\r\n\r\n reduxDispatch(fetchAddressResultSuccess(candidates));\r\n })\r\n .catch((err) => {\r\n setSuggestionsState({\r\n isLoading: false,\r\n options: [],\r\n query: text,\r\n disbled: false,\r\n });\r\n\r\n console.log(\"Coudnt Fetch Address Detail \", err.message);\r\n const errMsg = err.message;\r\n\r\n reduxDispatch(fetchAddressResultFailure(errMsg));\r\n });\r\n };\r\n\r\n const renderSuggestions = (results, menuProps, state) => {\r\n let index = 0;\r\n // results.pop()\r\n //results.push({id : \"-1\" , suggestion : state.text , suggestionType : \"Search For\"})\r\n //let cutomSuggestion = {id : \"-1\" , suggestion : state.text , suggestionType : \"Search For\"}\r\n //results.unshift(cutomSuggestion)\r\n const suggestionTypes = groupBy(results, \"suggestionType\");\r\n const items = Object.keys(suggestionTypes).map((type) => {\r\n return (\r\n \r\n {type} \r\n {/* {JSON.stringify(suggestionTypes[type])} */}\r\n {suggestionTypes[type].map((s) => {\r\n const item = (\r\n \r\n {s.suggestion}\r\n \r\n );\r\n index += 1;\r\n return item;\r\n })}\r\n \r\n );\r\n });\r\n\r\n // items.push(\r\n // \r\n // {\"SearchFor\"} \r\n // \r\n // \r\n // {state.text}\r\n // \r\n // \r\n // \r\n // );\r\n\r\n return {items};\r\n // const items = Object.keys(suggestionTypes).sort().map((type) => (\r\n // \r\n // {index !== 0 && }\r\n // {type}\r\n // {\r\n // suggestionTypes[type].map((i) => {\r\n // const item = (\r\n // \r\n // {i.suggestion} \r\n // \r\n // );\r\n\r\n // index += 1;\r\n // return item;\r\n // })\r\n // }\r\n // \r\n // ));\r\n\r\n // return {items};\r\n return (\r\n \r\n {results.map((result, index) => (\r\n \r\n {result.suggestion}\r\n \r\n ))}\r\n \r\n );\r\n };\r\n\r\n //Render Suggestions with symobol / image for each option ..with allowNew\r\n //Yet to implement -- was not working for some reason -- to move the custom suggestion to the top\r\n const renderSuggestions2 = (results, menuProps, state) => {\r\n debugger;\r\n var posIndex = 1;\r\n\r\n const menuItems = results.map((result, index) => {\r\n if (result.customOption) {\r\n return (\r\n \r\n {result.suggestion + \"_custom\"}\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n {result.suggestion}\r\n \r\n );\r\n }\r\n posIndex = +posIndex;\r\n });\r\n return {menuItems};\r\n\r\n return (\r\n \r\n {results.map((result, index) =>\r\n result.customOption ? (\r\n \r\n {result.suggestion}\r\n \r\n ) : (\r\n \r\n {result.suggestion}\r\n \r\n )\r\n )}\r\n \r\n );\r\n };\r\n\r\n const [activeIndex, setActiveIndex] = useState(-1);\r\n // const onKeyDown = useCallback(\r\n // (e) => {\r\n // if (e.keyCode === 13 && activeIndex === -1) {\r\n // console.log(\"Submit\");\r\n // }\r\n // },\r\n // [activeIndex]\r\n // );\r\n\r\n const onKeyDown = (e) => {\r\n if (e.keyCode === 13) {\r\n if (!e.target.value) return;\r\n // searchAddressCandate(e.target.value)\r\n searchBarRef && searchBarRef.current.blur();\r\n //setSuggestionsState({isLoading:false, options :[] , query : ''})\r\n getAddressResultByUserSearchText(e.target.value);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n
\r\n true}\r\n onChange={handleSuggestionSelected}\r\n allowNew={true}\r\n newSelectionPrefix={t(\"Searchfor\")}\r\n //renderMenu ={renderSuggestions2}\r\n useCache={false}\r\n onKeyDown={onKeyDown}\r\n // onInputChange={(txt)=>{\r\n // setSearchText(txt)\r\n // }}\r\n >\r\n {/* {(state) => setActiveIndex(state.activeIndex)} */}\r\n \r\n
\r\n
\r\n true}\r\n onChange={handleSuggestionSelected}\r\n allowNew={true}\r\n newSelectionPrefix={t(\"Searchfor\")}\r\n //renderMenu ={renderSuggestions2}\r\n useCache={false}\r\n onKeyDown={onKeyDown}\r\n // onInputChange={(txt)=>{\r\n // setSearchText(txt)\r\n // }}\r\n >\r\n {/* {(state) => setActiveIndex(state.activeIndex)} */}\r\n \r\n
\r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n addressingResult: state.addressingResult,\r\n addressDetails: state.addressDetails,\r\n isAddressPanelOpen:\r\n state.mapPanelSetting.isSidePanelOpen &&\r\n state.mapPanelSetting.resultType === \"address\",\r\n appSettings: state.settings,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => {\r\n return {\r\n openAddressPanel: () => {\r\n return dispatch(setSidePanelStatusAndResultType(\"true\", \"address\")); //to display the sidePanel\r\n },\r\n };\r\n};\r\n\r\nconst groupBy = function (xs, key) {\r\n return xs.reduce(function (rv, x) {\r\n (rv[x[key]] = rv[x[key]] || []).push(x);\r\n return rv;\r\n }, {});\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MapSearchBar);\r\n","import React from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { setSidePanelopen } from \"../../redux/actions/mapPanelControlActions\";\r\nimport { IconButton } from \"@material-ui/core\";\r\nimport { makeStyles, useTheme } from \"@material-ui/core/styles\";\r\nimport OpenPanel from \"@material-ui/icons/ArrowRight\";\r\nimport ClosePanel from \"@material-ui/icons/ArrowLeft\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n drawerIconBtn: {\r\n backgroundColor: theme.palette.primary.light,\r\n position: \"fixed\",\r\n marginLeft: \"0px\",\r\n marginTop: \"0px\",\r\n //zIndex : theme.zIndex.modal -50,\r\n zIndex: 999,\r\n },\r\n}));\r\n\r\nconst DrawerIcons = () => {\r\n const classes = useStyles();\r\n const dispatch = useDispatch();\r\n const panelProps = useSelector((state) => state.mapPanelSetting);\r\n const settings = useSelector((state) => state.settings);\r\n const handleDrawerOpen = (status) => {\r\n dispatch(setSidePanelopen(status));\r\n };\r\n\r\n return (\r\n
\r\n {!panelProps.isSidePanelOpen ? (\r\n handleDrawerOpen(true)}\r\n >\r\n {settings.language == \"en\" ? : }\r\n \r\n ) : (\r\n // handleDrawerOpen(false)}\r\n // >\r\n // {settings.language == \"en\" ? : }\r\n // \r\n \"\"\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default DrawerIcons;\r\n","import React , { useState } from 'react'\r\nimport Fab from '@material-ui/core/Fab'\r\nimport AddIcon from '@material-ui/icons/Add'\r\nimport EditIcon from '@material-ui/icons/Edit'\r\nimport IconButton from '@material-ui/core/IconButton'\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\n\r\nimport { makeStyles } from '@material-ui/core/styles'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n '& > *': {\r\n margin: theme.spacing(1),\r\n },\r\n },\r\n extendedIcon: {\r\n marginRight: theme.spacing(1),\r\n },\r\n signIn :{\r\n position : \"aboslute\",\r\n right : \"2px\",\r\n },\r\n actionBar :{\r\n top: \"5px\",\r\n right: \"10px\",\r\n zIndex: 9999,\r\n position: \"absolute\"\r\n }\r\n }));\r\n\r\n\r\nfunction MapActions(props) {\r\n const classes = useStyles();\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n const open = Boolean(anchorEl);\r\n const handleClick = (event) => {\r\n if(anchorEl) handleClose()\r\n setAnchorEl(event.currentTarget);\r\n };\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n \r\n\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n Profile\r\n My account\r\n Logout\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default MapActions;","export const RAK_BOUNDARY_JSON_4326 = {\r\n spatialReference: {\r\n wkid: 4326,\r\n latestWkid: 4326,\r\n },\r\n\"rings\":[[[56.176873339000053,25.341595679000022],[56.208926811000026,25.32675419900005],[56.224886269000081,25.249323034000042],[56.249051420000058,25.237347915000043],[56.172384153000053,25.231502142000068],[56.168629077000048,25.100434101000076],[56.179396682000061,25.072264616000041],[56.169494159000067,25.065857742000048],[56.196946987000047,25.018766150000033],[56.178958802000068,24.977303810000024],[56.191462143000081,24.93937255700007],[56.212420852000037,24.918460694000032],[56.228480296000043,24.925257680000072],[56.27325447700008,24.906077092000032],[56.280205343000034,24.87460345900007],[56.200866414000075,24.840863720000073],[56.184616746000074,24.84956433800005],[56.132264313000064,24.839552265000066],[56.041842957000028,24.888739476000069],[56.063219973000059,24.947324420000029],[56.041396314000053,24.946530984000049],[56.04598330500005,24.968233224000073],[55.960074752000082,25.005842106000046],[55.993241552000029,25.044008672000075],[55.977028310000037,25.079413336000073],[56.005529360000082,25.152389603000074],[55.984211253000069,25.205964287000029],[56.00363489800003,25.210909414000071],[55.996051395000052,25.253856078000069],[56.03931990600006,25.228033076000031],[56.080738264000047,25.238794979000033],[56.102724137000052,25.224770144000047],[56.13080778300008,25.23087169300004],[56.163147775000027,25.250434723000069],[56.150543393000078,25.279633758000045],[56.186331171000063,25.303504471000053],[56.142898175000028,25.31354420200006],[56.174596489000066,25.354965502000027],[56.176873339000053,25.341595679000022]],[[56.153067798000052,26.069349774000045],[56.191339590000041,25.972004835000064],[56.165922513000055,25.947743828000057],[56.178127723000046,25.892466468000066],[56.141587902000026,25.82785928800007],[56.167580200000032,25.725857868000048],[56.155682393000063,25.68680786300007],[56.179753719000075,25.620983185000057],[56.153414633000068,25.622822762000055],[56.148620228000027,25.637386892000052],[56.072903967000059,25.64408639800007],[56.070918322000068,25.613617027000032],[56.058240669000043,25.608506422000062],[56.010417247000078,25.608795489000045],[55.99021575200004,25.624865210000053],[55.974514274000057,25.612593224000022],[55.990215808000073,25.512095656000042],[56.019969655000068,25.489813796000078],[56.097428477000051,25.49548496400007],[56.121892803000037,25.47373615500004],[56.136578072000077,25.478943227000059],[56.140053026000032,25.46520644800006],[56.093039201000067,25.424447894000025],[56.132460841000068,25.405281595000076],[56.153183974000058,25.416141656000036],[56.164856248000035,25.369889498000077],[56.135560393000048,25.370631472000071],[56.112602478000042,25.354300055000067],[56.089047716000039,25.372342290000063],[55.994737285000042,25.391878789000032],[55.978638054000044,25.361789208000062],[55.944809229000043,25.361731199000076],[55.936685597000064,25.390594686000043],[55.907285998000077,25.41211588300007],[55.910338805000038,25.434732072000031],[55.82835527800006,25.485248072000047],[55.845189207000033,25.495650352000041],[55.806389440000032,25.526932664000071],[55.815475770000035,25.615502062000076],[55.746076715000072,25.654516664000028],[55.688881667000032,25.706296242000064],[55.733351761000051,25.755601195000054],[55.76745448500003,25.775036084000078],[55.812745937000045,25.746355610000023],[55.831027640000059,25.755903696000075],[55.857933931000048,25.77301144200004],[55.878920443000027,25.794840496000063],[55.938559395000027,25.831102256000065],[55.967436106000036,25.86248021800003],[56.021739806000028,25.985998980000033],[56.05141893800004,26.013090519000059],[56.056886494000082,26.049776463000057],[56.122298299000079,26.050977050000029],[56.153067798000052,26.069349774000045]]]\r\n};\r\n","export const const_address_point_symbol = {\r\n type: \"simple-marker\",\r\n path:\r\n \"M79,32c0-15.5-12.5-28-28-28s-28,12.5-28,28c0,4.4,1,8.5,2.9,12.3h0c0,0,0.1,0.2,0.3,0.6c0.2,0.4,0.4,0.7,0.6,1 c0.8,1.4,1.8,3.3,2.3,4.1c2.7,4.2,5.9,9.6,7.9,12.9c2.8,4.5,7.4,14,9.3,18.9c1.4,3.5,4.7,14.4,4.7,14.4s3.4-10.8,4.7-14.4 c1.9-4.9,6.5-14.5,9.3-18.9c2.1-3.3,5.2-8.7,7.9-12.9c0.5-0.8,1.6-2.7,2.3-4.1c0.2-0.3,0.4-0.7,0.6-1c0.2-0.4,0.3-0.6,0.3-0.6h0 C78,40.6,79,36.4,79,32z M51,50.7c-10.3,0-18.6-8.3-18.6-18.6c0-10.3,8.3-18.6,18.6-18.6c10.3,0,18.6,8.3,18.6,18.6 C69.7,42.3,61.3,50.7,51,50.7z\",\r\n size: \"36px\",\r\n color: \"#226abc\",\r\n outline: { color: \"#226abc\", width: \"1px\" },\r\n};\r\n\r\nexport const const_mapPnt = {\r\n type: \"simple-marker\",\r\n path:\r\n \"M79,32c0-15.5-12.5-28-28-28s-28,12.5-28,28c0,4.4,1,8.5,2.9,12.3h0c0,0,0.1,0.2,0.3,0.6c0.2,0.4,0.4,0.7,0.6,1 c0.8,1.4,1.8,3.3,2.3,4.1c2.7,4.2,5.9,9.6,7.9,12.9c2.8,4.5,7.4,14,9.3,18.9c1.4,3.5,4.7,14.4,4.7,14.4s3.4-10.8,4.7-14.4 c1.9-4.9,6.5-14.5,9.3-18.9c2.1-3.3,5.2-8.7,7.9-12.9c0.5-0.8,1.6-2.7,2.3-4.1c0.2-0.3,0.4-0.7,0.6-1c0.2-0.4,0.3-0.6,0.3-0.6h0 C78,40.6,79,36.4,79,32z M51,50.7c-10.3,0-18.6-8.3-18.6-18.6c0-10.3,8.3-18.6,18.6-18.6c10.3,0,18.6,8.3,18.6,18.6 C69.7,42.3,61.3,50.7,51,50.7z\",\r\n size: \"24px\",\r\n color: \"#f50057\",\r\n outline: { color: \"#f50057\", width: \"1px\" },\r\n};\r\n\r\n//made transperat to hide the symobl boundary\r\nexport const const_address_parcel_graphic_symbol = {\r\n type: \"simple-fill\",\r\n color: [63, 81, 181, 0],\r\n outline: {\r\n color: [63, 81, 181, 0],\r\n width: 0,\r\n },\r\n};\r\n\r\nexport const const_not_found_point_symbol = {\r\n type: \"simple-marker\",\r\n path:\r\n \"M79,32c0-15.5-12.5-28-28-28s-28,12.5-28,28c0,4.4,1,8.5,2.9,12.3h0c0,0,0.1,0.2,0.3,0.6c0.2,0.4,0.4,0.7,0.6,1 c0.8,1.4,1.8,3.3,2.3,4.1c2.7,4.2,5.9,9.6,7.9,12.9c2.8,4.5,7.4,14,9.3,18.9c1.4,3.5,4.7,14.4,4.7,14.4s3.4-10.8,4.7-14.4 c1.9-4.9,6.5-14.5,9.3-18.9c2.1-3.3,5.2-8.7,7.9-12.9c0.5-0.8,1.6-2.7,2.3-4.1c0.2-0.3,0.4-0.7,0.6-1c0.2-0.4,0.3-0.6,0.3-0.6h0 C78,40.6,79,36.4,79,32z M51,50.7c-10.3,0-18.6-8.3-18.6-18.6c0-10.3,8.3-18.6,18.6-18.6c10.3,0,18.6,8.3,18.6,18.6 C69.7,42.3,61.3,50.7,51,50.7z\",\r\n size: \"32px\",\r\n color: \"#f50057\",\r\n outline: { color: \"#f50057\", width: \"1px\" },\r\n};\r\n\r\nexport const const_address_line_street_symbol = {\r\n type: \"simple-line\",\r\n color: [34, 106, 188, 0.5],\r\n width: 3,\r\n};\r\n\r\n//make trasperant to hide the bouandry\r\nexport const const_address_area_symbol = {\r\n type: \"simple-fill\",\r\n color: [63, 81, 181, 0],\r\n outline: {\r\n color: [63, 81, 181, 0],\r\n width: 1,\r\n },\r\n};\r\n\r\nexport const const_txt_symobl_for_graphics = {\r\n // angle: 90,\r\n color: \"black\",\r\n font: {\r\n // autocast as new Font()\r\n family: \"Josefin Slab\", //Josefin Slab Just Another Hand\r\n size: 15,\r\n weight: \"bold\",\r\n },\r\n // haloColor: \"#f50057\",\r\n haloSize: 1,\r\n horizontalAlignment: \"justify\",\r\n verticalAlignment: \"bottom\",\r\n};\r\n\r\nexport const const_wrong_Pin = {\r\n type: \"simple-marker\",\r\n path:\r\n \"M46.54,88.709C40.7,95.631,36.184,100,36.184,100S0,64.987,0,36.185C0,16.2,16.2,0,36.184,0s36.184,16.2,36.184,36.185 c0,1.855-0.151,3.736-0.433,5.632c-3.555,0.051-7.102,0.716-10.469,2c0.729-2.417,1.121-4.979,1.121-7.632 c0-14.583-11.821-26.404-26.404-26.404S9.78,21.602,9.78,36.185c0,14.582,11.822,26.403,26.404,26.403 c2.654,0,5.216-0.393,7.632-1.121C40.429,70.353,41.337,80.5,46.54,88.709z M100,72.371C100,87.63,87.63,100,72.371,100 c-15.26,0-27.63-12.37-27.63-27.629c0-15.26,12.37-27.63,27.63-27.63C87.63,44.741,100,57.111,100,72.371z M84.484,79.927 l-7.557-7.556l7.557-7.557l-4.558-4.558l-7.556,7.556l-7.557-7.555l-4.557,4.557l7.555,7.557l-7.556,7.556l4.558,4.558l7.557-7.557 l7.556,7.557L84.484,79.927z\",\r\n size: \"32px\",\r\n color: \"red\",\r\n outline: { color: \"red\", width: \"1px\" },\r\n};\r\n\r\nexport const const_issue_incorrect_address_point = {};\r\n\r\nexport const const_missing_address_point = {};\r\n\r\nexport const const_damage_sinage_point = {};\r\n\r\nexport const const_missing_sinage_point = {};\r\n\r\nexport const const_isssue_address_point = {\r\n type: \"simple-marker\",\r\n path:\r\n \"M79,32c0-15.5-12.5-28-28-28s-28,12.5-28,28c0,4.4,1,8.5,2.9,12.3h0c0,0,0.1,0.2,0.3,0.6c0.2,0.4,0.4,0.7,0.6,1 c0.8,1.4,1.8,3.3,2.3,4.1c2.7,4.2,5.9,9.6,7.9,12.9c2.8,4.5,7.4,14,9.3,18.9c1.4,3.5,4.7,14.4,4.7,14.4s3.4-10.8,4.7-14.4 c1.9-4.9,6.5-14.5,9.3-18.9c2.1-3.3,5.2-8.7,7.9-12.9c0.5-0.8,1.6-2.7,2.3-4.1c0.2-0.3,0.4-0.7,0.6-1c0.2-0.4,0.3-0.6,0.3-0.6h0 C78,40.6,79,36.4,79,32z M51,50.7c-10.3,0-18.6-8.3-18.6-18.6c0-10.3,8.3-18.6,18.6-18.6c10.3,0,18.6,8.3,18.6,18.6 C69.7,42.3,61.3,50.7,51,50.7z\",\r\n size: \"32px\",\r\n color: \"#cc3300\",\r\n outline: { color: \"#cc3300\", width: \"1px\" },\r\n};\r\n","import React from 'react'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport Typography from '@material-ui/core/Typography'\r\nimport Slider from '@material-ui/core/Slider'\r\n\r\nimport { setRakStreetsTransparency } from './AddressingMapView'\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n height: 200,\r\n position :'absolute',\r\n right : \"96px\",\r\n top : \"100px\",\r\n zIndex: 900\r\n },\r\n });\r\n\r\nconst marks = [\r\n {\r\n value : 0,\r\n label :\"0%\"\r\n },\r\n {\r\n value : 50,\r\n label : \"50%\"\r\n },\r\n {\r\n value : 100,\r\n label : \"100%\"\r\n }\r\n]\r\n \r\nfunction TranspController(props) {\r\n const classes = useStyles();\r\n\r\n const handleChange =(evt , newValue)=>{\r\n console.log(newValue)\r\n setRakStreetsTransparency(newValue)\r\n }\r\n return (\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default TranspController;","export default __webpack_public_path__ + \"static/media/RakStreetsLogo.9dae895b.png\";","export default __webpack_public_path__ + \"static/media/RakSatelliteLogo.ef62e616.JPG\";","import React, { useState } from 'react'\r\nimport StreetsThumb from '../../assets/img/RakStreetsLogo.png'\r\nimport SatelliteThumb from '../../assets/img/RakSatelliteLogo.JPG'\r\nimport Image from 'material-ui-image'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport { toggleRakStreetsTile , toggleRakBoundaryLayers , toggleRakBoundaryService} from './AddressingMapView'\r\nimport { Box, CardContent } from '@material-ui/core'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n [theme.breakpoints.only(\"xs\")]: {\r\n maxHeight: \"50px\",\r\n maxWidth: \"50px\",\r\n height: \"50px\",\r\n width: \"50px\",\r\n cursor: \"grab\",\r\n },\r\n [theme.breakpoints.only(\"sm\")]: {\r\n maxHeight: \"50px\",\r\n maxWidth: \"50px\",\r\n height: \"50px\",\r\n width: \"50px\",\r\n cursor: \"grab\",\r\n },\r\n [theme.breakpoints.only(\"md\")]: {\r\n maxHeight: \"50px\",\r\n maxWidth: \"50px\",\r\n height: \"50px\",\r\n width: \"50px\",\r\n cursor: \"grab\",\r\n },\r\n [theme.breakpoints.only(\"lg\")]: {\r\n maxHeight: \"80px\",\r\n maxWidth: \"80px\",\r\n height: \"80px\",\r\n width: \"80px\",\r\n cursor: \"grab\",\r\n // maxHeight: \"100px\",\r\n // maxWidth: \"100px\",\r\n // height: \"100px\",\r\n // width: \"100px\",\r\n // cursor: \"grab\",\r\n },\r\n [theme.breakpoints.only(\"xl\")]: {\r\n maxHeight: \"100px\",\r\n maxWidth: \"100px\",\r\n height: \"100px\",\r\n width: \"100px\",\r\n cursor: \"grab\",\r\n },\r\n },\r\n}));\r\n\r\n\r\nfunction MapSwitcher(props) {\r\n\r\n const classes = useStyles();\r\n\r\n const [showTile , setShowTile ] = useState(true)\r\n \r\n const handleClick2=()=>{\r\n // var isToggled = toggleRakStreetsTile()\r\n //var isToggled = toggleRakBoundaryLayers()\r\n var isToggled = toggleRakBoundaryService()\r\n if(isToggled)\r\n setShowTile(!showTile)\r\n }\r\n \r\n const StreetImgBox = () => (\r\n \r\n {/* \r\n */}\r\n \r\n \r\n {/*
\r\n Map\r\n
*/}\r\n \r\n )\r\n \r\n const SatImgBox = () => (\r\n \r\n {/* \r\n */}\r\n \r\n \r\n {/*
Satellite
*/}\r\n \r\n )\r\n\r\n \r\n return (\r\n props.showMapSwitcher \r\n ?
\r\n {showTile ? : }\r\n
\r\n : null\r\n );\r\n}\r\n\r\nexport default MapSwitcher;","import React, { useRef, useEffect, useState } from \"react\";\r\nimport Basemap from \"@arcgis/core/Basemap\";\r\nimport ImageryLayer from \"@arcgis/core/layers/ImageryLayer\";\r\nimport Map from \"@arcgis/core/Map\";\r\nimport MapImageLayer from \"@arcgis/core/layers/MapImageLayer\";\r\nimport VectorTileLayer from \"@arcgis/core/layers/VectorTileLayer\";\r\nimport TileLayer from \"@arcgis/core/layers/TileLayer\";\r\nimport { connect } from \"react-redux\";\r\nimport FeatureLayer from \"@arcgis/core/layers/FeatureLayer\";\r\nimport { appConifg } from \"../../config/default\";\r\n//import esriConifg from '@arcgis/core/config'\r\nimport GraphicsLayer from \"@arcgis/core/layers/GraphicsLayer\";\r\nimport Graphic from \"@arcgis/core/Graphic\";\r\nimport Locator from \"@arcgis/core/tasks/Locator\";\r\nimport QueryTask from \"@arcgis/core/tasks/QueryTask\";\r\nimport Query from \"@arcgis/core/tasks/support/Query\";\r\nimport GeometryService from \"@arcgis/core/tasks/GeometryService\";\r\nimport * as esriCoreUrlUtils from \"@arcgis/core/core/urlUtils\";\r\nimport Point from \"@arcgis/core/geometry/Point\";\r\nimport TextSymbol from \"@arcgis/core/symbols/TextSymbol\";\r\nimport Polygon from \"@arcgis/core/geometry/Polygon\";\r\nimport Extent from \"@arcgis/core/geometry/Extent\";\r\nimport * as geometryEngine from \"@arcgis/core/geometry/geometryEngine\";\r\nimport SpatialReference from \"@arcgis/core/geometry/SpatialReference\";\r\nimport * as esriProject from \"@arcgis/core/geometry/projection\";\r\n//import { load, project as esriProject } from '@arcgis/core/geometry/projection'\r\nimport MapView from \"@arcgis/core/views/MapView\";\r\nimport BaseMapGallery from \"@arcgis/core/widgets/BasemapGallery\";\r\nimport LayerList from \"@arcgis/core/widgets/LayerList\";\r\nimport ScaleBar from \"@arcgis/core/widgets/ScaleBar\";\r\nimport Home from \"@arcgis/core/widgets/Home\";\r\nimport Expand from \"@arcgis/core/widgets/Expand\";\r\nimport Locate from \"@arcgis/core//widgets/Locate\";\r\nimport esriConfig from \"@arcgis/core/config.js\";\r\nimport MapSearchbar from \"../MapSearch/MapSearchbar\";\r\nimport DrawerIcons from \"./drawerIcons\";\r\nimport { isMobile, isTablet, isMobileOnly } from \"react-device-detect\";\r\nimport { searchAddressByParcelId } from \"../MapSearch/MapSearchbar\";\r\nimport MapActions from \"./mapActions\";\r\n// to identify conflict\r\nimport { RAK_BOUNDARY_JSON_4326 } from \"./rakBoundaryGeom\";\r\nimport {\r\n getStreetDetails,\r\n getAddressDetials,\r\n getPostalAreaDetails,\r\n getAreaDetails,\r\n getAddressDetailsFromParcelId,\r\n} from \"../../serviceClients/addressingClient\";\r\nimport {\r\n addressDetailsMapper,\r\n addressingApiResponseMapper,\r\n} from \"../mappers/addressingMappers\";\r\nimport {\r\n const_address_point_symbol,\r\n const_isssue_address_point,\r\n const_address_parcel_graphic_symbol,\r\n const_address_area_symbol,\r\n const_address_line_street_symbol,\r\n const_not_found_point_symbol,\r\n const_txt_symobl_for_graphics,\r\n} from \"./addressConfigUtils\";\r\n//Other Utilty Methods and Variables\r\n\r\n//Actions import\r\nimport {\r\n fetchAddressDetailsRequest,\r\n fetchAdressDetailsSuccess,\r\n fetchAddressDetailsFailure,\r\n clearAddressDetails,\r\n} from \"../../redux/reducers/addressDetailsReducer\";\r\n\r\nimport {\r\n fetchAddressResultSuccess,\r\n fetchAddressResultFailure,\r\n fetchAddressResultRequest,\r\n clearAddressResult,\r\n} from \"../../redux/actions/addressingResultActions\";\r\nimport {\r\n setSidePanelStatusAndResultType,\r\n setSidePanelopen,\r\n} from \"../../redux/actions/mapPanelControlActions\";\r\n\r\nimport { useDispatch } from \"react-redux\";\r\nimport TranspController from \"./TranspController\";\r\nimport MapSwitcher from \"./MapSwitcher\";\r\n//import AddressSearchBar from \"../AddressSearch/AddressSearchBar\";\r\n\r\n/* \r\n Reading from App Configuration */\r\nconst _PROXY_URL = appConifg.ProxyUrl;\r\nconst _AERIAL_IMAGERY = appConifg.Map.AerialImagery;\r\nconst _TOKEN_URL = appConifg.Map.TokenUrl;\r\nconst _PORTAL_USER_NAME = appConifg.Map.PortalUserName;\r\nconst _PORTAL_PASSWORD = appConifg.Map.PortalPassword;\r\nconst _APP_REFERER = appConifg.Map.AppReferer;\r\nconst _LOCATOR_SERVICE_URL = appConifg.Address.LocatorServiceUrl;\r\nconst _PARCEL_SERVICE_URL = appConifg.Address.ParcelServiceUrl;\r\nconst _POINT_ADDRESS_SERVICE_URL = appConifg.Address.PointAddressServiceUrl;\r\nconst _GEOMETRY_SERVICE_URL = appConifg.Address.GeometryServiceUrl;\r\nconst _RAK_STREETS_TILE_En = appConifg.Address.RakStreetsTileEnglish;\r\nconst _RAK_STREETS_TILE_Ar = appConifg.Address.RakStreetsTileArabic;\r\nconst _RAK_STREETS_MAP_En = appConifg.Address.RakStreetsMapEnglish;\r\nconst _RAK_STREETS_MAP_Ar = appConifg.Address.RakStreetsMapArabic;\r\nconst _RAK_BOUNDARY_MAP_En = appConifg.Address.RakBoundaryMapEnglish;\r\nconst _RAK_BOUNDARY_MAP_Ar = appConifg.Address.RakBoundarysMapArabic;\r\n\r\nconst option2Url =\r\n \"https://rakgisstg.rak.ae/server/rest/services/Addressing/AddressMapImageHollowV1/MapServer\";\r\nconst option3Url =\r\n \"https://rakgisstg.rak.ae/server/rest/services/Addressing/AddressMapImageHollowV2/MapServer\";\r\n\r\n//esri Configuration ---\r\nesriConfig.assetsPath = \"./assets\";\r\n\r\n// //esriConfig.request.proxyUrl = _PROXY_URL //not working\r\n// //esriConfig.request.proxyRules = proxy_rules //not working but working with urlUtils\r\nconst proxy_rules = [\r\n {\r\n urlPrefix: _AERIAL_IMAGERY,\r\n proxyUrl: _PROXY_URL,\r\n },\r\n {\r\n urlPrefix: _LOCATOR_SERVICE_URL,\r\n proxyUrl: _PROXY_URL,\r\n },\r\n {\r\n urlPrefix: _POINT_ADDRESS_SERVICE_URL,\r\n proxyUrl: _PROXY_URL,\r\n },\r\n {\r\n urlPrefix: _GEOMETRY_SERVICE_URL,\r\n proxyUrl: _PROXY_URL,\r\n },\r\n];\r\n//Add Proxy_rules to esriConfig\r\n//proxy_rules.forEach(item=> {esriCoreUrlUtils.addProxyRule(item)})\r\nesriCoreUrlUtils.addProxyRule(proxy_rules[0]);\r\nesriCoreUrlUtils.addProxyRule(proxy_rules[1]);\r\nesriCoreUrlUtils.addProxyRule(proxy_rules[2]);\r\nesriCoreUrlUtils.addProxyRule(proxy_rules[3]);\r\nesriCoreUrlUtils.addProxyRule({\r\n urlPrefix: _RAK_STREETS_TILE_En,\r\n proxyUrl: _PROXY_URL,\r\n});\r\nesriCoreUrlUtils.addProxyRule({\r\n urlPrefix: _RAK_STREETS_MAP_En,\r\n proxyUrl: _PROXY_URL,\r\n});\r\nesriCoreUrlUtils.addProxyRule({\r\n urlPrefix: _RAK_STREETS_MAP_Ar,\r\n proxyUrl: _PROXY_URL,\r\n});\r\n\r\nesriCoreUrlUtils.addProxyRule({\r\n urlPrefix: _RAK_STREETS_TILE_Ar,\r\n proxyUrl: _PROXY_URL,\r\n});\r\n\r\nesriCoreUrlUtils.addProxyRule({\r\n urlPrefix: _RAK_BOUNDARY_MAP_En,\r\n proxyUrl: _PROXY_URL,\r\n});\r\n\r\nesriCoreUrlUtils.addProxyRule({\r\n urlPrefix: _RAK_BOUNDARY_MAP_Ar,\r\n proxyUrl: _PROXY_URL,\r\n});\r\n\r\nesriCoreUrlUtils.addProxyRule({\r\n urlPrefix: option2Url,\r\n proxyUrl: _PROXY_URL,\r\n});\r\n\r\nesriCoreUrlUtils.addProxyRule({\r\n urlPrefix: option3Url,\r\n proxyUrl: _PROXY_URL,\r\n});\r\n\r\nlet view = null;\r\n\r\n/* For Adding Layers Individually */\r\n/*1 Constrction BaseMap with Aeiral Imagery */\r\nconst ae2019ImgLyr = new ImageryLayer({\r\n url: _AERIAL_IMAGERY,\r\n});\r\n\r\nconst Rak_Boundary_Geom_4326 = Polygon.fromJSON(RAK_BOUNDARY_JSON_4326);\r\n\r\nconst ae2019BaseMap = new Basemap({\r\n baseLayers: [ae2019ImgLyr],\r\n title: \"Aerial Imagery 2019\",\r\n id: \"ae2019\",\r\n});\r\n\r\nlet initialExtent = new Extent({\r\n ymax: 2990773.05734144,\r\n xmin: 6128491.02770031,\r\n xmax: 6370106.22272346,\r\n ymin: 2867470.43283262,\r\n spatialReference: new SpatialReference({ wkid: 102100 }),\r\n});\r\n\r\nvar map = new Map({\r\n basemap: ae2019BaseMap,\r\n //basemap: \"satellite\", //satellite streets\r\n});\r\n\r\nconst RAKMapAerialBaseMap = new Map({\r\n basemap: ae2019BaseMap,\r\n});\r\n\r\nconst EsriSatelliteBaseMap = new Map({\r\n basemap: \"satellite\",\r\n});\r\n\r\nconst homeWidget = new Home({});\r\nconst basemapGallery = new BaseMapGallery({});\r\nconst scaleBar = new ScaleBar({ style: \"line\", unit: \"dual\" });\r\nconst layerList = new LayerList({});\r\nconst layerListExpand = new Expand({\r\n expandIconClass: \"esri-icon-layer-list\",\r\n content: layerList,\r\n});\r\n\r\n//Construction A Graphic Layer\r\nconst mapGraphicLayer = new GraphicsLayer({\r\n id: \"gl_addressing_01\",\r\n title: \"Address_gl\",\r\n listMode: \"hide\",\r\n});\r\n\r\n// const rak_streetsLyrEn = new VectorTileLayer({\r\n// url: _RAK_STREETS_TILE_En,\r\n// id: \"rak_streets_tile_en\",\r\n// visible: true,\r\n// });\r\n\r\n// const rak_streetsLyrAr = new VectorTileLayer({\r\n// url: _RAK_STREETS_TILE_Ar,\r\n// id: \"rak_streets_tile_ar\",\r\n// visible: true,\r\n// });\r\n\r\n//Change the Street Lyr is always visible and (appers as it is stick to the Aerial Imagery - so seperate Map Service is published)\r\nconst rak_streetsLyrEn = new MapImageLayer({\r\n url: _RAK_STREETS_MAP_En,\r\n id: \"rak_streets_tile_en\",\r\n visible: true,\r\n //,\r\n // sublayers: [\r\n // {\r\n // id: 1,\r\n // visible: true\r\n // }, {\r\n // id: 2,\r\n // visible: true\r\n // }, {\r\n // id: 3,\r\n // visible: true\r\n // }, {\r\n // id: 4,\r\n // visible: true\r\n // },\r\n // {\r\n // id: 5,\r\n // visible: true\r\n // },\r\n // {\r\n // id: 6,\r\n // visible: true\r\n // },\r\n // {\r\n // id: 7,\r\n // visible: true\r\n // },\r\n // {\r\n // id: 8,\r\n // visible: true\r\n // },\r\n // {\r\n // id: 9,\r\n // visible: true\r\n // }\r\n // ] //Hiding Area and UAE Boundary\r\n});\r\nconst rak_streetsLyrAr = new MapImageLayer({\r\n url: _RAK_STREETS_MAP_Ar,\r\n id: \"rak_streets_tile_ar\",\r\n visible: true,\r\n //,\r\n // sublayers: [\r\n // {\r\n // id: 1,\r\n // visible: true\r\n // }, {\r\n // id: 2,\r\n // visible: true\r\n // }, {\r\n // id: 3,\r\n // visible: true\r\n // }, {\r\n // id: 4,\r\n // visible: true\r\n // },\r\n // {\r\n // id: 5,\r\n // visible: true\r\n // },\r\n // {\r\n // id: 6,\r\n // visible: true\r\n // },\r\n // {\r\n // id: 7,\r\n // visible: true\r\n // },\r\n // {\r\n // id: 8,\r\n // visible: true\r\n // },\r\n // {\r\n // id: 9,\r\n // visible: true\r\n // }\r\n // ] //Hiding Area and UAE Boundary\r\n});\r\n\r\nconst emirate_boundaryLyrEn = new MapImageLayer({\r\n url: _RAK_BOUNDARY_MAP_En,\r\n id: \"emirate_boundary_en\",\r\n visible: true,\r\n});\r\n\r\nconst emirate_boundaryLyrAr = new MapImageLayer({\r\n url: _RAK_BOUNDARY_MAP_Ar,\r\n id: \"emirate_boundary_ar\",\r\n visible: true,\r\n});\r\n\r\n// Try Base Map-----Map Service\r\n// const rak_streetsLyrEn = new MapImageLayer({\r\n// url: _RAK_STREETS_TILE_En,\r\n// id: \"rak_streets_tile_en\",\r\n// visible: true,\r\n// });\r\n\r\n// const rak_streetsLyrAr = new MapImageLayer({\r\n// url: _RAK_STREETS_TILE_Ar,\r\n// id: \"rak_streets_tile_ar\",\r\n// visible: true,\r\n// });\r\n\r\nconst option2Service = new MapImageLayer({\r\n url: option2Url,\r\n id: \"rak_streets_tile_en\",\r\n});\r\n\r\nconst option3Service = new MapImageLayer({\r\n url: option3Url,\r\n id: \"rak_streets_tile_en\",\r\n});\r\n\r\n//create locator\r\n// Find address\r\nconst locatorTask = new Locator({\r\n url: _LOCATOR_SERVICE_URL,\r\n});\r\n\r\nconst geometryServiceTask = new GeometryService({ url: _GEOMETRY_SERVICE_URL });\r\n\r\n\r\n// }\r\n\r\nconst hasValue = (obj) => {\r\n if (!obj) return false;\r\n if (typeof obj === \"object\") {\r\n return Object.keys(obj).length > 0;\r\n } else if (Array.isArray(obj)) {\r\n return obj.length > 0;\r\n }\r\n};\r\n\r\nfunction AddressingMapView(props) {\r\n const dispatch = useDispatch(); //To Dipatch\r\n const mapDiv = useRef(null); //Reference for MapDiv DOM Element\r\n const [showMapSwitcher, setShowMapSwitcher] = useState(true);\r\n //Getting Varialbes from Store\r\n const store_address_result = props.addressingResult;\r\n var store_appToken =\r\n props.appSettings &&\r\n props.appSettings.userCredentials &&\r\n props.appSettings.userCredentials.token\r\n ? props.appSettings.userCredentials.token.access_token\r\n : null;\r\n const isLangArActive = props.appSettings.language === \"ar\";\r\n\r\n //Local State\r\n const [\r\n isReverseGeoCodingInProgress,\r\n SetIsReverseGeoCodingInProgress,\r\n ] = useState(false);\r\n //Hook to initiate the Map and add layers\r\n useEffect(() => {\r\n let mounted = true;\r\n\r\n if (props.showMap === 1) {\r\n map = EsriSatelliteBaseMap;\r\n } else if (props.showMap === 2) {\r\n map = RAKMapAerialBaseMap;\r\n } else if (props.showMap === 3) {\r\n map = RAKMapAerialBaseMap;\r\n }\r\n if (mapDiv.current) {\r\n //getAddressPointDetails(\"11141\")\r\n //Adding Map to DOM\r\n view = new MapView({\r\n map: map,\r\n container: mapDiv.current,\r\n extent: initialExtent,\r\n constraints: {\r\n snapToZoom: false,\r\n rotationEnabled: false,\r\n },\r\n });\r\n\r\n homeWidget.view = view;\r\n basemapGallery.view = view;\r\n scaleBar.view = view;\r\n layerList.view = view;\r\n layerListExpand.view = view;\r\n // view.ui.add(basemapGallery,\"bottom-right\")\r\n view.ui.add(homeWidget, \"top-left\");\r\n view.ui.add(scaleBar, \"bottom-left\");\r\n // view.ui.add(layerList,\"top-left\")\r\n // view.ui.add(layerListExpand, \"top-right\");\r\n // view.ui.remove(\"attribution\");\r\n view.popup.autoOpenEnabled = false;\r\n const locateBtn = new Locate({\r\n view: view,\r\n });\r\n view.ui.add(locateBtn, {\r\n position: \"top-left\",\r\n });\r\n // view.popup.autoCloseEnabled = false\r\n\r\n // view.map.addMany([mapGraphicLayer])\r\n view.map.add(mapGraphicLayer, 2); //adding at index 2 on top of Boundary and streets\r\n // if(isLangArActive)\r\n // //view.map.addMany([ rak_streetsLyrEn , mapGraphicLayer]);\r\n // // view.map.addMany([mapGraphicLayer])\r\n // else\r\n // //view.map.addMany([ rak_streetsLyrAr , mapGraphicLayer]);\r\n\r\n //Handle Reverse GeoCode on MapClick\r\n view.on(\"click\", function (event) {\r\n console.log(\"Map Click \", event.mapPoint);\r\n if (mounted) {\r\n clearAddressGraphicsLayer();\r\n //reverseGeoCode(event.mapPoint);\r\n dispatch(\r\n fetchAddressResultRequest(\"Map_Click\", event.mapPoint.toJSON())\r\n );\r\n\r\n //Get 4326 coordinates before reverse geocod and send it to reverse geocode to store it in store\r\n let outSpatialReference = new SpatialReference({ wkid: 4326 });\r\n esriProject.load().then(() => {\r\n let projectPnt4326 = esriProject.project(\r\n event.mapPoint,\r\n outSpatialReference\r\n );\r\n\r\n reverseGeoCode2(event.mapPoint, projectPnt4326);\r\n });\r\n }\r\n });\r\n view.when(() => {\r\n if(!hasValue(props.addressDetails.data)){\r\n view.zoom = 9\r\n }else{\r\n zoomToDisplayedAddressGraphic()\r\n }\r\n \r\n });\r\n\r\n //Watch for Scale change and Hide the map switcher\r\n view.watch(\"scale\", function (scaleVal) {\r\n var v = {\r\n isMobile: isMobile,\r\n isTablet: isTablet,\r\n zoom: view.zoom,\r\n scale: scaleVal,\r\n isMobileOnly: isMobileOnly,\r\n };\r\n // console.log(v);\r\n // console.log(\"scale changed to new Value = \",scaleVal)\r\n if (scaleVal < 3000) {\r\n setShowMapSwitcher(false);\r\n } else if (scaleVal >= 3000) {\r\n setShowMapSwitcher(true);\r\n }\r\n });\r\n\r\n var rk_streets = view.map.allLayers.find(\r\n (lyr) =>\r\n lyr.id === \"rak_streets_tile_en\" || lyr.id === \"rak_streets_tile_ar\"\r\n );\r\n if (rk_streets) {\r\n view.map.remove(rk_streets);\r\n }\r\n\r\n var rk_boundary = view.map.allLayers.find(\r\n (lyr) =>\r\n lyr.id === \"emirate_boundary_en\" || lyr.id === \"emirate_boundary_ar\"\r\n );\r\n if (rk_streets) {\r\n view.map.remove(rk_boundary);\r\n }\r\n\r\n if (props.showMap === 1) {\r\n if (props.appSettings.language === \"ar\") {\r\n view.map.add(rak_streetsLyrAr, 0);\r\n view.map.add(emirate_boundaryLyrAr, 1);\r\n } else if (props.appSettings.language === \"en\") {\r\n view.map.add(rak_streetsLyrEn, 0);\r\n view.map.add(emirate_boundaryLyrEn, 1);\r\n }\r\n } else if (props.showMap === 2) {\r\n view.map.add(option2Service, 0);\r\n } else if (props.showMap === 3) {\r\n view.map.add(option3Service, 0);\r\n }\r\n }\r\n return () => {\r\n //eg: remove handlers etc.here cleanUp code\r\n mounted = false;\r\n };\r\n }, [props.showMap]);\r\n\r\n //hook to handle Language Change --and change base Vector tile\r\n useEffect(() => {\r\n if (!props.appSettings.language) return;\r\n if (!view || !view.map.layers || view.map.layers.length < 0) return;\r\n var rk_streets = view.map.allLayers.find(\r\n (lyr) =>\r\n lyr.id === \"rak_streets_tile_en\" || lyr.id === \"rak_streets_tile_ar\"\r\n );\r\n if (rk_streets) {\r\n view.map.remove(rk_streets);\r\n }\r\n\r\n var rk_boundary = view.map.allLayers.find(\r\n (lyr) =>\r\n lyr.id === \"emirate_boundary_en\" || lyr.id === \"emirate_boundary_ar\"\r\n );\r\n if (rk_streets) {\r\n view.map.remove(rk_boundary);\r\n }\r\n\r\n if (props.showMap === 1) {\r\n if (props.appSettings.language === \"ar\") {\r\n view.map.add(rak_streetsLyrAr, 0);\r\n view.map.add(emirate_boundaryLyrAr, 1);\r\n } else if (props.appSettings.language === \"en\") {\r\n view.map.add(rak_streetsLyrEn, 0);\r\n view.map.add(emirate_boundaryLyrEn, 1);\r\n }\r\n } else if (props.showMap === 2) {\r\n view.map.add(option2Service, 0);\r\n } else if (props.showMap === 3) {\r\n view.map.add(option3Service, 0);\r\n }\r\n\r\n // if (props.appSettings.language === \"ar\") {\r\n // view.map.add(rak_streetsLyrAr, 0);\r\n // } else if (props.appSettings.language === \"en\") {\r\n // view.map.add(rak_streetsLyrEn, 0);\r\n // }\r\n }, [props.appSettings.language]);\r\n\r\n // useEffect(()=>{\r\n // store_appToken = (props.appSettings && props.appSettings.userCredentials && props.appSettings.userCredentials.token) ? props.appSettings.userCredentials.token.access_token : null\r\n // },[props.appSettings.userCredentials])\r\n\r\n //Hook to Handle Change in AddressResult\r\n useEffect(() => {\r\n let mounted = true;\r\n if (\r\n store_address_result.candidates &&\r\n store_address_result.candidates.length < 1\r\n ) {\r\n console.log(\"No Address Result Found\");\r\n //clear old results\r\n clearAddressGraphicsLayer();\r\n return;\r\n } else if (\r\n store_address_result.candidates[0].isParcelSearch ||\r\n store_address_result.candidates[0].isReverseGeocode\r\n ) {\r\n clearAddressGraphicsLayer();\r\n //is parcel search so no need to get details again all the details are avaliable so just dspatch\r\n if (mounted)\r\n props.fetchedAddressDetailsSuccessfully(\r\n store_address_result.candidates[0]\r\n );\r\n } else {\r\n clearAddressGraphicsLayer();\r\n let address_candiate = store_address_result.candidates[0];\r\n if (mounted) displayAddressGraphic(address_candiate);\r\n }\r\n\r\n return () => {\r\n mounted = false;\r\n };\r\n }, [store_address_result]);\r\n\r\n //hook to handle Change in AddressDetails -- PointGraphic and draw it on Map\r\n useEffect(() => {\r\n let mounted = true;\r\n\r\n var address_data = props.addressDetails.data; //from store\r\n if (!address_data || address_data.length < 1) return;\r\n if (props.addressDetails.loading) return;\r\n\r\n let lat = address_data.latitude;\r\n let lng = address_data.longitude;\r\n let positionX = address_data.positionX;\r\n let positionY = address_data.positionY;\r\n if (mounted) {\r\n // clearAddressGraphicsLayer() //clear old one before adding now\r\n displayPointAddressGraphic2(\r\n { x: positionX, y: positionY },\r\n address_data.parcelGeometry\r\n );\r\n }\r\n\r\n return () => {\r\n mounted = false;\r\n };\r\n }, [props.addressDetails.data]);\r\n\r\n const reverseGeoCode2 = (mapPoint, clickPoint4326) => {\r\n // if(!props.isAddressPanelOpen) props.openAddressPanel()\r\n triggerAddressPanelOpen();\r\n clearMapSearchText(); //Bad way of clearing MapSearchBar text --TODO change to store based model (react way)\r\n SetIsReverseGeoCodingInProgress(true);\r\n const params = { location: mapPoint };\r\n dispatch(props.clearAddressDetails());\r\n //dispatch(fetchAddressResultRequest(\"Map_Click\", mapPoint.toJSON()));\r\n dispatch(fetchAddressResultRequest(\"Map_Click\", clickPoint4326.toJSON())); //Again Dispatching to change map point to 4326\r\n locatorTask\r\n .locationToAddress(params)\r\n .then((resp) => {\r\n const parcel_address = resp.address; //here we will ge the parcel id\r\n // dispatch(fetchAddressResultSuccess([resp]));\r\n getAndDisplayAddressDetailsFromParcelId(parcel_address, mapPoint);\r\n })\r\n .catch((err) => {\r\n const errMsg = err.message;\r\n if (errMsg == \"Cannot perform query. Invalid query parameters.\") {\r\n //means no matching address found\r\n dispatch(fetchAddressResultSuccess([]));\r\n noResultFromReverseGeoCodeAction(mapPoint);\r\n } else {\r\n dispatch(fetchAddressResultFailure(errMsg));\r\n }\r\n })\r\n .then(() => {\r\n SetIsReverseGeoCodingInProgress(false);\r\n });\r\n };\r\n\r\n const getAndDisplayAddressDetailsFromParcelId = (\r\n parcel_address,\r\n mapPoint\r\n ) => {\r\n const [promise, source] = getAddressDetailsFromParcelId(\r\n parcel_address,\r\n props.appSettings.userCredentials.token.access_token\r\n ); // store_appToken\r\n promise\r\n .then((resp) => {\r\n console.log(resp.data);\r\n const {\r\n isSuccess,\r\n isPartial,\r\n message,\r\n respData,\r\n successObj,\r\n failedObj,\r\n } = addressingApiResponseMapper(resp.data);\r\n if (isSuccess) {\r\n var addressData = addressDetailsMapper(respData);\r\n var dipatchData = { ...addressData, isReverseGeocode: true };\r\n // props.fetchedAddressDetailsSuccessfully([dipatchData]);\r\n dispatch(fetchAddressResultSuccess([dipatchData]));\r\n } else {\r\n // props.faiedTofetchAddressDetails(message);\r\n dispatch(fetchAddressResultSuccess([]));\r\n noResultFromReverseGeoCodeAction(mapPoint);\r\n }\r\n })\r\n .catch((err) => {\r\n //setSuggestionsState({isLoading:false, options :[] , query : search_text ,disbled : false })\r\n console.log(\"Coudnt Fetch Address Detail From Parcel ID \", err.message);\r\n const errMsg = err.message;\r\n //props.faiedTofetchAddressDetails(err.message);\r\n dispatch(fetchAddressResultFailure(errMsg));\r\n });\r\n };\r\n\r\n const reverseGeoCode = (mapPoint) => {\r\n //this method is not used anymore as the logic is changed to reveresGeoCode agains Parcels Locator\r\n //if(!props.isAddressPanelOpen) props.openAddressPanel()\r\n triggerAddressPanelOpen();\r\n if (isReverseGeoCodingInProgress) {\r\n // alert(\"In Progress wait\");\r\n return;\r\n } else {\r\n SetIsReverseGeoCodingInProgress(true);\r\n }\r\n const params = {\r\n location: mapPoint,\r\n //,locationType :\"Point Address\"\r\n };\r\n dispatch(props.clearAddressDetails());\r\n //dispatch(props.clearAddressResult())\r\n dispatch(fetchAddressResultRequest(\"Map_Click\", mapPoint.toJSON()));\r\n\r\n locatorTask\r\n .locationToAddress(params)\r\n .then((resp) => {\r\n console.log(JSON.stringify(resp));\r\n const r_address = resp.address;\r\n const r_address_attributes = resp.attributes;\r\n const address_type = r_address_attributes.Addr_type;\r\n console.log(\"Found Address of Type \", address_type);\r\n if (address_type === \"PointAddress\") {\r\n //only show point address in reverse GeoCode\r\n dispatch(fetchAddressResultSuccess([resp]));\r\n } else {\r\n dispatch(fetchAddressResultSuccess([])); //dispatching empty --as NonPoint Address is found is reterieved\r\n noResultFromReverseGeoCodeAction(mapPoint);\r\n }\r\n\r\n SetIsReverseGeoCodingInProgress(false);\r\n })\r\n .catch((err) => {\r\n console.log(err.message);\r\n const errMsg = err.message;\r\n if (errMsg == \"Cannot perform query. Invalid query parameters.\") {\r\n //means no matching address found\r\n dispatch(fetchAddressResultSuccess([]));\r\n noResultFromReverseGeoCodeAction(mapPoint);\r\n } else {\r\n dispatch(fetchAddressResultFailure(errMsg));\r\n }\r\n SetIsReverseGeoCodingInProgress(false);\r\n });\r\n };\r\n\r\n const noResultFromReverseGeoCodeAction = (mapPoint) => {\r\n //Draw the map point graphic and may be show a popup no result found at the current location report issue\r\n const addressNotFound = new Graphic({\r\n geometry: mapPoint,\r\n symbol: const_not_found_point_symbol,\r\n // symbol : const_mapPnt\r\n });\r\n addGraphicToAddressGraphicLayer(addressNotFound);\r\n };\r\n\r\n const getAndDrawAddressPointDetails = (address) => {\r\n //Make Sure to Clear old Graphic\r\n //clearAddressGraphicsLayer()\r\n var street_number = address.attributes.StreetId.toString();\r\n var point_id = address.attributes.AddressPointId.toString();\r\n var area_id = address.attributes.AreaId.toString();\r\n\r\n props.initiatingAddressDetailsFetch(props.addressingResult.fetchType); //passing fetchType from AddrssResult store\r\n\r\n let [promise, source] = getAddressDetials(\r\n point_id,\r\n street_number,\r\n area_id,\r\n store_appToken\r\n );\r\n promise\r\n .then((resp) => {\r\n const {\r\n isSuccess,\r\n isPartial,\r\n message,\r\n respData,\r\n successObj,\r\n failedObj,\r\n } = addressingApiResponseMapper(resp.data);\r\n\r\n if (isSuccess) {\r\n props.fetchedAddressDetailsSuccessfully(\r\n addressDetailsMapper(respData)\r\n );\r\n //TODO - drwas Point address and Parcel outline on map -- may be using useEffect hook\r\n } else props.faiedTofetchAddressDetails(message);\r\n })\r\n .catch((err) => {\r\n console.log(\"Failed to get the AddressPoint Details \", err.message);\r\n props.faiedTofetchAddressDetails(err.message);\r\n });\r\n };\r\n\r\n const displayAddressGraphic = (address) => {\r\n var address_type = address.attributes.Addr_type;\r\n switch (address_type) {\r\n case \"PointAddress\":\r\n // drawAddressPointGraphic(address)\r\n //displayPointAddressGraphic(address) //This is wroking , but commented for now to get details from AddressServiceAPI\r\n //Since AddressPoint is found - Get the Address Point details for the AddressAPI service and\r\n getAndDrawAddressPointDetails(address);\r\n break;\r\n case \"StreetName\":\r\n props.clearAddressDetails();\r\n if (isMobileOnly) {\r\n props.closeAddressPanel();\r\n }\r\n displayStreetAddressGraphic(address);\r\n break;\r\n case \"Locality\":\r\n props.clearAddressDetails();\r\n if (isMobileOnly) {\r\n //if mobile close the side panel wait for some milliseconds and then zoom\r\n //since we have calculat geom login indide display AreaGraphic - no need to implement timer\r\n props.closeAddressPanel();\r\n }\r\n displayAreaGraphic(address, props.appSettings.language);\r\n break;\r\n case \"Postal\":\r\n props.clearAddressDetails();\r\n if (isMobileOnly) {\r\n props.closeAddressPanel();\r\n }\r\n displayPostalAreaGraphic(address);\r\n break;\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n const [mapSearchValueDummy, setMapSearchValueDummy] = useState(1);\r\n const clearMapSearchText = () => {\r\n setMapSearchValueDummy((value) => ++value);\r\n };\r\n\r\n const triggerAddressPanelOpen = () => {\r\n //TODO check the logic here--trigger only if the panel is closed\r\n //if(!(props.mapPanelSetting.isSidePanelOpen && props.mapPanelSetting.resultType === \"address\")){\r\n props.openAddressPanel();\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\nconst mapStateToProps = (state) => {\r\n return {\r\n addressingResult: state.addressingResult,\r\n addressDetails: state.addressDetails,\r\n //isAddressPanelOpen : (state.mapPanelSetting.isSidePanelOpen && state.mapPanelSetting.resultType === \"address\"),\r\n mapPanelSetting: state.mapPanelSetting,\r\n appSettings: state.settings,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => {\r\n return {\r\n initiatingAddressDetailsFetch: (fetch_type) => {\r\n return dispatch(fetchAddressDetailsRequest(fetch_type));\r\n },\r\n fetchedAddressDetailsSuccessfully: (data) => {\r\n return dispatch(fetchAdressDetailsSuccess(data));\r\n },\r\n faiedTofetchAddressDetails: (error) => {\r\n return dispatch(fetchAddressDetailsFailure(error));\r\n },\r\n clearAddressDetails: () => {\r\n return dispatch(clearAddressDetails());\r\n },\r\n openAddressPanel: () => {\r\n return dispatch(setSidePanelStatusAndResultType(\"true\", \"address\")); //to display the sidePanel\r\n },\r\n closeAddressPanel: () => {\r\n return dispatch(setSidePanelopen(false)); //to display the sidePanel\r\n },\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(AddressingMapView);\r\n\r\nconst displayPointAddressGraphic2 = (address_location, parcel_geometry) => {\r\n //here get the 32640 to avoid Projecting to 4326\r\n\r\n if (parcel_geometry) {\r\n //Parcel Geometry now\r\n var geometry_poly_rings = parcel_geometry.rings;\r\n var pracel_polygon_json = {\r\n type: \"polygon\",\r\n rings: geometry_poly_rings,\r\n spatialReference: { wkid: 32640 },\r\n };\r\n var parcel_graphic = new Graphic({\r\n geometry: pracel_polygon_json,\r\n symbol: const_address_parcel_graphic_symbol,\r\n // id: \"address_graphic\",\r\n // attributes: {\r\n // address_type: \"PointAddress\",\r\n // },\r\n });\r\n clearAddressGraphicsLayer(); //Clear the old one before adding now\r\n /* To Hide parcel boundary (as required for zoom made symbol transparent) -- 2nd August 2021 */\r\n // addGraphicToAddressGraphicLayer(parcel_graphic);\r\n // zoomToSingleGraphic(parcel_graphic);\r\n }\r\n\r\n //Plot the point on map\r\n\r\n const address_point_32640 = new Point({\r\n x: address_location.x,\r\n y: address_location.y,\r\n spatialReference: { wkid: 32640 },\r\n });\r\n\r\n const addressGraphic = new Graphic({\r\n geometry: address_point_32640,\r\n symbol: const_address_point_symbol,\r\n id: \"address_graphic\",\r\n attributes: {\r\n address_type: \"PointAddress\",\r\n },\r\n });\r\n addGraphicToAddressGraphicLayer(addressGraphic);\r\n zoomToSingleGraphic(addressGraphic);\r\n\r\n //Not required any more below conversion as we have the xy from the webservice response\r\n return;\r\n const address_point_4326 = new Point({\r\n //Create a point in 4326\r\n x: address_location.x,\r\n y: address_location.y,\r\n spatialReference: { wkid: 4326 },\r\n });\r\n\r\n let outSpatialReference = new SpatialReference({ wkid: 32640 });\r\n esriProject.load().then(() => {\r\n let projectPnts = esriProject.project(\r\n [address_point_4326],\r\n outSpatialReference\r\n );\r\n projectPnts.forEach((pnt) => {\r\n console.log(\"After Prj \", pnt.x, pnt.y);\r\n const addressGraphic = new Graphic({\r\n geometry: projectPnts[0],\r\n symbol: const_address_point_symbol,\r\n });\r\n addGraphicToAddressGraphicLayer(addressGraphic);\r\n });\r\n });\r\n};\r\n\r\n//not used to remove\r\n// const MapXYToLatLng = (x, y)=>{\r\n// const point32640 = new Point({\r\n// x: x,\r\n// y :y,\r\n// spatialReference :{ wkid : 32640}\r\n// })\r\n// let outSpatialReference = new SpatialReference({ wkid: 4326 });\r\n// esriProject.load().then(()=>{\r\n// let projectPnts = esriProject.project([point32640],outSpatialReference);\r\n// })\r\n// }\r\n\r\nconst displayStreetAddressGraphic = (address) => {\r\n var street_number = address.attributes.StreetId;\r\n const [promise, source] = getStreetDetails(street_number);\r\n promise\r\n .then((resp) => {\r\n console.log(\"Street Details \" + resp.data);\r\n var respData = resp.data;\r\n if (respData.features && respData.features.length > 0) {\r\n var f_paths = respData.features[0].geometry.paths;\r\n var pfeatures = {\r\n type: \"polyline\",\r\n paths: f_paths,\r\n spatialReference: { wkid: 32640 },\r\n };\r\n var pGraphic = new Graphic({\r\n geometry: pfeatures,\r\n symbol: const_address_line_street_symbol,\r\n attributes: { address_type: \"StreetName\" },\r\n });\r\n addGraphicToAddressGraphicLayer(pGraphic);\r\n zoomToAreaGraphic(pGraphic);\r\n } else {\r\n console.log(\"No Street Features Returned \");\r\n }\r\n })\r\n .catch((err) => {\r\n console.log(\"Error while gettig street \", err.message);\r\n });\r\n};\r\n\r\nconst displayAreaGraphic = (address, langauge) => {\r\n var areaId = address.attributes.AreaId;\r\n const [promise, source] = getAreaDetails(areaId);\r\n promise\r\n .then((resp) => {\r\n var respData = resp.data;\r\n if (respData.features && respData.features.length > 0) {\r\n var fAttributes = respData.features[0].attributes;\r\n var g_rings = respData.features[0].geometry.rings;\r\n var pfeature = {\r\n type: \"polygon\",\r\n rings: g_rings,\r\n spatialReference: { wkid: 32640 },\r\n };\r\n var pGraphic = new Graphic({\r\n geometry: pfeature,\r\n symbol: const_address_area_symbol,\r\n attributes: { address_type: \"Locality\" },\r\n });\r\n //to hide the boundary chage the symbol to be trasnparent\r\n addGraphicToAddressGraphicLayer(pGraphic);\r\n zoomToAreaGraphic(pGraphic);\r\n\r\n //For Label Area\r\n geometryServiceTask\r\n .labelPoints([new Polygon(pfeature)])\r\n .then((labelPoint) => {\r\n var txtSymbol = new TextSymbol(const_txt_symobl_for_graphics);\r\n txtSymbol.text =\r\n langauge == \"en\" ? fAttributes.NameEn : fAttributes.NameAR;\r\n var labelPointGraphic = new Graphic(labelPoint[0], txtSymbol);\r\n mapGraphicLayer.graphics.add(labelPointGraphic);\r\n })\r\n .catch((err) => {\r\n console.log(err.message);\r\n });\r\n\r\n //Use Geometry Service - label Point to find the label point\r\n // const [promise2, source2] = getLabelPointOfPolygon(new Polygon(pfeature));\r\n // promise2\r\n // .then((resp) => {\r\n // var respData = resp.data;\r\n // if (respData.labelPoints && respData.labelPoints.length > 0) {\r\n // let lblPt = respData.labelPoints[0];\r\n // var txtSymbol = new TextSymbol(const_txt_symobl_for_graphics);\r\n // txtSymbol.text = \"Sample Ext For now\";\r\n // var labelPointGraphic = new Graphic(\r\n // new Point({\r\n // x: lblPt.x,\r\n // y: lblPt.y,\r\n // spatialReference: { wkid: 32640 },\r\n // }),\r\n // txtSymbol\r\n // );\r\n // mapGraphicLayer.graphics.add(labelPointGraphic);\r\n // }\r\n // })\r\n // .catch((err) => {\r\n // console.log(err.message);\r\n // });\r\n } else {\r\n console.log(\"No Area found\");\r\n }\r\n })\r\n .catch((err) => {\r\n console.log(\"Error while getting Area\");\r\n });\r\n};\r\n\r\nconst displayPostalAreaGraphic = (address) => {\r\n var emPostCode = address.attributes.Postal;\r\n var farea = address.attributes.City;\r\n const [promise, source] = getPostalAreaDetails(emPostCode);\r\n promise\r\n .then((resp) => {\r\n var respData = resp.data;\r\n if (respData.features && respData.features.length > 0) {\r\n var fAttributes = respData.features[0].attributes;\r\n var g_rings = respData.features[0].geometry.rings;\r\n var pfeature = {\r\n type: \"polygon\",\r\n rings: g_rings,\r\n spatialReference: { wkid: 32640 },\r\n };\r\n var pGraphic = new Graphic({\r\n geometry: pfeature,\r\n symbol: const_address_parcel_graphic_symbol,\r\n attributes: { address_type: \"Postal\" },\r\n });\r\n addGraphicToAddressGraphicLayer(pGraphic);\r\n zoomToAreaGraphic(pGraphic);\r\n\r\n //for label Postal Area\r\n geometryServiceTask\r\n .labelPoints([new Polygon(pfeature)])\r\n .then((labelPoint) => {\r\n var txtSymbol = new TextSymbol(const_txt_symobl_for_graphics);\r\n txtSymbol.text = fAttributes.EmPostCode + \"\\n\" + farea;\r\n var labelPointGraphic = new Graphic(labelPoint[0], txtSymbol);\r\n mapGraphicLayer.graphics.add(labelPointGraphic);\r\n })\r\n .catch((err) => {\r\n console.log(err.message);\r\n });\r\n } else {\r\n console.log(\"No Postal Area found\");\r\n }\r\n })\r\n .catch((err) => {\r\n console.log(\"Error while getting Postal Area\");\r\n });\r\n};\r\n\r\nconst addGraphicToAddressGraphicLayer = (graphic) => {\r\n mapGraphicLayer.graphics.add(graphic);\r\n};\r\n\r\nconst clearAddressGraphicsLayer = () => {\r\n mapGraphicLayer.removeAll();\r\n};\r\n\r\nconst removeGraphicFromGraphicLayer = (graphicId) => {\r\n let toRemoveGraphic = mapGraphicLayer.graphics.find((g) => {\r\n return g.id == graphicId;\r\n });\r\n if (toRemoveGraphic) mapGraphicLayer.graphics.remove(toRemoveGraphic);\r\n};\r\n\r\n//zoom to Area and Postal area --setting the expand value to 4 for better zoom level\r\nconst zoomToAreaGraphic = (graphic) => {\r\n if (!view) return;\r\n if (!graphic) return;\r\n if (!view.map || !view.map.basemap || !view.map.basemap.spatialReference) {\r\n if (!view.spatialReference) return;\r\n }\r\n if (!view.spatialReference) return;\r\n //let viewWKID = view.spatialReference.wkid\r\n if (esriProject.isLoaded()) {\r\n let toZoomGeom = esriProject.project(\r\n graphic.geometry,\r\n view.spatialReference\r\n );\r\n // if (isMobileOnly) {\r\n // view.goTo(\r\n // {\r\n // traget: [toZoomGeom.centroid.longitude, toZoomGeom.centroid.latitude],\r\n // zoom: 15,\r\n // },\r\n // { duration: 2000 }\r\n // );\r\n // // view.goTo(graphic, { duration : 2000 }).then((e)=>{\r\n // // console.log(\"goTo is done\")\r\n // // })\r\n // } else {\r\n // toZoomGeom.extent.expand(4); //HardCoded Expand\r\n // view.goTo(toZoomGeom, { duration: 2000 });\r\n // }\r\n view.goTo(toZoomGeom, { duration: 2000 });\r\n } else {\r\n esriProject.load().then(() => {\r\n let toZoomGeom = esriProject.project(\r\n graphic.geometry,\r\n view.spatialReference\r\n );\r\n // if (isMobileOnly) {\r\n // view.goTo(\r\n // {\r\n // traget: [\r\n // toZoomGeom.centroid.longitude,\r\n // toZoomGeom.centroid.latitude,\r\n // ],\r\n // zoom: 15,\r\n // },\r\n // { duration: 2000 }\r\n // );\r\n // // view.goTo(graphic, { duration : 2000 }).then((e)=>{\r\n // // console.log(\"goTo is done\")\r\n // // })\r\n // } else {\r\n // toZoomGeom.extent.expand(4); //HardCoded Expand\r\n // view.goTo(toZoomGeom, { duration: 2000 });\r\n // }\r\n view.goTo(toZoomGeom, { duration: 2000 });\r\n });\r\n }\r\n // var gGeom = graphic.geometry.clone();\r\n // gGeom.extent.expand(4); //Hardcoded expand factor\r\n // view.goTo(gGeom, { duration: 2000 });\r\n // return;\r\n};\r\n\r\nconst zoomToSingleGraphic = (graphic) => {\r\n if (\r\n (graphic.attributes && graphic.attributes.address_type == \"Locality\") ||\r\n graphic.attributes.address_type == \"Postal\"\r\n ) {\r\n zoomToAreaGraphic(graphic);\r\n return;\r\n }\r\n if (!view.map || !view.map.basemap || !view.map.basemap.spatialReference) {\r\n if (!view.spatialReference) return;\r\n }\r\n\r\n if (!view.spatialReference) return;\r\n if (!view) return;\r\n if (!graphic) return;\r\n let veiwWKID = view.spatialReference.wkid;\r\n\r\n if (graphic.geometry.spatialReference.wkid !== veiwWKID) {\r\n esriProject.load().then(() => {\r\n let toZoomGeom = esriProject.project(\r\n graphic.geometry,\r\n view.spatialReference\r\n );\r\n // if (\r\n // isMobile &&\r\n // graphic.attributes &&\r\n // graphic.attributes.address_type == \"PointAddress\"\r\n // ) {\r\n // //only for mobile and Polygon geomteries(ie Areas and Address point parcels)\r\n // //IF Mobile zoom to the Center Point (hardcoded zoom level)\r\n // view.goTo(\r\n // {\r\n // target: [toZoomGeom.longitude, toZoomGeom.latitude],\r\n // zoom: 18, //shall be greaterthan 18\r\n // },\r\n // { duration: 2000 }\r\n // );\r\n // }\r\n // else\r\n if (\r\n graphic.attributes &&\r\n graphic.attributes.address_type == \"PointAddress\"\r\n ) {\r\n view.goTo(\r\n {\r\n target: [toZoomGeom.longitude, toZoomGeom.latitude],\r\n zoom: 18, //shall be greaterthan 18\r\n },\r\n { duration: 2000 }\r\n );\r\n }\r\n // else if( graphic.attributes.address_type == \"Locality\" || graphic.attributes.address_type == \"Postal\"){\r\n // toZoomGeom.extent.expand(2)\r\n // view.goTo({\r\n // target : toZoomGeom,\r\n // scale : 8000\r\n // }, { duration: 2000 });\r\n // }\r\n else {\r\n toZoomGeom.extent.expand(5); //HardCoded Expand\r\n view.goTo(toZoomGeom, { duration: 2000 });\r\n //This is for Steets Addresses\r\n // view.goTo(\r\n // {\r\n // target: [toZoomGeom.longitude, toZoomGeom.latitude],\r\n // zoom: 18, //shall be greaterthan 18\r\n // },\r\n // { duration: 2000 }\r\n // );\r\n }\r\n });\r\n } else {\r\n var gGeom = graphic.geometry.clone();\r\n gGeom.extent.expand(5);\r\n view.goTo(gGeom, { duration: 2000 });\r\n }\r\n\r\n return;\r\n\r\n var gGeom = graphic.geometry.clone();\r\n gGeom.extent.expand(6); //Hardcoded expand factor\r\n view.goTo(gGeom, { duration: 2000 });\r\n return;\r\n view.goTo(graphic.geometry, { duration: 2000 }).then(() => {\r\n console.log(\"Zoom Done\");\r\n var gGeom = graphic.geometry.clone();\r\n gGeom.extent.expand(6); //Hardcoded expand factor\r\n view.goTo(gGeom, { duration: 2000 });\r\n });\r\n};\r\n\r\n//not used\r\nconst getAddressPointDetails = (pointId) => {\r\n console.log(\"getAddressPoint Details \");\r\n\r\n let query = new Query();\r\n query.returnGeometry = true;\r\n query.outFields = [\"*\"];\r\n query.where = `AddressPointId='${pointId}'`;\r\n\r\n let queryTask = new QueryTask({\r\n url: _POINT_ADDRESS_SERVICE_URL,\r\n });\r\n queryTask\r\n .execute(query)\r\n .then((resp) => {\r\n console.log(\"Query Task result\");\r\n console.log(resp.toJSON);\r\n })\r\n .catch((err) => {\r\n console.log(err);\r\n });\r\n};\r\n\r\nconst getLabelPointForSinglePolygon = (polygon) => {};\r\n\r\n//called by other components to zoom to the found address graphic\r\nexport const zoomToDisplayedAddressGraphic = () => {\r\n var address_g = mapGraphicLayer.graphics.getItemAt(0);\r\n if (address_g) zoomToSingleGraphic(address_g);\r\n};\r\n\r\nexport const DisplayAddressIssuePointOnMap = (lat, lng) => {\r\n var p4326 = new Point({ longitude: lng, latitude: lat });\r\n let veiwWKID = view.spatialReference.wkid;\r\n esriProject.load().then(() => {\r\n let pView = esriProject.project(\r\n p4326,\r\n new SpatialReference({ wkid: veiwWKID })\r\n );\r\n\r\n view.zoom = 12;\r\n view.goTo(pView);\r\n removeGraphicFromGraphicLayer(\"ADDRESS_ISSUE_GRAPHIC\");\r\n //Remove Previous graphic before adding\r\n const issueGraphic = new Graphic({\r\n id: \"ADDRESS_ISSUE_GRAPHIC\",\r\n geometry: pView,\r\n symbol: const_isssue_address_point,\r\n });\r\n addGraphicToAddressGraphicLayer(issueGraphic);\r\n });\r\n};\r\n\r\nexport const ZoomToLatLng = (lat, lng) => {\r\n var p4326 = new Point({ longitude: lng, latitude: lat });\r\n let veiwWKID = view.spatialReference.wkid;\r\n esriProject.load().then(() => {\r\n let pView = esriProject.project(\r\n p4326,\r\n new SpatialReference({ wkid: veiwWKID })\r\n );\r\n\r\n //let pViewPoint = new Point({x:pView.x,y:pView.y, spatialReference : veiwWKID })\r\n //var gGeom = p32640.geometry\r\n //gGeom.extent.expand(6);\r\n view.zoom = 12;\r\n //view.center = [lat , lng]\r\n view.center = pView;\r\n // view.center = [pView.x, pView.y];\r\n //view.center = [p4326.x, p4326.y]\r\n //view.goTo(p32640)\r\n\r\n // view.goTo({\r\n // center : [p32640.x , p32640.y],\r\n // zoom : 12\r\n // })\r\n });\r\n};\r\n\r\n//remove the below method -- just to try transparency\r\nexport const setRakStreetsTransparency = (value) => {\r\n if (!view.map.layers || view.map.layers.length < 0) return;\r\n var rk_streets = view.map.allLayers.find((lyr) => lyr.id === \"rak_streets\");\r\n var opacity = (100 - value) / 100;\r\n rk_streets.opacity = opacity;\r\n\r\n var rk_streets_parcels = view.map.allLayers.find(\r\n (lyr) => lyr.id === \"rak_streets_parcel\"\r\n );\r\n\r\n rk_streets_parcels.opacity = opacity;\r\n};\r\n\r\n//use id to hide may it be En or Ar Vt\r\nexport const toggleRakStreetsTile = () => {\r\n if (view.scale < 3000) {\r\n return false; //do Nothing\r\n }\r\n\r\n var rk_streets = view.map.allLayers.find(\r\n (lyr) =>\r\n lyr.id === \"rak_streets_tile_en\" || lyr.id === \"rak_streets_tile_ar\"\r\n );\r\n // if (rk_streets) {\r\n // rk_streets.visible = !rk_streets.visible;\r\n // }\r\n\r\n //toggle Area Boundary and Emirate Boundary\r\n if (rk_streets.findSublayerById(8).visible) {\r\n rk_streets.findSublayerById(8).visible = false;\r\n rk_streets.findSublayerById(9).visible = false;\r\n } else {\r\n rk_streets.findSublayerById(8).visible = true;\r\n rk_streets.findSublayerById(9).visible = true;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nexport const toggleRakBoundaryLayers = () => {\r\n if (view.scale < 3000) {\r\n return false; //do Nothing\r\n }\r\n\r\n var rk_streets = view.map.allLayers.find(\r\n (lyr) =>\r\n lyr.id === \"rak_streets_tile_en\" || lyr.id === \"rak_streets_tile_ar\"\r\n );\r\n // if (rk_streets) {\r\n // rk_streets.visible = !rk_streets.visible;\r\n // }\r\n\r\n //toggle Area Boundary and Emirate Boundary\r\n if (rk_streets.findSublayerById(8).visible) {\r\n rk_streets.findSublayerById(8).visible = false;\r\n rk_streets.findSublayerById(9).visible = false;\r\n } else {\r\n rk_streets.findSublayerById(8).visible = true;\r\n rk_streets.findSublayerById(9).visible = true;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nexport const toggleRakBoundaryService = () => {\r\n if (view.scale < 3000) {\r\n return false; //do Nothing\r\n }\r\n\r\n var boundaryLyr = view.map.allLayers.find(\r\n (lyr) =>\r\n lyr.id === \"emirate_boundary_en\" || lyr.id === \"emirate_boundary_ar\"\r\n );\r\n\r\n if (boundaryLyr) {\r\n boundaryLyr.visible = !boundaryLyr.visible;\r\n }\r\n return true;\r\n};\r\n\r\nexport const IsPointInsideRakBoundary_4326 = (point_4326) => {\r\n var mPoint = new Point(point_4326);\r\n var isInsideRak = geometryEngine.contains(Rak_Boundary_Geom_4326, mPoint);\r\n return isInsideRak;\r\n};\r\n","import React, { useRef, useEffect, useState } from \"react\";\r\nimport Basemap from \"@arcgis/core/Basemap\";\r\nimport ImageryLayer from \"@arcgis/core/layers/ImageryLayer\";\r\nimport Map from \"@arcgis/core/Map\";\r\nimport MapImageLayer from \"@arcgis/core/layers/MapImageLayer\";\r\nimport VectorTileLayer from \"@arcgis/core/layers/VectorTileLayer\";\r\nimport TileLayer from \"@arcgis/core/layers/TileLayer\";\r\nimport { connect } from \"react-redux\";\r\nimport FeatureLayer from \"@arcgis/core/layers/FeatureLayer\";\r\nimport { appConifg } from \"../../config/default\";\r\nimport ArcGISMap from \"@arcgis/core/Map\";\r\n//import esriConifg from '@arcgis/core/config'\r\nimport WebMap from \"@arcgis/core/WebMap\";\r\nimport GraphicsLayer from \"@arcgis/core/layers/GraphicsLayer\";\r\nimport Graphic from \"@arcgis/core/Graphic\";\r\nimport Locator from \"@arcgis/core/tasks/Locator\";\r\nimport QueryTask from \"@arcgis/core/tasks/QueryTask\";\r\nimport Query from \"@arcgis/core/tasks/support/Query\";\r\nimport GeometryService from \"@arcgis/core/tasks/GeometryService\";\r\nimport Geometry from \"@arcgis/core/geometry\";\r\nimport * as esriGeometryJsonUtils from \"@arcgis/core/geometry/support/jsonUtils\";\r\nimport * as esriCoreUrlUtils from \"@arcgis/core/core/urlUtils\";\r\nimport Point from \"@arcgis/core/geometry/Point\";\r\nimport TextSymbol from \"@arcgis/core/symbols/TextSymbol\";\r\nimport Polygon from \"@arcgis/core/geometry/Polygon\";\r\nimport Extent from \"@arcgis/core/geometry/Extent\";\r\nimport SpatialReference from \"@arcgis/core/geometry/SpatialReference\";\r\nimport * as esriProject from \"@arcgis/core/geometry/projection\";\r\n//import { load, project as esriProject } from '@arcgis/core/geometry/projection'\r\nimport MapView from \"@arcgis/core/views/MapView\";\r\nimport BaseMapGallery from \"@arcgis/core/widgets/BasemapGallery\";\r\nimport LayerList from \"@arcgis/core/widgets/LayerList\";\r\nimport ScaleBar from \"@arcgis/core/widgets/ScaleBar\";\r\nimport Home from \"@arcgis/core/widgets/Home\";\r\nimport Expand from \"@arcgis/core/widgets/Expand\";\r\nimport Attribution from \"@arcgis/core/widgets/Attribution\";\r\nimport esriConfig from \"@arcgis/core/config.js\";\r\nimport axios from \"axios\";\r\nimport MapSearchbar from \"../MapSearch/MapSearchbar\";\r\nimport DrawerIcons from \"./drawerIcons\";\r\n\r\nimport { searchAddressByParcelId } from \"../MapSearch/MapSearchbar\";\r\nimport MapActions from \"./mapActions\";\r\n// to identify conflict\r\nimport {\r\n generatePortalToken,\r\n getParcelDetails,\r\n getStreetDetails,\r\n getAddressDetials,\r\n getPostalAreaDetails,\r\n getAreaDetails,\r\n getLabelPointOfPolygon,\r\n getAddressDetailsFromParcelId,\r\n} from \"../../serviceClients/addressingClient\";\r\nimport {\r\n addressDetailsMapper,\r\n addressingApiResponseMapper,\r\n} from \"../mappers/addressingMappers\";\r\nimport {\r\n const_address_point_symbol,\r\n const_issue_incorrect_address_point,\r\n const_missing_address_point,\r\n const_damage_sinage_point,\r\n const_missing_sinage_point,\r\n const_isssue_address_point,\r\n const_address_parcel_graphic_symbol,\r\n const_address_area_symbol,\r\n const_address_line_street_symbol,\r\n const_not_found_point_symbol,\r\n const_txt_symobl_for_graphics,\r\n const_mapPnt,\r\n const_wrong_Pin,\r\n} from \"./addressConfigUtils\";\r\n//Other Utilty Methods and Variables\r\n\r\n//Actions import\r\nimport {\r\n fetchAddressDetailsRequest,\r\n fetchAdressDetailsSuccess,\r\n fetchAddressDetailsFailure,\r\n clearAddressDetails,\r\n} from \"../../redux/reducers/addressDetailsReducer\";\r\n\r\nimport {\r\n fetchAddressResultSuccess,\r\n fetchAddressResultFailure,\r\n fetchAddressResultRequest,\r\n clearAddressResult,\r\n} from \"../../redux/actions/addressingResultActions\";\r\nimport { setSidePanelStatusAndResultType } from \"../../redux/actions/mapPanelControlActions\";\r\n\r\nimport { useDispatch } from \"react-redux\";\r\nimport TranspController from \"./TranspController\";\r\nimport MapSwitcher from \"./MapSwitcher\";\r\n//import AddressSearchBar from \"../AddressSearch/AddressSearchBar\";\r\n\r\n/* \r\n Reading from App Configuration */\r\nconst _PROXY_URL = appConifg.ProxyUrl;\r\nconst _AERIAL_IMAGERY = appConifg.Map.AerialImagery;\r\nconst _TOKEN_URL = appConifg.Map.TokenUrl;\r\nconst _PORTAL_USER_NAME = appConifg.Map.PortalUserName;\r\nconst _PORTAL_PASSWORD = appConifg.Map.PortalPassword;\r\nconst _APP_REFERER = appConifg.Map.AppReferer;\r\nconst _LOCATOR_SERVICE_URL = appConifg.Address.LocatorServiceUrl;\r\nconst _PARCEL_SERVICE_URL = appConifg.Address.ParcelServiceUrl;\r\nconst _POINT_ADDRESS_SERVICE_URL = appConifg.Address.PointAddressServiceUrl;\r\nconst _GEOMETRY_SERVICE_URL = appConifg.Address.GeometryServiceUrl;\r\nconst _RAK_STREETS_TILE_En =\r\n \"https://rakgisstg.rak.ae/server/rest/services/Addressing/AddressMapImageHollowV1/MapServer\";\r\nconst _RAK_STREETS_TILE_Ar =\r\n \"https://rakgisstg.rak.ae/server/rest/services/Addressing/AddressMapImageHollowV1/MapServer\";\r\n\r\n//esri Configuration ---\r\nesriConfig.assetsPath = \"./assets\";\r\n\r\n// //esriConfig.request.proxyUrl = _PROXY_URL //not working\r\n// //esriConfig.request.proxyRules = proxy_rules //not working but working with urlUtils\r\nconst proxy_rules = [\r\n {\r\n urlPrefix: _AERIAL_IMAGERY,\r\n proxyUrl: _PROXY_URL,\r\n },\r\n {\r\n urlPrefix: _LOCATOR_SERVICE_URL,\r\n proxyUrl: _PROXY_URL,\r\n },\r\n {\r\n urlPrefix: _POINT_ADDRESS_SERVICE_URL,\r\n proxyUrl: _PROXY_URL,\r\n },\r\n {\r\n urlPrefix: _GEOMETRY_SERVICE_URL,\r\n proxyUrl: _PROXY_URL,\r\n },\r\n];\r\n//Add Proxy_rules to esriConfig\r\n//proxy_rules.forEach(item=> {esriCoreUrlUtils.addProxyRule(item)})\r\nesriCoreUrlUtils.addProxyRule(proxy_rules[0]);\r\nesriCoreUrlUtils.addProxyRule(proxy_rules[1]);\r\nesriCoreUrlUtils.addProxyRule(proxy_rules[2]);\r\nesriCoreUrlUtils.addProxyRule(proxy_rules[3]);\r\nesriCoreUrlUtils.addProxyRule({\r\n urlPrefix: _RAK_STREETS_TILE_En,\r\n proxyUrl: _PROXY_URL,\r\n});\r\n\r\nesriCoreUrlUtils.addProxyRule({\r\n urlPrefix: _RAK_STREETS_TILE_Ar,\r\n proxyUrl: _PROXY_URL,\r\n});\r\n\r\nlet view = null;\r\n\r\n/* For Adding Layers Individually */\r\n/*1 Constrction BaseMap with Aeiral Imagery */\r\nconst ae2019ImgLyr = new ImageryLayer({\r\n url: _AERIAL_IMAGERY,\r\n});\r\n\r\nconst ae2019BaseMap = new Basemap({\r\n baseLayers: [ae2019ImgLyr],\r\n title: \"Aerial Imagery 2019\",\r\n id: \"ae2019\",\r\n});\r\n\r\nlet initialExtent = new Extent({\r\n ymax: 2990773.05734144,\r\n xmin: 6128491.02770031,\r\n xmax: 6370106.22272346,\r\n ymin: 2867470.43283262,\r\n spatialReference: new SpatialReference({ wkid: 102100 }),\r\n});\r\n\r\nconst map = new Map({\r\n basemap: ae2019BaseMap,\r\n //basemap: \"satellite\", //satellite streets\r\n});\r\n\r\nconst homeWidget = new Home({});\r\nconst basemapGallery = new BaseMapGallery({});\r\nconst scaleBar = new ScaleBar({ style: \"line\", unit: \"dual\" });\r\nconst layerList = new LayerList({});\r\nconst layerListExpand = new Expand({\r\n expandIconClass: \"esri-icon-layer-list\",\r\n content: layerList,\r\n});\r\n\r\n//Construction A Graphic Layer\r\nconst mapGraphicLayer = new GraphicsLayer({\r\n id: \"gl_addressing_01\",\r\n title: \"Address_gl\",\r\n listMode: \"hide\",\r\n});\r\n\r\n// const rak_streetsLyrEn = new VectorTileLayer({\r\n// url: _RAK_STREETS_TILE_En,\r\n// id: \"rak_streets_tile_en\",\r\n// visible: true,\r\n// });\r\n\r\n// const rak_streetsLyrAr = new VectorTileLayer({\r\n// url: _RAK_STREETS_TILE_Ar,\r\n// id: \"rak_streets_tile_ar\",\r\n// visible: true,\r\n// });\r\n\r\n// Try Base Map-----Map Service\r\nconst rak_streetsLyrEn = new MapImageLayer({\r\n url: _RAK_STREETS_TILE_En,\r\n id: \"rak_streets_tile_en\",\r\n visible: true,\r\n});\r\n\r\nconst rak_streetsLyrAr = new MapImageLayer({\r\n url: _RAK_STREETS_TILE_Ar,\r\n id: \"rak_streets_tile_ar\",\r\n visible: true,\r\n});\r\n\r\n//create locator\r\n// Find address\r\nconst locatorTask = new Locator({\r\n url: _LOCATOR_SERVICE_URL,\r\n});\r\n\r\nconst geometryServiceTask = new GeometryService({ url: _GEOMETRY_SERVICE_URL });\r\n\r\nconst queryTask = new QueryTask();\r\n// }\r\n\r\nfunction AddressingMapViewOption2(props) {\r\n const dispatch = useDispatch(); //To Dipatch\r\n const mapDiv = useRef(null); //Reference for MapDiv DOM Element\r\n\r\n //Getting Varialbes from Store\r\n const store_address_result = props.addressingResult;\r\n var store_appToken =\r\n props.appSettings &&\r\n props.appSettings.userCredentials &&\r\n props.appSettings.userCredentials.token\r\n ? props.appSettings.userCredentials.token.access_token\r\n : null;\r\n const isLangArActive = props.appSettings.language === \"ar\";\r\n\r\n //Local State\r\n const [\r\n isReverseGeoCodingInProgress,\r\n SetIsReverseGeoCodingInProgress,\r\n ] = useState(false);\r\n //Hook to initiate the Map and add layers\r\n useEffect(() => {\r\n let mounted = true;\r\n\r\n if (mapDiv.current) {\r\n //getAddressPointDetails(\"11141\")\r\n //Adding Map to DOM\r\n view = new MapView({\r\n map: map,\r\n container: mapDiv.current,\r\n extent: initialExtent,\r\n constraints: {\r\n snapToZoom: false,\r\n rotationEnabled: false,\r\n },\r\n });\r\n\r\n homeWidget.view = view;\r\n basemapGallery.view = view;\r\n scaleBar.view = view;\r\n layerList.view = view;\r\n layerListExpand.view = view;\r\n // view.ui.add(basemapGallery,\"bottom-right\")\r\n view.ui.add(homeWidget, \"top-left\");\r\n view.ui.add(scaleBar, \"bottom-left\");\r\n // view.ui.add(layerList,\"top-left\")\r\n // view.ui.add(layerListExpand, \"top-right\");\r\n // view.ui.remove(\"attribution\");\r\n view.popup.autoOpenEnabled = false;\r\n // view.popup.autoCloseEnabled = false\r\n\r\n // view.map.addMany([mapGraphicLayer])\r\n view.map.add(mapGraphicLayer, 1); //Adding at index 1\r\n // if(isLangArActive)\r\n // //view.map.addMany([ rak_streetsLyrEn , mapGraphicLayer]);\r\n // // view.map.addMany([mapGraphicLayer])\r\n // else\r\n // //view.map.addMany([ rak_streetsLyrAr , mapGraphicLayer]);\r\n\r\n //Handle Reverse GeoCode on MapClick\r\n view.on(\"click\", function (event) {\r\n console.log(\"Map Click \", event.mapPoint);\r\n if (mounted) {\r\n clearAddressGraphicsLayer();\r\n //reverseGeoCode(event.mapPoint);\r\n dispatch(\r\n fetchAddressResultRequest(\"Map_Click\", event.mapPoint.toJSON())\r\n );\r\n\r\n //Get 4326 coordinates before reverse geocod and send it to reverse geocode to store it in store\r\n let outSpatialReference = new SpatialReference({ wkid: 4326 });\r\n esriProject.load().then(() => {\r\n let projectPnt4326 = esriProject.project(\r\n event.mapPoint,\r\n outSpatialReference\r\n );\r\n\r\n reverseGeoCode2(event.mapPoint, projectPnt4326);\r\n });\r\n }\r\n });\r\n view.when(() => {\r\n view.zoom = 9;\r\n });\r\n }\r\n return () => {\r\n //eg: remove handlers etc.here cleanUp code\r\n mounted = false;\r\n };\r\n }, []);\r\n\r\n //hook to handle Language Change --and change base Vector tile\r\n useEffect(() => {\r\n if (!props.appSettings.language) return;\r\n if (!view || !view.map.layers || view.map.layers.length < 0) return;\r\n var rk_streets = view.map.allLayers.find(\r\n (lyr) =>\r\n lyr.id === \"rak_streets_tile_en\" || lyr.id === \"rak_streets_tile_ar\"\r\n );\r\n if (rk_streets) {\r\n view.map.remove(rk_streets);\r\n }\r\n if (props.appSettings.language === \"ar\") {\r\n view.map.add(rak_streetsLyrAr, 0);\r\n } else if (props.appSettings.language === \"en\") {\r\n view.map.add(rak_streetsLyrEn, 0);\r\n }\r\n }, [props.appSettings.language]);\r\n\r\n // useEffect(()=>{\r\n // store_appToken = (props.appSettings && props.appSettings.userCredentials && props.appSettings.userCredentials.token) ? props.appSettings.userCredentials.token.access_token : null\r\n // },[props.appSettings.userCredentials])\r\n\r\n //Hook to Handle Change in AddressResult\r\n useEffect(() => {\r\n let mounted = true;\r\n if (\r\n store_address_result.candidates &&\r\n store_address_result.candidates.length < 1\r\n ) {\r\n console.log(\"No Address Result Found\");\r\n //clear old results\r\n clearAddressGraphicsLayer();\r\n return;\r\n } else if (\r\n store_address_result.candidates[0].isParcelSearch ||\r\n store_address_result.candidates[0].isReverseGeocode\r\n ) {\r\n clearAddressGraphicsLayer();\r\n //is parcel search so no need to get details again all the details are avaliable so just dspatch\r\n if (mounted)\r\n props.fetchedAddressDetailsSuccessfully(\r\n store_address_result.candidates[0]\r\n );\r\n } else {\r\n clearAddressGraphicsLayer();\r\n let address_candiate = store_address_result.candidates[0];\r\n if (mounted) displayAddressGraphic(address_candiate);\r\n }\r\n\r\n return () => {\r\n mounted = false;\r\n };\r\n }, [store_address_result]);\r\n\r\n //hook to handle Change in AddressDetails -- PointGraphic and draw it on Map --- Not Used For Now\r\n useEffect(() => {\r\n let mounted = true;\r\n\r\n var address_data = props.addressDetails.data; //from store\r\n if (!address_data || address_data.length < 1) return;\r\n if (props.addressDetails.loading) return;\r\n\r\n let lat = address_data.latitude;\r\n let lng = address_data.longitude;\r\n let positionX = address_data.positionX;\r\n let positionY = address_data.positionY;\r\n if (mounted) {\r\n // clearAddressGraphicsLayer() //clear old one before adding now\r\n displayPointAddressGraphic2(\r\n { x: positionX, y: positionY },\r\n address_data.parcelGeometry\r\n );\r\n }\r\n\r\n return () => {\r\n mounted = false;\r\n };\r\n }, [props.addressDetails.data]);\r\n\r\n const reverseGeoCode2 = (mapPoint, clickPoint4326) => {\r\n // if(!props.isAddressPanelOpen) props.openAddressPanel()\r\n triggerAddressPanelOpen();\r\n clearMapSearchText(); //Bad way of clearing MapSearchBar text --TODO change to store based model (react way)\r\n SetIsReverseGeoCodingInProgress(true);\r\n const params = { location: mapPoint };\r\n dispatch(props.clearAddressDetails());\r\n //dispatch(fetchAddressResultRequest(\"Map_Click\", mapPoint.toJSON()));\r\n dispatch(fetchAddressResultRequest(\"Map_Click\", clickPoint4326.toJSON())); //Again Dispatching to change map point to 4326\r\n locatorTask\r\n .locationToAddress(params)\r\n .then((resp) => {\r\n const parcel_address = resp.address; //here we will ge the parcel id\r\n // dispatch(fetchAddressResultSuccess([resp]));\r\n getAndDisplayAddressDetailsFromParcelId(parcel_address, mapPoint);\r\n })\r\n .catch((err) => {\r\n const errMsg = err.message;\r\n if (errMsg == \"Cannot perform query. Invalid query parameters.\") {\r\n //means no matching address found\r\n dispatch(fetchAddressResultSuccess([]));\r\n noResultFromReverseGeoCodeAction(mapPoint);\r\n } else {\r\n dispatch(fetchAddressResultFailure(errMsg));\r\n }\r\n })\r\n .then(() => {\r\n SetIsReverseGeoCodingInProgress(false);\r\n });\r\n };\r\n\r\n const getAndDisplayAddressDetailsFromParcelId = (\r\n parcel_address,\r\n mapPoint\r\n ) => {\r\n const [promise, source] = getAddressDetailsFromParcelId(\r\n parcel_address,\r\n props.appSettings.userCredentials.token.access_token\r\n ); // store_appToken\r\n promise\r\n .then((resp) => {\r\n console.log(resp.data);\r\n const {\r\n isSuccess,\r\n isPartial,\r\n message,\r\n respData,\r\n successObj,\r\n failedObj,\r\n } = addressingApiResponseMapper(resp.data);\r\n if (isSuccess) {\r\n var addressData = addressDetailsMapper(respData);\r\n var dipatchData = { ...addressData, isReverseGeocode: true };\r\n // props.fetchedAddressDetailsSuccessfully([dipatchData]);\r\n dispatch(fetchAddressResultSuccess([dipatchData]));\r\n } else {\r\n // props.faiedTofetchAddressDetails(message);\r\n dispatch(fetchAddressResultSuccess([]));\r\n noResultFromReverseGeoCodeAction(mapPoint);\r\n }\r\n })\r\n .catch((err) => {\r\n //setSuggestionsState({isLoading:false, options :[] , query : search_text ,disbled : false })\r\n console.log(\"Coudnt Fetch Address Detail From Parcel ID \", err.message);\r\n const errMsg = err.message;\r\n //props.faiedTofetchAddressDetails(err.message);\r\n dispatch(fetchAddressResultFailure(errMsg));\r\n });\r\n };\r\n\r\n const reverseGeoCode = (mapPoint) => {\r\n //this method is not used anymore as the logic is changed to reveresGeoCode agains Parcels Locator\r\n //if(!props.isAddressPanelOpen) props.openAddressPanel()\r\n triggerAddressPanelOpen();\r\n if (isReverseGeoCodingInProgress) {\r\n // alert(\"In Progress wait\");\r\n return;\r\n } else {\r\n SetIsReverseGeoCodingInProgress(true);\r\n }\r\n const params = {\r\n location: mapPoint,\r\n //,locationType :\"Point Address\"\r\n };\r\n dispatch(props.clearAddressDetails());\r\n //dispatch(props.clearAddressResult())\r\n dispatch(fetchAddressResultRequest(\"Map_Click\", mapPoint.toJSON()));\r\n\r\n locatorTask\r\n .locationToAddress(params)\r\n .then((resp) => {\r\n console.log(JSON.stringify(resp));\r\n const r_address = resp.address;\r\n const r_address_attributes = resp.attributes;\r\n const address_type = r_address_attributes.Addr_type;\r\n console.log(\"Found Address of Type \", address_type);\r\n if (address_type === \"PointAddress\") {\r\n //only show point address in reverse GeoCode\r\n dispatch(fetchAddressResultSuccess([resp]));\r\n } else {\r\n dispatch(fetchAddressResultSuccess([])); //dispatching empty --as NonPoint Address is found is reterieved\r\n noResultFromReverseGeoCodeAction(mapPoint);\r\n }\r\n\r\n SetIsReverseGeoCodingInProgress(false);\r\n })\r\n .catch((err) => {\r\n console.log(err.message);\r\n const errMsg = err.message;\r\n if (errMsg == \"Cannot perform query. Invalid query parameters.\") {\r\n //means no matching address found\r\n dispatch(fetchAddressResultSuccess([]));\r\n noResultFromReverseGeoCodeAction(mapPoint);\r\n } else {\r\n dispatch(fetchAddressResultFailure(errMsg));\r\n }\r\n SetIsReverseGeoCodingInProgress(false);\r\n });\r\n };\r\n\r\n const noResultFromReverseGeoCodeAction = (mapPoint) => {\r\n //Draw the map point graphic and may be show a popup no result found at the current location report issue\r\n const addressNotFound = new Graphic({\r\n geometry: mapPoint,\r\n symbol: const_not_found_point_symbol,\r\n // symbol : const_mapPnt\r\n });\r\n addGraphicToAddressGraphicLayer(addressNotFound);\r\n };\r\n\r\n const getAndDrawAddressPointDetails = (address) => {\r\n //Make Sure to Clear old Graphic\r\n //clearAddressGraphicsLayer()\r\n var street_number = address.attributes.StreetId.toString();\r\n var point_id = address.attributes.AddressPointId.toString();\r\n var area_id = address.attributes.AreaId.toString();\r\n\r\n props.initiatingAddressDetailsFetch(props.addressingResult.fetchType); //passing fetchType from AddrssResult store\r\n\r\n let [promise, source] = getAddressDetials(\r\n point_id,\r\n street_number,\r\n area_id,\r\n store_appToken\r\n );\r\n promise\r\n .then((resp) => {\r\n const {\r\n isSuccess,\r\n isPartial,\r\n message,\r\n respData,\r\n successObj,\r\n failedObj,\r\n } = addressingApiResponseMapper(resp.data);\r\n\r\n if (isSuccess) {\r\n props.fetchedAddressDetailsSuccessfully(\r\n addressDetailsMapper(respData)\r\n );\r\n //TODO - drwas Point address and Parcel outline on map -- may be using useEffect hook\r\n } else props.faiedTofetchAddressDetails(message);\r\n })\r\n .catch((err) => {\r\n console.log(\"Failed to get the AddressPoint Details \", err.message);\r\n props.faiedTofetchAddressDetails(err.message);\r\n });\r\n };\r\n\r\n const displayAddressGraphic = (address) => {\r\n var address_type = address.attributes.Addr_type;\r\n switch (address_type) {\r\n case \"PointAddress\":\r\n // drawAddressPointGraphic(address)\r\n console.log(\"Point Address \");\r\n //displayPointAddressGraphic(address) //This is wroking , but commented for now to get details from AddressServiceAPI\r\n //Since AddressPoint is found - Get the Address Point details for the AddressAPI service and\r\n getAndDrawAddressPointDetails(address);\r\n break;\r\n case \"StreetName\":\r\n props.clearAddressDetails();\r\n displayStreetAddressGraphic(address);\r\n break;\r\n case \"Locality\":\r\n props.clearAddressDetails();\r\n displayAreaGraphic(address);\r\n break;\r\n case \"Postal\":\r\n props.clearAddressDetails();\r\n displayPostalAreaGraphic(address);\r\n break;\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n const [mapSearchValueDummy, setMapSearchValueDummy] = useState(1);\r\n const clearMapSearchText = () => {\r\n setMapSearchValueDummy((value) => ++value);\r\n };\r\n\r\n const triggerAddressPanelOpen = () => {\r\n //TODO check the logic here--trigger only if the panel is closed\r\n //if(!(props.mapPanelSetting.isSidePanelOpen && props.mapPanelSetting.resultType === \"address\")){\r\n props.openAddressPanel();\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\nconst mapStateToProps = (state) => {\r\n return {\r\n addressingResult: state.addressingResult,\r\n addressDetails: state.addressDetails,\r\n //isAddressPanelOpen : (state.mapPanelSetting.isSidePanelOpen && state.mapPanelSetting.resultType === \"address\"),\r\n mapPanelSetting: state.mapPanelSetting,\r\n appSettings: state.settings,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => {\r\n return {\r\n initiatingAddressDetailsFetch: (fetch_type) => {\r\n return dispatch(fetchAddressDetailsRequest(fetch_type));\r\n },\r\n fetchedAddressDetailsSuccessfully: (data) => {\r\n return dispatch(fetchAdressDetailsSuccess(data));\r\n },\r\n faiedTofetchAddressDetails: (error) => {\r\n return dispatch(fetchAddressDetailsFailure(error));\r\n },\r\n clearAddressDetails: () => {\r\n return dispatch(clearAddressDetails());\r\n },\r\n openAddressPanel: () => {\r\n return dispatch(setSidePanelStatusAndResultType(\"true\", \"address\")); //to display the sidePanel\r\n },\r\n };\r\n};\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(AddressingMapViewOption2);\r\n\r\nconst displayPointAddressGraphic2 = (address_location, parcel_geometry) => {\r\n //here get the 32640 to avoid Projecting to 4326\r\n\r\n if (parcel_geometry) {\r\n //Parcel Geometry now\r\n var geometry_poly_rings = parcel_geometry.rings;\r\n var pracel_polygon_json = {\r\n type: \"polygon\",\r\n rings: geometry_poly_rings,\r\n spatialReference: { wkid: 32640 },\r\n };\r\n var parcel_graphic = new Graphic({\r\n geometry: pracel_polygon_json,\r\n symbol: const_address_parcel_graphic_symbol,\r\n id: \"address_graphic\",\r\n });\r\n clearAddressGraphicsLayer(); //Clear the old one before adding now\r\n /* To Hide parcel boundary (as required for zoom made symbol transparent) -- 2nd August 2021 */\r\n addGraphicToAddressGraphicLayer(parcel_graphic);\r\n zoomToSingleGraphic(parcel_graphic);\r\n }\r\n\r\n //Plot the point on map\r\n\r\n const address_point_32640 = new Point({\r\n x: address_location.x,\r\n y: address_location.y,\r\n spatialReference: { wkid: 32640 },\r\n });\r\n\r\n const addressGraphic = new Graphic({\r\n geometry: address_point_32640,\r\n symbol: const_address_point_symbol,\r\n });\r\n addGraphicToAddressGraphicLayer(addressGraphic);\r\n\r\n //Not required any more below conversion as we have the xy from the webservice response\r\n return;\r\n const address_point_4326 = new Point({\r\n //Create a point in 4326\r\n x: address_location.x,\r\n y: address_location.y,\r\n spatialReference: { wkid: 4326 },\r\n });\r\n\r\n let outSpatialReference = new SpatialReference({ wkid: 32640 });\r\n esriProject.load().then(() => {\r\n let projectPnts = esriProject.project(\r\n [address_point_4326],\r\n outSpatialReference\r\n );\r\n projectPnts.forEach((pnt) => {\r\n console.log(\"After Prj \", pnt.x, pnt.y);\r\n const addressGraphic = new Graphic({\r\n geometry: projectPnts[0],\r\n symbol: const_address_point_symbol,\r\n });\r\n addGraphicToAddressGraphicLayer(addressGraphic);\r\n });\r\n });\r\n};\r\n\r\n//not used to remove\r\n// const MapXYToLatLng = (x, y)=>{\r\n// const point32640 = new Point({\r\n// x: x,\r\n// y :y,\r\n// spatialReference :{ wkid : 32640}\r\n// })\r\n// let outSpatialReference = new SpatialReference({ wkid: 4326 });\r\n// esriProject.load().then(()=>{\r\n// let projectPnts = esriProject.project([point32640],outSpatialReference);\r\n// })\r\n// }\r\n\r\nconst displayStreetAddressGraphic = (address) => {\r\n var street_number = address.attributes.StreetId;\r\n const [promise, source] = getStreetDetails(street_number);\r\n promise\r\n .then((resp) => {\r\n console.log(\"Street Details \" + resp.data);\r\n var respData = resp.data;\r\n if (respData.features && respData.features.length > 0) {\r\n var f_paths = respData.features[0].geometry.paths;\r\n var pfeatures = {\r\n type: \"polyline\",\r\n paths: f_paths,\r\n spatialReference: { wkid: 32640 },\r\n };\r\n var pGraphic = new Graphic({\r\n geometry: pfeatures,\r\n symbol: const_address_line_street_symbol,\r\n });\r\n addGraphicToAddressGraphicLayer(pGraphic);\r\n zoomToAreaGraphic(pGraphic);\r\n } else {\r\n console.log(\"No Street Features Returned \");\r\n }\r\n })\r\n .catch((err) => {\r\n console.log(\"Error while gettig street \", err.message);\r\n });\r\n};\r\n\r\nconst displayAreaGraphic = (address) => {\r\n var areaId = address.attributes.AreaId;\r\n const [promise, source] = getAreaDetails(areaId);\r\n promise\r\n .then((resp) => {\r\n var respData = resp.data;\r\n if (respData.features && respData.features.length > 0) {\r\n var fAttributes = respData.features[0].attributes;\r\n var g_rings = respData.features[0].geometry.rings;\r\n var pfeature = {\r\n type: \"polygon\",\r\n rings: g_rings,\r\n spatialReference: { wkid: 32640 },\r\n };\r\n var pGraphic = new Graphic({\r\n geometry: pfeature,\r\n symbol: const_address_area_symbol,\r\n });\r\n addGraphicToAddressGraphicLayer(pGraphic);\r\n zoomToAreaGraphic(pGraphic);\r\n\r\n //For Label Area\r\n geometryServiceTask\r\n .labelPoints([new Polygon(pfeature)])\r\n .then((labelPoint) => {\r\n var txtSymbol = new TextSymbol(const_txt_symobl_for_graphics);\r\n txtSymbol.text = fAttributes.NameEn;\r\n var labelPointGraphic = new Graphic(labelPoint[0], txtSymbol);\r\n mapGraphicLayer.graphics.add(labelPointGraphic);\r\n })\r\n .catch((err) => {\r\n console.log(err.message);\r\n });\r\n\r\n //Use Geometry Service - label Point to find the label point\r\n // const [promise2, source2] = getLabelPointOfPolygon(new Polygon(pfeature));\r\n // promise2\r\n // .then((resp) => {\r\n // var respData = resp.data;\r\n // if (respData.labelPoints && respData.labelPoints.length > 0) {\r\n // let lblPt = respData.labelPoints[0];\r\n // var txtSymbol = new TextSymbol(const_txt_symobl_for_graphics);\r\n // txtSymbol.text = \"Sample Ext For now\";\r\n // var labelPointGraphic = new Graphic(\r\n // new Point({\r\n // x: lblPt.x,\r\n // y: lblPt.y,\r\n // spatialReference: { wkid: 32640 },\r\n // }),\r\n // txtSymbol\r\n // );\r\n // mapGraphicLayer.graphics.add(labelPointGraphic);\r\n // }\r\n // })\r\n // .catch((err) => {\r\n // console.log(err.message);\r\n // });\r\n } else {\r\n console.log(\"No Area found\");\r\n }\r\n })\r\n .catch((err) => {\r\n console.log(\"Error while getting Area\");\r\n });\r\n};\r\n\r\nconst displayPostalAreaGraphic = (address) => {\r\n var emPostCode = address.attributes.Postal;\r\n var farea = address.attributes.City;\r\n const [promise, source] = getPostalAreaDetails(emPostCode);\r\n promise\r\n .then((resp) => {\r\n var respData = resp.data;\r\n if (respData.features && respData.features.length > 0) {\r\n var fAttributes = respData.features[0].attributes;\r\n var g_rings = respData.features[0].geometry.rings;\r\n var pfeature = {\r\n type: \"polygon\",\r\n rings: g_rings,\r\n spatialReference: { wkid: 32640 },\r\n };\r\n var pGraphic = new Graphic({\r\n geometry: pfeature,\r\n symbol: const_address_parcel_graphic_symbol,\r\n });\r\n addGraphicToAddressGraphicLayer(pGraphic);\r\n zoomToAreaGraphic(pGraphic);\r\n\r\n //for label Postal Area\r\n geometryServiceTask\r\n .labelPoints([new Polygon(pfeature)])\r\n .then((labelPoint) => {\r\n var txtSymbol = new TextSymbol(const_txt_symobl_for_graphics);\r\n txtSymbol.text = fAttributes.EmPostCode + \"\\n\" + farea;\r\n var labelPointGraphic = new Graphic(labelPoint[0], txtSymbol);\r\n mapGraphicLayer.graphics.add(labelPointGraphic);\r\n })\r\n .catch((err) => {\r\n console.log(err.message);\r\n });\r\n } else {\r\n console.log(\"No Postal Area found\");\r\n }\r\n })\r\n .catch((err) => {\r\n console.log(\"Error while getting Postal Area\");\r\n });\r\n};\r\n\r\nconst addGraphicToAddressGraphicLayer = (graphic) => {\r\n mapGraphicLayer.graphics.add(graphic);\r\n};\r\n\r\nconst clearAddressGraphicsLayer = () => {\r\n mapGraphicLayer.removeAll();\r\n};\r\n\r\nconst removeGraphicFromGraphicLayer = (graphicId) => {\r\n let toRemoveGraphic = mapGraphicLayer.graphics.find((g) => {\r\n return g.id == graphicId;\r\n });\r\n if (toRemoveGraphic) mapGraphicLayer.graphics.remove(toRemoveGraphic);\r\n};\r\n\r\n//zoom to Area and Postal area --setting the expand value to 4 for better zoom level\r\nconst zoomToAreaGraphic = (graphic) => {\r\n if (!view) return;\r\n if (!graphic) return;\r\n if (!view.map || !view.map.basemap || !view.map.basemap.spatialReference) {\r\n if (!view.spatialReference) return;\r\n }\r\n if (!view.spatialReference) return;\r\n //let viewWKID = view.spatialReference.wkid\r\n if (esriProject.isLoaded()) {\r\n let toZoomGeom = esriProject.project(\r\n graphic.geometry,\r\n view.spatialReference\r\n );\r\n toZoomGeom.extent.expand(4); //HardCoded Expand\r\n view.goTo(toZoomGeom, { duration: 2000 });\r\n } else {\r\n esriProject.load().then(() => {\r\n let toZoomGeom = esriProject.project(\r\n graphic.geometry,\r\n view.spatialReference\r\n );\r\n toZoomGeom.extent.expand(4); //HardCoded Expand\r\n view.goTo(toZoomGeom, { duration: 2000 });\r\n });\r\n }\r\n // var gGeom = graphic.geometry.clone();\r\n // gGeom.extent.expand(4); //Hardcoded expand factor\r\n // view.goTo(gGeom, { duration: 2000 });\r\n // return;\r\n};\r\n\r\nconst zoomToSingleGraphic = (graphic) => {\r\n if (!view.map || !view.map.basemap || !view.map.basemap.spatialReference) {\r\n if (!view.spatialReference) return;\r\n }\r\n\r\n if (!view.spatialReference) return;\r\n if (!view) return;\r\n if (!graphic) return;\r\n let veiwWKID = view.spatialReference.wkid;\r\n\r\n if (graphic.geometry.spatialReference.wkid !== veiwWKID) {\r\n esriProject.load().then(() => {\r\n let toZoomGeom = esriProject.project(\r\n graphic.geometry,\r\n view.spatialReference\r\n );\r\n toZoomGeom.extent.expand(5); //HardCoded Expand\r\n view.goTo(toZoomGeom, { duration: 2000 });\r\n });\r\n }\r\n\r\n return;\r\n\r\n var gGeom = graphic.geometry.clone();\r\n gGeom.extent.expand(6); //Hardcoded expand factor\r\n view.goTo(gGeom, { duration: 2000 });\r\n return;\r\n view.goTo(graphic.geometry, { duration: 2000 }).then(() => {\r\n console.log(\"Zoom Done\");\r\n var gGeom = graphic.geometry.clone();\r\n gGeom.extent.expand(6); //Hardcoded expand factor\r\n view.goTo(gGeom, { duration: 2000 });\r\n });\r\n};\r\n\r\n//not used\r\nconst getAddressPointDetails = (pointId) => {\r\n console.log(\"getAddressPoint Details \");\r\n\r\n let query = new Query();\r\n query.returnGeometry = true;\r\n query.outFields = [\"*\"];\r\n query.where = `AddressPointId='${pointId}'`;\r\n\r\n let queryTask = new QueryTask({\r\n url: _POINT_ADDRESS_SERVICE_URL,\r\n });\r\n queryTask\r\n .execute(query)\r\n .then((resp) => {\r\n console.log(\"Query Task result\");\r\n console.log(resp.toJSON);\r\n })\r\n .catch((err) => {\r\n console.log(err);\r\n });\r\n};\r\n\r\nconst getLabelPointForSinglePolygon = (polygon) => {};\r\n\r\n//called by other components to zoom to the found address graphic\r\nexport const zoomToDisplayedAddressGraphic = () => {\r\n console.log(\" Will zoom to Address Graphic \");\r\n var address_g = mapGraphicLayer.graphics.getItemAt(0);\r\n if (address_g) zoomToSingleGraphic(address_g);\r\n};\r\n\r\nexport const DisplayAddressIssuePointOnMap = (lat, lng) => {\r\n var p4326 = new Point({ longitude: lng, latitude: lat });\r\n let veiwWKID = view.spatialReference.wkid;\r\n esriProject.load().then(() => {\r\n let pView = esriProject.project(\r\n p4326,\r\n new SpatialReference({ wkid: veiwWKID })\r\n );\r\n\r\n view.zoom = 12;\r\n view.goTo(pView);\r\n removeGraphicFromGraphicLayer(\"ADDRESS_ISSUE_GRAPHIC\");\r\n //Remove Previous graphic before adding\r\n const issueGraphic = new Graphic({\r\n id: \"ADDRESS_ISSUE_GRAPHIC\",\r\n geometry: pView,\r\n symbol: const_isssue_address_point,\r\n });\r\n addGraphicToAddressGraphicLayer(issueGraphic);\r\n });\r\n};\r\n\r\nexport const ZoomToLatLng = (lat, lng) => {\r\n debugger;\r\n var p4326 = new Point({ longitude: lng, latitude: lat });\r\n let veiwWKID = view.spatialReference.wkid;\r\n esriProject.load().then(() => {\r\n let pView = esriProject.project(\r\n p4326,\r\n new SpatialReference({ wkid: veiwWKID })\r\n );\r\n\r\n //let pViewPoint = new Point({x:pView.x,y:pView.y, spatialReference : veiwWKID })\r\n //var gGeom = p32640.geometry\r\n //gGeom.extent.expand(6);\r\n view.zoom = 12;\r\n //view.center = [lat , lng]\r\n view.center = pView;\r\n // view.center = [pView.x, pView.y];\r\n //view.center = [p4326.x, p4326.y]\r\n //view.goTo(p32640)\r\n\r\n // view.goTo({\r\n // center : [p32640.x , p32640.y],\r\n // zoom : 12\r\n // })\r\n });\r\n};\r\n\r\n//remove the below method -- just to try transparency\r\nexport const setRakStreetsTransparency = (value) => {\r\n if (!view.map.layers || view.map.layers.length < 0) return;\r\n var rk_streets = view.map.allLayers.find((lyr) => lyr.id === \"rak_streets\");\r\n var opacity = (100 - value) / 100;\r\n rk_streets.opacity = opacity;\r\n\r\n var rk_streets_parcels = view.map.allLayers.find(\r\n (lyr) => lyr.id === \"rak_streets_parcel\"\r\n );\r\n\r\n rk_streets_parcels.opacity = opacity;\r\n};\r\n\r\n//use id to hide may it be En or Ar Vt\r\nexport const toggleRakStreetsTile = () => {\r\n var rk_streets = view.map.allLayers.find(\r\n (lyr) =>\r\n lyr.id === \"rak_streets_tile_en\" || lyr.id === \"rak_streets_tile_ar\"\r\n );\r\n if (rk_streets) {\r\n rk_streets.visible = !rk_streets.visible;\r\n }\r\n};\r\n","import React, { useRef, useEffect, useState } from \"react\";\r\nimport Basemap from \"@arcgis/core/Basemap\";\r\nimport ImageryLayer from \"@arcgis/core/layers/ImageryLayer\";\r\nimport Map from \"@arcgis/core/Map\";\r\nimport MapImageLayer from \"@arcgis/core/layers/MapImageLayer\";\r\nimport VectorTileLayer from \"@arcgis/core/layers/VectorTileLayer\";\r\nimport TileLayer from \"@arcgis/core/layers/TileLayer\";\r\nimport { connect } from \"react-redux\";\r\nimport FeatureLayer from \"@arcgis/core/layers/FeatureLayer\";\r\nimport { appConifg } from \"../../config/default\";\r\nimport ArcGISMap from \"@arcgis/core/Map\";\r\n//import esriConifg from '@arcgis/core/config'\r\nimport WebMap from \"@arcgis/core/WebMap\";\r\nimport GraphicsLayer from \"@arcgis/core/layers/GraphicsLayer\";\r\nimport Graphic from \"@arcgis/core/Graphic\";\r\nimport Locator from \"@arcgis/core/tasks/Locator\";\r\nimport QueryTask from \"@arcgis/core/tasks/QueryTask\";\r\nimport Query from \"@arcgis/core/tasks/support/Query\";\r\nimport GeometryService from \"@arcgis/core/tasks/GeometryService\";\r\nimport Geometry from \"@arcgis/core/geometry\";\r\nimport * as esriGeometryJsonUtils from \"@arcgis/core/geometry/support/jsonUtils\";\r\nimport * as esriCoreUrlUtils from \"@arcgis/core/core/urlUtils\";\r\nimport Point from \"@arcgis/core/geometry/Point\";\r\nimport TextSymbol from \"@arcgis/core/symbols/TextSymbol\";\r\nimport Polygon from \"@arcgis/core/geometry/Polygon\";\r\nimport Extent from \"@arcgis/core/geometry/Extent\";\r\nimport SpatialReference from \"@arcgis/core/geometry/SpatialReference\";\r\nimport * as esriProject from \"@arcgis/core/geometry/projection\";\r\n//import { load, project as esriProject } from '@arcgis/core/geometry/projection'\r\nimport MapView from \"@arcgis/core/views/MapView\";\r\nimport BaseMapGallery from \"@arcgis/core/widgets/BasemapGallery\";\r\nimport LayerList from \"@arcgis/core/widgets/LayerList\";\r\nimport ScaleBar from \"@arcgis/core/widgets/ScaleBar\";\r\nimport Home from \"@arcgis/core/widgets/Home\";\r\nimport Expand from \"@arcgis/core/widgets/Expand\";\r\nimport Attribution from \"@arcgis/core/widgets/Attribution\";\r\nimport esriConfig from \"@arcgis/core/config.js\";\r\nimport axios from \"axios\";\r\nimport MapSearchbar from \"../MapSearch/MapSearchbar\";\r\nimport DrawerIcons from \"./drawerIcons\";\r\n\r\nimport { searchAddressByParcelId } from \"../MapSearch/MapSearchbar\";\r\nimport MapActions from \"./mapActions\";\r\n// to identify conflict\r\nimport {\r\n generatePortalToken,\r\n getParcelDetails,\r\n getStreetDetails,\r\n getAddressDetials,\r\n getPostalAreaDetails,\r\n getAreaDetails,\r\n getLabelPointOfPolygon,\r\n getAddressDetailsFromParcelId,\r\n} from \"../../serviceClients/addressingClient\";\r\nimport {\r\n addressDetailsMapper,\r\n addressingApiResponseMapper,\r\n} from \"../mappers/addressingMappers\";\r\nimport {\r\n const_address_point_symbol,\r\n const_issue_incorrect_address_point,\r\n const_missing_address_point,\r\n const_damage_sinage_point,\r\n const_missing_sinage_point,\r\n const_isssue_address_point,\r\n const_address_parcel_graphic_symbol,\r\n const_address_area_symbol,\r\n const_address_line_street_symbol,\r\n const_not_found_point_symbol,\r\n const_txt_symobl_for_graphics,\r\n const_mapPnt,\r\n const_wrong_Pin,\r\n} from \"./addressConfigUtils\";\r\n//Other Utilty Methods and Variables\r\n\r\n//Actions import\r\nimport {\r\n fetchAddressDetailsRequest,\r\n fetchAdressDetailsSuccess,\r\n fetchAddressDetailsFailure,\r\n clearAddressDetails,\r\n} from \"../../redux/reducers/addressDetailsReducer\";\r\n\r\nimport {\r\n fetchAddressResultSuccess,\r\n fetchAddressResultFailure,\r\n fetchAddressResultRequest,\r\n clearAddressResult,\r\n} from \"../../redux/actions/addressingResultActions\";\r\nimport { setSidePanelStatusAndResultType } from \"../../redux/actions/mapPanelControlActions\";\r\n\r\nimport { useDispatch } from \"react-redux\";\r\nimport TranspController from \"./TranspController\";\r\nimport MapSwitcher from \"./MapSwitcher\";\r\n//import AddressSearchBar from \"../AddressSearch/AddressSearchBar\";\r\n\r\n/* \r\n Reading from App Configuration */\r\nconst _PROXY_URL = appConifg.ProxyUrl;\r\nconst _AERIAL_IMAGERY = appConifg.Map.AerialImagery;\r\nconst _TOKEN_URL = appConifg.Map.TokenUrl;\r\nconst _PORTAL_USER_NAME = appConifg.Map.PortalUserName;\r\nconst _PORTAL_PASSWORD = appConifg.Map.PortalPassword;\r\nconst _APP_REFERER = appConifg.Map.AppReferer;\r\nconst _LOCATOR_SERVICE_URL = appConifg.Address.LocatorServiceUrl;\r\nconst _PARCEL_SERVICE_URL = appConifg.Address.ParcelServiceUrl;\r\nconst _POINT_ADDRESS_SERVICE_URL = appConifg.Address.PointAddressServiceUrl;\r\nconst _GEOMETRY_SERVICE_URL = appConifg.Address.GeometryServiceUrl;\r\nconst _RAK_STREETS_TILE_En =\r\n \"https://rakgisstg.rak.ae/server/rest/services/Addressing/AddressMapImageHollowV2/MapServer\";\r\nconst _RAK_STREETS_TILE_Ar =\r\n \"https://rakgisstg.rak.ae/server/rest/services/Addressing/AddressMapImageHollowV2/MapServer\";\r\n\r\n//esri Configuration ---\r\nesriConfig.assetsPath = \"./assets\";\r\n\r\n// //esriConfig.request.proxyUrl = _PROXY_URL //not working\r\n// //esriConfig.request.proxyRules = proxy_rules //not working but working with urlUtils\r\nconst proxy_rules = [\r\n {\r\n urlPrefix: _AERIAL_IMAGERY,\r\n proxyUrl: _PROXY_URL,\r\n },\r\n {\r\n urlPrefix: _LOCATOR_SERVICE_URL,\r\n proxyUrl: _PROXY_URL,\r\n },\r\n {\r\n urlPrefix: _POINT_ADDRESS_SERVICE_URL,\r\n proxyUrl: _PROXY_URL,\r\n },\r\n {\r\n urlPrefix: _GEOMETRY_SERVICE_URL,\r\n proxyUrl: _PROXY_URL,\r\n },\r\n];\r\n//Add Proxy_rules to esriConfig\r\n//proxy_rules.forEach(item=> {esriCoreUrlUtils.addProxyRule(item)})\r\nesriCoreUrlUtils.addProxyRule(proxy_rules[0]);\r\nesriCoreUrlUtils.addProxyRule(proxy_rules[1]);\r\nesriCoreUrlUtils.addProxyRule(proxy_rules[2]);\r\nesriCoreUrlUtils.addProxyRule(proxy_rules[3]);\r\nesriCoreUrlUtils.addProxyRule({\r\n urlPrefix: _RAK_STREETS_TILE_En,\r\n proxyUrl: _PROXY_URL,\r\n});\r\n\r\nesriCoreUrlUtils.addProxyRule({\r\n urlPrefix: _RAK_STREETS_TILE_Ar,\r\n proxyUrl: _PROXY_URL,\r\n});\r\n\r\nlet view = null;\r\n\r\n/* For Adding Layers Individually */\r\n/*1 Constrction BaseMap with Aeiral Imagery */\r\nconst ae2019ImgLyr = new ImageryLayer({\r\n url: _AERIAL_IMAGERY,\r\n});\r\n\r\nconst ae2019BaseMap = new Basemap({\r\n baseLayers: [ae2019ImgLyr],\r\n title: \"Aerial Imagery 2019\",\r\n id: \"ae2019\",\r\n});\r\n\r\nlet initialExtent = new Extent({\r\n ymax: 2990773.05734144,\r\n xmin: 6128491.02770031,\r\n xmax: 6370106.22272346,\r\n ymin: 2867470.43283262,\r\n spatialReference: new SpatialReference({ wkid: 102100 }),\r\n});\r\n\r\nconst map = new Map({\r\n basemap: ae2019BaseMap,\r\n //basemap: \"satellite\", //satellite streets\r\n});\r\n\r\nconst homeWidget = new Home({});\r\nconst basemapGallery = new BaseMapGallery({});\r\nconst scaleBar = new ScaleBar({ style: \"line\", unit: \"dual\" });\r\nconst layerList = new LayerList({});\r\nconst layerListExpand = new Expand({\r\n expandIconClass: \"esri-icon-layer-list\",\r\n content: layerList,\r\n});\r\n\r\n//Construction A Graphic Layer\r\nconst mapGraphicLayer = new GraphicsLayer({\r\n id: \"gl_addressing_01\",\r\n title: \"Address_gl\",\r\n listMode: \"hide\",\r\n});\r\n\r\n// const rak_streetsLyrEn = new VectorTileLayer({\r\n// url: _RAK_STREETS_TILE_En,\r\n// id: \"rak_streets_tile_en\",\r\n// visible: true,\r\n// });\r\n\r\n// const rak_streetsLyrAr = new VectorTileLayer({\r\n// url: _RAK_STREETS_TILE_Ar,\r\n// id: \"rak_streets_tile_ar\",\r\n// visible: true,\r\n// });\r\n\r\n//Try Base Map-----Map Service\r\nconst rak_streetsLyrEn = new MapImageLayer({\r\n url: _RAK_STREETS_TILE_En,\r\n id: \"rak_streets_tile_en\",\r\n visible: true,\r\n});\r\n\r\nconst rak_streetsLyrAr = new MapImageLayer({\r\n url: _RAK_STREETS_TILE_Ar,\r\n id: \"rak_streets_tile_ar\",\r\n visible: true,\r\n});\r\n\r\n//create locator\r\n// Find address\r\nconst locatorTask = new Locator({\r\n url: _LOCATOR_SERVICE_URL,\r\n});\r\n\r\nconst geometryServiceTask = new GeometryService({ url: _GEOMETRY_SERVICE_URL });\r\n\r\nconst queryTask = new QueryTask();\r\n// }\r\n\r\nfunction AddressingMapViewOption3(props) {\r\n const dispatch = useDispatch(); //To Dipatch\r\n const mapDiv = useRef(null); //Reference for MapDiv DOM Element\r\n\r\n //Getting Varialbes from Store\r\n const store_address_result = props.addressingResult;\r\n var store_appToken =\r\n props.appSettings &&\r\n props.appSettings.userCredentials &&\r\n props.appSettings.userCredentials.token\r\n ? props.appSettings.userCredentials.token.access_token\r\n : null;\r\n const isLangArActive = props.appSettings.language === \"ar\";\r\n\r\n //Local State\r\n const [\r\n isReverseGeoCodingInProgress,\r\n SetIsReverseGeoCodingInProgress,\r\n ] = useState(false);\r\n //Hook to initiate the Map and add layers\r\n useEffect(() => {\r\n let mounted = true;\r\n\r\n if (mapDiv.current) {\r\n //getAddressPointDetails(\"11141\")\r\n //Adding Map to DOM\r\n view = new MapView({\r\n map: map,\r\n container: mapDiv.current,\r\n extent: initialExtent,\r\n constraints: {\r\n snapToZoom: false,\r\n rotationEnabled: false,\r\n },\r\n });\r\n\r\n homeWidget.view = view;\r\n basemapGallery.view = view;\r\n scaleBar.view = view;\r\n layerList.view = view;\r\n layerListExpand.view = view;\r\n // view.ui.add(basemapGallery,\"bottom-right\")\r\n view.ui.add(homeWidget, \"top-left\");\r\n view.ui.add(scaleBar, \"bottom-left\");\r\n // view.ui.add(layerList,\"top-left\")\r\n // view.ui.add(layerListExpand, \"top-right\");\r\n // view.ui.remove(\"attribution\");\r\n view.popup.autoOpenEnabled = false;\r\n // view.popup.autoCloseEnabled = false\r\n\r\n // view.map.addMany([mapGraphicLayer])\r\n view.map.add(mapGraphicLayer, 1); //Adding at index 1\r\n // if(isLangArActive)\r\n // //view.map.addMany([ rak_streetsLyrEn , mapGraphicLayer]);\r\n // // view.map.addMany([mapGraphicLayer])\r\n // else\r\n // //view.map.addMany([ rak_streetsLyrAr , mapGraphicLayer]);\r\n\r\n //Handle Reverse GeoCode on MapClick\r\n view.on(\"click\", function (event) {\r\n console.log(\"Map Click \", event.mapPoint);\r\n if (mounted) {\r\n clearAddressGraphicsLayer();\r\n //reverseGeoCode(event.mapPoint);\r\n dispatch(\r\n fetchAddressResultRequest(\"Map_Click\", event.mapPoint.toJSON())\r\n );\r\n\r\n //Get 4326 coordinates before reverse geocod and send it to reverse geocode to store it in store\r\n let outSpatialReference = new SpatialReference({ wkid: 4326 });\r\n esriProject.load().then(() => {\r\n let projectPnt4326 = esriProject.project(\r\n event.mapPoint,\r\n outSpatialReference\r\n );\r\n\r\n reverseGeoCode2(event.mapPoint, projectPnt4326);\r\n });\r\n }\r\n });\r\n view.when(() => {\r\n view.zoom = 9;\r\n });\r\n }\r\n return () => {\r\n //eg: remove handlers etc.here cleanUp code\r\n mounted = false;\r\n };\r\n }, []);\r\n\r\n //hook to handle Language Change --and change base Vector tile\r\n useEffect(() => {\r\n if (!props.appSettings.language) return;\r\n if (!view || !view.map.layers || view.map.layers.length < 0) return;\r\n var rk_streets = view.map.allLayers.find(\r\n (lyr) =>\r\n lyr.id === \"rak_streets_tile_en\" || lyr.id === \"rak_streets_tile_ar\"\r\n );\r\n if (rk_streets) {\r\n view.map.remove(rk_streets);\r\n }\r\n if (props.appSettings.language === \"ar\") {\r\n view.map.add(rak_streetsLyrAr, 0);\r\n } else if (props.appSettings.language === \"en\") {\r\n view.map.add(rak_streetsLyrEn, 0);\r\n }\r\n }, [props.appSettings.language]);\r\n\r\n // useEffect(()=>{\r\n // store_appToken = (props.appSettings && props.appSettings.userCredentials && props.appSettings.userCredentials.token) ? props.appSettings.userCredentials.token.access_token : null\r\n // },[props.appSettings.userCredentials])\r\n\r\n //Hook to Handle Change in AddressResult\r\n useEffect(() => {\r\n let mounted = true;\r\n if (\r\n store_address_result.candidates &&\r\n store_address_result.candidates.length < 1\r\n ) {\r\n console.log(\"No Address Result Found\");\r\n //clear old results\r\n clearAddressGraphicsLayer();\r\n return;\r\n } else if (\r\n store_address_result.candidates[0].isParcelSearch ||\r\n store_address_result.candidates[0].isReverseGeocode\r\n ) {\r\n clearAddressGraphicsLayer();\r\n //is parcel search so no need to get details again all the details are avaliable so just dspatch\r\n if (mounted)\r\n props.fetchedAddressDetailsSuccessfully(\r\n store_address_result.candidates[0]\r\n );\r\n } else {\r\n clearAddressGraphicsLayer();\r\n let address_candiate = store_address_result.candidates[0];\r\n if (mounted) displayAddressGraphic(address_candiate);\r\n }\r\n\r\n return () => {\r\n mounted = false;\r\n };\r\n }, [store_address_result]);\r\n\r\n //hook to handle Change in AddressDetails -- PointGraphic and draw it on Map --- Not Used For Now\r\n useEffect(() => {\r\n let mounted = true;\r\n\r\n var address_data = props.addressDetails.data; //from store\r\n if (!address_data || address_data.length < 1) return;\r\n if (props.addressDetails.loading) return;\r\n\r\n let lat = address_data.latitude;\r\n let lng = address_data.longitude;\r\n let positionX = address_data.positionX;\r\n let positionY = address_data.positionY;\r\n if (mounted) {\r\n // clearAddressGraphicsLayer() //clear old one before adding now\r\n displayPointAddressGraphic2(\r\n { x: positionX, y: positionY },\r\n address_data.parcelGeometry\r\n );\r\n }\r\n\r\n return () => {\r\n mounted = false;\r\n };\r\n }, [props.addressDetails.data]);\r\n\r\n const reverseGeoCode2 = (mapPoint, clickPoint4326) => {\r\n // if(!props.isAddressPanelOpen) props.openAddressPanel()\r\n triggerAddressPanelOpen();\r\n clearMapSearchText(); //Bad way of clearing MapSearchBar text --TODO change to store based model (react way)\r\n SetIsReverseGeoCodingInProgress(true);\r\n const params = { location: mapPoint };\r\n dispatch(props.clearAddressDetails());\r\n //dispatch(fetchAddressResultRequest(\"Map_Click\", mapPoint.toJSON()));\r\n dispatch(fetchAddressResultRequest(\"Map_Click\", clickPoint4326.toJSON())); //Again Dispatching to change map point to 4326\r\n locatorTask\r\n .locationToAddress(params)\r\n .then((resp) => {\r\n const parcel_address = resp.address; //here we will ge the parcel id\r\n // dispatch(fetchAddressResultSuccess([resp]));\r\n getAndDisplayAddressDetailsFromParcelId(parcel_address, mapPoint);\r\n })\r\n .catch((err) => {\r\n const errMsg = err.message;\r\n if (errMsg == \"Cannot perform query. Invalid query parameters.\") {\r\n //means no matching address found\r\n dispatch(fetchAddressResultSuccess([]));\r\n noResultFromReverseGeoCodeAction(mapPoint);\r\n } else {\r\n dispatch(fetchAddressResultFailure(errMsg));\r\n }\r\n })\r\n .then(() => {\r\n SetIsReverseGeoCodingInProgress(false);\r\n });\r\n };\r\n\r\n const getAndDisplayAddressDetailsFromParcelId = (\r\n parcel_address,\r\n mapPoint\r\n ) => {\r\n const [promise, source] = getAddressDetailsFromParcelId(\r\n parcel_address,\r\n props.appSettings.userCredentials.token.access_token\r\n ); // store_appToken\r\n promise\r\n .then((resp) => {\r\n console.log(resp.data);\r\n const {\r\n isSuccess,\r\n isPartial,\r\n message,\r\n respData,\r\n successObj,\r\n failedObj,\r\n } = addressingApiResponseMapper(resp.data);\r\n if (isSuccess) {\r\n var addressData = addressDetailsMapper(respData);\r\n var dipatchData = { ...addressData, isReverseGeocode: true };\r\n // props.fetchedAddressDetailsSuccessfully([dipatchData]);\r\n dispatch(fetchAddressResultSuccess([dipatchData]));\r\n } else {\r\n // props.faiedTofetchAddressDetails(message);\r\n dispatch(fetchAddressResultSuccess([]));\r\n noResultFromReverseGeoCodeAction(mapPoint);\r\n }\r\n })\r\n .catch((err) => {\r\n //setSuggestionsState({isLoading:false, options :[] , query : search_text ,disbled : false })\r\n console.log(\"Coudnt Fetch Address Detail From Parcel ID \", err.message);\r\n const errMsg = err.message;\r\n //props.faiedTofetchAddressDetails(err.message);\r\n dispatch(fetchAddressResultFailure(errMsg));\r\n });\r\n };\r\n\r\n const reverseGeoCode = (mapPoint) => {\r\n //this method is not used anymore as the logic is changed to reveresGeoCode agains Parcels Locator\r\n //if(!props.isAddressPanelOpen) props.openAddressPanel()\r\n triggerAddressPanelOpen();\r\n if (isReverseGeoCodingInProgress) {\r\n // alert(\"In Progress wait\");\r\n return;\r\n } else {\r\n SetIsReverseGeoCodingInProgress(true);\r\n }\r\n const params = {\r\n location: mapPoint,\r\n //,locationType :\"Point Address\"\r\n };\r\n dispatch(props.clearAddressDetails());\r\n //dispatch(props.clearAddressResult())\r\n dispatch(fetchAddressResultRequest(\"Map_Click\", mapPoint.toJSON()));\r\n\r\n locatorTask\r\n .locationToAddress(params)\r\n .then((resp) => {\r\n console.log(JSON.stringify(resp));\r\n const r_address = resp.address;\r\n const r_address_attributes = resp.attributes;\r\n const address_type = r_address_attributes.Addr_type;\r\n console.log(\"Found Address of Type \", address_type);\r\n if (address_type === \"PointAddress\") {\r\n //only show point address in reverse GeoCode\r\n dispatch(fetchAddressResultSuccess([resp]));\r\n } else {\r\n dispatch(fetchAddressResultSuccess([])); //dispatching empty --as NonPoint Address is found is reterieved\r\n noResultFromReverseGeoCodeAction(mapPoint);\r\n }\r\n\r\n SetIsReverseGeoCodingInProgress(false);\r\n })\r\n .catch((err) => {\r\n console.log(err.message);\r\n const errMsg = err.message;\r\n if (errMsg == \"Cannot perform query. Invalid query parameters.\") {\r\n //means no matching address found\r\n dispatch(fetchAddressResultSuccess([]));\r\n noResultFromReverseGeoCodeAction(mapPoint);\r\n } else {\r\n dispatch(fetchAddressResultFailure(errMsg));\r\n }\r\n SetIsReverseGeoCodingInProgress(false);\r\n });\r\n };\r\n\r\n const noResultFromReverseGeoCodeAction = (mapPoint) => {\r\n //Draw the map point graphic and may be show a popup no result found at the current location report issue\r\n const addressNotFound = new Graphic({\r\n geometry: mapPoint,\r\n symbol: const_not_found_point_symbol,\r\n // symbol : const_mapPnt\r\n });\r\n addGraphicToAddressGraphicLayer(addressNotFound);\r\n };\r\n\r\n const getAndDrawAddressPointDetails = (address) => {\r\n //Make Sure to Clear old Graphic\r\n //clearAddressGraphicsLayer()\r\n var street_number = address.attributes.StreetId.toString();\r\n var point_id = address.attributes.AddressPointId.toString();\r\n var area_id = address.attributes.AreaId.toString();\r\n\r\n props.initiatingAddressDetailsFetch(props.addressingResult.fetchType); //passing fetchType from AddrssResult store\r\n\r\n let [promise, source] = getAddressDetials(\r\n point_id,\r\n street_number,\r\n area_id,\r\n store_appToken\r\n );\r\n promise\r\n .then((resp) => {\r\n const {\r\n isSuccess,\r\n isPartial,\r\n message,\r\n respData,\r\n successObj,\r\n failedObj,\r\n } = addressingApiResponseMapper(resp.data);\r\n\r\n if (isSuccess) {\r\n props.fetchedAddressDetailsSuccessfully(\r\n addressDetailsMapper(respData)\r\n );\r\n //TODO - drwas Point address and Parcel outline on map -- may be using useEffect hook\r\n } else props.faiedTofetchAddressDetails(message);\r\n })\r\n .catch((err) => {\r\n console.log(\"Failed to get the AddressPoint Details \", err.message);\r\n props.faiedTofetchAddressDetails(err.message);\r\n });\r\n };\r\n\r\n const displayAddressGraphic = (address) => {\r\n var address_type = address.attributes.Addr_type;\r\n switch (address_type) {\r\n case \"PointAddress\":\r\n // drawAddressPointGraphic(address)\r\n console.log(\"Point Address \");\r\n //displayPointAddressGraphic(address) //This is wroking , but commented for now to get details from AddressServiceAPI\r\n //Since AddressPoint is found - Get the Address Point details for the AddressAPI service and\r\n getAndDrawAddressPointDetails(address);\r\n break;\r\n case \"StreetName\":\r\n props.clearAddressDetails();\r\n displayStreetAddressGraphic(address);\r\n break;\r\n case \"Locality\":\r\n props.clearAddressDetails();\r\n displayAreaGraphic(address);\r\n break;\r\n case \"Postal\":\r\n props.clearAddressDetails();\r\n displayPostalAreaGraphic(address);\r\n break;\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n const [mapSearchValueDummy, setMapSearchValueDummy] = useState(1);\r\n const clearMapSearchText = () => {\r\n setMapSearchValueDummy((value) => ++value);\r\n };\r\n\r\n const triggerAddressPanelOpen = () => {\r\n //TODO check the logic here--trigger only if the panel is closed\r\n //if(!(props.mapPanelSetting.isSidePanelOpen && props.mapPanelSetting.resultType === \"address\")){\r\n props.openAddressPanel();\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\nconst mapStateToProps = (state) => {\r\n return {\r\n addressingResult: state.addressingResult,\r\n addressDetails: state.addressDetails,\r\n //isAddressPanelOpen : (state.mapPanelSetting.isSidePanelOpen && state.mapPanelSetting.resultType === \"address\"),\r\n mapPanelSetting: state.mapPanelSetting,\r\n appSettings: state.settings,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => {\r\n return {\r\n initiatingAddressDetailsFetch: (fetch_type) => {\r\n return dispatch(fetchAddressDetailsRequest(fetch_type));\r\n },\r\n fetchedAddressDetailsSuccessfully: (data) => {\r\n return dispatch(fetchAdressDetailsSuccess(data));\r\n },\r\n faiedTofetchAddressDetails: (error) => {\r\n return dispatch(fetchAddressDetailsFailure(error));\r\n },\r\n clearAddressDetails: () => {\r\n return dispatch(clearAddressDetails());\r\n },\r\n openAddressPanel: () => {\r\n return dispatch(setSidePanelStatusAndResultType(\"true\", \"address\")); //to display the sidePanel\r\n },\r\n };\r\n};\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(AddressingMapViewOption3);\r\n\r\nconst displayPointAddressGraphic2 = (address_location, parcel_geometry) => {\r\n //here get the 32640 to avoid Projecting to 4326\r\n\r\n if (parcel_geometry) {\r\n //Parcel Geometry now\r\n var geometry_poly_rings = parcel_geometry.rings;\r\n var pracel_polygon_json = {\r\n type: \"polygon\",\r\n rings: geometry_poly_rings,\r\n spatialReference: { wkid: 32640 },\r\n };\r\n var parcel_graphic = new Graphic({\r\n geometry: pracel_polygon_json,\r\n symbol: const_address_parcel_graphic_symbol,\r\n id: \"address_graphic\",\r\n });\r\n clearAddressGraphicsLayer(); //Clear the old one before adding now\r\n /* To Hide parcel boundary (as required for zoom made symbol transparent) -- 2nd August 2021 */\r\n addGraphicToAddressGraphicLayer(parcel_graphic);\r\n zoomToSingleGraphic(parcel_graphic);\r\n }\r\n\r\n //Plot the point on map\r\n\r\n const address_point_32640 = new Point({\r\n x: address_location.x,\r\n y: address_location.y,\r\n spatialReference: { wkid: 32640 },\r\n });\r\n\r\n const addressGraphic = new Graphic({\r\n geometry: address_point_32640,\r\n symbol: const_address_point_symbol,\r\n });\r\n addGraphicToAddressGraphicLayer(addressGraphic);\r\n\r\n //Not required any more below conversion as we have the xy from the webservice response\r\n return;\r\n const address_point_4326 = new Point({\r\n //Create a point in 4326\r\n x: address_location.x,\r\n y: address_location.y,\r\n spatialReference: { wkid: 4326 },\r\n });\r\n\r\n let outSpatialReference = new SpatialReference({ wkid: 32640 });\r\n esriProject.load().then(() => {\r\n let projectPnts = esriProject.project(\r\n [address_point_4326],\r\n outSpatialReference\r\n );\r\n projectPnts.forEach((pnt) => {\r\n console.log(\"After Prj \", pnt.x, pnt.y);\r\n const addressGraphic = new Graphic({\r\n geometry: projectPnts[0],\r\n symbol: const_address_point_symbol,\r\n });\r\n addGraphicToAddressGraphicLayer(addressGraphic);\r\n });\r\n });\r\n};\r\n\r\n//not used to remove\r\n// const MapXYToLatLng = (x, y)=>{\r\n// const point32640 = new Point({\r\n// x: x,\r\n// y :y,\r\n// spatialReference :{ wkid : 32640}\r\n// })\r\n// let outSpatialReference = new SpatialReference({ wkid: 4326 });\r\n// esriProject.load().then(()=>{\r\n// let projectPnts = esriProject.project([point32640],outSpatialReference);\r\n// })\r\n// }\r\n\r\nconst displayStreetAddressGraphic = (address) => {\r\n var street_number = address.attributes.StreetId;\r\n const [promise, source] = getStreetDetails(street_number);\r\n promise\r\n .then((resp) => {\r\n console.log(\"Street Details \" + resp.data);\r\n var respData = resp.data;\r\n if (respData.features && respData.features.length > 0) {\r\n var f_paths = respData.features[0].geometry.paths;\r\n var pfeatures = {\r\n type: \"polyline\",\r\n paths: f_paths,\r\n spatialReference: { wkid: 32640 },\r\n };\r\n var pGraphic = new Graphic({\r\n geometry: pfeatures,\r\n symbol: const_address_line_street_symbol,\r\n });\r\n addGraphicToAddressGraphicLayer(pGraphic);\r\n zoomToAreaGraphic(pGraphic);\r\n } else {\r\n console.log(\"No Street Features Returned \");\r\n }\r\n })\r\n .catch((err) => {\r\n console.log(\"Error while gettig street \", err.message);\r\n });\r\n};\r\n\r\nconst displayAreaGraphic = (address) => {\r\n var areaId = address.attributes.AreaId;\r\n const [promise, source] = getAreaDetails(areaId);\r\n promise\r\n .then((resp) => {\r\n var respData = resp.data;\r\n if (respData.features && respData.features.length > 0) {\r\n var fAttributes = respData.features[0].attributes;\r\n var g_rings = respData.features[0].geometry.rings;\r\n var pfeature = {\r\n type: \"polygon\",\r\n rings: g_rings,\r\n spatialReference: { wkid: 32640 },\r\n };\r\n var pGraphic = new Graphic({\r\n geometry: pfeature,\r\n symbol: const_address_area_symbol,\r\n });\r\n addGraphicToAddressGraphicLayer(pGraphic);\r\n zoomToAreaGraphic(pGraphic);\r\n\r\n //For Label Area\r\n geometryServiceTask\r\n .labelPoints([new Polygon(pfeature)])\r\n .then((labelPoint) => {\r\n var txtSymbol = new TextSymbol(const_txt_symobl_for_graphics);\r\n txtSymbol.text = fAttributes.NameEn;\r\n var labelPointGraphic = new Graphic(labelPoint[0], txtSymbol);\r\n mapGraphicLayer.graphics.add(labelPointGraphic);\r\n })\r\n .catch((err) => {\r\n console.log(err.message);\r\n });\r\n\r\n //Use Geometry Service - label Point to find the label point\r\n // const [promise2, source2] = getLabelPointOfPolygon(new Polygon(pfeature));\r\n // promise2\r\n // .then((resp) => {\r\n // var respData = resp.data;\r\n // if (respData.labelPoints && respData.labelPoints.length > 0) {\r\n // let lblPt = respData.labelPoints[0];\r\n // var txtSymbol = new TextSymbol(const_txt_symobl_for_graphics);\r\n // txtSymbol.text = \"Sample Ext For now\";\r\n // var labelPointGraphic = new Graphic(\r\n // new Point({\r\n // x: lblPt.x,\r\n // y: lblPt.y,\r\n // spatialReference: { wkid: 32640 },\r\n // }),\r\n // txtSymbol\r\n // );\r\n // mapGraphicLayer.graphics.add(labelPointGraphic);\r\n // }\r\n // })\r\n // .catch((err) => {\r\n // console.log(err.message);\r\n // });\r\n } else {\r\n console.log(\"No Area found\");\r\n }\r\n })\r\n .catch((err) => {\r\n console.log(\"Error while getting Area\");\r\n });\r\n};\r\n\r\nconst displayPostalAreaGraphic = (address) => {\r\n var emPostCode = address.attributes.Postal;\r\n var farea = address.attributes.City;\r\n const [promise, source] = getPostalAreaDetails(emPostCode);\r\n promise\r\n .then((resp) => {\r\n var respData = resp.data;\r\n if (respData.features && respData.features.length > 0) {\r\n var fAttributes = respData.features[0].attributes;\r\n var g_rings = respData.features[0].geometry.rings;\r\n var pfeature = {\r\n type: \"polygon\",\r\n rings: g_rings,\r\n spatialReference: { wkid: 32640 },\r\n };\r\n var pGraphic = new Graphic({\r\n geometry: pfeature,\r\n symbol: const_address_parcel_graphic_symbol,\r\n });\r\n addGraphicToAddressGraphicLayer(pGraphic);\r\n zoomToAreaGraphic(pGraphic);\r\n\r\n //for label Postal Area\r\n geometryServiceTask\r\n .labelPoints([new Polygon(pfeature)])\r\n .then((labelPoint) => {\r\n var txtSymbol = new TextSymbol(const_txt_symobl_for_graphics);\r\n txtSymbol.text = fAttributes.EmPostCode + \"\\n\" + farea;\r\n var labelPointGraphic = new Graphic(labelPoint[0], txtSymbol);\r\n mapGraphicLayer.graphics.add(labelPointGraphic);\r\n })\r\n .catch((err) => {\r\n console.log(err.message);\r\n });\r\n } else {\r\n console.log(\"No Postal Area found\");\r\n }\r\n })\r\n .catch((err) => {\r\n console.log(\"Error while getting Postal Area\");\r\n });\r\n};\r\n\r\nconst addGraphicToAddressGraphicLayer = (graphic) => {\r\n mapGraphicLayer.graphics.add(graphic);\r\n};\r\n\r\nconst clearAddressGraphicsLayer = () => {\r\n mapGraphicLayer.removeAll();\r\n};\r\n\r\nconst removeGraphicFromGraphicLayer = (graphicId) => {\r\n let toRemoveGraphic = mapGraphicLayer.graphics.find((g) => {\r\n return g.id == graphicId;\r\n });\r\n if (toRemoveGraphic) mapGraphicLayer.graphics.remove(toRemoveGraphic);\r\n};\r\n\r\n//zoom to Area and Postal area --setting the expand value to 4 for better zoom level\r\nconst zoomToAreaGraphic = (graphic) => {\r\n if (!view) return;\r\n if (!graphic) return;\r\n if (!view.map || !view.map.basemap || !view.map.basemap.spatialReference) {\r\n if (!view.spatialReference) return;\r\n }\r\n if (!view.spatialReference) return;\r\n //let viewWKID = view.spatialReference.wkid\r\n if (esriProject.isLoaded()) {\r\n let toZoomGeom = esriProject.project(\r\n graphic.geometry,\r\n view.spatialReference\r\n );\r\n toZoomGeom.extent.expand(4); //HardCoded Expand\r\n view.goTo(toZoomGeom, { duration: 2000 });\r\n } else {\r\n esriProject.load().then(() => {\r\n let toZoomGeom = esriProject.project(\r\n graphic.geometry,\r\n view.spatialReference\r\n );\r\n toZoomGeom.extent.expand(4); //HardCoded Expand\r\n view.goTo(toZoomGeom, { duration: 2000 });\r\n });\r\n }\r\n // var gGeom = graphic.geometry.clone();\r\n // gGeom.extent.expand(4); //Hardcoded expand factor\r\n // view.goTo(gGeom, { duration: 2000 });\r\n // return;\r\n};\r\n\r\nconst zoomToSingleGraphic = (graphic) => {\r\n if (!view.map || !view.map.basemap || !view.map.basemap.spatialReference) {\r\n if (!view.spatialReference) return;\r\n }\r\n\r\n if (!view.spatialReference) return;\r\n if (!view) return;\r\n if (!graphic) return;\r\n let veiwWKID = view.spatialReference.wkid;\r\n\r\n if (graphic.geometry.spatialReference.wkid !== veiwWKID) {\r\n esriProject.load().then(() => {\r\n let toZoomGeom = esriProject.project(\r\n graphic.geometry,\r\n view.spatialReference\r\n );\r\n toZoomGeom.extent.expand(5); //HardCoded Expand\r\n view.goTo(toZoomGeom, { duration: 2000 });\r\n });\r\n }\r\n\r\n return;\r\n\r\n var gGeom = graphic.geometry.clone();\r\n gGeom.extent.expand(6); //Hardcoded expand factor\r\n view.goTo(gGeom, { duration: 2000 });\r\n return;\r\n view.goTo(graphic.geometry, { duration: 2000 }).then(() => {\r\n console.log(\"Zoom Done\");\r\n var gGeom = graphic.geometry.clone();\r\n gGeom.extent.expand(6); //Hardcoded expand factor\r\n view.goTo(gGeom, { duration: 2000 });\r\n });\r\n};\r\n\r\n//not used\r\nconst getAddressPointDetails = (pointId) => {\r\n console.log(\"getAddressPoint Details \");\r\n\r\n let query = new Query();\r\n query.returnGeometry = true;\r\n query.outFields = [\"*\"];\r\n query.where = `AddressPointId='${pointId}'`;\r\n\r\n let queryTask = new QueryTask({\r\n url: _POINT_ADDRESS_SERVICE_URL,\r\n });\r\n queryTask\r\n .execute(query)\r\n .then((resp) => {\r\n console.log(\"Query Task result\");\r\n console.log(resp.toJSON);\r\n })\r\n .catch((err) => {\r\n console.log(err);\r\n });\r\n};\r\n\r\nconst getLabelPointForSinglePolygon = (polygon) => {};\r\n\r\n//called by other components to zoom to the found address graphic\r\nexport const zoomToDisplayedAddressGraphic = () => {\r\n console.log(\" Will zoom to Address Graphic \");\r\n var address_g = mapGraphicLayer.graphics.getItemAt(0);\r\n if (address_g) zoomToSingleGraphic(address_g);\r\n};\r\n\r\nexport const DisplayAddressIssuePointOnMap = (lat, lng) => {\r\n var p4326 = new Point({ longitude: lng, latitude: lat });\r\n let veiwWKID = view.spatialReference.wkid;\r\n esriProject.load().then(() => {\r\n let pView = esriProject.project(\r\n p4326,\r\n new SpatialReference({ wkid: veiwWKID })\r\n );\r\n\r\n view.zoom = 12;\r\n view.goTo(pView);\r\n removeGraphicFromGraphicLayer(\"ADDRESS_ISSUE_GRAPHIC\");\r\n //Remove Previous graphic before adding\r\n const issueGraphic = new Graphic({\r\n id: \"ADDRESS_ISSUE_GRAPHIC\",\r\n geometry: pView,\r\n symbol: const_isssue_address_point,\r\n });\r\n addGraphicToAddressGraphicLayer(issueGraphic);\r\n });\r\n};\r\n\r\nexport const ZoomToLatLng = (lat, lng) => {\r\n var p4326 = new Point({ longitude: lng, latitude: lat });\r\n let veiwWKID = view.spatialReference.wkid;\r\n esriProject.load().then(() => {\r\n let pView = esriProject.project(\r\n p4326,\r\n new SpatialReference({ wkid: veiwWKID })\r\n );\r\n\r\n //let pViewPoint = new Point({x:pView.x,y:pView.y, spatialReference : veiwWKID })\r\n //var gGeom = p32640.geometry\r\n //gGeom.extent.expand(6);\r\n view.zoom = 12;\r\n //view.center = [lat , lng]\r\n view.center = pView;\r\n // view.center = [pView.x, pView.y];\r\n //view.center = [p4326.x, p4326.y]\r\n //view.goTo(p32640)\r\n\r\n // view.goTo({\r\n // center : [p32640.x , p32640.y],\r\n // zoom : 12\r\n // })\r\n });\r\n};\r\n\r\n//remove the below method -- just to try transparency\r\nexport const setRakStreetsTransparency = (value) => {\r\n if (!view.map.layers || view.map.layers.length < 0) return;\r\n var rk_streets = view.map.allLayers.find((lyr) => lyr.id === \"rak_streets\");\r\n var opacity = (100 - value) / 100;\r\n rk_streets.opacity = opacity;\r\n\r\n var rk_streets_parcels = view.map.allLayers.find(\r\n (lyr) => lyr.id === \"rak_streets_parcel\"\r\n );\r\n\r\n rk_streets_parcels.opacity = opacity;\r\n};\r\n\r\n//use id to hide may it be En or Ar Vt\r\nexport const toggleRakStreetsTile = () => {\r\n var rk_streets = view.map.allLayers.find(\r\n (lyr) =>\r\n lyr.id === \"rak_streets_tile_en\" || lyr.id === \"rak_streets_tile_ar\"\r\n );\r\n if (rk_streets) {\r\n rk_streets.visible = !rk_streets.visible;\r\n }\r\n};\r\n","import React, { useEffect, useState } from \"react\";\r\n\r\nimport { connect } from \"react-redux\";\r\nimport appConifg from \"../../config/default.json\";\r\nimport Chip from \"@material-ui/core/Chip\";\r\nimport PlaylistAddCheckIcon from \"@material-ui/icons/PlaylistAddCheck\";\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport VisibilityIcon from \"@material-ui/icons/Visibility\";\r\nimport ViewHeadlineIcon from \"@material-ui/icons/ViewHeadline\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport {\r\n CircularProgress,\r\n Typography,\r\n StepIcon,\r\n IconButton,\r\n Grid,\r\n Tooltip,\r\n} from \"@material-ui/core\";\r\nimport RefreshRoundedIcon from \"@material-ui/icons/RefreshRounded\";\r\nimport {\r\n addressingApiResponseMapper,\r\n addressIssuesMapper,\r\n acmApiPaginatedResponseMapper,\r\n} from \"../mappers/addressingMappers\";\r\nimport { getAddressIssuesPaginated } from \"../../serviceClients/addressingClient\";\r\nimport toast, { Toaster } from \"react-hot-toast\";\r\nimport Link from \"@material-ui/core/Link\";\r\nimport {\r\n ZoomToLatLng,\r\n DisplayAddressIssuePointOnMap,\r\n} from \"../map/AddressingMapView\";\r\nimport { useTranslation } from \"react-i18next\";\r\nconst useStyles = makeStyles((theme) => ({\r\n iconButton: {},\r\n iconContainer: {\r\n marginRight: \"24px\",\r\n },\r\n}));\r\n\r\nconst initialstate = {\r\n refresh: false,\r\n isLoading: false,\r\n page: 0,\r\n pagination: true,\r\n count: 999,\r\n // pageSize: 3,\r\n rowsPerPage: 5,\r\n sortOrder: { name: \"reportedDate\", direction: \"desc\" },\r\n // fitler: '',\r\n data: [[\"Loading Data...\"]],\r\n IssueStauses: [],\r\n IssueTypes: [],\r\n};\r\n\r\nconst ISSUE_STATUS_OPEN_ID = appConifg.IssueInbox.OpenIssueTypeId; //HARDCODE database value\r\nconst ISSUE_STATUS_CLOSED_ID = appConifg.IssueInbox.ClosedIssueTypeId;\r\n\r\nfunction IssueInboxGrid(props) {\r\n const classes = useStyles();\r\n const { t, i18n } = useTranslation(\"issueInboxPage\");\r\n\r\n // const AdddressIssueTypesHashMap = props.addressIssueTypes.data.reduce((map,obj)=>{\r\n // map[obj.id] = obj.name;\r\n // return map\r\n // },{})\r\n\r\n // const AddressStatusTypesHashMap = props.addressIssueStatus.data.reduce((map,obj)=>{\r\n // map[obj.id] = obj.name;\r\n // return map\r\n // },{})\r\n\r\n const [AdddressIssueTypesHashMap, setAdddressIssueTypesHashMap] = useState(\r\n {}\r\n );\r\n const [AddressStatusTypesHashMap, setAddressStatusTypesHashMap] = useState(\r\n {}\r\n );\r\n\r\n useEffect(() => {\r\n if (props.addressIssueTypes.loading || props.addressIssueStatus.loading) {\r\n return;\r\n }\r\n //HashMap for IsssueTypes\r\n const IHM = props.addressIssueTypes.data.reduce((map, obj) => {\r\n map[obj.id] = obj.name;\r\n return map;\r\n }, {});\r\n //HashMaps for Issue Status\r\n const SHM = props.addressIssueStatus.data.reduce((map, obj) => {\r\n map[obj.id] = obj.name;\r\n return map;\r\n }, {});\r\n\r\n setAdddressIssueTypesHashMap(IHM);\r\n setAddressStatusTypesHashMap(SHM);\r\n setState({ ...state, IssueStauses: [SHM[ISSUE_STATUS_OPEN_ID]] });\r\n // setState({...state, IssueTypes: [Object.values(IHM)]})\r\n }, [props.addressIssueTypes, props.addressIssueStatus]);\r\n\r\n const [state, setState] = useState(initialstate);\r\n\r\n const [activeFilterChip, setActiveFilterChip] = useState(1);\r\n const ChipIssueStatusFilter = () => {\r\n return (\r\n <>\r\n {\r\n setActiveFilterChip(-1);\r\n setState({ ...state, IssueStauses: [] });\r\n }}\r\n />\r\n {\r\n setActiveFilterChip(1);\r\n setState({\r\n ...state,\r\n IssueStauses: [AddressStatusTypesHashMap[ISSUE_STATUS_OPEN_ID]],\r\n });\r\n }}\r\n />\r\n {\r\n setActiveFilterChip(3);\r\n setState({\r\n ...state,\r\n IssueStauses: [AddressStatusTypesHashMap[ISSUE_STATUS_CLOSED_ID]],\r\n });\r\n }}\r\n />\r\n \r\n );\r\n };\r\n\r\n //hook to load Values from the server\r\n useEffect(() => {\r\n if (\r\n Object.keys(AdddressIssueTypesHashMap).length == 0 ||\r\n Object.keys(AddressStatusTypesHashMap).length == 0\r\n ) {\r\n return;\r\n }\r\n let mounted = true;\r\n mounted && setState({ ...state, isLoading: true, data: [] });\r\n const [promise, source] = getAddressIssuesPaginated(\r\n { ...state },\r\n props.appSettings.userCredentials.token.access_token\r\n );\r\n promise\r\n .then((aresp) => {\r\n const {\r\n isSuccess,\r\n isPartial,\r\n message,\r\n respData,\r\n pageNo,\r\n pageSize,\r\n totalCount,\r\n successObj,\r\n failedObj,\r\n } = acmApiPaginatedResponseMapper(aresp.data);\r\n if (isSuccess) {\r\n var issuesData = addressIssuesMapper(respData);\r\n mounted &&\r\n setState({\r\n ...state,\r\n count: totalCount,\r\n pageNo: pageNo - 1,\r\n data: issuesData,\r\n isLoading: false,\r\n });\r\n } else {\r\n mounted && setState({ ...state, loading: false });\r\n }\r\n })\r\n .catch((e) => {\r\n console.log(e);\r\n })\r\n .then();\r\n\r\n return () => {\r\n mounted = false;\r\n };\r\n }, [\r\n state.page,\r\n state.rowsPerPage,\r\n state.sortOrder,\r\n state.filter,\r\n props.refreshGridValue,\r\n state.IssueStauses,\r\n state.IssueTypes,\r\n ]);\r\n\r\n const refreshGridData = () => {\r\n props.refreshGrid();\r\n };\r\n\r\n //define the coloun name here so in the same order which are defined in grid_columns\r\n const grid_columns_names = [\r\n \"id\",\r\n \"fk_Issue_TypeId\",\r\n \"fK_Issue_StatusId\",\r\n \"reportedDate\",\r\n \"reportUserName\",\r\n \"reporterDescription\",\r\n \"email\",\r\n \"mobile\",\r\n \"longitude\",\r\n \"latitude\",\r\n \"searchText\",\r\n \"responderUserName\",\r\n \"responderComments\",\r\n \"respondedDate\",\r\n \"todisplay\", //here is the acutal rendered content with customBody\r\n \"action\",\r\n ];\r\n\r\n const getGridRowDataArrayToObj = (row_data) => {\r\n const row_data_json = {};\r\n row_data.forEach((item, index) => {\r\n row_data_json[grid_columns_names[index]] = item;\r\n });\r\n return row_data_json;\r\n };\r\n\r\n const grid_columns = [\r\n {\r\n name: \"id\",\r\n label: \"Ref\",\r\n options: { filter: false, searchable: false },\r\n },\r\n {\r\n name: \"fK_Issue_TypeId\",\r\n label: \"Issue Type\", //Issue Types\r\n options: {\r\n filter: true,\r\n searchable: false,\r\n display: \"excluded\",\r\n filterOptions: {\r\n // renderValue:(value)=>{ return AdddressIssueTypesHashMap[value] }\r\n names: Object.values(AdddressIssueTypesHashMap),\r\n },\r\n // customFilterListOptions : {\r\n // render : (value)=>{ return AdddressIssueTypesHashMap[value] }\r\n // }\r\n },\r\n },\r\n {\r\n name: \"fK_Issue_StatusId\",\r\n label: \"Issues Status\", //Issue Status\r\n options: {\r\n filter: false,\r\n searchable: false,\r\n display: \"excluded\",\r\n },\r\n },\r\n {\r\n name: \"reportedDate\",\r\n label: \"ReportedDate\",\r\n options: {\r\n filter: false,\r\n searchable: false,\r\n display: \"excluded\",\r\n customBodyRender: (value, tableMeta, updatedValue) => {\r\n if (!value) return;\r\n const row_data = tableMeta.rowData;\r\n const row_data_json = getGridRowDataArrayToObj(row_data);\r\n //return AdddressIssueTypesHashMap[value]\r\n return AdddressIssueTypesHashMap[row_data_json.fk_Issue_TypeId];\r\n },\r\n },\r\n },\r\n {\r\n name: \"reportUserName\",\r\n label: \"reportUserName\",\r\n options: { filter: false, searchable: false, display: \"excluded\" },\r\n },\r\n {\r\n name: \"reporterDescription\",\r\n label: \"reporterDescription\",\r\n options: { display: \"excluded\", filter: false, searchable: false },\r\n },\r\n {\r\n name: \"email\",\r\n label: \"email\",\r\n options: { display: \"excluded\", filter: false, searchable: false },\r\n },\r\n {\r\n name: \"mobile\",\r\n label: \"mobile\",\r\n options: { display: \"excluded\", filter: false, searchable: false },\r\n },\r\n {\r\n name: \"longitude\",\r\n label: \"longitude\",\r\n options: { display: \"excluded\", filter: false, searchable: false },\r\n },\r\n {\r\n name: \"latitude\",\r\n label: \"latitude\",\r\n options: { display: \"excluded\", filter: false, searchable: false },\r\n },\r\n {\r\n name: \"searchText\",\r\n label: \"searchText\",\r\n options: { display: \"excluded\", filter: false, searchable: false },\r\n },\r\n {\r\n name: \"responderUserName\",\r\n label: \"responderUserName\",\r\n options: { display: \"excluded\", filter: false, searchable: false },\r\n },\r\n {\r\n name: \"responderComments\",\r\n label: \"responderComments\",\r\n options: { display: \"excluded\", filter: false, searchable: false },\r\n },\r\n {\r\n name: \"respondedDate\",\r\n label: \"respondedDate\",\r\n options: { display: \"excluded\", filter: false, searchable: false },\r\n },\r\n {\r\n name: \"fK_Issue_TypeId\",\r\n label: \"Issues List \", //here is wher to render as custom to display necessary info,\r\n options: {\r\n filter: false,\r\n searchable: false,\r\n customBodyRender: (value, tableMeta, updatedVaule) => {\r\n if (!value) return;\r\n const row_data = tableMeta.rowData;\r\n const row_data_json = getGridRowDataArrayToObj(row_data);\r\n // return AdddressIssueTypesHashMap[row_data_json.fk_Issue_TypeId] + \" (\"+ row_data_json.reportedDate +\")\"\r\n return (\r\n {\r\n // alert(\"Will Zoom To the location\" + row_data_json.longitude +\",\"+ row_data_json.latitude)\r\n // ZoomToLatLng(row_data_json.latitude,row_data_json.longitude)\r\n DisplayAddressIssuePointOnMap(\r\n row_data_json.latitude,\r\n row_data_json.longitude\r\n );\r\n }}\r\n >\r\n {AdddressIssueTypesHashMap[row_data_json.fk_Issue_TypeId] +\r\n \" (\" +\r\n row_data_json.reportedDate +\r\n \")\"}\r\n \r\n );\r\n },\r\n },\r\n },\r\n {\r\n name: \"\", //this is for action\r\n options: {\r\n filter: false,\r\n sort: false,\r\n display: true,\r\n customBodyRender: (value, tableMeta, updatedVaule) => {\r\n const row_data = tableMeta.rowData;\r\n const row_data_json = getGridRowDataArrayToObj(row_data);\r\n const issueStatus = row_data_json.fK_Issue_StatusId;\r\n if (issueStatus == ISSUE_STATUS_OPEN_ID) {\r\n return (\r\n {\r\n props.showIssueDetails(row_data_json);\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n );\r\n } else {\r\n return (\r\n {\r\n const row_data_json = getGridRowDataArrayToObj(row_data);\r\n props.showIssueDetails(row_data_json);\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 // const row_data = tableMeta.rowData\r\n // const row_data_json = getGridRowDataArrayToObj(row_data)\r\n // props.showIssueDetails(row_data_json)\r\n // }}>\r\n // \r\n // \r\n // )\r\n },\r\n },\r\n },\r\n ];\r\n\r\n const localization_options = {\r\n textLabels: {\r\n body: {\r\n noMatch: \"No Issue To display\",\r\n },\r\n },\r\n };\r\n\r\n const grid_options = {\r\n //tableBodyHeight : \"50%\",\r\n rowsPerPageOptions: [],\r\n serverSide: true,\r\n count: state.count,\r\n rowPerPage: state.pageSize,\r\n pagination: true,\r\n sort: true,\r\n sortOrder: state.sortOrder, //as of now only 1 column\r\n viewColumns: false,\r\n jumpToPage: false,\r\n print: false,\r\n download: false,\r\n selectableRows: \"none\", //\"multiple\", \"single\", \"none\".\r\n filter: true,\r\n // filterType: \"checkbox\",\r\n responsive: \"standard\",\r\n search: false,\r\n customToolbar: () => (\r\n //Add Refresh Button here -- For now only 1 button\r\n
\r\n \r\n \r\n {\r\n refreshGridData();\r\n }}\r\n >\r\n \r\n \r\n \r\n
\r\n ),\r\n onTableChange: (action, tableState) => {\r\n console.log(\"action is \", action);\r\n switch (action) {\r\n case \"changePage\":\r\n setState({ ...state, page: tableState.page });\r\n break;\r\n case \"changeRowsPerPage\":\r\n setState({ ...state, rowsPerPage: tableState.rowsPerPage });\r\n break;\r\n case \"sort\":\r\n //var sortString = tableState.sortOrder.name + ' ' + tableState.sortOrder.direction\r\n setState({ ...state, sortOrder: tableState.sortOrder });\r\n case \"filterChange\":\r\n setState({ ...state, IssueTypes: tableState.filterList[1] }); //hardcoding array position for now to filter Issue Types\r\n break;\r\n default:\r\n break;\r\n }\r\n },\r\n\r\n textLabels: {\r\n body: {\r\n noMatch: t(\"noMatch\"),\r\n },\r\n filter: {\r\n all: t(\"all\"),\r\n title: t(\"title\"),\r\n reset: t(\"reset\"),\r\n },\r\n pagination: {\r\n next: t(\"next\"),\r\n previous: t(\"previous\"),\r\n rowsPerPage: t(\"rowsPerPage\"),\r\n displayRows: t(\"displayRows\"),\r\n },\r\n },\r\n };\r\n return (\r\n \r\n {/* \r\n {JSON.stringify(AdddressIssueTypesHashMap)}\r\n */}\r\n \r\n {Object.keys(AddressStatusTypesHashMap).length > 0 ? (\r\n \r\n ) : null}\r\n \r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n addressIssueTypes: state.addressIssueTypes,\r\n addressIssueStatus: state.addressIssueStatusTypes,\r\n appSettings: state.settings,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => {\r\n return {};\r\n};\r\n\r\n// const buildSortOrderForServerFromTable = (tableStateSortOrder)=>{\r\n// if(tableStateSortOrder.name){\r\n// return `${tableStateSortOrder.name} , ${direction}`\r\n// }else {\r\n// return null\r\n// }\r\n// }\r\n\r\n// const buildSortOrderObjectFromString = (str)=>{\r\n// if(!str || str.length < 1) return {}\r\n\r\n// var keyVal = str.split(\" \")\r\n// return { name : keyVal[0] , direction : keyVal[1]}\r\n// }\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(IssueInboxGrid);\r\n","//Action Types\r\nexport const AddressIssueTypes_ActionsTypes = { \r\n FETCH_AddressIssueTypes_REQUEST : 'FETCH_AddressIssueTypes_REQUEST',\r\n FETCH_AddressIssueTypes_SUCCESS : 'FETCH_AddressIssueTypes_SUCCESS',\r\n FETCH_AddressIssueTypes_FAILURE : 'FETCH_AddressIssueTypes_FAILURE'\r\n}\r\n\r\n//Actions\r\nexport const fetchAddressIssueTypesRequest = () => {\r\n return {\r\n type: AddressIssueTypes_ActionsTypes.FETCH_AddressIssueTypes_REQUEST\r\n };\r\n };\r\n \r\n export const fetchAddressIssueTypesSuccess = (data) => {\r\n return {\r\n type: AddressIssueTypes_ActionsTypes.FETCH_AddressIssueTypes_SUCCESS,\r\n payload: data,\r\n };\r\n };\r\n \r\n export const fetchAddressIssueTypesFailure = (error) => {\r\n return {\r\n type: AddressIssueTypes_ActionsTypes.FETCH_AddressIssueTypes_FAILURE,\r\n payload: error,\r\n };\r\n };\r\n \r\n const initialState = {\r\n data : [],\r\n loading : false,\r\n error : ''\r\n}\r\n\r\n //Reducer \r\n export const addressIssueTypesReducer = (state = initialState , {type, payload})=>{\r\n switch (type) {\r\n case AddressIssueTypes_ActionsTypes.FETCH_AddressIssueTypes_REQUEST:\r\n return {\r\n ...state,\r\n data : [],\r\n loading : true,\r\n error : ''\r\n }\r\n\r\n case AddressIssueTypes_ActionsTypes.FETCH_AddressIssueTypes_SUCCESS:\r\n return {\r\n ...state,\r\n data : payload,\r\n loading : false,\r\n error : ''\r\n }\r\n\r\n case AddressIssueTypes_ActionsTypes.FETCH_AddressIssueTypes_FAILURE:\r\n return {\r\n ...state,\r\n data : [],\r\n loading : false,\r\n error : payload\r\n }\r\n\r\n default:\r\n return state;\r\n }\r\n \r\n }\r\n \r\n\r\n","//Action Types\r\nexport const AddressIssueStatusTypes_ActionsTypes = { \r\n FETCH_AddressIssueStatusTypes_REQUEST : 'FETCH_AddressIssueStatusTypes_REQUEST',\r\n FETCH_AddressIssueStatusTypes_SUCCESS : 'FETCH_AddressIssueStatusTypes_SUCCESS',\r\n FETCH_AddressIssueStatusTypes_FAILURE : 'FETCH_AddressIssueStatusTypes_FAILURE'\r\n}\r\n\r\n//Actions\r\nexport const fetchAddressIssueStatusTypesRequest = () => {\r\n return {\r\n type: AddressIssueStatusTypes_ActionsTypes.FETCH_AddressIssueStatusTypes_REQUEST,\r\n };\r\n };\r\n \r\n export const fetchAddressIssueStatusTypesSuccess = (data) => {\r\n return {\r\n type: AddressIssueStatusTypes_ActionsTypes.FETCH_AddressIssueStatusTypes_SUCCESS,\r\n payload: data,\r\n };\r\n };\r\n \r\n export const fetchAddressIssueStatusTypesFailure = (error) => {\r\n return {\r\n type: AddressIssueStatusTypes_ActionsTypes.FETCH_AddressIssueStatusTypes_FAILURE,\r\n payload: error,\r\n };\r\n };\r\n \r\n const initialState = {\r\n data : [],\r\n loading : false,\r\n error : ''\r\n}\r\n\r\n //Reducer \r\n export const addressIssueStatusTypesReducer = (state = initialState , {type, payload})=>{\r\n switch (type) {\r\n case AddressIssueStatusTypes_ActionsTypes.FETCH_AddressIssueStatusTypes_REQUEST:\r\n return {\r\n ...state,\r\n data : [],\r\n loading : true,\r\n error : ''\r\n }\r\n\r\n case AddressIssueStatusTypes_ActionsTypes.FETCH_AddressIssueStatusTypes_SUCCESS:\r\n return {\r\n ...state,\r\n data : payload,\r\n loading : false,\r\n error : ''\r\n }\r\n\r\n case AddressIssueStatusTypes_ActionsTypes.FETCH_AddressIssueStatusTypes_FAILURE:\r\n return {\r\n ...state,\r\n data : [],\r\n loading : false,\r\n error : payload\r\n }\r\n\r\n default:\r\n return state;\r\n }\r\n \r\n }\r\n \r\n\r\n","import React from 'react';\r\nimport { withStyles } from '@material-ui/core/styles'\r\nimport MuiDialogContent from '@material-ui/core/DialogContent'\r\nimport MuiDialogTitle from '@material-ui/core/DialogTitle'\r\nimport MuiDialogActions from '@material-ui/core/DialogActions'\r\n\r\nimport Typography from '@material-ui/core/Typography'\r\nimport IconButton from '@material-ui/core/IconButton'\r\nimport CloseIcon from '@material-ui/icons/Close'\r\n\r\n\r\n\r\nconst styles = (theme) => ({\r\n root: {\r\n margin: 0,\r\n padding: theme.spacing(2),\r\n },\r\n closeButton: {\r\n position: 'absolute',\r\n right: theme.spacing(1),\r\n top: theme.spacing(1),\r\n color: theme.palette.grey[500],\r\n },\r\n });\r\n\r\n export const DialogContent = withStyles((styles) => ({\r\n \r\n }))(MuiDialogContent);\r\n\r\n\r\n export const DialogTitle = withStyles(styles)((props) => {\r\n const { children, classes, onClose, ...other } = props;\r\n return (\r\n \r\n {children}\r\n {onClose ? (\r\n \r\n \r\n \r\n ) : null}\r\n \r\n );\r\n });\r\n\r\n export const DialogActions = withStyles((styles) => ({\r\n }))(MuiDialogActions)\r\n\r\n","import React, { useState } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\n// import DialogTitle from '@material-ui/core/DialogTitle'\r\n// import DialogTitle from '../../components/ui/Dialog/DialogTitle'\r\n// import DialogActions from '../../components/ui/Dialog/DialogActions'\r\n// import DialogContent from '@material-ui/core/DialogContent'\r\n// import MuiDialogActions from '@material-ui/core/DialogActions'\r\nimport {\r\n DialogContent,\r\n DialogTitle,\r\n DialogActions,\r\n} from \"../../components/ui/Dialog/CustomDialog\";\r\n\r\nimport Button from \"@material-ui/core/Button\";\r\nimport TextareaAutosize from \"@material-ui/core/TextareaAutosize\";\r\nimport List from \"@material-ui/core/List\";\r\nimport ListItem from \"@material-ui/core/ListItem\";\r\nimport ListItemText from \"@material-ui/core/ListItemText\";\r\nimport AttachmentIcon from \"@material-ui/icons/Attachment\";\r\nimport SendIcon from \"@material-ui/icons/Send\";\r\nimport CloseIcon from \"@material-ui/icons/Close\";\r\nimport CancelIcon from \"@material-ui/icons/Cancel\";\r\nimport LinearProgress from \"@material-ui/core/LinearProgress\";\r\nimport ListItemAvatar from \"@material-ui/core/ListItemAvatar\";\r\nimport Avatar from \"@material-ui/core/Avatar\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport Tooltip from \"@material-ui/core/Tooltip\";\r\nimport Fab from \"@material-ui/core/Fab\";\r\nimport { FormControl, FormControlLabel } from \"@material-ui/core\";\r\nimport toast, { Toaster } from \"react-hot-toast\";\r\nimport {\r\n getAddressIssueAttachment,\r\n respondToAddressIssue,\r\n} from \"../../serviceClients/addressingClient\";\r\nimport {\r\n addressingApiResponseMapper,\r\n addressIssuesMapper,\r\n} from \"../../components/mappers/addressingMappers\";\r\n//import Viewer from 'react-viewer'; //TODO check and implement\r\nimport { useToasts } from \"react-toast-notifications\";\r\nimport { triggerBase64Download } from \"react-base64-downloader\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport { Rotate90DegreesCcw } from \"@material-ui/icons\";\r\nimport { useTranslation } from \"react-i18next\";\r\nconst ISSUE_STATUS_OPEN_ID = \"1\"; //HARDCODE database value\r\nconst ISSUE_STATUS_CLOSED_ID = \"3\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n attachmenticon: {\r\n transform: \"rotate(270deg)\",\r\n },\r\n}));\r\n\r\nfunction IssueDetailsDisplay(props) {\r\n const { t, i18n } = useTranslation(\"issueInboxPage\");\r\n const classes = useStyles();\r\n const { addToast } = useToasts();\r\n const AdddressIssueTypesHashMap = props.addressIssueTypes\r\n ? props.addressIssueTypes.data.reduce((map, obj) => {\r\n map[obj.id] = obj.name;\r\n return map;\r\n }, {})\r\n : {};\r\n\r\n const AdddressIssueStatusTypesHashMap = props.addressIssueStatusTypes\r\n ? props.addressIssueStatusTypes.data.reduce((map, obj) => {\r\n map[obj.id] = obj.name;\r\n return map;\r\n }, {})\r\n : {};\r\n\r\n const [respondTxt, setRespondTxt] = useState(\"\");\r\n // const [attachmentImg , setAttachmentImg ] = useState('')\r\n\r\n const loggedInCustodianName = props.loginUserDetails\r\n ? props.loginUserDetails.userName\r\n : null;\r\n\r\n const issueInfo = props.issueInfo.data[0];\r\n const issueId = issueInfo.id;\r\n const issueType =\r\n issueInfo && issueInfo.fk_Issue_TypeId\r\n ? AdddressIssueTypesHashMap[issueInfo.fk_Issue_TypeId]\r\n : \"\";\r\n const issueStatusId =\r\n issueInfo && issueInfo.fK_Issue_StatusId ? issueInfo.fK_Issue_StatusId : \"\";\r\n const reportedDate =\r\n issueInfo && issueInfo.reportedDate ? issueInfo.reportedDate : \"\";\r\n const reportedUserName =\r\n issueInfo && issueInfo.reportUserName ? issueInfo.reportUserName : \"\";\r\n const reporterEmail = issueInfo && issueInfo.email ? issueInfo.email : \"\";\r\n\r\n const [isSubmintInProgress, setIsSubmitInProgress] = useState(false);\r\n // if(issueInfo && issueInfo.responderComments) setRespondTxt(issueInfo.responderComments)\r\n\r\n const isRespondedStatus = issueStatusId == ISSUE_STATUS_CLOSED_ID;\r\n\r\n const getAndDisplayIssueAttachment = (issueId) => {\r\n const [promise, source] = getAddressIssueAttachment(\r\n issueId,\r\n props.appSettings.userCredentials.token.access_token\r\n );\r\n promise\r\n .then((aresp) => {\r\n const {\r\n isSuccess,\r\n isPartial,\r\n message,\r\n respData,\r\n pageNo,\r\n pageSize,\r\n totalCount,\r\n successObj,\r\n failedObj,\r\n } = addressingApiResponseMapper(aresp.data);\r\n if (isSuccess) {\r\n //addToast(\"Downloaded Successfully \" , { appearance: 'error' })\r\n //addToast(\"Downloaded Successfully \" , { appearance: 'success' })\r\n //setAttachmentImg(respData[0].fileContent)\r\n respData.forEach((item) => {\r\n let fileContent = item.fileContent;\r\n let fileName = item.fileName;\r\n triggerBase64Download(fileContent, fileName);\r\n });\r\n } else {\r\n alert(\"Failed to get attachment\");\r\n }\r\n })\r\n .catch((err) => {\r\n console.log(err.message);\r\n alert(\"Failed to get attachment \" + err.message);\r\n })\r\n .then(() => {\r\n //done\r\n });\r\n };\r\n\r\n const sendResponseToUser = () => {\r\n if (respondTxt.trim().length < 1) {\r\n toast.error(\"Please Enter Responder Comments\");\r\n return;\r\n }\r\n setIsSubmitInProgress(true);\r\n let responderName = loggedInCustodianName;\r\n const [promise, source] = respondToAddressIssue(\r\n issueId,\r\n responderName,\r\n respondTxt,\r\n props.appSettings.userCredentials.token.access_token\r\n );\r\n promise\r\n .then((aresp) => {\r\n const {\r\n isSuccess,\r\n isPartial,\r\n message,\r\n respData,\r\n pageNo,\r\n pageSize,\r\n totalCount,\r\n successObj,\r\n failedObj,\r\n } = addressingApiResponseMapper(aresp.data);\r\n if (isSuccess) {\r\n //var updatedIssueInfo = addressIssuesMapper(respData)\r\n // props.issueInfo = { data : [updatedIssueInfo]}\r\n toast.success(\"Response Sent to the user\");\r\n props.onClose(); //close the Dialog\r\n } else {\r\n toast.error(\"Unalbe to send response to the user\");\r\n }\r\n })\r\n .catch((err) => {\r\n console.log(err.message);\r\n toast.error(err.message);\r\n })\r\n .then(() => {\r\n //done\r\n setIsSubmitInProgress(false);\r\n });\r\n };\r\n return (\r\n
\r\n \r\n \r\n Issue Details\r\n {/* {JSON.stringify(issueInfo)} */}\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 getAndDisplayIssueAttachment(issueId)\r\n }\r\n > */}\r\n getAndDisplayIssueAttachment(issueId)}\r\n >\r\n \r\n \r\n {/* */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* \r\n \r\n \r\n \r\n */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* \r\n \r\n getAndDisplayIssueAttachment(issueId)}\r\n >\r\n \r\n \r\n \r\n */}\r\n \r\n\r\n \r\n \r\n {/* alert(\"will display attachments\")}\r\n >\r\n \r\n \r\n \r\n \r\n alert(\"will fetch and display attachment\")\r\n }\r\n >\r\n \r\n \r\n */}\r\n
{t(\"IssueDescription\")}
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n {t(\"RespondToReporter\")}\r\n setRespondTxt(e.target.value)}\r\n value={\r\n isRespondedStatus\r\n ? issueInfo.responderComments\r\n : respondTxt\r\n }\r\n disabled={isRespondedStatus}\r\n >\r\n \r\n \r\n
\r\n
\r\n {/* \r\n {\r\n setAttachmentImg('')\r\n }} images={[{src:attachmentImg , alt:'unable to load Image'}]}/>\r\n */}\r\n
\r\n\r\n \r\n props.onClose()}\r\n startIcon={isRespondedStatus ? : }\r\n disabled={isSubmintInProgress}\r\n >\r\n {isRespondedStatus ? t(\"CloseBtn\") : \"Cancel\"}\r\n \r\n\r\n {isRespondedStatus ? null : (\r\n {\r\n sendResponseToUser();\r\n }}\r\n startIcon={}\r\n disabled={isSubmintInProgress}\r\n >\r\n Send\r\n \r\n )}\r\n \r\n {isSubmintInProgress ? : null}\r\n \r\n
\r\n );\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n addressIssueTypes: state.addressIssueTypes,\r\n addressIssueStatusTypes: state.addressIssueStatusTypes,\r\n loginUserDetails: state.settings.userCredentials\r\n ? state.settings.userCredentials.user\r\n : null,\r\n appSettings: state.settings,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => {\r\n return {};\r\n};\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(IssueDetailsDisplay);\r\n","import React, { useEffect, useState } from \"react\";\r\nimport IssueInboxGrid from \"./IssueInboxGrid\";\r\n\r\nimport { connect } from \"react-redux\";\r\nimport {\r\n fetchAddressIssueTypesRequest,\r\n fetchAddressIssueTypesSuccess,\r\n fetchAddressIssueTypesFailure,\r\n} from \"../../redux/reducers/addressIssueTypesReducer\"; //TODO move this to actions\r\nimport {\r\n fetchAddressIssueStatusTypesRequest,\r\n fetchAddressIssueStatusTypesSuccess,\r\n fetchAddressIssueStatusTypesFailure,\r\n} from \"../../redux/reducers/addressIssueStatusTypesReducer\"; //TODO move these to actions\r\n\r\nimport {\r\n getAddressIssueTypes,\r\n getAddressIssueStatuTypes,\r\n} from \"../../serviceClients/addressingClient\";\r\nimport {\r\n addressIssueTypesMapper,\r\n addressIssueStatusTypesMapper,\r\n addressingApiResponseMapper,\r\n} from \"../mappers/addressingMappers\";\r\nimport IssueDetailsDisplay from \"./IssueDetailsDisplay\";\r\n\r\nfunction IssuesInbox(props) {\r\n const [singleIssueDetails, setSingleIssueDetails] = useState({ data: [] });\r\n const [refreshGridValue, setRefreshGridValue] = useState(1);\r\n\r\n const refreshGrid = () => {\r\n setRefreshGridValue(refreshGridValue + 1);\r\n };\r\n\r\n useEffect(() => {\r\n // Get Address Issue Types\r\n const [promise, source] = getAddressIssueTypes(\r\n props.settings.userCredentials.token.access_token\r\n );\r\n promise\r\n .then((resp) => {\r\n const {\r\n isSuccess,\r\n isPartial,\r\n message,\r\n respData,\r\n successObj,\r\n failedObj,\r\n } = addressingApiResponseMapper(resp.data);\r\n if (isSuccess)\r\n props.fetchedAddressIssueTypesSuccessfully(\r\n addressIssueTypesMapper(respData, props.settings.language)\r\n );\r\n else props.fetchAddressIssueTypesFailed(message);\r\n })\r\n .catch((err) => {\r\n console.log(err.message);\r\n props.fetchAddressIssueTypesFailed(err.message);\r\n });\r\n\r\n // Get Address_Issue_Statu_Types\r\n const [promise2, source2] = getAddressIssueStatuTypes(\r\n props.settings.userCredentials.token.access_token\r\n );\r\n promise2\r\n .then((resp) => {\r\n const {\r\n isSuccess,\r\n isPartial,\r\n message,\r\n respData,\r\n successObj,\r\n failedObj,\r\n } = addressingApiResponseMapper(resp.data);\r\n if (isSuccess)\r\n props.fetchedAddressIssueStatusTypesSuccessfully(respData);\r\n else props.fetchAddressIssueStatusTypesFailed(message);\r\n })\r\n .catch((err) => {\r\n console.log(err.message);\r\n props.fetchAddressIssueStatusTypesFailed(err.message);\r\n });\r\n\r\n return () => {\r\n if (source) source.cancel();\r\n // if(source2) source2.cancel()\r\n };\r\n }, []);\r\n\r\n return (\r\n //TODO show loader while the IssueTypes are in loading\r\n <>\r\n {props.addressIssueTypesStateStore.data.length > 0 &&\r\n props.addressIssueTypesStateStore.data.length > 0 ? (\r\n {\r\n refreshGrid();\r\n }}\r\n showIssueDetails={(issueData) => {\r\n setSingleIssueDetails({ data: [issueData] });\r\n }}\r\n />\r\n ) : null}\r\n {singleIssueDetails.data.length > 0 && (\r\n 0}\r\n onClose={() => {\r\n setSingleIssueDetails({ data: [] });\r\n refreshGrid();\r\n }}\r\n issueInfo={singleIssueDetails}\r\n />\r\n )}\r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n settings: state.settings,\r\n addressIssueTypesStateStore: state.addressIssueTypes,\r\n addressIssueStatusStateStore: state.addressIssueStatusTypes,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => {\r\n return {\r\n fetchAddressIssueTypes: () => dispatch(fetchAddressIssueTypesRequest()),\r\n fetchedAddressIssueTypesSuccessfully: (data) =>\r\n dispatch(fetchAddressIssueTypesSuccess(data)),\r\n fetchAddressIssueTypesFailed: (errMessage) =>\r\n dispatch(fetchAddressIssueTypesFailure(errMessage)),\r\n\r\n fetchAddressIssueStatusTypes: () =>\r\n dispatch(fetchAddressIssueStatusTypesRequest()),\r\n fetchedAddressIssueStatusTypesSuccessfully: (data) =>\r\n dispatch(fetchAddressIssueStatusTypesSuccess(data)),\r\n fetchAddressIssueStatusTypesFailed: (errMessage) =>\r\n dispatch(fetchAddressIssueStatusTypesFailure(errMessage)),\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(IssuesInbox);\r\n","import Tooltip from '@material-ui/core/Tooltip';\r\nimport { withStyles, makeStyles } from '@material-ui/core/styles'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n lightToolTipClass: {\r\n tooltip: {\r\n backgroundColor: theme.palette.common.lightgrey,\r\n //color: 'rgba(0, 0, 0, 0.87)',\r\n color: theme.palette.common.blue,\r\n boxShadow: theme.shadows[1],\r\n fontSize: 11,\r\n },\r\n\r\n // tooltipArrow : {\r\n // backgroundColor : theme.palette.common.red\r\n // },\r\n // popperArrow : {\r\n // backgroundColor : theme.palette.common.orange\r\n // },\r\n arrow: {\r\n color: theme.palette.common.lightgrey,\r\n },\r\n },\r\n}));\r\n\r\n\r\nfunction LightTooltip (props)\r\n{\r\n const classes = useStyles();\r\n return(\r\n \r\n \r\n )\r\n};\r\n\r\nexport default LightTooltip;","import SvgIcon from '@material-ui/core/SvgIcon'\r\n\r\n\r\nexport const StreetSvg2 = (props) => (\r\n \r\n \r\n \r\n );\r\n \r\nexport const PointAddressSvg=(props)=>(\r\n \r\n \r\n \r\n )\r\n \r\nexport const PolygonSvg=(props)=>(\r\n \r\n \r\n \r\n )\r\n \r\n \r\nexport const LetterBoxSvg=(props)=>(\r\n \r\n \r\n \r\n )\r\n\r\n// export const What3WordsSvg = () => (\r\n// \r\n// \r\n// \r\n// \r\n// \r\n// \r\n// \r\n// \r\n// \r\n// \r\n// );","import { ActionTypes } from \"../constants/actionTypes\";\r\nexport const setActivePage = (page) => {\r\n return {\r\n type: ActionTypes.SET_ACTIVE_PAGE,\r\n payload: page,\r\n };\r\n};\r\nexport const setActiveLanguage = (language) => {\r\n return {\r\n type: ActionTypes.SET_ACTIVE_LANGUAGE,\r\n payload: language,\r\n };\r\n};\r\nexport const setUserCredentials = (credential) => {\r\n return {\r\n type: ActionTypes.SET_USER_CREDENTIALS,\r\n payload: credential,\r\n };\r\n};\r\nexport const setAlert = (alertObj) => {\r\n return {\r\n type: ActionTypes.SET_ALERT,\r\n payload: alertObj,\r\n };\r\n};\r\n","import React, { useState, useEffect, createRef } from \"react\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport { DialogTitle } from \"../../components/ui/Dialog/CustomDialog\";\r\nimport CancelIcon from \"@material-ui/icons/Cancel\";\r\nimport DeleteIcon from \"@material-ui/icons/Delete\";\r\nimport EditIcon from \"@material-ui/icons/Edit\";\r\nimport {\r\n Dialog,\r\n // DialogTitle,\r\n DialogContent,\r\n DialogContentText,\r\n TextField,\r\n DialogActions,\r\n MenuItem,\r\n InputLabel,\r\n Select,\r\n LinearProgress,\r\n Tooltip,\r\n Typography,\r\n List,\r\n ListItem,\r\n ListItemSecondaryAction,\r\n ListItemText,\r\n IconButton,\r\n} from \"@material-ui/core\";\r\nimport { Alert, AlertTitle } from \"@material-ui/lab\";\r\nimport { getAddressIssueTypes } from \"../../serviceClients/addressingClient\";\r\nimport axios from \"axios\";\r\nimport { ValidatorForm, TextValidator } from \"react-material-ui-form-validator\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { appConifg } from \"../../config/default\";\r\nimport { connect } from \"react-redux\";\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\nimport ReactGA from \"react-ga\";\r\n\r\nconst IssueTooltip = withStyles((theme) => ({\r\n tooltip: {\r\n backgroundColor: \"#f5f5f9\",\r\n color: \"rgba(0, 0, 0, 0.87)\",\r\n maxWidth: 220,\r\n fontSize: theme.typography.pxToRem(12),\r\n border: \"1px solid #dadde9\",\r\n },\r\n}))(Tooltip);\r\n\r\nconst ReportIssueDialog = (props) => {\r\n const { t, i18n } = useTranslation(\"reportIssuePage\");\r\n const formRef = createRef();\r\n const [comments, setComments] = useState(\"\");\r\n const [name, setName] = useState(\"\");\r\n const [phone, setPhone] = useState(\"\");\r\n const [email, setEmail] = useState(\"\");\r\n const [showReportAlert, setShowReportAlert] = useState(false);\r\n const [alertReportType, setAlertReportType] = useState(\"\");\r\n const [alertReportMsg, setAlertReportMsg] = useState(\"\");\r\n const [issueType, setIssueType] = useState(1);\r\n const [issueTypes, setIssueTypes] = useState([]);\r\n const [attachment, setAttachment] = useState([]);\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n const [showAttachError, setShowAttachError] = useState(false);\r\n\r\n useEffect(() => {\r\n if (issueTypes.length == 0) {\r\n const [promise, promiseIssueType] = getAddressIssueTypes(\r\n props.appSettings.userCredentials.token.access_token\r\n );\r\n promise.then((response) => {\r\n console.log(response.data);\r\n if (response.data.isSucceeded) setIssueTypes(response.data.data);\r\n });\r\n }\r\n if (props.appSettings.userCredentials) {\r\n if (props.appSettings.userCredentials.uaePassUser) {\r\n setName(\r\n props.appSettings.language == \"en\"\r\n ? props.appSettings.userCredentials.uaePassUser.fullnameEN\r\n : props.appSettings.userCredentials.uaePassUser.fullnameEN\r\n );\r\n setEmail(props.appSettings.userCredentials.uaePassUser.email);\r\n setPhone(props.appSettings.userCredentials.uaePassUser.mobile);\r\n }\r\n }\r\n }, []);\r\n const getBase64 = (file) => {\r\n return new Promise((resolve) => {\r\n let fileInfo;\r\n let baseURL = \"\";\r\n // Make new FileReader\r\n let reader = new FileReader();\r\n\r\n // Convert the file to base64 text\r\n reader.readAsDataURL(file);\r\n\r\n // on reader load somthing...\r\n reader.onload = () => {\r\n // Make a fileInfo Object\r\n baseURL = reader.result;\r\n resolve(baseURL);\r\n };\r\n console.log(fileInfo);\r\n });\r\n };\r\n\r\n const handleFileInputChange = (e) => {\r\n Array.from(e.target.files).forEach((element) => {\r\n getBase64(element)\r\n .then((result) => {\r\n setAttachment((old) => [\r\n ...old,\r\n {\r\n id: element.lastModified,\r\n FileName: element.name.split(\".\")[0].toString(),\r\n FileExtension: \".\" + element.name.split(\".\")[1].toString(),\r\n FileContent: result,\r\n },\r\n ]);\r\n })\r\n .catch((err) => {\r\n console.log(err);\r\n });\r\n });\r\n };\r\n\r\n const removeIdProps = () => {\r\n const items = attachment.filter((item) => delete item.id);\r\n return items;\r\n };\r\n\r\n const removeFileItem = (id) => {\r\n const items = attachment.filter((item) => item.id !== id);\r\n setAttachment(items);\r\n };\r\n\r\n const handleReportSubmit = () => {\r\n if (attachment.length < 1) {\r\n setShowAttachError(true);\r\n return;\r\n }\r\n\r\n setIsLoading(true);\r\n const data = {\r\n ReportUserName: name.trim(),\r\n Email: email.trim(),\r\n Mobile: phone.trim(),\r\n Latitude: props.lat,\r\n Longitude: props.lng,\r\n FK_Issue_TypeId: issueType,\r\n FK_Issue_StatusId: 1,\r\n searchedText: \"\",\r\n reporterDescription: comments.trim(),\r\n Attachments: removeIdProps(),\r\n ArabicEmailFormat: props.appSettings.language == \"en\" ? false : true,\r\n };\r\n const headers = {\r\n \"Content-Type\": \"application/json\",\r\n Authorization: \"Bearer \" + props.token.access_token,\r\n };\r\n axios\r\n .post(\r\n appConifg.Address.AddressApiUrl + \"/AddressingIssues/CreateIssue\",\r\n data,\r\n { headers: headers }\r\n )\r\n .then((response) => {\r\n if (response.data.isSucceeded) {\r\n setIsLoading(false);\r\n props.onClose();\r\n props.onSuccess(\"Issue reported successfully!\");\r\n ReactGA.event({\r\n category: \"ReportIssue\",\r\n action: \"Issue reported\",\r\n });\r\n } else {\r\n setIsLoading(false);\r\n setAlertReportMsg(response.data.status.message);\r\n setAlertReportType(\"error\");\r\n setShowReportAlert(true);\r\n }\r\n })\r\n .catch((ex) => {\r\n setIsLoading(false);\r\n setAlertReportMsg(\"Connection error, please try again!\");\r\n setAlertReportType(\"error\");\r\n setShowReportAlert(true);\r\n });\r\n };\r\n\r\n const handleIssueTypeChange = (event) => {\r\n setIssueType(event.target.value);\r\n };\r\n ValidatorForm.addValidationRule(\"isPhoneValid\", () => {\r\n if (\r\n phone.match(\r\n /^(?:\\+971|00971|971|0)?(?:50|51|52|55|56|58|2|3|4|6|7|9)\\d{7}$/m\r\n )\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n });\r\n\r\n ValidatorForm.addValidationRule(\"isAttachementExists\", () => {\r\n if (attachment.length > 0) return true;\r\n else return false;\r\n });\r\n\r\n return (\r\n \r\n \r\n {t(\"DialogTitle\")}\r\n \r\n \r\n \r\n {t(\"ReportIssueInfo\")}\r\n setName(e.target.value)}\r\n fullWidth\r\n validators={[\r\n \"required\",\r\n \"matchRegexp:^[A-Za-zs.()0-9, ]{4,}(?: [A-Za-zs.()0-9, ]+){0,2}(?: [A-Za-zs.()0-9, ]+){0,3}$\",\r\n //\"matchRegexp:*\",\r\n ]}\r\n errorMessages={[t(\"ReqFieldErrorMsg\"), t(\"ErrorInvalidName\")]}\r\n />\r\n setEmail(e.target.value)}\r\n fullWidth\r\n validators={[\"required\", \"isEmail\"]}\r\n errorMessages={[t(\"ReqFieldErrorMsg\"), t(\"ErrorInvalidEmail\")]}\r\n />\r\n setPhone(e.target.value)}\r\n fullWidth\r\n validators={[\"required\", \"isPhoneValid\"]}\r\n errorMessages={[t(\"ReqFieldErrorMsg\"), t(\"ErrorInvalidPhone\")]}\r\n />\r\n \r\n {t(\"IssueType\")}\r\n \r\n \r\n {issueTypes.map((Type) => (\r\n \r\n {/* \r\n {props.appSettings.language == \"en\"\r\n ? Type.nameEN\r\n : Type.nameAR}\r\n */}\r\n \r\n {props.appSettings.language == \"en\"\r\n ? Type.detailsNameEN\r\n : Type.deatilsNameAR}\r\n \r\n \r\n }\r\n >\r\n {/* */}\r\n
\r\n \r\n \r\n {props.appSettings.language == \"en\"\r\n ? Type.nameEN\r\n : Type.nameAR}\r\n \r\n \r\n
\r\n {/* */}\r\n \r\n ))}\r\n \r\n\r\n {/* {\r\n (!issueType) \r\n ? \r\n

\r\n {\"Please Choose Issue Type\"}\r\n

\r\n :null\r\n } */}\r\n\r\n setComments(e.target.value)}\r\n fullWidth\r\n errorMessages={t(\"ReqFieldErrorMsg\")}\r\n />\r\n {/* */}\r\n\r\n \r\n \r\n \r\n {t(\"Attachments\")}\r\n \r\n \r\n {showAttachError && attachment.length < 1 ? (\r\n

\r\n {t(\"UploadAttchErrorMsg\")}\r\n

\r\n ) : null}\r\n\r\n \r\n {attachment.map((file) => {\r\n return (\r\n \r\n \r\n \r\n removeFileItem(file.id)}\r\n >\r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n
\r\n \r\n props.onClose()}\r\n color=\"secondary\"\r\n variant=\"outlined\"\r\n disabled={isLoading}\r\n startIcon={}\r\n >\r\n {t(\"Cancel\")}\r\n \r\n }\r\n >\r\n {t(\"Confirm\")}\r\n \r\n \r\n {isLoading ? : \"\"}\r\n
\r\n {showReportAlert ? (\r\n \r\n \r\n {alertReportType == \"success\" ? \"Success\" : \"Error\"}\r\n \r\n {alertReportMsg}\r\n \r\n ) : (\r\n \"\"\r\n )}\r\n \r\n );\r\n};\r\nconst mapStateToProps = (state) => {\r\n return {\r\n appSettings: state.settings,\r\n };\r\n};\r\nexport default connect(mapStateToProps, null)(ReportIssueDialog);\r\n","import React, { useState, createRef, useEffect } from \"react\";\r\nimport { DialogTitle } from \"../../components/ui/Dialog/CustomDialog\";\r\nimport ShareIcon from \"@material-ui/icons/Share\";\r\nimport CancelIcon from \"@material-ui/icons/Cancel\";\r\nimport {\r\n Dialog,\r\n //DialogTitle,\r\n DialogContent,\r\n DialogContentText,\r\n FormControlLabel,\r\n Checkbox,\r\n DialogActions,\r\n Button,\r\n LinearProgress,\r\n} from \"@material-ui/core\";\r\nimport { Alert, AlertTitle } from \"@material-ui/lab\";\r\nimport axios from \"axios\";\r\nimport { ValidatorForm, TextValidator } from \"react-material-ui-form-validator\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { appConifg } from \"../../config/default\";\r\nimport { connect } from \"react-redux\";\r\nimport ReactGA from \"react-ga\";\r\n\r\nconst ShareAddressDialog = (props) => {\r\n const formRef = createRef();\r\n const [email, setEmail] = useState(\"\");\r\n const [senderEmail, setSenderEmail] = useState(\"\");\r\n const [isDiffUser, setIsDiffUser] = useState(false);\r\n const [showShareAlert, setShowShareAlert] = useState(false);\r\n const [alertShareType, setAlertShareType] = useState(\"\");\r\n const [alertShareMsg, setAlertShareMsg] = useState(\"\");\r\n const [comments, setComments] = useState(\"\");\r\n const [isLoading, setIsLoading] = useState(false);\r\n const { t, i18n } = useTranslation(\"ShareAddress\");\r\n\r\n ValidatorForm.addValidationRule(\"isEmailMatch\", () => {\r\n if (email == senderEmail) {\r\n return false;\r\n }\r\n return true;\r\n });\r\n\r\n const handleShare = () => {\r\n //debugger;\r\n setIsLoading(true);\r\n const data = {\r\n AddressPointId : props.data.AddressPointId,\r\n Address: props.data.Address,\r\n PlusCode: props.data.PlusCode,\r\n ThreeWordsAddress: props.data.ThreeWordsAddress,\r\n Latitude: props.data.Latitude.toString(),\r\n Longitude: props.data.Longitude.toString(),\r\n // ParcelId: props.data.ParcelId,\r\n Makani: props.data.Makani,\r\n receiverEmail: email,\r\n senderEmail: senderEmail == \"\" ? email : senderEmail,\r\n comment: comments,\r\n ThreeWordsAddressAR: props.data.ThreeWordsAddressAR,\r\n ArabicEmailFormat: props.appSettings.language == \"en\" ? false : true,\r\n };\r\n const headers = {\r\n \"Content-Type\": \"application/json\",\r\n Authorization: \"Bearer \" + props.token.access_token,\r\n };\r\n axios\r\n .post(appConifg.Address.AddressApiUrl + \"/ShareAddress/Share\", data, {\r\n headers: headers,\r\n })\r\n .then((response) => {\r\n console.log(response.data);\r\n if (response.data.isSucceeded) {\r\n props.onClose();\r\n props.onSuccess(\"Address shared successfully!\");\r\n setIsLoading(false);\r\n ReactGA.event({\r\n category: \"ShareAddress\",\r\n action: \"Address shared\",\r\n });\r\n } else {\r\n setAlertShareMsg(response.data.status.message);\r\n setAlertShareType(\"error\");\r\n setShowShareAlert(true);\r\n setIsLoading(false);\r\n }\r\n })\r\n .catch((ex) => {\r\n setAlertShareMsg(\"Connection error, please try again!\");\r\n setAlertShareType(\"error\");\r\n setShowShareAlert(true);\r\n setIsLoading(false);\r\n });\r\n };\r\n const handleCheckBox = (e) => {\r\n setIsDiffUser(!isDiffUser);\r\n };\r\n const onChangeEmail = (e) => {\r\n setEmail(e.target.value);\r\n };\r\n\r\n return (\r\n \r\n {/* \r\n {t(\"DialogTitle\")}\r\n */}\r\n \r\n {t(\"DialogTitle\")}\r\n \r\n \r\n \r\n {t(\"shareAddressInfo\")}\r\n\r\n \r\n setComments(e.target.value)}\r\n fullWidth\r\n />\r\n \r\n }\r\n label={t(\"ShareWithDifferentuser\")}\r\n />\r\n {isDiffUser ? (\r\n <>\r\n setSenderEmail(e.target.value)}\r\n fullWidth\r\n validators={[\"required\", \"isEmail\", \"isEmailMatch\"]}\r\n errorMessages={[\r\n t(\"errorRequired\"),\r\n t(\"errorEmailValid\"),\r\n t(\"errorEmailMatch\"),\r\n ]}\r\n />\r\n \r\n ) : (\r\n \"\"\r\n )}\r\n \r\n \r\n }\r\n >\r\n {t(\"Cancel\")}\r\n \r\n }\r\n >\r\n {t(\"Share\")}\r\n \r\n \r\n {isLoading ? : \"\"}\r\n \r\n {showShareAlert ? (\r\n \r\n \r\n {alertShareType == \"success\" ? \"Success\" : \"Error\"}\r\n \r\n {alertShareMsg}\r\n \r\n ) : (\r\n \"\"\r\n )}\r\n \r\n );\r\n};\r\nconst mapStateToProps = (state) => {\r\n return {\r\n appSettings: state.settings,\r\n };\r\n};\r\nexport default connect(mapStateToProps, null)(ShareAddressDialog);\r\n","import { Paper, Typography } from \"@material-ui/core\";\r\nimport { Link } from \"react-router-dom\";\r\nimport Box from \"@material-ui/core/Box\";\r\nimport { useTranslation } from \"react-i18next\";\r\nexport function PlusCodeInfo(props) {\r\n const { t, i18n } = useTranslation(\"mapPage\");\r\n return (\r\n \r\n {/* */}\r\n {/* Plus Codes */}\r\n \r\n \r\n Plus Codes\r\n \r\n {t(\"PlusCodeInfo1\")}\r\n \r\n {/* To Know more about Plus Codes press here .. */}\r\n {/* */}\r\n {t(\"PlusCodeInfoBtn\")}\r\n \r\n );\r\n}\r\n\r\nexport function What3WordsInfo(props) {\r\n const { t, i18n } = useTranslation(\"mapPage\");\r\n return (\r\n <>\r\n \r\n \r\n What3words\r\n \r\n\r\n {t(\"What3Wordsinfo1\")}\r\n \r\n {/* \r\n To Know more about Plus Codes press here ..\r\n */}\r\n {t(\"What3WordsInfoBtn\")}\r\n \r\n );\r\n}\r\n\r\nexport function LatLngInfo(props) {\r\n const { t, i18n } = useTranslation(\"mapPage\");\r\n return (\r\n <>\r\n \r\n Latitude and Longitude\r\n {t(\"LocationInfo1\")}\r\n \r\n {t(\"LocationInfoBtn\")}\r\n \r\n );\r\n}\r\n\r\nexport function MakaniInfo(props) {\r\n const { t, i18n } = useTranslation(\"mapPage\");\r\n return (\r\n <>\r\n \r\n Makani \r\n {t(\"MakaniInfo1\")}\r\n \r\n {t(\"MakaniInfoBtn\")}\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport {\r\n Grid,\r\n Snackbar,\r\n ButtonGroup,\r\n Avatar,\r\n Card,\r\n CardHeader,\r\n CardContent,\r\n Box,\r\n CardActions,\r\n Fab,\r\n} from \"@material-ui/core\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport {\r\n EmailShareButton,\r\n FacebookShareButton,\r\n LinkedinShareButton,\r\n WhatsappShareButton,\r\n TwitterShareButton,\r\n FacebookMessengerShareButton,\r\n} from \"react-share\";\r\nimport {\r\n EmailIcon,\r\n FacebookIcon,\r\n LinkedinIcon,\r\n WhatsappIcon,\r\n TwitterIcon,\r\n FacebookMessengerIcon,\r\n} from \"react-share\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { appConifg } from \"../../config/default\";\r\n\r\nfunction ShareAddressComponent(props) {\r\n const ICONS_SIZE = 38;\r\n const { t, i18n } = useTranslation(\"ShareAddressComponent\");\r\n\r\n const store_addressDetailsData = props.store_addressDetailsData;\r\n const setShareOpen = props.setShareOpen;\r\n const lang = props.lang;\r\n\r\n const isLangArActive = (lang === \"ar\");\r\n\r\n const AddNum = store_addressDetailsData.addressId;\r\n const StNameEn = store_addressDetailsData.streetNameEnglish;\r\n const StNameAr = store_addressDetailsData.streetNameArabic;\r\n const AreaEn = store_addressDetailsData.areaNameEn;\r\n const AreaAr = store_addressDetailsData.areaNameAr;\r\n const PostalCode = store_addressDetailsData.postalCode;\r\n\r\n const addressStringEn = `${AddNum},${StNameEn},${AreaEn},${PostalCode}`;\r\n const addressStringAr = `${AddNum},${StNameAr},${AreaAr},${PostalCode}`;\r\n\r\n //const addressString = isLangArActive ? addressStringAr : addressStringEn;\r\n //const shareTextPrefix = t(\"ShareTextPrefix\");\r\n // const shareHashTag = t(\"ShareHashTag\");\r\n // const shareSummary = t(\"ShareSummary\");\r\n const BASE_ADDRESS_SHARE_LINK = appConifg.Address.ShareAddressBaseUrl;\r\n const addressLink = `${BASE_ADDRESS_SHARE_LINK}${store_addressDetailsData.addressPointId}&lang=${lang}`;\r\n\r\n //const shareText = `${shareTextPrefix} ${addressString}`;\r\n\r\n const NEWLINE_CHAR = '\\n';\r\n const GreetingsTxt = t(\"GreetingsTxt\");\r\n const BuildingNoTxt = t(\"BuildingNoTxt\");\r\n const StreetTxt = t(\"StreetTxt\");\r\n const AreaTxt = t(\"AreaTxt\");\r\n const PostalCodeTxt = t(\"PostalCodeTxt\");\r\n const AddressLinkTxt = t(\"AddressLinkTxt\");\r\n\r\n const formatedAddressMessageEn = `${GreetingsTxt} ${NEWLINE_CHAR} ${BuildingNoTxt} ${AddNum} ${NEWLINE_CHAR} ${StreetTxt} ${StNameEn} ${NEWLINE_CHAR} ${AreaTxt} ${AreaEn} ${NEWLINE_CHAR} ${PostalCodeTxt} ${PostalCode} ${NEWLINE_CHAR} ${AddressLinkTxt} ${NEWLINE_CHAR} `;\r\n const formatedAddressMessageAr = `${GreetingsTxt} ${NEWLINE_CHAR} ${BuildingNoTxt} ${AddNum} ${NEWLINE_CHAR} ${StreetTxt} ${StNameAr} ${NEWLINE_CHAR} ${AreaTxt} ${AreaAr} ${NEWLINE_CHAR} ${PostalCodeTxt} ${PostalCode} ${NEWLINE_CHAR} ${AddressLinkTxt} ${NEWLINE_CHAR} `;\r\n \r\n\r\n \r\n return (\r\n \r\n \r\n {/* \r\n \r\n
\r\n {t(\"Share\")}\r\n
\r\n
\r\n
*/}\r\n \r\n \r\n \r\n
{t(\"Share\")}
\r\n
\r\n
\r\n {\r\n setShareOpen(true);\r\n }}\r\n >\r\n\r\n {/* \r\n \r\n */}\r\n\r\n \r\n \r\n \r\n \r\n\r\n {/* \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n */}\r\n
\r\n {/* */}\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default ShareAddressComponent;\r\n","import React, { useState } from \"react\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport { styled } from \"@material-ui/core/styles\";\r\nimport { connect } from \"react-redux\";\r\nimport {\r\n zoomToDisplayedAddressGraphic,\r\n IsPointInsideRakBoundary_4326,\r\n} from \"../map/AddressingMapView\"; //TODO : change this as its a bad practise the components should communicate in ReactWay\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport LightTooltip from \"../../components/ui/LightTooltip\";\r\nimport Link from \"@material-ui/core/Link\";\r\nimport InfoOutlinedIcon from \"@material-ui/icons/InfoOutlined\";\r\nimport ExpandMoreIcon from \"@material-ui/icons/ExpandMore\";\r\nimport ReportProblemOutlinedIcon from \"@material-ui/icons/ReportProblemOutlined\";\r\nimport { isMobile, isTablet, isMobileOnly } from \"react-device-detect\";\r\nimport {\r\n Dialog,\r\n DialogTitle,\r\n DialogContent,\r\n DialogContentText,\r\n DialogActions,\r\n} from \"@material-ui/core\";\r\n\r\nimport {\r\n Grid,\r\n Snackbar,\r\n ButtonGroup,\r\n Avatar,\r\n Card,\r\n CardHeader,\r\n CardContent,\r\n Box,\r\n CardActions,\r\n Fab,\r\n} from \"@material-ui/core\";\r\nimport Divider from \"@material-ui/core/Divider\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport { LocationOn, Language, Share, Edit, Warning } from \"@material-ui/icons\";\r\nimport {\r\n StreetSvg2,\r\n PolygonSvg,\r\n LetterBoxSvg,\r\n} from \"../../components/ui/Icons/CustomIcons\";\r\nimport { Clear as ClearIcon } from \"@material-ui/icons\";\r\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\r\nimport w3wIcon from \"../../assets/img/W3W.png\";\r\nimport plusCodeIcon from \"../../assets/img/plusCode.png\";\r\nimport MakaniICon from \"../../assets/img/makani-icon.png\";\r\nimport { Alert } from \"@material-ui/lab\";\r\n\r\nimport { clearAddressDetails } from \"../../redux/reducers/addressDetailsReducer\";\r\nimport { clearAddressResult } from \"../../redux/actions/addressingResultActions\";\r\nimport { setSidePanelopen } from \"../../redux/actions/mapPanelControlActions\";\r\n//update Shamnas\r\nimport { setActivePage } from \"../../redux/actions/appSettingsActions\";\r\nimport { useHistory } from \"react-router-dom\";\r\n// import { useCookies } from \"react-cookie\";\r\n\r\nimport ReportIssueDialog from \"./ReportIssueDialog\";\r\nimport ShareAddressDialog from \"./ShareAddressDialog\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport {\r\n LatLngInfo,\r\n PlusCodeInfo,\r\n What3WordsInfo,\r\n MakaniInfo,\r\n} from \"./InfoHelp\";\r\nimport Collapse from \"@material-ui/core/Collapse\";\r\n\r\nimport ShareAddressComponent from \"./ShareAddressComponent\";\r\n\r\nimport { WhatsappShareButton, WhatsappIcon, EmailIcon , } from \"react-share\"\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n width: \"100%\",\r\n backgroundColor: theme.palette.background.paper,\r\n overflow: \"auto\",\r\n },\r\n chip: {\r\n margin: theme.spacing(0.5),\r\n },\r\n divider: {\r\n margin: theme.spacing(1),\r\n },\r\n card: {\r\n width: \"100%\",\r\n },\r\n cardHeader: {\r\n //backgroundColor: \"lightgrey\",\r\n backgroundColor: theme.palette.common.lightgrey,\r\n padding: \"6px\",\r\n },\r\n section1: {\r\n margin: theme.spacing(3, 2),\r\n },\r\n section2: {\r\n marginLeft: theme.spacing(5),\r\n marginRight: theme.spacing(5),\r\n },\r\n section3: {\r\n // margin: theme.spacing(3, 1, 1),\r\n height: \"100%\",\r\n direction: \"row\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n },\r\n items: {\r\n padding: theme.spacing(2),\r\n },\r\n formControl: {\r\n margin: theme.spacing(1),\r\n minWidth: 120,\r\n },\r\n button: {\r\n marginRight: theme.spacing(1),\r\n },\r\n backdrop: {\r\n zIndex: theme.zIndex.drawer + 1,\r\n color: \"#fff\",\r\n },\r\n avatar: {\r\n //backgroundColor: red[500],\r\n backgroundColor: theme.palette.primary.light,\r\n },\r\n cardAction: {\r\n justifyContent: \"flex-end\",\r\n },\r\n\r\n customAccordian: {},\r\n}));\r\n\r\nfunction AddressDetailsPane(props) {\r\n // const [cookies, setCookie] = useCookies([\"page\"]);\r\n // const [cookiesStore, setCookieStore] = useCookies([\"store\"]);\r\n const classes = useStyles();\r\n const history = useHistory();\r\n const { t, i18n } = useTranslation(\"mapPage\");\r\n const [showOtherAddressFormats, setShowOtherAddressFormats] = useState(false);\r\n //Getting Varialbes from Store\r\n const store_address_result = props.addressingResult;\r\n const store_address_result_loading = props.addressingResult.loading;\r\n\r\n const store_addressDetails = props.addressDetails;\r\n const store_addressDetailsData = store_addressDetails.data;\r\n const isLangArActive = props.appSettings.language === \"ar\";\r\n\r\n // const store_addressDetailsData_hasValue =()=>{\r\n // if(!store_addressDetailsData) return false\r\n // if(typeof(store_addressDetailsData) === \"object\"){\r\n // return Object.keys(store_addressDetailsData).length > 0\r\n // }else if(Array.isArray(store_addressDetailsData)){\r\n // return (store_addressDetailsData.length > 0)\r\n // }\r\n // }\r\n\r\n const hasValue = (obj) => {\r\n if (!obj) return false;\r\n if (typeof obj === \"object\") {\r\n return Object.keys(obj).length > 0;\r\n } else if (Array.isArray(obj)) {\r\n return obj.length > 0;\r\n }\r\n };\r\n\r\n const AddressPointId = store_addressDetailsData.addressPointId;\r\n const AddNum = store_addressDetailsData.addressId;\r\n const StNameEn = store_addressDetailsData.streetNameEnglish;\r\n const StNameAr = store_addressDetailsData.streetNameArabic;\r\n const Emirate = store_addressDetailsData.emirate;\r\n\r\n const AreaEn = store_addressDetailsData.areaNameEn;\r\n const AreaAr = store_addressDetailsData.areaNameAr;\r\n\r\n const PostalCode = store_addressDetailsData.postalCode;\r\n const ParcelId = store_addressDetailsData.parcelId;\r\n const Lat = store_addressDetailsData.latitude;\r\n const Lng = store_addressDetailsData.longitude;\r\n\r\n const PlusCode = store_addressDetailsData.plusCode\r\n ? store_addressDetailsData.plusCode\r\n : \"\";\r\n const ThreeWordsEn = store_addressDetailsData.threeWordsEn\r\n ? store_addressDetailsData.threeWordsEn\r\n : \"\";\r\n const ThreeWordsAr = store_addressDetailsData.threeWordsAr\r\n ? store_addressDetailsData.threeWordsAr\r\n : \"\";\r\n\r\n const ThreeWordsUrdu = store_addressDetailsData.threeWordsUrdu\r\n ? store_addressDetailsData.threeWordsUrdu\r\n : \"\";\r\n\r\n const BuildingNameE = store_addressDetailsData.buidlingNameE\r\n ? store_addressDetailsData.buidlingNameE\r\n : \"\";\r\n\r\n const BuildingNameA = store_addressDetailsData.buildingNameA\r\n ? store_addressDetailsData.buildingNameA\r\n : \"\";\r\n\r\n const CommunityNameE = store_addressDetailsData.communityNameE\r\n ? store_addressDetailsData.communityNameE\r\n : \"\";\r\n\r\n const CommunityNameA = store_addressDetailsData.communityNameA\r\n ? store_addressDetailsData.communityNameA\r\n : \"\";\r\n\r\n const MakaniNumber = store_addressDetailsData.makani\r\n ? store_addressDetailsData.makani\r\n : null;\r\n\r\n const [shareOpen, setShareOpen] = useState(false);\r\n const [reportOpen, setReportOpen] = useState(false);\r\n const [snackOpen, setSnackOpen] = useState(false);\r\n const [toastMsg, setToastMsg] = useState(false);\r\n const [loginAlertflg, setLoginAlertflg] = useState(false);\r\n\r\n const zoomToMapAddressGraphic = function () {\r\n //Here Before Zooming , detect if it mobile and if mobile hide the AddressDetails Pane\r\n //close the Address details panel if mobile only\r\n if (isMobileOnly) {\r\n props.closeAddressPanel();\r\n setTimeout(() => {\r\n //wait unitll the panel closes and zoom\r\n zoomToDisplayedAddressGraphic();\r\n }, 200);\r\n } else {\r\n zoomToDisplayedAddressGraphic();\r\n }\r\n };\r\n const handleShareClose = () => {\r\n setShareOpen(false);\r\n };\r\n\r\n const handleSnackClose = () => {\r\n setSnackOpen(false);\r\n setToastMsg(\"\");\r\n };\r\n const successMessageToast = (Message) => {\r\n setToastMsg(Message);\r\n setSnackOpen(true);\r\n };\r\n\r\n const getGooglePlusCodeLink = (plusCode) => {\r\n return \"https://www.google.com/maps/place/\" + plusCode.replace(\"+\", \"%2B\");\r\n };\r\n\r\n const getGoogleLatLngLink = (lat, lng) => {\r\n return \"https://www.google.com/maps/place/\" + lat + \"+\" + lng;\r\n };\r\n\r\n const getW3WLink = (w3w) => {\r\n return \"https://what3words.com/\" + w3w;\r\n };\r\n\r\n const WidgetPaneToggler = () => (\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 OtherAddressFormatsAccordian = () => (\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 const ExpandMore = styled((props) => {\r\n const { expand, ...other } = props;\r\n return ;\r\n })(({ theme, expand }) => ({\r\n transform: !expand ? \"rotate(0deg)\" : \"rotate(180deg)\",\r\n marginLeft: \"auto\",\r\n transition: theme.transitions.create(\"transform\", {\r\n duration: theme.transitions.duration.shortest,\r\n }),\r\n }));\r\n\r\n const handleExpandClick = () => {\r\n setShowOtherAddressFormats(!showOtherAddressFormats);\r\n };\r\n\r\n const AddressBit = () => (\r\n <>\r\n \r\n \r\n \r\n zoomToMapAddressGraphic()}\r\n color=\"primary\"\r\n >\r\n \r\n \r\n {/* zoomToMapAddressGraphic()}\r\n /> */}\r\n \r\n \r\n \r\n \r\n
\r\n {t(\"HouseNumberlbl\")}   {AddNum}\r\n
\r\n {/* {AddNum}, {StNameEn} {StNameEn === StNameAr ? null : `(${StNameAr})`} */}\r\n
\r\n
\r\n \r\n \r\n {isLangArActive ? (\r\n StNameAr ? (\r\n
\r\n {t(\"StreetNamelbl\")}   {StNameAr}\r\n
\r\n ) : (\r\n StNameAr\r\n )\r\n ) : StNameEn ? (\r\n
\r\n {t(\"StreetNamelbl\")}   {StNameEn}{\" \"}\r\n
\r\n ) : (\r\n StNameEn\r\n )}\r\n {/* {AddNum}, {StNameEn} {StNameEn === StNameAr ? null : `(${StNameAr})`} */}\r\n
\r\n
\r\n \r\n \r\n {isLangArActive ? (\r\n BuildingNameA ? (\r\n
\r\n {t(\"BuildingNamelbl\")}   {BuildingNameA}\r\n
\r\n ) : (\r\n BuildingNameA\r\n )\r\n ) : BuildingNameE ? (\r\n
\r\n {t(\"BuildingNamelbl\")}   {BuildingNameE}\r\n
\r\n ) : (\r\n BuildingNameE\r\n )}\r\n
\r\n
\r\n \r\n \r\n {isLangArActive ? (\r\n CommunityNameA ? (\r\n
\r\n {t(\"CommunityNamelbl\")}   {CommunityNameA}\r\n
\r\n ) : (\r\n CommunityNameA\r\n )\r\n ) : CommunityNameA ? (\r\n
\r\n {t(\"CommunityNamelbl\")}   {CommunityNameE}\r\n
\r\n ) : (\r\n CommunityNameE\r\n )}\r\n
\r\n
\r\n \r\n \r\n {isLangArActive ? (\r\n AreaAr ? (\r\n
\r\n {t(\"AreaName\")}   {AreaAr}\r\n
\r\n ) : (\r\n AreaAr\r\n )\r\n ) : AreaEn ? (\r\n
\r\n {t(\"AreaName\")}   {AreaEn}\r\n
\r\n ) : (\r\n AreaEn\r\n )}\r\n {/* {AreaEn} {AreaEn == AreaAr ? null : `(${AreaAr})`} */}\r\n
\r\n
\r\n \r\n \r\n {PostalCode ? (\r\n
\r\n {t(\"PostalCode\")}   {PostalCode}\r\n
\r\n ) : (\r\n PostalCode\r\n )}\r\n
\r\n
\r\n \r\n \r\n {isLangArActive ? (\r\n
\r\n {t(\"Emirate\")}   {\"رأس الخيمة\"}\r\n
\r\n ) : (\r\n
\r\n {t(\"Emirate\")}   {\"Ras Al Khaimah\"}\r\n
\r\n )}\r\n {/* {Emirate} */}\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 const LatLngAddressBit = () => (\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 {Lat} {Lng}\r\n \r\n \r\n \r\n \r\n } arrow interactive>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n const PlusCodeBit = () => (\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 {PlusCode}\r\n \r\n \r\n \r\n \r\n } arrow interactive>\r\n \r\n \r\n \r\n {/* */}\r\n \r\n \r\n \r\n \r\n );\r\n\r\n const W3wBit = () => (\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 {/* {ThreeWordsAr} */}\r\n \r\n {ThreeWordsAr}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {ThreeWordsEn}\r\n \r\n\r\n {/* {ThreeWordsEn} */}\r\n \r\n \r\n \r\n \r\n {ThreeWordsUrdu}\r\n \r\n \r\n \r\n \r\n \r\n } arrow interactive>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n const MakaniBit = () => (\r\n <>\r\n {MakaniNumber ? (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {MakaniNumber}\r\n \r\n \r\n \r\n } arrow interactive>\r\n \r\n \r\n \r\n {/* */}\r\n \r\n \r\n \r\n \r\n ) : null}\r\n \r\n );\r\n\r\n //To Hide Parcel Id --- Not showing this\r\n const AdditionalAddressInfoBit = () => (\r\n
\r\n \r\n {t(\"AdditionalInformation\")} :\r\n \r\n
\r\n \r\n \r\n \r\n {t(\"ParcelID\")}\r\n \r\n \r\n \r\n \r\n {/* {ParcelId} */}\r\n \r\n {ParcelId}\r\n \r\n {/* \r\n \r\n */}\r\n {/* zoomToMapAddressGraphic()}\r\n /> */}\r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n\r\n const UserActionButtons = () => (\r\n \r\n \r\n {/*
*/}\r\n \r\n {/* }\r\n onClick={() => {\r\n setShareOpen(true);\r\n }}\r\n >\r\n {t(\"Share\")}\r\n */}\r\n }\r\n onClick={HandleReportIssue}\r\n >\r\n {t(\"Report\")}\r\n \r\n }\r\n onClick={() => {\r\n props.clearAddressDisplay();\r\n }}\r\n >\r\n {t(\"Clear\")}\r\n \r\n \r\n {/*
*/}\r\n \r\n {/* Just Using the existing Share Email functionality (passing the \"shareOpen\" state )- insted of doing in the ShareAddressing Component-- to save development time*/}\r\n \r\n
\r\n );\r\n\r\n const DisplayAddressHTML = () => {\r\n return (\r\n
\r\n
\r\n \r\n {/* \r\n {t(\"AdrsAvatar\")}\r\n \r\n }\r\n title={t(\"AddressInformation\")}\r\n /> */}\r\n \r\n \r\n {/* */}\r\n \r\n \r\n {/* */}\r\n
\r\n\r\n {/* Hiding Parcel Id*/}\r\n {/* \r\n */}\r\n
\r\n );\r\n };\r\n\r\n const DisplayClickInsideRakBoundary = () => {\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 // {t(\"ClickInsideRAKMessage\")}\r\n // \r\n // \r\n // \r\n // \r\n // \r\n // }\r\n // onClick={() => {\r\n // props.clearAddressDisplay();\r\n // }}\r\n // >\r\n // {t(\"Clear\")}\r\n // \r\n // \r\n // \r\n //
\r\n //
\r\n
\r\n \r\n {/* \r\n A\r\n \r\n }\r\n title=\"Address Information\"\r\n /> */}\r\n \r\n {/* */}\r\n \r\n \r\n \r\n {/* No Address Details found for this locatoin */}\r\n {t(\"NoAddressDetails\")}\r\n \r\n {/* */}\r\n \r\n \r\n }\r\n onClick={() => {\r\n props.clearAddressDisplay();\r\n }}\r\n >\r\n {t(\"Clear\")}\r\n \r\n \r\n \r\n
\r\n );\r\n };\r\n\r\n const ErrorDisplayHTML = () => (\r\n
\r\n \r\n \r\n \r\n \r\n {t(\"errormsg\")}\r\n \r\n \r\n {/* \r\n \r\n */}\r\n \r\n
\r\n );\r\n\r\n const LatLngBit = (props) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.lat}\r\n \r\n \r\n \r\n \r\n {props.lng}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n const ReportIssueButton = () => (\r\n }\r\n onClick={HandleReportIssue}\r\n >\r\n {t(\"Report\")}\r\n \r\n );\r\n\r\n // Update Shamnas -- to Report issue for logged in users only\r\n const HandleReportIssue = () => {\r\n // setReportOpen(true);\r\n // return;\r\n // uncomment to enable login to report issue\r\n let userName = props.appSettings.userCredentials.user\r\n ? props.appSettings.userCredentials.user.userName\r\n : props.appSettings.userCredentials.acmUser.userName;\r\n if (userName == \"AdrsAnonymousUsr\") {\r\n // setCookieStore(\"store\", JSON.stringify(props.addressingResult), {\r\n // path: \"/\",\r\n // });\r\n // props.setActivePage(\"Login\");\r\n // history.push(\"/Login\");\r\n setLoginAlertflg(true);\r\n } else setReportOpen(true);\r\n };\r\n\r\n const DisplayWelcomeHTML = () => (\r\n
\r\n \r\n \r\n {t(\"AdrsAvatar\")}\r\n \r\n }\r\n title={t(\"AddressingService\")}\r\n />\r\n \r\n \r\n \r\n {t(\"welcomeMsg\")}\r\n \r\n \r\n \r\n {t(\"RAKAddressInfo\")}\r\n \r\n \r\n \r\n

\r\n {t(\"findmsg\")} {t(\"msg1\")} {t(\"or\")} {\" \"}\r\n {t(\"searchBar\")} {t(\"searchMsg\")}\r\n

\r\n
\r\n
\r\n
\r\n
\r\n );\r\n\r\n const DisplayContent = () => {\r\n if (store_address_result_loading || store_addressDetails.loading)\r\n return (\r\n \r\n \r\n \r\n );\r\n else if (!store_address_result.fetchType) {\r\n //nothing searched yet or cleared previous seach\r\n return ;\r\n } else if (store_address_result.error || store_addressDetails.error) {\r\n //Error Occured Please constact admin\r\n return ;\r\n } else if (\r\n store_address_result.fetchType == \"Text_Search\" &&\r\n !hasValue(store_addressDetailsData)\r\n // store_addressDetailsData.length < 1\r\n ) {\r\n //address search didnt yield result\r\n return (\r\n
\r\n {\" \"}\r\n \r\n
\r\n );\r\n } else if (\r\n store_address_result.fetchType == \"Suggestion_Select\" &&\r\n !hasValue(store_addressDetailsData)\r\n //store_addressDetailsData.length < 1\r\n ) {\r\n //means street or area or post found and No Address Point found\r\n //return
No Address Found
;\r\n return (\r\n
\r\n {\" \"}\r\n \r\n
\r\n );\r\n } else if (\r\n store_address_result.fetchType == \"Map_Click\" &&\r\n !hasValue(store_addressDetailsData)\r\n ) {\r\n var isInside = IsPointInsideRakBoundary_4326(\r\n store_address_result.fetchInput\r\n );\r\n if (isInside) {\r\n return ;\r\n } else {\r\n return ;\r\n }\r\n } else {\r\n return ;\r\n }\r\n };\r\n\r\n //const [mapClicklatlng ,setMapClickLatLng ] = useState({lat : '' , lng : ''})\r\n\r\n // useEffect(() => {\r\n // let mounted = true\r\n // if(store_address_result_loading) return\r\n // if (store_address_result.fetchType != \"Map_Click\") {\r\n // mounted && setMapClickLatLng({ lat: \"\", lng: \"\" });\r\n // return;\r\n // }\r\n // if(hasValue(store_addressDetailsData)) {\r\n // mounted && setMapClickLatLng({ lat: \"\", lng: \"\" });\r\n // return;\r\n // }\r\n\r\n // // if((!store_address_result.fetchType == \"Map_Click\" )|| ( !store_addressDetailsData.length < 1)){\r\n // // mounted && setMapClickLatLng({lat : '', lng:''})\r\n // // return\r\n // // }\r\n\r\n // let mapX = store_address_result.fetchInput.x;\r\n // let mapY = store_address_result.fetchInput.y;\r\n // const point32640 = new Point({\r\n // x: mapX,\r\n // y: mapY,\r\n // spatialReference: { wkid: 32640 },\r\n // });\r\n // let outSpatialReference = new SpatialReference({ wkid: 4326 });\r\n // esriProject.load().then(() => {\r\n // let projectPnt = esriProject.project(point32640, outSpatialReference);\r\n // mounted && setMapClickLatLng({ lat: projectPnt.y, lng: projectPnt.x });\r\n // });\r\n\r\n // return(()=>{\r\n // mounted = false\r\n // })\r\n\r\n // }, [store_addressDetails]);\r\n\r\n const NotPointAddressFoundContent = () => {\r\n if (!store_address_result.candidates || !store_address_result.candidates[0])\r\n return <>;\r\n const address_candidate_attributes =\r\n store_address_result.candidates[0].attributes;\r\n const address_type = address_candidate_attributes.Addr_type;\r\n const address = address_candidate_attributes.Match_addr;\r\n\r\n const display_cnt = (address_typ, address_content, icon) => (\r\n
\r\n \r\n \r\n \r\n\r\n \r\n {\r\n zoomToMapAddressGraphic();\r\n }}\r\n >\r\n {\" \"}\r\n {icon}{\" \"}\r\n \r\n {address_typ} : {address_content}\r\n \r\n \r\n \r\n }\r\n onClick={() => {\r\n props.clearAddressDisplay();\r\n }}\r\n >\r\n {t(\"Clear\")}\r\n \r\n \r\n \r\n
\r\n );\r\n\r\n switch (address_type) {\r\n case \"StreetName\": //street\r\n return display_cnt(t(\"Street\"), address, );\r\n case \"Locality\": //Area\r\n return display_cnt(t(\"Area\"), address, );\r\n case \"Postal\":\r\n return display_cnt(t(\"PostalArea\"), address, );\r\n default:\r\n return <>;\r\n }\r\n };\r\n\r\n const NoAddressFoundContent = () => {\r\n if (store_address_result.fetchType == \"Map_Click\") {\r\n //get xy and display that with Report Issue button\r\n\r\n return (\r\n
\r\n \r\n {/* \r\n A\r\n \r\n }\r\n title=\"Address Information\"\r\n /> */}\r\n \r\n {/* */}\r\n \r\n \r\n \r\n {/* No Address Details found for this locatoin */}\r\n {t(\"NoAddressDetails\")}\r\n \r\n {/* */}\r\n \r\n \r\n }\r\n onClick={() => {\r\n props.clearAddressDisplay();\r\n }}\r\n >\r\n {t(\"Clear\")}\r\n \r\n \r\n \r\n \r\n
\r\n );\r\n } else if (store_address_result.fetchType == \"Text_Search\") {\r\n //diplay no address found for the User Search Text\r\n let searchTxt = store_address_result.fetchInput;\r\n return (\r\n
\r\n \r\n {/* \r\n A\r\n \r\n }\r\n title=\"Address Information\"\r\n /> */}\r\n \r\n \r\n \r\n {/* No Address Details found for Search : {searchTxt} */}\r\n {t(\"NoAddressDetailsFor\")} : {searchTxt}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n } else if (store_address_result.fetchType == \"Suggestion_Select\") {\r\n //mean NonPoint address is selected from the Suggestion\r\n //This point should not happen\r\n // return \r\n // return
{store_address_result.candidates[0].address}
\r\n return ;\r\n } else {\r\n return ;\r\n }\r\n };\r\n\r\n const LoginAlert = () => {\r\n return (\r\n {\r\n setLoginAlertflg(false);\r\n }}\r\n aria-labelledby=\"alert-dialog-title\"\r\n aria-describedby=\"alert-dialog-description\"\r\n >\r\n \r\n {t(\"AlertToLoginHeading\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {t(\"AlertToLoginMsg\")}\r\n \r\n \r\n \r\n \r\n \r\n {\r\n setLoginAlertflg(false);\r\n }}\r\n color=\"primary\"\r\n >\r\n {t(\"AlertToLoginCloseBtn\")}\r\n \r\n {\r\n history.push(\"/Login\");\r\n }}\r\n color=\"primary\"\r\n autoFocus\r\n >\r\n {t(\"AlertToLoginBtn\")}\r\n \r\n \r\n \r\n );\r\n };\r\n\r\n return (\r\n
\r\n \r\n\r\n {shareOpen ? (\r\n ${AreaEn}( ${AreaAr} )
${PostalCode}
${Emirate}`,\r\n Address: !isLangArActive\r\n ? `${AddNum} , ${StNameEn} , ${AreaEn} , ${PostalCode} , Ras Al Khaimah`\r\n : `${AddNum} , ${StNameAr} , ${AreaAr} , ${PostalCode} , رأس الخيمة`,\r\n PlusCode: PlusCode,\r\n ThreeWordsAddress: ThreeWordsEn,\r\n ThreeWordsAddressAR: ThreeWordsAr,\r\n Latitude: Lat,\r\n Longitude: Lng,\r\n ParcelId: ParcelId,\r\n Makani: MakaniNumber ? MakaniNumber : \"\",\r\n }}\r\n token={props.appSettings.userCredentials.token}\r\n open={shareOpen}\r\n onClose={handleShareClose}\r\n onSuccess={(msg) => successMessageToast(msg)}\r\n />\r\n ) : (\r\n \"\"\r\n )}\r\n {reportOpen ? (\r\n setReportOpen(false)}\r\n onSuccess={(msg) => successMessageToast(msg)}\r\n lat={Lat ? Lat : props.addressingResult.fetchInput.y}\r\n lng={Lng ? Lng : props.addressingResult.fetchInput.x}\r\n />\r\n ) : (\r\n \"\"\r\n )}\r\n \r\n \r\n {toastMsg}\r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n addressingResult: state.addressingResult,\r\n addressDetails: state.addressDetails,\r\n appSettings: state.settings,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => {\r\n return {\r\n clearAddressDisplay: () => {\r\n dispatch(clearAddressResult());\r\n dispatch(clearAddressDetails());\r\n },\r\n // Update Shamnas -- to activate Login to Report\r\n setActivePage: (page) => dispatch(setActivePage(page)),\r\n closeAddressPanel: () => {\r\n return dispatch(setSidePanelopen(false)); //to display the sidePanel\r\n },\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(AddressDetailsPane);\r\n","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","import React, { useEffect, useState } from \"react\";\r\nimport clsx from \"clsx\";\r\nimport { makeStyles, useTheme } from \"@material-ui/core/styles\";\r\nimport { Tabs, Tab, AppBar, Grid } from \"@material-ui/core\";\r\n\r\nimport AddressingMapView from \"./AddressingMapView\";\r\nimport AddressingMapViewOption2 from \"./AddressingMapViewOption2\";\r\nimport AddressingMapViewOption3 from \"./AddressingMapViewOption3\";\r\n\r\nimport Drawer from \"@material-ui/core/Drawer\";\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport {\r\n setSidePanelopen,\r\n setSidePanelResultType,\r\n} from \"../../redux/actions/mapPanelControlActions\";\r\n\r\nimport \"../../App.css\";\r\nimport IssuesInbox from \"../AddressIssues/IssuesInbox\";\r\nimport AddressDetailsPane from \"../AddressResult/AddressDetailsPane\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { IconButton } from \"@material-ui/core\";\r\nimport OpenPanel from \"@material-ui/icons/ArrowRight\";\r\nimport ClosePanel from \"@material-ui/icons/ArrowLeft\";\r\nimport ReactGA from \"react-ga\";\r\n\r\n// import \"../App.css\";\r\nlet drawerWidth =\r\n document.body.offsetWidth > 400 ? 400 : document.body.offsetWidth;\r\nlet sideFlag = document.body.offsetWidth > 400 ? true : false;\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n display: \"flex\",\r\n height: \"100%\",\r\n },\r\n root2: {\r\n flexGrow: 1,\r\n maxWidth: 500,\r\n },\r\n menuButton: {\r\n marginRight: theme.spacing(2),\r\n },\r\n hide: {\r\n display: \"none\",\r\n },\r\n drawer: {\r\n width: drawerWidth,\r\n flexShrink: 0,\r\n height: \"100%\",\r\n },\r\n drawerPaper: {\r\n width: drawerWidth,\r\n top: \"auto\",\r\n height: \"calc(100vh - 69px)\",\r\n boxShadow: \"0 0 35px rgb(0 0 0 / 35%)\",\r\n },\r\n drawerHeader: {\r\n // display: \"flex\",\r\n alignItems: \"center\",\r\n padding: theme.spacing(0, 1),\r\n backgroundColor: theme.palette.primary.light,\r\n // backgroundColor: \"#453c90\",\r\n // necessary for content to be below app bar\r\n //...theme.mixins.toolbar,\r\n // justifyContent: \"flex-end\",\r\n },\r\n indicator: {\r\n backgroundColor: \"lightgrey\",\r\n display: \"none\",\r\n },\r\n content: {\r\n flexGrow: 1,\r\n // padding: theme.spacing(3),\r\n transition: theme.transitions.create(\"margin\", {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.leavingScreen,\r\n }),\r\n marginLeft: -drawerWidth,\r\n height: \"100%\",\r\n },\r\n contentShift: {\r\n transition: theme.transitions.create(\"margin\", {\r\n easing: theme.transitions.easing.easeOut,\r\n duration: theme.transitions.duration.enteringScreen,\r\n }),\r\n marginLeft: 0,\r\n },\r\n contentRtl: {\r\n flexGrow: 1,\r\n // padding: theme.spacing(3),\r\n transition: theme.transitions.create(\"margin\", {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.leavingScreen,\r\n }),\r\n marginRight: -drawerWidth,\r\n height: \"100%\",\r\n },\r\n contentShiftRtl: {\r\n transition: theme.transitions.create(\"margin\", {\r\n easing: theme.transitions.easing.easeOut,\r\n duration: theme.transitions.duration.enteringScreen,\r\n }),\r\n marginRight: 0,\r\n },\r\n chip: {\r\n margin: theme.spacing(0.5),\r\n },\r\n section1: {\r\n margin: theme.spacing(3, 2),\r\n },\r\n section2: {\r\n margin: theme.spacing(2),\r\n },\r\n section3: {\r\n margin: theme.spacing(3, 1, 1),\r\n },\r\n items: {\r\n padding: theme.spacing(2),\r\n },\r\n formControl: {\r\n margin: theme.spacing(1),\r\n minWidth: 120,\r\n },\r\n}));\r\n\r\nfunction MapWrapper(props) {\r\n const classes = useStyles();\r\n const { t, i18n } = useTranslation(\"mapPage\");\r\n // const [open, setOpen] = useState(false);\r\n const dispatch = useDispatch();\r\n const settings = useSelector((state) => state.settings);\r\n const panelProps = useSelector((state) => state.mapPanelSetting);\r\n const theme = useTheme();\r\n useEffect(() => {\r\n dispatch(setSidePanelopen(sideFlag));\r\n ReactGA.pageview(window.location.pathname + window.location.search);\r\n }, []);\r\n\r\n const handleDrawerClose = () => {\r\n // setOpen(false);\r\n dispatch(setSidePanelopen(false));\r\n };\r\n\r\n const handleTabChange = (event, type) => {\r\n dispatch(setSidePanelResultType(type));\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n {settings.userCredentials &&\r\n settings.userCredentials?.user?.roleNames.includes(\r\n \"Addressing_Custodian\"\r\n ) ? (\r\n \r\n ) : (\r\n \"\"\r\n )}\r\n \r\n \r\n \r\n handleDrawerClose(false)}\r\n >\r\n {settings.language == \"en\" ? : }\r\n \r\n \r\n \r\n
\r\n {panelProps.resultType == \"address\" ? (\r\n // \r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n {/* #For-MapOptions */}\r\n {/* {props.showMap === 1 ? : <>}\r\n {props.showMap === 2 ? : <>}\r\n {props.showMap === 3 ? : <>} */}\r\n\r\n \r\n {/* \r\n Share Address\r\n \r\n \r\n To share address to your email, please enter your email address here\r\n and click share.\r\n \r\n setEmail(e.target.value)}\r\n fullWidth\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Report Issue\r\n \r\n \r\n To report an issue, please fill up the below details and click\r\n Report.\r\n \r\n \r\n \r\n \r\n {issueTypes.map((option) => (\r\n \r\n {option.label}\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 MapWrapper;\r\n","export default __webpack_public_path__ + \"static/media/mun_logo.a3415166.jpg\";","export default __webpack_public_path__ + \"static/media/Goverment.8b24efb8.png\";","export default __webpack_public_path__ + \"static/media/logo.b7276fcc.jpg\";","export default __webpack_public_path__ + \"static/media/logo-web.27f3a4f9.png\";","export default __webpack_public_path__ + \"static/media/logo-mobile.ac0340b2.png\";","export default __webpack_public_path__ + \"static/media/manual_Ar.da0dac72.pdf\";","export default __webpack_public_path__ + \"static/media/manual_En.92ebdabe.pdf\";","import React, { useEffect, useState, useRef } from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport logo from \"../assets/img/mun_logo.jpg\";\r\nimport munlogo from \"../assets/img/logo.jpg\";\r\nimport Addlogo_web from \"../assets/img/logo-web.png\";\r\nimport Addlogo_mobile from \"../assets/img/logo-mobile.png\";\r\nimport govLogo from \"../assets/img/Goverment.png\";\r\nimport Tabs from \"@material-ui/core/Tabs\";\r\nimport Tab from \"@material-ui/core/Tab\";\r\nimport MoreIcon from \"@material-ui/icons/MoreVert\";\r\nimport Pdf_ar from \"../assets/docs/manual_Ar.pdf\";\r\nimport Pdf_en from \"../assets/docs/manual_En.pdf\";\r\nimport {\r\n Link,\r\n Avatar,\r\n Popover,\r\n MenuItem,\r\n Button,\r\n IconButton,\r\n Popper,\r\n Grow,\r\n Paper,\r\n MenuList,\r\n SwipeableDrawer,\r\n} from \"@material-ui/core\";\r\nimport ClickAwayListener from \"@material-ui/core/ClickAwayListener\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport { deepPurple } from \"@material-ui/core/colors\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport PersonIcon from \"@material-ui/icons/Person\";\r\nimport HelpIcon from \"@material-ui/icons/HelpOutline\";\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport {\r\n setActivePage,\r\n setActiveLanguage,\r\n setUserCredentials,\r\n} from \"../redux/actions/appSettingsActions\";\r\nimport { appConifg } from \"../config/default\";\r\nimport axios from \"axios\";\r\nimport { setSidePanelResultType } from \"../redux/actions/mapPanelControlActions\";\r\nimport { useCookies } from \"react-cookie\";\r\n\r\nconst useStyles = makeStyles(\r\n (theme) => ({\r\n root: {\r\n display: \"flex\",\r\n },\r\n purple: {\r\n color: theme.palette.getContrastText(deepPurple[500]),\r\n backgroundColor: deepPurple[500],\r\n },\r\n loggedInUserAvatar: {\r\n backgroundColor: theme.palette.primary.light,\r\n },\r\n headerDesktop: {\r\n display: \"none\",\r\n [theme.breakpoints.up(\"md\")]: {\r\n display: \"flex\",\r\n },\r\n justifyContent: \"space-between\",\r\n },\r\n headerMobile: {\r\n display: \"flex\",\r\n [theme.breakpoints.up(\"md\")]: {\r\n display: \"none\",\r\n },\r\n },\r\n sectionDesktop: {\r\n display: \"none\",\r\n [theme.breakpoints.up(\"md\")]: {\r\n display: \"flex\",\r\n },\r\n background: \"linear-gradient(180deg, #f2f2f2, #f2f2f2 90%)\",\r\n color: \"#555\",\r\n },\r\n sectionMobile: {\r\n display: \"flex\",\r\n [theme.breakpoints.up(\"md\")]: {\r\n display: \"none\",\r\n },\r\n background: \"linear-gradient(180deg, #f2f2f2, #f2f2f2 90%)\",\r\n color: \"#555\",\r\n },\r\n languageIcon: {\r\n margin: theme.spacing(1),\r\n },\r\n }),\r\n { index: 1 }\r\n);\r\n\r\nfunction Header(props) {\r\n const classes = useStyles();\r\n const pageSettings = useSelector((state) => state.settings);\r\n const addressingResult = useSelector((state) => state.addressingResult);\r\n const dispatch = useDispatch();\r\n const { t, i18n } = useTranslation(\"header\");\r\n\r\n const [anchorEl, setAnchorEl] = useState(null);\r\n const signOpen = Boolean(anchorEl);\r\n const history = useHistory();\r\n const [cookiesStore, setCookieStore] = useCookies([\"store\", \"langauge\"]);\r\n\r\n const handleClick = (event) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleSignClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const handleChange = (event, newValue) => {\r\n dispatch(setActivePage(newValue));\r\n switch (newValue) {\r\n case \"Home\":\r\n history.push(\"/\");\r\n break;\r\n case \"Map\":\r\n history.push(\"/Map\");\r\n break;\r\n case \"Contact\":\r\n history.push(\"/Contact\");\r\n break;\r\n default:\r\n history.push(\"/\");\r\n }\r\n };\r\n const handleLangChange = () => {\r\n dispatch(setActiveLanguage(pageSettings.language === \"en\" ? \"ar\" : \"en\"));\r\n };\r\n useEffect(() => {\r\n i18n.changeLanguage(pageSettings.language);\r\n //\r\n if (pageSettings.language == \"en\") {\r\n document.body.classList.remove(\"rtllayout\");\r\n document.body.classList.add(\"ltrlayout\");\r\n } else {\r\n document.body.classList.remove(\"ltrlayout\");\r\n document.body.classList.add(\"rtllayout\");\r\n }\r\n }, [pageSettings.language]);\r\n const handleSignout = () => {\r\n if (pageSettings.userCredentials.uaePassUser) {\r\n if (addressingResult)\r\n setCookieStore(\"store\", JSON.stringify(addressingResult), {\r\n path: \"/\",\r\n });\r\n setCookieStore(\"language\", JSON.stringify(pageSettings.language), {\r\n path: \"/\",\r\n });\r\n window.location.replace(\r\n appConifg.UaePassDetails.logoutUrl +\r\n \"?redirect_uri=\" +\r\n appConifg.UaePassDetails.redirectUrl\r\n );\r\n } else {\r\n let data = {};\r\n let axiosConfig = {\r\n headers: {\r\n username: appConifg.AnonymousUser.username,\r\n password: appConifg.AnonymousUser.password,\r\n },\r\n };\r\n axios\r\n .post(\r\n appConifg.Address.AddressApiUrl + \"/Users/Login\",\r\n data,\r\n axiosConfig\r\n )\r\n .then((response) => {\r\n if (response.data?.isSucceeded) {\r\n dispatch(\r\n setUserCredentials({ data: response.data.data, flag: false })\r\n );\r\n dispatch(setSidePanelResultType(\"address\"));\r\n handleSignClose();\r\n } else {\r\n dispatch(setUserCredentials({ data: null, flag: false }));\r\n dispatch(setSidePanelResultType(\"address\"));\r\n handleSignClose();\r\n }\r\n })\r\n .catch((ex) => {\r\n console.log(ex);\r\n dispatch(setUserCredentials({ data: null, flag: false }));\r\n dispatch(setSidePanelResultType(\"address\"));\r\n handleSignClose();\r\n });\r\n }\r\n };\r\n const [mobilePopperOpen, setMobilePopperOpen] = useState(false);\r\n const anchorRef = useRef(null);\r\n const handleToggle = () => {\r\n setMobilePopperOpen((prevOpen) => !prevOpen);\r\n };\r\n function handleListKeyDown(event) {\r\n if (event.key === \"Tab\") {\r\n event.preventDefault();\r\n setMobilePopperOpen(false);\r\n }\r\n }\r\n const handleClose = (event) => {\r\n if (anchorRef.current && anchorRef.current.contains(event.target)) {\r\n return;\r\n }\r\n\r\n setMobilePopperOpen(false);\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 // {pageSettings.language === \"en\" ? \"عربى\" : \"English\"}\r\n // \r\n // \r\n // \r\n // \r\n // console.log(\"Open Drawer\")}\r\n // >\r\n // \r\n // \r\n // \r\n // {\r\n // history.push(\"/Map\");\r\n // handleClose();\r\n // }}\r\n // >\r\n // {t(\"Addressing\")}\r\n // \r\n // {\r\n // history.push(\"/Contact\");\r\n // handleClose();\r\n // }}\r\n // >\r\n // {t(\"Contact\")}\r\n // \r\n // {!pageSettings.isLoggedIn ? (\r\n // {\r\n // history.push(\"/Login\");\r\n // handleClose();\r\n // }}\r\n // >\r\n // {\" \"}\r\n // {t(\"SignIn\")}\r\n // \r\n // ) : pageSettings.userCredentials.user ? (\r\n // pageSettings.userCredentials.user.userTypeName ===\r\n // \"External\" ? (\r\n // {\r\n // history.push(\"/Login\");\r\n // handleClose();\r\n // handleSignClose();\r\n // }}\r\n // >\r\n // {t(\"Reset\")}\r\n // \r\n // ) : (\r\n // \"\"\r\n // )\r\n // ) : (\r\n // \"\"\r\n // )}\r\n // {pageSettings.isLoggedIn ? (\r\n // {\r\n // handleSignout();\r\n // handleClose();\r\n // }}\r\n // >\r\n // {t(\"logout\")}\r\n // \r\n // ) : (\r\n // \"\"\r\n // )}\r\n // \r\n // \r\n // \r\n // \r\n //
\r\n //
\r\n //
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n console.log(\"Open Drawer\")}\r\n >\r\n \r\n \r\n \r\n {\r\n history.push(\"/Map\");\r\n handleClose();\r\n }}\r\n >\r\n {t(\"Addressing\")}\r\n \r\n {\r\n history.push(\"/Contact\");\r\n handleClose();\r\n }}\r\n >\r\n {t(\"Contact\")}\r\n \r\n {!pageSettings.isLoggedIn ? (\r\n {\r\n history.push(\"/Login\");\r\n handleClose();\r\n }}\r\n >\r\n {\" \"}\r\n {t(\"SignIn\")}\r\n \r\n ) : pageSettings.userCredentials.user ? (\r\n pageSettings.userCredentials.user.userTypeName ===\r\n \"External\" ? (\r\n {\r\n history.push(\"/Login\");\r\n handleClose();\r\n handleSignClose();\r\n }}\r\n >\r\n {t(\"Reset\")}\r\n \r\n ) : (\r\n \"\"\r\n )\r\n ) : (\r\n \"\"\r\n )}\r\n {pageSettings.isLoggedIn ? (\r\n {\r\n handleSignout();\r\n handleClose();\r\n }}\r\n >\r\n {t(\"logout\")}\r\n \r\n ) : (\r\n \"\"\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n {pageSettings.language === \"en\" ? \"عربى\" : \"English\"}\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default Header;\r\n","import React from \"react\";\r\n\r\nfunction Footer() {\r\n return (\r\n
\r\n {/*
\r\n
\r\n
\r\n
\r\n
\r\n

RAK municipality GIS Centre

\r\n

\r\n Al Nahdah St - Dafan Al Khor\r\n
\r\n Ras al Khaimah\r\n
\r\n
\r\n Phone: +971 7 2466666\r\n
\r\n Email: gishelpdesk@mun.rak.ae\r\n
\r\n

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

Useful Links

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

Our Services

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

Our Newsletter

\r\n

Tamen quem nulla quae legam multos aute sint culpa legam noster magna

\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
*/}\r\n\r\n
\r\n
\r\n © Copyright{\" \"}\r\n \r\n Ras Al Khaimah Municipality Department\r\n \r\n . All Rights Reserved\r\n
\r\n
\r\n Developed by GIS Centre\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default Footer;\r\n","import React, { useEffect } from \"react\";\r\n\r\nimport { useHistory } from \"react-router-dom\";\r\nimport Footer from \"../footer\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { setActivePage } from \"../../redux/actions/appSettingsActions\";\r\nimport { Typography, Button } from \"@material-ui/core\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n sectionDesktop: {\r\n display: \"none\",\r\n [theme.breakpoints.up(\"md\")]: {\r\n display: \"block\",\r\n },\r\n },\r\n sectionMobile: {\r\n display: \"block\",\r\n marginTop: 100,\r\n [theme.breakpoints.up(\"md\")]: {\r\n display: \"none\",\r\n },\r\n },\r\n}));\r\n\r\nfunction HomePage() {\r\n const classes = useStyles();\r\n let history = useHistory();\r\n const dispatch = useDispatch();\r\n const NavigateMap = (page) => {\r\n dispatch(setActivePage(page));\r\n history.push(\"/\" + page);\r\n };\r\n useEffect(() => {\r\n dispatch(setActivePage(\"Home\"));\r\n }, []);\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n
\r\n
\r\n \r\n Welcome to RAK MAPS\r\n \r\n \r\n \r\n

Bring your solutions to life with GIS data and APIs..

\r\n

\r\n Get started and benefit from the power of location by Ras al\r\n khaimah municipality's GIS Centre most comprehensive GIS\r\n Solutions into your finger tips.\r\n

\r\n
\r\n
\r\n
\r\n NavigateMap(\"Map\")}\r\n >\r\n Launch RAK MAP\r\n \r\n NavigateMap(\"Contact\")}\r\n >\r\n Contact Us\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n Welcome to RAK MAPS\r\n \r\n \r\n

Bring your solutions to life with GIS data and APIs..

\r\n
\r\n
\r\n NavigateMap(\"Map\")}\r\n >\r\n Launch RAK MAP\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n