{"version":3,"sources":["Assets/icon.png","Redux/Type.js","Containers/setup.js","Redux/Reducer/Search.js","Components/Drawing/Mode.js","Redux/Reducer/Drawing.js","Redux/Reducer/HienTrang.js","Redux/Reducer/GiaDat.js","Redux/Reducer/QuyHoach.js","Redux/Reducer/RightPanel.js","Redux/Reducer/MapView.js","Redux/Reducer/DiaGioi.js","Redux/Reducer/PopupPanel.js","Redux/Reducer/PriceTableTerm.js","Redux/Reducer/Reducer.js","Redux/Store.js","Styles/Colors.js","Components/Accessary.js","Containers/RightPanelAction.js","Components/Menu/HeaderBar.js","Assets/LabelQuyHoach.js","Containers/QuyHoach.js","Containers/Converter.js","Containers/Search.js","Containers/MainController.js","Containers/MapView.js","Components/Main/MapView.js","Components/QuyHoach/Layers/PointLayer.js","Containers/GiaoCatPolygons.js","Components/QuyHoach/Layers/PolygonLayer.js","Components/QuyHoach/LopQuyHoach.js","Components/HienTrang/LopHienTrang.js","Components/Drawing/index.js","Containers/ViTriHanhChinh.js","Components/Menu/CardDownApp.js","Components/Search/Search.js","Components/QuyHoach/Layer.js","Components/Menu/MapMode.js","Components/Menu/Server.js","Components/Menu/Location.js","Components/QuyHoach/ZonePanel.js","Containers/Login.js","Components/Profile/Login.js","Styles/Layout.js","Components/Trichdo/Polygon.js","Components/Search/PanelInfo.js","Components/Search/Result.js","Assets/trangthaiphaply.js","Components/HienTrang/Info.js","Components/Profile/Account.js","Components/Drawing/Advance/DrawingAdvance.js","Components/Main/ContentRightPanel.js","Components/Main/RightPanel.js","Components/QuyHoach/PanelQuyHoachInfo.js","Components/HienTrang/LopChuQuyen.js","Components/Main/Container.js","Components/Drawing/ControlBar.js","Components/Drawing/Statistical.js","Containers/PriceTable.js","Components/PriceTable/PriceFilter.js","Components/Main/ContentPopupPanel.js","Components/Main/PopupPanel.js","Components/Main/TabOptionTop.js","Components/Main/Maptype.js","Components/PriceTable/ResultModal.js","Components/Main/Main.js","Components/QuanLyGhiChu/HeaderBar.js","Components/QuanLyGhiChu/MenuSide.js","Components/QuanLyGhiChu/DanhMucQuanLy.js","App.js","serviceWorker.js","index.js"],"names":["module","exports","Type","TNH_SETUP","title","openMapBoxKey","googleMapURLDev","googleMapURLProduct","huyenSelected","key","active","text","searchID","startCoordinate","lat","lng","defaultZoom","allDistrict","huyenId","tinhId","distanceLoad","ktt","dXS","dYS","hackMap","apiLink","apiDebug","accessAccount","accessKey","urlMobile","initSearchState","listDistrict","districtSelected","setup","districtSelectedSearch","listWard","wardSelected","wardSelectedSearch","showErrorWard","modeSearch","searchText","markerPosition","pickMapOn","listResult","loadingSearch","loadingLoginEnter","Search","state","type","route","value","SET_SEARCH","DrawingMode","initDrawingState","showTool","drawingMode","STOP","modeChosen","evtPath","listPoints","listLine","textInput","textInputLoGioi","keyActive","Drawing","evt","SHOW_ON_DRAWING","SHOW_KEY_ACTIVE","SHOW_OFF_DRAWING","STOP_DRAWING","START_DRAWING","SET_MODE_DRAWING","SET_DRAWING_TEXT_INPUT","SET_DRAWING_TEXT_INPUT_LOGIOI","CLEAR_PATH_DRAWING","setMap","SET_EVT_DRAWING","SET_DRAWING_POINT","SET_DRAWING_LINE","initState","listPolygon","listPolygonVer2","showThuaDat","shapePolygon","lastCoordinate","makerPosition","pickedPolygon","showOnZoom","dataThuaDatPicked","giadat","dataTrichDoPicked","HienTrang","SET_STATE_HIEN_TRANG","CLEAR_MAKER","GiaDat","SET_STATE_GIA_DAT","menu","showQuyHoach","typeActive","isLoading","errorMessage","labelActive","listLabel","polygons","polyline","points","selected","opacityLevel","hienthidiem","hienthithongtin","QuyHoachReducer","SET_STATE_QUY_HOACH","SELECTED_QUYHOACH","isShow","isMinimized","className","arrLabelShow","routeContent","routeFrom","RightPanelReducer","SET_STATE_RIGHT_PANEL","refMapView","currentZoom","showModal","typeMapId","typeServer","MapViewReducer","REF_MAP_VIEW","SET_CURRENT_ZOOM_SCALE","SET_SHOW_MAIN_MODAL","SET_TYPE_MAP","SET_TYPE_SERVER","menuDiaGioi","huyenselect","xaselect","DiaGioi","SET_DIAGIOI","isShowForPopup","PopupanelReducer","SET_STATE_POPUP_PANEL","listPrice","arrayHuyen","arrayXa","arrayLoaiDat","arrayDuong","arrayDoan","arrayViTri","xaSelected","loaiDatSelected","duongSelected","doanSelected","viTriSelected","showResult","PriceTableTerm","SET_PRICE_TB_TERM","combineReducers","userInfo","action","SET_USER_INFO","loadingState","messageLoading","SET_LOADING","signOut","signOutAction","token","SET_TOKEN","searchState","quyHoachInfo","add","SET_QUY_HOACH_ON_THUA_DAT","SoTo","SoThua","MaDvhc","drawingTool","hienTrang","quyHoach","mainAlertMessage","message","SET_MAIN_MESSAGE","rightPanel","mapView","diaGioi","popupPanel","priceTableTerm","store","createStore","Reducer","COLOR","whiteGray","darkGray","black","brown","grey","darkBlue","blue","whiteBlue","blueBackground","white","red","redPink","border","orange","yellow","orangeBackground","greenBackground","green","opacityBackground","grayBackground","transparent","fillColor","gray","pink","fillColorQuyHoach","deepOrange","purple","deepGreen","strokeColor","colorMapping","getShapeColor","strType","mapping","getQuyHoachColor","getUsedShapeColor","theme","getTheme","BaseButton","props","TooltipHost","content","tooltip","styles","root","display","directionalHint","DirectionalHint","bottomCenter","PrimaryButton","allowDisabledFocus","addButton","split","CommandButton","CommandBarButton","iconProps","iconName","processButton","widthScreenScroll","window","screen","width","AppButton","IconButton","iconButton","onClick","ActionButton","checkQuyHoach","checked","disabled","HorizontalDivider","style","horizontalDivider","VerticalDivider","verticalDivider","MenuItem","menuItem","Loading","Stack","loadingContainer","Spinner","label","Error","Icon","errorIcon","Text","variant","menuIcon","fontSize","height","backgroundColor","marginRight","color","icon","isSmall","minHeight","borderRadius","padding","fontWeight","iconHovered","iconPressed","opacity","textAlign","marginLeft","palette","themePrimary","rootChecked","themeLight","labelChecked","rootCheckedHovered","iconChecked","flex","justifyContent","alignItems","loadingSpin","NeutralColors","gray90","onOpenRightPanel","getState","dispatch","onOpenPopup","onMinimizePanel","onMaximumPanel","onCloseRightPanel","setTimeout","HeaderBar","useSelector","useDispatch","topBar","horizontal","verticalAlign","Image","src","require","imageFit","ImageFit","contain","paddingLeft","appName","FontSizes","size14","accountBtn","cursor","labelQuyHoachChiTiet","onLoadMenu","onPostRequest","LinkAPI","getMenuQuyHoach","statusCode","response","onLoadQuyHoachPolygon","keyType","onShowOffQuyHoachInfoPanel","getPolygonQuyHoach","labelObj","coordinate","forEach","e","mapGeoType","geoType","item","id","ID","FillColor","replace","StokeColor","weightLine","WeightLine","kyhieu","polygon","processPolygon","name","diadanh","DIADANH","length","includes","nextLabel","POLYGON","LINESTRING","element","index","nextItem","POINT","onMoveToMap","onLoadQHChiTietTanChau","labelLayerQuyHoach","DataQuyHoachTTTC","map","MDSD","geoList","labelList","sort","a","b","sortListObject","getQuyHoachInfo","TenChu","quyHoachList","filter","quyhoach","MucDichSuDung","maquyhoach","data","onShowQuyHoachInfoPanel","panel","document","querySelector","setProperty","nameA","toUpperCase","nameB","conPi","Math","PI","convertLatLonToXY","latitude","longitude","KTT","K","m_a","m_b","m_e2","m_N","m_pow2N","m_pow3N","sinphi","sin","cosphi","cos","tanphi","tan","pow2sinphi","pow2cosphi","pow3cosphi","pow5cosphi","pow2tanphi","pow4tanphi","v","sqrt","rho","n2","phi","M","P","pow2P","pow4P","v1","x","y","convertXYToLatLon","pointXY","use_lng_lat","m_dLongitudeOrigin","m_dSemiMajorAxis","m_dSemiMinorAxis","northing","easting","phi1","pow","VII","VIII","IX","Et","X","XI","XII","XIIA","getDistance","p1","p2","p","c","asin","toFixed","convertXYPolygon","dataPoint","xArray","yArray","xMin","min","xMax","max","yMin","yMax","dx","dy","len","dataText","svgHeight","distance","i","pointStart","pointEnd","from","to","flagDown","angle","atan","middlePoint","abs","rotate","join","circle","ThongTinThuaDatDefault","getSearchList","onSuccess","Point","Position","linkCallAPI","searchByName","searchByToThua","searchByLatLng","console","log","SOTHUA","trim","MucDichSDD","getListMDSD","MADVHC","MaDVHC","toString","GhiChu_dkqsdd","undefined","strMDSD","result","slice","listMDSD","formatListMDSD","indexOf","apiLinkEnterprise","secretKey","URL","login","changePassWord","getPolygonByDistance","getPolygonByDistanceOLD","getPolygonByDistance2","getPolygonByToThua","getTreeDVHC","maTinh","capDo","getGiaDat","getKhaoSatQuyHoach","getDiaGioiHanhChinh","getQuyHoachLayer","checkPermissionAddNote","uploadHinhAnh","thuadat","soto","sothua","madvhc","loadListNoteByThuaDat","loadListNoteByAccount","createGhiChu","xoaGhiChu","getDanhMucGiaDat","loaidm","getDanhMucGiaDatDieuKien","maloai","maloai2","getGiaDatTheoTieuChi","huyen","maxa","maloaidat","maduong","madoan","DownLoadAndroid","DownLoadIOS","loginEnterPrise","searchByNameEnter","iddvhc","searchSoToDVHC","soTo","dvhc","searchSoThuaDVHC","soThua","idBanDo","getPolygonByToThuaEnter","isObject","obj","constructor","Object","url","payload","userinfo","exp","Date","parse","Expired","now","localStorage","removeItem","dataHeader","dataResponse","rawToken","decodeResponse","JSON","Username","Token","encodeResponse","Axios","post","encodeURI","headers","Data","then","res","status","catch","error","onGetRequestNoAuth","get","removeMask","getElementsByClassName","children","innerHTML","replaceAll","body","stringify","CryptoJS","enc","Utf8","MD5","words","push","options","mode","ECB","textWordArray","TripleDES","encrypt","encryptedText","decrypt","ciphertext","Base64","formatNumber","number","strPoly","isConvert","coordinateArray","_p","_list","isNaN","parseFloat","getCenterPoint","arr","panTo","MapView","withScriptjs","withGoogleMap","refMap","useRef","useState","isRend","setRender","zoomLevel","ref","defaultCenter","onDragEnd","featureType","stylers","visibility","mapTypeControl","streetViewControl","zoomControl","draggableCursor","maxZoom","onTilesLoaded","current","centerPoint","getCenter","topRightPoint","bottomLeftPoint","zoom","centerPointXY","Latitude","Longitude","Distance","Y","Zoom","getBounds","getNorthEast","getSouthWest","getZoom","defaultMapTypeId","mapTypeId","ev","React","memo","onPolygonPress","onClickEvnt","averageCenter","enableRetinaIcons","gridSize","position","visible","InForBox","closeBoxURL","enableEventPropagation","DichChuyenDuong","lines","line","lineString","lineOffset","units","geometry","coordinates","paths","defaultPath","strokeWeight","zIndex","fillOpacity","LopQuyHoach","onPolygonPressLayer","PolygonLayer","path","PointLayer","LopHienTrang","markerRe","latLng","point","KVHC_ID","SOTO","dataDefault","DienTich","DIENTICH","getInfoByThuaDat","idx","defaultPaths","defaultOptions","drawingMain","polygonMain","polyLineMain","drawingControl","polygonOptions","clickable","editable","draggable","circleOptions","rectangleOptions","onRectangleComplete","event","bounds","areaBounds","north","south","east","west","topRight","topLeft","botRight","botLeft","onCircleComplete","onPolygonComplete","onMouseUp","strNew","count","getPath","getArray","newArr","line1","line2","reverse","arrToaDoN","concat","alert","onLoadViTriDiaGioi","arHuyen","MaXa","arrXa","MaHuyen","onLoadXa","huyenobject","CardDownApp","container","lable","card","href","marginTop","borderTop","flexDirection","isDidMount","setDidMount","setErrorMessage","showTroGiup","setShowTroGiup","warningMessage","setWarningMessage","optionModeSearch","huyenChosen","setHuyenChosen","arrHuyen","useEffect","onCallAPISearch","onClearSearchText","onSearchPress","arraySearchText","resultconvert","tokens","childrenGap","SearchBox","placeholder","onChange","_","onClear","onSearch","setAriaDescribedBy","aria-label","textTooltip","tooltipImg","helpimg1","marginBottom","MessageBar","messageBarType","MessageBarType","warning","isMultiline","subTitleRow","Label","required","labelTitle","ChoiceGroup","chosenGroup","selectedKey","optionChoose","Dropdown","dropdownMenu","option","severeWarning","labelPosition","hidden","searchRoot","objectFit","Layer","filterMenu","Ten","Checkbox","center","paddingBottom","paddingTop","maxHeight","innerHeight","lableEmpty","horizontalAlign","overflowY","paddingRight","checkBoxV2","fontStyle","MapMode","Server","Location","stateDiaGioiHC","heightScreenScroll","ZonePanel","showPhotoViewer","setShowPhotoViewer","showInitIndex","setShowInitIndex","seconds","setSeconds","onChangeHienThiMoTa","myInterval","setInterval","clearInterval","getElementById","Link","open","LINK","focus","layer","onRenderLabel","CheckLabel","onClose","images","imageTest","noToolbar","zoomSpeed","showTotal","activeIndex","alt","thumbnail","onChangePassWord","onProcess","setItem","Login","contentDialog","rememberLogin","username","password","lastPassword","confirmPassword","isLogin","isChangePasswordSuccess","closeAndBack","onCallLoginAPI","setState","Password","LastPassword","onOpenDialog","onCloseDialog","onChangeUsername","onChangePassword","onChangeLastPassword","onChangeConfirmPassword","onLoginPress","handleEnterPress","ent","this","TextField","onKeyDown","ariaLive","Dialog","onDismiss","dialogContentProps","DialogType","normal","closeButtonAriaLabel","subText","modalProps","isBlocking","main","maxWidth","dragOptions","DialogFooter","PureComponent","Polygon","dataTrichDo","polygonContainer","cx","cy","r","fill","transform","stroke","strokeWidth","widthLine","bottom","PanelInfo","forwardRef","setData","showIndex","setShowIndex","setClassName","listQuyHoach","useImperativeHandle","onShowCardInfo","dataFromParent","onShowOffCardInfo","getQuyHoachList","checkExist","CardInfo1","CardInfo2","CardInfo","infoView","infoHeader","infoTitle","closeInfo","infoContainer","Array","isArray","squareIcon","titleIcon","DiaChiThuaDat","TrangThaiThuaDat","fontFamily","tentuyendu","doanduongd","gia_tuyen","rootHovered","btnStyles","gender","infoName","infoAccount","CardItemPerson","Card","childrenMargin","cardContainer","onCardItemPress","Item","footerCardSectionStyles","titleFooter","Ten1","Ten2","contentFooter","Result","cardInfoLayout","ItemChecked","dataLoadPolygon","idThuaDat","Idthuadat","resultStack","FocusZone","direction","FocusZoneDirection","vertical","List","items","onRenderCell","Layout","overflow","left","right","top","borderBottom","accountIcon","isFemale","dsTrangthaiphaply","Info","ScrollablePane","tt","MaTrangthai","getICON","strongContent","squareContent","verifyIcon","titleGia","contentGia","personName","Account","hideDialog","setHideDialog","onHideDialog","Persona","FullName","size","PersonaSize","size72","presence","PersonaPresence","online","hidePersonaDetails","DefaultButton","sheetNames","imageSrc","imageAlt","selectedImageSrc","imageSize","DrawingManager","txtInput","txtRongDuong","loaiQuyHoach","setLoaiQuyHoach","arrImg","getElementsByTagName","setAttribute","setTitle","veQHDuong","arrToaDo","veQHThuaDat","clearAllData","choseGroup","defaultSelectedKey","FontIcon","accept","target","file","files","reader","FileReader","onload","bstr","wb","XLSX","sheets","SheetNames","wsname","ws","Sheets","sheet_to_json","Lat","Lng","readAsBinaryString","uploadFile","fileLink","process","link","createElement","download","appendChild","click","removeChild","textbox","description","multiline","rows","toaDo","onVeQuyHoach","buttonDraw","field","buttonDelete","flexContainer","selectors","ContentRightPanel","closeButton","modal","closeButtonView","PanelQuyHoachInfo","headerBar","headerTitle","boxShadow","SharedColors","cyanBlue10","cyanBlue20","rootPressed","typeTitle","margin","LopChuQuyen","scale","Container","mapContainer","googleMapURL","loadingElement","containerElement","mapElement","MarkerWithLabel","idDiv","labelAnchor","labelClass","onMouseOver","d","textDecoration","onMouseOut","labelStyle","background","location","ContentMarker","float","ControlBar","onStartPress","backgroundcolor","gray30","gray40","totalField","setTotalField","totalArea","setTotalArea","totalMdsd","setTotalMdsd","detail","setDetail","setLoading","detailMode","setDetailMode","coords","polygonStr","DTKhaoSat","tile","round","areaTotal","fieldTotal","keyMDSD","areaMDSD","nameMDSD","mdsdTotal","area","onLoadStatistical","onLoadSuccess","onLoadInMount","_renderHeaderColumn","detailsHeaderProps","defaultRender","Sticky","onModeChange","headerView","generalView","generalTitle","generalContent","Toggle","onText","offText","DetailsList","columns","column","setKey","layoutMode","DetailsListLayoutMode","justified","selectionMode","SelectionMode","none","onRenderDetailsHeader","columnMDSD","fieldName","minWidth","greenCyan10","mediumPlus","FontWeights","bold","green20","smallPlus","semibold","medium","onLoadDanhMucBangGia","loaidanhmuc","routeName","dataReturn","onLoadDMDieuKien","PriceFilterContainer","duongChosen","setDuongChosen","doanChosen","setDoanChosen","duong","valueSelect","onLoadBangGia","ContentPopupPanel","PriceFilter","PopupContentBar","onclick","contains","TabOptionTop","customtop","fromLeft","innerWidth","offsetWidth","appButton","mustLogin","MapTypes","vetinhType","defaultType","backgroundImage","PriceTableModal","Modal","isOpen","onRenderItemColumn","fieldContent","toLocaleString","currency","moment","format","blue10","Main","routeMenuBar","onSetLoginStateAtStart","loadMenuQuyHoach","onCloseModal","blocked","truncated","dismissButtonAriaLabel","messageBar","connect","modalContainer","HeaderBarGhiChu","onBackPress","searchBox","menuBar","button","splitButtonMenuButton","splitButtonMenuIcon","splitButtonDivider","splitButtonContainer","HighContrastSelector","borderColor","divider","MenuSide","navStyles","QuanLyGhiChu","Component","RouteMain","exact","DanhMucQuanLy","initializeIcons","App","Boolean","hostname","match","history","createBrowserHistory","ReactDOM","render","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.db68ba04.chunk.js","sourcesContent":["module.exports = \"data:image/png;base64,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\"","const Type = {\r\n 'SET_PRICE_TB_TERM': \"SET_PRICE_TB_TERM\",\r\n 'SET_USER_INFO':'SET_USER_INFO',\r\n 'SET_TOKEN':'SET_TOKEN',\r\n 'SET_SEARCH':'SET_SEARCH',\r\n 'SET_QUY_HOACH_ON_THUA_DAT':'SET_QUY_HOACH_ON_THUA_DAT',\r\n 'SHOW_ON_DRAWING': 'SHOW_ON_DRAWING',\r\n 'SHOW_KEY_ACTIVE': 'SHOW_KEY_ACTIVE',\r\n 'SHOW_OFF_DRAWING':'SHOW_OFF_DRAWING',\r\n 'SET_MODE_DRAWING': 'SET_MODE_DRAWING',\r\n 'STOP_DRAWING':'STOP_DRAWING',\r\n 'SET_DRAWING_POINT':'SET_DRAWING_POINT',\r\n 'SET_DRAWING_TEXT_INPUT':'SET_DRAWING_TEXT_INPUT',\r\n 'SET_DRAWING_TEXT_INPUT_LOGIOI':'SET_DRAWING_TEXT_INPUT_LOGIOI',\r\n 'SET_DRAWING_LINE':'SET_DRAWING_LINE',\r\n 'START_DRAWING':'START_DRAWING',\r\n 'SET_EVT_DRAWING':'SET_EVT_DRAWING',\r\n 'CLEAR_PATH_DRAWING':'CLEAR_PATH_DRAWING',\r\n 'SET_SHOW_MAIN_MODAL':'SET_SHOW_MAIN_MODAL',\r\n 'SET_STATE_HIEN_TRANG':'SET_STATE_HIEN_TRANG',\r\n 'SET_STATE_GIA_DAT': 'SET_STATE_GIA_DAT',\r\n 'SET_MAIN_MESSAGE':'SET_MAIN_MESSAGE',\r\n 'SET_TRICH_DO':'SET_TRICH_DO',\r\n 'REF_MAP_VIEW':'REF_MAP_VIEW',\r\n 'MOVE_MAP':'MOVE_MAP',\r\n 'SET_CURRENT_ZOOM_SCALE':'SET_CURRENT_ZOOM_SCALE',\r\n 'CLEAR_MAKER':'CLEAR_MAKER',\r\n 'SET_STATE_QUY_HOACH':'SET_STATE_QUY_HOACH',\r\n 'SET_STATE_RIGHT_PANEL':'SET_STATE_RIGHT_PANEL',\r\n 'SET_STATE_POPUP_PANEL':'SET_STATE_POPUP_PANEL',\r\n 'SET_TYPE_MAP':'SET_TYPE_MAP',\r\n 'SET_TYPE_SERVER':'SET_TYPE_SERVER',\r\n 'SELECTED_QUYHOACH':\"SET_SELECTED_QUYHOACH\",\r\n 'SET_DIAGIOI':\"SET_DIAGIOI\",\r\n 'SET_LOADING':\"SET_LOADING\",\r\n}\r\n\r\nexport default Type;\r\n","import { tnh_option } from \"./location\";\r\nconst TNH_SETUP = {\r\n title: \"Cổng thông tin đất đai tỉnh Cà Mau\",\r\n openMapBoxKey: \"pk.eyJ1IjoidGllbmd0aGV0dGhla3kiLCJhIjoiY2wzd2U0eDhvMDk2ZzNqcXR5eHJkZDZoMiJ9.5Bi2kQ6i-nrfS338iwwWhw\",\r\n // GG Tạm \r\n googleMapURLDev: 'https://maps.googleapis.com/maps/api/js?key=AIzaSyDWHY2-vTILn6LedwXVXw-5_crRhXF0eKI&libraries®ion=VI&language=vi&callback=initMap',\r\n // // GG Thiệt\r\n googleMapURLProduct: 'https://maps.googleapis.com/maps/api/js?key=AIzaSyBBxXWjo6k86fYf4SavzucbnOHBIbzqyEM&libraries®ion=VI&language=vi&callback=initMap',\r\n huyenSelected: {\r\n key: 706,\r\n active: true,\r\n text: 'Huyện Tân Châu',\r\n searchID: 1706,\r\n },\r\n startCoordinate: {\r\n lat: 9.176274,\r\n lng: 105.150784\r\n },\r\n defaultZoom: 18,\r\n allDistrict: { key: '1964', text: 'Toàn huyện', searchID: '0', active: true },\r\n huyenId: 1964,\r\n tinhId: 96,\r\n distanceLoad: '200',\r\n ktt: 105.5,\r\n dXS: 0.00101036464,\r\n dYS: -0.00178137015,\r\n hackMap: false,\r\n // apiLink: 'http://ilis.camau.gov.vn/ws/api/',\r\n // apiDebug: 'http://ilis.camau.gov.vn/ws/api/',\r\n apiLink: 'https://ilis.camau.gov.vn/ws/api/',\r\n apiDebug: 'https://ilis.camau.gov.vn/ws/api/',\r\n accessAccount: {},\r\n accessKey: ['2022'],\r\n urlMobile: {\r\n 'urlAndroid': 'https://dl.dropboxusercontent.com/s/9x2704h9zc62t3w/app-release.apk?dl=0',\r\n 'urlIos': 'itms-services://vienthongtayninh.vn/?action=download-manifest&url=https://dl.dropboxusercontent.com/s/gnavnxh9uyb67qt/manifest.plist'\r\n }\r\n\r\n};\r\n\r\nexport default TNH_SETUP;\r\n// test","import setup from \"../../Containers/setup\";\r\nimport Type from \"../Type\";\r\n\r\n\r\nconst initSearchState = {\r\n listDistrict: [],\r\n districtSelected: { key: setup.huyenId },\r\n districtSelectedSearch: { key: setup.huyenId },\r\n listWard: [],\r\n wardSelected: '',\r\n wardSelectedSearch: '',\r\n showErrorWard: false,\r\n modeSearch: 'byName',\r\n searchText: \"\",\r\n markerPosition: null,\r\n pickMapOn: false, // trạng thái xác định bật chế độ chọn điểm trên gg map\r\n listResult: [],\r\n loadingSearch: false,\r\n\r\n loadingLoginEnter: false\r\n\r\n}\r\n\r\nconst Search = (state = initSearchState, { type, route, value }) => {\r\n if (type === Type.SET_SEARCH) {\r\n return {\r\n ...state,\r\n [route]: value\r\n }\r\n }\r\n return state;\r\n};\r\n\r\nexport default Search\r\n","const DrawingMode = {\r\n 'STOP':null,\r\n 'MODE':'polygon',\r\n 'MODES': [{key: 'circle', text: 'circle'},{key: 'polygon', text: 'polygon'},{key: 'rectangle', text: 'rectangle'},{key: 'nangcao', text: 'nangcao'}] \r\n}\r\n\r\nexport default DrawingMode\r\n","import DrawingMode from \"../../Components/Drawing/Mode\";\r\nimport Type from \"../Type\";\r\n\r\n\r\nconst initDrawingState = {\r\n showTool: false,\r\n drawingMode: DrawingMode.STOP,\r\n modeChosen: 'nangcao',\r\n evtPath: null,\r\n listPoints: [],\r\n listLine: [],\r\n textInput: null,\r\n textInputLoGioi: null,\r\n keyActive: ''\r\n}\r\n\r\nconst Drawing = (state = initDrawingState, { type, evt }) => {\r\n switch (type) {\r\n\r\n case Type.SHOW_ON_DRAWING: return { ...state, showTool: true };\r\n case Type.SHOW_KEY_ACTIVE: return { ...state, keyActive: evt };\r\n case Type.SHOW_OFF_DRAWING: return initDrawingState;\r\n case Type.STOP_DRAWING: return { ...state, drawingMode: DrawingMode.STOP };\r\n case Type.START_DRAWING: return { ...state, drawingMode: evt };\r\n case Type.SET_MODE_DRAWING: {\r\n\r\n return { ...state, modeChosen: evt };\r\n }\r\n case Type.SET_DRAWING_TEXT_INPUT: return { ...state, textInput: evt };\r\n case Type.SET_DRAWING_TEXT_INPUT_LOGIOI: return { ...state, textInputLoGioi: evt };\r\n case Type.CLEAR_PATH_DRAWING: {\r\n if (state.evtPath)\r\n state.evtPath.setMap(null);\r\n return { ...state, evtPath: null };\r\n }\r\n case Type.SET_EVT_DRAWING: return { ...state, evtPath: evt }\r\n case Type.SET_DRAWING_POINT: {\r\n\r\n return { ...state, listPoints: evt }\r\n }\r\n case Type.SET_DRAWING_LINE: {\r\n\r\n return { ...state, listLine: evt }\r\n }\r\n default: return state;\r\n }\r\n\r\n}\r\n\r\nexport default Drawing\r\n","import Type from \"../Type\";\r\n\r\nconst initState = {\r\n listPolygon: [],\r\n listPolygonVer2: [],\r\n showThuaDat: true,\r\n shapePolygon: [],\r\n lastCoordinate: '',\r\n makerPosition: {},\r\n pickedPolygon: [],\r\n showOnZoom: true,\r\n dataThuaDatPicked: {},\r\n giadat: null,\r\n dataTrichDoPicked: null\r\n}\r\n\r\nconst HienTrang = (state = initState, { type, route, value }) => {\r\n if (type === Type.SET_STATE_HIEN_TRANG)\r\n return {\r\n ...state,\r\n [route]: value\r\n }\r\n else if (type === Type.CLEAR_MAKER)\r\n return {\r\n ...state,\r\n pickedPolygon: [],\r\n makerPosition: {}\r\n }\r\n else\r\n return state;\r\n}\r\n\r\nexport default HienTrang\r\n","import Type from \"../Type\";\r\n\r\nconst initState = {\r\n // listPolygon:[],\r\n // showThuaDat:false,\r\n // shapePolygon:[],\r\n // lastCoordinate:'',\r\n // makerPosition:{},\r\n // pickedPolygon:[],\r\n // showOnZoom:true,\r\n // dataThuaDatPicked:{},\r\n giadat: null,\r\n // dataTrichDoPicked:null\r\n}\r\n\r\nconst GiaDat = (state = initState,{type,route,value})=>\r\n{\r\n if (type === Type.SET_STATE_GIA_DAT)\r\n return {\r\n ...state,\r\n [route]:value\r\n }\r\n else if (type === Type.CLEAR_MAKER)\r\n return {\r\n ...state,\r\n pickedPolygon:[],\r\n makerPosition:{}\r\n }\r\n else\r\n return state;\r\n}\r\n\r\nexport default GiaDat\r\n","import Type from \"../Type\";\r\n\r\nconst initState = {\r\n menu:[],\r\n showQuyHoach:false,\r\n typeActive:{},\r\n isLoading:false,\r\n errorMessage:'',\r\n labelActive:[],\r\n listLabel:[],\r\n polygons:[],\r\n polyline:[],\r\n points:[],\r\n selected:{},\r\n opacityLevel: 0.3,\r\n hienthidiem: 'diemchon',\r\n hienthithongtin:[{text: 'Mô tả', key: 'mota',selected: false},{text: 'Điểm đánh dấu', key: 'diemchon',selected: true}] , // Hiển thị mô tả hoặc điểm trên bản đồ \r\n}\r\n\r\nconst QuyHoachReducer = (state = initState,{type,route,value})=>\r\n{\r\n if (type === Type.SET_STATE_QUY_HOACH)\r\n return {\r\n ...state,\r\n [route]:value\r\n }\r\n else if (type === Type.SELECTED_QUYHOACH)\r\n return {\r\n ...state,\r\n selected: value || {}\r\n }\r\n return state;\r\n}\r\n\r\nexport const QuyHoachInfo = (state = [], {type,add}) => {\r\n\r\n if (type === Type.SET_QUY_HOACH_ON_THUA_DAT) {\r\n if (add.SoTo && add.SoThua && add.MaDvhc)\r\n return [...state,add]\r\n\r\n }\r\n return state;\r\n};\r\n\r\nexport default QuyHoachReducer\r\n","import Type from \"../Type\";\r\n\r\nconst initState = {\r\n isShow:false,\r\n isMinimized:false,\r\n className:'',\r\n arrLabelShow:[ {key: 'zone', text:'Quy hoạch', active: false},\r\n {key: 'info', text:'Thửa đất', active: false},\r\n {key: 'result', text:'Tìm kiếm', active: false} ],\r\n routeContent:'drawingManager',\r\n routeFrom:'',\r\n}\r\n\r\nconst RightPanelReducer = (state=initState,{type,route,value})=>\r\n{\r\n if (type === Type.SET_STATE_RIGHT_PANEL)\r\n return {\r\n ...state,\r\n [route]:value\r\n }\r\n return state;\r\n}\r\n\r\nexport default RightPanelReducer\r\n","import Type from \"../Type\";\r\nimport setup from \"../../Containers/setup\";\r\n\r\nconst initState = {\r\n refMapView:null,\r\n currentZoom:setup.defaultZoom,\r\n showModal:false,\r\n typeMapId:'hybrid',\r\n typeServer: 'tnh'\r\n}\r\n\r\nconst MapViewReducer = (state = initState,{type,value})=>\r\n{\r\n switch (type) {\r\n case Type.REF_MAP_VIEW :\r\n return {...state, refMapView: value}\r\n case Type.SET_CURRENT_ZOOM_SCALE:\r\n return {...state,currentZoom: value}\r\n case Type.SET_SHOW_MAIN_MODAL:\r\n return {...state,showModal:!state.showModal}\r\n case Type.SET_TYPE_MAP:\r\n return {...state,typeMapId: value}\r\n case Type.SET_TYPE_SERVER:\r\n return {...state,typeServer: value}\r\n default: return state;\r\n }\r\n}\r\n\r\nexport default MapViewReducer\r\n","import Type from \"../Type\";\r\n\r\nconst initState = {\r\n menuDiaGioi: null,\r\n huyenselect: null,\r\n xaselect: null\r\n}\r\n\r\nconst DiaGioi = (state = initState, { type, route, value }) => {\r\n if (type === Type.SET_DIAGIOI) {\r\n return {\r\n ...state,\r\n [route]: value\r\n }\r\n }\r\n // else if (type === Type.CLEAR_MAKER)\r\n // return {\r\n // ...state,\r\n // pickedPolygon:[],\r\n // makerPosition:{}\r\n // }\r\n else\r\n return state;\r\n}\r\n\r\nexport default DiaGioi\r\n","import Type from \"../Type\";\r\n\r\nconst initState = {\r\n isShow: false,\r\n isShowForPopup: false,\r\n className: '',\r\n routeContent: '',\r\n routeFrom: '',\r\n}\r\n\r\nconst PopupanelReducer = (state = initState, { type, route, value }) => {\r\n if (type === Type.SET_STATE_POPUP_PANEL)\r\n return {\r\n ...state,\r\n [route]: value\r\n }\r\n return state;\r\n}\r\n\r\nexport default PopupanelReducer\r\n","import Type from \"../Type\";\r\n\r\nconst initState = {\r\n listPrice:[],\r\n arrayHuyen: [],\r\n arrayXa: [],\r\n arrayLoaiDat: [],\r\n arrayDuong: [],\r\n arrayDoan: [],\r\n arrayViTri: [],\r\n loadingSearch: false,\r\n huyenSelected: null,\r\n xaSelected: null, \r\n loaiDatSelected: null,\r\n duongSelected:null,\r\n doanSelected: null,\r\n viTriSelected: null,\r\n giadat: null,\r\n showResult: false\r\n // dataTrichDoPicked:null\r\n}\r\n\r\nconst PriceTableTerm = (state = initState,{type,route,value})=>\r\n{\r\n if (type === Type.SET_PRICE_TB_TERM)\r\n return {\r\n ...state,\r\n [route]:value\r\n }\r\n else\r\n return state;\r\n}\r\n\r\nexport default PriceTableTerm\r\n","import { combineReducers } from \"redux\";\r\nimport Type from \"../Type\";\r\nimport Search from \"./Search\";\r\nimport Drawing from \"./Drawing\";\r\nimport HienTrang from \"./HienTrang\";\r\nimport GiaDat from \"./GiaDat\";\r\nimport QuyHoachReducer,{QuyHoachInfo} from \"./QuyHoach\";\r\nimport RightPanelReducer from \"./RightPanel\";\r\nimport MapViewReducer from \"./MapView\";\r\nimport DiaGioi from \"./DiaGioi\";\r\nimport PopupanelReducer from \"./PopupPanel\";\r\nimport PriceTableTerm from \"./PriceTableTerm\";\r\nexport const Userinfo = (state = '', action) => {\r\n if (action.type === Type.SET_USER_INFO) {\r\n return action.userInfo;\r\n }\r\n return state;\r\n};\r\n\r\nexport const SignOut = (state = ()=>{}, action) => {\r\n if (action.type === 'SET_SIGN_OUT') {\r\n return action.signOutAction;\r\n }\r\n return state;\r\n};\r\n\r\nexport const Token = (state = '', {type,token}) => {\r\n if (type === Type.SET_TOKEN) {\r\n return token;\r\n }\r\n return state;\r\n};\r\n\r\nexport const Loading = (state = {isLoading: false , messageLoading : ''}, {type,route,value}) => {\r\n if (type === Type.SET_LOADING) {\r\n return {\r\n ...state,\r\n [route]:value\r\n }\r\n }\r\n return state;\r\n};\r\n\r\nconst MainAlertMessage = (state = '',{type,message})=>\r\n{\r\n if (type === Type.SET_MAIN_MESSAGE)\r\n return message\r\n return state;\r\n}\r\n\r\nexport default combineReducers({\r\n userInfo:Userinfo,\r\n loadingState: Loading,\r\n signOut:SignOut,\r\n token:Token,\r\n searchState:Search,\r\n quyHoachInfo:QuyHoachInfo,\r\n drawingTool:Drawing,\r\n hienTrang:HienTrang,\r\n quyHoach:QuyHoachReducer,\r\n giadat:GiaDat,\r\n mainAlertMessage:MainAlertMessage,\r\n rightPanel:RightPanelReducer,\r\n mapView:MapViewReducer,\r\n diaGioi: DiaGioi,\r\n popupPanel: PopupanelReducer,\r\n\t // Store giá đất tạm \r\n priceTableTerm: PriceTableTerm\r\n});\r\n","import {createStore} from \"redux\";\r\nimport Reducer from \"./Reducer/Reducer\"\r\n\r\n// tao ra store\r\nexport const store = createStore(Reducer);\r\n","const COLOR = {\r\n whiteGray:'#F3F2F1',\r\n darkGray:'#6B6B70',\r\n black:'#212121',\r\n brown:'#795548',\r\n grey:'#9E9E9E',\r\n darkBlue:'#004576',\r\n blue:'#0078d4',\r\n whiteBlue:'#ABD6F5',\r\n blueBackground:'#D6EAFE',\r\n white:'#FFFFFF',\r\n red:'#d32f2f',\r\n redPink:'#fbaaa0',\r\n border:'#E0E0E0',\r\n orange:'#FB8C00',\r\n yellow:'#FAC15D',\r\n orangeBackground:'#FCF6F2',\r\n greenBackground:'#EDF6F4',\r\n green:'#4CAF50',\r\n opacityBackground:'rgba(0,0,0,0.3)',\r\n grayBackground:'#FAF9F8',\r\n transparent:'transparent'\r\n};\r\n\r\nexport default COLOR;\r\n\r\n\r\nconst opacityQH = 0.7;\r\nconst opacityTD = .05;\r\nconst fillColor = {\r\n yellow: `rgba(255,235,59,${opacityTD})`,\r\n red: `rgba(244,67,54,${opacityTD})`,\r\n orange: `rgba(255,152,0,${opacityTD})`,\r\n 'deepOrange': `rgba(255,87,34,${opacityTD})`,\r\n gray: `rgba(117,117,117,${opacityTD})`,\r\n pink: `rgba(236,64,122,${opacityTD})`,\r\n blue: `rgba(33,150,243,${opacityTD})`,\r\n green: `rgba(76,175,80,${opacityTD})`,\r\n brown: `rgba(121,85,72,${opacityQH})`,\r\n redPink:`#fbaaa0`,\r\n white:'transparent'\r\n};\r\n\r\n\r\nconst fillColorQuyHoach = {\r\n yellow: `rgba(255,235,59,${opacityQH})`,\r\n red: `rgba(244,67,54,${opacityQH})`,\r\n orange: `rgba(255,152,0,${opacityQH})`,\r\n deepOrange: `rgba(255,87,34,${opacityQH})`,\r\n gray: `rgba(117,117,117,${opacityQH})`,\r\n pink: `rgba(236,64,122,${opacityQH})`,\r\n blue: `rgba(33,150,243,${opacityQH})`,\r\n green: `rgba(76,175,80,${opacityQH})`,\r\n purple: `rgba(156,39,176,${opacityQH})`,\r\n deepGreen: `rgba(0,150,136,${opacityQH})`,\r\n white:'transparent'\r\n};\r\n\r\nconst strokeColor = {\r\n yellow: '#F57F17',\r\n red: '#f44336',\r\n orange: '#FF9800',\r\n deepOrange: '#FF5722',\r\n gray: '#757575',\r\n pink: '#EC407A',\r\n blue: '#2196F3',\r\n green: '#4CAF50',\r\n brown:'#795548',\r\n purple: '#9C27B0',\r\n deepGreen:'#009688',\r\n white:'#fff',\r\n redPink:'#c3766c',\r\n whiteBlue:'#00ACC1',\r\n};\r\n\r\nexport const polygonThuaDatStokeColor = {\r\n \"roadmap\":\"#007B72\",\r\n \"hybrid\":\"#FDD835\"\r\n};\r\n\r\nconst colorMapping = {\r\n 'BHK': 'yellow',\r\n 'BHK+CLN': 'yellow',\r\n 'BHK+LUC': 'yellow',\r\n 'BHK+LUK': 'yellow',\r\n 'BCS':'yellow',\r\n 'CAN': 'red',\r\n 'CLN': 'orange',\r\n 'CLN+BHK': 'orange',\r\n 'CLN+BHK+LUK': 'orange',\r\n 'CLN+LUK': 'orange',\r\n 'CLN+NTS': 'orange',\r\n 'CLN+SKC': 'orange',\r\n 'COC': 'yellow',\r\n 'CQP': 'red',\r\n 'DBV': 'deepOrange',\r\n 'DCH': 'deepOrange',\r\n 'DCS': 'deepOrange',\r\n 'DGD': 'redPink',\r\n 'DGT': 'orange',\r\n 'DHT':'green',\r\n 'DDL': 'orange',\r\n 'DKV': 'deepOrange',\r\n 'DNL': 'deepOrange',\r\n 'DLL': 'deepOrange',\r\n 'DRA': 'deepOrange',\r\n 'DSH': 'deepOrange',\r\n 'DTL': 'blue',\r\n 'DTS': 'deepOrange',\r\n 'DTT': 'deepOrange',\r\n 'DVH': 'deepOrange',\r\n 'DXH': 'deepOrange',\r\n 'DYT': 'deepOrange',\r\n 'HNK': 'yellow',\r\n 'KDT':\"deepGreen\",\r\n 'LUC': 'yellow',\r\n 'LUC+BHK': 'yellow',\r\n 'LUK': 'yellow',\r\n 'LUK+BHK': 'yellow',\r\n 'LUK+CLN': 'yellow',\r\n 'LUK+NTS': 'yellow',\r\n 'LUN': 'yellow',\r\n 'LNK':'yellow',\r\n 'MNC': 'blue',\r\n 'NHK': 'yellow',\r\n 'NKH': 'yellow',\r\n 'NTD': 'gray',\r\n 'NTS': 'whiteBlue',\r\n 'NCS':'brown',\r\n 'ODT': 'pink',\r\n 'ODT+BHK': 'pink',\r\n 'ODT+CLN': 'pink',\r\n 'ODT+HNK': 'pink',\r\n 'ONT': 'pink',\r\n 'ONT+':'pink',\r\n 'ONT+BHK': 'pink',\r\n 'ONT+BHK+CLN': 'pink',\r\n 'ONT+BHK+LUK': 'pink',\r\n 'ONT+BHK+SKC': 'pink',\r\n 'ONT+CLN': 'pink',\r\n 'ONT+CLN+BHK': 'pink',\r\n 'ONT+CLN+LUK': 'pink',\r\n 'ONT+CLN+NTS': 'pink',\r\n 'ONT+LUC': 'pink',\r\n 'ONT+LUK': 'pink',\r\n 'ONT+NTS': 'pink',\r\n 'ONT+SKC': 'pink',\r\n 'ONT+LNK':'pink',\r\n 'PNK': 'blue',\r\n 'RDD': 'green',\r\n 'RDM': 'green',\r\n 'RPH': 'green',\r\n 'RSX': 'green',\r\n 'RSN':'green',\r\n 'SKC': 'purple',\r\n 'SKC+BHK': 'deepOrange',\r\n 'SKC+CLN': 'deepOrange',\r\n 'SKN': 'deepOrange',\r\n 'SKS': 'deepOrange',\r\n 'SKX': 'deepOrange',\r\n 'SON': 'blue',\r\n 'TMD': 'deepOrange',\r\n 'TON': 'deepOrange',\r\n 'TIN': 'deepOrange',\r\n 'TSC': 'red',\r\n 'TSN':'whiteBlue',\r\n 'QMDTB':'deepOrange',\r\n 'QMDTH':'yellow',\r\n 'HMDTH':'green',\r\n 'HMDTB':'deepGreen',\r\n 'CAO':'red',\r\n 'TBI':'yellow',\r\n 'THP':'pink',\r\n 'CAU':'blue',\r\n 'TIM':'green',\r\n 'D10':'yellow',\r\n 'VIAHE':'white'\r\n};\r\n\r\nconst lineColorMapping = {\r\n 'CHI':'green',\r\n 'PHU':'yellow',\r\n 'CAU':'blue',\r\n 'TIM':'green',\r\n 'D10':'yellow',\r\n 'VIAHE':'white'\r\n}\r\n\r\nconst lineWeightMapping = {\r\n 'CHI':5,\r\n 'PHU':2,\r\n 'CAU':5,\r\n 'TIM':5,\r\n 'D10':2,\r\n 'VIAHE':1\r\n}\r\n\r\nexport function getShapeColor(strType) {\r\n let mapping = \"gray\";\r\n if (strType && colorMapping[strType])\r\n mapping = colorMapping[strType];\r\n return {strokeColor:strokeColor[mapping],fillColor:fillColor[mapping]}\r\n}\r\n\r\nexport function getQuyHoachColor(strType) {\r\n let mapping = \"gray\";\r\n if (strType && colorMapping[strType])\r\n mapping = colorMapping[strType];\r\n return {strokeColor:strokeColor[mapping],fillColor:fillColorQuyHoach[mapping]}\r\n}\r\n\r\nexport function getUsedShapeColor(strType) {\r\n let mapping = \"gray\";\r\n if (strType && colorMapping[strType])\r\n mapping = colorMapping[strType];\r\n return strokeColor[mapping]\r\n}\r\n\r\nexport const getLineColor = (label)=>\r\n{\r\n return {\r\n strokeColor:strokeColor[lineColorMapping[label]],\r\n strokeWeight:lineWeightMapping[label]\r\n }\r\n}\r\n","import React, { } from 'react';\r\nimport COLOR from \"../Styles/Colors\";\r\nimport { NeutralColors } from '@uifabric/fluent-theme/lib/fluent/FluentColors';\r\nimport { TooltipHost, TooltipBase, IconButton, PrimaryButton, CommandBarButton, DirectionalHint, getTheme, Stack, Spinner, Icon, Text, Tooltip } from '@fluentui/react';\r\n\r\nconst theme = getTheme();\r\n\r\nexport const BaseButton = props => {\r\n return (\r\n \r\n \r\n \r\n )\r\n};\r\n\r\nexport const CommandButton = props => {\r\n return (\r\n \r\n \r\n \r\n )\r\n};\r\n\r\nconst widthScreenScroll = window.screen.width;\r\n\r\nexport const AppButton = props => {\r\n return (\r\n \r\n \r\n {props.title}\r\n \r\n )\r\n};\r\n\r\nexport const ActionButton = props => {\r\n return (\r\n \r\n \r\n \r\n \r\n )\r\n};\r\n\r\nexport const HorizontalDivider = () => {\r\n return (\r\n
\r\n )\r\n};\r\n\r\nexport const VerticalDivider = () => {\r\n return (\r\n
\r\n )\r\n};\r\n\r\nexport const MenuItem = props => {\r\n return (\r\n \r\n )\r\n};\r\n\r\nexport const Loading = () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport const Error = ({ message }) => {\r\n return (\r\n \r\n \r\n {message}\r\n \r\n )\r\n}\r\n\r\n\r\nconst styles = {\r\n addButton: {\r\n menuIcon: {\r\n\r\n },\r\n label: {\r\n fontSize: 12\r\n }\r\n },\r\n processButton: {\r\n root: {\r\n height: 32,\r\n backgroundColor: COLOR.transparent,\r\n marginRight: 3\r\n },\r\n label: {\r\n fontSize: 12,\r\n color: COLOR.blue\r\n },\r\n icon: {\r\n fontSize: 16\r\n }\r\n },\r\n // checkQuyHoach sử dụng active nút vẽ quy hoạch \r\n iconButton: (active, checkQuyHoach, isSmall) => ({\r\n root: {\r\n minHeight: isSmall ? 50 : 32,\r\n //width: 48,\r\n borderRadius: 7,\r\n backgroundColor: COLOR.white,\r\n marginRight: 10,\r\n border: `1px solid #0078d4`,\r\n padding: 5\r\n },\r\n\r\n // rootHovered: {\r\n // backgroundColor: COLOR.darkBlue\r\n // },\r\n // rootPressed: {\r\n // backgroundColor: COLOR.darkBlue\r\n // },\r\n icon: {\r\n color: COLOR.white,\r\n fontSize: 16\r\n },\r\n label: {\r\n fontWeight: checkQuyHoach ? 'bold' : 'unset',\r\n color: '#0078d4'\r\n },\r\n iconHovered: {\r\n color: checkQuyHoach ? COLOR.blue : COLOR.white,\r\n },\r\n iconPressed: {\r\n opacity: .6\r\n }\r\n }),\r\n horizontalDivider: {\r\n height: 1,\r\n width: '100%',\r\n backgroundColor: COLOR.border\r\n },\r\n verticalDivider: {\r\n width: 1,\r\n height: '100%',\r\n backgroundColor: COLOR.border\r\n },\r\n menuItem: {\r\n root: {\r\n height: 36,\r\n backgroundColor: COLOR.transparent,\r\n width: '100%'\r\n },\r\n label: {\r\n textAlign: 'left',\r\n marginLeft: 10,\r\n fontSize: 12\r\n },\r\n icon: {\r\n textAlign: 'center',\r\n color: theme.palette.themePrimary\r\n },\r\n rootChecked: {\r\n backgroundColor: theme.palette.themeLight\r\n },\r\n labelChecked: {\r\n color: theme.palette.themePrimary,\r\n fontWeight: '600'\r\n },\r\n rootCheckedHovered: {\r\n backgroundColor: theme.palette.themeLight\r\n },\r\n iconChecked: {\r\n color: theme.palette.themePrimary\r\n }\r\n },\r\n loadingContainer: {\r\n root: {\r\n flex: 1,\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n padding: '10px 30px'\r\n }\r\n },\r\n loadingSpin: {\r\n root: {\r\n padding: '10px 20px',\r\n border: '1px solid #eee'\r\n }\r\n },\r\n errorIcon: {\r\n root: {\r\n fontSize: 80,\r\n color: NeutralColors.gray90\r\n }\r\n }\r\n};\r\n","import { store } from \"../Redux/Store\";\r\nimport Type from \"../Redux/Type\";\r\n\r\nexport const onOpenRightPanel = (route) => {\r\n let { routeContent } = store.getState().rightPanel;\r\n\r\n if (routeContent !== route) {\r\n\r\n // store.dispatch({type:Type.SET_STATE_RIGHT_PANEL,route:'isShowForPopup',value:false});\r\n store.dispatch({ type: Type.SET_STATE_RIGHT_PANEL, route: 'isShow', value: true });\r\n store.dispatch({ type: Type.SET_STATE_RIGHT_PANEL, route: 'className', value: 'modal-custom-on' });\r\n store.dispatch({ type: Type.SET_STATE_RIGHT_PANEL, route: 'routeContent', value: route });\r\n\r\n\r\n }\r\n}\r\n\r\nexport const onOpenPopup = (route) => {\r\n let { routeContent, isShowForPopup } = store.getState().popupPanel;\r\n if (routeContent !== route) {\r\n store.dispatch({ type: Type.SET_STATE_POPUP_PANEL, route: 'isShowForPopup', value: true });\r\n // store.dispatch({type:Type.SET_STATE_POPUP_PANEL,route:'isShow',value:false});\r\n store.dispatch({ type: Type.SET_STATE_POPUP_PANEL, route: 'className', value: 'modal-custom-on' });\r\n store.dispatch({ type: Type.SET_STATE_POPUP_PANEL, route: 'routeContent', value: route });\r\n }\r\n else {\r\n store.dispatch({ type: Type.SET_STATE_POPUP_PANEL, route: 'routeContent', value: null });\r\n store.dispatch({ type: Type.SET_STATE_POPUP_PANEL, route: 'isShowForPopup', value: !isShowForPopup });\r\n }\r\n}\r\n\r\nexport const onMinimizePanel = () => {\r\n\r\n // let {routeFrom,routeContent} = store.getState().rightPanel;\r\n store.dispatch({ type: Type.SET_STATE_RIGHT_PANEL, route: 'isMinimized', value: true });\r\n}\r\n\r\nexport const onMaximumPanel = () => {\r\n\r\n store.dispatch({ type: Type.SET_STATE_RIGHT_PANEL, route: 'isMinimized', value: false });\r\n}\r\nexport const onCloseRightPanel = () => {\r\n\r\n let { routeFrom, routeContent } = store.getState().rightPanel;\r\n store.dispatch({ type: Type.CLEAR_MAKER })\r\n if (routeFrom) {\r\n switch (routeFrom) {\r\n case \"result\": {\r\n store.dispatch({ type: Type.SET_STATE_RIGHT_PANEL, route: 'routeContent', value: 'result' });\r\n store.dispatch({ type: Type.SET_STATE_RIGHT_PANEL, route: 'routeFrom', value: 'search' });\r\n break;\r\n }\r\n case \"search\": {\r\n store.dispatch({ type: Type.SET_STATE_RIGHT_PANEL, route: 'routeContent', value: 'search' });\r\n store.dispatch({ type: Type.SET_STATE_RIGHT_PANEL, route: 'routeFrom', value: '' });\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n } else {\r\n if (routeContent === 'zone') {\r\n store.dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'listLabel', value: [] });\r\n store.dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'labelActive', value: [] });\r\n store.dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'geoList', value: [] });\r\n store.dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'showQuyHoach', value: false });\r\n store.dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'points', value: [] });\r\n }\r\n\r\n store.dispatch({ type: Type.SET_STATE_RIGHT_PANEL, route: 'className', value: 'modal-custom-off' });\r\n store.dispatch({ type: Type.SET_MAIN_MESSAGE, message: '' })\r\n setTimeout(() => {\r\n store.dispatch({ type: Type.SET_STATE_RIGHT_PANEL, route: 'routeFrom', value: '' });\r\n store.dispatch({ type: Type.SET_STATE_RIGHT_PANEL, route: 'isShow', value: false });\r\n store.dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'dataThuaDatPicked', value: {} });\r\n store.dispatch({ type: Type.SET_STATE_RIGHT_PANEL, route: 'routeContent', value: '' });\r\n }, 100)\r\n }\r\n}\r\n","import React from 'react';\r\nimport COLOR from \"../../Styles/Colors\";\r\nimport { TooltipHost, Persona, PersonaSize, Stack, Image, ImageFit } from '@fluentui/react';\r\nimport { FontSizes } from '@uifabric/fluent-theme/lib/fluent/FluentType';\r\nimport { AppButton } from \"../Accessary\";\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport Type from \"../../Redux/Type\";\r\nimport { onOpenRightPanel } from \"../../Containers/RightPanelAction\";\r\n\r\nconst HeaderBar = () => {\r\n const userInfo = useSelector(state => state.userInfo);\r\n const dispatch = useDispatch();\r\n const { isLoading, messageLoading } = useSelector(state => state.loadingState);\r\n const { showTool } = useSelector(state => state.drawingTool);\r\n const { routeContent } = useSelector(state => state.rightPanel);\r\n\r\n const onButtonPress = (route) => () => onOpenRightPanel(route)\r\n const onDrawingPress = () => {\r\n if (showTool) {\r\n dispatch({ type: Type.CLEAR_PATH_DRAWING });\r\n dispatch({ type: Type.SHOW_OFF_DRAWING });\r\n }\r\n else {\r\n dispatch({ type: Type.SHOW_ON_DRAWING });\r\n dispatch({ type: Type.START_DRAWING })\r\n }\r\n }\r\n\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n Cổng thông tin đất đai tỉnh Cà Mau\r\n \r\n \r\n
\r\n\r\n {isLoading === true ? messageLoading : null}\r\n
\r\n
\r\n {/* {userInfo ?\r\n \r\n : null\r\n }\r\n\r\n {appButton.map(item=>(\r\n \r\n ))} */}\r\n {/*
\r\n {userInfo ?\r\n \r\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 appButton = [\r\n { key: 'search', iconName: 'Search', tooltip: 'Tìm kiếm' },\r\n { key: 'layer', iconName: 'MapLayers', tooltip: 'Quy hoạch' }, //layer\r\n { key: 'satellite', iconName: 'Nav2DMapView', tooltip: 'Chế độ xem' },\r\n { key: 'location', iconName: 'List', tooltip: 'Chuyển vị trí' },\r\n // {key:'server',iconName:'ServerEnviroment',tooltip:'Chuyển Sever'},\r\n // {key:'help',iconName:'Help',tooltip:'Hướng dẫn'}\r\n];\r\n\r\n\r\nexport default HeaderBar;\r\n\r\nconst styles = {\r\n topBar: {\r\n backgroundColor: COLOR.blue,\r\n minHeight: 48\r\n },\r\n appName: {\r\n fontSize: FontSizes.size14,\r\n fontWeight: 600,\r\n color: COLOR.blue,\r\n marginLeft: 10\r\n },\r\n\r\n accountBtn: {\r\n height: 48,\r\n width: 48,\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n cursor: 'pointer'\r\n },\r\n title: {\r\n fontSize: 14,\r\n color: COLOR.white,\r\n paddingLeft: 10,\r\n fontWeight: 700,\r\n cursor: 'pointer'\r\n }\r\n};\r\n\r\n\r\n","export const labelQuyHoachChiTiet = [\r\n {key:'DDL',value:'Đất có danh lam thắng cảnh'},\r\n {key:'DHT',value:'Đất phát triển hạ tầng'},\r\n {key:'DKV',value:'Đất khu vui chơi, giải trí công cộng'},\r\n {key:'DTS',value:'Đất XD trụ sở tổ chức sự nghiệp'},\r\n {key:'KDT',value:'Khu đô thị, thương mại, dịch vụ'},\r\n {key:'MNC',value:'Đất có mặt nước chuyên dùng'},\r\n {key:'ODT',value:'Đất ở đô thị'},\r\n {key:'SKC',value:'Đất có CS sản xuất phi nông nghiệp'},\r\n {key:'TSC',value:'Đất xây dựng trụ sở cơ quan'}\r\n];\r\n\r\nexport const labelQuyHoachTongThe = [\r\n {key:'DDL',value:'Đất có danh lam thắng cảnh'},\r\n {key:'DHT',value:'Đất phát triển hạ tầng'},\r\n {key:'DKV',value:'Đất khu vui chơi, giải trí công cộng'},\r\n {key:'DTS',value:'Đất XD trụ sở tổ chức sự nghiệp'},\r\n {key:'KDT',value:'Khu đô thị, thương mại, dịch vụ'},\r\n {key:'MNC',value:'Đất có mặt nước chuyên dùng'},\r\n {key:'ODT',value:'Đất ở đô thị'},\r\n {key:'SKC',value:'Đất có CS sản xuất phi nông nghiệp'},\r\n {key:'TSC',value:'Đất xây dựng trụ sở cơ quan'}\r\n];\r\n\r\nexport default labelQuyHoachChiTiet\r\n","import LinkAPI, { onPostRequest, formatNumber } from './MainController';\r\nimport { store } from \"../Redux/Store\";\r\nimport { getQuyHoachColor, getUsedShapeColor } from \"../Styles/Colors\";\r\nimport Type from \"../Redux/Type\";\r\nimport { onMoveToMap, processPolygon, processResponseGeometry } from \"./MapView\";\r\nimport DataQuyHoachTTTC from '../Assets/quyhoachTTTC.json';\r\nimport { labelQuyHoachChiTiet } from \"../Assets/LabelQuyHoach\";\r\nimport { onOpenRightPanel } from \"./RightPanelAction\";\r\n\r\nexport const onLoadMenu = () => {\r\n let onSuccess = ({ statusCode, response }) => {\r\n if (statusCode === 200) {\r\n store.dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'menu', value: response })\r\n }\r\n }\r\n onPostRequest(LinkAPI.getMenuQuyHoach, onSuccess)\r\n}\r\n\r\nexport const onLoadQuyHoachPolygon = (keyType) => {\r\n store.dispatch({ type: Type.SET_MAIN_MESSAGE, message: null });\r\n if (store.getState()['quyHoach']['selected']['geoType'])\r\n onShowOffQuyHoachInfoPanel();\r\n\r\n store.dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'isLoading', value: true })\r\n let onSuccess = ({ statusCode, response }) => {\r\n if (statusCode === 200) {\r\n store.dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'showThuaDat', value: false });\r\n let label = [],\r\n labelObj = [],\r\n polygons = [],\r\n polyline = [],\r\n points = [],\r\n { coordinate } = store.getState()['quyHoach']['typeActive'];\r\n\r\n\r\n response.forEach(e => {\r\n let type = mapGeoType[e.geoType],\r\n item = {\r\n id: e.ID,\r\n fillColor: e.FillColor ? e.FillColor.replace('0.3', '1') : null,\r\n strokeColor: e.StokeColor,\r\n weightLine: e.WeightLine,\r\n geoType: type,\r\n label: e.kyhieu,\r\n icon: e.Icon,\r\n polygon: processPolygon(e.polygon, e.geoType),\r\n name: e.name,\r\n diadanh: e.DIADANH || null\r\n };\r\n if (item.polygon.length) {\r\n if (!label.includes(e.kyhieu)) {\r\n label = [...label, e.kyhieu]\r\n let nextLabel = {\r\n key: e.kyhieu,\r\n value: e.name,\r\n strokeColor: e.StokeColor\r\n };\r\n labelObj = [...labelObj, nextLabel]\r\n }\r\n\r\n switch (type) {\r\n case mapGeoType.POLYGON:\r\n polygons = [...polygons, item]\r\n break;\r\n case mapGeoType.LINESTRING: {\r\n let loop = item.polygon;\r\n loop.forEach((element, index) => {\r\n let nextItem = {\r\n ...item,\r\n polygon: element,\r\n id: item.id + index\r\n };\r\n polyline = [...polyline, nextItem]\r\n });\r\n break;\r\n }\r\n\r\n case mapGeoType.POINT: {\r\n let nextLabel = {\r\n ...item,\r\n polygon: item.polygon[0][0]\r\n };\r\n points = [...points, nextLabel]\r\n }\r\n break;\r\n default:\r\n break\r\n }\r\n }\r\n })\r\n\r\n store.dispatch({ type: Type.SHOW_KEY_ACTIVE, evt: \"\" });\r\n store.dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'listLabel', value: labelObj });\r\n store.dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'labelActive', value: label });\r\n store.dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'polygons', value: polygons });\r\n store.dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'polyline', value: polyline });\r\n store.dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'points', value: points });\r\n onMoveToMap(coordinate);\r\n onOpenRightPanel('zone');\r\n // Tắt form xem quy hoạch \r\n store.dispatch({ type: Type.SET_STATE_POPUP_PANEL, route: 'isShowForPopup', value: false });\r\n store.dispatch({ type: Type.SET_STATE_POPUP_PANEL, route: 'routeContent', value: null });\r\n } else\r\n store.dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'errorMessage', value: response });\r\n\r\n store.dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'isLoading', value: false })\r\n }\r\n\r\n onPostRequest(LinkAPI.getPolygonQuyHoach(keyType), onSuccess)\r\n}\r\n\r\nexport const onLoadQHChiTietTanChau = () => {\r\n let { coordinate } = store.getState()['quyHoach']['typeActive'],\r\n labelLayerQuyHoach = DataQuyHoachTTTC.map(e => e.MDSD),\r\n geoList = DataQuyHoachTTTC.map(e => ({\r\n label: e.MDSD,\r\n polygon: e.polygon,\r\n geoType: 'polygon',\r\n ...getQuyHoachColor(e.MDSD)\r\n })),\r\n labelList = labelQuyHoachChiTiet.map(e => ({\r\n key: e.key,\r\n value: e.value,\r\n ...getQuyHoachColor(e.key)\r\n }))\r\n labelList = labelList.sort((a, b) => sortListObject(a, b))\r\n store.dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'listLabel', value: labelList });\r\n store.dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'polygons', value: geoList });\r\n store.dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'labelActive', value: labelLayerQuyHoach });\r\n onMoveToMap(coordinate)\r\n}\r\n\r\nexport const onLoadStatistical = (payload, onSuccess) => {\r\n let onProcess = ({ statusCode, response }) => {\r\n if (statusCode === 200) {\r\n if (response.length) {\r\n response = response.filter(e => e.DTKhaoSat);\r\n response = response.map((e) => ({\r\n ...e,\r\n tile: Math.round((e.DTKhaoSat * 100 / e.DIENTICH))\r\n }))\r\n response = response.sort((a, b) => b.tile - a.tile)\r\n response = response.map((e, i) => ({\r\n ...e,\r\n key: i + 1\r\n }))\r\n let areaTotal = formatNumber(response[0]['TongDTKhaoSat']),\r\n fieldTotal = formatNumber(response.length),\r\n keyMDSD = [],\r\n areaMDSD = [],\r\n nameMDSD = []\r\n response.forEach(e => {\r\n let index = keyMDSD.indexOf(e.MDSD)\r\n if (index === -1) {\r\n keyMDSD = [...keyMDSD, e.MDSD]\r\n nameMDSD = [...nameMDSD, e.Ten]\r\n areaMDSD = [...areaMDSD, e.DTKhaoSat]\r\n } else {\r\n areaMDSD[index] = areaMDSD[index] + e.DTKhaoSat\r\n }\r\n });\r\n let mdsdTotal = keyMDSD.map((e, i) => ({\r\n label: e,\r\n name: nameMDSD[i],\r\n area: areaMDSD[i]\r\n }))\r\n mdsdTotal = mdsdTotal.sort((a, b) => b.area - a.area)\r\n mdsdTotal = mdsdTotal.map((e, i) => ({ ...e, key: i + 1, area: `${formatNumber(e.area)} m2` }))\r\n\r\n response = response.map(e => ({\r\n ...e,\r\n DTKhaoSat: `${formatNumber(e.DTKhaoSat)} m2`,\r\n tile: `${e.tile} %`\r\n }))\r\n response = {\r\n areaTotal,\r\n fieldTotal,\r\n mdsdTotal,\r\n detail: response\r\n }\r\n\r\n } else {\r\n response = {\r\n areaTotal: 0,\r\n fieldTotal: 0,\r\n mdsdTotal: [],\r\n detail: []\r\n }\r\n }\r\n }\r\n onSuccess({ statusCode, response })\r\n }\r\n onPostRequest(LinkAPI.getKhaoSatQuyHoach, onProcess, payload)\r\n}\r\n\r\nexport function getQuyHoachInfo({ SoTo, SoThua, MaDvhc, TenChu }) {\r\n\r\n if (MaDvhc && SoThua && SoTo) {\r\n let quyHoachList = store.getState()['quyHoachInfo'];\r\n\r\n quyHoachList = quyHoachList.filter(e => (e.SoTo === SoTo\r\n && e.SoThua === SoThua\r\n && e.MaDvhc === MaDvhc));\r\n\r\n if (!quyHoachList.length) {\r\n let onProcess = ({ statusCode, response }) => {\r\n if (statusCode === 200) {\r\n response = response.map(e => ({\r\n quyhoach: e.quyhoach,\r\n color: getUsedShapeColor(e.MucDichSuDung || e.MDSD),\r\n maquyhoach: e.key\r\n }));\r\n response = {\r\n SoTo,\r\n SoThua,\r\n MaDvhc,\r\n data: response\r\n };\r\n store.dispatch({ type: Type.SET_QUY_HOACH_ON_THUA_DAT, add: response })\r\n }\r\n };\r\n onPostRequest(LinkAPI.getQuyHoachInfo, onProcess, { SoTo, SoThua, MaDvhc, TenChu })\r\n }\r\n }\r\n\r\n\r\n}\r\n\r\nexport const onShowQuyHoachInfoPanel = () => {\r\n // store.dispatch({type: Type.SET_STATE_RIGHT_PANEL, route: 'className', value: 'modal-custom-off'});\r\n // setTimeout(() => {\r\n // store.dispatch({type: Type.SET_STATE_RIGHT_PANEL, route: 'isShow', value: false});\r\n // store.dispatch({type: Type.SET_STATE_RIGHT_PANEL, route: 'routeContent', value: ''});\r\n // }, 100);\r\n\r\n let panel = document.querySelector('.qh-panel-info-visible');\r\n panel.style.setProperty('animation-name', 'on-show-on-from-left');\r\n panel.style.setProperty('-webkit-animation-name', 'on-show-on-from-left');\r\n panel.style.setProperty('opacity', 1);\r\n panel.style.setProperty('visibility', 'visible');\r\n}\r\n\r\nexport const onShowOffQuyHoachInfoPanel = () => {\r\n let panel = document.querySelector('.qh-panel-info-visible');\r\n panel.style.setProperty('animation-name', 'on-show-off-from-left');\r\n panel.style.setProperty('-webkit-animation-name', 'on-show-off-from-left');\r\n panel.style.setProperty('opacity', 0);\r\n panel.style.setProperty('visibility', 'hidden');\r\n store.dispatch({ type: Type.SELECTED_QUYHOACH });\r\n}\r\n\r\n\r\nexport const mapGeoType = {\r\n 'LINESTRING': 'polyline',\r\n 'MULTILINESTRING': 'polyline',\r\n 'POLYGON': 'polygon',\r\n \"MULTIPOLYGON\": 'polygon',\r\n 'POINT': 'point'\r\n}\r\n\r\nconst sortListObject = (a, b) => {\r\n let nameA = a.key.toUpperCase(),\r\n nameB = b.key.toUpperCase();\r\n if (nameA < nameB) {\r\n return -1;\r\n }\r\n if (nameA > nameB) {\r\n return 1;\r\n }\r\n return 0;\r\n}\r\n","import setup from './setup'\r\nconst conPi = Math.PI;\r\n\r\n\r\n/*-------\r\n--- Tọa độ Google map sang VN 2000\r\n---------*/\r\nexport function convertLatLonToXY(coordinate) { \r\n \r\n // let coordinate = {\r\n // latitude: 11.550329,\r\n // longitude: 106.172816,\r\n // };\r\n coordinate.latitude = coordinate.latitude + setup.dXS;\r\n coordinate.longitude = coordinate.longitude + setup.dYS;\r\n coordinate.latitude = conPi * coordinate.latitude / 180;\r\n coordinate.longitude = conPi * coordinate.longitude / 180;\r\n\r\n let KTT = setup.ktt * conPi / 180,\r\n f = 1 / 298.257223563,\r\n a = 6378137.0,\r\n b = (1 - f) * a,\r\n K = 0.9999,\r\n m_a = a * K,\r\n m_b = b * K,\r\n m_e2 = ((m_a * m_a) - (m_b * m_b)) / (m_a * m_a),\r\n m_N = (m_a - m_b) / (m_a + m_b),\r\n m_pow2N = m_N * m_N,\r\n m_pow3N = m_N * m_pow2N,\r\n sinphi = Math.sin(coordinate.latitude),\r\n cosphi = Math.cos(coordinate.latitude),\r\n tanphi = Math.tan(coordinate.latitude),\r\n pow2sinphi = sinphi * sinphi,\r\n pow2cosphi = cosphi * cosphi,\r\n pow3cosphi = pow2cosphi * cosphi,\r\n pow5cosphi = pow3cosphi * pow2cosphi,\r\n pow2tanphi = tanphi * tanphi,\r\n pow4tanphi = pow2tanphi * pow2tanphi,\r\n v = m_a / Math.sqrt(1.0 - m_e2 * (pow2sinphi)),\r\n rho = (v * (1.0 - m_e2)) / (1.0 - m_e2 * pow2sinphi),\r\n n2 = (v / rho) - 1.0,\r\n phi1 = 0,\r\n phi = coordinate.latitude,\r\n M = m_b * (((1.0 + m_N + ((m_pow2N) * 5.0 / 4.0) + ((m_pow3N) * 5.0 / 4.0)) * (phi - phi1)) - ((3.0 * m_N + 3.0 * (m_pow2N) + (m_pow3N) * 21.0 / 8.0) * Math.sin(phi - phi1) * Math.cos(phi + phi1)) + ((((m_pow2N) * 15.0 / 8.0) + ((m_pow3N) * 15.0 / 8.0)) * (Math.sin(2.0 * (phi - phi1))) * (Math.cos(2.0 * (phi + phi1)))) - (((m_pow3N) * 35.0 / 24.0) * (Math.sin(3.0 * (phi - phi1))) * (Math.cos(3.0 * (phi + phi1))))),\r\n P = (coordinate.longitude - KTT),\r\n\r\n //toi uu hoa\r\n pow2P = P * P,\r\n pow3P = pow2P * P,\r\n pow4P = pow2P * pow2P,\r\n pow5P = pow4P * P,\r\n pow6P = pow2P * pow4P,\r\n\r\n //Tinh chuyen gia tri X\r\n DolechX = 0,\r\n II = (v / 2.0) * sinphi * cosphi,\r\n III = (v / 24.0) * sinphi * (pow3cosphi) * (5.0 - (pow2tanphi) + 9.0 * n2),\r\n IIIA = (v / 720.0) * sinphi * (pow5cosphi) * (61.0 - 58.0 * (pow2tanphi) + (pow4tanphi)),\r\n X = DolechX + M + ((pow2P) * II) + ((pow4P) * III) + ((pow6P) * IIIA),\r\n\r\n // Tinh chuyen gia tri Y\r\n DolechY = 500000,\r\n IV = v * cosphi,\r\n v1 = (v / 6.0) * (pow3cosphi) * ((v / rho) - (pow2tanphi)),\r\n VI = (v1 / 120.0) * (pow5cosphi) * (5.0 - 18.0 * (pow2tanphi) + (pow4tanphi) + 14.0 * n2 - 58.0 * (pow2tanphi) * n2),\r\n Y = DolechY + (P * IV) + ((pow3P) * v1) + ((pow5P) * VI);\r\n return {x: X, y: Y};\r\n}\r\n\r\n\r\n/*-------\r\n--- Tọa độ VN 2000 Sang GG Map\r\n---------*/\r\nexport function convertXYToLatLon(pointXY, use_lng_lat) {\r\n //use_lng_lat == true => {lat: , lng: } else [lat,lng]\r\n let m_dSemiMajorAxis = 6378137.0,\r\n fff = 1 / 298.257223563,\r\n m_dSemiMinorAxis = (1 - fff) * m_dSemiMajorAxis,\r\n m_dLatitudeOrigin = 0,\r\n m_dLongitudeOrigin = setup.ktt,\r\n m_dFalseNorthing = 0,\r\n m_dFalseEasting = 500000,\r\n m_dScaleFactorAtOrigin = 0.9999,\r\n m_a = m_dSemiMajorAxis * m_dScaleFactorAtOrigin,\r\n m_b = m_dSemiMinorAxis * m_dScaleFactorAtOrigin,\r\n m_e2 = ((m_a * m_a) - (m_b * m_b)) / (m_a * m_a),\r\n m_N = (m_a - m_b) / (m_a + m_b),\r\n m_pow2N = m_N * m_N,\r\n m_pow3N = m_N * m_pow2N,\r\n northing = pointXY.x,\r\n easting = pointXY.y,\r\n PI = Math.PI,\r\n phiDash = ((northing - m_dFalseNorthing) / m_a) + (m_dLatitudeOrigin * PI / 180),\r\n phi = phiDash,\r\n phi1 = (m_dLatitudeOrigin * PI / 180),\r\n M = m_b * (((1 + m_N + (m_pow2N * 5 / 4) + (m_pow3N * 5 / 4)) * (phi - phi1)) - (\r\n (3 * m_N + 3 * m_pow2N + m_pow3N * 21 / 8) * Math.sin(phi - phi1) * Math.cos(phi + phi1)) + (\r\n ((m_pow2N * 15 / 8) + (m_pow3N * 15 / 8)) * (Math.sin(2 * (phi - phi1))) * (\r\n Math.cos(2 * (phi + phi1)))) - (\r\n (m_pow3N * 35 / 24) * (Math.sin(3 * (phi - phi1))) * (Math.cos(3 * (phi + phi1)))));\r\n\r\n while ((northing - m_dFalseNorthing - M) > 0.001) {\r\n phi = phi + ((northing - m_dFalseNorthing - M) / m_a);\r\n M = m_b * (((1 + m_N + (m_pow2N * 5 / 4) + (m_pow3N * 5 / 4)) * (phi - phi1)) - (\r\n (3 * m_N + 3 * m_pow2N + m_pow3N * 21 / 8) * Math.sin(phi - phi1) * Math.cos(phi + phi1)) + (\r\n ((m_pow2N * 15 / 8) + (m_pow3N * 15 / 8)) * (Math.sin(2 * (phi - phi1))) * (\r\n Math.cos(2 * (phi + phi1)))) - (\r\n (m_pow3N * 35 / 24) * (Math.sin(3 * (phi - phi1))) * (Math.cos(3 * (phi + phi1)))));\r\n }\r\n let v = m_a / Math.sqrt(1 - m_e2 * (Math.pow((Math.sin(phi)), 2))),\r\n rho = (v * (1 - m_e2)) / (1 - m_e2 * (Math.pow(Math.sin(phi), 2))),\r\n n2 = (v / rho) - 1,\r\n VII = (Math.tan(phi)) / (2 * rho * v),\r\n VIII = ((Math.tan(phi)) / (24 * rho * (Math.pow(v, 3)))) * (\r\n 5 + (3 * (Math.pow(Math.tan(phi), 2))) + n2 - (9 * n2 * (Math.pow(Math.tan(phi), 2)))),\r\n IX = (Math.tan(phi) / (720 * rho * (Math.pow(v, 5)))) * (\r\n 61 + (90 * (Math.pow(Math.tan(phi), 2))) + (45 * (Math.pow(Math.tan(phi), 4)))),\r\n Et = easting - m_dFalseEasting,\r\n latitude = (phi - ((Math.pow(Et, 2)) * VII) + ((Math.pow(Et, 4)) * VIII) - ((Math.pow(Et, 6)) * IX)) * 180 / PI,\r\n X = ((1 / Math.cos(phi)) / v),\r\n XI = ((1 / Math.cos(phi)) / (6 * (Math.pow(v, 3)))) * ((v / rho) + 2 * (Math.pow(Math.tan(phi), 2))),\r\n XII = ((1 / Math.cos(phi)) / (120 * (Math.pow(v, 5)))) * (\r\n 5 + (28 * (Math.pow(Math.tan(phi), 2))) + (24 * (Math.pow(Math.tan(phi), 4)))),\r\n XIIA = ((1 / Math.cos(phi)) / (5040 * (Math.pow(v, 7)))) * (\r\n 61 + (662 * (Math.pow(Math.tan(phi), 2))) + (1320 * (Math.pow(Math.tan(phi), 4))) + (\r\n 720 * (Math.pow(Math.tan(phi), 6)))),\r\n longitude = m_dLongitudeOrigin + ((Et * X) - ((Math.pow(Et, 3)) * XI) + ((Math.pow(Et, 5)) * XII) - (\r\n (Math.pow(Et, 7)) * XIIA)) * 180 / PI;\r\n\r\n latitude = latitude - setup.dXS;\r\n longitude = longitude - setup.dYS\r\n return use_lng_lat === true ? {'lat': latitude, 'lng': longitude} : [longitude,latitude ];\r\n}\r\n\r\n\r\nexport function getDistance(p1, p2) {\r\n let p = 0.017453292519943295; // Math.PI / 180\r\n let c = Math.cos;\r\n let a = 0.5 - c((p1.latitude - p2.latitude) * p) / 2 + c(p2.latitude * p) * c((p1.latitude) * p) * (1 - c(((p1.longitude - p2.longitude) * p))) / 2;\r\n // 2 * R; R = 6371 km\r\n return (12742 * Math.asin(Math.sqrt(a)) * 1000).toFixed(1); //meter\r\n}\r\n\r\nexport function checkInside(point, polygon, isuseLongLat) {\r\n\r\n let x = point.lat, y = point.lng;\r\n\r\n let inside = false;\r\n let i, j;\r\n for (i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\r\n let xi = isuseLongLat=== true ? polygon[i].lat : polygon[i][1] , yi = isuseLongLat === true ? polygon[i].lng : polygon[i][0];\r\n let xj = isuseLongLat=== true ? polygon[j].lat : polygon[j][1] , yj = isuseLongLat === true ? polygon[j].lng : polygon[j][0];\r\n\r\n let 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 return inside;\r\n}\r\n\r\nexport function convertXYPolygon(data) {\r\n let widthLayout = 290,\r\n xArray = data.map(e => e.lng),\r\n yArray = data.map(e => e.lat),\r\n xMin = Math.min(...xArray),\r\n xMax = Math.max(...xArray),\r\n yMin = Math.min(...yArray),\r\n yMax = Math.max(...yArray),\r\n dx = xMax - xMin,\r\n dy = yMax - yMin,\r\n len = data.length,\r\n dataPoint,\r\n dataText = [],\r\n svgHeight = (widthLayout / (dx / dy)) + 20,\r\n distance = [];\r\n\r\n data = data.map((e, i) => {\r\n if (i !== len - 1) {\r\n let pointStart = {\r\n latitude: e.lat,\r\n longitude: e.lng\r\n },\r\n pointEnd = {\r\n latitude: data[i + 1].lat,\r\n longitude: data[i + 1].lng\r\n };\r\n distance = [...distance,getDistance(pointStart,pointEnd)]\r\n }\r\n return {\r\n x: ((e.lng - xMin) * widthLayout / dx) + 10,\r\n y: ((yMax - e.lat) * widthLayout / dx) + 10,\r\n }\r\n });\r\n\r\n dataPoint = data;\r\n\r\n dataPoint.map((e, i) => {\r\n if (i !== len - 1) {\r\n let item = {\r\n from: e,\r\n to: dataPoint[i + 1]\r\n };\r\n dataText = [...dataText, item]\r\n }\r\n return e\r\n });\r\n\r\n let flagDown = true;\r\n\r\n dataText = dataText.map((e,i) => {\r\n let from = e.from,\r\n to = e.to;\r\n if (to.x < from.x) {\r\n from = e.to;\r\n to = e.from;\r\n }\r\n let angle = Math.atan((to.y - from.y) / (to.x - from.x)),\r\n middlePoint = getMiddlePoint(from, to);\r\n angle = angle * 180 / Math.PI;\r\n let item = {\r\n x: middlePoint.x - 8,\r\n y: middlePoint.y + (flagDown ? -5 : 10),\r\n rotate: `rotate(${angle} ${middlePoint.x},${middlePoint.y})`,\r\n distance: distance[i]\r\n };\r\n\r\n flagDown = !flagDown;\r\n\r\n return item;\r\n });\r\n\r\n data = data.map(e => `${e.x},${e.y}`);\r\n data = data.join(' ');\r\n\r\n return {\r\n polyline: data,\r\n circle: dataPoint,\r\n svgHeight,\r\n dataText\r\n };\r\n}\r\n\r\nfunction getMiddlePoint(pointStart, pointEnd) {\r\n return {\r\n x: (pointStart.x < pointEnd.x ? pointStart.x : pointEnd.x) + (Math.abs(pointStart.x - pointEnd.x) / 2),\r\n y: (pointStart.y < pointEnd.y ? pointStart.y : pointEnd.y) + (Math.abs(pointStart.y - pointEnd.y) / 2),\r\n }\r\n}\r\n\r\nexport function calcPolygonArea(vertices) {\r\n let total = 0;\r\n\r\n for (let i = 0, l = vertices.length; i < l; i++) {\r\n let addX = vertices[i].lat;\r\n let addY = vertices[i === vertices.length - 1 ? 0 : i + 1].y;\r\n let subX = vertices[i === vertices.length - 1 ? 0 : i + 1].x;\r\n let subY = vertices[i].lng;\r\n\r\n total += (addX * addY * 0.5);\r\n total -= (subX * subY * 0.5);\r\n }\r\n\r\n return Math.abs(total);\r\n}\r\n\r\n\r\n","import LinkAPI, { onGetRequestEnterPriseBody, onPostRequest } from './MainController';\r\nimport { getShapeColor, getUsedShapeColor } from '../Styles/Colors';\r\nimport setup from './setup';\r\nimport { getQuyHoachInfo } from \"./QuyHoach\";\r\nimport { store } from \"../Redux/Store\";\r\nimport Type from \"../Redux/Type\";\r\nimport { onOpenRightPanel } from \"./RightPanelAction\";\r\nimport { convertLatLonToXY } from './Converter';\r\n\r\n\r\nexport const ThongTinThuaDatDefault = {\r\n \"MaDVHC\": null,\r\n \"MaThuaDat\": null,\r\n \"SOTO\": null,\r\n \"SOTHUA\": null,\r\n \"KhuVuc\": null,\r\n \"DiaChiThuaDat\": null,\r\n \"DienTich\": null,\r\n \"GhiChu_ThuaDat\": null,\r\n \"CongKhai\": null,\r\n \"GhiChu_dkqsdd\": null,\r\n \"MaHinhThucSD\": null,\r\n \"TrangThaiThuaDat\": null,\r\n \"MaGCN\": null,\r\n \"SoSerial\": null,\r\n \"SoVaoSo\": null,\r\n \"DaCapGCN\": null,\r\n \"NguonGocSDD\": null,\r\n \"MucDichSDD\": null,\r\n \"Ten1\": null,\r\n \"GioiTinh1\": null,\r\n \"NgaySinh1\": null,\r\n \"NamSinh1\": null,\r\n \"SoDinhDanh1\": null,\r\n \"DiaChi1\": null,\r\n \"Ten2\": null,\r\n \"GioiTinh2\": null,\r\n \"NgaySinh2\": null,\r\n \"NamSinh2\": null,\r\n \"SoDinhDanh2\": null,\r\n \"DiaChi2\": null,\r\n \"NgayCapSoDo\": null\r\n}\r\n\r\nexport function getListHuyen(onSuccess) {\r\n let onProcess = ({ statusCode, response }) => {\r\n if (statusCode === 200) {\r\n response = response.map((e) => ({\r\n key: e.MaHuyen,\r\n // disabled: e.MaHuyen !== setup.huyenId,\r\n text: e.Ten,\r\n searchID: e.MaDVHC,\r\n }));\r\n statusCode = 200;\r\n }\r\n onSuccess(statusCode, response);\r\n };\r\n onPostRequest(LinkAPI.getTreeDVHC(setup.tinhId, 1), onProcess);\r\n}\r\n\r\nexport function getListXa(huyenId, onSuccess) {\r\n let onProcess = ({ statusCode, response }) => {\r\n if (statusCode === 200) {\r\n response = response.map((e) => ({\r\n key: e.MaXa,\r\n text: e.Ten,\r\n searchID: e.MaDVHC.toString(),\r\n }));\r\n let allItem = [setup.allDistrict];\r\n response = allItem.concat(response);\r\n }\r\n onSuccess(statusCode, response);\r\n };\r\n onPostRequest(LinkAPI.getTreeDVHC(huyenId, 2), onProcess);\r\n}\r\n\r\nexport function getSearchList(route, { SoTo, SoThua, MaDvhc, TenChu, Point, Position }, onSuccess) {\r\n\r\n let onProcess = ({ statusCode, response }) => {\r\n if (statusCode === 200) {\r\n store.dispatch({ type: Type.SHOW_KEY_ACTIVE, evt: \"\" });\r\n response = response.map((e) => ({\r\n ...e,\r\n SOTHUA: e.SOTHUA.trim(),\r\n MucDichSDD: getListMDSD(e.MucDichSDD),\r\n MADVHC: e.MaDVHC ? e.MaDVHC.toString() : '',\r\n ...getShapeColor(e.GhiChu_dkqsdd),\r\n }));\r\n onSuccess(200, response);\r\n // getListGiaDat({ SoTo, SoThua, MaDvhc, TenChu });\r\n } else {\r\n onSuccess(statusCode, []);\r\n }\r\n },\r\n linkCallAPI =\r\n route === 'byName' ? LinkAPI.searchByName : route === 'byToThua' ? LinkAPI.searchByToThua : LinkAPI.searchByLatLng;\r\n console.log({ SoTo, SoThua, MaDvhc, TenChu })\r\n onPostRequest(linkCallAPI, onProcess, Point !== undefined && Position != undefined ?\r\n { SoTo, SoThua, MaDvhc, TenChu, Point, ...Position } : { SoTo, SoThua, MaDvhc, TenChu });\r\n getQuyHoachInfo({ SoTo, SoThua, MaDvhc, TenChu });\r\n\r\n}\r\n\r\n\r\nexport function getListGiaDat({ SoTo, SoThua, MaDvhc, TenChu }) {\r\n if (MaDvhc && SoThua && SoTo) {\r\n let onProcess = ({ statusCode, response }) => {\r\n if (statusCode === 200) {\r\n if (response[0] && response[0].BangGiaDatId) {\r\n response = response.map((e) => ({\r\n GiaTri: e.GiaTri,\r\n TenDuong: e.TENDUONG,\r\n TenDoanDuong: e.TENDOANDUONG,\r\n TenViTri: e.TenViTri,\r\n KhuVuc: e.TenKhuVuc,\r\n MaLoaiDat: e.MaLoaiDat\r\n }));\r\n } else {\r\n response = null;\r\n }\r\n store.dispatch({ type: Type.SET_STATE_GIA_DAT, route: 'giadat', value: response });\r\n }\r\n };\r\n onPostRequest(LinkAPI.getGiaDat, onProcess, { SoTo, SoThua, MaDvhc, TenChu })\r\n }\r\n\r\n}\r\n\r\nexport const getInfoByThuaDat = ({ SoTo, SoThua, MaDvhc, TenChu }, dataDefault) => {\r\n store.dispatch({ type: Type.SET_MAIN_MESSAGE, message: null });\r\n let onSuccess = (statusCode, response) => {\r\n if (statusCode === 200 && response.length) {\r\n response = response[0];\r\n\r\n onOpenRightPanel('info');\r\n store.dispatch({ type: Type.SET_STATE_RIGHT_PANEL, route: 'routeFrom', value: '' })\r\n store.dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'dataThuaDatPicked', value: response });\r\n } else {\r\n // store.dispatch({ type: Type.SET_MAIN_MESSAGE, message: 'Không tìm thấy thông tin thửa đất' });\r\n if (dataDefault) {\r\n store.dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'dataThuaDatPicked', value: dataDefault });\r\n }\r\n onOpenRightPanel('info');\r\n // onCloseRightPanel()\r\n }\r\n };\r\n getSearchList('byToThua', { SoTo, SoThua, MaDvhc, TenChu }, onSuccess)\r\n}\r\n\r\n\r\n\r\nfunction getListMDSD(strMDSD) {\r\n let result = [];\r\n if (strMDSD) {\r\n if (strMDSD[strMDSD.length - 1] === \"|\")\r\n strMDSD = strMDSD.slice(0, -1);\r\n strMDSD = strMDSD.split('|');\r\n if (strMDSD.length) {\r\n strMDSD = strMDSD.filter(e => !!e);\r\n strMDSD = strMDSD.filter(e => e.trim());\r\n strMDSD = strMDSD.filter(e => !!e);\r\n strMDSD = strMDSD.filter(e => e.indexOf('-') !== -1);\r\n result = formatListMDSD(strMDSD);\r\n }\r\n }\r\n return result\r\n}\r\n\r\nfunction formatListMDSD(listMDSD) {\r\n if (listMDSD.length) {\r\n listMDSD = listMDSD.map(e => {\r\n let type = e.split('-')[0].trim();\r\n type = getUsedShapeColor(type);\r\n return {\r\n name: e,\r\n color: type\r\n }\r\n });\r\n return listMDSD\r\n }\r\n return []\r\n}\r\n\r\n\r\n\r\n\r\n//EnterPrise\r\n\r\n\r\nexport function getSearchListEnter(route, { SoTo, SoThua, MaDvhc, TenChu }, onSuccess) {\r\n if (route === 'byName') {\r\n let onProcess = ({ statusCode, response }) => {\r\n if (statusCode === 200) {\r\n if (response.count) {\r\n getThuaByName(response, onSuccess)\r\n } else {\r\n onSuccess(200, []);\r\n }\r\n } else if (statusCode === 204) {\r\n onSuccess(200, []);\r\n\r\n } else {\r\n onSuccess(statusCode, 'Đã có lỗi xãy ra vui lòng thử lại sau !');\r\n }\r\n }\r\n onGetRequestEnterPriseBody(LinkAPI.searchByNameEnter(TenChu, MaDvhc), onProcess)\r\n } else {\r\n let onProcess = ({ statusCode, response }) => {\r\n if (statusCode === 200) {\r\n getThuaByToThu(SoThua, response.idtobando, onSuccess);\r\n } else if (statusCode === 204) {\r\n onSuccess(200, []);\r\n\r\n } else {\r\n onSuccess(statusCode, 'Đã có lỗi xãy ra vui lòng thử lại sau !');\r\n }\r\n }\r\n onGetRequestEnterPriseBody(LinkAPI.searchSoToDVHC(SoTo, MaDvhc), onProcess)\r\n }\r\n}\r\n\r\nexport function getThuaByToThu(SoThua, idBanDo, onSuccess) {\r\n if (SoThua && idBanDo) {\r\n let onProcessThua = ({ statusCode, response }) => {\r\n if (statusCode === 200) {\r\n if (response.items[0]) {\r\n const arr = [];\r\n response.items = JSON.parse(unescape(response.items));\r\n response.items.forEach(e => {\r\n const nguoiLienQuan = JSON.parse(unescape(response.items[0].Nguoilienquan));\r\n // console.log('yyyy: ', response.items[0])\r\n const Dangkymdng = JSON.parse(unescape(response.items[0].Dangkymdng));\r\n let nguonGocSDD = '', mucDichSDD = '';\r\n Dangkymdng.forEach(e => {\r\n nguonGocSDD = nguonGocSDD + (e.Nguongoc + ' - ' + e.Tennguongoc) + '| ';\r\n mucDichSDD = mucDichSDD + (e.Loaidat + ' - ' + e.Tendaydu + ': ' + e.Dientich + ' m²') + '|';\r\n });\r\n arr.push({\r\n ...e,\r\n 'MaDVHC': e.Iddvhc,\r\n 'MaThuaDat': e.Idthuadat,\r\n 'SOTO': e.Soto.trim(),\r\n 'SOTHUA': e.Sothututhua,\r\n 'KhuVuc': e.Khuvuc,\r\n 'DiaChiThuaDat': e.Diachithua + ', ' + e.Tendvhc + ', ' + e.Tenhuyen + ', ' + e.Tentinh,\r\n 'DienTich': e.Dientich,\r\n \"CongKhai\": null,\r\n 'MaHinhThucSD': e.Hinhthucsd,\r\n 'TrangThaiThuaDat': e.Tentrangthai,\r\n 'SoVaoSo': e.Sovaoso,\r\n 'NguonGocSDD': nguonGocSDD,\r\n 'MucDichSDD': getListMDSD(mucDichSDD),\r\n 'Ten1': e.Hoten,\r\n 'GioiTinh1': !e.Gioitinh,\r\n 'NgaySinh1': null,\r\n 'NamSinh1': e.Ngaysinh,\r\n 'SoDinhDanh1': e.Sodinhdanh,\r\n 'DiaChi1': e.Diachi,\r\n 'Ten2': nguoiLienQuan[0] ? nguoiLienQuan[0].Hoten : null,\r\n 'GioiTinh2': nguoiLienQuan[0] ? !nguoiLienQuan[0].Gioitinh : null,\r\n 'NgaySinh2': null,\r\n 'NamSinh2': nguoiLienQuan[0] ? nguoiLienQuan[0].Ngaysinh : null,\r\n 'SoDinhDanh2': nguoiLienQuan[0] ? nguoiLienQuan[0].Sodinhdanh : null,\r\n 'DiaChi2': nguoiLienQuan[0] ? nguoiLienQuan[0].Diachi : null,\r\n 'idBanDo': idBanDo\r\n });\r\n });\r\n onSuccess(200, arr);\r\n } else {\r\n onSuccess(200, []);\r\n }\r\n } else {\r\n onSuccess(statusCode, 'Đã có lỗi xãy ra vui lòng thử lại sau !');\r\n }\r\n };\r\n onGetRequestEnterPriseBody(LinkAPI.searchSoThuaDVHC(SoThua, idBanDo), onProcessThua)\r\n }\r\n}\r\n\r\nexport function getThuaByName(response, onSuccess) {\r\n\r\n if (response.items[0]) {\r\n const arr = [];\r\n response.items = JSON.parse(unescape(response.items));\r\n response.items.forEach(e => {\r\n const nguoiLienQuan = JSON.parse(unescape(response.items[0].Nguoilienquan));\r\n const Dangkymdng = JSON.parse(unescape(response.items[0].Dangkymdng));\r\n let nguonGocSDD = '', mucDichSDD = '';\r\n Dangkymdng.forEach(e => {\r\n nguonGocSDD = nguonGocSDD + (e.Nguongoc + ' - ' + e.Tennguongoc) + '| ';\r\n mucDichSDD = mucDichSDD + (e.Loaidat + ' - ' + e.Tendaydu + ': ' + e.Dientich + ' m²') + '|';\r\n });\r\n arr.push({\r\n ...e,\r\n 'MaDVHC': e.Iddvhc,\r\n 'MaThuaDat': e.Idthuadat,\r\n 'SOTO': e.Soto.trim(),\r\n 'SOTHUA': e.Sothututhua,\r\n 'KhuVuc': e.Khuvuc,\r\n 'DiaChiThuaDat': e.Diachithua + ', ' + e.Tendvhc + ', ' + e.Tenhuyen + ', ' + e.Tentinh,\r\n 'DienTich': e.Dientich,\r\n \"CongKhai\": null,\r\n 'MaHinhThucSD': e.Hinhthucsd,\r\n 'TrangThaiThuaDat': e.Tentrangthai,\r\n 'SoVaoSo': e.Sovaoso,\r\n 'NguonGocSDD': nguonGocSDD,\r\n 'MucDichSDD': getListMDSD(mucDichSDD),\r\n 'Ten1': e.Hoten,\r\n 'GioiTinh1': !e.Gioitinh,\r\n 'NgaySinh1': null,\r\n 'NamSinh1': e.Ngaysinh,\r\n 'SoDinhDanh1': e.Sodinhdanh,\r\n 'DiaChi1': e.Diachi,\r\n 'Ten2': nguoiLienQuan[0] ? nguoiLienQuan[0].Hoten : null,\r\n 'GioiTinh2': nguoiLienQuan[0] ? !nguoiLienQuan[0].Gioitinh : null,\r\n 'NgaySinh2': null,\r\n 'NamSinh2': nguoiLienQuan[0] ? nguoiLienQuan[0].Ngaysinh : null,\r\n 'SoDinhDanh2': nguoiLienQuan[0] ? nguoiLienQuan[0].Sodinhdanh : null,\r\n 'DiaChi2': nguoiLienQuan[0] ? nguoiLienQuan[0].Diachi : null,\r\n });\r\n });\r\n onSuccess(200, arr);\r\n } else {\r\n onSuccess(200, []);\r\n }\r\n}","import Axios from 'axios';\r\nimport CryptoJS from 'crypto-js';\r\nimport Type from \"../Redux/Type\";\r\nimport { getListXa } from './Search';\r\nimport TNH_SETUP from './setup';\r\nimport setup from \"./setup\";\r\nimport { store } from '../Redux/Store';\r\nconst apiLink = setup.apiDebug\r\nconst apiLogin = 'https://ilis-sso.vnpt.vn/'\r\nconst apiLinkEnterprise = 'https://ilis-cadas-api.vnpt.vn/'\r\n\r\nconst secretKey = '123456qwertyasdfghzxcvbn!@#$%^';\r\n\r\nconst URL = {\r\n login: `${apiLink}Users/SignIn`,\r\n changePassWord: `${apiLink}Users/ChangePassword`,\r\n getPolygonByDistance: `${apiLink}BanDo/GetPolygonByCoord`,\r\n getPolygonByDistanceOLD: `${apiLink}BanDo/GetPolygonByDistance`,\r\n getPolygonByDistance2: `${apiLink}BanDo/GetPolygonByDistance_v1`,\r\n getPolygonByToThua: `${apiLink}BanDo/GetPolygonByThuaDat`,\r\n getTreeDVHC: (maTinh, capDo) =>\r\n `${apiLink}HanhChinh/GetDVHC?maTinh=${maTinh}&CapDo=${capDo}`,\r\n searchByToThua: `${apiLink}HienTrang/SearchThuaDatByToThua_CMU`,\r\n getGiaDat: `${apiLink}HienTrang/SearchThuaDatByToThuaV1`,\r\n searchByName: `${apiLink}HienTrang/SearchThuaDatByTenChu`,\r\n searchByLatLng: `${apiLink}BanDo/GetThongTinThuaDatPoint`,\r\n getQuyHoachInfo: `${apiLink}QuyHoach/GetThongTinQuyHoach`,\r\n getKhaoSatQuyHoach: `${apiLink}QuyHoach/GetThongKeKhaoSatQuyHoach`,\r\n getPolygonQuyHoach: key => `${apiLink}QuyHoach/GetPolygonQuyHoach?type=${key}`,\r\n getMenuQuyHoach: `${apiLink}QuyHoach/GetMenuQuyHoachNew?maTinh=${setup.tinhId}`,\r\n getDiaGioiHanhChinh: `${apiLink}QuyHoach/DANHMUCDVHC?maTinh=${setup.tinhId}&capDo=1`,\r\n getQuyHoachLayer: `${apiLink}ilis/wsilis_getDSPolygonQHTheoKhoangCach`,\r\n checkPermissionAddNote: `${apiLink}ghichu/checkPermissionAddNote`,\r\n uploadHinhAnh: (thuadat) =>\r\n `${apiLink}ghichu/uploadHinhAnh?soto=${thuadat.soto}&sothua=${thuadat.sothua}&madvhc=${thuadat.madvhc}`,\r\n loadListNoteByThuaDat: `${apiLink}ghichu/getListGhiChuByThuaDat`,\r\n loadListNoteByAccount: `${apiLink}ghichu/getListGhiChuByAccount`,\r\n createGhiChu: `${apiLink}ghichu/createGhiChu`,\r\n xoaGhiChu: `${apiLink}ghichu/xoaGhiChu`,\r\n root: apiLink,\r\n token: '@DataUserQHCMU',\r\n\t getDanhMucGiaDat: loaidm => `${apiLink}HienTrang/LoadDanhMucGiaDat?loaidanhmuc=${loaidm}`,\r\n getDanhMucGiaDatDieuKien: (loaidm, maloai, maloai2) => `${apiLink}HienTrang/LoadDanhMucGiaDatDieuKien?loaidanhmuc=${loaidm}&maloai=${maloai}&maloai2=${maloai2}`,\r\n getGiaDatTheoTieuChi: (huyen,maxa,maloaidat,maduong ,madoan ) => `${apiLink}HienTrang/LoadThongTinGiaDat?huyen=${huyen}&maxa=${maxa}&maloaidat=${maloaidat}&maduong=${maduong}&madoan=${madoan}`,\r\n\r\n DownLoadAndroid: 'https://dl.dropboxusercontent.com/s/musqo6dwgyme0r7/app-release.apk?dl=0',\r\n DownLoadIOS: 'itms-services://vienthongtayninh.vn/?action=download-manifest&url=https://dl.dropboxusercontent.com/s/1sds6o83giu9jer/manifest.plist',\r\n\r\n //EnterPrise\r\n loginEnterPrise: `${apiLogin}connect/token`,\r\n searchByNameEnter: (name, iddvhc) => `${apiLinkEnterprise}api/DangKyQSDD/SearchViewDangKyDemo?PageSize=1000&CurentPage=1&iddvhc=${iddvhc}&tukhoa=${name}`,\r\n searchSoToDVHC: (soTo, dvhc) => `${apiLinkEnterprise}api/ToBanDo/SoTo/${soTo}/${dvhc}`,\r\n searchSoThuaDVHC: (soThua, idBanDo) => `${apiLinkEnterprise}api/DangKyQSDD/SearchViewDangKyDemo?PageSize=1000&CurentPage=1&tukhoa=${soThua}&searchExactly=true&idtobando=${idBanDo}`,\r\n getPolygonByToThuaEnter: `${apiLinkEnterprise}api/ThuaDat/GetByDSThuaDat`,\r\n};\r\n\r\nexport default URL;\r\n\r\n\r\n\r\nexport const isObject = obj => obj && obj.constructor && obj.constructor === Object;\r\n\r\nexport function onPostRequest(url, onSuccess, payload) {\r\n\r\n let userinfo = store.getState().userInfo\r\n // console.log(userinfo)\r\n if (userinfo) {\r\n let exp = Date.parse(userinfo.Expired)\r\n let now = Date.now()\r\n if (now > exp) {\r\n localStorage.removeItem(URL.token);\r\n store.dispatch({ type: Type.SET_TOKEN, token: '' })\r\n store.dispatch({ type: Type.SET_USER_INFO, userInfo: '' });\r\n }\r\n }\r\n\r\n\r\n let dataResponse = {\r\n statusCode: null,\r\n response: null,\r\n },\r\n rawDataHeader = payload,\r\n token = store.getState().token,\r\n dataHeader = '';\r\n if (isObject(payload)) {\r\n let rawToken = token;\r\n if (token) {\r\n token = decodeResponse(token);\r\n token = JSON.parse(token);\r\n }\r\n payload = {\r\n Username: token.Username || '',\r\n Token: rawToken || '',\r\n ...payload,\r\n };\r\n }\r\n dataHeader = encodeResponse(payload);\r\n\r\n Axios.post(encodeURI(url), null, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Data: dataHeader,\r\n }\r\n })\r\n .then((res) => {\r\n if (res.status === 401) {\r\n localStorage.removeItem(URL.token);\r\n store.dispatch({ type: Type.SET_TOKEN, token: '' })\r\n store.dispatch({ type: Type.SET_USER_INFO, userInfo: '' });\r\n }\r\n dataResponse.statusCode = res.status;\r\n dataResponse.response = res.data;\r\n onSuccess(dataResponse);\r\n })\r\n .catch((error) => {\r\n if (error.response && error.response.status) {\r\n onSuccess({ statusCode: error.response.status, response: [] });\r\n }\r\n // let callBack = () => onPostRequest(url, onSuccess, rawDataHeader);\r\n // handlerError(error, onSuccess, callBack);\r\n });\r\n}\r\n\r\nexport function onRequestEnterPrise(url, onSuccess, payload, token) {\r\n let dataResponse = {\r\n statusCode: null,\r\n response: null,\r\n }\r\n\r\n if (isObject(payload)) {\r\n let rawToken = token;\r\n if (token) {\r\n token = decodeResponse(token);\r\n token = JSON.parse(token);\r\n }\r\n payload = {\r\n Username: token.Username || '',\r\n Token: rawToken || '',\r\n ...payload,\r\n };\r\n }\r\n Axios.post(encodeURI(url), payload\r\n )\r\n .then((res) => {\r\n dataResponse.statusCode = res.status;\r\n dataResponse.response = res.data;\r\n onSuccess(dataResponse);\r\n })\r\n .catch((error) => {\r\n const status = error.response.status;\r\n const res = null\r\n onSuccess({ status, res })\r\n });\r\n}\r\n\r\nexport function onGetRequestEnterPriseBody(url, onSuccess, payload) {\r\n let dataResponse = {\r\n statusCode: null,\r\n response: null,\r\n },\r\n rawDataHeader = payload,\r\n //token = store.getState().TokenEnter;\r\n token = localStorage.getItem(URL.token)\r\n if (isObject(payload)) {\r\n if (token) {\r\n token = decodeResponse(token);\r\n token = JSON.parse(token);\r\n }\r\n }\r\n\r\n Axios.get(url,\r\n {\r\n headers: {\r\n 'Authorization': 'Bearer ' + token,\r\n },\r\n }\r\n )\r\n .then((res) => {\r\n dataResponse.statusCode = res.status;\r\n dataResponse.response = res.data;\r\n onSuccess(dataResponse);\r\n\r\n })\r\n .catch((error) => {\r\n // let callBack = () => onPostRequest(url, onSuccess, rawDataHeader);\r\n // handlerError(error, onSuccess, callBack);\r\n if (error.response && error.response.status) {\r\n onSuccess({ statusCode: error.response.status, response: [] });\r\n }\r\n });\r\n\r\n}\r\nexport function onGetRequestNoAuth(url, onSuccess) {\r\n let dataResponse = {\r\n statusCode: null,\r\n response: null,\r\n }\r\n Axios.get(url)\r\n .then((res) => {\r\n dataResponse.statusCode = res.status;\r\n dataResponse.response = res.data;\r\n onSuccess(dataResponse);\r\n\r\n })\r\n .catch((error) => {\r\n // let callBack = () => onPostRequest(url, onSuccess, rawDataHeader);\r\n // handlerError(error, onSuccess, callBack);\r\n if (error.response && error.response.status) {\r\n onSuccess({ statusCode: error.response.status, response: [] });\r\n }\r\n });\r\n\r\n}\r\nexport function onPostRequestEnterPriseBody(url, onSuccess, payload) {\r\n let dataResponse = {\r\n statusCode: null,\r\n response: null,\r\n },\r\n rawDataHeader = payload,\r\n token = localStorage.getItem(URL.token)\r\n //token = store.getState().TokenEnter;\r\n const config = {\r\n method: 'post',\r\n url: url,\r\n headers: {\r\n 'Authorization': 'Bearer ' + token,\r\n 'Content-Type': 'application/json',\r\n },\r\n data: payload\r\n };\r\n Axios(config)\r\n .then((res) => {\r\n dataResponse.statusCode = res.status;\r\n dataResponse.response = res.data;\r\n onSuccess(dataResponse);\r\n })\r\n .catch((error) => {\r\n if (error.response && error.response.status) {\r\n onSuccess({ statusCode: error.response.status, response: [] });\r\n }\r\n // let callBack = () => onPostRequest(url, onSuccess, rawDataHeader);\r\n // handlerError(error, onSuccess, callBack);\r\n // if (error.response && error.response.status === 401) {\r\n // onSignOut()\r\n // }\r\n });\r\n}\r\n\r\nexport const b64DecodeUnicode = (str) => {\r\n return (\r\n decodeURIComponent(\r\n Array.prototype.map.call(atob(str), c =>\r\n '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)\r\n ).join(''))\r\n )\r\n}\r\n\r\n\r\nexport const parseJwt = (token) => {\r\n return (\r\n JSON.parse(\r\n b64DecodeUnicode(\r\n token.split('.')[1].replace('-', '+').replace('_', '/')\r\n )\r\n ))\r\n}\r\n\r\n\r\nexport function formatFLetter(inputString) {\r\n if (inputString) {\r\n inputString = inputString.split(' ');\r\n inputString = inputString.map(e => capitalizeFLetter(e));\r\n inputString = inputString.filter(e => !!e);\r\n return inputString.join(' ');\r\n }\r\n return \"\"\r\n}\r\n\r\nexport function checkQuyenXemQuyHoach(tenquyhoach, Username) {\r\n if (tenquyhoach === null) {\r\n if (TNH_SETUP.accessAccount.setLogin === true && TNH_SETUP.accessAccount.listUsers.filter(e => e === Username).length > 0) {\r\n return true;\r\n }\r\n return false\r\n }\r\n else {\r\n if (TNH_SETUP.accessKey.filter(e => tenquyhoach.includes(e) === true).length > 0 && TNH_SETUP.accessAccount.setLogin === true) {\r\n if (TNH_SETUP.accessAccount.listUsers.filter(e => e === Username).length > 0) {\r\n return true;\r\n }\r\n return false\r\n }\r\n return true\r\n }\r\n}\r\n\r\nfunction capitalizeFLetter(inputStr) {\r\n if (inputStr) {\r\n inputStr = inputStr.toLowerCase();\r\n return inputStr.charAt(0).toUpperCase() +\r\n inputStr.slice(1)\r\n }\r\n return \"\"\r\n}\r\n\r\nexport const removeMask = () => {\r\n // document.get \r\n if (TNH_SETUP.hackMap === true)\r\n setTimeout(() => {\r\n if (document.getElementsByClassName('gm-style')[0].children[1].children[0])\r\n document.getElementsByClassName('gm-style')[0].children[1].children[0].children[4].innerHTML =\r\n document.getElementsByClassName('gm-style')[0].children[1].children[0].children[4].innerHTML.replaceAll('background-color: rgba(0, 0, 0, 0.5)', 'background-color: unset ; z-index: 0').replaceAll('For development purposes only', '')\r\n }, 500)\r\n}\r\n\r\nexport const encodeResponse = (body) => {\r\n body = JSON.stringify(body);\r\n let key = CryptoJS.enc.Utf8.parse(secretKey);\r\n key = CryptoJS.MD5(key);\r\n key.words.push(key.words[0], key.words[1]);\r\n let options = { mode: CryptoJS.mode.ECB },\r\n textWordArray = CryptoJS.enc.Utf8.parse(body),\r\n encrypted = CryptoJS.TripleDES.encrypt(textWordArray, key, options);\r\n return encrypted.toString();\r\n};\r\n\r\nexport const decodeResponse = (encryptedText) => {\r\n let key = CryptoJS.enc.Utf8.parse(secretKey);\r\n key = CryptoJS.MD5(key);\r\n key.words.push(key.words[0], key.words[1]);\r\n let options = { mode: CryptoJS.mode.ECB },\r\n decrypted = CryptoJS.TripleDES.decrypt(\r\n // @ts-ignore\r\n {\r\n ciphertext: CryptoJS.enc.Base64.parse(encryptedText),\r\n },\r\n key,\r\n options,\r\n );\r\n return decrypted.toString(CryptoJS.enc.Utf8);\r\n};\r\n\r\nconst handlerError = (error, onSuccess, callBack) => {\r\n let payload = {\r\n statusCode: 'Error',\r\n response: '',\r\n };\r\n if (error.response) {\r\n payload.response = error.response.data;\r\n payload.statusCode = error.response.status;\r\n if (error.response.status === 401) {\r\n onRefreshToken(callBack);\r\n }\r\n else\r\n onSuccess(payload);\r\n } else if (error.request) {\r\n payload.response = error.request;\r\n onSuccess(payload);\r\n } else {\r\n // Something happened in setting up the request that triggered an Error\r\n payload.response = error.message;\r\n onSuccess(payload);\r\n }\r\n};\r\n\r\nconst onRefreshToken = (onSuccess) => {\r\n let token = store.getState().token;\r\n if (token) {\r\n token = decodeResponse(token);\r\n token = JSON.parse(token);\r\n let payload = {\r\n Username: token.Username,\r\n Password: token.Password,\r\n },\r\n strPayload = encodeResponse(payload);\r\n Axios.post(encodeURI(URL.login), null, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Data: strPayload,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.status === 200 && !!res.data) {\r\n localStorage.setItem(URL.token, res.data)\r\n store.dispatch({ type: Type.SET_TOKEN, token: res.data });\r\n onSuccess();\r\n }\r\n })\r\n .catch((error) => {\r\n store.getState().signOut();\r\n if (error.response) {\r\n console.log('response', error.response);\r\n } else if (error.request) {\r\n console.log('req', error.request);\r\n } else {\r\n console.log('Message', error.message);\r\n }\r\n });\r\n } else {\r\n store.getState().signOut();\r\n }\r\n};\r\n\r\nexport const onLoadListXa = (huyenId) => {\r\n\r\n let onSuccess = (statusCode, response) => {\r\n if (statusCode === 200) {\r\n store.dispatch({ type: Type.SET_SEARCH, route: 'listWard', value: response });\r\n store.dispatch({ type: Type.SET_SEARCH, route: 'wardSelected', value: response[0] });\r\n }\r\n else\r\n return null\r\n };\r\n getListXa(huyenId, onSuccess);\r\n};\r\n\r\nexport const formatNumber = number => {\r\n return number.toString().replace(/(\\d)(?=(\\d\\d\\d)+(?!\\d))/g, \"$1,\");\r\n}\r\n\r\nexport const QD_GiaDat = {\r\n 'QD': '(Số 35/2020/QĐ-UBND)',\r\n 'HIEULUC': '01/09/2020',\r\n}\r\n\r\n","import LinkAPI, { onPostRequest, onPostRequestEnterPriseBody } from './MainController';\r\nimport { convertXYToLatLon, convertLatLonToXY, convertXYPolygon, getDistance } from './Converter';\r\nimport { getShapeColor } from '../Styles/Colors';\r\nimport setup from \"./setup\";\r\nimport { store } from \"../Redux/Store\";\r\nimport Type from \"../Redux/Type\";\r\nimport WKT from \"./WKT\";\r\nimport { mapGeoType } from \"./QuyHoach\";\r\nimport { v4 as uuidv4 } from 'uuid';\r\n\r\nexport function getPolygonByToThua({ SoTo, SoThua, MaDvhc, TenChu }) {\r\n store.dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'dataTrichDoPicked', value: null });\r\n let onProcess = ({ statusCode, response }) => {\r\n if (statusCode === 200) {\r\n if (response.length) {\r\n response = response[0]\r\n let polygon = processPolygon(response.polygon, \"POLYGON\", false)\r\n //let polygon = processPolygon(response.polygon, \"POLYGON\", true)\r\n response = {\r\n ...response,\r\n polygon,\r\n center: getCenterPoint(polygon[0])\r\n };\r\n let centerPoint = getCenterPoint(polygon[0])\r\n onMoveToMap(centerPoint)\r\n\r\n store.dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'makerPosition', value: centerPoint });\r\n store.dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'pickedPolygon', value: response.polygon });\r\n store.dispatch({\r\n type: Type.SET_STATE_HIEN_TRANG,\r\n route: 'dataTrichDoPicked',\r\n value: convertXYPolygon(response.polygon[0])\r\n });\r\n } else\r\n store.dispatch({ type: Type.SET_MAIN_MESSAGE, message: 'Không tìm thấy dữ liệu bản đồ' })\r\n } else {\r\n store.dispatch({ type: Type.SET_MAIN_MESSAGE, message: 'Không tìm thấy dữ liệu bản đồ' })\r\n }\r\n };\r\n\r\n onPostRequest(LinkAPI.getPolygonByToThua, onProcess, { SoTo, SoThua, MaDvhc, TenChu });\r\n}\r\n\r\nexport function getPolygonByToThuaEnter({ SoTo, SoThua, idbando, idThuaDat }, ktt) {\r\n store.dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'dataTrichDoPicked', value: null });\r\n const payload = [\r\n idThuaDat\r\n ]\r\n let onProcess = ({ statusCode, response }) => {\r\n if (statusCode === 200) {\r\n if (response.length) {\r\n let responseThua = null;\r\n response.forEach(e => {\r\n if (e.idthuadat == idThuaDat) {\r\n responseThua = e;\r\n }\r\n });\r\n if (responseThua) {\r\n let polygon = processPolygon(responseThua.geojson, \"POLYGON\", true)\r\n responseThua = {\r\n ...responseThua,\r\n polygon,\r\n center: getCenterPoint(polygon[0])\r\n };\r\n let centerPoint = getCenterPoint(responseThua.polygon[0])\r\n onMoveToMap(centerPoint)\r\n store.dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'makerPosition', value: centerPoint });\r\n store.dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'pickedPolygon', value: responseThua.polygon });\r\n store.dispatch({\r\n type: Type.SET_STATE_HIEN_TRANG,\r\n route: 'dataTrichDoPicked',\r\n value: convertXYPolygon(responseThua.polygon[0], ktt)\r\n });\r\n } else {\r\n store.dispatch({ type: Type.SET_MAIN_MESSAGE, message: 'Không tìm thấy dữ liệu bản đồ' })\r\n }\r\n } else\r\n store.dispatch({ type: Type.SET_MAIN_MESSAGE, message: 'Không tìm thấy dữ liệu bản đồ' })\r\n } else {\r\n store.dispatch({ type: Type.SET_MAIN_MESSAGE, message: 'Không tìm thấy dữ liệu bản đồ' })\r\n }\r\n };\r\n onPostRequestEnterPriseBody(LinkAPI.getPolygonByToThuaEnter, onProcess, payload);\r\n}\r\n\r\nexport function getPolygonByDistance({ lat, lng }) {\r\n let { lastCoordinate } = store.getState()['hienTrang'],\r\n distance = 0;\r\n\r\n\r\n // lấy khoảng cách giữa lần load trước và hiện tại\r\n if (lastCoordinate) {\r\n let loadCoordinate = {\r\n latitude: lat,\r\n longitude: lng,\r\n };\r\n distance = getDistance(lastCoordinate, loadCoordinate);\r\n }\r\n\r\n if (!distance || distance >= 120) {\r\n let pointXY = {\r\n latitude: lat,\r\n longitude: lng\r\n };\r\n pointXY = convertLatLonToXY(pointXY);\r\n let payload = {\r\n Px: pointXY.x.toString(),\r\n Py: pointXY.y.toString(),\r\n Di: setup.distanceLoad,\r\n },\r\n onProcess = ({ statusCode, response }) => {\r\n if (statusCode === 200) {\r\n try {\r\n response = response.map(e => {\r\n return {\r\n ...e,\r\n ...getShapeColor(e.LOAIDAT),\r\n polygon: processPolygon(e.polygon, 'POLYGON', true)\r\n }\r\n });\r\n response = response.filter(e => !!e.polygon.length);\r\n store.dispatch({\r\n type: Type.SET_STATE_HIEN_TRANG,\r\n route: 'lastCoordinate',\r\n value: { latitude: lat, longitude: lng }\r\n });\r\n store.dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'listPolygon', value: response })\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n };\r\n onPostRequest(LinkAPI.getPolygonByDistance, onProcess, payload);\r\n }\r\n}\r\n\r\nexport function getPolygonByDistance2({ topRightPoint, bottomLeftPoint, centerPoint, zoom }) {\r\n\r\n store.dispatch({ type: Type.SET_LOADING, route: 'isLoading', value: true });\r\n store.dispatch({ type: Type.SET_LOADING, route: 'messageLoading', value: 'Đang tải dữ liệu thửa đất...' });\r\n\r\n let centerPointS = {\r\n latitude: centerPoint.lat,\r\n longitude: centerPoint.lng\r\n };\r\n let centerPointXY = convertLatLonToXY(centerPointS);\r\n let distance = getDistance(topRightPoint, bottomLeftPoint) / 2,\r\n payload = {\r\n Latitude: centerPoint.lat,\r\n Longitude: centerPoint.lng,\r\n Distance: distance,\r\n X: centerPointXY.x,\r\n Y: centerPointXY.y,\r\n Zoom: zoom\r\n },\r\n\r\n onProcess = ({ statusCode, response }) => {\r\n if (statusCode === 200) {\r\n try {\r\n response = response.map(e => {\r\n return {\r\n ...e,\r\n polygon: processPolygon(e.polygon, 'POLYGON', false)\r\n }\r\n });\r\n response = response.filter(e => !!e.polygon.length);\r\n\r\n store.dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'listPolygon', value: response })\r\n\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n store.dispatch({ type: Type.SET_LOADING, route: 'isLoading', value: false });\r\n store.dispatch({ type: Type.SET_LOADING, route: 'messageLoading', value: '' });\r\n };\r\n\r\n onPostRequest(LinkAPI.getPolygonByDistance2, onProcess, payload);\r\n}\r\n\r\nexport function getPolygonByDistancMapbox({ topRightPoint, bottomLeftPoint, centerPoint, zoom }) {\r\n centerPoint = {\r\n latitude: centerPoint.lat,\r\n longitude: centerPoint.lng\r\n };\r\n centerPoint = convertLatLonToXY(centerPoint);\r\n let distance = getDistance(topRightPoint, bottomLeftPoint) / 2,\r\n payload = {\r\n Latitude: centerPoint.x,\r\n Longitude: centerPoint.y,\r\n Distance: distance,\r\n Zoom: zoom\r\n },\r\n\r\n onProcess = ({ statusCode, response }) => {\r\n if (statusCode === 200) {\r\n try {\r\n response = response.map(e => {\r\n return {\r\n ...e,\r\n polygon: processPolygonMapBox(e.polygon, 'POLYGON', true)\r\n }\r\n });\r\n response = response.filter(e => !!e.polygon.length);\r\n store.dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'listPolygonVer2', value: response })\r\n\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n };\r\n onPostRequest(LinkAPI.getPolygonByDistance2, onProcess, payload);\r\n}\r\n\r\nexport function processPolygonMapBox(strPoly, geoType, isConvert) {\r\n let polygon = [];\r\n strPoly = strPoly.replace(geoType, \"\")\r\n strPoly = strPoly.split(\"(\");\r\n strPoly = strPoly.filter(e => e.trim())\r\n strPoly = strPoly.map(e => e.trim().replace(\"),\", \"\").replace(\"))\", \"\").trim());\r\n\r\n strPoly.forEach((e, i) => {\r\n let coordinateArray = e.split(\",\"),\r\n _p = [];\r\n coordinateArray.forEach(e => {\r\n let _e = e.trim(),\r\n _list = _e.split(\" \");\r\n\r\n if (_list.length === 2) {\r\n let x = _list[1].replace(/[()]/g, '').trim(),\r\n y = _list[0].replace(/[()]/g, '').trim();\r\n if (!isNaN(x) && !isNaN(y)) {\r\n x = parseFloat(x);\r\n y = parseFloat(y);\r\n let coordinate = isConvert ?\r\n convertXYToLatLon({ x, y }, false)\r\n : [y, x]\r\n _p = [..._p, coordinate]\r\n }\r\n }\r\n });\r\n if (_p.length)\r\n polygon = [...polygon, _p]\r\n });\r\n\r\n return polygon\r\n}\r\n\r\nexport function processPolygon(strPoly, geoType, isConvert) {\r\n let polygon = [];\r\n strPoly = strPoly.replace(geoType, \"\")\r\n strPoly = strPoly.split(\"(\");\r\n strPoly = strPoly.filter(e => e.trim())\r\n strPoly = strPoly.map(e => e.trim().replace(\"),\", \"\").replace(\"))\", \"\").trim());\r\n\r\n strPoly.forEach((e, i) => {\r\n let coordinateArray = e.split(\",\"),\r\n _p = [];\r\n coordinateArray.forEach(e => {\r\n let _e = e.trim(),\r\n _list = _e.split(\" \");\r\n\r\n if (_list.length === 2) {\r\n let x = _list[1].replace(/[()]/g, '').trim(),\r\n y = _list[0].replace(/[()]/g, '').trim();\r\n if (!isNaN(x) && !isNaN(y)) {\r\n x = parseFloat(x);\r\n y = parseFloat(y);\r\n let coordinate = isConvert ?\r\n convertXYToLatLon({ x, y }, true)\r\n :\r\n { lat: x, lng: y }\r\n _p = [..._p, coordinate]\r\n }\r\n }\r\n });\r\n if (_p.length)\r\n polygon = [...polygon, _p]\r\n });\r\n return polygon\r\n}\r\n\r\nexport const processResponseGeometry = (response, isConvert) => {\r\n if (Array.isArray(response)) {\r\n let nextResponse = [],\r\n listID = [];\r\n response.forEach((e) => {\r\n let nextGeo = WKT.parse(e.polygon, isConvert),\r\n isIdInclude = listID.includes(e.ID)\r\n if (!isIdInclude)\r\n listID = [...listID, e.ID];\r\n\r\n // if (e.ID === 9608)\r\n // console.log(e)\r\n\r\n nextGeo.geometry.forEach((elem, index) => {\r\n\r\n let item = {\r\n ...e,\r\n k: e.ID,\r\n ID: e.ID,\r\n geoType: nextGeo.geoType,\r\n polygon: elem\r\n };\r\n if (item.polygon.length) {\r\n if (nextGeo.geoType === mapGeoType.POLYGON)\r\n nextResponse = [...nextResponse, item];\r\n else {\r\n item.polygon.forEach((line) => {\r\n let itemLine = {\r\n ...item,\r\n polygon: line,\r\n ID: uuidv4()\r\n };\r\n nextResponse = [...nextResponse, itemLine];\r\n })\r\n }\r\n }\r\n })\r\n })\r\n return nextResponse\r\n }\r\n return []\r\n}\r\n\r\nfunction getCenterPoint(arr) {\r\n let x = arr.map(e => e.lat);\r\n let y = arr.map(e => e.lng);\r\n let cx = (Math.min(...x) + Math.max(...x)) / 2;\r\n let cy = (Math.min(...y) + Math.max(...y)) / 2;\r\n return { 'lat': cx, 'lng': cy };\r\n}\r\n\r\nexport const onMoveToMap = ({ lat, lng }) => {\r\n let map = store.getState()['mapView']['refMapView'];\r\n // console.log(map)\r\n if (map) {\r\n map.panTo({ lat, lng })\r\n }\r\n}\r\n\r\nexport const onSetZoomMap = (zoomVer) => {\r\n let map = store.getState()['mapView']['refMapView'];\r\n // console\r\n if (map) {\r\n // map.setZoom(zoomVer)\r\n }\r\n}\r\n","import React, { useRef } from \"react\";\r\nimport {\r\n withScriptjs,\r\n withGoogleMap,\r\n GoogleMap,\r\n} from \"react-google-maps\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport Type from \"../../Redux/Type\";\r\nimport { getPolygonByDistance2 } from \"../../Containers/MapView\";\r\nimport setup from \"../../Containers/setup\";\r\nimport { removeMask } from \"../../Containers/MainController\";\r\nimport TNH_SETUP from \"../../Containers/setup\";\r\nimport { useState } from \"react\";\r\n\r\n\r\nconst MapView = withScriptjs(withGoogleMap(props => {\r\n const refMap = useRef();\r\n const dispatch = useDispatch();\r\n const {\r\n pickMapOn\r\n } = useSelector(state => state.searchState);\r\n const {\r\n showThuaDat\r\n } = useSelector(state => state.hienTrang);\r\n\r\n const [isRend, setRender] = useState(false);\r\n\r\n const [zoomLevel, setZoom] = useState(TNH_SETUP.defaultZoom);\r\n\r\n const ChageZoom = (zoomLV) => {\r\n setZoom(zoomLV)\r\n }\r\n\r\n\r\n const CallMask = () => {\r\n if (isRend === false) {\r\n removeMask()\r\n setRender(true)\r\n }\r\n }\r\n\r\n const onTilesLoaded = () => {\r\n\r\n if (!!refMap) {\r\n dispatch({ type: Type.REF_MAP_VIEW, value: refMap.current })\r\n\r\n CallMask()\r\n\r\n // if (showThuaDat === true) {\r\n let centerPoint = {\r\n lat: refMap.current.getCenter().lat(),\r\n lng: refMap.current.getCenter().lng(),\r\n },\r\n topRightPoint = {\r\n latitude: refMap.current.getBounds().getNorthEast().lat(),\r\n longitude: refMap.current.getBounds().getNorthEast().lng()\r\n },\r\n bottomLeftPoint = {\r\n latitude: refMap.current.getBounds().getSouthWest().lat(),\r\n longitude: refMap.current.getBounds().getSouthWest().lng()\r\n },\r\n zoom = refMap.current.getZoom();\r\n\r\n getPolygonByDistance2({ topRightPoint, bottomLeftPoint, centerPoint, zoom });\r\n //}\r\n }\r\n };\r\n\r\n\r\n return (\r\n
\r\n { removeMask() }}\r\n options={{\r\n styles: [{ featureType: 'poi', stylers: [{ visibility: 'off' }] }],\r\n mapTypeControl: false,\r\n streetViewControl: false,\r\n zoomControl: props.zoomControl,\r\n draggableCursor: pickMapOn && `crosshair `,\r\n maxZoom: zoomLevel\r\n }}\r\n onTilesLoaded={onTilesLoaded}\r\n defaultMapTypeId={'satellite'}\r\n mapTypeId={props.mapTypeId}\r\n onClick={ev => props.onClick(ev)}\r\n >\r\n\r\n {props.children}\r\n \r\n
\r\n )\r\n}\r\n));\r\n\r\n\r\nexport default MapView;\r\n","import React, { Fragment } from 'react'\r\nimport { Marker } from \"react-google-maps\";\r\nimport { MarkerWithLabel } from \"react-google-maps/lib/components/addons/MarkerWithLabel\"\r\nimport MarkerClusterer from 'react-google-maps/lib/components/addons/MarkerClusterer';\r\nimport { useSelector } from 'react-redux';\r\nimport InfoBox from 'react-google-maps/lib/components/addons/InfoBox';\r\n\r\nconst PointQuyHoach = (props) => {\r\n const { points, labelActive, selected, hienthidiem } = useSelector(state => state.quyHoach);\r\n const onPolygonPress = (e) => () => {\r\n props.onClickEvnt(e)\r\n }\r\n return (\r\n \r\n {\r\n\r\n hienthidiem === 'diemchon' ?\r\n\r\n \r\n {\r\n points.map((e, i) => {\r\n\r\n return (\r\n \r\n\r\n )\r\n })\r\n }\r\n \r\n :\r\n\r\n points.map((e, i) => {\r\n return (\r\n \r\n )\r\n })\r\n\r\n }\r\n\r\n \r\n )\r\n}\r\n\r\nexport default React.memo(PointQuyHoach)\r\n// \r\n//
{e.diadanh}
\r\n// \r\n\r\nconst InForBox = React.memo (({ item })=>{\r\n return (\r\n { }}\r\n className=\"infobox\"\r\n options={{ closeBoxURL: '', enableEventPropagation: true }}\r\n position={item['polygon']}\r\n // visible={labelActive.includes(e.label) && e.id !== selected.id}\r\n >\r\n
{ }}>\r\n
\r\n {item.diadanh}\r\n
\r\n
\r\n \r\n )\r\n}) \r\n \r\n","import { polygon, intersect,lineString, lineOffset, lineToPolygon, centerOfMass } from '@turf/turf'\r\n\r\nvar poly1 =polygon([[\r\n [-122.801742, 45.48565],\r\n [-122.801742, 45.60491],\r\n [-122.584762, 45.60491],\r\n [-122.584762, 45.48565],\r\n [-122.801742, 45.48565]\r\n ]]);\r\n \r\n var poly2 =polygon([[\r\n [-122.520217, 45.535693],\r\n [-122.64038, 45.553967],\r\n [-122.720031, 45.526554],\r\n [-122.669906, 45.507309],\r\n [-122.723464, 45.446643],\r\n [-122.532577, 45.408574],\r\n [-122.487258, 45.477466],\r\n [-122.520217, 45.535693]\r\n ]]);\r\n\r\n \r\n export const GiaoThoaPolygon = (polyg1,polyg2) =>{\r\n\r\n var intersection = intersect(poly1, poly2);\r\n // console.log(intersection)\r\n return intersection\r\n}\r\n\r\n/**\r\n * Adds two numbers.\r\n * @param {point} Điểm gốc\r\n * @param {distance} khoảng cách dịch chuyển mét\r\n * @param {heading} \r\n * @return {Array} The result GEOJSON \r\n */\r\nexport const DiChuyenDiem = (point,distance,heading) =>{\r\n \r\n}\r\n\r\n/**\r\n * Adds two numbers.\r\n * @param {lines} danh mục đường line [[lat,lng],...] \r\n * @param {distance} khoảng cách dịch chuyển mét có thể âm\r\n * @return {Array} The result GEOJSON \r\n */\r\nexport const DichChuyenDuong = (lines,distance) =>{\r\n\r\n var line = lineString(lines);\r\n var offsetLine = lineOffset(line, distance, {units: 'meters'});\r\n return offsetLine.geometry.coordinates\r\n}\r\n\r\n/**\r\n * Adds two numbers.\r\n * @param {lines} danh mục đường line [[lat,lng],...] \r\n * @return {Array} The result GEOJSON \r\n */\r\nexport const LineToPolyGon = (lines) =>{\r\n\r\n var line = lineString(lines);\r\n var offsetLine = lineToPolygon(line) \r\n return offsetLine\r\n}\r\n\r\n/**\r\n * Adds two numbers.\r\n * @param {polygon} polygon [[lat,lng],...] \r\n * @return {Array} The result GEOJSON \r\n */\r\n export const FindCenterPointPolygon = (polygons) =>{\r\n var polygn = polygon(polygons);\r\n var centerPoint = centerOfMass(polygn) \r\n return centerPoint\r\n}\r\n\r\n/**\r\n * Adds two numbers.\r\n * @param {polyArr} Array Point of Polygons\r\n * @param {type} type: 1 {lat: lat(), lng: lng()} | type: 2 {lat: xxx, lng: xxx}\r\n * @return {Array} The result GEOJSON \r\n */\r\n export const ConvertArrObjectToGEO = (polyArr, type) =>{\r\n //type: 1 {lat: lat(), lng: lng()} \r\n //type: 2 {lat: xxx, lng: xxx}\r\n let arrayReturn = []\r\n if(type === 1){\r\n polyArr.forEach(e=>{\r\n // console.log(e.lat())\r\n arrayReturn.push([e.lat() , e.lng()])\r\n })\r\n // console.log(polyArr)\r\n }\r\n else{\r\n polyArr.forEach(e=>{\r\n arrayReturn.push([e.lat , e.lng])\r\n }) \r\n }\r\n return arrayReturn\r\n}\r\n //=polygons\r\n \r\n //=intersection","import React, { Fragment } from 'react'\r\nimport { useSelector } from 'react-redux';\r\nimport { Polygon } from \"react-google-maps\";\r\nimport { FindCenterPointPolygon } from '../../../Containers/GiaoCatPolygons';\r\n\r\nconst PolyGonQuyHoach = (props) => {\r\n const { polygons, opacityLevel, labelActive } = useSelector(state => state.quyHoach);\r\n const onPolygonPress = (e) => {\r\n props.onClickEvnt(e)\r\n }\r\n return (\r\n \r\n {\r\n polygons.map((e, index) => {\r\n if (e.diadanh && e.diadanh !== \" \") {\r\n // e['polygon']\r\n // FindCenterPointPolygon()\r\n }\r\n return (\r\n onPolygonPress(e)}\r\n />\r\n\r\n )\r\n\r\n })\r\n }\r\n \r\n )\r\n}\r\n\r\nexport default React.memo(PolyGonQuyHoach)","import React from 'react';\r\nimport { Polygon, Polyline, Marker } from \"react-google-maps\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { onShowQuyHoachInfoPanel, mapGeoType } from \"../../Containers/QuyHoach\";\r\nimport Type from \"../../Redux/Type\";\r\nimport PointLayer from './Layers/PointLayer';\r\nimport PolygonLayer from './Layers/PolygonLayer';\r\n\r\n\r\nconst LopQuyHoach = () => {\r\n const { showQuyHoach, polyline, labelActive, selected } = useSelector(state => state.quyHoach);\r\n const dispatch = useDispatch();\r\n const onPolygonPress = (e) => {\r\n // console.log(e)\r\n dispatch({ type: Type.SET_STATE_RIGHT_PANEL, route: 'isMinimized', value: false });\r\n dispatch({ type: Type.SELECTED_QUYHOACH, value: e })\r\n onShowQuyHoachInfoPanel();\r\n }\r\n const onPolygonPressLayer = (e) => {\r\n dispatch({ type: Type.SET_STATE_RIGHT_PANEL, route: 'isMinimized', value: false });\r\n dispatch({ type: Type.SELECTED_QUYHOACH, value: e })\r\n onShowQuyHoachInfoPanel();\r\n }\r\n return (\r\n
\r\n {showQuyHoach ?\r\n onPolygonPressLayer(e)} />\r\n :\r\n null\r\n }\r\n {showQuyHoach ?\r\n polyline.map((e) => (\r\n onPolygonPress(e)}\r\n />\r\n ))\r\n : null\r\n }\r\n {showQuyHoach ?\r\n // \r\n onPolygonPressLayer(e)} />\r\n : null\r\n }\r\n {selected.geoType === mapGeoType.POLYGON ?\r\n \r\n :\r\n selected.geoType === mapGeoType.LINESTRING ?\r\n \r\n :\r\n selected.geoType === mapGeoType.POINT ?\r\n \r\n : null\r\n }\r\n
\r\n )\r\n}\r\n\r\nexport default LopQuyHoach\r\n","import React, { useRef } from 'react';\r\nimport { Marker, Polygon } from \"react-google-maps\";\r\nimport { checkInside } from \"../../Containers/Converter\";\r\nimport Type from \"../../Redux/Type\";\r\nimport { onMoveToMap } from \"../../Containers/MapView\";\r\nimport { getInfoByThuaDat, ThongTinThuaDatDefault } from \"../../Containers/Search\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\n\r\nconst LopHienTrang = () => {\r\n const markerRe = useRef()\r\n const dispatch = useDispatch();\r\n const { listPolygon, showThuaDat, showOnZoom, pickedPolygon, makerPosition } = useSelector(state => state.hienTrang)\r\n const { showQuyHoach, listLabel } = useSelector(state => state.quyHoach);\r\n\r\n\r\n const onPolygonPress = (latLng, data) => {\r\n dispatch({ type: Type.SET_STATE_RIGHT_PANEL, route: 'isMinimized', value: false });\r\n\r\n dispatch({ type: Type.SET_MAIN_MESSAGE, message: '' })\r\n let point = {\r\n lat: parseFloat(latLng.lat()),\r\n lng: parseFloat(latLng.lng())\r\n },\r\n shape = null,\r\n i, k;\r\n // for (i = 0; i < listPolygon.length; i++) {\r\n // let flagBreak = false,\r\n // item = listPolygon[i];\r\n // for (k = 0; k < item['polygon'].length; k++) {\r\n // if (checkInside(point, item['polygon'][k],true)) {\r\n // shape = item;\r\n // flagBreak = true;\r\n // break;\r\n // }\r\n // }\r\n // if (flagBreak)\r\n // break;\r\n // }\r\n if (data) {\r\n let payload = {\r\n MaDvhc: data.KVHC_ID.toString(),\r\n SoTo: data.SOTO,\r\n SoThua: data.SOTHUA,\r\n TenChu: '',\r\n POINT: ''\r\n };\r\n dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'makerPosition', value: point });\r\n dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'pickedPolygon', value: data['polygon'] })\r\n let dataDefault = ThongTinThuaDatDefault;\r\n dataDefault.DienTich = data.DIENTICH\r\n dataDefault.SOTHUA = data.SOTHUA\r\n dataDefault.SOTO = data.SOTO\r\n dataDefault.MaDVHC = data.KVHC_ID\r\n getInfoByThuaDat(payload, dataDefault)\r\n // // getGiaDatByThuaDat(payload)\r\n onMoveToMap(point)\r\n }\r\n };\r\n\r\n // const onPolygonPress = ({ latLng }, shape) => {\r\n // dispatch({ type: Type.SET_MAIN_MESSAGE, message: '' })\r\n // let point = {\r\n // lat: parseFloat(latLng.lat()),\r\n // lng: parseFloat(latLng.lng())\r\n // }\r\n // if (shape) {\r\n // dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'makerPosition', value: point });\r\n // dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'pickedPolygon', value: shape['polygon'] })\r\n // let payload = {\r\n // MaDvhc: shape.madvhc,\r\n // SoTo: shape.SOTO,\r\n // SoThua: shape.SOTHUA,\r\n // TenChu: ''\r\n // };\r\n // getQuyHoachInfo(shape.polygons)\r\n // getInfoByThuaDatEnter(payload, shape, userInfoEnter.APILink)\r\n // onMoveToMap(point)\r\n // }\r\n // };\r\n\r\n return (\r\n
\r\n {\r\n listPolygon.map((item, idx) => {\r\n return (\r\n {\r\n onPolygonPress(e.latLng, item)\r\n }}\r\n visible={showThuaDat && showOnZoom}\r\n />\r\n )\r\n })}\r\n \r\n \r\n\r\n
\r\n )\r\n}\r\nexport default LopHienTrang;\r\n","import React, { Fragment,useEffect,useRef,useState } from \"react\";\r\nimport DrawingManager from 'react-google-maps/lib/components/drawing/DrawingManager'\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { DichChuyenDuong } from \"../../Containers/GiaoCatPolygons\";\r\nimport Type from \"../../Redux/Type\";\r\nimport { Polygon, Polyline } from \"react-google-maps\";\r\n\r\nconst Drawing = props => {\r\n const { modeChosen,drawingMode, listPoints, listLine, textInputLoGioi } = useSelector(state => state.drawingTool);\r\n const dispatch = useDispatch();\r\n const drawingMain = useRef()\r\n const polygonMain = useRef()\r\n const polyLineMain = useRef()\r\n const onPolygonComplete = (event) => {\r\n dispatch({ type: Type.SET_EVT_DRAWING, evt: event });\r\n dispatch({ type: Type.STOP_DRAWING })\r\n };\r\n\r\n const onRectangleComplete = (event) => {\r\n let bounds = event.getBounds()\r\n var areaBounds = {\r\n north: bounds.getNorthEast().lat(),\r\n south: bounds.getSouthWest().lat(),\r\n east: bounds.getNorthEast().lng(),\r\n west: bounds.getSouthWest().lng()\r\n };\r\n\r\n let topRight = { lat: areaBounds['north'], lng: areaBounds['east'] }\r\n let topLeft = { lat: areaBounds['north'], lng: areaBounds['west'] }\r\n let botRight = { lat: areaBounds['south'], lng: areaBounds['east'] }\r\n let botLeft = { lat: areaBounds['south'], lng: areaBounds['west'] }\r\n event.paths = [topLeft, topRight, botRight, botLeft]\r\n\r\n dispatch({ type: Type.SET_EVT_DRAWING, evt: event });\r\n dispatch({ type: Type.STOP_DRAWING })\r\n };\r\n const onCircleComplete = (event) => {\r\n\r\n dispatch({ type: Type.SET_EVT_DRAWING, evt: event });\r\n dispatch({ type: Type.STOP_DRAWING })\r\n };\r\n \r\n const onPolygonDragEnd = (evt) =>{\r\n \r\n }\r\n\r\n const onPolygonEdited = (evt)=>{\r\n let strNew = \"\"\r\n let count = polygonMain.current.getPath().getArray().length\r\n let newArr = polygonMain.current.getPath().getArray().map((e,index)=>{\r\n strNew += index === count -1 ? `(${e.lat()},${e.lng()})` : `(${e.lat()},${e.lng()}) | `\r\n return {lat: e.lat(), lng: e.lng()}\r\n })\r\n dispatch({ type: Type.SET_DRAWING_TEXT_INPUT,evt: strNew })\r\n dispatch({ type: Type.SET_DRAWING_POINT,evt: newArr })\r\n }\r\n\r\n const onPolylineEdited = (evt) => {\r\n let strNew = \"\"\r\n let count = polyLineMain.current.getPath().getArray().length\r\n let newArr = polyLineMain.current.getPath().getArray().map((e,index)=>{\r\n strNew += index === count -1 ? `(${e.lat()},${e.lng()})` : `(${e.lat()},${e.lng()}) | `\r\n return [ e.lat(), e.lng()]\r\n })\r\n dispatch({ type: Type.SET_DRAWING_TEXT_INPUT,evt: strNew })\r\n let line1 = DichChuyenDuong(newArr,textInputLoGioi/2)\r\n let line2 = DichChuyenDuong(newArr,textInputLoGioi/2 * -1)\r\n line2 = line2.reverse();\r\n line1 = line1.concat(line2)\r\n let arrToaDoN = line1.map(e=>{\r\n return {lat: e[0] , lng: e[1]}\r\n })\r\n dispatch({ type: Type.SET_DRAWING_POINT,evt: [] })\r\n dispatch({ type: Type.SET_DRAWING_POINT,evt: arrToaDoN })\r\n }\r\n try {\r\n return (\r\n \r\n {\r\n modeChosen !== 'nangcao' ?\r\n \r\n \r\n : \r\n listPoints.length > 0 ?\r\n 0 ? false : true,\r\n editable: listLine.length > 0 ? false : true,\r\n zIndex: 999,\r\n draggable: listLine.length > 0 ? false : true,\r\n }}\r\n // draggable={listLine.length > 0 ? false : true}\r\n onDragEnd={onPolygonDragEnd}\r\n onMouseUp={onPolygonEdited}\r\n // editable={ listLine.length > 0 ? false : true}\r\n /> : null\r\n }\r\n {\r\n listLine.length > 0 ? \r\n {}}\r\n /> : null\r\n }\r\n \r\n )\r\n } catch (error) {\r\n alert('Lỗi khi thực hiện vẽ quy hoạch, do dữ liệu điểm không đúng')\r\n }\r\n \r\n}\r\n\r\nexport default Drawing\r\n","import { store } from \"../Redux/Store\";\r\nimport Type from \"../Redux/Type\"\r\nimport LinkAPI, { onPostRequest } from './MainController';\r\n\r\nexport const onLoadViTriDiaGioi = () => {\r\n let onSuccess = ({ statusCode, response }) => {\r\n if (statusCode === 200) {\r\n\r\n let arHuyen = response.filter(e => e.MaXa === 0);\r\n arHuyen.map(item => {\r\n let arrXa = response.filter(e => e.MaHuyen === item.MaHuyen && e.MaXa !== 0)\r\n item.arrXa = arrXa\r\n })\r\n store.dispatch({ type: Type.SET_DIAGIOI, route: 'menuDiaGioi', value: arHuyen })\r\n store.dispatch({ type: Type.SET_DIAGIOI, route: 'huyenselect', value: arHuyen.length > 0 ? { key: arHuyen[0].key, text: arHuyen[0].text } : null })\r\n\r\n }\r\n }\r\n onPostRequest(LinkAPI.getDiaGioiHanhChinh, onSuccess)\r\n}\r\n\r\nexport const onLoadXa = (huyenobject) => {\r\n store.dispatch({ type: Type.SET_DIAGIOI, route: 'huyenselect', value: null })\r\n store.dispatch({ type: Type.SET_DIAGIOI, route: 'huyenselect', value: huyenobject })\r\n}\r\n\r\n\r\n\r\n\r\n","import React from 'react';\r\nimport { Stack, Image, ImageFit, Text } from '@fluentui/react';\r\nimport URL from \"../../Containers/MainController\";\r\n\r\nconst CardDownApp = () => {\r\n\r\n return (\r\n \r\n Tải ứng dụng Cổng thông tin đất đai tỉnh Cà Mau để có trải nghiệm tốt hơn trên thiết bị di độ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\r\n\r\nexport default CardDownApp;\r\n\r\nconst styles = {\r\n container: {\r\n marginTop: 10,\r\n borderTop: '1px solid gray'\r\n },\r\n lable: {\r\n textAlign: 'center',\r\n color: 'gray',\r\n marginTop: 7\r\n },\r\n card: {\r\n flexDirection: 'row',\r\n marginTop: 10,\r\n justifyContent: 'center'\r\n }\r\n};\r\n\r\n\r\n","import React, { useState, useEffect } from 'react';\r\nimport {\r\n Text, SearchBox, Label, Stack, ChoiceGroup, IStackStyles, Image, ImageFit,\r\n IconButton, Dropdown, PrimaryButton, Spinner, MessageBar, MessageBarType\r\n} from '@fluentui/react';\r\nimport setup from \"../../Containers/setup\";\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport Type from \"../../Redux/Type\";\r\nimport { getListHuyen, getListXa, getSearchList, getSearchListEnter } from '../../Containers/Search'\r\nimport { onOpenRightPanel } from \"../../Containers/RightPanelAction\";\r\nimport { TooltipHost } from '@fluentui/react/lib/Tooltip';\r\nimport { convertLatLonToXY } from '../../Containers/Converter';\r\nimport { onMoveToMap } from '../../Containers/MapView';\r\nimport { onLoadXa } from '../../Containers/ViTriHanhChinh';\r\nimport CardDownApp from '../Menu/CardDownApp';\r\n\r\n\r\n\r\nconst Search = () => {\r\n const dispatch = useDispatch();\r\n const {\r\n searchText,\r\n modeSearch,\r\n listDistrict,\r\n wardSelected,\r\n markerPosition,\r\n loadingSearch,\r\n loadingLoginEnter,\r\n\r\n districtSelectedSearch,\r\n wardSelectedSearch\r\n } = useSelector(state => state.searchState);\r\n const userInfo = useSelector(state => state.userInfo);\r\n const [isDidMount, setDidMount] = useState(false);\r\n const [errorMessage, setErrorMessage] = useState('');\r\n const [showTroGiup, setShowTroGiup] = useState(false);\r\n const [warningMessage, setWarningMessage] = useState('');\r\n const [optionModeSearch] = useState([\r\n // { key: 'byName', text: 'Theo tên chủ sử dụng', disabled: !userInfo },\r\n { key: 'byPosition', text: 'Theo tọa độ' },\r\n { key: 'byToThua', text: 'Theo số tờ thửa' }\r\n ])\r\n const { menuDiaGioi, huyenselect } = useSelector(state => state.diaGioi);\r\n\r\n const [huyenChosen, setHuyenChosen] = useState({ key: menuDiaGioi[1].key, text: menuDiaGioi[1].text });\r\n const [arrHuyen, setArrHuyen] = useState(menuDiaGioi.filter(e => e.MaHuyen !== 0))\r\n\r\n\r\n useEffect(() => {\r\n // console.log('isDidMount '+ isDidMount)\r\n // if (!isDidMount)\r\n // {\r\n // console.log('isDidMountSEt '+ isDidMount)\r\n\r\n setDidMount(true);\r\n if (markerPosition) {\r\n dispatch({ type: Type.SET_SEARCH, route: 'searchText', value: `${markerPosition['lat']}, ${markerPosition['lng']}` })\r\n }\r\n dispatch({ type: Type.SET_SEARCH, route: 'wardSelected', value: null });\r\n if (!userInfo)\r\n dispatch({ type: Type.SET_SEARCH, route: 'modeSearch', value: 'byToThua' });\r\n // }\r\n }, [isDidMount, dispatch, listDistrict.length, userInfo]);\r\n\r\n const onCallAPISearch = (route, payload) => {\r\n\r\n setErrorMessage('');\r\n dispatch({ type: Type.SET_SEARCH, route: 'loadingSearch', value: true });\r\n dispatch({ type: Type.SET_SEARCH, route: 'listResult', value: [] });\r\n let onSuccess = (statusCode, response) => {\r\n dispatch({ type: Type.SET_SEARCH, route: 'loadingSearch', value: false });\r\n if (statusCode === 200) {\r\n if (response.length) {\r\n dispatch({ type: Type.SET_STATE_RIGHT_PANEL, route: 'isMinimized', value: false });\r\n dispatch({ type: Type.SET_SEARCH, route: 'listResult', value: response });\r\n\r\n // Tắt form tìm kiếm \r\n dispatch({ type: Type.SET_STATE_POPUP_PANEL, route: 'isShowForPopup', value: false });\r\n dispatch({ type: Type.SET_STATE_POPUP_PANEL, route: 'routeContent', value: null });\r\n\r\n onOpenRightPanel('result')\r\n }\r\n else\r\n setWarningMessage('Không tìm thấy kết quả nào')\r\n } else {\r\n setErrorMessage(response)\r\n }\r\n };\r\n getSearchList(route, payload, onSuccess);\r\n //getSearchListEnter(route, payload, onSuccess)\r\n };\r\n\r\n const onClearSearchText = () => {\r\n dispatch({ type: Type.SET_SEARCH, route: 'searchText', value: '' });\r\n dispatch({ type: Type.SET_SEARCH, route: 'listResult', value: [] });\r\n dispatch({ type: Type.SET_SEARCH, route: 'markerPosition', value: null });\r\n dispatch({ type: Type.SET_SEARCH, route: 'pickMapOn', value: false });\r\n\r\n dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'makerPosition', value: {} });\r\n dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'pickedPolygon', value: [] });\r\n dispatch({\r\n type: Type.SET_STATE_HIEN_TRANG,\r\n route: 'dataTrichDoPicked',\r\n value: null\r\n });\r\n\r\n\r\n }\r\n const onChangeSearchText = (_, value) => dispatch({ type: Type.SET_SEARCH, route: 'searchText', value });\r\n\r\n const onChangeModeSearch = (_, optionChoose) => {\r\n\r\n dispatch({ type: Type.SET_SEARCH, route: 'modeSearch', value: optionChoose.key })\r\n onClearSearchText()\r\n dispatch({ type: Type.SET_STATE_RIGHT_PANEL, route: 'isShow', value: false });\r\n dispatch({ type: Type.SET_STATE_RIGHT_PANEL, route: 'routeContent', value: null });\r\n };\r\n\r\n\r\n\r\n const onChangeHuyen = (_, option) => {\r\n let huyen = { key: option.key, text: option.text }\r\n // let center = {\r\n // lat: parseFloat(option.latitude),\r\n // lng: parseFloat(option.longitude)\r\n // };\r\n\r\n // onMoveToMap(center)\r\n dispatch({ type: Type.SET_SEARCH, route: 'wardSelectedSearch', value: null });\r\n dispatch({ type: Type.SET_SEARCH, route: 'districtSelectedSearch', value: huyen });\r\n setHuyenChosen(huyen)\r\n // onLoadXa(huyen)\r\n }\r\n\r\n const onWardChange = (_, wardSelected) => {\r\n // let center = {\r\n // lat: parseFloat(wardSelected.latitude),\r\n // lng: parseFloat(wardSelected.longitude)\r\n // };\r\n // onMoveToMap(center)\r\n dispatch({ type: Type.SET_SEARCH, route: 'wardSelectedSearch', value: wardSelected })\r\n };\r\n\r\n const onSearchPress = () => {\r\n\r\n setWarningMessage('');\r\n\r\n dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'makerPosition', value: {} });\r\n dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'pickedPolygon', value: [] });\r\n dispatch({\r\n type: Type.SET_STATE_HIEN_TRANG,\r\n route: 'dataTrichDoPicked',\r\n value: null\r\n });\r\n\r\n // if (!userInfo) {\r\n // return alert('Vui lòng đăng nhập để tìm kiếm ')\r\n // }\r\n if (!searchText.trim())\r\n setErrorMessage('Vui lòng nhập từ khóa cần tìm')\r\n if (modeSearch === 'byToThua') {\r\n let arraySearchText = searchText.split('/');\r\n if (arraySearchText.length !== 2) {\r\n setErrorMessage('Vui lòng nhập đúng cú pháp tìm kiếm số tờ/số thửa. Ví dụ để tìm thửa 123 thuộc tờ 10, bạn hãy nhập 10/123');\r\n }\r\n else {\r\n //if (wardSelectedSearch) {\r\n setErrorMessage('');\r\n let SOTO = arraySearchText[0].trim(),\r\n SOTHUA = arraySearchText[1].trim(),\r\n MADVHC = wardSelectedSearch ? wardSelectedSearch.MaDVHC : huyenChosen.key,\r\n //MADVHC = wardSelected ? wardSelected.id_dvhc : huyenChosen.key,\r\n\r\n payload = {\r\n MaDvhc: MADVHC,\r\n SoTo: SOTO,\r\n SoThua: SOTHUA,\r\n TenChu: '',\r\n Point: ''\r\n };\r\n onCallAPISearch(modeSearch, payload);\r\n // } else {\r\n // setErrorMessage('Vui lòng chọn Phường/Xã/Thị Trấn cần tìm');\r\n // }\r\n }\r\n }\r\n else if (modeSearch === 'byPosition') {\r\n let arraySearchText = searchText.split(',');\r\n if (arraySearchText.length !== 2) {\r\n setErrorMessage('Vui lòng nhập đúng cú pháp tìm kiếm tọa độ (lat, long) . Ví dụ: 11.318257, 106.099454 ');\r\n }\r\n else {\r\n let lat = parseFloat(arraySearchText[0].trim())\r\n let lng = parseFloat(arraySearchText[1].trim())\r\n dispatch({ type: Type.SET_SEARCH, route: 'markerPosition', value: { lat: lat, lng: lng } })\r\n onMoveToMap({ lat: lat, lng: lng })\r\n let resultconvert = convertLatLonToXY({ latitude: lat, longitude: lng })\r\n let payload = {\r\n MaDvhc: 0,//wardSelected.searchID,\r\n SoTo: '',\r\n SoThua: '',\r\n TenChu: '',\r\n Position: { Longitude: lng, Latitude: lat },\r\n Point: `POINT (${resultconvert.y} ${resultconvert.x})`\r\n };\r\n onCallAPISearch(modeSearch, payload);\r\n\r\n }\r\n\r\n }\r\n else {\r\n let payload = {\r\n TenChu: searchText,\r\n MaDvhc: wardSelectedSearch ? wardSelectedSearch.MaDVHC : huyenChosen.key,\r\n SoTo: '',\r\n SoThua: ''\r\n };\r\n\r\n onCallAPISearch(modeSearch, payload);\r\n }\r\n };\r\n const onShowTroGiup = () => {\r\n setShowTroGiup(!showTroGiup)\r\n }\r\n const onSetPicker = () => {\r\n // if(refMapView){\r\n // // refMapView.props.options = {...refMapView.props.options, draggableCursor: `url(${process.env.PUBLIC_URL}/images/icons/pin.png) 10 10 , crosshair `}\r\n // }\r\n dispatch({ type: Type.SET_SEARCH, route: 'pickMapOn', value: true })\r\n dispatch({ type: Type.SET_STATE_POPUP_PANEL, route: 'isShowForPopup', value: false });\r\n }\r\n const emojiIcon: IIconProps = { iconName: 'MapPin' }\r\n const noteIcon: IIconProps = { iconName: 'Info' }\r\n const stackStyles: IStackStyles = {\r\n root: {\r\n width: `100%`,\r\n },\r\n };\r\n\r\n return (\r\n
\r\n
\r\n Tìm kiếm\r\n\r\n \r\n \r\n {\r\n modeSearch === \"byPosition\" ?\r\n \r\n
\r\n \r\n \r\n \r\n {\r\n showTroGiup &&\r\n
\r\n
\r\n Cách lấy tọa độ trên Google \r\n

Chọn điểm trên google map, copy tọa độ vào ô tìm kiếm

\r\n
\r\n
\r\n \r\n
\r\n
\r\n Chọn trên trang \r\n

Tắt lớp quy hoạch nếu không thể chọn được tọa độ

\r\n
\r\n
\r\n \r\n
\r\n
\r\n }\r\n
\r\n \r\n \r\n \r\n
: null\r\n }\r\n
\r\n {warningMessage ?\r\n
\r\n \r\n {warningMessage}\r\n \r\n
\r\n : null\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.key === huyenChosen.key)[0]['arrXa']}\r\n selectedKey={wardSelectedSearch && wardSelectedSearch.key}\r\n onChange={onWardChange}\r\n styles={styles.dropdownMenu}\r\n disabled={modeSearch === 'byPosition' || loadingSearch || loadingLoginEnter}\r\n />\r\n\r\n {errorMessage ?\r\n
\r\n \r\n {(errorMessage && (errorMessage + '').trim()) ? errorMessage : 'Đã có lỗi xảy ra vui lòng thử lại sau'}\r\n \r\n
\r\n : null\r\n }\r\n\r\n \r\n
\r\n\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default Search\r\n\r\n\r\nconst styles = {\r\n subTitleRow: {\r\n height: 30,\r\n marginTop: 2,\r\n display: 'flex',\r\n alignItems: 'flex-end'\r\n },\r\n labelTitle: {\r\n root: {\r\n textAlign: 'left'\r\n }\r\n },\r\n chosenGroup: {\r\n label: {\r\n textAlign: 'left',\r\n\r\n },\r\n root: {\r\n marginBottom: -5,\r\n },\r\n },\r\n searchRoot: {\r\n root: {\r\n width: '100%'\r\n }\r\n },\r\n dropdownMenu: {\r\n root: {\r\n marginTop: 7,\r\n },\r\n title: {\r\n textAlign: 'left'\r\n },\r\n errorMessage: {\r\n textAlign: 'left'\r\n }\r\n },\r\n helpimg1: {\r\n width: '100%',\r\n objectFit: 'cover',\r\n height: 200,\r\n },\r\n textTooltip: {\r\n fontSize: 16, textAlign: 'center'\r\n },\r\n tooltipImg: { textAlign: 'center', marginTop: 10 }\r\n\r\n};\r\n\r\n","import React, { memo } from 'react';\r\nimport { Text, Stack, Label, Checkbox, DefaultButton, Spinner, Dropdown, MessageBar, MessageBarType, PrimaryButton, ChoiceGroup } from '@fluentui/react';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport Type from \"../../Redux/Type\";\r\nimport { onLoadQuyHoachPolygon, onLoadQHChiTietTanChau } from '../../Containers/QuyHoach'\r\nimport { onOpenRightPanel } from \"../../Containers/RightPanelAction\";\r\nimport { onLoadXa } from '../../Containers/ViTriHanhChinh';\r\nimport { onMoveToMap } from '../../Containers/MapView';\r\nimport { checkQuyenXemQuyHoach } from './../../Containers/MainController';\r\nimport { useState } from 'react';\r\nimport { Modal } from 'antd';\r\nimport { store } from \"../../Redux/Store\";\r\nimport COLOR from '../../Styles/Colors';\r\nimport CardDownApp from '../Menu/CardDownApp';\r\n\r\nconst Layer = () => {\r\n const { showThuaDat } = useSelector(state => state.hienTrang);\r\n const { menuDiaGioi, huyenselect } = useSelector(state => state.diaGioi);\r\n const { showQuyHoach, typeActive, isLoading, errorMessage, listLabel, menu } = useSelector(state => state.quyHoach);\r\n const dispatch = useDispatch();\r\n const userInfo = useSelector(state => state.userInfo);\r\n\r\n //Code bổ sung chọn nhiều quy hoạch\r\n const [arrQuyHoach, setQuyHoachArr] = useState([])\r\n\r\n\r\n const onChangeShowQuyHoachStatus = () => {\r\n if(!showQuyHoach){\r\n dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'showThuaDat', value: false });\r\n }\r\n dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'showQuyHoach', value: !showQuyHoach });\r\n };\r\n const onChangeHuyen = (_, option) => {\r\n let huyen = { key: option.key, text: option.text }\r\n let center = {\r\n lat: parseFloat(option.latitude),\r\n lng: parseFloat(option.longitude)\r\n };\r\n onMoveToMap(center)\r\n onLoadXa(huyen)\r\n }\r\n const onChangeShowThuaDatStatus = () => {\r\n // if (!userInfo) {\r\n // alert('Vui lòng đăng nhập đễ xem lớp thửa đất')\r\n // dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'showThuaDat', value: false });\r\n // } else {\r\n dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'showThuaDat', value: !showThuaDat });\r\n // }\r\n\r\n };\r\n\r\n const onChangeTypeQuyHoach = (_, typeActive) => {\r\n typeActive.coordinate = { lat: parseFloat(typeActive['lat']), lng: parseFloat(typeActive['lng']) }\r\n dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'typeActive', value: typeActive });\r\n }\r\n\r\n const onLoadPress = () => {\r\n //Code cũ \r\n if (typeActive.key) {\r\n store.dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'errorMessage', value: \"\" });\r\n if (typeActive.key === 'CTSDDTTCT') {\r\n onLoadQHChiTietTanChau();\r\n onOpenRightPanel('zone')\r\n // Tắt form xem quy hoạch \r\n dispatch({ type: Type.SET_STATE_POPUP_PANEL, route: 'isShowForPopup', value: false });\r\n dispatch({ type: Type.SET_STATE_POPUP_PANEL, route: 'routeContent', value: null });\r\n }\r\n else {\r\n // TPTN_PK2_GIAOTHONG TPTN_PK2_CAPDIEN TPTN_PK2_CAPNUOC\r\n // console.log(typeActive.key)\r\n onLoadQuyHoachPolygon(typeActive.key);\r\n }\r\n }\r\n else {\r\n store.dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'errorMessage', value: \"Vui lòng chọn loại quy hoạch\" });\r\n }\r\n\r\n }\r\n\r\n //Code bổ sung chọn nhiều quy hoạch\r\n const setChonQuyHoach = (item) => {\r\n try {\r\n let arr = arrQuyHoach\r\n if (arr.filter(e => e.key === item.key).length > 0) {\r\n arr = arr.filter(e => e.key !== item.key)\r\n setQuyHoachArr(arr)\r\n }\r\n else {\r\n setQuyHoachArr(arr.push(item))\r\n }\r\n } catch (error) {\r\n\r\n }\r\n }\r\n\r\n const filterMenu = () => {\r\n let menuR = menu.filter((e) => e.Ten.trim() === huyenselect.text.trim())\r\n return menuR\r\n // return menuR.filter(e => checkQuyenXemQuyHoach(e.text, userInfo.Username) === true)\r\n }\r\n\r\n\r\n return (\r\n
\r\n
\r\n Lớp bản đồ\r\n \r\n \r\n {/* */}\r\n \r\n {/* */}\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n {/* ==> Code cũ cần giữ */}\r\n {\r\n filterMenu() && filterMenu().length ?\r\n 520 && window.innerHeight < 589 ? 140 : 230 }}\r\n selectedKey={typeActive.key}\r\n options={filterMenu()}\r\n onChange={onChangeTypeQuyHoach}\r\n />\r\n :\r\n (\r\n showQuyHoach ?\r\n (\r\n \r\n Quy hoạch của {huyenselect.text} đang cập nhật. Vui lòng chọn đơn vị hành chính khác\r\n \r\n )\r\n : null\r\n )\r\n }\r\n\r\n\r\n\r\n {/* {\r\n filterMenu().map(e=>(\r\n {setChonQuyHoach(e)}} label={e.text} />\r\n ))\r\n } */}\r\n\r\n\r\n \r\n \r\n {showQuyHoach ?\r\n \r\n : null\r\n }\r\n {/* {listLabel.length ?\r\n \r\n : null\r\n } */}\r\n \r\n {isLoading ?\r\n \r\n : null\r\n }\r\n {errorMessage ?\r\n \r\n {errorMessage}\r\n \r\n : null\r\n }\r\n \r\n \r\n
\r\n
\r\n )\r\n};\r\n\r\nexport default Layer;\r\n\r\nconst styles = {\r\n container: {\r\n root: {\r\n paddingBottom: 20,\r\n flex: 1,\r\n overflowY: 'scroll',\r\n // maxHeight:'calc(100% - 230px)', \r\n marginRight: -16,\r\n paddingRight: 16,\r\n }\r\n },\r\n checkBoxV2: {\r\n root: {\r\n paddingBottom: 10,\r\n }\r\n },\r\n lableEmpty: {\r\n color: COLOR.darkGray,\r\n fontStyle: 'italic'\r\n }\r\n};\r\n","import React from 'react';\r\nimport {Text, ChoiceGroup, Stack} from '@fluentui/react';\r\nimport {useSelector,useDispatch} from \"react-redux\";\r\nimport Type from \"../../Redux/Type\";\r\n\r\nconst contentExplanation =\r\n 'Khi thay đổi chế độ bản đồ, lớp bản đồ nền sẽ thay đổi, các lớp bản đồ này đều được lấy từ nguồn Google Map.';\r\nconst options = [\r\n { key: 'hybrid', text: 'Xem bằng ảnh vệ tinh'},\r\n { key: 'roadmap', text: 'Xem bằng bản đồ' }\r\n];\r\n\r\nconst MapMode = () =>{\r\n\r\n const {typeMapId} = useSelector(state=>state.mapView);\r\n const dispatch = useDispatch();\r\n const onChangeSatellite = (_,option)=>{\r\n dispatch({type:Type.SET_TYPE_MAP,value:option.key})\r\n };\r\n\r\n\r\n return (\r\n
\r\n
\r\n Chế độ bản đồ\r\n
\r\n {contentExplanation}\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 MapMode;\r\n\r\n","import React from 'react';\r\nimport { Text, ChoiceGroup, Stack } from '@fluentui/react';\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport Type from \"../../Redux/Type\";\r\n\r\nconst contentExplanation =\r\n 'Khi thay đổi sever dữ liêụ sẽ lấy theo server bạn chọn.';\r\nconst options = [\r\n { key: 'tnh', text: 'TNH' },\r\n { key: 'enterprise', text: 'EnterPrise' }\r\n];\r\n\r\nconst Server = () => {\r\n\r\n const { typeServer } = useSelector(state => state.mapView);\r\n const dispatch = useDispatch();\r\n const onChangeSatellite = (_, option) => {\r\n dispatch({ type: Type.SET_TYPE_SERVER, value: option.key })\r\n };\r\n\r\n return (\r\n
\r\n
\r\n Chế độ Server\r\n
\r\n {contentExplanation}\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 Server;\r\n\r\n","import React, { useState } from 'react';\r\nimport { Text, ChoiceGroup, Stack, ComboBox, IComboBoxStyles, Dropdown } from '@fluentui/react';\r\nimport { onMoveToMap } from \"../../Containers/MapView\";\r\nimport setup from '../../Containers/setup'\r\nimport { useSelector } from 'react-redux';\r\nimport { onLoadXa } from '../../Containers/ViTriHanhChinh';\r\nimport { store } from '../../Redux/Store';\r\nimport Type from '../../Redux/Type';\r\n\r\nconst contentExplanation =\r\n 'Bản đồ sẽ chuyển đến khu vực bạn chọn, chức năng này nhằm giúp bạn định hình khu vực hành chính của địa bàn.';\r\n\r\nconst Location = () => {\r\n\r\n const stateDiaGioiHC = useSelector(state => state.diaGioi);\r\n const heightScreenScroll = window.screen.height - (window.screen.height * 0.6);\r\n\r\n const onChangeLocation = (_, option) => {\r\n let center = {\r\n lat: parseFloat(option.latitude),\r\n lng: parseFloat(option.longitude)\r\n };\r\n store.dispatch({ type: Type.SET_DIAGIOI, route: 'xaselect', value: option })\r\n onMoveToMap(center)\r\n\r\n // Tắt form tìm kiếm \r\n store.dispatch({ type: Type.SET_STATE_POPUP_PANEL, route: 'isShowForPopup', value: false });\r\n store.dispatch({ type: Type.SET_STATE_POPUP_PANEL, route: 'routeContent', value: null });\r\n\r\n };\r\n const onChangeHuyen = (_, option) => {\r\n let huyen = { key: option.key, text: option.text }\r\n let center = {\r\n lat: parseFloat(option.latitude),\r\n lng: parseFloat(option.longitude)\r\n };\r\n onMoveToMap(center)\r\n onLoadXa(huyen)\r\n }\r\n return (\r\n
\r\n
\r\n Chuyển vị trí\r\n
\r\n {contentExplanation}\r\n
\r\n
\r\n
\r\n \r\n \r\n {/* */}\r\n\r\n \r\n \r\n e.key === stateDiaGioiHC.huyenselect.key)[0]['arrXa']}\r\n onChange={onChangeLocation}\r\n //label=\"Chuyển vị trí đến :\"\r\n />\r\n \r\n
\r\n
\r\n )\r\n};\r\n\r\nexport default Location;\r\n\r\n\r\nconst styles = {\r\n container: (heightScreenScroll) => ({\r\n root: {\r\n paddingBottom: 20,\r\n flex: 1,\r\n overflowY: 'scroll',\r\n maxHeight: heightScreenScroll,\r\n //maxHeight:'calc(100% - 230px)', \r\n marginRight: -16,\r\n paddingRight: 16,\r\n }\r\n }\r\n )\r\n};\r\n\r\n\r\n\r\n\r\n","import React, { useEffect } from 'react';\r\nimport { Text, Stack, Label, Checkbox, ScrollablePane, Link, Icon } from '@fluentui/react';\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport Type from \"../../Redux/Type\";\r\nimport Viewer from 'react-viewer';\r\nimport { onSetZoomMap } from '../../Containers/MapView';\r\nimport { onMinimizePanel } from '../../Containers/RightPanelAction';\r\n\r\n\r\nconst ZonePanel = () => {\r\n const { showQuyHoach, listLabel, labelActive, typeActive, hienthithongtin, hienthidiem } = useSelector(state => state.quyHoach);\r\n const dispatch = useDispatch();\r\n const [showPhotoViewer, setShowPhotoViewer] = React.useState(false);\r\n const [showInitIndex, setShowInitIndex] = React.useState(0);\r\n const [seconds, setSeconds] = React.useState(4);\r\n\r\n const onChangeShowPhotoViewer = (index) => () => {\r\n if (!showPhotoViewer)\r\n setShowInitIndex(index);\r\n setShowPhotoViewer(!showPhotoViewer);\r\n }\r\n\r\n const onChangeHienThiMoTa = (key) => () => {\r\n onSetZoomMap(17)\r\n dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'hienthidiem', value: key })\r\n }\r\n\r\n const onChangeLayerQuyHoachActive = (layer) => () => {\r\n\r\n if (!labelActive.includes(layer))\r\n dispatch({\r\n type: Type.SET_STATE_QUY_HOACH,\r\n route: 'labelActive',\r\n value: [...labelActive, layer]\r\n })\r\n else\r\n dispatch({\r\n type: Type.SET_STATE_QUY_HOACH,\r\n route: 'labelActive',\r\n value: labelActive.filter(e => e !== layer)\r\n })\r\n };\r\n\r\n\r\n useEffect(() => {\r\n\r\n let myInterval = setInterval(() => {\r\n if (seconds > 0) {\r\n setSeconds(seconds - 1);\r\n }\r\n\r\n }, 1000)\r\n\r\n return () => {\r\n\r\n clearInterval(myInterval);\r\n };\r\n\r\n\r\n }\r\n\r\n );\r\n\r\n useEffect(() => {\r\n if (seconds === 0) {\r\n onMinimizePanel()\r\n document.getElementById('num-countdown').style.display = 'none'\r\n }\r\n\r\n }, [seconds])\r\n\r\n\r\n return (\r\n
\r\n\r\n
\r\n Thông tin quy hoạch\r\n thông tin sẽ ẩn sau {seconds} \r\n \r\n \r\n \r\n {typeActive.text}\r\n \r\n {typeActive.document ?\r\n \r\n \r\n { window.open(typeActive.LINK, '_blank').focus(); }} >{typeActive.document}\r\n \r\n : null\r\n }\r\n {/**/}\r\n {/* */}\r\n {/* */}\r\n {/* {imageTest.map((e,i)=>(*/}\r\n {/* */}\r\n {/* ))}*/}\r\n {/* */}\r\n {/**/}\r\n \r\n \r\n {/* */}\r\n \r\n {hienthithongtin.map(e =>\r\n \r\n )}\r\n\r\n \r\n {/* */}\r\n \r\n \r\n \r\n {/* */}\r\n \r\n\r\n {listLabel.map(e => (\r\n \r\n ))}\r\n \r\n {/* */}\r\n \r\n \r\n
\r\n\r\n \r\n
\r\n )\r\n};\r\n\r\nexport default ZonePanel;\r\n\r\n// const ImageButton = ({onClick,src,alt})=>\r\n// {\r\n// return(\r\n// \r\n// \r\n// \r\n// \r\n// \r\n// )\r\n// }\r\n\r\nconst CheckLabel = ({ label, color, checked }) => {\r\n return (\r\n \r\n \r\n {label}\r\n \r\n )\r\n}\r\n\r\n\r\nconst imageTest = [\r\n {\r\n src: 'http://ilis.tayninh.gov.vn/quyhoach/tayninh/tptayninh/phankhu3/khungkientruc.jpg',\r\n alt: 'Ảnh công bố quy hoạch',\r\n thumbnail: 'https://dl.dropboxusercontent.com/s/zg3w9pnx515pl1b/Icon-57.png'\r\n }\r\n]\r\n","import LinkAPI, { onPostRequest, decodeResponse, onRequestEnterPrise, parseJwt } from './MainController';\r\nimport { store } from '../Redux/Store';\r\nimport Type from \"../Redux/Type\";\r\n\r\nexport function onAuthentication(payload, onSuccess) {\r\n\r\n let onProcessLogin = ({ statusCode, response }) => {\r\n onProcess({ statusCode, response }, onSuccess);\r\n };\r\n onPostRequest(LinkAPI.login, onProcessLogin, payload);\r\n}\r\n\r\nexport function onChangePassWord(payload, onSuccess) {\r\n let onProcessChangePassword = ({ statusCode, response }) => {\r\n onProcess({ statusCode, response }, onSuccess);\r\n };\r\n onPostRequest(LinkAPI.changePassWord, onProcessChangePassword, payload);\r\n}\r\n\r\nconst onProcess = ({ statusCode, response }, onSuccess) => {\r\n if (statusCode === 200) {\r\n localStorage.setItem(LinkAPI.token, response)\r\n let userInfo = decodeResponse(response);\r\n userInfo = JSON.parse(userInfo);\r\n // delete userInfo.Password\r\n store.dispatch({ type: Type.SET_USER_INFO, userInfo });\r\n store.dispatch({ type: Type.SET_TOKEN, token: response });\r\n onSuccess({ statusCode, response });\r\n } else {\r\n onSuccess({ statusCode, response });\r\n }\r\n};\r\n\r\n\r\n\r\nexport const onCallLoginAPI = (onSearch) => {\r\n\r\n};\r\n\r\n\r\nexport const checkExpToken = () => {\r\n let token = localStorage.getItem(LinkAPI.token)\r\n if (token) {\r\n const parseToken = parseJwt(token);\r\n const exp = parseToken && parseToken.exp ? parseToken.exp : 0;\r\n let today = (new Date()).getTime().toString();\r\n today = today.slice(0, 10);\r\n today = today ? parseInt(today) : today\r\n if (exp > today) {\r\n return true\r\n } else {\r\n return false\r\n }\r\n } else {\r\n return false\r\n }\r\n}\r\n\r\n","import React from 'react';\r\nimport { Text, Stack, TextField, Link, PrimaryButton, Dialog, DialogFooter, DialogType, Spinner, MessageBar, MessageBarType, Checkbox, Image, ImageFit } from '@fluentui/react';\r\nimport { onAuthentication, onChangePassWord } from '../../Containers/Login';\r\nimport { store } from \"../../Redux/Store\";\r\nimport { onCloseRightPanel } from \"../../Containers/RightPanelAction\";\r\nimport TNH_SETUP from '../../Containers/setup';\r\n\r\nconst contentExplanation =\r\n 'Đăng nhập bằng tài khoản đã được Quản trị viên cung cấp.';\r\nconst contentExplanationChangePassword =\r\n 'Để đảm bảo an toàn, hệ thống khuyến cáo mật khẩu nên dài trên 8 ký tự, bao gồm ký tự số, ký tự in Hoa và ký tự đặc biệt';\r\n\r\nclass Login extends React.PureComponent {\r\n\r\n state = {\r\n contentDialog: '',\r\n rememberLogin: true,\r\n username: '',\r\n password: '',\r\n lastPassword: '',\r\n confirmPassword: '',\r\n isLogin: this.props.route === 'login',\r\n isChangePasswordSuccess: false,\r\n isLoading: false,\r\n errorMessage: '',\r\n closeAndBack: false\r\n };\r\n\r\n componentDidMount() {\r\n if (!this.state.isLogin)\r\n this.setState({ username: store.getState()['userInfo']['Username'] });\r\n }\r\n\r\n onCallLoginAPI = () => {\r\n // let { username, password } = this.state;\r\n // username = username.trim();\r\n // let payload = {\r\n // Username: username,\r\n // Password: password,\r\n // AppId: '3518',\r\n // };\r\n // this.setState({ isLoading: true });\r\n // let onSuccess = ({ statusCode, response }) => {\r\n // if (statusCode === 200) {\r\n // onCloseRightPanel()\r\n // } else {\r\n // this.setState({ errorMessage: response, isLoading: false })\r\n // }\r\n // };\r\n // onAuthentication(payload, onSuccess);\r\n };\r\n\r\n onChangePassWord = () => {\r\n this.setState({ isLoading: true });\r\n let { lastPassword, password } = this.state;\r\n let payload = {\r\n Password: password,\r\n LastPassword: lastPassword,\r\n };\r\n let onSuccess = ({ statusCode, response }) => {\r\n if (statusCode === 200) {\r\n this.setState({ contentDialog: 'Đổi mật khẩu thành công', closeAndBack: true, isLoading: true })\r\n } else {\r\n this.setState({ errorMessage: response, isLoading: false })\r\n }\r\n };\r\n onChangePassWord(payload, onSuccess);\r\n };\r\n\r\n onOpenDialog = (route) => () => {\r\n let content;\r\n switch (route) {\r\n case \"noAccount\": {\r\n content = 'Thật xin lỗi vì sự bất tiện này, hiện tại do tính bảo mật của dữ liệu, hệ thống chỉ có thể cung cấp tài khoản cho cá nhân, tổ chức liên quan.';\r\n break;\r\n }\r\n case 'forgotPassword': {\r\n content = 'Để lấy lại mật khẩu, xin vui lòng liên hệ với quản trị viên Trung tâm Công nghệ Thông tin - VNPT Cà Mau.';\r\n break;\r\n }\r\n default:\r\n break\r\n }\r\n this.setState({ contentDialog: content });\r\n };\r\n\r\n onCloseDialog = () => {\r\n if (this.state.closeAndBack)\r\n onCloseRightPanel();\r\n else\r\n this.setState({ contentDialog: '' })\r\n };\r\n\r\n onChangeUsername = (_, username) => this.setState({ username });\r\n onChangePassword = (_, password) => this.setState({ password });\r\n onChangeLastPassword = (_, password) => this.setState({ lastPassword: password });\r\n onChangeConfirmPassword = (_, password) => this.setState({ confirmPassword: password });\r\n\r\n onLoginPress = () => {\r\n let { username, password, isLogin, confirmPassword, lastPassword } = this.state;\r\n username = username.trim();\r\n if (isLogin) {\r\n if (username && password) {\r\n //this.onCallLoginAPI();\r\n }\r\n else\r\n this.setState({ errorMessage: 'Vui lòng nhập đầy đủ thông tin' })\r\n }\r\n else {\r\n if (password && lastPassword && lastPassword === confirmPassword)\r\n this.onChangePassWord();\r\n else\r\n this.setState({ errorMessage: 'Vui lòng nhập đầy đủ thông tin' })\r\n }\r\n };\r\n\r\n handleEnterPress = (ent) => {\r\n if (ent.key === 'Enter')\r\n this.onLoginPress()\r\n };\r\n\r\n\r\n render() {\r\n let { isLogin, isLoading, errorMessage } = this.state;\r\n return (\r\n
\r\n
\r\n \r\n {isLogin ? 'Đăng nhập' : 'Đổi mật khẩu'}\r\n \r\n
\r\n {isLogin ? contentExplanation : contentExplanationChangePassword}\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 \r\n \r\n \r\n \r\n \r\n }\r\n {/* \r\n Tải ứng dụng VNPT-ILIS để có trải nghiệm tốt hơn trên thiết bị di độ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 }\r\n}\r\n\r\nexport default Login;\r\n\r\n","export default {\r\n panelWidth:340,\r\n resultItem:308,\r\n warningMessage:340\r\n}\r\n","import React from 'react';\r\nimport COLOR from \"../../Styles/Colors\";\r\nimport {useSelector} from \"react-redux\";\r\n\r\nconst Polygon = ()=> {\r\n const dataTrichDo = useSelector(state=>state.hienTrang.dataTrichDoPicked);\r\n\r\n return (\r\n dataTrichDo ?\r\n
\r\n \r\n \r\n {\r\n dataTrichDo.circle.map((e, i) => (\r\n \r\n ))\r\n }\r\n {\r\n dataTrichDo.dataText.map((e, i) => (\r\n \r\n {e.distance}\r\n \r\n ))\r\n }\r\n \r\n
\r\n :\r\n null\r\n );\r\n}\r\n\r\n\r\nexport default Polygon;\r\n\r\nconst styles = {\r\n polygonContainer: {\r\n position: 'relative',\r\n marginTop: 5,\r\n width: 308,\r\n // backgroundColor:COLOR.blue\r\n },\r\n line: {\r\n fill: 'none',\r\n stroke: COLOR.white,\r\n strokeWidth: 2\r\n },\r\n widthLine: {\r\n position: 'absolute',\r\n fontSize: 9,\r\n bottom: 0\r\n }\r\n}\r\n\r\n\r\n","import React, { useState, forwardRef, useImperativeHandle } from 'react';\r\nimport { Text, Stack, Icon, IconButton, IIconProps, ActionButton } from '@fluentui/react';\r\nimport COLOR from \"../../Styles/Colors\";\r\nimport Type from \"../../Redux/Type\";\r\nimport PolygonTrichDo from \"../Trichdo/Polygon\";\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { onLoadQHChiTietTanChau, onLoadQuyHoachPolygon } from '../../Containers/QuyHoach';\r\nimport { checkQuyenXemQuyHoach, formatNumber } from './../../Containers/MainController';\r\n\r\n\r\nconst ButtonShowQuyHoachIcon: IIconProps = { iconName: 'GenericScan' };\r\n\r\nconst PanelInfo = forwardRef((props, ref) => {\r\n const [data, setData] = useState('');\r\n const [showIndex, setShowIndex] = useState(0);\r\n const [className, setClassName] = useState('animated-panel-info-off');\r\n const listQuyHoach = useSelector(state => state.quyHoachInfo);\r\n\r\n\r\n useImperativeHandle(ref, () => ({\r\n onShowCardInfo(dataFromParent) {\r\n setData(dataFromParent)\r\n if (!data)\r\n setClassName('animated-panel-info')\r\n else if (showIndex)\r\n setShowIndex(0)\r\n else if (!showIndex)\r\n setShowIndex(1)\r\n }\r\n }));\r\n\r\n const onShowOffCardInfo = () => {\r\n setClassName('animated-panel-info-off');\r\n setTimeout(() => setData(''), 300)\r\n }\r\n\r\n\r\n const getQuyHoachList = () => {\r\n let { SOTO, SOTHUA, MaDVHC } = data;\r\n if (SOTO && SOTHUA && MaDVHC) {\r\n let checkExist = listQuyHoach.filter(e => (\r\n e.SoTo === SOTO.trim()\r\n && e.SoThua === SOTHUA.trim()\r\n && e.MaDvhc === MaDVHC.toString().trim()\r\n ));\r\n if (checkExist.length)\r\n return checkExist[0].data;\r\n }\r\n return []\r\n }\r\n\r\n return (\r\n data ?\r\n !showIndex ?\r\n \r\n :\r\n \r\n :\r\n
\r\n )\r\n})\r\n\r\nconst CardInfo1 = props => (\r\n \r\n)\r\n\r\nconst CardInfo2 = props => (\r\n \r\n)\r\n\r\n\r\nconst CardInfo = props => {\r\n const data = props.data;\r\n const listQuyHoach = props.listQuyHoach\r\n const { makerPosition } = useSelector(state => state.hienTrang);\r\n const dispatch = useDispatch();\r\n // const { showQuyHoach, typeActive} = useSelector(state => state.quyHoach);\r\n const userInfo = useSelector(state => state.userInfo);\r\n\r\n const onShowQuyHoach = (key) => {\r\n\r\n // console.log(userInfo)\r\n if (checkQuyenXemQuyHoach(null, userInfo.Username) == true) {\r\n let typeActiveTerm = {};\r\n typeActiveTerm.coordinate = makerPosition || { lat: parseFloat(0), lng: parseFloat(0) }\r\n if (key === 'QH_TCU_SDD_VN2000') // chỗ làm tạm load của tân châu\r\n {\r\n key = 'CTSDDTTCT';\r\n typeActiveTerm.key = key\r\n dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'typeActive', value: typeActiveTerm });\r\n onLoadQHChiTietTanChau();\r\n }\r\n else {\r\n\r\n typeActiveTerm.key = key\r\n dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'typeActive', value: typeActiveTerm });\r\n onLoadQuyHoachPolygon(key)\r\n }\r\n\r\n //\r\n dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'showQuyHoach', value: true });\r\n }\r\n else {\r\n alert(\"Quy hoạch không có thông tin\")\r\n }\r\n\r\n }\r\n\r\n const getQuyHoachList = () => {\r\n let { SOTO, SOTHUA, MaDVHC } = data;\r\n if (SOTO && SOTHUA && MaDVHC) {\r\n let checkExist = listQuyHoach.filter(e => (\r\n e.SoTo === SOTO.trim()\r\n && e.SoThua === SOTHUA.trim()\r\n && e.MaDvhc === MaDVHC.toString().trim()\r\n ));\r\n if (checkExist.length)\r\n return checkExist[0].data;\r\n }\r\n return []\r\n }\r\n\r\n return (\r\n
\r\n
\r\n Thông tin thửa đất\r\n \r\n
\r\n
\r\n \r\n \r\n Bản đồ :\r\n Tờ số {data.SOTO}, thửa số {data.SOTHUA} \r\n \r\n {/* Diện tích :\r\n {data.DienTich} \r\n ㎡\r\n */}\r\n \r\n \r\n Diện tích :\r\n {data.DienTich} \r\n ㎡\r\n \r\n \r\n\r\n \r\n Mục đích sử dụng :\r\n {\r\n Array.isArray(data.MucDichSDD) && data.MucDichSDD.length ?\r\n data.MucDichSDD.map((element, i) => (\r\n \r\n
\r\n {element.name}\r\n \r\n ))\r\n :\r\n Đang cập nhật\r\n }\r\n \r\n \r\n Địa chỉ : \r\n {data.DiaChiThuaDat ? data.DiaChiThuaDat : \"Đang cập nhật\"}\r\n \r\n \r\n \r\n {/* \r\n \r\n Quy hoạch\r\n {listQuyHoach.length > 0 ?\r\n { onShowQuyHoach(listQuyHoach[0][\"maquyhoach\"]) }}\r\n >\r\n Xem quy hoạch\r\n : null\r\n }\r\n\r\n */}\r\n\r\n\r\n Quy hoạch sử dụng đất: \r\n {\"Đang cập nhật\"}\r\n {/* {listQuyHoach.length ?\r\n listQuyHoach.map((element, i) => {\r\n if (element && element.maquyhoach !== \"KHSDD\")\r\n return (\r\n \r\n
\r\n {element.quyhoach}\r\n \r\n )\r\n })\r\n : Đang cập nhật\r\n } */}\r\n \r\n\r\n Kế hoạch sử dụng đất: \r\n {\"Đang cập nhật\"}\r\n {/* {listQuyHoach.length ?\r\n listQuyHoach.map((element, i) => {\r\n if (element && element.maquyhoach === \"KHSDD\")\r\n return (\r\n \r\n
\r\n {element.quyhoach}\r\n \r\n )\r\n })\r\n : Đang cập nhật\r\n } */}\r\n\r\n\r\n\r\n \r\n \r\n Trạng thái pháp lý:\r\n \r\n {data.TrangThaiThuaDat ? : null}\r\n {data.TrangThaiThuaDat ? data.TrangThaiThuaDat : \"Đang cập nhật\"}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Giá đất (Tham khảo)\r\n \r\n {\r\n data.giadat && data.giadat != 0 ?\r\n \r\n {\"Tuyến đường: \" + ((data.tentuyendu && data.tentuyendu != \"NULL\") ? data.tentuyendu : \"\")}\r\n {\"Đoạn đường: \" + ((data.doanduongd && data.doanduongd != \"NULL\") ? data.doanduongd : \"\")}\r\n {(\"Giá tuyến: \" + (data.gia_tuyen ? (formatNumber(data.gia_tuyen) + ' VND') : \"\"))}\r\n {/* {(\"Giá đất tham khảo: \" + formatNumber(data.giadat) + ' VND')} */}\r\n \r\n :\r\n \r\n Đang cập nhật\r\n \r\n }\r\n\r\n {/* Giá đất (tham khảo): {data.giadat && data.giadat != 0 ? (formatNumber(data.giadat) + ' VND') : \"Đang cập nhật\"} */}\r\n {/* \r\n \r\n {data.TrangThaiThuaDat}\r\n */}\r\n \r\n {/* {data.Ten1 ?\r\n \r\n \r\n \r\n {data.Ten1}\r\n \r\n SN {data.NamSinh1}\r\n \r\n {data.DiaChi1}\r\n \r\n \r\n \r\n : null\r\n } */}\r\n {/* {data.Ten2 ?\r\n \r\n \r\n \r\n {data.Ten2}\r\n \r\n SN {data.NamSinh2}\r\n \r\n {data.DiaChi2}\r\n \r\n \r\n \r\n : undefined\r\n } */}\r\n \r\n {/**/}\r\n Bản đồ thửa đất\r\n \r\n \r\n \r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default PanelInfo;\r\n\r\nconst styles = {\r\n infoView: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n },\r\n infoHeader: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n paddingTop: 10,\r\n marginBottom: 5\r\n },\r\n infoContainer: {\r\n maxHeight: 300,\r\n overflowY: 'scroll',\r\n paddingBottom: 30,\r\n marginRight: -16,\r\n paddingRight: 16\r\n },\r\n closeInfo: {\r\n root: {\r\n height: 40,\r\n width: 40,\r\n borderRadius: 0,\r\n marginRight: -16\r\n },\r\n icon: {\r\n color: '#fff',\r\n fontSize: 12,\r\n opacity: .8\r\n },\r\n rootHovered: {\r\n backgroundColor: 'transparent'\r\n },\r\n iconHovered: {\r\n opacity: 1\r\n }\r\n },\r\n btnStyles: {\r\n rootHovered: {\r\n color: 'blue'\r\n },\r\n icon: { color: 'white', fontSize: 20 },\r\n iconHovered: { color: 'blue' },\r\n root: {\r\n color: COLOR.white\r\n }\r\n },\r\n infoTitle: {\r\n root: {\r\n color: COLOR.white,\r\n fontWeight: 'bold',\r\n fontSize: 14,\r\n flex: 1\r\n }\r\n },\r\n squareIcon: (color) => ({\r\n height: 12,\r\n width: 12,\r\n backgroundColor: color || COLOR.white,\r\n borderRadius: 1,\r\n border: '1px solid #fff',\r\n marginRight: 5\r\n }),\r\n text: {\r\n root: {\r\n color: COLOR.white\r\n }\r\n },\r\n titleIcon: {\r\n root: {\r\n color: COLOR.white,\r\n marginRight: 5\r\n }\r\n },\r\n gender: {\r\n root: {\r\n fontSize: 11,\r\n color: COLOR.white\r\n }\r\n },\r\n infoName: {\r\n root: {\r\n fontWeight: 'bold',\r\n color: COLOR.white\r\n }\r\n },\r\n infoAccount: {\r\n root: {\r\n fontSize: 14,\r\n color: COLOR.white,\r\n marginRight: 5,\r\n }\r\n }\r\n};\r\n\r\n","import React, { useEffect, useRef } from 'react';\r\nimport { Text, Stack, Icon, List, Link, FocusZone, FocusZoneDirection } from '@fluentui/react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { Card } from '@uifabric/react-cards';\r\nimport COLOR from \"../../Styles/Colors\";\r\nimport Layout from \"../../Styles/Layout\";\r\nimport PanelInfo from \"./PanelInfo\";\r\nimport { getPolygonByToThua, getPolygonByToThuaEnter } from \"../../Containers/MapView\";\r\nimport { getInfoByThuaDat } from '../../Containers/Search';\r\nimport { getQuyHoachInfo } from './../../Containers/QuyHoach';\r\nimport Type from '../../Redux/Type';\r\n\r\n\r\nconst Result = () => {\r\n\r\n const cardInfoLayout = useRef(null);\r\n const { listResult, modeSearch } = useSelector(state => state.searchState);\r\n const dispatch = useDispatch()\r\n\r\n const onCardItemPress = (item) => () => {\r\n ItemChecked(item)\r\n };\r\n\r\n const ItemChecked = (item) => {\r\n let dataLoadPolygon = {\r\n SoTo: item.SOTO,\r\n SoThua: item.SOTHUA,\r\n MaDvhc: item.MADVHC,\r\n TenChu: '',\r\n idThuaDat: item.Idthuadat\r\n };\r\n // Ẩn lớp quy hoạch\r\n // dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'typeActive', value: null });\r\n dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'showQuyHoach', value: false });\r\n\r\n getPolygonByToThua(dataLoadPolygon)\r\n //getPolygonByToThuaEnter(dataLoadPolygon)\r\n getQuyHoachInfo(dataLoadPolygon);\r\n\r\n cardInfoLayout.current.onShowCardInfo(item);\r\n }\r\n\r\n useEffect(() => {\r\n if (modeSearch === 'byPosition' && listResult.length > 0) {\r\n let item = listResult[0]\r\n ItemChecked(item)\r\n dispatch({ type: Type.SET_SEARCH, route: 'pickMapOn', value: false });\r\n dispatch({ type: Type.SET_SEARCH, route: 'markerPosition', value: null });\r\n }\r\n }, [])\r\n\r\n const _renderItem = (item, index) => {\r\n return (\r\n \r\n )\r\n };\r\n\r\n\r\n return (\r\n\r\n
\r\n
\r\n Kết quả\r\n {'( ' + listResult.length + ' thửa đất )'}\r\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 CardItemPerson = props => {\r\n const { item } = props;\r\n return (\r\n \r\n {/* {item.Ten1 || item.Ten2 ?\r\n \r\n \r\n \r\n \r\n {item.Ten1}\r\n \r\n \r\n {item.NamSinh1}\r\n \r\n \r\n {item.DiaChi1}\r\n \r\n \r\n \r\n {item.Ten2 ?\r\n \r\n \r\n \r\n {item.Ten2}\r\n \r\n \r\n {item.NamSinh2}\r\n \r\n \r\n {item.DiaChi2}\r\n \r\n \r\n \r\n : undefined\r\n }\r\n \r\n : null\r\n } */}\r\n \r\n \r\n \r\n Bản đồ : \r\n Tờ số {item.SOTO}, Thửa số {item.SOTHUA}\r\n {/* \r\n {item.DiaChiThuaDat} */}\r\n \r\n \r\n \r\n \r\n \r\n {item.DiaChiThuaDat}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n {/* Bản đồ : \r\n Tờ {item.SOTO}, Thửa {item.SOTHUA} */}\r\n \r\n \r\n Diện tích:\r\n {item.DienTich}\r\n m2\r\n \r\n \r\n \r\n \r\n )\r\n};\r\n\r\nexport default Result;\r\n\r\nconst styles = {\r\n cardContainer: {\r\n root: {\r\n width: Layout.resultItem,\r\n maxWidth: Layout.resultItem,\r\n backgroundColor: COLOR.white,\r\n cursor: 'pointer',\r\n paddingTop: 5,\r\n marginBottom: 16\r\n }\r\n },\r\n resultStack: {\r\n root: {\r\n paddingBottom: 20,\r\n overflow: 'scroll',\r\n position: 'absolute',\r\n bottom: 0,\r\n left: 0,\r\n right: 0,\r\n top: 68,\r\n paddingLeft: 16\r\n }\r\n },\r\n footerCardSectionStyles: {\r\n root: {\r\n borderBottom: '1px solid #F3F2F1',\r\n },\r\n },\r\n titleFooter: {\r\n fontSize: 13,\r\n color: COLOR.darkGray\r\n },\r\n contentFooter: {\r\n fontSize: 13,\r\n color: COLOR.black,\r\n fontWeight: 'bold'\r\n },\r\n accountIcon: isFemale => ({\r\n root: {\r\n color: isFemale ? COLOR.blue : '#CB511B'\r\n }\r\n })\r\n};\r\n\r\n","export const dsTrangthaiphaply = [\r\n {key:\t1\t, value:\"Chưa đăng ký\", icon:\"AlertSolid\" , color:\"#d72d2d\" },\r\n {key:\t2\t, value:\"Chưa đủ điều kiện cấp giấy chứng nhận\", icon:\"AlertSettings\" , color:\"#db6712\"},\r\n {key:\t3\t, value:\"Không đủ điều kiện cấp giấy chứng nhận\", icon:\"Blocked2Solid\" , color:\"#d72d2d\"},\r\n {key:\t4\t, value:\"Đủ điều kiện cấp giấy chứng nhận\", icon:\"CompletedSolid\" , color:\"rgb(236, 113, 52)\" },\r\n {key:\t5\t, value:\"Đã cấp giấy chứng nhận\" , icon:\"CompletedSolid\" , color:\"#007B72\"},\r\n {key:\t6\t, value:\"Thế chấp\", icon:\"Bank\" , color:\"#1869b1\" },\r\n {key:\t7\t, value:\"Góp vốn\", icon:\"Commitments\" , color:\"#007B72\" },\r\n {key:\t8\t, value:\"Tranh chấp\", icon:\"Combine\" , color:\"#d72d2d\" },\r\n {key:\t9\t, value:\"Vướng quy hoạch\", icon:\"LogRemove\" , color:\"#d72d2d\" },\r\n {key:\t10, value:\t\"Nợ tiền sử dụng đất\", icon:\"Money\" , color:\"#d72d2d\" },\r\n {key:\t11, value:\"Trạng thái khác\", icon:\"More\" , color:\"#3a3f44\" },\r\n {key:\t0\t, value:\"Chưa xác định\", icon:\"More\" , color:\"#3a3f44\" }\r\n]\r\n\r\n","import React from 'react';\r\nimport { Text, Stack, Icon, Persona, PersonaInitialsColor, PersonaSize, ScrollablePane, Link, ActionButton } from '@fluentui/react';\r\nimport COLOR from \"../../Styles/Colors\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { QD_GiaDat, formatNumber } from \"../../Containers/MainController\";\r\nimport { dsTrangthaiphaply } from '../../Assets/trangthaiphaply';\r\n\r\n\r\nconst Info = () => {\r\n const listQuyHoach = useSelector(state => state.quyHoachInfo);\r\n const data = useSelector(state => state.hienTrang.dataThuaDatPicked);\r\n const giadat = useSelector(state => state.giadat.giadat);\r\n\r\n\r\n\r\n\r\n const getQuyHoachList = () => {\r\n let { SOTO, SOTHUA, MaDVHC } = data;\r\n if (SOTO && SOTHUA && MaDVHC) {\r\n let checkExist = listQuyHoach.filter(e => (\r\n e.SoTo === SOTO.trim()\r\n && e.SoThua === SOTHUA.trim()\r\n && e.MaDvhc === MaDVHC.toString().trim()\r\n ));\r\n if (checkExist.length)\r\n return checkExist[0].data;\r\n }\r\n return []\r\n }\r\n const getICON = () => {\r\n let tt = dsTrangthaiphaply.filter(e => e.key === data.MaTrangthai)\r\n\r\n if (tt.length > 0)\r\n return ()\r\n else\r\n return ()\r\n }\r\n\r\n\r\n return (\r\n
\r\n \r\n
\r\n Thông tin\r\n \r\n \r\n \r\n \r\n Thông tin chung\r\n {\r\n getICON()\r\n }\r\n \r\n \r\n Tờ bản đồ số\r\n {data.SOTO}\r\n \r\n \r\n Thửa số\r\n {data.SOTHUA}\r\n \r\n \r\n Diện tích\r\n {data.DienTich}\r\n \r\n \r\n {/* \r\n Ngày cấp\r\n {data.NgayCapSoDo || 'Đang cập nhật'}\r\n */}\r\n \r\n {\r\n \r\n \r\n \r\n Mục đích sử dụng\r\n \r\n {\r\n (Array.isArray(data.MucDichSDD) && data.MucDichSDD.length) ?\r\n data.MucDichSDD.map((element, i) => (\r\n \r\n \r\n {element.name}\r\n \r\n ))\r\n :\r\n Đang cập nhật\r\n }\r\n \r\n }\r\n \r\n \r\n \r\n Địa chỉ thửa đất\r\n \r\n {data.DiaChiThuaDat ? data.DiaChiThuaDat : \"Đang cập nhật\"}\r\n \r\n \r\n \r\n \r\n Trạng thái pháp lý\r\n \r\n {\r\n data.TrangThaiThuaDat ?\r\n \r\n {data.TrangThaiThuaDat}\r\n \r\n \r\n :\r\n \r\n Đang cập nhật\r\n \r\n }\r\n\r\n \r\n\r\n \r\n \r\n \r\n Quy hoạch sử dụng đất\r\n \r\n {/* {\"Đang cập nhật\"} */}\r\n {getQuyHoachList().length && getQuyHoachList().filter(e => (e && e.maquyhoach !== \"KHSDD\")).length ?\r\n getQuyHoachList().map((element, i) => {\r\n if (element && element.maquyhoach !== \"KHSDD\")\r\n return (\r\n \r\n \r\n {element.quyhoach}\r\n \r\n )\r\n })\r\n :\r\n Đang cập nhật\r\n }\r\n \r\n\r\n \r\n \r\n \r\n Kế hoạch sử dụng đất\r\n \r\n {/* {\"Đang cập nhật\"} */}\r\n {getQuyHoachList().length ?\r\n getQuyHoachList().map((element, i) => {\r\n if (element && element.maquyhoach === \"KHSDD\")\r\n return (\r\n \r\n \r\n {element.quyhoach}\r\n \r\n )\r\n })\r\n :\r\n Đang cập nhật\r\n }\r\n \r\n\r\n \r\n \r\n \r\n Giá đất (Tham khảo)\r\n \r\n {\r\n data.giadat && data.giadat != 0 ?\r\n \r\n {\"Tuyến đường: \" + ((data.tentuyendu && data.tentuyendu != \"NULL\") ? data.tentuyendu : \"\")}\r\n {\"Đoạn đường: \" + ((data.doanduongd && data.doanduongd != \"NULL\") ? data.doanduongd : \"\")}\r\n {(\"Giá tuyến: \" + (data.gia_tuyen ? (formatNumber(data.gia_tuyen) + ' VND') : \"\"))}\r\n {/* {(\"Giá đất tham khảo: \" + formatNumber(data.giadat) + ' VND')} */}\r\n \r\n :\r\n \r\n Đang cập nhật\r\n \r\n }\r\n\r\n \r\n {/* {data.Ten1 || data.Ten2 ?\r\n \r\n \r\n \r\n Chủ sử dụng\r\n \r\n \r\n {data.Ten1 ?\r\n \r\n \r\n \r\n {data.Ten1}\r\n \r\n \r\n \r\n \r\n {data.NamSinh1}\r\n \r\n \r\n \r\n \r\n \r\n {data.DiaChi1}\r\n \r\n \r\n \r\n : null\r\n }\r\n\r\n {data.Ten2 ?\r\n \r\n \r\n \r\n {data.Ten2}\r\n \r\n \r\n \r\n \r\n {data.NamSinh2}\r\n \r\n \r\n \r\n \r\n \r\n {data.DiaChi2}\r\n \r\n \r\n \r\n : null\r\n }\r\n {\r\n !giadat ? null :\r\n \r\n \r\n \r\n \r\n \r\n Giá đất được tham khảo theo: \r\n \r\n \r\n { window.open(\"https://congbao.tayninh.gov.vn/Uploads/VanBan/VanBanCongBao/2020/9/35%20qppl.signed.pdf\") }}>{QD_GiaDat.QD} {QD_GiaDat.HIEULUC ? 'Hiệu lực: ' + QD_GiaDat.HIEULUC : ''}\r\n \r\n \r\n {\r\n giadat.map((item, index) => {\r\n if (item.GiaTri)\r\n return (\r\n \r\n \r\n \r\n {formatNumber(item.GiaTri)} vnđ\r\n \r\n {\r\n !(item.MaLoaiDat || item.KhuVuc || item.TenViTri) ? null :\r\n \r\n {item.MaLoaiDat ? 'Loại đất: ' + item.MaLoaiDat + ', ' : null}\r\n {item.KhuVuc ? item.KhuVuc + ', ' : null}\r\n {item.TenViTri ? item.TenViTri : null}\r\n \r\n }\r\n {\r\n !(item.TenDoanDuong || item.TenDuong) ? null :\r\n \r\n {item.TenDoanDuong ? item.TenDoanDuong + ', ' : null}\r\n {item.TenDuong ? item.TenDuong : null}\r\n \r\n }\r\n \r\n )\r\n })\r\n }\r\n \r\n }\r\n \r\n \r\n : null\r\n } */}\r\n \r\n
\r\n
\r\n
\r\n )\r\n};\r\n\r\nexport default Info;\r\n\r\nconst styles = {\r\n infoView: {\r\n root: {\r\n paddingBottom: 20,\r\n flex: 1,\r\n marginRight: -16,\r\n paddingRight: 16\r\n }\r\n },\r\n titleIcon: {\r\n root: {\r\n color: COLOR.darkGray\r\n }\r\n },\r\n titleGia: {\r\n root: {\r\n color: COLOR.orange,\r\n }\r\n },\r\n title: {\r\n root: {\r\n color: COLOR.black,\r\n fontWeight: 'bold',\r\n fontFamily: 'Open Sans'\r\n }\r\n },\r\n lable: {\r\n root: {\r\n color: COLOR.black,\r\n fontFamily: 'Open Sans'\r\n }\r\n },\r\n contentGia: {\r\n root: {\r\n color: COLOR.black,\r\n fontWeight: 'bold',\r\n fontFamily: 'Open Sans'\r\n }\r\n },\r\n content: {\r\n root: {\r\n width: 100,\r\n fontFamily: 'Open Sans'\r\n }\r\n },\r\n squareContent: {\r\n root: {\r\n // color:COLOR.black,\r\n marginLeft: 8,\r\n color: '#007B72',\r\n fontWeight: 'bold',\r\n fontFamily: 'Open Sans'\r\n }\r\n },\r\n strongContent: {\r\n root: {\r\n color: '#007B72',\r\n marginLeft: 8,\r\n fontWeight: 'bold',\r\n fontFamily: 'Open Sans'\r\n }\r\n },\r\n verifyIcon: {\r\n root: {\r\n color: '#007B72',\r\n fontSize: 12\r\n }\r\n },\r\n squareIcon: (color) => ({\r\n root: {\r\n color,\r\n fontSize: 10,\r\n marginTop: 4,\r\n }\r\n }),\r\n personName: {\r\n root: {\r\n fontWeight: 'bold',\r\n fontFamily: 'Open Sans'\r\n }\r\n }\r\n};\r\n\r\n","import React, { useState } from 'react';\r\nimport {\r\n Text, Stack, Link, PersonaSize, Persona, PersonaPresence,\r\n Dialog, DialogFooter, PrimaryButton, DefaultButton, DialogType, Image, ImageFit\r\n} from '@fluentui/react';\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport URL from \"../../Containers/MainController\";\r\nimport Type from \"../../Redux/Type\";\r\nimport { onCloseRightPanel, onOpenRightPanel } from \"../../Containers/RightPanelAction\";\r\nimport TNH_SETUP from '../../Containers/setup';\r\n\r\n\r\nconst Account = () => {\r\n const dispatch = useDispatch();\r\n const [hideDialog, setHideDialog] = useState(true);\r\n const userInfo = useSelector(state => state.userInfo)\r\n\r\n const onHideDialog = () => setHideDialog(true);\r\n const onShowDialog = () => setHideDialog(false);\r\n\r\n const onSignOut = () => {\r\n localStorage.removeItem(URL.token);\r\n dispatch({ type: Type.SET_TOKEN, token: '' })\r\n dispatch({ type: Type.SET_USER_INFO, userInfo: '' });\r\n onCloseRightPanel();\r\n }\r\n\r\n const onChangePasswordPress = () => onOpenRightPanel('changePassword')\r\n\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n {userInfo.FullName}\r\n {userInfo.Username}\r\n \r\n \r\n Đổi mật khẩu\r\n Đăng xuất\r\n \r\n {/* \r\n Tải ứng dụng VNPT-ILIS để có trải nghiệm tốt hơn trên thiết bị di độ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 )\r\n};\r\n\r\nexport default Account;\r\n\r\nconst styles = {\r\n container: {\r\n root: {\r\n marginTop: 30,\r\n }\r\n }\r\n};\r\n\r\n","import { Stack, Text,Label,TextField, CommandBarButton, TooltipHost, DirectionalHint, FontIcon,IChoiceGroupOption, ChoiceGroup } from '@fluentui/react'\r\nimport React, { Fragment, useState,useRef, useEffect } from 'react'\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport Type from '../../../Redux/Type';\r\nimport * as XLSX from \"xlsx\";\r\nimport { DichChuyenDuong, LineToPolyGon } from '../../../Containers/GiaoCatPolygons';\r\nimport { onMoveToMap } from '../../../Containers/MapView';\r\n\r\nconst sheetNames = [\"Info\",\"Coordinates\"]\r\n\r\nconst options: IChoiceGroupOption[] = [\r\n {\r\n key: 'DAT',\r\n imageSrc: process.env.PUBLIC_URL + '/images/icons/plot.png',\r\n imageAlt: 'Quy hoạch đất',\r\n selectedImageSrc:process.env.PUBLIC_URL + '/images/icons/plot-active.png',\r\n imageSize: { width: 24, height: 24 },\r\n text: '',\r\n },\r\n {\r\n key: 'DNG',\r\n imageSrc:process.env.PUBLIC_URL + '/images/icons/street.png',\r\n imageAlt: 'Quy Hoạch Đường',\r\n selectedImageSrc: process.env.PUBLIC_URL + '/images/icons/street-active.png',\r\n imageSize: { width: 24, height: 24},\r\n text: '',\r\n },\r\n];\r\n\r\nconst DrawingManager = () => {\r\n const dispatch = useDispatch();\r\n const {listPoints, textInput, textInputLoGioi} = useSelector(state=>state.drawingTool);\r\n const txtInput = useRef()\r\n const txtRongDuong= useRef()\r\n // Loại quy hoạch phân DAT: đất , \r\n const [loaiQuyHoach, setLoaiQuyHoach] = useState('DAT');\r\n\r\n \r\n const setTitle = () =>{\r\n try {\r\n let arrImg = document.getElementById('chose-gr-v').getElementsByTagName('img')\r\n for(let i = 0; i< arrImg.length; i++){\r\n if(arrImg[i].src.includes('plot'))\r\n arrImg[i].setAttribute('title', 'Vẽ Quy Hoạch Đất')\r\n else\r\n arrImg[i].setAttribute('title', 'Vẽ Quy Hoạch Đường')\r\n }\r\n } catch (error) {\r\n \r\n }\r\n \r\n }\r\n useEffect (() => {\r\n dispatch({ type: Type.SET_MAIN_MESSAGE, message: null});\r\n setTitle()\r\n },[])\r\n\r\n const onVeQuyHoach = () => {\r\n try {\r\n let toaDo = txtInput.current.value\r\n if(!toaDo){\r\n alert('Vui lòng nhập danh sách tọa độ điểm quy hoạch')\r\n }\r\n else{\r\n let arrToaDo = toaDo.split('|')\r\n if(loaiQuyHoach === 'DAT')\r\n veQHThuaDat(arrToaDo)\r\n else if(loaiQuyHoach === 'DNG')\r\n veQHDuong(arrToaDo)\r\n }\r\n } catch (error) {\r\n console.log(error)\r\n alert('Lỗi khi thực hiện vẽ quy hoạch, vui lòng kiểm tra lại thông tin nhập')\r\n }\r\n \r\n }\r\n\r\n const veQHDuong = (arrToaDo) =>{\r\n if(arrToaDo.length < 2 ){\r\n return alert('Số điểm tọa độ không đủ để vẽ quy hoạch')\r\n }\r\n if(textInputLoGioi === null){\r\n return alert('Chưa nhập lộ giới')\r\n }\r\n dispatch({ type: Type.SET_DRAWING_POINT,evt: [] })\r\n let arrToaDoN = arrToaDo.map(e=>{\r\n\r\n let points = e.replace('(','').replace(')','').split(',')\r\n \r\n return {lat: parseFloat(points[0]) , lng: parseFloat(points[1])}\r\n })\r\n dispatch({ type: Type.SET_DRAWING_LINE,evt: arrToaDoN })\r\n arrToaDoN = arrToaDo.map(e=>{\r\n let points = e.replace('(','').replace(')','').split(',')\r\n return [parseFloat(points[0]) , parseFloat(points[1])]\r\n })\r\n let line1 = DichChuyenDuong(arrToaDoN,textInputLoGioi/2)\r\n let line2 = DichChuyenDuong(arrToaDoN,textInputLoGioi/2 * -1)\r\n line2 = line2.reverse();\r\n line1 = line1.concat(line2)\r\n arrToaDoN = line1.map(e=>{\r\n return {lat: e[0] , lng: e[1]}\r\n })\r\n dispatch({ type: Type.SET_DRAWING_POINT,evt: arrToaDoN })\r\n onMoveToMap(arrToaDoN[0])\r\n }\r\n\r\n const veQHThuaDat = (arrToaDo) =>{\r\n if(arrToaDo.length < 3 ){\r\n alert('Số điểm tọa độ không đủ để vẽ quy hoạch')\r\n }\r\n else{\r\n dispatch({ type: Type.SET_DRAWING_POINT,evt: [] })\r\n let arrToaDoN = arrToaDo.map(e=>{\r\n\r\n let points = e.replace('(','').replace(')','').split(',')\r\n \r\n return {lat: parseFloat(points[0]) , lng: parseFloat(points[1])}\r\n })\r\n dispatch({ type: Type.SET_DRAWING_POINT,evt: arrToaDoN })\r\n onMoveToMap(arrToaDoN[0])\r\n }\r\n }\r\n const getFileTemplate =() =>{\r\n let fileLink = process.env.PUBLIC_URL + loaiQuyHoach === 'DAT' ? '/template-file/template_import_quyhoach.xlsx' : '/template-file/template_import_quyhoach-line.xlsx'\r\n const link = document.createElement('a')\r\n link.href = fileLink;\r\n link.download = \"template_import_quyhoach\";\r\n document.body.appendChild(link)\r\n link.click()\r\n document.body.removeChild(link) \r\n }\r\n const ChangeLoaiVe = (e,item) =>{\r\n clearAllData()\r\n setLoaiQuyHoach(item.key)\r\n }\r\n const onCheckQuyHoach = () =>{\r\n if(listPoints.length >0)\r\n dispatch({type:Type.SET_SHOW_MAIN_MODAL})\r\n else\r\n alert('Thực hiện vẽ quy hoạch trước khi xem thông tin')\r\n }\r\n const uploadFile =(event)=>{\r\n try {\r\n \r\n let file = event.target.files[0];\r\n \r\n if (file) {\r\n \r\n var reader = new FileReader();\r\n reader.onload = (evt) => {\r\n const bstr = evt.target.result;\r\n const wb = XLSX.read(bstr, { type: \"binary\" });\r\n let sheets = wb.SheetNames\r\n for( let i = 0; i < sheetNames.length; i++){\r\n const wsname = sheets.filter(e=>e ===sheetNames[i] )[0];\r\n if(!wsname){\r\n alert(\"File nhập không đúng , vui lòng kiểm tra lại\")\r\n break;\r\n }\r\n const ws = wb.Sheets[wsname];\r\n const data = XLSX.utils.sheet_to_json(ws);\r\n if(wsname === 'Info'){\r\n }\r\n else if(wsname=== 'Coordinates'){\r\n if(!data || data.length < 2 ){\r\n alert('Số tọa độ phải từ 3 điểm trở lên!')\r\n }\r\n else{\r\n dispatch({ type: Type.SET_DRAWING_TEXT_INPUT,evt: '' })\r\n let count = data.length\r\n let strNew = \"\"\r\n data.forEach((e,index)=>{\r\n strNew += index === count -1 ? `(${e.Lat},${e.Lng})` : `(${e.Lat},${e.Lng}) | `\r\n })\r\n dispatch({ type: Type.SET_DRAWING_TEXT_INPUT,evt: strNew })\r\n \r\n }\r\n }\r\n \r\n }\r\n };\r\n reader.readAsBinaryString(file)\r\n }\r\n } catch (error) {\r\n alert(\"Lỗi trong quá trình xử lý, vui lòng kiểm tra lại dữ liệu\")\r\n }\r\n \r\n }\r\n const clearAllData =() =>{\r\n dispatch({ type: Type.SET_DRAWING_TEXT_INPUT,evt: null })\r\n dispatch({ type: Type.SET_DRAWING_TEXT_INPUT_LOGIOI,evt: null })\r\n dispatch({ type: Type.SET_DRAWING_LINE,evt: [] })\r\n dispatch({ type: Type.SET_DRAWING_POINT,evt: [] })\r\n }\r\n return (\r\n \r\n
\r\n
\r\n Vẽ 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 !isNaN(+value) === true ? dispatch({ type: Type.SET_DRAWING_TEXT_INPUT_LOGIOI,evt: value }) : null}\r\n ref={txtRongDuong}\r\n disabled={loaiQuyHoach === 'DAT'} placeholder=\"Độ rộng (mét)\" /> \r\n \r\n \r\n \r\n {dispatch({ type: Type.SET_DRAWING_TEXT_INPUT,evt: value })} }\r\n value={textInput}\r\n ref={txtInput}\r\n placeholder={'(lat,lng) | (lat,lng)...'}\r\n description={`Nhập tọa độ theo thứ tự ${loaiQuyHoach === 'DAT' ? 'đa giác' :'đường thẳng' }, mỗi điểm cách nhau dấu < | > `} multiline rows={7} /> \r\n \r\n \r\n \r\n \r\n onVeQuyHoach()}\r\n text={'Vẽ quy hoạch'} styles={styles.buttonDraw} />\r\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 DrawingManager\r\n\r\nconst styles = {\r\n textbox: {\r\n root: {\r\n width: '100%'\r\n },\r\n field:{\r\n fontSize:12\r\n }\r\n },\r\n buttonDelete:{\r\n root: {\r\n marginLeft: '0px !important',\r\n padding: '6px 5px'\r\n,\r\n borderRadius: '5px',\r\n backgroundColor: 'transparent',\r\n },\r\n icon: {\r\n fontSize: 16,\r\n color: '#515151'\r\n }\r\n },\r\n choseGroup: {\r\n flexContainer: [\r\n {\r\n selectors: {\r\n \".ms-ChoiceField-innerField\": {\r\n paddingRight: 40,\r\n paddingLeft: 11\r\n },\r\n \".ms-ChoiceField-labelWrapper\":{\r\n height: 5\r\n }\r\n }\r\n }\r\n ]\r\n },\r\n buttonDraw:{\r\n root: {\r\n padding: '6px 5px',\r\n borderRadius: '5px',\r\n backgroundColor: '#3684c8',\r\n marginRight: 3\r\n },\r\n rootHovered:{\r\n backgroundColor: '#60a5e1',\r\n },\r\n label: {\r\n fontSize: 12,\r\n color: 'white'\r\n },\r\n iconHovered: {\r\n fontSize: 16,\r\n color: 'white'\r\n },\r\n icon: {\r\n fontSize: 16,\r\n color: 'white'\r\n }\r\n }\r\n}\r\n\r\n// const CustomLabel = (props: ITextFieldProps): JSX.Element => {\r\n// const [isCalloutVisible, { toggle: toggleIsCalloutVisible }] = useBoolean(false);\r\n// const descriptionId: string = useId('description');\r\n// const iconButtonId: string = useId('iconButton');\r\n \r\n// return (\r\n// <>\r\n// \r\n// {props.label}\r\n// \r\n// \r\n// {isCalloutVisible && (\r\n// \r\n// \r\n// The custom label includes an IconButton that displays this Callout on click.\r\n// Close\r\n// \r\n// \r\n// )}\r\n// \r\n// );\r\n// };","import React from 'react';\r\nimport Search from \"../Search/Search\";\r\nimport Layer from \"../QuyHoach/Layer\";\r\nimport MapMode from \"../Menu/MapMode\";\r\nimport Server from \"../Menu/Server\";\r\nimport Location from \"../Menu/Location\";\r\nimport ZonePanel from \"../QuyHoach/ZonePanel\";\r\nimport Login from \"../Profile/Login\";\r\nimport Result from \"../Search/Result\";\r\nimport Info from \"../HienTrang/Info\";\r\nimport Account from \"../Profile/Account\";\r\nimport DrawingManager from '../Drawing/Advance/DrawingAdvance';\r\n\r\nconst ContentRightPanel = ({ route }) => {\r\n // console.log(route)\r\n switch (route) {\r\n // case \"search\":\r\n // return (\r\n // \r\n // );\r\n case \"layer\":\r\n return (\r\n \r\n );\r\n case \"satellite\":\r\n return (\r\n \r\n );\r\n case \"server\":\r\n return (\r\n \r\n );\r\n case \"location\":\r\n return (\r\n \r\n );\r\n case \"zone\":\r\n return (\r\n \r\n );\r\n case \"login\":\r\n return (\r\n \r\n );\r\n case \"result\":\r\n return (\r\n \r\n );\r\n case \"info\":\r\n return (\r\n \r\n );\r\n case \"account\":\r\n return (\r\n \r\n );\r\n case \"changePassword\":\r\n return (\r\n \r\n );\r\n case \"drawingManager\":\r\n return (\r\n \r\n );\r\n // case \"panelQuyHoachInfo\":\r\n // return (\r\n // \r\n // );\r\n default:\r\n return null\r\n }\r\n}\r\n\r\nexport default ContentRightPanel\r\n","import React, { Fragment } from 'react';\r\nimport { IconButton, TooltipHost, DirectionalHint, Stack } from '@fluentui/react';\r\nimport ContentRightPanel from \"./ContentRightPanel\";\r\nimport { useSelector } from \"react-redux\";\r\nimport Layout from \"../../Styles/Layout\";\r\nimport { onCloseRightPanel, onMaximumPanel, onMinimizePanel } from \"../../Containers/RightPanelAction\";\r\nimport '../../Styles/tab.css'\r\nimport { GiaoThoaPolygon } from './../../Containers/GiaoCatPolygons';\r\nconst RightPanel = () => {\r\n const { className, isShow, routeContent, isMinimized, arrLabelShow } = useSelector(state => state.rightPanel)\r\n const heightScreenScroll = window.screen.width;\r\n \r\n return (\r\n isShow ?\r\n \r\n {isMinimized === true ?\r\n
\r\n \r\n \r\n \r\n
\r\n : null}\r\n
\r\n
\r\n {arrLabelShow.map(e => {\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 : null\r\n )\r\n}\r\n\r\nexport default React.memo(RightPanel)\r\n\r\n\r\nconst styles = {\r\n modal: (isSmall) => ({\r\n height: 'calc(100vh - 48px)',\r\n width: Layout.panelWidth,\r\n position: 'relative',\r\n // display: 'flex',\r\n flexDirection: 'column',\r\n marginTop: isSmall ? 60 : 0\r\n }),\r\n closeButtonView: () => ({\r\n position: 'absolute',\r\n top: 1,\r\n left: 'calc(100% - 90px)',\r\n }),\r\n closeButton: {\r\n root: {\r\n height: 40,\r\n width: 40,\r\n borderRadius: 0,\r\n zIndex: 99\r\n },\r\n icon: {\r\n color: '#4C4A48',\r\n fontSize: 12\r\n },\r\n rootHovered: {\r\n backgroundColor: 'rgba(0,0,0,.1)'\r\n }\r\n }\r\n};\r\n","import React from 'react';\r\nimport { IconButton, Stack, Text, Icon, Label, ScrollablePane, Link } from \"@fluentui/react\";\r\nimport { NeutralColors, SharedColors } from \"@uifabric/fluent-theme\";\r\nimport { onShowOffQuyHoachInfoPanel } from \"../../Containers/QuyHoach\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { mapGeoType } from \"../../Containers/QuyHoach\";\r\n\r\nconst PanelQuyHoachInfo = () => {\r\n const { typeActive, selected } = useSelector(state => state.quyHoach);\r\n // useEffect(()=>{\r\n // let elHeight = document.getElementById('panel-qh-info').clientHeight;\r\n // },[typeActive,selected])\r\n\r\n return (\r\n \r\n \r\n Thông tin\r\n \r\n \r\n \r\n \r\n \r\n \r\n {selected.geoType === mapGeoType.LINESTRING ?\r\n \r\n :\r\n selected.geoType === mapGeoType.POLYGON ?\r\n \r\n :\r\n \r\n }\r\n {selected.name}\r\n \r\n \r\n \r\n {typeActive.text}\r\n \r\n {typeActive.document ?\r\n \r\n \r\n { window.open(typeActive.LINK, '_blank').focus(); }} >{typeActive.document}\r\n \r\n : null\r\n }\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default PanelQuyHoachInfo;\r\n\r\nconst styles = {\r\n container: {\r\n width: 380,\r\n bottom: 5,\r\n height: 180,\r\n maxHeight: 230,\r\n backgroundColor: NeutralColors.white,\r\n position: 'absolute',\r\n zIndex: 3000,\r\n left: 5,\r\n boxShadow: '0 1px 4px rgba(0, 0, 0, 0.3)',\r\n },\r\n headerBar: {\r\n backgroundColor: SharedColors.cyanBlue10,\r\n paddingLeft: 10\r\n },\r\n headerTitle: {\r\n flex: 1,\r\n color: NeutralColors.white,\r\n\r\n },\r\n closeButton: {\r\n root: {\r\n color: NeutralColors.white,\r\n },\r\n rootHovered: {\r\n color: NeutralColors.white,\r\n backgroundColor: SharedColors.cyanBlue20\r\n },\r\n rootPressed: {\r\n color: SharedColors.cyanBlue10,\r\n backgroundColor: SharedColors.cyanBlue20\r\n }\r\n },\r\n typeTitle: {\r\n margin: 10\r\n }\r\n}\r\n","import React from 'react';\r\nimport { Marker } from \"react-google-maps\";\r\n\r\nconst LopChuQuyen = () => {\r\n return (\r\n
\r\n \r\n \r\n
\r\n )\r\n}\r\nexport default LopChuQuyen;\r\n","import React from 'react';\r\nimport MapView from \"./MapView\";\r\nimport LopQuyHoach from '../QuyHoach/LopQuyHoach';\r\nimport LopHienTrang from \"../HienTrang/LopHienTrang\";\r\nimport Drawing from \"../Drawing\";\r\nimport setup from \"../../Containers/setup\";\r\nimport RightPanel from \"./RightPanel\";\r\nimport { useSelector } from \"react-redux\";\r\nimport PanelQuyHoachInfo from \"../QuyHoach/PanelQuyHoachInfo\";\r\nimport { store } from '../../Redux/Store';\r\nimport Type from '../../Redux/Type';\r\nimport { MarkerWithLabel } from 'react-google-maps/lib/components/addons/MarkerWithLabel';\r\nimport { onCloseRightPanel, onOpenRightPanel } from '../../Containers/RightPanelAction';\r\nimport { getSearchList } from '../../Containers/Search';\r\nimport { convertLatLonToXY } from '../../Containers/Converter';\r\nimport { onMoveToMap } from '../../Containers/MapView';\r\nimport LopChuQuyen from '../HienTrang/LopChuQuyen';\r\n\r\nconst Container = () => {\r\n const { typeMapId, refMapView } = useSelector(state => state.mapView)\r\n const userInfo = useSelector(state => state.userInfo);\r\n const {\r\n markerPosition,\r\n pickMapOn,\r\n modeSearch,\r\n loadingSearch\r\n } = useSelector(state => state.searchState);\r\n\r\n const onDragMarkerPickSearchEnd = (ev) => {\r\n let lat = ev.latLng.lat()\r\n let lng = ev.latLng.lng()\r\n store.dispatch({ type: Type.SET_SEARCH, route: 'markerPosition', value: { lat: lat, lng: lng } })\r\n }\r\n const getOnClickEvent = (ev) => {\r\n // \r\n if (refMapView && pickMapOn === true) {\r\n // draggableCursor: `url(${process.env.PUBLIC_URL}/images/icons/pin.png) 10 10 , crosshair `\r\n let lat = ev.latLng.lat()\r\n let lng = ev.latLng.lng()\r\n store.dispatch({ type: Type.SET_SEARCH, route: 'markerPosition', value: { lat: lat, lng: lng } })\r\n }\r\n }\r\n const pinICON = process.env.PUBLIC_URL + '/images/icons/pin.png'\r\n\r\n const onCallAPISearch = () => {\r\n\r\n let resultconvert = convertLatLonToXY({ latitude: markerPosition.lat, longitude: markerPosition.lng })\r\n let payload = {\r\n MaDvhc: 0,//wardSelected.searchID,\r\n SoTo: '',\r\n SoThua: '',\r\n TenChu: '',\r\n Point: `POINT (${resultconvert.y} ${resultconvert.x})`,\r\n Position: { Longitude: markerPosition.lng, Latitude: markerPosition.lat },\r\n };\r\n onCloseRightPanel()\r\n store.dispatch({ type: Type.SET_SEARCH, route: 'loadingSearch', value: true });\r\n store.dispatch({ type: Type.SET_SEARCH, route: 'pickMapOn', value: false });\r\n let onSuccess = (statusCode, response) => {\r\n // setLoading(false);\r\n document.getElementById('conten-point-show').style.filter = 'unset'\r\n document.getElementById('loading-content-search').style.display = 'none'\r\n store.dispatch({ type: Type.SET_SEARCH, route: 'loadingSearch', value: false });\r\n if (statusCode === 200) {\r\n if (response.length) {\r\n store.dispatch({ type: Type.SET_SEARCH, route: 'listResult', value: response });\r\n onOpenRightPanel('result')\r\n }\r\n else\r\n return null;\r\n // setWarningMessage('Không tìm thấy kết quả nào')\r\n } else {\r\n // setErrorMessage(response)\r\n return null;\r\n }\r\n };\r\n getSearchList(modeSearch, payload, onSuccess);\r\n };\r\n\r\n\r\n const MarkerClickEvt = (ev) => {\r\n let idDiv = ev.target.id\r\n if (ev && ev.target) {\r\n\r\n switch (idDiv) {\r\n case 'btn-point-huy':\r\n store.dispatch({ type: Type.SET_SEARCH, route: 'markerPosition', value: null })\r\n store.dispatch({ type: Type.SET_SEARCH, route: 'pickMapOn', value: false })\r\n break;\r\n case 'btn-point-submit':\r\n document.getElementById('conten-point-show').style.filter = 'blur(1px)'\r\n document.getElementById('loading-content-search').style.display = 'block'\r\n onCallAPISearch()\r\n break;\r\n case 'btn-point-mini':\r\n document.getElementById('content-point-mini').style.display = 'block'\r\n document.getElementById('conten-point-show').style.display = 'none'\r\n onMoveToMap({ lat: markerPosition.lat, lng: markerPosition.lng })\r\n break;\r\n case 'content-point-mini':\r\n document.getElementById('content-point-mini').style.display = 'none'\r\n document.getElementById('conten-point-show').style.display = 'block'\r\n onMoveToMap({ lat: markerPosition.lat, lng: markerPosition.lng })\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n\r\n const mouseOverPoint = (ev) => {\r\n if (ev && ev.target) {\r\n let idDiv = ev.target.id\r\n if (idDiv) {\r\n let d = document.getElementById(idDiv)\r\n switch (idDiv) {\r\n case 'btn-point-huy':\r\n d.style.textDecoration = 'underline'\r\n break;\r\n case 'btn-point-submit':\r\n d.style.textDecoration = 'underline'\r\n break;\r\n case 'btn-point-mini':\r\n d.style.color = 'rgb(0, 120, 212)'\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n const mouseOutPoint = (ev) => {\r\n if (ev && ev.target) {\r\n let idDiv = ev.target.id\r\n if (idDiv) {\r\n let d = document.getElementById(idDiv)\r\n switch (idDiv) {\r\n case 'btn-point-huy':\r\n d.style.textDecoration = 'unset'\r\n break;\r\n case 'btn-point-submit':\r\n d.style.textDecoration = 'unset'\r\n break;\r\n case 'btn-point-mini':\r\n d.style.color = 'rgb(95, 95, 95)'\r\n break;\r\n default:\r\n break;\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 containerElement={
}\r\n mapElement={
}\r\n zoomControl={false}\r\n defaultCenter={setup.startCoordinate}\r\n mapTypeId={typeMapId}\r\n onClick={getOnClickEvent}\r\n >\r\n {\r\n markerPosition ? \r\n \r\n : null\r\n }\r\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 Container;\r\n\r\nconst ContentMarker = (props) => {\r\n let { location } = props\r\n\r\n return (\r\n
\r\n
\r\n Đang tìm kiếm...\r\n
\r\n
\r\n ...\r\n
\r\n
\r\n\r\n \r\n {location.lat + ' , ' + location.lng}\r\n \r\n
\r\n Hủy |\r\n Tra cứu\r\n \r\n {'<'}\r\n \r\n
\r\n
\r\n
\r\n )\r\n}\r\n\r\nconst styles = {\r\n container: {\r\n position: 'fixed',\r\n top: 48,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n display: 'flex',\r\n flexDirection: 'row',\r\n },\r\n mapContainer: {\r\n flex: 1, backgroundColor: '#eee', display: 'flex', position: 'relative'\r\n },\r\n mapView: {\r\n top: 0, right: 0,\r\n bottom: 0,\r\n left: 0,\r\n position: \"absolute\"\r\n },\r\n};\r\n","import React from 'react';\r\nimport {IconButton, TooltipHost, DirectionalHint,Stack} from '@fluentui/react';\r\nimport { NeutralColors,SharedColors } from '@uifabric/fluent-theme/lib/fluent/FluentColors';\r\nimport {FontSizes} from \"@uifabric/fluent-theme\";\r\nimport {useSelector,useDispatch} from 'react-redux';\r\nimport DrawingMode from \"./Mode\";\r\nimport Type from \"../../Redux/Type\";\r\n\r\nconst ControlBar = props =>\r\n{\r\n const {showTool,drawingMode,evtPath,modeChosen} = useSelector(state=>state.drawingTool);\r\n const dispatch = useDispatch();\r\n const onStopPress = ()=>dispatch({type:Type.STOP_DRAWING})\r\n const onStartPress = (value)=>{\r\n if(value === 'nangcao'){\r\n dispatch({type:Type.STOP_DRAWING})\r\n dispatch({ type: Type.SET_MODE_DRAWING, evt:value });\r\n dispatch({ type: Type.SET_STATE_RIGHT_PANEL,route:'routeContent',value:'drawingManager'});\r\n dispatch({ type: Type.SET_STATE_RIGHT_PANEL,route:'isShow',value:true});\r\n }\r\n else{\r\n dispatch({ type: Type.SET_MODE_DRAWING, evt:value });\r\n dispatch({type:Type.START_DRAWING,evt:value})\r\n }\r\n \r\n }\r\n const onClearPress = ()=>dispatch({type:Type.CLEAR_PATH_DRAWING});\r\n\r\n const onDonePress = ()=>{\r\n dispatch({type:Type.SET_SHOW_MAIN_MODAL})\r\n }\r\n const onCancelPress = () =>{\r\n dispatch({ type: Type.SET_STATE_RIGHT_PANEL,route:'isShow',value:false});\r\n dispatch({ type: Type.CLEAR_PATH_DRAWING });\r\n dispatch({ type: Type.SHOW_OFF_DRAWING });\r\n }\r\n return (\r\n showTool ?\r\n \r\n \r\n \r\n {/*
    \r\n
  • 1
  • \r\n
  • 2
  • \r\n
*/}\r\n onStartPress('polygon')}\r\n disabled={evtPath}\r\n />\r\n onStartPress('rectangle')}\r\n disabled={evtPath}\r\n />\r\n onStartPress('nangcao')}\r\n disabled={evtPath}\r\n />\r\n \r\n \r\n \r\n
\r\n : null\r\n )\r\n}\r\n\r\nexport default ControlBar;\r\n\r\nconst ActionButton = ({iconName,tooltip,active,onClick,disabled, backgroundcolor}) =>\r\n{\r\n return (\r\n \r\n \r\n \r\n )\r\n};\r\n\r\nconst styles = {\r\n container:{\r\n root:{\r\n position:'absolute',\r\n top:56,\r\n left:10,\r\n boxShadow:'0 2px 4px rgba(0,0,0,0.2), 0 -1px 0px rgba(0,0,0,0.02)',\r\n borderRadius:2,\r\n overflow:'hidden'\r\n }\r\n },\r\n iconButton:(active, backgroundcolor)=>({\r\n root:{\r\n height:30,\r\n width:30,\r\n backgroundColor:active ? SharedColors.cyanBlue10 : backgroundcolor || NeutralColors.white,\r\n borderRadius: 0\r\n },\r\n rootHovered:{\r\n backgroundColor:active ? SharedColors.cyanBlue10 : backgroundcolor || NeutralColors.gray30\r\n },\r\n rootPressed:{\r\n backgroundColor:active ? SharedColors.cyanBlue20 : NeutralColors.gray40\r\n },\r\n icon:{\r\n color:active ? NeutralColors.white : backgroundcolor ? NeutralColors.white : NeutralColors.black,\r\n fontSize: FontSizes.size14,\r\n },\r\n iconHovered:{\r\n color: active ? NeutralColors.white : backgroundcolor ? NeutralColors.white : NeutralColors.black,\r\n },\r\n iconPressed:{\r\n opacity:.6\r\n }\r\n }),\r\n}\r\n","import React, {useState, useEffect} from \"react\";\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {\r\n IconButton,\r\n FontWeights,\r\n FontSizes,\r\n Stack,\r\n Text,\r\n DetailsList,\r\n DetailsListLayoutMode,\r\n ScrollablePane,\r\n SelectionMode,\r\n Sticky,\r\n Toggle\r\n} from '@fluentui/react';\r\nimport {NeutralColors, SharedColors} from '@uifabric/fluent-theme/lib/fluent/FluentColors';\r\nimport Type from \"../../Redux/Type\";\r\nimport {convertLatLonToXY} from \"../../Containers/Converter\";\r\nimport {Error, Loading} from \"../Accessary\";\r\nimport {onLoadStatistical} from \"../../Containers/QuyHoach\";\r\n\r\nconst Statistical = props => {\r\n const [isMount, setMount] = useState(false);\r\n const [errorMessage, setErrorMessage] = useState('');\r\n const [totalField, setTotalField] = useState(0);\r\n const [totalArea, setTotalArea] = useState(0);\r\n const [totalMdsd, setTotalMdsd] = useState([]);\r\n const [detail, setDetail] = useState([]);\r\n const [isLoading, setLoading] = useState(false);\r\n const [detailMode, setDetailMode] = useState(true);\r\n const {evtPath,modeChosen,listPoints} = useSelector(state => state.drawingTool);\r\n const dispatch = useDispatch();\r\n\r\n // useEffect(() => {\r\n // if (!isMount) {\r\n // const onLoadInMount = () => {\r\n // setMount(false);\r\n // setLoading(true);\r\n // let coords;\r\n // console.log('Loading')\r\n // if(modeChosen === 'polygon'){\r\n // let paths = evtPath.getPath().getArray()\r\n \r\n // coords = paths.map((a) => (\r\n // convertLatLonToXY({\r\n // latitude: a.lat(),\r\n // longitude: a.lng()\r\n // }))\r\n // );\r\n // }\r\n // else if(modeChosen === 'rectangle'){\r\n // // let paths = evtPath.getPath().getArray(),\r\n // coords = evtPath.paths.map((a) => (convertLatLonToXY({\r\n // latitude: a.lat,\r\n // longitude: a.lng\r\n // })));\r\n \r\n // }\r\n // coords = [...coords, coords[0]]\r\n // // console.log(coords)\r\n // coords = coords.map(e => `${e.y} ${e.x}`)\r\n // let polygonStr = coords.join(','),\r\n // payload = {\r\n // Polygon: `POLYGON ((${polygonStr}))`\r\n // };\r\n // // console.log(payload)\r\n // onLoadStatistical(payload, onLoadSuccess);\r\n // }\r\n // onLoadInMount()\r\n // }\r\n // }, [isMount, isLoading,evtPath])\r\n useEffect(() => {\r\n const onLoadInMount = () => {\r\n setLoading(true);\r\n let coords;\r\n if (modeChosen === 'polygon') {\r\n let paths = evtPath.getPath().getArray()\r\n\r\n coords = paths.map((a) => (\r\n convertLatLonToXY({\r\n latitude: a.lat(),\r\n longitude: a.lng()\r\n }))\r\n );\r\n }\r\n else if (modeChosen === 'rectangle') {\r\n // let paths = evtPath.getPath().getArray(),\r\n coords = evtPath.paths.map((a) => (convertLatLonToXY({\r\n latitude: a.lat,\r\n longitude: a.lng\r\n })));\r\n\r\n }\r\n else if (modeChosen === 'nangcao') {\r\n // let paths = evtPath.getPath().getArray(),\r\n \r\n coords = listPoints.map((a) => (convertLatLonToXY({\r\n latitude: a.lat,\r\n longitude: a.lng\r\n })));\r\n\r\n }\r\n coords = [...coords, coords[0]]\r\n coords = coords.map(e => `${e.y} ${e.x}`)\r\n let polygonStr = coords.join(','),\r\n payload = {\r\n Polygon: `POLYGON ((${polygonStr}))`\r\n };\r\n onLoadStatistical(payload, onLoadSuccess);\r\n }\r\n onLoadInMount()\r\n \r\n }, [])\r\n\r\n\r\n\r\n const onLoadSuccess = ({statusCode, response}) => {\r\n setLoading(false);\r\n if (statusCode === 200)\r\n {\r\n setTotalArea(response.areaTotal)\r\n setTotalField(response.fieldTotal)\r\n setTotalMdsd(response.mdsdTotal)\r\n setDetail(response.detail)\r\n }\r\n else\r\n setErrorMessage(response)\r\n }\r\n\r\n const onClose = () => dispatch({type: Type.SET_SHOW_MAIN_MODAL});\r\n\r\n const _renderHeaderColumn = (detailsHeaderProps, defaultRender) => {\r\n return (\r\n \r\n {defaultRender(detailsHeaderProps)}\r\n \r\n )\r\n };\r\n\r\n const onModeChange = ()=>setDetailMode(!detailMode)\r\n\r\n return (\r\n \r\n \r\n Thống kê khảo sát\r\n \r\n \r\n {isLoading ?\r\n \r\n :\r\n errorMessage ?\r\n \r\n :\r\n \r\n \r\n \r\n Tổng diện tích khảo sát\r\n {totalArea} m2\r\n \r\n \r\n Tổng thửa đất ảnh hưởng\r\n {totalField}\r\n \r\n \r\n Thống kê theo thửa\r\n \r\n \r\n \r\n Thống kê theo MDSD\r\n \r\n \r\n \r\n \r\n \r\n {detailMode ?\r\n \r\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 React.memo(Statistical);\r\n\r\nconst column = [\r\n {key: '1', name: 'Stt', fieldName: 'key', maxWidth: 30, minWidth: 30},\r\n {key: '4', name: 'Xã/Phường', fieldName: 'XA'},\r\n {key: '2', name: 'Số tờ', fieldName: 'SOTO', maxWidth: 80, minWidth: 80},\r\n {key: '3', name: 'Số thửa', fieldName: 'SOTHUA', maxWidth: 80, minWidth: 80},\r\n {key: '5', name: 'Loại đất', fieldName: 'MDSD', maxWidth: 80, minWidth: 80},\r\n {key: '8', name: 'D.Tích KS', fieldName: 'DTKhaoSat', maxWidth: 100, minWidth: 100},\r\n {key: '9', name: 'Tỷ lệ', fieldName: 'tile', maxWidth: 80, minWidth: 80},\r\n]\r\n\r\nconst columnMDSD = [\r\n {key: '1', name: 'Stt', fieldName: 'key', maxWidth: 30, minWidth: 30},\r\n {key: '4', name: 'Ký hiệu', fieldName: 'label', maxWidth: 120, minWidth: 120},\r\n {key: '2', name: 'Tên MDSD', fieldName: 'name'},\r\n {key: '8', name: 'Diện tích khảo sát', fieldName: 'area', maxWidth: 200, minWidth: 200},\r\n]\r\n\r\nconst styles = {\r\n container: {\r\n root: {\r\n width: 800,\r\n height: '90vh',\r\n overflow: 'hidden'\r\n }\r\n },\r\n headerView: {\r\n paddingLeft: 16, paddingRight: 16,\r\n paddingTop: 4,\r\n paddingBottom: 8,\r\n backgroundColor: SharedColors.greenCyan10,\r\n marginBottom: 16\r\n },\r\n headerTitle: {\r\n root: {\r\n fontSize: FontSizes.mediumPlus,\r\n color: NeutralColors.white,\r\n fontWeight: FontWeights.bold\r\n }\r\n },\r\n closeButton: {\r\n root: {\r\n color: NeutralColors.white,\r\n marginLeft: 'auto',\r\n marginTop: '4px',\r\n marginRight: '2px',\r\n },\r\n rootHovered: {\r\n color: NeutralColors.white,\r\n backgroundColor: SharedColors.green20\r\n },\r\n rootPressed: {\r\n color: SharedColors.greenCyan10,\r\n backgroundColor: SharedColors.green20\r\n }\r\n },\r\n generalView: {\r\n marginLeft: 16,\r\n marginRight: 16,\r\n borderBottom: '1px solid #eee',\r\n paddingBottom: 20\r\n },\r\n generalTitle: {\r\n root: {\r\n fontSize: FontSizes.smallPlus,\r\n fontWeight: FontWeights.semibold,\r\n color: SharedColors.cyanBlue10\r\n }\r\n },\r\n generalContent: {\r\n root: {\r\n fontSize: FontSizes.medium,\r\n // fontWeight: FontWeights.semibold\r\n }\r\n }\r\n\r\n}\r\n","import { store } from \"../Redux/Store\";\r\nimport Type from \"../Redux/Type\";\r\nimport LinkAPI, { onGetRequestNoAuth, onPostRequest } from './MainController';\r\nimport { getListGiaDat } from './Search';\r\n\r\nexport const onLoadDanhMucBangGia = (loaidanhmuc, routeName) => {\r\n store.dispatch({ type: Type.SET_PRICE_TB_TERM, route: 'loadingSearch', value: true })\r\n let onSuccess = ({ statusCode, response }) => {\r\n\r\n if (statusCode === 200) {\r\n\r\n let dataReturn = response;\r\n store.dispatch({ type: Type.SET_PRICE_TB_TERM, route: routeName, value: dataReturn })\r\n }\r\n store.dispatch({ type: Type.SET_PRICE_TB_TERM, route: 'loadingSearch', value: false })\r\n }\r\n onGetRequestNoAuth(LinkAPI.getDanhMucGiaDat(loaidanhmuc), onSuccess)\r\n}\r\n\r\nexport const onLoadBangGia = (huyen, maxa, maloaidat, maduong, madoan) => {\r\n store.dispatch({ type: Type.SET_PRICE_TB_TERM, route: 'loadingSearch', value: true })\r\n store.dispatch({ type: Type.SET_PRICE_TB_TERM, route: 'listPrice', value: [] })\r\n let onSuccess = ({ statusCode, response }) => {\r\n if (statusCode === 200) {\r\n let dataReturn = response;\r\n\r\n store.dispatch({ type: Type.SET_PRICE_TB_TERM, route: 'listPrice', value: dataReturn })\r\n store.dispatch({ type: Type.SET_PRICE_TB_TERM, route: 'showResult', value: true });\r\n }\r\n store.dispatch({ type: Type.SET_PRICE_TB_TERM, route: 'loadingSearch', value: false })\r\n }\r\n onGetRequestNoAuth(LinkAPI.getGiaDatTheoTieuChi(huyen, maxa, maloaidat, maduong, madoan), onSuccess)\r\n}\r\n\r\nexport const onLoadDMDieuKien = (loaidm, maloai, maloai2, routeName) => {\r\n store.dispatch({ type: Type.SET_PRICE_TB_TERM, route: 'loadingSearch', value: true })\r\n let onSuccess = ({ statusCode, response }) => {\r\n if (statusCode === 200) {\r\n let dataReturn = response;\r\n store.dispatch({ type: Type.SET_PRICE_TB_TERM, route: routeName, value: dataReturn })\r\n }\r\n store.dispatch({ type: Type.SET_PRICE_TB_TERM, route: 'loadingSearch', value: false })\r\n }\r\n onGetRequestNoAuth(LinkAPI.getDanhMucGiaDatDieuKien(loaidm, maloai, maloai2), onSuccess)\r\n}\r\n\r\n\r\nconst CoverArray = (arrayS, key, text) => {\r\n\r\n return arrayS.map((e, inx) => {\r\n if (!key)\r\n e.key = inx\r\n e.text = e['text']\r\n })\r\n}","import { Label, Stack, Text, Dropdown, MessageBar, PrimaryButton, Spinner, MessageBarType } from \"@fluentui/react\"\r\nimport React, { useState, useEffect } from 'react'\r\nimport { onLoadXa } from \"../../Containers/ViTriHanhChinh\";\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport Type from \"../../Redux/Type\";\r\nimport { onLoadDanhMucBangGia, onLoadDMDieuKien, onLoadBangGia } from \"../../Containers/PriceTable\";\r\nconst PriceFilterContainer = () => {\r\n const dispatch = useDispatch();\r\n const {\r\n arrayHuyen, listPrice,\r\n arrayXa, arrayLoaiDat, loadingSearch,\r\n arrayDuong, arrayViTri, arrayDoan\r\n } = useSelector(state => state.priceTableTerm);\r\n\r\n const [huyenChosen, setHuyenChosen] = useState(null);\r\n const [xaChosen, setXaChosen] = useState(null);\r\n const [duongChosen, setDuongChosen] = useState(null);\r\n const [doanChosen, setDoanChosen] = useState(null);\r\n const [viTriChosen, setViTriChosen] = useState(null);\r\n const [loaiDatChosen, setLoaiDatChosen] = useState(null);\r\n\r\n const [errorMessage, setErrorMessage] = useState('');\r\n const onChangeHuyen = (_, option) => {\r\n let huyen = { key: option.key, text: option.text }\r\n dispatch({ type: Type.SET_PRICE_TB_TERM, route: 'duongSelected', value: null });\r\n dispatch({ type: Type.SET_PRICE_TB_TERM, route: 'doanSelected', value: null });\r\n dispatch({ type: Type.SET_PRICE_TB_TERM, route: 'huyenSelected', value: huyen });\r\n setHuyenChosen(huyen)\r\n onLoadDMDieuKien(1, option.key,'', 'arrayDuong')\r\n\r\n }\r\n const onChangeDuong = (_, option) => {\r\n let duong = { key: option.key, text: option.text }\r\n dispatch({ type: Type.SET_PRICE_TB_TERM, route: 'doanSelected', value: null });\r\n dispatch({ type: Type.SET_PRICE_TB_TERM, route: 'duongSelected', value: duong });\r\n dispatch({ type: Type.SET_PRICE_TB_TERM, route: 'loaiDatSelected', value: null });\r\n setDuongChosen(duong)\r\n onLoadDMDieuKien(2, option.key,huyenChosen.key, 'arrayDoan')\r\n onLoadDMDieuKien(5, option.key,'', 'arrayLoaiDat')\r\n }\r\n const onChangeDoan = (_, option) => {\r\n let valueSelect = { key: option.key, text: option.text }\r\n dispatch({ type: Type.SET_PRICE_TB_TERM, route: 'loaiDatSelected', value: null });\r\n dispatch({ type: Type.SET_PRICE_TB_TERM, route: 'doanSelected', value: valueSelect });\r\n setDoanChosen(valueSelect)\r\n onLoadDMDieuKien(4, option.key,'', 'arrayLoaiDat')\r\n }\r\n const onChangeViTri = (_, option) => {\r\n let valueSelect = { key: option.key, text: option.text }\r\n dispatch({ type: Type.SET_PRICE_TB_TERM, route: 'viTriSelected', value: valueSelect });\r\n setDoanChosen(valueSelect)\r\n }\r\n const onChangeLoaiDat = (_, option) => {\r\n let valueSelect = { key: option.key, text: option.text }\r\n dispatch({ type: Type.SET_PRICE_TB_TERM, route: 'loaiDatSelected', value: valueSelect });\r\n setLoaiDatChosen(valueSelect)\r\n }\r\n const onSearchPress = () => {\r\n setErrorMessage(null)\r\n if (!doanChosen || !duongChosen || !huyenChosen)\r\n return setErrorMessage('Vui lòng chọn đủ thông tin !')\r\n onLoadBangGia(huyenChosen.key, 0, 0, duongChosen.key, doanChosen.text)\r\n }\r\n useEffect(() => {\r\n // onLoadDanhMucBangGia(0, 'arrayHuyen')\r\n onLoadDanhMucBangGia(0, 'arrayHuyen')\r\n // onLoadDanhMucBangGia(1, 'arrayXa')\r\n onLoadDanhMucBangGia(2, 'arrayLoaiDat')\r\n onLoadDanhMucBangGia(3, 'arrayDuong')\r\n onLoadDanhMucBangGia(4, 'arrayViTri')\r\n onLoadDanhMucBangGia(5, 'arrayDoan')\r\n }, [])\r\n useEffect(() => {\r\n if (listPrice.length > 0) {\r\n // dispatch({ type: Type.SET_PRICE_TB_TERM, route: 'showResult', value: true });\r\n }\r\n // else {\r\n // setErrorMessage('Địa điểm chọn không có thông tin !')\r\n // }\r\n }, [listPrice])\r\n return (\r\n
\r\n
\r\n Thông tin giá đất năm 2022\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {/* e.key === huyenChosen.key)[0]['arrXa']}\r\n selectedKey={wardSelected && wardSelected.key}\r\n onChange={onWardChange}\r\n styles={styles.dropdownMenu}\r\n disabled={modeSearch === 'byPosition' || loadingSearch || loadingLoginEnter}\r\n /> */}\r\n \r\n \r\n {/* \r\n */}\r\n
\r\n\r\n \r\n {errorMessage ?\r\n
\r\n \r\n {errorMessage}\r\n \r\n
\r\n : null\r\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 PriceFilterContainer\r\nconst styles = {\r\n subTitleRow: {\r\n height: 30,\r\n marginTop: 2,\r\n display: 'flex',\r\n alignItems: 'flex-end'\r\n },\r\n labelTitle: {\r\n root: {\r\n textAlign: 'left'\r\n }\r\n },\r\n chosenGroup: {\r\n label: {\r\n textAlign: 'left'\r\n },\r\n root: {\r\n marginBottom: -5\r\n }\r\n },\r\n searchRoot: {\r\n root: {\r\n width: '100%'\r\n }\r\n },\r\n dropdownMenu: {\r\n root: {\r\n marginTop: 7,\r\n },\r\n title: {\r\n textAlign: 'left'\r\n },\r\n errorMessage: {\r\n textAlign: 'left'\r\n }\r\n },\r\n helpimg1: {\r\n width: '100%',\r\n objectFit: 'cover',\r\n height: 200,\r\n },\r\n textTooltip: {\r\n fontSize: 16, textAlign: 'center'\r\n },\r\n tooltipImg: { textAlign: 'center', marginTop: 10 }\r\n};\r\n","import React, { useEffect } from 'react';\r\nimport Search from \"../Search/Search\";\r\nimport Layer from \"../QuyHoach/Layer\";\r\nimport Server from \"../Menu/Server\";\r\nimport Location from \"../Menu/Location\";\r\nimport ZonePanel from \"../QuyHoach/ZonePanel\";\r\nimport PriceFilter from \"../PriceTable/PriceFilter\";\r\n\r\nconst ContentPopupPanel = ({ route }) => {\r\n\r\n // console.log(route)\r\n switch (route) {\r\n case \"search\":\r\n return (\r\n \r\n );\r\n case \"layer\":\r\n return (\r\n \r\n );\r\n case \"server\":\r\n return (\r\n \r\n );\r\n case \"location\":\r\n return (\r\n \r\n );\r\n case \"zone\":\r\n return (\r\n \r\n );\r\n case \"price\":\r\n return (\r\n \r\n );\r\n\r\n // case \"panelQuyHoachInfo\":\r\n // return (\r\n // \r\n // );\r\n default:\r\n return null\r\n }\r\n}\r\n\r\nexport default ContentPopupPanel\r\n","import React, { Fragment, useEffect } from \"react\"\r\nimport { useSelector, useDispatch } from \"react-redux\"\r\nimport Type from \"../../Redux/Type\"\r\n\r\nimport '../../Styles/tabmap.css'\r\nimport ContentPopupPanel from \"./ContentPopupPanel\"\r\nconst PopupContentBar = () => {\r\n const { routeContent, isShowForPopup } = useSelector(state => state.popupPanel)\r\n const { loadingSearch } = useSelector(state => state.searchState);\r\n const { isLoading } = useSelector(state => state.quyHoach);\r\n\r\n const dispatch = useDispatch()\r\n useEffect(() => {\r\n try {\r\n window.onclick = e => {\r\n if (document.getElementById('custom-top-bar') !== null) {\r\n if (!document.getElementById('custom-top-bar').contains(e.target) && !isLoading && !loadingSearch) {\r\n dispatch({ type: Type.SHOW_KEY_ACTIVE, evt: \"\" });\r\n dispatch({ type: Type.SET_STATE_POPUP_PANEL, route: 'isShowForPopup', value: false });\r\n dispatch({ type: Type.SET_STATE_POPUP_PANEL, route: 'routeContent', value: null });\r\n }\r\n }\r\n\r\n }\r\n } catch (error) {\r\n\r\n }\r\n\r\n })\r\n\r\n return (\r\n \r\n {isShowForPopup ?
\r\n {\r\n if (!isLoading && !loadingSearch) {\r\n dispatch({ type: Type.SET_STATE_POPUP_PANEL, route: 'isShowForPopup', value: false });\r\n dispatch({ type: Type.SET_STATE_POPUP_PANEL, route: 'routeContent', value: null });\r\n dispatch({ type: Type.SHOW_KEY_ACTIVE, evt: \"\" });\r\n }\r\n }} className=\"icon-close\">X\r\n \r\n
: null}\r\n
\r\n )\r\n}\r\nexport default PopupContentBar;\r\n","import React, { Fragment } from \"react\"\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { onOpenPopup } from \"../../Containers/RightPanelAction\";\r\nimport Type from \"../../Redux/Type\";\r\nimport { ActionButton } from \"../Accessary\";\r\nimport '../../Styles/tabmap.css'\r\nimport PopupContentBar from './PopupPanel';\r\nimport { useEffect } from \"react\";\r\nimport { Checkbox, Stack, TooltipHost } from '@fluentui/react';\r\nimport COLOR from \"../../Styles/Colors\";\r\nimport { onShowOffQuyHoachInfoPanel } from \"../../Containers/QuyHoach\";\r\n\r\nconst TabOptionTop = () => {\r\n const userInfo = useSelector(state => state.userInfo);\r\n const dispatch = useDispatch();\r\n const { showTool, keyActive } = useSelector(state => state.drawingTool);\r\n const { routeContent } = useSelector(state => state.popupPanel);\r\n const { loadingSearch } = useSelector(state => state.searchState);\r\n const { isLoading } = useSelector(state => state.quyHoach);\r\n const { showThuaDat } = useSelector(state => state.hienTrang);\r\n // const { popupContent } = useSelector(state => state.popupContent);\r\n\r\n const onButtonPress = (route) => () => {\r\n if (keyActive === route) {\r\n dispatch({ type: Type.SHOW_KEY_ACTIVE, evt: \"\" });\r\n } else {\r\n dispatch({ type: Type.SHOW_KEY_ACTIVE, evt: route });\r\n }\r\n\r\n // Off Ve Quy Hoach\r\n if (showTool) {\r\n dispatch({ type: Type.CLEAR_PATH_DRAWING });\r\n dispatch({ type: Type.SHOW_OFF_DRAWING });\r\n }\r\n onOpenPopup(route)\r\n }\r\n const onButtonPress2 = (route) => () => {\r\n\r\n // onOpenPopup(route)\r\n //console.log(route)\r\n //onButtonPress(route)\r\n onOpenPopup(route)\r\n }\r\n const onDrawingPress = () => {\r\n\r\n if (showTool) {\r\n dispatch({ type: Type.CLEAR_PATH_DRAWING });\r\n dispatch({ type: Type.SHOW_OFF_DRAWING });\r\n }\r\n else {\r\n dispatch({ type: Type.SET_MODE_DRAWING, evt: 'polygon' });\r\n dispatch({ type: Type.START_DRAWING, evt: 'polygon' })\r\n dispatch({ type: Type.SHOW_ON_DRAWING });\r\n }\r\n if (keyActive == 'vequyhoach') {\r\n dispatch({ type: Type.SHOW_KEY_ACTIVE, evt: \"\" });\r\n } else {\r\n dispatch({ type: Type.SHOW_KEY_ACTIVE, evt: \"vequyhoach\" });\r\n }\r\n\r\n // off Tab\r\n dispatch({ type: Type.SET_STATE_POPUP_PANEL, route: 'routeContent', value: null });\r\n dispatch({ type: Type.SET_STATE_POPUP_PANEL, route: 'isShowForPopup', value: false });\r\n }\r\n\r\n useEffect(() => {\r\n let customtop = document.getElementById('custom-top-bar')\r\n let widthWin = window.innerWidth\r\n let widthCus = customtop.offsetWidth\r\n let fromLeft = (widthWin / 2) - (widthCus / 2)\r\n customtop.style.left = `${fromLeft}px`\r\n })\r\n\r\n const onChangeShowThuaDatStatus = () => {\r\n if (!showThuaDat) {\r\n onShowOffQuyHoachInfoPanel()\r\n dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'showQuyHoach', value: false });\r\n }\r\n dispatch({ type: Type.SET_STATE_HIEN_TRANG, route: 'showThuaDat', value: !showThuaDat });\r\n };\r\n\r\n\r\n return (\r\n \r\n {/*
\r\n \r\n
*/}\r\n
\r\n {/* {userInfo ?\r\n \r\n : null\r\n } */}\r\n {/* \r\n \r\n \r\n \r\n */}\r\n\r\n \r\n\r\n {appButton.map(item => (\r\n \r\n ))}\r\n \r\n
\r\n
\r\n )\r\n}\r\nexport default TabOptionTop;\r\n//BoxCheckmarkSolid\r\n//Checkbox\r\nconst appButton = [\r\n { key: 'search', iconName: 'Search', tooltip: 'Tìm kiếm thửa đất', text: 'Tìm kiếm', mustLogin: true },\r\n { key: 'layer', iconName: 'MapLayers', tooltip: 'Bản đồ quy hoạch - kế hoạch sử dụng đất', text: 'Bản đồ', mustLogin: false }, //layer\r\n { key: 'location', iconName: 'List', tooltip: 'Chuyển vị trí đơn vị hành chính', text: 'Chuyển vị trí', mustLogin: false },\r\n { key: 'price', iconName: 'ImageSearch', tooltip: 'Bảng giá đất',text: 'Bảng giá đất', mustLogin: false },\r\n];\r\n\r\nconst styles = {\r\n btnLopThuaDat: {\r\n backgroundColor: COLOR.white,\r\n marginRight: 10,\r\n padding: 5,\r\n borderRadius: 7,\r\n border: `1px solid #0078d4`,\r\n justifyContent: \"center\",\r\n alignItems: 'center',\r\n justifyItems: 'center'\r\n },\r\n checkLopThuaDat: {\r\n root: {\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n justifyItems: \"center\",\r\n alignContent: \"center\"\r\n },\r\n\r\n text: {\r\n color: '#0078d4'\r\n },\r\n checkbox: {\r\n width: 13,\r\n height: 13,\r\n marginTop: 3,\r\n border: `1px solid #0078d4`\r\n },\r\n }\r\n}\r\n\r\n","import React, { Fragment } from \"react\"\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport Type from \"../../Redux/Type\";\r\nimport '../../Styles/tabmap.css'\r\n\r\nconst MapTypes = () => {\r\n\r\n const { typeMapId } = useSelector(state => state.mapView);\r\n const { polygons, opacityLevel, showQuyHoach } = useSelector(state => state.quyHoach);\r\n const dispatch = useDispatch();\r\n const onChangeSatellite = () => {\r\n\r\n dispatch({ type: Type.SET_TYPE_MAP, value: typeMapId === 'hybrid' ? 'roadmap' : 'hybrid' })\r\n };\r\n // \r\n\r\n const onChangeTransparent = (value) => {\r\n\r\n dispatch({ type: Type.SET_STATE_QUY_HOACH, route: 'opacityLevel', value: value / 100 });\r\n }\r\n const heightScreenScroll = window.screen.width;\r\n return (\r\n \r\n\r\n {\r\n heightScreenScroll < 450 ? null :\r\n
\r\n
{ onChangeSatellite() }} title={`${typeMapId === 'hybrid' ? \"Xem vệ tinh\" : \"Xem bản đồ\"}`} style={typeMapId === 'hybrid' ? styles.vetinhType : styles.defaultType}>\r\n
\r\n {/*
{onChangeSatellite('roadmap')}} title=\"Xem bản đồ\" style={styles.defaultType}>
*/}\r\n {\r\n // showQuyHoach && polygons.length >0 ? \r\n // {\r\n // onChangeTransparent(e.target.value)\r\n // }}\r\n // type=\"range\" id=\"volume\" value={opacityLevel*100} name=\"volume\" min={0} max={100} /> : null\r\n }\r\n\r\n\r\n
\r\n }\r\n\r\n\r\n
\r\n )\r\n}\r\nexport default MapTypes;\r\nconst styles = {\r\n vetinhType: {\r\n backgroundImage: `url(\"${process.env.PUBLIC_URL}/images/vetinhmap.png\")`\r\n },\r\n defaultType: {\r\n backgroundImage: `url(\"${process.env.PUBLIC_URL}/images/defaultmap.png\")`,\r\n }\r\n\r\n}\r\n","import {\r\n IconButton,\r\n FontWeights,\r\n FontSizes,\r\n Stack,\r\n Text,\r\n DetailsList,\r\n DetailsListLayoutMode,\r\n ScrollablePane,\r\n SelectionMode,\r\n Sticky,\r\n Modal\r\n} from \"@fluentui/react\"\r\nimport React, { useEffect } from 'react'\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport Type from './../../Redux/Type';\r\nimport { NeutralColors, SharedColors } from '@uifabric/fluent-theme/lib/fluent/FluentColors';\r\nimport moment from \"moment\";\r\n\r\nconst PriceTableModal = () => {\r\n\r\n const dispatch = useDispatch();\r\n\r\n const {\r\n arrayHuyen, listPrice,\r\n arrayXa, arrayLoaiDat, loadingSearch,\r\n arrayDuong, arrayViTri, arrayDoan\r\n } = useSelector(state => state.priceTableTerm);\r\n\r\n const _renderItemColumn = (item, index, column) => {\r\n const fieldContent = item[column.fieldName];\r\n\r\n switch (column.key) {\r\n case '9':\r\n return {fieldContent.toLocaleString('it-IT', { style: 'currency', currency: 'VND' })};\r\n case '12':\r\n return {moment(fieldContent).format('DD/MM/YYYY')};\r\n case '13':\r\n return {moment(fieldContent).format('DD/MM/YYYY')};\r\n default:\r\n return {fieldContent};\r\n }\r\n }\r\n\r\n const _renderHeaderColumn = (detailsHeaderProps, defaultRender) => {\r\n return (\r\n \r\n {defaultRender(detailsHeaderProps)}\r\n \r\n )\r\n };\r\n useEffect(() => { }, [])\r\n const onClose = () => dispatch({ type: Type.SET_PRICE_TB_TERM, route: 'showResult', value: false });\r\n return (\r\n \r\n \r\n \r\n Thông tin giá đất\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 PriceTableModal\r\n\r\nconst column = [\r\n { key: '1', name: 'id', fieldName: 'id', maxWidth: 50, minWidth: 50 },\r\n { key: '4', name: 'Huyện', fieldName: 'HuyenQuan', isMultiline: true, maxWidth: 90, minWidth: 90 },\r\n { key: '3', name: 'Đường', fieldName: 'Duong', maxWidth: 200, isMultiline: true, minWidth: 200 },\r\n { key: '5', name: 'Đoạn đường', fieldName: 'DoanDuong', isMultiline: true, maxWidth: 200, minWidth: 200 },\r\n { key: '2', name: 'Loại đất', fieldName: 'LoaiDat', isMultiline: true, maxWidth: 150, minWidth: 80 },\r\n { key: '8', name: 'Vị trí', fieldName: 'ViTri', maxWidth: 90, minWidth: 90 },\r\n { key: '9', name: 'Giá', fieldName: 'GiaDat', maxWidth: 80, minWidth: 80 },\r\n { key: '10', name: 'Hệ số điều chỉnh', fieldName: 'HeSoDieuChinh', maxWidth: 100, minWidth: 100 },\r\n { key: '11', name: 'Hệ số VHM', fieldName: 'HeSoVHM', maxWidth: 80, minWidth: 80 },\r\n { key: '12', name: 'Hiệu lực từ', fieldName: 'HieuLucTu', maxWidth: 80, minWidth: 80 },\r\n { key: '13', name: 'Hiệu lực đến', fieldName: 'HieuLucDen', maxWidth: 80, minWidth: 80 },\r\n]\r\nconst styles = {\r\n container: {\r\n root: {\r\n width: '90vw',\r\n height: '90vh',\r\n overflow: 'hidden',\r\n\r\n }\r\n },\r\n headerView: {\r\n paddingLeft: 16, paddingRight: 16,\r\n paddingTop: 4,\r\n paddingBottom: 8,\r\n backgroundColor: SharedColors.cyanBlue10,\r\n marginBottom: 16\r\n },\r\n headerTitle: {\r\n root: {\r\n fontSize: FontSizes.mediumPlus,\r\n color: NeutralColors.white,\r\n fontWeight: FontWeights.bold\r\n }\r\n },\r\n closeButton: {\r\n root: {\r\n color: NeutralColors.white,\r\n marginLeft: 'auto',\r\n marginTop: '4px',\r\n marginRight: '2px',\r\n },\r\n rootHovered: {\r\n color: NeutralColors.white,\r\n backgroundColor: SharedColors.blue10\r\n },\r\n rootPressed: {\r\n color: SharedColors.greenCyan10,\r\n backgroundColor: SharedColors.blue10\r\n }\r\n },\r\n generalView: {\r\n marginLeft: 16,\r\n marginRight: 16,\r\n borderBottom: '1px solid #eee',\r\n paddingBottom: 20\r\n },\r\n generalTitle: {\r\n root: {\r\n fontSize: FontSizes.smallPlus,\r\n fontWeight: FontWeights.semibold,\r\n color: SharedColors.cyanBlue10\r\n }\r\n },\r\n generalContent: {\r\n root: {\r\n fontSize: FontSizes.medium,\r\n // fontWeight: FontWeights.semibold\r\n }\r\n }\r\n\r\n}\r\n","import React from \"react\";\r\nimport { connect } from 'react-redux';\r\nimport '../../Styles/reset.css'\r\nimport '../../Styles/Main.css'\r\nimport HeaderBar from '../Menu/HeaderBar'\r\nimport Container from './Container';\r\nimport { MessageBar, MessageBarType, Modal } from \"@fluentui/react\";\r\nimport Layout from \"../../Styles/Layout\";\r\nimport URL, { decodeResponse, onRequestEnterPrise } from \"../../Containers/MainController\";\r\nimport Type from \"../../Redux/Type\";\r\nimport DrawingToolBar from \"../Drawing/ControlBar\";\r\nimport Statistical from \"../Drawing/Statistical\";\r\nimport { store } from \"../../Redux/Store\";\r\nimport { onLoadMenu as loadMenuQuyHoach } from \"../../Containers/QuyHoach\";\r\nimport setup from \"../../Containers/setup\";\r\nimport TabOptionTop from \"./TabOptionTop\";\r\nimport MapTypes from './Maptype'\r\nimport { onLoadViTriDiaGioi } from \"../../Containers/ViTriHanhChinh\";\r\nimport PriceTableModal from \"../PriceTable/ResultModal\";\r\n\r\nclass Main extends React.PureComponent {\r\n\r\n state = {\r\n routeMenuBar: '',\r\n message: ''\r\n };\r\n\r\n\r\n\r\n componentDidMount() {\r\n document.title = setup.title;\r\n this.onSetLoginStateAtStart();\r\n // let root = document.getElementById('root')\r\n\r\n // root.addEventListener(\"click\", CallClick); \r\n\r\n }\r\n\r\n\r\n\r\n onSetLoginStateAtStart = () => {\r\n //let token = localStorage.getItem(URL.token)\r\n\r\n // if (token)\r\n // {\r\n // let userInfo = decodeResponse(token);\r\n // userInfo = JSON.parse(userInfo);\r\n // // console.log(userInfo)\r\n // this.props.dispatch({type:Type.SET_USER_INFO,userInfo});\r\n // this.props.dispatch({type: Type.SET_TOKEN, token: token});\r\n\r\n // }\r\n\r\n //New CMU\r\n // let token = localStorage.getItem(URL.token)\r\n // if (!token) {\r\n // onCallLoginAPI()\r\n // }\r\n //\r\n\r\n loadMenuQuyHoach();\r\n onLoadViTriDiaGioi();\r\n };\r\n\r\n onCloseModal = () => this.props.dispatch({ type: Type.SET_SHOW_MAIN_MODAL })\r\n\r\n render() {\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {this.props.message ?\r\n store.dispatch({ type: Type.SET_MAIN_MESSAGE, message: '' })}\r\n truncated={true}\r\n dismissButtonAriaLabel=\"Đóng\"\r\n styles={styles.messageBar}\r\n >\r\n {this.props.message}\r\n \r\n : undefined\r\n }\r\n \r\n \r\n \r\n\t\t\t\t {\r\n this.props.priceTableTerm.showResult === true ? \r\n : null\r\n }\r\n
\r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n showModal: state.mapView.showModal,\r\n message: state.mainAlertMessage,\r\n userInfo: state.userInfo,\r\n\tpriceTableTerm: state.priceTableTerm\r\n});\r\n\r\nexport default React.memo(connect(mapStateToProps)(Main));\r\n\r\nconst styles = {\r\n container: {\r\n top: 0,\r\n bottom: 0,\r\n left: 0,\r\n right: 0,\r\n backgroundColor: '#fff'\r\n },\r\n messageBar: {\r\n root: {\r\n position: 'absolute',\r\n top: 48,\r\n right: 0,\r\n width: Layout.warningMessage,\r\n backgroundColor: '#FDE7E9'\r\n }\r\n },\r\n modalContainer: {\r\n display: 'flex',\r\n width: 300\r\n }\r\n};\r\n\r\n","import React, { } from 'react';\r\nimport COLOR from \"../../Styles/Colors\";\r\nimport { TooltipHost, HighContrastSelector, SearchBox, Stack } from '@fluentui/react';\r\nimport { AppButton, BaseButton, CommandButton, HorizontalDivider } from \"../Accessary\";\r\n\r\nconst HeaderBarGhiChu = props => {\r\n return (\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
Quản lý ghi chú
\r\n \r\n
\r\n
\r\n
\r\n \r\n console.log('value is ' + newValue)}\r\n styles={styles.searchBox}\r\n />\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\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 HeaderBarGhiChu;\r\n\r\n\r\nconst styles = {\r\n headerBar: {\r\n backgroundColor: COLOR.blue\r\n },\r\n title: {\r\n fontSize: 14,\r\n color: COLOR.white,\r\n paddingLeft: 20,\r\n fontWeight: 700,\r\n cursor: 'pointer'\r\n },\r\n button: {\r\n splitButtonMenuButton: { backgroundColor: 'white', width: 28, border: 'none' },\r\n splitButtonMenuIcon: { fontSize: '7px' },\r\n splitButtonDivider: { backgroundColor: '#c8c8c8', width: 1, right: 26, position: 'absolute', top: 4, bottom: 4 },\r\n splitButtonContainer: {\r\n selectors: {\r\n [HighContrastSelector]: { border: 'none' },\r\n },\r\n }\r\n },\r\n searchBox: {\r\n root: {\r\n backgroundColor: COLOR.white,\r\n borderColor: COLOR.blue\r\n },\r\n icon: {\r\n color: COLOR.blue\r\n }\r\n },\r\n menuBar: {\r\n root: {\r\n backgroundColor: COLOR.grayBackground,\r\n paddingTop: 6,\r\n paddingBottom: 6\r\n }\r\n },\r\n divider: {\r\n height: 1,\r\n backgroundColor: COLOR.border,\r\n width: '100%'\r\n },\r\n addButton: {\r\n menuIcon: {\r\n\r\n },\r\n label: {\r\n fontSize: 12\r\n }\r\n },\r\n processButton: {\r\n root: {\r\n height: 32,\r\n backgroundColor: COLOR.transparent,\r\n marginRight: 3\r\n },\r\n label: {\r\n fontSize: 12,\r\n color: COLOR.blue\r\n },\r\n icon: {\r\n fontSize: 16\r\n }\r\n }\r\n\r\n};","import React,{} from 'react';\r\nimport COLOR from \"../../Styles/Colors\";\r\nimport {MenuItem} from \"../Accessary\";\r\n\r\n\r\n\r\nconst MenuSide = 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\nexport default MenuSide;\r\n\r\n\r\nconst styles = {\r\n container:{\r\n height:'100%',\r\n backgroundColor:COLOR.grayBackground\r\n },\r\n navStyles:{\r\n root: {\r\n overflowY: 'auto',\r\n height: '100%'\r\n }\r\n }\r\n};","import React,{} from 'react';\r\nimport HeaderBarGhiChu from \"./HeaderBar\";\r\nimport MenuSide from './MenuSide'\r\nimport {VerticalDivider} from \"../Accessary\";\r\n\r\nclass QuanLyGhiChu extends React.Component\r\n{\r\n onBackPress = ()=>\r\n {\r\n window.location.href='/'\r\n };\r\n render()\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\nexport default QuanLyGhiChu;\r\n","import React from 'react';\r\nimport { Switch, Route } from 'react-router';\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\nimport 'office-ui-fabric-core/dist/css/fabric.min.css';\r\nimport {Provider} from 'react-redux';\r\nimport {store} from './Redux/Store';\r\nimport Main from \"./Components/Main/Main\";\r\nimport DanhMucQuanLy from \"./Components/QuanLyGhiChu/DanhMucQuanLy\";\r\nimport { initializeIcons } from '@uifabric/icons';\r\ninitializeIcons();\r\n\r\n\r\nfunction App() {\r\n return (\r\n \r\n
\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nfunction RouteMain() {\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\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\nexport function register(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(process.env.PUBLIC_URL, window.location.href);\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, 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, 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 React from 'react';\r\nimport {Router} from 'react-router';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\nimport App from './App';\r\nimport * as serviceWorker from './serviceWorker';\r\nimport {createBrowserHistory} from \"history\";\r\n\r\nconst history = createBrowserHistory();\r\n\r\nReactDOM.render(\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"],"sourceRoot":""}