{"version":3,"sources":["redux/store/loading/loading.store.js","common/extract-information-from-map-data.ts","redux/store/open-layer/map-tools-panels.store.js","assets/image/noImage.png","common/url-collect.js","api/api-url.js","common/map.js","common/error-types-500.js","common/config.js","redux/store/map-tool/map-tool.store.js","assets/image/img-default.png","modules/openlayers-map/config/config.ts","redux/store/open-layer/open-layer.store.js","components/react-notifications/helpers/notification.js","components/react-notifications/react-notifications.js","route-config.jsx","redux/store/account/account.store.js","core/app.store.js","components/app-wrapper/app-wrapper.view.jsx","components/loading/loading.view.jsx","components/top/top.view.jsx","redux/store/document/document.store.js","components/auth/leftPopup.js","components/auth/login/login.js","components/auth/register/register.js","components/auth/forgot-password/forgot-password.js","components/auth/modalAuthen.js","components/header/header.view.jsx","components/footer/footer.view.jsx","components/loading/loading-with-queue.view.jsx","components/layout/layout-qlhs.view.jsx","components/layout/layout.view.jsx","components/layout/layout-user.view.jsx","components/layout-map-page/layout-map-page.view.jsx","components/layout-authen/index.js","components/layout-profile/layout-profile.view.jsx","redux/store/news/news.store.js","modules/home/news/news.view.jsx","redux/store/consultant-community/consultant-community.store.js","modules/home/please-consult-the-community/please-consult-the-community.view.jsx","modules/home/look-up-planning/lookupPlanningType.view.jsx","modules/home/look-up-planning/lookupPlanning.view.jsx","modules/home/home.view.jsx","components/file-viewer/components/error.jsx","components/file-viewer/components/loading.jsx","components/file-viewer/components/fetch-wrapper.jsx","components/file-viewer/components/drivers/csv-viewer.jsx","components/file-viewer/components/drivers/photo360-viewer.jsx","components/file-viewer/components/drivers/pdf-viewer.jsx","components/file-viewer/components/drivers/docx-viewer.jsx","components/file-viewer/components/drivers/video-viewer.jsx","components/file-viewer/components/drivers/xlsx-viewer.jsx","components/file-viewer/components/drivers/xbim-viewer.jsx","components/file-viewer/components/drivers/unsupported-viewer.jsx","components/file-viewer/components/drivers/photo-viewer.jsx","components/file-viewer/components/drivers/photo-viewer-wrapper.jsx","components/file-viewer/components/drivers/audio-viewer.jsx","components/file-viewer/components/file-viewer.jsx","modules/records-management/records-management-detail/records-management-detail.view.jsx","components/pagination/pagination.view.jsx","modules/records-management/records-management.view.jsx","redux/store/contact/contact.store.js","modules/contact/contact.view.jsx","modules/look-up-planning/child-modules/planning-district/search-district.view.jsx","modules/look-up-planning/child-modules/planning-type/child/thumbnail-preview.view.tsx","modules/look-up-planning/child-modules/planning-district/planning-district.view.jsx","modules/look-up-planning/look-up-planning.view.jsx","modules/openlayers-map/config/convert-data.ts","modules/openlayers-map/childs/map-container.view.tsx","modules/openlayers-map/openlayers-map.view.tsx","modules/planning-map-route/planning-map-with-hooks.view.tsx","modules/planning-map-route/planning-map-route.js","api/api-service-custom.js","redux/store/category/category.store.js","redux/store/reflect/reflect-comments.store.js","redux/store/reflect/reflect.store.js","modules/reflects/hooks/index.js","redux/store/dashboard/dashboard.js","modules/reflects/components/chart/doughnut-chart.view.jsx","modules/reflects/components/header/reflect-header.view.jsx","utils/index.js","utils/file.js","modules/reflects/components/reflect-card/reflect-card.view.jsx","modules/reflects/components/skeleton/skeleton.view.jsx","modules/reflects/components/aside/aside.view.jsx","modules/reflects/hooks/dashboard.js","modules/reflects/components/header/reflect-page-header.view.jsx","modules/reflects/reflects.view.jsx","modules/reflects/components/pagination/pagination.view.jsx","modules/reflects/reflects-by-category/reflects-by-category.view.jsx","modules/reflects/components/media/preview-media.view.jsx","modules/reflects/components/comments/comment-form.view.jsx","modules/reflects/components/comments/gird.view.jsx","modules/reflects/components/comments/comment-item.view.jsx","modules/reflects/components/comments/comments.view.jsx","redux/store/reflect/reflect-level.js","common/constants.js","modules/reflects/reflect-detail/reflect-detail.view.jsx","modules/reflects/my-reflect-page/confirm-modal.jsx","modules/reflects/components/openlayers-map/openlayers-map.view.jsx","redux/store/reflect/map4d.js","modules/reflects/hooks/map4d.ts","hooks/useDebounce.ts","modules/reflects/create-reflect-page/create-or-update-reflect.view.jsx","modules/reflects/my-reflect-page/edit-modal.jsx","modules/reflects/my-reflect-page/my-reflect.view.jsx","modules/reflects/create-reflect-page/create-reflect.view.jsx","modules/reflects/reflect-map-page/reflect-map.view.jsx","modules/reset-password/reset-password.view.jsx","modules/planning-announcement/menu-right/service-link.view.jsx","modules/please-consult-the-community/please-consult-the-community.view.jsx","modules/please-consult-the-community/summary-ideas/summary.view.jsx","modules/please-consult-the-community/please-comment/please-comment.view.jsx","modules/please-consult-the-community/summary-ideas/summary-ideas.view.jsx","modules/news/list.view.jsx","modules/news/detail.view.jsx","modules/planning-announcement/menu-right/map-link.view.jsx","modules/planning-announcement/menu-right/menu-right.view.jsx","modules/planning-announcement/planning-announcement.view.jsx","modules/planning-announcement/planning-announcement-detail/planning-announcement-detail.view.jsx","modules/general-planning/left-menu/left-menu.view.tsx","modules/general-planning/general-planning.view.tsx","modules/error-page/page-500/page-500.jsx","modules/user-profile/user-profile.js","modules/user-profile/change-password.js","App.jsx","serviceWorker.ts","redux/reducer.js","redux/store.js","common/material-ui-theme-config.js","index.jsx","assets/icon/search-circle.svg","assets/icon/delete-icon.svg","assets/icon/edit-icon.svg","utils/configuration.js","utils/jwt-token-helper.js","assets/icon/planning-name.svg","assets/icon/place.svg","assets/icon/locate.svg","assets/icon/red-marker.png","assets/icon/cursor-pointer.svg","modules/planning-map-route/mobile/context/toggle-bottom-panel/ToggleBottomPanelContext.js","modules/planning-map-route/mobile/context/top-right-panel/TopRightPanelContext.js","modules/planning-map-route/mobile/context/content-bottom-panel/ContentBottomPanel.js","assets/icon/closeX.svg","assets/icon/iconLatLng.png","modules/planning-map-route/mobile/context/is-hide-filter-box/IsHideFilterBox.js","assets/image/logo.png","assets/icon/doc.png","assets/icon/excel.png","assets/icon/paper.svg","assets/icon/layer.svg","assets/image/user.png","modules/planning-map-view/map-tools-panel/map-tools-panel.view.jsx","modules/planning-map-view/select-current-layer/select-current-layer.view.tsx","modules/planning-map-view/top-right-panel/top-right-panel.view.tsx","assets/icon/delete.svg","assets/icon/circle.svg","assets/icon/cursor.svg","assets/icon/last.svg","assets/icon/lineString.svg","assets/icon/polygon.svg","assets/icon/radius.svg","assets/icon/search.svg","assets/icon sync /^/.*/.svg$","assets/icon/close-black.svg","assets/icon/document-duplicate.svg","assets/icon/information.svg","languages/vi.js","redux/store/statement/statement.store.js","common/history.js","assets/icon/xin-y-kien.png","assets/icon/cong-bo-qh.png","assets/icon/tra-cuu-qh.png","assets/icon/quan-ly-hs.png","api/api-config.js","assets/icon/ppt.png","assets/icon/pdf.png","assets/icon/tiff.png","assets/icon/dwg.png","assets/icon/image.png","assets/icon/pptx.png","assets/icon/txt.png","assets/image/map-reflect.png","api/api-handle-error.js","redux/store/map-data/map-data.store.ts","assets/icon/add_reflect.svg","assets/icon/arrow-down.svg","assets/icon/arrow-left-white.svg","assets/icon/arrow-right-black.svg","assets/icon/arrow-right-outline-color.svg","assets/icon/arrow-right-outline.svg","assets/icon/arrow-right-white.svg","assets/icon/bx-user-circle.svg","assets/icon/close.svg","assets/icon/email-footer.svg","assets/icon/feather_clock.svg","assets/icon/filter.svg","assets/icon/finger.svg","assets/icon/first.svg","assets/icon/full-download.svg","assets/icon/full-screen.svg","assets/icon/grid-chart-solid.svg","assets/icon/guide.svg","assets/icon/info.svg","assets/icon/layers.svg","assets/icon/location-pointer.svg","assets/icon/map-filled.svg","assets/icon/map-outline-01.svg","assets/icon/map-outline-02.svg","assets/icon/marker.svg","assets/icon/md-document-duplicate.svg","assets/icon/md-download.svg","assets/icon/measureArea.svg","assets/icon/next.svg","assets/icon/pdf-file.svg","assets/icon/phone-call-footer.svg","assets/icon/photo.svg","assets/icon/place-footer.svg","assets/icon/position.svg","assets/icon/prev.svg","assets/icon/print.svg","assets/icon/ruler.svg","assets/icon/search-sidebar.svg","assets/icon/searchLocation.svg","assets/icon/selectArea.svg","assets/icon/selectOne.svg","assets/icon/settings-gears.svg","assets/icon/slideshow.svg","assets/icon/th-list.svg","assets/icon/user.svg","assets/icon/zoomIn.svg","assets/icon/zoomOut.svg","redux/store/home-page/home-page.store.js","api/api-service.js"],"names":["AddOneSlotToLoadingQueue","type","RemoveOneSlotToLoadingQueue","ShowLoading","dispatch","HiddenLoading","InitState","loadingQueue","LoadingReducer","state","action","oldState","pop","ExtracAllLayersArrays","dataToggleLayer","result","map","mapSetting","layer_settings","layerSetting","push","layerRealationships","child","ExtracLayerListGroup","mapData","map_setting","type_map","layer_categories","ExtractListLayerArray","ListLayer","layerCategory","ExtractExtentArray","extent","split","numberValue","index","Number","ExtractCenterArray","center","ExtractBasemapList","base_maps","ExtractSelectedBasemap","baseMapUrl","basemap","view_default","url","SetDisplayMaptoolPanel","data","actionDisplayMaptoolPanel","SetDisplayInfomationPopup","actionDisplayInfomationSearch","displayPanel","displayInfomationSearch","MapToolsPanelReducers","module","exports","UrlCollect","Home","SpecializedPlanning","SyntheticPlanning","GeneralPlanning","SubdivisionPlanning","DetailedPlanning","PlanningAnnouncement","News","RecordsManager","Contact","PlanningMapViewDetail","PlanningMap","Reflect","ReflectByCategory","ReflectDetail","MyReflect","CreateReflect","ReflectMap","ConfirmCode","ResetPassword","UserInfo","PleaseConsultTheCommunity","PleaseComment","SummaryIdeas","NewsList","NewsDetail","NewsListQHT","NewsListQHHTKT","NewsListQHCC","NewsDetailQHT","NewsDetailQHHTKT","NewsDetailQHCC","Page500","ProcessBoardPlanning","ApiUrl","Login","Register","ForgotPassword","ContactToAdmin","GetUserAccountDetail","UpdateUserAccount","ChangeUserPassword","RefreshToken","SlideShow","GetListStatement","GetDetailStatement","SearchPlanning","PlanningType","ApprovalAgencyLevel","ServiceLink","SearchStatement","PlanningTypeById","PlanningSearchByIdName","GetAllPlanningByTypeId","GetPlanningById","GetMapPlanningById","GetPlanningRelationshipByPlanningId","GetBoundariesByPlanningId","GetYearStatement","GetAllBoundariesOfAllPlanning","GetDetailPlanningById","GetMapById","MapFilter","GetDropDown","SpatialSearch","GetListConsultantCommunity","GetDetailConsultantCommunity","GetDetailFormTemplate","CreateFeedback","GetReportFeedback","GetListExpiredForm","GetListResultConsultantCommunity","GetListNews","GetListNewsByCategory","GetListNewsByTag","GetListFeatureNews","GetListHotNews","GetDetailNews","SearchNews","DocumentType","SearchDocument","GetCmsLookupDistrict","GetLookUpPlanningUnit","GetLookUpApprovalAgency","GetDocumentByPlanningId","GetChildrenDocument","DownloadFile","GetLookupCommune","Vn2000ToWgs84","Wgs84ToVn2000","GetLookupPlanningType","GetLookupCategories","GetDetailCategories","GetReflectListHomePage","GetReflectByCategories","GetReflectDetail","GetSimilarReflect","GetMyListReflect","UpdateReflect","DeleteReflect","GetAllComment","CreateComment","UpdateComment","DeleteComment","CreateLevel","UpdateLevel","GetDashboardByReflectionStatus","GetDashBoardSatisfactionLevelOverall","SearchPlanningByLatLng","isPointInPolygon","latitude","longitude","polygon","TypeError","Array","isArray","length","x","y","inside","i","j","xi","yi","xj","yj","convertStringToArray","stringPolygon","arrCoordinatePolygon","substring","string","arr","res","parseFloat","UnhandleException","ERRORGETAPI","Configs","DefaultPageIndex","DefaultPageSize","service","Service","post","then","catch","err","SetDataToggleLayer","setDataToggleLayer","UpdateDataToggleLayer","updateDataToggleLayer","test","MapToolDataReducer","itemChange","newDataToggleLayer","console","log","forEach","groupLayer","item","id","layerRela","is_check","VectorImageLayerClassName","layerId","TileLayerClassName","Default_Feature_Style","_feature","_PolygonStyle","Style","stroke","Stroke","color","width","fill","Fill","_PointStyle","image","Circle","radius","_defaultWidth","zIndex","Infinity","getGeometry","Point","Highlight_Feature_Style","Draw_Filter_Feature_Style","Icon","anchor","anchorXUnits","anchorYUnits","src","require","CreateOpenlayerController","handleFunction","SaveOpenlayerFeaturesSelected","featuresSelected","openLayerController","OpenLayerReducer","title","message","container","insert","animationIn","animationOut","slidingEnter","duration","timingFunction","delay","slidingExit","touchRevert","touchSlidingExit","swipe","fade","dismiss","onScreen","pauseOnHover","waitForAnimation","showIcon","click","touch","ShowNotification","icon","NotificationPosition","TopRight","undefined","NotificationMessageType","Success","faCheckCircle","Warning","faExclamationCircle","Error","faExclamationTriangle","store","addNotification","Object","assign","notification","content","className","RouterComponent","Component","component","Layout","layout","rest","useEffect","ReactGA","pageview","window","location","pathname","search","render","props","LOGIN","LOGOUT","login","user","payload","logout","get","formData","FormData","append","file","fullName","phoneNumber","email","address","headers","isLoggedIn","isLoading","onLoading","initialState","Map","loading","toJS","connect","app","account","bindActionCreators","showLoading","appActions","acountAction","useLocation","scrollTo","children","TopView","ViLanguage","React","getAllPlanningType","statementActions","params","URLSearchParams","pageIndex","pageSize","name","documentTypeId","district","year","planningUnitId","approvalLevelId","planningTypeId","field","response","error","GetLookUpDistrict","planningId","parentId","set","getBinary","LeftPopup","img","alt","register","errors","setIsTabForgotPassword","setIsTabLogin","clearErrors","faUser","autoComplete","placeholder","ref","required","pattern","faKey","minLength","password","viVN","ErrorPassword","onClick","watch","setError","getValues","tel","setTel","isRegisterSuccess","useRef","current","onCheckTel","toString","faUserAlt","faEnvelope","country","value","onChange","onBlur","autoFormat","enableSearch","countryCodeEditable","mobilePhone","confirmPassword","validate","isForgotSuccess","onHide","faArrowLeft","ModalAuthen","useForm","mode","reValidateMode","handleSubmit","show","showTabRegister","showTabLogin","returnUrl","useDispatch","useState","isTabLogin","isTabRegister","setIsTabRegister","isTabForgotPassword","setIsRegisterSuccess","setIsForgotSuccess","Modal","size","centered","Body","onSubmit","DeviceId","GenerateDeviceId","accountAction","rememberMe","token","setCookies","TokenKey","refreshToken","replace","removeCookies","getUserInfo","UnableHandleException","errorType","DomainUserSide","style","height","cursor","LanguageCollect","RenderModalComponent","infoAcount","isShowUserInfoModal","handleCloseUserInfoModal","onLogout","setFile","avatar","setAvatar","isShowChangePassword","setIsShowChangePassword","handleOnCloseModal","backdrop","keyboard","Header","closeButton","Title","oldPassword","currentPassword","newPassword","ChangePasswordSuccess","ChangeAvatarSuccess","APIUrlDefault","accept","event","target","files","URL","createObjectURL","disabled","Footer","Button","variant","faTimes","faCheck","HeaderView","handleResize","setState","windowWidth","innerWidth","handleOutsideClick","document","getElementById","openMenu","includes","tcqh","classList","contains","sub_tcqh","handleOpenUserInfoModal","getUserAccountDetail","onToggleModalAuthen","showModalAuthen","setIsCancelLogin","toggleSubMenuDistrict","add","remove","handleToggleSubMenuDistrict","handleOpenRegister","handleOpenLogin","onClickTraCuuQuyHoach","isLogin","planningType","isShowFormLogin","listLookupDistrict","open","isAdmin","this","nextProps","NeedToLoginToAccess","isShowFormLoginQLHS","NeedToLoginAdminToAccess","isRedirectHome","getLookupDistrict","addEventListener","removeEventListener","documentActions","PATHNAME","match","path","getCookies","href","CloseButton","faBars","Collapse","in","dimension","visibility","to","faHome","header_homePage","role","data-toggle","aria-haspopup","aria-expanded","header_information","aria-labelledby","header_pleaseConsultTheCommunity","header_planningAnnouncement","header_lookUpPlanning","header_syntheticPlanning","key","header_cityPlanning","hidden","header_recordsManager","header_reflect","header_Contact","user_info","change_password","header_logout","header_logIn","faLock","reflect_recommendations","faHeart","header_myReflect","faSignOutAlt","LanguageDisplay","Vilanguage","FooterView","footer_titleName","faMapMarkedAlt","footer_address","faPhoneAlt","footer_hotline","footer_fax","footer_email","loadingState","setIsShowFormLoginQLHS","isCancelLogin","setIsRedirectHome","showFormLogin","redirectHome","userRoles","LayoutDesktopView","bodyHeight","FooterContainerHeight","getElementsByClassName","offsetHeight","HeaderContainerHeight","minHeight","innerHeight","LayoutUserDesktopView","bodyWebStyle","LayoutMapPageView","LayoutAuthen","setIsShowFormLogin","background","listNav","categoryId","image_Url","status","description","createdDate","modifiedDate","listPolygon","newsModel","setNewsModel","hotNews","setHotNews","pagingNews","setPagingNews","currentPage","setCurrentPage","onGetData","Promise","all","onGetListNews","resolve","reject","newsActions","items","hasPreviousPage","prePage","pageCount","hasNextPage","nextPage","faArrowRight","onError","e","dateformat","created_date","dangerouslySetInnerHTML","__html","slice","planningName","approvalLevel","place","planningAgency","consultingUnit","startTime","endTime","sortExpression","consultantCommunityId","resultModel","setResultModel","firstResult","setFirstResult","paging","setPaging","consulting","setConsulting","onGetListExpiredForm","onGetListConsultantCommunity","consultantCommunityActions","getNextPage","getPreviousPage","publishDate","LookupPlanningType","listResult","setListResult","firstPlanning","setFirstPlanning","onGetPlanningSearchByIdName","homePageAction","photo","geolocated","positionOptions","enableHighAccuracy","userDecisionTimeout","getSlideShow","homePageStore","getAllPlanningByTypeId","GetAllPlanningBoundariesGeomText","MapDataStore","settingSlider","dots","infinite","speed","slidesToShow","slidesToScroll","arrows","autoplay","autoplaySpeed","filteredSuggestions","setFilteredSuggestions","slideShow","setSlideShow","projectList","setProjectList","commentInput","setCommentInput","altitude","accuracy","altitudeAccuracy","heading","currentPosition","setCurrentPosition","openSearchPlace","setOpenSearchPlace","openSearchXy","setOpenSearchXy","openSearchLatLng","setOpenSearchLatLng","onGetSlideShow","onGetAllPlanningByTypeId","onGetCurrentPosition","lng","lat","label","labelTemp","changeAlias","navigator","geolocation","getCurrentPosition","position","coords","sleep","ms","setTimeout","loadOptions","prevOptions","a","filteredOptions","searchLower","filter","toLowerCase","searchArray","filteredOptions1","hasMore","slicedOptions","options","Options","loadedOptions","addressSuggestions","searchCoordinate","preventDefault","trim","coordinateList","CoordinateOutSidePolygon","Center","history","classNamePrefix","cacheOptions","defaultMenuIsOpen","defaultOptions","noOptionsMessage","data-tooltip","currentPositionTemp","OpenCoordinateCurrent","input","latLng","link","errorComponent","Loading","withFetching","WrappedComponent","xhr","createRequest","filePath","fetch","abort","XMLHttpRequest","XDomainRequest","responseType","onload","resp","responseText","send","CsvViewer","parse","rows","columns","CSV","array","cell","idx","resizable","sortable","filterable","row","rowsCount","rowGetter","onMouseDown","bind","onMouseMove","onMouseUp","manualControl","savedX","savedY","savedLongitude","savedLatitude","el","positionInfo","getBoundingClientRect","renderer","THREE","setSize","appendChild","domElement","scene","camera","sphere","applyMatrix","makeScale","sphereMaterial","texture","sphereMesh","updateView","newLongitude","clientX","newLatitude","clientY","Math","max","min","sin","degToRad","cos","z","lookAt","PDFJS","disableWorker","PDFPage","disableVisibilityCheck","fetchAndRenderPage","prevProps","prevState","zoom","isVisible","pdf","getPage","renderPage","page","containerWidth","calculatedScale","getViewport","scale","viewport","context","canvas","getContext","canvasContext","node","partialVisibility","PDFDriver","percent","increaseZoom","reduceZoom","resetZoom","offsetWidth","getDocument","progressCallback","progress","loaded","total","toFixed","setZoom","apply","numPages","v","renderLoading","renderPages","defaultProps","jsonFile","upload","onreadystatechange","readyState","mammoth","convertToHtml","arrayBuffer","includeDefaultStyleMap","docEl","createElement","innerHTML","outerHTML","done","VideoViewer","controls","fileType","onCanPlay","XlxsViewer","dataArr","Uint8Array","String","fromCharCode","workbook","XLSX","read","join","names","keys","Sheets","sheets","utils","sheet_to_csv","curSheetIndex","sheet","csvProps","renderSheetNames","renderSheetData","XBimViewer","UnsupportedViewer","unsupportedComponent","fileId","documentAction","blob","Blob","_nameArray","saveAs","PhotoViewer","originalWidth","originalHeight","imageDimensions","getImageDimensions","call","setAttribute","imgHeight","imgWidth","viewerHeight","viewerWidth","heightRatio","widthRatio","containerStyles","PhotoViewerWrapper","imageLoaded","loader","crossOrigin","load","PhotoDriver","abs","Photo360Viewer","AudioViewer","FileViewer","clientHeight","clientWidth","newProps","XlsxViewer","PDFViewer","DocxViewer","Driver","getDriver","onBack","tabType","isShowPreview","setShowPreview","setPlanningId","documents","setDocuments","detailModels","setDetailModel","planningRelationShips","setPlanningRelationShips","nameFolderTitle","setNameFolderTitle","nextTab","setNextTab","onClickRootBtn","renderFilePreview","isSupport","config","extension","$","animate","scrollTop","onShowFilePreview","FilePreviewNotSupport","faEye","aria-controls","aria-selected","code","numberOfDecisions","moment","Date","format","agencySubmitted","population","acreage","landForConstruction","report","faAirFreshener","faChevronRight","splice","onBanckDocument","scope","typeName","arrFolderTitle","handleOnClickFolder","faFolder","_type","FILE_EXTENSION_ICON","DOC","DOCX","marginRight","PPT","PDF","TIF","DWG","DNG","JPG","JPEG","PNG","XLS","PPTX","TXT","renderIcon","faDownload","faClock","faCopy","faMap","PaginationView","pageRangeDisplayed","pageTotal","ceil","totalItems","leftPage","setLeftPage","rightPage","setRightPage","currentIndex","setCurrentIndex","handleOnClick","isLookup","yearSearch","approvalAgencyId","constructionGroup","faAngleDoubleLeft","faAngleLeft","listButton","renderListButtonDisplay","faAngleRight","faAngleDoubleRight","statement","GetAllPlanningCategoriesType","paginationNumber","setPaginationNumber","planningModels","setPlanningModels","documentType","setDocumentType","yearStatement","setYearStatement","approvalLevelOption","setApprovalLevelOption","planningTypeOption","setPlanningTypeOption","setDocumentTypeId","setYearSearch","listDistrict","setListDistrict","districtSearch","setdistrictSearch","planningUnitSearch","setPlanningUnitSearch","approvalLevelSearch","setApprovalLevelSearch","planningTypeSearch","setPlanningTypeSearch","listPlanningUnit","setListPlanningUnit","dataSearching","setDataSearching","setTabType","isTable","setIsTable","isDetail","setIsDetail","isOpenSearchAdvance","setIsOpenSearchAdvance","advanceSearchContainer","timeoutId","overflow","clearTimeout","reset","formValues","planningIdQuery","GetAllPlanning","GetDocumentType","GetLookupDistrict","GetLookupPlanningUnit","GetApprovalAgencyLevel","GetSearchDocument","searchFile","NoData","aria-label","aria-describedby","isMulti","maxHeight","fontSize","faCog","faSearch","faTable","faList","colSpan","totalItemCount","ContactDesktopView","onSubmitContact","contactAction","ContactToAdminSuccess","clearDataForm","viLanguage","toLocaleUpperCase","footer_hotline_tel","footer_website","footer_website_to","currentTarget","contact_map_url","frameBorder","allowFullScreen","SearchByDistrict","districtSelect","setDistrictSelect","planningUnitSelect","setPlanningUnitSelect","approvalAgencySelect","setApprovalAgencySelect","setName","setNumberOfDecisions","setConstructionGroup","listApprovalAgencies","setListApprovalAgencies","GetLookupApprovalAgency","handleOnChangeDistrict","handleOnChangePlanningUnit","handleOnChangeApprovalAgency","handleOnChangeYears","defaultValue","some","ThumbnailPreview","backgroundUrl","urlParams","data-tip","previewName","effect","setDataSelectBoxSearch","selected","planningDetail","setPlanningDetail","getPlanningSearchByIdName","PageUrls","listPlanningCategoriesAll","openlayer","setPlanningType","setPlanningTypeId","createClassListLeftSelectMenu","pathName","ConvertColsDataDetailViewToStandardData","cols","col","alias","sketchGolbal","helpTooltipElementGolbal","helpTooltipGolbal","measureTooltipElementGolbal","measureTooltipGolbal","drawMeasureGolbal","memo","selectClick","Select","condition","select","DrawnFilterData","draw","source","filterType","OpenlayersMapView","toggleDisplayVectorLayer","boundaries","isDisplay","minZoom","maxZoom","tooltipValue","LayersCurrents","getLayers","isBoundariesAdded","layerModel","getClassName","nameTb","setVisible","WKT","feature","featureObject","readFeature","geomText","dataProjection","projection","featureProjection","setProperties","VectorLayer","VectorSource","features","toggleDisplayLayerRelated","relatedLayer","isLayerAdded","table","wms","selectedLayer","selectSource","TileWMS","LayerId","FORMAT","VERSION","selectLayer","TileLayer","visible","opacity","setZIndex","changeBaseMap","newBasemapUrl","insertAt","OSM","removeAt","changeCurrentLayerOpacity","layer","toggleDisplayLayer","changeCurrentLayer","newStates","currentLayerSettingModel","layerElement","ParamsProperty","getProperties","params_","currentLayer","layerClassName","className_","setOpacity","resetLayerOpacity","layersList","handleZoomOut","getView","getZoom","handleZoomIn","handleSelectOne","handleOnOffViewInfomation","coordinate","layerGroups","listGroupLayer","tableName","checkPlanningOfEarth","_data","mapToolAction","layerOfEarth","select_multi","handleSelectMany","removeHiglightVectorLayer","clearFeatures","setHeaderForTable","addInteraction","selectedFeatures","getFeatures","dragBox","DragBox","_idTimeout","on","rotation","getRotation","PI","getExtent","getCoordinates","stringCoordinate","concat","coordinateSearch","properties","JSON","geo","geom","clearInterval","btnRelativeResultTab","functionHightLightPolygon","SaveInfomationForTable","clear","removeInteractionOnMap","interactionArr","getInteractions","array_","handleExportMap","isSave","_Self","_openlayerMapObject","_size","getSize","_exportOptions","_element","_className","indexOf","domtoimage","toJpeg","dataUrl","_linkElement","querySelector","isTurnOn","deleteHightlightFilterLayer","mapObject","functionClickViewInfomationListener","un","changeInteraction","addShowPopUpInClickedCord","popup","Overlay","element","addOverlay","handleDisplayFullScreenViewMode","isFullScreen","HeaderContainer","display","setHeightViewport","handlePinMarkerMode","openlayerMap","PinMarkerLayer","functionClickPinMarker_PinMarkerMode","layerIndex","layerObject","handleMeasureMode","isLineMode","indexMeasureLayer","isLayerHasExist","measureVectorSource","getSource","measureVectorLayer","CircleStyle","functionPointerMoveHandle_MeasureMode","functionMouseOut_MeasureMode","removeInteraction","functionAddInteraction_MeasureMode","functionRemoveAllMapOverlay","clearFeaturesSelected","setStyle","deleteFilterDrawnVectorLayer","functionTurnOffFilterMode","filterButtonElement","informationTool","functionDisplayAllBoundariesOfAllPlanning","ListBoundaries","idIntervalCheckMapExist","setInterval","vectorLayerStyle","boundariesData","nameTable","indexToRemove","getOverlays","sort","b","vectorSource","listener","Draw","functionCreateMeasureTooltip_MeasureMode","functionCreateHelpTooltip_MeasureMode","self","evt","tooltipCoord","output","Polygon","functionFormatPolygon_MeasureMode","getInteriorPoint","LineString","functionFormatLength_MeasureMode","getLastCoordinate","setPosition","setOffset","unByKey","parentNode","removeChild","offset","positioning","line","getLength","round","area","getArea","dragging","newMarker","Feature","geometry","addFeature","handleSearchCoordinateMapDetail","coord","pinSearchMode","handleSearchCoordinate","isInside","itemPolygon","mapHelper","desc","setCenter","checkPinMarker","currentLayers","LayerObject","mapContainerStyle","updateSize","functionHandleClickLayerToDirectDetail","pixel","forEachFeatureAtPixel","functionHoverHightlightAndShowTooltip","tooltipContainer","left","top","functionHoverHightlightAndShowPopUp","popupContainer","right","bottom","functionClickShowPopUpInClickedCord","featureInfo","isGeneralPlanning","getOverlayById","getElement","temp","newDiv","planning_name","onclick","planning_id","functionClickShowPopUp","planning_code","calledFromSearchCoordinate","listLayer","listTitleLayerVisible","listImageLayerVisible","listVectorImageLayerVisible","view","viewResolution","getResolution","buttonTabMapinfomation","mapInfomationContainer","planningInfomationSmallPopupElement","getFeaturesWithTitleLayer","titleLayer","getParams","listLayerSettingModel","getFeatureInfoUrl","getProjection","INFO_FORMAT","FEATURE_COUNT","currentLayerChildSettingModel","SaveChildInfomationList","Jquery","ajax","contentType","dataType","success","featureCollection","_geojsonObject","ListInfoMation","prevFeatureId","SaveInfomationList","removeHiglightVectorLayerChild","numberOfChild","featuresProperies","layerSettingModel","colsRaw","display_name","displayDetails","viewdetail","use","columnName","layerRealationshipId","contentChange","setDataForTabInformation","listChildInfomations","isLoadedAllVectorSource","_isHaveHighlightVectorlayer","_layer","_newVectorSource","GeoJSON","readFeatures","setSource","getInfo","getAttribute","getVisible","VectorImageLayer","ImageLayer","reverse","getZIndex","functionHandleDisplayGeneralPlanningMode","OpenlayerMapObject","f","highlightStyle","getEventPixel","originalEvent","openPrintWindow","dataHtml","listMapInfomations","myWindow","write","planningModel","close","focus","print","viewCurrentLocaltion","resetDrawnFilterDataAndRemoveInteraction","_mapObject","createFilterDrawnVectorLayer","_layersCollect","_needCreateVectorLayer","_drawnFilterLayer","_newSource","_vectorLayerDrawn","_indexDelete","_index","filterDrawnVectorLayer","drawnType","_drawnType","_geometryFunction","GeometryType","POINT","LINE_STRING","POLYGON","CIRCLE","createBox","_optionDraw","geometryFunction","_pointGeoMetry","flatCoordinates","getCurrentDrawFeature","_featureList","_format","_featureGeometry","_pointRadius","_geomText","_centerCircle","getCenter","getMetersPerUnit","getRadius","_radiusInput","writeGeometry","r","_layers","_removeIndex","addLayerManually","isAddedLayer","layerImage","ImageWMS","LAYERS","addLayer","useFeatureViewInfomationOnClick","modals","primaryIdLayer","currentZoom","prevFeatureChildId","searchType","SaveHeaderForTable","_objectMap","getArray","defaultBaseMapUrl","defaultCenter","defaultZoom","defaultMaxZoom","defaultMinZoom","defaultListLayer","defaultExtend","DefaultLayers","XYZ","layerData","z_index","min_zoom","max_zoom","IdIntervalSettingMap","mousePositionControl","MousePosition","coordinateFormat","createStringXY","undefinedHTML","mapScale","ScaleLine","units","bar","steps","parseInt","text","minWidth","isTabletOrMobile","defaultControls","extend","layers","View","SaveMapBase","newZoom","setIsDoneConstructMap","checkSearchFormHomePage","handleSelectedOne","placeSearch","handleViewCurrentLocaltion","data-target","tabIndex","aria-hidden","faPrint","data-dismiss","padding","textAlign","fontWeight","marginLeft","backgroundColor","Popover","placement","dataFilter","infomations","childInfomations","OpenlayerStore","MapToolsPanelsStore","LoadingAction","RenderFilterInfomationPopup","ViLanguages","lazy","MapToolsPanel","TopRightPanelView","LeftMenuView","GuideUseMap","Preview","TopRightPanelMobile","BottomToggleMobile","BottomPanelMobile","RenderFilterInfomationPopupMobile","GuideUseModalMobile","PlanningMapViewWithHooks","manualCloseMaptoolsFilterInfomationPopup","isShowFilterInfomationPopup","setPlanningMap","_planningModel","mapPlanning","isLeftNavbarHide","modalHeightStyle","isShowMapToolsPanel","displaySearchLocationBar","isDoneConstructMap","openFilterInfomationPopup","closeFilterInfomationPopup","GetMapDetail","handleClickToggleLeftNavBar","buttonElement","snapshot","IsHideFilterBox","isDesktopOrLaptop","fallback","openFIlterPopup","hasLoadedMapData","baseMapList","setPlanningModelInMap","toggleStateIsLeftNavbarHide","isIdNotExist","invisLink","hasLoadingData","MapToolDataStore","PlanningMapRoute","useMediaQuery","query","configuration","APP_API_ROOT","apiConfig","apiRoot","errorHandler","isHandlerEnabled","request","reader","FileReader","onerror","readAsText","Page500ErrorTypes","errorMessage","namespace","axios","create","baseURL","interceptors","common","userInfo","requestHandler","successHandler","method","put","body","ReflectByCategories","paramObj","fileIndex","useGetCategories","listCategories","setListCategories","handleGetCategories","Categories","useGetReflectsByCategoryId","listReflects","setListReflects","setTotal","setPage","setLoading","totalPage","setTotalPage","handleGetReflects","useGetMyListReflect","setData","setPageIndex","totalItem","setTotalItem","isRefresh","setIsRefresh","handleGetMyListReflect","newParams","Search","Sorting","PageSize","PageIndex","clearParams","stringify","refresh","ChartJS","ArcElement","Tooltip","Legend","tooltips","enabled","plugins","datalabels","formatter","ctx","sum","chart","datasets","DoughnutChart","labels","dataConfig","ReflectHeader","urlReadMore","ChevronRight","URGENT_OPTIONS","dateVNFormat","date","stripHtml","html","tmp","textContent","innerText","getExtension","filename","parts","isImage","isVideo","isDocument","ext","BASE_IMAGE","apiCustom","CardVertival","reflect","isNewTab","IsUrgentHandling","find","urgent","isUrgentHandling","reflectImage","PlaceOutlined","detectionPosition","QueryBuilderOutlined","CardHorizontal","CardVertivalSkeleton","Box","Skeleton","CardHorizontalSkeleton","Grid","spacing","xs","ReflectHomePageSkeleton","pb","justifyContent","alignItems","lg","ReflectByCategorySkeleton","ReflectAsideSkeleton","m","ReflectAdise","byStatus","dashboardByReflectionStatus","setDashboardByReflectionStatus","handleGetDashboardByReflectionStatus","useGetDashboardByReflectionStatus","byLevel","dashboardSatisfactionLevelOverall","setDashboardSatisfactionLevelOverall","handleGetDashBoardSatisfactionLevelOverall","useGetDashBoardSatisfactionLevelOverall","processed","processing","totalSatisfied","ReflectPageHeader","breadcumb","reflectByCategory","setReflectByCategory","handleGetReflectListHomePage","useGetReflectListHomePage","useGetReflects","CursorPointerIcon","category","reflectTheScenes","categoryName","sm","marginTop","ReflectPagination","Pagination","shape","categoryInfo","useParams","exec","listReflectsAside","isLoadingAside","currentCategory","md","count","PreviewImage","disableControlOnVideo","setResult","setType","File","readAsDataURL","fileName","preload","ReflectCommentForm","reflectId","onSuccess","onClose","comment","defaultValues","Content","commentFilesViewDtos","deletedFiles","setValue","formState","watchFields","values","newComment","Id","ParentId","ReflectionId","IsActive","IsDelete","fileToRender","filesClone","htmlFor","currentFiles","handleChangeFile","multiple","GridView","isOpenGallery","setOpenGallery","filesToRender","classNameToRender","renderMoreFiveFiles","faWindowClose","ReflectCommentItem","isParent","refreshComment","isOpenCommentForm","setOpenCommentForm","maxShowReply","setMaxShowReply","isShowMoreContent","setShowMoreContent","isEditMode","setEditMode","idToDelete","setIdToDelete","handleDeleteComment","reflectionId","cutContent","urlAvatar","api","userComment","locale","startOf","fromNow","createdBy","childrenComments","Dialog","DialogTitle","DialogContent","DialogContentText","DialogActions","autoFocus","totalComment","comments","setComments","setTotalComment","totalCommentPage","setTotalCommentPage","totalItemOriginalCount","setTotalItemOriginalCount","handleGetAllComment","useGetListComment","PROCESSING_STEP_ID","reflectInfo","reflectDetail","setReflectDetail","handleGetReflectDetail","useGetReflectDetail","similarReflect","setSimilarReflect","handleGetSimilarReflect","useGetSimilarReflect","categoriesId","acceptanceTotal","satisfactionLevelId","satisfiedTotal","unsatisfied","satisfied","setSatisfied","satisfactionLevel","handleClickSatisfied","userId","oldSatisfyType","categoriesName","VisibilityOutlined","viewNum","expectedEndDate","reflectionFilesViewDtos","processingStepId","reflectionHandledViewDto","processingStepCurrentId","provinceName","reason","reflectionTotalComment","ConfirmModal","onOk","iconStyle","point","iconFeature","markerLayer","onSelect","fromLonLat","mapState","setMapState","OlMap","OlLayerTile","OlSourceOSM","OlView","olMap","handleMapClick","clickedCoord","getCoordinateFromPixel","transormedCoord","toLonLat","setCoordinates","setTarget","defaultKey","geoCode","useAutoSuggestAddress","addressDebounce","timeout","clearIfEmpty","debouncedValue","setDebouncedValue","useDebounce","handleGetAddress","CreateReflectPage","DetectionPosition","Longitude","Latitude","ReflectionStatusId","reflectionStatusId","ProcessingStepCurrentId","SourceOfReflectionId","isSubmitting","dragActive","setDragActive","handleSelectOnMap","handleFileChange","fileTypeExist","video","filesToAdd","handleDrag","stopPropagation","class","editor","ClassicEditor","getData","for","onDragEnter","onDragLeave","onDragOver","onDrop","dataTransfer","Autocomplete","getOptionLabel","option","noOptionsText","isOptionEqualToValue","renderInput","InputProps","inputProps","faFile","EditModal","statusOptions","sortOptions","currentStepOptions","reflectToUpdate","setReflectToUpdate","Page","searchParams","setSearchParams","myReflect","isMyReflectLoading","isShowConfirm","setIsShowConfirm","selectedReflect","setSelectedReflect","onDeleteReflect","useDeleteReflect","handleDeleteReflect","onKeyPress","sorting","isSearchable","Typography","EditIcon","DeleteIcon","useHistory","mapAction","overlay","OlOverlay","autoPan","animation","isOpenMenu","setOpenMenu","setCategoryId","reflects","setReflects","setReflect","popupRef","OlSourceXYZ","reflectRes","showReflectMarker","setElement","values_","hasFeatureAtPixel","Checkbox","checked","ResetPasswordDesktop","pass","setPassword","isSuccess","setUserInfo","ResetPasswordSuccess","faUserCircle","linkGroup","setLinkGroup","statementAction","displayType","linkService","index1","rel","itemOther","index2","iconName","faLink","faCalendarAlt","faVideo","faFilm","faCamera","faBook","faQuestionCircle","getOtherLinkIcon","faAngleDoubleDown","itemsChild","doingModel","setDoingModel","startDate","setStartDate","endDate","setEndDate","planningTypeModel","setPlanningTypeModel","approvalLevelModel","setApprovalLevelModel","currentPageIndexDoing","setCurrentPageIndexDoing","totalItemCountDoing","setTotalItemCountDoing","currentPageIndexResult","totalItemCountResult","setTotalItemCountResult","pageCountDoing","setPageCountDoing","pageCountResult","setPageCountResult","isShowSearch","setIsShowSearch","onGetPlanningType","onGetApprovalAgencyLevel","onSearch","isClearSearch","agenciesOrganizations","newValue","isClearable","dateFormat","placeholderText","faEraser","resultItem","setResultItem","questions","setQuestions","setPageCount","setShow","s","setSum","numberResult","onShowFeedBack","maxWidth","isExpired","navbarNav","itemQuestion","indexQuestion","answers","itemAnswer","indexAnswer","additions","itemAddition","indexAddition","ANSWER_TYPE","formTemplate","setFormTemplate","onGetDetail","onGetDetailFormTemplate","documentFiles","urlPath","download","documentPath","NotFileDownload","formTemplateId","phoneNo","suggestion","answerObj","addition","answerType","answerRadio","questionId","answerId","answerDropdown","answer","answerTextBox","FeedbackSuccess","questionItem","questionIndex","flexDirection","gap","_question","answerItem","answerIndex","defaultChecked","renderAnswerInput","haveAdditional","DomainAdminSide","isQHT","isQHCC","isQHHTKT","keyword","setKeyword","listHotNews","setHotNewsModel","listNews","setListNews","onGetListHotNews","createDate","onPagingClick","i18n","dayNames","monthNames","newsDetail","setNewsDetail","onGetNewsDetail","requestUrl","viewBox","xmlns","d","serviceModels","setServiceModels","MenuRightView","statementModels","setStatementModels","setPanningType","planningTypeSelect","setPanningTypeSelect","approvalAgencyLevel","setApprovalAgencyLevel","approvalAgencyLevelSelect","setApprovalAgencyLevelSelect","approvalAgency","setApprovalAgency","getListStatementModelsPromise","getPlanningType","getApprovalAgencyLevel","getListStatementModels","onStopHiddenDropdown","onKeyDown","decisionsNumber","yearOfApproval","approvalYear","approvalAgencyLevelId","brief","PlanningAnnouncementDetailDesktopView","statementModel","setStatementModel","statementDocumentFile","RenderGroupPlanning","urlGroup","titleGroup","isDisplaySearchResult","listLayers","resetSearchDisplayMode","plannings","ListBaseMap","base_map_setting_id","map_setting_id","baseMapSettingModel","layer_type","fixedLayerTablename","GeneralPlanningView","handleOpenOrCloseMapToolsPanel","isMobile","handleShowHidePlanningMenu","LeftMenuElement","isHiddenMapTools","isHiddenSearch","isHiddenLayer","isHiddenInfor","isHiddenFilterInfo","isHiddenSelectAnObject","isHiddenSelectMultiObject","isHiddenPrintTheMap","isHiddenExportMap","isHiddenMoveViewport","listPlanning","GetAllPlanningBoundaries","ErrorPage500","UserProfile","setUserId","avatarReturn","setAvatarReturn","setFullName","inputRef","Form","ChangeUserInfoSuccess","ChangePassword","oldPasswordShown","setOldPasswordShown","newPasswordShown","setNewPasswordShown","confirmPasswordShown","setConfirmPasswordShown","faEyeSlash","App","initialize","exact","HomeDesktop","PleaseConsultTheCommunityDesktopView","PlanningAnnouncementDesktopView","NewsDetailView","NewsListView","LayoutQLHSAuthen","RecordsManagementDesktopView","LookUpPlanningView","ReflectsView","ReflectsByCategoryView","ReflectDetailView","ReflectMapView","LayoutProfileView","MyReflectView","CreateReflectView","SummaryIdeasView","PleaseCommentView","Boolean","hostname","combineReducers","mapToolsPanel","MapDataReducer","StatementReducer","mapToolData","createStore","Reducer","applyMiddleware","thunk","theme","createTheme","breakpoints","xl","GlobalStore","ReactDOM","StrictMode","ThemeProvider","serviceWorker","ready","registration","unregister","domainName","DoMainNameGeoServerWMS","DataStore","ApiServerKey","TokenPrefix","defaultMapCenter","defaultLeftCornerLng","defaultLeftCornerLat","defaultRightCornerLng","defaultRightCornerLat","cookies","Cookies","dateExpires","domain","expires","setConfiguration","getConfiguration","has","tokenPayload","decode","DecodeToken","setTime","getTime","TopLeft","TopCenter","BottomLeft","BottomRight","BottomCenter","str","HandleError","FileExtensionsPreviewSupport","FilePreviewSupport","fileExt","toUpperCase","uid","expireTime","uniqueID","chr4","random","IsOpenBottomPanelContext","createContext","ToggleBottomPanelContext","IsExtendBottomPanelContext","OpenBottomPanelContex","ExtendBottomPanelContex","ToggleBottomProvider","isBottomOpen","setBottomOpen","isExtend","setExtend","toggleBottom","prev","testWrap","Provider","useIsOpenBottomPanel","useContext","useToggleBottomPanel","useIsExtendBottomPanel","useOpenBottomPanel","useExtendBottomPanel","TitleWhenClickTopRightPanelContext","UpdateTitleWhenClickTopRightPanelContext","ContentWhenClickTopRightPanelContext","UpdateContentWhenClickTopRightPanelContext","TopRightPanelProvider","components","setComponents","setTitle","useContentWhenClickTopRightPanel","useUpdateContentWhenClickTopRightPanel","useTitleWhenClickTopRightPanel","useUpdateTitleWhenClickTopRightPanel","GetIsAddedSearchBoxContext","SetIsAddedSearchBoxContext","GetIsAddedMapToolsContext","SetIsAddedMapToolsContext","GetIsAddedPlanningInfoContext","SetIsAddedPlanningInfoContext","GetIsAddedLayerInfoContext","SetIsAddedLayerInfoContext","ToggleDisplayContext","AddContentBottomPanelProvider","isAddedSearchBox","setIsAddedSearchBox","isAddedMapTools","setIsAddedMapTools","isAddedPlanningInfo","setIsAddedPlanningInfo","isAddedLayerInfo","setIsAddedLayerInfo","targetId","bottomPanelContent","useGetIsAddedSearchBox","useSetIsAddedSearchBox","useGetIsAddedMapTools","useSetIsAddedMapTools","useGetIsAddedPlanningInfo","useSetIsAddedPlanningInfo","useGetIsAddedLayerInfo","useSetIsAddedLayerInfo","useToggleDisplay","GetIsHideFilterBoxContext","SetIsHideFilterBoxContext","IsHideFilterBoxProvider","isHideFilterBox","setIsHideFilterBox","useGetIsHideFilterBox","useSetIsHideFilterBox","ButtonTooltip","withStyles","tooltip","RenderButtonTool","styleCustom","planningMapView","toggleFullScreen","zoomIn","zoomOut","pointerEvents","arrow","data-icon-name","isDisplayPanel","isFullScreenMode","isTurnOnPinMarkerMode","isTurnOnViewInfomationOnClick","isTurnOnMeasureMode","isTurnOnFilterMode","togglePinMarkerMode","turnOn","autoTurnOffAllFeature","toggleViewInfomationOnClick","handleControlFilterMode","exportMap","listTools","viewObjectInfomation","filterInfomation","isHidden","selectAnObject","selectMultiObject","measuareArea","measuareDistance","moveViewport","printTheMap","myPosition","toolButton","locationMarker","ListButton","from","indexActive","Tool","setLayer","setListLayers","AddLabelValueToListLayers","selectedObject","actionDetail","handleChangeCurrentLayer","LanguageCollects","isMapToolsPanelsDisplay","listBoundaries","setPlanningModel","setCurrentPolygon","polygonCurrent","getPolygonById","onGetDetailPlanningById","StatementAction","openCurrentLayerView","setOpenCurrentLayerView","handleClickCurrentLayerView","setOpenBaseMap","setOpenInfo","setOpenSearch","openBaseMap","openInfo","openSearch","openLocate","setOpenLocate","openCoordinates","setOpenCoordinates","openSearchWgs84","setOpenSearchWgs84","CoordinateConvert","GetLatLngPlace","faSlidersH","faInfoCircle","documenOfStatement","baseMap","baseMapIcon","handleOnClickChangeBaseMap","toolsMap","faCogs","webpackContext","req","webpackContextResolve","__webpack_require__","o","googleMap","satelliteMap","notUseBaseMap","mapLegend","compare","filterInfomationPopup","headTitle","labelSelectSearch","searchInLine","searchInArea","searchInCircle","searchInSquare","searchWithAttribute","delete","planningMapView_guideToUse","planningMapView_guideToUse_category","planningMapView_map","planningMapView_infomation","planningMapView_relatedPlanning","planningMapView_result","header_news","header_map","header_generalPlanning","header_subdivisionPlanning","header_detailedPlanning","header_specializedPlanning","header_administration","header_account","header_title","footer_email_to","contact_map_center_lat","contact_map_center_lng","contact_map_marker_lat","contact_map_marker_lng","PlanningTypeDispatch","GetSerivceLink","createBrowserHistory","domainUserSide","domainAdminSide","doMainNameGeoServer","doMainNameGeoServerWMS","datastore","handleError500","erroCode","getMaxZoomByPlanningTypeId","getMinZoomByPlanningTypeId","getZIndexByPlanningTypeId","SavePreviewImage","createSavePreviewImage","createSaveLoadingDataState","createSaveIdNotExist","createSaveMapData","intListBounds","boundariesObject","finally","idIntervalCheck","getState","GetListPlanningRelationByPlanningId","planingId","ResultContent","Page500ErrorType","createSaveInfomationList","createSaveChildInfomationList","SaveInformationForTable","createSaveInfomationForTable","createSaveHeaderForTable","createMapBase","SaveDataFilter","createSaveDataFilter","GetMapDetailByPlanningId","planing_id","finalResul","planningObject","planningTypeName","categoriesIsNotExist","planningCategories","dataForTable","listPlanningCategories","listPlanningBoundaries","headerTable","previewImageInfo","GetSlideShow","adress","GetVn2000ToWgs84","GetPlanningSearchByIdNameHome","GetPlanningSearchByIdNameDistrict","longtitude","originalRequest","accessToken","deviceId","refreshTokens","Authorization"],"mappings":"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","file":"static/js/main.951a3640.chunk.js","sourcesContent":["const ADDONECALLINGAPI = \"LOADING/ADD\";\r\nconst REMOVEONECALLINGAPI = \"LOADING/REMOVE\";\r\n\r\nexport const AddOneSlotToLoadingQueue = { type: ADDONECALLINGAPI }\r\nexport const RemoveOneSlotToLoadingQueue = { type: REMOVEONECALLINGAPI }\r\n\r\nexport const ShowLoading = () => {\r\n return dispatch => dispatch(AddOneSlotToLoadingQueue)\r\n}\r\n\r\nexport const HiddenLoading = () => {\r\n return dispatch => dispatch(RemoveOneSlotToLoadingQueue)\r\n}\r\n\r\nconst InitState = {\r\n loadingQueue: []\r\n}\r\n\r\nexport default function LoadingReducer(state = InitState, action) {\r\n switch (action.type) {\r\n case ADDONECALLINGAPI: {\r\n return { ...state, loadingQueue: [...state.loadingQueue, 1] }\r\n }\r\n case REMOVEONECALLINGAPI: {\r\n const oldState = [...state.loadingQueue];\r\n oldState.pop()\r\n return { ...state, loadingQueue: oldState }\r\n }\r\n default: return state\r\n }\r\n}","import MapDataModels from \"../models/map-data-model-b/map-data-model\";\r\nimport LayerSettingsModels from \"../models/map-data-model-b/layer-setting-models\";\r\nimport LayerCategoryModels from \"../models/map-data-model-b/layer-category-models\";\r\nimport BaseMapModels from \"../models/map-data-model-b/base-map-models\";\r\nimport MapSettingModels from \"models/map-data-model-b/map-setting-models\";\r\n\r\nexport const ExtracAllLayersArrays = (\r\n dataToggleLayer: LayerCategoryModels.LayerCategoryModel[]\r\n): LayerSettingsModels.LayerSettingsModel[] => {\r\n let result: LayerSettingsModels.LayerSettingsModel[] = [];\r\n dataToggleLayer.map(mapSetting => {\r\n mapSetting.layer_settings.map(layerSetting => {\r\n result.push(layerSetting);\r\n layerSetting.layerRealationships.map((child) =>{\r\n result.push(child)\r\n })\r\n })\r\n })\r\n return result;\r\n};\r\n\r\nexport const ExtracLayerListGroup = (\r\n mapData: MapDataModels.MapDataModels\r\n): LayerCategoryModels.LayerCategoryModel[] => {\r\n let result: LayerCategoryModels.LayerCategoryModel[] = [];\r\n mapData.map_setting.map((mapSetting) => {\r\n if (mapSetting.type_map !== \"MAP\") {\r\n result = mapSetting.layer_categories;\r\n return;\r\n }\r\n });\r\n return result;\r\n};\r\n\r\nexport const ExtractListLayerArray = (\r\n mapData: MapDataModels.MapDataModels\r\n): LayerSettingsModels.LayerSettingsModel[] => {\r\n const ListLayer: LayerSettingsModels.LayerSettingsModel[] = [];\r\n mapData.map_setting.map((mapSetting) => {\r\n if (mapSetting.type_map !== \"MAP\") {\r\n mapSetting.layer_categories.map((layerCategory) => {\r\n layerCategory.layer_settings.map((layerSetting) =>{\r\n ListLayer.push(layerSetting)\r\n layerSetting.layerRealationships.map((child) =>{\r\n ListLayer.push(child)\r\n }\r\n )\r\n }\r\n );\r\n });\r\n return;\r\n }\r\n });\r\n return ListLayer;\r\n};\r\n\r\nexport const ExtractExtentArray = (\r\n mapData: MapDataModels.MapDataModels\r\n): [number, number, number, number] => {\r\n const extent: [number, number, number, number] = [0, 0, 0, 0];\r\n mapData.extent\r\n .split(\",\")\r\n .map((numberValue, index) => (extent[index] = Number(numberValue)));\r\n return extent;\r\n};\r\nexport const ExtractCenterArray = (\r\n mapData: MapDataModels.MapDataModels\r\n): number[] => {\r\n const center: number[] = [];\r\n mapData.center\r\n .split(\",\")\r\n .map((numberValue) => center.push(Number(numberValue)));\r\n return center;\r\n};\r\n\r\nexport const ExtractBasemapList = (\r\n mapData: MapDataModels.MapDataModels\r\n): BaseMapModels.BaseMapModel[] => {\r\n let result: BaseMapModels.BaseMapModel[] = [];\r\n mapData.map_setting.map((mapSetting) => {\r\n if (mapSetting.type_map === \"MAP\") {\r\n result = mapSetting.base_maps;\r\n return;\r\n }\r\n });\r\n return result;\r\n};\r\n\r\nexport const ExtractSelectedBasemap = (\r\n mapData: MapDataModels.MapDataModels\r\n): string => {\r\n let baseMapUrl = \"\";\r\n mapData.map_setting.map((mapSetting) => {\r\n if (mapSetting.type_map === \"MAP\") {\r\n mapSetting.base_maps.map((basemap) => {\r\n if (basemap.view_default) baseMapUrl = basemap.url;\r\n return;\r\n });\r\n return;\r\n }\r\n });\r\n return baseMapUrl;\r\n};\r\n","const DISPLAYMAPTOOLSPANEL = \"MAPTOOLPANEL/DISPLAYPANEL\";\r\nconst DISPLAYINFOMATIONPOPUP = \"MAPTOOLPANEL/DISPLAYINFORMATIONSEARCH\";\r\n\r\nconst actionDisplayMaptoolPanel = (data) => ({ type: DISPLAYMAPTOOLSPANEL, data: data })\r\nconst actionDisplayInfomationSearch = (data) => ({ type: DISPLAYINFOMATIONPOPUP, data: data })\r\n\r\nexport const SetDisplayMaptoolPanel = (data) => {\r\n return (dispatch) => {\r\n dispatch(actionDisplayMaptoolPanel(data))\r\n }\r\n}\r\n\r\nexport const SetDisplayInfomationPopup = (data) => {\r\n return dispatch => {\r\n dispatch(actionDisplayInfomationSearch(data))\r\n }\r\n}\r\n\r\nconst InitState = {\r\n displayPanel: false,\r\n displayInfomationSearch: false,\r\n}\r\n\r\nexport default function MapToolsPanelReducers(state = InitState, action) {\r\n switch (action.type) {\r\n case DISPLAYMAPTOOLSPANEL: return { ...state, displayPanel: action.data };\r\n case DISPLAYINFOMATIONPOPUP: return { ...state, displayInfomationSearch: action.data };\r\n default: return state\r\n }\r\n}","module.exports = __webpack_public_path__ + \"static/media/noImage.5c8eece6.png\";","const UrlCollect = {\r\n Home: '/',\r\n SpecializedPlanning: '/quy-hoach-chuyen-nganh',\r\n SyntheticPlanning: '/tong-hop-quy-hoach',\r\n GeneralPlanning: '/quy-hoach-chung',\r\n SubdivisionPlanning: '/quy-hoach-phan-khu',\r\n DetailedPlanning: '/quy-hoach-chi-tiet',\r\n PlanningAnnouncement: '/cong-bo-quy-hoach',\r\n News: '/news',\r\n RecordsManager: '/quan-ly-ho-so',\r\n Contact: '/lien-he',\r\n PlanningMapViewDetail: '/ban-do-quy-hoach/',\r\n PlanningMap: '/ban-do-quy-hoach',\r\n\r\n // -- Phan anh\r\n Reflect: '/phan-anh-hien-truong',\r\n ReflectByCategory: '/phan-anh-hien-truong/chuyen-muc/:categoryInfo',\r\n ReflectDetail: '/phan-anh-hien-truong/phan-anh/:reflectInfo',\r\n MyReflect: '/phan-anh-cua-ban',\r\n CreateReflect: '/phan-anh-kien-nghi',\r\n ReflectMap: '/ban-do-phan-anh-hien-truong',\r\n\r\n //-- User\r\n ConfirmCode: '/xac-nhan',\r\n ResetPassword: '/dat-lai-mat-khau',\r\n UserInfo: '/thong-tin-ca-nhan',\r\n\r\n //-- Xin y kien cong dong\r\n PleaseConsultTheCommunity: '/y-kien-cong-dong',\r\n PleaseComment: '/xin-y-kien',\r\n SummaryIdeas: '/y-kien-tong-hop',\r\n\r\n //-- Tin tuc\r\n NewsList: '/tin-tuc',\r\n NewsDetail: '/tin-tuc-chi-tiet',\r\n NewsListQHT: '/tin-tuc-quy-hoach-tinh',\r\n NewsListQHHTKT: '/tin-tuc-noi-dung-qhhtkt',\r\n NewsListQHCC: '/tin-tuc-quy-hoach-cac-cap',\r\n NewsDetailQHT: '/tin-tuc-quy-hoach-tinh/chi-tiet',\r\n NewsDetailQHHTKT: '/tin-tuc-noi-dung-qhhtkt/chi-tiet',\r\n NewsDetailQHCC: '/tin-tuc-quy-hoach-cac-cap/chi-tiet',\r\n\r\n //-- Error\r\n Page500: '/page-500/',\r\n\r\n //-- Admin\r\n ProcessBoardPlanning: '/quy-trinh-cong-bo-quy-hoach',\r\n};\r\n\r\nexport default UrlCollect;\r\n","export const ApiUrl = {\r\n //--- Account\r\n Login: 'api/Account/Login',\r\n Register: 'api/Account/Register',\r\n ForgotPassword: 'api/Account/ForgotPassword',\r\n ResetPassword: 'api/Account/ResetPassword',\r\n ContactToAdmin: 'api/cms/HomePage/ContactToAdmin',\r\n GetUserAccountDetail: 'api/Account/GetUserAccountDetail',\r\n UpdateUserAccount: 'api/Account/UpdateUserAccount',\r\n ChangeUserPassword: '/api/Account/ChangeUserPassword',\r\n RefreshToken: '/api/Account/RefreshToken',\r\n\r\n //Home Page\r\n SlideShow: 'api/cms/HomePage/GetListPostHomePage',\r\n\r\n //Planning\r\n GetListStatement: 'api/cms/Statement/GetListStatement',\r\n GetDetailStatement: 'api/cms/Statement/GetDetailStatement',\r\n SearchPlanning: 'api/admin/Planning/search-planning-by',\r\n PlanningType: 'api/cms/Planning/get-all-planning-type',\r\n ApprovalAgencyLevel:\r\n 'api/admin/ApprovalAgencyLevel/get-approval-agency-level',\r\n ServiceLink: 'api/cms/Statement/GetAllServiceLink',\r\n SearchStatement: 'api/cms/Statement/search-statement-by',\r\n PlanningTypeById: 'api/cms/Planning/get-planning-type-by-id',\r\n PlanningSearchByIdName: 'api/cms/Planning/search-planning-type-by-id-name',\r\n GetAllPlanningByTypeId: 'api/cms/Planning/get-all-planning',\r\n GetPlanningById: 'api/cms/Planning/get-planning-by-id',\r\n GetMapPlanningById: 'api/cms/Planning/get-map-by-planning-id',\r\n GetPlanningRelationshipByPlanningId:\r\n 'api/cms/Planning/get-planning-relation-by-planning-id',\r\n GetBoundariesByPlanningId: 'api/cms/Planning/get-boundaries-by-planning-id',\r\n GetYearStatement: 'api/cms/Planning/get-all-year-statment',\r\n GetAllBoundariesOfAllPlanning: 'api/cms/Planning/get-all-planning-boundaries',\r\n GetDetailPlanningById: 'api/cms/Planning/get-planning-by-id',\r\n\r\n //--- Map\r\n GetMapById: 'api/admin/Map/get-map-by-id',\r\n MapFilter: 'api/MapTools/MapFilter',\r\n GetDropDown: 'api/MapTools/GetDropDown',\r\n SpatialSearch: 'api/MapTools/SpatialSearch',\r\n\r\n //--- Consultant Community\r\n GetListConsultantCommunity:\r\n 'api/cms/ConsultantCommunity/get-data-list-consultant-community',\r\n GetDetailConsultantCommunity:\r\n 'api/cms/ConsultantCommunity/get-detail-consult-community',\r\n GetDetailFormTemplate: 'api/cms/ConsultantCommunity/GetDetailFormTemplate',\r\n CreateFeedback: 'api/cms/ConsultantCommunity/CreateFeedback',\r\n GetReportFeedback: 'api/cms/ConsultantCommunity/GetReportFeedback',\r\n GetListExpiredForm: 'api/cms/ConsultantCommunity/GetListForm',\r\n GetListResultConsultantCommunity:\r\n 'api/cms/ConsultantCommunity/get-data-list-result-consultant-community',\r\n\r\n //--- News\r\n\r\n GetListNews: 'api/cms/News/GetListAll',\r\n GetListNewsByCategory: '/api/cms/News/GetListByCat',\r\n GetListNewsByTag: '/api​/cms​/News​/GetListByTag​',\r\n GetListFeatureNews: '/api​/cms​/News​/GetListFeature​',\r\n GetListHotNews: '/api/cms/News/GetListHot',\r\n GetDetailNews: '/api/cms/News/GetDetail',\r\n SearchNews: '/api/cms/News/Search',\r\n\r\n // Document\r\n DocumentType: 'api/cms/Planning/get-all-document-type',\r\n SearchDocument: 'api/cms/Planning/search-document-by',\r\n GetCmsLookupDistrict: 'api/cms/Administrative/GetLookupDistrict',\r\n GetLookUpPlanningUnit: 'api/admin/PlanningUnit/GetLookup',\r\n GetLookUpApprovalAgency: 'api/admin/ApprovalAgency/GetLookup',\r\n GetDocumentByPlanningId: 'api/cms/Planning/get-document-by-planning-id',\r\n GetChildrenDocument: 'api/cms/Planning/get-document-by-planning-id-parent-id',\r\n // documentupload là 1 bảng\r\n // DownloadFile: 'api/admin/DocumentUpload/DownloadFileBinary',\r\n // document là 1 bảng. Sơn La lưu hồ sơ ở document\r\n DownloadFile: 'api/admin/Document/DownloadFileBinary',\r\n GetLookupCommune: 'api/admin/Administrative/GetLookupCommune',\r\n\r\n // Vn2000 convert Wgs84\r\n Vn2000ToWgs84: '/api/admin/Utils/vn2000-to-wgs84',\r\n Wgs84ToVn2000: '/api/admin/Utils/wgs84-to-vn2000',\r\n\r\n //planningType\r\n GetLookupPlanningType: '/api/admin/Planning/GetLookUpPlanningType',\r\n\r\n // Category\r\n GetLookupCategories: '/api/cms/Categories/GetLookup',\r\n GetDetailCategories: '/api/admin/Categories/GetById',\r\n\r\n // Reflect\r\n GetReflectListHomePage: '/api/cms/ReflectTheScene/GetListHomePage',\r\n GetReflectByCategories: '/api/cms/ReflectTheScene/GetList',\r\n GetReflectDetail: '/api/cms/ReflectTheScene/GetById',\r\n GetSimilarReflect: '/api/admin/ReflectTheScene/GetSimilarReflection',\r\n GetMyListReflect: '/api/cms/ReflectTheScene/GetMyList',\r\n CreateReflect: '/api/admin/ReflectTheScene/Create',\r\n UpdateReflect: '/api/admin/ReflectTheScene/Update',\r\n DeleteReflect: '/api/admin/ReflectTheScene/Delete',\r\n\r\n // Reflect Comment\r\n GetAllComment: '/api/cms/Comment/GetAll',\r\n CreateComment: '/api/admin/Comment/Create',\r\n UpdateComment: '/api/admin/Comment/Update',\r\n DeleteComment: '/api/admin/Comment/Delete',\r\n\r\n // EvaluateLevelCompletion\r\n CreateLevel: '/api/admin/EvaluateLevelCompletion/Create',\r\n UpdateLevel: '/api/admin/EvaluateLevelCompletion/Update',\r\n\r\n // Dashboard\r\n GetDashboardByReflectionStatus:\r\n 'api/DashBoard/GetDashboardByReflectionStatus',\r\n GetDashBoardSatisfactionLevelOverall:\r\n '/api/DashBoard/GetDashBoardSatisfactionLevelOverall',\r\n\r\n //searchPlanningByLatLng\r\n SearchPlanningByLatLng: '/api/cms/Planning/get-planning-by-coordinate'\r\n};\r\n","export function isPointInPolygon(latitude, longitude, polygon) {\r\n if (typeof latitude !== 'number' || typeof longitude !== 'number') {\r\n throw new TypeError('Invalid latitude or longitude. Numbers are expected')\r\n } else if (!polygon || !Array.isArray(polygon)) {\r\n throw new TypeError('Invalid polygon. Array with locations expected')\r\n } else if (polygon.length === 0) {\r\n throw new TypeError('Invalid polygon. Non-empty Array expected')\r\n }\r\n\r\n const x = latitude; const y = longitude\r\n\r\n let inside = false;\r\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\r\n const xi = polygon[i][0]; const yi = polygon[i][1]\r\n const xj = polygon[j][0]; const yj = polygon[j][1]\r\n\r\n const intersect = ((yi > y) !== (yj > y)) &&\r\n (x < (xj - xi) * (y - yi) / (yj - yi) + xi)\r\n if (intersect) inside = !inside\r\n }\r\n\r\n return inside;\r\n}\r\n\r\nexport const convertStringToArray = (stringPolygon) => {\r\n let arrCoordinatePolygon = []\r\n if (!stringPolygon || stringPolygon.length < 8) return arrCoordinatePolygon;\r\n const stringArray = stringPolygon.substring(9, stringPolygon.length - 2).split(\",\");\r\n stringArray.map((string) => {\r\n let arr = [];\r\n const res = string.split(\" \");\r\n arr.push(parseFloat(res[1]));\r\n arr.push(parseFloat(res[0]));\r\n arrCoordinatePolygon.push(arr);\r\n });\r\n return arrCoordinatePolygon;\r\n };","export const UnhandleException = \"UnhandleException\";\r\n\r\n//-- common error\r\nexport const ERRORGETAPI = 'ERRORGETAPI';","export const Configs = {\r\n DefaultPageIndex: 1,\r\n DefaultPageSize: 5,\r\n};\r\nexport const URLConfig = {\r\n api_url:\"http://dongtrieusmartcity-api.c2tech.vn\"\r\n}\r\n","import Service from \"../../../api/api-service\";\r\nimport { ApiUrl } from \"../../../api/api-url\";\r\n\r\nconst service = new Service();\r\n\r\nexport const MapFilter = (data) => {\r\n return service.post(ApiUrl.MapFilter, data).then((res) => {return res}).catch((err) => { throw err });\r\n}\r\nexport const GetDropDown = (data) => { \r\n return service.post(ApiUrl.GetDropDown, data).then((res) => {return res}).catch((err) => { throw err });\r\n}\r\nexport const SpatialSearch = (data) => { \r\n return service.post(ApiUrl.SpatialSearch, data).then((res) => {return res}).catch((err) => { throw err });\r\n}\r\n\r\nexport const SET_DATA_TOGGLE_LAYER = \"MAPTOOL/SET_DATA_TOGGLE_LAYER\";\r\nexport const UPDATE_DATA_TOGGLE_LAYER = \"MAPTOOL/UPDATE_DATA_TOGGLE_LAYER\";\r\n\r\nconst setDataToggleLayer = (data) => ({\r\n type: SET_DATA_TOGGLE_LAYER,\r\n data: data,\r\n});\r\n\r\nconst updateDataToggleLayer = (data) => ({\r\n type: UPDATE_DATA_TOGGLE_LAYER,\r\n data: data,\r\n});\r\n\r\nexport const SetDataToggleLayer = (data) => {\r\n return (dispatch) => {\r\n dispatch(setDataToggleLayer(data));\r\n };\r\n};\r\n\r\n\r\nexport const UpdateDataToggleLayer = (data) => {\r\n return (dispatch) => {\r\n dispatch(updateDataToggleLayer(data));\r\n };\r\n};\r\n\r\nconst InitState = {\r\n dataToggleLayer: [],\r\n test: {}\r\n};\r\n\r\nexport default function MapToolDataReducer(state = InitState, action) {\r\n switch (action.type) {\r\n case SET_DATA_TOGGLE_LAYER:\r\n return { ...state, dataToggleLayer: action.data };\r\n case UPDATE_DATA_TOGGLE_LAYER: {\r\n const itemChange = action.data;\r\n const newDataToggleLayer = [...state.dataToggleLayer];\r\n console.log('MapToolDataReducer',newDataToggleLayer);\r\n newDataToggleLayer.forEach(groupLayer => {\r\n groupLayer.layer_settings.forEach(item => {\r\n if(item.id == itemChange.id) {\r\n item.is_check = itemChange.is_check;\r\n return;\r\n }\r\n \r\n if(item.layerRealationships.length > 0) {\r\n item.layerRealationships.forEach(layerRela => {\r\n if(layerRela.id == itemChange.id) {\r\n layerRela.is_check = itemChange.is_check;\r\n return;\r\n }\r\n })\r\n }\r\n })\r\n });\r\n return { ...state, dataToggleLayer: newDataToggleLayer };\r\n }\r\n default:\r\n return state;\r\n }\r\n}","module.exports = __webpack_public_path__ + \"static/media/img-default.5c8eece6.png\";","import { Circle, Fill, Stroke, Style, Icon } from \"ol/style\";\r\nimport Feature from \"ol/Feature\";\r\nimport Point from \"ol/geom/Point\";\r\nexport const VectorImageLayerClassName = (layerId: number) =>\r\n `vector-image-layer-${layerId}`;\r\nexport const TileLayerClassName = (layerId: number) => `title-layer-${layerId}`;\r\nexport const Default_Feature_Style: any = (_feature: Feature) => {\r\n const _defaultWidth = 1;\r\n const _PolygonStyle = new Style({\r\n stroke: new Stroke({\r\n color: \"rgba(245, 0, 0, 0.01)\",\r\n width: _defaultWidth,\r\n }),\r\n fill: new Fill({\r\n color: \"rgba(0, 0, 0, 0)\",\r\n }),\r\n });\r\n const _PointStyle = new Style({\r\n image: new Circle({\r\n radius: _defaultWidth * 4,\r\n fill: new Fill({\r\n color: \"rgba(0, 0, 0, 0)\",\r\n }),\r\n stroke: new Stroke({\r\n color: \"rgba(0, 0, 0, 0)\",\r\n width: _defaultWidth / 4,\r\n }),\r\n }),\r\n zIndex: Infinity,\r\n });\r\n switch (true) {\r\n case _feature.getGeometry() instanceof Point:\r\n return _PointStyle;\r\n default:\r\n return _PolygonStyle;\r\n }\r\n};\r\n\r\nexport const Highlight_Feature_Style: any = (_feature: Feature) => {\r\n const _defaultWidth = 3;\r\n const _PolygonStyle = new Style({\r\n stroke: new Stroke({\r\n color: \"rgba(0,230,241,1)\",\r\n width: _defaultWidth,\r\n }),\r\n fill: new Fill({\r\n color: \"rgba(130,230, 80,0.5)\",\r\n }),\r\n });\r\n const _PointStyle = new Style({\r\n image: new Circle({\r\n radius: _defaultWidth * 2,\r\n fill: new Fill({\r\n color: \"blue\",\r\n }),\r\n stroke: new Stroke({\r\n color: \"white\",\r\n width: _defaultWidth / 2,\r\n }),\r\n }),\r\n zIndex: Infinity,\r\n });\r\n switch (true) {\r\n case _feature.getGeometry() instanceof Point:\r\n return _PointStyle;\r\n default:\r\n return _PolygonStyle;\r\n }\r\n};\r\n\r\nexport const Draw_Filter_Feature_Style: any = (_feature: Feature) => {\r\n const _defaultWidth = 1;\r\n const _anchorXUnits: any = \"fraction\";\r\n const _anchorYUnits: any = \"pixels\";\r\n const _PolygonStyle = new Style({\r\n stroke: new Stroke({\r\n color: \"red\",\r\n width: _defaultWidth,\r\n }),\r\n fill: new Fill({\r\n color: \"rgba(231, 95, 95, 0.51)\",\r\n }),\r\n });\r\n const _PointStyle = new Style({\r\n image: new Icon({\r\n anchor: [0.5, 22],\r\n anchorXUnits: _anchorXUnits,\r\n anchorYUnits: _anchorYUnits,\r\n src: require(\"../../../assets/icon/red-marker.png\"),\r\n }),\r\n });\r\n switch (true) {\r\n case _feature.getGeometry() instanceof Point:\r\n return _PointStyle;\r\n default:\r\n return _PolygonStyle;\r\n }\r\n};\r\n","const SAVEOPENLAYERCONTROLLER = 'OPENLAYER/SAVEOPENLAYERCONTROLLER';\r\nconst SAVEOPENLAYERFEATURESSELECTED = 'OPENLAYER/SAVEFEATURESELECTED';\r\n\r\nconst CreateSaveOpenlayerControllerAction = data => ({ type: SAVEOPENLAYERCONTROLLER, data: data })\r\nconst CreateSaveOpenlayerFeatureSelectedAction = data => ({ type: SAVEOPENLAYERFEATURESSELECTED, data: data })\r\n\r\nexport const CreateOpenlayerController = (handleFunction) => {\r\n return dispatch => {\r\n dispatch(CreateSaveOpenlayerControllerAction(handleFunction))\r\n }\r\n}\r\n\r\nexport const SaveOpenlayerFeaturesSelected = (featuresSelected) => {\r\n return dispatch => {\r\n dispatch(CreateSaveOpenlayerFeatureSelectedAction(featuresSelected))\r\n }\r\n}\r\n\r\nconst InitState = {\r\n openLayerController: null,\r\n featuresSelected: [],\r\n}\r\n\r\nexport default function OpenLayerReducer(state = InitState, action) {\r\n switch (action.type) {\r\n case SAVEOPENLAYERCONTROLLER: return { ...state, openLayerController: action.data }\r\n case SAVEOPENLAYERFEATURESSELECTED: return { ...state, featuresSelected: action.data }\r\n default: return state\r\n }\r\n}","export default {\r\n title: 'Awesomeness',\r\n message: 'Awesome Notifications!',\r\n type: 'success',\r\n container: 'top-right',\r\n insert: 'top',\r\n\r\n animationIn: ['animated', 'fadeIn'],\r\n animationOut: ['animated', 'faster', 'fadeOut'],\r\n\r\n slidingEnter: {\r\n duration: 300,\r\n timingFunction: 'linear',\r\n delay: 0\r\n },\r\n\r\n slidingExit: {\r\n duration: 300,\r\n timingFunction: 'linear',\r\n delay: 0\r\n },\r\n\r\n touchRevert: {\r\n duration: 600,\r\n timingFunction: 'linear',\r\n delay: 0\r\n },\r\n\r\n touchSlidingExit: {\r\n swipe: {\r\n duration: 600,\r\n timingFunction: 'linear',\r\n delay: 0\r\n },\r\n fade: {\r\n duration: 300,\r\n timingFunction: 'linear',\r\n delay: 0\r\n }\r\n },\r\n\r\n dismiss: {\r\n duration: 5000,\r\n onScreen: false,\r\n pauseOnHover: true,\r\n waitForAnimation: false,\r\n showIcon: true,\r\n click: true,\r\n touch: true\r\n }\r\n};\r\n","import React from \"react\";\r\nimport notification from \"./helpers/notification\";\r\nimport { store } from \"react-notifications-component\";\r\nimport {\r\n NotificationMessageType,\r\n NotificationPosition,\r\n} from \"../../utils/configuration\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport {\r\n faCheckCircle,\r\n faExclamationCircle,\r\n faExclamationTriangle,\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\n\r\nconst ShowNotification = (\r\n message,\r\n type,\r\n container = NotificationPosition.TopRight\r\n) => {\r\n if (message === undefined || message === null || message === \"\") return;\r\n \r\n let icon;\r\n if (type === NotificationMessageType.Success) {\r\n icon = faCheckCircle;\r\n } else if (type === NotificationMessageType.Warning) {\r\n icon = faExclamationCircle;\r\n } else if (type === NotificationMessageType.Error) {\r\n icon = faExclamationTriangle;\r\n }\r\n\r\n store.addNotification(\r\n Object.assign({}, notification, {\r\n container: container,\r\n content: (\r\n
\r\n
\r\n \r\n
\r\n
\r\n

{message}

\r\n
\r\n
\r\n ),\r\n })\r\n );\r\n};\r\n\r\nexport default ShowNotification;\r\n","import React, { useEffect } from 'react';\r\nimport { Route } from 'react-router-dom';\r\nimport ReactGA from 'react-ga';\r\n\r\nconst RouterComponent = ({ component: Component, layout: Layout, ...rest }) => {\r\n useEffect(() => {\r\n ReactGA.pageview(window.location.pathname + window.location.search);\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n \r\n )}\r\n />\r\n}\r\n\r\n\r\nexport default RouterComponent","import Service from \"../../../api/api-service\";\r\nimport { ApiUrl } from \"../../../api/api-url\";\r\n\r\nexport const LOGIN = \"ACCOUNT/LOGIN\";\r\nexport const LOGOUT = \"ACCOUNT/LOGOUT\";\r\n\r\nexport const login = (user) => ({\r\n type: LOGIN,\r\n payload: user,\r\n})\r\nexport const logout = () => ({\r\n type: LOGOUT,\r\n})\r\n\r\n\r\nconst service = new Service();\r\n\r\nexport const Login = (data) => {\r\n return service\r\n .post(ApiUrl.Login, data)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const Register = (data) => {\r\n return service\r\n .post(ApiUrl.Register, data)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const ForgotPassword = (data) => {\r\n return service\r\n .post(ApiUrl.ForgotPassword, data)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const ResetPassword = (data) => {\r\n return service\r\n .post(ApiUrl.ResetPassword, data)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\nexport const GetUserAccountDetail = () => {\r\n return service\r\n .get(ApiUrl.GetUserAccountDetail)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\nexport const UpdateUserAccount = (data) => {\r\n const formData = new FormData();\r\n data && data.id && formData.append(\"Id\", data.id);\r\n // data && data.currentPassword && formData.append(\"CurrentPassword\", data.currentPassword);\r\n // data && data.newPassword && formData.append(\"NewPassword\", data.newPassword);\r\n data && data.file && formData.append(\"File\", data.file);\r\n data && data.fullName && formData.append(\"Fullname\", data.fullName);\r\n data && data.phoneNumber && formData.append(\"PhoneNumber\", data.phoneNumber);\r\n data && data.email && formData.append(\"Email\", data.email);\r\n data && data.address && formData.append(\"Address\", data.address);\r\n return service\r\n .post(ApiUrl.UpdateUserAccount, formData, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n })\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const ChangeUserPassword = (data) => {\r\n const formData = new FormData();\r\n data && data.userId && formData.append(\"Id\", data.userId);\r\n data && data.currentPassword && formData.append(\"CurrentPassword\", data.currentPassword);\r\n data && data.newPassword && formData.append(\"NewPassword\", data.newPassword);\r\n return service\r\n .post(ApiUrl.ChangeUserPassword, formData, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n })\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nconst InitState = {\r\n isLoggedIn: false,\r\n user: null,\r\n};\r\n\r\nexport default function MapDataReducer(state = InitState, action) {\r\n switch (action.type) {\r\n case LOGIN:\r\n return { ...state, isLoggedIn: true, user: action.payload };\r\n case LOGOUT:\r\n return { ...state, isLoggedIn: false, user: null };\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { Map } from \"immutable\";\r\n\r\nconst APP_LOADING = \"APP_LOADING\";\r\n\r\nexport const onLoading = (isLoading) => ({ type: APP_LOADING, isLoading });\r\n\r\nexport const ShowLoading = (isLoading) => {\r\n return (dispatch) => {\r\n dispatch(onLoading(isLoading));\r\n };\r\n};\r\n\r\nexport const initialState = Map({\r\n loading: false,\r\n}).toJS();\r\n\r\nexport default function AppReducer(state = initialState, action) {\r\n switch (action.type) {\r\n case APP_LOADING:\r\n return {\r\n ...state,\r\n loading: action.isLoading,\r\n };\r\n default:\r\n return { ...state };\r\n }\r\n}\r\n","import React, { useEffect } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useLocation } from 'react-router-dom';\r\nimport { bindActionCreators } from 'redux';\r\nimport { GetUserAccountDetail } from '../../redux/store/account/account.store';\r\nimport * as appActions from '../../core/app.store';\r\nimport * as acountAction from '../../redux/store/account/account.store';\r\n\r\nfunction AppWrapper(props) {\r\n const location = useLocation();\r\n const { login, logout } = props;\r\n\r\n useEffect(() => {\r\n window.scrollTo(0, 0);\r\n }, [location]);\r\n\r\n useEffect(() => {\r\n // GetUserAccountDetail()\r\n // .then((res) => {\r\n // login(res?.content);\r\n // })\r\n // .catch((err) => {\r\n // logout();\r\n // });\r\n }, []);\r\n\r\n return <>{props.children};\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n isLoading: state.app.loading,\r\n isLoggedIn: state.account.isLoggedIn,\r\n user: state.account.user,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) =>\r\n bindActionCreators(\r\n {\r\n showLoading: appActions.ShowLoading,\r\n login: acountAction.login,\r\n logout: acountAction.logout,\r\n },\r\n dispatch\r\n );\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(AppWrapper);\r\n","/* eslint-disable no-useless-constructor */\r\nimport React from \"react\";\r\nimport { connect } from \"react-redux\";\r\n\r\nfunction AppLoading(props) {\r\n const { loading } = props;\r\n\r\n return (\r\n
\r\n {\r\n loading &&
\r\n
\r\n
\r\n
\r\n
\r\n }\r\n
\r\n );\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n loading: state.app.loading,\r\n});\r\n\r\nexport default connect(mapStateToProps)(AppLoading);\r\n","/* eslint-disable no-script-url */\r\n/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport React, { useState, useRef, useEffect } from \"react\";\r\nimport { useForm } from \"react-hook-form\";\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport ViLanguage from \"../../languages/vi\";\r\nimport * as statementActions from \"../../redux/store/statement/statement.store\";\r\nimport * as appActions from \"../../core/app.store\";\r\nimport * as acountAction from \"../../redux/store/account/account.store\";\r\nimport Modal from \"react-bootstrap/Modal\";\r\nimport { Button } from \"react-bootstrap\";\r\nimport ShowNotification from \"../../components/react-notifications/react-notifications\";\r\nimport * as viVN from \"../../languages/vi-VN.json\";\r\nimport {\r\n NotificationMessageType,\r\n} from \"../../utils/configuration\";\r\n\r\nconst LanguageCollect = ViLanguage;\r\n\r\n\r\nclass TopView extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n // this.getUserAccountDetail();\r\n }\r\n\r\n getUserAccountDetail() {\r\n acountAction.GetUserAccountDetail().then((res) => {\r\n if (res && res.content && res.content.id) {\r\n console.log('user account detail', res.content);\r\n } else {\r\n window.location = '/dang-nhap';\r\n }\r\n }).catch((err) => {\r\n window.location = '/dang-nhap';\r\n });\r\n }\r\n render() {\r\n return ();\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n isLoading: state.app.loading,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) =>\r\n bindActionCreators(\r\n {\r\n showLoading: appActions.ShowLoading,\r\n getAllPlanningType: statementActions.PlanningTypeDispatch,\r\n },\r\n dispatch\r\n );\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(TopView);\r\n","import Service from \"../../../api/api-service\";\r\nimport { ApiUrl } from \"../../../api/api-url\";\r\n\r\nconst service = new Service();\r\n\r\nexport const GetDocumentType = () => {\r\n return service.get(ApiUrl.DocumentType).then(response => { return response }).catch(error => { throw error });\r\n}\r\n\r\nexport const SearchDocument = (data) => {\r\n const params = new URLSearchParams();\r\n params.append('pageIndex', data.pageIndex);\r\n params.append('pageSize', data.pageSize);\r\n data.name && params.append('name', data.name);\r\n data.documentTypeId && params.append('documentTypeId', data.documentTypeId);\r\n data.district && params.append('district', data.district);\r\n data.year && params.append('year', data.year);\r\n data.planningUnitId && params.append('planningUnitId', data.planningUnitId);\r\n data.approvalLevelId && params.append('approvalLevelId', data.approvalLevelId);\r\n data.planningTypeId && params.append('planningTypeId', data.planningTypeId);\r\n data.field && params.append('field', data.field);\r\n return service.get(ApiUrl.SearchDocument, params).then(response => { return response }).catch(error => { throw error });\r\n}\r\nexport const GetLookUpDistrict = () => {\r\n return service.get(ApiUrl.GetCmsLookupDistrict).then(response => { return response }).catch(error => { throw error });\r\n}\r\nexport const GetLookUpPlanningUnit = () => {\r\n return service.get(ApiUrl.GetLookUpPlanningUnit).then(response => { return response }).catch(error => { throw error });\r\n}\r\nexport const GetLookUpApprovalAgency = () => {\r\n return service.get(ApiUrl.GetLookUpApprovalAgency).then(response => { return response }).catch(error => { throw error });\r\n}\r\nexport const GetLookupCommune = () => {\r\n return service.get(ApiUrl.GetLookupCommune).then(response => { return response }).catch(error => { throw error });\r\n}\r\nexport const GetDocumentByPlanningId = (id) => {\r\n const params = new URLSearchParams();\r\n params.append('planningId', id);\r\n return service.get(ApiUrl.GetDocumentByPlanningId, params).then(response => { return response }).catch(error => { throw error });\r\n}\r\nexport const GetChildrenDocument = (planningId, parentId) => {\r\n const params = new URLSearchParams();\r\n params.append('planningId', planningId);\r\n params.append('parentId', parentId);\r\n return service.get(ApiUrl.GetChildrenDocument, params).then(response => { return response }).catch(error => { throw error });\r\n}\r\nexport const GetYearStatement = () => {\r\n return service.get(ApiUrl.GetYearStatement).then(response => { return response }).catch(error => { throw error });\r\n}\r\nexport const DownloadFile = (id) => {\r\n const params = new URLSearchParams();\r\n params.set('id', id);\r\n return service.getBinary(ApiUrl.DownloadFile, params).then(response => { return response }).catch(error => { throw error });\r\n}","import React from 'react';\r\nconst IMG_DEFAULT = \"../bg-login.png\"\r\n\r\nexport const LeftPopup = (props) => {\r\n const { img } = props;\r\n return (\r\n
\r\n \"\"\r\n
\r\n )\r\n}","import React, { useEffect } from 'react';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport \"./../auth.scss\";\r\nimport { faKey, faUser } from '@fortawesome/free-solid-svg-icons';\r\nimport * as viVN from \"../../../languages/vi-VN.json\";\r\n\r\nexport const Login = (props) => {\r\n const { register, errors, setIsTabForgotPassword, setIsTabLogin, clearErrors } = props;\r\n\r\n const openTabForgotPassword = () => {\r\n setIsTabForgotPassword(true);\r\n setIsTabLogin(false);\r\n }\r\n\r\n useEffect(() => {\r\n clearErrors();\r\n }, [])\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n \r\n {errors.email && errors.email.type === \"required\" && (\r\n Trường này là bắt buộc\r\n )}\r\n {errors.email && errors.email.type === \"pattern\" && (\r\n Email không đúng định dạng\r\n )}\r\n
\r\n
\r\n \r\n \r\n {errors.password && errors.password.type === \"required\" && (\r\n Trường này là bắt buộc\r\n )}\r\n {errors.password && errors.password.type === \"minLength\" && (\r\n Mật khẩu tối thiểu 8 ký tự\r\n )}\r\n {errors.password && errors.password.type === \"pattern\" && (\r\n \r\n {viVN.Errors.ErrorPassword}\r\n \r\n )}\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n Quên mật khẩu?\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n )\r\n}","import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport React, { useEffect, useRef } from 'react';\r\nimport \"./../auth.scss\";\r\nimport PhoneInput from 'react-phone-input-2';\r\nimport { faEnvelope, faKey, faUserAlt } from '@fortawesome/free-solid-svg-icons';\r\nimport * as viVN from \"../../../languages/vi-VN.json\";\r\n\r\nexport const Register = (props) => {\r\n const { register, watch, setError, clearErrors, getValues, errors, tel, setTel, isRegisterSuccess } = props;\r\n\r\n const password = useRef({});\r\n password.current = watch(\"password\", \"\");\r\n\r\n const onChangePassword = () => {\r\n const { password, confirmPassword } = getValues();\r\n password === confirmPassword\r\n ? clearErrors([\"confirmPassword\"])\r\n : setError(\"confirmPassword\", { type: \"validate\" });\r\n };\r\n\r\n const onCheckTel = (data) => {\r\n let err = false;\r\n if (!data) {\r\n setError(\"mobilePhone\", { type: \"required\" });\r\n err = true;\r\n } else if (data.toString().length < 10) {\r\n setError(\"mobilePhone\", { type: \"pattern\" });\r\n err = true;\r\n } else clearErrors([\"mobilePhone\"]);\r\n setTel(data);\r\n return err;\r\n };\r\n\r\n useEffect(() => {\r\n clearErrors();\r\n }, [])\r\n\r\n return (\r\n
\r\n
\r\n {!isRegisterSuccess ?\r\n <>\r\n
\r\n \r\n \r\n {errors.fullName && errors.fullName.type === \"required\" && (\r\n Trường này là bắt buộc\r\n )}\r\n
\r\n
\r\n \r\n \r\n {errors.email && errors.email.type === \"required\" && (\r\n Trường này là bắt buộc\r\n )}\r\n {errors.email && errors.email.type === \"pattern\" && (\r\n Email không đúng định dạng\r\n )}\r\n
\r\n
\r\n onCheckTel(tel)}\r\n placeholder=\"Số điện thoại\"\r\n autoFormat={false}\r\n enableSearch={true}\r\n countryCodeEditable={false}\r\n />\r\n \r\n {errors.mobilePhone &&\r\n errors.mobilePhone.type === \"required\" && (\r\n Trường này là bắt buộc\r\n )}\r\n {errors.mobilePhone &&\r\n errors.mobilePhone.type === \"pattern\" && (\r\n Số điện thoại không hợp lệ\r\n )}\r\n
\r\n
\r\n \r\n \r\n {errors.password && errors.password.type === \"required\" && (\r\n Trường này là bắt buộc\r\n )}\r\n {errors.password && errors.password.type === \"minLength\" && (\r\n Mật khẩu tối thiểu 8 ký tự\r\n )}\r\n {errors.password && errors.password.type === \"pattern\" && (\r\n \r\n {viVN.Errors.ErrorPassword}\r\n \r\n )}\r\n
\r\n
\r\n \r\n \r\n value === password.current || \"Mật khẩu không trùng khớp\",\r\n })}\r\n name=\"confirmPassword\"\r\n className=\"form-control\"\r\n placeholder=\"Nhập lại mật khẩu\"\r\n />\r\n {errors.confirmPassword &&\r\n errors.confirmPassword.type === \"validate\" && (\r\n Mật khẩu không khớp\r\n )}\r\n
\r\n
\r\n \r\n
\r\n :\r\n
\r\n \r\n

Đăng ký thành công

\r\n Bạn vui lòng truy cập Email để kích hoạt tài khoản\r\n
\r\n }\r\n
\r\n
\r\n )\r\n}","import React, { useEffect } from 'react';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport \"./../auth.scss\";\r\nimport { faArrowLeft, faUser, faUserCircle } from '@fortawesome/free-solid-svg-icons';\r\nimport { Link } from 'react-router-dom';\r\n\r\nexport const ForgotPassword = (props) => {\r\n const { register, errors, setIsTabForgotPassword, setIsTabLogin, clearErrors, isForgotSuccess, onHide } = props;\r\n\r\n const onOpenFormLogin = () => {\r\n setIsTabForgotPassword(false);\r\n setIsTabLogin(true);\r\n }\r\n\r\n useEffect(() => {\r\n clearErrors();\r\n }, [])\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n

Quên mật khẩu

\r\n {isForgotSuccess &&\r\n <>\r\n Một tin nhắn đặt lại mật khẩu đã được gửi tới email của bạn. Vui lòng kiểm tra!\r\n
\r\n \r\n
\r\n \r\n }\r\n
\r\n {!isForgotSuccess &&\r\n <>\r\n
\r\n \r\n \r\n {errors.email && errors.email.type === \"required\" && (\r\n Trường này là bắt buộc\r\n )}\r\n {errors.email && errors.email.type === \"pattern\" && (\r\n Email không đúng định dạng\r\n )}\r\n
\r\n
\r\n \r\n {\" \"}\r\n Quay lại\r\n \r\n
\r\n
\r\n \r\n
\r\n }\r\n
\r\n
\r\n )\r\n}","import React, { useEffect, useState } from 'react';\r\nimport Modal from 'react-bootstrap/Modal';\r\nimport { useForm } from \"react-hook-form\";\r\nimport { useDispatch } from 'react-redux';\r\nimport {\r\n NotificationMessageType,\r\n TokenKey,\r\n setCookies,\r\n getUserInfo,\r\n removeCookies,\r\n DomainUserSide,\r\n GenerateDeviceId,\r\n} from \"../../utils/configuration\";\r\nimport * as viVN from \"../../languages/vi-VN.json\";\r\nimport * as accountAction from \"../../redux/store/account/account.store\";\r\nimport \"./auth.scss\";\r\nimport ShowNotification from '../react-notifications/react-notifications';\r\nimport { LeftPopup } from './leftPopup';\r\nimport { Login } from './login/login';\r\nimport { Register } from './register/register';\r\nimport { ForgotPassword } from './forgot-password/forgot-password';\r\nimport UrlCollect from '../../common/url-collect';\r\n\r\nexport const ModalAuthen = (props) => {\r\n const { register, handleSubmit, errors, setError, clearErrors, getValues, watch } = useForm({ mode: \"all\", reValidateMode: \"onBlur\" });\r\n const { show, onHide, showTabRegister, showTabLogin, returnUrl } = props;\r\n const dispatch = useDispatch();\r\n const [isTabLogin, setIsTabLogin] = useState(true);\r\n const [isTabRegister, setIsTabRegister] = useState(false);\r\n const [isTabForgotPassword, setIsTabForgotPassword] = useState(false);\r\n const [isRegisterSuccess, setIsRegisterSuccess] = useState(false);\r\n const [isForgotSuccess, setIsForgotSuccess] = useState(false);\r\n const [tel, setTel] = useState(\"\");\r\n\r\n const onCheckTel = (data) => {\r\n let err = false;\r\n if (!data) {\r\n setError(\"mobilePhone\", { type: \"required\" });\r\n err = true;\r\n } else if (data.toString().length < 10) {\r\n setError(\"mobilePhone\", { type: \"pattern\" });\r\n err = true;\r\n } else clearErrors([\"mobilePhone\"]);\r\n setTel(data);\r\n return err;\r\n };\r\n\r\n const onSubmit = (data) => {\r\n if (!data) return;\r\n if (isTabLogin && !isTabForgotPassword) {\r\n const DeviceId = GenerateDeviceId();\r\n accountAction\r\n .Login({\r\n email: data.email,\r\n password: data.password,\r\n rememberMe: true,\r\n returnUrl: returnUrl,\r\n DeviceId\r\n })\r\n .then(\r\n (res) => {\r\n if (res && res.content && res.content.token) {\r\n setCookies(TokenKey.token, res.content.token);\r\n setCookies(TokenKey.refreshToken, res.content.refreshToken);\r\n setCookies(TokenKey.DeviceId, DeviceId);\r\n setCookies(\"SHOW_FORM_LOGIN\", false);\r\n if (res.content.returnUrl) {\r\n window.location.replace(res.content.returnUrl);\r\n removeCookies(TokenKey.returnUrl);\r\n return;\r\n }\r\n\r\n let user = getUserInfo();\r\n dispatch(accountAction.login(user));\r\n onHide();\r\n } else {\r\n ShowNotification(\r\n viVN.Errors.UnableHandleException,\r\n NotificationMessageType.Error\r\n );\r\n }\r\n },\r\n (err) => {\r\n ShowNotification(\r\n viVN.Errors[(err && err.errorType) || \"UnableHandleException\"],\r\n NotificationMessageType.Error\r\n );\r\n }\r\n );\r\n }\r\n if (!isTabLogin && !isTabForgotPassword) {\r\n if (onCheckTel(tel)) return;\r\n accountAction\r\n .Register({\r\n email: data.email,\r\n password: data.password,\r\n confirmPassword: data.confirmPassword,\r\n phoneNumber: tel,\r\n fullName: data.fullName\r\n })\r\n .then(\r\n (res) => {\r\n setIsRegisterSuccess(true);\r\n },\r\n (err) => {\r\n ShowNotification(\r\n viVN.Errors[(err && err.errorType) || \"UnableHandleException\"],\r\n NotificationMessageType.Error\r\n );\r\n }\r\n );\r\n }\r\n if (isTabForgotPassword) {\r\n if (!data) return;\r\n accountAction\r\n .ForgotPassword({\r\n email: data.email,\r\n returnUrl: DomainUserSide + UrlCollect.ResetPassword,\r\n })\r\n .then(\r\n (res) => {\r\n setIsForgotSuccess(true);\r\n },\r\n (err) => {\r\n err &&\r\n err.errorType &&\r\n ShowNotification(\r\n viVN.Errors[err.errorType],\r\n NotificationMessageType.Error\r\n );\r\n }\r\n );\r\n }\r\n };\r\n\r\n const handleSelectTabLogin = () => {\r\n setIsTabForgotPassword(false);\r\n setIsTabRegister(false);\r\n setIsRegisterSuccess(false);\r\n setIsTabLogin(true);\r\n }\r\n\r\n const handleSelectTabRegister = () => {\r\n setIsTabForgotPassword(false);\r\n setIsTabLogin(false);\r\n setIsTabRegister(true)\r\n }\r\n\r\n useEffect(() => {\r\n if (!show) {\r\n setIsTabLogin(false);\r\n setIsTabForgotPassword(false);\r\n setIsRegisterSuccess(false);\r\n setIsForgotSuccess(false);\r\n setIsTabRegister(false);\r\n } else {\r\n setIsTabRegister(showTabRegister)\r\n setIsTabLogin(showTabLogin)\r\n }\r\n }, [show])\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
x
\r\n {!isTabForgotPassword && !isRegisterSuccess &&\r\n <>\r\n
\r\n \r\n
\r\n
Sở xây dựng Sơn La
\r\n
\r\n
\r\n
\r\n
\r\n \r\n Đăng nhập\r\n \r\n \r\n Đăng ký\r\n \r\n
\r\n
\r\n \r\n }\r\n {isTabLogin && !isTabForgotPassword &&\r\n \r\n }\r\n {isTabRegister && !isTabForgotPassword &&\r\n \r\n }\r\n {isTabForgotPassword &&\r\n \r\n }\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n )\r\n}","/* eslint-disable no-script-url */\r\n/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport React, { useState, useRef, useEffect } from \"react\";\r\nimport { useForm } from \"react-hook-form\";\r\nimport \"./header.scss\";\r\nimport \"./mobile.scss\";\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport {\r\n faUser,\r\n faLock,\r\n faSignOutAlt,\r\n faCheck,\r\n faTimes,\r\n faKey,\r\n faHome,\r\n faHeart,\r\n faBars\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\nimport UrlCollect from \"../../common/url-collect\";\r\nimport ViLanguage from \"../../languages/vi\";\r\nimport {\r\n DomainUserSide,\r\n APIUrlDefault,\r\n TokenKey,\r\n getUserInfo,\r\n removeCookies,\r\n setCookies,\r\n getCookies,\r\n} from \"../../utils/configuration\";\r\nimport * as statementActions from \"../../redux/store/statement/statement.store\";\r\nimport * as documentActions from \"../../redux/store/document/document.store\";\r\nimport * as appActions from \"../../core/app.store\";\r\nimport * as acountAction from \"../../redux/store/account/account.store\";\r\nimport Modal from \"react-bootstrap/Modal\";\r\nimport { Button } from \"react-bootstrap\";\r\nimport ShowNotification from \"../../components/react-notifications/react-notifications\";\r\nimport * as viVN from \"../../languages/vi-VN.json\";\r\nimport {\r\n NotificationMessageType,\r\n} from \"../../utils/configuration\";\r\nimport { ModalAuthen } from \"../auth/modalAuthen\";\r\nimport Collapse from 'react-bootstrap/Collapse';\r\nimport CloseButton from 'react-bootstrap/CloseButton';\r\n\r\nconst LanguageCollect = ViLanguage;\r\n\r\nfunction RenderModalComponent(props) {\r\n const { infoAcount, isShowUserInfoModal, handleCloseUserInfoModal, onLogout, showLoading } = props;\r\n const [file, setFile] = useState(null);\r\n const [avatar, setAvatar] = useState(null);\r\n const [isShowChangePassword, setIsShowChangePassword] = useState(false);\r\n const { register, handleSubmit, errors, getValues, watch, clearErrors, setError } = useForm({ mode: \"all\", reValidateMode: \"onBlur\" });\r\n\r\n const password = useRef({});\r\n password.current = watch(\"password\", \"\");\r\n\r\n const onChangePassword = () => {\r\n const { password, confirmPassword } = getValues();\r\n password === confirmPassword ? clearErrors([\"confirmPassword\"]) : setError(\"confirmPassword\", { type: \"validate\" })\r\n }\r\n\r\n const onSubmit = (data) => {\r\n clearErrors();\r\n if (!data.oldPassword && !data.password && !file) { isShowChangePassword && setIsShowChangePassword(!isShowChangePassword); handleCloseUserInfoModal(); return };\r\n if (data.oldPassword && !data.password) {\r\n setError(\"password\", { type: \"validate\" });\r\n return;\r\n }\r\n if (data.password && !data.oldPassword) {\r\n setError(\"oldPassword\", { type: \"validate\" });\r\n return;\r\n }\r\n showLoading(true);\r\n const value = {\r\n id: infoAcount.id,\r\n currentPassword: data.oldPassword,\r\n newPassword: data.password,\r\n file: avatar\r\n }\r\n acountAction.UpdateUserAccount(value).then((res) => {\r\n if (res && res.content) {\r\n if (data.oldPassword && data.password) {\r\n ShowNotification(\r\n viVN.Success.ChangePasswordSuccess,\r\n NotificationMessageType.Success\r\n );\r\n } else {\r\n ShowNotification(\r\n viVN.Success.ChangeAvatarSuccess,\r\n NotificationMessageType.Success\r\n )\r\n }\r\n }\r\n isShowChangePassword && setIsShowChangePassword(!isShowChangePassword);\r\n handleCloseUserInfoModal();\r\n showLoading(false);\r\n }).catch((err) => {\r\n showLoading(false);\r\n ShowNotification(\r\n viVN.Errors[(err && err.errorType)],\r\n NotificationMessageType.Error)\r\n })\r\n }\r\n const handleChangeImage = (event) => {\r\n if (event.target.files[0]) {\r\n setFile(URL.createObjectURL(event.target.files[0]));\r\n setAvatar(event.target.files[0]);\r\n }\r\n }\r\n const handleOnCloseModal = () => {\r\n isShowChangePassword && setIsShowChangePassword(!isShowChangePassword);\r\n handleCloseUserInfoModal();\r\n }\r\n useEffect(() => {\r\n setFile(null);\r\n }, [isShowUserInfoModal])\r\n return (\r\n \r\n \r\n \r\n
Thông tin người dùng
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {!file ? : \r\n }\r\n
\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n Thông tin chung\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
setIsShowChangePassword(!isShowChangePassword)}>\r\n \r\n Đổi mật khẩu\r\n
\r\n {isShowChangePassword && (
\r\n
\r\n \r\n
\r\n clearErrors([\"oldPassword\"])} placeholder=\"Nhập mật khẩu\" ref={register} className=\"form-control\" />\r\n {errors.oldPassword && errors.oldPassword.type === \"validate\" && (\r\n Trường này là bắt buộc\r\n )}\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n {errors.password && errors.password.type === \"validate\" && (\r\n Trường này là bắt buộc\r\n )}\r\n {errors.password && errors.password.type === \"minLength\" && (\r\n Mật khẩu tối thiểu 8 ký tự\r\n )}\r\n {errors.password && errors.password.type === \"pattern\" && (\r\n \r\n Có it nhất 1 ký tự viết thường, hoa và ký tự đặc biệt\r\n \r\n )}\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n value === password.current || \"Mật khẩu không trùng khớp\",\r\n })}\r\n name=\"confirmPassword\"\r\n className=\"form-control\"\r\n placeholder=\"Nhập lại mật khẩu mới\"\r\n />\r\n {errors.confirmPassword &&\r\n errors.confirmPassword.type === \"validate\" && (\r\n Mật khẩu không khớp\r\n )}\r\n
\r\n
\r\n
)}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n )\r\n}\r\n\r\nclass HeaderView extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isLogin: getUserInfo() ? true : false,\r\n planningType: [],\r\n isShowUserInfoModal: false,\r\n infoAcount: null,\r\n showModalAuthen: false,\r\n showTabLogin: false,\r\n showTabRegister: false,\r\n windowWidth: null,\r\n openMenu: false,\r\n isShowFormLogin: false,\r\n listLookupDistrict: [],\r\n open: false,\r\n tcqh: null,\r\n sub_tcqh: null,\r\n isAdmin: true,\r\n };\r\n }\r\n\r\n componentWillMount() {\r\n this.getAllPlanningType();\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n console.log(nextProps)\r\n if (nextProps.isShowFormLogin !== this.state.isShowFormLogin) {\r\n if (nextProps.isShowFormLogin) {\r\n ShowNotification(\r\n viVN.Warning.NeedToLoginToAccess,\r\n NotificationMessageType.Warning\r\n );\r\n this.setState({ isShowFormLogin: nextProps.isShowFormLogin }, () => {\r\n this.handleOpenLogin();\r\n })\r\n }\r\n }\r\n if (nextProps.isShowFormLogin !== this.state.isShowFormLogin) {\r\n if (nextProps.isShowFormLoginQLHS) {\r\n ShowNotification(\r\n viVN.Warning.NeedToLoginAdminToAccess,\r\n NotificationMessageType.Warning\r\n );\r\n this.setState({ isShowFormLogin: nextProps.isShowFormLogin }, () => {\r\n this.handleOpenLogin();\r\n })\r\n } else {\r\n if(nextProps.isAdmin !== this.state.isAdmin) {\r\n if(this.props.isRedirectHome){\r\n ShowNotification(\r\n viVN.Warning.NeedToLoginAdminToAccess,\r\n NotificationMessageType.Warning\r\n );\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n handleResize = () => this.setState({\r\n windowWidth: window.innerWidth\r\n });\r\n\r\n handleOutsideClick = () => {\r\n const className = document.getElementById(\"navbarNav\").className\r\n if (this.state.openMenu &&\r\n className.includes('show') &&\r\n !this.state.tcqh?.classList.contains('show')\r\n && !this.state.sub_tcqh?.classList.contains('show')) {\r\n this.setState({ openMenu: false })\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.getLookupDistrict();\r\n this.handleResize();\r\n window.addEventListener('resize', this.handleResize)\r\n window.addEventListener('click', this.handleOutsideClick)\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener('resize', this.handleResize)\r\n window.removeEventListener('click', this.handleOutsideClick)\r\n }\r\n\r\n getUserAccountDetail() {\r\n this.props.showLoading(true);\r\n acountAction.GetUserAccountDetail().then((res) => {\r\n this.setState({ infoAcount: res && res.content ? res.content : null })\r\n this.props.showLoading(false);\r\n }).catch((err) => {\r\n this.props.showLoading(false);\r\n ShowNotification(\r\n viVN.Errors[(err && err.errorType)],\r\n NotificationMessageType.Error\r\n );\r\n });\r\n }\r\n\r\n getAllPlanningType() {\r\n this.props.showLoading(true);\r\n this.props\r\n .getAllPlanningType()\r\n .then((res) => {\r\n this.setState({\r\n planningType:\r\n res && res.content && res.content && res.content.length > 0\r\n ? res.content\r\n : [],\r\n });\r\n this.props.showLoading(false);\r\n })\r\n .catch((err) => {\r\n this.props.showLoading(false);\r\n ShowNotification(\r\n viVN.Errors[(err && err.errorType)],\r\n NotificationMessageType.Error\r\n );\r\n });\r\n }\r\n\r\n getLookupDistrict() {\r\n documentActions.GetLookUpDistrict().then((res) => {\r\n this.setState({\r\n listLookupDistrict: res && res.content ? res.content : []\r\n })\r\n }).catch((err) => {\r\n ShowNotification(\r\n viVN.Errors[(err && err.errorType)],\r\n NotificationMessageType.Error\r\n );\r\n });\r\n };\r\n\r\n onLogout() {\r\n removeCookies(TokenKey.token);\r\n removeCookies(TokenKey.refreshToken);\r\n window.location.replace(DomainUserSide);\r\n setCookies(\"SHOW_FORM_LOGIN\", true);\r\n setCookies(\"IS_ADMIN\", false);\r\n }\r\n\r\n //--- User info modal\r\n handleOpenUserInfoModal = () => {\r\n this.getUserAccountDetail();\r\n this.setState({\r\n isShowUserInfoModal: true,\r\n });\r\n };\r\n\r\n handleCloseUserInfoModal = () => {\r\n this.setState({\r\n isShowUserInfoModal: false,\r\n });\r\n };\r\n\r\n onToggleModalAuthen = () => {\r\n this.setState({ showModalAuthen: !this.state.showModalAuthen }, () => {\r\n if (!this.state.showModalAuthen) {\r\n this.props.setIsCancelLogin && this.props.setIsCancelLogin(true);\r\n }\r\n })\r\n }\r\n\r\n toggleSubMenuDistrict = (data) => {\r\n if (data?.classList.contains('show')) {\r\n this.state.tcqh.classList.add(\"show\");\r\n data.classList.remove(\"show\");\r\n } else {\r\n data.classList.add(\"show\");\r\n }\r\n }\r\n\r\n handleToggleSubMenuDistrict = () => {\r\n this.toggleSubMenuDistrict(this.state.sub_tcqh);\r\n }\r\n\r\n handleOpenRegister = () => {\r\n this.onToggleModalAuthen();\r\n this.setState({ showTabRegister: true, showTabLogin: false });\r\n }\r\n handleOpenLogin = () => {\r\n this.onToggleModalAuthen();\r\n this.setState({ showTabLogin: true, showTabRegister: false });\r\n }\r\n\r\n onClickTraCuuQuyHoach = () => {\r\n var tcqh = document.getElementById(\"TraCuuQuyHoach\");\r\n var sub_tcqh = document.getElementById(\"SubTraCuuQuyHoach\");\r\n this.setState({ tcqh, sub_tcqh });\r\n }\r\n\r\n render() {\r\n const PATHNAME = this.props.match.path;\r\n const isLogin = this.props.isLoggedIn;\r\n // const isAdmin = this.props.user && this.props.user.userType ? \r\n // this.props.user.userType === \"ADMINUSER\" :\r\n // this.props.user && this.props.user.userRole === \"ADMIN\";\r\n const isAdmin = getCookies(\"IS_ADMIN\") === \"true\" ? true : false;\r\n const { showModalAuthen, showTabLogin, showTabRegister, windowWidth, openMenu, listLookupDistrict } = this.state;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n {windowWidth < 1024 &&\r\n <>\r\n {!openMenu ?\r\n this.setState({ openMenu: true })} /> :\r\n this.setState({ openMenu: false })} />\r\n }\r\n \r\n }\r\n \r\n \r\n
    \r\n {!isLogin &&\r\n
  • \r\n \r\n \r\n
  • \r\n }\r\n
  • \r\n \r\n \r\n {LanguageCollect.header_homePage}{\" \"}\r\n (current)\r\n \r\n
  • \r\n
  • \r\n \r\n {LanguageCollect.header_information}\r\n \r\n \r\n \r\n {LanguageCollect.header_pleaseConsultTheCommunity}\r\n \r\n \r\n {LanguageCollect.header_planningAnnouncement}\r\n \r\n {/* \r\n {LanguageCollect.header_news}\r\n */}\r\n
  • \r\n \r\n Tin tức\r\n \r\n
    \r\n \r\n Tin tức quy hoạch Tỉnh\r\n \r\n \r\n Tin tức nội dung Qh HTKT\r\n \r\n \r\n Tin tức quy hoạch các cấp\r\n \r\n
    \r\n
  • \r\n
\r\n \r\n
  • \r\n \r\n {LanguageCollect.header_lookUpPlanning}\r\n \r\n \r\n \r\n {LanguageCollect.header_syntheticPlanning}\r\n \r\n {this.state.planningType &&\r\n this.state.planningType.length > 0 &&\r\n this.state.planningType.map((item, index) => (\r\n \r\n {item.name}\r\n \r\n ))}\r\n
  • \r\n \r\n {LanguageCollect.header_cityPlanning}\r\n \r\n
    \r\n {listLookupDistrict &&\r\n listLookupDistrict.length > 0 &&\r\n listLookupDistrict.map((item, index) => (\r\n {\r\n this.setState({ openMenu: false })\r\n }}\r\n to={`${UrlCollect.PlanningMap}?district=${item.id}`}\r\n className=\"dropdown-item\"\r\n >\r\n {item.name}\r\n \r\n ))}\r\n
    \r\n
  • \r\n
    \r\n \r\n \r\n
  • \r\n \r\n {LanguageCollect.header_reflect}\r\n \r\n
  • \r\n {/*
  • \r\n \r\n {LanguageCollect.header_map}\r\n \r\n
  • */}\r\n
  • \r\n \r\n {LanguageCollect.header_Contact}\r\n \r\n
  • \r\n {windowWidth < 1024 && isLogin &&\r\n <>\r\n
  • \r\n \r\n {LanguageCollect.user_info}\r\n \r\n
  • \r\n
  • \r\n \r\n Phản ánh kiến nghị\r\n \r\n
  • \r\n
  • \r\n \r\n Phản ánh của bạn\r\n \r\n
  • \r\n
  • \r\n \r\n {LanguageCollect.change_password}\r\n \r\n
  • \r\n
  • \r\n \r\n {LanguageCollect.header_logout}\r\n \r\n
  • \r\n \r\n }\r\n {windowWidth >= 1024 &&\r\n <>\r\n
  • \r\n \r\n \r\n \r\n \r\n
  • \r\n \r\n }\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n {this.state.infoAcount && (\r\n < RenderModalComponent infoAcount={this.state.infoAcount} showLoading={this.props.showLoading} onLogout={this.onLogout} isShowUserInfoModal={this.state.isShowUserInfoModal} handleCloseUserInfoModal={this.handleCloseUserInfoModal} />\r\n )}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n isLoading: state.app.loading,\r\n isLoggedIn: state.account.isLoggedIn,\r\n user: state.account.user,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) =>\r\n bindActionCreators(\r\n {\r\n showLoading: appActions.ShowLoading,\r\n getAllPlanningType: statementActions.PlanningTypeDispatch,\r\n logout: acountAction.logout,\r\n },\r\n dispatch\r\n );\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(HeaderView);\r\n","import React from \"react\";\r\nimport \"./footer.scss\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport {\r\n faMapMarkedAlt,\r\n faPhoneAlt,\r\n faEnvelope,\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\nimport Vilanguage from \"../../languages/vi\";\r\n\r\nconst LanguageDisplay = Vilanguage;\r\n\r\nexport default class FooterView extends React.Component {\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n {LanguageDisplay.footer_titleName}\r\n
    \r\n
    \r\n {\" \"}\r\n Cơ quan chủ quản: Sở Xây Dựng\r\n
    \r\n
    \r\n Địa chỉ: {LanguageDisplay.footer_address}\r\n
    \r\n
    \r\n {\" \"}\r\n \r\n Hotline: {LanguageDisplay.footer_hotline}\r\n {Vilanguage.footer_fax && (\r\n / Fax:{Vilanguage.footer_fax}\r\n )}\r\n \r\n
    \r\n
    \r\n {\" \"}\r\n E-mail: {LanguageDisplay.footer_email}\r\n
    \r\n {/*
    \r\n Phát triển bởi: Công ty cổ phần công nghệ xây dựng ACUD Việt Nam\r\n
    */}\r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\n\r\nfunction LoadingWithApiQueue(props) {\r\n return (\r\n
    \r\n {\r\n (props.loadingQueue.length > 0) &&
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n
    \r\n );\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n loadingQueue: state.loadingState.loadingQueue,\r\n});\r\n\r\nexport default connect(mapStateToProps, null)(LoadingWithApiQueue);\r\n","import React, { useEffect, useState } from 'react';\r\nimport { DomainUserSide, getCookies, getUserInfo, setCookies } from 'utils/configuration';\r\nimport TopView from \"../top/top.view.jsx\";\r\nimport HeaderView from \"../header/header.view.jsx\";\r\nimport FooterView from \"../footer/footer.view.jsx\";\r\nimport LoadingWithApiQueue from \"../loading/loading-with-queue.view\";\r\nimport ShowNotification from 'components/react-notifications/react-notifications.js';\r\nimport * as viVN from \"../../languages/vi-VN.json\";\r\nimport { NotificationMessageType, } from \"../../utils/configuration\";\r\nimport \"./layout.scss\";\r\nimport { Link } from 'react-router-dom';\r\n\r\nexport default (props) => {\r\n const { children } = props;\r\n const [isShowFormLoginQLHS, setIsShowFormLoginQLHS] = useState(false);\r\n const [isCancelLogin, setIsCancelLogin] = useState(false);\r\n const [isRedirectHome, setIsRedirectHome] = useState(false);\r\n const showFormLogin = getCookies(\"SHOW_FORM_LOGIN\");\r\n const redirectHome = getCookies(\"IS_ADMIN\");\r\n const isLogin = getUserInfo() ? true : false;\r\n const isAdmin = getUserInfo() && (getUserInfo().userRoles.includes('ADMIN') || getUserInfo().userRoles.includes(\"XEMHOSO\")) ? true : false;\r\n useEffect(() => {\r\n setIsShowFormLoginQLHS(showFormLogin === 'true' || !isLogin)\r\n if (!isLogin) {\r\n setCookies(\"SHOW_FORM_LOGIN\", !isLogin);\r\n }\r\n }, [showFormLogin, isLogin])\r\n\r\n useEffect(() => {\r\n setIsRedirectHome(isLogin === true && !isAdmin)\r\n // if (!isAdmin) {\r\n setCookies(\"IS_ADMIN\", isAdmin);\r\n // }\r\n }, [isLogin, redirectHome, isAdmin])\r\n\r\n useEffect(() => {\r\n if (isCancelLogin) window.location.replace(DomainUserSide);\r\n }, [isCancelLogin])\r\n\r\n const showNotifi = () => {\r\n ShowNotification(\r\n viVN.Warning.NeedToLoginAdminToAccess,\r\n NotificationMessageType.Warning\r\n );\r\n }\r\n\r\n return (\r\n
    \r\n \r\n \r\n {\r\n\r\n isAdmin ? children : (\r\n
    \r\n
    ← Trở về Trang chủ
    \r\n
    \r\n )\r\n }\r\n \r\n \r\n
    \r\n )\r\n}","import React from \"react\";\r\nimport TopView from \"../top/top.view.jsx\";\r\nimport HeaderView from \"../header/header.view.jsx\";\r\nimport FooterView from \"../footer/footer.view.jsx\";\r\nimport LoadingWithApiQueue from \"../loading/loading-with-queue.view\";\r\n\r\nimport \"./layout.scss\";\r\n\r\nexport default class LayoutDesktopView extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n bodyHeight: null,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const FooterContainerHeight = document.getElementsByClassName(\r\n \"footer-container\"\r\n )[0].offsetHeight;\r\n const HeaderContainerHeight = document.getElementsByClassName(\r\n \"header-container\"\r\n )[0].offsetHeight;\r\n\r\n this.setState({\r\n bodyHeight: {\r\n minHeight: `${\r\n window.innerHeight -\r\n FooterContainerHeight -\r\n HeaderContainerHeight -\r\n 10\r\n }px`,\r\n },\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n \r\n
    {this.props.children}
    \r\n \r\n \r\n
    \r\n );\r\n }\r\n}\r\n","import React from \"react\";\r\nimport \"./layout.scss\";\r\n\r\nexport default class LayoutUserDesktopView extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n bodyWebStyle: null,\r\n };\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    {this.props.children}
    \r\n
    \r\n );\r\n }\r\n}\r\n","import React from 'react';\r\nimport './layout-map-page.scss';\r\nimport HeaderView from '../header/header.view.jsx';\r\nimport LoadingWithApiQueue from '../loading/loading-with-queue.view';\r\n\r\nexport default class LayoutMapPageView extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n
    \r\n {this.props.children}\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n}\r\n\r\n","import HeaderView from 'components/header/header.view';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { DomainUserSide, getCookies, getUserInfo, setCookies } from 'utils/configuration';\r\n\r\nexport const LayoutAuthen = (props) => {\r\n const { children } = props;\r\n const [isShowFormLogin, setIsShowFormLogin] = useState(false);\r\n const [isCancelLogin, setIsCancelLogin] = useState(false);\r\n const showFormLogin = getCookies(\"SHOW_FORM_LOGIN\");\r\n const isLogin = getUserInfo() ? true : false;\r\n\r\n useEffect(() => {\r\n setIsShowFormLogin(showFormLogin === 'true' || !isLogin)\r\n if (!isLogin) {\r\n setCookies(\"SHOW_FORM_LOGIN\", !isLogin);\r\n }\r\n }, [showFormLogin, isLogin])\r\n\r\n useEffect(() => {\r\n if (isCancelLogin) window.location.replace(DomainUserSide);\r\n }, [isCancelLogin])\r\n\r\n return (\r\n
    \r\n \r\n {isLogin && children}\r\n
    \r\n )\r\n}","import React from 'react';\r\nimport { Link, useLocation } from 'react-router-dom';\r\nimport './layout-profile.scss';\r\nimport HeaderView from '../header/header.view.jsx';\r\nimport LoadingWithApiQueue from '../loading/loading-with-queue.view';\r\nimport { Grid } from '@material-ui/core';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faHeart, faLock, faSignOutAlt, faUser } from '@fortawesome/free-solid-svg-icons';\r\nimport UrlCollect from '../../common/url-collect';\r\nimport ViLanguage from \"../../languages/vi\";\r\nimport { DomainUserSide, removeCookies, setCookies, TokenKey } from 'utils/configuration';\r\nimport { LayoutAuthen } from '../layout-authen'\r\n\r\nconst LanguageCollect = ViLanguage;\r\n\r\nexport default function (props) {\r\n const { pathname } = useLocation();\r\n\r\n const onLogout = () => {\r\n removeCookies(TokenKey.token);\r\n removeCookies(TokenKey.refreshToken);\r\n window.location.replace(DomainUserSide);\r\n setCookies(\"SHOW_FORM_LOGIN\", true);\r\n setCookies(\"IS_ADMIN\", false);\r\n }\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
      \r\n {listNav.map((x) => (\r\n x.id === 5 ? onLogout() : null}\r\n > {x.icon} {x.name}\r\n \r\n ))}\r\n
    \r\n
    \r\n
    \r\n
    \r\n {props.children}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n );\r\n}\r\n\r\nconst listNav = [\r\n {\r\n id: 1,\r\n name: LanguageCollect.user_info,\r\n icon: ,\r\n url: UrlCollect.UserInfo\r\n },\r\n {\r\n id: 2,\r\n name: LanguageCollect.reflect_recommendations,\r\n icon: ,\r\n url: UrlCollect.CreateReflect\r\n },\r\n {\r\n id: 3,\r\n name: LanguageCollect.header_myReflect,\r\n icon: ,\r\n url: UrlCollect.MyReflect\r\n },\r\n {\r\n id: 4,\r\n name: LanguageCollect.change_password,\r\n icon: ,\r\n url: UrlCollect.ResetPassword\r\n },\r\n {\r\n id: 5,\r\n icon: ,\r\n name: LanguageCollect.header_logout,\r\n }\r\n]\r\n","import Service from \"../../../api/api-service\";\r\nimport { ApiUrl } from \"../../../api/api-url\";\r\n\r\nconst service = new Service();\r\n\r\n\r\nexport const GetListNewsByCategory = (data) => {\r\n const params = new URLSearchParams();\r\n params.append(\"pageIndex\", data.pageIndex);\r\n params.append(\"pageSize\", data.pageSize);\r\n\r\n data.isQHT && data.isQHT === true && params.append(\"CategoryId\", 1);\r\n data.isQHCC && params.append(\"CategoryId\", 3);\r\n data.isQHHTKT && params.append(\"CategoryId\", 2);\r\n data.id && params.append(\"id\", data.id);\r\n data.keyword && data.keyword && params.append(\"title\", data.keyword);\r\n data.categoryId && params.append(\"categoryId\", data.categoryId);\r\n data.image_Url && params.append(\"image_Url\", data.image_Url);\r\n data.name && params.append(\"name\", data.name);\r\n data.status && params.append(\"status\", data.status);\r\n data.description && params.append(\"description\", data.description);\r\n data.content && params.append(\"content\", data.content);\r\n data.createdDate && params.append(\"createdDate\", data.createdDate);\r\n data.modifiedDate && params.append(\"modifiedDate\", data.modifiedDate);\r\n\r\n return service\r\n .get(ApiUrl.GetListNewsByCategory, params)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\n\r\nexport const GetListHotNews = (data) => {\r\n const params = new URLSearchParams();\r\n params.append(\"pageIndex\", data.pageIndex);\r\n params.append(\"pageSize\", data.pageSize);\r\n\r\n data.id && params.append(\"id\", data.id);\r\n data.title && params.append(\"title\", data.title);\r\n data.categoryId && params.append(\"categoryId\", data.categoryId);\r\n data.image_Url && params.append(\"image_Url\", data.image_Url);\r\n data.name && params.append(\"name\", data.name);\r\n data.status && params.append(\"status\", data.status);\r\n data.description && params.append(\"description\", data.description);\r\n data.content && params.append(\"content\", data.content);\r\n data.createdDate && params.append(\"createdDate\", data.createdDate);\r\n data.modifiedDate && params.append(\"modifiedDate\", data.modifiedDate);\r\n\r\n return service\r\n .get(ApiUrl.GetListHotNews, params)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const SearchNews = (data) => {\r\n const params = new URLSearchParams();\r\n params.append(\"pageIndex\", data.pageIndex);\r\n params.append(\"keyword\", data.keyword);\r\n params.append(\"pageSize\", data.pageSize);\r\n\r\n data.id && params.append(\"id\", data.id);\r\n data.title && params.append(\"title\", data.title);\r\n data.categoryId && params.append(\"categoryId\", data.categoryId);\r\n data.image_Url && params.append(\"image_Url\", data.image_Url);\r\n data.name && params.append(\"name\", data.name);\r\n data.status && params.append(\"status\", data.status);\r\n data.description && params.append(\"description\", data.description);\r\n data.content && params.append(\"content\", data.content);\r\n data.createdDate && params.append(\"createdDate\", data.createdDate);\r\n data.modifiedDate && params.append(\"modifiedDate\", data.modifiedDate);\r\n\r\n return service\r\n .get(ApiUrl.SearchNews, params)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const GetListNews = (data) => {\r\n const params = new URLSearchParams();\r\n params.append(\"pageIndex\", data.pageIndex);\r\n params.append(\"pageSize\", data.pageSize);\r\n\r\n data.id && params.append(\"id\", data.id);\r\n data.title && params.append(\"title\", data.title);\r\n data.categoryId && params.append(\"categoryId\", data.categoryId);\r\n data.image_Url && params.append(\"image_Url\", data.image_Url);\r\n data.name && params.append(\"name\", data.name);\r\n data.status && params.append(\"status\", data.status);\r\n data.description && params.append(\"description\", data.description);\r\n data.content && params.append(\"content\", data.content);\r\n data.createdDate && params.append(\"createdDate\", data.createdDate);\r\n data.modifiedDate && params.append(\"modifiedDate\", data.modifiedDate);\r\n\r\n return service\r\n .get(ApiUrl.GetListNews, params)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const GetDetailNews = (id) => {\r\n let requestUrl = ApiUrl.GetDetailNews + '/' +id;\r\n\r\n return service\r\n .get(requestUrl)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const GetDetailFormTemplate = (id) => {\r\n const params = new URLSearchParams();\r\n params.append(\"NewsId\", id);\r\n\r\n return service\r\n .get(ApiUrl.GetDetailFormTemplate, params)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const CreateFeedback = (data) => {\r\n return service\r\n .post(ApiUrl.CreateFeedback, data)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const GetListExpiredForm = (data) => {\r\n const params = new URLSearchParams();\r\n params.append(\"pageIndex\", data.pageIndex);\r\n params.append(\"pageSize\", data.pageSize);\r\n data.sortExpression && params.append(\"sortExpression\", data.sortExpression);\r\n data.title && params.append(\"title\", data.title);\r\n data.NewsId &&\r\n params.append(\"NewsId\", data.NewsId);\r\n\r\n return service\r\n .get(ApiUrl.GetListExpiredForm, params)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const GetReportFeedback = (id) => {\r\n const params = new URLSearchParams();\r\n params.append(\"templateId\", id);\r\n\r\n return service\r\n .get(ApiUrl.GetReportFeedback, params)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\n\r\nimport * as appActions from \"../../../core/app.store\";\r\nimport * as newsActions from \"../../../redux/store/news/news.store\";\r\n\r\nimport {\r\n APIUrlDefault,\r\n getUserInfo,\r\n} from \"../../../utils/configuration\";\r\nimport dateformat from \"dateformat\";\r\nimport \"./news.scss\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faArrowLeft, faArrowRight } from \"@fortawesome/free-solid-svg-icons\";\r\n\r\nfunction NewsHome(props) {\r\n const { showLoading } = props;\r\n\r\n const [newsModel, setNewsModel] = useState([]);\r\n const [newsItems,setNewsItems] = useState([]);\r\n const [hotNews, setHotNews] = useState({});\r\n const [pagingNews, setPagingNews] = useState();\r\n const [currentPage, setCurrentPage] = useState();\r\n const pageSize = 4;\r\n\r\n useEffect(() => {\r\n onGetData();\r\n }, []);\r\n\r\n const onGetData = () => {\r\n showLoading(true);\r\n Promise.all([\r\n onGetListNews({\r\n pageIndex: 1,\r\n pageSize: pageSize\r\n }),\r\n ])\r\n .then((res) => {\r\n showLoading(false);\r\n })\r\n .catch((err) => {\r\n showLoading(false);\r\n });\r\n };\r\n\r\n const onGetListNews = (data) => {\r\n return new Promise((resolve, reject) => {\r\n newsActions.GetListNews(data).then(\r\n (res) => {\r\n // console.log(res);\r\n setNewsModel(\r\n res &&\r\n res.content &&\r\n res.content.items\r\n && res.content.items.length > 0 ? res.content.items: []\r\n );\r\n setPagingNews(res.content);\r\n setCurrentPage(res.content.pageIndex);\r\n setHotNews(res.content.items[0]);\r\n\r\n resolve(res);\r\n },\r\n (err) => {\r\n reject(err);\r\n }\r\n );\r\n });\r\n }\r\n const getNextPage = () => {\r\n let nextPage = 1;\r\n if(currentPage >0 ){\r\n nextPage = currentPage + 1;\r\n }\r\n onGetListNews({\r\n pageIndex: nextPage,\r\n pageSize: pageSize\r\n })\r\n }\r\n\r\n const getPreviousPage = () => {\r\n let prePage = 1;\r\n if(currentPage >1){\r\n prePage = currentPage - 1;\r\n }\r\n onGetListNews({\r\n pageIndex: prePage,\r\n pageSize: pageSize\r\n })\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Tin tức

    \r\n
    \r\n
    \r\n
    \r\n {\r\n pagingNews && pagingNews.hasPreviousPage && (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n {pagingNews && pagingNews.pageIndex} / {pagingNews && pagingNews.pageCount}\r\n\r\n {pagingNews && pagingNews.hasNextPage && (\r\n \r\n \r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {hotNews && hotNews.id >0 ? (\r\n
    \r\n
    \r\n \r\n \r\n (e.target.src = require(\"../../../assets/image/noImage.png\"))\r\n }\r\n alt={hotNews.title}\r\n />\r\n \r\n
    \r\n {hotNews.title}\r\n
    {dateformat(hotNews.created_date, \"dd/mm/yyyy\")}
    \r\n \r\n

    \r\n \r\n {/* Xem thêm\r\n \r\n \r\n \r\n */}\r\n
    \r\n ):(\r\n
    Chưa có dữ liệu để hiển thị!
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n {newsModel && newsModel.length >0 ? (\r\n \r\n newsModel.slice(1).map((item,index) => (\r\n
    \r\n
    \r\n \r\n \r\n (e.target.src = require(\"../../../assets/image/noImage.png\"))\r\n }\r\n alt={item.title}\r\n />\r\n \r\n
    \r\n
    \r\n {item.title}\r\n
    {dateformat(item.created_date, \"dd/mm/yyyy\")}
    \r\n {/* \r\n Xem thêm\r\n \r\n \r\n \r\n */}\r\n
    \r\n
    \r\n ))\r\n ):(\r\n
    Chưa có dữ liệu để hiển thị!
    \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 isLoading: state.app.loading,\r\n listPolygon: state.mapData.listPolygon\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) =>\r\n bindActionCreators(\r\n {\r\n showLoading: appActions.ShowLoading,\r\n },\r\n dispatch\r\n );\r\n\r\nexport default (connect(mapStateToProps, mapDispatchToProps)(NewsHome));\r\n","import Service from \"../../../api/api-service\";\r\nimport { ApiUrl } from \"../../../api/api-url\";\r\n\r\nconst service = new Service();\r\n\r\nexport const GetListConsultantCommunity = (data) => {\r\n const params = new URLSearchParams();\r\n params.append(\"pageIndex\", data.pageIndex);\r\n params.append(\"pageSize\", data.pageSize);\r\n data.planningName && params.append(\"planningName\", data.planningName);\r\n data.planningType && params.append(\"planningType\", data.planningType);\r\n data.approvalLevel && params.append(\"approvalLevel\", data.approvalLevel);\r\n data.place && params.append(\"place\", data.place);\r\n data.planningAgency && params.append(\"planningAgency\", data.planningAgency);\r\n data.consultingUnit && params.append(\"consultingUnit\", data.consultingUnit);\r\n data.startTime && params.append(\"startTime\", data.startTime);\r\n data.endTime && params.append(\"endTime\", data.endTime);\r\n\r\n return service\r\n .get(ApiUrl.GetListConsultantCommunity, params)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const GetListResultConsultantCommunity = (data) => {\r\n const params = new URLSearchParams();\r\n params.append(\"pageIndex\", data.pageIndex);\r\n params.append(\"pageSize\", data.pageSize);\r\n data.planningName && params.append(\"planningName\", data.planningName);\r\n data.planningType && params.append(\"planningType\", data.planningType);\r\n data.approvalLevel && params.append(\"approvalLevel\", data.approvalLevel);\r\n data.place && params.append(\"place\", data.place);\r\n data.planningAgency && params.append(\"planningAgency\", data.planningAgency);\r\n data.consultingUnit && params.append(\"consultingUnit\", data.consultingUnit);\r\n data.startTime && params.append(\"startTime\", data.startTime);\r\n data.endTime && params.append(\"endTime\", data.endTime);\r\n\r\n return service\r\n .get(ApiUrl.GetListResultConsultantCommunity, params)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const GetDetailConsultantCommunity = (id) => {\r\n const params = new URLSearchParams();\r\n params.append(\"id\", id);\r\n\r\n return service\r\n .get(ApiUrl.GetDetailConsultantCommunity, params)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const GetDetailFormTemplate = (id) => {\r\n const params = new URLSearchParams();\r\n params.append(\"consultantCommunityId\", id);\r\n\r\n return service\r\n .get(ApiUrl.GetDetailFormTemplate, params)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const CreateFeedback = (data) => {\r\n return service\r\n .post(ApiUrl.CreateFeedback, data)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const GetListExpiredForm = (data) => {\r\n const params = new URLSearchParams();\r\n params.append(\"pageIndex\", data.pageIndex);\r\n params.append(\"pageSize\", data.pageSize);\r\n data.sortExpression && params.append(\"sortExpression\", data.sortExpression);\r\n data.title && params.append(\"title\", data.title);\r\n data.consultantCommunityId &&\r\n params.append(\"consultantCommunityId\", data.consultantCommunityId);\r\n\r\n return service\r\n .get(ApiUrl.GetListExpiredForm, params)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const GetReportFeedback = (id) => {\r\n const params = new URLSearchParams();\r\n params.append(\"templateId\", id);\r\n\r\n return service\r\n .get(ApiUrl.GetReportFeedback, params)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport './please-consult-the-community.scss'\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport * as appActions from \"../../../core/app.store\";\r\n\r\nimport * as consultantCommunityActions from \"../../../redux/store/consultant-community/consultant-community.store\";\r\nimport { APIUrlDefault } from \"../../../utils/configuration\";\r\nimport dateformat from \"dateformat\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faArrowLeft, faArrowRight } from \"@fortawesome/free-solid-svg-icons\";\r\n\r\nfunction PctCommunityHome(props) {\r\n const { showLoading } = props;\r\n\r\n //da xin y kien\r\n const [resultModel, setResultModel] = useState([]);\r\n const [firstResult, setFirstResult] = useState({})\r\n const [paging, setPaging] = useState();\r\n const [currentPage, setCurrentPage] = useState();\r\n const pageSize = 4;\r\n //dang xin y kien\r\n const [consulting, setConsulting] = useState([]);\r\n\r\n useEffect(() => {\r\n onGetData();\r\n }, []);\r\n\r\n const onGetData = () => {\r\n showLoading(true);\r\n Promise.all([\r\n\r\n onGetListExpiredForm({\r\n pageIndex: 1,\r\n pageSize: pageSize,\r\n }),\r\n onGetListConsultantCommunity({\r\n pageIndex: 1,\r\n pageSize: 2,\r\n })\r\n ])\r\n .then((res) => {\r\n showLoading(false);\r\n })\r\n .catch((err) => {\r\n showLoading(false);\r\n });\r\n };\r\n const onGetListConsultantCommunity = (data) => {\r\n return new Promise((resolve, reject) => {\r\n consultantCommunityActions.GetListConsultantCommunity(data).then(\r\n (res) => {\r\n setConsulting(\r\n res &&\r\n res.content &&\r\n res.content.items &&\r\n res.content.items.length > 0\r\n ? res.content.items\r\n : []\r\n );\r\n resolve(res);\r\n },\r\n (err) => {\r\n reject(err);\r\n }\r\n );\r\n });\r\n };\r\n const onGetListExpiredForm = (data) => {\r\n return new Promise((resolve, reject) => {\r\n consultantCommunityActions.GetListResultConsultantCommunity(data).then(\r\n (res) => {\r\n setResultModel(\r\n res &&\r\n res.content &&\r\n res.content.items &&\r\n res.content.items.length > 0\r\n ? res.content.items\r\n : []\r\n );\r\n setPaging(res.content);\r\n setCurrentPage(res.content.pageIndex);\r\n setFirstResult(res.content.items[0])\r\n resolve(res);\r\n },\r\n (err) => {\r\n reject(err);\r\n }\r\n );\r\n });\r\n };\r\n\r\n const getNextPage = () => {\r\n let nextPage = 1;\r\n if (currentPage > 0) {\r\n nextPage = currentPage + 1;\r\n }\r\n onGetListExpiredForm({\r\n pageIndex: nextPage,\r\n pageSize: pageSize\r\n })\r\n }\r\n\r\n const getPreviousPage = () => {\r\n let prePage = 1;\r\n if (currentPage > 1) {\r\n prePage = currentPage - 1;\r\n }\r\n onGetListExpiredForm({\r\n pageIndex: prePage,\r\n pageSize: pageSize\r\n })\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Xin ý kiến cộng đồng

    \r\n
    \r\n
    \r\n
    \r\n {consulting && consulting.length > 0 ? (\r\n
    \r\n
    \r\n
    \r\n QUY HOẠCH ĐANG XIN Ý KIẾN\r\n
    \r\n
    \r\n {consulting.map((item, index) => (\r\n
    \r\n
    \r\n \r\n \r\n (e.target.src = require(\"../../../assets/image/noImage.png\"))\r\n }\r\n alt={item.planningName}\r\n />\r\n \r\n
    \r\n \r\n {item.planningName}\r\n \r\n
    \r\n {dateformat(item.startTime, \"dd/mm/yyyy\")} - {dateformat(item.endTime, \"dd/mm/yyyy\")}\r\n
    \r\n \r\n {item.title}\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n ))}\r\n
    \r\n
    \r\n
    \r\n
    \r\n KẾT QUẢ XIN Ý KIẾN\r\n
    \r\n {\r\n paging && paging.hasPreviousPage && (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n {paging && paging.pageIndex} / {paging && paging.pageCount}\r\n\r\n {paging && paging.hasNextPage && (\r\n \r\n \r\n \r\n )}\r\n
    \r\n
    \r\n\r\n
    \r\n {resultModel && resultModel.length > 0 ? (\r\n // resultModel.slice(1).map((item, index) => (\r\n resultModel.map((item, index) => (\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n (e.target.src = require(\"../../../assets/image/noImage.png\"))\r\n }\r\n alt={item.planningName}\r\n />\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n {item.planningName}\r\n
    {dateformat(item.publishDate, \"dd/mm/yyyy\")}
    \r\n
    \r\n
    \r\n\r\n
    \r\n ))\r\n ) : (
    Chưa có dữ liệu để hiển thị!
    )}\r\n
    \r\n
    \r\n
    \r\n ) : (\r\n
    \r\n
    \r\n KẾT QUẢ XIN Ý KIẾN\r\n
    \r\n {\r\n paging && paging.hasPreviousPage && (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n {paging && paging.pageIndex} / {paging && paging.pageCount}\r\n\r\n {paging && paging.hasNextPage && (\r\n \r\n \r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n (e.target.src = require(\"../../../assets/image/noImage.png\"))\r\n }\r\n alt={firstResult.planningName}\r\n />\r\n

    {firstResult.planningName}

    \r\n \r\n
    {dateformat(firstResult.publishDate, \"dd/mm/yyyy\")}
    \r\n {firstResult.title}\r\n
    \r\n
    \r\n
    \r\n {resultModel && resultModel.length > 0 ? (\r\n // resultModel.slice(1).map((item, index) => (\r\n resultModel.map((item, index) => (\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n (e.target.src = require(\"../../../assets/image/noImage.png\"))\r\n }\r\n alt={item.planningName}\r\n />\r\n
    \r\n \r\n
    \r\n {item.planningName}\r\n
    {dateformat(item.publishDate, \"dd/mm/yyyy\")}
    \r\n
    \r\n
    \r\n\r\n
    \r\n ))\r\n ) : (
    Chưa có dữ liệu để hiển thị!
    )}\r\n
    \r\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 isLoading: state.app.loading,\r\n listPolygon: state.mapData.listPolygon\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) =>\r\n bindActionCreators(\r\n {\r\n showLoading: appActions.ShowLoading,\r\n },\r\n dispatch\r\n );\r\n\r\nexport default (connect(mapStateToProps, mapDispatchToProps)(PctCommunityHome));\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport * as homePageAction from \"../../../redux/store/home-page/home-page.store\";\r\nimport './lookupPlanning.scss'\r\nimport { APIUrlDefault } from \"../../../utils/configuration\";\r\nimport dateformat from \"dateformat\";\r\nimport { LazyLoadImage } from 'react-lazy-load-image-component';\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faArrowLeft, faArrowRight } from \"@fortawesome/free-solid-svg-icons\";\r\nexport const LookupPlanningType = (props) => {\r\n const {\r\n showLoading,\r\n planningTypeId,\r\n planningName,\r\n } = props;\r\n\r\n const [listResult, setListResult] = useState([]);\r\n const [paging, setPaging] = useState();\r\n const [currentPage, setCurrentPage] = useState();\r\n const [firstPlanning, setFirstPlanning] = useState({});\r\n const pageSize = 4;\r\n useEffect(() => {\r\n onGetData();\r\n }, []);\r\n\r\n const onGetData = () => {\r\n showLoading(true);\r\n Promise.all([\r\n onGetPlanningSearchByIdName({\r\n planningTypeId,\r\n pageIndex: 1,\r\n pageSize: pageSize,\r\n }),\r\n ])\r\n .then((res) => {\r\n showLoading(false);\r\n })\r\n .catch((err) => {\r\n showLoading(false);\r\n });\r\n };\r\n\r\n\r\n const onGetPlanningSearchByIdName = (data) => {\r\n return new Promise((resolve, reject) => {\r\n homePageAction.GetPlanningSearchByIdNameHome(data.planningTypeId, data.pageIndex, data.pageSize)\r\n .then((res) => {\r\n setListResult(\r\n res &&\r\n res.content &&\r\n res.content.items\r\n && res.content.items.length > 0 ? res.content.items : []\r\n );\r\n setPaging(res.content);\r\n setCurrentPage(res.content.pageIndex);\r\n setFirstPlanning(res.content.items[0]);\r\n\r\n resolve(res);\r\n },\r\n (err) => {\r\n reject(err);\r\n })\r\n\r\n })\r\n }\r\n\r\n const getNextPage = () => {\r\n let nextPage = 1;\r\n if (currentPage > 0) {\r\n nextPage = currentPage + 1;\r\n }\r\n onGetPlanningSearchByIdName({\r\n pageIndex: nextPage,\r\n planningTypeId,\r\n pageSize: pageSize\r\n })\r\n }\r\n\r\n const getPreviousPage = () => {\r\n let prePage = 1;\r\n if (currentPage > 1) {\r\n prePage = currentPage - 1;\r\n }\r\n onGetPlanningSearchByIdName({\r\n pageIndex: prePage,\r\n planningTypeId,\r\n pageSize: pageSize\r\n })\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    {planningName}

    \r\n
    \r\n
    \r\n
    \r\n {\r\n paging && paging.hasPreviousPage && (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n {paging && paging.pageIndex} / {paging && paging.pageCount}\r\n\r\n {paging && paging.hasNextPage && (\r\n \r\n \r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n (e.target.src = require(\"../../../assets/image/noImage.png\"))\r\n }\r\n alt={firstPlanning.photo}>\r\n \r\n \r\n
    {dateformat(firstPlanning.publishDate, \"dd/mm/yyyy\")}
    \r\n \r\n

    {firstPlanning.name}

    \r\n \r\n
    \r\n
    \r\n
    \r\n {listResult.slice(1).map((item, index) => (\r\n
    \r\n
    \r\n \r\n \r\n (e.target.src = require(\"../../../assets/image/noImage.png\"))\r\n }\r\n alt={item.photo}>\r\n \r\n \r\n
    \r\n
    \r\n \r\n

    {item.name}

    \r\n \r\n
    {dateformat(item.publishDate, \"dd/mm/yyyy\")}
    \r\n
    \r\n
    \r\n ))}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n )\r\n}\r\n\r\n","import React from \"react\";\r\nimport './lookupPlanning.scss'\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport * as appActions from \"../../../core/app.store\";\r\nimport { LookupPlanningType } from \"./lookupPlanningType.view\"\r\n\r\nfunction LookupPlanningHome(props) {\r\n const { showLoading } = props;\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n}\r\nconst mapStateToProps = (state) => ({\r\n isLoading: state.app.loading,\r\n listPolygon: state.mapData.listPolygon\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) =>\r\n bindActionCreators(\r\n {\r\n showLoading: appActions.ShowLoading,\r\n },\r\n dispatch\r\n );\r\n\r\n\r\nexport default (connect(mapStateToProps, mapDispatchToProps)(LookupPlanningHome));;","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport React, { useState, useEffect } from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport Slider from \"react-slick\";\r\n\r\nimport { geolocated } from \"react-geolocated\";\r\nimport { AsyncPaginate } from \"react-select-async-paginate\";\r\n\r\nimport * as homePageStore from \"../../redux/store/home-page/home-page.store\";\r\nimport * as appActions from \"../../core/app.store\";\r\nimport NewsHome from './news/news.view';\r\nimport PctCommunityHome from \"./please-consult-the-community/please-consult-the-community.view\";\r\nimport LookupPlanningHome from \"./look-up-planning/lookupPlanning.view\";\r\nimport UrlCollect from \"../../common/url-collect\";\r\nimport history from \"../../common/history\";\r\nimport {\r\n APIUrlDefault,\r\n changeAlias,\r\n getUserInfo,\r\n NotificationMessageType,\r\n NotificationPosition,\r\n} from \"../../utils/configuration\";\r\nimport * as MapDataStore from \"../../redux/store/map-data/map-data.store\";\r\n\r\nimport \"slick-carousel/slick/slick.css\";\r\nimport \"slick-carousel/slick/slick-theme.css\";\r\nimport \"./home.scss\";\r\nimport ShowNotification from \"../../components/react-notifications/react-notifications\";\r\nimport * as viVN from \"../../languages/vi-VN.json\";\r\nimport * as mapHelper from \"../../common/map\";\r\n//import { open } from \"inspector\";\r\n\r\n\r\nfunction HomeDesktop(props) {\r\n const { showLoading } = props;\r\n\r\n const isLogin = getUserInfo() ? true : false;\r\n\r\n const settingSlider = {\r\n dots: true,\r\n infinite: true,\r\n speed: 1000,\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n arrows: false,\r\n autoplay: true,\r\n autoplaySpeed: 3000,\r\n };\r\n const [filteredSuggestions, setFilteredSuggestions] = useState([]);\r\n const [local, setLocal] = useState({})\r\n const [slideShow, setSlideShow] = useState([]);\r\n const [projectList, setProjectList] = useState();\r\n const [commentInput, setCommentInput] = useState(\"\");\r\n const [currentPosition, setCurrentPosition] = useState({\r\n latitude: null,\r\n longitude: null,\r\n altitude: null,\r\n accuracy: null,\r\n altitudeAccuracy: null,\r\n heading: null,\r\n speed: null,\r\n });\r\n const [openSearchPlace, setOpenSearchPlace] = useState(true);\r\n const [openSearchXy, setOpenSearchXy] = useState(false);\r\n const [openSearchLatLng, setOpenSearchLatLng] = useState(false);\r\n\r\n useEffect(() => {\r\n onGetData();\r\n //props.GetAllPlanningBoundariesGeomText();\r\n }, []);\r\n\r\n const onGetData = () => {\r\n showLoading(true);\r\n Promise.all([\r\n onGetSlideShow(),\r\n onGetAllPlanningByTypeId(),\r\n onGetCurrentPosition(),\r\n ])\r\n .then((res) => {\r\n showLoading(false);\r\n })\r\n .catch((err) => {\r\n showLoading(false);\r\n });\r\n };\r\n\r\n const onGetSlideShow = () => {\r\n return new Promise((resolve, reject) => {\r\n props\r\n .getSlideShow()\r\n .then((res) => {\r\n setSlideShow(res && res.content && res.content.length > 0 ? res.content : []);\r\n resolve(res);\r\n })\r\n .catch((err) => reject(err));\r\n });\r\n };\r\n\r\n const SearchPlanningByLatLng = (lng, lat) => {\r\n return new Promise((resolve,reject) => {\r\n homePageStore.SearchPlanningByLatLng(lng,lat).then((res) => {\r\n resolve(res); \r\n })\r\n .catch((err) => reject(err));\r\n });\r\n }\r\n\r\n const onGetAllPlanningByTypeId = (id) => {\r\n return new Promise((resolve, reject) => {\r\n props\r\n .getAllPlanningByTypeId(id)\r\n .then((res) => {\r\n setProjectList(\r\n res && res.content && res.content.length > 0\r\n ? res.content.map((item) => {\r\n return {\r\n value: item.id,\r\n label: item.name,\r\n key: item.planningTypeId,\r\n labelTemp: changeAlias(item.name),\r\n };\r\n })\r\n : []\r\n );\r\n resolve(res);\r\n })\r\n .catch((err) => reject(err));\r\n });\r\n };\r\n\r\n const onGetCurrentPosition = () => {\r\n return new Promise((resolve, reject) => {\r\n navigator.geolocation.getCurrentPosition(\r\n (position) => {\r\n setCurrentPosition(position.coords);\r\n resolve(position);\r\n },\r\n (error) => {\r\n reject(error);\r\n }\r\n );\r\n });\r\n };\r\n\r\n const handleSelectAddress = (address) => {\r\n homePageStore.GetLatLngPlace(address.label)\r\n .then((res) => res.result[0])\r\n .then((result) => result.location)\r\n .then((latLng) => {\r\n SearchPlanningByLatLng(latLng.lng, latLng.lat).then((res) => {\r\n if (res.content === 0) {\r\n ShowNotification(\r\n viVN.Errors.CoordinateOutSidePolygon,\r\n NotificationMessageType.Warning,\r\n NotificationPosition.Center\r\n );\r\n history.push(`${UrlCollect.SyntheticPlanning}?lat=${latLng.lat}&lng=${latLng.lng}&searchType=place`);\r\n } else {\r\n history.push(`${UrlCollect.PlanningMapViewDetail}${res.content}?lat=${latLng.lat}&lng=${latLng.lng}&searchType=place`);\r\n }\r\n })\r\n })\r\n .catch();\r\n };\r\n\r\n const onChangeProject = (data) => {\r\n data && history.push(`${UrlCollect.PlanningMap}/${data.value}`);\r\n };\r\n\r\n const sleep = (ms) =>\r\n new Promise((resolve) => {\r\n setTimeout(() => {\r\n resolve();\r\n }, ms);\r\n });\r\n\r\n const loadOptions = async (search, prevOptions) => {\r\n await sleep(500);\r\n let arr = [];\r\n let filteredOptions;\r\n let filteredOptions1;\r\n if (!search) {\r\n filteredOptions = projectList;\r\n } else {\r\n const searchLower = changeAlias(search);\r\n\r\n filteredOptions = projectList.filter(({ labelTemp }) =>\r\n labelTemp.toLowerCase().includes(searchLower)\r\n );\r\n if (!(filteredOptions.length > 0)) {\r\n let searchArray = searchLower.split(\" \");\r\n filteredOptions1 = projectList.filter(({ labelTemp }) => {\r\n arr = searchArray.filter((item) => labelTemp.includes(item));\r\n if (arr.length === searchArray.length) return true;\r\n });\r\n const hasMore = filteredOptions.length > prevOptions.length + 10;\r\n const slicedOptions = filteredOptions1.slice(\r\n prevOptions.length,\r\n prevOptions.length + 10\r\n );\r\n\r\n return {\r\n options: slicedOptions,\r\n hasMore,\r\n };\r\n }\r\n }\r\n\r\n const hasMore = filteredOptions.length > prevOptions.length + 10;\r\n const slicedOptions = filteredOptions.slice(\r\n prevOptions.length,\r\n prevOptions.length + 10\r\n );\r\n\r\n return {\r\n options: slicedOptions,\r\n hasMore,\r\n };\r\n };\r\n const Options = async (search, loadedOptions) => {\r\n if (search.length >= 4) {\r\n homePageStore.GetLatLngPlace(search)\r\n .then((res) => {\r\n setFilteredSuggestions(res && res.result && res.result.length > 0 ? res.result : [])\r\n })\r\n .catch();\r\n }\r\n await sleep(500)\r\n const addressSuggestions = filteredSuggestions.map((item, index) => {\r\n return ({\r\n value: index,\r\n label: item.address\r\n })\r\n\r\n })\r\n return {\r\n options: addressSuggestions,\r\n\r\n }\r\n\r\n }\r\n const handleOpenLatLng = () => {\r\n setOpenSearchLatLng(true);\r\n setOpenSearchPlace(false);\r\n setOpenSearchXy(false);\r\n }\r\n\r\n const handleOpenCoordinate = () => {\r\n setOpenSearchLatLng(false);\r\n setOpenSearchPlace(true);\r\n setOpenSearchXy(false);\r\n };\r\n\r\n const handleOpenPlace = () => {\r\n setOpenSearchLatLng(false);\r\n setOpenSearchPlace(false);\r\n setOpenSearchXy(true);\r\n };\r\n\r\n const searchCoordinate = (event) => {\r\n event.preventDefault();\r\n let value = commentInput?.value?.trim();\r\n if (!value) return;\r\n \r\n let coordinateList = value.split(\",\");\r\n if (coordinateList && coordinateList.length === 2) {\r\n let x = parseFloat(coordinateList[0]);\r\n let y = parseFloat(coordinateList[1]);\r\n console.log('lat', x,'lng', y)\r\n\r\n if (openSearchXy === true) {\r\n homePageStore.GetVn2000ToWgs84(y, x).then((res) => {\r\n SearchPlanningByLatLng(res[0],res[1]).then((result) => {\r\n if (result.content === 0) {\r\n ShowNotification(\r\n viVN.Errors.CoordinateOutSidePolygon,\r\n NotificationMessageType.Warning,\r\n NotificationPosition.Center\r\n );\r\n history.push(`${UrlCollect.SyntheticPlanning}?lat=${res[1]}&lng=${res[0]}&searchType=place`);\r\n } else {\r\n history.push(`${UrlCollect.PlanningMapViewDetail}${result.content}?lat=${res[1]}&lng=${res[0]}&searchType=place`);\r\n }\r\n })\r\n })\r\n }\r\n if (openSearchLatLng === true) {\r\n SearchPlanningByLatLng(y, x).then((res) => {\r\n if (res.content === 0) {\r\n ShowNotification(\r\n viVN.Errors.CoordinateOutSidePolygon,\r\n NotificationMessageType.Warning,\r\n NotificationPosition.Center\r\n );\r\n history.push(`${UrlCollect.SyntheticPlanning}?lat=${x}&lng=${y}&searchType=place`);\r\n } else {\r\n history.push(`${UrlCollect.PlanningMapViewDetail}${res.content}?lat=${x}&lng=${y}&searchType=place`);\r\n }\r\n }) .catch()\r\n }\r\n }\r\n };\r\n\r\n const classnames = (...args) => {\r\n const classes = [];\r\n args.forEach((arg) => {\r\n if (typeof arg === \"string\") {\r\n classes.push(arg);\r\n } else if (typeof arg === \"object\" && arg !== null) {\r\n Object.keys(arg).forEach((key) => {\r\n if (arg[key]) {\r\n classes.push(key);\r\n }\r\n });\r\n } else {\r\n throw new Error(\r\n \"`classnames` only accepts string or object as arguments\"\r\n );\r\n }\r\n });\r\n\r\n return classes.join(\" \");\r\n };\r\n\r\n const handleClickCurrentLocation = () => {\r\n let currentPositionTemp = currentPosition;\r\n\r\n if (!currentPositionTemp) {\r\n navigator.geolocation.getCurrentPosition((position) => {\r\n currentPositionTemp = position;\r\n })\r\n }\r\n\r\n if (currentPositionTemp.latitude && currentPositionTemp.longitude) {\r\n console.log(\"currentPositionTemp\",currentPositionTemp);\r\n // if (isInside) {\r\n // history.push(\r\n // `${UrlCollect.PlanningMapViewDetail}2?lng=${currentPositionTemp.longitude}&lat=${currentPositionTemp.latitude}&searchType=codinate`\r\n // );\r\n // } else {\r\n // ShowNotification(\r\n // viVN.Errors.CoordinateOutSidePolygon,\r\n // NotificationMessageType.Warning,\r\n // NotificationPosition.Center\r\n // );\r\n // }\r\n SearchPlanningByLatLng(currentPositionTemp.longitude, currentPositionTemp.latitude).then((res) => {\r\n if (res.content === 0) {\r\n ShowNotification(\r\n viVN.Errors.CoordinateOutSidePolygon,\r\n NotificationMessageType.Warning,\r\n NotificationPosition.Center\r\n );\r\n history.push(`${UrlCollect.SyntheticPlanning}`);\r\n } else {\r\n history.push(`${UrlCollect.PlanningMapViewDetail}${res.content}?lat=${currentPositionTemp.latitude}&lng=${currentPositionTemp.longitude}&searchType=place`);\r\n }\r\n }) .catch()\r\n } else {\r\n ShowNotification(\r\n viVN.Errors.OpenCoordinateCurrent,\r\n NotificationMessageType.Error,\r\n NotificationPosition.TopRight\r\n );\r\n }\r\n };\r\n\r\n const handlePlacesError = (status, clearSuggestions) => {\r\n clearSuggestions();\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \"Không có dữ liệu\"}\r\n />\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n {openSearchXy === true ? (\r\n {\r\n setCommentInput(input);\r\n }}\r\n name=\"address\"\r\n placeholder=\"Nhập toạ độ VN2000 (Toạ độ X, Toạ độ Y)\"\r\n className=\"input-search\"\r\n />\r\n ) : openSearchPlace === true ? (\r\n
    \r\n \"Không có dữ liệu\"}\r\n />\r\n
    \r\n ) : (\r\n {\r\n setCommentInput(input);\r\n }}\r\n name=\"address\"\r\n placeholder=\"Nhập toạ độ swg84 (Toạ độ Lat, Toạ độ Lng)\"\r\n className=\"input-search\"\r\n />)}\r\n \r\n\r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {slideShow && slideShow.length > 0 && (\r\n
    \r\n \r\n {slideShow.map(\r\n (item, index) =>\r\n item.status && (\r\n
    \r\n \r\n \"Map\"\r\n \r\n\r\n
    \r\n )\r\n )}\r\n
    \r\n
    \r\n )}\r\n\r\n
    \r\n\r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n Xin ý kiến cộng đồng\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n Công bố quy hoạch\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n Tra cứu quy hoạch\r\n
    \r\n \r\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 isLoading: state.app.loading,\r\n listPolygon: state.mapData.listPolygon,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) =>\r\n bindActionCreators(\r\n {\r\n showLoading: appActions.ShowLoading,\r\n getSlideShow: homePageStore.GetSlideShow,\r\n getAllPlanningByTypeId: homePageStore.GetAllPlanningByTypeId,\r\n GetAllPlanningBoundariesGeomText:\r\n MapDataStore.GetAllPlanningBoundariesGeomText,\r\n },\r\n dispatch\r\n );\r\n\r\nexport default geolocated({\r\n positionOptions: {\r\n enableHighAccuracy: false,\r\n },\r\n userDecisionTimeout: 5000,\r\n})(connect(mapStateToProps, mapDispatchToProps)(HomeDesktop));\r\n","// Copyright (c) 2017 PlanGrid, Inc.\r\n\r\nimport React from 'react';\r\n\r\nimport '../styles/error.scss';\r\n\r\nconst Error = props => (\r\n
    \r\n {props.errorComponent\r\n ? \r\n :

    File tải lên bị lỗi vui lòng liên hệ với admin để trợ giúp

    }\r\n
    \r\n);\r\n\r\nexport default Error;\r\n","// Copyright (c) 2017 PlanGrid, Inc.\r\n\r\nimport React from 'react';\r\n\r\nimport '../styles/loading.scss';\r\n\r\nconst Loading = () => (\r\n
    \r\n \r\n
    \r\n);\r\n\r\nexport default Loading;\r\n","/* eslint-disable no-undef */\r\n// Copyright (c) 2017 PlanGrid, Inc.\r\n\r\nimport React, { Component } from 'react';\r\n\r\nimport Error from './error';\r\nimport Loading from './loading';\r\n\r\nfunction withFetching(WrappedComponent, props) {\r\n return class extends Component {\r\n constructor(props) { // eslint-disable-line no-shadow\r\n super(props);\r\n this.state = {};\r\n this.xhr = this.createRequest(props.filePath);\r\n }\r\n\r\n componentDidMount() {\r\n try {\r\n this.fetch();\r\n } catch (e) {\r\n if (this.props.onError) {\r\n this.props.onError(e);\r\n }\r\n this.setState({ error: 'fetch error' });\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.abort();\r\n }\r\n\r\n createRequest(path) {\r\n let xhr = new XMLHttpRequest();\r\n\r\n if ('withCredentials' in xhr) {\r\n // XHR for Chrome/Firefox/Opera/Safari.\r\n xhr.open('GET', path, true);\r\n } else if (typeof XDomainRequest !== 'undefined') {\r\n // XDomainRequest for IE.\r\n xhr = new XDomainRequest();\r\n xhr.open('GET', path);\r\n } else {\r\n // CORS not supported.\r\n xhr = null;\r\n return null;\r\n }\r\n if (props.responseType) {\r\n xhr.responseType = props.responseType;\r\n }\r\n\r\n xhr.onload = () => {\r\n if (xhr.status >= 400) {\r\n this.setState({ error: `fetch error with status ${xhr.status}` });\r\n return;\r\n }\r\n const resp = props.responseType ? xhr.response : xhr.responseText;\r\n\r\n this.setState({ data: resp });\r\n };\r\n\r\n return xhr;\r\n }\r\n\r\n fetch() {\r\n this.xhr.send();\r\n }\r\n\r\n abort() {\r\n if (this.xhr) {\r\n this.xhr.abort();\r\n }\r\n }\r\n\r\n render() {\r\n if (!this.xhr) {\r\n return

    CORS not supported..

    ;\r\n }\r\n\r\n if (this.state.error) {\r\n return ;\r\n }\r\n\r\n if (this.state.data) {\r\n return ;\r\n }\r\n return (\r\n \r\n );\r\n }\r\n };\r\n}\r\n\r\nexport default withFetching;\r\n","// Copyright (c) 2017 PlanGrid, Inc.\r\n\r\nimport React, { Component } from 'react';\r\n\r\nimport ReactDataGrid from 'react-data-grid';\r\nimport CSV from 'comma-separated-values';\r\n\r\nclass CsvViewer extends Component {\r\n\r\n static parse(data) {\r\n const rows = [];\r\n const columns = [];\r\n\r\n new CSV(data).forEach((array) => {\r\n if (columns.length < 1) {\r\n array.forEach((cell, idx) => {\r\n columns.push({\r\n key: `key-${idx}`,\r\n name: cell,\r\n resizable: true,\r\n sortable: true,\r\n filterable: true,\r\n });\r\n });\r\n } else {\r\n const row = {};\r\n array.forEach((cell, idx) => {\r\n row[`key-${idx}`] = cell;\r\n });\r\n rows.push(row);\r\n }\r\n });\r\n\r\n return { rows, columns };\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = CsvViewer.parse(props.data);\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n this.setState(CsvViewer.parse(nextProps.data));\r\n }\r\n\r\n render() {\r\n const { rows, columns } = this.state;\r\n return (\r\n rows[i]}\r\n minHeight={this.props.height || 650}\r\n />\r\n );\r\n }\r\n}\r\n\r\nexport default CsvViewer;\r\n","// Copyright (c) 2017 PlanGrid, Inc.\r\n\r\nimport React, { Component } from 'react';\r\nimport * as THREE from 'three';\r\nimport '../../styles/photo360.scss';\r\n\r\nexport default class extends Component {\r\n constructor(props) {\r\n super(props);\r\n let savedX;\r\n let savedY;\r\n let savedLongitude;\r\n let savedLatitude;\r\n\r\n this.onMouseDown = this.onMouseDown.bind(this);\r\n this.onMouseMove = this.onMouseMove.bind(this);\r\n this.onMouseUp = this.onMouseUp.bind(this);\r\n\r\n this.state = {\r\n manualControl: false,\r\n longitude: 0,\r\n latitude: 0,\r\n savedX,\r\n savedY,\r\n savedLongitude,\r\n savedLatitude,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const el = document.getElementById('360-photo');\r\n const positionInfo = el.getBoundingClientRect();\r\n const height = positionInfo.height;\r\n const width = positionInfo.width;\r\n\r\n // add rendered\r\n this.renderer = new THREE.WebGLRenderer();\r\n this.renderer.setSize(width, height);\r\n el.appendChild(this.renderer.domElement);\r\n\r\n // creating a new scene\r\n this.scene = new THREE.Scene();\r\n\r\n // adding a camera\r\n this.camera = new THREE.PerspectiveCamera(75, width / height, 1, 1000);\r\n this.camera.target = new THREE.Vector3(0, 0, 0);\r\n\r\n // creation of a big sphere geometry\r\n this.sphere = new THREE.SphereGeometry(100, 100, 40);\r\n this.sphere.applyMatrix(new THREE.Matrix4().makeScale(-1, 1, 1));\r\n\r\n // creation of the sphere material\r\n this.sphereMaterial = new THREE.MeshBasicMaterial();\r\n this.sphereMaterial.map = this.props.texture;\r\n const sphereMesh = new THREE.Mesh(this.sphere, this.sphereMaterial);\r\n this.scene.add(sphereMesh);\r\n this.updateView();\r\n }\r\n\r\n componentWillUpdate() {\r\n this.updateView();\r\n }\r\n\r\n onMouseMove(event) {\r\n const { savedX, savedY, savedLongitude, savedLatitude } = this.state;\r\n\r\n if (this.state.manualControl) {\r\n const newLongitude = (savedX - event.clientX) * 0.1 + savedLongitude;\r\n const newLatitude = (event.clientY - savedY) * 0.1 + savedLatitude;\r\n this.setState({\r\n longitude: newLongitude,\r\n latitude: newLatitude,\r\n });\r\n }\r\n }\r\n\r\n onMouseUp() {\r\n this.setState({ manualControl: false });\r\n }\r\n\r\n onMouseDown(event) {\r\n event.preventDefault();\r\n this.setState({\r\n savedLongitude: this.state.longitude,\r\n savedLatitude: this.state.latitude,\r\n savedX: event.clientX,\r\n savedY: event.clientY,\r\n manualControl: true,\r\n });\r\n }\r\n\r\n\r\n updateView() {\r\n const latitude = Math.max(-85, Math.min(85, this.state.latitude));\r\n\r\n // moving the camera according to current latitude (vertical movement)\r\n // and longitude (horizontal movement)\r\n this.camera.target.x = 500 * Math.sin(THREE.Math.degToRad(90 - latitude)) * Math.cos(THREE.Math.degToRad(this.state.longitude));\r\n this.camera.target.y = 500 * Math.cos(THREE.Math.degToRad(90 - latitude));\r\n this.camera.target.z = 500 * Math.sin(THREE.Math.degToRad(90 - latitude)) * Math.sin(THREE.Math.degToRad(this.state.longitude));\r\n this.camera.lookAt(this.camera.target);\r\n\r\n this.renderer.render(this.scene, this.camera);\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n}\r\n","// Copyright (c) 2017 PlanGrid, Inc.\r\n\r\nimport React from 'react';\r\nimport VisibilitySensor from 'react-visibility-sensor';\r\nimport { PDFJS } from 'pdfjs-dist/build/pdf.combined';\r\nimport 'pdfjs-dist/web/compatibility';\r\n\r\nPDFJS.disableWorker = true;\r\nconst INCREASE_PERCENTAGE = 0.2;\r\nconst DEFAULT_SCALE = 1.1;\r\n\r\nexport class PDFPage extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n this.onChange = this.onChange.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.disableVisibilityCheck) this.fetchAndRenderPage();\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (this.props.disableVisibilityCheck) {\r\n if (prevProps.zoom !== this.props.zoom) this.fetchAndRenderPage();\r\n return;\r\n }\r\n\r\n // we want to render/re-render in two scenarias\r\n // user scrolls to the pdf\r\n // user zooms in\r\n if (prevState.isVisible === this.state.isVisible && prevProps.zoom === this.props.zoom) return;\r\n if (this.state.isVisible) this.fetchAndRenderPage();\r\n }\r\n\r\n onChange(isVisible) {\r\n if (isVisible) this.setState({ isVisible });\r\n }\r\n\r\n fetchAndRenderPage() {\r\n const { pdf, index } = this.props;\r\n pdf.getPage(index).then(this.renderPage.bind(this));\r\n }\r\n\r\n renderPage(page) {\r\n const { containerWidth, zoom } = this.props;\r\n const calculatedScale = (containerWidth / page.getViewport(DEFAULT_SCALE).width);\r\n const scale = calculatedScale > DEFAULT_SCALE ? DEFAULT_SCALE : calculatedScale;\r\n const viewport = page.getViewport(scale + zoom);\r\n const { width, height } = viewport;\r\n\r\n const context = this.canvas.getContext('2d');\r\n this.canvas.width = width;\r\n this.canvas.height = height;\r\n\r\n page.render({\r\n canvasContext: context,\r\n viewport,\r\n });\r\n }\r\n\r\n render() {\r\n const { index } = this.props;\r\n return (\r\n
    \r\n {this.props.disableVisibilityCheck ? this.canvas = node} width=\"670\" height=\"870\" /> : (\r\n \r\n this.canvas = node} width=\"670\" height=\"870\" />\r\n \r\n )\r\n }\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default class PDFDriver extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n pdf: null,\r\n zoom: 0,\r\n percent: 0,\r\n };\r\n\r\n this.increaseZoom = this.increaseZoom.bind(this);\r\n this.reduceZoom = this.reduceZoom.bind(this);\r\n this.resetZoom = this.resetZoom.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n const { filePath } = this.props;\r\n const containerWidth = this.container.offsetWidth;\r\n PDFJS.getDocument(filePath, null, null, this.progressCallback.bind(this)).then((pdf) => {\r\n this.setState({ pdf, containerWidth });\r\n });\r\n }\r\n\r\n setZoom(zoom) {\r\n this.setState({\r\n zoom,\r\n });\r\n }\r\n\r\n progressCallback(progress) {\r\n const percent = ((progress.loaded / progress.total) * 100).toFixed();\r\n this.setState({ percent });\r\n }\r\n\r\n reduceZoom() {\r\n if (this.state.zoom === 0) return;\r\n this.setZoom(this.state.zoom - 1);\r\n }\r\n\r\n increaseZoom() {\r\n this.setZoom(this.state.zoom + 1);\r\n }\r\n\r\n resetZoom() {\r\n this.setZoom(0);\r\n }\r\n\r\n renderPages() {\r\n const { pdf, containerWidth, zoom } = this.state;\r\n if (!pdf) return null;\r\n const pages = Array.apply(null, { length: pdf.numPages });\r\n return pages.map((v, i) => (\r\n ()\r\n ));\r\n }\r\n\r\n renderLoading() {\r\n if (this.state.pdf) return null;\r\n return (
    LOADING ({this.state.percent}%)
    );\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    this.container = node} >\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {this.renderLoading()}\r\n {this.renderPages()}\r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nPDFDriver.defaultProps = {\r\n disableVisibilityCheck: false,\r\n};\r\n","// Copyright (c) 2017 PlanGrid, Inc.\r\n\r\nimport React, { Component } from \"react\";\r\nimport mammoth from \"mammoth\";\r\n\r\nimport \"../../styles/docx.scss\";\r\n\r\nexport default class extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n percent: 0,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const jsonFile = new XMLHttpRequest();\r\n jsonFile.upload.addEventListener(\r\n \"progress\",\r\n this.progressCallback.bind(this)\r\n );\r\n jsonFile.addEventListener(\"progress\", this.progressCallback.bind(this));\r\n jsonFile.open(\"GET\", this.props.filePath, true);\r\n jsonFile.send();\r\n jsonFile.responseType = \"arraybuffer\";\r\n jsonFile.onreadystatechange = () => {\r\n if (jsonFile.readyState === 4 && jsonFile.status === 200) {\r\n mammoth\r\n .convertToHtml(\r\n { arrayBuffer: jsonFile.response },\r\n { includeDefaultStyleMap: true }\r\n )\r\n .then((result) => {\r\n const docEl = document.createElement(\"div\");\r\n docEl.className = \"document-container\";\r\n docEl.innerHTML = result.value;\r\n document.getElementById(\"docx\").innerHTML = docEl.outerHTML;\r\n })\r\n .catch((a) => {\r\n console.log(\"alexei: something went wrong\", a);\r\n })\r\n .done();\r\n }\r\n };\r\n }\r\n\r\n progressCallback(progress) {\r\n let percent = (progress.loaded / progress.total) * 100;\r\n percent = (percent > 89 ? 89 : percent).toFixed();\r\n this.setState({ percent });\r\n }\r\n\r\n renderLoading() {\r\n return
    LOADING ({this.state.percent}%)
    ;\r\n }\r\n\r\n render() {\r\n return
    {this.renderLoading()}
    ;\r\n }\r\n}\r\n","// Copyright (c) 2017 PlanGrid, Inc.\r\n\r\nimport React, { Component } from 'react';\r\n\r\nimport '../../styles/video.scss';\r\nimport Loading from '../loading';\r\n\r\nclass VideoViewer extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n };\r\n }\r\n\r\n onCanPlay() {\r\n this.setState({ loading: false });\r\n }\r\n\r\n renderLoading() {\r\n if (this.state.loading) {\r\n return ;\r\n }\r\n return null;\r\n }\r\n\r\n render() {\r\n const visibility = this.state.loading ? 'hidden' : 'visible';\r\n return (\r\n
    \r\n
    \r\n {this.renderLoading()}\r\n this.onCanPlay(e)}\r\n src={this.props.filePath}\r\n >\r\n Video playback is not supported by your browser.\r\n \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default VideoViewer;\r\n","// Copyright (c) 2017 PlanGrid, Inc.\r\n\r\nimport React, { Component } from 'react';\r\nimport XLSX from 'xlsx';\r\n\r\nimport CsvViewer from './csv-viewer';\r\n\r\nclass XlxsViewer extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = this.parse();\r\n }\r\n\r\n parse() {\r\n const dataArr = new Uint8Array(this.props.data);\r\n const arr = [];\r\n\r\n for (let i = 0; i !== dataArr.length; i += 1) {\r\n arr.push(String.fromCharCode(dataArr[i]));\r\n }\r\n\r\n const workbook = XLSX.read(arr.join(''), { type: 'binary' });\r\n const names = Object.keys(workbook.Sheets);\r\n const sheets = names.map(name => (\r\n XLSX.utils.sheet_to_csv(workbook.Sheets[name])\r\n ));\r\n\r\n return { sheets, names, curSheetIndex: 0 };\r\n }\r\n\r\n renderSheetNames(names) {\r\n const sheets = names.map((name, index) => (\r\n {\r\n this.setState({ curSheetIndex: index });\r\n }}\r\n />\r\n ));\r\n\r\n return (\r\n
    \r\n {sheets}\r\n
    \r\n );\r\n }\r\n\r\n renderSheetData(sheet) {\r\n const csvProps = Object.assign({}, this.props, { data: sheet });\r\n return (\r\n \r\n );\r\n }\r\n\r\n render() {\r\n const { sheets, names, curSheetIndex } = this.state;\r\n return (\r\n
    \r\n {this.renderSheetNames(names)}\r\n {this.renderSheetData(sheets[curSheetIndex || 0])}\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default XlxsViewer;\r\n","// Copyright (c) 2017 PlanGrid, Inc.\r\n\r\nimport React, { Component } from 'react';\r\n// import XViewer from '../../utils/xbim-viewer.debug.bundle';\r\n\r\nimport Error from '../error';\r\n\r\nexport default class XBimViewer extends Component {\r\n // TODO check for webgl compatibility\r\n constructor(props) {\r\n super(props);\r\n this.state = { error: false };\r\n }\r\n\r\n componentDidMount() {\r\n // try {\r\n // const viewer = new XViewer('xbim-viewer');\r\n // viewer.load(this.props.filePath);\r\n // viewer.start();\r\n // } catch (e) {\r\n // if (this.props.onError) {\r\n // this.props.onError(e);\r\n // }\r\n // this.setState({ error: e });\r\n // }\r\n }\r\n\r\n render() {\r\n if (this.state.error) {\r\n return ;\r\n }\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n}\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\n// Copyright (c) 2017 PlanGrid, Inc.\r\n\r\nimport React from \"react\";\r\nimport { saveAs } from \"file-saver\";\r\n\r\nimport * as documentAction from \"../../../../redux/store/document/document.store\";\r\n\r\nimport \"../../styles/unsupported.scss\";\r\n\r\nconst downloadFileBinary = (id, name) => {\r\n if (!id || !name) return;\r\n documentAction.DownloadFile(id).then((res) => {\r\n const blob = new Blob([res], {\r\n type: \"application/*\",\r\n });\r\n let _nameArray = name.split(\"/\");\r\n saveAs(blob, _nameArray[_nameArray.length - 1]);\r\n });\r\n};\r\n\r\nconst UnsupportedViewer = (props) => (\r\n
    \r\n
    \r\n {props.unsupportedComponent ? (\r\n \r\n ) : (\r\n
    \r\n

    \r\n Không hỗ trợ hiển thị file {`.${props.fileType}`}. Bạn có\r\n muốn download file? (\r\n downloadFileBinary(props.fileId, props.filePath)}\r\n >\r\n click để download\r\n \r\n )\r\n

    \r\n
    \r\n )}\r\n
    \r\n
    \r\n);\r\n\r\nexport default UnsupportedViewer;\r\n","// Copyright (c) 2017 PlanGrid, Inc.\r\n\r\nimport React, { Component } from 'react';\r\n\r\nimport '../../styles/photo-viewer.scss';\r\n\r\nexport default class PhotoViewer extends Component {\r\n componentDidMount() {\r\n const { originalWidth, originalHeight } = this.props;\r\n const imageDimensions = this.getImageDimensions.call(this, originalWidth, originalHeight);\r\n\r\n this.props.texture.image.style.width = `${imageDimensions.width}px`;\r\n this.props.texture.image.style.height = `${imageDimensions.height}px`;\r\n this.props.texture.image.setAttribute('class', 'photo');\r\n document.getElementById('pg-photo-container').appendChild(this.props.texture.image);\r\n }\r\n\r\n getImageDimensions(originalWidth, originalHeight) {\r\n // Scale image to fit into viewer\r\n let imgHeight;\r\n let imgWidth;\r\n const { height: viewerHeight, width: viewerWidth } = this.props;\r\n\r\n if (originalHeight <= viewerHeight && originalWidth <= viewerWidth) {\r\n imgWidth = originalWidth;\r\n imgHeight = originalHeight;\r\n } else {\r\n const heightRatio = viewerHeight / originalHeight;\r\n const widthRatio = viewerWidth / originalWidth;\r\n if (heightRatio < widthRatio) {\r\n imgHeight = originalHeight * heightRatio;\r\n imgWidth = originalWidth * heightRatio;\r\n } else {\r\n imgHeight = originalHeight * widthRatio;\r\n imgWidth = originalWidth * widthRatio;\r\n }\r\n }\r\n\r\n return { height: imgHeight, width: imgWidth };\r\n }\r\n\r\n render() {\r\n const containerStyles = {\r\n width: `${this.props.width}px`,\r\n height: `${this.props.height}px`,\r\n };\r\n\r\n return (\r\n
    \r\n );\r\n }\r\n}\r\n","// Copyright (c) 2017 PlanGrid, Inc.\r\n\r\nimport React, { Component } from 'react';\r\n\r\nimport * as THREE from 'three';\r\nimport PhotoViewer from './photo-viewer';\r\nimport Photo360Viewer from './photo360-viewer';\r\nimport Loading from '../loading';\r\n\r\nfunction getPhotoDriver(width, height, fileType) {\r\n if (fileType === 'jpg' && window.Math.abs((width / height) - 2) <= 0.01) {\r\n return Photo360Viewer;\r\n }\r\n return PhotoViewer;\r\n}\r\n\r\nexport default class PhotoViewerWrapper extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n originalWidth: 0,\r\n originalHeight: 0,\r\n imageLoaded: false,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n // spike on using promises and a different loader or adding three js loading manager\r\n const loader = new THREE.TextureLoader();\r\n loader.crossOrigin = '';\r\n // load a resource\r\n loader.load(\r\n // resource URL\r\n this.props.filePath,\r\n // Function when resource is loaded\r\n (texture) => {\r\n this.setState({\r\n originalWidth: texture.image.width,\r\n originalHeight: texture.image.height,\r\n imageLoaded: true,\r\n texture,\r\n });\r\n },\r\n (xhr) => {\r\n console.log(`${xhr.loaded / xhr.total * 100}% loaded`);\r\n },\r\n (xhr) => {\r\n console.log('An error happened', xhr);\r\n },\r\n );\r\n }\r\n\r\n render() {\r\n if (!this.state.imageLoaded) {\r\n return ;\r\n }\r\n const { originalWidth, originalHeight } = this.state;\r\n const PhotoDriver = getPhotoDriver(originalWidth, originalHeight, this.props.fileType);\r\n\r\n return (\r\n \r\n );\r\n }\r\n}\r\n","// Copyright (c) 2017 PlanGrid, Inc.\r\n\r\nimport React, { Component } from 'react';\r\n\r\nimport '../../styles/video.scss';\r\nimport Loading from '../loading';\r\n\r\nclass AudioViewer extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n };\r\n }\r\n\r\n onCanPlay() {\r\n this.setState({ loading: false });\r\n }\r\n\r\n renderLoading() {\r\n if (this.state.loading) {\r\n return ;\r\n }\r\n return null;\r\n }\r\n\r\n render() {\r\n const visibility = this.state.loading ? 'hidden' : 'visible';\r\n return (\r\n
    \r\n
    \r\n {this.renderLoading()}\r\n this.onCanPlay(e)}\r\n src={this.props.filePath}\r\n >\r\n Video playback is not supported by your browser.\r\n \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default AudioViewer;\r\n","// Copyright (c) 2017 PlanGrid, Inc.\r\n\r\nimport React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport '../styles/main.scss';\r\nimport withFetching from './fetch-wrapper';\r\n\r\nimport {\r\n CsvViewer,\r\n DocxViewer,\r\n VideoViewer,\r\n XlsxViewer,\r\n XBimViewer,\r\n PDFViewer,\r\n UnsupportedViewer,\r\n PhotoViewerWrapper,\r\n AudioViewer,\r\n} from './drivers';\r\n\r\nclass FileViewer extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const container = document.getElementById('pg-viewer');\r\n const height = container ? container.clientHeight : 0;\r\n const width = container ? container.clientWidth : 0;\r\n this.setState({ height, width });\r\n }\r\n\r\n getDriver() {\r\n switch (this.props.fileType) {\r\n case 'csv': {\r\n return withFetching(CsvViewer, this.props);\r\n }\r\n case 'xlsx': {\r\n const newProps = Object.assign({}, this.props, { responseType: 'arraybuffer' });\r\n return withFetching(XlsxViewer, newProps);\r\n }\r\n case 'jpg':\r\n case 'jpeg':\r\n case 'gif':\r\n case 'bmp':\r\n case 'png': {\r\n return PhotoViewerWrapper;\r\n }\r\n case 'pdf': {\r\n return PDFViewer;\r\n }\r\n case 'docx': {\r\n return DocxViewer;\r\n }\r\n case 'mp3': {\r\n return AudioViewer;\r\n }\r\n case 'webm':\r\n case 'mp4': {\r\n return VideoViewer;\r\n }\r\n case 'wexbim': {\r\n return XBimViewer;\r\n }\r\n default: {\r\n return UnsupportedViewer;\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n console.log(\"props\",this.props)\r\n const Driver = this.getDriver(this.props);\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nFileViewer.propTypes = {\r\n fileType: PropTypes.string.isRequired,\r\n filePath: PropTypes.string.isRequired,\r\n onError: PropTypes.func,\r\n errorComponent: PropTypes.element,\r\n unsupportedComponent: PropTypes.element,\r\n};\r\n\r\nFileViewer.defaultProps = {\r\n onError: () => null,\r\n errorComponent: null,\r\n unsupportedComponent: null,\r\n};\r\n\r\nexport default FileViewer;\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\n/* eslint-disable react/jsx-no-target-blank */\r\n/* eslint-disable @typescript-eslint/no-unused-vars */\r\n/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport React, { useState, useEffect } from \"react\";\r\nimport * as apiConfig from '../../../api/api-config';\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { Link } from \"react-router-dom\";\r\nimport moment from \"moment\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport {\r\n faArrowLeft,\r\n faAirFreshener,\r\n faFolder,\r\n faChevronRight,\r\n faEye,\r\n faDownload,\r\n faClock,\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\nimport { faCopy, faMap } from \"@fortawesome/free-regular-svg-icons\";\r\nimport { saveAs } from \"file-saver\";\r\n\r\nimport * as appActions from \"../../../core/app.store\";\r\nimport * as documentAction from \"../../../redux/store/document/document.store\";\r\n\r\nimport UrlCollect from \"../../../common/url-collect\";\r\nimport * as config from \"../../../utils/configuration\";\r\nimport { NotificationMessageType } from \"../../../utils/configuration\";\r\nimport ShowNotification from \"../../../components/react-notifications/react-notifications\";\r\nimport * as viVN from \"../../../languages/vi-VN.json\";\r\nimport $ from \"jquery\";\r\nimport \"./records-detail.scss\";\r\nimport { FILE_EXTENSION_ICON } from \"../../../utils/configuration\";\r\n\r\nfunction RecordsManagementDetailDesktopView(props) {\r\n const {\r\n onBack,\r\n planningId,\r\n tabType,\r\n showLoading,\r\n isShowPreview,\r\n setShowPreview,\r\n setFile,\r\n setPlanningId,\r\n } = props;\r\n\r\n const [documents, setDocuments] = useState([]);\r\n const [detailModels, setDetailModel] = useState();\r\n const [planningRelationShips, setPlanningRelationShips] = useState([]);\r\n const [nameFolderTitle, setNameFolderTitle] = useState([]);\r\n const [nextTab, setNextTab] = useState(false);\r\n const typeName = \"Folder\";\r\n\r\n useEffect(() => {\r\n if (!planningId) return;\r\n GetDocumentByPlanningId();\r\n }, [planningId]);\r\n\r\n const GetDocumentByPlanningId = (id = planningId) => {\r\n showLoading(true);\r\n documentAction\r\n .GetDocumentByPlanningId(id)\r\n .then((result) => {\r\n if (result && result.content) {\r\n setDetailModel(result.content);\r\n setDocuments(\r\n result.content.documents && result.content.documents.length > 0\r\n ? result.content.documents\r\n : []\r\n );\r\n setPlanningRelationShips(\r\n result.content.planningRelationShips &&\r\n result.content.planningRelationShips.length > 0\r\n ? result.content.planningRelationShips\r\n : []\r\n );\r\n setNextTab(true);\r\n } else {\r\n ShowNotification(\r\n viVN.Errors[result && result.errorType],\r\n NotificationMessageType.Warning\r\n );\r\n setNextTab(false);\r\n }\r\n showLoading(false);\r\n })\r\n .catch((err) => {\r\n showLoading(false);\r\n });\r\n };\r\n\r\n function GetChildrenDocument(id = planningId, parentId) {\r\n showLoading(true);\r\n documentAction\r\n .GetChildrenDocument(id, parentId)\r\n .then((res) => {\r\n setDocuments(res && res.content ? res.content : []);\r\n showLoading(false);\r\n })\r\n .catch((err) => {\r\n showLoading(false);\r\n });\r\n }\r\n\r\n function handleOnClickFolder(item) {\r\n let arrFolderTitle = nameFolderTitle;\r\n arrFolderTitle.push(item);\r\n setNameFolderTitle(arrFolderTitle);\r\n GetChildrenDocument(planningId, item.id);\r\n }\r\n\r\n function onBanckDocument(item, index) {\r\n let arr = nameFolderTitle.splice(index, 1);\r\n setNameFolderTitle(arr);\r\n GetChildrenDocument(planningId, item.id);\r\n }\r\n\r\n function onClickRootBtn() {\r\n let arr = nameFolderTitle;\r\n setNameFolderTitle((arr = []));\r\n GetDocumentByPlanningId();\r\n }\r\n\r\n const onShowFilePreview = (file) => {\r\n if (file) {\r\n setShowPreview(true);\r\n setFile(file);\r\n $(\"html, body\").animate({ scrollTop: 0 }, 500);\r\n }\r\n };\r\n\r\n const renderFilePreview = (file) => {\r\n let isSupport = config.FilePreviewSupport(file.extension);\r\n if(isSupport)\r\n return (\r\n {\r\n isSupport\r\n ? onShowFilePreview(file)\r\n : ShowNotification(\r\n viVN.Warning.FilePreviewNotSupport,\r\n config.NotificationMessageType.Warning,\r\n config.NotificationPosition.Center\r\n );\r\n }}\r\n className=\"mr-4 cursor-pointer\"\r\n >\r\n Xem\r\n \r\n );\r\n };\r\n const downloadFileBinary = (id, name) => {\r\n if (!id) return;\r\n documentAction.DownloadFile(id).then((res) => {\r\n const blob = new Blob([res], {\r\n type: \"application/*\",\r\n });\r\n saveAs(blob, name);\r\n }).catch((err) => {\r\n ShowNotification(\r\n viVN.Errors[err && err.errorType],\r\n config.NotificationMessageType.Error,\r\n config.NotificationPosition.TopRight\r\n );\r\n });\r\n };\r\n\r\n const renderIcon = (type = \"\") => {\r\n if (!type) return null;\r\n\r\n let _type = type.toLowerCase();\r\n switch (_type) {\r\n case FILE_EXTENSION_ICON.DOC:\r\n return (\r\n \r\n );\r\n case FILE_EXTENSION_ICON.DOCX:\r\n return (\r\n \r\n );\r\n case FILE_EXTENSION_ICON.PPT:\r\n return (\r\n \r\n );\r\n case FILE_EXTENSION_ICON.PDF:\r\n return (\r\n \r\n );\r\n case FILE_EXTENSION_ICON.XLSX:\r\n return (\r\n \r\n );\r\n case FILE_EXTENSION_ICON.TIF:\r\n return (\r\n \r\n );\r\n case FILE_EXTENSION_ICON.DWG:\r\n return (\r\n \r\n );\r\n case FILE_EXTENSION_ICON.DNG:\r\n return (\r\n \r\n );\r\n case FILE_EXTENSION_ICON.JPG:\r\n case FILE_EXTENSION_ICON.JPEG:\r\n case FILE_EXTENSION_ICON.PNG:\r\n return (\r\n \r\n );\r\n case FILE_EXTENSION_ICON.XLS:\r\n return (\r\n \r\n );\r\n case FILE_EXTENSION_ICON.PPTX:\r\n return (\r\n \r\n );\r\n case FILE_EXTENSION_ICON.TXT:\r\n return (\r\n \r\n );\r\n default:\r\n return null;\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n
    {detailModels ? detailModels.name : \"\"}
    \r\n
    \r\n\r\n
      \r\n
    • \r\n \r\n Thông tin chi tiết\r\n \r\n
    • \r\n
    • \r\n \r\n Thành phần hồ sơ\r\n \r\n
    • \r\n
    • \r\n \r\n Hồ sơ liên quan\r\n \r\n
    • \r\n
    \r\n\r\n
    \r\n \r\n {detailModels ? (\r\n
    \r\n
    \r\n \r\n {detailModels.name}\r\n
    \r\n
    \r\n \r\n {detailModels.code}\r\n
    \r\n
    \r\n \r\n {detailModels.location}\r\n
    \r\n
    \r\n \r\n {detailModels.numberOfDecisions}\r\n
    \r\n
    \r\n \r\n \r\n {moment(new Date(detailModels.publishDate)).format(\r\n \"DD/MM/YYYY\"\r\n )}\r\n \r\n
    \r\n
    \r\n \r\n {detailModels.agencySubmitted}\r\n
    \r\n
    \r\n \r\n {detailModels.agencySubmitted}\r\n
    \r\n
    \r\n \r\n {detailModels.consultingUnit}\r\n
    \r\n
    \r\n \r\n {detailModels.population}\r\n
    \r\n
    \r\n \r\n {detailModels.acreage}\r\n
    \r\n
    \r\n \r\n {detailModels.landForConstruction}\r\n
    \r\n
    \r\n \r\n {detailModels.report}\r\n
    \r\n
    \r\n ) : (\r\n {\"Không có dữ liệu\"}\r\n )}\r\n
    \r\n \r\n
    \r\n
    \r\n onClickRootBtn()}\r\n >\r\n onClickRootBtn()}\r\n icon={faAirFreshener}\r\n className=\"mr-2 text-success\"\r\n />\r\n Thư mục gốc\r\n \r\n {nameFolderTitle &&\r\n nameFolderTitle.length > 0 &&\r\n nameFolderTitle.map((item, index) => (\r\n \r\n \r\n onBanckDocument(item, index)}\r\n className=\"btn btn-secondary pathnode\"\r\n disabled={\r\n index === nameFolderTitle.length - 1 ? true : false\r\n }\r\n >\r\n {item.name}\r\n \r\n \r\n ))}\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {documents &&\r\n documents.length > 0 &&\r\n documents.map((item, index) => (\r\n \r\n {item.typeName === typeName ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n ))}\r\n \r\n
    Tên tài liệu
    handleOnClickFolder(item)}>\r\n {\" \"}\r\n {item.name}\r\n \r\n {renderIcon(\r\n item.extension && item.extension.toLowerCase()\r\n )}\r\n {item.name}\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n
    \r\n {planningRelationShips && planningRelationShips.length > 0 ? (\r\n planningRelationShips.map((item, index) => (\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {\r\n setPlanningId(item.id);\r\n if (nextTab) {\r\n setNextTab(false);\r\n document.getElementById(\"detail-tab\").click();\r\n }\r\n }}\r\n >\r\n {item.name}\r\n \r\n\r\n {/* \r\n {item.name}\r\n */}\r\n

    \r\n Địa điểm: {item.location}\r\n

    \r\n
    \r\n \r\n \r\n {moment(\r\n new Date(detailModels.publishDate)\r\n ).format(\"DD/MM/YYYY\")}\r\n \r\n
    \r\n
    \r\n {\r\n setPlanningId(item.id);\r\n if (nextTab) {\r\n setNextTab(false);\r\n document.getElementById(\"detail-tab\").click();\r\n }\r\n }}\r\n >\r\n \r\n Xem hồ sơ\r\n \r\n\r\n \r\n \r\n Xem bản đồ\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n ))\r\n ) : (\r\n
    Không có dữ liệu
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n {isShowPreview && (\r\n setShowPreview(false)}\r\n >\r\n \r\n \r\n )}\r\n \r\n );\r\n}\r\nconst mapStateToProps = (state) => ({\r\n isLoading: state.app.loading,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) =>\r\n bindActionCreators(\r\n {\r\n showLoading: appActions.ShowLoading,\r\n },\r\n dispatch\r\n );\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(RecordsManagementDetailDesktopView);\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport React, { useState } from \"react\";\r\nimport \"./pagination.scss\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport {\r\n faAngleDoubleRight,\r\n faAngleDoubleLeft,\r\n faAngleLeft,\r\n faAngleRight,\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\n\r\nexport default function PaginationView(props) {\r\n const pageRangeDisplayed = props.pageRangeDisplayed || 5;\r\n const pageTotal =\r\n props.pageTotal || Math.ceil((props.totalItems || 0) / props.pageSize) || 1;\r\n\r\n const [leftPage, setLeftPage] = useState(1);\r\n const [rightPage, setRightPage] = useState(pageRangeDisplayed);\r\n const [currentIndex, setCurrentIndex] = useState(props.currentIndex || 1);\r\n\r\n const handleOnClick = function (index) {\r\n setCurrentIndex(index);\r\n if (index > 2 && index < pageTotal -1) {\r\n setLeftPage(index -2);\r\n setRightPage(index +2)\r\n } else if (index <= pageRangeDisplayed) {\r\n setLeftPage(1);\r\n setRightPage(pageRangeDisplayed);\r\n } else if (index > pageTotal - pageRangeDisplayed) {\r\n setLeftPage(pageTotal + 1 - pageRangeDisplayed);\r\n setRightPage(pageTotal);\r\n } else {\r\n setLeftPage(index - Math.ceil((pageRangeDisplayed - 1) / 2));\r\n setRightPage(index + Math.ceil((pageRangeDisplayed - 1) / 2));\r\n }\r\n if(props.isLookup) {\r\n props.onClick(\r\n props.planningTypeId,\r\n props.name,\r\n props.district,\r\n props.planningUnitId,\r\n props.yearSearch,\r\n props.approvalAgencyId,\r\n props.numberOfDecisions,\r\n props.constructionGroup,\r\n index\r\n );\r\n } else {\r\n props.id ? props.onClick(props.id, index) : props.onClick(index);\r\n }\r\n };\r\n\r\n const renderListButtonDisplay = () => {\r\n const listButton = [];\r\n for (let i = leftPage; i <= rightPage; i++)\r\n if (i <= pageTotal)\r\n listButton.push(\r\n \r\n handleOnClick(i)}>\r\n {i}\r\n \r\n \r\n );\r\n else break;\r\n return listButton;\r\n };\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n}\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\n/* eslint-disable @typescript-eslint/no-unused-vars */\r\n/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport React, { useState, useEffect, useRef } from \"react\";\r\nimport { useForm } from \"react-hook-form\";\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport {\r\n faSearch, faCog, faTimes,\r\n faTable,\r\n faList,\r\n faExclamationTriangle,\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\nimport { faCopy, faMap } from \"@fortawesome/free-regular-svg-icons\";\r\nimport CancelPresentationIcon from \"@material-ui/icons/CancelPresentation\";\r\nimport { Link } from \"react-router-dom\";\r\nimport Select from \"react-select\";\r\nimport FileViewer from \"../../components/file-viewer/components/file-viewer\";\r\n\r\nimport * as appActions from \"../../core/app.store\";\r\nimport * as documentAction from \"../../redux/store/document/document.store\";\r\nimport * as MapDataStore from \"../../redux/store/map-data/map-data.store\";\r\nimport * as statementActions from \"../../redux/store/statement/statement.store\";\r\nimport RecordsManagementDetailDesktopView from \"./records-management-detail/records-management-detail.view.jsx\";\r\nimport Pagination from \"../../components/pagination/pagination.view\";\r\n\r\nimport * as config from \"../../utils/configuration\";\r\nimport UrlCollect from \"../../common/url-collect\";\r\nimport {\r\n NotificationMessageType,\r\n NotificationPosition,\r\n} from \"../../utils/configuration\";\r\nimport ShowNotification from \"../../components/react-notifications/react-notifications\";\r\nimport * as viVN from \"../../languages/vi-VN.json\";\r\nimport \"./records-management.scss\";\r\n\r\nfunction RecordsManagementDesktopView(props) {\r\n const { showLoading } = props;\r\n\r\n const currentPageIndex = 1;\r\n const currentPageSize = 8;\r\n const [paginationNumber, setPaginationNumber] = useState();\r\n const [planningModels, setPlanningModels] = useState([]);\r\n const [documentType, setDocumentType] = useState([]);\r\n const [yearStatement, setYearStatement] = useState([]);\r\n const [approvalLevelOption, setApprovalLevelOption] = useState([]);\r\n const [planningTypeOption, setPlanningTypeOption] = useState([]);\r\n \r\n const [documentTypeId, setDocumentTypeId] = useState();\r\n const [yearSearch, setYearSearch] = useState(\"\");\r\n const [listDistrict, setListDistrict] = useState([]);\r\n const [districtSearch, setdistrictSearch] = useState([]);\r\n const [planningUnitSearch, setPlanningUnitSearch] = useState(\"\");\r\n const [approvalLevelSearch, setApprovalLevelSearch] = useState(\"\");\r\n const [planningTypeSearch, setPlanningTypeSearch] = useState(\"\");\r\n const [listPlanningUnit, setListPlanningUnit] = useState([]);\r\n const [dataSearching, setDataSearching] = useState(null);\r\n const [planningId, setPlanningId] = useState();\r\n const [tabType, setTabType] = useState();\r\n const [isShowPreview, setShowPreview] = useState(false);\r\n const [file, setFile] = useState();\r\n const [isTable, setIsTable] = useState(true);\r\n const [isDetail, setIsDetail] = useState(false);\r\n\r\n const [isOpenSearchAdvance, setIsOpenSearchAdvance] = useState(false);\r\n const advanceSearchContainer = useRef(null);\r\n\r\n useEffect(() => {\r\n if(!isOpenSearchAdvance) {\r\n setYearSearch(\"\");\r\n setPlanningUnitSearch(\"\");\r\n setApprovalLevelSearch(\"\");\r\n setPlanningTypeSearch(\"\");\r\n reset(formValues => ({\r\n ...formValues,\r\n field: '',\r\n }));\r\n } else {\r\n const timeoutId = setTimeout(() => {\r\n advanceSearchContainer.current.style.overflow = 'unset';\r\n }, 500);\r\n return () => clearTimeout(timeoutId);\r\n }\r\n},[isOpenSearchAdvance])\r\n\r\n const { register, handleSubmit, reset } = useForm({\r\n mode: \"all\",\r\n reValidateMode: \"onBlur\",\r\n });\r\n\r\n const planningIdQuery = new URLSearchParams(props.location.search).get(\r\n \"planningId\"\r\n );\r\n\r\n useEffect(() => {\r\n if (planningIdQuery && planningIdQuery > 0) {\r\n setIsDetail(true);\r\n setPlanningId(planningIdQuery);\r\n setTabType(\"detail\");\r\n }\r\n\r\n onGetData();\r\n }, []);\r\n\r\n const onGetData = () => {\r\n showLoading(true);\r\n Promise.all([\r\n GetAllPlanning({\r\n pageIndex: currentPageIndex,\r\n pageSize: currentPageSize,\r\n }),\r\n GetDocumentType(),\r\n GetLookupDistrict(),\r\n GetYearStatement(),\r\n GetLookupPlanningUnit(),\r\n GetApprovalAgencyLevel(),\r\n props.GetAllPlanningCategoriesType()\r\n ])\r\n .then((res) => {\r\n showLoading(false);\r\n })\r\n .catch((err) => {\r\n showLoading(false);\r\n config.HandleError(err);\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n if(props.planningType && props.planningType.length > 0) {\r\n setPlanningTypeOption(props.planningType.map(item =>{ return {...item, value: item.id, label: item.name}}))\r\n }\r\n }, [props.planningType])\r\n\r\n const GetAllPlanning = (data) => {\r\n return new Promise((resolve, reject) => {\r\n documentAction\r\n .SearchDocument(data)\r\n .then((res) => {\r\n setPlanningModels(\r\n res &&\r\n res.content &&\r\n res.content.items &&\r\n res.content.items.length > 0\r\n ? res.content.items\r\n : []\r\n );\r\n setPaginationNumber(res.content);\r\n resolve(res);\r\n })\r\n .catch((err) => reject(err));\r\n });\r\n };\r\n\r\n const GetLookupDistrict = () => {\r\n return new Promise((resolve, reject) => {\r\n documentAction\r\n .GetLookUpDistrict()\r\n .then((res) => {\r\n setListDistrict(\r\n res && res.content && res.content.length > 0\r\n ? res.content.map((item) => {\r\n return { ...item, label: item.name, value: item.id };\r\n })\r\n : []\r\n );\r\n resolve(res);\r\n })\r\n .catch((err) => reject(err));\r\n });\r\n };\r\n\r\n const GetLookupPlanningUnit = () => {\r\n documentAction\r\n .GetLookUpPlanningUnit()\r\n .then((res) => {\r\n setListPlanningUnit(\r\n res && res.content && res.content.length > 0\r\n ? res.content.map((item) => {\r\n return { ...item, label: item.name, value: item.id };\r\n })\r\n : []\r\n );\r\n })\r\n .catch((err) => {\r\n // console.log(err);\r\n });\r\n};\r\n\r\n const GetDocumentType = () => {\r\n return new Promise((resolve, reject) => {\r\n documentAction\r\n .GetDocumentType()\r\n .then((res) => {\r\n setDocumentType(\r\n res && res.content && res.content.length > 0\r\n ? res.content.map((item) => {\r\n return { ...item, label: item.name, value: item.id };\r\n })\r\n : []\r\n );\r\n resolve(res);\r\n })\r\n .catch((err) => reject(err));\r\n });\r\n };\r\n\r\n const GetYearStatement = () => {\r\n return new Promise((resolve, reject) => {\r\n documentAction\r\n .GetYearStatement()\r\n .then((res) => {\r\n setYearStatement(\r\n res && res.content && res.content.length > 0\r\n ? res.content.map((item) => {\r\n return { ...item, label: item, value: item };\r\n })\r\n : []\r\n );\r\n resolve(res);\r\n })\r\n .catch((err) => reject(err));\r\n });\r\n };\r\n\r\n const GetApprovalAgencyLevel = () => {\r\n return new Promise((resolve, reject) => {\r\n statementActions.ApprovalAgencyLevel().then(\r\n (res) => {\r\n setApprovalLevelOption(\r\n res && res.content && res.content.length > 0\r\n ? res.content.map((item) => {\r\n return { ...item, value: item.id, label: item.name };\r\n })\r\n : []\r\n );\r\n resolve(res);\r\n },\r\n (err) => {\r\n reject(err);\r\n }\r\n );\r\n });\r\n };\r\n\r\n const GetSearchDocument = (pageIndex = 1, data = dataSearching) => {\r\n showLoading(true);\r\n\r\n documentAction\r\n .SearchDocument({\r\n pageIndex: pageIndex,\r\n pageSize: currentPageSize,\r\n name: data && data.searchFile,\r\n field: data && data.field,\r\n documentTypeId: documentTypeId,\r\n year: yearSearch,\r\n district: districtSearch,\r\n planningUnitId: planningUnitSearch,\r\n approvalLevelId: approvalLevelSearch.id,\r\n planningTypeId: planningTypeSearch.id\r\n })\r\n .then((res) => {\r\n if (\r\n res &&\r\n res.content &&\r\n res.content.items &&\r\n res.content.items.length > 0\r\n ) {\r\n setPlanningModels(res.content.items);\r\n setPaginationNumber(res.content);\r\n } else {\r\n ShowNotification(\r\n viVN.Warning.NoData,\r\n NotificationMessageType.Warning,\r\n NotificationPosition.Center\r\n );\r\n }\r\n showLoading(false);\r\n })\r\n .catch((err) => {\r\n showLoading(false);\r\n config.HandleError(err);\r\n });\r\n };\r\n\r\n const onBack = () => {\r\n setIsDetail(false);\r\n setShowPreview(false);\r\n };\r\n\r\n const onSubmit = (data) => {\r\n setIsDetail(false);\r\n setDataSearching(data);\r\n GetSearchDocument(1, data);\r\n };\r\n\r\n const handleOnchangeDocumentType = (data) => {\r\n setDocumentTypeId(data.value);\r\n };\r\n\r\n const handleOnChangeDistrict = (data) => {\r\n if (data) {\r\n setdistrictSearch(\r\n data.map((item) => {\r\n return item.value;\r\n })\r\n .join(\", \")\r\n .trim()\r\n );\r\n } else {\r\n setdistrictSearch(\"\");\r\n }\r\n };\r\n\r\n const handleOnChangeYears = (data) => {\r\n if (data) {\r\n console.log(data);\r\n setYearSearch(\r\n data\r\n .map((item) => {\r\n return item.value;\r\n })\r\n .join(\", \")\r\n .trim()\r\n );\r\n } else {\r\n setYearSearch(\"\");\r\n }\r\n };\r\n\r\n const handleOnChangePlanningUnit = (data) => {\r\n if (data) {\r\n setPlanningUnitSearch(\r\n data.map((item) => item.value).join(\", \").trim()\r\n )\r\n } else {\r\n setPlanningUnitSearch(\"\");\r\n }\r\n };\r\n\r\n const handleOnChangeApprovalLevel = (data) => {\r\n if (data) {\r\n setApprovalLevelSearch(data)\r\n } else {\r\n setApprovalLevelSearch(\"\");\r\n }\r\n };\r\n\r\n const handleOnChangePlanningType = (data) => {\r\n if (data) {\r\n setPlanningTypeSearch(data)\r\n } else {\r\n setPlanningTypeSearch(\"\");\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n {!isShowPreview && (\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n Hồ sơ quy hoạch\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {documentType && documentType.length > 0 && (\r\n \r\n )}\r\n {listDistrict && listDistrict.length > 0 && (\r\n \"không tồn tại\"}\r\n />\r\n )}\r\n
    \r\n {\r\n yearStatement && yearStatement.length > 0 &&\r\n {\r\n if(!yearSearch) return null;\r\n if(yearSearch == item.value) return item;\r\n }\r\n )\r\n }\r\n />\r\n }\r\n {listPlanningUnit && listPlanningUnit.length > 0 && (\r\n \"không tồn tại\"}\r\n value={\r\n listPlanningUnit.filter((item)=> {\r\n if(planningUnitSearch == item.id) return item;\r\n }\r\n )\r\n }\r\n />\r\n )}\r\n \r\n
    \r\n \r\n
    \r\n\r\n {approvalLevelOption && approvalLevelOption.length > 0 && (\r\n \"không tồn tại\"}\r\n value={\r\n approvalLevelOption.filter((item)=> {\r\n if(approvalLevelSearch.id == item.id) return item;\r\n }\r\n )\r\n }\r\n />\r\n )}\r\n\r\n {planningTypeOption && planningTypeOption.length > 0 && (\r\n \"không tồn tại\"}\r\n value={\r\n planningTypeOption.filter((item)=> {\r\n if(planningTypeSearch.id == item.id) return item;\r\n }\r\n )\r\n }\r\n />\r\n )}\r\n
    \r\n
    \r\n {\r\n !isOpenSearchAdvance ? \r\n (
    \r\n {setIsOpenSearchAdvance(true);}}\r\n type=\"button\"\r\n className=\"btn btn-info w-100\"\r\n style={{ fontSize: '14px' }}\r\n >\r\n \r\n Nâng cao\r\n
    \r\n
    ) : \r\n (
    \r\n {setIsOpenSearchAdvance(false);}}\r\n type=\"button\"\r\n className=\"btn btn-danger w-100\"\r\n style={{ fontSize: '14px' }}\r\n >\r\n \r\n Đóng\r\n
    \r\n
    )\r\n }\r\n
    \r\n \r\n \r\n Tìm kiếm\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n )}\r\n \r\n
    \r\n {!isDetail && (\r\n
    \r\n
    \r\n setIsTable(true)}\r\n />\r\n setIsTable(false)}\r\n />\r\n
    \r\n \r\n
    \r\n {planningModels && planningModels.length > 0 ? (\r\n planningModels.map((item, index) => (\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {\r\n setIsDetail(true);\r\n setPlanningId(item.id);\r\n setTabType(\"detail\");\r\n }}\r\n >\r\n {item.name}\r\n \r\n

    \r\n Địa điểm: {item.location}\r\n

    \r\n {/*
    \r\n \r\n \r\n {moment(new Date(item.publishDate)).format(\r\n \"DD/MM/YYYY\"\r\n )}\r\n \r\n
    */}\r\n
    \r\n {\r\n setIsDetail(true);\r\n setPlanningId(item.id);\r\n setTabType(\"detail\");\r\n }}\r\n >\r\n \r\n Xem hồ sơ\r\n \r\n\r\n \r\n \r\n Xem bản đồ\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n ))\r\n ) : (\r\n
    \r\n {\" \"}\r\n Không có hồ sơ nào\r\n
    \r\n )}\r\n
    \r\n
    \r\n \r\n \r\n \r\n {planningModels && planningModels.length > 0 ? (\r\n planningModels.map((item, index) => (\r\n \r\n \r\n \r\n \r\n \r\n ))\r\n ) : (\r\n \r\n \r\n \r\n )}\r\n \r\n
    \r\n {\r\n setIsDetail(true);\r\n setPlanningId(item.id);\r\n setTabType(\"detail\");\r\n }}\r\n >\r\n {item.name}\r\n \r\n \r\n {\r\n setIsDetail(true);\r\n setPlanningId(item.id);\r\n setTabType(\"detail\");\r\n }}\r\n className=\"text-nowrap\"\r\n >\r\n \r\n Xem chi tiết\r\n \r\n \r\n \r\n \r\n Xem bản đồ\r\n \r\n
    \r\n
    \r\n {\" \"}\r\n Không có hồ sơ nào\r\n
    \r\n
    \r\n \r\n {paginationNumber && paginationNumber.totalItemCount > 0 && (\r\n
    \r\n
    \r\n
    \r\n 1 ? \"float-left\" : \"\"\r\n }`}\r\n >\r\n \r\n Có {paginationNumber.totalItemCount} kết quả\r\n \r\n
    \r\n {paginationNumber.pageCount > 1 && (\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n
    \r\n \r\n )}\r\n \r\n )}\r\n\r\n {isDetail && (\r\n \r\n )}\r\n \r\n \r\n\r\n {isShowPreview && (\r\n \r\n {file ? (\r\n \r\n Lỗi\r\n đọc file\r\n \r\n }\r\n onError={() => console.log(\"err\")}\r\n />\r\n ) : (\r\n
    \r\n Không có\r\n file để hiển thị\r\n
    \r\n )}\r\n \r\n )}\r\n \r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n isLoading: state.app.loading,\r\n planningType: state.statement.planningType,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) =>\r\n bindActionCreators(\r\n {\r\n showLoading: appActions.ShowLoading,\r\n GetAllPlanningCategoriesType: MapDataStore.GetAllPlanningCategoriesType,\r\n },\r\n dispatch\r\n );\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(RecordsManagementDesktopView);\r\n","import Service from \"../../../api/api-service\";\r\nimport { ApiUrl } from \"../../../api/api-url\";\r\n\r\nconst service = new Service();\r\n\r\nexport const Contact = (data) => {\r\n return service.post(ApiUrl.ContactToAdmin, data).then((res) => {return res}).catch((err) => { throw err });\r\n}","import React, { useState } from \"react\";\r\nimport { useForm } from \"react-hook-form\";\r\nimport PhoneInput from \"react-phone-input-2\";\r\nimport \"react-phone-input-2/lib/style.css\";\r\nimport \"./contact.scss\";\r\nimport ShowNotification from \"../../components/react-notifications/react-notifications\";\r\nimport { NotificationMessageType } from \"../../utils/configuration\";\r\nimport * as viVN from \"../../languages/vi-VN.json\";\r\nimport * as contactAction from \"../../redux/store/contact/contact.store\";\r\nimport viLanguage from \"../../languages/vi\";\r\n\r\nexport default function ContactDesktopView(props) {\r\n const [tel, setTel] = useState(\"\");\r\n\r\n const { register, handleSubmit, errors, setError, clearErrors } = useForm({\r\n mode: \"onBlur\",\r\n });\r\n\r\n const onCheckTel = (data) => {\r\n if (!data) setError(\"mobilePhone\", { type: \"required\" });\r\n else if (data.toString().length < 10)\r\n setError(\"mobilePhone\", { type: \"pattern\" });\r\n else clearErrors([\"mobilePhone\"]);\r\n setTel(data);\r\n };\r\n\r\n const onSubmitContact = async (data) => {\r\n if (!data || onCheckTel(tel)) return;\r\n await contactAction\r\n .Contact({\r\n name: data.fullName,\r\n phoneNumber: data.mobilePhone,\r\n email: data.email,\r\n message: data.content,\r\n })\r\n .then(\r\n (res) => {\r\n if (res && res.content) {\r\n ShowNotification(\r\n viVN.Success.ContactToAdminSuccess,\r\n NotificationMessageType.Success\r\n );\r\n clearDataForm();\r\n }\r\n },\r\n (err) => {\r\n err &&\r\n err.errorType &&\r\n ShowNotification(\r\n viVN.Errors[err.errorType],\r\n NotificationMessageType.Error\r\n );\r\n }\r\n );\r\n };\r\n\r\n const handleOnChangeFullName = (e) => {\r\n if (e.currentTarget.value) {\r\n let wsRegex = /^\\s*\\s*$/;\r\n e.currentTarget.value = e.currentTarget.value.replace(wsRegex, \"\");\r\n }\r\n };\r\n\r\n const handleOnChangeEmail = (e) => {\r\n if (e.currentTarget.value) {\r\n let wsRegex = /^\\s*|\\s*$/g;\r\n e.currentTarget.value = e.currentTarget.value.replace(wsRegex, \"\");\r\n }\r\n };\r\n\r\n const clearDataForm = () => {\r\n document.getElementById(\"formContact\").reset();\r\n setTel(\"+84\");\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    THÔNG TIN LIÊN HỆ
    \r\n
    {viLanguage.footer_titleName.toLocaleUpperCase()}
    \r\n \r\n Địa chỉ: {viLanguage.footer_address}\r\n \r\n\r\n
    \r\n
    \r\n Hotline: {viLanguage.footer_hotline}\r\n
    \r\n {viLanguage.footer_fax && (\r\n
    Fax: {viLanguage.footer_fax}
    \r\n )}\r\n {viLanguage.footer_email && (\r\n
    \r\n Email:{\" \"}\r\n \r\n {viLanguage.footer_email}\r\n \r\n
    \r\n )}\r\n {viLanguage.footer_website && (\r\n
    \r\n Website:{\" \"}\r\n {viLanguage.footer_website}\r\n
    \r\n )}\r\n
    \r\n\r\n
    NỘI DUNG
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n {errors.fullName && errors.fullName.type === \"required\" && (\r\n Trường này là bắt buộc\r\n )}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n onCheckTel(tel)}\r\n placeholder=\"Số điện thoại\"\r\n autoFormat={false}\r\n enableSearch={true}\r\n countryCodeEditable={false}\r\n />\r\n onCheckTel(tel)}\r\n />\r\n {errors.mobilePhone &&\r\n errors.mobilePhone.type === \"required\" && (\r\n Trường này là bắt buộc\r\n )}\r\n {errors.mobilePhone &&\r\n errors.mobilePhone.type === \"pattern\" && (\r\n Số điện thoại không hợp lệ\r\n )}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n {errors.email && errors.email.type === \"required\" && (\r\n Trường này là bắt buộc\r\n )}\r\n {errors.email && errors.email.type === \"pattern\" && (\r\n Email không đúng định dạng\r\n )}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n {errors.content && errors.content.type === \"required\" && (\r\n Trường này là bắt buộc\r\n )}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n","import React, { useEffect, useState, useRef } from \"react\";\r\nimport * as documentAction from \"../../../../redux/store/document/document.store\";\r\nimport Select from \"react-select\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faSearch, faCog, faTimes } from \"@fortawesome/free-solid-svg-icons\";\r\nimport DatePicker from \"react-datepicker\";\r\n\r\nexport const SearchByDistrict = (props) => {\r\n const { \r\n districtSelect,\r\n setDistrictSelect,\r\n planningUnitSelect,\r\n setPlanningUnitSelect,\r\n approvalAgencySelect,\r\n setApprovalAgencySelect,\r\n onSubmit,\r\n name,\r\n setName,\r\n numberOfDecisions,\r\n setNumberOfDecisions,\r\n constructionGroup,\r\n setConstructionGroup,\r\n yearSearch,\r\n setYearSearch,\r\n isLookup\r\n } = props;\r\n const advanceSearchContainer = useRef(null);\r\n const [listDistrict, setListDistrict] = useState([]);\r\n const [listPlanningUnit, setListPlanningUnit] = useState([]);\r\n const [listApprovalAgencies, setListApprovalAgencies] = useState([]);\r\n const [yearStatement, setYearStatement] = useState([]);\r\n \r\n const [isOpenSearchAdvance, setIsOpenSearchAdvance] = useState(() => {\r\n if( !planningUnitSelect && !approvalAgencySelect && !yearSearch && !numberOfDecisions && !constructionGroup) {\r\n return false;\r\n }\r\n else {\r\n return true\r\n }\r\n });\r\n\r\n useEffect(() => {\r\n GetLookupDistrict();\r\n GetLookupPlanningUnit();\r\n GetLookupApprovalAgency();\r\n GetYearStatement();\r\n }, []);\r\n \r\n useEffect(() => {\r\n if(!isOpenSearchAdvance) {\r\n setNumberOfDecisions('');\r\n setConstructionGroup('');\r\n setApprovalAgencySelect('');\r\n setPlanningUnitSelect('');\r\n setYearSearch('');\r\n } else {\r\n const timeoutId = setTimeout(() => {\r\n advanceSearchContainer.current.style.overflow = 'unset';\r\n }, 500);\r\n return () => clearTimeout(timeoutId);\r\n }\r\n },[isOpenSearchAdvance])\r\n\r\n const GetLookupDistrict = () => {\r\n documentAction\r\n .GetLookUpDistrict()\r\n .then((res) => {\r\n setListDistrict(\r\n res && res.content && res.content.length > 0\r\n ? res.content.map((item) => {\r\n return { ...item, label: item.name, value: item.id };\r\n })\r\n : []\r\n );\r\n })\r\n .catch((err) => {\r\n // console.log(err);\r\n });\r\n };\r\n\r\n const GetLookupPlanningUnit = () => {\r\n documentAction\r\n .GetLookUpPlanningUnit()\r\n .then((res) => {\r\n setListPlanningUnit(\r\n res && res.content && res.content.length > 0\r\n ? res.content.map((item) => {\r\n return { ...item, label: item.name, value: item.id };\r\n })\r\n : []\r\n );\r\n })\r\n .catch((err) => {\r\n // console.log(err);\r\n });\r\n };\r\n\r\n const GetLookupApprovalAgency = () => {\r\n documentAction\r\n .GetLookUpApprovalAgency()\r\n .then((res) => {\r\n setListApprovalAgencies(\r\n res && res.content && res.content.length > 0\r\n ? res.content.map((item) => {\r\n return { ...item, label: item.name, value: item.id };\r\n })\r\n : []\r\n );\r\n })\r\n .catch((err) => {\r\n // console.log(err);\r\n });\r\n };\r\n\r\n const GetYearStatement = () => {\r\n return new Promise((resolve, reject) => {\r\n documentAction\r\n .GetYearStatement()\r\n .then((res) => {\r\n setYearStatement(\r\n res && res.content && res.content.length > 0\r\n ? res.content.map((item) => {\r\n return { ...item, label: item, value: item };\r\n })\r\n : []\r\n );\r\n resolve(res);\r\n })\r\n .catch((err) => reject(err));\r\n });\r\n };\r\n\r\n const handleOnChangeDistrict = (data) => {\r\n if (data) {\r\n setDistrictSelect(\r\n data.map((item) => item.value)\r\n )\r\n } else {\r\n setDistrictSelect([]);\r\n }\r\n };\r\n\r\n const handleOnChangePlanningUnit = (data) => {\r\n if (data) {\r\n setPlanningUnitSelect(data.value)\r\n } else {\r\n setPlanningUnitSelect('');\r\n }\r\n };\r\n\r\n const handleOnChangeApprovalAgency = (data) => {\r\n console.log('handleOnChangeApprovalAgency', data);\r\n if (data) {\r\n setApprovalAgencySelect(data.value)\r\n } else {\r\n setApprovalAgencySelect('');\r\n }\r\n };\r\n \r\n const handleOnChangeYears = (data) => {\r\n if (data) {\r\n setYearSearch(data.value);\r\n } else {\r\n setYearSearch('');\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n setName(data.target.value)}\r\n //onClick={() => setName('')}\r\n className=\"form-control\"\r\n placeholder=\"Tên quy hoạch\"\r\n aria-label=\"Tên quy hoạch\"\r\n aria-describedby=\"searchFile\"\r\n />\r\n
    \r\n\r\n {listDistrict && listDistrict.length > 0 && (\r\n isLookup ? (\r\n {\r\n if(typeof(districtSelect) == \"string\") return null;\r\n if(districtSelect.some((id) => id == item.id)) return item;\r\n })\r\n }\r\n isMulti\r\n onChange={handleOnChangeDistrict}\r\n options={listDistrict}\r\n noOptionsMessage={() => \"không tồn tại\"}\r\n />\r\n ) : (\r\n \"không tồn tại\"}\r\n />\r\n )\r\n )}\r\n
    \r\n
    \r\n {listPlanningUnit && listPlanningUnit.length > 0 && (\r\n isLookup ? (\r\n {\r\n if(planningUnitSelect == item.id) return item;\r\n }\r\n )\r\n }\r\n onChange={handleOnChangePlanningUnit}\r\n options={listPlanningUnit}\r\n noOptionsMessage={() => \"không tồn tại\"}\r\n />\r\n ) : (\r\n \"không tồn tại\"}\r\n />\r\n )\r\n )}\r\n\r\n {listApprovalAgencies && listApprovalAgencies.length > 0 && (\r\n isLookup ? (\r\n {\r\n if(approvalAgencySelect == item.id) return item;\r\n }\r\n )\r\n }\r\n onChange={handleOnChangeApprovalAgency}\r\n options={listApprovalAgencies}\r\n noOptionsMessage={() => \"không tồn tại\"}\r\n />\r\n ) : (\r\n \"không tồn tại\"}\r\n />\r\n )\r\n )}\r\n\r\n {yearStatement && yearStatement.length > 0 && (\r\n isLookup ? (\r\n {\r\n if(!yearSearch) return null;\r\n if(yearSearch == item.value) return item;\r\n }\r\n )\r\n }\r\n onChange={handleOnChangeYears}\r\n options={yearStatement}\r\n noOptionsMessage={() => \"không tồn tại\"}\r\n />\r\n ) : (\r\n \"không tồn tại\"}\r\n />\r\n )\r\n )}\r\n\r\n
    \r\n setNumberOfDecisions(data.target.value)}\r\n className=\"form-control\"\r\n placeholder=\"Quyết định phê duyệt\"\r\n aria-label=\"Quyết định phê duyệt\"\r\n aria-describedby=\"numberOfDecisions\"\r\n />\r\n
    \r\n\r\n
    \r\n setConstructionGroup(data.target.value)}\r\n className=\"form-control\"\r\n placeholder=\"Nhóm công trình\"\r\n aria-label=\"Nhóm công trình\"\r\n aria-describedby=\"constructionGroup\"\r\n />\r\n
    \r\n
    \r\n
    \r\n {\r\n !isOpenSearchAdvance ? \r\n (
    \r\n {setIsOpenSearchAdvance(true);}}\r\n type=\"button\"\r\n className=\"btn btn-info w-100\"\r\n style={{ fontSize: '14px' }}\r\n >\r\n \r\n Nâng cao\r\n \r\n
    ) : \r\n (
    \r\n {setIsOpenSearchAdvance(false);}}\r\n type=\"button\"\r\n className=\"btn btn-danger w-100\"\r\n style={{ fontSize: '14px' }}\r\n >\r\n \r\n Đóng\r\n \r\n
    )\r\n }\r\n \r\n
    \r\n \r\n \r\n Tìm kiếm\r\n \r\n
    \r\n
    \r\n
    \r\n )\r\n}","import React from 'react';\r\nimport './thumbnail-preview.scss';\r\nimport { Link } from 'react-router-dom';\r\nimport ReactTooltip from 'react-tooltip'\r\n\r\ninterface PropsInit {\r\n backgroundUrl: string,\r\n urlParams: string,\r\n previewName: string\r\n}\r\n\r\nexport default function ThumbnailPreview(props: PropsInit) {\r\n return (\r\n
    \r\n
    \r\n {props.backgroundUrl}\r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n 80 ? props.previewName : ''}>\r\n {props.previewName.length > 80 ? props.previewName.substring(0, 80) + '...' : props.previewName}\r\n \r\n \r\n
    \r\n
    \r\n )\r\n}","import React, { useState, useEffect } from 'react';\r\nimport '../planning-type/planning-type.scss';\r\n\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\n\r\nimport PaginationView from '../../../../components/pagination/pagination.view.jsx';\r\nimport ThumbnailPreview from '../planning-type/child/thumbnail-preview.view';\r\n\r\nimport * as statementActions from '../../../../redux/store/statement/statement.store';\r\nimport * as config from '../../../../utils/configuration';\r\nimport * as appActions from \"../../../../core/app.store\";\r\nimport * as homePageStore from \"../../../../redux/store/home-page/home-page.store\";\r\nimport PageUrls from '../../../../common/url-collect';\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faExclamationTriangle } from \"@fortawesome/free-solid-svg-icons\";\r\n\r\nfunction PlanningByDistrictView(props) {\r\n const { isLoading, showLoading, params, setDataSelectBoxSearch, selected,\r\n district,\r\n planningUnitId,\r\n approvalAgencyId,\r\n planningTypeId,\r\n name,\r\n yearSearch,\r\n numberOfDecisions,\r\n constructionGroup,\r\n } = props;\r\n const [planningDetail, setPlanningDetail] = useState();\r\n\r\n useEffect(() => {\r\n const district = new URLSearchParams(params.location.search).get(\"district\");\r\n const planningUnitId = new URLSearchParams(params.location.search).get(\"planningUnit\");\r\n const approvalAgencyId = new URLSearchParams(params.location.search).get(\"approvalAgency\");\r\n const planningTypeId = new URLSearchParams(params.location.search).get(\"key\");\r\n const name = new URLSearchParams(params.location.search).get(\"name\");\r\n const yearSearch = new URLSearchParams(params.location.search).get(\"yearSearch\");\r\n const numberOfDecisions = new URLSearchParams(params.location.search).get(\"numberOfDecisions\");\r\n const constructionGroup = new URLSearchParams(params.location.search).get(\"constructionGroup\");\r\n\r\n getPlanningSearchByIdName(\r\n planningTypeId,\r\n name,\r\n district,\r\n planningUnitId,\r\n yearSearch,\r\n approvalAgencyId,\r\n numberOfDecisions,\r\n constructionGroup,\r\n 1,\r\n 9);\r\n }, [params.location.search])\r\n \r\n\r\n const getPlanningSearchByIdName = (\r\n planningTypeId = \"\",\r\n name = \"\",\r\n district = \"\",\r\n planningUnitId = \"\",\r\n yearSearch = \"\",\r\n approvalAgencyId = \"\",\r\n numberOfDecisions = \"\",\r\n constructionGroup = \"\",\r\n pageIndex = 1,\r\n pageSize = 9 \r\n ) => {\r\n showLoading(true);\r\n return homePageStore.GetPlanningSearchByIdNameDistrict(\r\n planningTypeId,\r\n name,\r\n district,\r\n planningUnitId,\r\n yearSearch,\r\n approvalAgencyId,\r\n numberOfDecisions,\r\n constructionGroup,\r\n pageIndex,\r\n pageSize\r\n ).then(res => {\r\n // if (res && res.content) {\r\n setPlanningDetail(res && res.content ? res.content : {});\r\n \r\n // }\r\n showLoading(false)\r\n }).catch(err => showLoading(false))\r\n }\r\n\r\n \r\n\r\n\r\n return (\r\n
    \r\n
    \r\n {planningDetail && planningDetail.items && planningDetail.items.length > 0 ? planningDetail.items.map((item, index) => (\r\n \r\n )) : (\r\n
    \r\n {\" \"}\r\n Không có quy hoạch nào\r\n
    \r\n )}\r\n
    \r\n
    \r\n {\r\n planningDetail && planningDetail.pageCount > 0 && (\r\n
    \r\n
    \r\n Có {planningDetail.totalItemCount} kết quả\r\n
    \r\n {\r\n planningDetail.pageCount > 1 && (\r\n )\r\n }\r\n
    \r\n )\r\n }\r\n
    \r\n
    \r\n )\r\n}\r\nconst mapStateToProps = (state) => ({\r\n isLoading: state.app.loading,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) =>\r\n bindActionCreators(\r\n {\r\n showLoading: appActions.ShowLoading,\r\n },\r\n dispatch\r\n );\r\n\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(PlanningByDistrictView);","import React, { useEffect, useState } from \"react\";\r\nimport \"./look-up-planning.scss\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { SearchByDistrict } from \"./child-modules/planning-district/search-district.view\";\r\nimport PlanningByDistrictView from \"./child-modules/planning-district/planning-district.view\";\r\nimport UrlCollect from \"../../common/url-collect\";\r\nimport * as statementActions from \"../../redux/store/statement/statement.store\";\r\nimport history from \"../../common/history\";\r\nimport * as appActions from \"../../core/app.store\";\r\n\r\nfunction LookUpPlanningView(props) {\r\n\r\n const { showLoading} = props;\r\n const [planningType, setPlanningType] = useState([]);\r\n const [dataSelectBoxSearch, setDataSelectBoxSearch] = useState([]);\r\n const [selected, setSelected] = useState();\r\n const [show, setShow] = useState(true);\r\n const [listDistrict, setListDistrict] = useState([]);\r\n const [districtSelect, setDistrictSelect] = useState(new URLSearchParams(props.location.search).get(\"district\") ?\r\n new URLSearchParams(props.location.search).get(\"district\").split(',') : []);\r\n const [planningUnitSelect, setPlanningUnitSelect] = useState(new URLSearchParams(props.location.search).get(\"planningUnit\") ?\r\n new URLSearchParams(props.location.search).get(\"planningUnit\") : '');\r\n const [approvalAgencySelect, setApprovalAgencySelect] = useState(new URLSearchParams(props.location.search).get(\"approvalAgency\") ?\r\n new URLSearchParams(props.location.search).get(\"approvalAgency\") : '');\r\n const [name, setName] = useState(new URLSearchParams(props.location.search).get(\"name\") ?\r\n new URLSearchParams(props.location.search).get(\"name\") : '');\r\n const [planningTypeId, setPlanningTypeId] = useState(new URLSearchParams(props.location.search).get(\"key\") ?\r\n new URLSearchParams(props.location.search).get(\"key\") : '');\r\n\r\n const [yearSearch, setYearSearch] = useState(new URLSearchParams(props.location.search).get(\"yearSearch\") ?\r\n new URLSearchParams(props.location.search).get(\"yearSearch\") : '');\r\n\r\n const [numberOfDecisions, setNumberOfDecisions] = useState(new URLSearchParams(props.location.search).get(\"numberOfDecisions\") ?\r\n new URLSearchParams(props.location.search).get(\"numberOfDecisions\") : '');\r\n const [constructionGroup, setConstructionGroup] = useState(new URLSearchParams(props.location.search).get(\"constructionGroup\") ?\r\n new URLSearchParams(props.location.search).get(\"constructionGroup\") : '');\r\n\r\n useEffect(() => {\r\n getAllPlanningType();\r\n }, []);\r\n\r\n useEffect(() => {\r\n showLoading(true);\r\n\r\n setDistrictSelect(new URLSearchParams(window.location.search).get(\"district\") ?\r\n new URLSearchParams(window.location.search).get(\"district\").split(',') : '');\r\n\r\n setPlanningUnitSelect(new URLSearchParams(window.location.search).get(\"planningUnit\") ?\r\n new URLSearchParams(window.location.search).get(\"planningUnit\").split(',') : '');\r\n\r\n setApprovalAgencySelect(new URLSearchParams(window.location.search).get(\"approvalAgency\") ?\r\n new URLSearchParams(window.location.search).get(\"approvalAgency\").split(',') : '');\r\n \r\n setName(new URLSearchParams(window.location.search).get(\"name\") || '');\r\n setYearSearch(new URLSearchParams(window.location.search).get(\"yearSearch\") || '');\r\n setNumberOfDecisions(new URLSearchParams(window.location.search).get(\"numberOfDecisions\") || '');\r\n setConstructionGroup(new URLSearchParams(window.location.search).get(\"constructionGroup\") || '');\r\n setPlanningTypeId(new URLSearchParams(window.location.search).get(\"key\") || '');\r\n console.log(new URLSearchParams(window.location.search).get(\"district\"));\r\n showLoading(false);\r\n \r\n }, [ \r\n new URLSearchParams(window.location.search).get(\"key\"),\r\n new URLSearchParams(window.location.search).get(\"district\"),\r\n new URLSearchParams(window.location.search).get(\"planningUnit\"),\r\n new URLSearchParams(window.location.search).get(\"name\"),\r\n new URLSearchParams(window.location.search).get(\"yearSearch\"),\r\n new URLSearchParams(window.location.search).get(\"numberOfDecisions\"),\r\n new URLSearchParams(window.location.search).get(\"constructionGroup\"),\r\n ])\r\n\r\n const getAllPlanningType = () => {\r\n statementActions\r\n .PlanningType()\r\n .then((res) => {\r\n if (res && res.content) {\r\n setPlanningType(res.content);\r\n }\r\n })\r\n .catch((err) => {\r\n // console.log(err);\r\n });\r\n };\r\n\r\n let PATHNAME =\r\n \"?key=\" + new URLSearchParams(props.location.search).get(\"key\");\r\n\r\n function createClassListLeftSelectMenu(pathName) {\r\n return PATHNAME === pathName ? \"p-2 active-custom\" : \"p-2\";\r\n }\r\n\r\n const onSubmit = () => {\r\n history.push(`${UrlCollect.PlanningMap}?key=${planningTypeId}&name=${name}&district=${districtSelect ? districtSelect.join(',') : ''}&planningUnit=${planningUnitSelect}&approvalAgency=${approvalAgencySelect}&yearSearch=${yearSearch}&numberOfDecisions=${numberOfDecisions}&constructionGroup=${constructionGroup}`)\r\n };\r\n\r\n\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n setName(data)}\r\n districtSelect={districtSelect}\r\n setDistrictSelect={setDistrictSelect}\r\n planningUnitSelect={planningUnitSelect}\r\n setPlanningUnitSelect={setPlanningUnitSelect}\r\n approvalAgencySelect={approvalAgencySelect}\r\n setApprovalAgencySelect={setApprovalAgencySelect}\r\n numberOfDecisions={numberOfDecisions}\r\n setNumberOfDecisions={setNumberOfDecisions}\r\n constructionGroup={constructionGroup}\r\n setConstructionGroup={setConstructionGroup}\r\n yearSearch={yearSearch}\r\n setYearSearch={setYearSearch}\r\n isLookup={true}\r\n />\r\n \r\n
    \r\n \r\n Tổng hợp quy hoạch\r\n \r\n {planningType &&\r\n planningType.length > 0 &&\r\n planningType.map((item, index) => (\r\n
    \r\n}\r\n\r\nexport default React.memo(MapContainer)","/* eslint-disable jsx-a11y/img-redundant-alt */\r\nimport React from \"react\";\r\nimport \"./openlayers-map.scss\";\r\nimport OpenLayerComponent from \"../../models/open-layer/props-state\";\r\nimport { connect } from \"react-redux\";\r\nimport * as OpenlayerStore from \"../../redux/store/open-layer/open-layer.store\";\r\nimport * as homePageStore from \"../../redux/store/home-page/home-page.store\";\r\nimport history from \"../../common/history\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport * as MapDataStore from \"../../redux/store/map-data/map-data.store\";\r\nimport Jquery from \"jquery\";\r\nimport { ConvertColsDataDetailViewToStandardData } from \"./config/convert-data\";\r\nimport UrlCollect from \"../../common/url-collect\";\r\nimport { geolocated } from \"react-geolocated\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faPrint } from \"@fortawesome/free-solid-svg-icons\";\r\nimport * as LoadingAction from '../../redux/store/loading/loading.store';\r\n//@ts-ignore\r\nimport domtoimage from 'dom-to-image-more';\r\n//--- Config\r\nimport {\r\n VectorImageLayerClassName,\r\n TileLayerClassName,\r\n Default_Feature_Style,\r\n Highlight_Feature_Style,\r\n Draw_Filter_Feature_Style,\r\n} from './config/config';\r\n\r\n//--- Store\r\nimport * as MapToolsPanelsStore from \"../../redux/store/open-layer/map-tools-panels.store\";\r\nimport * as mapHelper from \"../../common/map\";\r\n\r\n//--- Openlayer\r\nimport TileWMS from 'ol/source/TileWMS';\r\nimport VectorImageLayer from \"ol/layer/VectorImage\";\r\nimport { ScaleLine, defaults as defaultControls } from \"ol/control\";\r\nimport MousePosition from \"ol/control/MousePosition\";\r\nimport { createStringXY, toStringHDMS } from \"ol/coordinate\";\r\nimport { Image as ImageLayer } from \"ol/layer\";\r\nimport ImageWMS from \"ol/source/ImageWMS\";\r\nimport \"ol/ol.css\";\r\nimport { Map, View } from \"ol\";\r\nimport TileLayer from \"ol/layer/Tile\";\r\nimport OSM from \"ol/source/OSM\";\r\nimport XYZ from \"ol/source/XYZ\";\r\nimport WKT from \"ol/format/WKT\";\r\nimport Layer from \"ol/layer/Layer\";\r\nimport VectorLayer from \"ol/layer/Vector\";\r\nimport VectorSource from \"ol/source/Vector\";\r\nimport Feature from \"ol/Feature\";\r\nimport Point from \"ol/geom/Point\";\r\nimport MapBrowserEvent from \"ol/MapBrowserEvent\";\r\nimport { Circle as CircleStyle, Fill, Stroke, Style, Icon } from \"ol/style\";\r\nimport Overlay from \"ol/Overlay\";\r\nimport { LineString, Polygon } from \"ol/geom\";\r\nimport { getArea, getLength } from \"ol/sphere\";\r\nimport Draw, { createBox } from \"ol/interaction/Draw\";\r\nimport { unByKey } from \"ol/Observable\";\r\nimport GeoJSON from \"ol/format/GeoJSON\";\r\nimport Select from \"ol/interaction/Select\";\r\nimport { click } from \"ol/events/condition\";\r\nimport DragBox from \"ol/interaction/DragBox\";\r\nimport { toLonLat, transform } from \"ol/proj\";\r\nimport proj4 from \"proj4\";\r\nimport { register } from \"ol/proj/proj4\";\r\nimport Projection from 'ol/proj/Projection';\r\nimport OlOverlay from 'ol/Overlay';\r\n\r\n//--- Models\r\nimport { BoundariesViewModel, RelatedLayerModel } from \"../../models/map-data-model-b/new-planning-relation.model\";\r\nimport LayerSettingsModels from \"../../models/map-data-model-b/layer-setting-models\";\r\nimport SingleMapInfoMationModel from \"../../models/map-data-model-b/single-map-infomation-model\";\r\nimport ResponeFromServeClickShowInfomationFeature from \"../../models/open-layer/respone-get-future-info-url-ajax\";\r\nimport ImageLayerModels from \"../../models/open-layer/image-layer\";\r\nimport BoundariesModel from \"../../models/map-data-model-b/new-boundaries.model\";\r\nimport * as config from \"../../utils/configuration\";\r\nimport GetAllPlanningBoundariesMode from \"../../models/map-data-model-b/get-all-planning-boundaries.model\";\r\nimport DrawnFilterDataModel from '../../models/open-layer/drawn-filter-data.model';\r\nimport MapContainer from './childs/map-container.view';\r\nimport Notification from '../../common/notification-service';\r\n\r\nimport {\r\n NotificationMessageType,\r\n NotificationPosition,\r\n} from \"../../utils/configuration\";\r\nimport ShowNotification from \"../../components/react-notifications/react-notifications\";\r\nimport * as viVN from \"../../languages/vi-VN.json\";\r\nimport * as mapToolAction from \"../../redux/store/map-tool/map-tool.store\";\r\nimport GeometryType from \"ol/geom/GeometryType\";\r\nimport { stringToGlsl } from \"ol/style/expressions\";\r\n\r\nimport * as viLanguage from \"../../languages/vi\";\r\nimport { Popover } from \"react-bootstrap\";\r\n\r\nvar selected: any = null;\r\nvar sketchGolbal: Feature | null;\r\nvar helpTooltipElementGolbal: HTMLElement;\r\nvar helpTooltipGolbal: Overlay;\r\nvar measureTooltipElementGolbal: HTMLElement | null;\r\nvar measureTooltipGolbal: Overlay;\r\nvar drawMeasureGolbal: any;\r\nvar selectClick = new Select({\r\n condition: click,\r\n style: Highlight_Feature_Style\r\n});\r\nvar select: any = null; // ref to currently selected interaction\r\nconst classNameVectorLayerFilterDrawn = 'dawn-filter-vector-layer';\r\nconst DrawnFilterData: DrawnFilterDataModel = {\r\n draw: null,\r\n source: null,\r\n filterType: '',\r\n}\r\nclass OpenlayersMapView extends React.Component<\r\n OpenLayerComponent.PropsType,\r\n OpenLayerComponent.StateType\r\n> {\r\n constructor(props: OpenLayerComponent.PropsType) {\r\n super(props);\r\n this.state = {\r\n map: null,\r\n mapContainerStyle: null,\r\n currentLayer: null,\r\n currentLayerSettingModel: null,\r\n useFeatureViewInfomationOnClick: false,\r\n modals: false,\r\n coordinate: this.props.coordinate,\r\n listLayerSettingModel: [],\r\n primaryIdLayer: 0,\r\n isLoadedAllVectorSource: false,\r\n currentZoom: 0,\r\n prevFeatureId: \"\",\r\n prevFeatureChildId: [],\r\n };\r\n }\r\n\r\n toggleDisplayVectorLayer = (\r\n boundaries: BoundariesModel,\r\n isDisplay: boolean,\r\n minZoom: number = 1,\r\n maxZoom: number = 20,\r\n tooltipValue: string = \"\",\r\n planningId: number = 0\r\n ) => {\r\n const LayersCurrents = this.state.map?.getLayers();\r\n let isBoundariesAdded = false;\r\n LayersCurrents?.forEach((layerModel: Layer) => {\r\n if (layerModel.getClassName() === `id-layer-${boundaries.nameTb}`) {\r\n isBoundariesAdded = true;\r\n layerModel.setVisible(isDisplay);\r\n return;\r\n }\r\n });\r\n if (!isBoundariesAdded) {\r\n const format = new WKT();\r\n\r\n const feature: any[] = [];\r\n const featureObject = format.readFeature(boundaries.geomText, {\r\n dataProjection: this.props.projection,\r\n featureProjection: this.props.projection,\r\n });\r\n featureObject.setProperties({ tooltipValue: tooltipValue });\r\n featureObject.setProperties({ planningId: planningId });\r\n feature.push(featureObject);\r\n\r\n LayersCurrents?.push(\r\n new VectorLayer({\r\n className: `id-layer-${boundaries.nameTb}`,\r\n minZoom: minZoom,\r\n maxZoom: maxZoom,\r\n source: new VectorSource({\r\n features: [...feature],\r\n }),\r\n })\r\n );\r\n }\r\n };\r\n\r\n /*\r\n * Khi click vao phan chon mot quy hoach lien quan o left menu\r\n * Thi goi vao ham nay\r\n * Thong tin gui sang bao gom: Boundaries cua layer va thong tin layer, trong do da bao gom\r\n * display_name co chua cols\r\n *\r\n * */\r\n\r\n toggleDisplayLayerRelated = (\r\n boundaries: BoundariesViewModel,\r\n relatedLayer: RelatedLayerModel,\r\n isDisplay: boolean\r\n ) => {\r\n if (relatedLayer && relatedLayer.id && relatedLayer.id > 0) {\r\n const LayersCurrents = this.state.map?.getLayers();\r\n let isLayerAdded = false;\r\n LayersCurrents?.forEach((layerModel: Layer) => {\r\n if (layerModel.getClassName() === `id-layer-${relatedLayer.id}`) {\r\n isLayerAdded = true;\r\n layerModel.setVisible(isDisplay);\r\n }\r\n });\r\n if (!isLayerAdded) {\r\n /*\r\n * Neu quy hoach lien quan can hien thi boundaries\r\n * */\r\n\r\n if (Array.isArray(boundaries) && boundaries.length > 0) {\r\n const format = new WKT();\r\n const feature: any[] = [];\r\n feature.push(\r\n format.readFeature(boundaries.geomText, {\r\n dataProjection: this.props.projection,\r\n featureProjection: this.props.projection,\r\n })\r\n );\r\n LayersCurrents?.push(\r\n new VectorLayer({\r\n className: `id-layer-${boundaries.nameTb}`,\r\n source: new VectorSource({\r\n features: [...feature],\r\n }),\r\n })\r\n );\r\n }\r\n\r\n\r\n if (relatedLayer && relatedLayer.table && relatedLayer.wms) {\r\n this.setState({\r\n relatedLayer: relatedLayer\r\n })\r\n let selectedLayer = config.DataStore + ':' + relatedLayer.table;\r\n //console.log(this.state.listLayerSettingModel);\r\n //console.log('Show related map info by Title WMS');\r\n const selectSource = new TileWMS({\r\n url: relatedLayer.wms,\r\n params: {\r\n className: 'related-map',\r\n 'LAYERS': selectedLayer,\r\n LayerId: relatedLayer.id,\r\n FORMAT: \"image/png\",\r\n VERSION: \"1.1.0\",\r\n }\r\n })\r\n\r\n //console.log('selectSource',selectSource);\r\n\r\n const selectLayer = new TileLayer({\r\n className: `id-layer-${relatedLayer.id}`,\r\n visible: true,\r\n opacity: 1,\r\n source: selectSource,\r\n });\r\n selectLayer.setZIndex(999);\r\n LayersCurrents.push(selectLayer);\r\n }\r\n }\r\n }\r\n };\r\n\r\n changeBaseMap = (newBasemapUrl: string | undefined) => {\r\n const LayersCurrents = this.state.map?.getLayers();\r\n if (newBasemapUrl) {\r\n LayersCurrents?.insertAt(\r\n 0,\r\n new TileLayer({\r\n source: new OSM({\r\n url: newBasemapUrl,\r\n maxZoom: this.props.maxZoom,\r\n }),\r\n })\r\n );\r\n LayersCurrents?.removeAt(1);\r\n } else {\r\n const BaseMapLayer = LayersCurrents?.item(0).setVisible(false);\r\n }\r\n };\r\n\r\n changeCurrentLayerOpacity = (\r\n opacity: number | undefined,\r\n layer?: LayerSettingsModels.LayerSettingsModel | any\r\n ) => {\r\n if (opacity) {\r\n if (layer) this.toggleDisplayLayer(layer, opacity);\r\n }\r\n };\r\n\r\n changeCurrentLayer = (layer: LayerSettingsModels.LayerSettingsModel) => {\r\n const LayersCurrents = this.state.map?.getLayers();\r\n const newStates: any = { currentLayerSettingModel: layer };\r\n LayersCurrents?.forEach(\r\n (layerElement: ImageLayerModels.ImageLayerModel) => {\r\n const ParamsProperty = layerElement.getProperties().source.params_;\r\n // const LayerClassName = layerElement.className_;\r\n if (ParamsProperty && ParamsProperty.LayerId === layer.id) {\r\n newStates.currentLayer = layerElement;\r\n return;\r\n }\r\n }\r\n );\r\n this.setState(\r\n newStates,\r\n () => {\r\n this.changeCurrentLayerOpacity(\r\n Number(layer.opacity) / 100,\r\n layer\r\n );\r\n }\r\n );\r\n };\r\n\r\n toggleDisplayLayer = (\r\n layer: LayerSettingsModels.LayerSettingsModel,\r\n opacity?: number\r\n ) => {\r\n const LayersCurrents = this.state.map?.getLayers();\r\n LayersCurrents?.forEach(\r\n (layerElement: ImageLayerModels.ImageLayerModel) => {\r\n const ParamsProperty = layerElement.getProperties().source.params_;\r\n const layerClassName = layerElement.className_;\r\n if (ParamsProperty && ParamsProperty.LayerId === layer.id) {\r\n layerElement.setVisible(layer.is_check);\r\n }\r\n if (layerClassName === VectorImageLayerClassName(layer.id)) {\r\n layerElement.setVisible(layer.is_check);\r\n // if (opacity) {\r\n // layerElement.setOpacity(opacity);\r\n // }\r\n }\r\n if (opacity) {\r\n if (ParamsProperty && ParamsProperty.LayerId !== layer.id) {\r\n layerElement.setOpacity(opacity);\r\n }\r\n }\r\n }\r\n );\r\n };\r\n\r\n resetLayerOpacity = () => {\r\n console.log(\" run resetLayerOpacity \");\r\n \r\n const layersList = this.state.map?.getLayers();\r\n layersList?.forEach((layerElement: ImageLayerModels.ImageLayerModel) => {\r\n layerElement.setOpacity(1);\r\n }\r\n );\r\n }\r\n\r\n\r\n handleZoomOut = () => {\r\n this.state.map?.getView().setZoom(this.state.map.getView().getZoom() - 1);\r\n };\r\n\r\n handleZoomIn = () => {\r\n this.state.map?.getView().setZoom(this.state.map.getView().getZoom() + 1);\r\n };\r\n\r\n handleSelectOne = () => {\r\n this.handleOnOffViewInfomation(true);\r\n };\r\n\r\n SpatialSearch = async (coordinate: any) => {\r\n const layerGroups = this.props.listGroupLayer;\r\n const tableName = layerGroups && layerGroups.length > 0 && this.checkPlanningOfEarth(layerGroups);\r\n let _data = {\r\n \"tbName\": tableName,\r\n \"lang\": \"vn\",\r\n \"shp\": coordinate,\r\n \"r\": 0,\r\n \"searchType\": \"Polygon\"\r\n };\r\n try {\r\n const res = await mapToolAction.SpatialSearch(_data);\r\n return res;\r\n } catch (error) {\r\n throw error\r\n }\r\n }\r\n\r\n checkPlanningOfEarth = (layerGroups: any) => {\r\n if (!layerGroups) return;\r\n let layerOfEarth = layerGroups && layerGroups.length > 0 && layerGroups.map((item: any) => {\r\n return item.layer_settings\r\n })\r\n if (layerOfEarth && Array.isArray(layerOfEarth) && layerOfEarth.length > 0) {\r\n for (let i = 0; i < layerOfEarth.length; i++) {\r\n if (typeof layerOfEarth[i][0] != 'undefined' && layerOfEarth[i][0].select_multi === true) {\r\n return layerOfEarth[i][0].table;\r\n }\r\n }\r\n }\r\n }\r\n\r\n handleSelectMany = () => {\r\n this.removeHiglightVectorLayer();\r\n this.clearFeatures();\r\n this.setHeaderForTable();\r\n let select = new Select();\r\n\r\n this.state.map?.addInteraction(select);\r\n\r\n let selectedFeatures = select.getFeatures();\r\n\r\n let dragBox = new DragBox({});\r\n\r\n let _idTimeout: any = null;\r\n\r\n this.state.map?.addInteraction(dragBox);\r\n\r\n dragBox.on(\"boxend\", async () => {\r\n let rotation = this.state.map?.getView().getRotation();\r\n let oblique = rotation % (Math.PI / 2) !== 0;\r\n let candidateFeatures = selectedFeatures;\r\n let extent = dragBox.getGeometry().getExtent();\r\n const coordinate = dragBox.getGeometry().getCoordinates()[0];\r\n console.log(\"dragBox.getGeometry().getCoordinates()\", dragBox.getGeometry().getCoordinates()[0])\r\n let stringCoordinate = \"\"\r\n for (let i = 0; i < coordinate.length; i++) {\r\n stringCoordinate = stringCoordinate.concat(`${coordinate[i][0]} ${coordinate[i][1]}${i === coordinate.length - 1 ? '' : ','}`);\r\n }\r\n const preString = \"POLYGON((\";\r\n const endString = \"))\"\r\n const coordinateSearch = preString + stringCoordinate + endString;\r\n console.log(\"coordianteSearch\", coordinateSearch);\r\n const res = await this.SpatialSearch(coordinateSearch);\r\n const properties = [];\r\n const boundaries = [];\r\n if (res && res.content) {\r\n let feature = JSON.parse(res.content);\r\n if (feature && feature.data) {\r\n const _data = feature.data;\r\n for (let i = 0; i <= _data.length; i++) {\r\n if (_data[i]?.geo) {\r\n boundaries.push(_data[i].geo);\r\n delete _data[i].geo;\r\n }\r\n _data[i]?.geom && delete _data[i].geom;\r\n _data[i] && properties.push(_data[i]);\r\n }\r\n }\r\n if (_idTimeout) {\r\n clearInterval(_idTimeout)\r\n }\r\n _idTimeout = setTimeout(() => {\r\n const btnRelativeResultTab = document.getElementById(\r\n \"btnRelativeResultTab\"\r\n );\r\n if (btnRelativeResultTab) {\r\n if (btnRelativeResultTab.classList.contains(\"collapsed\"))\r\n btnRelativeResultTab.click();\r\n }\r\n }, 100)\r\n this.functionHightLightPolygon(boundaries);\r\n this.props.SaveInfomationForTable(properties);\r\n\r\n } else {\r\n _idTimeout = null;\r\n }\r\n });\r\n\r\n // clear selection when drawing a new box and when clicking on the map\r\n dragBox.on(\"boxstart\", function () {\r\n selectedFeatures.clear();\r\n });\r\n\r\n // selectedFeatures.on([\"add\", \"remove\"], () => {\r\n // var properties = selectedFeatures.getArray().map(function (feature) {\r\n // return feature.getProperties();\r\n // });\r\n\r\n\r\n // });\r\n };\r\n\r\n removeInteractionOnMap = () => {\r\n let interactionArr = this.state.map?.getInteractions().array_;\r\n let length = interactionArr.length;\r\n if (interactionArr && length === 0) return;\r\n interactionArr.map((item: any, index: number) => {\r\n if (item instanceof DragBox) {\r\n this.state.map?.getInteractions().array_.splice(index, 1);\r\n }\r\n })\r\n }\r\n\r\n handleExportMap = (isSave: boolean) => {\r\n const _Self = this;\r\n _Self.props.ShowLoading()\r\n const _openlayerMapObject: Map = this.state.map;\r\n const _size = _openlayerMapObject.getSize();\r\n const _exportOptions = {\r\n width: _size[0],\r\n height: _size[1],\r\n filter: function (_element: HTMLElement) {\r\n const _className = _element.className || '';\r\n return (\r\n _className.indexOf('ol-control') === -1 ||\r\n _className.indexOf('ol-scale') > -1 ||\r\n (_className.indexOf('ol-attribution') > -1 &&\r\n _className.indexOf('ol-uncollapsible'))\r\n );\r\n },\r\n };\r\n\r\n domtoimage.toJpeg(_openlayerMapObject.getViewport(), _exportOptions)\r\n .then(function (dataUrl: string) {\r\n _Self.props.HiddenLoading()\r\n if (isSave) {\r\n const _linkElement = document.createElement('a');\r\n _linkElement.setAttribute('download', `map.jpg`)\r\n _linkElement.setAttribute(\"href\", dataUrl);\r\n _linkElement.click();\r\n } else {\r\n document\r\n .getElementById(\"imagemap\")\r\n ?.setAttribute(\"src\", dataUrl);\r\n document.getElementById(\"print\")?.click();\r\n }\r\n (document.querySelector('[class=\"tool-button\"]') as HTMLElement)?.click();\r\n });\r\n };\r\n\r\n handleOnOffViewInfomation = (isTurnOn: boolean) => {\r\n // this.removeHiglightVectorLayer();\r\n this.deleteHightlightFilterLayer();\r\n const mapObject: Map = this.state.map;\r\n //đoạn check this.props.isGeneralPlanning cho vào hàm functionClickViewInfomationListener\r\n if (isTurnOn) {\r\n mapObject.on(\"singleclick\", this.functionClickViewInfomationListener);\r\n } else {\r\n mapObject.un(\"singleclick\", this.functionClickViewInfomationListener);\r\n }\r\n this.changeInteraction();\r\n };\r\n\r\n addShowPopUpInClickedCord = () => {\r\n const mapObject: Map = this.state.map;\r\n const popup = new Overlay({\r\n id: 'show-popup-clicked-cord_in-map',\r\n element: document.getElementById('show-popup-clicked-cord') as HTMLElement || undefined,\r\n });\r\n mapObject.addOverlay(popup);\r\n };\r\n\r\n handleDisplayFullScreenViewMode = (isFullScreen: boolean) => {\r\n const HeaderContainer = document.getElementById(\r\n \"header-map-page-container\"\r\n ) as HTMLElement;\r\n if (HeaderContainer) {\r\n if (isFullScreen) {\r\n HeaderContainer.style.display = \"none\";\r\n this.setHeightViewport();\r\n } else {\r\n HeaderContainer.style.display = \"block\";\r\n this.setHeightViewport();\r\n }\r\n }\r\n };\r\n\r\n handlePinMarkerMode = (isTurnOn: boolean) => {\r\n const LayersCurrents = this.state.map?.getLayers();\r\n const openlayerMap: Map = this.state.map;\r\n const anchorXUnits: any = \"fraction\";\r\n const anchorYUnits: any = \"pixels\";\r\n if (isTurnOn) {\r\n const PinMarkerLayer = new VectorLayer({\r\n zIndex: 9999,\r\n className: \"pin-marker-vector-layer\",\r\n source: new VectorSource({\r\n features: [],\r\n }),\r\n style: new Style({\r\n image: new Icon({\r\n anchor: [0.5, 22],\r\n anchorXUnits: anchorXUnits,\r\n anchorYUnits: anchorYUnits,\r\n src: require(\"../../assets/icon/red-marker.png\"),\r\n }),\r\n }),\r\n });\r\n LayersCurrents?.push(PinMarkerLayer);\r\n openlayerMap.on(\"singleclick\", this.functionClickPinMarker_PinMarkerMode);\r\n } else {\r\n let layerIndex = -1;\r\n LayersCurrents?.forEach((layerObject: Layer, index: number) => {\r\n if (layerObject.getClassName() === \"pin-marker-vector-layer\") {\r\n layerIndex = index;\r\n return;\r\n }\r\n });\r\n if (layerIndex != -1) LayersCurrents?.removeAt(layerIndex);\r\n openlayerMap.un(\"singleclick\", this.functionClickPinMarker_PinMarkerMode);\r\n }\r\n };\r\n\r\n handleMeasureMode = (isTurnOn: boolean, isLineMode: boolean) => {\r\n const LayersCurrents = this.state.map?.getLayers();\r\n let indexMeasureLayer = -1;\r\n let isLayerHasExist = false;\r\n LayersCurrents?.forEach((layerObject: Layer, index: number) => {\r\n if (layerObject.getClassName() === \"measuare-vector-layer\") {\r\n isLayerHasExist = true;\r\n indexMeasureLayer = index;\r\n return;\r\n }\r\n });\r\n if (isTurnOn) {\r\n let measureVectorSource = new VectorSource();\r\n if (!isLayerHasExist) {\r\n const measureVectorLayer = new VectorLayer({\r\n zIndex: 1000,\r\n className: \"measuare-vector-layer\",\r\n source: measureVectorSource,\r\n style: new Style({\r\n fill: new Fill({\r\n color: \"rgba(255, 0, 0, 0.6)\",\r\n }),\r\n stroke: new Stroke({\r\n color: \"#ffcc33\",\r\n width: 3,\r\n }),\r\n image: new CircleStyle({\r\n radius: 7,\r\n fill: new Fill({\r\n color: \"#ffcc33\",\r\n }),\r\n }),\r\n }),\r\n });\r\n LayersCurrents.push(measureVectorLayer);\r\n this.state.map.on(\r\n \"pointermove\",\r\n this.functionPointerMoveHandle_MeasureMode\r\n );\r\n this.state.map\r\n .getViewport()\r\n .addEventListener(\"mouseout\", this.functionMouseOut_MeasureMode);\r\n } else {\r\n const MeasureVectorLayer: VectorLayer = LayersCurrents?.item(\r\n indexMeasureLayer\r\n );\r\n measureVectorSource = MeasureVectorLayer.getSource();\r\n }\r\n this.state.map.removeInteraction(drawMeasureGolbal);\r\n this.functionAddInteraction_MeasureMode(isLineMode, measureVectorSource);\r\n } else {\r\n this.state.map.removeInteraction(drawMeasureGolbal);\r\n this.functionRemoveAllMapOverlay();\r\n this.state.map.un(\r\n \"pointermove\",\r\n this.functionPointerMoveHandle_MeasureMode\r\n );\r\n this.state.map\r\n .getViewport()\r\n .removeEventListener(\"mouseout\", this.functionMouseOut_MeasureMode);\r\n if (indexMeasureLayer != -1) LayersCurrents?.removeAt(indexMeasureLayer);\r\n }\r\n };\r\n\r\n //--- core function\r\n\r\n clearFeaturesSelected = () => {\r\n this.props.featuresSelected?.map(features => {\r\n features.setStyle(Default_Feature_Style(features))\r\n })\r\n this.props.SaveOpenlayerFeaturesSelected && this.props.SaveOpenlayerFeaturesSelected([]);\r\n this.deleteFilterDrawnVectorLayer();\r\n this.deleteHightlightFilterLayer()\r\n }\r\n\r\n functionTurnOffFilterMode = () => {\r\n const filterButtonElement = document.querySelector(\r\n '[data-icon-name=\"filter\"]'\r\n );\r\n if (filterButtonElement) {\r\n if (filterButtonElement.classList.contains(\"active\")) {\r\n const informationTool = (document.querySelector(\".tool-button\") as HTMLElement);\r\n informationTool?.click();\r\n }\r\n }\r\n /*\r\n const mapInformationTabButton = (document.querySelector('[aria-controls=\"mapLayersTab\"]') as HTMLElement);\r\n mapInformationTabButton?.click();\r\n */\r\n // this.props.SetDisplayInfomationPopup && this.props.SetDisplayInfomationPopup(false);\r\n // this.clearFeaturesSelected();\r\n // this.deleteFilterDrawnVectorLayer();\r\n }\r\n\r\n functionDisplayAllBoundariesOfAllPlanning = (\r\n ListBoundaries: GetAllPlanningBoundariesMode[]\r\n ) => {\r\n const idIntervalCheckMapExist = setInterval(() => {\r\n if (this.state.map) {\r\n const vectorLayerStyle = new Style({\r\n stroke: new Stroke({\r\n color: \"rgba(215,78,0,0.8)\",\r\n width: 1,\r\n }),\r\n fill: new Fill({\r\n color: \"rgba(215,78,0,0.1)\",\r\n }),\r\n });\r\n const LayersCurrents = this.state.map?.getLayers();\r\n ListBoundaries.map((boundariesData) => {\r\n const format = new WKT();\r\n\r\n const feature: any[] = [];\r\n const featureObject = format.readFeature(boundariesData.geomText, {\r\n dataProjection: this.props.projection,\r\n featureProjection: this.props.projection,\r\n });\r\n featureObject.setProperties({ tooltipValue: boundariesData.name });\r\n featureObject.setProperties({ planningId: boundariesData.id });\r\n featureObject.setProperties({ acreage: boundariesData.acreage });\r\n featureObject.setProperties({\r\n population: boundariesData.population,\r\n });\r\n featureObject.setProperties({ report: boundariesData.report });\r\n feature.push(featureObject);\r\n\r\n LayersCurrents.push(\r\n new VectorLayer({\r\n className: `id-layer-${boundariesData.nameTable}`,\r\n maxZoom: boundariesData.maxZoom,\r\n minZoom: boundariesData.minZoom,\r\n zIndex: boundariesData.zIndex,\r\n source: new VectorSource({\r\n features: feature,\r\n }),\r\n style: vectorLayerStyle,\r\n })\r\n );\r\n\r\n });\r\n console.log(LayersCurrents, 'current layer')\r\n clearInterval(idIntervalCheckMapExist);\r\n }\r\n }, 250);\r\n };\r\n\r\n functionRemoveAllMapOverlay = () => {\r\n // const CollectsOfOverlay = this.state.map.getOverlays();\r\n // CollectsOfOverlay.clear();\r\n \r\n const indexToRemove: number[] = [];\r\n this.state.map.getOverlays().forEach((element: any, index: number) => {\r\n if(!element || !element.id) {\r\n indexToRemove.push(index);\r\n }\r\n });\r\n indexToRemove.sort((a, b) => b - a);\r\n indexToRemove.map((index: number) => {\r\n this.state.map.getOverlays().removeAt(index);\r\n })\r\n };\r\n\r\n functionAddInteraction_MeasureMode = (\r\n isLineMode: boolean,\r\n vectorSource: VectorSource\r\n ) => {\r\n let type: any = isLineMode ? \"LineString\" : \"Polygon\";\r\n drawMeasureGolbal = new Draw({\r\n source: vectorSource,\r\n type: type,\r\n style: new Style({\r\n fill: new Fill({\r\n color: \"rgba(234, 255, 0,0.5)\",\r\n }),\r\n stroke: new Stroke({\r\n color: \"rgba(255, 0, 0, 0.8);\",\r\n // lineDash: [10, 10],\r\n width: 3,\r\n }),\r\n image: new CircleStyle({\r\n radius: 5,\r\n stroke: new Stroke({\r\n color: \"rgba(255,0,0,0.3);\",\r\n }),\r\n fill: new Fill({\r\n color: \"rgba(29, 32, 232,1)\",\r\n }),\r\n }),\r\n }),\r\n });\r\n this.state.map?.addInteraction(drawMeasureGolbal);\r\n\r\n this.functionCreateMeasureTooltip_MeasureMode();\r\n this.functionCreateHelpTooltip_MeasureMode();\r\n\r\n let listener: any;\r\n const self = this;\r\n drawMeasureGolbal.on(\"drawstart\", (evt: any) => {\r\n sketchGolbal = evt.feature;\r\n\r\n let tooltipCoord = evt.coordinate;\r\n\r\n listener = sketchGolbal?.getGeometry().on(\"change\", function (evt) {\r\n const geom = evt.target;\r\n let output;\r\n if (geom instanceof Polygon) {\r\n output = self.functionFormatPolygon_MeasureMode(geom);\r\n tooltipCoord = geom.getInteriorPoint().getCoordinates();\r\n } else if (geom instanceof LineString) {\r\n output = self.functionFormatLength_MeasureMode(geom);\r\n tooltipCoord = geom.getLastCoordinate();\r\n }\r\n if (measureTooltipElementGolbal)\r\n measureTooltipElementGolbal.innerHTML = output || \"\";\r\n measureTooltipGolbal.setPosition(tooltipCoord);\r\n });\r\n });\r\n\r\n drawMeasureGolbal.on(\"drawend\", function () {\r\n if (measureTooltipElementGolbal)\r\n measureTooltipElementGolbal.className = \"ol-tooltip ol-tooltip-static\";\r\n measureTooltipGolbal.setOffset([0, -7]);\r\n sketchGolbal = null;\r\n measureTooltipElementGolbal = null;\r\n self.functionCreateMeasureTooltip_MeasureMode();\r\n unByKey(listener);\r\n });\r\n };\r\n\r\n functionCreateHelpTooltip_MeasureMode = () => {\r\n helpTooltipElementGolbal?.parentNode?.removeChild(helpTooltipElementGolbal);\r\n helpTooltipElementGolbal = document.createElement(\"div\");\r\n helpTooltipElementGolbal.className = \"ol-tooltip hidden\";\r\n const positioning: any = \"center-left\";\r\n helpTooltipGolbal = new Overlay({\r\n element: helpTooltipElementGolbal,\r\n offset: [15, 0],\r\n positioning: positioning,\r\n });\r\n this.state.map.addOverlay(helpTooltipGolbal);\r\n };\r\n\r\n functionCreateMeasureTooltip_MeasureMode = () => {\r\n measureTooltipElementGolbal?.parentNode?.removeChild(\r\n measureTooltipElementGolbal\r\n );\r\n measureTooltipElementGolbal = document.createElement(\"div\");\r\n measureTooltipElementGolbal.className = \"ol-tooltip ol-tooltip-measure\";\r\n const positioning: any = \"bottom-center\";\r\n measureTooltipGolbal = new Overlay({\r\n element: measureTooltipElementGolbal,\r\n offset: [0, -15],\r\n positioning: positioning,\r\n });\r\n this.state.map.addOverlay(measureTooltipGolbal);\r\n };\r\n\r\n functionFormatLength_MeasureMode = (line: LineString): string => {\r\n const length = getLength(line, {\r\n projection: this.props.projection,\r\n });\r\n let result = \"\";\r\n if (length > 100) {\r\n result = Math.round((length / 1000) * 100) / 100 + \" \" + \"km\";\r\n } else {\r\n result = Math.round(length * 100) / 100 + \" \" + \"m\";\r\n }\r\n\r\n return result;\r\n };\r\n\r\n functionFormatPolygon_MeasureMode = (polygon: Polygon): string => {\r\n const area = getArea(polygon, {\r\n projection: this.props.projection,\r\n });\r\n let result = \"\";\r\n if (area > 10000) {\r\n result =\r\n Math.round((area / 1000000) * 100) / 100 + \" \" + \"km2\";\r\n } else {\r\n result = Math.round(area * 100) / 100 + \" \" + \"m2\";\r\n }\r\n return result;\r\n };\r\n\r\n functionMouseOut_MeasureMode = () => {\r\n helpTooltipElementGolbal?.classList.add(\"hidden\");\r\n };\r\n\r\n functionPointerMoveHandle_MeasureMode = (event: MapBrowserEvent) => {\r\n if (event.dragging) return;\r\n if (sketchGolbal) {\r\n const geom = sketchGolbal.getGeometry();\r\n if (geom instanceof Polygon) {\r\n } else if (geom instanceof LineString) {\r\n }\r\n }\r\n if (helpTooltipElementGolbal) {\r\n helpTooltipGolbal.setPosition(event.coordinate);\r\n\r\n helpTooltipElementGolbal.classList.remove(\"hidden\");\r\n }\r\n };\r\n\r\n functionClickPinMarker_PinMarkerMode = (event: MapBrowserEvent) => {\r\n const LayersCurrents = this.state.map?.getLayers();\r\n LayersCurrents?.forEach((layerObject: VectorLayer) => {\r\n if (layerObject.getClassName() === \"pin-marker-vector-layer\") {\r\n const newMarker = new Feature({\r\n type: \"icon\",\r\n geometry: new Point(event.coordinate),\r\n });\r\n layerObject.getSource().addFeature(newMarker);\r\n return;\r\n }\r\n });\r\n };\r\n\r\n handleSearchCoordinateMapDetail = (coord: any) => {\r\n if (coord) console.log('ok', coord);\r\n this.state.map?.getView().setZoom(16.932305145395418);\r\n\r\n this.functionClickViewInfomationListener({ coordinate: coord }, true);\r\n this.pinSearchMode(coord);\r\n }\r\n\r\n handleSearchCoordinate = (value: string) => {\r\n if (!value) return;\r\n let coordinateList = value.split(\",\");\r\n let x: number = 0;\r\n let y: number = 0;\r\n if (coordinateList && coordinateList.length === 2) {\r\n x = parseFloat(coordinateList[0]);\r\n y = parseFloat(coordinateList[1]);\r\n }\r\n homePageStore.GetVn2000ToWgs84(x, y).then((res) => {\r\n let isInside = false;\r\n this.props.listPolygon &&\r\n this.props.listPolygon.map((itemPolygon: any) => {\r\n if (mapHelper.isPointInPolygon(res[1], res[0], itemPolygon)) {\r\n isInside = true;\r\n return;\r\n }\r\n });\r\n if (isInside) {\r\n // let center = [res[1],res[0]];\r\n console.log(res)\r\n this.pinSearchMode([res[0], res[1]]);\r\n this.functionClickViewInfomationListener({ coordinate: [res[0], res[1]] });\r\n history.push(\r\n `${UrlCollect.PlanningMapViewDetail}2?lng=${x}&lat=${y}&searchType=codinate`\r\n );\r\n } else {\r\n ShowNotification(\r\n viVN.Errors.CoordinateOutSidePolygon,\r\n NotificationMessageType.Warning,\r\n NotificationPosition.Center\r\n );\r\n }\r\n })\r\n // proj4.defs(\r\n // \"EPSG:3405\",\r\n // \"+proj=tmerc +lat_0=0 +lon_0=107.75 +k=0.9999 +x_0=500000 +y_0=0 +ellps=WGS84 +towgs84=-191.90441429,-39.30318279,-111.45032835,-0.00928836,0.01975479,-0.00427372,0.252906278 +units=m +no_defs\"\r\n // );\r\n // register(proj4);\r\n // var center = transform([x, y], \"EPSG:3405\", \"EPSG:4326\");\r\n // console.log(center)\r\n\r\n };\r\n\r\n pinSearchMode = (coordinate: any, desc? : string) => {\r\n this.state.map?.getView().setCenter(coordinate);\r\n const LayersCurrents = this.state.map?.getLayers();\r\n const anchorXUnits: any = \"fraction\";\r\n const anchorYUnits: any = \"pixels\";\r\n const PinMarkerLayer = new VectorLayer({\r\n zIndex: 9999,\r\n className: desc ? \"pin-marker-vector-layer\" : `pin-marker-vector-layer-${desc}`,\r\n source: new VectorSource({\r\n features: [],\r\n }),\r\n style: new Style({\r\n image: new Icon({\r\n anchor: [0.5, 22],\r\n anchorXUnits: anchorXUnits,\r\n anchorYUnits: anchorYUnits,\r\n src: require(\"../../assets/icon/red-marker.png\"),\r\n }),\r\n }),\r\n });\r\n if (!this.checkPinMarker()) {\r\n LayersCurrents?.push(PinMarkerLayer);\r\n }\r\n LayersCurrents?.forEach((layerObject: VectorLayer) => {\r\n if (layerObject.getClassName() === \"pin-marker-vector-layer\" || layerObject.getClassName() === `pin-marker-vector-layer-${desc}`) {\r\n layerObject.getSource().clear();\r\n const newMarker = new Feature({\r\n type: \"icon\",\r\n geometry: new Point(coordinate),\r\n });\r\n layerObject.getSource().addFeature(newMarker);\r\n return;\r\n }\r\n });\r\n };\r\n\r\n checkPinMarker = () => {\r\n let currentLayers = this.state.map?.getLayers();\r\n currentLayers?.forEach((LayerObject: VectorLayer) => {\r\n if (LayerObject.getClassName() === \"pin-marker-vector-layer\") {\r\n return true;\r\n }\r\n });\r\n return false;\r\n };\r\n\r\n setHeightViewport = () => {\r\n const HeaderContainerHeight = (document.getElementById(\r\n \"header-map-page-container\"\r\n ) as HTMLElement).offsetHeight;\r\n this.setState(\r\n {\r\n mapContainerStyle: {\r\n height: `${window.innerHeight - HeaderContainerHeight}px`,\r\n },\r\n },\r\n () => {\r\n this.state.map?.updateSize();\r\n }\r\n );\r\n };\r\n\r\n functionHandleClickLayerToDirectDetail = (pixel: any) => {\r\n const feature = this.state.map?.forEachFeatureAtPixel(pixel, function (\r\n feature: any\r\n ) {\r\n return feature;\r\n });\r\n if (\r\n feature &&\r\n feature.getProperties() &&\r\n feature.getProperties().planningId\r\n ) {\r\n window.open(\r\n UrlCollect.PlanningMapViewDetail + feature.getProperties().planningId\r\n );\r\n }\r\n };\r\n\r\n functionHoverHightlightAndShowTooltip = (pixel: any) => {\r\n const tooltipContainer = document.getElementById(\r\n \"tooltip-container-openlayer\"\r\n ) as HTMLElement;\r\n let left = pixel[0] + 20;\r\n let top = pixel[1] + 20;\r\n if (tooltipContainer) {\r\n tooltipContainer.style.left = left + \"px\";\r\n tooltipContainer.style.top = top + \"px\";\r\n tooltipContainer.style.opacity = \"1\";\r\n }\r\n\r\n const feature = this.state.map?.forEachFeatureAtPixel(pixel, function (\r\n feature: any\r\n ) {\r\n return feature;\r\n });\r\n if (\r\n feature &&\r\n feature.getProperties() &&\r\n feature.getProperties().tooltipValue\r\n ) {\r\n tooltipContainer.innerHTML = feature.getProperties().tooltipValue;\r\n } else {\r\n tooltipContainer.style.opacity = \"0\";\r\n }\r\n };\r\n\r\n functionHoverHightlightAndShowPopUp = (pixel: any) => {\r\n const popupContainer = document.getElementById(\r\n \"popup-container-openlayer\"\r\n ) as HTMLElement;\r\n if (popupContainer) {\r\n popupContainer.style.right = 50 + \"px\";\r\n popupContainer.style.bottom = 50 + \"px\";\r\n popupContainer.style.opacity = \"1\";\r\n popupContainer.style.display = \"block\";\r\n }\r\n\r\n const feature = this.state.map?.forEachFeatureAtPixel(pixel, function (\r\n feature: any\r\n ) {\r\n return feature;\r\n });\r\n if (\r\n feature &&\r\n feature.getProperties() &&\r\n feature.getProperties().tooltipValue &&\r\n feature.getProperties().tooltipValue &&\r\n feature.getProperties().acreage &&\r\n feature.getProperties().population\r\n ) {\r\n popupContainer.innerHTML = `
    \r\n ${feature.getProperties().tooltipValue || \"--\"\r\n }
    \r\n Diện tích: ${feature.getProperties().acreage || \"--\"\r\n }
    \r\n Dân số:${feature.getProperties().population || \"--\"\r\n }
    \r\n Quyết định phê duyệt: ${feature.getProperties().report || \"--\"\r\n }
    \r\n
    \r\n `;\r\n } else {\r\n popupContainer.style.opacity = \"0\";\r\n popupContainer.style.display = \"none\";\r\n }\r\n };\r\n\r\n functionClickShowPopUpInClickedCord = (featureInfo: any, coordinate: any) => {\r\n if (!this.props.isGeneralPlanning) return;\r\n const mapObject: Map = this.state.map;\r\n const popup = mapObject.getOverlayById(\"show-popup-clicked-cord_in-map\");\r\n if (!popup) return;\r\n const element: HTMLElement = popup.getElement();\r\n if (!element) return;\r\n const temp = element.getElementsByClassName(\"pop_over_clicked_cord\")[0];\r\n if (temp) element.removeChild(temp);\r\n\r\n if (!featureInfo) {\r\n element.style.display = \"none\";\r\n } else {\r\n popup.setPosition(coordinate);\r\n var newDiv = document.createElement(\"div\");\r\n newDiv.className = \"pop_over_clicked_cord\";\r\n newDiv.innerHTML = featureInfo?.properties?.planning_name;\r\n newDiv.onclick = function () {\r\n window.open(UrlCollect.PlanningMapViewDetail + featureInfo?.properties?.planning_id, '_blank');\r\n };\r\n element.appendChild(newDiv);\r\n element.style.display = \"block\";\r\n }\r\n }\r\n\r\n functionClickShowPopUp = (featureInfo: any) => {\r\n const planning_code = featureInfo?.planning_code;\r\n const popupContainer = document.getElementById(\r\n \"click-show-popup-container-openlayer\"\r\n ) as HTMLElement;\r\n if (popupContainer) {\r\n popupContainer.style.right = 50 + \"px\";\r\n popupContainer.style.bottom = 50 + \"px\";\r\n popupContainer.style.opacity = \"1\";\r\n popupContainer.style.display = \"block\";\r\n\r\n if (\r\n featureInfo\r\n ) {\r\n console.log('planning_code', planning_code);\r\n \r\n popupContainer.innerHTML = `
    \r\n ${planning_code || \"--\"\r\n }\r\n
    \r\n `;\r\n } else {\r\n popupContainer.style.opacity = \"0\";\r\n popupContainer.style.display = \"none\";\r\n }\r\n }\r\n };\r\n\r\n functionClickViewInfomationListener = (evt: any, calledFromSearchCoordinate?: boolean) => {\r\n const mapObject: Map = this.state.map;\r\n const listLayer = mapObject.getLayers();\r\n const listTitleLayerVisible: TileLayer[] = [];\r\n const listImageLayerVisible: ImageLayer[] = [];\r\n const listVectorImageLayerVisible: VectorImageLayer[] = [];\r\n const view = mapObject.getView();\r\n const viewResolution = view.getResolution();\r\n const buttonTabMapinfomation = document.getElementById(\r\n \"ButtonControlMapInfomationTab\"\r\n );\r\n const mapInfomationContainer = document.getElementById(\r\n \"mapInfomationContainer\"\r\n );\r\n const planningInfomationSmallPopupElement = (document.getElementById(\"planning-infomation-small-popup\") as HTMLElement);\r\n let layerIndex = 0;\r\n console.log('CLick to map and view info');\r\n \r\n const getFeaturesWithTitleLayer = (titleLayer: TileLayer | ImageLayer) => {\r\n // console.log('titleLayer_xxx',titleLayer);\r\n const source: any = titleLayer.getSource();\r\n const layerId = source.getParams()['LayerId'];\r\n const currentLayerSettingModel = this.state.listLayerSettingModel.filter(x => x.id === layerId)[0]\r\n const url = source.getFeatureInfoUrl(\r\n evt.coordinate,\r\n viewResolution,\r\n view.getProjection(),\r\n { INFO_FORMAT: \"application/json\", FEATURE_COUNT: 50 }\r\n );\r\n //console.log(\"currentLayerSettingModel\",currentLayerSettingModel);\r\n\r\n // ---layerchild\r\n const currentLayerChildSettingModel =\r\n (currentLayerSettingModel && currentLayerSettingModel.layerRealationships &&\r\n currentLayerSettingModel.layerRealationships.length > 0) ?\r\n currentLayerSettingModel.layerRealationships : null;\r\n // console.log('currentLayerSettingModel', currentLayerChildSettingModel)\r\n\r\n const getInfo = (url: any, currentLayerChildSettingModel: any, numberOfChild: number) => {\r\n if (url) {\r\n Jquery.ajax({\r\n type: \"POST\",\r\n url: url,\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: (featureCollection: ResponeFromServeClickShowInfomationFeature) => {\r\n if (featureCollection.features.length > 0) {\r\n const _geojsonObject = featureCollection;\r\n const ListInfoMation: SingleMapInfoMationModel[] = [];\r\n\r\n /*\r\n * Lay thong tin de hien len bang thuoc tinh ben tay trai\r\n * */\r\n\r\n const featureInfo: any = featureCollection.features[0];\r\n _geojsonObject.features = [featureInfo];\r\n \r\n const setDataForTabInformation = (featuresProperies: any) => {\r\n if (currentLayerChildSettingModel) {\r\n const layerSettingModel = currentLayerChildSettingModel;\r\n const colsRaw = ConvertColsDataDetailViewToStandardData(\r\n layerSettingModel.display_name.cols\r\n );\r\n const displayDetails = layerSettingModel.display_name.viewdetail;\r\n //console.log('displayDetails',displayDetails);\r\n if (displayDetails.use) {\r\n displayDetails.cols.map((columnName: any) => {\r\n ListInfoMation.push({\r\n label: colsRaw[columnName],\r\n value: featuresProperies[columnName],\r\n });\r\n });\r\n if (layerSettingModel.layerRealationshipId !== 0) {\r\n ListInfoMation.push({\r\n label: \"Năm điều chỉnh\",\r\n value: `${layerSettingModel.year}`,\r\n },\r\n {\r\n label: \"qddc\",\r\n value: `${layerSettingModel.contentChange}`,\r\n }\r\n );\r\n }\r\n\r\n }\r\n }\r\n }\r\n setDataForTabInformation(featureInfo?.properties)\r\n\r\n /********************************************************************/\r\n // console.log('dfsfdsgtidfhg', currentLayerChildSettingModel)\r\n this.props.SaveChildInfomationList([...this.props.listChildInfomations ,ListInfoMation]);\r\n if (!this.state.isLoadedAllVectorSource) {\r\n let _isHaveHighlightVectorlayer = false;\r\n listLayer.forEach((_layer) => {\r\n if ((_layer instanceof VectorLayer) &&\r\n (_layer.getClassName() === \"highlight-vectorlayer-child\")\r\n ) {\r\n _isHaveHighlightVectorlayer = true;\r\n const _newVectorSource = new VectorSource({\r\n features: new GeoJSON().readFeatures(_geojsonObject),\r\n })\r\n _layer.setSource(_newVectorSource)\r\n }\r\n })\r\n // console.log('_isHaveHighlightVectorlayer',_isHaveHighlightVectorlayer);\r\n if (!_isHaveHighlightVectorlayer) {\r\n // console.log('_geojsonObject', _geojsonObject)\r\n listLayer.push(\r\n new VectorLayer({\r\n className: \"highlight-vectorlayer-child\",\r\n source: new VectorSource({\r\n features: new GeoJSON().readFeatures(_geojsonObject),\r\n }),\r\n zIndex: 999,\r\n style: new Style({\r\n stroke: new Stroke({\r\n color: 'rgba(223,16, 188,1)',\r\n width: 2,\r\n }),\r\n fill: new Fill({\r\n color: 'rgba(0,230,241,0.5)',\r\n }),\r\n }),\r\n })\r\n )\r\n }\r\n }\r\n }\r\n else {\r\n this.removeHiglightVectorLayerChild();\r\n layerIndex++;\r\n if (layerIndex < listTitleLayerVisible.length) {\r\n } else {\r\n this.props.SaveChildInfomationList([...this.props.listChildInfomations]);\r\n }\r\n }\r\n }\r\n })\r\n } else {\r\n this.props.SaveChildInfomationList([...this.props.listChildInfomations]);\r\n }\r\n }\r\n this.props.SaveChildInfomationList([]);\r\n\r\n if (url) {\r\n Jquery.ajax({\r\n type: \"POST\",\r\n url: url,\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: (featureCollection: ResponeFromServeClickShowInfomationFeature) => {\r\n if (featureCollection.features.length > 0) {\r\n const _geojsonObject = featureCollection;\r\n const ListInfoMation: SingleMapInfoMationModel[] = [];\r\n\r\n /*\r\n * Lay thong tin de hien len bang thuoc tinh ben tay trai\r\n * */\r\n\r\n const featureInfo: any = featureCollection.features[0];\r\n _geojsonObject.features = [featureInfo];\r\n\r\n if( featureInfo.id == this.state.prevFeatureId && !calledFromSearchCoordinate) {\r\n \r\n //tắt cha\r\n this.props.SaveInfomationList([]);\r\n this.setState({prevFeatureId: \"\"});\r\n this.removeHiglightVectorLayer();\r\n\r\n //tắt con\r\n this.props.SaveChildInfomationList([]);\r\n this.removeHiglightVectorLayerChild();\r\n return;\r\n }\r\n\r\n // ======================================================================================\r\n currentLayerChildSettingModel && currentLayerChildSettingModel.map((item) => {\r\n listLayer.forEach((layer) => {\r\n if ((layer instanceof TileLayer) && (layer.getClassName() == `title-layer-${item.id}`)) {\r\n const source: any = layer.getSource()\r\n const url = source.getFeatureInfoUrl(\r\n evt.coordinate,\r\n viewResolution,\r\n view.getProjection(),\r\n { INFO_FORMAT: \"application/json\", FEATURE_COUNT: 50 }\r\n );\r\n getInfo(url, item, currentLayerChildSettingModel.length);\r\n }\r\n })\r\n })\r\n // ======================================================================================\r\n \r\n\r\n this.setState({prevFeatureId: featureInfo.id});\r\n \r\n if (this.props.isGeneralPlanning) {\r\n this.functionClickShowPopUp(featureInfo?.properties);\r\n // this.functionHoverHightlightAndShowTooltip(this.state.map.getEventPixel(evt.originalEvent));\r\n // window.open(UrlCollect.PlanningMapViewDetail + featureInfo?.planning_id, '_blank');\r\n this.functionClickShowPopUpInClickedCord(featureInfo, evt.coordinate);\r\n // console.log(mapObject.getOverlays());\r\n\r\n }\r\n\r\n const setDataForTabInformation = (featuresProperies: any) => {\r\n if (currentLayerSettingModel) {\r\n const layerSettingModel = currentLayerSettingModel;\r\n const colsRaw = ConvertColsDataDetailViewToStandardData(\r\n layerSettingModel.display_name.cols\r\n );\r\n const displayDetails = layerSettingModel.display_name.viewdetail;\r\n //console.log('displayDetails',displayDetails);\r\n if (displayDetails.use) {\r\n displayDetails.cols.map((columnName) => {\r\n ListInfoMation.push({\r\n label: colsRaw[columnName],\r\n value: featuresProperies[columnName],\r\n });\r\n });\r\n if (currentLayerSettingModel.layerRealationships &&\r\n currentLayerSettingModel.layerRealationships.length > 0) {\r\n currentLayerSettingModel.layerRealationships.map(item => {\r\n ListInfoMation.push({\r\n label: \"qddc\",\r\n value: item.contentChange,\r\n });\r\n })\r\n }\r\n if (currentLayerSettingModel.layerRealationshipId != 0) {\r\n ListInfoMation.push({\r\n label: \"Năm điều chỉnh\",\r\n value: currentLayerSettingModel.year + \"\",\r\n });\r\n }\r\n if (currentLayerSettingModel.layerRealationshipId != 0) {\r\n ListInfoMation.push({\r\n label: \"Tên quy hoạch\",\r\n value: currentLayerSettingModel.contentChange,\r\n });\r\n }\r\n }\r\n } else if (this.state.relatedLayer) {\r\n let relatedLayer: any = this.state.relatedLayer;\r\n const colsRaw: any = {};\r\n const displayDetails: any = []\r\n //console.log('relatedLayer_YYYYYYYYYYYYYYYYYYyyy',relatedLayer);\r\n if (Array.isArray(relatedLayer.display_name.cols) && relatedLayer.display_name.cols.length > 0) {\r\n relatedLayer.display_name.cols.map((col: any) => {\r\n if (col.col != '__gid'\r\n && col.col != '____gid'\r\n && col.col != 'id'\r\n && col.col != 'ten_loai_dat') {\r\n displayDetails.push(col.col);\r\n colsRaw[col.col] = col.alias;\r\n }\r\n })\r\n }\r\n if (Array.isArray(displayDetails) && displayDetails.length > 0) {\r\n displayDetails.map((columnName) => {\r\n ListInfoMation.push({\r\n label: colsRaw[columnName],\r\n value: featuresProperies[columnName],\r\n });\r\n });\r\n }\r\n //console.log('colsRaw_XXXXXXXXXXXXXXXXXXXXXXXXXXx',colsRaw);\r\n }\r\n }\r\n // n.features.map(features => MergeData(features.properties))\r\n // console.log('featureCollection__xxx', featureCollection);\r\n setDataForTabInformation(featureInfo?.properties)\r\n\r\n /********************************************************************/\r\n\r\n this.props.SaveInfomationList(ListInfoMation);\r\n if (!this.state.isLoadedAllVectorSource) {\r\n let _isHaveHighlightVectorlayer = false;\r\n listLayer.forEach((_layer) => {\r\n if ((_layer instanceof VectorLayer) && (_layer.getClassName() === `highlight-vectorlayer`)) {\r\n _isHaveHighlightVectorlayer = true;\r\n const _newVectorSource = new VectorSource({\r\n features: new GeoJSON().readFeatures(_geojsonObject),\r\n })\r\n _layer.setSource(_newVectorSource)\r\n }\r\n })\r\n console.log('_isHaveHighlightVectorlayer', _isHaveHighlightVectorlayer);\r\n if (!_isHaveHighlightVectorlayer) {\r\n listLayer.push(\r\n new VectorLayer({\r\n className: `highlight-vectorlayer`,\r\n source: new VectorSource({\r\n features: new GeoJSON().readFeatures(_geojsonObject),\r\n }),\r\n zIndex: 999,\r\n style: new Style({\r\n stroke: new Stroke({\r\n color: 'rgba(0,230,241,1)',\r\n width: 2,\r\n }),\r\n fill: new Fill({\r\n color: 'rgba(223,16, 188,0.5)',\r\n }),\r\n }),\r\n })\r\n )\r\n }\r\n }\r\n } else {\r\n this.functionClickShowPopUp(null);\r\n this.removeHiglightVectorLayer();\r\n this.removeHiglightVectorLayerChild();\r\n layerIndex++;\r\n if (layerIndex < listTitleLayerVisible.length) {\r\n getFeaturesWithTitleLayer(listTitleLayerVisible[layerIndex])\r\n } else {\r\n this.props.SaveInfomationList([]);\r\n }\r\n this.functionClickShowPopUpInClickedCord(null, null);\r\n }\r\n },\r\n });\r\n }\r\n }\r\n\r\n planningInfomationSmallPopupElement?.click();\r\n if (buttonTabMapinfomation && mapInfomationContainer) {\r\n if (buttonTabMapinfomation.classList.contains(\"collapsed\"))\r\n buttonTabMapinfomation.click();\r\n if (!mapInfomationContainer.getAttribute(\"open\"))\r\n mapInfomationContainer.setAttribute(\"open\", \"\");\r\n }\r\n listLayer.forEach((layer) => {\r\n if ((layer instanceof TileLayer) && (layer.getClassName() != 'ol-layer') && layer.getVisible()) {\r\n listTitleLayerVisible.push(layer);\r\n }\r\n if ((layer instanceof VectorImageLayer) && layer.getVisible()) listVectorImageLayerVisible.push(layer);\r\n if ((layer instanceof ImageLayer) && layer.getVisible()\r\n && layer.getClassName().includes(\"layer_boundaries\")) listImageLayerVisible.push(layer);\r\n })\r\n listTitleLayerVisible.reverse();\r\n listVectorImageLayerVisible.reverse();\r\n listTitleLayerVisible.sort((a, b) => b.getZIndex() - a.getZIndex());\r\n if (listTitleLayerVisible.length > 0) {\r\n getFeaturesWithTitleLayer(listTitleLayerVisible[layerIndex])\r\n } else {\r\n this.props.SaveInfomationList([]);\r\n }\r\n\r\n listImageLayerVisible.reverse();\r\n listVectorImageLayerVisible.reverse();\r\n listImageLayerVisible.sort((a, b) => b.getZIndex() - a.getZIndex());\r\n if (listImageLayerVisible.length > 0) {\r\n getFeaturesWithTitleLayer(listImageLayerVisible[layerIndex])\r\n } else {\r\n this.props.SaveInfomationList([]);\r\n }\r\n\r\n console.log(\"getLayer\", listLayer);\r\n console.log(\"getOverlays\", mapObject.getOverlays());\r\n \r\n };\r\n\r\n functionHightLightPolygon = (listPolygon: any) => {\r\n const mapObject: Map = this.state.map;\r\n const listLayer = mapObject.getLayers();\r\n let _isHaveHighlightVectorlayer = false;\r\n const feature: any[] = [];\r\n\r\n listPolygon.map((boundariesData: any) => {\r\n const format = new WKT();\r\n\r\n const featureObject = format.readFeature(boundariesData, {\r\n dataProjection: this.props.projection,\r\n featureProjection: this.props.projection,\r\n });\r\n console.log('fhkjghkjrl;akjdhfkjsdhfkjdsf', featureObject)\r\n feature.push(featureObject);\r\n });\r\n listLayer.forEach((_layer) => {\r\n if ((_layer instanceof VectorImageLayer) && (_layer.getClassName() === \"filter-vectorlayer\")) {\r\n _isHaveHighlightVectorlayer = true;\r\n const _newVectorSource = new VectorSource({\r\n features: feature,\r\n })\r\n _layer.setSource(_newVectorSource)\r\n }\r\n })\r\n if (!_isHaveHighlightVectorlayer) {\r\n listLayer.push(\r\n new VectorImageLayer({\r\n className: \"filter-vectorlayer\",\r\n source: new VectorSource({\r\n features: feature,\r\n }),\r\n zIndex: 9000,\r\n style: new Style({\r\n stroke: new Stroke({\r\n color: 'rgba(0,230,241,1)',\r\n width: 3,\r\n }),\r\n fill: new Fill({\r\n color: 'rgba(223,16, 188,0.5)',\r\n }),\r\n }),\r\n })\r\n )\r\n }\r\n\r\n }\r\n\r\n functionHandleDisplayGeneralPlanningMode = (OpenlayerMapObject: Map) => {\r\n const self = this;\r\n OpenlayerMapObject.on(\"pointermove\", function (e) {\r\n if (selected !== null) {\r\n selected.setStyle(undefined);\r\n selected = null;\r\n }\r\n\r\n OpenlayerMapObject.forEachFeatureAtPixel(e.pixel, function (f: any) {\r\n const highlightStyle = new Style({\r\n fill: new Fill({\r\n color: \"rgba(251,130,50,0.5)\",\r\n //color: \"rgba(251,28,28,1)\",\r\n }),\r\n stroke: new Stroke({\r\n color: \"rgba(251,28,28,1)\",\r\n width: 1,\r\n }),\r\n });\r\n selected = f;\r\n f.setStyle(highlightStyle);\r\n return true;\r\n });\r\n if (e.dragging) {\r\n (document.getElementById(\r\n \"tooltip-container-openlayer\"\r\n ) as HTMLElement).style.opacity = \"0\";\r\n } else {\r\n self.functionHoverHightlightAndShowTooltip(\r\n self.state.map.getEventPixel(e.originalEvent)\r\n );\r\n self.functionHoverHightlightAndShowPopUp(\r\n self.state.map.getEventPixel(e.originalEvent)\r\n );\r\n }\r\n });\r\n\r\n OpenlayerMapObject.on(\"singleclick\", function (e) {\r\n self.functionHandleClickLayerToDirectDetail(\r\n self.state.map.getEventPixel(e.originalEvent)\r\n );\r\n });\r\n };\r\n checkSearchFormHomePage() {\r\n if (this.props.coordinate && this.props.coordinate.search) {\r\n let lng = new URLSearchParams(this.props.coordinate.search).get(\"lat\");\r\n let lat = new URLSearchParams(this.props.coordinate.search).get(\"lng\");\r\n let searchType = new URLSearchParams(this.props.coordinate.search).get(\r\n \"searchType\"\r\n );\r\n console.log(searchType);\r\n if (searchType === \"place\") {\r\n this.state.map?.getView().setZoom(16.932305145395418);\r\n this.pinSearchMode([lat, lng]);\r\n this.functionClickViewInfomationListener({ coordinate: [lat, lng] });\r\n\r\n } else {\r\n let value = lat + \",\" + lng;\r\n console.log(value)\r\n this.handleSearchCoordinate(value);\r\n }\r\n }\r\n }\r\n\r\n setHeaderForTable() {\r\n this.props.listLayer?.map((layer) => {\r\n let tableArray = layer.table ? layer.table.split(\"_\") : [];\r\n if (tableArray.some(item => item.includes(\"sdd\"))) {\r\n this.props.SaveHeaderForTable(\r\n layer.display_name ? layer.display_name.cols : []\r\n );\r\n }\r\n });\r\n }\r\n\r\n openPrintWindow = () => {\r\n let dataHtml = '';\r\n this.props.listMapInfomations && this.props.listMapInfomations.length > 0 && this.props.listMapInfomations.map((item: any) => {\r\n dataHtml += `
    ${item.label}: ${item.value ? item.value : \"\"}
    `;\r\n })\r\n const self = this;\r\n let myWindow = window.open(\"\", \"PRINT\", \"height=500,width=1024\");\r\n let title = \"Bản đồ \" + document.title;\r\n myWindow?.document.write(\"\" + title + \"\");\r\n myWindow?.document.write(\"\");\r\n myWindow?.document.write(\r\n `\r\n
    ${self.props.planningModel && self.props.planningModel.name}
    \r\n \r\n
    \r\n

    Thông tin quy hoạch

    \r\n ${dataHtml}\r\n
    \r\n
    \r\n \r\n
    \r\n

    * Chú ý: Kết quả tra cứu chỉ có tính chất tham khảo\r\n

    \r\n
    \r\n
    `\r\n );\r\n myWindow?.document.write(\"\");\r\n\r\n myWindow?.document.close(); // necessary for IE >= 10\r\n myWindow?.focus(); // necessary for IE >= 10*/\r\n myWindow?.print();\r\n return true;\r\n }\r\n\r\n viewCurrentLocaltion = () => {\r\n navigator.geolocation.getCurrentPosition((position: any) => {\r\n if (position && position.coords) {\r\n this.pinSearchMode([\r\n position.coords.longitude,\r\n position.coords.latitude,\r\n ], \"current-location\");\r\n this.functionClickViewInfomationListener({\r\n coordinate: [\r\n position.coords.longitude,\r\n position.coords.latitude,\r\n ]\r\n })\r\n console.log({\r\n coordinate: [\r\n position.coords.longitude,\r\n position.coords.latitude,\r\n ]\r\n })\r\n // homePageStore.GetWgs84ToVn2000(\r\n // position.coords.longitude,\r\n // position.coords.latitude).then((res) => {\r\n // history.push(\r\n // `${UrlCollect.PlanningMapViewDetail}2?lng=${res[0]}&lat=${res[1]}&searchType=codinate`\r\n // )\r\n // })\r\n }\r\n });\r\n };\r\n\r\n changeInteraction() {\r\n if (!this.state.isLoadedAllVectorSource)\r\n if (select !== null) {\r\n this.state.map?.removeInteraction(select);\r\n }\r\n select = selectClick;\r\n if (select !== null) {\r\n this.state.map?.addInteraction(select);\r\n }\r\n }\r\n\r\n removeHiglightVectorLayer() {\r\n const _objectMap: Map = this.state.map;\r\n if (!_objectMap) return;\r\n const _layers = _objectMap.getLayers();\r\n let _indexDelete = -1;\r\n _layers.getArray().map((_layer, _index) => {\r\n if ((_layer instanceof VectorLayer) && (_layer.getClassName() === \"highlight-vectorlayer\")) {\r\n _indexDelete = _index;\r\n return;\r\n }\r\n })\r\n if (_indexDelete != -1) _layers.removeAt(_indexDelete)\r\n }\r\n\r\n removeHiglightVectorLayerChild() {\r\n const _objectMap: Map = this.state.map;\r\n if (!_objectMap) return;\r\n const _layers = _objectMap.getLayers();\r\n\r\n let _indexDelete = -1;\r\n _layers.getArray().map((_layer, _index) => {\r\n if ((_layer instanceof VectorLayer) && (_layer.getClassName() === \"highlight-vectorlayer-child\")) {\r\n _indexDelete = _index;\r\n return;\r\n }\r\n })\r\n if (_indexDelete != -1) _layers.removeAt(_indexDelete)\r\n }\r\n\r\n clearFeatures() {\r\n this.state.map?.getLayers().getArray().map((item: any) => {\r\n if (item instanceof VectorImageLayer) {\r\n console.log(\"layer\", item);\r\n }\r\n })\r\n }\r\n\r\n resetDrawnFilterDataAndRemoveInteraction = () => {\r\n const _mapObject: Map = this.state.map;\r\n if (DrawnFilterData.draw) _mapObject.removeInteraction(DrawnFilterData.draw);\r\n DrawnFilterData.draw = null;\r\n DrawnFilterData.source = null;\r\n DrawnFilterData.filterType = '';\r\n }\r\n\r\n createFilterDrawnVectorLayer = () => {\r\n const _mapObject: Map = this.state.map;\r\n const _layersCollect = _mapObject.getLayers();\r\n let _needCreateVectorLayer = true;\r\n let _drawnFilterLayer: any = null;\r\n const _newSource = new VectorSource();\r\n\r\n this.resetDrawnFilterDataAndRemoveInteraction();\r\n\r\n DrawnFilterData.source = _newSource;\r\n _layersCollect.forEach((_layer) => {\r\n if ((_layer instanceof VectorLayer) && (_layer.getClassName() === classNameVectorLayerFilterDrawn)) {\r\n _needCreateVectorLayer = false;\r\n _drawnFilterLayer = _layer;\r\n }\r\n })\r\n if (_needCreateVectorLayer) {\r\n const _vectorLayerDrawn = new VectorLayer({\r\n source: _newSource,\r\n className: classNameVectorLayerFilterDrawn,\r\n zIndex: 1000,\r\n style: Draw_Filter_Feature_Style,\r\n })\r\n _layersCollect.push(_vectorLayerDrawn);\r\n } else {\r\n _drawnFilterLayer.setSource(_newSource)\r\n }\r\n }\r\n\r\n deleteFilterDrawnVectorLayer = () => {\r\n const _mapObject: Map = this.state.map;\r\n const _layersCollect = _mapObject.getLayers();\r\n let _indexDelete = -1;\r\n\r\n this.resetDrawnFilterDataAndRemoveInteraction();\r\n\r\n _layersCollect.forEach((_layer, _index) => {\r\n if ((_layer instanceof VectorLayer) && (_layer.getClassName() === classNameVectorLayerFilterDrawn)) {\r\n _indexDelete = _index;\r\n }\r\n })\r\n if (_indexDelete !== -1) _layersCollect.removeAt(_indexDelete);\r\n }\r\n\r\n filterDrawnVectorLayer = (drawnType: string) => {\r\n const _mapObject: Map = this.state.map;\r\n let _drawnType: any = drawnType;\r\n let _geometryFunction = null;\r\n this.createFilterDrawnVectorLayer()\r\n switch (drawnType) {\r\n case GeometryType.POINT:\r\n case GeometryType.LINE_STRING:\r\n case GeometryType.POLYGON:\r\n case GeometryType.CIRCLE: {\r\n _drawnType = drawnType\r\n } break;\r\n case \"Box\": {\r\n _drawnType = GeometryType.CIRCLE;\r\n _geometryFunction = createBox();\r\n } break;\r\n }\r\n switch (drawnType) {\r\n case GeometryType.POINT: DrawnFilterData.filterType = 'Point'; break\r\n case GeometryType.LINE_STRING: DrawnFilterData.filterType = 'LineString'; break\r\n case GeometryType.POLYGON: DrawnFilterData.filterType = 'Polygon'; break\r\n case GeometryType.CIRCLE: DrawnFilterData.filterType = 'Circle'; break\r\n case \"Box\": DrawnFilterData.filterType = 'Box'; break\r\n }\r\n if (DrawnFilterData.source) {\r\n let _optionDraw: any = {\r\n source: DrawnFilterData.source,\r\n type: _drawnType,\r\n }\r\n if (_geometryFunction) {\r\n _optionDraw.geometryFunction = _geometryFunction;\r\n }\r\n DrawnFilterData.draw = new Draw(_optionDraw)\r\n DrawnFilterData.draw.on(\"drawstart\", (evt) => {\r\n DrawnFilterData.source?.clear()\r\n })\r\n if (drawnType === GeometryType.POINT) {\r\n DrawnFilterData.draw.on(\"drawend\", (evt) => {\r\n const _pointGeoMetry: any = evt.feature.getGeometry();\r\n document.getElementById('longitudeInput')?.setAttribute('value', _pointGeoMetry.flatCoordinates[0])\r\n document.getElementById('latitudeInput')?.setAttribute('value', _pointGeoMetry.flatCoordinates[1])\r\n })\r\n }\r\n _mapObject.addInteraction(DrawnFilterData.draw)\r\n }\r\n }\r\n\r\n getCurrentDrawFeature = () => {\r\n let _feature: Feature | null = null\r\n if (DrawnFilterData.source) {\r\n const _featureList = DrawnFilterData.source.getFeatures();\r\n if (_featureList.length > 0) _feature = _featureList[0];\r\n }\r\n const _format = new WKT();\r\n if (_feature) {\r\n let _featureGeometry: any = _feature.getGeometry();\r\n let _pointRadius: any = 0;\r\n let _geomText = '';\r\n if (DrawnFilterData.filterType === 'Circle') {\r\n const _mapObject: Map = this.state.map;\r\n const _centerCircle = _featureGeometry.getCenter();\r\n _geomText = `POINT(${_centerCircle[0]} ${_centerCircle[1]})`;\r\n _pointRadius = _mapObject.getView().getProjection().getMetersPerUnit() * _featureGeometry.getRadius();\r\n } else {\r\n if (DrawnFilterData.filterType === 'Point') {\r\n let _radiusInput = document.getElementById(\"radiusInput\")?.getAttribute(\"value\");\r\n if (typeof Number(_radiusInput) === 'number') {\r\n _pointRadius = Number(_radiusInput) || 0\r\n } else {\r\n ShowNotification(\r\n \"Dữ liệu bạn nhập vào không đúng định dạng\",\r\n NotificationMessageType.Warning,\r\n NotificationPosition.Center\r\n );\r\n _pointRadius = 0;\r\n }\r\n }\r\n _geomText = _format.writeGeometry(_featureGeometry);\r\n }\r\n return {\r\n coordinate: _geomText,\r\n r: _pointRadius,\r\n type: DrawnFilterData.filterType,\r\n }\r\n }\r\n return null\r\n }\r\n\r\n\r\n deleteHightlightFilterLayer = () => {\r\n const _mapObject: Map = this.state.map;\r\n const _layers = _mapObject.getLayers();\r\n // console.log(\"filter-vectorlayer\", _layers);\r\n let _removeIndex = -1;\r\n _layers.forEach((_layer, _index) => {\r\n if ((_layer instanceof VectorImageLayer) && _layer.getClassName() === 'filter-vectorlayer') {\r\n _removeIndex = _index;\r\n }\r\n if (_removeIndex !== -1) {\r\n _layers.removeAt(_removeIndex)\r\n }\r\n })\r\n\r\n }\r\n\r\n addLayerManually = (tableName: string, isAddedLayer: boolean, zIndex: number) => {\r\n const layerImage: any = new ImageLayer({\r\n visible: true,\r\n zIndex: zIndex,\r\n minZoom: 0,\r\n maxZoom: 20,\r\n source: new ImageWMS({\r\n url: config.DoMainNameGeoServerWMS,\r\n params: {\r\n LAYERS: `${config.DataStore}:${`${tableName}`}`,\r\n LayerId: 100,\r\n FORMAT: \"image/png\",\r\n VERSION: \"1.1.0\",\r\n },\r\n crossOrigin: 'anonymous'\r\n }),\r\n className: `added_manually_image_layer_${tableName}`,\r\n });\r\n this.state.map?.addLayer(layerImage);\r\n console.log(\"getLayers\", this.state.map, this.state.map?.getLayers());\r\n }\r\n\r\n componentDidMount() {\r\n const defaultBaseMapUrl =\r\n this.props.defaultBaseMapUrl ||\r\n \"https://mt0.google.com/vt/lyrs=y&hl=vi&x={x}&y={y}&z={z}\";\r\n const defaultCenter = this.props.defaultCenter || config.defaultMapCenter;\r\n const defaultZoom = this.props.defaultZoom || 9;\r\n const defaultMaxZoom = this.props.maxZoom || 24;\r\n const defaultMinZoom = this.props.minZoom || 1;\r\n const defaultListLayer = this.props.listLayer || [];\r\n // console.log(\"Checkkkkkkk\", defaultListLayer);\r\n\r\n let ListLayerDefault = 0;\r\n const _updateLoadLayerState = () => {\r\n ListLayerDefault--;\r\n if (ListLayerDefault === 0) {\r\n this.setState({\r\n isLoadedAllVectorSource: true,\r\n })\r\n this.removeHiglightVectorLayer();\r\n }\r\n }\r\n const defaultExtend = this.props.extent || [\r\n config.defaultLeftCornerLng,\r\n config.defaultLeftCornerLat,\r\n config.defaultRightCornerLng,\r\n config.defaultRightCornerLat,\r\n ];\r\n const DefaultLayers: Array<\r\n TileLayer | ImageLayer | VectorLayer | VectorImageLayer\r\n > = [\r\n new TileLayer({\r\n source: new XYZ({\r\n url: defaultBaseMapUrl,\r\n maxZoom: this.props.maxZoom,\r\n crossOrigin: \"anonymous\",\r\n }),\r\n }),\r\n ];\r\n this.setState({\r\n listLayerSettingModel: defaultListLayer,\r\n isLoadedAllVectorSource: !defaultListLayer.length,\r\n })\r\n ListLayerDefault = defaultListLayer.length;\r\n defaultListLayer.map((layerData, index) => {\r\n const layerImage: any = new TileLayer({\r\n visible: layerData.is_check,\r\n zIndex: layerData.z_index,\r\n minZoom: layerData.min_zoom,\r\n maxZoom: layerData.max_zoom,\r\n source: new TileWMS({\r\n url: layerData.wms,\r\n params: {\r\n //LAYERS: `qhdongtrieu:${layerData.table}`,\r\n LAYERS: `${config.DataStore}:${layerData.table}`,\r\n LayerId: layerData.id,\r\n FORMAT: \"image/png\",\r\n VERSION: \"1.1.0\",\r\n },\r\n crossOrigin: 'anonymous'\r\n }),\r\n className: TileLayerClassName(layerData.id),\r\n });\r\n // const vectorLayer = new VectorImageLayer({\r\n // source: new VectorSource(),\r\n // opacity: 0.5,\r\n // style: Default_Feature_Style,\r\n // zIndex: layerData.z_index,\r\n // visible: layerData.is_check,\r\n // className: VectorImageLayerClassName(layerData.id)\r\n // });\r\n // fetch(`${config.DoMainNameGeoServer}?service=WFS&version=1.1.0&request=GetFeature&outputFormat=application/json&typename=${layerData.table}`).then(res => res.json().then((data) => {\r\n // _updateLoadLayerState();\r\n // vectorLayer.setSource(new VectorSource({\r\n // features: new GeoJSON().readFeatures(data),\r\n // }))\r\n // }).catch((error) => {\r\n // _updateLoadLayerState();\r\n // })).catch((error) => {\r\n // _updateLoadLayerState();\r\n // })\r\n DefaultLayers.push(layerImage);\r\n // DefaultLayers.push(vectorLayer);\r\n if (index === 0) {\r\n this.setState({\r\n currentLayer: layerImage,\r\n currentLayerSettingModel: layerData,\r\n primaryIdLayer: layerData.id\r\n });\r\n }\r\n });\r\n this.setHeightViewport();\r\n const IdIntervalSettingMap = setInterval(() => {\r\n if (this.state.mapContainerStyle) {\r\n var mousePositionControl = new MousePosition({\r\n coordinateFormat: createStringXY(4),\r\n projection: \"EPSG:4326\",\r\n className: \"custom-mouse-position\",\r\n target: document.getElementById(\"mouse-position\") as HTMLElement,\r\n undefinedHTML: \" \",\r\n });\r\n var mapScale = new ScaleLine({\r\n className: \"custom-map-scale\",\r\n target: document.getElementById(\"map-scale\") as HTMLElement,\r\n units: \"metric\",\r\n bar: true,\r\n steps: parseInt(\"4\", 10),\r\n text: true,\r\n minWidth: 140,\r\n });\r\n var OpenlayerMapObject = new Map({\r\n controls: this.props.isTabletOrMobile ? defaultControls().extend([mousePositionControl]) : defaultControls().extend([mousePositionControl, mapScale]), \r\n target: \"map-container-id\",\r\n layers: DefaultLayers,\r\n view: new View({\r\n projection: this.props.projection,\r\n center: defaultCenter,\r\n zoom: defaultZoom,\r\n minZoom: defaultMinZoom,\r\n maxZoom: defaultMaxZoom,\r\n extent: defaultExtend,\r\n }),\r\n });\r\n\r\n OpenlayerMapObject.addOverlay(\r\n new Overlay({\r\n position: [0, 0],\r\n element: document.getElementById(\"null\") as HTMLLinkElement,\r\n })\r\n );\r\n\r\n this.props.SaveMapBase(OpenlayerMapObject);\r\n\r\n if (this.props.isGeneralPlanning) {\r\n this.functionHandleDisplayGeneralPlanningMode(OpenlayerMapObject);\r\n }\r\n\r\n OpenlayerMapObject.on('moveend', () => {\r\n var newZoom = OpenlayerMapObject.getView().getZoom();\r\n this.setState({\r\n currentZoom: newZoom\r\n })\r\n })\r\n\r\n this.setState(\r\n {\r\n map: OpenlayerMapObject,\r\n },\r\n () => {\r\n //giờ tổng hợp quy hoạch cũng có view detail on click \r\n // -> comment cái if \r\n // -> check trong hàm handleOnOffViewInfomation this.props.isGeneralPlanning => mở tab map có id tương ứng\r\n // if (!this.props.isGeneralPlanning)\r\n this.handleOnOffViewInfomation(true);\r\n if (this.props.isGeneralPlanning) {\r\n this.addShowPopUpInClickedCord();\r\n }\r\n }\r\n );\r\n this.props.setIsDoneConstructMap && this.props.setIsDoneConstructMap(true);\r\n\r\n clearInterval(IdIntervalSettingMap);\r\n this.checkSearchFormHomePage();\r\n }\r\n }, 500);\r\n //-- update handle function\r\n this.props.CreateOpenlayerController({\r\n toggleDisplayLayerRelated: this.toggleDisplayLayerRelated,\r\n handleOnOffViewInfomation: this.handleOnOffViewInfomation,\r\n toggleDisplayVectorLayer: this.toggleDisplayVectorLayer,\r\n handleDisplayFullScreenViewMode: this.handleDisplayFullScreenViewMode,\r\n handlePinMarkerMode: this.handlePinMarkerMode,\r\n handleMeasureMode: this.handleMeasureMode,\r\n handleExportMap: this.handleExportMap,\r\n handleZoomOut: this.handleZoomOut,\r\n handleZoomIn: this.handleZoomIn,\r\n toggleDisplayLayer: this.toggleDisplayLayer,\r\n resetLayerOpacity: this.resetLayerOpacity,\r\n changeCurrentLayer: this.changeCurrentLayer,\r\n changeCurrentLayerOpacity: this.changeCurrentLayerOpacity,\r\n changeBaseMap: this.changeBaseMap,\r\n handleSelectedOne: this.handleSelectOne,\r\n handleSelectMany: this.handleSelectMany,\r\n handleSearchCoordinate: this.handleSearchCoordinate,\r\n handleSearchCoordinateMapDetail: this.handleSearchCoordinateMapDetail,\r\n placeSearch: this.pinSearchMode,\r\n functionDisplayAllBoundariesOfAllPlanning: this.functionDisplayAllBoundariesOfAllPlanning,\r\n handleViewCurrentLocaltion: this.viewCurrentLocaltion,\r\n removeInteractionOnMap: this.removeInteractionOnMap,\r\n functionTurnOffFilterMode: this.functionTurnOffFilterMode,\r\n clearFeaturesSelected: this.clearFeaturesSelected,\r\n functionClickViewInfomationListener: this.functionClickViewInfomationListener,\r\n functionHightLightPolygon: this.functionHightLightPolygon,\r\n filterDrawnVectorLayer: this.filterDrawnVectorLayer,\r\n deleteFilterDrawnVectorLayer: this.deleteFilterDrawnVectorLayer,\r\n getCurrentDrawFeature: this.getCurrentDrawFeature,\r\n addLayerManually: this.addLayerManually,\r\n });\r\n\r\n }\r\n\r\n componentDidUpdate(prevProps: any, prevState: any) {\r\n if (this.state.currentZoom !== prevState.currentZoom) {\r\n // console.log(\"current zoom\", this.state.currentZoom, prevState.currentZoom);\r\n\r\n this.functionClickShowPopUpInClickedCord(null, null);\r\n }\r\n\r\n if (this.state.prevFeatureId !== prevState.prevFeatureId) {\r\n // console.log(\"Feature id của Cha\", this.state.prevFeatureId, \" \", prevState.prevFeatureId);\r\n }\r\n\r\n if (this.state.prevFeatureChildId !== prevState.prevFeatureChildId) {\r\n console.log(\"Feature id của con\", prevState.prevFeatureChildId, this.state.prevFeatureChildId);\r\n }\r\n }\r\n\r\n\r\n render() {\r\n return (\r\n \r\n
    \r\n \r\n Launch demo modal\r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n {\" \"}\r\n In bản đồ\r\n \r\n
    \r\n Bản đồ {this.props.planningModel ? this.props.planningModel.name : document.title}\r\n
    \r\n
    \r\n this.setState({ modals: false })}\r\n >\r\n ×\r\n \r\n
    \r\n \r\n
    {this.props.planningModel && this.props.planningModel.name}
    \r\n \r\n
    \r\n

    Thông tin quy hoạch

    \r\n {this.props.listMapInfomations && this.props.listMapInfomations.length > 0 && this.props.listMapInfomations.map((item: any, index: number) =>\r\n

    {item.label}: {item.value}

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

    * Chú ý: Kết quả tra cứu chỉ có tính chất tham khảo\r\n

    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {\r\n this.props.isGeneralPlanning && \r\n }\r\n \r\n );\r\n }\r\n}\r\nconst mapStateToProps = (state: any) => ({\r\n dataFilter: state.mapData.dataFilter,\r\n featuresSelected: state.openlayer.featuresSelected,\r\n listMapInfomations: state.mapData.infomations,\r\n listPolygon: state.mapData.listPolygon,\r\n listChildInfomations: state.mapData.childInfomations,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: any) =>\r\n bindActionCreators(\r\n {\r\n CreateOpenlayerController: OpenlayerStore.CreateOpenlayerController,\r\n SaveOpenlayerFeaturesSelected: OpenlayerStore.SaveOpenlayerFeaturesSelected,\r\n SaveInfomationList: MapDataStore.SaveInfomationList,\r\n SaveChildInfomationList: MapDataStore.SaveChildInfomationList,\r\n SaveInfomationForTable: MapDataStore.SaveInformationForTable,\r\n SaveHeaderForTable: MapDataStore.SaveHeaderForTable,\r\n SaveMapBase: MapDataStore.SaveMapBase,\r\n SetDisplayInfomationPopup: MapToolsPanelsStore.SetDisplayInfomationPopup,\r\n ShowLoading: LoadingAction.ShowLoading,\r\n HiddenLoading: LoadingAction.HiddenLoading,\r\n },\r\n dispatch\r\n );\r\n\r\nexport default geolocated({\r\n positionOptions: {\r\n enableHighAccuracy: false,\r\n },\r\n userDecisionTimeout: 5000,\r\n})(connect(mapStateToProps, mapDispatchToProps)(OpenlayersMapView));\r\n","import React, { Fragment, lazy, Suspense } from \"react\";\r\nimport \"./planning-map-with-hooks.scss\";\r\nimport ViLanguages from \"../../languages/vi\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faTimes } from \"@fortawesome/free-solid-svg-icons\";\r\nimport SelectCurrentLayerView from \"../planning-map-view/select-current-layer/select-current-layer.view\";\r\nimport OpenlayersMapView from \"../openlayers-map/openlayers-map.view\";\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport * as MapDataStore from \"../../redux/store/map-data/map-data.store\";\r\nimport { SetDisplayMaptoolPanel, SetDisplayInfomationPopup } from \"redux/store/open-layer/map-tools-panels.store\";\r\nimport * as MapToolDataStore from \"../../redux/store/map-tool/map-tool.store\";\r\nimport PlanningMapViewModel from \"../../models/planning-map-view/planning-map-view.model\";\r\nimport {\r\n ExtractSelectedBasemap,\r\n ExtractCenterArray,\r\n ExtractExtentArray,\r\n ExtractListLayerArray,\r\n ExtracLayerListGroup,\r\n ExtractBasemapList,\r\n} from \"../../common/extract-information-from-map-data\";\r\nimport { Link } from \"react-router-dom\";\r\nimport UrlCollect from \"common/url-collect\";\r\nimport { ToggleBottomProvider } from \"./mobile/context/toggle-bottom-panel/ToggleBottomPanelContext\";\r\nimport { TopRightPanelProvider } from \"./mobile/context/top-right-panel/TopRightPanelContext\";\r\nimport { AddContentBottomPanelProvider } from \"./mobile/context/content-bottom-panel/ContentBottomPanel\";\r\nimport { IsHideFilterBoxProvider } from \"./mobile/context/is-hide-filter-box/IsHideFilterBox\";\r\n\r\nconst LanguageCollects = ViLanguages;\r\n\r\n//Desktop\r\nconst RenderFilterInfomationPopup = lazy(() => import(\"../planning-map-view/filter-infomation/filter-infomation.view.jsx\"));\r\nconst MapToolsPanel = lazy(() => import(\"../planning-map-view/map-tools-panel/map-tools-panel.view.jsx\"));\r\nconst TopRightPanelView = lazy(() => import(\"../planning-map-view/top-right-panel/top-right-panel.view\"));\r\nconst LeftMenuView = lazy(() => import(\"../planning-map-view/left-menu/left-menu.view\"));\r\nconst GuideUseMap = lazy(() => import(\"../planning-map-view/guide-use-map/guide-use-map.view\"));\r\nconst Preview = lazy(() => import(\"../planning-map-view/left-menu/preview/preview\"));\r\n\r\n// Mobile\r\nconst TopRightPanelMobile = lazy(()=> import(\"./mobile/top-right-panel-mobile/top-right-panel-mobile\"));\r\nconst BottomToggleMobile = lazy(()=> import(\"./mobile/bottom-toggle/bottom-toggle\"));\r\nconst BottomPanelMobile = lazy(()=> import(\"./mobile/bottom-panel-mobile/bottom-panel-mobile\"));\r\nconst RenderFilterInfomationPopupMobile = lazy(()=> import(\"./mobile/filter-infomation/filter-infomation.view.jsx\"));\r\nconst GuideUseModalMobile = lazy(()=> import(\"./mobile/guide-use-modal/guide-use-modal\"));\r\n\r\nclass PlanningMapViewWithHooks extends React.Component<\r\n PlanningMapViewModel.PlanningMapViewProps,\r\n PlanningMapViewModel.PlanningMapViewState\r\n> {\r\n constructor(props: PlanningMapViewModel.PlanningMapViewProps) {\r\n super(props);\r\n this.state = {\r\n mapPlanning: null,\r\n isLeftNavbarHide: true,\r\n modalHeightStyle: 0,\r\n isShowMapToolsPanel: false,\r\n isShowFilterInfomationPopup: false,\r\n displaySearchLocationBar: false,\r\n planningModel: null,\r\n coordinate: \"\",\r\n isDoneConstructMap: false,\r\n };\r\n this.openFilterInfomationPopup = this.openFilterInfomationPopup.bind(this);\r\n this.closeFilterInfomationPopup =\r\n this.closeFilterInfomationPopup.bind(this);\r\n }\r\n\r\n setIsDoneConstructMap(data: boolean) {\r\n this.setState ({\r\n isDoneConstructMap: data\r\n })\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({\r\n modalHeightStyle: window.innerHeight - 100,\r\n });\r\n this.props.GetMapDetail(this.props.match.params.id);\r\n this.props.SetDisplayMaptoolPanel(false);\r\n this.props.SetDisplayInfomationPopup(false);\r\n }\r\n\r\n handleClickIconLeftNavbar(id: number) {\r\n this.handleClickToggleLeftNavBar();\r\n const buttonElement = document.querySelector(\r\n `button[aria-controls=\"${id}\"]`\r\n ) as HTMLElement;\r\n if (buttonElement && buttonElement.classList.contains(\"collapsed\"))\r\n buttonElement.click();\r\n }\r\n\r\n handleClickToggleLeftNavBar() {\r\n this.setState({\r\n isLeftNavbarHide: !this.state.isLeftNavbarHide,\r\n });\r\n if (!this.state.isLeftNavbarHide) {\r\n document\r\n .getElementsByClassName(\"left-custom-navbar\")[0]\r\n .classList.add(\"hide-left-navbar\");\r\n } else\r\n document\r\n .getElementsByClassName(\"left-custom-navbar\")[0]\r\n .classList.remove(\"hide-left-navbar\");\r\n }\r\n\r\n openFilterInfomationPopup() {\r\n this.setState({\r\n isShowFilterInfomationPopup: true,\r\n });\r\n }\r\n\r\n closeFilterInfomationPopup() {\r\n this.setState({\r\n isShowFilterInfomationPopup: false,\r\n });\r\n }\r\n\r\n manualCloseMaptoolsFilterInfomationPopup = () => {\r\n this.setState({ isShowFilterInfomationPopup: false });\r\n };\r\n setPlanningMap = (_planningModel: any) => {\r\n this.setState({ planningModel: _planningModel });\r\n };\r\n\r\n componentDidUpdate(prevProps: Readonly, prevState: Readonly, snapshot?: any): void {\r\n if( this.props.mapData != prevProps.mapData) {\r\n this.props.SetDataToggleLayer(ExtracLayerListGroup(this.props.mapData));\r\n }\r\n\r\n if( this.state.isDoneConstructMap != prevState.isDoneConstructMap) {\r\n this.setState({isLeftNavbarHide: false});\r\n }\r\n }\r\n\r\n componentWillUnmount () {\r\n this.props.SetDisplayMaptoolPanel(false);\r\n this.props.SetDisplayInfomationPopup(false);\r\n }\r\n\r\n render() {\r\n const isLeftNavbarHide = this.state.isLeftNavbarHide;\r\n // const isShowMapToolsPanel = this.state.isShowMapToolsPanel;\r\n return (\r\n \r\n \r\n \r\n \r\n
    \r\n\r\n {\r\n this.props.isDesktopOrLaptop &&\r\n <>\r\n Page is Loading, please wait...
    }>\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n\r\n {\r\n this.props.hasLoadedMapData && this.props.mapData.name &&\r\n \r\n }\r\n\r\n {this.props.hasLoadedMapData && this.props.mapData.name && (\r\n \r\n this.setState({\r\n isLeftNavbarHide: !this.state.isLeftNavbarHide,\r\n })\r\n }\r\n isDoneConstructMap = {this.state.isDoneConstructMap}\r\n />\r\n )}\r\n\r\n \r\n \r\n \r\n \r\n }\r\n\r\n {\r\n this.props.isTabletOrMobile &&\r\n <>\r\n Page is Loading, please wait...}>\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n }\r\n\r\n {this.props.hasLoadedMapData && this.props.mapData.name && (\r\n
    \r\n this.setIsDoneConstructMap(data)}\r\n />\r\n
    \r\n )}\r\n\r\n {this.props.hasLoadedMapData && !this.props.mapData.name && (\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n Dữ liệu không có sẵn để hiển thị\r\n
    \r\n \r\n document\r\n .getElementById(\"modalNotHaveDataToDisplay\")\r\n ?.classList.remove(\"d-block\")\r\n }\r\n >\r\n ×\r\n \r\n
    \r\n
    \r\n Lỗi: Bản đồ của dự án chưa được khởi tạo, vui lòng liên hệ với\r\n Admin\r\n
    \r\n
    \r\n \r\n document\r\n .getElementById(\"modalNotHaveDataToDisplay\")\r\n ?.classList.remove(\"d-block\")\r\n }\r\n >\r\n Đóng\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n )}\r\n {\r\n this.props.isIdNotExist && \r\n
    \r\n
    \r\n
    \r\n
    \r\n Dữ liệu không có sẵn để hiển thị\r\n
    \r\n {\r\n const invisLink = document.getElementById(\"invisbile-link-to-SyntheticPlanning\");\r\n invisLink?.click();\r\n }}\r\n >\r\n ×\r\n \r\n
    \r\n
    \r\n Lỗi: Đồ án không tồn tại, vui lòng liên hệ với Admin\r\n
    \r\n
    \r\n {\r\n const invisLink = document.getElementById(\"invisbile-link-to-SyntheticPlanning\");\r\n invisLink?.click();\r\n }}\r\n >\r\n Trở về tổng hợp quy hoạch\r\n \r\n
    \r\n
    \r\n
    \r\n \r\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: any) => ({\r\n hasLoadedMapData: state.mapData.hasLoadingData,\r\n isIdNotExist: state.mapData.isIdNotExist,\r\n mapData: state.mapData.mapData,\r\n planningRelationShips: state.mapData.planningRelationShips,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: any) =>\r\n bindActionCreators(\r\n {\r\n GetMapDetail: MapDataStore.GetMapDetailByPlanningId,\r\n SetDataToggleLayer: MapToolDataStore.SetDataToggleLayer,\r\n SetDisplayMaptoolPanel: SetDisplayMaptoolPanel,\r\n SetDisplayInfomationPopup: SetDisplayInfomationPopup,\r\n },\r\n dispatch\r\n );\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(PlanningMapViewWithHooks);\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport React from \"react\";\r\nimport { useMediaQuery } from 'react-responsive';\r\nimport PlanningMapViewWithHooks from './planning-map-with-hooks.view';\r\n\r\nfunction PlanningMapRoute(props) {\r\n const isDesktopOrLaptop = useMediaQuery({query: '(min-width: 1024px)'});\r\n const isTabletOrMobile = useMediaQuery({ query: '(max-width: 1024px)'});\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport default PlanningMapRoute;\r\n","import axios from 'axios';\r\nimport * as apiConfig from './api-config';\r\nimport * as configuration from '../utils/configuration';\r\nimport * as Page500ErrorTypes from '../common/error-types-500';\r\n\r\nconfiguration.setConfiguration(\r\n configuration.ApiServerKey.APP_API_ROOT,\r\n apiConfig.apiCustom\r\n);\r\nconst apiRoot = configuration.getConfiguration(\r\n configuration.ApiServerKey.APP_API_ROOT\r\n);\r\n\r\nconst isHandlerEnabled = true;\r\n\r\nconst requestHandler = (request) => {\r\n if (isHandlerEnabled) {\r\n // request.headers.common[\"Accept\"] = \"application/json\";\r\n request.headers.common['Content-Type'] = 'application/json; charset=utf-8';\r\n request.headers.common['Accept'] =\r\n 'application/json, text/javascript, */*; q=0.01';\r\n request.headers.common['Access-Control-Allow-Origin'] = '*';\r\n }\r\n\r\n let userInfo = configuration.getCookies(configuration.TokenKey.token);\r\n \r\n const a =\r\n 'eyJhbGciOiJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNobWFjLXNoYTI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIzYjc4ZjVhOC01NmQyLTRmY2YtOGJhNy04OGZlM2JiMWI0ZDIiLCJ1c2VyTmFtZSI6InNvbmxhLmNnaXNAZ21haWwuY29tIiwiZnVsbE5hbWUiOiJDR0lTIFPGoW4gTGEiLCJlbWFpbCI6InNvbmxhLmNnaXNAZ21haWwuY29tIiwidXNlclJvbGVzIjoiQWRtaW4iLCJhdmF0YXIiOiIiLCJleHBpcmVUaW1lIjoiMTIvMTIvMjAyMiAxMDoyMzo1NSBBTSIsInRlbGVwaG9uZU51bWJlciI6IjAyNzAzODIyMTQ1IiwiYWRkcmVzcyI6IlPGoW4gTGEiLCJleHAiOjE2NzA4NDA2MzV9.x7HnnchLrEsX446Fz8j0P5FVRb6UlIh-sFOFQELnsT8';\r\n if (userInfo) {\r\n request.headers.common[\r\n 'Authorization'\r\n ] = `${configuration.TokenPrefix} ${userInfo}`;\r\n }\r\n\r\n return request;\r\n};\r\n\r\nconst successHandler = (response, isHandlerEnabled) => {\r\n if (isHandlerEnabled) {\r\n //TODO: Do Success Handler\r\n }\r\n\r\n return response;\r\n};\r\n\r\nconst errorHandler = async (error, isHandlerEnabled) => {\r\n if (isHandlerEnabled) {\r\n //TODO: Do Error Handler\r\n }\r\n\r\n if (\r\n error.request.responseType === 'blob' &&\r\n error.response.data instanceof Blob &&\r\n error.response.data.type &&\r\n error.response.data.type.toLowerCase().indexOf('json') != -1\r\n ) {\r\n return new Promise((resolve, reject) => {\r\n let reader = new FileReader();\r\n reader.onload = () => {\r\n error.response.data = JSON.parse(reader.result);\r\n resolve(Promise.reject(error.response.data));\r\n };\r\n\r\n reader.onerror = () => {\r\n reject(error);\r\n };\r\n reader.readAsText(error.response.data);\r\n });\r\n }\r\n\r\n return Promise.reject({\r\n ...(error.response\r\n ? error.response.data\r\n : {\r\n errorType: Page500ErrorTypes.UnhandleException,\r\n errorMessage: 'UnhandleException',\r\n }),\r\n });\r\n};\r\n\r\nexport default class Service {\r\n constructor(namespace) {\r\n this.namespace = namespace;\r\n this.axios = axios.create({\r\n baseURL: apiRoot,\r\n responseType: 'json',\r\n });\r\n\r\n //Enable request interceptor\r\n this.axios.interceptors.request.use(\r\n (request) => requestHandler(request, isHandlerEnabled),\r\n (error) => errorHandler(error, isHandlerEnabled)\r\n );\r\n\r\n //Response and Error handler\r\n this.axios.interceptors.response.use(\r\n (response) => successHandler(response, isHandlerEnabled),\r\n (error) => errorHandler(error, isHandlerEnabled)\r\n );\r\n }\r\n\r\n /**\r\n * Get Http Request\r\n * @param {any} action\r\n */\r\n get(action, params) {\r\n return new Promise((resolve, reject) => {\r\n this.axios\r\n .request(params ? action + '?' + params : action, {\r\n method: 'GET',\r\n })\r\n .then((response) => {\r\n if (response.data) {\r\n resolve(response.data);\r\n } else {\r\n reject(response);\r\n }\r\n })\r\n .catch((error) => {\r\n if (\r\n error.response &&\r\n error.response.data &&\r\n error.response.data.error\r\n ) {\r\n console.error('REST request error!', error.response.data.error);\r\n reject(error.response.data.error);\r\n } else reject(error);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Get Http Request\r\n * @param {any} action\r\n */\r\n getBinary(action, params) {\r\n return new Promise((resolve, reject) => {\r\n this.axios\r\n .request(params ? action + '?' + params : action, {\r\n method: 'GET',\r\n responseType: 'blob',\r\n })\r\n .then((response) => {\r\n if (response.data) {\r\n resolve(response.data);\r\n } else {\r\n reject(response);\r\n }\r\n })\r\n .catch((error) => {\r\n if (\r\n error.response &&\r\n error.response.data &&\r\n error.response.data.error\r\n ) {\r\n console.error('REST request error!', error.response.data.error);\r\n reject(error.response.data.error);\r\n } else reject(error);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Post Http Request\r\n * @param {any} action\r\n * @param {any} params\r\n */\r\n post(action, params, config = {}) {\r\n return new Promise((resolve, reject) => {\r\n this.axios\r\n .post(action, params, config)\r\n .then((response) => {\r\n if (response.data) {\r\n resolve(response.data);\r\n } else {\r\n reject(response);\r\n }\r\n })\r\n .catch((error) => {\r\n if (\r\n error.response &&\r\n error.response.data &&\r\n error.response.data.error\r\n ) {\r\n console.error('REST request error!', error.response.data.error);\r\n reject(error.response.data.error);\r\n } else reject(error);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Put Http Request\r\n * @param {any} action\r\n * @param {any} params\r\n */\r\n put(action, params, config = {}) {\r\n return new Promise((resolve, reject) => {\r\n this.axios\r\n .put(action, params, config)\r\n .then((response) => {\r\n if (response.data) {\r\n resolve(response.data);\r\n } else {\r\n reject(response);\r\n }\r\n })\r\n .catch((error) => {\r\n if (\r\n error.response &&\r\n error.response.data &&\r\n error.response.data.error\r\n ) {\r\n console.error('REST request error!', error.response.data.error);\r\n reject(error.response.data.error);\r\n } else reject(error);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Post Http Request\r\n * @param {any} action\r\n * @param {any} params\r\n */\r\n postParams(action, params, body) {\r\n return new Promise((resolve, reject) => {\r\n this.axios\r\n .request(action + '?' + params, {\r\n method: 'POST',\r\n data: body,\r\n })\r\n .then((response) => {\r\n if (response.data) {\r\n resolve(response.data);\r\n } else {\r\n reject(response);\r\n }\r\n })\r\n .catch((error) => {\r\n if (\r\n error.response &&\r\n error.response.data &&\r\n error.response.data.error\r\n ) {\r\n console.error('REST request error!', error.response.data.error);\r\n reject(error.response.data.error);\r\n } else reject(error);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Delete Http Request\r\n * @param {any} action\r\n * @param {any} params\r\n */\r\n delete(action, params) {\r\n return new Promise((resolve, reject) => {\r\n this.axios\r\n .request(action + '?' + params, {\r\n method: 'DELETE',\r\n })\r\n .then((response) => {\r\n if (response.data) {\r\n resolve(response.data);\r\n } else {\r\n reject(response);\r\n }\r\n })\r\n .catch((error) => {\r\n if (\r\n error.response &&\r\n error.response.data &&\r\n error.response.data.error\r\n ) {\r\n console.error('REST request error!', error.response.data.error);\r\n reject(error.response.data.error);\r\n } else reject(error);\r\n });\r\n });\r\n }\r\n}\r\n","import Service from '../../../api/api-service-custom';\r\nimport { ApiUrl } from '../../../api/api-url';\r\n\r\nconst service = new Service();\r\n\r\nexport const Categories = (data) => {\r\n return service\r\n .get(ApiUrl.GetLookupCategories, data)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const CategoryDetail = (data) => {\r\n return service\r\n .get(ApiUrl.GetDetailCategories, data)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const ReflectByCategories = (data) => {\r\n return service\r\n .get(ApiUrl.GetReflectByCategories, data)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const Reflects = (data) => {\r\n return service\r\n .get(ApiUrl.GetReflectByCategories, data)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const ReflectDetail = (data) => {\r\n return service\r\n .get(ApiUrl.GetReflectDetail, data)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const DeleteReflect = (data) => {\r\n return service\r\n .put(`${ApiUrl.DeleteReflect}?id=${data?.id}`)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n","import Service from \"../../../api/api-service-custom\";\r\nimport { ApiUrl } from \"../../../api/api-url\";\r\n\r\nconst service = new Service();\r\n\r\nexport const GetAllComment = (paramObj = {}) => {\r\n const params = new URLSearchParams();\r\n if (typeof paramObj === 'object') {\r\n for (let key in paramObj) {\r\n params.append(key, paramObj[key])\r\n }\r\n }\r\n return service\r\n .get(ApiUrl.GetAllComment, params)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const CreateComment = (body = {}) => {\r\n const formData = new FormData();\r\n if (typeof body === 'object') {\r\n let fileIndex = 0;\r\n for (let key in body) {\r\n if (Array.isArray(body[key])) {\r\n const arr = body[key]?.filter((item) => item !== undefined);\r\n if (key === 'files') {\r\n for (let i = 0; i < arr.length; i++) {\r\n if (!arr[i].fileId) {\r\n formData.append(`fileInfos[${fileIndex}].Action`, 'insert');\r\n formData.append(`fileInfos[${fileIndex}].File`, arr[i]);\r\n fileIndex++;\r\n }\r\n }\r\n } else if (key === 'deletedFiles') {\r\n for (let i = 0; i < arr.length; i++) {\r\n formData.append(`fileInfos[${fileIndex}].Action`, 'delete');\r\n formData.append(`fileInfos[${fileIndex}].Id`, arr[i].fileId);\r\n formData.append(`fileInfos[${fileIndex}].url`, arr[i].filePath);\r\n fileIndex++;\r\n }\r\n } else {\r\n for (let element of arr) {\r\n formData.append(key, element);\r\n }\r\n }\r\n } else {\r\n formData.append(key, body[key]);\r\n }\r\n }\r\n }\r\n return service\r\n .post(ApiUrl.CreateComment, formData, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n })\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const UpdateComment = (body = {}) => {\r\n const formData = new FormData();\r\n if (typeof body === 'object') {\r\n for (let key in body) {\r\n formData.append(key, body[key])\r\n }\r\n }\r\n return service\r\n .put(ApiUrl.UpdateComment, formData, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n })\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const DeleteComment = (id = '') => {\r\n return service\r\n .put(ApiUrl.DeleteComment+ '?id=' + id)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n","import Service from '../../../api/api-service-custom';\r\nimport { ApiUrl } from '../../../api/api-url';\r\n\r\nconst service = new Service();\r\n\r\nexport const GetReflectListHomePage = (data = '') => {\r\n return service\r\n .get(ApiUrl.GetReflectListHomePage, data)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const GetSimilarReflect = (data = '') => {\r\n return service\r\n .get(ApiUrl.GetSimilarReflect, data)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const GetMyListReflect = (body = {}) => {\r\n const params = new URLSearchParams();\r\n if (typeof body === 'object') {\r\n for (let key in body) {\r\n if (body[key]) {\r\n params.append(key, body[key])\r\n }\r\n }\r\n }\r\n return service\r\n .get(ApiUrl.GetMyListReflect, params)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const CreateReflect = (body = {}) => {\r\n const formData = new FormData();\r\n if (typeof body === 'object') {\r\n let fileIndex = 0;\r\n for (let key in body) {\r\n if (Array.isArray(body[key])) {\r\n const arr = body[key]?.filter((item) => item !== undefined);\r\n if (key === 'files') {\r\n for (let i = 0; i < arr.length; i++) {\r\n if (!arr[i].fileId) {\r\n formData.append(`fileInfos[${fileIndex}].Action`, 'insert');\r\n formData.append(`fileInfos[${fileIndex}].File`, arr[i]);\r\n fileIndex++;\r\n }\r\n }\r\n } else if (key === 'deletedFiles') {\r\n for (let i = 0; i < arr.length; i++) {\r\n formData.append(`fileInfos[${fileIndex}].Action`, 'delete');\r\n formData.append(`fileInfos[${fileIndex}].Id`, arr[i].fileId);\r\n formData.append(`fileInfos[${fileIndex}].url`, arr[i].filePath);\r\n fileIndex++;\r\n }\r\n } else {\r\n for (let element of arr) {\r\n formData.append(key, element);\r\n }\r\n }\r\n } else {\r\n formData.append(key, body[key]);\r\n }\r\n }\r\n }\r\n formData.append('SourceOfReflectionId', '2');\r\n return service\r\n .post(ApiUrl.CreateReflect, formData, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n },\r\n })\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const UpdateReflect = (body = {}) => {\r\n const formData = new FormData();\r\n if (typeof body === 'object') {\r\n let fileIndex = 0;\r\n for (let key in body) {\r\n if (Array.isArray(body[key])) {\r\n const arr = body[key]?.filter((item) => item !== undefined);\r\n if (key === 'files') {\r\n for (let i = 0; i < arr.length; i++) {\r\n if (!arr[i].fileId) {\r\n formData.append(`fileInfos[${fileIndex}].Action`, 'insert');\r\n formData.append(`fileInfos[${fileIndex}].File`, arr[i]);\r\n fileIndex++;\r\n }\r\n }\r\n } else if (key === 'deletedFiles') {\r\n for (let i = 0; i < arr.length; i++) {\r\n formData.append(`fileInfos[${fileIndex}].Action`, 'delete');\r\n formData.append(`fileInfos[${fileIndex}].Id`, arr[i].fileId);\r\n formData.append(`fileInfos[${fileIndex}].url`, arr[i].filePath);\r\n fileIndex++;\r\n }\r\n } else {\r\n for (let element of arr) {\r\n formData.append(key, element);\r\n }\r\n }\r\n } else {\r\n formData.append(key, body[key]);\r\n }\r\n }\r\n }\r\n return service\r\n .put(ApiUrl.UpdateReflect, formData, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n },\r\n })\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n","import { set } from 'immutable';\r\nimport { useEffect, useState } from 'react';\r\nimport {\r\n Categories,\r\n DeleteReflect,\r\n ReflectByCategories,\r\n ReflectDetail,\r\n} from '../../../redux/store/category/category.store';\r\nimport { GetAllComment } from '../../../redux/store/reflect/reflect-comments.store';\r\nimport {\r\n GetMyListReflect,\r\n GetReflectListHomePage,\r\n} from '../../../redux/store/reflect/reflect.store';\r\n\r\nexport const useGetReflectListHomePage = () => {\r\n const [reflectByCategory, setReflectByCategory] = useState([]);\r\n const [isLoading, setLoading] = useState(true);\r\n\r\n useEffect(() => {\r\n handleGetReflectListHomePage();\r\n }, []);\r\n\r\n const handleGetReflectListHomePage = async () => {\r\n setLoading(true);\r\n const response = await GetReflectListHomePage();\r\n setReflectByCategory(response?.content || []);\r\n setLoading(false);\r\n };\r\n\r\n return {\r\n reflectByCategory,\r\n isLoading,\r\n };\r\n};\r\n\r\nexport const useGetCategories = () => {\r\n const [listCategories, setListCategories] = useState([]);\r\n\r\n useEffect(() => {\r\n handleGetCategories();\r\n }, []);\r\n\r\n const handleGetCategories = async () => {\r\n const response = await Categories();\r\n setListCategories(response?.content || []);\r\n };\r\n\r\n return {\r\n listCategories,\r\n data: listCategories,\r\n };\r\n};\r\n\r\nexport const useGetReflectByCategories = (categories) => {\r\n const [listCategoryAndReflect, setListCategoryAndReflect] = useState([]);\r\n\r\n useEffect(() => {\r\n if (categories?.length > 0) {\r\n }\r\n handleGetCategories();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [categories]);\r\n\r\n const handleGetCategories = async () => {\r\n const arrayResponse = await Promise.all(\r\n categories?.map((category) =>\r\n ReflectByCategories(\r\n `CategoriesId=${category?.id}&IsDelete=false&Sorting=createdDate desc`\r\n )\r\n )\r\n );\r\n const listCategoryAndReflect = [];\r\n if (\r\n arrayResponse?.length > 0 &&\r\n arrayResponse?.length === categories?.length\r\n ) {\r\n categories.forEach((category, index) => {\r\n listCategoryAndReflect.push({\r\n ...category,\r\n reflects: arrayResponse?.[index]?.content?.items,\r\n });\r\n });\r\n }\r\n setListCategoryAndReflect(listCategoryAndReflect);\r\n };\r\n\r\n return {\r\n listCategoryAndReflect,\r\n };\r\n};\r\n\r\nexport const useGetReflects = () => {\r\n const [listReflects, setListReflects] = useState([]);\r\n const [isLoading, setLoading] = useState(true);\r\n\r\n useEffect(() => {\r\n handleGetReflects();\r\n }, []);\r\n\r\n const handleGetReflects = async () => {\r\n setLoading(true);\r\n const response = await ReflectByCategories(\r\n 'Sorting=createdDate desc&PageIndex=1&PageSize=10'\r\n );\r\n setLoading(false);\r\n setListReflects(response?.content?.items || []);\r\n };\r\n\r\n return {\r\n listReflects,\r\n isLoading,\r\n };\r\n};\r\n\r\nexport const useGetReflectsByCategoryId = (categoryId) => {\r\n const [listReflects, setListReflects] = useState([]);\r\n const [total, setTotal] = useState(0);\r\n const [page, setPage] = useState(1);\r\n const [isLoading, setLoading] = useState(true);\r\n const [totalPage, setTotalPage] = useState(1);\r\n\r\n useEffect(() => {\r\n if (categoryId) {\r\n handleGetReflects();\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [categoryId, page]);\r\n\r\n const handleGetReflects = async () => {\r\n setLoading(true);\r\n try {\r\n const response = await ReflectByCategories(\r\n `CategoriesId=${categoryId}&Sorting=createdDate desc&PageIndex=${page}&PageSize=10`\r\n );\r\n setListReflects(response?.content?.items || []);\r\n setTotal(response?.content?.totalItemCount || 0);\r\n setTotalPage(response?.content?.pageCount);\r\n } catch (error) {\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n\r\n return {\r\n listReflects,\r\n total,\r\n setPage,\r\n isLoading,\r\n page,\r\n totalPage,\r\n };\r\n};\r\n\r\nexport const useGetReflectDetail = (reflectId) => {\r\n const [reflectDetail, setReflectDetail] = useState({});\r\n\r\n useEffect(() => {\r\n if (reflectId) {\r\n handleGetReflectDetail();\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [reflectId]);\r\n\r\n const handleGetReflectDetail = async () => {\r\n const response = await ReflectDetail(`id=${reflectId}`);\r\n setReflectDetail(response?.content || {});\r\n };\r\n\r\n return {\r\n reflectDetail,\r\n };\r\n};\r\n\r\nexport const useGetSimilarReflect = (categoryId) => {\r\n const [similarReflect, setSimilarReflect] = useState([]);\r\n const [isLoading, setLoading] = useState(true);\r\n\r\n useEffect(() => {\r\n if (categoryId) {\r\n handleGetSimilarReflect();\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [categoryId]);\r\n\r\n const handleGetSimilarReflect = async () => {\r\n setLoading(true);\r\n const response = await ReflectByCategories(\r\n `CategoriesId=${categoryId}&Sorting=createdDate desc`\r\n );\r\n setSimilarReflect(response?.content?.items || []);\r\n setLoading(false);\r\n };\r\n\r\n return {\r\n similarReflect,\r\n isLoading,\r\n };\r\n};\r\n\r\nexport const useGetMyListReflect = (params) => {\r\n const [data, setData] = useState([]);\r\n const [pageIndex, setPageIndex] = useState(1);\r\n const [totalItem, setTotalItem] = useState(0);\r\n const [totalPage, setTotalPage] = useState(0);\r\n const [isLoading, setLoading] = useState(true);\r\n const [isRefresh, setIsRefresh] = useState(false);\r\n\r\n const clearParams = () => {\r\n const newParams = { ...params };\r\n if (!newParams?.Search) {\r\n delete newParams?.Search;\r\n } else {\r\n newParams.Search = newParams?.Search?.trim();\r\n }\r\n if (!newParams?.Sorting) {\r\n delete newParams?.Sorting;\r\n } else {\r\n newParams.Sorting = newParams?.Sorting;\r\n }\r\n newParams.PageSize = 20;\r\n newParams.PageIndex = pageIndex;\r\n return newParams;\r\n };\r\n\r\n useEffect(() => {\r\n handleGetMyListReflect(clearParams(params));\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [JSON.stringify(params), isRefresh, pageIndex]);\r\n\r\n const handleGetMyListReflect = async (params) => {\r\n setLoading(true);\r\n const response = await GetMyListReflect(params);\r\n setData(response?.content?.items || 0);\r\n setTotalItem(response?.content?.totalItemCount || 0);\r\n setTotalPage(response?.content?.pageCount || 0);\r\n setLoading(false);\r\n };\r\n\r\n return {\r\n data,\r\n refresh: handleGetMyListReflect,\r\n setPageIndex,\r\n pageIndex,\r\n totalItem,\r\n totalPage,\r\n isLoading,\r\n setIsRefresh,\r\n isRefresh,\r\n };\r\n};\r\n\r\nexport const useDeleteReflect = () => {\r\n const [loading, setLoading] = useState(false);\r\n const [isShowConfirm, setIsShowConfirm] = useState(false);\r\n const [selectedReflect, setSelectedReflect] = useState({});\r\n\r\n const handleDeleteReflect = async (id) => {\r\n setLoading(true);\r\n const response = await DeleteReflect({ id });\r\n setLoading(false);\r\n return Promise.resolve(response);\r\n };\r\n return {\r\n onDeleteReflect: handleDeleteReflect,\r\n isShowConfirm,\r\n setIsShowConfirm,\r\n loading,\r\n setSelectedReflect,\r\n selectedReflect,\r\n };\r\n};\r\n\r\nexport const useGetListComment = (reflectId) => {\r\n const [comments, setComments] = useState([]);\r\n const [pageIndex, setPageIndex] = useState(1);\r\n const [totalComment, setTotalComment] = useState(0);\r\n const [totalCommentPage, setTotalCommentPage] = useState(0);\r\n const [totalItemOriginalCount, setTotalItemOriginalCount] = useState(0);\r\n\r\n const handleGetAllComment = async () => {\r\n const response = await GetAllComment({\r\n PageIndex: pageIndex,\r\n PageSize: 10,\r\n IsActive: true,\r\n IsDelete: false,\r\n ReflectionId: reflectId,\r\n });\r\n setComments(response?.content?.items || []);\r\n setTotalComment(response?.content?.totalItemCount || 0);\r\n setTotalCommentPage(response?.content?.pageCount || 0);\r\n setTotalItemOriginalCount(response?.content?.totalItemOriginalCount || 0);\r\n };\r\n\r\n useEffect(() => {\r\n if (reflectId) {\r\n handleGetAllComment();\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [reflectId, pageIndex]);\r\n\r\n return {\r\n comments,\r\n pageIndex,\r\n setPageIndex,\r\n totalComment,\r\n totalCommentPage,\r\n refreshComment: handleGetAllComment,\r\n totalItemOriginalCount,\r\n };\r\n};\r\n","import Service from \"../../../api/api-service-custom\";\r\nimport { ApiUrl } from \"../../../api/api-url\";\r\n\r\nconst service = new Service();\r\n\r\nexport const GetDashboardByReflectionStatus = (data = \"\") => {\r\n return service\r\n .get(ApiUrl.GetDashboardByReflectionStatus, data)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const GetDashBoardSatisfactionLevelOverall = (data = \"\") => {\r\n return service\r\n .get(ApiUrl.GetDashBoardSatisfactionLevelOverall, data)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n","import React from 'react';\r\nimport { Chart as ChartJS, ArcElement, Tooltip, Legend } from 'chart.js';\r\nimport { Doughnut } from 'react-chartjs-2';\r\n\r\nChartJS.register(ArcElement, Tooltip, Legend);\r\n\r\nconst options = {\r\n tooltips: {\r\n enabled: false\r\n },\r\n plugins: {\r\n datalabels: {\r\n formatter: (value, ctx) => {\r\n let sum = 0;\r\n let dataArr = ctx.chart.data.datasets[0].data;\r\n dataArr.map(data => {\r\n sum += data;\r\n });\r\n let percentage = (value * 100 / sum).toFixed(2) + \"%\";\r\n return percentage;\r\n },\r\n color: '#fff',\r\n }\r\n }\r\n};\r\n\r\n\r\nconst DoughnutChart = ({ labels = [], data = [] }) => {\r\n const dataConfig = {\r\n labels: labels,\r\n datasets: [\r\n {\r\n label: '',\r\n data: data,\r\n backgroundColor: [\r\n 'rgba(255, 99, 132, 1)',\r\n 'rgba(54, 162, 235, 1)',\r\n 'rgba(255, 206, 86, 1)',\r\n ],\r\n },\r\n ],\r\n };\r\n\r\n return \r\n}\r\n\r\nexport default DoughnutChart\r\n","import React from \"react\";\r\nimport { Link } from \"react-router-dom\"\r\nimport { Paper } from \"@material-ui/core\";\r\nimport { ChevronRight } from '@material-ui/icons';\r\nimport {\r\n PlaceOutlined,\r\n QueryBuilderOutlined,\r\n ChatBubbleOutlined,\r\n} from \"@material-ui/icons\";\r\nimport \"./header.scss\";\r\n\r\nexport const ReflectHeader = ({ title, urlReadMore, type = 'standard', className = \"\" }) => {\r\n return (\r\n <>\r\n
    \r\n
    {title}
    \r\n {urlReadMore && Xem thêm }\r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default ReflectHeader;\r\n","import moment from 'moment';\r\n\r\nexport const URGENT_OPTIONS = [\r\n {\r\n label: 'Phản ánh khẩn',\r\n key: true,\r\n },\r\n {\r\n label: 'Phản ánh bình thường',\r\n key: false,\r\n },\r\n];\r\n\r\nexport const dateVNFormat = (date, format = 'DD/MM/YYYY') => {\r\n if (date) return moment(date).format(format);\r\n return '';\r\n};\r\n\r\nexport const stripHtml = (html) => {\r\n let tmp = document.createElement('DIV');\r\n tmp.innerHTML = html;\r\n return tmp.textContent || tmp.innerText || '';\r\n};\r\n","export function getExtension(filename) {\r\n if (typeof filename !== 'string') {\r\n return ''\r\n }\r\n const parts = (filename || '')?.split('.');\r\n return parts?.[parts?.length - 1];\r\n}\r\n\r\nexport function isImage(filename) {\r\n const ext = getExtension(filename);\r\n switch (ext.toLowerCase()) {\r\n case 'jpg':\r\n case 'gif':\r\n case 'bmp':\r\n case 'png':\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport function isVideo(filename) {\r\n const ext = getExtension(filename);\r\n switch (ext.toLowerCase()) {\r\n case 'm4v':\r\n case 'avi':\r\n case 'mpg':\r\n case 'mp4':\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport function isDocument(filename) {\r\n const ext = getExtension(filename);\r\n const type = ['doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'pdf']\r\n return type?.includes(ext)\r\n}\r\n","/* eslint-disable jsx-a11y/alt-text */\r\nimport { PlaceOutlined, QueryBuilderOutlined } from '@material-ui/icons';\r\nimport React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { dateVNFormat, URGENT_OPTIONS } from '../../../../utils';\r\nimport { isImage, isVideo, isDocument } from 'utils/file';\r\nimport { api, apiCustom } from 'api/api-config';\r\nimport './reflect-card.scss';\r\nimport { LazyLoadImage } from 'react-lazy-load-image-component';\r\nexport const BASE_IMAGE = apiCustom + '/';\r\n\r\nexport const CardVertival = ({ reflect, isNewTab, className = '' }) => {\r\n let IsUrgentHandling = URGENT_OPTIONS.find(\r\n (urgent) => urgent?.key === reflect?.isUrgentHandling\r\n );\r\n if (!IsUrgentHandling) {\r\n IsUrgentHandling = URGENT_OPTIONS?.[1];\r\n }\r\n\r\n let reflectImage = '/assets/reflect/test-thumb.png';\r\n if (reflect?.image) {\r\n reflectImage = BASE_IMAGE + reflect?.image;\r\n }\r\n // if (\r\n // reflect?.reflectionFilesViewDtos?.filter((item) =>\r\n // isImage(item?.fileName)\r\n // )?.[0]?.filePath\r\n // ) {\r\n // reflectImage =\r\n // BASE_IMAGE +\r\n // reflect?.reflectionFilesViewDtos?.filter((item) =>\r\n // isImage(item?.fileName)\r\n // )?.[0]?.filePath;\r\n // }\r\n\r\n return (\r\n \r\n \r\n
    \r\n \r\n {IsUrgentHandling?.label}\r\n
    \r\n
    \r\n \r\n {reflect?.detectionPosition}\r\n
    \r\n
    {reflect?.title}
    \r\n
    \r\n \r\n {dateVNFormat(reflect?.createdDate, 'DD/MM/YYYY hh:mm')} \r\n
    \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport const CardHorizontal = ({ reflect, className = '' }) => {\r\n let IsUrgentHandling = URGENT_OPTIONS.find(\r\n (urgent) => urgent?.key === reflect?.isUrgentHandling\r\n );\r\n if (!IsUrgentHandling) {\r\n IsUrgentHandling = URGENT_OPTIONS?.[1];\r\n }\r\n\r\n let reflectImage = '/assets/reflect/test-thumb.png';\r\n // if (reflect?.reflectionFilesViewDtos?.filter(item => isImage(item?.fileName))?.[0]?.filePath) {\r\n // reflectImage = BASE_IMAGE + reflect?.reflectionFilesViewDtos?.filter(item => isImage(item?.fileName))?.[0]?.filePath;\r\n // }\r\n if (reflect?.image) {\r\n reflectImage = BASE_IMAGE + reflect?.image;\r\n }\r\n\r\n return (\r\n \r\n \r\n
    \r\n \r\n {IsUrgentHandling?.label}\r\n
    \r\n
    \r\n \r\n {reflect?.detectionPosition}\r\n
    \r\n
    {reflect?.title}
    \r\n \r\n
    \r\n \r\n {dateVNFormat(reflect?.createdDate, 'DD/MM/YYYY hh:mm')} \r\n
    \r\n \r\n \r\n );\r\n};\r\n","import React from 'react'\r\nimport { Box, Grid } from '@material-ui/core'\r\nimport { Skeleton } from '@material-ui/lab'\r\n\r\nexport const CardVertivalSkeleton = () => {\r\n return \r\n \r\n \r\n \r\n \r\n \r\n \r\n}\r\n\r\nexport const CardHorizontalSkeleton = () => {\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\nexport const ReflectHomePageSkeleton = () => {\r\n return \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n}\r\n\r\nexport const ReflectByCategorySkeleton = () => {\r\n return \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n}\r\n\r\nexport const ReflectAsideSkeleton = () => {\r\n return \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n}\r\n","import React from 'react';\r\nimport { reflects } from '../../fake-data';\r\nimport { useGetReflects } from '../../hooks';\r\nimport {\r\n useGetDashboardByReflectionStatus,\r\n useGetDashBoardSatisfactionLevelOverall,\r\n} from '../../hooks/dashboard';\r\nimport DoughnutChart from '../chart/doughnut-chart.view';\r\nimport ReflectHeader from '../header/reflect-header.view';\r\nimport { CardHorizontal } from '../reflect-card/reflect-card.view';\r\nimport { ReflectAsideSkeleton } from '../skeleton/skeleton.view';\r\nimport './aside.scss';\r\n\r\nconst ReflectAdise = ({ listReflects, isLoading }) => {\r\n // const { listReflects, isLoading } = useGetReflects();\r\n const { dashboardByReflectionStatus: byStatus } =\r\n useGetDashboardByReflectionStatus();\r\n const { dashboardSatisfactionLevelOverall: byLevel } =\r\n useGetDashBoardSatisfactionLevelOverall();\r\n\r\n if (isLoading) {\r\n return ;\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 {listReflects?.map((item, i) => (\r\n
    \r\n \r\n
    \r\n ))}\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n {/*
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\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 ReflectAdise;\r\n","import { useState, useEffect } from 'react';\r\nimport {\r\n GetDashboardByReflectionStatus,\r\n GetDashBoardSatisfactionLevelOverall,\r\n} from '../../../redux/store/dashboard/dashboard';\r\n\r\nexport const useGetDashboardByReflectionStatus = () => {\r\n const [dashboardByReflectionStatus, setDashboardByReflectionStatus] = useState({});\r\n const [isLoading, setLoading] = useState(true);\r\n \r\n const handleGetDashboardByReflectionStatus = async () => {\r\n setLoading(true);\r\n const response = await GetDashboardByReflectionStatus();\r\n setDashboardByReflectionStatus(response?.content || []);\r\n setLoading(false);\r\n };\r\n\r\n useEffect(() => {\r\n handleGetDashboardByReflectionStatus();\r\n }, []);\r\n\r\n return {\r\n dashboardByReflectionStatus,\r\n isLoading,\r\n };\r\n};\r\n\r\nexport const useGetDashBoardSatisfactionLevelOverall = () => {\r\n const [dashboardSatisfactionLevelOverall, setDashboardSatisfactionLevelOverall] = useState({});\r\n const [isLoading, setLoading] = useState(true);\r\n \r\n const handleGetDashBoardSatisfactionLevelOverall = async () => {\r\n setLoading(true);\r\n const response = await GetDashBoardSatisfactionLevelOverall();\r\n setDashboardSatisfactionLevelOverall(response?.content || []);\r\n setLoading(false);\r\n };\r\n\r\n useEffect(() => {\r\n handleGetDashBoardSatisfactionLevelOverall();\r\n }, []);\r\n\r\n return {\r\n dashboardSatisfactionLevelOverall,\r\n isLoading,\r\n };\r\n};","import React from \"react\";\r\nimport { Link } from \"react-router-dom\"\r\nimport { Paper } from \"@material-ui/core\";\r\nimport {\r\n PlaceOutlined,\r\n QueryBuilderOutlined,\r\n ChatBubbleOutlined,\r\n} from \"@material-ui/icons\";\r\nimport \"./header.scss\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faMap } from \"@fortawesome/free-solid-svg-icons\";\r\nexport const ReflectPageHeader = ({ title, breadcumb, className = \"\" }) => {\r\n return (\r\n <>\r\n
    \r\n
    \r\n

    {title}

    \r\n
    \r\n {breadcumb?.map((item, i) => {item?.name || \"\"})}\r\n
    \r\n
    \r\n
    \r\n {/*
    \r\n \r\n \r\n Bản đồ  \r\n \r\n \r\n \r\n
    */}\r\n \r\n );\r\n};\r\n\r\nexport default ReflectPageHeader;\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\n/* eslint-disable @typescript-eslint/no-unused-vars */\r\n/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport { Grid } from '@material-ui/core';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport history from \"common/history\";\r\nimport * as appActions from '../../core/app.store';\r\n\r\nimport CursorPointerIcon from '../../assets/icon/cursor-pointer.svg';\r\nimport ReflectAside from './components/aside/aside.view';\r\nimport ReflectHeader from './components/header/reflect-header.view';\r\nimport ReflectPageHeader from './components/header/reflect-page-header.view';\r\nimport {\r\n CardHorizontal,\r\n CardVertival,\r\n} from './components/reflect-card/reflect-card.view';\r\nimport { ReflectHomePageSkeleton } from './components/skeleton/skeleton.view';\r\nimport { useGetReflectListHomePage, useGetReflects } from './hooks';\r\nimport './reflects.scss';\r\n\r\nfunction Reflect(props) {\r\n const { reflectByCategory, isLoading } = useGetReflectListHomePage();\r\n const { listReflects } = useGetReflects();\r\n\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n \r\n
    Gửi phản ánh
    \r\n
    \r\n
    \r\n \r\n\r\n
    \r\n \r\n \r\n {isLoading ? (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n <>\r\n {reflectByCategory?.map((category) => {\r\n return (\r\n category?.reflectTheScenes?.length > 0 && (\r\n <>\r\n \r\n \r\n {category?.reflectTheScenes?.map((item, i) => (\r\n \r\n {i < 1 ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n ))}\r\n \r\n \r\n {category?.reflectTheScenes?.map((item, i) => (\r\n \r\n {i < 2 ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n ))}\r\n \r\n \r\n )\r\n );\r\n })}\r\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 isLoading: state.app.loading,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) =>\r\n bindActionCreators(\r\n {\r\n showLoading: appActions.ShowLoading,\r\n },\r\n dispatch\r\n );\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Reflect);\r\n","import React from 'react';\r\nimport { Pagination } from '@material-ui/lab';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\n\r\nimport './pagination.scss';\r\n\r\nconst ReflectPagination = ({ className = '', ...props }) => {\r\n\r\n return (\r\n \r\n )\r\n};\r\n\r\nexport default ReflectPagination;\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\n/* eslint-disable @typescript-eslint/no-unused-vars */\r\n/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport { Grid } from '@material-ui/core';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useParams } from 'react-router';\r\nimport { bindActionCreators } from 'redux';\r\n\r\nimport * as appActions from '../../../core/app.store';\r\n\r\n// import Pagination from '../../../components/pagination/pagination.view';\r\nimport Pagination from '../components/pagination/pagination.view';\r\n\r\nimport ReflectAdise from '../components/aside/aside.view';\r\nimport ReflectPageHeader from '../components/header/reflect-page-header.view';\r\nimport { ReflectByCategorySkeleton } from '../components/skeleton/skeleton.view';\r\nimport { CardHorizontal } from '../components/reflect-card/reflect-card.view';\r\nimport {\r\n useGetCategories,\r\n useGetReflects,\r\n useGetReflectsByCategoryId,\r\n} from '../hooks';\r\nimport './reflects-by-category.scss';\r\n\r\nfunction Reflect() {\r\n const { categoryInfo } = useParams();\r\n const re = /^(\\d+)-?[a-z0-9-]*$/g;\r\n const categoryId = re.exec(categoryInfo)?.[1] || null;\r\n const { listReflects, total, setPage, isLoading, page, totalPage } =\r\n useGetReflectsByCategoryId(categoryId);\r\n\r\n const { listCategories } = useGetCategories();\r\n const { listReflects: listReflectsAside, isLoading: isLoadingAside } =\r\n useGetReflectsByCategoryId(categoryId);\r\n\r\n const currentCategory = listCategories?.find(\r\n (category) => parseInt(category?.id) === parseInt(categoryId)\r\n );\r\n\r\n return (\r\n <>\r\n \r\n
    \r\n \r\n \r\n {isLoading ? (\r\n \r\n ) : (\r\n <>\r\n \r\n {listReflects?.map((item, i) => (\r\n \r\n \r\n \r\n ))}\r\n \r\n
    \r\n setPage(page)}\r\n // pageTotal={totalPage}\r\n page={page}\r\n onChange={(e, page) => page && setPage(page)}\r\n count={totalPage}\r\n />\r\n
    \r\n \r\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 isLoading: state.app.loading,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) =>\r\n bindActionCreators(\r\n {\r\n showLoading: appActions.ShowLoading,\r\n },\r\n dispatch\r\n );\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Reflect);\r\n","import React, { useState, useEffect } from 'react'\r\nimport { isImage, isVideo, isDocument } from 'utils/file';\r\nimport { BASE_IMAGE } from '../reflect-card/reflect-card.view';\r\nimport { api } from 'api/api-config'\r\n\r\nexport default function PreviewImage({ file, className, disableControlOnVideo = false }) {\r\n const [result, setResult] = useState('');\r\n const [name, setName] = useState('');\r\n const [type, setType] = useState('');\r\n\r\n useEffect(() => {\r\n if (file instanceof File && file?.type?.includes('image/')) {\r\n var reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = function () {\r\n setResult(reader.result);\r\n setType('image');\r\n };\r\n reader.onerror = function (error) {\r\n console.log('Error when preview image: ', error);\r\n };\r\n }\r\n if (file instanceof File && file?.type?.includes('video/')) {\r\n var reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = function () {\r\n setResult(reader.result);\r\n setType('video');\r\n };\r\n reader.onerror = function (error) {\r\n console.log('Error when preview video: ', error);\r\n };\r\n }\r\n if (file instanceof File && isDocument(file?.name)) {\r\n var reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = function () {\r\n setResult(reader.result);\r\n setName(file?.name);\r\n setType('document');\r\n };\r\n reader.onerror = function (error) {\r\n console.log('Error when preview video: ', error);\r\n };\r\n }\r\n if (typeof file?.filePath === 'string' && isImage(file?.filePath)) {\r\n setResult(BASE_IMAGE + file?.filePath);\r\n setType('image');\r\n }\r\n if (typeof file?.filePath === 'string' && isVideo(file?.filePath)) {\r\n setResult(BASE_IMAGE + file?.filePath);\r\n setType('video');\r\n }\r\n if (typeof file?.filePath === 'string' && isDocument(file?.filePath)) {\r\n setResult(BASE_IMAGE + file?.filePath);\r\n setName(file?.fileName);\r\n setType('document');\r\n }\r\n }, [file]);\r\n\r\n if (type === 'image') {\r\n return ;\r\n }\r\n if (type === 'video') {\r\n return (\r\n \r\n );\r\n }\r\n if (type === 'document') {\r\n return (\r\n \r\n

    \r\n {/* */}\r\n

    {name}

    \r\n
    \r\n );\r\n }\r\n\r\n return <>;\r\n}\r\n","import React, { useState, useEffect } from 'react'\r\nimport { useForm } from 'react-hook-form'\r\nimport { CreateComment, UpdateComment } from '../../../../redux/store/reflect/reflect-comments.store'\r\nimport ShowNotification from '../../../../components/react-notifications/react-notifications';\r\nimport { NotificationMessageType } from '../../../../utils/configuration';\r\nimport { isImage, isVideo, isDocument } from 'utils/file';\r\nimport PreviewMedia from '../media/preview-media.view'\r\nimport './comments.scss'\r\n\r\nconst ReflectCommentForm = ({ className = \"\", reflectId, parentId = null, onSuccess, onClose, comment }) => {\r\n const [isLoading, setLoading] = useState()\r\n\r\n const { register, handleSubmit, watch, formState: { errors }, setValue } = useForm({\r\n defaultValues: {\r\n Content: comment?.content || '',\r\n files: comment?.commentFilesViewDtos || [],\r\n deletedFiles: [],\r\n }\r\n });\r\n\r\n const watchFields = watch([\r\n 'files',\r\n 'deletedFiles',\r\n ]);\r\n\r\n const onSubmit = async (values) => {\r\n if (!values.Content) return\r\n setLoading(true)\r\n if (comment) {\r\n const newComment = {\r\n Id: comment?.id,\r\n ParentId: comment?.parentId || '',\r\n Content: values.Content,\r\n ReflectionId: reflectId,\r\n IsActive: true,\r\n IsDelete: false,\r\n files: values?.files,\r\n deletedFiles: values?.deletedFiles,\r\n }\r\n await UpdateComment(newComment)\r\n } else {\r\n const newComment = {\r\n Content: values.Content,\r\n ParentId: parentId || '',\r\n ReflectionId: reflectId,\r\n IsActive: true,\r\n IsDelete: false,\r\n files: values?.files,\r\n deletedFiles: values?.deletedFiles,\r\n }\r\n await CreateComment(newComment)\r\n setValue('Content', '')\r\n setValue('files', [])\r\n }\r\n setLoading(false)\r\n onSuccess && onSuccess()\r\n }\r\n\r\n const handleChangeFile = (files) => {\r\n console.log(files)\r\n const fileTypeExist = {\r\n image: 0,\r\n video: 0,\r\n document: 0,\r\n }\r\n const currentFiles = watchFields.files || []\r\n // for (let file of currentFiles) {\r\n // if (file instanceof File && file?.type?.includes(\"image/\")) {\r\n // fileTypeExist.image++\r\n // }\r\n // if (typeof file?.filePath === \"string\" && isImage(file?.filePath)) {\r\n // fileTypeExist.image++\r\n // }\r\n // if (file instanceof File && file?.type?.includes(\"video/\")) {\r\n // fileTypeExist.video++\r\n // }\r\n // if (typeof file?.filePath === \"string\" && isVideo(file?.filePath)) {\r\n // fileTypeExist.video++\r\n // }\r\n // if (file instanceof File && isDocument(file?.name)) {\r\n // fileTypeExist.document++\r\n // }\r\n // if (typeof file?.filePath === \"string\" && isDocument(file?.filePath)) {\r\n // fileTypeExist.document++\r\n // }\r\n // }\r\n // for (let file of files) {\r\n // if (file?.type?.includes(\"image/\") && fileTypeExist?.image >= 3) {\r\n // ShowNotification(\r\n // `Chỉ được đính kèm tối đa 3 ảnh, 1 video và 1 tài liệu`,\r\n // NotificationMessageType.Error\r\n // );\r\n // return\r\n // }\r\n // if (file?.type?.includes(\"video/\") && fileTypeExist?.video >= 1) {\r\n // ShowNotification(\r\n // `Chỉ được đính kèm tối đa 3 ảnh, 1 video và 1 tài liệu`,\r\n // NotificationMessageType.Error\r\n // );\r\n // return\r\n // }\r\n // if (isDocument(file?.name) && fileTypeExist?.document >= 1) {\r\n // ShowNotification(\r\n // `Chỉ được đính kèm tối đa 3 ảnh, 1 video và 1 tài liệu`,\r\n // NotificationMessageType.Error\r\n // );\r\n // return\r\n // }\r\n // }\r\n currentFiles.push(...files)\r\n setValue(`files`, currentFiles)\r\n }\r\n \r\n useEffect(() => {\r\n register('files');\r\n register('deletedFiles');\r\n }, []);\r\n\r\n const fileToRender = watchFields?.files?.map((file, id) => ({ id, file }));\r\n\r\n return
    \r\n
    \r\n \"\"\r\n
    \r\n
    \r\n \r\n
    \r\n {fileToRender\r\n ?.filter(\r\n (item) => !isDocument(item?.file?.name || item?.file?.fileName)\r\n )\r\n ?.map((item, i) => (\r\n
    \r\n \r\n {\r\n if (item?.file?.fileId) {\r\n setValue(`deletedFiles`, [\r\n ...(watchFields?.deletedFiles || []),\r\n item?.file,\r\n ]);\r\n }\r\n const filesClone = [...watchFields?.files];\r\n filesClone.splice(i, 1);\r\n setValue(`files`, filesClone);\r\n }}\r\n >\r\n X\r\n
    \r\n
    \r\n ))}\r\n
    \r\n
    \r\n \r\n handleChangeFile(e?.target?.files)}\r\n accept=\"image/*,video/*\"\r\n multiple\r\n />\r\n {onClose && }\r\n \r\n
    \r\n \r\n \r\n}\r\n\r\nexport default ReflectCommentForm\r\n","import React, { useState } from 'react'\r\nimport SlickSlider from \"react-slick\";\r\nimport { BASE_IMAGE } from '../reflect-card/reflect-card.view';\r\nimport PreviewMedia from '../media/preview-media.view'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faWindowClose } from '@fortawesome/free-solid-svg-icons';\r\n\r\nconst GridView = ({ files }) => {\r\n const [isOpenGallery, setOpenGallery] = useState(false)\r\n\r\n const filesToRender = Array.isArray(files) ? [...files] : []\r\n\r\n const classNameToRender = [\r\n '',\r\n 'grid-view__one-item',\r\n 'grid-view__two-item',\r\n 'grid-view__three-item',\r\n 'grid-view__four-item',\r\n 'grid-view__five-item'\r\n ]\r\n\r\n const slick =
    \r\n \r\n {filesToRender?.map((item, i) =>\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n
    \r\n\r\n\r\n const renderFiles = () =>
    setOpenGallery(true)}>\r\n {filesToRender?.map((item, i) =>\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n\r\n const renderMoreFiveFiles = () =>
    setOpenGallery(true)}>\r\n {filesToRender?.slice(0, 5)?.map((item, i) =>\r\n
    \r\n \r\n {i === 4 && (\r\n
    \r\n +{filesToRender?.length - 4}\r\n
    \r\n )}\r\n
    \r\n )}\r\n
    \r\n\r\n return <>\r\n {filesToRender?.length <= 5 ? renderFiles() : renderMoreFiveFiles()}\r\n {isOpenGallery &&
    \r\n
    setOpenGallery(false)}>\r\n \r\n
    \r\n
    \r\n \r\n {filesToRender?.map((item, i) =>\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n
    \r\n
    }\r\n \r\n}\r\n\r\nexport default GridView\r\n\r\n","import React, { useState } from 'react';\r\nimport CommentForm from './comment-form.view';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport {\r\n Button,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogContentText,\r\n DialogTitle,\r\n} from '@material-ui/core';\r\nimport { DeleteComment } from '../../../../redux/store/reflect/reflect-comments.store';\r\nimport moment from 'moment';\r\nimport 'moment/locale/vi';\r\n\r\nimport './comments.scss';\r\nimport { BASE_IMAGE } from '../reflect-card/reflect-card.view';\r\nimport { api } from 'api/api-config'\r\nimport GridView from './gird.view'\r\n\r\nconst ReflectCommentItem = ({\r\n comment,\r\n className = '',\r\n isParent = false,\r\n refreshComment,\r\n user,\r\n isLoggedIn,\r\n}) => {\r\n const [isOpenCommentForm, setOpenCommentForm] = useState(false);\r\n const [maxShowReply, setMaxShowReply] = useState(2);\r\n const [isShowMoreContent, setShowMoreContent] = useState(false);\r\n const [isEditMode, setEditMode] = useState(false);\r\n const [idToDelete, setIdToDelete] = useState(null);\r\n\r\n const handleDeleteComment = async () => {\r\n try {\r\n await DeleteComment(idToDelete);\r\n setIdToDelete(null);\r\n refreshComment();\r\n } catch (error) {}\r\n };\r\n\r\n if (isEditMode) {\r\n return (\r\n {\r\n setEditMode(false);\r\n refreshComment();\r\n }}\r\n onClose={() => setEditMode(false)}\r\n />\r\n );\r\n }\r\n\r\n const cutContent = comment?.content?.substring(0, 200);\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n

    {comment?.userComment}

    \r\n {/*

    {comment?.content}

    */}\r\n

    \r\n {isShowMoreContent ? comment?.content : cutContent}\r\n {!isShowMoreContent && comment?.content !== cutContent && '... '}\r\n {!isShowMoreContent && comment?.content !== cutContent && (\r\n setShowMoreContent(true)}\r\n >\r\n Xem thêm\r\n \r\n )}\r\n {isShowMoreContent && comment?.content !== cutContent && (\r\n setShowMoreContent(false)}\r\n >\r\n {' '}\r\n Ẩn bớt\r\n \r\n )}\r\n

    \r\n \r\n
    \r\n
    \r\n {moment(comment?.createdDate)\r\n .locale('vi')\r\n .startOf('seconds')\r\n .fromNow()\r\n .replace('giây tới', 'giây trước')}\r\n     \r\n {isLoggedIn && isParent && (\r\n setOpenCommentForm(true)}>Trả lời\r\n )}\r\n     \r\n {comment?.createdBy === user?.email && (\r\n setEditMode(true)}>Sửa\r\n )}\r\n     \r\n {comment?.createdBy === user?.email && (\r\n setIdToDelete(comment?.id)}>Xóa\r\n )}\r\n
    \r\n {isOpenCommentForm && (\r\n {\r\n setOpenCommentForm(false);\r\n refreshComment();\r\n }}\r\n onClose={() => setOpenCommentForm(false)}\r\n />\r\n )}\r\n {comment?.childrenComments?.length > 0 && (\r\n
    \r\n {comment?.childrenComments\r\n ?.slice(0, maxShowReply)\r\n ?.map((item, i) => (\r\n \r\n ))}\r\n
    \r\n )}\r\n
    \r\n {maxShowReply > 2 && (\r\n setMaxShowReply((state) => Math.max(2, state - 5))}\r\n >\r\n Ẩn bớt {maxShowReply < comment?.childrenComments?.length && '|'}{' '}\r\n
    \r\n )}\r\n\r\n {maxShowReply < comment?.childrenComments?.length && (\r\n
    setMaxShowReply((state) => state + 5)}>\r\n Xem thêm\r\n
    \r\n )}\r\n
    \r\n
    \r\n setIdToDelete(null)}>\r\n Xóa bình luận\r\n \r\n \r\n Bạn có muốn xóa bình luận này không\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\n// export default ReflectCommentItem\r\n\r\nconst mapStateToProps = (state) => ({\r\n isLoading: state.app.loading,\r\n isLoggedIn: state.account.isLoggedIn,\r\n user: state.account.user,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => bindActionCreators({}, dispatch);\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ReflectCommentItem);\r\n","import React from 'react';\r\nimport CommentItem from './comment-item.view';\r\nimport { Pagination } from '@material-ui/lab';\r\nimport CommentForm from './comment-form.view';\r\nimport { useGetListComment } from '../../hooks';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\n\r\nimport './comments.scss';\r\n\r\nconst ReflectComment = ({\r\n reflectId,\r\n className = '',\r\n totalComment,\r\n isLoggedIn,\r\n}) => {\r\n const {\r\n comments,\r\n pageIndex,\r\n totalCommentPage,\r\n refreshComment,\r\n setPageIndex,\r\n totalItemOriginalCount,\r\n } = useGetListComment(reflectId);\r\n\r\n return (\r\n
    \r\n

    Bình luận: {totalItemOriginalCount}

    \r\n {isLoggedIn && (\r\n <>\r\n \r\n \r\n )}\r\n
    \r\n {comments?.map((item, i) => (\r\n \r\n ))}\r\n
    \r\n {!!totalComment && (\r\n page && setPageIndex(page)}\r\n variant='outlined'\r\n shape='rounded'\r\n />\r\n )}\r\n
    \r\n );\r\n};\r\n\r\n// export default ReflectComment;\r\n\r\nconst mapStateToProps = (state) => ({\r\n isLoading: state.app.loading,\r\n isLoggedIn: state.account.isLoggedIn,\r\n user: state.account.user,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => bindActionCreators({}, dispatch);\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ReflectComment);\r\n","import Service from '../../../api/api-service-custom';\r\nimport { ApiUrl } from '../../../api/api-url';\r\n\r\nconst service = new Service();\r\n\r\nexport const CreateLevel = (data = {}) => {\r\n return service\r\n .post(ApiUrl.CreateLevel, data)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const UpdateLevel = (data = {}) => {\r\n return service\r\n .put(ApiUrl.UpdateLevel, data)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n","export const BASE_IMAGE = 'https://pahtsonla-api.cgis.asia/';\r\nexport const PROCESSING_STEP_ID = {\r\n HANDLED: 5,\r\n COMPLETED: 8,\r\n };\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\n/* eslint-disable @typescript-eslint/no-unused-vars */\r\n/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport { useState, useEffect } from 'react';\r\nimport { Grid } from '@material-ui/core';\r\nimport {\r\n PlaceOutlined,\r\n QueryBuilderOutlined,\r\n VisibilityOutlined,\r\n} from '@material-ui/icons';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { useParams } from 'react-router';\r\nimport { bindActionCreators } from 'redux';\r\n\r\nimport * as appActions from '../../../core/app.store';\r\nimport { dateVNFormat } from '../../../utils';\r\n\r\nimport ReflectAside from '../components/aside/aside.view';\r\nimport ReflectComment from '../components/comments/comments.view';\r\nimport ReflectHeader from '../components/header/reflect-header.view';\r\nimport ShowNotification from '../../../components/react-notifications/react-notifications';\r\nimport ReflectPageHeader from '../components/header/reflect-page-header.view';\r\n\r\nimport { CardHorizontal } from '../components/reflect-card/reflect-card.view';\r\nimport { useGetReflectDetail, useGetSimilarReflect } from '../hooks';\r\nimport './reflect-detail.scss';\r\nimport {\r\n CreateLevel,\r\n UpdateLevel,\r\n} from '../../../redux/store/reflect/reflect-level';\r\nimport { PROCESSING_STEP_ID } from '../../../common/constants';\r\nimport { NotificationMessageType } from '../../../utils/configuration';\r\nimport { isImage, isVideo, isDocument } from 'utils/file';\r\nimport { api,apiCustom } from 'api/api-config'\r\nexport const BASE_IMAGE = apiCustom + \"/\";\r\nfunction Reflect({ user }) {\r\n const { reflectInfo } = useParams();\r\n const re = /^(\\d+)-?[a-z0-9-]*$/g;\r\n const reflectId = re.exec(reflectInfo)?.[1] || null;\r\n const { reflectDetail } = useGetReflectDetail(reflectId);\r\n const { similarReflect } = useGetSimilarReflect(reflectDetail?.categoriesId);\r\n const [satisfied, setSatisfied] = useState({\r\n acceptanceTotal: 0,\r\n satisfactionLevelId: null,\r\n satisfiedTotal: 0,\r\n unsatisfied: 0,\r\n });\r\n\r\n useEffect(() => {\r\n setSatisfied({\r\n acceptanceTotal: reflectDetail?.satisfactionLevel?.acceptanceTotal || 0,\r\n satisfactionLevelId:\r\n reflectDetail?.satisfactionLevel?.satisfactionLevelId || null,\r\n satisfiedTotal: reflectDetail?.satisfactionLevel?.satisfiedTotal || 0,\r\n unsatisfied: reflectDetail?.satisfactionLevel?.unsatisfied || 0,\r\n });\r\n }, [reflectDetail]);\r\n\r\n const handleClickSatisfied = (type, value) => async () => {\r\n if (value === satisfied?.satisfactionLevelId) {\r\n return ShowNotification(\r\n 'Bạn đang chọn đánh giá này',\r\n NotificationMessageType.Error\r\n );\r\n }\r\n if (!user) {\r\n return ShowNotification(\r\n 'Bạn cần đăng nhập để dùng tính năng này',\r\n NotificationMessageType.Error\r\n );\r\n }\r\n if (\r\n satisfied?.satisfactionLevelId !== value &&\r\n !satisfied?.satisfactionLevelId\r\n ) {\r\n setSatisfied({\r\n ...satisfied,\r\n satisfactionLevelId: value,\r\n [type]: satisfied?.[type] + 1,\r\n });\r\n await CreateLevel({\r\n reflectionId: reflectDetail?.id,\r\n satisfactionLevelId: value,\r\n userId: user?.id,\r\n });\r\n } else if (satisfied?.satisfactionLevelId !== value) {\r\n const oldSatisfyType = [\r\n '',\r\n 'unsatisfied',\r\n 'satisfiedTotal',\r\n 'acceptanceTotal',\r\n ]?.[satisfied?.satisfactionLevelId];\r\n setSatisfied({\r\n ...satisfied,\r\n [type]: satisfied?.[type] + 1,\r\n [oldSatisfyType]: satisfied?.[oldSatisfyType] - 1,\r\n satisfactionLevelId: value,\r\n });\r\n await UpdateLevel({\r\n id: 0,\r\n reflectionId: reflectDetail?.id,\r\n satisfactionLevelId: value,\r\n userId: user?.id,\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

    {reflectDetail?.title}

    \r\n
    \r\n \r\n {reflectDetail?.detectionPosition}\r\n {' '}\r\n \r\n Lượt xem: {reflectDetail?.viewNum}\r\n \r\n
    \r\n
    \r\n \r\n Ngày gửi:{' '}\r\n {dateVNFormat(reflectDetail?.createdDate)}\r\n {' '}\r\n \r\n Thời hạn xử lý:{' '}\r\n {dateVNFormat(reflectDetail?.expectedEndDate)}\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {reflectDetail?.reflectionFilesViewDtos\r\n ?.filter((item) => !isDocument(item?.fileName))\r\n ?.map((item, i) => (\r\n <>\r\n {isImage(item?.fileName) &&(item?.processingStepId != PROCESSING_STEP_ID.HANDLED) && (\r\n
    \r\n \r\n Ảnh minh họa\r\n
    \r\n )}\r\n {isVideo(item?.fileName)&&(item?.processingStepId != PROCESSING_STEP_ID.HANDLED) && (\r\n
    \r\n \r\n
    \r\n )}\r\n \r\n ))}\r\n {reflectDetail?.reflectionFilesViewDtos\r\n ?.filter((item) => isDocument(item?.fileName))\r\n ?.map((item, i) => (\r\n <>\r\n
    \r\n Tài liệu:{' '}\r\n \r\n {item?.fileName}\r\n \r\n
    \r\n \r\n ))}\r\n
    \r\n {reflectDetail?.reflectionHandledViewDto && reflectDetail?.processingStepCurrentId == PROCESSING_STEP_ID.COMPLETED && (\r\n <>\r\n \r\n \r\n

    \r\n {' '}\r\n {dateVNFormat(reflectDetail?.expectedEndDate)}\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {reflectDetail?.reflectionFilesViewDtos\r\n ?.filter((item) => !isDocument(item?.fileName))\r\n ?.map((item, i) => (\r\n <>\r\n {isImage(item?.fileName) &&(item?.processingStepId == 5) && (\r\n
    \r\n \r\n Ảnh minh họa\r\n
    \r\n )}\r\n {isVideo(item?.fileName)&&(item?.processingStepId == 5) && (\r\n
    \r\n \r\n
    \r\n )}\r\n \r\n ))}\r\n {reflectDetail?.reflectionFilesViewDtos\r\n ?.filter((item) => isDocument(item?.fileName))\r\n ?.map((item, i) => (\r\n <>\r\n
    \r\n Tài liệu:{' '}\r\n \r\n {item?.fileName}\r\n \r\n
    \r\n \r\n ))}\r\n
    \r\n
    \r\n

    Bạn đánh giá thế nào về kết quả xử lý

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

    Hài lòng ({satisfied?.satisfiedTotal || 0})

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

    Chấp nhận ({satisfied?.acceptanceTotal || 0})

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

    Không hài lòng ({satisfied?.unsatisfied || 0})

    \r\n
    \r\n
    \r\n
    \r\n \r\n )}\r\n \r\n \r\n {similarReflect?.length > 0 && (\r\n <>\r\n \r\n \r\n {similarReflect\r\n ?.filter((reflect) => reflect?.id !== reflectDetail?.id)\r\n ?.slice(0, 4)\r\n .map((item, i) => (\r\n \r\n \r\n \r\n ))}\r\n \r\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 isLoading: state.app.loading,\r\n user: state.account.user,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) =>\r\n bindActionCreators(\r\n {\r\n showLoading: appActions.ShowLoading,\r\n },\r\n dispatch\r\n );\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Reflect);\r\n","import React from 'react';\r\nimport { Button, Modal } from 'react-bootstrap';\r\n\r\nconst ConfirmModal = ({ show, onHide, reflect, onOk, loading }) => {\r\n return (\r\n \r\n \r\n Xác nhận\r\n \r\n \r\n Bạn có chắc muốn xóa phản ánh {reflect?.title} không?\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ConfirmModal;\r\n","import React, { useState, useEffect, Component } from \"react\";\r\nimport ol from \"ol\";\r\nimport OlMap from \"ol/Map\";\r\nimport OlView from \"ol/View\";\r\nimport OlLayerTile from \"ol/layer/Tile\";\r\nimport OlSourceOSM from \"ol/source/OSM\";\r\nimport Point from 'ol/geom/Point';\r\nimport Feature from 'ol/Feature'\r\nimport { fromLonLat, transform, toLonLat } from \"ol/proj\";\r\nimport {Icon, Style} from 'ol/style';\r\nimport VectorSource from 'ol/source/Vector';\r\nimport {Tile as TileLayer, Vector as VectorLayer} from 'ol/layer';\r\n\r\nconst iconStyle = new Style({\r\n image: new Icon({\r\n anchor: [0.5, 1],\r\n src: '/assets/reflect/location.png',\r\n scale: 0.03,\r\n }),\r\n});\r\n\r\nconst point = new Point([0, 0])\r\n\r\nconst iconFeature = new Feature(point);\r\niconFeature.set('style', iconStyle);\r\n\r\nconst markerLayer = new VectorLayer({\r\n className: 'marker',\r\n style: function (feature) {\r\n return feature.get('style');\r\n },\r\n source: new VectorSource({features: [iconFeature]}),\r\n visible: false\r\n})\r\n\r\nconst OpenlayersMapView = ({ lng, lat, onSelect }) => {\r\n const [mapState, setMapState] = useState({ center: fromLonLat([104, 21]), zoom: 10 })\r\n const [olMap, setOlMap] = useState(new OlMap({\r\n target: null,\r\n layers: [\r\n new OlLayerTile({\r\n source: new OlSourceOSM()\r\n }),\r\n markerLayer,\r\n ],\r\n view: new OlView({\r\n center: mapState.center,\r\n zoom: mapState.zoom\r\n })\r\n }))\r\n\r\n const handleMapClick = (event) => {\r\n const clickedCoord = olMap.getCoordinateFromPixel(event.pixel);\r\n const transormedCoord = toLonLat(clickedCoord)\r\n markerLayer.setVisible(true)\r\n // point.setCoordinates(clickedCoord)\r\n onSelect(transormedCoord)\r\n }\r\n\r\n const updateMap = () => {\r\n olMap.getView().setCenter(mapState?.center);\r\n olMap.getView().setZoom(olMap.getView().getZoom());\r\n }\r\n\r\n useEffect(() => {\r\n updateMap()\r\n }, [mapState])\r\n \r\n useEffect(() => {\r\n setMapState({ center: fromLonLat([lng || 104, lat || 21]), zoom: 10 });\r\n if (lng && lat) {\r\n point.setCoordinates(fromLonLat([lng, lat]))\r\n markerLayer.setVisible(true)\r\n } else {\r\n markerLayer.setVisible(false)\r\n }\r\n }, [lng, lat])\r\n\r\n useEffect(() => {\r\n olMap.setTarget(\"map\");\r\n olMap.on(\"moveend\", () => {\r\n let center = olMap.getView().getCenter();\r\n let zoom = olMap.getView().getZoom();\r\n setMapState({ center, zoom });\r\n });\r\n olMap.on('click', handleMapClick)\r\n }, [])\r\n\r\n return (\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default OpenlayersMapView;\r\n","import Service from '../../../api/api-service-custom';\r\nimport { ApiUrl } from '../../../api/api-url';\r\n\r\nconst service = new Service();\r\n\r\nconst defaultKey = \"29350440eb729a1980a474cb3953ceea\"\r\n\r\nexport const autoSuggest = (text) => {\r\n return service\r\n .get(`https://api.map4d.vn/sdk/autosuggest?text=${text}&Key=${defaultKey}`)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const geoCode = (paramObj) => {\r\n const params = new URLSearchParams();\r\n if (typeof paramObj === 'object') {\r\n for (let key in paramObj) {\r\n params.append(key, paramObj[key])\r\n }\r\n }\r\n return service\r\n .get(`https://api.map4d.vn/sdk/v2/geocode?key=${defaultKey}&${params}`)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n","import { useState, useEffect } from 'react';\r\nimport {\r\n autoSuggest,\r\n} from '../../../redux/store/reflect/map4d';\r\nimport useDebounce from '../../../hooks/useDebounce'\r\n\r\nexport const useAutoSuggestAddress = (address: string) => {\r\n const addressDebounce = useDebounce(address, 500)\r\n const [data, setData] = useState([]);\r\n const [isLoading, setLoading] = useState(false);\r\n\r\n const handleGetAddress = async () => {\r\n setLoading(true)\r\n try {\r\n const response = await autoSuggest(address);\r\n setData(response?.result)\r\n } catch (error) {\r\n \r\n }\r\n setLoading(false)\r\n };\r\n\r\n useEffect(() => {\r\n if (address) {\r\n handleGetAddress();\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [addressDebounce]);\r\n\r\n return {\r\n data,\r\n isLoading,\r\n refresh: handleGetAddress,\r\n };\r\n};\r\n","import { useEffect, useState } from \"react\";\r\n\r\nexport default function useDebounce(\r\n value: any,\r\n delay: number,\r\n clearIfEmpty: boolean = true\r\n) {\r\n const [debouncedValue, setDebouncedValue] = useState(value);\r\n let timeout: any;\r\n\r\n useEffect(() => {\r\n if (clearIfEmpty && !value) {\r\n clearTimeout(timeout);\r\n setDebouncedValue(value);\r\n return;\r\n }\r\n\r\n timeout = setTimeout(() => {\r\n setDebouncedValue(value);\r\n }, delay);\r\n\r\n return () => {\r\n clearTimeout(timeout);\r\n };\r\n }, [value, delay]);\r\n\r\n return debouncedValue;\r\n}\r\n","import { Typography } from '@material-ui/core';\r\nimport { Pagination } from '@material-ui/lab';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport ClassicEditor from '@ckeditor/ckeditor5-build-classic';\r\nimport { CKEditor } from '@ckeditor/ckeditor5-react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { Autocomplete } from '@material-ui/lab';\r\n// import OpenlayersMapView from \"../../openlayers-map/openlayers-map.view\";\r\nimport OpenlayersMapView from '../components/openlayers-map/openlayers-map.view';\r\n\r\nimport './create-reflect.scss';\r\nimport {\r\n CreateReflect,\r\n UpdateReflect,\r\n} from '../../../redux/store/reflect/reflect.store';\r\nimport { useAutoSuggestAddress } from '../hooks/map4d';\r\nimport { geoCode } from '../../../redux/store/reflect/map4d';\r\n// import { BASE_IMAGE } from '../../../common/constants';\r\nimport ShowNotification from '../../../components/react-notifications/react-notifications';\r\nimport { NotificationMessageType } from '../../../utils/configuration';\r\nimport { isImage, isVideo, isDocument } from 'utils/file';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faFile } from '@fortawesome/free-solid-svg-icons';\r\nimport { apiCustom } from 'api/api-config'\r\nconst BASE_IMAGE = apiCustom + \"/\";\r\nfunction CreateReflectPage({ reflect, onSuccess }) {\r\n const {\r\n register,\r\n handleSubmit,\r\n watch,\r\n formState: { errors, isSubmitting },\r\n getValues,\r\n setValue,\r\n } = useForm({\r\n defaultValues: {\r\n Id: reflect?.id || undefined,\r\n Title: reflect?.title || '',\r\n Content: reflect?.content || '',\r\n DetectionPosition: reflect?.detectionPosition || '',\r\n Longitude: reflect?.longitude || '',\r\n Latitude: reflect?.latitude || '',\r\n IsUrgentHandling: reflect?.isUrgentHandling || '',\r\n ReflectionStatusId: reflect?.reflectionStatusId || '',\r\n ProcessingStepCurrentId: reflect?.processingStepCurrentId || '',\r\n files: reflect?.reflectionFilesViewDtos || [],\r\n deletedFiles: [],\r\n SourceOfReflectionId: reflect?.SourceOfReflectionId || '',\r\n },\r\n mode: 'all',\r\n reValidateMode: 'onBlur',\r\n });\r\n const watchFields = watch([\r\n 'DetectionPosition',\r\n 'Content',\r\n 'Longitude',\r\n 'Latitude',\r\n 'files',\r\n 'deletedFiles',\r\n ]);\r\n const [dragActive, setDragActive] = React.useState(false);\r\n\r\n const { data: positionOptions } = useAutoSuggestAddress(\r\n watchFields.DetectionPosition\r\n );\r\n\r\n const onSubmit = async (values) => {\r\n console.log(values);\r\n if (values?.DetectionPosition && !values?.Longitude && !values?.Latitude) {\r\n ShowNotification(`Hãy chọn 1 vị trí`, NotificationMessageType.Warning);\r\n return;\r\n }\r\n try {\r\n if (!reflect) {\r\n await CreateReflect(values);\r\n } else {\r\n await UpdateReflect(values);\r\n }\r\n ShowNotification(\r\n `${!reflect ? 'Thêm' : 'Sửa'} phản ánh thành công`,\r\n NotificationMessageType.Success\r\n );\r\n onSuccess && onSuccess();\r\n } catch (error) {\r\n ShowNotification(\r\n `${!reflect ? 'Thêm' : 'Sửa'} phản ánh thất bại`,\r\n NotificationMessageType.Error\r\n );\r\n }\r\n };\r\n\r\n const handleSelectOnMap = async ([lng, lat]) => {\r\n try {\r\n const res = await geoCode({ location: [lat, lng] });\r\n const address = res?.result?.[0]?.address;\r\n if (address) {\r\n setValue('DetectionPosition', address);\r\n setValue('Longitude', lng?.toString());\r\n setValue('Latitude', lat?.toString());\r\n }\r\n } catch (error) {}\r\n };\r\n\r\n const handleFileChange = (files) => {\r\n const fileTypeExist = {\r\n image: 0,\r\n video: 0,\r\n document: 0,\r\n };\r\n const filesToAdd = [];\r\n for (let file of watchFields?.files) {\r\n if (file instanceof File && file?.type?.includes('image/')) {\r\n fileTypeExist.image++;\r\n }\r\n if (typeof file?.filePath === 'string' && isImage(file?.filePath)) {\r\n fileTypeExist.image++;\r\n }\r\n if (file instanceof File && file?.type?.includes('video/')) {\r\n fileTypeExist.video++;\r\n }\r\n if (typeof file?.filePath === 'string' && isVideo(file?.filePath)) {\r\n fileTypeExist.video++;\r\n }\r\n if (file instanceof File && isDocument(file?.name)) {\r\n fileTypeExist.document++;\r\n }\r\n if (typeof file?.filePath === 'string' && isDocument(file?.filePath)) {\r\n fileTypeExist.document++;\r\n }\r\n }\r\n for (let file of files) {\r\n if (file?.type?.includes('image/') && fileTypeExist?.image < 3) {\r\n filesToAdd.push(file);\r\n fileTypeExist.image++;\r\n }\r\n if (file?.type?.includes('video/') && fileTypeExist?.video < 1) {\r\n filesToAdd.push(file);\r\n fileTypeExist.video++;\r\n }\r\n if (isDocument(file?.name) && fileTypeExist?.document < 1) {\r\n filesToAdd.push(file);\r\n fileTypeExist.document++;\r\n }\r\n }\r\n setValue(`files`, [...watchFields?.files, ...filesToAdd]);\r\n };\r\n\r\n const handleDrag = function (e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (e.type === 'dragenter' || e.type === 'dragover') {\r\n setDragActive(true);\r\n } else if (e.type === 'dragleave') {\r\n setDragActive(false);\r\n }\r\n };\r\n\r\n const handleDrop = function (e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setDragActive(false);\r\n const files = Object.values(e.dataTransfer.files)?.filter(\r\n (file) =>\r\n file?.type?.includes('image/') ||\r\n file?.type?.includes('video/') ||\r\n isDocument(file?.name)\r\n );\r\n handleFileChange(files);\r\n };\r\n\r\n useEffect(() => {\r\n register('Id');\r\n register('Content', {\r\n required: true,\r\n });\r\n register('DetectionPosition', {\r\n required: true,\r\n });\r\n register('Longitude');\r\n register('Latitude');\r\n register('ReflectionStatusId');\r\n register('ProcessingStepCurrentId');\r\n register('files');\r\n register('deletedFiles');\r\n }, []);\r\n\r\n const fileToRender = watchFields?.files?.map((file, id) => ({ id, file }));\r\n\r\n return (\r\n
    \r\n

    Phản ánh kiến nghị

    \r\n
    \r\n

    Thông tin góp ý

    \r\n
    \r\n \r\n \r\n {errors?.Title && (\r\n \r\n Tiêu đề không được để trống\r\n \r\n )}\r\n
    \r\n
    \r\n {\r\n const data = editor.getData();\r\n setValue('Content', data);\r\n }}\r\n />\r\n {errors?.Content && (\r\n \r\n Nội dung không được để trống\r\n \r\n )}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n

    Hình ảnh & video

    \r\n
    \r\n
    \r\n {/* {watchFields?.files?.length > 0 &&
    \r\n \r\n
    {\r\n if (watchFields?.files?.[0]?.fileId) {\r\n setValue(`deletedFiles`, [...watchFields?.deletedFiles, watchFields?.files?.[0]])\r\n }\r\n setValue(`files`, [])\r\n }}>X
    \r\n
    } */}\r\n \r\n

    \r\n Kéo hoặc thả file để tải file lên hoặc{' '}\r\n \r\n

    \r\n
    \r\n {dragActive && (\r\n
    \r\n )}\r\n
    \r\n handleFileChange(e.target.files)}\r\n multiple\r\n accept='image/*,video/*,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf'\r\n />\r\n
    \r\n {fileToRender\r\n ?.filter(\r\n (item) => !isDocument(item?.file?.name || item?.file?.fileName)\r\n )\r\n ?.map((item, i) => (\r\n
    \r\n \r\n {\r\n if (item?.file?.fileId) {\r\n setValue(`deletedFiles`, [\r\n ...(watchFields?.deletedFiles || []),\r\n item?.file,\r\n ]);\r\n }\r\n const filesClone = [...watchFields?.files];\r\n filesClone.splice(item?.id, 1);\r\n setValue(`files`, filesClone);\r\n }}\r\n >\r\n X\r\n
    \r\n
    \r\n ))}\r\n
    \r\n
    \r\n {fileToRender\r\n ?.filter((item) =>\r\n isDocument(item?.file?.name || item?.file?.fileName)\r\n )\r\n ?.map((item, i) => (\r\n
    \r\n \r\n {\r\n if (item?.file?.fileId) {\r\n setValue(`deletedFiles`, [\r\n ...(watchFields?.deletedFiles || []),\r\n item?.file,\r\n ]);\r\n }\r\n const filesClone = [...watchFields?.files];\r\n filesClone.splice(item?.id, 1);\r\n setValue(`files`, filesClone);\r\n }}\r\n >\r\n X\r\n
    \r\n
    \r\n ))}\r\n \r\n \r\n
    \r\n

    Vị trí phản ánh

    \r\n
    \r\n option?.address || ''}\r\n id='controlled'\r\n noOptionsText='Không có lựa chọn'\r\n isOptionEqualToValue={(option, value) => option === value}\r\n // loading={autoSuggestPoistions?.isRunning() || detectionPositionSearchTerm !== detectionPositionDebounce}\r\n onChange={(e, value) => {\r\n setValue('DetectionPosition', value?.address);\r\n setValue('Longitude', value?.location?.lng?.toString());\r\n setValue('Latitude', value?.location?.lat?.toString());\r\n }}\r\n renderInput={(params) => {\r\n return (\r\n
    \r\n {\r\n setValue('DetectionPosition', e.target.value);\r\n setValue('Longitude', '');\r\n setValue('Latitude', '');\r\n }}\r\n />\r\n
    \r\n );\r\n }}\r\n />\r\n {errors?.DetectionPosition && (\r\n \r\n Vị trí không được để trống\r\n \r\n )}\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n {!reflect ? 'Gửi' : 'Cập nhật'} phản hồi\r\n \r\n \r\n );\r\n}\r\n\r\nexport default CreateReflectPage;\r\n\r\nfunction PreviewImage({ file, className }) {\r\n const [result, setResult] = useState('');\r\n const [name, setName] = useState('');\r\n const [type, setType] = useState('');\r\n\r\n useEffect(() => {\r\n if (file instanceof File && file?.type?.includes('image/')) {\r\n var reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = function () {\r\n setResult(reader.result);\r\n setType('image');\r\n };\r\n reader.onerror = function (error) {\r\n console.log('Error when preview image: ', error);\r\n };\r\n }\r\n if (file instanceof File && file?.type?.includes('video/')) {\r\n var reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = function () {\r\n setResult(reader.result);\r\n setType('video');\r\n };\r\n reader.onerror = function (error) {\r\n console.log('Error when preview video: ', error);\r\n };\r\n }\r\n if (file instanceof File && isDocument(file?.name)) {\r\n var reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = function () {\r\n setResult(reader.result);\r\n setName(file?.name);\r\n setType('document');\r\n };\r\n reader.onerror = function (error) {\r\n console.log('Error when preview video: ', error);\r\n };\r\n }\r\n if (typeof file?.filePath === 'string' && isImage(file?.filePath)) {\r\n setResult(BASE_IMAGE + file?.filePath);\r\n setType('image');\r\n }\r\n if (typeof file?.filePath === 'string' && isVideo(file?.filePath)) {\r\n setResult(BASE_IMAGE + file?.filePath);\r\n setType('video');\r\n }\r\n if (typeof file?.filePath === 'string' && isDocument(file?.filePath)) {\r\n setResult(BASE_IMAGE + file?.filePath);\r\n setName(file?.fileName);\r\n setType('document');\r\n }\r\n }, [file]);\r\n\r\n if (type === 'image') {\r\n return ;\r\n }\r\n if (type === 'video') {\r\n return (\r\n \r\n );\r\n }\r\n if (type === 'document') {\r\n return (\r\n \r\n

    \r\n \r\n

    {name}

    \r\n
    \r\n );\r\n }\r\n\r\n return <>;\r\n}\r\n","import React from 'react';\r\nimport { Button, Modal } from 'react-bootstrap';\r\nimport CreateOrUpdateReflectView from '../create-reflect-page/create-or-update-reflect.view'\r\n\r\nconst EditModal = ({ show, onHide, reflect, onSuccess }) => {\r\n return (\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default EditModal;\r\n","import { Typography } from '@material-ui/core';\r\nimport { Pagination, Skeleton } from '@material-ui/lab';\r\nimport React, { useState } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\n\r\nimport * as appActions from '../../../core/app.store';\r\nimport { dateVNFormat, stripHtml } from '../../../utils';\r\n\r\nimport DeleteIcon from '../../../assets/icon/delete-icon.svg';\r\nimport EditIcon from '../../../assets/icon/edit-icon.svg';\r\nimport { useDeleteReflect, useGetMyListReflect } from '../hooks';\r\n\r\nimport { faSearch } from '@fortawesome/free-solid-svg-icons';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport Select from 'react-select';\r\nimport './my-reflect.scss';\r\nimport ConfirmModal from './confirm-modal';\r\nimport EditModal from './edit-modal';\r\nimport ShowNotification from '../../../components/react-notifications/react-notifications';\r\nimport { NotificationMessageType } from '../../../utils/configuration';\r\nimport { NavLink } from 'react-router-dom';\r\nimport history from 'common/history';\r\n\r\nconst statusOptions = [\r\n {\r\n id: 1,\r\n name: 'Chưa xử lý',\r\n },\r\n {\r\n id: 2,\r\n name: 'Đang xử lý',\r\n },\r\n {\r\n id: 3,\r\n name: 'Đã phê duyệt',\r\n },\r\n {\r\n id: 4,\r\n name: 'Hoàn thành xử lý',\r\n },\r\n];\r\n\r\nconst sortOptions = [\r\n { value: 'createdDate desc', label: 'Mới đến cũ' },\r\n { value: 'createdDate asc', label: 'Cũ nhất' },\r\n];\r\n\r\nconst currentStepOptions = [\r\n { value: '', label: 'Tất cả' },\r\n { value: '2', label: 'Chờ phân phối' },\r\n { value: '3', label: 'Chờ xử lý' },\r\n { value: '5', label: 'Chờ phê duyệt' },\r\n];\r\n\r\nfunction MyReflect() {\r\n const [reflectToUpdate, setReflectToUpdate] = useState(null);\r\n const [searchParams, setSearchParams] = useState({\r\n Search: '',\r\n ProcessingStepCurrentId: currentStepOptions[0],\r\n Sorting: sortOptions?.[0],\r\n Page: 1,\r\n });\r\n\r\n const {\r\n data: myReflect,\r\n isLoading: isMyReflectLoading,\r\n setPageIndex,\r\n pageIndex,\r\n totalPage,\r\n totalItem,\r\n refresh,\r\n } = useGetMyListReflect({\r\n Sorting: searchParams?.Sorting?.value,\r\n ProcessingStepCurrentId: searchParams?.ProcessingStepCurrentId?.value,\r\n });\r\n\r\n const {\r\n onDeleteReflect,\r\n loading,\r\n setIsShowConfirm,\r\n isShowConfirm,\r\n selectedReflect,\r\n setSelectedReflect,\r\n } = useDeleteReflect();\r\n\r\n const handleChangeSorting = (sorting) => {\r\n setSearchParams({\r\n ...searchParams,\r\n Sorting: sorting,\r\n page: 1,\r\n });\r\n };\r\n\r\n const handleChangeFilter = (field, value) => {\r\n console.log(field, value)\r\n setSearchParams({\r\n ...searchParams,\r\n [field]: value,\r\n page: 1,\r\n });\r\n };\r\n\r\n const handleKeyPress = (event) => {\r\n if (event.key === 'Enter') {\r\n setSearchParams({\r\n ...searchParams,\r\n Search: event?.target?.value?.trim(),\r\n Page: 1,\r\n });\r\n }\r\n };\r\n\r\n const handleCloseConfirmModal = () => {\r\n setIsShowConfirm(false);\r\n setSelectedReflect({});\r\n };\r\n\r\n const handleDeleteReflect = async () => {\r\n const response = await onDeleteReflect(selectedReflect?.id);\r\n if (response?.content?.status) {\r\n setIsShowConfirm(false);\r\n setSelectedReflect({});\r\n ShowNotification(\r\n 'Xóa phản ánh thành công',\r\n NotificationMessageType.Success\r\n );\r\n // setIsRefresh(!isRefresh);\r\n refresh();\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n \r\n setReflectToUpdate(null)}\r\n onSuccess={() => {\r\n refresh();\r\n setReflectToUpdate(null);\r\n }}\r\n />\r\n\r\n
    \r\n

    Phản ánh của bạn

    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n {/* handleChangeFilter('ProcessingStepCurrentId', value)}\r\n options={currentStepOptions}\r\n isSearchable={false}\r\n value={searchParams?.ProcessingStepCurrentId}\r\n /> */}\r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {isMyReflectLoading && (\r\n \r\n {[...Array(10)]?.map((item, i) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n )}\r\n {myReflect?.length > 0 && (\r\n \r\n {myReflect?.map((item, i) => {\r\n const status =\r\n statusOptions?.find(\r\n (status) => status.id === item?.reflectionStatusId\r\n ) || statusOptions?.[0];\r\n return (\r\n \r\n history.push(`/phan-anh-hien-truong/phan-anh/${item?.id}`)\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n )}\r\n {myReflect?.length === 0 && !isMyReflectLoading && (\r\n
    Không có dữ liệu
    \r\n )}\r\n
    STTThông tin\r\n Địa chỉ\r\n \r\n Ngày đăng\r\n \r\n Trạng thái\r\n \r\n Hoạt động\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n {i < 9 ? '0' : ''}\r\n {i + 1}\r\n \r\n \r\n {stripHtml(item.title)}\r\n \r\n \r\n \r\n {stripHtml(item.detectionPosition)}\r\n \r\n {dateVNFormat(item?.createdDate)}\r\n \r\n {status?.name}\r\n \r\n \r\n {item?.reflectionStatusId === statusOptions?.[0]?.id && (\r\n
    \r\n {\r\n e.stopPropagation();\r\n setReflectToUpdate(item);\r\n }}\r\n >\r\n \r\n \r\n  \r\n \r\n
    \r\n )}\r\n
    \r\n
    \r\n {totalItem > 0 && (\r\n
    \r\n page && setPageIndex(page)}\r\n count={totalPage}\r\n />\r\n
    \r\n )}\r\n
    \r\n );\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n isLoading: state.app.loading,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) =>\r\n bindActionCreators(\r\n {\r\n showLoading: appActions.ShowLoading,\r\n },\r\n dispatch\r\n );\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MyReflect);\r\n","import { Typography } from '@material-ui/core';\r\nimport { Pagination } from '@material-ui/lab';\r\nimport React, { useState } from 'react';\r\nimport { Link, useHistory } from 'react-router-dom';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport ClassicEditor from \"@ckeditor/ckeditor5-build-classic\"\r\nimport { CKEditor } from \"@ckeditor/ckeditor5-react\"\r\nimport { useForm } from \"react-hook-form\"\r\n\r\nimport * as appActions from '../../../core/app.store';\r\nimport { dateVNFormat, stripHtml } from '../../../utils';\r\n\r\nimport DeleteIcon from '../../../assets/icon/delete-icon.svg';\r\nimport EditIcon from '../../../assets/icon/edit-icon.svg';\r\nimport { useDeleteReflect, useGetMyListReflect } from '../hooks';\r\n\r\nimport { faSearch } from '@fortawesome/free-solid-svg-icons';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport Select from 'react-select';\r\nimport './create-reflect.scss';\r\nimport ShowNotification from '../../../components/react-notifications/react-notifications';\r\nimport { NotificationMessageType } from '../../../utils/configuration';\r\nimport { CreateReflect } from '../../../redux/store/reflect/reflect.store'\r\nimport CreateOrUpdateReflectView from './create-or-update-reflect.view'\r\nimport UrlCollect from '../../../common/url-collect';\r\n\r\nfunction CreateReflectPage() {\r\n const history = useHistory()\r\n\r\n const handleSuccess = () => {\r\n history.push(UrlCollect.MyReflect)\r\n }\r\n\r\n return ;\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n isLoading: state.app.loading,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) =>\r\n bindActionCreators(\r\n {\r\n showLoading: appActions.ShowLoading,\r\n },\r\n dispatch\r\n );\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CreateReflectPage);\r\n","import React, { useState, useEffect, useRef } from 'react'\r\nimport { useGetCategories } from '../hooks'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faSearch } from '@fortawesome/free-solid-svg-icons';\r\nimport { Checkbox } from '@material-ui/core';\r\nimport OlMap from \"ol/Map\";\r\nimport OlView from \"ol/View\";\r\nimport OlOverlay from 'ol/Overlay';\r\nimport OlLayerTile from \"ol/layer/Tile\";\r\nimport OlSourceOSM from \"ol/source/OSM\";\r\nimport OlSourceXYZ from \"ol/source/XYZ\";\r\nimport Point from 'ol/geom/Point';\r\nimport Feature from 'ol/Feature'\r\nimport { fromLonLat, transform, toLonLat } from \"ol/proj\";\r\nimport { Icon, Style } from 'ol/style';\r\nimport VectorSource from 'ol/source/Vector';\r\nimport { Tile as TileLayer, Vector as VectorLayer } from 'ol/layer';\r\nimport {\r\n Categories,\r\n DeleteReflect,\r\n ReflectByCategories,\r\n ReflectDetail,\r\n} from '../../../redux/store/category/category.store';\r\nimport { CardVertival } from '../components/reflect-card/reflect-card.view';\r\nimport './reflect-map.scss'\r\n\r\nconst mapAction = {\r\n ShowReflectInfo: 'ShowReflectInfo',\r\n}\r\n\r\nconst markerLayer = new VectorLayer({\r\n className: 'marker',\r\n style: function (feature) {\r\n return feature.get('style');\r\n },\r\n})\r\n\r\nconst overlay = new OlOverlay({\r\n autoPan: {\r\n animation: {\r\n duration: 250,\r\n },\r\n },\r\n})\r\n\r\nconst ReflectMap = () => {\r\n const { data: listCategories } = useGetCategories()\r\n const [isOpenMenu, setOpenMenu] = useState(false)\r\n const [categoryId, setCategoryId] = useState(null)\r\n const [reflects, setReflects] = useState([])\r\n const [reflect, setReflect] = useState(null)\r\n const [mapState, setMapState] = useState({ center: fromLonLat([104, 21]), zoom: 10 })\r\n const popupRef = useRef(null)\r\n const [olMap, setOlMap] = useState(new OlMap({\r\n target: null,\r\n layers: [\r\n new OlLayerTile({\r\n // source: new OlSourceOSM(),\r\n source: new OlSourceXYZ({\r\n url: 'https://mt0.google.com/vt/lyrs=y&hl=vi&x={x}&y={y}&z={z}'\r\n })\r\n }),\r\n markerLayer,\r\n ],\r\n view: new OlView({\r\n center: mapState.center,\r\n zoom: mapState.zoom\r\n }),\r\n }))\r\n\r\n const updateMap = () => {\r\n olMap.getView().setCenter(mapState?.center);\r\n olMap.getView().setZoom(olMap.getView().getZoom());\r\n }\r\n\r\n useEffect(() => {\r\n const handleGetReflects = async () => {\r\n try {\r\n const reflectRes = await ReflectByCategories(\r\n `CategoriesId=${categoryId}&IsDelete=false&Sorting=createdDate desc`\r\n )\r\n setReflects(reflectRes?.content?.items)\r\n } catch (error) {\r\n console.log('ReflectMap.handleGetReflects err', error)\r\n }\r\n }\r\n if (categoryId) {\r\n handleGetReflects()\r\n }\r\n }, [categoryId])\r\n\r\n useEffect(() => {\r\n const showReflectMarker = () => {\r\n const features = []\r\n for (let reflect of reflects) {\r\n const iconStyle = new Style({\r\n image: new Icon({\r\n anchor: [0.5, 1],\r\n src: '/assets/reflect/location.png',\r\n scale: 0.03,\r\n }),\r\n });\r\n\r\n const point = new Point(fromLonLat([+reflect?.longitude, +reflect?.latitude]))\r\n\r\n const iconFeature = new Feature(point);\r\n iconFeature.set('style', iconStyle);\r\n iconFeature.set('action', mapAction.ShowReflectInfo);\r\n iconFeature.set('data', reflect);\r\n\r\n features.push(iconFeature)\r\n }\r\n\r\n markerLayer.setSource(new VectorSource({ features }))\r\n\r\n }\r\n showReflectMarker()\r\n }, [reflects])\r\n\r\n useEffect(() => {\r\n setMapState({ center: fromLonLat([104, 21]), zoom: 10 });\r\n }, [])\r\n\r\n useEffect(() => {\r\n updateMap()\r\n }, [mapState])\r\n\r\n useEffect(() => {\r\n olMap.setTarget(\"reflect-map-target\");\r\n overlay.setElement(popupRef?.current)\r\n olMap.addOverlay(overlay)\r\n olMap.on(\"moveend\", () => {\r\n let center = olMap.getView().getCenter();\r\n let zoom = olMap.getView().getZoom();\r\n setMapState({ center, zoom });\r\n });\r\n olMap.on('click', (e) => {\r\n const coordinate = e.coordinate;\r\n const feature = olMap.forEachFeatureAtPixel(e.pixel, function (feature) {\r\n return feature;\r\n });\r\n overlay.getElement().style.display = 'none'\r\n if (!feature) {\r\n return\r\n }\r\n const { action, data } = feature?.values_\r\n console.log('on click map', feature?.values_)\r\n if (action === mapAction.ShowReflectInfo) {\r\n overlay.getElement().style.display = 'block'\r\n overlay.setPosition(coordinate);\r\n setReflect(data)\r\n return\r\n }\r\n })\r\n olMap.on('pointermove', function (e) {\r\n const pixel = olMap.getEventPixel(e.originalEvent);\r\n const hit = olMap.hasFeatureAtPixel(pixel)\r\n // if (olMap?.getTarget()?.style?) {\r\n // olMap.getTarget().style.cursor = hit ? 'pointer' : '';\r\n // }\r\n });\r\n }, [])\r\n\r\n return
    \r\n
    \r\n
    \r\n \r\n {\r\n overlay.getElement().style.display = 'none'\r\n }}\r\n />\r\n
    \r\n
    \r\n
    setOpenMenu(true)}>{'>'}
    \r\n
    \r\n
    setOpenMenu(false)}>\r\n

    Thông tin phản ánh

    \r\n X\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n

    Lĩnh vực

    \r\n
    \r\n {listCategories?.map((item, i) => (\r\n {\r\n if (item?.id === categoryId) {\r\n setCategoryId(null)\r\n } else {\r\n setCategoryId(item?.id)\r\n }\r\n }}\r\n >\r\n \r\n

    {item?.name}

    \r\n
    \r\n ))}\r\n
    \r\n
    \r\n \r\n}\r\n\r\nexport default ReflectMap\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport React, { useState, useRef, useEffect } from \"react\";\r\nimport { useForm } from \"react-hook-form\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport {\r\n faKey,\r\n faUserCircle,\r\n faArrowLeft,\r\n faCheckCircle,\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\nimport { Link } from \"react-router-dom\";\r\nimport UrlCollect from \"../../common/url-collect\";\r\nimport history from \"../../common/history\";\r\nimport ShowNotification from \"../../components/react-notifications/react-notifications\";\r\nimport { NotificationMessageType } from \"../../utils/configuration\";\r\nimport * as viVN from \"../../languages/vi-VN.json\";\r\nimport * as accountAction from \"../../redux/store/account/account.store\";\r\n\r\nimport \"./reset-password.scss\";\r\n\r\nexport default function ResetPasswordDesktop(props) {\r\n const {\r\n register,\r\n handleSubmit,\r\n setError,\r\n clearErrors,\r\n errors,\r\n watch,\r\n getValues,\r\n } = useForm({ mode: \"all\", reValidateMode: \"onBlur\" });\r\n const [pass, setPassword] = useState(\"\");\r\n\r\n const [height, setHeight] = useState({\r\n minHeight: `${window.innerHeight}px`,\r\n });\r\n\r\n const [isSuccess, setSuccess] = useState(false);\r\n const [userInfo, setUserInfo] = useState({ userId: \"\", token: \"\" });\r\n\r\n const password = useRef({});\r\n password.current = watch(\"password\", \"\");\r\n\r\n useEffect(() => {\r\n const token = new URLSearchParams(props.location.search).get(\"token\");\r\n if (\r\n props &&\r\n props.match &&\r\n props.match.params &&\r\n props.match.params.userId &&\r\n token\r\n ) {\r\n setUserInfo({\r\n userId: props.match.params.userId,\r\n token: token,\r\n });\r\n } else {\r\n history.push(UrlCollect.Login);\r\n }\r\n }, []);\r\n\r\n const onChangePassword = (e) => {\r\n setPassword(e.target.value);\r\n const { password, confirmPassword } = getValues();\r\n password === confirmPassword\r\n ? clearErrors([\"confirmPassword\"])\r\n : setError(\"confirmPassword\", { type: \"validate\" });\r\n };\r\n\r\n const onSubmit = (data) => {\r\n if (!data) return;\r\n accountAction\r\n .ResetPassword({\r\n userId: userInfo.userId,\r\n password: pass,\r\n code: userInfo.token,\r\n })\r\n .then(\r\n (res) => {\r\n ShowNotification(\r\n viVN.Success.ResetPasswordSuccess,\r\n NotificationMessageType.Success\r\n );\r\n history.push(UrlCollect.Login);\r\n },\r\n (err) => {\r\n err &&\r\n err.errorType &&\r\n ShowNotification(\r\n viVN.Errors[err.errorType],\r\n NotificationMessageType.Error\r\n );\r\n }\r\n );\r\n };\r\n\r\n const onBackToLogin = () => {\r\n history.push(UrlCollect.Login);\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n {!isSuccess && (\r\n
    \r\n
    \r\n
    \r\n \r\n

    \r\n Đặt lại mật khẩu\r\n

    \r\n
    \r\n
    \r\n \r\n \r\n {errors.password && errors.password.type === \"required\" && (\r\n Trường này là bắt buộc\r\n )}\r\n {errors.password && errors.password.type === \"minLength\" && (\r\n Mật khẩu tối thiểu 8 ký tự\r\n )}\r\n {errors.password && errors.password.type === \"pattern\" && (\r\n \r\n Có it nhất 1 ký tự viết thường, hoa và ký tự đặc biệt\r\n \r\n )}\r\n
    \r\n
    \r\n \r\n \r\n value === password.current || \"Mật khẩu không trùng khớp\",\r\n })}\r\n name=\"confirmPassword\"\r\n className=\"form-control\"\r\n placeholder=\"Nhập lại mật khẩu\"\r\n />\r\n {errors.confirmPassword &&\r\n errors.confirmPassword.type === \"validate\" && (\r\n Mật khẩu không khớp\r\n )}\r\n
    \r\n
    \r\n \r\n {\" \"}\r\n Đăng nhập\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n )}\r\n\r\n {isSuccess && (\r\n
    \r\n
    \r\n
    \r\n \r\n

    Thay đổi mật khẩu thành công

    \r\n
    \r\n
    \r\n \r\n Đăng nhập ngay\r\n \r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n );\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport {\r\n faCalendarAlt,\r\n faVideo,\r\n faFilm,\r\n faEye,\r\n faCamera,\r\n faQuestionCircle,\r\n faBook, faLink, faAngleDoubleDown,\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\nimport { faNewspaper, faEnvelope } from \"@fortawesome/free-regular-svg-icons\";\r\nimport * as statementAction from \"../../../redux/store/statement/statement.store\";\r\nimport * as configuration from \"../../../utils/configuration\";\r\n\r\nexport default function ServiceLink() {\r\n const [linkGroup, setLinkGroup] = useState(null);\r\n\r\n useEffect(() => {\r\n statementAction\r\n .GetSerivceLink()\r\n .then(\r\n (res) =>\r\n res &&\r\n res.content &&\r\n res.content.linkGroup &&\r\n setLinkGroup(res.content.linkGroup)\r\n )\r\n .catch((err) => {});\r\n }, []);\r\n\r\n function getOtherLinkIcon(iconName){\r\n var icon = \r\n switch(iconName){\r\n case 'faCalendarAlt':\r\n case 'fa-calendar-alt':\r\n icon = \r\n break;\r\n case 'faVideo':\r\n case 'fa-video':\r\n icon = \r\n break;\r\n case 'faFilm':\r\n case 'fa-film':\r\n icon = \r\n break;\r\n case 'faCamera':\r\n case 'fa-camera':\r\n icon = \r\n break;\r\n case 'faBook':\r\n case 'fa-book':\r\n icon = \r\n break;\r\n case 'faEye':\r\n case 'fa-eye':\r\n icon = \r\n break;\r\n case 'faQuestionCircle':\r\n case 'fa-question-circle':\r\n icon = \r\n break;\r\n }\r\n return icon;\r\n }\r\n return (\r\n
    \r\n {linkGroup &&\r\n linkGroup.map((items, index) =>\r\n items.displayType === \"IMAGE\" ? (\r\n
    \r\n {items.linkService &&\r\n items.linkService.length > 0 &&\r\n items.linkService.map((linkService, index1) => (\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n ))}\r\n
    \r\n ) : items.displayType === \"OTHER\" ? (\r\n
    \r\n \r\n
    \r\n ) : items.displayType === \"MAP\" ? (\r\n \r\n ) :(\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n {items.name}\r\n \r\n
    \r\n
    \r\n {items.linkService &&\r\n items.linkService.length > 0 &&\r\n items.linkService.map((itemsChild) => (\r\n
    \r\n
    \r\n
      \r\n
    • \r\n \r\n {itemsChild.name}\r\n \r\n
    • \r\n
    \r\n
    \r\n
    \r\n ))}\r\n
    \r\n )\r\n )}\r\n
    \r\n );\r\n}\r\n","/* eslint-disable react/jsx-no-target-blank */\r\n/* eslint-disable react-hooks/exhaustive-deps */\r\n/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport React, { useState, useEffect } from \"react\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport {\r\n faSearch,\r\n faEraser,\r\n faExclamationTriangle,\r\n faCalendarAlt,\r\n faVideo,\r\n faFilm,\r\n faEye,\r\n faCamera,\r\n faQuestionCircle,\r\n faBook,\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\nimport { faNewspaper, faEnvelope } from \"@fortawesome/free-regular-svg-icons\";\r\nimport { Link } from \"react-router-dom\";\r\nimport Select from \"react-select\";\r\nimport DatePicker from \"react-datepicker\";\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport moment from \"moment\";\r\nimport { useForm } from \"react-hook-form\";\r\nimport * as consultantCommunityActions from \"../../redux/store/consultant-community/consultant-community.store\";\r\nimport * as statementActions from \"../../redux/store/statement/statement.store\";\r\nimport * as appActions from \"../../core/app.store\";\r\nimport Pagination from \"../../components/pagination/pagination.view\";\r\nimport UrlCollect from \"../../common/url-collect\";\r\nimport {\r\n APIUrlDefault,\r\n NotificationMessageType,\r\n NotificationPosition,\r\n} from \"../../utils/configuration\";\r\nimport ShowNotification from \"../../components/react-notifications/react-notifications\";\r\nimport * as viVN from \"../../languages/vi-VN.json\";\r\nimport \"@geedmo/yamm/src/yamm.scss\";\r\nimport \"react-datepicker/dist/react-datepicker.css\";\r\nimport \"./please-consult-the-community.scss\";\r\nimport ServiceLink from \"../planning-announcement/menu-right/service-link.view\";\r\n\r\nconst firstLoad = true;\r\n\r\nfunction PleaseConsultTheCommunityDesktopView(props) {\r\n const { showLoading } = props;\r\n\r\n const [doingModel, setDoingModel] = useState([]);\r\n const [resultModel, setResultModel] = useState([]);\r\n\r\n const [startDate, setStartDate] = useState(null);\r\n const [endDate, setEndDate] = useState(null);\r\n const [planningTypeModel, setPlanningTypeModel] = useState(\"\");\r\n const [approvalLevelModel, setApprovalLevelModel] = useState();\r\n\r\n const [currentPageIndexDoing, setCurrentPageIndexDoing] = useState(1);\r\n const currentPageSizeDoing = 10;\r\n const [totalItemCountDoing, setTotalItemCountDoing] = useState(0);\r\n\r\n const [currentPageIndexResult, setCurrentPageIndexResult] = useState(1);\r\n const currentPageSizeResult = 10;\r\n const [totalItemCountResult, setTotalItemCountResult] = useState(0);\r\n\r\n const [planningTypeOption, setPlanningTypeOption] = useState([]);\r\n const [approvalLevelOption, setApprovalLevelOption] = useState([]);\r\n const [pageCountDoing, setPageCountDoing] = useState();\r\n const [pageCountResult, setPageCountResult] = useState();\r\n\r\n const [isShowSearch, setIsShowSearch] = useState(false);\r\n\r\n const { register, handleSubmit, setValue } = useForm({\r\n mode: \"all\",\r\n reValidateMode: \"onBlur\",\r\n });\r\n\r\n useEffect(() => {\r\n onGetData();\r\n }, [firstLoad]);\r\n\r\n const onGetData = () => {\r\n showLoading(true);\r\n Promise.all([\r\n onGetListConsultantCommunity({\r\n pageIndex: currentPageIndexDoing,\r\n pageSize: currentPageSizeDoing,\r\n }),\r\n onGetPlanningType(),\r\n onGetApprovalAgencyLevel(),\r\n onGetListExpiredForm({\r\n pageIndex: currentPageIndexResult,\r\n pageSize: currentPageSizeResult,\r\n }),\r\n ])\r\n .then((res) => {\r\n showLoading(false);\r\n })\r\n .catch((err) => {\r\n showLoading(false);\r\n });\r\n };\r\n\r\n const onGetListConsultantCommunity = (data) => {\r\n return new Promise((resolve, reject) => {\r\n consultantCommunityActions.GetListConsultantCommunity(data).then(\r\n (res) => {\r\n setDoingModel(\r\n res &&\r\n res.content &&\r\n res.content.items &&\r\n res.content.items.length > 0\r\n ? res.content.items\r\n : []\r\n );\r\n setTotalItemCountDoing(\r\n res && res.content && res.content.totalItemCount\r\n ? res.content.totalItemCount\r\n : 0\r\n );\r\n setPageCountDoing(\r\n res && res.content && res.content.pageCount\r\n ? res.content.pageCount\r\n : 0\r\n );\r\n resolve(res);\r\n },\r\n (err) => {\r\n reject(err);\r\n }\r\n );\r\n });\r\n };\r\n\r\n const onGetListExpiredForm = (data) => {\r\n return new Promise((resolve, reject) => {\r\n consultantCommunityActions.GetListResultConsultantCommunity(data).then(\r\n (res) => {\r\n setResultModel(\r\n res &&\r\n res.content &&\r\n res.content.items &&\r\n res.content.items.length > 0\r\n ? res.content.items\r\n : []\r\n );\r\n setTotalItemCountResult(\r\n res && res.content && res.content.totalItemCount\r\n ? res.content.totalItemCount\r\n : 0\r\n );\r\n setPageCountResult(\r\n res && res.content && res.content.pageCount\r\n ? res.content.pageCount\r\n : 0\r\n );\r\n resolve(res);\r\n },\r\n (err) => {\r\n reject(err);\r\n }\r\n );\r\n });\r\n };\r\n\r\n const onGetPlanningType = () => {\r\n return new Promise((resolve, reject) => {\r\n statementActions.PlanningType().then(\r\n (res) => {\r\n setPlanningTypeOption(\r\n res && res.content && res.content.length > 0\r\n ? res.content.map((item) => {\r\n return { ...item, value: item.id, label: item.name };\r\n })\r\n : []\r\n );\r\n resolve(res);\r\n },\r\n (err) => {\r\n reject(err);\r\n }\r\n );\r\n });\r\n };\r\n\r\n const onGetApprovalAgencyLevel = () => {\r\n return new Promise((resolve, reject) => {\r\n statementActions.ApprovalAgencyLevel().then(\r\n (res) => {\r\n setApprovalLevelOption(\r\n res && res.content && res.content.length > 0\r\n ? res.content.map((item) => {\r\n return { ...item, value: item.id, label: item.name };\r\n })\r\n : []\r\n );\r\n resolve(res);\r\n },\r\n (err) => {\r\n reject(err);\r\n }\r\n );\r\n });\r\n };\r\n\r\n const onSearch = (data, isClearSearch = false) => {\r\n setIsShowSearch(false);\r\n document.getElementById(\"dropdownToggle\").click();\r\n showLoading(true);\r\n setCurrentPageIndexDoing((data && data.pageIndex) || 1);\r\n\r\n let params = {\r\n pageIndex: (data && data.pageIndex) || 1,\r\n planningName: (data && data.planningName) || null,\r\n planningType: (planningTypeModel && planningTypeModel.value) || null,\r\n approvalLevel: (approvalLevelModel && approvalLevelModel.value) || null,\r\n place: (data && data.address) || null,\r\n planningAgency: (data && data.agenciesOrganizations) || null,\r\n consultingUnit: (data && data.consultingUnit) || null,\r\n startTime:\r\n (startDate && moment(startDate).format(\"YYYY-MM-DDTHH:mm:ssZ\")) || null,\r\n endTime:\r\n (endDate && moment(endDate).format(\"YYYY-MM-DDTHH:mm:ssZ\")) || null,\r\n };\r\n\r\n if (data && data.search) {\r\n params = {\r\n ...params,\r\n planningName: data.search,\r\n };\r\n }\r\n\r\n if (isClearSearch === true) {\r\n params = {\r\n pageIndex: 1,\r\n };\r\n }\r\n\r\n consultantCommunityActions\r\n .GetListConsultantCommunity({ ...params, pageSize: currentPageSizeDoing })\r\n .then(\r\n (res) => {\r\n if (\r\n res &&\r\n res.content &&\r\n res.content.items &&\r\n res.content.items.length > 0\r\n ) {\r\n setDoingModel(res.content.items);\r\n setTotalItemCountDoing(\r\n res && res.content && res.content.totalItemCount\r\n ? res.content.totalItemCount\r\n : 0\r\n );\r\n setPageCountDoing(\r\n res && res.content && res.content.pageCount\r\n ? res.content.pageCount\r\n : 0\r\n );\r\n } else {\r\n setDoingModel(res.content.items);\r\n setTotalItemCountDoing(\r\n res && res.content && res.content.totalItemCount\r\n ? res.content.totalItemCount\r\n : 0\r\n );\r\n setPageCountDoing(\r\n res && res.content && res.content.pageCount\r\n ? res.content.pageCount\r\n : 0\r\n );\r\n // ShowNotification(\r\n // viVN.Warning.NoData,\r\n // NotificationMessageType.Warning,\r\n // NotificationPosition.Center\r\n // );\r\n }\r\n showLoading(false);\r\n },\r\n (err) => {\r\n showLoading(false);\r\n }\r\n );\r\n\r\n consultantCommunityActions\r\n .GetListResultConsultantCommunity({\r\n ...params,\r\n pageSize: currentPageSizeResult,\r\n })\r\n .then(\r\n (res) => {\r\n setResultModel(\r\n res &&\r\n res.content &&\r\n res.content.items &&\r\n res.content.items.length > 0\r\n ? res.content.items\r\n : []\r\n );\r\n setTotalItemCountResult(\r\n res && res.content && res.content.totalItemCount\r\n ? res.content.totalItemCount\r\n : 0\r\n );\r\n setPageCountResult(\r\n res && res.content && res.content.pageCount\r\n ? res.content.pageCount\r\n : 0\r\n );\r\n showLoading(false);\r\n },\r\n (err) => {\r\n showLoading(false);\r\n }\r\n );\r\n };\r\n\r\n const onClearSearch = () => {\r\n document.getElementById(\"dropdownToggle\").click();\r\n document.getElementById(\"searchFormOne\").reset();\r\n document.getElementById(\"searchFormTwo\").reset();\r\n setStartDate(null);\r\n setEndDate(null);\r\n setPlanningTypeModel(null);\r\n setApprovalLevelModel(null);\r\n onSearch(null, true);\r\n };\r\n\r\n const onGetListExpiredFormPaging = (data) => {\r\n showLoading(true);\r\n setCurrentPageIndexResult(data.pageIndex || 1);\r\n\r\n let params = {\r\n pageIndex: data.pageIndex || 1,\r\n pageSize: currentPageSizeResult,\r\n };\r\n\r\n consultantCommunityActions.GetListResultConsultantCommunity(params).then(\r\n (res) => {\r\n setResultModel(\r\n res &&\r\n res.content &&\r\n res.content.items &&\r\n res.content.items.length > 0\r\n ? res.content.items\r\n : []\r\n );\r\n setTotalItemCountDoing(\r\n res && res.content && res.content.totalItemCount\r\n ? res.content.totalItemCount\r\n : 0\r\n );\r\n showLoading(false);\r\n },\r\n (err) => {\r\n showLoading(false);\r\n }\r\n );\r\n };\r\n\r\n const handleClickSearchIcon = () => {\r\n setIsShowSearch(!isShowSearch);\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 {doingModel && doingModel.length > 0 ? (\r\n doingModel.map((item, index) =>\r\n index === 0 ? (\r\n
    \r\n \r\n \r\n \r\n\r\n
    \r\n \r\n {item.planningName}\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n

    {item.title}

    \r\n
    \r\n
    \r\n Ngày bắt đầu: \r\n {moment(new Date(item.startTime)).format(\r\n \"DD/MM/YYYY\"\r\n )}\r\n
    \r\n
    \r\n Ngày hết hạn: \r\n {moment(new Date(item.endTime)).format(\"DD/MM/YYYY\")}\r\n
    \r\n
    \r\n
    \r\n ) : (\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n {item.planningName}\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n

    {item.title}

    \r\n
    \r\n
    \r\n Ngày bắt đầu: \r\n {moment(new Date(item.startTime)).format(\r\n \"DD/MM/YYYY\"\r\n )}\r\n
    \r\n
    \r\n Ngày hết hạn: \r\n {moment(new Date(item.endTime)).format(\r\n \"DD/MM/YYYY\"\r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n )\r\n ) : (\r\n
    \r\n {\" \"}\r\n Không có quy hoạch nào đang được xin ý kiến\r\n
    \r\n )}\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n KẾT QUẢ XIN Ý KIẾN \r\n \r\n
    \r\n
    \r\n
    \r\n {resultModel && resultModel.length > 0 ? (\r\n resultModel.map((item, index) => (\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n {item.title}\r\n \r\n
    \r\n
    \r\n
    \r\n ))\r\n ) : (\r\n
    \r\n {\" \"}\r\n Không có kết quả xin ý kiến nào\r\n
    \r\n )}\r\n
    \r\n {resultModel && resultModel.length > 0 && (\r\n
    \r\n 1 ? \"float-left\" : \"\"\r\n }`}\r\n >\r\n Có {totalItemCountResult} kết quả\r\n
    \r\n {/* {pageCountResult && pageCountResult > 0 && (\r\n
    \r\n {\r\n onGetListExpiredFormPaging({\r\n pageIndex: pageIndex,\r\n });\r\n }}\r\n />\r\n
    \r\n )} */}\r\n
    \r\n )}\r\n
    \r\n\r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n {doingModel && doingModel.length > 0 && (\r\n
    \r\n 1 ? \"float-left\" : \"\"\r\n }`}\r\n >\r\n Có {totalItemCountDoing} kết quả\r\n
    \r\n {pageCountDoing && pageCountDoing > 1 && (\r\n
    \r\n {\r\n onSearch({\r\n pageIndex: pageIndex,\r\n });\r\n }}\r\n />\r\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 isLoading: state.app.loading,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) =>\r\n bindActionCreators(\r\n {\r\n showLoading: appActions.ShowLoading,\r\n },\r\n dispatch\r\n );\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(PleaseConsultTheCommunityDesktopView);\r\n","/* eslint-disable react/jsx-no-target-blank */\r\n/* eslint-disable react-hooks/exhaustive-deps */\r\nimport React, { useState, useEffect } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport moment from \"moment\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faTable } from \"@fortawesome/free-solid-svg-icons\";\r\nimport Modal from \"react-bootstrap/Modal\";\r\n\r\nimport * as consultantCommunityActions from \"../../../redux/store/consultant-community/consultant-community.store\";\r\nimport * as appActions from \"../../../core/app.store\";\r\n\r\nimport Pagination from \"../../../components/pagination/pagination.view\";\r\n\r\nimport ShowNotification from \"../../../components/react-notifications/react-notifications\";\r\nimport {\r\n NotificationMessageType,\r\n DomainAdminSide,\r\n NotificationPosition,\r\n} from \"../../../utils/configuration\";\r\nimport * as viVN from \"../../../languages/vi-VN.json\";\r\n\r\nimport \"./summary-ideas.scss\";\r\n\r\nfunction SummaryIdeasView(props) {\r\n const { showLoading, id } = props;\r\n\r\n const [resultModel, setResultModel] = useState([]);\r\n const [resultItem, setResultItem] = useState(\"\");\r\n const [questions, setQuestions] = useState(\"\");\r\n const currentPageIndexResult = 1;\r\n const currentPageSizeResult = 10;\r\n const [totalItemCountResult, setTotalItemCountResult] = useState(0);\r\n const [pageCount, setPageCount] = useState(0);\r\n\r\n const [show, setShow] = useState(false);\r\n\r\n // useEffect(() => {\r\n // let search = new URLSearchParams(props.location.search).get(\"search\");\r\n // onGetListExpiredForm({\r\n // pageIndex: currentPageIndexResult,\r\n // pageSize: currentPageSizeResult,\r\n // consultantCommunityId: (search && Number(search)) || null,\r\n // });\r\n // }, []);\r\n useEffect(() => {\r\n //let search = new URLSearchParams(props.location.search).get(\"search\");\r\n onGetListExpiredForm({\r\n pageIndex: currentPageIndexResult,\r\n pageSize: currentPageSizeResult,\r\n consultantCommunityId: id,\r\n });\r\n }, [id]);\r\n\r\n const onGetListExpiredForm = (data) => {\r\n showLoading(true);\r\n consultantCommunityActions.GetListExpiredForm(data).then(\r\n (res) => {\r\n setResultModel(\r\n res &&\r\n res.content &&\r\n res.content.items &&\r\n res.content.items.length > 0\r\n ? res.content.items\r\n : []\r\n );\r\n setTotalItemCountResult(\r\n res && res.content && res.content.totalItemCount\r\n ? res.content.totalItemCount\r\n : 0\r\n );\r\n setPageCount(\r\n res && res.content && res.content.pageCount\r\n ? res.content.pageCount\r\n : 0\r\n );\r\n let s = 0\r\n setSum(\r\n res.content &&\r\n res.content.items &&\r\n res.content.items.length > 0\r\n ? res.content.items.map(item => {\r\n return s = s + item.numberResult\r\n })\r\n : 0\r\n )\r\n\r\n showLoading(false);\r\n },\r\n (err) => {\r\n showLoading(false);\r\n }\r\n );\r\n };\r\n\r\n const GetReportFeedback = (id) => {\r\n showLoading(true);\r\n consultantCommunityActions.GetReportFeedback(id).then(\r\n (res) => {\r\n if (res && res.content) {\r\n setQuestions(res.content);\r\n setShow(true);\r\n }\r\n showLoading(false);\r\n },\r\n (err) => {\r\n showLoading(false);\r\n ShowNotification(\r\n viVN.Errors[(err && err.errorType) || \"UnableHandleException\"],\r\n NotificationMessageType.Error\r\n );\r\n }\r\n );\r\n };\r\n \r\n const onShowFeedBack = (item) => {\r\n if (item.numberResult > 0) {\r\n GetReportFeedback(item.id);\r\n setResultItem(item);\r\n } else {\r\n ShowNotification(\r\n \"Chưa có ý kiến nào\",\r\n NotificationMessageType.Warning,\r\n NotificationPosition.Center\r\n );\r\n }\r\n };\r\n const [sum, setSum] = useState(0);\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n Có {sum} kết quả\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {resultModel && resultModel.length > 0 ? (\r\n resultModel.map((item, index) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))\r\n ) : (\r\n \r\n \r\n \r\n )}\r\n \r\n
    Tên\r\n Trạng thái\r\n \r\n Thời gian bắt đầu\r\n \r\n Thời gian kết thúc\r\n \r\n Chi tiết\r\n
    \r\n {item.title}\r\n
    \r\n {item.planningName}\r\n
    \r\n {!item.isExpired ? \"Đang xin ý kiến\" : \"Kết thúc\"}\r\n \r\n {moment(new Date(item.startTime)).format(\"DD/MM/YYYY\")}\r\n \r\n {moment(new Date(item.endTime)).format(\"DD/MM/YYYY\")}\r\n \r\n onShowFeedBack(item)}\r\n />\r\n
    \r\n Không có dữ liệu\r\n
    \r\n
    \r\n
    \r\n {resultModel && resultModel.length > 0 && pageCount > 1 && (\r\n
    \r\n {\r\n onGetListExpiredForm({\r\n pageIndex: pageIndex,\r\n pageSize: currentPageSizeResult,\r\n });\r\n }}\r\n />\r\n
    \r\n )}\r\n
    \r\n {resultItem && questions && show && (\r\n \r\n \r\n \r\n
    \r\n Kết quả Xin ý kiến về {resultItem.title} -{\" \"}\r\n {resultItem.planningName}\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n {/* */}\r\n \r\n {questions &&\r\n questions.questions &&\r\n questions.questions.length > 0 &&\r\n questions.questions.map((itemQuestion, indexQuestion) => (\r\n \r\n \r\n \r\n ))}\r\n \r\n
    \r\n Tổng số ý kiến: {resultItem.numberResult}\r\n \r\n \r\n Chi tiết\r\n \r\n
    \r\n {`${indexQuestion + 1}. ${itemQuestion.title}`}\r\n
      \r\n {itemQuestion.answers &&\r\n itemQuestion.answers.length > 0 &&\r\n itemQuestion.answers.map(\r\n (itemAnswer, indexAnswer) => (\r\n \r\n {itemAnswer.title}: {itemAnswer.count}\r\n \r\n )\r\n )}\r\n
    • \r\n Ý kiến khác:\r\n
      \r\n {itemQuestion.additions &&\r\n itemQuestion.additions.length > 0 &&\r\n itemQuestion.additions.map(\r\n (itemAddition, indexAddition) =>\r\n itemAddition && (\r\n \r\n - {itemAddition}\r\n

      \r\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 isLoading: state.app.loading,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) =>\r\n bindActionCreators(\r\n {\r\n showLoading: appActions.ShowLoading,\r\n },\r\n dispatch\r\n );\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SummaryIdeasView);\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\n/* eslint-disable react-hooks/exhaustive-deps */\r\n/* eslint-disable @typescript-eslint/no-unused-expressions */\r\nimport React, { useState, useEffect } from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport UrlCollect from \"../../../common/url-collect\";\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport Select from \"react-select\";\r\nimport SummaryIdeasView from \"../summary-ideas/summary.view\"\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport {\r\n faDownload,\r\n faExclamationCircle,\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\nimport { useForm } from \"react-hook-form\";\r\nimport * as appActions from \"../../../core/app.store\";\r\nimport * as consultantCommunityActions from \"../../../redux/store/consultant-community/consultant-community.store\";\r\nimport { APIUrlDefault } from \"../../../utils/configuration\";\r\n\r\nimport ShowNotification from \"../../../components/react-notifications/react-notifications\";\r\nimport { NotificationMessageType } from \"../../../utils/configuration\";\r\nimport * as viVN from \"../../../languages/vi-VN.json\";\r\n\r\nimport \"./please-comment.scss\";\r\nimport history from \"../../../common/history\";\r\nimport * as configuration from \"../../../utils/configuration\";\r\nimport { saveAs } from \"file-saver\";\r\nimport * as apiConfig from \"../../../api/api-config\"\r\nconst ANSWER_TYPE = {\r\n RADIO: \"RADIO\",\r\n TEXT_BOX: \"TEXT_BOX\",\r\n CHECK_BOX: \"CHECK_BOX\",\r\n DROPDOWN: \"DROPDOWN\",\r\n};\r\n\r\nfunction PleaseCommentView(props) {\r\n const { showLoading } = props;\r\n const { id } = props.match.params;\r\n\r\n const [data, setData] = useState(\"\");\r\n const [doingModel, setDoingModel] = useState([]);\r\n const [resultModel, setResultModel] = useState([]);\r\n const [formTemplate, setFormTemplate] = useState([]);\r\n\r\n const currentPageIndexDoing = 1;\r\n const currentPageSizeDoing = 10;\r\n const [totalItemCountDoing, setTotalItemCountDoing] = useState(0);\r\n\r\n const currentPageIndexResult = 1;\r\n const currentPageSizeResult = 10;\r\n const [totalItemCountResult, setTotalItemCountResult] = useState(0);\r\n\r\n const { register, handleSubmit, errors } = useForm({\r\n mode: \"all\",\r\n reValidateMode: \"onBlur\",\r\n });\r\n\r\n useEffect(() => {\r\n id ? onGetData() : history.push(UrlCollect.PleaseConsultTheCommunity);\r\n }, [id]);\r\n\r\n const onGetData = () => {\r\n showLoading(true);\r\n Promise.all([\r\n onGetDetail(),\r\n onGetListConsultantCommunity({\r\n pageIndex: currentPageIndexDoing,\r\n pageSize: currentPageSizeDoing,\r\n }),\r\n onGetDetailFormTemplate(),\r\n onGetListExpiredForm({\r\n pageIndex: currentPageIndexResult,\r\n pageSize: currentPageSizeResult,\r\n }),\r\n ])\r\n .then((res) => {\r\n showLoading(false);\r\n })\r\n .catch((err) => {\r\n showLoading(false);\r\n });\r\n };\r\n\r\n const onGetListConsultantCommunity = (data) => {\r\n return new Promise((resolve, reject) => {\r\n consultantCommunityActions.GetListConsultantCommunity(data).then(\r\n (res) => {\r\n setDoingModel(\r\n res &&\r\n res.content &&\r\n res.content.items &&\r\n res.content.items.length > 0\r\n ? res.content.items.filter((item) => item.id !== id)\r\n : []\r\n );\r\n setTotalItemCountDoing(\r\n res && res.content && res.content.totalItemCount\r\n ? res.content.totalItemCount\r\n : 0\r\n );\r\n resolve(res);\r\n },\r\n (err) => {\r\n reject(err);\r\n }\r\n );\r\n });\r\n };\r\n\r\n const onGetListExpiredForm = (data) => {\r\n return new Promise((resolve, reject) => {\r\n consultantCommunityActions.GetListResultConsultantCommunity(data).then(\r\n (res) => {\r\n console.log(res.content.items)\r\n setResultModel(\r\n res &&\r\n res.content &&\r\n res.content.items &&\r\n res.content.items.length > 0\r\n ? res.content.items.filter((item) => item.id !== id)\r\n : []\r\n );\r\n setTotalItemCountResult(\r\n res && res.content && res.content.totalItemCount\r\n ? res.content.totalItemCount\r\n : 0\r\n );\r\n resolve(res);\r\n },\r\n (err) => {\r\n reject(err);\r\n }\r\n );\r\n });\r\n };\r\n\r\n const onGetDetail = () => {\r\n return new Promise((resolve, reject) => {\r\n consultantCommunityActions.GetDetailConsultantCommunity(id).then(\r\n (res) => {\r\n setData(res && res.content);\r\n resolve(res);\r\n },\r\n (err) => {\r\n reject(err);\r\n }\r\n );\r\n });\r\n };\r\n\r\n const onGetDetailFormTemplate = () => {\r\n return new Promise((resolve, reject) => {\r\n consultantCommunityActions.GetDetailFormTemplate(id).then(\r\n (res) => {\r\n setFormTemplate(res && res.content);\r\n resolve(res);\r\n },\r\n (err) => {\r\n reject(err);\r\n }\r\n );\r\n });\r\n };\r\n\r\n const onSubmitComment = (data) => {\r\n if (!data) return;\r\n showLoading(true);\r\n\r\n let params = {\r\n formTemplateId: (formTemplate && formTemplate.id) || null,\r\n name: data.fullName,\r\n phoneNo: data.mobilePhone,\r\n email: data.email,\r\n address: data.address,\r\n suggestion: \"\",\r\n answers: [],\r\n };\r\n\r\n formTemplate &&\r\n formTemplate.questions &&\r\n formTemplate.questions.length > 0 &&\r\n formTemplate.questions.map((item) => {\r\n let answerObj = {};\r\n let answers = params.answers || [];\r\n let addition = data[`haveAdditional_${item.id}`];\r\n\r\n if (item.answerType === ANSWER_TYPE.RADIO) {\r\n let answerRadio = data[`answerRadio_${item.id}`];\r\n\r\n if (answerRadio) {\r\n answerObj = {\r\n questionId: item.id,\r\n answerId: parseInt(answerRadio),\r\n };\r\n\r\n if (addition) {\r\n answerObj = {\r\n ...answerObj,\r\n addition: addition,\r\n };\r\n }\r\n\r\n answers.push(answerObj);\r\n }\r\n } else if (item.answerType === ANSWER_TYPE.DROPDOWN) {\r\n let answerDropdown = data[`answerDropdown_${item.id}`];\r\n\r\n if (answerDropdown) {\r\n answerObj = {\r\n questionId: item.id,\r\n answerId: parseInt(answerDropdown),\r\n };\r\n\r\n if (addition) {\r\n answerObj = {\r\n ...answerObj,\r\n addition: addition,\r\n };\r\n }\r\n\r\n answers.push(answerObj);\r\n }\r\n } else if (item.answerType === ANSWER_TYPE.CHECK_BOX) {\r\n item.answers.map((answer) => {\r\n let answerCheckBox = data[`answerCheckBox_${item.id}_${answer.id}`];\r\n\r\n if (answerCheckBox) {\r\n answerObj = {\r\n questionId: item.id,\r\n answerId: answer.id,\r\n };\r\n\r\n if (addition) {\r\n answerObj = {\r\n ...answerObj,\r\n addition: addition,\r\n };\r\n }\r\n\r\n answers.push(answerObj);\r\n }\r\n });\r\n } else if (item.answerType === ANSWER_TYPE.TEXT_BOX) {\r\n let answerTextBox = data[`answerTextBox_${item.id}`];\r\n\r\n if (answerTextBox) {\r\n answerObj = {\r\n questionId: item.id,\r\n addition: answerTextBox,\r\n };\r\n\r\n answers.push(answerObj);\r\n }\r\n }\r\n\r\n params = {\r\n ...params,\r\n answers: answers,\r\n };\r\n });\r\n\r\n consultantCommunityActions.CreateFeedback(params).then(\r\n (res) => {\r\n ShowNotification(\r\n viVN.Success.FeedbackSuccess,\r\n NotificationMessageType.Success\r\n );\r\n showLoading(false);\r\n history.push(\"/y-kien-cong-dong\");\r\n },\r\n (err) => {\r\n showLoading(false);\r\n ShowNotification(\r\n viVN.Errors[(err && err.errorType) || \"UnableHandleException\"],\r\n NotificationMessageType.Error\r\n );\r\n }\r\n );\r\n };\r\n\r\n const renderAnswerInput = (_question) => {\r\n if (!_question) return null;\r\n\r\n switch (_question.answerType) {\r\n case ANSWER_TYPE.RADIO:\r\n if (!_question.answers || _question.answers.length === 0) return null;\r\n return (\r\n _question.answers &&\r\n _question.answers.length > 0 &&\r\n _question.answers.map((answerItem, answerIndex) => (\r\n \r\n \r\n \r\n {answerItem.title}\r\n \r\n \r\n ))\r\n );\r\n case ANSWER_TYPE.TEXT_BOX:\r\n return (\r\n \r\n \r\n \r\n );\r\n case ANSWER_TYPE.CHECK_BOX:\r\n if (!_question.answers || _question.answers.length === 0) return null;\r\n return (\r\n _question.answers &&\r\n _question.answers.length > 0 &&\r\n _question.answers.map((answerItem, answerIndex) => (\r\n \r\n \r\n \r\n {answerItem.title}\r\n \r\n \r\n ))\r\n );\r\n case ANSWER_TYPE.DROPDOWN:\r\n if (!_question.answers || _question.answers.length === 0) return null;\r\n return (\r\n \r\n \r\n \r\n {_question.answers.map((item) => (\r\n \r\n ))}\r\n \r\n \r\n );\r\n default:\r\n return null;\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n {data && (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {data.planningName}
    \r\n
    {data.title}
    \r\n
    \r\n
    \r\n
    \r\n \r\n Tải xuống file đính kèm tại đây:\r\n \r\n {data && data.documentFiles && data.documentFiles.length > 0\r\n && data.documentFiles.map(item => (\r\n \r\n ))\r\n }\r\n
    \r\n {!data.isExpired &&
    }\r\n\r\n {data && (\r\n
    \r\n \r\n \r\n Gửi ý kiến\r\n \r\n \r\n
    \r\n {data.isExpired &&
    }\r\n {data.isExpired && }\r\n
    \r\n )}\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n QUY HOẠCH ĐANG XIN Ý KIẾN\r\n \r\n
    \r\n
    \r\n
    \r\n {doingModel && doingModel.length > 0 ? (\r\n doingModel.map((item) => (\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n {item.title}\r\n \r\n
    \r\n
    \r\n
    \r\n ))\r\n ) : (\r\n
    \r\n \r\n Không có dữ liệu\r\n
    \r\n )}\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n KẾT QUẢ XIN Ý KIẾN\r\n \r\n
    \r\n
    \r\n
    \r\n {resultModel && resultModel.length > 0 ? (\r\n resultModel.map((item) => (\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n {item.title}\r\n \r\n
    \r\n
    \r\n
    \r\n ))\r\n ) : (\r\n
    Không có dữ liệu
    \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 isLoading: state.app.loading,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) =>\r\n bindActionCreators(\r\n {\r\n showLoading: appActions.ShowLoading,\r\n },\r\n dispatch\r\n );\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(PleaseCommentView);\r\n","/* eslint-disable react/jsx-no-target-blank */\r\n/* eslint-disable react-hooks/exhaustive-deps */\r\nimport React, { useState, useEffect } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport moment from \"moment\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faTable } from \"@fortawesome/free-solid-svg-icons\";\r\nimport Modal from \"react-bootstrap/Modal\";\r\n\r\nimport * as consultantCommunityActions from \"../../../redux/store/consultant-community/consultant-community.store\";\r\nimport * as appActions from \"../../../core/app.store\";\r\n\r\nimport Pagination from \"../../../components/pagination/pagination.view\";\r\n\r\nimport ShowNotification from \"../../../components/react-notifications/react-notifications\";\r\nimport {\r\n NotificationMessageType,\r\n DomainAdminSide,\r\n NotificationPosition,\r\n} from \"../../../utils/configuration\";\r\nimport * as viVN from \"../../../languages/vi-VN.json\";\r\n\r\nimport \"./summary-ideas.scss\";\r\n\r\nfunction SummaryIdeasView(props) {\r\n const { showLoading } = props;\r\n\r\n const [resultModel, setResultModel] = useState([]);\r\n const [resultItem, setResultItem] = useState(\"\");\r\n const [questions, setQuestions] = useState(\"\");\r\n const currentPageIndexResult = 1;\r\n const currentPageSizeResult = 10;\r\n const [totalItemCountResult, setTotalItemCountResult] = useState(0);\r\n const [pageCount, setPageCount] = useState(0);\r\n\r\n const [show, setShow] = useState(false);\r\n\r\n useEffect(() => {\r\n let search = new URLSearchParams(props.location.search).get(\"search\");\r\n onGetListExpiredForm({\r\n pageIndex: currentPageIndexResult,\r\n pageSize: currentPageSizeResult,\r\n consultantCommunityId: (search && Number(search)) || null,\r\n });\r\n }, []);\r\n\r\n const onGetListExpiredForm = (data) => {\r\n showLoading(true);\r\n consultantCommunityActions.GetListExpiredForm(data).then(\r\n (res) => {\r\n setResultModel(\r\n res &&\r\n res.content &&\r\n res.content.items &&\r\n res.content.items.length > 0\r\n ? res.content.items\r\n : []\r\n );\r\n setTotalItemCountResult(\r\n res && res.content && res.content.totalItemCount\r\n ? res.content.totalItemCount\r\n : 0\r\n );\r\n setPageCount(\r\n res && res.content && res.content.pageCount\r\n ? res.content.pageCount\r\n : 0\r\n );\r\n\r\n showLoading(false);\r\n },\r\n (err) => {\r\n showLoading(false);\r\n }\r\n );\r\n };\r\n\r\n const GetReportFeedback = (id) => {\r\n showLoading(true);\r\n consultantCommunityActions.GetReportFeedback(id).then(\r\n (res) => {\r\n if (res && res.content) {\r\n setQuestions(res.content);\r\n setShow(true);\r\n }\r\n showLoading(false);\r\n },\r\n (err) => {\r\n showLoading(false);\r\n ShowNotification(\r\n viVN.Errors[(err && err.errorType) || \"UnableHandleException\"],\r\n NotificationMessageType.Error\r\n );\r\n }\r\n );\r\n };\r\n \r\n const onShowFeedBack = (item) => {\r\n if (item.numberResult > 0) {\r\n GetReportFeedback(item.id);\r\n setResultItem(item);\r\n } else {\r\n ShowNotification(\r\n \"Chưa có ý kiến nào\",\r\n NotificationMessageType.Warning,\r\n NotificationPosition.Center\r\n );\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n {props.location &&\r\n props.location.search &&\r\n resultModel &&\r\n resultModel.length > 0 ? (\r\n
    {resultModel[0].planningName}
    \r\n ) : (\r\n
    Tổng hợp ý kiến Quy hoạch
    \r\n )}\r\n\r\n
    \r\n Có {totalItemCountResult} kết quả\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {resultModel && resultModel.length > 0 ? (\r\n resultModel.map((item, index) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))\r\n ) : (\r\n \r\n \r\n \r\n )}\r\n \r\n
    STTTên\r\n Trạng thái\r\n \r\n Thời gian bắt đầu\r\n \r\n Thời gian kết thúc\r\n \r\n Số phiếu\r\n \r\n Chi tiết\r\n
    {index + 1}\r\n {item.title}\r\n
    \r\n {!props.location.search ? item.planningName : \"\"}\r\n
    \r\n {!item.isExpired ? \"Đang xin ý kiến\" : \"Kết thúc\"}\r\n \r\n {moment(new Date(item.startTime)).format(\"DD/MM/YYYY\")}\r\n \r\n {moment(new Date(item.endTime)).format(\"DD/MM/YYYY\")}\r\n {item.numberResult}\r\n onShowFeedBack(item)}\r\n />\r\n
    \r\n Không có dữ liệu\r\n
    \r\n
    \r\n
    \r\n {resultModel && resultModel.length > 0 && pageCount > 1 && (\r\n
    \r\n {\r\n onGetListExpiredForm({\r\n pageIndex: pageIndex,\r\n pageSize: currentPageSizeResult,\r\n });\r\n }}\r\n />\r\n
    \r\n )}\r\n
    \r\n {resultItem && questions && show && (\r\n \r\n \r\n \r\n
    \r\n Kết quả Xin ý kiến về {resultItem.title} -{\" \"}\r\n {resultItem.planningName}\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {questions &&\r\n questions.questions &&\r\n questions.questions.length > 0 &&\r\n questions.questions.map((itemQuestion, indexQuestion) => (\r\n \r\n \r\n \r\n ))}\r\n \r\n
    \r\n Tổng số ý kiến: {resultItem.numberResult}\r\n \r\n \r\n Chi tiết\r\n \r\n
    \r\n {`${indexQuestion + 1}. ${itemQuestion.title}`}\r\n
      \r\n {itemQuestion.answers &&\r\n itemQuestion.answers.length > 0 &&\r\n itemQuestion.answers.map(\r\n (itemAnswer, indexAnswer) => (\r\n \r\n {itemAnswer.title}: {itemAnswer.count}\r\n \r\n )\r\n )}\r\n
    • \r\n Ý kiến khác:\r\n
      \r\n {itemQuestion.additions &&\r\n itemQuestion.additions.length > 0 &&\r\n itemQuestion.additions.map(\r\n (itemAddition, indexAddition) =>\r\n itemAddition && (\r\n \r\n - {itemAddition}\r\n

      \r\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 isLoading: state.app.loading,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) =>\r\n bindActionCreators(\r\n {\r\n showLoading: appActions.ShowLoading,\r\n },\r\n dispatch\r\n );\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SummaryIdeasView);\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport {faSearch} from \"@fortawesome/free-solid-svg-icons\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport * as appActions from \"../../core/app.store\";\r\nimport Pagination from \"../../components/pagination/pagination.view\";\r\nimport UrlCollect from \"../../common/url-collect\";\r\nimport ServiceLink from \"../planning-announcement/menu-right/service-link.view\";\r\nimport {\r\n APIUrlDefault, DomainUserSide,\r\n NotificationMessageType,\r\n NotificationPosition,\r\n} from \"../../utils/configuration\";\r\nimport MenuRightView from \"./menu-right/menu-right.view\";\r\nimport \"@geedmo/yamm/src/yamm.scss\";\r\nimport \"react-datepicker/dist/react-datepicker.css\";\r\nimport \"./list.scss\";\r\nimport * as newsActions from \"../../redux/store/news/news.store\";\r\nimport dateformat from \"dateformat\";\r\n\r\nconst firstLoad = true;\r\n\r\nfunction ListNewsView(props) {\r\n const { showLoading, isQHT, isQHCC, isQHHTKT} = props;\r\n const [keyword, setKeyword] = useState([]);\r\n\r\n const [currentPageIndexDoing, setCurrentPageIndexDoing] = useState(1);\r\n const currentPageSizeDoing = 4;\r\n const [totalItemCountDoing, setTotalItemCountDoing] = useState(0);\r\n\r\n const [pageCountDoing, setPageCountDoing] = useState();\r\n const [listHotNews, setHotNewsModel] = useState([]);\r\n const [listNews, setListNews] = useState([]);\r\n const [hotNews, setHotNews] = useState({});\r\n\r\n useEffect(() => {\r\n onGetData();\r\n }, [firstLoad]);\r\n\r\n const onGetData = () => {\r\n showLoading(true);\r\n console.log(isQHHTKT)\r\n console.log(isQHT)\r\n console.log(isQHCC)\r\n Promise.all([\r\n onGetListHotNews({\r\n pageIndex: 1,\r\n pageSize: 5,\r\n // isQHT: isQHT, \r\n // isQHCC: isQHCC, \r\n // isQHHTKT: isQHHTKT,\r\n }),\r\n onGetListNews({\r\n pageIndex: currentPageIndexDoing,\r\n pageSize: currentPageSizeDoing,\r\n isQHT: isQHT, \r\n isQHCC: isQHCC, \r\n isQHHTKT: isQHHTKT,\r\n }),\r\n ])\r\n .then((res) => {\r\n showLoading(false);\r\n })\r\n .catch((err) => {\r\n showLoading(false);\r\n });\r\n };\r\n\r\n const setTextSearch = (event) => {\r\n setKeyword(event.target.value);\r\n }\r\n const handleKeyPress = (event) => {\r\n if (event.key === 'Enter') {\r\n onGetListNews({\r\n keyword:keyword,\r\n pageIndex: 1,\r\n pageSize: currentPageSizeDoing,\r\n isQHT: isQHT, \r\n isQHCC: isQHCC, \r\n isQHHTKT: isQHHTKT,\r\n }\r\n );\r\n }\r\n };\r\n\r\n const handleClickSearchIcon = () => {\r\n onGetListNews({\r\n keyword:keyword,\r\n pageIndex: 1,\r\n pageSize: currentPageSizeDoing,\r\n isQHT: isQHT, \r\n isQHCC: isQHCC, \r\n isQHHTKT: isQHHTKT,\r\n }\r\n );\r\n };\r\n\r\n const onGetListNews = (data) => {\r\n return new Promise((resolve, reject) => {\r\n newsActions.GetListNewsByCategory(data).then(\r\n (res) => {\r\n setListNews(\r\n res &&\r\n res.content &&\r\n res.content.items\r\n && res.content.items.length > 0 ? res.content.items: []\r\n );\r\n setTotalItemCountDoing(\r\n res && res.content && res.content.totalItemCount\r\n ? res.content.totalItemCount\r\n : 0\r\n );\r\n setPageCountDoing(\r\n res && res.content && res.content.pageCount\r\n ? res.content.pageCount\r\n : 0\r\n );\r\n resolve(res);\r\n },\r\n (err) => {\r\n reject(err);\r\n }\r\n );\r\n });\r\n }\r\n\r\n const onGetListHotNews = (data) => {\r\n return new Promise((resolve, reject) => {\r\n newsActions.GetListHotNews(data).then(\r\n (res) => {\r\n setHotNewsModel(\r\n res &&\r\n res.content &&\r\n res.content.items\r\n && res.content.items.length > 0 ? res.content.items: []\r\n );\r\n resolve(res);\r\n },\r\n (err) => {\r\n reject(err);\r\n }\r\n );\r\n });\r\n }\r\n\r\n const onPagingClick = (data, isClearSearch = false) => {\r\n onGetListNews({\r\n keyword:keyword,\r\n pageIndex: data.pageIndex,\r\n pageSize: currentPageSizeDoing,\r\n isQHT: isQHT, \r\n isQHCC: isQHCC, \r\n isQHHTKT: isQHHTKT,\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 {Array.isArray(listNews) && listNews.length >0 ? (\r\n listNews.map((item,index) => (\r\n index === 0 ? (\r\n
    \r\n
    \r\n \r\n \r\n (e.target.src = require(\"../../assets/image/noImage.png\"))\r\n }\r\n alt={item.title}\r\n />\r\n \r\n
    \r\n {item.title}\r\n
    {dateformat(item.created_date, \"dd/mm/yyyy\")}
    \r\n

    \r\n
    \r\n ):(\r\n
    \r\n \r\n
    \r\n {item.title}\r\n
    {dateformat(item.created_date, \"dd/mm/yyyy\")}
    \r\n
    {item.description}
    \r\n
    \r\n
    \r\n )))\r\n ):(\r\n
    Chưa có dữ liệu để hiển thị!
    \r\n )}\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n TIN MỚI NHẤT\r\n \r\n
    \r\n
    \r\n
    \r\n {listHotNews && listHotNews.length >0 ? (\r\n listHotNews.map((item,index) => (\r\n \r\n ))\r\n ):(\r\n
    Chưa có dữ liệu để hiển thị!
    \r\n )}\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {listNews && listNews.length > 0 && (\r\n
    \r\n 1 ? \"float-left\" : \"\"\r\n }`}\r\n >\r\n Có {totalItemCountDoing} kết quả\r\n
    \r\n {pageCountDoing && pageCountDoing > 1 && (\r\n
    \r\n {\r\n onPagingClick({\r\n pageIndex: pageIndex\r\n });\r\n }}\r\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 isLoading: state.app.loading,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) =>\r\n bindActionCreators(\r\n {\r\n showLoading: appActions.ShowLoading,\r\n },\r\n dispatch\r\n );\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(ListNewsView);\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport React, { useState, useEffect } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\n\r\nimport * as appActions from \"../../core/app.store\";\r\nimport * as newsActions from \"../../redux/store/news/news.store\";\r\n\r\nimport {\r\n APIUrlDefault,\r\n DomainUserSide,\r\n} from \"../../utils/configuration\";\r\n\r\nimport \"slick-carousel/slick/slick.css\";\r\nimport \"slick-carousel/slick/slick-theme.css\";\r\nimport \"./detail.scss\";\r\nimport dateformat, { i18n } from \"dateformat\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faArrowLeft, faArrowRight } from \"@fortawesome/free-solid-svg-icons\";\r\n\r\nfunction NewsDetail(props) {\r\n const { showLoading } = props;\r\n\r\n i18n.dayNames = [\r\n \"Chủ nhật\",\r\n \"Thứ 2\",\r\n \"Thứ 3\",\r\n \"Thứ 4\",\r\n \"Thứ 5\",\r\n \"Thứ 6\",\r\n \"Thứ 7\",\r\n \"Chủ nhật\",\r\n \"Thứ 2\",\r\n \"Thứ 3\",\r\n \"Thứ 4\",\r\n \"Thứ 5\",\r\n \"Thứ 6\",\r\n \"Thứ 7\",\r\n ];\r\n \r\n i18n.monthNames = [\r\n \"1\",\r\n \"2\",\r\n \"3\",\r\n \"4\",\r\n \"5\",\r\n \"6\",\r\n \"7\",\r\n \"8\",\r\n \"9\",\r\n \"10\",\r\n \"11\",\r\n \"11\",\r\n \"1\",\r\n \"2\",\r\n \"3\",\r\n \"4\",\r\n \"5\",\r\n \"6\",\r\n \"7\",\r\n \"8\",\r\n \"9\",\r\n \"10\",\r\n \"11\",\r\n \"11\",\r\n ];\r\n\r\n const [newsModel, setNewsModel] = useState([]);\r\n const [newsDetail, setNewsDetail] = useState([]);\r\n const [currentPage, setCurrentPage] = useState();\r\n const [pagingNews, setPagingNews] = useState();\r\n const pageSize = 10;\r\n const {id} = props.match.params;\r\n\r\n useEffect(() => {\r\n onGetData();\r\n }, []);\r\n\r\n const onGetData = () => {\r\n showLoading(true);\r\n Promise.all([\r\n onGetListNews({\r\n pageIndex: 1,\r\n pageSize: pageSize\r\n }),\r\n onGetNewsDetail(id),\r\n ])\r\n .then((res) => {\r\n showLoading(false);\r\n })\r\n .catch((err) => {\r\n showLoading(false);\r\n });\r\n };\r\n\r\n const onGetNewsDetail = (id) => {\r\n return new Promise((resolve,reject) => {\r\n newsActions.GetDetailNews(id).then(\r\n (res) => {\r\n setNewsDetail(\r\n res && res.content\r\n );\r\n resolve(res);\r\n },\r\n (err) => {\r\n reject(err);\r\n }\r\n );\r\n\r\n })\r\n }\r\n\r\n const onGetListNews = (data) => {\r\n return new Promise((resolve, reject) => {\r\n newsActions.GetListNews(data).then(\r\n (res) => {\r\n setNewsModel(\r\n res &&\r\n res.content &&\r\n res.content.items\r\n && res.content.items.length > 0 ? res.content.items: []\r\n );\r\n setPagingNews(res.content);\r\n setCurrentPage(res.content.pageIndex);\r\n resolve(res);\r\n },\r\n (err) => {\r\n reject(err);\r\n }\r\n );\r\n });\r\n }\r\n\r\n const getNextPage = () => {\r\n let nextPage = 1;\r\n if(currentPage >0 ){\r\n nextPage = currentPage + 1;\r\n }\r\n onGetListNews({\r\n pageIndex: nextPage,\r\n pageSize: pageSize\r\n })\r\n }\r\n\r\n const getPreviousPage = () => {\r\n let prePage = 1;\r\n if(currentPage >1){\r\n prePage = currentPage - 1;\r\n }\r\n onGetListNews({\r\n pageIndex: prePage,\r\n pageSize: pageSize\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 {dateformat(newsDetail.created_date, \"ddd, dd/mmm/yyyy, HH:MM:ss\")}\r\n
    \r\n \r\n

    \r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {\r\n pagingNews && pagingNews.hasPreviousPage && (\r\n \r\n \r\n \r\n )\r\n }\r\n \r\n {pagingNews && pagingNews.pageIndex} / {pagingNews && pagingNews.pageCount}\r\n\r\n {pagingNews && pagingNews.hasNextPage && (\r\n \r\n \r\n \r\n )}\r\n
    \r\n
    \r\n {newsModel && newsModel.length >0 ? (\r\n newsModel.filter(item => item.id != newsDetail.id).map((item,index) => (\r\n \r\n ))\r\n ):(\r\n
    Chưa có dữ liệu để hiển thị!
    \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 isLoading: state.app.loading,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) =>\r\n bindActionCreators(\r\n {\r\n showLoading: appActions.ShowLoading,\r\n },\r\n dispatch\r\n );\r\n\r\nexport default (connect(mapStateToProps, mapDispatchToProps)(NewsDetail));\r\n","import React, { useEffect, useState } from \"react\";\r\nimport * as statementAction from \"../../../redux/store/statement/statement.store\";\r\nimport {Link} from \"react-router-dom\";\r\nimport UrlCollect from \"../../../common/url-collect\";\r\nimport * as configuration from \"../../../utils/configuration\";\r\n\r\nexport default function ServiceLink() {\r\n const [serviceModels, setServiceModels] = useState(null);\r\n\r\n useEffect(() => {\r\n statementAction\r\n .GetSerivceLink()\r\n .then(\r\n (res) =>\r\n res &&\r\n res.content &&\r\n res.content.linkGroup &&\r\n setServiceModels(res.content.linkGroup)\r\n )\r\n .catch((err) => {});\r\n }, []);\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n BẢN ĐỒ TỔNG HỢP QUY HOẠCH\r\n \r\n
    \r\n
    \r\n {serviceModels &&\r\n serviceModels.map((items) =>\r\n items.displayType === \"MAP\" && (\r\n
    \r\n
    \r\n
    \r\n {items.linkService &&\r\n items.linkService.length > 0 &&\r\n items.linkService.map((linkService, index1) => (\r\n \r\n ))}\r\n
    \r\n
    \r\n
    \r\n )\r\n )}\r\n
    \r\n );\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport UrlCollect from \"../../../common/url-collect\";\r\nimport * as statementAction from \"../../../redux/store/statement/statement.store\";\r\nimport * as configuration from \"../../../utils/configuration\";\r\n\r\nimport MapLink from \"./map-link.view\";\r\nimport ServiceLink from \"./service-link.view\";\r\n\r\nexport default function MenuRightView(props) {\r\n const [serviceModels, setServiceModels] = useState(null);\r\n\r\n useEffect(() => {\r\n statementAction\r\n .GetSerivceLink()\r\n .then(\r\n (res) =>\r\n res &&\r\n res.content &&\r\n res.content.linkGroup &&\r\n setServiceModels(res.content.linkGroup)\r\n )\r\n .catch((err) => {});\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","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport React, { useState, useEffect } from \"react\";\r\nimport { useForm } from \"react-hook-form\";\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport {\r\n faSearch,\r\n faEraser,\r\n faExclamationTriangle,\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\nimport { Link } from \"react-router-dom\";\r\nimport Select from \"react-select\";\r\nimport $ from \"jquery\";\r\n\r\nimport * as statementAction from \"../../redux/store/statement/statement.store\";\r\nimport * as appActions from \"../../core/app.store\";\r\n\r\nimport UrlCollect from \"../../common/url-collect\";\r\nimport MenuRightView from \"./menu-right/menu-right.view\";\r\nimport * as config from \"../../common/config\";\r\nimport Pagination from \"../../components/pagination/pagination.view\";\r\nimport ShowNotification from \"../../components/react-notifications/react-notifications\";\r\nimport {\r\n NotificationMessageType,\r\n NotificationPosition,\r\n} from \"../../utils/configuration\";\r\nimport * as viVN from \"../../languages/vi-VN.json\";\r\nimport * as configuration from \"../../utils/configuration\";\r\n\r\nimport \"./planning-announcement.scss\";\r\nimport \"@geedmo/yamm/src/yamm.scss\";\r\n\r\nfunction PlanningAnnouncementDesktopView(props) {\r\n const { showLoading } = props;\r\n const [statementModels, setStatementModels] = useState([]);\r\n const [paginationNumber, setPaginationNumber] = useState();\r\n const [planningType, setPanningType] = useState([]);\r\n const [planningTypeSelect, setPanningTypeSelect] = useState(null);\r\n const [approvalAgencyLevel, setApprovalAgencyLevel] = useState([]);\r\n const [approvalAgencyLevelSelect, setApprovalAgencyLevelSelect] = useState(\r\n null\r\n );\r\n const [planningTypeId, setPlanningTypeId] = useState();\r\n const [approvalAgency, setApprovalAgency] = useState();\r\n const [data, setData] = useState({});\r\n\r\n const [isShowSearch, setIsShowSearch] = useState(false);\r\n\r\n const { register, handleSubmit, setValue } = useForm({\r\n mode: \"all\",\r\n reValidateMode: \"onBlur\",\r\n });\r\n\r\n useEffect(() => {\r\n onGetData();\r\n }, []);\r\n\r\n const onGetData = () => {\r\n showLoading(true);\r\n Promise.all([\r\n getListStatementModelsPromise(1, config.Configs.DefaultPageSize, \"\", {}),\r\n getPlanningType(),\r\n getApprovalAgencyLevel(),\r\n ])\r\n .then((res) => {\r\n showLoading(false);\r\n })\r\n .catch((err) => {\r\n showLoading(false);\r\n });\r\n };\r\n\r\n const getListStatementModelsPromise = (\r\n pageIndex,\r\n pageSize,\r\n sortExpression = \"\",\r\n body\r\n ) => {\r\n return new Promise((resolve, reject) => {\r\n statementAction\r\n .SearchPlanning(pageIndex, pageSize, sortExpression, body)\r\n .then((res) => {\r\n setStatementModels(\r\n res &&\r\n res.content &&\r\n res.content.items &&\r\n res.content.items.length > 0\r\n ? res.content.items\r\n : []\r\n );\r\n setPaginationNumber(res.content);\r\n resolve(res);\r\n })\r\n .catch((err) => reject(err));\r\n });\r\n };\r\n\r\n const getPlanningType = () => {\r\n return new Promise((resolve, reject) => {\r\n statementAction\r\n .PlanningType()\r\n .then((res) => {\r\n setPanningType(\r\n res && res.content && res.content.length > 0\r\n ? res.content.map((item) => {\r\n return { ...item, value: item.id, label: item.name };\r\n })\r\n : []\r\n );\r\n resolve(res);\r\n })\r\n .catch((err) => reject(err));\r\n });\r\n };\r\n\r\n const getApprovalAgencyLevel = () => {\r\n return new Promise((resolve, reject) => {\r\n statementAction\r\n .ApprovalAgencyLevel()\r\n .then((res) => {\r\n setApprovalAgencyLevel(\r\n res && res.content && res.content.length > 0\r\n ? res.content.map((item) => {\r\n return { ...item, value: item.id, label: item.name };\r\n })\r\n : []\r\n );\r\n resolve(res);\r\n })\r\n .catch((err) => reject(err));\r\n });\r\n };\r\n\r\n const getListStatementModels = (\r\n pageIndex = 1,\r\n pageSize = config.Configs.DefaultPageSize,\r\n sortExpression = \"\",\r\n body = data\r\n ) => {\r\n showLoading(true);\r\n statementAction\r\n .SearchPlanning(pageIndex, pageSize, \"\", body)\r\n .then((res) => {\r\n if (\r\n res &&\r\n res.content &&\r\n res.content.items &&\r\n res.content.items.length > 0\r\n ) {\r\n setStatementModels(res.content.items);\r\n setPaginationNumber(res.content);\r\n showLoading(false);\r\n } else {\r\n showLoading(false);\r\n ShowNotification(\r\n viVN.Warning.NoData,\r\n NotificationMessageType.Warning,\r\n NotificationPosition.Center\r\n );\r\n }\r\n })\r\n .catch((err) => {\r\n showLoading(false);\r\n });\r\n };\r\n\r\n const onStopHiddenDropdown = (e) => {\r\n $(document).on(\"click\", \".yamm .dropdown-menu\", function (e) {\r\n e.stopPropagation();\r\n });\r\n };\r\n\r\n function clearDataForm() {\r\n setPanningTypeSelect(null);\r\n setApprovalAgencyLevelSelect(null);\r\n document.getElementById(\"dropdownToggle\").click();\r\n document.getElementById(\"formSearch\").reset();\r\n document.getElementById(\"search\").value = \"\";\r\n getListStatementModels(1, config.Configs.DefaultPageSize, \"\", {});\r\n setIsShowSearch(false);\r\n }\r\n\r\n const onSubmit = (data) => {\r\n setIsShowSearch(false);\r\n document.getElementById(\"dropdownToggle\").click();\r\n if (!data) return;\r\n let body = {\r\n name: data.planningName,\r\n planningTypeId: planningTypeId,\r\n place: data.address,\r\n consultingUnit: data.consultingUnit,\r\n numberOfDecisions: data.decisionsNumber,\r\n yearOfApproval: Number(data.approvalYear),\r\n approvalAgency: data.approvalAgency,\r\n planningAgency: data.agenciesOrganizations,\r\n approvalAgencyLevelId: approvalAgency,\r\n };\r\n setData({...data,...body});\r\n getListStatementModels(1, config.Configs.DefaultPageSize, \"\", body);\r\n };\r\n\r\n const handleKeyDown = (event) => {\r\n if (event.key === \"Enter\") {\r\n setValue(\"planningName\", event.target.value);\r\n setData({ ...data, name: event.target.value }) \r\n showLoading(true);\r\n statementAction\r\n .SearchPlanning(1, config.Configs.DefaultPageSize, \"\", {\r\n name: event.target.value,\r\n })\r\n .then((res) => {\r\n if (\r\n res &&\r\n res.content &&\r\n res.content.items &&\r\n res.content.items.length > 0\r\n ) {\r\n setStatementModels(res.content.items);\r\n setPaginationNumber(res.content);\r\n showLoading(false);\r\n } else {\r\n ShowNotification(\r\n viVN.Warning.NoData,\r\n NotificationMessageType.Warning,\r\n NotificationPosition.Center\r\n );\r\n showLoading(false);\r\n }\r\n })\r\n .catch((err) => {\r\n showLoading(false);\r\n });\r\n }\r\n };\r\n\r\n const handleClickSearchIcon = () => {\r\n setIsShowSearch(!isShowSearch);\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 {statementModels && statementModels.length > 0 ? (\r\n statementModels.map((items, index) =>\r\n index === 0 ? (\r\n
    \r\n \r\n \r\n \r\n\r\n
    \r\n \r\n {items.title}\r\n \r\n
    \r\n\r\n

    {items.brief}

    \r\n
    \r\n ) : (\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n {items.title}\r\n \r\n
    \r\n

    {items.brief}

    \r\n
    \r\n
    \r\n
    \r\n )\r\n )\r\n ) : (\r\n
    \r\n {\" \"}\r\n Không có quy hoạch nào đang được công bố\r\n
    \r\n )}\r\n
    \r\n
    \r\n\r\n \r\n
    \r\n\r\n {paginationNumber && paginationNumber.totalItemCount > 0 && (\r\n
    \r\n
    \r\n
    \r\n 1 ? \"float-left\" : \"\"\r\n }`}\r\n >\r\n \r\n Có {paginationNumber.totalItemCount} kết quả\r\n \r\n
    \r\n {paginationNumber.pageCount > 1 && (\r\n
    \r\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 isLoading: state.app.loading,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) =>\r\n bindActionCreators(\r\n {\r\n showLoading: appActions.ShowLoading,\r\n },\r\n dispatch\r\n );\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(PlanningAnnouncementDesktopView);\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport React, { useState, useEffect } from \"react\";\r\nimport MenuRightView from \"../menu-right/menu-right.view\";\r\nimport * as statementAction from \"../../../redux/store/statement/statement.store\";\r\nimport \"./planning-announcement-detail.scss\";\r\nimport * as apiConfig from '../../../api/api-config';\r\nimport PageUrls from '../../../common/url-collect';\r\n\r\nexport default function PlanningAnnouncementDetailDesktopView(props) {\r\n const [statementModel, setStatementModel] = useState();\r\n\r\n useEffect(() => {\r\n if (props && props.match && props.match.params && props.match.params.id) {\r\n statementAction\r\n .GetDetailStatement(props.match.params.id)\r\n .then((res) => res && res.content && setStatementModel(res.content))\r\n .catch((err) => { });\r\n }\r\n }, []);\r\n\r\n console.log(\"statementModelstatementModelstatementModel\",statementModel);\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n {statementModel && (\r\n
    \r\n
    {statementModel.title}
    \r\n

    \r\n {statementModel.statementDocumentFile && (\r\n \r\n Xem quyết định phê duyệt tại đây ./.\r\n \r\n )}\r\n
    \r\n {statementModel.planningId && (\r\n \r\n Xem bản đồ đồ án tại đây ./.\r\n \r\n )}\r\n
    \r\n )}\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n","import React, { useState } from \"react\";\r\nimport \"./left-menu.scss\";\r\nimport UrlCollect from \"../../../common/url-collect\";\r\nimport { Link } from \"react-router-dom\";import { connect } from \"react-redux\";\r\nimport PlanningCategoriesModel from \"../../../models/map-data-model-b/planning-categories-model\";\r\nimport OpenlayerController from \"../../../models/open-layer/openlayer-controller-custom.model\";\r\nimport history from \"../../../common/history\";\r\nimport { SearchByDistrict } from \"../../look-up-planning/child-modules/planning-district/search-district.view\";\r\n\r\ninterface InitLeftMenuViewProps {\r\n isDisplaySearchResult: boolean;\r\n resetSearchDisplayMode: Function;\r\n listPlanningCategoriesAll?: PlanningCategoriesModel[];\r\n openLayerController?: OpenlayerController;\r\n planningType: any;\r\n listPolygon: any;\r\n}\r\n\r\nfunction LeftMenuView(props: InitLeftMenuViewProps) {\r\n const [districtSelect, setDistrictSelect] = useState('');\r\n const [planningUnitSelect, setPlanningUnitSelect] = useState('');\r\n const [approvalAgencySelect, setApprovalAgencySelect] = useState('');\r\n const [name, setName] = useState('');\r\n const [yearSearch, setYearSearch] = useState(null);\r\n const [numberOfDecisions, setNumberOfDecisions] = useState('');\r\n const [constructionGroup, setConstructionGroup] = useState('');\r\n\r\n function handleResetDisplaySearchMode() {\r\n if (props.isDisplaySearchResult) props.resetSearchDisplayMode();\r\n }\r\n \r\n const onSubmit = () => {\r\n history.push(`${UrlCollect.PlanningMapViewDetail}?key=&name=${name}&district=${districtSelect}&planningUnit=${planningUnitSelect}&approvalAgency=${approvalAgencySelect}&yearSearch=${yearSearch}&numberOfDecisions=${numberOfDecisions}&constructionGroup=${constructionGroup}`)\r\n };\r\n \r\n return (\r\n
    \r\n
    \r\n setDistrictSelect(data)}\r\n setPlanningUnitSelect={setPlanningUnitSelect}\r\n setApprovalAgencySelect={setApprovalAgencySelect}\r\n name={name}\r\n setName={setName}\r\n yearSearch={yearSearch}\r\n setYearSearch={setYearSearch}\r\n numberOfDecisions={numberOfDecisions}\r\n setNumberOfDecisions={setNumberOfDecisions}\r\n constructionGroup={constructionGroup}\r\n setConstructionGroup={setConstructionGroup}\r\n />\r\n
    \r\n handleResetDisplaySearchMode()}\r\n >\r\n Tổng hợp quy hoạch\r\n
    \r\n\r\n {props.planningType.map((item: any) => (\r\n \r\n ))}\r\n \r\n );\r\n}\r\n\r\ninterface InitRenderGroupPlanningProps {\r\n titleGroup: string;\r\n listLayers: any[];\r\n urlGroup: string;\r\n isDisplaySearchResult: boolean;\r\n}\r\n\r\nfunction RenderGroupPlanning(props: InitRenderGroupPlanningProps) {\r\n return (\r\n
    \r\n \r\n {props.titleGroup}\r\n \r\n {props.isDisplaySearchResult &&\r\n props.listLayers &&\r\n props.listLayers.length > 0 && (\r\n
    \r\n {props.listLayers.map((layerObject, index) => (\r\n \r\n {layerObject.name}\r\n \r\n ))}\r\n
    \r\n )}\r\n
    \r\n );\r\n}\r\n\r\nconst mapStateToProps = (state: any) => ({\r\n listPlanningCategoriesAll: state.mapData.listPlanningCategoriesAll,\r\n openLayerController: state.openlayer.openLayerController,\r\n planningType: state.statement.planningType,\r\n listPolygon: state.mapData.listPolygon,\r\n});\r\n\r\nexport default connect(mapStateToProps)(LeftMenuView);\r\n","import React from \"react\";\r\nimport \"./general-planning.scss\";\r\nimport TopRightPanelView from \"../planning-map-view/top-right-panel/top-right-panel.view\";\r\nimport LeftMenuView from \"./left-menu/left-menu.view\";\r\nimport OpenlayersMapView from \"../openlayers-map/openlayers-map.view\";\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport * as MapDataStore from \"../../redux/store/map-data/map-data.store\";\r\nimport { GeneralPlanningViewProps, GeneralPlanningViewState, } from \"../../models/general-planning-view/props-state.model\";\r\nimport {isMobile} from 'react-device-detect';\r\nimport MapToolsPanel from \"../planning-map-view/map-tools-panel/map-tools-panel.view\";\r\nimport { SetDisplayMaptoolPanel } from \"redux/store/open-layer/map-tools-panels.store\";\r\n// ./map-tools-panel/map-tools-panel.view.jsx\r\n\r\nconst ListBaseMap: any[] = [\r\n {\r\n base_map_setting_id: 0,\r\n id: 1,\r\n map_setting_id: 1,\r\n url: \"https://mt0.google.com/vt/lyrs=m&hl=vi&x={x}&y={y}&z={z}\",\r\n view_default: true,\r\n z_index: 0,\r\n name: \"Bản đồ nền đường phố\",\r\n baseMapSettingModel: {\r\n id: 0,\r\n layer_type: \"\",\r\n status: true,\r\n url: \"\",\r\n },\r\n },\r\n {\r\n base_map_setting_id: 0,\r\n id: 1,\r\n map_setting_id: 1,\r\n url: \"https://mt0.google.com/vt/lyrs=y&hl=vi&x={x}&y={y}&z={z}\",\r\n view_default: true,\r\n z_index: 0,\r\n name: \"Bản đồ vệ tinh\",\r\n baseMapSettingModel: {\r\n id: 0,\r\n layer_type: \"\",\r\n status: true,\r\n url: \"\",\r\n },\r\n },\r\n {\r\n base_map_setting_id: 0,\r\n id: 1,\r\n map_setting_id: 1,\r\n url: \"\",\r\n view_default: true,\r\n z_index: 0,\r\n name: \"Không nền\",\r\n baseMapSettingModel: {\r\n id: 0,\r\n layer_type: \"\",\r\n status: true,\r\n url: \"\",\r\n },\r\n },\r\n];\r\n\r\nconst fixedLayerTablename = [\r\n {\r\n tableName : 'boundaries',\r\n isAddedLayer : false,\r\n zIndex: 10,\r\n },\r\n {\r\n tableName : 'label_boundaries',\r\n isAddedLayer : false,\r\n zIndex: 15,\r\n },\r\n {\r\n tableName : 'diaphantinh_wgs84',\r\n isAddedLayer : false,\r\n zIndex: 5,\r\n }\r\n];\r\nclass GeneralPlanningView extends React.Component {\r\n constructor(props: GeneralPlanningViewProps) {\r\n super(props);\r\n this.state = {\r\n isLeftNavbarHide: false,\r\n modalHeightStyle: 0,\r\n isShowMapToolsPanel: false,\r\n isShowFilterInfomationPopup: false,\r\n isDisplaySearchResult: false,\r\n displaySearchLocationBar: false,\r\n coordinate: \"\",\r\n fixedLayerTablename: fixedLayerTablename,\r\n isDoneConstructMap: false,\r\n };\r\n this.openFilterInfomationPopup = this.openFilterInfomationPopup.bind(this);\r\n this.closeFilterInfomationPopup = this.closeFilterInfomationPopup.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({\r\n modalHeightStyle: window.innerHeight - 100,\r\n });\r\n this.props.GetAllPlanning();\r\n this.props.GetAllPlanningCategoriesType();\r\n // this.props.GetAllPlanningBoundaries();\r\n \r\n this.props.SetDisplayMaptoolPanel(false);\r\n\r\n if(isMobile){\r\n this.handleShowHidePlanningMenu();\r\n }\r\n }\r\n\r\n handleClickIconLeftNavbar(id: number) {\r\n this.handleClickToggleLeftNavBar();\r\n const buttonElement = document.querySelector(\r\n `button[aria-controls=\"${id}\"]`\r\n ) as HTMLElement;\r\n if (buttonElement?.classList.contains(\"collapsed\")) buttonElement.click();\r\n }\r\n\r\n handleClickToggleLeftNavBar() {\r\n this.setState({\r\n isLeftNavbarHide: !this.state.isLeftNavbarHide,\r\n });\r\n if (!this.state.isLeftNavbarHide) {\r\n document\r\n .getElementsByClassName(\"left-custom-navbar\")[0]\r\n .classList.add(\"hide-left-navbar\");\r\n } else\r\n document\r\n .getElementsByClassName(\"left-custom-navbar\")[0]\r\n .classList.remove(\"hide-left-navbar\");\r\n }\r\n\r\n openFilterInfomationPopup() {\r\n this.setState({\r\n isShowFilterInfomationPopup: true,\r\n });\r\n }\r\n\r\n closeFilterInfomationPopup() {\r\n this.setState({\r\n isShowFilterInfomationPopup: false,\r\n });\r\n }\r\n\r\n manualCloseMaptoolsFilterInfomationPopup = () => {\r\n this.setState({ isShowFilterInfomationPopup: false });\r\n };\r\n\r\n handleOpenOrCloseMapToolsPanel = () => {\r\n this.setState({\r\n isShowMapToolsPanel: !this.state.isShowMapToolsPanel,\r\n });\r\n };\r\n\r\n handleShowHidePlanningMenu() {\r\n const LeftMenuElement = document.getElementsByClassName(\r\n \"left-custom-navbar\"\r\n )[0] as HTMLElement;\r\n if (LeftMenuElement) {\r\n if (this.state.isLeftNavbarHide) {\r\n LeftMenuElement.style.left = \"0\";\r\n } else {\r\n LeftMenuElement.style.left = \"-320px\";\r\n }\r\n this.setState({ isLeftNavbarHide: !this.state.isLeftNavbarHide });\r\n }\r\n }\r\n \r\n componentDidUpdate(prevProps:any, prevState:any) {\r\n if (\r\n this.state.isDoneConstructMap != prevState.isDoneConstructMap\r\n ) {\r\n if(this.state.isDoneConstructMap) {\r\n const temp = [...this.state.fixedLayerTablename];\r\n temp.forEach((item)=>{\r\n console.log(\"check item\", item);\r\n \r\n this.props.openLayerController.addLayerManually(item.tableName, item.isAddedLayer, item.zIndex);\r\n item.isAddedLayer = true;\r\n })\r\n this.setState({\r\n fixedLayerTablename : temp\r\n })\r\n }\r\n this.props.openLayerController.handleViewCurrentLocaltion();\r\n }\r\n }\r\n\r\n componentWillUnmount () {\r\n this.props.SetDisplayMaptoolPanel(false);\r\n }\r\n\r\n setIsDoneConstructMap = (value : boolean) => {\r\n this.setState({\r\n isDoneConstructMap : value\r\n })\r\n }\r\n\r\n render() {\r\n const isLeftNavbarHide = this.state.isLeftNavbarHide;\r\n\r\n return (\r\n
    \r\n {/* Top right panel*/}\r\n \r\n\r\n
    \r\n \r\n
    \r\n\r\n {/* Open layer view port */}\r\n \r\n\r\n {/* Left nav bar */}\r\n
    \r\n {/* */}\r\n this.handleShowHidePlanningMenu()}\r\n className=\"custom-button-left-menu btn position-absolute\"\r\n title=\"Các lớp quy hoạch\"\r\n >\r\n \r\n \r\n this.setState({ isDisplaySearchResult: false })}\r\n isDisplaySearchResult={this.state.isDisplaySearchResult}\r\n />\r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: any) => ({\r\n hasLoadedMapData: state.mapData.hasLoadingData,\r\n mapData: state.mapData.mapData,\r\n planningRelationShips: state.mapData.planningRelationShips,\r\n listPlanning: state.mapData.listPlanning,\r\n listPlanningCategoriesAll: state.mapData.listPlanningCategoriesAll,\r\n openLayerController: state.openlayer.openLayerController,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: any) =>\r\n bindActionCreators(\r\n {\r\n SetDisplayMaptoolPanel: SetDisplayMaptoolPanel,\r\n GetMapDetail: MapDataStore.GetMapDetailByPlanningId,\r\n GetAllPlanningCategoriesType: MapDataStore.GetAllPlanningCategoriesType,\r\n GetAllPlanning: MapDataStore.GetAllPlanning,\r\n GetAllPlanningBoundaries: MapDataStore.GetAllPlanningBoundaries,\r\n SaveHeaderForTable: MapDataStore.SaveHeaderForTable,\r\n },\r\n dispatch\r\n );\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(GeneralPlanningView);\r\n","//@ts-check\r\nimport React from 'react';\r\nimport './page-500.scss';\r\n\r\n/**\r\n * @param {{history:any,match:{params:{id:string}}}} props\r\n*/\r\nfunction ErrorPage500(props) {\r\n return (\r\n
    \r\n

    500

    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    Error type{props.match.params.id}
    \r\n
    \r\n )\r\n}\r\n\r\nexport default ErrorPage500","import \"./user-profile.scss\";\r\nimport React, { useState, useEffect, useRef } from \"react\";\r\nimport Form from \"react-bootstrap/Form\";\r\nimport * as accountAction from \"../../redux/store/account/account.store\";\r\nimport { useForm } from \"react-hook-form\";\r\nimport PhoneInput from \"react-phone-input-2\";\r\nimport ShowNotification from \"../../components/react-notifications/react-notifications\";\r\nimport {\r\n APIUrlDefault,\r\n NotificationMessageType,\r\n} from \"../../utils/configuration\";\r\nimport * as viVN from \"../../languages/vi-VN.json\";\r\nimport { LayoutAuthen } from \"components/layout-authen\";\r\n\r\nexport const UserProfile = () => {\r\n const {\r\n register,\r\n handleSubmit,\r\n setValue,\r\n setError,\r\n clearErrors,\r\n formState: { errors },\r\n } = useForm();\r\n const [tel, setTel] = useState(\"\");\r\n const [userId, setUserId] = useState();\r\n const [avatar, setAvatar] = useState(null);\r\n const [file, setFile] = useState(null);\r\n const [avatarReturn, setAvatarReturn] = useState(null);\r\n const [fullName, setFullName] = useState(\"\");\r\n const inputRef = useRef(null);\r\n\r\n const onCheckTel = (data) => {\r\n let err = false;\r\n if (!data) {\r\n setError(\"phoneNumber\", { type: \"required\" });\r\n err = true;\r\n } else if (data.toString().length < 10) {\r\n setError(\"phoneNumber\", { type: \"pattern\" });\r\n err = true;\r\n } else clearErrors([\"phoneNumber\"]);\r\n setTel(data);\r\n return err;\r\n };\r\n\r\n const getUserInfo = () => {\r\n accountAction.GetUserAccountDetail().then((res) => {\r\n setUserId(res?.content?.id);\r\n setValue(\"fullName\", res?.content?.fullName);\r\n setValue(\"email\", res?.content?.email);\r\n setValue(\"phoneNumber\", res?.content?.phoneNumber);\r\n setValue(\"address\", res?.content?.address);\r\n setAvatarReturn(res?.content?.avatar);\r\n setTel(res?.content?.phoneNumber);\r\n setFullName(res?.content?.fullName);\r\n });\r\n };\r\n const onSubmit = (values) => {\r\n const payload = {\r\n id: userId,\r\n fullName: values.fullName,\r\n email: values.email,\r\n phoneNumber: values.phoneNumber,\r\n address: values.address,\r\n file: avatar,\r\n };\r\n accountAction\r\n .UpdateUserAccount(payload)\r\n .then((res) => {\r\n if (res && res.content) {\r\n ShowNotification(\r\n viVN.Success.ChangeUserInfoSuccess,\r\n NotificationMessageType.Success\r\n );\r\n setFullName(values.fullName);\r\n }\r\n })\r\n .catch((err) => {\r\n console.log(err);\r\n ShowNotification(\r\n viVN.Errors[(err && err.errorType) || \"UnableHandleException\"],\r\n NotificationMessageType.Error\r\n );\r\n });\r\n };\r\n\r\n const handleChangeImage = (event) => {\r\n if (event.target.files[0]) {\r\n setFile(URL.createObjectURL(event.target.files[0]));\r\n setAvatar(event.target.files[0]);\r\n setAvatarReturn(null);\r\n }\r\n };\r\n\r\n const handleClickUpload = () => {\r\n inputRef.current.click();\r\n };\r\n\r\n useEffect(() => {\r\n getUserInfo();\r\n }, []);\r\n\r\n return (\r\n
    \r\n
    \r\n

    Thông tin cá nhân

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

    {fullName}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n {errors.fullName && errors.fullName.type === \"required\" && (\r\n Trường này là bắt buộc\r\n )}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n onCheckTel(tel)}\r\n placeholder=\"Số điện thoại\"\r\n autoFormat={false}\r\n enableSearch={true}\r\n countryCodeEditable={false}\r\n />\r\n onCheckTel(tel)}\r\n />\r\n {errors.phoneNumber &&\r\n errors.phoneNumber.type === \"required\" && (\r\n Trường này là bắt buộc\r\n )}\r\n {errors.mobilePhone &&\r\n errors.phoneNumber.type === \"pattern\" && (\r\n Số điện thoại không hợp lệ\r\n )}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n {errors.email && errors.email.type === \"required\" && (\r\n Trường này là bắt buộc\r\n )}\r\n {errors.email && errors.email.type === \"pattern\" && (\r\n Email không đúng định dạng\r\n )}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n {errors.address && errors.address.type === \"required\" && (\r\n Trường này là bắt buộc\r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n

    Nguyen Van A

    \r\n
    \r\n
    \r\n \r\n Lưu thay đổi\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n","import React, { useRef, useState } from \"react\";\r\nimport Form from \"react-bootstrap/Form\";\r\nimport { useForm } from \"react-hook-form\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faEye, faEyeSlash } from \"@fortawesome/free-solid-svg-icons\";\r\nimport * as accountAction from \"../../redux/store/account/account.store\";\r\nimport * as viVN from \"../../languages/vi-VN.json\";\r\nimport \"./change-password.scss\";\r\nimport {\r\n getUserInfo,\r\n NotificationMessageType,\r\n} from \"../../utils/configuration\";\r\nimport ShowNotification from \"../../components/react-notifications/react-notifications\";\r\n\r\nexport const ChangePassword = () => {\r\n const [oldPasswordShown, setOldPasswordShown] = useState(false);\r\n const [newPasswordShown, setNewPasswordShown] = useState(false);\r\n const [confirmPasswordShown, setConfirmPasswordShown] = useState(false);\r\n const {\r\n register,\r\n handleSubmit,\r\n setError,\r\n clearErrors,\r\n formState: { errors },\r\n getValues,\r\n watch,\r\n } = useForm({ mode: \"all\", reValidateMode: \"onBlur\" });\r\n\r\n const password = useRef({});\r\n password.current = watch(\"newPassword\", \"\");\r\n\r\n const onChangePassword = () => {\r\n const { newPassword, confirmPassword } = getValues();\r\n newPassword === confirmPassword\r\n ? clearErrors([\"confirmPassword\"])\r\n : setError(\"confirmPassword\", { type: \"validate\" });\r\n };\r\n\r\n const onSubmit = (values) => {\r\n const userInfo = getUserInfo();\r\n const payload = {\r\n userId: userInfo.userId,\r\n currentPassword: values.oldPassword,\r\n newPassword: values.newPassword,\r\n };\r\n\r\n accountAction\r\n .ChangeUserPassword(payload)\r\n .then((res) => {\r\n if (res && res.content) {\r\n ShowNotification(\r\n viVN.Success.ResetPasswordSuccess,\r\n NotificationMessageType.Success\r\n );\r\n }\r\n })\r\n .catch((err) => {\r\n ShowNotification(\r\n viVN.Errors[(err && err.errorType) || \"UnableHandleException\"],\r\n NotificationMessageType.Error\r\n );\r\n });\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n

    Đổi mật khẩu

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n setOldPasswordShown(!oldPasswordShown)}\r\n />\r\n \r\n {errors.oldPassword &&\r\n errors.oldPassword.type === \"required\" && (\r\n Trường này là bắt buộc\r\n )}\r\n {errors.oldPassword &&\r\n errors.oldPassword.type === \"minLength\" && (\r\n Mật khẩu tối thiểu 8 ký tự\r\n )}\r\n {errors.oldPassword &&\r\n errors.oldPassword.type === \"pattern\" && (\r\n {viVN.Errors.ErrorPassword}\r\n )}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n setNewPasswordShown(!newPasswordShown)}\r\n />\r\n \r\n {errors.newPassword &&\r\n errors.newPassword.type === \"required\" && (\r\n Trường này là bắt buộc\r\n )}\r\n {errors.newPassword &&\r\n errors.newPassword.type === \"minLength\" && (\r\n Mật khẩu tối thiểu 8 ký tự\r\n )}\r\n {errors.newPassword &&\r\n errors.newPassword.type === \"pattern\" && (\r\n {viVN.Errors.ErrorPassword}\r\n )}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n setConfirmPasswordShown(!confirmPasswordShown)\r\n }\r\n />\r\n \r\n value === password.current ||\r\n \"Mật khẩu không trùng khớp\",\r\n })}\r\n type={confirmPasswordShown ? \"text\" : \"password\"}\r\n name=\"confirmPassword\"\r\n className=\"form-control input-info\"\r\n placeholder=\"Vui lòng nhập xác nhận mật khẩu\"\r\n />\r\n {errors.confirmPassword &&\r\n errors.confirmPassword.type === \"validate\" && (\r\n Mật khẩu không khớp\r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n Thực hiện\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n","import React from 'react';\r\nimport { Router, Switch } from 'react-router-dom';\r\nimport RouteComponent from './route-config.jsx';\r\nimport history from './common/history';\r\nimport UrlCollect from './common/url-collect';\r\nimport AppWrapper from './components/app-wrapper/app-wrapper.view';\r\n\r\n//--- Loading\r\nimport AppLoading from './components/loading/loading.view';\r\n\r\n//--- Layout\r\nimport LayoutQLHSAuthen from 'components/layout/layout-qlhs.view.jsx';\r\nimport LayoutDesktopView from './components/layout/layout.view.jsx';\r\nimport LayoutUserDesktopView from './components/layout/layout-user.view.jsx';\r\nimport LayoutMapPageView from './components/layout-map-page/layout-map-page.view.jsx';\r\nimport LayoutProfileView from './components/layout-profile/layout-profile.view';\r\n\r\n//--- Homepage\r\nimport HomeDesktop from './modules/home/home.view.jsx';\r\nimport RecordsManagementDesktopView from './modules/records-management/records-management.view.jsx';\r\nimport ContactDesktopView from './modules/contact/contact.view.jsx';\r\nimport LookUpPlanningView from './modules/look-up-planning/look-up-planning.view';\r\nimport PlanningMapRoute from './modules/planning-map-route/planning-map-route.js';\r\n\r\n// Reflect\r\nimport ReflectsView from './modules/reflects/reflects.view.jsx';\r\nimport ReflectsByCategoryView from './modules/reflects/reflects-by-category/reflects-by-category.view.jsx';\r\nimport ReflectDetailView from './modules/reflects/reflect-detail/reflect-detail.view';\r\nimport MyReflectView from './modules/reflects/my-reflect-page/my-reflect.view';\r\nimport CreateReflectView from './modules/reflects/create-reflect-page/create-reflect.view'\r\nimport ReflectMapView from './modules/reflects/reflect-map-page/reflect-map.view'\r\n\r\n//-- User\r\nimport ResetPasswordDesktop from './modules/reset-password/reset-password.view';\r\n\r\n//--- Xin y kien cong dong\r\nimport PleaseConsultTheCommunityDesktopView from './modules/please-consult-the-community/please-consult-the-community.view.jsx';\r\nimport PleaseCommentView from './modules/please-consult-the-community/please-comment/please-comment.view.jsx';\r\nimport SummaryIdeasView from './modules/please-consult-the-community/summary-ideas/summary-ideas.view.jsx';\r\n\r\n//-- Tin tuc\r\n\r\nimport NewsListView from './modules/news/list.view.jsx';\r\nimport NewsDetailView from './modules/news/detail.view.jsx';\r\n\r\n//--- Cong bo quy hoach\r\nimport PlanningAnnouncementDesktopView from './modules/planning-announcement/planning-announcement.view.jsx';\r\nimport PlanningAnnouncementDetailDesktopView from './modules/planning-announcement/planning-announcement-detail/planning-announcement-detail.view.jsx';\r\nimport GeneralPlanningView from './modules/general-planning/general-planning.view.tsx';\r\n\r\n//--- Error pages\r\nimport ErrorPage500 from './modules/error-page/page-500/page-500';\r\nimport { UserProfile } from './modules/user-profile/user-profile.js';\r\nimport { ChangePassword } from './modules/user-profile/change-password.js';\r\nimport { LayoutAuthen } from 'components/layout-authen/index.js';\r\nimport ReactGA from 'react-ga';\r\n\r\nconst TRACKING_ID = \"G-5KY3T0QRSP\";\r\n\r\nfunction App() {\r\n ReactGA.initialize(TRACKING_ID);\r\n\r\n return (\r\n
    \r\n \r\n\r\n \r\n \r\n \r\n {/* Desktop */}\r\n \r\n \r\n \r\n {/* Tin tuc */}\r\n \r\n \r\n\r\n }\r\n path={UrlCollect.NewsDetailQHT + '/:id'}\r\n />\r\n }\r\n path={UrlCollect.NewsListQHT}\r\n />\r\n\r\n }\r\n path={UrlCollect.NewsDetailQHCC + '/:id'}\r\n />\r\n }\r\n path={UrlCollect.NewsListQHCC}\r\n />\r\n\r\n }\r\n path={UrlCollect.NewsDetailQHHTKT + '/:id'}\r\n />\r\n }\r\n path={UrlCollect.NewsListQHHTKT}\r\n />\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n {/* Reflect */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {/* Xin y kien cong dong */}\r\n \r\n \r\n\r\n {/* Cong bo quy hoach */}\r\n \r\n\r\n {/* error pages */}\r\n \r\n {/* lap */}\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n}\r\n\r\nexport default App;\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.0/8 are considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\ntype Config = {\r\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\r\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\r\n};\r\n\r\nexport function register(config?: Config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(\r\n process.env.PUBLIC_URL,\r\n window.location.href\r\n );\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n // console.log(\r\n // 'This web app is being served cache-first by a service ' +\r\n // 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n // );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl: string, config?: Config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n // console.log(\r\n // 'New content is available and will be used when all ' +\r\n // 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n // );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n // console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl, {\r\n headers: { 'Service-Worker': 'script' }\r\n })\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n // console.log(\r\n // 'No internet connection found. App is running in offline mode.'\r\n // );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready\r\n .then(registration => {\r\n registration.unregister();\r\n })\r\n .catch(error => {\r\n console.error(error.message);\r\n });\r\n }\r\n}\r\n","import { combineReducers } from \"redux\";\r\nimport AccountReducers from \"./store/account/account.store\";\r\nimport MapToolsPanelReducers from \"./store/open-layer/map-tools-panels.store\";\r\nimport AppReducer from \"../core/app.store\";\r\nimport LoadingReducer from \"../redux/store/loading/loading.store\";\r\nimport MapDataReducer from \"./store/map-data/map-data.store\";\r\nimport OpenLayerReducer from \"./store/open-layer/open-layer.store\";\r\nimport StatementReducer from \"./store/statement/statement.store\";\r\nimport MapToolDataReducer from \"./store/map-tool/map-tool.store\";\r\n\r\nexport default combineReducers({\r\n app: AppReducer,\r\n account: AccountReducers,\r\n mapToolsPanel: MapToolsPanelReducers,\r\n loadingState: LoadingReducer,\r\n mapData: MapDataReducer,\r\n openlayer: OpenLayerReducer,\r\n statement: StatementReducer,\r\n mapToolData: MapToolDataReducer,\r\n});\r\n","import { createStore, applyMiddleware } from 'redux';\r\nimport Reducer from './reducer';\r\nimport thunk from 'redux-thunk';\r\n\r\nexport default createStore(Reducer,{}, applyMiddleware(thunk))","import { unstable_createMuiStrictModeTheme as createTheme } from '@material-ui/core/styles';\r\n\r\nconst theme = createTheme({\r\n breakpoints: {\r\n values: {\r\n xs: 0,\r\n sm: 576,\r\n md: 768,\r\n lg: 992,\r\n xl: 1200,\r\n },\r\n },\r\n});\r\n\r\nexport default theme;\r\n","import React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport App from \"./App\";\r\nimport * as serviceWorker from \"./serviceWorker\";\r\nimport \"bootstrap/dist/js/bootstrap.js\";\r\nimport \"bootstrap/dist/css/bootstrap.min.css\";\r\nimport \"./assets/styles/common.scss\";\r\nimport { Provider } from \"react-redux\";\r\nimport GlobalStore from \"./redux/store\";\r\nimport { ThemeProvider } from '@material-ui/core/styles';\r\nimport theme from \"./common/material-ui-theme-config\"\r\nimport AppWrapper from './components/app-wrapper/app-wrapper.view'\r\n\r\nimport ReactNotification from \"react-notifications-component\";\r\nimport \"react-notifications-component/dist/theme.css\";\r\nimport \"./components/react-notifications/_customTypes.scss\";\r\n\r\nexport const store = GlobalStore;\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById(\"root\")\r\n);\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nserviceWorker.unregister();\r\n","module.exports = __webpack_public_path__ + \"static/media/search-circle.41933f43.svg\";","module.exports = __webpack_public_path__ + \"static/media/delete-icon.07ef99b2.svg\";","module.exports = __webpack_public_path__ + \"static/media/edit-icon.6a21d77a.svg\";","import { Map } from \"immutable\";\r\nimport { DecodeToken } from \"./jwt-token-helper\";\r\nimport Cookies from \"universal-cookie\";\r\nimport history from \"../common/history\";\r\nimport ShowNotification from \"../components/react-notifications/react-notifications\";\r\nimport viVN from \"../languages/vi\";\r\nimport * as apiConfig from \"../api/api-config\";\r\n\r\nlet configuration = Map();\r\n\r\nexport const DomainUserSide = apiConfig.domainUserSide;\r\nexport const DomainAdminSide = apiConfig.domainAdminSide;\r\nconst domainName = apiConfig.domainName;\r\n\r\nexport const DoMainNameGeoServer = apiConfig.doMainNameGeoServer;\r\nexport const DoMainNameGeoServerWMS = apiConfig.doMainNameGeoServerWMS;\r\nexport const DataStore = apiConfig.datastore;\r\n\r\nexport const ApiServerKey = {\r\n APP_API_ROOT: \"API_ROOT\",\r\n};\r\n\r\nexport const TokenPrefix = \"Bearer\";\r\nexport const APIUrlDefault = apiConfig.api;\r\nexport const GoogleMapAPI = \"AIzaSyBpL4ImLERcE1UQswgIBTdYueGkO2Zm4mE\";\r\nexport const libraries = [\"places\"];\r\nexport const region = \"vi_VN\";\r\nexport const language = \"vi_VN\";\r\n\r\nexport const defaultMapCenter = [21.269395, 104.079128];\r\nexport const defaultLeftCornerLng = 101.513821;\r\nexport const defaultLeftCornerLat = 20.066750;\r\nexport const defaultRightCornerLng = 105.963283;\r\nexport const defaultRightCornerLat = 22.401363;\r\n\r\n// export const defaultMapCenter = [21.20474610863608, 105.03313051068666];\r\n// export const defaultLeftCornerLng = 102.67408686735556;\r\n// export const defaultLeftCornerLat = 19.72215270779257;\r\n// export const defaultRightCornerLng = 107.392174154017773;\r\n// export const defaultRightCornerLat = 22.68733950947959;\r\n\r\n\r\n//--- Cookies\r\nconst cookies = new Cookies();\r\nconst dateExpires = new Date();\r\ndateExpires.setTime(dateExpires.getTime() + 720 * 60 * 60 * 1000);\r\n\r\nexport function setCookies(\r\n name,\r\n value,\r\n options = { path: \"/\", domain: domainName, expires: dateExpires }\r\n) {\r\n cookies.set(name, value, options);\r\n}\r\n\r\nexport function getCookies(name) {\r\n return cookies.get(name);\r\n}\r\n\r\nexport function removeCookies(\r\n name,\r\n options = { path: \"/\", domain: domainName }\r\n) {\r\n cookies.remove(name, options);\r\n}\r\n\r\nexport function removeListCookies(nameList) {\r\n if (nameList instanceof Array) {\r\n nameList.map((name) => {\r\n cookies.remove(name, { path: \"/\", domain: domainName });\r\n cookies.remove(name, { path: \"/\", domain: window.location.host });\r\n });\r\n }\r\n}\r\n\r\nexport function setConfiguration(name, value) {\r\n configuration = configuration.set(name, value);\r\n}\r\n\r\nexport function getConfiguration(key) {\r\n if (!configuration.has(key)) {\r\n throw new Error(\"Undefined configuration key: \" + key);\r\n }\r\n\r\n return configuration.get(key);\r\n}\r\n\r\nexport function onRemoveTokens(tokens) {\r\n return Promise.resolve(onRemoveTokenKeys(tokens));\r\n}\r\n\r\nfunction onRemoveTokenKeys(tokens) {\r\n if (tokens && tokens.length > 0) {\r\n tokens.map((t) => localStorage.removeItem(t));\r\n }\r\n}\r\n\r\nexport function getUserInfo() {\r\n let userInfoToken = getCookies(TokenKey.token);\r\n let userInfo = DecodeToken(userInfoToken);\r\n if (userInfo) {\r\n // console.log('user', userInfo);\r\n if(userInfo.userRoles.includes('ADMIN') || userInfo.userRoles.includes(\"XEMHOSO\")) {\r\n setCookies(\"IS_ADMIN\", true);\r\n }\r\n return userInfo;\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport const NotificationMessageType = {\r\n Success: \"success\",\r\n Warning: \"warning\",\r\n Error: \"error\",\r\n};\r\n\r\nexport const NotificationPosition = {\r\n TopLeft: \"top-left\",\r\n TopRight: \"top-right\",\r\n TopCenter: \"top-center\",\r\n Center: \"center\",\r\n BottomLeft: \"bottom-left\",\r\n BottomRight: \"bottom-right\",\r\n BottomCenter: \"bottom-center\",\r\n};\r\n\r\nexport const TokenKey = {\r\n token: \"token\",\r\n refreshToken: \"refreshToken\",\r\n returnUrl: \"returnUrl\",\r\n DeviceId: \"DeviceId\"\r\n};\r\n\r\nexport function changeAlias(alias) {\r\n var str = alias;\r\n str = str.toLowerCase();\r\n str = str.replace(/à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ/g, \"a\");\r\n str = str.replace(/è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ/g, \"e\");\r\n str = str.replace(/ì|í|ị|ỉ|ĩ/g, \"i\");\r\n str = str.replace(/ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ/g, \"o\");\r\n str = str.replace(/ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ/g, \"u\");\r\n str = str.replace(/ỳ|ý|ỵ|ỷ|ỹ/g, \"y\");\r\n str = str.replace(/đ/g, \"d\");\r\n // str = str.replace(/ + /g, \" \");\r\n str = str.toLowerCase();\r\n str = str.trim();\r\n return str;\r\n}\r\n\r\nexport const toSlug = (str) => {\r\n if (typeof str !== 'string') {\r\n return ''\r\n }\r\n str = str.toLowerCase();\r\n str = str.replace(/á|à|ả|ạ|ã|ă|ắ|ằ|ẳ|ẵ|ặ|â|ấ|ầ|ẩ|ẫ|ậ/gi, 'a');\r\n str = str.replace(/é|è|ẻ|ẽ|ẹ|ê|ế|ề|ể|ễ|ệ/gi, 'e');\r\n str = str.replace(/i|í|ì|ỉ|ĩ|ị/gi, 'i');\r\n str = str.replace(/ó|ò|ỏ|õ|ọ|ô|ố|ồ|ổ|ỗ|ộ|ơ|ớ|ờ|ở|ỡ|ợ/gi, 'o');\r\n str = str.replace(/ú|ù|ủ|ũ|ụ|ư|ứ|ừ|ử|ữ|ự/gi, 'u');\r\n str = str.replace(/ý|ỳ|ỷ|ỹ|ỵ/gi, 'y');\r\n str = str.replace(/đ/gi, 'd');\r\n str = str.replace(/[\\W]/gi, ' ');\r\n str = str.trim();\r\n str = str.replace(/\\s+/gi, '-');\r\n return str;\r\n}\r\n\r\nexport function HandleError(error) {\r\n if (error && error.errorType && error.errorType === \"authen\") {\r\n history.push(\"dang-nhap\");\r\n }\r\n ShowNotification(\r\n viVN.Error[\r\n error && error.errorType ? error.errorType : \"UnableHandleException\"\r\n ],\r\n NotificationMessageType.Error\r\n );\r\n}\r\n\r\nconst FileExtensionsPreviewSupport = [\r\n \"png\",\r\n \"jpg\",\r\n \"xls\",\r\n \"xlsx\",\r\n \"docx\",\r\n \"ppt\",\r\n \"pptx\",\r\n \"pdf\",\r\n];\r\n\r\nexport function FilePreviewSupport(fileType) {\r\n if (!fileType) return false;\r\n return FileExtensionsPreviewSupport.some(\r\n (fileExt) => fileExt.toUpperCase() == fileType.toUpperCase()\r\n );\r\n}\r\n\r\nexport const FILE_EXTENSION_ICON = {\r\n DOC: \"doc\",\r\n DOCX: \"docx\",\r\n PPT: \"ppt\",\r\n PDF: \"pdf\",\r\n XLSX: \"xlsx\",\r\n TIF: \"tif\",\r\n DWG: \"dwg\",\r\n DNG: \"dng\",\r\n PNG: \"png\",\r\n JPG: \"jpg\",\r\n JPEG: \"jpeg\",\r\n XLS: \"xls\",\r\n PPTX: \"pptx\",\r\n TXT: \"txt\",\r\n};\r\n\r\nexport function GenerateDeviceId() {\r\n const cookies = new Cookies();\r\n var uid = cookies.get(\"DeviceId\");\r\n if (uid == null) {\r\n const expireTime = new Date();\r\n expireTime.setTime(expireTime.getTime() + 30 * 24 * 60 * 60 * 1000);\r\n\r\n let options = { path: \"/\", domain: domainName, expires: expireTime };\r\n cookies.set(\"DeviceId\", uniqueID(), options);\r\n return uniqueID();\r\n }\r\n else {\r\n return uid;\r\n }\r\n function uniqueID() {\r\n function chr4() {\r\n return Math.random().toString(16).slice(-4);\r\n }\r\n return chr4() + chr4() +\r\n '-' + chr4() +\r\n '-' + chr4() +\r\n '-' + chr4() +\r\n '-' + chr4() + chr4() + chr4();\r\n }\r\n}\r\n","import * as decode from \"jwt-decode\";\r\n\r\nexport function DecodeToken(token) {\r\n if (token == null) {\r\n return null;\r\n }\r\n try {\r\n let tokenPayload = decode(token);\r\n if (tokenPayload) {\r\n return tokenPayload;\r\n }\r\n } catch (error) {\r\n return null;\r\n }\r\n}\r\n","module.exports = __webpack_public_path__ + \"static/media/planning-name.5d9ef1be.svg\";","module.exports = __webpack_public_path__ + \"static/media/place.b4ba4b4f.svg\";","module.exports = __webpack_public_path__ + \"static/media/locate.ae039ed5.svg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAA3QAAAN0BcFOiBwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAO0SURBVFiFrZdLbFRVGMd/5547k5kp0JbSxxQIpUQWggkkTdQQExMxGKshSkKMhAUaNiyMC42JiQt3utBEYwIbwYXG56qJD2rbEYwJGGOIaRoEplOmTEulFqGlHe7MPZ+LPuD23jtzZ/RLZnH/5zvf/3ce95w7SkSIHNuebMRJ7MFID0gPqJ5Lybn2mFg3YkaNWFhnEto5uf7KmfGoJVVkgM7eAyh1HGi9Xx5JzXrSbFFmTVm/3zk2+Pr/A7Dp+RbE+Qh4Iah5NcBypFw7byu9d1O2/3L9AO3727Hd34HOsJQwAICYWO46J76rPX96OCzHqkSHXT4Rar4hBXs2s3Z3E3ZTLDClpIxesEv9lSzCZ6Dz2UMo+dSnP9QGrz0KXY2Lz1O/AnB3YoHJU2PMX57zdWku28fTucFj0QE69rWhYxeBZo/+4k44uhssdU9bAgBA4K9vrjH97aSnmxYljSV7Z8fVgZHVVsFLYNn7fOYPbvCb+4YDbQc2ktzW4JFdJUosXgm0Ci5k9fi0Vx+ubL5SUZE+vMUnl5U8Eh0A8QI0xGB7S3XzpUhsacBKao/mKNMdDUAd1MAuj7a9BSIM/l4NSHZ5l8GxzNoRdTBeHWAH2qeV3BrcF0NKxqe17rgRAWD4Kwf42aNduQmmhjvDCMX8vEdKGD3dOpzxvaNhe2DQ81gsw4WpyP53/pzFON4ZiIt1Pig3DGDAJ713Du5WXwpxDJOfXPXptshn0QEmvr8A/O3Rrt2Gd36BhXKouSkaCh/ncKaKHl2LkvaxoS+jAywej6d8+tAYHOmDcwXPbIhjmPvjFtm3hrl9fsbXLWX0b4j4dyWV7oLNT63H2KNAY2C7pWBrE6P2NMXCQugm1aKk2dEPtOUHs4Flgt2B8R9mEPVuaLsRyN6kOD5f8Q1pcPWPYeaVAQCU+gCYqJhTIWJiudoxhyrlVAYo9M0jvF0vQKqsP08XMtP1AwBM3jkJXKrVPC7KKSn3aLW86gCSKSPyZq0AqbL+sCuXKVbLi/5VvPGZs8Bjq+Wgb8KE0be6s0NNUcpWn4Hl0OYIMF8tTQEp13ouatnoAPnvsqDeqJa2zo1/3TE2kIlaNvoSACilSPcOoXh8Wbp/CRLG+qd79KeWsFMvKKLPACwe0cZ6CfBfq4IkS/H9tZjXDgBwvS+HUr6/XWvc+Bfp/OmztZarbQlWeilFZ28/sHckNUvS1TNbc5nWWkcP9cwALN2W1svArCVIo+jeesxXatX9Sz99eKLriRP/pca/TpHDYEygVIcAAAAASUVORK5CYII=\"","module.exports = __webpack_public_path__ + \"static/media/cursor-pointer.337be4c7.svg\";","import React, { useEffect, useState, useContext } from \"react\";\r\n\r\nconst IsOpenBottomPanelContext = React.createContext();\r\nconst ToggleBottomPanelContext = React.createContext();\r\n\r\nconst IsExtendBottomPanelContext = React.createContext();\r\n\r\nconst OpenBottomPanelContex = React.createContext();\r\nconst ExtendBottomPanelContex = React.createContext();\r\n\r\nexport function ToggleBottomProvider({children}) {\r\n const [isBottomOpen, setBottomOpen] = useState(false);\r\n const [isExtend, setExtend] = useState(false);\r\n\r\n function toggleBottom() {\r\n setBottomOpen(prev => !prev);\r\n }\r\n\r\n const openBottomPanel = () => {\r\n if(isBottomOpen && isExtend) {\r\n setExtend(false);\r\n } else if (isBottomOpen && !isExtend) {\r\n toggleBottom();\r\n }\r\n }\r\n\r\n const extendBottomPanel = () => {\r\n if(isExtend) return;\r\n setExtend(prev => !prev);\r\n } \r\n\r\n useEffect(()=> {\r\n console.log(`isBottomOpen ${isBottomOpen} isExtend ${isExtend}`);\r\n \r\n if(!isBottomOpen) setExtend(false);\r\n else {\r\n if(isExtend) {\r\n const testWrap = document.getElementById(\"bottom-panel_content\");\r\n if( testWrap) testWrap.style.height = '70vh'\r\n } else {\r\n const testWrap = document.getElementById(\"bottom-panel_content\");\r\n if( testWrap) testWrap.style.height = '40vh'\r\n }\r\n }\r\n\r\n }, [isBottomOpen,isExtend])\r\n \r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {children}\r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport function useIsOpenBottomPanel() {\r\n return useContext(IsOpenBottomPanelContext);\r\n}\r\n\r\nexport function useToggleBottomPanel() {\r\n return useContext(ToggleBottomPanelContext);\r\n}\r\n\r\nexport function useIsExtendBottomPanel() {\r\n return useContext(IsExtendBottomPanelContext);\r\n}\r\n\r\nexport function useOpenBottomPanel() {\r\n return useContext(OpenBottomPanelContex);\r\n}\r\n\r\nexport function useExtendBottomPanel() {\r\n return useContext(ExtendBottomPanelContex);\r\n}","import React, { Fragment, useState, useContext } from \"react\";\r\n\r\nconst TitleWhenClickTopRightPanelContext = React.createContext();\r\nconst UpdateTitleWhenClickTopRightPanelContext = React.createContext();\r\nconst ContentWhenClickTopRightPanelContext = React.createContext();\r\nconst UpdateContentWhenClickTopRightPanelContext = React.createContext();\r\n\r\nexport function TopRightPanelProvider({children}) {\r\n const [components, setComponents] = useState([]);\r\n const [title, setTitle] = useState();\r\n const appendChild = (component) => {\r\n setComponents([...components,component])\r\n }\r\n return (\r\n \r\n \r\n \r\n \r\n {children}\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport function useContentWhenClickTopRightPanel() {\r\n return useContext(ContentWhenClickTopRightPanelContext);\r\n}\r\n\r\nexport function useUpdateContentWhenClickTopRightPanel() {\r\n return useContext(UpdateContentWhenClickTopRightPanelContext);\r\n}\r\n\r\nexport function useTitleWhenClickTopRightPanel() {\r\n return useContext(TitleWhenClickTopRightPanelContext);\r\n}\r\n\r\nexport function useUpdateTitleWhenClickTopRightPanel() {\r\n return useContext(UpdateTitleWhenClickTopRightPanelContext);\r\n}","import React, { Fragment, useState, useContext } from \"react\";\r\n\r\nconst GetIsAddedSearchBoxContext = React.createContext();\r\nconst SetIsAddedSearchBoxContext = React.createContext();\r\nconst GetIsAddedMapToolsContext = React.createContext();\r\nconst SetIsAddedMapToolsContext = React.createContext();\r\nconst GetIsAddedPlanningInfoContext = React.createContext();\r\nconst SetIsAddedPlanningInfoContext = React.createContext();\r\nconst GetIsAddedLayerInfoContext = React.createContext();\r\nconst SetIsAddedLayerInfoContext = React.createContext();\r\n\r\nconst ToggleDisplayContext = React.createContext();\r\n\r\nexport function AddContentBottomPanelProvider({children}) {\r\n const [isAddedSearchBox, setIsAddedSearchBox] = useState(false);\r\n const [isAddedMapTools, setIsAddedMapTools] = useState(false);\r\n const [isAddedPlanningInfo, setIsAddedPlanningInfo] = useState(false);\r\n const [isAddedLayerInfo, setIsAddedLayerInfo] = useState(false);\r\n \r\n const toggleDisplay = (targetId) => {\r\n const bottomPanelContent = document.getElementById('bottom-panel_content');\r\n if (bottomPanelContent) { \r\n const children = bottomPanelContent.children;\r\n \r\n for (let i = 0; i < children.length; i++) {\r\n const child = children[i];\r\n if (child.id === targetId && child.style.display !== 'none') {\r\n return;\r\n }\r\n }\r\n\r\n if(!targetId) {\r\n for (let i = 0; i < children.length; i++) {\r\n const child = children[i];\r\n child.style.display = 'none';\r\n } \r\n } else {\r\n for (let i = 0; i < children.length; i++) {\r\n const child = children[i];\r\n if(child.id === targetId) {\r\n child.style.display = '';\r\n }\r\n else {\r\n child.style.display = 'none';\r\n }\r\n } \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 {children}\r\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 function useGetIsAddedSearchBox() {\r\n return useContext(GetIsAddedSearchBoxContext);\r\n}\r\n\r\nexport function useSetIsAddedSearchBox() {\r\n return useContext(SetIsAddedSearchBoxContext);\r\n}\r\n\r\nexport function useGetIsAddedMapTools() {\r\n return useContext(GetIsAddedMapToolsContext);\r\n}\r\n\r\nexport function useSetIsAddedMapTools() {\r\n return useContext(SetIsAddedMapToolsContext);\r\n}\r\n\r\nexport function useGetIsAddedPlanningInfo() {\r\n return useContext(GetIsAddedPlanningInfoContext);\r\n}\r\n\r\nexport function useSetIsAddedPlanningInfo() {\r\n return useContext(SetIsAddedPlanningInfoContext);\r\n}\r\n\r\nexport function useGetIsAddedLayerInfo() {\r\n return useContext(GetIsAddedLayerInfoContext);\r\n}\r\n\r\nexport function useSetIsAddedLayerInfo() {\r\n return useContext(SetIsAddedLayerInfoContext);\r\n}\r\n\r\nexport function useToggleDisplay() {\r\n return useContext(ToggleDisplayContext);\r\n}\r\n","module.exports = __webpack_public_path__ + \"static/media/closeX.d1844702.svg\";","module.exports = \"data:image/png;base64,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\"","import React, { useEffect, useState, useContext } from \"react\";\r\n\r\nconst GetIsHideFilterBoxContext = React.createContext();\r\nconst SetIsHideFilterBoxContext = React.createContext();\r\n\r\nexport function IsHideFilterBoxProvider({children}) {\r\n const [isHideFilterBox, setIsHideFilterBox] = useState(false);\r\n\r\n return (\r\n \r\n \r\n {children}\r\n \r\n \r\n )\r\n}\r\n\r\nexport function useGetIsHideFilterBox() {\r\n return useContext(GetIsHideFilterBoxContext);\r\n}\r\n\r\nexport function useSetIsHideFilterBox() {\r\n return useContext(SetIsHideFilterBoxContext);\r\n}","module.exports = __webpack_public_path__ + \"static/media/logo.bbba0f01.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAABvAAAAbwHxotxDAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAHhQTFRF////UL/nUL3n4uXnwcbLUL7oU7/oWMHpXsPqYMTqa8jsbcnscMrsfc/uh9PwitTwjNTwktbxmdHomdnymtryntvyn9vypt7zp97zqt/0q9bnq+D0reD0ruH0r+H1sLe9stHgsuL1tuT1u9PfvsTJytHY1tvf4uXncxLRSAAAAAV0Uk5TAGCAuMCvAAwyAAAAaklEQVQYV13P1w6AIAxA0Yp776247f//oUSoUe9bTwhpAQB0lBmgUjNOJA+QEOwkBHgexxeE/ABPMWosozpEAeYrCSHPrXZw495TkHpVFDpl87xI1tFeuF/UgYL/Hxqbqe2Gzx4S6HyRDhdzFxU0MyLo4AAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAABvAAAAbwHxotxDAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAORQTFRF////gICAVYBVTnpZVYBgTHteTnxcU3lZUXxdUHpaT31dT3tcUXteTntaUHxcUXxdT3tbUX1dUXtdWoVgUHtbXIdiXYdjWoVhUHxbUHxcV4JfUHxcT31dUHxcV4JgWINgWINgUn5dUHxcUHxcWINgV4NggKh1UHxcVoJfVYFecJltZpFnVIBfUn1dia95jrR8W4Zigql2hKx3i7J7jLN7kLZ9kbh+krl+lbuAlryAnsOEnsOFn8SFocaGoseHo8iHpMmIp8yJqM2Kqs6LsNSOtNeQtdiRttmRuduSutyTyeqbz/CeKu0angAAADB0Uk5TAAIMFxgbJygpMDc6PD5AQldYbm9wpKi2u7+/wNfY4Obn6vDx8fLy9PT29vf4/Pz8xDTlAAAAAJBJREFUGFdVzEUCglAAANFRsRPj2wk2dncn97+Pi28xy7cYAEL1ikxTAAhWm8iyboCAfmv8g1+/mv/g0y+mBTIdwzAKlgfgTAghhBDlZAwvgNo6yNYlcg5ArS3my+fwtNqWyCuAWhtPRubg3n98Yb2ZHae78/4NkXZP1i1KsEfj78ISPnlsWCHtgpRW+aUpvADjiRVmuZgn3AAAAABJRU5ErkJggg==\"","module.exports = __webpack_public_path__ + \"static/media/paper.c7122ed3.svg\";","module.exports = __webpack_public_path__ + \"static/media/layer.b0acb5f2.svg\";","module.exports = __webpack_public_path__ + \"static/media/user.f27384a9.png\";","import React, { useEffect, useRef } from \"react\";\r\nimport \"./map-tools-panel.scss\";\r\nimport \"ol/ol.css\";\r\nimport Vilanguage from \"../../../languages/vi\";\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport * as MapToolsPanelsStore from \"../../../redux/store/open-layer/map-tools-panels.store\";\r\nimport { Tooltip } from \"@material-ui/core\";\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\nconst LanguageCollect = Vilanguage;\r\n\r\nconst ButtonTooltip = withStyles((theme) => ({\r\n tooltip: {\r\n backgroundColor: \"black\",\r\n color: \"white\",\r\n fontSize: 11,\r\n opacity: 0.5,\r\n },\r\n}))(Tooltip);\r\n\r\nfunction MapToolsPanel(props) {\r\n const isFullScreenMode = useRef(false);\r\n const isTurnOnPinMarkerMode = useRef(false);\r\n const isTurnOnViewInfomationOnClick = useRef(true);\r\n const isTurnOnMeasureMode = useRef(false);\r\n const isTurnOnFilterMode = useRef(false);\r\n\r\n const turnOnMeasureLineMode = () => {\r\n isTurnOnMeasureMode.current = false;\r\n autoTurnOffAllFeature();\r\n removeInteractionOnMap();\r\n props.openLayerController.handleMeasureMode(true, true);\r\n isTurnOnMeasureMode.current = true;\r\n };\r\n\r\n const turnOnMeasurePolygonMode = () => {\r\n isTurnOnMeasureMode.current = false;\r\n autoTurnOffAllFeature();\r\n removeInteractionOnMap();\r\n props.openLayerController.handleMeasureMode(true, false);\r\n isTurnOnMeasureMode.current = true;\r\n };\r\n\r\n const togglePinMarkerMode = (turnOn) => {\r\n if (turnOn) autoTurnOffAllFeature();\r\n props.openLayerController.handlePinMarkerMode(turnOn);\r\n isTurnOnPinMarkerMode.current = turnOn;\r\n };\r\n\r\n const toggleDisplayFullscreenMode = () => {\r\n props.openLayerController.handleDisplayFullScreenViewMode(\r\n !isFullScreenMode.current\r\n );\r\n isFullScreenMode.current = !isFullScreenMode.current;\r\n };\r\n\r\n const autoTurnOffAllFeature = () => {\r\n if (isTurnOnViewInfomationOnClick.current && !isTurnOnPinMarkerMode.current)\r\n toggleViewInfomationOnClick(false);\r\n if (isTurnOnPinMarkerMode.current) togglePinMarkerMode(false);\r\n if (isTurnOnMeasureMode.current)\r\n props.openLayerController.handleMeasureMode(false, false);\r\n if (isTurnOnFilterMode.current) handleControlFilterMode(false);\r\n };\r\n\r\n const zoomIn = () => {\r\n props.openLayerController.handleZoomIn();\r\n };\r\n\r\n const zoomOut = () => {\r\n props.openLayerController.handleZoomOut();\r\n };\r\n\r\n const exportMap = (isSave) => {\r\n props.openLayerController.handleExportMap(isSave);\r\n };\r\n\r\n const moveViewReport = () => {\r\n autoTurnOffAllFeature();\r\n removeInteractionOnMap();\r\n };\r\n\r\n const selectOne = () => {\r\n autoTurnOffAllFeature();\r\n removeInteractionOnMap();\r\n props.openLayerController.handleSelectedOne();\r\n };\r\n\r\n const selectMany = () => {\r\n autoTurnOffAllFeature();\r\n removeInteractionOnMap();\r\n props.openLayerController.handleSelectMany();\r\n };\r\n\r\n const toggleViewInfomationOnClick = (turnOn) => {\r\n // removeInteractionOnMap();\r\n if (turnOn) autoTurnOffAllFeature();\r\n props.openLayerController.handleOnOffViewInfomation(turnOn);\r\n // isTurnOnViewInfomationOnClick.current = turnOn;\r\n };\r\n\r\n const viewCurrentLocation = () => {\r\n const toolButton = document.querySelector('[class=\"tool-button\"]');\r\n \r\n autoTurnOffAllFeature();\r\n props.openLayerController.handleViewCurrentLocaltion();\r\n setTimeout(()=>toolButton.click(), 100);\r\n };\r\n\r\n const removeInteractionOnMap = () => {\r\n props.openLayerController.removeInteractionOnMap();\r\n }\r\n\r\n function handleControlFilterMode(isTurnOn = false) {\r\n if (isTurnOn) {\r\n //autoTurnOffAllFeature();\r\n props.SetDisplayInfomationPopup(true);\r\n } else {\r\n props.openLayerController.functionTurnOffFilterMode();\r\n }\r\n //isTurnOnFilterMode.current = isTurnOn;\r\n }\r\n\r\n const listTools = [\r\n {\r\n title: LanguageCollect.planningMapView.mapToolsPanel.viewObjectInfomation,\r\n action: () => toggleViewInfomationOnClick(true),\r\n icon: \"info\",\r\n },\r\n {\r\n title: LanguageCollect.planningMapView.mapToolsPanel.toggleFullScreen,\r\n action: toggleDisplayFullscreenMode,\r\n icon: \"full-screen\",\r\n },\r\n {\r\n title: LanguageCollect.planningMapView.mapToolsPanel.zoomIn,\r\n action: zoomIn,\r\n icon: \"zoomIn\",\r\n },\r\n {\r\n title: LanguageCollect.planningMapView.mapToolsPanel.zoomOut,\r\n action: zoomOut,\r\n icon: \"zoomOut\",\r\n },\r\n {\r\n title: LanguageCollect.planningMapView.mapToolsPanel.filterInfomation,\r\n action: () => handleControlFilterMode(true),\r\n icon: \"filter\",\r\n isHidden: props.isHiddenFilterInfo\r\n },\r\n {\r\n title: LanguageCollect.planningMapView.mapToolsPanel.selectAnObject,\r\n action: selectOne,\r\n icon: \"selectOne\",\r\n isHidden: props.isHiddenSelectAnObject\r\n },\r\n {\r\n title: LanguageCollect.planningMapView.mapToolsPanel.selectMultiObject,\r\n action: selectMany,\r\n icon: \"selectArea\",\r\n isHidden: props.isHiddenSelectMultiObject\r\n },\r\n {\r\n title: LanguageCollect.planningMapView.mapToolsPanel.measuareArea,\r\n action: turnOnMeasurePolygonMode,\r\n icon: \"measureArea\",\r\n },\r\n {\r\n title: LanguageCollect.planningMapView.mapToolsPanel.measuareDistance,\r\n action: turnOnMeasureLineMode,\r\n icon: \"ruler\",\r\n },\r\n {\r\n title: LanguageCollect.planningMapView.mapToolsPanel.moveViewport,\r\n action: moveViewReport,\r\n icon: \"finger\",\r\n isHidden: props.isHiddenMoveViewport\r\n },\r\n {\r\n title: LanguageCollect.planningMapView.mapToolsPanel.printTheMap,\r\n action: () => exportMap(false),\r\n icon: \"print\",\r\n isHidden: props.isHiddenPrintTheMap\r\n },\r\n {\r\n title: LanguageCollect.planningMapView.mapToolsPanel.myPosition,\r\n action: viewCurrentLocation,\r\n icon: \"position\",\r\n },\r\n {\r\n title: LanguageCollect.planningMapView.mapToolsPanel.exportMap,\r\n action: () => exportMap(true),\r\n icon: \"photo\",\r\n isHidden: props.isHiddenExportMap\r\n },\r\n // {\r\n // title: LanguageCollect.planningMapView.mapToolsPanel.compare,\r\n // action: mockFunction,\r\n // icon: \"slideshow\"\r\n // },\r\n {\r\n title: LanguageCollect.planningMapView.mapToolsPanel.locationMarker,\r\n action: () => togglePinMarkerMode(true),\r\n icon: \"marker\",\r\n },\r\n ];\r\n\r\n function handleChangeClassStateButton(indexActive) {\r\n const ListButton = Array.from(\r\n document.getElementsByClassName(\"tool-button\")\r\n );\r\n ListButton.map((Button, index) => {\r\n if (indexActive !== index) Button.classList.remove(\"active\");\r\n else Button.classList.add(\"active\");\r\n });\r\n }\r\n\r\n useEffect(() => {\r\n const ListButton = Array.from(\r\n document.getElementsByClassName(\"tool-button\")\r\n );\r\n ListButton.map((Button, index) => {\r\n Button.addEventListener(\"click\", () =>\r\n handleChangeClassStateButton(index)\r\n );\r\n });\r\n if (ListButton[0]) ListButton[0].classList.add(\"active\");\r\n }, [props.isDisplayPanel]);\r\n\r\n return props.isDisplayPanel ? (\r\n
    \r\n ) : null;\r\n}\r\n\r\nfunction RenderButtonTool(props) {\r\n const data = props.data;\r\n let styleCustom = {};\r\n switch (data.title) {\r\n case LanguageCollect.planningMapView.mapToolsPanel.toggleFullScreen:\r\n case LanguageCollect.planningMapView.mapToolsPanel.zoomIn:\r\n case LanguageCollect.planningMapView.mapToolsPanel.zoomOut:\r\n styleCustom = { pointerEvents: \"inherit\" };\r\n }\r\n\r\n return (\r\n
    \r\n \r\n data.action()}\r\n style={styleCustom}\r\n >\r\n \r\n \r\n \r\n
    \r\n );\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n isDisplayPanel: state.mapToolsPanel.displayPanel,\r\n openLayerController: state.openlayer.openLayerController,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) =>\r\n bindActionCreators(\r\n {\r\n SetDisplayInfomationPopup: MapToolsPanelsStore.SetDisplayInfomationPopup,\r\n },\r\n dispatch\r\n );\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MapToolsPanel);\r\n","import React, { useState, useEffect } from \"react\";\r\nimport Select from \"react-select\";\r\nimport \"./select-current-layer.scss\";\r\nimport LayerSettingsModels from \"../../../models/map-data-model-b/layer-setting-models\";\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport OpenlayerController from \"../../../models/open-layer/openlayer-controller-custom.model\";\r\nimport LayerCategoryModels from \"models/map-data-model-b/layer-category-models\";\r\nimport * as MapToolDataStore from \"../../../redux/store/map-tool/map-tool.store\";\r\n\r\ninterface LayerSettingsModelExtends\r\n extends LayerSettingsModels.LayerSettingsModel {\r\n label: string;\r\n value: string;\r\n opacity: string;\r\n}\r\n\r\ninterface InitProps {\r\n listLayers: LayerSettingsModels.LayerSettingsModel[];\r\n openLayerController?: OpenlayerController;\r\n dataToggleLayer?: LayerCategoryModels.LayerCategoryModel[];\r\n UpdateDataToggleLayer?: (mapToolData: any) => any;\r\n}\r\n\r\nfunction AddLabelValueToListLayers(\r\n listLayer: LayerSettingsModels.LayerSettingsModel[]\r\n): LayerSettingsModelExtends[] {\r\n const result: LayerSettingsModelExtends[] = [];\r\n listLayer.map((layerObject) =>\r\n result.push({\r\n ...layerObject,\r\n label: layerObject.name,\r\n value: String(layerObject.id),\r\n opacity: \"100\",\r\n })\r\n );\r\n return result;\r\n}\r\n\r\nfunction SelectCurrentLayerView(props: InitProps) {\r\n const [layer, setLayer] = useState();\r\n const [listLayers, setListLayers] = useState([]);\r\n\r\n useEffect(() => {\r\n if (props.listLayers && props.listLayers.length > 0) {\r\n let layers = AddLabelValueToListLayers(props.listLayers);\r\n // setLayer(layers[0]);\r\n setListLayers(layers);\r\n }\r\n }, [props.listLayers]);\r\n\r\n useEffect(()=> {\r\n return()=>{\r\n props.openLayerController?.resetLayerOpacity();\r\n console.log(\"UNMOUNT CALL\");\r\n }\r\n },[])\r\n\r\n useEffect(()=> {\r\n if(!layer || !layer.opacity) return;\r\n let opacity = Number(layer.opacity) / 100;\r\n props.openLayerController?.changeCurrentLayerOpacity(opacity, layer);\r\n },[layer])\r\n\r\n const handleChangeCurrentLayer = (\r\n selectedObject: LayerSettingsModelExtends | any,\r\n actionDetail: any\r\n ) => {\r\n setLayer(selectedObject);\r\n\r\n if ( !selectedObject.is_check ) {\r\n selectedObject.is_check = !selectedObject.is_check;\r\n props.UpdateDataToggleLayer && props.UpdateDataToggleLayer(selectedObject);\r\n }\r\n \r\n props.openLayerController?.changeCurrentLayer(selectedObject);\r\n props.openLayerController?.resetLayerOpacity();\r\n };\r\n\r\n const handleChangeOpacityOfCurrentLayer = (event: any) => {\r\n let data = {\r\n ...layer,\r\n opacity: event.target.value,\r\n };\r\n\r\n // const dataList = listLayers.map((item) => {\r\n // if (item.id === data.id) {\r\n // item.opacity = data.opacity;\r\n // }\r\n // return item;\r\n // });\r\n // let opacity = Number(data.opacity) / 100;\r\n // props.openLayerController?.changeCurrentLayerOpacity(opacity, layer);\r\n // setListLayers(dataList);\r\n setLayer(data);\r\n };\r\n\r\n if (listLayers.length === 0) return null;\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n handleChangeCurrentLayer(selected, action)\r\n }\r\n options={listLayers}\r\n placeholder=\"Lớp hiện hành\"\r\n />\r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nconst mapStateToProps = (state: any) => ({\r\n openLayerController: state.openlayer.openLayerController,\r\n dataToggleLayer: state.mapToolData.dataToggleLayer,\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: any) =>\r\n bindActionCreators(\r\n {\r\n UpdateDataToggleLayer: MapToolDataStore.UpdateDataToggleLayer,\r\n },\r\n dispatch\r\n);\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SelectCurrentLayerView);\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport React, { useEffect, useState } from \"react\";\r\nimport * as apiConfig from '../../../api/api-config';\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport { geolocated } from \"react-geolocated\";\r\nimport history from \"../../../common/history\";\r\nimport UrlCollect from \"../../../common/url-collect\";\r\n\r\nimport PlacesAutocomplete, {\r\n geocodeByAddress,\r\n getLatLng,\r\n} from \"react-places-autocomplete\";\r\nimport { AsyncPaginate } from \"react-select-async-paginate\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport {\r\n faCogs,\r\n faMap as baseMapIcon,\r\n faInfoCircle,\r\n faSlidersH,\r\n faSearch,\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\n\r\nimport * as StatementAction from \"../../../redux/store/statement/statement.store\";\r\nimport * as CoordinateConvert from \"../../../redux/store/home-page/home-page.store\"\r\nimport {\r\n SetDisplayMaptoolPanel,\r\n SetDisplayInfomationPopup,\r\n} from \"../../../redux/store/open-layer/map-tools-panels.store\";\r\nimport HandleErrorOnGetGeoloaction from '../../../common/handle-error-navigator-geolocation';\r\nimport {\r\n TopRightPanelPropsModel,\r\n CoordsModel,\r\n PlanningModelMapTool,\r\n} from \"../../../models/planning-map-view/top-right-panel-models\";\r\nimport SelectCurrentLayerView from \"../select-current-layer/select-current-layer.view\";\r\nimport { ExtracAllLayersArrays } from \"../../../common/extract-information-from-map-data\";\r\nimport ViLanguages from \"../../../languages/vi\";\r\nimport { Tooltip } from '@material-ui/core';\r\nimport \"./top-right-panel.scss\";\r\nimport * as MapDataStore from \"../../../redux/store/map-data/map-data.store\";\r\nimport { GetLatLngPlace } from \"../../../redux/store/home-page/home-page.store\";\r\nimport {\r\n NotificationMessageType,\r\n NotificationPosition,\r\n} from \"../../../utils/configuration\";\r\nimport * as mapHelper from \"../../../common/map\";\r\nimport ShowNotification from \"../../../components/react-notifications/react-notifications\";\r\nimport * as viVN from \"../../../languages/vi-VN.json\";\r\nimport * as map from \"../../../common/map\";\r\nimport { isMobile } from 'react-device-detect';\r\nconst LanguageCollects = ViLanguages;\r\n\r\nfunction TopRightPanelView(props: TopRightPanelPropsModel) {\r\n let commentInput: any = null;\r\n\r\n const [address, setAddress] = useState(\"\");\r\n const [currentPosition, setCurrentPosition] = useState();\r\n const [planningModel, setPlanningModel] = useState();\r\n const [currentPolygon, setCurrentPolygon] = useState();\r\n\r\n useEffect(() => {\r\n onGetData();\r\n //props.GetAllPlanningBoundariesGeomText && props.GetAllPlanningBoundariesGeomText();\r\n }, []);\r\n useEffect(() => {\r\n getPolygonById();\r\n }, [props.planningId, props.listBoundaries])\r\n\r\n const onGetData = () => {\r\n document\r\n .getElementById(\"dropdownSelectBaseMap\")\r\n ?.addEventListener(\"click\", () => {\r\n props.SetDisplayInfomationPopup(false);\r\n });\r\n\r\n navigator.geolocation.getCurrentPosition((position: any) => {\r\n setCurrentPosition(position.coords);\r\n });\r\n\r\n props.planningId &&\r\n props.planningId > 0 &&\r\n onGetDetailPlanningById(props.planningId);\r\n };\r\n\r\n const onGetDetailPlanningById = (planningId: number) => {\r\n StatementAction.GetDetailPlanningById(planningId).then((res) => {\r\n const result = (res && res.content) || null;\r\n setPlanningModel(result);\r\n props.setPlanningModelInMap && props.setPlanningModelInMap(result)\r\n });\r\n };\r\n\r\n //--- Change base map\r\n const handleOnClickChangeBaseMap = (index: number) => {\r\n setOpenBaseMap(false);\r\n props.openLayerController.changeBaseMap(props.baseMapList[index].url);\r\n };\r\n\r\n //--- Open map tools\r\n const toggleDisplayMapToolsPanel = () => {\r\n props.SetDisplayMaptoolPanel(!props.isMapToolsPanelsDisplay);\r\n setOpenCurrentLayerView(false);\r\n setOpenBaseMap(false);\r\n setOpenInfo(false);\r\n setOpenSearch(false);\r\n };\r\n\r\n //--- Open current layer view\r\n const [openCurrentLayerView, setOpenCurrentLayerView] = useState(false);\r\n const handleClickCurrentLayerView = () => {\r\n setOpenCurrentLayerView(!openCurrentLayerView);\r\n setOpenBaseMap(false);\r\n props.SetDisplayMaptoolPanel(false);\r\n setOpenInfo(false);\r\n setOpenSearch(false);\r\n };\r\n\r\n //--- Open base map\r\n const [openBaseMap, setOpenBaseMap] = useState(false);\r\n const handleClickBaseMap = () => {\r\n setOpenBaseMap(!openBaseMap);\r\n setOpenCurrentLayerView(false);\r\n props.SetDisplayMaptoolPanel(false);\r\n setOpenInfo(false);\r\n setOpenSearch(false);\r\n };\r\n\r\n //--- Open info\r\n const [openInfo, setOpenInfo] = useState(false);\r\n const handleClickInfo = () => {\r\n setOpenInfo(!openInfo);\r\n setOpenBaseMap(false);\r\n setOpenCurrentLayerView(false);\r\n props.SetDisplayMaptoolPanel(false);\r\n setOpenSearch(false);\r\n };\r\n\r\n //--- Open search\r\n const [openSearch, setOpenSearch] = useState(false);\r\n const handleClickSearch = () => {\r\n setOpenSearch(!openSearch);\r\n setOpenInfo(false);\r\n setOpenBaseMap(false);\r\n setOpenCurrentLayerView(false);\r\n props.SetDisplayMaptoolPanel(false);\r\n };\r\n\r\n //--- Open locate\r\n const [openLocate, setOpenLocate] = useState(true);\r\n const handleClickLocate = () => {\r\n setOpenLocate(true);\r\n setOpenSearchWgs84(false)\r\n setOpenCoordinates(false);\r\n };\r\n\r\n //--- Open coordinates\r\n const [openCoordinates, setOpenCoordinates] = useState(false);\r\n const [openSearchWgs84, setOpenSearchWgs84] = useState(false);\r\n const handleClickCoordinates = () => {\r\n setOpenCoordinates(true);\r\n setOpenSearchWgs84(false)\r\n setOpenLocate(false);\r\n };\r\n const handleSearchWgs84 = () => {\r\n setOpenCoordinates(false);\r\n setOpenSearchWgs84(true)\r\n setOpenLocate(false);\r\n };\r\n\r\n const SearchPlanningByLatLng = (lng: any, lat: any) => {\r\n return new Promise((resolve, reject) => {\r\n CoordinateConvert.SearchPlanningByLatLng(lng, lat).then((res) => {\r\n resolve(res);\r\n })\r\n .catch((err) => reject(err));\r\n });\r\n }\r\n\r\n const searchCoordinate = (event: any) => {\r\n event.preventDefault();\r\n if (!openLocate) {\r\n let value = commentInput.value.trim();\r\n let coordinateList = value.split(\",\");\r\n if (coordinateList && coordinateList.length === 2) {\r\n let x = parseFloat(coordinateList[0]);\r\n let y = parseFloat(coordinateList[1]);\r\n if (openCoordinates) {\r\n CoordinateConvert.GetVn2000ToWgs84(y, x).then((res) => {\r\n props.openLayerController.handleSearchCoordinateMapDetail([res[0], res[1]]) \r\n // SearchPlanningByLatLng(res[0], res[1]).then((result: any) => {\r\n // if (result.content === 0) {\r\n // ShowNotification(\r\n // viVN.Errors.CoordinateOutSidePolygon,\r\n // NotificationMessageType.Warning,\r\n // NotificationPosition.Center\r\n // );\r\n // } else {\r\n // history.push(`${UrlCollect.PlanningMapViewDetail}${result.content}?lat=${res[1]}&lng=${res[0]}&searchType=place`)\r\n // window.location.reload();\r\n // }\r\n // })\r\n })\r\n }\r\n if (openSearchWgs84) {\r\n props.openLayerController.handleSearchCoordinateMapDetail([y,x])\r\n // SearchPlanningByLatLng(y, x).then((res: any) => {\r\n // if (res.content === 0) {\r\n // ShowNotification(\r\n // viVN.Errors.CoordinateOutSidePolygon,\r\n // NotificationMessageType.Warning,\r\n // NotificationPosition.Center\r\n // );\r\n // } else {\r\n // history.push({\r\n // pathname: `${UrlCollect.PlanningMapViewDetail}${res.content}`,\r\n // search: `?lat=${x}&lng=${y}&searchType=place`,\r\n // })\r\n // window.location.reload();\r\n // }\r\n // })\r\n }\r\n }\r\n } else {\r\n ShowNotification(\r\n \"Nhập thông tin chưa đúng định dạng\",\r\n NotificationMessageType.Warning,\r\n );\r\n };\r\n \r\n // if (openCoordinates) {\r\n // props.openLayerController.handleSearchCoordinate(\r\n // commentInput && commentInput.value ? commentInput.value.trim() : \"\"\r\n // );\r\n\r\n // }\r\n };\r\n\r\n const [filteredSuggestions, setFilteredSuggestions] = useState([])\r\n\r\n const Options = async (search: string, loadedOptions: any) => {\r\n if (search.length >= 4) {\r\n GetLatLngPlace(search)\r\n .then((res) => {\r\n setFilteredSuggestions(res && res.result && res.result.length > 0 ? res.result : [])\r\n })\r\n }\r\n const addressSuggestions = filteredSuggestions.map((item: any, index) => {\r\n return ({\r\n value: index,\r\n label: item.address\r\n })\r\n\r\n })\r\n return {\r\n options: addressSuggestions,\r\n\r\n }\r\n }\r\n\r\n const handleSelectAddress = (address: any) => {\r\n //setAddress(address);\r\n\r\n GetLatLngPlace(address.label)\r\n .then((res) => res.result[0])\r\n .then((result) => result.location)\r\n .then((latLng) => {\r\n props.openLayerController.handleSearchCoordinateMapDetail([latLng.lng, latLng.lat]);\r\n\r\n // SearchPlanningByLatLng(latLng.lng, latLng.lat).then((res: any) => {\r\n // console.log(\"SearchPlanningByLatLng\", res);\r\n // if (res.content === 0) {\r\n // ShowNotification(\r\n // viVN.Errors.CoordinateOutSidePolygon,\r\n // NotificationMessageType.Warning,\r\n // NotificationPosition.Center\r\n // );\r\n // } else {\r\n // // history.push(`${UrlCollect.PlanningMapViewDetail}${res.content}?lat=${latLng.lat}&lng=${latLng.lng}&searchType=place`)\r\n // // window.location.reload();\r\n \r\n // // props.openLayerController.handleSearchCoordinateMapDetail([latLng.lng, latLng.lat])\r\n // }\r\n // })\r\n })\r\n .catch();\r\n // .then((latLng) => {\r\n // console.log(latLng)\r\n // if (checkAddressInPolyon(latLng.lng, latLng.lat)) {\r\n // props.openLayerController.placeSearch([latLng.lng, latLng.lat]);\r\n // props.openLayerController.functionClickViewInfomationListener({ coordinate: [latLng.lng, latLng.lat] })\r\n // history.push(`${UrlCollect.PlanningMapViewDetail}2?lat=${latLng.lat}&lng=${latLng.lng}&searchType=place`)\r\n // } else {\r\n // ShowNotification(\r\n // viVN.Errors.CoordinateOutSidePolygon,\r\n // NotificationMessageType.Warning,\r\n // NotificationPosition.Center\r\n // );\r\n // }\r\n // })\r\n // .catch((error) => console.error(\"Error\", error));\r\n };\r\n\r\n const handleClickCurrentLocation = () => {\r\n if (!currentPosition) {\r\n // navigator.geolocation.getCurrentPosition((position) => {\r\n // position &&\r\n // position.coords && checkAddressInPolyon(position.coords.longitude, position.coords.latitude) &&\r\n // props.openLayerController.placeSearch([\r\n // position.coords.longitude,\r\n // position.coords.latitude,\r\n // ]);\r\n // }, HandleErrorOnGetGeoloaction);\r\n ShowNotification(\r\n viVN.Errors.OpenCoordinateCurrent,\r\n NotificationMessageType.Error,\r\n NotificationPosition.TopRight\r\n );\r\n } else {\r\n props.openLayerController.handleViewCurrentLocaltion();\r\n // checkAddressInPolyon(currentPosition.longitude, currentPosition.latitude) && props.openLayerController.viewCurrentLocaltion()\r\n }\r\n };\r\n\r\n const classnames = (...args: any) => {\r\n const classes: any = [];\r\n args.forEach((arg: any) => {\r\n if (typeof arg === \"string\") {\r\n classes.push(arg);\r\n } else if (typeof arg === \"object\" && arg !== null) {\r\n Object.keys(arg).forEach((key) => {\r\n if (arg[key]) {\r\n classes.push(key);\r\n }\r\n });\r\n } else {\r\n throw new Error(\r\n \"`classnames` only accepts string or object as arguments\"\r\n );\r\n }\r\n });\r\n\r\n return classes.join(\" \");\r\n };\r\n\r\n function checkAddressInPolyon(x: any, y: any) {\r\n let isInside = false;\r\n currentPolygon?.map((item: any) => {\r\n if (mapHelper.isPointInPolygon(y, x, item)) {\r\n isInside = true;\r\n return;\r\n }\r\n });\r\n if (isInside) {\r\n return true;\r\n } else {\r\n ShowNotification(\r\n viVN.Errors.CoordinateOutSidePolygon,\r\n NotificationMessageType.Warning,\r\n NotificationPosition.Center\r\n );\r\n }\r\n return false;\r\n }\r\n function getPolygonById() {\r\n let arrCoordinatePolygon: number[][][] = [];\r\n let polygonCurrent = props.listBoundaries && props.listBoundaries.length > 0 && props.listBoundaries.find((item) => item.id == props.planningId);\r\n polygonCurrent && arrCoordinatePolygon.push(map.convertStringToArray(polygonCurrent.geomText));\r\n setCurrentPolygon(arrCoordinatePolygon);\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n\r\n {openSearch && (\r\n
    \r\n \r\n \r\n {openLocate && (\r\n \"Không có dữ liệu\"}\r\n />\r\n )}\r\n {openCoordinates && (\r\n {\r\n commentInput = input;\r\n }}\r\n placeholder=\"Nhập tọa độ VN2000 (Tọa độ X, Tọa độ Y)\"\r\n className=\"ml-2\"\r\n />\r\n )}\r\n {openSearchWgs84 && (\r\n {\r\n commentInput = input;\r\n }}\r\n placeholder=\"Nhập tọa độ Wgs84 (Tọa độ Lat, Tọa độ Lng)\"\r\n className=\"ml-2\"\r\n />\r\n )}\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n )}\r\n
    \r\n\r\n
    \r\n \r\n \r\n\r\n\r\n {openCurrentLayerView && props.mapData && (\r\n
    \r\n
    \r\n
    \r\n \r\n ×\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n\r\n
    \r\n \r\n \r\n {openInfo && (\r\n
    \r\n
    Quy hoạch tổng thể: {planningModel?.name}
    \r\n
    \r\n Diện tích: {planningModel?.acreage} km2\r\n
    \r\n
    Dân số: {planningModel?.population} người
    \r\n \r\n
    \r\n Quyết định phê duyệt: {planningModel?.numberOfDecisions}\r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n\r\n {openBaseMap && props.baseMapList.length > 0 && (\r\n
    \r\n {props.baseMapList.map((basemap, index) => (\r\n handleOnClickChangeBaseMap(index)}\r\n className=\"dropdown-item\"\r\n >\r\n {basemap.name}\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: any) => ({\r\n isMapToolsPanelsDisplay: state.mapToolsPanel.displayPanel,\r\n mapData: state.mapData.mapData,\r\n openLayerController: state.openlayer.openLayerController,\r\n listBoundaries: state.mapData.listBoundaries,\r\n listPolygon: state.mapData.listPolygon,\r\n dataToggleLayer: state.mapToolData.dataToggleLayer,\r\n});\r\nconst mapDispatchToProps = (dispatch: any) =>\r\n bindActionCreators(\r\n {\r\n SetDisplayMaptoolPanel: SetDisplayMaptoolPanel,\r\n SetDisplayInfomationPopup: SetDisplayInfomationPopup,\r\n GetAllPlanningBoundariesGeomText: MapDataStore.GetAllPlanningBoundariesGeomText,\r\n },\r\n dispatch\r\n );\r\n\r\nexport default geolocated({\r\n positionOptions: {\r\n enableHighAccuracy: false,\r\n },\r\n userDecisionTimeout: 5000,\r\n})(connect(mapStateToProps, mapDispatchToProps)(TopRightPanelView));\r\n","module.exports = __webpack_public_path__ + \"static/media/delete.98894b6a.svg\";","module.exports = __webpack_public_path__ + \"static/media/circle.7ea90997.svg\";","module.exports = __webpack_public_path__ + \"static/media/cursor.2e6e8879.svg\";","module.exports = __webpack_public_path__ + \"static/media/last.3f2e1622.svg\";","module.exports = __webpack_public_path__ + \"static/media/lineString.be2b15f4.svg\";","module.exports = __webpack_public_path__ + \"static/media/polygon.fde7c705.svg\";","module.exports = __webpack_public_path__ + \"static/media/radius.64add9dc.svg\";","module.exports = __webpack_public_path__ + \"static/media/search.d518c4bb.svg\";","var map = {\n\t\"./add_reflect.svg\": 909,\n\t\"./arrow-down.svg\": 910,\n\t\"./arrow-left-white.svg\": 911,\n\t\"./arrow-right-black.svg\": 912,\n\t\"./arrow-right-outline-color.svg\": 913,\n\t\"./arrow-right-outline.svg\": 914,\n\t\"./arrow-right-white.svg\": 915,\n\t\"./bx-user-circle.svg\": 916,\n\t\"./circle.svg\": 542,\n\t\"./close-black.svg\": 550,\n\t\"./close.svg\": 917,\n\t\"./closeX.svg\": 400,\n\t\"./cursor-pointer.svg\": 371,\n\t\"./cursor.svg\": 543,\n\t\"./delete-icon.svg\": 293,\n\t\"./delete.svg\": 541,\n\t\"./document-duplicate.svg\": 551,\n\t\"./edit-icon.svg\": 294,\n\t\"./email-footer.svg\": 918,\n\t\"./feather_clock.svg\": 919,\n\t\"./filter.svg\": 920,\n\t\"./finger.svg\": 921,\n\t\"./first.svg\": 922,\n\t\"./full-download.svg\": 923,\n\t\"./full-screen.svg\": 924,\n\t\"./grid-chart-solid.svg\": 925,\n\t\"./guide.svg\": 926,\n\t\"./info.svg\": 927,\n\t\"./information.svg\": 552,\n\t\"./last.svg\": 544,\n\t\"./layer.svg\": 505,\n\t\"./layers.svg\": 928,\n\t\"./lineString.svg\": 545,\n\t\"./locate.svg\": 341,\n\t\"./location-pointer.svg\": 929,\n\t\"./map-filled.svg\": 930,\n\t\"./map-outline-01.svg\": 931,\n\t\"./map-outline-02.svg\": 932,\n\t\"./marker.svg\": 933,\n\t\"./md-document-duplicate.svg\": 934,\n\t\"./md-download.svg\": 935,\n\t\"./measureArea.svg\": 936,\n\t\"./next.svg\": 937,\n\t\"./paper.svg\": 473,\n\t\"./pdf-file.svg\": 938,\n\t\"./phone-call-footer.svg\": 939,\n\t\"./photo.svg\": 940,\n\t\"./place-footer.svg\": 941,\n\t\"./place.svg\": 340,\n\t\"./planning-name.svg\": 339,\n\t\"./polygon.svg\": 546,\n\t\"./position.svg\": 942,\n\t\"./prev.svg\": 943,\n\t\"./print.svg\": 944,\n\t\"./radius.svg\": 547,\n\t\"./ruler.svg\": 945,\n\t\"./search-circle.svg\": 281,\n\t\"./search-sidebar.svg\": 946,\n\t\"./search.svg\": 548,\n\t\"./searchLocation.svg\": 947,\n\t\"./selectArea.svg\": 948,\n\t\"./selectOne.svg\": 949,\n\t\"./settings-gears.svg\": 950,\n\t\"./slideshow.svg\": 951,\n\t\"./th-list.svg\": 952,\n\t\"./user.svg\": 953,\n\t\"./zoomIn.svg\": 954,\n\t\"./zoomOut.svg\": 955\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 549;","module.exports = __webpack_public_path__ + \"static/media/close-black.281cd552.svg\";","module.exports = __webpack_public_path__ + \"static/media/document-duplicate.37098264.svg\";","module.exports = __webpack_public_path__ + \"static/media/information.239b0e34.svg\";","export default {\r\n planningMapView: {\r\n baseMap: \"Bản đồ nền\",\r\n toolsMap: \"Công cụ bản đồ\",\r\n googleMap: \"Bản đồ Google\",\r\n satelliteMap: \"Bản đồ vệ tinh\",\r\n notUseBaseMap: \"Không dùng bản đồ nền\",\r\n mapToolsPanel: {\r\n viewObjectInfomation: \"Xem thông tin đối tượng\",\r\n toggleFullScreen: \"Mở rộng/Thu nhỏ\",\r\n zoomIn: \"Phóng to bản đồ\",\r\n zoomOut: \"Thu nhỏ bản đồ\",\r\n filterInfomation: \"Lọc thông tin\",\r\n mapLegend: \"Chú giải bản đồ\",\r\n selectAnObject: \"Chọn một đối tượng\",\r\n selectMultiObject: \"Chọn nhiều đối tượng\",\r\n measuareArea: \"Đo diện tích\",\r\n measuareDistance: \"Đo khoảng cách\",\r\n moveViewport: \"Di chuyển khung nhìn\",\r\n printTheMap: \"In bản đồ\",\r\n myPosition: \"Xác định vị trí của bạn\",\r\n exportMap: \"Xuất bản đồ\",\r\n compare: \"So sánh\",\r\n locationMarker: \"Đánh dấu vị trí\",\r\n },\r\n filterInfomationPopup: {\r\n headTitle: \"Tìm kiếm đối tượng\",\r\n labelSelectSearch: \"Chọn đối tượng tìm kiếm\",\r\n searchInLine: \"Tìm kiếm trên đường\",\r\n searchInArea: \"Tìm kiếm trong vùng\",\r\n searchInCircle: \"TÌm kiếm trong đường tròn\",\r\n searchInSquare: \"Tìm kiếm trong hình chữ nhật\",\r\n searchWithAttribute: \"Theo thuộc tính\",\r\n search: \"Tìm kiếm\",\r\n delete: \"Xóa\",\r\n close: \"Đóng\",\r\n },\r\n },\r\n planningMapView_guideToUse: \"Hướng dẫn sử dụng\",\r\n planningMapView_guideToUse_category: \"Danh mục hướng dẫn\",\r\n planningMapView_map: \"Bản đồ\",\r\n planningMapView_infomation: \"Thông tin\",\r\n planningMapView_relatedPlanning: \"Quy hoạch liên quan\",\r\n planningMapView_result: \"Kết quả\",\r\n header_homePage: \"Trang chủ\",\r\n header_pleaseConsultTheCommunity: \"Xin ý kiến cộng đồng\",\r\n header_lookUpPlanning: \"Tra cứu quy hoạch\",\r\n header_news: \"Tin tức\",\r\n header_information: \"Thông tin\",\r\n header_planningAnnouncement: \"Công bố quy hoạch\",\r\n header_recordsManager: \"Quản lý hồ sơ\",\r\n header_reflect: \"Phản ánh hiện trường\",\r\n header_map: \"Bản đồ\",\r\n header_Contact: \"Liên hệ\",\r\n header_generalPlanning: \"Quy hoạch chung\",\r\n header_syntheticPlanning: \"Tổng hợp quy hoạch\",\r\n header_cityPlanning: \"Quy hoạch theo Huyện/Thành phố\",\r\n header_subdivisionPlanning: \"Quy hoạch phân khu\",\r\n header_detailedPlanning: \"Quy hoạch chi tiết\",\r\n header_specializedPlanning: \"Quy hoạch chuyên ngành\",\r\n header_administration: \"Quản trị\",\r\n header_logout: \"Đăng xuất\",\r\n header_logIn: \"Đăng Nhập\",\r\n user_info: \"Thông tin cá nhân\",\r\n reflect_recommendations: \"Phản ánh kiến nghị\",\r\n header_myReflect: \"Phản ánh của bạn\",\r\n change_password: \"Đổi mật khẩu\",\r\n header_account: \"Tài khoản\",\r\n header_title: \"GIS Tiên Yên\",\r\n footer_titleName: \"SỞ XÂY DỰNG TỈNH SƠN LA\",\r\n footer_email: \"sxd@sonla.gov.vn\",\r\n footer_email_to: \"sxd@sonla.gov.vn\",\r\n footer_address: \"Tầng 1&2 tòa nhà 6T2, Trụ sở Trung tâm hành chính tỉnh, TP Sơn La, tỉnh Sơn La\",\r\n footer_hotline: \"02123852265\",\r\n footer_hotline_tel: \"02123852265\",\r\n footer_fax: \"02123751980\",\r\n footer_website: \"http://soxaydung.sonla.gov.vn/\",\r\n footer_website_to: \"http://soxaydung.sonla.gov.vn/\", \r\n contact_map_center_lat: 20.827501724727288,\r\n contact_map_center_lng: 105.34172903977286,\r\n contact_map_marker_lat: 20.827501724727288,\r\n contact_map_marker_lng: 105.34172903977286,\r\n contact_map_url: \"https://www.google.com/maps/embed?pb=!1m16!1m12!1m3!1d7433.509494600808!2d103.90812887840333!3d21.320705088779242!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!2m1!1zc-G7nyB4w6J5IGThu7FuZyB04buJbmggc8ahbiBsYQ!5e0!3m2!1svi!2s!4v1666779103014!5m2!1svi!2s\"\r\n\r\n};\r\n","import Service from \"../../../api/api-service\";\r\nimport { ApiUrl } from \"../../../api/api-url\";\r\nimport * as config from \"../../../common/config\";\r\n\r\nconst service = new Service();\r\n\r\nconst PLANNING_TYPE = \"PLANNING_TYPE\";\r\n\r\nconst createPlanningType = (data) => ({\r\n type: PLANNING_TYPE,\r\n data: data,\r\n});\r\n\r\nexport const GetListStatement = (\r\n pageIndex = 1,\r\n pageSize = config.Configs.DefaultPageSize,\r\n sortExpression = \"\",\r\n email = \"\"\r\n) => {\r\n const params = new URLSearchParams();\r\n params.append(\"pageIndex\", pageIndex);\r\n params.append(\"pageSize\", pageSize);\r\n sortExpression && params.append(\"sortExpression\", sortExpression);\r\n email && params.append(\"title\", email);\r\n return service\r\n .get(ApiUrl.GetListStatement, params)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const GetDetailStatement = (id) => {\r\n const params = new URLSearchParams();\r\n params.append(\"id\", id);\r\n return service\r\n .get(ApiUrl.GetDetailStatement, params)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const PlanningType = () => {\r\n return service\r\n .get(ApiUrl.PlanningType)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const PlanningTypeDispatch = () => {\r\n return (dispatch) => {\r\n return service\r\n .get(ApiUrl.PlanningType)\r\n .then((res) => {\r\n dispatch(createPlanningType((res && res.content) || []));\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n };\r\n};\r\n\r\nexport const ApprovalAgencyLevel = () => {\r\n return service\r\n .get(ApiUrl.ApprovalAgencyLevel)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const GetSerivceLink = () => {\r\n return service\r\n .get(ApiUrl.ServiceLink)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const SearchPlanning = (\r\n pageIndex = 1,\r\n pageSize = config.Configs.DefaultPageSize,\r\n sortExpression = \"\",\r\n data\r\n) => {\r\n const params = new URLSearchParams();\r\n params.append(\"pageIndex\", pageIndex);\r\n params.append(\"pageSize\", pageSize);\r\n sortExpression && params.append(\"sortExpression\", sortExpression);\r\n data && data.name && params.append(\"name\", data.name);\r\n data && data.planningTypeId && params.append(\"planningTypeId\", data.planningTypeId);\r\n data && data.place && params.append(\"place\", data.place);\r\n data && data.numberOfDecisions && params.append(\"numberOfDecisions\", data.numberOfDecisions);\r\n data && data.yearOfApproval && params.append(\"yearOfApproval\", data.yearOfApproval);\r\n data && data.approvalAgencyLevelId && params.append(\"approvalAgencyLevel\", data.approvalAgencyLevelId);\r\n data && data.approvalAgency && params.append(\"approvalAgency\", data.approvalAgency);\r\n data && data.planningAgency && params.append(\"planningAgency\", data.planningAgency);\r\n data && data.consultingUnit && params.append(\"consultantUnit\", data.consultingUnit);\r\n return service\r\n .get(ApiUrl.SearchStatement, params)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const GetPlanningTypeById = (\r\n id,\r\n pageIndex = 1,\r\n pageSize = 6,\r\n sortExpression = \"\"\r\n) => {\r\n const params = new URLSearchParams();\r\n params.append(\"id\", id);\r\n params.append(\"pageIndex\", pageIndex);\r\n params.append(\"pageSize\", pageSize);\r\n sortExpression && params.append(\"sortExpression\", sortExpression);\r\n\r\n return service\r\n .get(ApiUrl.PlanningTypeById, params)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\nexport const GetPlanningById = (id) => {\r\n const params = new URLSearchParams();\r\n params.append(\"id\", id);\r\n return service\r\n .get(ApiUrl.GetPlanningById, params)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const GetAllPlanningByTypeId = (planningTypeId) => {\r\n const params = new URLSearchParams();\r\n params.append(\"planningTypeId\", planningTypeId);\r\n return service\r\n .get(ApiUrl.GetAllPlanningByTypeId, params)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\nexport const GetDetailPlanningById = (planningId) => {\r\n const params = new URLSearchParams();\r\n params.append(\"id\", planningId);\r\n return service\r\n .get(ApiUrl.GetDetailPlanningById, params)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nconst InitState = {\r\n planningType: [],\r\n};\r\n\r\nexport default function StatementReducer(state = InitState, action) {\r\n switch (action.type) {\r\n case PLANNING_TYPE:\r\n return { ...state, planningType: action.data };\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { createBrowserHistory } from \"history\";\r\n\r\nexport default createBrowserHistory();\r\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEQAAABECAYAAAA4E5OyAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAn7SURBVHgB7ZsJVFTXGce/e98sLIa4BVzAXWPbVENimlhPbC2KqD3UWEUFG2PFGMUtNRattaFHOW1ORC0Gj7gknliOCcalPYnWjSTUboY0WmPUxAYVXCkiyDDDzHv36zeDQ5lhZt4bnMVT+Z0D5717v3ffm/+7y3e/ex+DFjz3OsY2GCETGIxlDOIRIQJCRPQ/yiFkcPplCF8y4CdR6NftLYqvdGYx50FKPk5CBuvoUA9hIKSCtISDSXBp9f4dvXc2nRLJ+TiZxNgIYRIjrAiI5rLy20mzK9Ltpyw5DxOYAQ7ScScII2GrIU4Y1Ml6XRKXjJAFYRbjvgAhRifLs7kiIBHaccCQpXAaTR6FdhwgwwQdqHSkXaIBMp4GiDFCUGl8wnerPf+lFY4dM7VKf+qpCHgiMQIkifm8XlEQdu++A7dqFO9GAiQdqLAyBSA+BD1MTQeDz/wB/Q1w47oNPj9jbU4bOsQI06c+DFqZNUuCvHXVPm04qBCn/X5Bp2cP18ocG6v6Pt2uV7dXFeTQF3Bf0NCA8MmnFpe00583wq1biuYyPi5tULVhYzfiFTWjR+MAjP69DL/Rn/H9GJcuy2A2i1bpMTEcusXpgKu82vp6AZVXZFBD0888fwOCTvR5K7SFujpBf2271hOqTeZBo10QN9oFcUO1D+Hk7wyJb7tjZqNB4EIVQFV967y4h5o6bMd9lOCGXkwmAV+cVe9rVAXJHAEwejDcE3U0WmbvA6hu4Wg+2Qvg5SQAg9R0XpMYfIfn3PlG2LL1tk8b1Sbz/QDMdGLo5ScmuKbZBXGKESoGDVCv5qqCBGLItXsPZ6+7pn39Hwg5N6rUnTjVJpNfAjBxKPkJbWziSGqcrAC44lZTj55r6l++Hd90LldaIJhYLAjHSkyqdixlI15AgEgIM2GPmNlhIDiJUQHtODnLaQ7wAbTjAPXSp5z8jO10XAMPOLTqUMkapQL+wXxWo3B4idK0z6P/37AvXEnSL+0LVo5h92gWO05j40zqT27CgwbDOojUp+/b0fuI47RlXtIGjKOg4gQKPCdTWL4PQ4iCAEHvoBPdzavf43OU4WClZ2mEQD0LMBOVWYkgPrLIHbcfLOpS58xjECKSCzCBCyimWtjLU75XQRiNgoaIqXu397gEISBks93DWaxCWCGNDv+t9RqU4CwIw+RQiWEnpNP/w0tZRUwpjKLDt9RskePOmr59U1quzIeCkDUZd5LfwGXULyxxnrs0GR3fvOet3msYI4sQE7YA0eEF7HW6eSb94trmRAb1QsJFe3f0WR0OMZoeIcyM2YgjSJhXoj8pl4Ve2rx/e+9j0E479y1hbzJYuqc7ecnx5lOn9TzaeDMic8UFCCNhEwRLdiUBl35Gj/C4/bzxzJmmDM7LGWCecd6r+yAMhFwQLCvTQ/3FtXQ0uWV6syB3EZzvj+wZt4ylzlVfkA0gqiHE4ilTpCGPDxyp6MRIc+2dxOorFWYKGRyx2WyHxxcd9N9pqr+4mcRIUTPjQky0Vl63L1JMBj/BI8UPg15KpfjlSPnixUcUi7lCRvaHDvNXHVW71mcNOb0m+7tcYq+RUT/7eUNtLVRfdQmwbegS0aNg2JYtmt4ilryXRlPt9Z7y3GuIE51Bv0I3Z+XboKX8A/lGiOq5GATOpfs4osByeTkoDU2Px4CmD0bjzyMzl5d6K8OrY3b6N8uTJYntdorhhSU11mtvglYYvAB+IsvyLM3GUT1IbLHYKYY7CJjAGi275G2rJ3orwqMgF3N/0Z0y1oAGhMBn//RC6hw1Ozzw5iMUexgK/iJwUP3W3DjV8j98J4P+/wg0oNhELq7P6egpz6MgZobTqWb0BI0wxAWqRhGR/aCNGITSx1e+o6kwaT5oBAV2bIzkP/WU51EQAZgG/oDY9cjM1Ak+bfQR6rtVvMDQ5nvOFdl9OP3vA36ViRme0lvdqDwnJ4IiZgngJ9Rh9fFp0Ghu8zReZzT4XudjbCD4CdWSbli0qdV2wlaCGNo4A6YItc+VWjY6/Qb1an6vAdGst4LNWvWVb6M2Bsg7ya2ua/Xje+bkNFDM0e9gM9WQM6pGAorATwSwbapGMvpd+5jEq9n4RXXu6R5rA0OxC/wCKzobY/+maiabaYhGzXMVe+2IMBrfVTWMbvw71b5r4A+S7h1PyR4FMXIopBtoXp9HwTZpcc7Y2OdNVLnT6eiEqi3n/7SyqFQ2O/uOqu0zM+pAERtAIxR5umoAyaOz51GQ/stfq0XkuaABiUsnxu58fydohCWlXYGIqJnUFgroya56MKFqzNebak0zHpq3THvTTUqzN8cSLaZShLGAzcn22Mx8uu7n1qwcJrjyBtwddVxdd7RySZdv1scVpmp03VuCc9MHkijPQI9u00Cv64//qokWFvkku215nzdYT7CyPZ+Bn2BhoR4GdV5MPyuL2r1jr7iL6875JUWIV6Kycv7qrQzV2W7FupcjLUzJYMw63WqqGWi6VmFWQP9RvS32d6MLd/u9zxlfzEgGBefRnb/jklHmtv9LYqfJDd7KPtuzB/zEfKi4b7WhIauBKeOuXb76sLWx8eogoft9r0Hf28RGjfLpD3kVBP8yJJbWUZ4XiGPo9Ft2W1Z7G6TLzhrCasmB+5Bz6RBbqPwRVMDM9CfJgfsVlTLMo0GZtw1xSAtVYi47se8UqJBRumCE4BRWaHpmh49x9CaHqrtrfhKwr/QSllpsbAvM2KityWDxFMnW9az9K6vFNJS6TJJcBfkfgvHjHMRStgg83gQzp48hIbZSn+H9U5QylR2COljKyt7zODL85M8v9rKitIozNt49r6UgLZEYy1Gm5W8Dt+i+iyD1Rx+L03PYzoF5/MrKmyB3c00K5yt0CxWXKo6ZGZOpPeeRGL5jL2UatmfrxK9Z2d4tLZMyjs8bJ5DZvyaN8XSJN0EcxZELoNcp6ea0zc0b7ZtHGbsYBgbF3sRQB6MloeTLBYapzSnzp1FnTMMhQmA+HZD5q5j43HDn6bTj81JJDLtAMdAGZGADzLJuR4e3X4p1pjULYpDYWnKEBsA9IsnWXCwwfMNxYpWK7F0PBBRpLY4bZ5z28fwEaqt5cO+Lbd80GXSbnCeOwuSSxyZRS/oBBIZIkG25OCfjh1RH+kOgQZrVVnVIox5yA0kdkO0aKGB45LsLfmw/1uGpIdG2apEd2NeITwOzDAYMzod6DXrINsjYySYF7qltApd0PrDwCLdW4RgaTeIhkDR0pa7DGLS92lFm7DSg3AaBhILQ/epvKxPI2cRkCDR2QYLM4K8DK4gdhbNn7dvN7nFrvwcsHSHY9Lje5gCcV4QCw+yC9IZAYwv+xuiYegGBhnEWy9290QAVDcFGF4RNpII86fYvqtzgtHhzC9pxQIvs1zhNiPJIlDB8vXJ/QY28ljNe+F8SQZBCQcG6hQAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEQAAABECAYAAAA4E5OyAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAYcSURBVHgB7Zt7TFNXHMe/t9zWtvQByJshLx8gTBQT44JmKglGVnHxESPZ3P7YPybLsocx+8/HH/tn/+8fF7fMaIZORiLMuQk6zRgDHYEhYxIVBeRpaWnpA257d9oF5F6gFHpPsfF+kks4h8NN87m/c+7vPArIyASC4Wtz18Kr+AI8nw0GIcKMkx91MHWcZhjwiEBYeJmvAD4vdBk+/A6yUZvbBnRWIQJRkCsPksPkI0JRQEaALESELEQEHSE8r0GEQilCFGX8pQQdIhCGv5rXBxow6CH5zY+I4pxBtW9OZbGcMMxjnKyvpidksTSlYtlhvVfkQXUmHFMmC5kJw2hkISJkISJkISJkISJkISKCS4aMNsBg9aVxoIZNhWXFFQX064MQoiGJZnovqKOfwLKiJ5faE0SX0dnxykAeijyGiJCFiJCFiJCFiJCFiAj7osyoU43L9wvw29NM3OtPxYhDiwkvC2V/D3KMThTGO2DKHEV5pplMPhF2Fl4gShgGkkYQKmanBqdu7cLZls1wcXM8h2fdgmKmwY0TRc9wrGAA4SQsQm48ysG71fsxYNfP30gkZIqdr9lwrqQLmXo3wgH1MeTLhm0ovXA0sIwA3OzVo/iHAtw3axEOqI4hF9oKceJG6az6BL0W5VvyUJiRgvT4GKiVLJqe9GDkuQV32x6gqaUDHs4z3f7ZuAqmmlw0HGxHipZuik+ty3RbYrD57DH/2DGFWqnE+zuLcGBrPlSsMDi7rGPTvz83j+FSzS3ca+0UtClMcKLxUCvUCnqTTGpd5tg1k0AGQ14Zn+4txpFtr8+SIWZlnAEfVJiw/Y2NgvrWYQ2+60wCTagIqXuchZ+71grqju8rxu6Nq4O9BZRE2nsHS5G/LktQf6Y5HV6e3vuYipDzbcInW5SdBlNRLpbC4X0l/uiaos/G4k6/AbSgFCHZgvKR4g1YKqlJcdiQL4ys2u4Y0EJyIU+tBvSOGafLKpZFUU5ou3Il24oE5etPI0jIE6vww65JXQlWEVqfT0tOEJQ7LfRyEsmFuCaFa6MalRKhYiR5y8yJzQRHdh29dAZWyYWsYDlB2TkxiVBx+wzwL3IPnxuWUi4iuZBU/Zig3G+2IVR6+oQTvBQdvWxVciGrjFbolC8+sNnuwIN+M0Lhr/YuQXlPhgW0kFyIKsqD7ZndgrpfWruwVBxON+78+begriyShPioyG8XlGuaO9H7fAxL4frNJjidrunySo0Hu9KWdq9goCLk4Pp2JESPT5edk5P4+JsaDFrHF3Wf+t9bUFv3h6CuSOWEhuFACypC1ORNU7m/UlA3PObAR+dq0RfkIFtb14iLVb8K6mIVHmz12vD9T8mwj9OZl0adqkj4LGCLaAfZvXNgsWTFWmCdWIHG3vTpOrvLjarG++i32PzrIDHR6um/md1ueL086htaUFldh4a77bPu+Yl2BPEKDi63Ag97tcjLGQcbBUmhuoTommRxtPoALv8z99H3jMRYJBt10JLk7fG/HRgatpBB1DVn23K1DTtVVkFdYvwkyt8cgi7aC6kIy5rqSbK4fOb2jsCN5llTNSi8qFCPYh079+lOo57DodJByaSEZV/m9I56nH/7CjKM1kX932p2Ah9GD88rw4eVLAdcvZ0o2ZgStm2IKao68/z7MjefZGHQPuOwsy9CSEq+LtaFtzJGYUq34FGzFrbx4AaJuBgO75gGoAgxpQ+7kJm0DSaS2XEsnGSfRvUwDluSbEjVvthusDsUqLyWHLSUvTtGkLMquIPT87Gsx6k3JA35Lz/e2d9j0mm9OLR7CJevJwYlpXdQHbKQl35v16DjcHjPAPTRngXbSrH1GRGb3VORspCUlEQXQiVidv8XipRYA4c1IXYXHxF1HGIqUrLSfJHw/9uEZXlsWm8n9YOQguX9jsoS8EXKvpJhcBxDpgJR0Kk9filSEXFCpvBJiNFJP+uVTxCJkIWI8AkJvGqjpLcY8/LBEyE8fzdgm1fpJLMCIyRCFJ8TM3PPZ1LIq0z1CkUIw1/0J7t8dUE6orjjJPfdRCLGCLWbQSKZ0OnDGB0duSuwHPC+fsKTZXz+W5SlfA0ZmYD8B2HEBlhW1oDhAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,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\"","const env = process.env.NODE_ENV || 'development';\r\n\r\nconst apiEnvironment = {\r\n // development: {\r\n // api: 'https://sonladev-api.cgis.asia',\r\n // apiCustom: 'https://pahtsonla-api.cgis.asia',\r\n // domainUserSide: 'http://localhost:3000',\r\n // domainAdminSide: 'http://localhost:3000',\r\n // domainName: '',\r\n // doMainNameGeoServer: 'https://geo.cgis.asia/geoserver/wfs',\r\n // doMainNameGeoServerWMS: 'https://geosonla.cgis.asia/geoserver/sonla/wms/',\r\n // datastore: 'sonla',\r\n // },\r\n // production: {\r\n // api: 'https://sonladev-api.cgis.asia',\r\n // apiCustom: 'https://pahtsonla-api.cgis.asia',\r\n // domainUserSide: 'https://sonladev.cgis.asia',\r\n // domainAdminSide: 'https://admin.sonladev.cgis.asia',\r\n // domainName: 'cgis.asia',\r\n // doMainNameGeoServer: 'https://geo.cgis.asia/geoserver/wfs',\r\n // doMainNameGeoServerWMS: 'https://geosonla.cgis.asia/geoserver/sonla/wms/',\r\n // datastore: 'sonla',\r\n // },\r\n development: {\r\n api: 'https://api.tracuuquyhoachsonla.vn/',\r\n apiCustom: 'https://paht-api.tracuuquyhoachsonla.vn',\r\n domainUserSide: 'http://localhost:3000',\r\n domainAdminSide: 'http://localhost:3000',\r\n domainName: '',\r\n doMainNameGeoServer: 'https://geo.tracuuquyhoachsonla.vn/geoserver/wfs',\r\n doMainNameGeoServerWMS: 'https://geo.tracuuquyhoachsonla.vn/geoserver/sonla/wms/',\r\n datastore: 'sonladev_v2',\r\n },\r\n production: {\r\n api: 'https://api.tracuuquyhoachsonla.vn/',\r\n apiCustom: 'https://paht-api.tracuuquyhoachsonla.vn',\r\n domainUserSide: 'https://tracuuquyhoachsonla.vn',\r\n domainAdminSide: 'https://admin.tracuuquyhoachsonla.vn',\r\n domainName: 'tracuuquyhoachsonla.vn',\r\n doMainNameGeoServer: 'https://geo.tracuuquyhoachsonla.vn/geoserver/wfs',\r\n doMainNameGeoServerWMS: 'https://geo.tracuuquyhoachsonla.vn/geoserver/sonla/wms/',\r\n datastore: 'sonladev_v2',\r\n },\r\n};\r\n\r\nmodule.exports = apiEnvironment[env];\r\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAABvAAAAbwHxotxDAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAGlQTFRF////8lVC8VZC4uXnwcbLsLe9vsTJytHY1tvf2cDB2re24uXn6K+p6p2U8VZC8l9M8mRS825d83Fg9Hlp9o6B9paJ+KWa+Kab+Kie+Kmf+LCn+bKp+bSr+bWs+bqy+r+4+sO8+sS9+sW/IvscuwAAAAV0Uk5TAGCAuMCvAAwyAAAAZElEQVQYV13OWQ6AIAxF0SIoahXneXb/i5QoFeX+vZOGAADA8UmAyWz0hQskBAEJAYZS/kGLAxjqybyUShA1qE8G+qXc5upoXljb+tyz0V4MhZpy1Vlw3mBeTEU3/P7xALebwwWWRgmV3mAxMAAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAABvAAAAbwHxotxDAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAHJQTFRF////8lVC8VZC4uXnwcbLsLe9vsTJytHY1tvf2cDB2re24uXn6K+p6p2U8VZC8mJP8mdV8mxa82pY83Bf9Hhp9Yx/9ZCC9pGE95uP956S96CV+Kmf+Kyi+bGo+bOq+bSr+beu+by0+r+3+sC5+8vF/NjT9D7P+AAAAAV0Uk5TAGCAuMCvAAwyAAAAZUlEQVQYV13OVxKAIAxF0SD22Hvv7n+LMkIs3L93ZsIAAMBRZoJKbbRMHUgIbBICdB3nD0I0QFdMZoRUgCgg+qRgXPK1j/f2gW0qm6I66weGLDnmtHtPtDeY4VPeDb9/SODv5nABrPoJ11tuehsAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAAbwAAAG8B8aLcQwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAHbSURBVDiNnZO9a1NRGMZ/7zn3izSRxBglLbaVgiCIIAV1aHXT0YLg0sHd1cnBURz6B9ipIFQHUUTcBD8QBEdxcCh+ILbExCblJjXpzb3nHhcbjW1S8YF3Os/znPd533NkdqlSMqLHrp5Q548W5JYgigEQgYmcsNluv5o8PHoOQGaXvl20wkNADxL+iRsnu0xmDa7rvj4yPjYj1lpm7tTmlbXLFrgwFaBEaHRSpssu72oxGUd4+mkLgGvHWpya2Ec3jvFdd1EBpKJf5lxrAGo/Uhodw8y4Rz5QHC+5rLZMXxe+55EbGcHzvbJzdnm9rNPkeTMVDfC1maBEiExEM0oJHOH993hgJMfGZhqRF6eL3VFJk2zvJIIAIIEzhe0pQtFL+wdrrQWgWlt/ZGFu5x0WlYSkTh4ApRRaqW3Dx72VaUdHruPwd2U331BcW8DVgus4v8W/MHDnAGLaZGr30d0qwcazXTlDDTIri9hGExNa/A8PUFF9B8fZVWkt/tsnOCurLBw05A94QAIfr6P8Epembg43iO/eJr8VovUhwrSO7rES6Fb2jhB9+YxSMizdcAO3sJ+w1f5/A39unk6QoxJ2MNpnrW56Vd3o76z3kBqN8LLF3uMffyVgsVz5CZ7CqwLc53ojAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAAnNCSVQICFXsRgQAAAAJcEhZcwAAAGcAAABnAdUo1CYAAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb7jwaAAAA3klEQVQoU43QLUuDARSG4StYxsAwg0OMQxYHwyDYBD9AwWEzKSIYzDY1C2IZa4JL2kTWdH/BIEYXNYhlFocD2TG8G/jxTuSGA+fh5nB4hOBY/RstkyEhGfXB2g+f3Rv9WwjXRoYLT0KoDhcmFBVd9AUFTYspNBUCWR09PfGDDz0dWfLe5azadWnHgU17rhxatiHkE6EkLLgxa0vFvFtzWs50jQ+ErrIXM7atWfKo7MGU1+RC17R158K+qhNHwqmKFW/yZLR/PTigLSPIaSil0DA2pKj4kv5TqLlLoRbCJ9L5tz7rYYcIAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAAWQAAAFkBqp2phgAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAEkSURBVDiNldPNK0RRGAbw38wQKaVZSVYo5WOhhuyElLBS1rLxF1jZWfg/LKyUjSixsGfho6yULOx9LLCYMRbn3Dp0mfHU7Zz7vu/znue+z7kF39GNSbRqjBecpYEePKH+j+cgbbAcgx0YxlADBauoFpNAKa4DuMYNRv9o8IZSMSdRQhGFpCkM4ghraXFLXMtJ7BLjcX+V5A+junk8Z8WZgoUfKu4whzHBkf1Izji7qGTF7djBijDELpzH/Ws8Oc+BT9SLmBEmn+Ek+YROLMpHIZOzFF9qMTH+CyEPNXjABXqj5P9cpOMWwaoKpjCCiUxeA3zgtCBMegOzuMdjE+RbbOUl+rCOPeFn+U36ZhOHaMM0tgVbq5H8jv5mGvxEWXBsMA1+ARb6UJtINJUuAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAAZwAAAGcB1SjUJgAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAEYSURBVDiNndKxKwVQFAbw39FbXmKQzSBlkQwMUkoZiMFkNPkX/AEGk0H5F56ZRSlKMslIMrIRKZQigzqW+/To0Xu+Ot2vc+/57jnfvZGZICI20Ot3TGI6M2++ZTNTEanVebPAPS7Q3Zjv+OPGZhjBdkRU6ol2BD7KOovN/wiMY6jEl1cViIhB9EXEXItivRExmJlX0Ik3ZJvxhs4KulDFCi4xg7vCp/CAfSziBfPYwg66vtzEc5nzEH2YwDGOMIp1XGMMB/WinyYOYLfwfuz92D/DME6bCcxioYzTyGGprLdF9L1RtVrab9fEZ1QjM0VED2pY1RrWsJyZjxXIzKeIeMrM81aqy9lH2vuJTdH4jK8R0VIHOKmTTxSQgRUANXbNAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAABvAAAAbwHxotxDAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAFRQTFRF////WG19WG5+4uXnwcbLV21+YHWFZHiIg5KfhZWhjZynkZ+rlaOunKmyprK7p7O8q7a/rri/sLe9sbvDs73Ftb/GvMXMvsTJxMzSytHY1tvf4uXngtqhDgAAAAV0Uk5TAGCAuMCvAAwyAAAAYElEQVQYV13ORw7AIAxE0QnE6Z1U5v73zAKcwt/5ybIMAJahHLE4c8lTUFE4VBTor+sP9CnQA8hMr80kAPkUoT2rrqvP5gFx4jZx74YMxTSWwwf+NzKzajuZ/hHAvrPFDeDyDotKud1ZAAAAAElFTkSuQmCC\"","module.exports = __webpack_public_path__ + \"static/media/map-reflect.b1939ab7.png\";","//@ts-check\r\nimport PageUrls from '../common/url-collect';\r\nimport * as Page500ErrorTypes from '../common/error-types-500';\r\nimport history from '../common/history'\r\n\r\n/**\r\n * @param {{errorType:string,errorMessage:string}} err\r\n * @param {string} erroCode\r\n*/\r\nexport function handleError500(err, erroCode) {\r\n if (err.errorType === Page500ErrorTypes.UnhandleException) {\r\n history.push(PageUrls.Page500 + erroCode);\r\n } else throw err\r\n}","import { ApiUrl } from \"../../../api/api-url\";\r\nimport Service from \"../../../api/api-service\";\r\nimport {\r\n AddOneSlotToLoadingQueue,\r\n RemoveOneSlotToLoadingQueue,\r\n} from \"../loading/loading.store\";\r\nimport MapDataModels from \"../../../models/map-data-model-b/map-data-model\";\r\nimport JsonGetPlanningByIdModel from \"../../../models/map-data-model-b/json-get-planning-by-id-model\";\r\nimport PlanningCategoriesTypeModel from \"../../../models/map-data-model-b/planning-categories-type-model\";\r\nimport PlanningCategoriesModel from \"../../../models/map-data-model-b/planning-categories-model\";\r\nimport SingleMapInfoMationModel from \"../../../models/map-data-model-b/single-map-infomation-model\";\r\nimport { handleError500 } from \"../../../api/api-handle-error\";\r\nimport * as Page500ErrorType from \"../../../common/error-types-500\";\r\nimport PlanningRelationModel from \"../../../models/map-data-model-b/new-planning-relation.model\";\r\nimport BoundariesModel from \"../../../models/map-data-model-b/new-boundaries.model\";\r\nimport { store } from \"../../../index\";\r\nimport OpenlayerControllerModel from \"../../../models/open-layer/openlayer-controller-custom.model\";\r\nimport GetAllPlanningBoundariesMode from \"../../../models/map-data-model-b/get-all-planning-boundaries.model\";\r\nimport * as map from \"../../../common/map\";\r\n\r\nconst service = new Service();\r\n\r\nconst SAVELOADINGDATASTATE = \"MAPDATA/SAVELOADINGDATASTATE\";\r\nconst SAVEIDNOTEXIST = \"MAPDATA/SAVEIDNOTEXIST\"\r\nconst SAVEMAPDATA = \"MAPDATA/SAVEMAPDATA\";\r\nconst SAVEPLANNINGRELATIONSHIP = \"MAPDATA/SAVEPLANNINGRELATIONSHIP\";\r\nconst SAVEINFOMATIONLIST = \"MAPDATA/SAVEINFOMATIONLIST\";\r\nconst SAVECHILDINFOMATIONLIST = \"MAPDATA/SAVECHILDINFOMATIONLIST\";\r\nconst SAVEINFOMATIONFORTABLE = \"MAPDATA/SAVEINFOMATIONFORTABLE\";\r\nconst SAVEHEADERFORTABLE = \"MAPDATA/SAVEHEADERFORTABLE\";\r\nconst SAVEDATAFILTER = \"MAPDATA/SAVEDATAFILTER\";\r\nconst SAVEPOLYGON = \"MAPDATA/SAVEPOLYGON\";\r\nconst SAVELISTPLANNING = \"MAPDATA/SAVELISTPLANNING\";\r\nconst SAVEPLANNINGCATEGORIESTYPE = \"MAPDATA/SAVEPLANNINGCATEGORIESTYPE\";\r\nconst SAVEPLANNINGCATEGORIESAll = \"MAPDATA/SAVEPLANNINGCATEGORIESALL\";\r\nconst MERGEDATABOUDARIESTOLIST = \"MAPDATA/MERGEDATABOUDARIESTOLIST\";\r\nconst SAVEALLBOUNDARIESOFALLPLANNING = \"MAPDATA/SAVEALLBOUNDARIESOFALLPLANNING\";\r\nconst LIST_BOUNDARIES = \"MAPDATA/LIST_BOUNDARIES\";\r\nconst SAVEMAPBASE = \"MAPDATA/SAVEMAPBASE\";\r\nconst SAVE_PREVIEW_IMAGE = \"MAPDATA/SAVE_PREVIEW_IMAGE\";\r\n\r\n//--- config min max zoom\r\nconst getMaxZoomByPlanningTypeId = (planningTypeId: number): number => {\r\n switch (planningTypeId) {\r\n case 2:\r\n return 16;\r\n case 1:\r\n return 18;\r\n case 3:\r\n return 20;\r\n default:\r\n return 20;\r\n }\r\n};\r\n\r\nconst getMinZoomByPlanningTypeId = (planningTypeId: number): number => {\r\n switch (planningTypeId) {\r\n case 2:\r\n return 1;\r\n case 1:\r\n return 12;\r\n case 3:\r\n return 14;\r\n default:\r\n return 1;\r\n }\r\n};\r\n\r\nconst getZIndexByPlanningTypeId = (planningTypeId: number): number => {\r\n switch (planningTypeId) {\r\n case 2:\r\n return 1;\r\n case 1:\r\n return 2;\r\n case 3:\r\n return 3;\r\n default:\r\n return 0;\r\n }\r\n};\r\n\r\nconst createMergeDataBoudariesToList = (data: BoundariesModel) => ({\r\n type: MERGEDATABOUDARIESTOLIST,\r\n data: data,\r\n});\r\n\r\nconst createSavePreviewImage = (data: any) => ({\r\n type: SAVE_PREVIEW_IMAGE,\r\n data: data,\r\n});\r\n\r\nexport const SavePreviewImage = (data: any) => {\r\n return (dispatch: Function) => {\r\n dispatch(createSavePreviewImage(data));\r\n };\r\n}\r\n\r\nconst createSavePlanningCategoriesAll = (data: PlanningCategoriesModel[]) => ({\r\n type: SAVEPLANNINGCATEGORIESAll,\r\n data: data,\r\n});\r\nconst createSavePlanningCategoriesTypes = (\r\n data: PlanningCategoriesTypeModel[]\r\n) => ({\r\n type: SAVEPLANNINGCATEGORIESTYPE,\r\n data: data,\r\n});\r\nconst createSaveInfomationList = (data: any[]) => ({\r\n type: SAVEINFOMATIONLIST,\r\n data: data,\r\n});\r\nconst createSaveChildInfomationList = (data: any[]) => ({\r\n type: SAVECHILDINFOMATIONLIST,\r\n data: data,\r\n});\r\nconst createSaveInfomationForTable = (data: any[]) => ({\r\n type: SAVEINFOMATIONFORTABLE,\r\n data: data,\r\n});\r\nconst createSaveHeaderForTable = (data: any[]) => ({\r\n type: SAVEHEADERFORTABLE,\r\n data: data,\r\n});\r\nconst createSaveDataFilter = (data: any) => ({\r\n type: SAVEDATAFILTER,\r\n data: data,\r\n});\r\nconst createListPolygon = (data: any) => ({\r\n type: SAVEPOLYGON,\r\n data: data,\r\n});\r\nconst createSaveLoadingDataState = (data: boolean) => ({\r\n type: SAVELOADINGDATASTATE,\r\n data: data,\r\n});\r\nconst createSaveIdNotExist = (data: boolean) => ({\r\n type: SAVEIDNOTEXIST,\r\n data: data,\r\n});\r\nconst createSaveMapData = (data: MapDataModels.MapDataModels) => ({\r\n type: SAVEMAPDATA,\r\n data: data,\r\n});\r\nconst createMapBase = (data: any) => ({\r\n type: SAVEMAPBASE,\r\n data: data,\r\n});\r\nconst createSavePlanningRelationship = (data: PlanningRelationModel[]) => ({\r\n type: SAVEPLANNINGRELATIONSHIP,\r\n data: data,\r\n});\r\nconst createSaveAllBoundariesFromAllPlanning = (data: any) => ({\r\n type: SAVEALLBOUNDARIESOFALLPLANNING,\r\n data: data,\r\n});\r\nconst intListBounds = (data: any) => ({\r\n type: LIST_BOUNDARIES,\r\n data: data,\r\n});\r\n\r\n//--- call api\r\n\r\nexport const GetAllPlanningBoundariesGeomText = () => {\r\n return (dispatch: Function) => {\r\n dispatch(AddOneSlotToLoadingQueue);\r\n const params = new URLSearchParams();\r\n return service\r\n .get(ApiUrl.GetAllBoundariesOfAllPlanning, params)\r\n .then((res) => {\r\n if (!res.err && res.content) {\r\n let arrCoordinatePolygon: number[][][] = [];\r\n const ListBoundaries: GetAllPlanningBoundariesMode[] = res.content;\r\n ListBoundaries.map((boundariesObject) => {\r\n boundariesObject.minZoom = getMinZoomByPlanningTypeId(\r\n boundariesObject.planningTypeId\r\n );\r\n boundariesObject.maxZoom = getMaxZoomByPlanningTypeId(\r\n boundariesObject.planningTypeId\r\n );\r\n boundariesObject.zIndex = getZIndexByPlanningTypeId(boundariesObject.planningTypeId);\r\n arrCoordinatePolygon.push(\r\n map.convertStringToArray(boundariesObject.geomText)\r\n );\r\n });\r\n dispatch(createListPolygon(arrCoordinatePolygon));\r\n } else {\r\n // console.log(\"Error:\" + res.err);\r\n }\r\n dispatch(intListBounds(res.content));\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n })\r\n .finally(() => {\r\n dispatch(RemoveOneSlotToLoadingQueue);\r\n });\r\n };\r\n};\r\nexport const GetAllPlanningBoundaries = () => {\r\n return (dispatch: Function) => {\r\n dispatch(AddOneSlotToLoadingQueue);\r\n const params = new URLSearchParams();\r\n return service\r\n .get(ApiUrl.GetAllBoundariesOfAllPlanning, params)\r\n .then((res) => {\r\n if (!res.err && res.content) {\r\n const ListBoundaries: GetAllPlanningBoundariesMode[] = res.content;\r\n console.log(\"GetAllPlanningBoundaries\",ListBoundaries);\r\n \r\n ListBoundaries.map((boundariesObject) => {\r\n boundariesObject.minZoom = getMinZoomByPlanningTypeId(\r\n boundariesObject.planningTypeId\r\n );\r\n boundariesObject.maxZoom = getMaxZoomByPlanningTypeId(\r\n boundariesObject.planningTypeId\r\n );\r\n boundariesObject.zIndex = getZIndexByPlanningTypeId(boundariesObject.planningTypeId);\r\n });\r\n if (ListBoundaries.length > 0) {\r\n const idIntervalCheck = setInterval(() => {\r\n const openLayerController: OpenlayerControllerModel = store?.getState()\r\n .openlayer.openLayerController;\r\n if (openLayerController) {\r\n openLayerController.functionDisplayAllBoundariesOfAllPlanning(\r\n ListBoundaries\r\n );\r\n console.log(\"run run\")\r\n clearInterval(idIntervalCheck);\r\n }\r\n }, 250);\r\n }\r\n } else {\r\n }\r\n dispatch(intListBounds(res.content));\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n })\r\n .finally(() => {\r\n dispatch(RemoveOneSlotToLoadingQueue);\r\n });\r\n };\r\n};\r\n\r\n// const convertStringToArray = (stringPolygon: string) => {\r\n// let arrCoordinatePolygon: number[][] = [];\r\n// if (!stringPolygon || stringPolygon.length < 8) return arrCoordinatePolygon;\r\n// const stringArray = stringPolygon.substring(9, stringPolygon.length - 2).split(\",\");\r\n// stringArray.map((string) => {\r\n// let arr = [];\r\n// const res = string.split(\" \");\r\n// arr.push(parseFloat(res[1]));\r\n// arr.push(parseFloat(res[0]));\r\n// arrCoordinatePolygon.push(arr);\r\n// });\r\n// return arrCoordinatePolygon;\r\n// };\r\n\r\nexport const GetListPlanningRelationByPlanningId = (planingId: number) => {\r\n return (dispatch: Function) => {\r\n dispatch(AddOneSlotToLoadingQueue);\r\n const params = new URLSearchParams();\r\n params.append(\"id\", String(planingId));\r\n return service\r\n .get(ApiUrl.GetPlanningRelationshipByPlanningId, params)\r\n .then((res) => {\r\n if (!res.err && res.content) {\r\n const ResultContent = res.content;\r\n if (ResultContent)\r\n dispatch(createSavePlanningRelationship(ResultContent));\r\n } else {\r\n }\r\n return res;\r\n })\r\n .catch((err) => {\r\n handleError500(err, Page500ErrorType.ERRORGETAPI);\r\n })\r\n .finally(() => {\r\n dispatch(RemoveOneSlotToLoadingQueue);\r\n });\r\n };\r\n};\r\n\r\nexport const SaveInfomationList = (data: any[]) => {\r\n return (dispatch: Function) => {\r\n dispatch(createSaveInfomationList(data));\r\n };\r\n};\r\n\r\nexport const SaveChildInfomationList = (data: any[]) => {\r\n return (dispatch: Function) => {\r\n dispatch(createSaveChildInfomationList(data));\r\n };\r\n};\r\n\r\nexport const SaveInformationForTable = (data: any[]) => {\r\n return (dispatch: Function) => {\r\n dispatch(createSaveInfomationForTable(data));\r\n };\r\n};\r\nexport const SaveHeaderForTable = (data: any[]) => {\r\n return (dispatch: Function) => {\r\n dispatch(createSaveHeaderForTable(data));\r\n };\r\n};\r\nexport const SaveMapBase = (data: any) => {\r\n return (dispatch: Function) => {\r\n dispatch(createMapBase(data));\r\n };\r\n};\r\nexport const SaveDataFilter = (data: any[]) => {\r\n return (dispatch: Function) => {\r\n dispatch(createSaveDataFilter(data));\r\n };\r\n};\r\n\r\nexport const GetMapDetailByPlanningId = (planingId: number) => {\r\n return (dispatch: Function) => {\r\n dispatch(AddOneSlotToLoadingQueue);\r\n dispatch(createSaveLoadingDataState(false));\r\n dispatch(createSaveIdNotExist(false));\r\n const params = new URLSearchParams();\r\n params.append(\"id\", String(planingId));\r\n return service\r\n .get(ApiUrl.GetMapPlanningById, params)\r\n .then((res) => {\r\n console.log(\"lllllllldassssssssssssssss\", res);\r\n \r\n if (!res.err && res.content) {\r\n const ResultContent: MapDataModels.MapDataModels = res.content;\r\n if (ResultContent) dispatch(createSaveMapData(ResultContent));\r\n } else {\r\n dispatch(\r\n createSaveMapData({\r\n center: \"\",\r\n extent: \"\",\r\n id: 0,\r\n \"map_planning-relationship\": [],\r\n max_zoom: 0,\r\n min_zoom: 0,\r\n name: \"\",\r\n planing_id: \"\",\r\n projection: \"\",\r\n z_index: 0,\r\n zoom: 0,\r\n map_setting: [],\r\n })\r\n );\r\n }\r\n dispatch(createSaveLoadingDataState(true));\r\n return res;\r\n })\r\n .catch((err) => {\r\n dispatch(createSaveIdNotExist(true));\r\n handleError500(err, Page500ErrorType.ERRORGETAPI);\r\n })\r\n .finally(() => {\r\n dispatch(RemoveOneSlotToLoadingQueue);\r\n });\r\n };\r\n};\r\n\r\nexport const GetAllPlanning = () => {\r\n return (dispatch: Function) => {\r\n dispatch(AddOneSlotToLoadingQueue);\r\n const params = new URLSearchParams();\r\n return service\r\n .get(ApiUrl.GetAllPlanningByTypeId, params)\r\n .then((res) => {\r\n if (!res.err && res.content) {\r\n const ResultContent: JsonGetPlanningByIdModel[] = res.content;\r\n if (ResultContent.length > 0) {\r\n const finalResul: PlanningCategoriesModel[] = [];\r\n ResultContent.map((planningObject) => {\r\n if (finalResul.length === 0) {\r\n finalResul.push({\r\n id: planningObject.planningTypeId,\r\n name: planningObject.planningTypeName,\r\n plannings: [{ ...planningObject, nameTb: \"\", geomText: \"\" }],\r\n minZoom: getMinZoomByPlanningTypeId(\r\n planningObject.planningTypeId\r\n ),\r\n maxZoom: getMaxZoomByPlanningTypeId(\r\n planningObject.planningTypeId\r\n ),\r\n });\r\n } else {\r\n let categoriesIsNotExist = true;\r\n finalResul.map((planningCategories) => {\r\n if (planningCategories.id === planningObject.planningTypeId) {\r\n planningCategories.plannings.push({\r\n ...planningObject,\r\n nameTb: \"\",\r\n geomText: \"\",\r\n });\r\n categoriesIsNotExist = false;\r\n return;\r\n }\r\n });\r\n if (categoriesIsNotExist) {\r\n finalResul.push({\r\n id: planningObject.planningTypeId,\r\n name: planningObject.planningTypeName,\r\n plannings: [\r\n { ...planningObject, nameTb: \"\", geomText: \"\" },\r\n ],\r\n minZoom: getMinZoomByPlanningTypeId(\r\n planningObject.planningTypeId\r\n ),\r\n maxZoom: getMaxZoomByPlanningTypeId(\r\n planningObject.planningTypeId\r\n ),\r\n });\r\n }\r\n }\r\n });\r\n dispatch(createSavePlanningCategoriesAll(finalResul));\r\n }\r\n } else {\r\n // console.log(\"Error:\" + res.err);\r\n }\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n })\r\n .finally(() => {\r\n dispatch(RemoveOneSlotToLoadingQueue);\r\n });\r\n };\r\n};\r\n\r\nexport const GetAllPlanningCategoriesType = () => {\r\n return (dispatch: Function) => {\r\n dispatch(AddOneSlotToLoadingQueue);\r\n const params = new URLSearchParams();\r\n return service\r\n .get(ApiUrl.PlanningType, params)\r\n .then((res) => {\r\n if (!res.err && res.content) {\r\n const ResultContent: PlanningCategoriesTypeModel[] = res.content;\r\n if (ResultContent.length > 0)\r\n dispatch(createSavePlanningCategoriesTypes(ResultContent));\r\n } else {\r\n // console.log(\"Error:\" + res.err);\r\n }\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n })\r\n .finally(() => {\r\n dispatch(RemoveOneSlotToLoadingQueue);\r\n });\r\n };\r\n};\r\n\r\nconst InitState = {\r\n hasLoadingData: false,\r\n isIdNotExist: false,\r\n mapData: {\r\n center: \"0,0\",\r\n extent: \"0,0,0,0\",\r\n id: -1,\r\n \"map_planning-relationship\": [],\r\n map_setting: [],\r\n max_zoom: 20,\r\n min_zoom: 10,\r\n name: \"\",\r\n planing_id: -1,\r\n projection: \"EPSG:4326\",\r\n z_index: 0,\r\n zoom: 14,\r\n },\r\n planningRelationShips: [],\r\n map: {},\r\n infomations: [],\r\n childInfomations: [],\r\n dataForTable: [],\r\n dataFilter: {},\r\n listPlanning: [],\r\n listPlanningCategories: [],\r\n listPlanningCategoriesAll: [],\r\n listPlanningBoundaries: [],\r\n headerTable: [],\r\n listPolygon: [],\r\n};\r\n\r\nexport default function MapDataReducer(state = InitState, action: any) {\r\n switch (action.type) {\r\n case SAVELOADINGDATASTATE:\r\n return { ...state, hasLoadingData: action.data };\r\n case SAVEIDNOTEXIST:\r\n return { ...state, isIdNotExist: action.data };\r\n case SAVE_PREVIEW_IMAGE:\r\n return { ...state, previewImageInfo: action.data};\r\n case SAVEMAPDATA:\r\n return { ...state, mapData: action.data };\r\n case SAVEPLANNINGRELATIONSHIP:\r\n return { ...state, planningRelationShips: action.data };\r\n case SAVELISTPLANNING:\r\n return { ...state, listPlanning: action.data };\r\n case SAVEPLANNINGCATEGORIESTYPE:\r\n return { ...state, listPlanningCategories: action.data };\r\n case SAVEPLANNINGCATEGORIESAll:\r\n return { ...state, listPlanningCategoriesAll: action.data };\r\n case SAVEINFOMATIONLIST:\r\n return { ...state, infomations: action.data };\r\n case SAVECHILDINFOMATIONLIST:\r\n return { ...state, childInfomations: action.data };\r\n case SAVEINFOMATIONFORTABLE:\r\n return { ...state, dataForTable: action.data };\r\n case SAVEHEADERFORTABLE:\r\n return { ...state, headerTable: action.data };\r\n case SAVEMAPBASE:\r\n return { ...state, map: action.data };\r\n case SAVEDATAFILTER:\r\n return { ...state, dataFilter: action.data };\r\n case SAVEPOLYGON:\r\n return { ...state, listPolygon: action.data };\r\n case MERGEDATABOUDARIESTOLIST: {\r\n const boundariesData = action.data;\r\n const listPlanningCategoriesAll: PlanningCategoriesModel[] =\r\n state.listPlanningCategoriesAll;\r\n listPlanningCategoriesAll.map((planningCategories) => {\r\n planningCategories.plannings.map((planningObject) => {\r\n if (planningObject.id === boundariesData.planningId) {\r\n planningObject.geomText = boundariesData.geomText;\r\n planningObject.nameTb = boundariesData.nameTb;\r\n }\r\n });\r\n });\r\n return { ...state, listPlanningCategoriesAll: listPlanningCategoriesAll };\r\n }\r\n case LIST_BOUNDARIES:\r\n return { ...state, listBoundaries: action.data };\r\n default:\r\n return state;\r\n }\r\n}\r\n","module.exports = __webpack_public_path__ + \"static/media/add_reflect.836bdd79.svg\";","module.exports = __webpack_public_path__ + \"static/media/arrow-down.7c132893.svg\";","module.exports = __webpack_public_path__ + \"static/media/arrow-left-white.5cb3992e.svg\";","module.exports = __webpack_public_path__ + \"static/media/arrow-right-black.60d101fb.svg\";","module.exports = __webpack_public_path__ + \"static/media/arrow-right-outline-color.4bd82679.svg\";","module.exports = __webpack_public_path__ + \"static/media/arrow-right-outline.3c54d717.svg\";","module.exports = __webpack_public_path__ + \"static/media/arrow-right-white.02d017a6.svg\";","module.exports = __webpack_public_path__ + \"static/media/bx-user-circle.599bd7b3.svg\";","module.exports = __webpack_public_path__ + \"static/media/close.6e00c017.svg\";","module.exports = __webpack_public_path__ + \"static/media/email-footer.d8763b82.svg\";","module.exports = __webpack_public_path__ + \"static/media/feather_clock.f8bdb4ab.svg\";","module.exports = __webpack_public_path__ + \"static/media/filter.8f63127f.svg\";","module.exports = __webpack_public_path__ + \"static/media/finger.e30414e9.svg\";","module.exports = __webpack_public_path__ + \"static/media/first.a980d52e.svg\";","module.exports = __webpack_public_path__ + \"static/media/full-download.9149554d.svg\";","module.exports = __webpack_public_path__ + \"static/media/full-screen.3c418fcf.svg\";","module.exports = __webpack_public_path__ + \"static/media/grid-chart-solid.543c2ded.svg\";","module.exports = __webpack_public_path__ + \"static/media/guide.bea1d0ef.svg\";","module.exports = __webpack_public_path__ + \"static/media/info.f29c9920.svg\";","module.exports = __webpack_public_path__ + \"static/media/layers.e7df67c3.svg\";","module.exports = __webpack_public_path__ + \"static/media/location-pointer.da112c56.svg\";","module.exports = __webpack_public_path__ + \"static/media/map-filled.bcb404ea.svg\";","module.exports = __webpack_public_path__ + \"static/media/map-outline-01.bd80f64a.svg\";","module.exports = __webpack_public_path__ + \"static/media/map-outline-02.eb3922f1.svg\";","module.exports = __webpack_public_path__ + \"static/media/marker.201775cf.svg\";","module.exports = __webpack_public_path__ + \"static/media/md-document-duplicate.d1dee562.svg\";","module.exports = __webpack_public_path__ + \"static/media/md-download.96051207.svg\";","module.exports = __webpack_public_path__ + \"static/media/measureArea.ea84a990.svg\";","module.exports = __webpack_public_path__ + \"static/media/next.5af5ffca.svg\";","module.exports = __webpack_public_path__ + \"static/media/pdf-file.a6a0e2d9.svg\";","module.exports = __webpack_public_path__ + \"static/media/phone-call-footer.a0bc6089.svg\";","module.exports = __webpack_public_path__ + \"static/media/photo.12af99b1.svg\";","module.exports = __webpack_public_path__ + \"static/media/place-footer.2bc62565.svg\";","module.exports = __webpack_public_path__ + \"static/media/position.2d9eb2b7.svg\";","module.exports = __webpack_public_path__ + \"static/media/prev.d11d99bb.svg\";","module.exports = __webpack_public_path__ + \"static/media/print.84c62921.svg\";","module.exports = __webpack_public_path__ + \"static/media/ruler.629274ee.svg\";","module.exports = __webpack_public_path__ + \"static/media/search-sidebar.ccb18930.svg\";","module.exports = __webpack_public_path__ + \"static/media/searchLocation.4eb5e0d5.svg\";","module.exports = __webpack_public_path__ + \"static/media/selectArea.4fc79ac3.svg\";","module.exports = __webpack_public_path__ + \"static/media/selectOne.862704f0.svg\";","module.exports = __webpack_public_path__ + \"static/media/settings-gears.f742b188.svg\";","module.exports = __webpack_public_path__ + \"static/media/slideshow.e27338fa.svg\";","module.exports = __webpack_public_path__ + \"static/media/th-list.6d22b5f2.svg\";","module.exports = __webpack_public_path__ + \"static/media/user.9ddbe23b.svg\";","module.exports = __webpack_public_path__ + \"static/media/zoomIn.ef3c2a98.svg\";","module.exports = __webpack_public_path__ + \"static/media/zoomOut.3503426d.svg\";","import Service from \"../../../api/api-service\";\r\nimport { ApiUrl } from \"../../../api/api-url\";\r\nimport moment from \"moment\";\r\n\r\nconst service = new Service();\r\n\r\nexport const GetSlideShow = () => {\r\n return (dispatch) => {\r\n return service\r\n .get(ApiUrl.SlideShow)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n };\r\n};\r\n\r\nexport const GetAllPlanningByTypeId = (planningTypeId) => {\r\n return (dispatch) => {\r\n const params = new URLSearchParams();\r\n planningTypeId && params.append(\"planningTypeId\", planningTypeId);\r\n return service\r\n .get(ApiUrl.GetAllPlanningByTypeId, params)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n };\r\n};\r\n\r\nexport const GetLatLngPlace = (adress) => {\r\n const params = new URLSearchParams();\r\n params.append(\"key\", \"ac543d442b430dcfbe8ed6d89fe5e0d8\");\r\n adress && params.append(\"text\", adress);\r\n return service\r\n .get(\"https://api.map4d.vn/sdk/autosuggest\", params)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n}\r\n\r\nexport const GetWgs84ToVn2000 = (longitude, latitude) => {\r\n const params = new URLSearchParams();\r\n longitude && params.append(\"longitude\", longitude);\r\n latitude && params.append(\"latitude\", latitude);\r\n return service\r\n .get(ApiUrl.Wgs84ToVn2000, params)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const GetVn2000ToWgs84 = (x, y) => {\r\n const params = new URLSearchParams();\r\n x && params.append(\"x\", x);\r\n y && params.append(\"y\", y);\r\n return service\r\n .get(ApiUrl.Vn2000ToWgs84, params)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const GetPlanningSearchByIdName = (\r\n PlanningTypeById,\r\n pageIndex = 1,\r\n planningId,\r\n name,\r\n pageSize = 6,\r\n district\r\n) => {\r\n const params = new URLSearchParams();\r\n PlanningTypeById && params.append(\"planningTypeId\", PlanningTypeById);\r\n planningId && params.append(\"planingId\", planningId);\r\n name && params.append(\"name\", name);\r\n district && params.append(\"district\", district);\r\n params.append(\"pageIndex\", pageIndex);\r\n params.append(\"pageSize\", pageSize);\r\n return service\r\n .get(ApiUrl.PlanningSearchByIdName, params)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\nexport const GetPlanningSearchByIdNameHome = (\r\n PlanningTypeById,\r\n pageIndex = 1,\r\n pageSize = 4\r\n) => {\r\n const params = new URLSearchParams();\r\n PlanningTypeById && params.append(\"planningTypeId\", PlanningTypeById);\r\n params.append(\"pageIndex\", pageIndex);\r\n params.append(\"pageSize\", pageSize);\r\n return service\r\n .get(ApiUrl.PlanningSearchByIdName, params)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\nexport const GetPlanningSearchByIdNameDistrict = (\r\n planningTypeId,\r\n name,\r\n district,\r\n planningUnitId,\r\n yearSearch,\r\n approvalAgencyId,\r\n numberOfDecisions,\r\n constructionGroup,\r\n pageIndex,\r\n pageSize,\r\n) => {\r\n const params = new URLSearchParams();\r\n planningTypeId && params.append(\"planningTypeId\", planningTypeId);\r\n name && params.append(\"name\", name);\r\n district && params.append(\"district\", district);\r\n planningUnitId && params.append(\"planningUnitId\", planningUnitId);\r\n yearSearch && params.append(\"year\", yearSearch);\r\n approvalAgencyId && params.append(\"approvalAgencyId\", approvalAgencyId);\r\n numberOfDecisions && params.append(\"numberOfDecisions\", numberOfDecisions);\r\n constructionGroup && params.append(\"constructionGroup\", constructionGroup);\r\n pageIndex && params.append(\"pageIndex\", pageIndex);\r\n pageSize && params.append(\"pageSize\", pageSize);\r\n return service\r\n .get(ApiUrl.PlanningSearchByIdName, params)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};\r\n\r\nexport const SearchPlanningByLatLng = (longtitude, latitude) => {\r\n const params = new URLSearchParams();\r\n longtitude && params.append(\"longtitude\", longtitude);\r\n latitude && params.append(\"latitude\", latitude);\r\n return service\r\n .get(ApiUrl.SearchPlanningByLatLng, params)\r\n .then((res) => {\r\n return res;\r\n })\r\n .catch((err) => {\r\n throw err;\r\n });\r\n};","import axios from 'axios';\r\nimport * as apiConfig from './api-config';\r\nimport * as configuration from '../utils/configuration';\r\nimport * as Page500ErrorTypes from '../common/error-types-500';\r\nimport { ApiUrl } from './api-url';\r\n\r\nconfiguration.setConfiguration(\r\n configuration.ApiServerKey.APP_API_ROOT,\r\n apiConfig.api\r\n);\r\nconst apiRoot = configuration.getConfiguration(\r\n configuration.ApiServerKey.APP_API_ROOT\r\n);\r\n\r\nconst isHandlerEnabled = true;\r\n\r\nconst requestHandler = (request) => {\r\n if (isHandlerEnabled) {\r\n // request.headers.common[\"Accept\"] = \"application/json\";\r\n request.headers.common['Content-Type'] = 'application/json; charset=utf-8';\r\n request.headers.common['Accept'] =\r\n 'application/json, text/javascript, */*; q=0.01';\r\n request.headers.common['Access-Control-Allow-Origin'] = '*';\r\n }\r\n\r\n let userInfo = configuration.getCookies(configuration.TokenKey.token);\r\n if (userInfo) {\r\n request.headers.common[\r\n 'Authorization'\r\n ] = `${configuration.TokenPrefix} ${userInfo}`;\r\n }\r\n\r\n return request;\r\n};\r\n\r\nconst successHandler = (response, isHandlerEnabled) => {\r\n if (isHandlerEnabled) {\r\n //TODO: Do Success Handler\r\n }\r\n\r\n return response;\r\n};\r\n\r\nconst errorHandler = async (error, isHandlerEnabled) => {\r\n if (isHandlerEnabled) {\r\n //TODO: Do Error Handler\r\n }\r\n\r\n if (\r\n error.request.responseType === 'blob' &&\r\n error.response.data instanceof Blob &&\r\n error.response.data.type &&\r\n error.response.data.type.toLowerCase().indexOf('json') != -1\r\n ) {\r\n return new Promise((resolve, reject) => {\r\n let reader = new FileReader();\r\n reader.onload = () => {\r\n error.response.data = JSON.parse(reader.result);\r\n resolve(Promise.reject(error.response.data));\r\n };\r\n\r\n reader.onerror = () => {\r\n reject(error);\r\n };\r\n reader.readAsText(error.response.data);\r\n });\r\n }\r\n\r\n return Promise.reject({\r\n ...(error.response\r\n ? error.response.data\r\n : {\r\n errorType: Page500ErrorTypes.UnhandleException,\r\n errorMessage: 'UnhandleException',\r\n }),\r\n });\r\n};\r\n\r\nexport default class Service {\r\n constructor(namespace) {\r\n this.namespace = namespace;\r\n this.axios = axios.create({\r\n baseURL: apiRoot,\r\n responseType: 'json',\r\n });\r\n\r\n //Enable request interceptor\r\n this.axios.interceptors.request.use(\r\n (request) => requestHandler(request, isHandlerEnabled),\r\n (error) => errorHandler(error, isHandlerEnabled)\r\n );\r\n\r\n //Response and Error handler\r\n this.axios.interceptors.response.use(\r\n (response) => successHandler(response, isHandlerEnabled),\r\n (error) => {\r\n const originalRequest = error.config;\r\n if (error && error.response && error.response.status && error.response.status === 401) {\r\n const accessToken = configuration.getCookies(configuration.TokenKey.token);\r\n const refreshToken = configuration.getCookies(configuration.TokenKey.refreshToken);\r\n const deviceId = configuration.getCookies(configuration.TokenKey.DeviceId);\r\n const data = {\r\n returnUrl: '',\r\n accessToken,\r\n refreshToken,\r\n deviceId\r\n }\r\n if (accessToken && refreshToken && deviceId) {\r\n this.post(ApiUrl.RefreshToken, data).then((res) => {\r\n configuration.setCookies(configuration.TokenKey.token, res.content.token);\r\n configuration.setCookies(configuration.TokenKey.refreshToken, res.content.refreshTokens);\r\n }).then(() => {\r\n const accessToken = configuration.getCookies(configuration.TokenKey.token);\r\n originalRequest.headers.Authorization = `${configuration.TokenPrefix} ${accessToken}`;\r\n return axios(originalRequest);\r\n }).catch(() => {\r\n configuration.removeCookies(configuration.TokenKey.token);\r\n configuration.removeCookies(configuration.TokenKey.DeviceId);\r\n configuration.removeCookies(configuration.TokenKey.refreshToken);\r\n configuration.setCookies(\"SHOW_FORM_LOGIN\", true);\r\n configuration.setCookies(\"IS_ADMIN\", false);\r\n })\r\n }\r\n }\r\n return Promise.reject(error);\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Get Http Request\r\n * @param {any} action\r\n */\r\n get(action, params) {\r\n return new Promise((resolve, reject) => {\r\n this.axios\r\n .request(params ? action + '?' + params : action, {\r\n method: 'GET',\r\n })\r\n .then((response) => {\r\n if (response.data) {\r\n resolve(response.data);\r\n } else {\r\n reject(response);\r\n }\r\n })\r\n .catch((error) => {\r\n if (\r\n error.response &&\r\n error.response.data &&\r\n error.response.data.error\r\n ) {\r\n console.error('REST request error!', error.response.data.error);\r\n reject(error.response.data.error);\r\n } else reject(error);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Get Http Request\r\n * @param {any} action\r\n */\r\n getBinary(action, params) {\r\n return new Promise((resolve, reject) => {\r\n this.axios\r\n .request(params ? action + '?' + params : action, {\r\n method: 'GET',\r\n responseType: 'blob',\r\n })\r\n .then((response) => {\r\n if (response.data) {\r\n resolve(response.data);\r\n } else {\r\n reject(response);\r\n }\r\n })\r\n .catch((error) => {\r\n if (\r\n error.response &&\r\n error.response.data &&\r\n error.response.data.error\r\n ) {\r\n console.error('REST request error!', error.response.data.error);\r\n reject(error.response.data.error);\r\n } else reject(error);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Post Http Request\r\n * @param {any} action\r\n * @param {any} params\r\n */\r\n post(action, params) {\r\n return new Promise((resolve, reject) => {\r\n this.axios\r\n .request(action, {\r\n method: 'POST',\r\n data: params,\r\n })\r\n .then((response) => {\r\n if (response.data) {\r\n resolve(response.data);\r\n } else {\r\n reject(response);\r\n }\r\n })\r\n .catch((error) => {\r\n if (\r\n error.response &&\r\n error.response.data &&\r\n error.response.data.error\r\n ) {\r\n console.error('REST request error!', error.response.data.error);\r\n reject(error.response.data.error);\r\n } else reject(error);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Put Http Request\r\n * @param {any} action\r\n * @param {any} params\r\n */\r\n put(action, params) {\r\n return new Promise((resolve, reject) => {\r\n this.axios\r\n .request(action, {\r\n method: 'PUT',\r\n data: params,\r\n })\r\n .then((response) => {\r\n if (response.data) {\r\n resolve(response.data);\r\n } else {\r\n reject(response);\r\n }\r\n })\r\n .catch((error) => {\r\n if (\r\n error.response &&\r\n error.response.data &&\r\n error.response.data.error\r\n ) {\r\n console.error('REST request error!', error.response.data.error);\r\n reject(error.response.data.error);\r\n } else reject(error);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Post Http Request\r\n * @param {any} action\r\n * @param {any} params\r\n */\r\n postParams(action, params, body) {\r\n return new Promise((resolve, reject) => {\r\n this.axios\r\n .request(action + '?' + params, {\r\n method: 'POST',\r\n data: body,\r\n })\r\n .then((response) => {\r\n if (response.data) {\r\n resolve(response.data);\r\n } else {\r\n reject(response);\r\n }\r\n })\r\n .catch((error) => {\r\n if (\r\n error.response &&\r\n error.response.data &&\r\n error.response.data.error\r\n ) {\r\n console.error('REST request error!', error.response.data.error);\r\n reject(error.response.data.error);\r\n } else reject(error);\r\n });\r\n });\r\n }\r\n}\r\n"],"sourceRoot":""}