{"version":3,"sources":["components/UI/Select/Select.module.css","components/UI/Buttons/Button.module.css","components/LayerItem/LayerItem.module.css","components/UI/Buttons/MapToolButton.module.css","containers/LoginRegister/LoginRegister.module.css","hoc/Layout/Layout.module.css","assets/images/logo_ebdm34_el.jpg","components/MapBackgroundLayer/MapBackgroundLayer.module.css","components/Spinner/Spinner.module.css","containers/Webgis/Webgis.module.css","containers/Legend/Legend.module.css","components/UI/Buttons/SwitchButton.module.css","assets/images/fmrs_logo.png","components/Logo/Logo.module.css","components/UI/Buttons/CloseButton.module.css","components/UI/DataTable/DataTable.module.css","assets/images/basemap_google_satellite.png","assets/images/basemap_google_roadmap.png","assets/images/basemap_google_terrain.png","assets/images/basemap_openstreetmap.png","assets/images/basemap_cardo_db.png","assets/images/basemap_esri_world.png","components/MapToolBarMobile/MapToolBarMobile.module.css","containers/Dropzone/Dropzone.module.css","containers/Statistics/Statistics.module.css","containers/Admin/Admin.module.css","components/MapLayersPanel/MapLayersPanel.module.css","components/MapToolBar/MapToolBar.module.css","components/LayerGroup/LayerGroup.module.css","components/Logo/Logo.js","components/UI/Buttons/Button.js","components/UI/Buttons/CloseButton.js","components/UI/PopupPanel/PopupPanel.js","store/actions/alerts.js","store/actions/actionTypes.js","axios-api.js","store/actions/webgis.js","store/actions/layerItems.js","store/actions/statistics.js","store/actions/loginRegister.js","store/actions/admin.js","store/actions/dropzone.js","components/Navigation/Topbar/Topbar.js","hoc/Layout/Layout.js","components/UI/Buttons/MapToolButton.js","components/MapBackgroundLayer/MapBackgroundLayer.js","components/MapToolBar/MapToolBar.js","components/UI/Select/Select.js","components/Chart/Chart.js","components/UI/DataTable/DataTable.js","components/Spinner/Spinner.js","containers/Statistics/Statistics.js","components/MapToolBarMobile/MapToolBarMobile.js","components/LayerGroup/LayerGroup.js","containers/Legend/Legend.js","components/MapLayersPanel/MapLayersPanel.js","components/OpacitySlider/OpacitySlider.js","components/UI/Buttons/SwitchButton.js","components/LayerItem/LayerItem.js","containers/Webgis/Webgis.js","containers/LoginRegister/LoginRegister.js","components/UI/Select/Select_controlled.js","components/UI/Buttons/DropzoneButton.js","containers/Dropzone/Dropzone.js","containers/Admin/Admin.js","components/PrivateRoute/PrivateRoute.js","App.js","serviceWorker.js","store/reducers/system.js","store/utilities.js","store/reducers/layerItems.js","store/reducers/webgis.js","store/reducers/loginRegister.js","store/reducers/alerts.js","store/reducers/statistics.js","store/reducers/admin.js","store/reducers/dropzone.js","index.js","components/UI/PopupPanel/PopupPanel.module.css","components/Navigation/Topbar/Topbar.module.css","components/OpacitySlider/OpacitySlider.module.css","components/UI/Buttons/DropzoneButton.module.css"],"names":["module","exports","logo","props","className","classes","Logo","to","exact","src","project_logo","alt","button","attachedClasses","Button","fontColor","push","active","Active","submit","Submit","menuButton","MenuButton","disabled","value","join","onClick","clicked","children","closeButton","CloseButton","PopupPanel","state","panelClosed","panelFullScreen","this","PanelClosed","PanelFullScreen","show","Show","Curtain","Panel","CloseButtonWrapper","title","PanelContent","Component","alertSuccess","message","type","alertError","instance","axios","create","baseURL","crossDomain","withCredentials","headers","changeBackground","index","getFeatureInfoStarted","getFeatureInfoSuccess","layers","layersData","getFeatureStart","getFeatureSuccess","getFireYears","geoserverUrl","dispatch","get","then","response","getFireYearsSuccess","data","catch","error","fireYears","getAdminWithFiresSuccess","admin","getAdminWithFiresStarted","getStatisticsSuccess","stats","selectedStatsType","showLoginRegister","showType","loggedIn","user","showLoadingSpinner","hideLoadingSpinner","showConfirmation","confirmationMessage","getVersionsSuccess","versions","updateAdminSimpleVariable","variableName","newValue","createVersionSuccess","uploadedFilesSuccess","uploadedItem","removeDirectoryFromUploads","folder","post","Topbar","mobileMenuOpen","showInfo","onGetUserFromLocalStorage","onLogoutUser","history","setState","espa_banner","TopbarDesktop","TopbarInner","SiteNameWrapper","LogoutMobile","logout","InfoButtonWrapper","BannerWrapper","xmlns","viewBox","d","withRouter","connect","loginRegister","loggedInUser","localStorage","removeItem","onShowLoginRegister","actions","layout","Wrapper","Content","mapToolButton","MapToolButton","tooltip","Tooltip","mapBackgroundLayer","MapBackgroundLayer","image","label","MapToolBar","showBackgroundsPanel","zoomIn","mapRef","leafletElement","zoomOut","closeBackgroundsPanel","hideToolbars","ToolBarWrapper","HideToolbars","zoomExtent","onHideToolbars","BackgroundLayersPanel","BasemapsTitleRow","CloseBasemaps","BasemapsWrapper","basemapLayers","map","basemapLayer","key","selectedBasemap","onChangeBackground","ArrowBottom","webgis","SimpleSelect","React","useState","defaultValue","setValue","theme","createMuiTheme","palette","primary","main","FormControl","ThemeProvider","Select","options","filter","x","length","onChange","event","target","changed","displayEmpty","SelectEmpty","MenuItem","placeholder","option","chart","width","height","margin","top","right","left","bottom","maxBarSize","strokeDasharray","dataKey","xKey","xTitle","position","tick","xTick","allowDecimals","wrapperStyle","maxWidth","verticalAlign","iconSize","paddingBottom","name","yTitle","fill","DenseTable","TableContainer","component","Paper","Table","size","aria-label","TableHead","TableRow","TableCell","align","tableData","TableBody","row","spinner","spinnerClasses","Spinner","themeLight","ThemeLight","Statistics","adminRegions","nameField","codeField","statsFires","results","onGetStatistics","selectedAdmin","adminRegion","onGetAdminWithFires","selectedAdminItem","onUpdateSimpleVariable","statsType","StatisticsWrapper","RegionSelection","SelectWrapper","onChangeAdmin","SelectWithSpinner","selectedAdminLabel","adminItems","onChangeAdminItem","adminItemsLoading","SelectSpinnerWrapper","ButtonsWrapper","onChangeStatsType","ChartWrapper","statsClcLastYear","statsClcYears","onChangeClcYear","defaultIndex","Tabs","selectedTabClassName","SelectedTab","TabList","TabPanel","selectedClassName","SelectedTabPanel","Chart","statsClc","DataTableWrapper","DataTable","numbers","system","mapBounds","statistics","table","url","year","MapToolBarMobile","showPanel","panel","togglePanel","closePanel","panelContent","MapLayersContent","legendItems","ToolButtonsMobileWrapper","LayerGroup","groupClosed","toggleGroup","icon","GroupIcon","Closed","LayerGroupTitleRow","groupName","ArrowWrapper","duration","LayerGroupItems","Legend","fireItems","i","LegendWrapper","LayerGroups","MapLayersPanel","activeTab","tab","mapLayersPanelClasses","MapLayersTitleRow","PanelButtonWrapper","changeActiveTab","PanelArrowWrapper","opacitySlider","Root","Slider","valueLabelDisplay","track","min","max","marks","percentage","e","Track","markActive","MarkActive","markLabel","MarkLabel","thumb","Thumb","valueLabel","ValueLabel","rail","Rail","switchButton","SwitchButton","LayerItem","displayFillColorPickerIndex","displayBorderColorPickerIndex","displayStylingIndex","openItem","item","layerIndex","openTable","onUpdateMapTable","collection","rgbToHex","rgbColor","rgbArr","split","parseInt","toString","slice","handleCloseColorPicker","zoomToLayer","onUpdateMapKey","onUpdateMapBounds","mapLayer","bounds","draghandle","sortable","DragHandle","SortableHandle","layerItemSymbol","legendIcon","showSymbol","mapLayers","displayLegend","LayerItemTool","onToggleLegend","style","field","FlexRowCenter","LayerItemSymbolDiv","fillColor","fillOpacity","layerOpacity","color","opacity","weight","y","envString","env","LayerItemSymbolImage","layer","stylingIcon","stylingDiv","showStyling","popover","zIndex","cover","LayerStyling","FlexTableRow","FlexCell1","FlexCell2","readOnly","onChangeComplete","handleFillColor","handleBorderColor","handleBorderWidth","tableIcon","showTable","activeTable","data-name","zoomIcon","showZoom","visibilityIcon","showVisibility","includes","visible","onUpdateLayerVisibility","deleteIcon","showDelete","onRemoveLayerItem","opacityIcon","showOpacity","displayOpacityIndex","opacityClickHandle","LayerOpacity","OpacitySlider","onChangeLayerOpacity","LayerItemWrapper","FlexRow","LastLayerItem","LayerItemTitle","LayerItemTools","LayerItemSymbolWrapper","layerItems","mapLayersLoading","queryMapLayers","queryMapLayersLoading","Webgis","popupCenter","popupKey","popupFullScreen","mapZoom","openOpacity","closePopup","onClosePopup","toggleFullScreen","toggle","zoomToBounds","newBounds","fitBounds","onGetFireYears","getZoom","onShowFirePolygons","onShowFirePoints","visibleLayers","forEach","prepareGetFeatureInfo","latlng","Date","getMilliseconds","LAT","lat","LNG","lng","BBOX","getBounds","toBBoxString","WIDTH","getSize","HEIGHT","bds","w","getNorthEast","getSouthWest","h","URL","toFixed","mapInfoLayers","getInfoLayers","onChangeFeaturePanel","onGetFeatureInfo","connection","unshift","layerName","layerUrl","layerLabel","layerViewparams","viewparams","layerProperties","mapClasses","Map","tileLayers","FeatureGroup","Pane","WMSTileLayer","format","transparent","onLoading","onAddLayerLoading","onLoad","onRemoveLayerLoading","popupHeader","fullScreenPopupClasses","PopupFullScreenWrapper","popupContent","PopupContentWrapper","ToolRow","loadingFeatureInfo","SpinnerWrapper","featureInfoLayers","ToolRowNav","currentFeatureInfoLayer","ToolRowNavSvg","Disabled","ToolRowActions","Hidden","featureInfoLayer","FeaturePanel","LayerName","PopupProperties","Object","keys","layerData","features","properties","propertyValue","href","Math","floor","random","PropertyRow","OddRow","EvenRow","NoInfo","MapPopupFullScreen","WebGisWrapper","PopupFullScreen","ref","zoomControl","onMapClick","onZoom","maxZoom","isGoogle","googleMapsLoaderConf","KEY","TileLayer","attribution","showPopup","Popup","coordinates","onGetFeature","console","log","action","mapLayerIndex","axiosRoot","all","spread","res","LoginRegister","username","password","name_reg","email_reg","username_reg","password_reg","password_reg_confirm","checkTerms","password_reset","password_reset_confirm","email_reset","checkResetPassword","onAlertError","onSendResetPasswordEmail","activationKey","window","location","startsWith","onUpdatePassword","onAccountActivation","onCheckLogin","onAlertClear","onHideLoginRegister","replace","baseUrl","page","LoginRegisterWrapper","ShowModal","LoginModalWrapper","Heading","Message","ShowMessage","LoginForm","InputWrapper","id","trim","onBlur","Flexed","InputCheckWrapper","Link","showModal","SubmitLogin","login","ChangePasswordModalWrapper","ChangePasswordForm","FlexRight","ChangePasswordButtons","ChangePasswordButton","alerts","showSpinner","loginInfo","text","JSON","parse","setItem","stringify","onRegisterUser","registerInfo","userData","email","dropzoneButton","btnType","btnShape","btnSize","fontWeight","extraClass","Dropzone","highlight","allowedExtensions","openFileDialog","fileInputRef","click","clearDropzone","onClearFilesList","onRemoveDirectoryFromUploads","document","getElementById","getElementsByTagName","evt","preventDefault","ext","newFilesList","filename","dataTransfer","files","substr","lastIndexOf","onFileDropedToList","filesListProgress","inputClasses","dropzoneOuterClasses","Dropzone_outer","Highlight","filesList","FilesAdded","fileList","FileList","fileItem","FileItem","FileItemNameRow","FileLoadedWrapper","FileLoadedCheck","DropzoneButton","onRemoveFileFromFileList","FileLoadedIcon","FileProgressBarBackground","FileProgressBar","getProgressWidth","Dropzone_inner","onDragOver","onDragLeave","onDrop","FileInput","onFileAddedToList","accept","UploadIcon","UploadLabel","ClearButtonWrapper","UploadFilesButton","onUploadFiles","dropzone","persist","getState","formData","FormData","append","config","onUploadProgress","progressEvent","percentCompleted","round","loaded","total","fileIndex","uploadProgress","forwardRef","Admin","onGetVersions","newVersionID","onUpdateAdminSimpleVariable","Swal","fire","showCancelButton","showLoaderOnConfirm","confirmButtonText","cancelButtonText","allowOutsideClick","preConfirm","getItem","token","mapLayerProperties","tableName","mandatoryFields","postData","jwt","geojsonKeys","onCreateNewVersion","result","showConfirmButton","newVersionUploaded","onClearVersion","andText","newFiresVersionID","newClcVersionID","savedVersion_fires","selectedVersion_fires","savedVersion_clc","selectedVersion_clc","savedFiresVersionID","savedClcVersionID","onChangeDatabaseVersion","newVersionAnalysed","close","changedVersion","AdminWrapper","versionsWrapper","Flexbox","Flex170","Flex150","fires","changedActiveVersion","PaddingWrapper","addNewVerion","clc","ButtonWrapper","changeDatabaseVersion","PrivateRoute","rest","render","pathname","from","App","Layout","path","Login","isLocalhost","Boolean","hostname","match","registerValidSW","swUrl","navigator","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","onUpdate","onSuccess","initialState","reactBaseUrl","reducer","updateObject","oldObject","updatedValues","group_id","group","mapLayersRaster","searchResultItem","mapKey","grazingLayers","grazingYears","mapLayersFiresPolygons","mapLayersFiresPoints","updateMapBounds","updateLayerVisibility","newLayers","updateLayerFillColor","r","g","b","a","updateLayerBorderColor","borderColor","updateLayerBorderWidth","updateMapLayersOrder","arr","oldIndex","newIndex","k","undefined","splice","arrayMove","updateMapTable","removeLayerItem","showSearchResultItem","clearSearchResultItem","updateLayerViewparams","addLayerLoading","layersLoading","removeLayerLoading","indexOf","getMapLayersStarted","loading","getMapLayersSuccess","map_layers","data_format","subgroup","raster_filename","findIndex","grazingYear","sort","getMapLayersFailed","updateMapLayersStarted","updateMapLayersSuccess","updateMapLayersFailed","saveQueryResultSuccess","boundsLayer","boundingBox","L","geoJSON","payload","geoserverWorkspace","selectedQueryLayer","selectedQueryField","dataType","selectedQueryValue","published","downloads","geoserver_url","updateMapKey","changeLayerOpacity","colors","colorIndex","fireYear","fire_year","showMapLayers","showFirePolygons","showFirePoints","toggleLegend","basemap_google_satellite","basemap_google_roadmap","basemap_google_terrain","basemap_openstreetmap","subdomains","basemap_cardo_db","basemap_esri_world","changeFeaturePanel","hideLoginRegister","loggedOut","getUserFromLocalStorage","hasOwnProperty","alertClear","statsClcAll","adminItem","code","clcLabels","stat","parseFloat","count","updateSimpleVariable","changeClcYear","nameAttach","version","clearVersion","removeFileFromFileList","newFilesListProgress","fileAddedToList","newfilesListProgress","clearFilesList","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","rootReducer","combineReducers","systemReducer","layerItemsReducer","webgisReducer","loginRegisterReducer","alertsReducer","statisticsReducer","adminReducer","dropzoneReducer","store","createStore","applyMiddleware","thunk","app","ReactDOM","process","origin","addEventListener","fetch","contentType","status","ready","unregister","reload","checkValidServiceWorker"],"mappings":"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","file":"static/js/main.b7d1b8fa.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"FormControl\":\"Select_FormControl__2eYNT\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Button\":\"Button_Button__1JiQg\",\"Active\":\"Button_Active__1YMnA\",\"MenuButton\":\"Button_MenuButton__1cIGB\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"FlexRow\":\"LayerItem_FlexRow__2STi_\",\"FlexRowCenter\":\"LayerItem_FlexRowCenter__2pn__\",\"FlexRowButtons\":\"LayerItem_FlexRowButtons__5a_q6\",\"LayerItemSymbol\":\"LayerItem_LayerItemSymbol__1By3b\",\"LayerItemSymbolDiv\":\"LayerItem_LayerItemSymbolDiv__3nK0D\",\"LayerItemTools\":\"LayerItem_LayerItemTools__14Bdy\",\"LayerItemTool\":\"LayerItem_LayerItemTool__3wAs_\",\"Active\":\"LayerItem_Active__veHzz\",\"LayerStyling\":\"LayerItem_LayerStyling__3hs_W\",\"FlexTableRow\":\"LayerItem_FlexTableRow__3RSTu\",\"FlexCell1\":\"LayerItem_FlexCell1__1lfNk\",\"FlexCell2\":\"LayerItem_FlexCell2__3n2z1\",\"LayerItem\":\"LayerItem_LayerItem__hVNoH\",\"LayerItemWrapper\":\"LayerItem_LayerItemWrapper__3L5_O\",\"LayerItemTitle\":\"LayerItem_LayerItemTitle__NG8iC\",\"DragHandle\":\"LayerItem_DragHandle__IuqCd\",\"LayerItemSymbolWrapper\":\"LayerItem_LayerItemSymbolWrapper__3oYNz\",\"LayerOpacity\":\"LayerItem_LayerOpacity__3iJ1g\",\"LastLayerItem\":\"LayerItem_LastLayerItem__1zaJB\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"MapToolButton\":\"MapToolButton_MapToolButton__2V6qr\",\"Active\":\"MapToolButton_Active__w8jnu\",\"Tooltip\":\"MapToolButton_Tooltip__72AMu\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"LoginRegisterWrapper\":\"LoginRegister_LoginRegisterWrapper__1LpFC\",\"Curtain\":\"LoginRegister_Curtain__2dIqk\",\"Show\":\"LoginRegister_Show__2q9He\",\"LoginModalWrapper\":\"LoginRegister_LoginModalWrapper__2jAjl\",\"RegisterModalWrapper\":\"LoginRegister_RegisterModalWrapper__1x_x5\",\"ConfirmationModalWrapper\":\"LoginRegister_ConfirmationModalWrapper__2McSo\",\"ChangePasswordModalWrapper\":\"LoginRegister_ChangePasswordModalWrapper__3sO1c\",\"ConfirmationMessage\":\"LoginRegister_ConfirmationMessage__2KcDN\",\"CloseModal\":\"LoginRegister_CloseModal__31Ykn\",\"Heading\":\"LoginRegister_Heading__2C_Nf\",\"InputWrapper\":\"LoginRegister_InputWrapper__1gNiy\",\"register_form\":\"LoginRegister_register_form__2zV0h\",\"InputCheckWrapper\":\"LoginRegister_InputCheckWrapper__1R_l0\",\"Link\":\"LoginRegister_Link__3JB0t\",\"Flexed\":\"LoginRegister_Flexed__p-JJl\",\"SubmitLogin\":\"LoginRegister_SubmitLogin__2ISj6\",\"SubmitRegister\":\"LoginRegister_SubmitRegister__p48ww\",\"Subheading\":\"LoginRegister_Subheading__n3sQj\",\"RegisterForm\":\"LoginRegister_RegisterForm__4Z-wL\",\"FlexRight\":\"LoginRegister_FlexRight__22msA\",\"ChangePasswordForm\":\"LoginRegister_ChangePasswordForm__25A5Y\",\"ChangePasswordButtons\":\"LoginRegister_ChangePasswordButtons__1YpoY\",\"Margin_b_30\":\"LoginRegister_Margin_b_30__yiD8p\",\"Margin_b_10\":\"LoginRegister_Margin_b_10__3LWzK\",\"Message\":\"LoginRegister_Message__BqzIr\",\"ShowMessage\":\"LoginRegister_ShowMessage__3PtqI\",\"Success\":\"LoginRegister_Success__16pTX\",\"Error\":\"LoginRegister_Error__PwSUL\",\"Register\":\"LoginRegister_Register__1P9FV\",\"Login\":\"LoginRegister_Login__2BOKg\",\"Logout\":\"LoginRegister_Logout__3KPGS\",\"ChangePasswordButton\":\"LoginRegister_ChangePasswordButton__2R5pu\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Wrapper\":\"Layout_Wrapper__3UM85\",\"Content\":\"Layout_Content__2Qfcf\"};","module.exports = __webpack_public_path__ + \"static/media/logo_ebdm34_el.f7b03dd2.jpg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"MapBackgroundLayer\":\"MapBackgroundLayer_MapBackgroundLayer__2DsPJ\",\"Active\":\"MapBackgroundLayer_Active__3HhoN\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Spinner\":\"Spinner_Spinner__3gq8U\",\"load3\":\"Spinner_load3__11qyD\",\"ThemeLight\":\"Spinner_ThemeLight__1fEZA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"WebGisWrapper\":\"Webgis_WebGisWrapper__3ozPJ\",\"Map\":\"Webgis_Map__1oIu3\",\"ToolBarWrapper\":\"Webgis_ToolBarWrapper__2IhLY\",\"Hidden\":\"Webgis_Hidden__LC82t\",\"Popup\":\"Webgis_Popup__1L4Pu\",\"ToolRow\":\"Webgis_ToolRow__13cx4\",\"ToolRowNav\":\"Webgis_ToolRowNav__1XdxI\",\"ToolRowActions\":\"Webgis_ToolRowActions__1wGxZ\",\"ToolRowNavSvg\":\"Webgis_ToolRowNavSvg__2hLrS\",\"Disabled\":\"Webgis_Disabled__2YPC2\",\"CloseButtonWrapper\":\"Webgis_CloseButtonWrapper__1UtZm\",\"PopupContentWrapper\":\"Webgis_PopupContentWrapper__39jxR\",\"FeaturePanel\":\"Webgis_FeaturePanel__3GHfz\",\"Active\":\"Webgis_Active__16aAA\",\"LayerName\":\"Webgis_LayerName__2cBie\",\"SpinnerWrapper\":\"Webgis_SpinnerWrapper__3doty\",\"PopupFullScreenWrapper\":\"Webgis_PopupFullScreenWrapper__1TXbS\",\"PopupFullScreen\":\"Webgis_PopupFullScreen__1kVML\",\"Show\":\"Webgis_Show__1j-Ns\",\"Curtain\":\"Webgis_Curtain__Sarny\",\"MapPopupFullScreen\":\"Webgis_MapPopupFullScreen__BhBC-\",\"OddRow\":\"Webgis_OddRow__1kfBL\",\"EvenRow\":\"Webgis_EvenRow__1MJes\",\"NoInfo\":\"Webgis_NoInfo__LqKaI\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"LayerGroups\":\"Legend_LayerGroups__fHaat\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"SwitchButton\":\"SwitchButton_SwitchButton__3mNwm\",\"Active\":\"SwitchButton_Active__34Dts\"};","module.exports = __webpack_public_path__ + \"static/media/fmrs_logo.c0901f18.png\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Logo\":\"Logo_Logo__1powZ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"CloseButton\":\"CloseButton_CloseButton__2GbK9\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Table\":\"DataTable_Table__eb3_Y\"};","module.exports = __webpack_public_path__ + \"static/media/basemap_google_satellite.fd0e4ebb.png\";","module.exports = __webpack_public_path__ + \"static/media/basemap_google_roadmap.4aa84a78.png\";","module.exports = __webpack_public_path__ + \"static/media/basemap_google_terrain.2b38c91b.png\";","module.exports = __webpack_public_path__ + \"static/media/basemap_openstreetmap.43bb4aed.png\";","module.exports = __webpack_public_path__ + \"static/media/basemap_cardo_db.bf2ef490.png\";","module.exports = __webpack_public_path__ + \"static/media/basemap_esri_world.6d43af0e.png\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"ToolBarWrapper\":\"MapToolBarMobile_ToolBarWrapper__3elgZ\",\"BackgroundLayersPanel\":\"MapToolBarMobile_BackgroundLayersPanel__3Tazv\",\"Show\":\"MapToolBarMobile_Show__ATJMy\",\"ArrowBottom\":\"MapToolBarMobile_ArrowBottom__shePx\",\"BasemapsTitleRow\":\"MapToolBarMobile_BasemapsTitleRow__3LMQj\",\"CloseBasemaps\":\"MapToolBarMobile_CloseBasemaps__Gaq1m\",\"BasemapsWrapper\":\"MapToolBarMobile_BasemapsWrapper__3qs7x\",\"HideToolbars\":\"MapToolBarMobile_HideToolbars__1-EyQ\",\"MapLayersContent\":\"MapToolBarMobile_MapLayersContent__1aocZ\",\"ToolButtonsMobileWrapper\":\"MapToolBarMobile_ToolButtonsMobileWrapper__1dQX2\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Dropzone_outer\":\"Dropzone_Dropzone_outer__iCoR3\",\"Dropzone_inner\":\"Dropzone_Dropzone_inner__2oJq6\",\"Dropzone\":\"Dropzone_Dropzone__eoNAS\",\"Highlight\":\"Dropzone_Highlight__2QB3W\",\"UploadLabel\":\"Dropzone_UploadLabel__17fYU\",\"UploadIcon\":\"Dropzone_UploadIcon__jIWXZ\",\"FileInput\":\"Dropzone_FileInput__2NuqL\",\"FileList\":\"Dropzone_FileList__1zlDS\",\"FileItem\":\"Dropzone_FileItem__x212Y\",\"FileProgressBarBackground\":\"Dropzone_FileProgressBarBackground__3PNSW\",\"FileProgressBar\":\"Dropzone_FileProgressBar__3XXD3\",\"FlexRow\":\"Dropzone_FlexRow__3K6Ek\",\"FilesAdded\":\"Dropzone_FilesAdded__1fLMZ\",\"FileLoadedWrapper\":\"Dropzone_FileLoadedWrapper__2fMhc\",\"FileItemNameRow\":\"Dropzone_FileItemNameRow__1Sb1q\",\"FileLoadedCheck\":\"Dropzone_FileLoadedCheck__1hp6P\",\"FileLoadedIcon\":\"Dropzone_FileLoadedIcon__3PLTF\",\"ClearButtonWrapper\":\"Dropzone_ClearButtonWrapper__1jbu3\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"StatisticsWrapper\":\"Statistics_StatisticsWrapper__37sUM\",\"RegionSelection\":\"Statistics_RegionSelection__1cOmT\",\"HorizontalMargin\":\"Statistics_HorizontalMargin__xW_BJ\",\"SelectWrapper\":\"Statistics_SelectWrapper__3kVKV\",\"ButtonsWrapper\":\"Statistics_ButtonsWrapper__H-F-R\",\"ChartWrapper\":\"Statistics_ChartWrapper__13QHK\",\"DataTableWrapper\":\"Statistics_DataTableWrapper__3q9J7\",\"Tab\":\"Statistics_Tab__2DOoS\",\"Hidden\":\"Statistics_Hidden__38n9U\",\"SelectWithSpinner\":\"Statistics_SelectWithSpinner__1PEqr\",\"SelectSpinnerWrapper\":\"Statistics_SelectSpinnerWrapper__eCyeu\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AdminWrapper\":\"Admin_AdminWrapper__uAdQ6\",\"versionsWrapper\":\"Admin_versionsWrapper__2Ia4X\",\"Flexbox\":\"Admin_Flexbox__1mXUg\",\"Flex170\":\"Admin_Flex170__yaU65\",\"Flex150\":\"Admin_Flex150__16SLu\",\"ButtonWrapper\":\"Admin_ButtonWrapper__3f367\",\"PaddingWrapper\":\"Admin_PaddingWrapper__qAXMY\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"MapLayersPanel\":\"MapLayersPanel_MapLayersPanel__lx7Kz\",\"MapLayersTitleRow\":\"MapLayersPanel_MapLayersTitleRow__30bI1\",\"CloseButton\":\"MapLayersPanel_CloseButton__2X0qS\",\"Closed\":\"MapLayersPanel_Closed__a6vLj\",\"MapLayersContent\":\"MapLayersPanel_MapLayersContent__1t57l\",\"HideToolbars\":\"MapLayersPanel_HideToolbars__22tii\",\"PanelButtonWrapper\":\"MapLayersPanel_PanelButtonWrapper__2TED9\",\"Active\":\"MapLayersPanel_Active__15UAx\",\"PanelArrowWrapper\":\"MapLayersPanel_PanelArrowWrapper__1zg-g\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"ToolBarWrapper\":\"MapToolBar_ToolBarWrapper__2svi7\",\"BackgroundLayersPanel\":\"MapToolBar_BackgroundLayersPanel__151m5\",\"Show\":\"MapToolBar_Show__3rXtQ\",\"ArrowBottom\":\"MapToolBar_ArrowBottom__S3xyq\",\"BasemapsTitleRow\":\"MapToolBar_BasemapsTitleRow__2LWIO\",\"CloseBasemaps\":\"MapToolBar_CloseBasemaps__346RC\",\"BasemapsWrapper\":\"MapToolBar_BasemapsWrapper__3cuVk\",\"HideToolbars\":\"MapToolBar_HideToolbars__3AHx6\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"LayerGroup\":\"LayerGroup_LayerGroup__AuEcN\",\"LayerGroupTitleRow\":\"LayerGroup_LayerGroupTitleRow__x2Z8_\",\"GroupIcon\":\"LayerGroup_GroupIcon__zJcrN\",\"ArrowWrapper\":\"LayerGroup_ArrowWrapper__3Dz59\",\"CloseButton\":\"LayerGroup_CloseButton__3uEAA\",\"Closed\":\"LayerGroup_Closed__24oHM\"};","import React from 'react';\nimport { NavLink } from 'react-router-dom';\n\nimport project_logo from '../../assets/images/fmrs_logo.png';\nimport classes from './Logo.module.css';\n\nconst logo = (props) => {\n return (\n
\n \n \"FRMS\n \n \n
\n )\n};\n\nexport default logo;","import React from 'react';\n\nimport classes from './Button.module.css';\n\nconst button = (props) => {\n let attachedClasses = [classes.Button];\n\n if (props.fontColor){\n attachedClasses.push(classes[props.fontColor])\n }\n if (props.active){\n attachedClasses.push(classes.Active)\n }\n if (props.submit){\n attachedClasses.push(classes.Submit)\n }\n if (props.menuButton){\n attachedClasses.push(classes.MenuButton)\n }\n\n return(\n \n {props.children}\n \n )\n};\n\nexport default button;","import React from 'react';\r\n\r\nimport classes from './CloseButton.module.css';\r\n\r\nconst closeButton = (props) => {\r\n\r\n return(\r\n \r\n \r\n )\r\n};\r\n\r\nexport default closeButton;","import React, { Component } from 'react';\r\n\r\nimport classes from './PopupPanel.module.css';\r\nimport CloseButton from '../Buttons/CloseButton';\r\n\r\nclass PopupPanel extends Component {\r\n state = {\r\n panelClosed: false,\r\n panelFullScreen: false\r\n }\r\n \r\n render () {\r\n let attachedClasses = [classes.PopupPanel];\r\n\r\n if (this.state.panelClosed === true) {\r\n attachedClasses.push(classes.PanelClosed);\r\n }\r\n if (this.state.panelFullScreen === true) {\r\n attachedClasses.push(classes.PanelFullScreen);\r\n }\r\n if (this.props.show) {\r\n attachedClasses.push(classes.Show);\r\n } \r\n\r\n return(\r\n
\r\n
\r\n
\r\n
\r\n

{this.props.title}

\r\n \r\n
\r\n \r\n
\r\n {this.props.children}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default PopupPanel;","import * as actionTypes from './actionTypes';\r\n\r\nexport const alertSuccess = (message) => {\r\n return {\r\n type: actionTypes.ALERT_SUCCESS,\r\n message: message\r\n };\r\n};\r\n\r\nexport const alertError = (message) => {\r\n return {\r\n type: actionTypes.ALERT_ERROR,\r\n message: message\r\n };\r\n};\r\n\r\nexport const alertClear = () => {\r\n return {\r\n type: actionTypes.ALERT_CLEAR\r\n };\r\n};","// Alerts ---------------------------------------------------\r\nexport const ALERT_SUCCESS = 'ALERT_SUCCESS';\r\nexport const ALERT_ERROR = 'ALERT_ERROR';\r\nexport const ALERT_CLEAR = 'ALERT_CLEAR';\r\n\r\n// Webgis ---------------------------------------------------\r\nexport const CHANGE_BACKGROUND = 'CHANGE_BACKGROUND';\r\nexport const GET_FEATURE_INFO = 'GET_FEATURE_INFO';\r\nexport const GET_FEATURE_INFO_STARTED = 'GET_FEATURE_INFO_STARTED';\r\nexport const GET_FEATURE_INFO_SUCCESS = 'GET_FEATURE_INFO_SUCCESS';\r\nexport const GET_FEATURE = 'GET_FEATURE';\r\nexport const GET_FEATURE_START = 'GET_FEATURE_START';\r\nexport const GET_FEATURE_SUCCESS = 'GET_FEATURE_SUCCESS';\r\nexport const CHANGE_FEATURE_PANEL = 'CHANGE_FEATURE_PANEL';\r\nexport const CLOSE_POPUP = 'CLOSE_POPUP';\r\n\r\n// LayerItems ---------------------------------------------------\r\nexport const UPDATE_LAYER_FILL_COLOR = 'UPDATE_LAYER_FILL_COLOR';\r\nexport const UPDATE_MAP_BOUNDS = 'UPDATE_MAP_BOUNDS';\r\nexport const UPDATE_LAYER_VISIBILITY = 'UPDATE_LAYER_VISIBILITY';\r\nexport const UPDATE_LAYER_BORDER_COLOR = 'UPDATE_LAYER_BORDER_COLOR';\r\nexport const UPDATE_LAYER_BORDER_WIDTH = 'UPDATE_LAYER_BORDER_WIDTH';\r\nexport const UPDATE_MAP_LAYERS_ORDER = 'UPDATE_MAP_LAYERS_ORDER';\r\nexport const UPDATE_MAP_LAYERS_STARTED = 'UPDATE_MAP_LAYERS_STARTED';\r\nexport const UPDATE_MAP_LAYERS_SUCCESS = 'UPDATE_MAP_LAYERS_SUCCESS';\r\nexport const UPDATE_MAP_LAYERS_FAILED = 'UPDATE_MAP_LAYERS_FAILED';\r\nexport const UPDATE_MAP_TABLE = 'UPDATE_MAP_TABLE';\r\nexport const REMOVE_LAYER_ITEM = 'REMOVE_LAYER_ITEM';\r\nexport const SHOW_SEARCH_RESULT_ITEM = 'SHOW_SEARCH_RESULT_ITEM';\r\nexport const CLEAR_SEARCH_RESULT_ITEM = 'CLEAR_SEARCH_RESULT_ITEM';\r\nexport const UPDATE_LAYER_VIEWPARAMS = 'UPDATE_LAYER_VIEWPARAMS';\r\nexport const ADD_LAYER_LOADING = 'ADD_LAYER_LOADING';\r\nexport const REMOVE_LAYER_LOADING = 'REMOVE_LAYER_LOADING';\r\nexport const GET_MAP_LAYERS = 'GET_MAP_LAYERS';\r\nexport const GET_MAP_LAYERS_STARTED = 'GET_MAP_LAYERS_STARTED';\r\nexport const GET_MAP_LAYERS_SUCCESS = 'GET_MAP_LAYERS_SUCCESS';\r\nexport const GET_MAP_LAYERS_FAILED = 'GET_MAP_LAYERS_FAILED';\r\nexport const SAVE_QUERY_RESULT = 'SAVE_QUERY_RESULT';\r\nexport const SAVE_QUERY_RESULT_SUCCESS = 'SAVE_QUERY_RESULT_SUCCESS';\r\nexport const UPDATE_MAP_KEY = 'UPDATE_MAP_KEY';\r\nexport const CHANGE_LAYER_OPACITY = 'CHANGE_LAYER_OPACITY';\r\nexport const GET_FIRE_YEARS = 'GET_FIRE_YEARS';\r\nexport const GET_FIRE_YEARS_SUCCESS = 'GET_FIRE_YEARS_SUCCESS';\r\nexport const GET_FIRE_POINTS = 'GET_FIRE_POINTS';\r\nexport const GET_FIRE_POINTS_SUCCESS = 'GET_FIRE_POINTS_SUCCESS';\r\nexport const SHOW_FIRE_POLYGONS = 'SHOW_FIRE_POLYGONS';\r\nexport const SHOW_FIRE_POINTS = 'SHOW_FIRE_POINTS';\r\nexport const TOGGLE_LEGEND = 'TOGGLE_LEGEND';\r\n\r\n// Statistics ---------------------------------------------------\r\nexport const GET_ADMIN_WITH_FIRES = 'GET_ADMIN_WITH_FIRES';\r\nexport const GET_ADMIN_WITH_FIRES_SUCCESS = 'GET_ADMIN_WITH_FIRES_SUCCESS';\r\nexport const GET_STATISTICS = 'GET_STATISTICS';\r\nexport const GET_ADMIN_WITH_FIRES_STARTED = 'GET_ADMIN_WITH_FIRES_STARTED';\r\nexport const GET_STATISTICS_SUCCESS = 'GET_STATISTICS_SUCCESS';\r\nexport const UPDATE_SIMPLE_VARIABLE = 'UPDATE_SIMPLE_VARIABLE';\r\nexport const CHANGE_CLC_YEAR = 'CHANGE_CLC_YEAR';\r\n\r\n// LoginRegister ---------------------------------------------------\r\nexport const SHOW_LOGIN_REGISTER = 'SHOW_LOGIN_REGISTER';\r\nexport const HIDE_LOGIN_REGISTER = 'HIDE_LOGIN_REGISTER';\r\nexport const CHECK_LOGIN = 'CHECK_LOGIN';\r\nexport const REGISTER_USER = 'REGISTER_USER';\r\nexport const LOGGED_IN = 'LOGGED_IN';\r\nexport const LOGGED_OUT = 'LOGGED_OUT';\r\nexport const GET_USER_FROM_LOCAL_STORAGE = 'GET_USER_FROM_LOCAL_STORAGE';\r\nexport const ACCOUNT_ACTIVATION = 'ACCOUNT_ACTIVATION';\r\nexport const SHOW_CONFIRMATION = 'SHOW_CONFIRMATION';\r\nexport const SEND_RESET_PASSWORD_EMAIL = 'SEND_RESET_PASSWORD_EMAIL';\r\nexport const UPDATE_PASSWORD = 'UPDATE_PASSWORD';\r\nexport const SHOW_LOADING_SPINNER = 'SHOW_LOADING_SPINNER';\r\nexport const HIDE_LOADING_SPINNER = 'HIDE_LOADING_SPINNER';\r\n\r\n// Admin ---------------------------------------------------\r\nexport const GET_VERSIONS = 'GET_VERSIONS';\r\nexport const GET_VERSIONS_SUCCESS = 'GET_VERSIONS_SUCCESS';\r\nexport const UPDATE_ADMIN_SIMPLE_VARIABLE = 'UPDATE_ADMIN_SIMPLE_VARIABLE';\r\nexport const CREATE_NEW_VERSION = 'CREATE_NEW_VERSION';\r\nexport const CREATE_VERSION_SUCCESS = 'CREATE_VERSION_SUCCESS';\r\nexport const CLEAR_VERSION = 'CLEAR_VERSION';\r\nexport const CHANGE_DATABASE_VERSION = 'CHANGE_DATABASE_VERSION';\r\n\r\n// Dropzone ---------------------------------------------------\r\nexport const REMOVE_FILE_FROM_FILE_LIST = 'REMOVE_FILE_FROM_FILE_LIST';\r\nexport const FILE_ADDED_TO_LIST = 'FILE_ADDED_TO_LIST';\r\nexport const FILE_DROPED_TO_LIST = 'FILE_DROPED_TO_LIST';\r\nexport const UPLOAD_PROGRESS = 'UPLOAD_PROGRESS';\r\nexport const UPLOAD_FILES_FAILED = 'UPLOAD_FILES_FAILED';\r\nexport const CLEAR_FILES_LIST = 'CLEAR_FILES_LIST';\r\nexport const UPLOADED_FILES_SUCCESS = 'UPLOADED_FILES_SUCCESS';\r\nexport const REMOVE_DIRECTORY_FROM_UPLOADS = 'REMOVE_DIRECTORY_FROM_UPLOADS';","import axios from 'axios';\n\nconst instance = axios.create({\n baseURL: 'http://192.168.1.52:8081/burned_areas_react/burned_areas_react_api/',\n crossDomain: true,\n withCredentials: false,\n //credentials: 'same-origin',\n //mode: 'no-cors',\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n }\n});\n\nexport default instance;","import * as actionTypes from './actionTypes';\r\nimport axiosRoot from 'axios';\r\nimport axios from '../../axios-api';\r\n\r\nexport const changeBackground = (index) => {\r\n return {\r\n type: actionTypes.CHANGE_BACKGROUND,\r\n index: index\r\n };\r\n};\r\n\r\nexport const getFeatureInfo = (url, layers) => {\r\n return dispatch => {\r\n dispatch(getFeatureInfoStarted());\r\n axiosRoot.all(layers.map(layer => axiosRoot.get(`${layer.layerUrl}${url}&layers=${layer.layerName}&query_layers=${layer.layerName}&viewparams=${layer.layerViewparams}`)))\r\n .then(axiosRoot.spread((...res) => {\r\n // all requests are now complete\r\n dispatch(getFeatureInfoSuccess(layers, res));\r\n }));\r\n };\r\n};\r\n\r\nexport const getFeatureInfoStarted = () => {\r\n return {\r\n type: actionTypes.GET_FEATURE_INFO_STARTED\r\n };\r\n};\r\n\r\nexport const getFeatureInfoSuccess = (layers, layersData) => {\r\n return {\r\n type: actionTypes.GET_FEATURE_INFO_SUCCESS,\r\n layers: layers,\r\n layersData: layersData\r\n };\r\n};\r\n\r\nexport const getFeature = (mapLayers, latlng) => {\r\n return dispatch => {\r\n dispatch(getFeatureStart());\r\n axios.post( 'getFeature.php', {mapLayers:mapLayers, latlng:latlng} )\r\n .then(response => {\r\n console.log(response.data)\r\n dispatch(getFeatureSuccess(response.data)); \r\n })\r\n .catch( error => {\r\n });\r\n };\r\n};\r\n\r\nexport const getFeatureStart = () => {\r\n return {\r\n type: actionTypes.GET_FEATURE_START\r\n };\r\n};\r\n\r\nexport const getFeatureSuccess = (layersData) => {\r\n return {\r\n type: actionTypes.GET_FEATURE_SUCCESS,\r\n layersData: layersData\r\n };\r\n};\r\n\r\nexport const changeFeaturePanel = (action) => {\r\n return {\r\n type: actionTypes.CHANGE_FEATURE_PANEL,\r\n action:action\r\n };\r\n};\r\n\r\nexport const closePopup = () => {\r\n return {\r\n type: actionTypes.CLOSE_POPUP\r\n };\r\n};","import * as actionTypes from './actionTypes';\r\nimport axiosRoot from 'axios';\r\nimport axios from '../../axios-api';\r\n\r\nexport const updateMapBounds = (mapBounds) => {\r\n return {\r\n type: actionTypes.UPDATE_MAP_BOUNDS,\r\n mapBounds: mapBounds\r\n };\r\n}\r\n\r\nexport const updateLayerVisibility = (layerIndex, collection) => {\r\n return {\r\n type: actionTypes.UPDATE_LAYER_VISIBILITY,\r\n layerIndex: layerIndex,\r\n collection: collection\r\n };\r\n};\r\n\r\nexport const updateLayerFillColor = (layerIndex, fillColor, collection) => {\r\n return {\r\n type: actionTypes.UPDATE_LAYER_FILL_COLOR,\r\n layerIndex:layerIndex,\r\n fillColor: fillColor,\r\n collection: collection\r\n };\r\n};\r\n\r\nexport const updateLayerBorderColor = (layerIndex, borderColor, collection) => {\r\n return {\r\n type: actionTypes.UPDATE_LAYER_BORDER_COLOR,\r\n layerIndex:layerIndex,\r\n borderColor: borderColor,\r\n collection: collection\r\n };\r\n};\r\n\r\nexport const updateLayerBorderWidth = (event, layerIndex, collection) => {\r\n event.persist();\r\n\r\n return {\r\n type: actionTypes.UPDATE_LAYER_BORDER_WIDTH,\r\n layerIndex:layerIndex,\r\n event: event,\r\n collection: collection\r\n };\r\n};\r\n\r\nexport const updateMapLayersOrder = (event, collection) => { \r\n return {\r\n type: actionTypes.UPDATE_MAP_LAYERS_ORDER,\r\n event:event,\r\n collection: collection\r\n };\r\n};\r\n\r\nexport const updateMapTable = (layerIndex, collection) => {\r\n return {\r\n type: actionTypes.UPDATE_MAP_TABLE,\r\n layerIndex:layerIndex,\r\n collection: collection\r\n };\r\n};\r\n\r\nexport const removeLayerItem = (layerIndex, collection) => {\r\n return {\r\n type: actionTypes.REMOVE_LAYER_ITEM,\r\n layerIndex:layerIndex,\r\n collection: collection\r\n };\r\n};\r\n\r\nexport const showSearchResultItem = (searchResultItem) => {\r\n return {\r\n type: actionTypes.SHOW_SEARCH_RESULT_ITEM,\r\n searchResultItem:searchResultItem\r\n };\r\n};\r\n\r\nexport const clearSearchResultItem = () => {\r\n return {\r\n type: actionTypes.CLEAR_SEARCH_RESULT_ITEM\r\n };\r\n};\r\n\r\nexport const updateLayerViewparams = (mapLayerIndex,viewparams) => {\r\n return {\r\n type: actionTypes.UPDATE_LAYER_VIEWPARAMS,\r\n mapLayerIndex: mapLayerIndex,\r\n viewparams: viewparams\r\n };\r\n};\r\n\r\nexport const addLayerLoading = (mapLayerIndex, collection) => {\r\n return {\r\n type: actionTypes.ADD_LAYER_LOADING,\r\n mapLayerIndex: mapLayerIndex,\r\n collection: collection\r\n };\r\n};\r\n\r\nexport const removeLayerLoading = (mapLayerIndex, collection) => {\r\n return {\r\n type: actionTypes.REMOVE_LAYER_LOADING,\r\n mapLayerIndex: mapLayerIndex,\r\n collection: collection\r\n };\r\n};\r\n\r\nexport const getMapLayers = () => {\r\n const user = JSON.parse(localStorage.getItem('user'));\r\n let token = null;\r\n\r\n return dispatch => {\r\n if (user){\r\n token = user.token;\r\n }\r\n\r\n dispatch(getMapLayersStarted());\r\n axios.post( 'getMapLayers.php', {\"jwt\":token} )\r\n .then( response => {\r\n dispatch(getMapLayersSuccess(response.data));\r\n })\r\n .catch( error => {\r\n dispatch(getMapLayersFailed());\r\n });\r\n };\r\n};\r\n\r\nexport const getMapLayersStarted = () => {\r\n return {\r\n type: actionTypes.GET_MAP_LAYERS_STARTED\r\n };\r\n};\r\n\r\nexport const getMapLayersSuccess = (mapLayers) => {\r\n return {\r\n type: actionTypes.GET_MAP_LAYERS_SUCCESS,\r\n mapLayers:mapLayers\r\n };\r\n};\r\n\r\nexport const getMapLayersFailed = () => {\r\n return {\r\n type: actionTypes.GET_MAP_LAYERS_FAILED\r\n };\r\n};\r\n\r\nexport const saveQueryResult = (geoserverUrl,geoserverWorkspace,selectedQueryLayer,selectedQueryField,selectedQueryValue,geoserverLayers) => {\r\n return dispatch => {\r\n const payload={\r\n geoserverUrl:geoserverUrl,\r\n geoserverWorkspace: geoserverWorkspace,\r\n selectedQueryLayer:selectedQueryLayer,\r\n selectedQueryField:selectedQueryField,\r\n selectedQueryValue:selectedQueryValue,\r\n geoserverLayers:geoserverLayers\r\n }\r\n\r\n let url = \"\";\r\n let min, max;\r\n if (selectedQueryField.dataType === \"string\"){\r\n min = selectedQueryValue;\r\n max = selectedQueryValue;\r\n } else {\r\n min = selectedQueryValue[0];\r\n max = selectedQueryValue[1];\r\n }\r\n\r\n url = `${geoserverUrl}ows?service=WFS&version=2.0&request=GetFeature&typeName=${geoserverWorkspace}:${selectedQueryLayer.tableName}_bounds&outputFormat=application/json&viewparams=FIELD:${selectedQueryField.field};VALUE_MIN:${min};VALUE_MAX:${max};`;\r\n \r\n axiosRoot.get(url)\r\n .then( response => {\r\n dispatch(saveQueryResultSuccess(response.data, payload));\r\n })\r\n .catch( error => {\r\n \r\n });\r\n };\r\n};\r\n\r\nexport const saveQueryResultSuccess = (boundingBox, payload) => {\r\n return {\r\n type: actionTypes.SAVE_QUERY_RESULT_SUCCESS,\r\n boundingBox:boundingBox,\r\n payload: payload\r\n };\r\n};\r\n\r\n\r\nexport const updateMapKey = () => {\r\n return {\r\n type: actionTypes.UPDATE_MAP_KEY\r\n };\r\n};\r\n\r\nexport const changeLayerOpacity = (layerIndex, percentage, collection) => {\r\n return {\r\n type: actionTypes.CHANGE_LAYER_OPACITY,\r\n layerIndex: layerIndex,\r\n percentage: percentage,\r\n collection: collection\r\n };\r\n};\r\n\r\nexport const getFireYears = (geoserverUrl) => {\r\n return dispatch => {\r\n axios.get(`${geoserverUrl}burned_areas/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=burned_areas:fire_years&outputFormat=application/json`)\r\n .then(response => {\r\n dispatch(getFireYearsSuccess(response.data)); \r\n })\r\n .catch( error => {\r\n });\r\n };\r\n};\r\n\r\nexport const getFireYearsSuccess = (fireYears) => {\r\n return {\r\n type: actionTypes.GET_FIRE_YEARS_SUCCESS,\r\n fireYears: fireYears\r\n };\r\n};\r\n\r\nexport const showFirePolygons = () => {\r\n return {\r\n type: actionTypes.SHOW_FIRE_POLYGONS\r\n };\r\n};\r\n\r\nexport const showFirePoints = () => {\r\n return {\r\n type: actionTypes.SHOW_FIRE_POINTS\r\n };\r\n};\r\n\r\nexport const toggleLegend = (layerIndex) => {\r\n return {\r\n type: actionTypes.TOGGLE_LEGEND,\r\n layerIndex: layerIndex\r\n };\r\n};","import * as actionTypes from './actionTypes';\r\nimport axios from '../../axios-api';\r\n\r\n\r\nexport const getAdminWithFires = (geoserverUrl, table, nameField, codeField) => {\r\n return dispatch => {\r\n dispatch(getAdminWithFiresStarted());\r\n axios.get(`${geoserverUrl}burned_areas/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=burned_areas:stats_admin_with_fires&outputFormat=application/json&viewparams=TABLE:${table};NAME:${nameField};CODE:${codeField}`)\r\n .then(response => {\r\n dispatch(getAdminWithFiresSuccess(response.data));\r\n })\r\n .catch( error => {\r\n });\r\n };\r\n};\r\n\r\nexport const getAdminWithFiresSuccess = (admin) => {\r\n return {\r\n type: actionTypes.GET_ADMIN_WITH_FIRES_SUCCESS,\r\n admin: admin\r\n };\r\n};\r\n\r\nexport const getAdminWithFiresStarted = () => {\r\n return {\r\n type: actionTypes.GET_ADMIN_WITH_FIRES_STARTED\r\n };\r\n};\r\n\r\nexport const getStatistics = (geoserverUrl, table, value, selectedStatsType, codeField) => {\r\n let url = `${geoserverUrl}burned_areas/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=burned_areas:stats_fires_admin&outputFormat=application/json&viewparams=TABLE:${table};VALUE:${value};FIELD:${codeField}`;\r\n\r\n if (table === \"country\" && selectedStatsType === \"fires\"){\r\n url = `${geoserverUrl}burned_areas/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=burned_areas:stats_fires_country&outputFormat=application/json`;\r\n \r\n } else if (table === \"country\" && selectedStatsType === \"clc\"){\r\n url = `${geoserverUrl}burned_areas/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=burned_areas:stats_fires_clc_country&outputFormat=application/json`;\r\n \r\n } else if (selectedStatsType === \"clc\"){\r\n url = `${geoserverUrl}burned_areas/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=burned_areas:stats_fires_clc&outputFormat=application/json&viewparams=TABLE:${table};VALUE:${value};FIELD:${codeField}`;\r\n }\r\n\r\n return dispatch => {\r\n axios.get(url)\r\n .then(response => {\r\n dispatch(getStatisticsSuccess(response.data, selectedStatsType)); \r\n })\r\n .catch( error => {\r\n });\r\n };\r\n};\r\n\r\nexport const getStatisticsSuccess = (stats, selectedStatsType) => {\r\n return {\r\n type: actionTypes.GET_STATISTICS_SUCCESS,\r\n stats: stats,\r\n selectedStatsType: selectedStatsType\r\n };\r\n};\r\n\r\nexport const updateSimpleVariable = (variableName, newValue) => {\r\n return {\r\n type: actionTypes.UPDATE_SIMPLE_VARIABLE,\r\n variableName: variableName,\r\n newValue: newValue\r\n };\r\n};\r\n\r\nexport const changeClcYear = (year) => {\r\n return {\r\n type: actionTypes.CHANGE_CLC_YEAR,\r\n year: year\r\n };\r\n};","import * as actionTypes from './actionTypes';\r\nimport axios from '../../axios-api';\r\nimport {alertError, alertSuccess} from './alerts';\r\n\r\nexport const showLoginRegister = (showType) => {\r\n return {\r\n type: actionTypes.SHOW_LOGIN_REGISTER,\r\n showType: showType\r\n };\r\n};\r\n\r\nexport const hideLoginRegister = () => {\r\n return {\r\n type: actionTypes.HIDE_LOGIN_REGISTER\r\n };\r\n};\r\n\r\nexport const checkLogin = (loginInfo) => {\r\n return dispatch => {\r\n axios.post( 'checkLogin.php', loginInfo )\r\n .then(response => {\r\n const data = response.data.text && JSON.parse(response.data.text);\r\n localStorage.setItem('user', JSON.stringify(data));\r\n dispatch(loggedIn(data));\r\n })\r\n .catch( error => {\r\n dispatch(alertError(error.response.data.message));\r\n });\r\n };\r\n};\r\n\r\nexport const loggedIn = (user) => {\r\n return {\r\n type: actionTypes.LOGGED_IN,\r\n user:user\r\n };\r\n};\r\n\r\nexport const loggedOut = () => {\r\n localStorage.removeItem('user');\r\n\r\n return {\r\n type: actionTypes.LOGGED_OUT\r\n };\r\n};\r\n\r\nexport const registerUser = (userData) => {\r\n return dispatch => {\r\n dispatch(showLoadingSpinner());\r\n axios.post( 'register.php', userData )\r\n .then( response => {\r\n dispatch(hideLoadingSpinner());\r\n dispatch(alertSuccess(response.data));\r\n })\r\n .catch( error => {\r\n dispatch(hideLoadingSpinner());\r\n dispatch(alertError(error.response.data.message));\r\n });\r\n };\r\n};\r\n\r\nexport const showLoadingSpinner = () => {\r\n return {\r\n type: actionTypes.SHOW_LOADING_SPINNER\r\n };\r\n};\r\n\r\nexport const hideLoadingSpinner = () => {\r\n return {\r\n type: actionTypes.HIDE_LOADING_SPINNER\r\n };\r\n};\r\n\r\nexport const getUserFromLocalStorage = () => {\r\n return {\r\n type: actionTypes.GET_USER_FROM_LOCAL_STORAGE\r\n };\r\n};\r\n\r\nexport const accountActivation = (activationKey) => {\r\n return dispatch => {\r\n axios.post( 'accountActivation.php', {activationKey:activationKey})\r\n .then( response => {\r\n dispatch(showConfirmation(response.data));\r\n })\r\n .catch( error => {\r\n dispatch(showConfirmation(error.response.data.message));\r\n });\r\n };\r\n};\r\n\r\nexport const showConfirmation = (confirmationMessage) => {\r\n return {\r\n type: actionTypes.SHOW_CONFIRMATION,\r\n confirmationMessage: confirmationMessage\r\n };\r\n};\r\n\r\nexport const sendResetPasswordEmail = (email, password) => {\r\n return dispatch => {\r\n axios.post( 'sendResetPasswordEmail.php', {email:email,password:password})\r\n .then( response => {\r\n dispatch(alertSuccess(response.data));\r\n })\r\n .catch( error => {\r\n dispatch(alertError(error.response.data.message));\r\n });\r\n };\r\n};\r\n\r\nexport const updatePassword = (activationKey) => {\r\n return dispatch => {\r\n axios.post( 'updatePassword.php', {activationKey:activationKey})\r\n .then( response => {\r\n dispatch(showConfirmation(response.data));\r\n })\r\n .catch( error => {\r\n dispatch(showConfirmation(error.response.data.message));\r\n });\r\n };\r\n};","import * as actionTypes from './actionTypes';\r\nimport axios from '../../axios-api';\r\n\r\n\r\nexport const getVersions = () => {\r\n return dispatch => {\r\n axios.get('getVersions.php')\r\n .then(response => {\r\n dispatch(getVersionsSuccess(response.data)); \r\n })\r\n .catch( error => {\r\n });\r\n };\r\n};\r\n\r\nexport const getVersionsSuccess = (versions) => {\r\n return {\r\n type: actionTypes.GET_VERSIONS_SUCCESS,\r\n versions: versions\r\n };\r\n};\r\n\r\nexport const updateAdminSimpleVariable = (variableName, newValue) => {\r\n return {\r\n type: actionTypes.UPDATE_ADMIN_SIMPLE_VARIABLE,\r\n variableName: variableName,\r\n newValue: newValue\r\n };\r\n};\r\n\r\nexport const createNewVersion = (postData) => {\r\n return dispatch => {\r\n axios.post('createNewVersion.php', {postData})\r\n .then(response => {\r\n dispatch(createVersionSuccess(response.data)); \r\n })\r\n .catch( error => {\r\n });\r\n };\r\n};\r\n\r\nexport const createVersionSuccess = (data) => {\r\n return {\r\n type: actionTypes.CREATE_VERSION_SUCCESS,\r\n data: data\r\n };\r\n};\r\n\r\nexport const clearVersion = () => {\r\n return {\r\n type: actionTypes.CLEAR_VERSION\r\n };\r\n};\r\n\r\nexport const changeDatabaseVersion = (postData) => {\r\n return dispatch => {\r\n axios.post('changeDatabaseVersion.php', {postData})\r\n .then(response => {\r\n console.log(response.data)\r\n dispatch(updateAdminSimpleVariable(\"changedVersion\", true)); \r\n })\r\n .catch( error => {\r\n });\r\n };\r\n};","import * as actionTypes from './actionTypes';\r\nimport axios from '../../axios-api';\r\n\r\nexport const removeFileFromFileList = (index) => {\r\n return {\r\n type:actionTypes.REMOVE_FILE_FROM_FILE_LIST,\r\n index:index\r\n };\r\n};\r\n\r\nexport const fileAddedToList = (event) => {\r\n event.persist();\r\n return {\r\n type:actionTypes.FILE_ADDED_TO_LIST,\r\n event:event\r\n };\r\n};\r\n\r\nexport const fileDropedToList = (fileList) => {\r\n return {\r\n type:actionTypes.FILE_DROPED_TO_LIST,\r\n fileList:fileList\r\n };\r\n};\r\n\r\nexport const uploadFilesFailed = () => {\r\n return {\r\n type: actionTypes.UPLOAD_FILES_FAILED\r\n };\r\n};\r\n\r\nexport const uploadProgress = (percentCompleted, fileIndex) => {\r\n return {\r\n type: actionTypes.UPLOAD_PROGRESS,\r\n percentCompleted: percentCompleted,\r\n fileIndex: fileIndex\r\n };\r\n}\r\n\r\nexport const clearFilesList = () => {\r\n return {\r\n type: actionTypes.CLEAR_FILES_LIST\r\n };\r\n};\r\n\r\nexport const uploadFiles = () => {\r\n return (dispatch, getState) => {\r\n const filesList = getState().dropzone.filesList;\r\n\r\n for (let i = 0; i < filesList.length; i++){\r\n let formData = new FormData();\r\n formData.append('file', filesList[i]);\r\n \r\n const config = {\r\n onUploadProgress: function(progressEvent) {\r\n let percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total)\r\n dispatch(uploadProgress(percentCompleted, i));\r\n }\r\n }\r\n\r\n axios.post( 'upload.php', formData, config)\r\n .then( response => {\r\n dispatch(uploadedFilesSuccess(response.data));\r\n })\r\n .catch( error => {\r\n dispatch(uploadFilesFailed());\r\n });\r\n }\r\n };\r\n};\r\n\r\nexport const uploadedFilesSuccess = (uploadedItem) => {\r\n return {\r\n type: actionTypes.UPLOADED_FILES_SUCCESS,\r\n uploadedItem: uploadedItem\r\n };\r\n};\r\n\r\nexport const removeDirectoryFromUploads = (folder) => {\r\n return dispatch => {\r\n axios.post( 'removeDirectoryFromUploads.php', {\"folder\":folder})\r\n .then( response => {\r\n // dispatch(removeDirectorySuccess(response.data));\r\n })\r\n .catch( error => {\r\n // dispatch(uploadFilesFailed());\r\n });\r\n };\r\n};\r\n\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {withRouter} from 'react-router-dom';\r\n\r\nimport classes from './Topbar.module.css';\r\nimport Logo from '../../Logo/Logo';\r\n// import NavigationItem from '../../Navigation/NavigationItem/NavigationItem';\r\nimport Button from '../../UI/Buttons/Button';\r\n// import LoginRegister from '../../../containers/LoginRegister/LoginRegister';\r\nimport PopupPanel from '../../../components/UI/PopupPanel/PopupPanel';\r\nimport espa_banner from '../../../assets/images/logo_ebdm34_el.jpg';\r\nimport * as actions from '../../../store/actions/index';\r\n\r\n\r\nclass Topbar extends Component {\r\n\r\n state={\r\n mobileMenuOpen:false,\r\n showInfo:false\r\n }\r\n\r\n componentDidMount () {\r\n this.props.onGetUserFromLocalStorage();\r\n }\r\n\r\n logout() {\r\n this.props.onLogoutUser();\r\n this.props.history.push('/login');\r\n }\r\n\r\n showInfo(){\r\n this.setState({showInfo:!this.state.showInfo});\r\n }\r\n\r\n\r\n render(){\r\n return(\r\n
\r\n\r\n {this.showInfo ? \r\n this.showInfo()} \r\n >\r\n

Σκοπός της διαδικτυακής εφαρμογής Χαρτογραφικά Δεδομένα Πυρκαγιών είναι να προσφέρει βασικές γεωγραφικές πληροφορίες για τις δασικές πυρκαγιές στην Ελλάδα. Τα χαρτογραφικά προιόντα παράχθηκαν κατά την υλοποίηση του ερευνητικού έργου «Ανάπτυξη προηγμένου αλγορίθμου και λογισμικού ανοιχτού κώδικα για την αυτοματοποιημένη χαρτογράφηση καμένων εκτάσεων με τη χρήση δεδομένων υψηλής ευκρίνειας» στο πλαίσιο του Επιχειρησιακού Προγράμματος «Ανάπτυξη Ανθρώπινου Δυναμικού, Εκπαίδευση και Δια Βίου Μάθηση» που συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. Η υλοποίηση πραγματοποιήθηκε από την ερευνητική ομάδα του Εργαστηρίου Δασικής Διαχειριστικής και Τηλεπισκόπησης του ΑΠΘ.

\r\n ESPA banner\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 {this.props.loggedIn ? \r\n
this.logout()}>\r\n Logout\r\n
\r\n\r\n :\r\n\r\n
\r\n
\r\n ESPA banner\r\n
\r\n \r\n\r\n \r\n
\r\n }\r\n
\r\n
\r\n
\r\n )\r\n }\r\n};\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n loggedIn: state.loginRegister.loggedIn,\r\n loggedInUser: state.loginRegister.loggedInUser\r\n };\r\n}\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n onGetUserFromLocalStorage: () => dispatch(actions.getUserFromLocalStorage()),\r\n onLogoutUser: () => dispatch(actions.loggedOut()),\r\n onShowLoginRegister: (type) => dispatch(actions.showLoginRegister(type))\r\n }\r\n}\r\n\r\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(Topbar));","import React from 'react';\n\nimport classes from './Layout.module.css';\nimport Topbar from '../../components/Navigation/Topbar/Topbar';\n\nconst layout = ( props ) => (\n
\n \n
\n {props.children}\n
\n
\n)\n\nexport default layout;","import React from 'react';\n\nimport classes from './MapToolButton.module.css';\n\nconst mapToolButton = (props) => {\n \n let attachedClasses = [classes.MapToolButton];\n\n if (props.active){\n attachedClasses.push(classes.Active)\n }\n\n return(\n \n {props.tooltip ?\n
{props.tooltip}
\n : null}\n \n {props.children}\n \n )\n};\n\nexport default mapToolButton;","import React from 'react';\r\n\r\nimport classes from './MapBackgroundLayer.module.css';\r\n\r\nconst mapBackgroundLayer = (props) => {\r\n \r\n let attachedClasses = [classes.MapBackgroundLayer];\r\n\r\n if (props.active){\r\n attachedClasses.push(classes.Active)\r\n }\r\n\r\n return(\r\n \r\n {props.label}\r\n {props.label}\r\n \r\n )\r\n};\r\n\r\nexport default mapBackgroundLayer;","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\n\r\nimport classes from './MapToolBar.module.css';\r\nimport MapToolButton from '../UI/Buttons/MapToolButton';\r\nimport MapBackgroundLayer from '../MapBackgroundLayer/MapBackgroundLayer';\r\nimport * as actions from '../../store/actions/index';\r\n\r\nclass MapToolBar extends Component {\r\n\r\n state = {\r\n showBackgroundsPanel:false\r\n }\r\n\r\n zoomIn = () => {\r\n // const currentZoom = this.props.mapRef.leafletElement.getZoom();\r\n this.props.mapRef.leafletElement.zoomIn();\r\n }\r\n\r\n zoomOut = () => {\r\n // const currentZoom = this.props.mapRef.leafletElement.getZoom();\r\n this.props.mapRef.leafletElement.zoomOut();\r\n }\r\n\r\n showBackgroundsPanel = () => {\r\n this.setState({showBackgroundsPanel:!this.state.showBackgroundsPanel})\r\n }\r\n\r\n closeBackgroundsPanel = () => {\r\n this.setState({showBackgroundsPanel:false})\r\n }\r\n \r\n render(){\r\n return (\r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n Available basemaps\r\n \r\n
\r\n
    \r\n {this.props.basemapLayers.map((basemapLayer,index) => (\r\n this.props.onChangeBackground(index)}\r\n />\r\n ))}\r\n
\r\n
\r\n
\r\n
\r\n )\r\n }\r\n};\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n basemapLayers:state.webgis.basemapLayers,\r\n selectedBasemap:state.webgis.selectedBasemap\r\n };\r\n}\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n onChangeBackground: (index) => dispatch(actions.changeBackground(index)),\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MapToolBar);","import React from 'react';\r\nimport { createMuiTheme, ThemeProvider } from '@material-ui/core/styles';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport Select from '@material-ui/core/Select';\r\nimport classes from './Select.module.css';\r\n\r\nconst SimpleSelect = (props) => {\r\n const [value, setValue] = React.useState(props.defaultValue);\r\n\r\n const handleChange = event => {\r\n setValue(event.target.value);\r\n props.changed(event.target.value);\r\n };\r\n \r\n const theme = createMuiTheme({\r\n palette: {\r\n primary: {\r\n main: '#D93D3D'\r\n },\r\n },\r\n });\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nexport default SimpleSelect","import React from 'react';\r\n\r\nimport {\r\n BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip, Legend, ResponsiveContainer\r\n} from 'recharts';\r\n\r\nconst chart = (props) => {\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 chart;","import React from 'react';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableContainer from '@material-ui/core/TableContainer';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport classes from './DataTable.module.css';\r\n\r\nconst DenseTable = (props) => {\r\n return (\r\n \r\n \r\n \r\n \r\n {props.tableData.xTitle}\r\n {props.tableData.yTitle}\r\n \r\n \r\n \r\n {props.tableData.data.map((row,index) => (\r\n \r\n {row[props.tableData.xKey]}\r\n {row.value}\r\n \r\n ))}\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default DenseTable;","import React from 'react';\r\n\r\nimport classes from './Spinner.module.css';\r\n\r\nconst spinner = (props) => {\r\n let spinnerClasses = [classes.Spinner]\r\n\r\n if (props.themeLight){\r\n spinnerClasses.push(classes.ThemeLight)\r\n }\r\n\r\n return(\r\n
\r\n )\r\n};\r\n\r\nexport default spinner;","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport Aux from 'react-aux';\r\nimport { Tab, Tabs, TabList, TabPanel } from 'react-tabs';\r\nimport 'react-tabs/style/react-tabs.css';\r\n\r\nimport classes from './Statistics.module.css';\r\nimport Select from '../../components/UI/Select/Select';\r\n// import CloseButton from '../../components/UI/Buttons/CloseButton';\r\n// import Spinner from '../../components/Spinner/Spinner';\r\nimport Button from '../../components/UI/Buttons/Button';\r\nimport Chart from '../../components/Chart/Chart';\r\nimport DataTable from '../../components/UI/DataTable/DataTable';\r\nimport Spinner from '../../components/Spinner/Spinner';\r\nimport * as actions from '../../store/actions/index';\r\n\r\nclass Statistics extends Component {\r\n \r\n state={\r\n adminRegions:[\r\n {value: \"country\", label:\"Επικράτεια\", nameField:\"\", codeField:\"\"},\r\n {value: \"nuts1\", label:\"Μεγάλη Γεωγραφική Περιοχή (NUTS1)\", nameField:\"n1_name4el\", codeField:\"n1_code\"},\r\n {value: \"nuts2\", label:\"Περιφέρεια (NUTS2)\", nameField:\"n2_name4el\", codeField:\"n2_code\"},\r\n {value: \"nuts3\", label:\"Περιφερειακή Ενότητα (NUTS3)\", nameField:\"n3_name4el\", codeField:\"n3_code\"},\r\n {value: \"lau1\", label:\"Δήμος/Κοινότητα (LAU1)\", nameField:\"l1_name1el\", codeField:\"l1_code\"}\r\n ]\r\n }\r\n\r\n componentDidMount () {\r\n // Run only if there are no results data (which means it is the first time loading this tab)\r\n if (this.props.statsFires.results.data.length === 0){\r\n this.props.onGetStatistics(this.props.geoserverUrl, \"country\", null, this.props.selectedStatsType, \"\");\r\n }\r\n }\r\n\r\n onChangeAdmin (value) {\r\n if (value !== this.props.selectedAdmin){\r\n const adminRegion = this.state.adminRegions.filter(x => x.value === value)[0];\r\n\r\n if (value !== \"country\"){\r\n this.props.onGetAdminWithFires(this.props.geoserverUrl, value, adminRegion.nameField, adminRegion.codeField);\r\n\r\n } else {\r\n this.props.onGetStatistics(this.props.geoserverUrl, value, this.props.selectedAdminItem, this.props.selectedStatsType, adminRegion.codeField);\r\n }\r\n\r\n this.props.onUpdateSimpleVariable(\"selectedAdmin\",value);\r\n this.props.onUpdateSimpleVariable(\"selectedAdminLabel\",adminRegion.label);\r\n }\r\n }\r\n\r\n onChangeAdminItem (value){\r\n if (value !== this.props.selectedAdminItem){\r\n this.props.onUpdateSimpleVariable(\"selectedAdminItem\",value);\r\n }\r\n\r\n const adminRegion = this.state.adminRegions.filter(x => x.value === this.props.selectedAdmin)[0];\r\n this.props.onGetStatistics(this.props.geoserverUrl, this.props.selectedAdmin, value, this.props.selectedStatsType, adminRegion.codeField);\r\n }\r\n\r\n onChangeStatsType(statsType){\r\n this.props.onUpdateSimpleVariable(\"selectedStatsType\",statsType);\r\n\r\n const adminRegion = this.state.adminRegions.filter(x => x.value === this.props.selectedAdmin)[0];\r\n this.props.onGetStatistics(this.props.geoserverUrl, this.props.selectedAdmin, this.props.selectedAdminItem, statsType, adminRegion.codeField);\r\n }\r\n\r\n render () {\r\n return(\r\n
\r\n

Διοικητική Ενότητα

\r\n
\r\n this.onChangeAdminItem(value)}\r\n disabled={this.props.adminItemsLoading}\r\n />\r\n {this.props.adminItemsLoading ?\r\n
\r\n \r\n
\r\n : null\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 {this.props.selectedStatsType === \"fires\" || this.props.statsClcLastYear === 0 ? null : \r\n \r\n

Έτος

\r\n
\r\n this.openItem(\"displayFillColorPickerIndex\", this.props.index)}/>\r\n { this.state.displayFillColorPickerIndex === this.props.index\r\n ?
\r\n
\r\n \r\n
\r\n : null \r\n }\r\n
\r\n
\r\n
Border color:
\r\n this.openItem(\"displayBorderColorPickerIndex\", this.props.index)}/>\r\n { this.state.displayBorderColorPickerIndex === this.props.index\r\n ?
\r\n
\r\n \r\n
\r\n : null \r\n }\r\n
\r\n
\r\n
Border width:
\r\n \r\n
\r\n
\r\n }\r\n\r\n // if layer has showTable, show table icon\r\n let tableIcon = null;\r\n if (this.props.showTable){\r\n tableIcon =
this.openTable(this.props.index)}>\r\n \r\n \r\n \r\n
\r\n }\r\n\r\n // if layer has showZoom, show zoom icon\r\n let zoomIcon = null;\r\n if (this.props.showZoom){\r\n zoomIcon =
this.zoomToLayer(this.props.index)}>\r\n \r\n \r\n \r\n \r\n \r\n
\r\n }\r\n\r\n // if layer has showVisibility, show visibility icon\r\n let visibilityIcon = null;\r\n if (this.props.showVisibility){\r\n if (this.props[this.props.collection + \"Loading\"].length > 0 && this.props[this.props.collection + \"Loading\"].includes(this.props.index)) {\r\n visibilityIcon =
\r\n \r\n
\r\n } else {\r\n visibilityIcon =
this.props.onUpdateLayerVisibility(this.props.index, this.props.collection)}>\r\n {/* */}\r\n \r\n
\r\n } \r\n }\r\n\r\n // if layer has showDelete, show delete icon\r\n let deleteIcon = null;\r\n if (this.props.showDelete){\r\n deleteIcon =
this.props.onRemoveLayerItem(this.props.index, this.props.collection)}>\r\n \r\n
\r\n }\r\n\r\n // if layer has showOpacity, show opacity icon\r\n let opacityIcon = null;\r\n if (this.props.showOpacity){\r\n opacityIcon =
\r\n \r\n
\r\n Διαφάνεια\r\n this.props.onChangeLayerOpacity(this.props.index, percentage, this.props.collection)}\r\n />\r\n
\r\n
\r\n }\r\n\r\n return (\r\n
\r\n
\r\n \r\n {draghandle}\r\n \r\n
\r\n
\r\n
{this.props.mapLayer.label}
\r\n
\r\n {legendIcon}\r\n {opacityIcon}\r\n {stylingIcon}\r\n {tableIcon}\r\n {zoomIcon}\r\n {visibilityIcon}\r\n {deleteIcon}\r\n
\r\n
\r\n
\r\n {layerItemSymbol}\r\n
\r\n
\r\n
\r\n\r\n {stylingDiv}\r\n \r\n
\r\n )\r\n }\r\n};\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n geoserverUrl: state.system.geoserverUrl,\r\n mapLayers: state.layerItems.mapLayers,\r\n mapLayersLoading: state.layerItems.mapLayersLoading,\r\n queryMapLayers: state.layerItems.queryMapLayers,\r\n queryMapLayersLoading: state.layerItems.queryMapLayersLoading\r\n };\r\n}\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n onUpdateMapBounds: (mapBounds) => dispatch(actions.updateMapBounds(mapBounds)),\r\n onUpdateLayerVisibility: (index, collection) => dispatch(actions.updateLayerVisibility(index, collection)),\r\n onChangeLayerOpacity: (index, percentage, collection) => dispatch(actions.changeLayerOpacity(index, percentage, collection)),\r\n // onUpdateLayerFillColor: (index,fillColor, collection) => dispatch(actions.updateLayerFillColor(index,fillColor, collection)),\r\n // onUpdateLayerBorderColor: (index,borderColor, collection) => dispatch(actions.updateLayerBorderColor(index,borderColor, collection)),\r\n // onUpdateLayerBorderWidth: (event,index, collection) => dispatch(actions.updateLayerBorderWidth(event,index, collection)),\r\n // onUpdateMapLayersOrder: (event, collection) => dispatch(actions.updateMapLayersOrder(event, collection)),\r\n onUpdateMapTable: (index, collection) => dispatch(actions.updateMapTable(index, collection)),\r\n // onRemoveLayerItem: (index, collection) => dispatch(actions.removeLayerItem(index, collection)),\r\n onUpdateMapKey: () => dispatch(actions.updateMapKey()),\r\n onToggleLegend: (layerIndex) => dispatch(actions.toggleLegend(layerIndex))\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(LayerItem);","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Map, TileLayer, Pane, FeatureGroup, Popup, WMSTileLayer, GeoJSON, Circle } from 'react-leaflet';\r\nimport { CoordinatesControl } from 'react-leaflet-coordinates'\r\nimport ReactLeafletGoogleLayer from 'react-leaflet-google-layer';\r\n\r\n// import VectorGridDefault from 'react-leaflet-vectorgrid';\r\n\r\nimport classes from './Webgis.module.css';\r\nimport MapToolBar from '../../components/MapToolBar/MapToolBar';\r\nimport MapToolBarMobile from '../../components/MapToolBarMobile/MapToolBarMobile';\r\nimport MapLayersPanel from '../../components/MapLayersPanel/MapLayersPanel';\r\nimport CloseButton from '../../components/UI/Buttons/CloseButton';\r\nimport Spinner from '../../components/Spinner/Spinner';\r\nimport LayerItem from '../../components/LayerItem/LayerItem';\r\nimport * as actions from '../../store/actions/index';\r\n\r\n\r\n// const VectorGrid = withLeaflet(VectorGridDefault);\r\n\r\n\r\nclass Webgis extends Component {\r\n \r\n state={\r\n mapRef:null,\r\n popupCenter:null,\r\n popupKey:null,\r\n popupFullScreen:false,\r\n hideToolbars:false,\r\n displayOpacityIndex: -1,\r\n showInfo:false,\r\n mapZoom:7\r\n }\r\n\r\n componentDidMount () {\r\n this.props.onGetFireYears(this.props.geoserverUrl);\r\n }\r\n\r\n openOpacity = (layerIndex) => {\r\n if (layerIndex === this.state.displayOpacityIndex) {\r\n this.setState({displayOpacityIndex: -1});\r\n } else {\r\n this.setState({displayOpacityIndex: layerIndex});\r\n }\r\n }\r\n\r\n onZoom(){\r\n this.setState({mapZoom:this.state.mapRef.leafletElement.getZoom()});\r\n\r\n if (this.state.mapZoom > 9){\r\n this.props.onShowFirePolygons();\r\n } else {\r\n this.props.onShowFirePoints();\r\n }\r\n }\r\n\r\n onMapClick(e) {\r\n const visibleLayers = [];\r\n this.props.mapLayers.forEach(mapLayer => {\r\n if (mapLayer.visible){\r\n visibleLayers.push(mapLayer)\r\n }\r\n });\r\n\r\n this.prepareGetFeatureInfo(e.latlng)\r\n }\r\n\r\n prepareGetFeatureInfo(latlng){\r\n var d = new Date();\r\n this.setState({popupCenter:latlng, popupKey: 'popup_' + d.getMilliseconds()}); // Get time in miliseconds. The popup key will be based on this and prevent flickering while the daa is loaded\r\n\r\n const LAT = latlng.lat;\r\n const LNG = latlng.lng;\r\n const BBOX = this.state.mapRef.leafletElement.getBounds().toBBoxString();\r\n const WIDTH = this.state.mapRef.leafletElement.getSize().x;\r\n const HEIGHT = this.state.mapRef.leafletElement.getSize().y;\r\n\r\n const bds = this.state.mapRef.leafletElement.getBounds();\r\n const w = bds.getNorthEast().lng - bds.getSouthWest().lng;\r\n const h = bds.getNorthEast().lat - bds.getSouthWest().lat;\r\n const X = (((LNG - bds.getSouthWest().lng) / w) * WIDTH).toFixed(0);\r\n const Y = (((bds.getNorthEast().lat - LAT) / h) * HEIGHT).toFixed(0);\r\n\r\n const URL = 'wms?request=GetFeatureInfo&service=WMS&version=1.1.1&queryVisible=true&srs=EPSG%3A4326&format=image%2Fpng&bbox=' + BBOX + '&width=' + WIDTH + '&height=' + HEIGHT + '&info_format=application/json&x=' + X + '&y=' + Y + '&exceptions=application%2Fvnd.ogc.se_xml';\r\n const mapInfoLayers = this.getInfoLayers(this.props.mapLayers);\r\n // let layers = [];\r\n // const queryMapInfoLayers = this.getInfoLayers(this.props.queryMapLayers);\r\n // layers = [...mapInfoLayers, ...queryMapInfoLayers];\r\n\r\n if (mapInfoLayers.length > 0){\r\n this.props.onChangeFeaturePanel(\"reset\");\r\n this.props.onGetFeatureInfo(URL, mapInfoLayers);\r\n }\r\n }\r\n\r\n getInfoLayers(collection){\r\n let layers = [];\r\n collection.forEach(mapLayer => {\r\n if (mapLayer.connection === \"wms\" && mapLayer.visible === true){\r\n if(mapLayer.data.layer === \"burned_areas:fires_per_year\" || mapLayer.data.layer === \"burned_areas:fires_per_year_points\"){\r\n layers.unshift({layerName:mapLayer.data.layer, layerUrl:this.props.geoserverUrl, layerLabel:mapLayer.label, layerViewparams:mapLayer.viewparams, layerProperties:mapLayer.layerProperties});\r\n } else {\r\n layers.push({layerName:mapLayer.data.layer, layerUrl:this.props.geoserverUrl, layerLabel:mapLayer.label, layerViewparams:mapLayer.viewparams, layerProperties:mapLayer.layerProperties});\r\n }\r\n }\r\n });\r\n\r\n return layers;\r\n }\r\n\r\n closePopup = () => {\r\n this.setState({popupFullScreen:false});\r\n this.props.onClosePopup();\r\n }\r\n\r\n toggleFullScreen = () => {\r\n const toggle = !this.state.popupFullScreen;\r\n this.setState({popupFullScreen:toggle});\r\n }\r\n\r\n hideToolbars = () => {\r\n const toggle = !this.state.hideToolbars;\r\n this.setState({hideToolbars:toggle});\r\n }\r\n\r\n zoomToBounds = (newBounds) => {\r\n this.state.mapRef.leafletElement.fitBounds(newBounds)\r\n }\r\n\r\n render () {\r\n let mapClasses = [classes.Map];\r\n let tileLayers = [];\r\n let legendItems = [];\r\n let envString = \"\";\r\n\r\n if (this.props.mapLayers.length > 0){\r\n this.props.mapLayers.forEach((mapLayer,index) => {\r\n if (mapLayer.visible){\r\n if (mapLayer.style.env){\r\n envString = \"&env=color:\" + mapLayer.style.env;\r\n } else {\r\n envString = \"\";\r\n }\r\n\r\n tileLayers.push(\r\n \r\n \r\n\r\n this.props.onAddLayerLoading(index, \"mapLayersLoading\")}\r\n onLoad={() => this.props.onRemoveLayerLoading(index, \"mapLayersLoading\")}\r\n layers={mapLayer.data.layer}\r\n opacity={mapLayer.layerOpacity}\r\n url={this.props.geoserverUrl + \"wms?viewparams=\" + mapLayer.viewparams + envString}\r\n />\r\n \r\n \r\n )\r\n }\r\n\r\n legendItems.push(\r\n this.openOpacity(index)}\r\n displayOpacityIndex={this.state.displayOpacityIndex}\r\n />\r\n );\r\n \r\n })\r\n }\r\n\r\n // Popup ---------------------------\r\n let fullScreenPopupClasses = [classes.PopupFullScreenWrapper];\r\n let popupHeader = null\r\n let popupContent =
\r\n\r\n popupHeader =
\r\n {this.props.loadingFeatureInfo ?\r\n
\r\n \r\n
\r\n :\r\n this.props.featureInfoLayers.length > 0 ?\r\n
\r\n this.props.onChangeFeaturePanel(\"subtract\")} \r\n xmlns='http://www.w3.org/2000/svg' viewBox='0 0 192 512'>\r\n \r\n \r\n {this.props.currentFeatureInfoLayer} / {this.props.featureInfoLayers.length}\r\n this.props.onChangeFeaturePanel(\"add\")} \r\n xmlns='http://www.w3.org/2000/svg' viewBox='0 0 192 512'>\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\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n if (this.props.featureInfoLayers.length > 0){\r\n popupContent =
\r\n {this.props.featureInfoLayers.map((featureInfoLayer,index) => \r\n \r\n \r\n

{featureInfoLayer.layerLabel}

\r\n \r\n
    \r\n {Object.keys(featureInfoLayer.layerData.data.features[0].properties).map(function(key,index) {\r\n if (featureInfoLayer.layerProperties[key]){\r\n let propertyValue = featureInfoLayer.layerData.data.features[0].properties[key];\r\n\r\n if (key === \"linkmap\"){\r\n propertyValue = Link\r\n\r\n } else if (key === \"areaha\" || key === \"areasqkm\" || key === \"area_ha\"){\r\n propertyValue = propertyValue.toFixed(2);\r\n }\r\n \r\n return
  • \r\n {featureInfoLayer.layerProperties[key]}:\r\n {propertyValue}\r\n
  • \r\n }\r\n \r\n })}\r\n
\r\n
\r\n )}\r\n \r\n } else {\r\n popupContent =
\r\n Δεν υπάρχουν πληροφορίες\r\n
\r\n }\r\n\r\n if (this.state.popupFullScreen){\r\n mapClasses.push(classes.MapPopupFullScreen);\r\n fullScreenPopupClasses.push(classes.Show);\r\n }\r\n // ---------------------------\r\n\r\n return(\r\n
\r\n
\r\n
\r\n
\r\n {popupHeader}\r\n {this.props.loadingFeatureInfo === false ?\r\n popupContent\r\n :
\r\n }\r\n
\r\n
\r\n \r\n this.mapRef = ref}\r\n ref={ref => !this.state.mapRef && this.setState({ mapRef: ref })}\r\n zoomControl={false}\r\n onClick={(e) => this.onMapClick(e)}\r\n onZoom={() => this.onZoom()}\r\n maxZoom={18}\r\n bounds={this.props.mapBounds}>\r\n\r\n {this.props.basemapLayers[this.props.selectedBasemap].isGoogle ? \r\n \r\n : \r\n \r\n }\r\n\r\n {/* */}\r\n\r\n {tileLayers}\r\n\r\n {this.props.showPopup === true ?\r\n \r\n \r\n {popupHeader}\r\n\r\n {this.props.loadingFeatureInfo === false ?\r\n popupContent\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 this.zoomToBounds([[34.5, 17.13],[41.80,30.68]])}\r\n />\r\n \r\n\r\n this.zoomToBounds([[34.5, 17.13],[41.80,30.68]])}\r\n />\r\n
\r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n geoserverUrl: state.system.geoserverUrl,\r\n mapBounds: state.webgis.mapBounds,\r\n basemapLayers:state.webgis.basemapLayers,\r\n selectedBasemap:state.webgis.selectedBasemap,\r\n mapLayers: state.layerItems.mapLayers,\r\n featureInfoLayers: state.webgis.featureInfoLayers,\r\n currentFeatureInfoLayer: state.webgis.currentFeatureInfoLayer,\r\n loadingFeatureInfo: state.webgis.loadingFeatureInfo,\r\n showPopup: state.webgis.showPopup,\r\n fireYears: state.layerItems.fireYears\r\n };\r\n}\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n onGetFeature: (mapLayers, latlng) => dispatch(actions.getFeature(mapLayers,latlng)),\r\n onChangeFeaturePanel: (action) => dispatch(actions.changeFeaturePanel(action)),\r\n onClosePopup: () => dispatch(actions.closePopup()),\r\n onAddLayerLoading: (mapLayerIndex, collection) => dispatch(actions.addLayerLoading(mapLayerIndex, collection)),\r\n onRemoveLayerLoading: (mapLayerIndex, collection) => dispatch(actions.removeLayerLoading(mapLayerIndex, collection)),\r\n onGetFeatureInfo: (url, layers) => dispatch(actions.getFeatureInfo(url, layers)),\r\n onGetFireYears: (geoserverUrl) => dispatch(actions.getFireYears(geoserverUrl)),\r\n onShowFirePolygons: () => dispatch(actions.showFirePolygons()),\r\n onShowFirePoints: () => dispatch(actions.showFirePoints())\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Webgis);","import React, { Component } from 'react';\r\nimport { Redirect } from 'react-router';\r\nimport { connect } from 'react-redux';\r\n\r\nimport classes from './LoginRegister.module.css';\r\nimport * as actions from '../../store/actions/index';\r\n\r\nclass LoginRegister extends Component {\r\n \r\n state={\r\n username: '',\r\n password: '',\r\n name_reg:'',\r\n email_reg:'',\r\n username_reg:'',\r\n password_reg:'',\r\n password_reg_confirm:'',\r\n checkTerms: false,\r\n password_reset:'',\r\n password_reset_confirm:'',\r\n email_reset:''\r\n }\r\n\r\n componentDidMount () {\r\n const activationKey = window.location.href.split('?')[1];\r\n if(activationKey) {\r\n if (activationKey.startsWith(\"reset\")){\r\n this.props.onUpdatePassword(activationKey)\r\n } else {\r\n this.props.onAccountActivation(activationKey);\r\n }\r\n }\r\n }\r\n \r\n login(){\r\n if(this.state.username && this.state.password){\r\n this.props.onCheckLogin(this.state);\r\n }\r\n }\r\n\r\n onChange(e){\r\n this.setState({[e.target.name]:e.target.value});\r\n }\r\n\r\n checkResetPassword = () => {\r\n if (!this.state.password_reset || !this.state.password_reset_confirm || !this.state.email_reset){\r\n this.props.onAlertError(\"Please complete all fields\");\r\n \r\n } else if (this.state.password_reset !== this.state.password_reset_confirm){\r\n this.props.onAlertError(\"The two passwords do not match\");\r\n } \r\n\r\n else {\r\n this.props.onSendResetPasswordEmail(this.state.email_reset, this.state.password_reset);\r\n }\r\n }\r\n \r\n showModal(type){\r\n this.props.onShowLoginRegister(type)\r\n this.props.onAlertClear();\r\n\r\n this.setState({\r\n username: '',\r\n password: '',\r\n name_reg:'',\r\n email_reg:'',\r\n username_reg:'',\r\n password_reg:'',\r\n password_reg_confirm:'',\r\n checkTerms: false,\r\n password_reset:'',\r\n password_reset_confirm:'',\r\n email_reset:''\r\n });\r\n }\r\n\r\n hideModal(){\r\n this.props.onHideLoginRegister()\r\n this.props.onAlertClear();\r\n\r\n this.setState({\r\n username: '',\r\n password: '',\r\n name_reg:'',\r\n email_reg:'',\r\n username_reg:'',\r\n password_reg:'',\r\n password_reg_confirm:'',\r\n checkTerms: false,\r\n password_reset:'',\r\n password_reset_confirm:'',\r\n email_reset:''\r\n });\r\n\r\n if (this.props.confirmationMessage) window.location.replace(this.props.baseUrl)\r\n }\r\n\r\n render () {\r\n let page =
\r\n
\r\n

LOGIN

\r\n \r\n
{this.props.message}
\r\n
\r\n
\r\n
\r\n \r\n
\r\n this.onChange(e)} onBlur={() => this.props.onAlertClear()}/>\r\n
\r\n
\r\n
\r\n \r\n
\r\n this.onChange(e)} onBlur={() => this.props.onAlertClear()}/>\r\n
\r\n
\r\n
\r\n Remember me\r\n
\r\n
this.showModal(\"changePassword\")}>Forgot password?
\r\n
\r\n this.login()} />\r\n
\r\n
\r\n\r\n
\r\n

CHANGE PASSWORD

\r\n \r\n
{this.props.message}
\r\n \r\n
\r\n
\r\n
\r\n this.onChange(e)} onBlur={() => this.props.onAlertClear()}/>\r\n
\r\n
\r\n\r\n
\r\n
\r\n this.onChange(e)} onBlur={() => this.props.onAlertClear()}/>\r\n
\r\n
\r\n this.onChange(e)} onBlur={() => this.props.onAlertClear()}/>\r\n
\r\n
\r\n\r\n
\r\n \r\n this.showModal(\"login\")} type=\"submit\" className={[classes.ChangePasswordButton, classes.FlexRight].join(' ')} value=\"Cancel\" />\r\n
\r\n
\r\n
\r\n
\r\n \r\n\r\n if (this.props.loggedIn) {\r\n page = \r\n }\r\n\r\n return(\r\n page\r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n showModal: state.loginRegister.showModal,\r\n show: state.loginRegister.show,\r\n message: state.alerts.message,\r\n type: state.alerts.type,\r\n confirmationMessage: state.loginRegister.confirmationMessage,\r\n baseUrl: state.system.baseUrl,\r\n showSpinner: state.loginRegister.showSpinner,\r\n loggedIn: state.loginRegister.loggedIn\r\n };\r\n}\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n onShowLoginRegister: (type) => dispatch(actions.showLoginRegister(type)),\r\n onHideLoginRegister: () => dispatch(actions.hideLoginRegister()),\r\n onCheckLogin: (loginInfo) => dispatch(actions.checkLogin(loginInfo)),\r\n onRegisterUser: (registerInfo) => dispatch(actions.registerUser(registerInfo)),\r\n onAlertClear: () => dispatch(actions.alertClear()),\r\n onAlertError: (message) => dispatch(actions.alertError(message)),\r\n onAccountActivation: (activationKey) => dispatch(actions.accountActivation(activationKey)),\r\n onSendResetPasswordEmail: (email, password) => dispatch(actions.sendResetPasswordEmail(email, password)),\r\n onUpdatePassword: (activationKey) => dispatch(actions.updatePassword(activationKey)),\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(LoginRegister);\r\n","import React from 'react';\r\nimport { createMuiTheme, ThemeProvider } from '@material-ui/core/styles';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport Select from '@material-ui/core/Select';\r\nimport classes from './Select.module.css';\r\n\r\nconst SimpleSelect = (props) => {\r\n // const [value, setValue] = React.useState(props.defaultValue);\r\n\r\n // const handleChange = event => {\r\n // setValue(event.target.value);\r\n // props.changed(event.target.value);\r\n // };\r\n \r\n const theme = createMuiTheme({\r\n palette: {\r\n primary: {\r\n main: '#D93D3D'\r\n },\r\n },\r\n });\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nexport default SimpleSelect","import React from 'react';\r\n\r\nimport classes from './DropzoneButton.module.css';\r\n\r\nconst dropzoneButton = (props) => (\r\n {props.children}\r\n \r\n);\r\n\r\nexport default dropzoneButton;","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\n\r\nimport classes from './Dropzone.module.css';\r\nimport DropzoneButton from \"../../components/UI/Buttons/DropzoneButton\";\r\nimport * as actions from '../../store/actions/dropzone';\r\n// import withErrorHandler from '../../hoc/withErrorHandler/withErrorHandler';\r\n// import axios from '../../axios-api';\r\n\r\n// TODO:\r\n// 1) Use shapefile (in addition to zip), excel, txt (?)\r\n\r\n\r\nclass Dropzone extends Component {\r\n state = { \r\n highlight: false,\r\n // disabled: false,\r\n // uploading: false,\r\n // uploadProgress: {},\r\n // successfullUploaded: false,\r\n allowedExtensions: [\".zip\"]\r\n }\r\n \r\n openFileDialog = () => {\r\n this.fileInputRef.click();\r\n }\r\n\r\n onDragOver(evt) {\r\n evt.preventDefault();\r\n this.setState({ highlight: true });\r\n }\r\n \r\n onDragLeave() {\r\n this.setState({ highlight: false });\r\n }\r\n \r\n onDrop(evt) {\r\n evt.preventDefault();\r\n\r\n let newFilesList = [];\r\n let filename = \"\";\r\n let ext = \"\";\r\n\r\n // For multiple files\r\n // for (var i = 0; i < evt.dataTransfer.files.length; i++) {\r\n // // Check if allowed extension\r\n // filename = evt.dataTransfer.files[i].name;\r\n // ext = \".\" + filename.substr(filename.lastIndexOf('.') + 1);\r\n\r\n // if (this.state.allowedExtensions.includes(ext)){\r\n // newFilesList.push(evt.dataTransfer.files.item(i));\r\n // }\r\n // }\r\n\r\n filename = evt.dataTransfer.files[0].name;\r\n ext = \".\" + filename.substr(filename.lastIndexOf('.') + 1);\r\n \r\n if (this.state.allowedExtensions.includes(ext)){\r\n newFilesList.push(evt.dataTransfer.files.item(0));\r\n }\r\n \r\n this.props.onFileDropedToList(newFilesList)\r\n\r\n this.setState({ highlight: false });\r\n }\r\n\r\n getProgressWidth(index) {\r\n let width = 0;\r\n\r\n if (this.props.filesListProgress[index] !== 'undefined'){\r\n width = this.props.filesListProgress[index] + '%';\r\n }\r\n\r\n return width;\r\n }\r\n\r\n clearDropzone = () => {\r\n this.props.onClearFilesList();\r\n if (this.props.uploadedItem && this.props.uploadedItem.folder){\r\n this.props.onRemoveDirectoryFromUploads(this.props.uploadedItem.folder);\r\n }\r\n \r\n const dropzone = document.getElementById(\"Dropzone\");\r\n dropzone.getElementsByTagName('input')[0].value = \"\";\r\n }\r\n\r\n render () {\r\n let inputClasses = [classes.Dropzone];\r\n let dropzoneOuterClasses = [classes.Dropzone_outer];\r\n\r\n if (this.state.highlight === true){\r\n inputClasses.push(classes.Highlight);\r\n }\r\n\r\n if (this.props.filesList.length > 0){\r\n dropzoneOuterClasses.push(classes.FilesAdded);\r\n }\r\n\r\n let fileList = (\r\n
\r\n {this.props.filesList.map((fileItem, index) => (\r\n
\r\n
\r\n {fileItem.name}\r\n
\r\n this.props.onRemoveFileFromFileList(index)} value={index} btnShape=\"Circle\" btnType=\"Red\">-\r\n
\r\n ✔\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n ))}\r\n
\r\n )\r\n \r\n return (\r\n
\r\n
\r\n this.onDragOver(event)}\r\n onDragLeave={() => this.onDragLeave()}\r\n onDrop={(event) => this.onDrop(event)}\r\n onClick={this.openFileDialog}\r\n >\r\n this.fileInputRef = ref}\r\n className={classes.FileInput}\r\n type=\"file\"\r\n // multiple\r\n onChange={(event) => this.props.onFileAddedToList(event)}\r\n accept={this.state.allowedExtensions.toString()}\r\n />\r\n \r\n \r\n \r\n Upload Files\r\n
\r\n {fileList}\r\n
\r\n\r\n
\r\n
\r\n Clear\r\n
\r\n Upload\r\n
\r\n \r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n filesList: state.dropzone.filesList,\r\n filesListProgress: state.dropzone.filesListProgress,\r\n uploadedItem: state.dropzone.uploadedItem\r\n };\r\n}\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n onRemoveFileFromFileList: (index) => dispatch(actions.removeFileFromFileList(index)),\r\n onFileAddedToList: (event) => dispatch(actions.fileAddedToList(event)),\r\n onFileDropedToList: (event) => dispatch(actions.fileDropedToList(event)),\r\n onUploadFiles: () => dispatch(actions.uploadFiles()),\r\n onClearFilesList: () => dispatch(actions.clearFilesList()),\r\n onRemoveDirectoryFromUploads: (folder) => dispatch(actions.removeDirectoryFromUploads(folder))\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps, null, { forwardRef : true })(Dropzone);\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport Swal from 'sweetalert2';\r\n\r\nimport classes from './Admin.module.css';\r\nimport Select from '../../components/UI/Select/Select_controlled';\r\nimport Button from '../../components/UI/Buttons/Button';\r\nimport Dropzone from '../Dropzone/Dropzone';\r\nimport * as actions from '../../store/actions/index';\r\n\r\nclass Admin extends Component {\r\n\r\n componentDidMount () {\r\n this.props.onGetFireYears(this.props.geoserverUrl);\r\n this.props.onGetVersions();\r\n }\r\n\r\n changedActiveVersion(table, newVersionID){\r\n const variableName = \"selectedVersion_\" + table;\r\n this.props.onUpdateAdminSimpleVariable(variableName, newVersionID);\r\n }\r\n\r\n addNewVerion(table) {\r\n let text = \"Θα προστεθεί νέα version στις πυρκαγιές με τη χρήση του αρχείου \" + this.props.uploadedItem.name;\r\n if (table === \"clc\") text = \"Θα προστεθεί νέα version στο Corine Land Cover με τη χρήση του αρχείου \" + this.props.uploadedItem.name;\r\n\r\n Swal.fire({\r\n title: 'Είστε σίγουρος?',\r\n text: text,\r\n icon: 'warning',\r\n showCancelButton: true,\r\n showLoaderOnConfirm: true,\r\n confirmButtonText: 'Ναι',\r\n cancelButtonText: 'Όχι',\r\n allowOutsideClick: false,\r\n preConfirm: () => {\r\n const user = JSON.parse(localStorage.getItem('user'));\r\n let token = null;\r\n if (user){\r\n token = user.token;\r\n }\r\n\r\n const mapLayerProperties = this.props.mapLayers.filter(x => x.tableName === table)[0].layerProperties;\r\n const mandatoryFields = Object.keys(mapLayerProperties);\r\n\r\n const postData = {\r\n jwt: token,\r\n table: table,\r\n mandatoryFields: mandatoryFields,\r\n name: this.props.uploadedItem.name,\r\n geojsonKeys: this.props.uploadedItem.geojsonKeys,\r\n folder: this.props.uploadedItem.folder\r\n }\r\n\r\n this.props.onCreateNewVersion(postData);\r\n }\r\n }).then((result) => { \r\n if (result.value) {\r\n Swal.fire({\r\n title: '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n 'Ανάλυση.' +\r\n '
',\r\n showConfirmButton: false,\r\n allowOutsideClick: false,\r\n text: 'Γίνεται ανάλυση και αποθήκευση του αρχείου. Παρακαλώ περιμένετε.',\r\n \r\n }).then(() => {\r\n if (this.props.newVersionUploaded){\r\n Swal.fire(\r\n 'Ολοκλήρωση!',\r\n 'Δημιουργήθηκε νέα version.',\r\n 'success'\r\n )\r\n this.props.onGetVersions();\r\n\r\n } else {\r\n const mapLayerProperties = this.props.mapLayers.filter(x => x.tableName === table)[0].layerProperties;\r\n const mandatoryFields = Object.keys(mapLayerProperties);\r\n\r\n Swal.fire(\r\n 'Δεν βρέθηκαν ένα ή περισσότερα απαραίτητα πεδία!',\r\n 'Απαραίτητα πεδία: ' + mandatoryFields.join(\", \"),\r\n 'error'\r\n )\r\n\r\n this.props.onRemoveDirectoryFromUploads(this.props.uploadedItem.folder);\r\n }\r\n\r\n this.props.onClearVersion();\r\n this.props.onClearFilesList();\r\n const dropzone = document.getElementById(\"Dropzone\");\r\n dropzone.getElementsByTagName('input')[0].value = \"\";\r\n })\r\n }\r\n })\r\n }\r\n\r\n changeDatabaseVersion() {\r\n let text = \"Θα γίνει αλλαγή της version για \";\r\n let andText = \"\";\r\n let newFiresVersionID = null;\r\n let newClcVersionID = null;\r\n\r\n if (this.props.savedVersion_fires !== this.props.selectedVersion_fires ){\r\n text = text + \"τις πυρκαγιές\";\r\n andText = \" και για \";\r\n newFiresVersionID = this.props.selectedVersion_fires;\r\n }\r\n\r\n if (this.props.savedVersion_clc !== this.props.selectedVersion_clc){\r\n text = text + andText + \"το Corine Land Cover\";\r\n newClcVersionID = this.props.selectedVersion_clc;\r\n }\r\n\r\n Swal.fire({\r\n title: 'Είστε σίγουρος?',\r\n text: text,\r\n icon: 'warning',\r\n showCancelButton: true,\r\n showLoaderOnConfirm: true,\r\n confirmButtonText: 'Ναι',\r\n cancelButtonText: 'Όχι',\r\n allowOutsideClick: false,\r\n preConfirm: () => {\r\n const postData = {\r\n newFiresVersionID: newFiresVersionID,\r\n newClcVersionID: newClcVersionID,\r\n savedFiresVersionID: this.props.savedVersion_fires,\r\n savedClcVersionID: this.props.savedVersion_clc\r\n }\r\n\r\n this.props.onChangeDatabaseVersion(postData);\r\n }\r\n }).then((result) => { \r\n if (result.value) {\r\n Swal.fire({\r\n title: '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n 'Ανάλυση.' +\r\n '
',\r\n showConfirmButton: false,\r\n allowOutsideClick: false,\r\n text: 'Γίνεται αλλαγή της version. Παρακαλώ περιμένετε.',\r\n \r\n }).then(() => {\r\n Swal.fire(\r\n 'Ολοκλήρωση!',\r\n 'Έγινε αλλαγή της version.',\r\n 'success'\r\n )\r\n this.props.onGetVersions();\r\n this.props.onUpdateAdminSimpleVariable(\"changedVersion\", false);\r\n })\r\n }\r\n })\r\n }\r\n \r\n render () {\r\n if (this.props.newVersionAnalysed){\r\n Swal.close();\r\n }\r\n if (this.props.changedVersion){\r\n Swal.close();\r\n }\r\n \r\n return(\r\n
\r\n \r\n
\r\n
\r\n

Επίπεδο

\r\n

Active version

\r\n
\r\n
\r\n Fires\r\n this.changedActiveVersion(\"clc\",e.target.value)}\r\n />\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n geoserverUrl: state.system.geoserverUrl,\r\n versions: state.admin.versions,\r\n selectedVersion_fires: state.admin.selectedVersion_fires,\r\n selectedVersion_clc: state.admin.selectedVersion_clc,\r\n savedVersion_fires: state.admin.savedVersion_fires,\r\n savedVersion_clc: state.admin.savedVersion_clc,\r\n uploadedItem: state.dropzone.uploadedItem,\r\n mapLayers: state.layerItems.mapLayers,\r\n newVersionAnalysed: state.admin.newVersionAnalysed,\r\n newVersionUploaded: state.admin.newVersionUploaded,\r\n changedVersion: state.admin.changedVersion\r\n };\r\n}\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n onGetFireYears: (geoserverUrl) => dispatch(actions.getFireYears(geoserverUrl)),\r\n onGetVersions: () => dispatch(actions.getVersions()),\r\n onUpdateAdminSimpleVariable: (variableName, newValue) => dispatch(actions.updateAdminSimpleVariable(variableName, newValue)),\r\n onCreateNewVersion: (postData) => dispatch(actions.createNewVersion(postData)),\r\n onClearVersion: () => dispatch(actions.clearVersion()),\r\n onClearFilesList: () => dispatch(actions.clearFilesList()),\r\n onChangeDatabaseVersion: (postData) => dispatch(actions.changeDatabaseVersion(postData)),\r\n onRemoveDirectoryFromUploads: (folder) => dispatch(actions.removeDirectoryFromUploads(folder))\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Admin);","import React from 'react';\r\nimport { Route, Redirect } from 'react-router-dom';\r\n\r\nconst PrivateRoute = ({ component: Component, ...rest }) => (\r\n (\r\n localStorage.getItem('user')\r\n ? \r\n : \r\n )} />\r\n)\r\n\r\nexport default PrivateRoute;","import React from 'react';\nimport { Route, Switch, Redirect } from 'react-router-dom';\n\nimport Layout from './hoc/Layout/Layout';\nimport Webgis from './containers/Webgis/Webgis';\nimport Login from './containers/LoginRegister/LoginRegister';\nimport Admin from './containers/Admin/Admin';\nimport PrivateRoute from './components/PrivateRoute/PrivateRoute';\n\nfunction App() {\n return ( \n \n \n \n \n \n \n \n \n );\n}\n\nexport default App;","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","const initialState = {\r\n reactBaseUrl: \"http://192.168.1.52:3000/\",\r\n geoserverUrl: \"http://192.168.1.52:8080/geoserver/\"\r\n}\r\n\r\nconst reducer = ( state = initialState, action ) => {\r\n switch ( action.type ) {\r\n default: return state;\r\n }\r\n};\r\n\r\nexport default reducer;","export const updateObject = (oldObject, updatedValues) => {\r\n return {\r\n ...oldObject,\r\n ...updatedValues\r\n };\r\n};\r\n\r\nexport const checkInputValidity = (value, rules) => {\r\n let isValid = true;\r\n\r\n if (!rules) {\r\n return true;\r\n }\r\n \r\n if (rules.required) {\r\n isValid = value.trim() !== '' && isValid;\r\n }\r\n\r\n if (rules.minLength) {\r\n isValid = value.length >= rules.minLength && isValid\r\n }\r\n\r\n if (rules.maxLength) {\r\n isValid = value.length <= rules.maxLength && isValid\r\n }\r\n\r\n if (rules.isEmail) {\r\n const pattern = /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/;\r\n isValid = pattern.test(value) && isValid\r\n }\r\n\r\n if (rules.isNumeric) {\r\n const pattern = /^-?\\d+\\.?\\d*$/;\r\n isValid = pattern.test(value) && isValid\r\n }\r\n\r\n if (rules.isEGSAx) {\r\n isValid = value >= 95000 && value <= 1050000 && isValid\r\n }\r\n\r\n if (rules.isEGSAy) {\r\n isValid = value >= 3700000 && value <= 4700000 && isValid\r\n }\r\n\r\n if (rules.isWGSx) {\r\n isValid = value >= -180 && value <= 180 && isValid\r\n }\r\n\r\n if (rules.isWGSy) {\r\n isValid = value >= -90 && value <= 90 && isValid\r\n }\r\n\r\n return isValid;\r\n}\r\n\r\nexport const getRandomColor = () => {\r\n const letters = '0123456789ABCDEF';\r\n let color = '#';\r\n for (let i = 0; i < 6; i++) {\r\n color += letters[Math.floor(Math.random() * 16)];\r\n }\r\n\r\n return hexToRgb(color);\r\n}\r\n\r\n// This function generates vibrant, \"evenly spaced\" colours (i.e. no clustering). This is ideal for creating easily distinguishable vibrant markers in Google Maps and other apps.\r\n// Adam Cole, 2011-Sept-14\r\n// HSV to RBG adapted from: http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript\r\nexport const getRainbowColor = (numOfSteps, step) => {\r\n let r, g, b;\r\n const h = step / numOfSteps;\r\n const i = ~~(h * 6);\r\n const f = h * 6 - i;\r\n const q = 1 - f;\r\n switch(i % 6){\r\n case 0: r = 1; g = f; b = 0; break;\r\n case 1: r = q; g = 1; b = 0; break;\r\n case 2: r = 0; g = 1; b = f; break;\r\n case 3: r = 0; g = q; b = 1; break;\r\n case 4: r = f; g = 0; b = 1; break;\r\n case 5: r = 1; g = 0; b = q; break;\r\n default: r = 1; g = f; b = 0;\r\n }\r\n const color = \"#\" + (\"00\" + (~ ~(r * 255)).toString(16)).slice(-2) + (\"00\" + (~ ~(g * 255)).toString(16)).slice(-2) + (\"00\" + (~ ~(b * 255)).toString(16)).slice(-2);\r\n return color;\r\n}\r\n\r\nfunction hexToRgb(hex) {\r\n // Expand shorthand form (e.g. \"03F\") to full form (e.g. \"0033FF\")\r\n let shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\r\n hex = hex.replace(shorthandRegex, function(m, r, g, b) {\r\n return r + r + g + g + b + b;\r\n });\r\n \r\n let result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\r\n return result ? {\r\n r: parseInt(result[1], 16),\r\n g: parseInt(result[2], 16),\r\n b: parseInt(result[3], 16)\r\n } : null;\r\n}\r\n\r\nexport const rgbToHex = (r, g, b) => {\r\n return \"#\" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);\r\n}\r\n\r\nexport const hslToHex = (h, s, l) => {\r\n h /= 360;\r\n s /= 100;\r\n l /= 100;\r\n let r, g, b;\r\n if (s === 0) {\r\n r = g = b = l; // achromatic\r\n } else {\r\n const hue2rgb = (p, q, t) => {\r\n if (t < 0) t += 1;\r\n if (t > 1) t -= 1;\r\n if (t < 1 / 6) return p + (q - p) * 6 * t;\r\n if (t < 1 / 2) return q;\r\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\r\n return p;\r\n };\r\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\r\n const p = 2 * l - q;\r\n r = hue2rgb(p, q, h + 1 / 3);\r\n g = hue2rgb(p, q, h);\r\n b = hue2rgb(p, q, h - 1 / 3);\r\n }\r\n const toHex = x => {\r\n const hex = Math.round(x * 255).toString(16);\r\n return hex.length === 1 ? '0' + hex : hex;\r\n };\r\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\r\n}\r\n\r\nexport const percentageToHsl = (percentage, hue0, hue1) => {\r\n var hue = (percentage * (hue1 - hue0)) + hue0;\r\n return 'hsl(' + hue + ', 100%, 50%)';\r\n}\r\n\r\nexport function arrayMove(arr, oldIndex, newIndex) {\r\n while (oldIndex < 0) {\r\n oldIndex += arr.length;\r\n }\r\n while (newIndex < 0) {\r\n newIndex += arr.length;\r\n }\r\n if (newIndex >= arr.length) {\r\n var k = newIndex - arr.length + 1;\r\n while (k--) {\r\n arr.push(undefined);\r\n }\r\n }\r\n\r\n arr.splice(newIndex, 0, arr.splice(oldIndex, 1)[0]);\r\n\r\n //return arr;\r\n};","import * as actionTypes from '../actions/actionTypes';\r\nimport L from 'leaflet';\r\nimport {updateObject, arrayMove, percentageToHsl, hslToHex} from '../utilities';\r\n\r\nconst initialState = {\r\n mapBounds: [[39.1, 45.3],[42.7, 51.1]],\r\n mapLayers:[\r\n {\r\n group_id:2,\r\n group:\"\",\r\n bounds:[],\r\n type:\"polygon\",\r\n label:\"LAU1\",\r\n tableName:\"lau1\",\r\n zIndex:5,\r\n visible:false,\r\n connection:\"wms\",\r\n style:{},\r\n data:{layer:\"burned_areas:lau1\"},\r\n viewparams:\"\",\r\n layerOpacity:1,\r\n displayLegend: false,\r\n layerProperties: {\r\n \"areasqkm\":\"Έκταση (τετραγωνικά χιλιόμετρα)\",\r\n \"l1_code\":\"Κωδικός Δήμου/Κοινότητας (ΕΛΣΤΑΤ)\",\r\n \"l1_name1el\":\"Δήμος/Κοινότητα (LAU1) [Επίσημη ονομασία]\",\r\n \"l1_name2el\":\"Δήμος/Κοινότητα (LAU1) [Κοινή ονομασία]\",\r\n \"n3_name4el\":\"Περιφερειακή Ενότητα (NUTS3)\",\r\n \"n2_name4el\":\"Περιφέρεια (NUTS2)\",\r\n \"n1_name4el\":\"Μεγάλη Γεωγραφική Περιοχή (NUTS1)\",\r\n }\r\n },\r\n {\r\n group_id:2,\r\n group:\"\",\r\n bounds:[],\r\n type:\"polygon\",\r\n label:\"NUTS3\",\r\n tableName:\"nuts3\",\r\n zIndex:4,\r\n visible:false,\r\n connection:\"wms\",\r\n style:{},\r\n data:{layer:\"burned_areas:nuts3\"},\r\n viewparams:\"\",\r\n layerOpacity:1,\r\n displayLegend: false,\r\n layerProperties: {\r\n \"areasqkm\":\"Έκταση (τετραγωνικά χιλιόμετρα)\",\r\n \"n3_name4el\":\"Περιφερειακή Ενότητα (NUTS3)\",\r\n \"n2_name4el\":\"Περιφέρεια (NUTS2)\",\r\n \"n1_name4el\":\"Μεγάλη Γεωγραφική Περιοχή (NUTS1)\",\r\n }\r\n },\r\n {\r\n group_id:2,\r\n group:\"\",\r\n bounds:[],\r\n type:\"polygon\",\r\n label:\"NUTS2\",\r\n tableName:\"nuts2\",\r\n zIndex:3,\r\n visible:false,\r\n connection:\"wms\",\r\n style:{},\r\n data:{layer:\"burned_areas:nuts2\"},\r\n viewparams:\"\",\r\n layerOpacity:1,\r\n displayLegend: false,\r\n layerProperties: {\r\n \"areasqkm\":\"Έκταση (τετραγωνικά χιλιόμετρα)\",\r\n \"n2_name4el\":\"Περιφέρεια (NUTS2)\",\r\n \"n1_name4el\":\"Μεγάλη Γεωγραφική Περιοχή (NUTS1)\",\r\n }\r\n },\r\n {\r\n group_id:2,\r\n group:\"\",\r\n bounds:[],\r\n type:\"polygon\",\r\n label:\"NUTS1\",\r\n tableName:\"nuts1\",\r\n zIndex:2,\r\n visible:false,\r\n connection:\"wms\",\r\n style:{},\r\n data:{layer:\"burned_areas:nuts1\"},\r\n viewparams:\"\",\r\n layerOpacity:1,\r\n displayLegend: false,\r\n layerProperties: {\r\n \"areasqkm\":\"Έκταση (τετραγωνικά χιλιόμετρα)\",\r\n \"n1_name4el\":\"Μεγάλη Γεωγραφική Περιοχή (NUTS1)\",\r\n }\r\n },\r\n {\r\n group_id:3,\r\n group:\"\",\r\n bounds:[],\r\n type:\"polygon\",\r\n label:\"Corine Land Cover\",\r\n tableName:\"clc\",\r\n zIndex:1,\r\n visible:false,\r\n connection:\"wms\",\r\n style:{\r\n type:\"multiple\",\r\n field:\"clc_code\",\r\n classes:[\r\n {\r\n label:\"111: Συνεχής αστικός ιστός\",\r\n style:{\r\n fillColor:\"#e6004d\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"112: Ασυνεχής αστικός ιστός\",\r\n style:{\r\n fillColor:\"#ff0000\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"121: Βιοµηχανικές και εµπορικές ζώνες\",\r\n style:{\r\n fillColor:\"#cc4df2\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"122: Οδικά και σιδηροδροµικά δίκτυα\",\r\n style:{\r\n fillColor:\"#cc0000\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"123: Ζώνες λιµένων\",\r\n style:{\r\n fillColor:\"#e6cccc\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"124: Αεροδρόµια\",\r\n style:{\r\n fillColor:\"#e6cce6\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"131: Χώροι εξορύξεως ορυκτών\",\r\n style:{\r\n fillColor:\"#a600cc\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"132: Χώροι απορρίψεως απορριµµάτων\",\r\n style:{\r\n fillColor:\"#a64d00\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"133: Χώροι οικοδόµηση\",\r\n style:{\r\n fillColor:\"#ff4dff\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"141: Περιοχές αστικού πρασίνου\",\r\n style:{\r\n fillColor:\"#ffa6ff\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"142: Εγκαταστάσεις αθλητισµού και αναψυχής\",\r\n style:{\r\n fillColor:\"#ffe6ff\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"211: Μη αρδευόµενη αρόσιµη γη\",\r\n style:{\r\n fillColor:\"#ffffa8\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"212: Μόνιµα αρδευόµενη γη\",\r\n style:{\r\n fillColor:\"#ffff00\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"213: Ορυζώνες\",\r\n style:{\r\n fillColor:\"#e6e600\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"221: Αµπελώνες\",\r\n style:{\r\n fillColor:\"#e68000\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"222: Οπωροφόρα δένδρα και φυτείες µε σαρκώδεις καρπούς\",\r\n style:{\r\n fillColor:\"#f2a64d\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"223: Ελαιώνες\",\r\n style:{\r\n fillColor:\"#e6a600\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"231: Λιβάδια\",\r\n style:{\r\n fillColor:\"#e6e64d\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"241: Ετήσιες καλλιέργειες που σχετίζονται µε µόνιµες καλλιέργειες\",\r\n style:{\r\n fillColor:\"#ffe6a6\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"242: Σύνθετες καλλιέργειες\",\r\n style:{\r\n fillColor:\"#ffe64d\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"243: Γη που χρησιµοποιείται κυρίως για γεωργία µαζί µε σηµαντικά τµήµατα φυσικής βλάστησης\",\r\n style:{\r\n fillColor:\"#e6cc4d\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"244: Γεωργο-δασικές περιοχές\",\r\n style:{\r\n fillColor:\"#f2cca6\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"311: ∆άσος πλατύφυλλων\",\r\n style:{\r\n fillColor:\"#80ff00\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"312: ∆άσος κωνοφόρων\",\r\n style:{\r\n fillColor:\"#00a600\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"313: Μικτό δάσος\",\r\n style:{\r\n fillColor:\"#4dff00\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"321: Φυσικοί βοσκότοποι\",\r\n style:{\r\n fillColor:\"#ccf24d\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"322: Θάµνοι και χερσότοποι\",\r\n style:{\r\n fillColor:\"#a6ff80\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"323: Σκληροφυλλική βλάστηση\",\r\n style:{\r\n fillColor:\"#a6e64d\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"324: Μεταβατικές δασώδεις και θαµνώδεις εκτάσεις\",\r\n style:{\r\n fillColor:\"#a6f200\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"331: Παραλίες, αµµόλοφοι, αµµουδιές\",\r\n style:{\r\n fillColor:\"#e6e6e6\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"332: Απογυµνωµένοι βράχοι\",\r\n style:{\r\n fillColor:\"#cccccc\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"333: Εκτάσεις µε αραιή βλάστηση\",\r\n style:{\r\n fillColor:\"#ccffcc\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"334: Αποτεφρωµένες εκτάσεις\",\r\n style:{\r\n fillColor:\"#000000\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"335: Παγετώνες και αέναο χιόνι\",\r\n style:{\r\n fillColor:\"#a6e6cc\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"411: Βάλτοι στην ενδοχώρα\",\r\n style:{\r\n fillColor:\"#a6a6ff\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"412: Τυρφώνες\",\r\n style:{\r\n fillColor:\"#4d4dff\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"421: Παραθαλάσσιοι βάλτοι\",\r\n style:{\r\n fillColor:\"#ccccff\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"422: Αλυκές\",\r\n style:{\r\n fillColor:\"#e6e6ff\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"423: Ζώνες που καλύπτονται από παλιρροιακά ύδατα\",\r\n style:{\r\n fillColor:\"#a6a6e6\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"511: Υδατορρεύµατα\",\r\n style:{\r\n fillColor:\"#00ccf2\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"512: Επιφάνειες στάσιµου ύδατος\",\r\n style:{\r\n fillColor:\"#80f2e6\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"521: Παράκτιες λιµνοθάλασσες\",\r\n style:{\r\n fillColor:\"#00ffa6\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"522: Εκβολές ποταµών\",\r\n style:{\r\n fillColor:\"#a6ffe6\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"523: Θάλασσες και ωκεανοί\",\r\n style:{\r\n fillColor:\"#e6f2ff\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n },{\r\n label:\"999: Χωρίς δεδομένα\",\r\n style:{\r\n fillColor:\"#ffffff\",\r\n fillOpacity:1,\r\n color:\"#000000\",\r\n opacity:0,\r\n weight:1\r\n }\r\n }\r\n ]\r\n },\r\n data:{layer:\"burned_areas:clc\"},\r\n viewparams:\"\",\r\n layerOpacity:0.7,\r\n displayLegend: false,\r\n layerProperties: {\r\n \"id\":\"Αναγνωριστικό πολυγώνου\",\r\n \"area_ha\":\"Έκταση (εκτάρια)\",\r\n \"clc_code\":\"Κωδικός (τρίτο επίπεδο)\",\r\n \"l1_name1el\":\"Πρώτο επίπεδο\",\r\n \"l2_name1el\":\"Δεύτερο επίπεδο\",\r\n \"l3_name1el\":\"Τρίτο επίπεδο\",\r\n }\r\n }\r\n ],\r\n mapLayersRaster:[],\r\n tableData: null,\r\n searchResultItem: null,\r\n mapLayersLoading:[],\r\n queryMapLayers:[],\r\n queryMapLayersLoading:[],\r\n mapKey:null,\r\n grazingLayers:[],\r\n grazingYears:[],\r\n fireYears: [],\r\n mapLayersFiresPolygons:[],\r\n mapLayersFiresPoints:[]\r\n};\r\n\r\nconst updateMapBounds = (state, action) => {\r\n return updateObject(state, {\r\n mapBounds:action.mapBounds\r\n });\r\n}\r\n\r\nconst updateLayerVisibility = (state, action) => {\r\n let newLayers = [...state[action.collection]];\r\n newLayers[action.layerIndex].visible = !newLayers[action.layerIndex].visible;\r\n\r\n return updateObject(state,{\r\n [action.collection]:newLayers\r\n });\r\n}\r\n\r\nconst updateLayerFillColor = (state, action) => {\r\n const r = action.fillColor.r\r\n const g = action.fillColor.g\r\n const b = action.fillColor.b\r\n const a = action.fillColor.a\r\n\r\n let newLayers = [...state[action.collection]];\r\n newLayers[action.layerIndex].style.fillColor = \"rgba(\" + r + \",\" + g + \",\" + b + \",\" + a + \")\";\r\n\r\n return updateObject(state,{\r\n [action.collection]:newLayers\r\n });\r\n}\r\n\r\nconst updateLayerBorderColor = (state, action) => {\r\n const r = action.borderColor.r\r\n const g = action.borderColor.g\r\n const b = action.borderColor.b\r\n const a = action.borderColor.a\r\n\r\n let newLayers = [...state[action.collection]];\r\n newLayers[action.layerIndex].style.color = \"rgba(\" + r + \",\" + g + \",\" + b + \",\" + a + \")\";\r\n\r\n return updateObject(state,{\r\n [action.collection]:newLayers\r\n });\r\n}\r\n\r\nconst updateLayerBorderWidth = (state, action) => {\r\n let newLayers = [...state[action.collection]];\r\n newLayers[action.layerIndex].style.weight = action.event.target.value;\r\n \r\n return updateObject(state,{\r\n [action.collection]:newLayers\r\n });\r\n}\r\n\r\nconst updateMapLayersOrder = (state,action) => {\r\n let newLayers = [...state[action.collection]];\r\n arrayMove(newLayers, action.event.oldIndex, action.event.newIndex);\r\n\r\n return updateObject(state,{\r\n [action.collection]:newLayers\r\n });\r\n}\r\n\r\nconst updateMapTable = (state, action) => {\r\n const tableData = state[action.collection][action.layerIndex].data;\r\n\r\n return updateObject(state,{\r\n tableData: tableData\r\n });\r\n}\r\n\r\nconst removeLayerItem = (state, action) => {\r\n let newLayers = [...state[action.collection]];\r\n newLayers.splice(action.layerIndex, 1);\r\n\r\n return updateObject(state,{\r\n [action.collection]:newLayers\r\n });\r\n}\r\n\r\nconst showSearchResultItem = (state, action) => {\r\n return updateObject(state,{\r\n searchResultItem:action.searchResultItem,\r\n mapBounds:[[action.searchResultItem.y,action.searchResultItem.x],[action.searchResultItem.y,action.searchResultItem.x]]\r\n });\r\n}\r\n\r\nconst clearSearchResultItem = (state) => {\r\n return updateObject(state,{\r\n searchResultItem:null\r\n });\r\n}\r\n\r\nconst updateLayerViewparams = (state,action) => {\r\n let mapLayers = [...state.mapLayers];\r\n mapLayers[action.mapLayerIndex].viewparams = action.viewparams;\r\n\r\n return updateObject(state, {mapLayers:mapLayers});\r\n}\r\n\r\nconst addLayerLoading = (state,action) => {\r\n let layersLoading = [...state[action.collection]];\r\n layersLoading.push(action.mapLayerIndex);\r\n\r\n return updateObject(state, {[action.collection]:layersLoading});\r\n}\r\n\r\nconst removeLayerLoading = (state,action) => {\r\n let layersLoading = [...state[action.collection]];\r\n\r\n const index = layersLoading.indexOf(action.mapLayerIndex);\r\n if (index !== -1) {\r\n layersLoading.splice(index, 1);\r\n }\r\n\r\n return updateObject(state, {[action.collection]:layersLoading});\r\n}\r\n\r\nconst getMapLayersStarted = (state) => {\r\n return updateObject(state, {loading:true});\r\n}\r\n\r\nconst getMapLayersSuccess = (state,action) => {\r\n let mapLayersRaster = [];\r\n let grazingYears = [];\r\n\r\n action.mapLayers.map_layers.forEach(mapLayer => {\r\n if (mapLayer.data_format === 'Raster'){\r\n mapLayersRaster.push(mapLayer);\r\n }\r\n\r\n // Insert all available years for the user for grazing in an array\r\n if (mapLayer.subgroup === 'Grazing capacity'){\r\n let year = mapLayer.raster_filename.split('_')[4];\r\n let yearIndex = grazingYears.findIndex(grazingYear => grazingYear.value === year);\r\n\r\n if (yearIndex === -1){ //the year has not been added to the array\r\n grazingYears.push({value:year, label:year});\r\n }\r\n }\r\n });\r\n\r\n // sort array with years ascending\r\n grazingYears.sort((a,b) => (a.value > b.value) ? 1 : ((b.value > a.value) ? -1 : 0));\r\n\r\n return updateObject(state, {\r\n error:false,\r\n loading:false,\r\n mapLayers:action.mapLayers.map_layers,\r\n mapLayersRaster:mapLayersRaster,\r\n grazingYears:grazingYears\r\n });\r\n}\r\n\r\nconst getMapLayersFailed = (state) => {\r\n return updateObject(state, {error:true,loading:false});\r\n}\r\n\r\nconst updateMapLayersStarted = (state) => {\r\n return updateObject(state, {loading:true});\r\n}\r\n\r\nconst updateMapLayersSuccess = (state,action) => {\r\n return updateObject(state, {\r\n error:false,\r\n loading:false,\r\n mapLayers:action.mapLayers.map_layers\r\n });\r\n}\r\n\r\nconst updateMapLayersFailed = (state) => {\r\n return updateObject(state, {error:true,loading:false});\r\n}\r\n\r\nconst saveQueryResultSuccess = (state,action) => {\r\n let queryMapLayers = [...state.queryMapLayers];\r\n\r\n let boundsLayer = JSON.parse(action.boundingBox.features[0].properties.bounds);\r\n let bounds = L.geoJSON(boundsLayer).getBounds();\r\n\r\n const layer = action.payload.geoserverWorkspace + \":\" + action.payload.selectedQueryLayer.tableName;\r\n\r\n let filter = \"\";\r\n let name = \"\";\r\n\r\n if (action.payload.selectedQueryField.dataType === \"string\"){\r\n filter = action.payload.selectedQueryField.field + \"='\" + action.payload.selectedQueryValue + \"'\";\r\n name = action.payload.selectedQueryLayer.label + \": \" + action.payload.selectedQueryField.field + \" = \" + action.payload.selectedQueryValue;\r\n } else {\r\n let min = action.payload.selectedQueryValue[0];\r\n let max = action.payload.selectedQueryValue[1];\r\n\r\n filter = \"(\" + action.payload.selectedQueryField.field + \">=\" + min + \" AND \" + action.payload.selectedQueryField.field + \"<=\" + max + \")\";\r\n name = action.payload.selectedQueryLayer.label + \": \" + min + \" <= \" + action.payload.selectedQueryField.field + \" >= \" + max;\r\n }\r\n \r\n queryMapLayers.push(\r\n {\r\n data:{layer: layer}, // Geojson or connection parameters for wms\r\n name: name,\r\n group_id: null,\r\n group: \"queries\",\r\n published: true,\r\n downloads: false,\r\n bounds: bounds,\r\n geoserver_url: action.payload.geoserverUrl,\r\n connection: \"wms\",\r\n visible: true,\r\n viewparams: \"\",\r\n filter: filter,\r\n layerOpacity: 1,\r\n type: \"raster\",\r\n style: {}\r\n }\r\n )\r\n\r\n return updateObject(state, {queryMapLayers:queryMapLayers});\r\n}\r\n\r\nconst updateMapKey = (state) => {\r\n var d = new Date();\r\n\r\n return updateObject(state, {mapKey:d.getMilliseconds()});\r\n}\r\n\r\nconst changeLayerOpacity = (state, action) => {\r\n let layers = [...state[action.collection]];\r\n layers[action.layerIndex].layerOpacity = action.percentage / 100;\r\n\r\n return updateObject(state, {[action.collection]:layers});\r\n}\r\n\r\nconst getFireYearsSuccess = (state, action) => {\r\n let fireYears = [];\r\n let mapLayers = [...state.mapLayers];\r\n const colors = [\"007fff\",\"178be7\",\"2e96d0\",\"45a2b9\",\"5cada1\",\"73b98a\",\"8ac473\",\"a2d05c\",\"add650\",\"b9dc45\",\"cae433\",\"dced22\",\"edf611\",\"ffff00\",\"fce502\",\"f9cb05\",\"f9b005\",\"f4970a\",\"f17e0c\",\"ef640f\",\"ec4a11\",\"e93014\",\"e71717\",\"a21010\",\"850d0d\"]\r\n let colorIndex = 0;\r\n let color = \"\";\r\n\r\n let mapLayersFiresPolygons = [];\r\n let mapLayersFiresPoints = [];\r\n\r\n action.fireYears.features.forEach((fireYear,index) => {\r\n fireYears.push(fireYear.properties.fire_year);\r\n\r\n // Calculate color between green(120) and red(0)\r\n colorIndex = Math.floor(index * ((colors.length - 1) / (action.fireYears.features.length - 1)));\r\n color = colors[colorIndex];\r\n \r\n mapLayersFiresPolygons.push({\r\n group_id:1,\r\n group:\"\",\r\n bounds:[],\r\n type:\"polygon\",\r\n label:fireYear.properties.fire_year,\r\n tableName:\"fires\",\r\n zIndex:6 + index,\r\n visible:true,\r\n connection:\"wms\",\r\n style:{\r\n type:\"single\",\r\n env: color\r\n },\r\n data:{layer:\"burned_areas:fires_per_year\"},\r\n viewparams:\"YEAR:\" + fireYear.properties.fire_year,\r\n layerOpacity:1,\r\n displayLegend: true,\r\n layerProperties: {\r\n \"year\":\"Έτος\",\r\n \"datestart\":\"Ημερομηνία έναρξης πυρκαγιάς\",\r\n \"dates2post\":\"Ημερομηνία λήψης εικόνας Sentinel-2\",\r\n \"nuts2\":\"Περιφέρεια (NUTS2)\",\r\n \"nuts3\":\"Περιφερειακή Ενότητα (NUTS3)\",\r\n \"lau1\":\"Δήμος/Κοινότητα (LAU1)\",\r\n \"location\":\"Θέση\",\r\n \"foroffice\":\"Δασαρχείο\",\r\n \"fordirect\":\"Διεύθυνση Δασών\",\r\n \"linkmap\":\"Σύνδεσμός χάρτη\",\r\n \"areaha\":\"Καμένη έκταση (εκτάρια)\",\r\n \"domclass\":\"Κυριάρχος τύπος κάλυψης γης εντός της περιμέτρου (CORINE LC 2018)\",\r\n \"taclc1\":\"Τεχνητές επιφάνειες (CLC2018, Κωδικός: 1)\",\r\n \"taclc2\":\"Γεωργικές περιοχές (CLC2018, Κωδικός: 2)\",\r\n \"taclc311\":\"∆άσος πλατύφυλλων (CLC2018, Κωδικός: 311)\",\r\n \"taclc312\":\"∆άσος κωνοφόρων (CLC2018, Κωδικός: 312)\",\r\n \"taclc313\":\"Μικτό δάσος (CLC2018, Κωδικός: 313)\",\r\n \"taclc321\":\"Φυσικοί βοσκότοποι (CLC2018, Κωδικός: 321)\",\r\n \"taclc322\":\"Θάµνοι και χερσότοποι (CLC2018, Κωδικός: 322)\",\r\n \"taclc323\":\"Σκληροφυλλική βλάστηση (CLC2018, Κωδικός: 323)\",\r\n \"taclc324\":\"Μεταβατικές δασώδεις και θαµνώδεις εκτάσεις (CLC2018, Κωδικός: 324)\",\r\n \"taclc33\":\"Ανοιχτοί χώροι µε λίγη ή καθόλου βλάστηση (CLC2018, Κωδικός: 33)\",\r\n \"taclc4\":\"Υγρότοποι (CLC2018, Κωδικός: 4)\",\r\n \"taclc5\":\"Υδάτινες επιφάνειες (CLC2018, Κωδικός: 5)\"\r\n }\r\n })\r\n\r\n mapLayersFiresPoints.push({\r\n group_id:1,\r\n group:\"\",\r\n bounds:[],\r\n type:\"polygon\",\r\n label:fireYear.properties.fire_year,\r\n tableName:\"fires\",\r\n zIndex:6 + index,\r\n visible:true,\r\n connection:\"wms\",\r\n style:{\r\n type:\"single\",\r\n env: color\r\n },\r\n data:{layer:\"burned_areas:fires_per_year_points\"},\r\n viewparams:\"YEAR:\" + fireYear.properties.fire_year,\r\n layerOpacity:1,\r\n displayLegend: true,\r\n layerProperties: {\r\n \"year\":\"Έτος\",\r\n \"datestart\":\"Ημερομηνία έναρξης πυρκαγιάς\",\r\n \"dates2post\":\"Ημερομηνία λήψης εικόνας Sentinel-2\",\r\n \"nuts2\":\"Περιφέρεια (NUTS2)\",\r\n \"nuts3\":\"Περιφερειακή Ενότητα (NUTS3)\",\r\n \"lau1\":\"Δήμος/Κοινότητα (LAU1)\",\r\n \"location\":\"Θέση\",\r\n \"foroffice\":\"Δασαρχείο\",\r\n \"fordirect\":\"Διεύθυνση Δασών\",\r\n \"linkmap\":\"Σύνδεσμός χάρτη\",\r\n \"areaha\":\"Καμένη έκταση (εκτάρια)\",\r\n \"domclass\":\"Κυριάρχος τύπος κάλυψης γης εντός της περιμέτρου (CORINE LC 2018)\",\r\n \"taclc1\":\"Τεχνητές επιφάνειες (CLC2018, Κωδικός: 1)\",\r\n \"taclc2\":\"Γεωργικές περιοχές (CLC2018, Κωδικός: 2)\",\r\n \"taclc311\":\"∆άσος πλατύφυλλων (CLC2018, Κωδικός: 311)\",\r\n \"taclc312\":\"∆άσος κωνοφόρων (CLC2018, Κωδικός: 312)\",\r\n \"taclc313\":\"Μικτό δάσος (CLC2018, Κωδικός: 313)\",\r\n \"taclc321\":\"Φυσικοί βοσκότοποι (CLC2018, Κωδικός: 321)\",\r\n \"taclc322\":\"Θάµνοι και χερσότοποι (CLC2018, Κωδικός: 322)\",\r\n \"taclc323\":\"Σκληροφυλλική βλάστηση (CLC2018, Κωδικός: 323)\",\r\n \"taclc324\":\"Μεταβατικές δασώδεις και θαµνώδεις εκτάσεις (CLC2018, Κωδικός: 324)\",\r\n \"taclc33\":\"Ανοιχτοί χώροι µε λίγη ή καθόλου βλάστηση (CLC2018, Κωδικός: 33)\",\r\n \"taclc4\":\"Υγρότοποι (CLC2018, Κωδικός: 4)\",\r\n \"taclc5\":\"Υδάτινες επιφάνειες (CLC2018, Κωδικός: 5)\"\r\n }\r\n })\r\n });\r\n\r\n const showMapLayers = [...mapLayers, ...mapLayersFiresPoints];\r\n\r\n return updateObject(state, {fireYears:fireYears, mapLayers:showMapLayers, mapLayersFiresPolygons:mapLayersFiresPolygons, mapLayersFiresPoints:mapLayersFiresPoints});\r\n}\r\n\r\nconst showFirePolygons = (state) => {\r\n let mapLayers = [...state.mapLayers];\r\n const mapLayersFiresPolygons = [...state.mapLayersFiresPolygons];\r\n\r\n mapLayers.length = 5; // Remove all fires, which are the last items in mapLayers array\r\n\r\n const showMapLayers = [...mapLayers, ...mapLayersFiresPolygons];\r\n\r\n return updateObject(state, {mapLayers:showMapLayers});\r\n}\r\n\r\nconst showFirePoints = (state) => {\r\n const mapLayers = [...state.mapLayers];\r\n const mapLayersFiresPoints = [...state.mapLayersFiresPoints];\r\n\r\n mapLayers.length = 5; // Remove all fires, which are the last items in mapLayers array\r\n\r\n const showMapLayers = [...mapLayers, ...mapLayersFiresPoints];\r\n\r\n return updateObject(state, {mapLayers:showMapLayers});\r\n}\r\n\r\nconst toggleLegend = (state,action) => {\r\n let mapLayers = [...state.mapLayers];\r\n mapLayers[action.layerIndex].displayLegend = !mapLayers[action.layerIndex].displayLegend;\r\n\r\n return updateObject(state, {mapLayers:mapLayers});\r\n}\r\n\r\nconst reducer = ( state = initialState, action ) => {\r\n switch ( action.type ) {\r\n case actionTypes.UPDATE_LAYER_FILL_COLOR: return updateLayerFillColor(state, action);\r\n case actionTypes.UPDATE_MAP_BOUNDS: return updateMapBounds(state, action);\r\n case actionTypes.UPDATE_LAYER_VISIBILITY: return updateLayerVisibility(state, action);\r\n case actionTypes.UPDATE_LAYER_BORDER_COLOR: return updateLayerBorderColor(state, action);\r\n case actionTypes.UPDATE_LAYER_BORDER_WIDTH: return updateLayerBorderWidth(state, action);\r\n case actionTypes.UPDATE_MAP_LAYERS_ORDER: return updateMapLayersOrder(state, action);\r\n case actionTypes.UPDATE_MAP_TABLE: return updateMapTable(state, action);\r\n case actionTypes.REMOVE_LAYER_ITEM: return removeLayerItem(state, action);\r\n case actionTypes.SHOW_SEARCH_RESULT_ITEM: return showSearchResultItem(state, action);\r\n case actionTypes.CLEAR_SEARCH_RESULT_ITEM: return clearSearchResultItem(state);\r\n case actionTypes.UPDATE_LAYER_VIEWPARAMS: return updateLayerViewparams(state,action);\r\n case actionTypes.ADD_LAYER_LOADING: return addLayerLoading(state,action);\r\n case actionTypes.REMOVE_LAYER_LOADING: return removeLayerLoading(state,action);\r\n case actionTypes.GET_MAP_LAYERS_STARTED: return getMapLayersStarted(state);\r\n case actionTypes.GET_MAP_LAYERS_SUCCESS: return getMapLayersSuccess(state,action);\r\n case actionTypes.GET_MAP_LAYERS_FAILED: return getMapLayersFailed(state);\r\n case actionTypes.UPDATE_MAP_LAYERS_STARTED: return updateMapLayersStarted(state);\r\n case actionTypes.UPDATE_MAP_LAYERS_SUCCESS: return updateMapLayersSuccess(state,action);\r\n case actionTypes.UPDATE_MAP_LAYERS_FAILED: return updateMapLayersFailed(state);\r\n case actionTypes.SAVE_QUERY_RESULT_SUCCESS: return saveQueryResultSuccess(state,action);\r\n case actionTypes.UPDATE_MAP_KEY: return updateMapKey(state,action);\r\n case actionTypes.CHANGE_LAYER_OPACITY: return changeLayerOpacity(state,action);\r\n case actionTypes.GET_FIRE_YEARS_SUCCESS: return getFireYearsSuccess(state, action);\r\n case actionTypes.SHOW_FIRE_POLYGONS: return showFirePolygons(state);\r\n case actionTypes.SHOW_FIRE_POINTS: return showFirePoints(state);\r\n case actionTypes.TOGGLE_LEGEND: return toggleLegend(state,action);\r\n default: return state;\r\n }\r\n};\r\n\r\nexport default reducer;","import * as actionTypes from '../actions/actionTypes';\r\nimport {updateObject} from '../utilities';\r\nimport basemap_google_satellite from '../../assets/images/basemap_google_satellite.png'\r\nimport basemap_google_roadmap from '../../assets/images/basemap_google_roadmap.png'\r\nimport basemap_google_terrain from '../../assets/images/basemap_google_terrain.png'\r\nimport basemap_openstreetmap from '../../assets/images/basemap_openstreetmap.png'\r\nimport basemap_cardo_db from '../../assets/images/basemap_cardo_db.png'\r\nimport basemap_esri_world from '../../assets/images/basemap_esri_world.png'\r\n\r\nconst initialState = {\r\n mapBounds:[[34.5, 17.13],[41.80,30.68]],\r\n basemapLayers:[\r\n {\r\n name:'satellite',\r\n label:'Google Satellite',\r\n maxZoom: 20,\r\n isGoogle: true,\r\n key:'AIzaSyB7wxoH28aEIcYKWxUt7vmGrJ_zFKdZosU',\r\n image:basemap_google_satellite\r\n },\r\n {\r\n name:'roadmap',\r\n label:'Google Roadmap',\r\n maxZoom: 20,\r\n isGoogle: true,\r\n key:'AIzaSyB7wxoH28aEIcYKWxUt7vmGrJ_zFKdZosU',\r\n image:basemap_google_roadmap\r\n },\r\n {\r\n name:'terrain',\r\n label:'Google Terrain',\r\n maxZoom: 20,\r\n isGoogle: true,\r\n key:'AIzaSyB7wxoH28aEIcYKWxUt7vmGrJ_zFKdZosU',\r\n image:basemap_google_terrain\r\n },\r\n {\r\n name:'OpenStreetMap_Mapnik',\r\n label:'Open Street Map',\r\n url:'http://{s}.tile.osm.org/{z}/{x}/{y}.png',\r\n // attribution: '© OpenStreetMap contributors © CARTO',\r\n attribution: '',\r\n maxZoom: 19,\r\n isGoogle: false,\r\n image:basemap_openstreetmap\r\n },\r\n {\r\n name:'CartoDB_Positron',\r\n label:'CartoDB Positron',\r\n url:'https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}{r}.png',\r\n // attribution: '© OpenStreetMap contributors',\r\n attribution: '',\r\n subdomains: 'abcd',\r\n maxZoom: 19,\r\n isGoogle: false,\r\n image:basemap_cardo_db\r\n },\r\n {\r\n name:'Esri_WorldImagery',\r\n label:'Esri World Imagery',\r\n url:'https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}',\r\n // attribution: 'Tiles © Esri — Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community',\r\n attribution: '',\r\n maxZoom: 15,\r\n isGoogle: false,\r\n image:basemap_esri_world\r\n },\r\n ],\r\n selectedBasemap: 4,\r\n featureInfoLayers:[],\r\n currentFeatureInfoLayer: 1,\r\n loadingFeatureInfo: false,\r\n showPopup: false\r\n}\r\n\r\nconst changeBackground = (state,action) => {\r\n return updateObject(state, {selectedBasemap:action.index});\r\n}\r\n\r\nconst getFeatureInfoStarted = (state) => {\r\n return updateObject(state, {loadingFeatureInfo:true, showPopup:true});\r\n}\r\n\r\nconst getFeatureInfoSuccess = (state,action) => {\r\n let featureInfoLayers = [];\r\n\r\n action.layersData.forEach((layerData, index) => {\r\n if (layerData.data.features && layerData.data.features.length > 0){\r\n featureInfoLayers.push({layer:action.layers[index].layerName, layerData:layerData, layerLabel:action.layers[index].layerLabel, layerProperties:action.layers[index].layerProperties})\r\n }\r\n });\r\n\r\n return updateObject(state, {loadingFeatureInfo:false, featureInfoLayers:featureInfoLayers});\r\n}\r\n\r\nconst getFeatureStart = (state) => {\r\n return updateObject(state, {loadingFeatureInfo:true});\r\n}\r\n\r\nconst getFeatureSuccess = (state,action) => {\r\n let featureInfoLayers = [];\r\n\r\n action.layersData.forEach(layerData => {\r\n featureInfoLayers.push({layer:layerData.layerName, layerData:layerData.data});\r\n });\r\n\r\n return updateObject(state, {featureInfoLayers:featureInfoLayers, loadingFeatureInfo:false, showPopup:true});\r\n}\r\n\r\nconst changeFeaturePanel = (state,action) => {\r\n let currentFeatureInfoLayer = state.currentFeatureInfoLayer\r\n\r\n if (action.action === \"add\"){\r\n currentFeatureInfoLayer = currentFeatureInfoLayer + 1;\r\n } else if (action.action === \"subtract\") {\r\n currentFeatureInfoLayer = currentFeatureInfoLayer - 1;\r\n } else if (action.action === \"reset\") {\r\n currentFeatureInfoLayer = 1;\r\n }\r\n\r\n return updateObject(state, {currentFeatureInfoLayer:currentFeatureInfoLayer});\r\n}\r\n\r\nconst closePopup = (state) => {\r\n return updateObject(state, {loadingFeatureInfo:false, showPopup:false});\r\n}\r\n\r\n\r\nconst reducer = ( state = initialState, action ) => {\r\n switch ( action.type ) {\r\n case actionTypes.CHANGE_BACKGROUND: return changeBackground(state, action);\r\n case actionTypes.GET_FEATURE_INFO_STARTED: return getFeatureInfoStarted(state);\r\n case actionTypes.GET_FEATURE_INFO_SUCCESS: return getFeatureInfoSuccess(state,action);\r\n case actionTypes.GET_FEATURE_START: return getFeatureStart(state);\r\n case actionTypes.GET_FEATURE_SUCCESS: return getFeatureSuccess(state, action);\r\n case actionTypes.CHANGE_FEATURE_PANEL: return changeFeaturePanel(state,action);\r\n case actionTypes.CLOSE_POPUP: return closePopup(state);\r\n default: return state;\r\n }\r\n};\r\n\r\nexport default reducer;","import * as actionTypes from '../actions/actionTypes';\r\nimport {updateObject} from '../utilities';\r\n\r\nconst initialState = {\r\n showModal:false,\r\n show:\"login\",\r\n loggedIn:false,\r\n loggedInUser:{},\r\n confirmationMessage:null,\r\n showSpinner:false\r\n}\r\n\r\nconst showLoginRegister = (state,action) => {\r\n return updateObject(state, {showModal:true, show:action.showType});\r\n}\r\n\r\nconst hideLoginRegister = (state) => {\r\n return updateObject(state, {showModal:false, show:\"\", confirmationMessage:null});\r\n}\r\n\r\nconst loggedIn = (state,action) => {\r\n return updateObject(state, {loggedIn:true, loggedInUser:action.user, showModal:false, show:\"\", confirmationMessage:null});\r\n}\r\n\r\nconst loggedOut = (state) => {\r\n return initialState;\r\n}\r\n\r\nconst getUserFromLocalStorage = (state) => {\r\n\r\n let user = {};\r\n \r\n if (localStorage.getItem('user') !== 'undefined') { \r\n user = JSON.parse(localStorage.getItem('user'));\r\n }\r\n\r\n let loggedIn = false;\r\n\r\n if (user !== null && user.hasOwnProperty('id')) loggedIn = true;\r\n\r\n return updateObject(state, {loggedIn:loggedIn, loggedInUser:user});\r\n}\r\n\r\nconst showConfirmation = (state,action) => {\r\n return updateObject(state, {\r\n showModal: true,\r\n show:\"confirmation\",\r\n confirmationMessage:action.confirmationMessage\r\n });\r\n}\r\n\r\nconst showLoadingSpinner = (state) => {\r\n return updateObject(state, {showSpinner:true});\r\n}\r\n\r\nconst hideLoadingSpinner = (state) => {\r\n return updateObject(state, {showSpinner:false});\r\n}\r\n\r\nconst reducer = ( state = initialState, action ) => {\r\n switch ( action.type ) {\r\n case actionTypes.SHOW_LOGIN_REGISTER: return showLoginRegister(state,action);\r\n case actionTypes.HIDE_LOGIN_REGISTER: return hideLoginRegister(state);\r\n case actionTypes.LOGGED_IN: return loggedIn(state,action);\r\n case actionTypes.LOGGED_OUT: return loggedOut(state);\r\n case actionTypes.GET_USER_FROM_LOCAL_STORAGE: return getUserFromLocalStorage(state);\r\n case actionTypes.SHOW_CONFIRMATION: return showConfirmation(state,action);\r\n case actionTypes.SHOW_LOADING_SPINNER: return showLoadingSpinner(state);\r\n case actionTypes.HIDE_LOADING_SPINNER: return hideLoadingSpinner(state);\r\n default: return state;\r\n }\r\n};\r\n\r\nexport default reducer;","import * as actionTypes from '../actions/actionTypes';\r\nimport {updateObject} from '../utilities';\r\n\r\nconst initialState = {\r\n message: \"\",\r\n type: \"\"\r\n}\r\n\r\nconst alertSuccess = (state, action) => {\r\n return updateObject(state, {message:action.message, type: \"Success\"});\r\n}\r\n\r\nconst alertError = (state, action) => {\r\n return updateObject(state, {message:action.message, type: \"Error\"});\r\n}\r\n\r\nconst alertClear = (state) => {\r\n return updateObject(state, {message:\"\", type:\"\"});\r\n}\r\n\r\nconst reducer = ( state = initialState, action ) => {\r\n switch ( action.type ) {\r\n case actionTypes.ALERT_SUCCESS: return alertSuccess(state, action);\r\n case actionTypes.ALERT_ERROR: return alertError(state, action);\r\n case actionTypes.ALERT_CLEAR: return alertClear(state);\r\n default: return state;\r\n }\r\n};\r\n\r\nexport default reducer;","import * as actionTypes from '../actions/actionTypes';\r\nimport {updateObject} from '../utilities';\r\n\r\nconst initialState = {\r\n adminItems:[],\r\n adminItemsLoading: false,\r\n selectedAdmin:\"country\",\r\n selectedAdminItem:null,\r\n selectedAdminLabel:\"Επικράτεια\",\r\n selectedStatsType:\"fires\",\r\n statsFires:{\r\n results:{\r\n xTitle:\"\", \r\n xKey:\"\", \r\n yTitle:\"\", \r\n data:[]\r\n }, \r\n numbers:{\r\n xTitle:\"\", \r\n xKey:\"\",\r\n yTitle:\"\", \r\n data:[]\r\n }\r\n },\r\n statsClc:{\r\n results:{\r\n xTitle:\"\", \r\n xKey:\"\", \r\n yTitle:\"\", \r\n data:[]\r\n }\r\n },\r\n statsClcAll:null,\r\n statsClcYears:null,\r\n statsClcLastYear:null\r\n}\r\n\r\nconst getAdminWithFiresStarted = (state) => {\r\n return updateObject(state, {adminItems:[], adminItemsLoading:true});\r\n}\r\n\r\nconst getAdminWithFiresSuccess = (state,action) => {\r\n let adminItems = [];\r\n\r\n action.admin.features.forEach(adminItem => {\r\n adminItems.push({value: adminItem.properties.code, label:adminItem.properties.name})\r\n });\r\n\r\n return updateObject(state, {adminItems:adminItems, adminItemsLoading:false});\r\n}\r\n\r\nconst getStatisticsSuccess = (state,action) => {\r\n let xTitle = \"Έτος\";\r\n let yTitle = \"Έκταση (εκτάρια)\";\r\n let xKey = \"year\";\r\n let statsType = \"statsFires\";\r\n let statsClcAll = {};\r\n let stats = null;\r\n let statsClcLastYear = 0;\r\n let statsClcYears = [];\r\n let clcLabels = {\r\n \"ahaclc1\":\"Τεχνητές επιφάνειες (CLC2018, Κωδικός: 1)\",\r\n \"ahaclc2\":\"Γεωργικές περιοχές (CLC2018, Κωδικός: 2)\",\r\n \"ahaclc311\":\"∆άσος πλατύφυλλων (CLC2018, Κωδικός: 311)\",\r\n \"ahaclc312\":\"∆άσος κωνοφόρων (CLC2018, Κωδικός: 312)\",\r\n \"ahaclc313\":\"Μικτό δάσος (CLC2018, Κωδικός: 313)\",\r\n \"ahaclc321\":\"Φυσικοί βοσκότοποι (CLC2018, Κωδικός: 321)\",\r\n \"ahaclc322\":\"Θάµνοι και χερσότοποι (CLC2018, Κωδικός: 322)\",\r\n \"ahaclc323\":\"Σκληροφυλλική βλάστηση (CLC2018, Κωδικός: 323)\",\r\n \"ahaclc324\":\"Μεταβατικές δασώδεις και θαµνώδεις εκτάσεις (CLC2018, Κωδικός: 324)\",\r\n \"ahaclc33\":\"Ανοιχτοί χώροι µε λίγη ή καθόλου βλάστηση (CLC2018, Κωδικός: 33)\",\r\n \"ahaclc4\":\"Υγρότοποι (CLC2018, Κωδικός: 4)\",\r\n \"ahaclc5\":\"Υδάτινες επιφάνειες (CLC2018, Κωδικός: 5)\"\r\n }\r\n\r\n if (action.selectedStatsType === \"clc\"){\r\n // TODO: change the above variables\r\n statsType = \"statsClc\";\r\n xTitle = \"Corine land cover\";\r\n xKey = \"clc\";\r\n\r\n stats = {\r\n results:{\r\n xTitle:xTitle, \r\n xKey:xKey, \r\n yTitle:yTitle, \r\n data:[]\r\n }\r\n };\r\n\r\n // Get the keys\r\n const keys = Object.keys(action.stats.features[0].properties);\r\n\r\n // A variable with data for all years\r\n action.stats.features.forEach(stat => {\r\n statsClcAll[stat.properties.year] = [];\r\n statsClcYears.push({value:stat.properties.year, label:stat.properties.year});\r\n \r\n keys.forEach(key => {\r\n if (key !== \"year\"){\r\n statsClcAll[stat.properties.year].push({clc:clcLabels[key], value:parseFloat(stat.properties[key].toFixed(2))});\r\n }\r\n });\r\n statsClcLastYear = stat.properties.year;\r\n }); \r\n\r\n stats.results.data = [...statsClcAll[statsClcLastYear]]\r\n\r\n } else {\r\n stats = {\r\n results:{\r\n xTitle:xTitle, \r\n xKey:xKey, \r\n yTitle:yTitle, \r\n data:[]\r\n }, \r\n numbers:{\r\n xTitle:xTitle, \r\n xKey:xKey,\r\n yTitle:\"Αριθμός πυρκαγιών\", \r\n data:[]\r\n }\r\n };\r\n \r\n action.stats.features.forEach(stat => {\r\n stats.results.data.push({[xKey]:stat.properties[xKey], value:parseFloat(stat.properties.value.toFixed(2))});\r\n stats.numbers.data.push({[xKey]:stat.properties[xKey], value:parseInt(stat.properties.count)})\r\n }); \r\n }\r\n \r\n return updateObject(state, {[statsType]:stats, statsClcAll:statsClcAll, statsClcYears:statsClcYears, statsClcLastYear:statsClcLastYear});\r\n}\r\n\r\nconst updateSimpleVariable = (state,action) => {\r\n return updateObject(state, {[action.variableName]:action.newValue});\r\n}\r\n\r\nconst changeClcYear = (state,action) => {\r\n let statsClc = {...state.statsClc};\r\n statsClc.results.data = state.statsClcAll[action.year];\r\n \r\n return updateObject(state, {statsClc:statsClc});\r\n}\r\n\r\nconst reducer = ( state = initialState, action ) => {\r\n switch ( action.type ) {\r\n case actionTypes.GET_ADMIN_WITH_FIRES_STARTED: return getAdminWithFiresStarted(state);\r\n case actionTypes.GET_ADMIN_WITH_FIRES_SUCCESS: return getAdminWithFiresSuccess(state,action);\r\n case actionTypes.GET_STATISTICS_SUCCESS: return getStatisticsSuccess(state,action);\r\n case actionTypes.UPDATE_SIMPLE_VARIABLE: return updateSimpleVariable(state,action);\r\n case actionTypes.CHANGE_CLC_YEAR: return changeClcYear(state,action);\r\n default: return state;\r\n }\r\n};\r\n\r\nexport default reducer;","import * as actionTypes from '../actions/actionTypes';\r\nimport {updateObject} from '../utilities';\r\n\r\nconst initialState = {\r\n versions:{fires:[], clc:[]},\r\n selectedVersion_fires: 1,\r\n selectedVersion_clc: 2,\r\n savedVersion_fires:1,\r\n savedVersion_clc:2,\r\n newVersionAnalysed: false,\r\n newVersionUploaded: false,\r\n changedVersion: false\r\n}\r\n\r\n\r\nconst getVersionsSuccess = (state,action) => {\r\n let versions = {fires:[], clc:[]};\r\n let nameAttach = \"fires\";\r\n let active = false;\r\n let selectedVersion_fires = 1;\r\n let selectedVersion_clc = 2;\r\n\r\n action.versions.forEach(version => {\r\n if (version.table === \"fires\") {\r\n nameAttach = \"fires\";\r\n if (version.active) selectedVersion_fires = version.id;\r\n\r\n } else if (version.table === \"clc\") {\r\n nameAttach = \"clc\";\r\n if (version.active) selectedVersion_clc = version.id;\r\n }\r\n\r\n if (version.active) active=true; else active=false;\r\n \r\n versions[nameAttach].push({value:version.id, label:version.version, active:active})\r\n });\r\n\r\n return updateObject(state, {\r\n versions:versions,\r\n selectedVersion_fires:selectedVersion_fires,\r\n selectedVersion_clc:selectedVersion_clc,\r\n savedVersion_fires: selectedVersion_fires,\r\n savedVersion_clc: selectedVersion_clc\r\n });\r\n}\r\n\r\nconst updateAdminSimpleVariable = (state,action) => {\r\n return updateObject(state, {[action.variableName]:action.newValue});\r\n}\r\n\r\nconst createVersionSuccess = (state,action) => {\r\n return updateObject(state, {newVersionAnalysed:true, newVersionUploaded:action.data});\r\n}\r\n\r\nconst clearVersion = (state) => {\r\n return updateObject(state, {newVersionAnalysed:false, newVersionUploaded:false});\r\n}\r\n\r\n\r\nconst reducer = ( state = initialState, action ) => {\r\n switch ( action.type ) {\r\n case actionTypes.GET_VERSIONS_SUCCESS: return getVersionsSuccess(state,action);\r\n case actionTypes.UPDATE_ADMIN_SIMPLE_VARIABLE: return updateAdminSimpleVariable(state,action);\r\n case actionTypes.CREATE_VERSION_SUCCESS: return createVersionSuccess(state,action);\r\n case actionTypes.CLEAR_VERSION: return clearVersion(state);\r\n default: return state;\r\n }\r\n};\r\n\r\nexport default reducer;","import * as actionTypes from '../actions/actionTypes';\r\nimport {updateObject} from '../utilities';\r\n\r\nconst initialState = {\r\n filesList: [],\r\n filesListProgress: [],\r\n uploadedItem:null,\r\n error: false\r\n};\r\n\r\nconst removeFileFromFileList = (state, action) => {\r\n let newFilesList = [...state.filesList];\r\n newFilesList.splice(action.index, 1);\r\n\r\n let newFilesListProgress = [...state.filesListProgress];\r\n newFilesListProgress.splice(action.index, 1);\r\n\r\n return updateObject(state, {filesList:newFilesList, filesListProgress:newFilesListProgress});\r\n}\r\n\r\nconst fileAddedToList = (state, action) => {\r\n let newFilesList = [];\r\n const files = action.event.target.files;\r\n \r\n for (var i = 0; i < files.length; i++) {\r\n newFilesList.push(files.item(i));\r\n }\r\n\r\n return updateObject(state, {filesList:newFilesList, filesListProgress:[0]});\r\n}\r\n\r\nconst uploadProgress = (state, action) => {\r\n let newfilesListProgress = [...state.filesListProgress];\r\n newfilesListProgress[action.fileIndex] = action.percentCompleted;\r\n\r\n return updateObject(state, {filesListProgress:newfilesListProgress});\r\n}\r\n\r\nconst clearFilesList = (state) => {\r\n return updateObject(state, {filesList: [], filesListProgress:[], uploadedItem:null});\r\n}\r\n\r\nconst uploadedFilesSuccess = (state,action) => {\r\n return updateObject(state, {error: false, uploadedItem:action.uploadedItem});\r\n}\r\n\r\nconst reducer = ( state = initialState, action ) => {\r\n switch ( action.type ) {\r\n case actionTypes.REMOVE_FILE_FROM_FILE_LIST: return removeFileFromFileList(state, action);\r\n case actionTypes.FILE_ADDED_TO_LIST: return fileAddedToList(state, action);\r\n case actionTypes.FILE_DROPED_TO_LIST: return updateObject(state, {filesList:action.fileList});\r\n case actionTypes.UPLOAD_PROGRESS: return uploadProgress(state, action);\r\n case actionTypes.UPLOAD_FILES_FAILED: return updateObject(state, {error: true});\r\n case actionTypes.CLEAR_FILES_LIST: return clearFilesList(state);\r\n case actionTypes.UPLOADED_FILES_SUCCESS: return uploadedFilesSuccess(state,action);\r\n default: return state;\r\n }\r\n};\r\n\r\nexport default reducer;","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { BrowserRouter } from 'react-router-dom';\nimport { Provider } from 'react-redux';\nimport { createStore, applyMiddleware, compose, combineReducers } from 'redux';\nimport thunk from 'redux-thunk';\n\nimport './index.css';\nimport App from './App';\n// import registerServiceWorker from './registerServiceWorker';\nimport * as serviceWorker from './serviceWorker';\nimport systemReducer from './store/reducers/system';\nimport layerItemsReducer from './store/reducers/layerItems';\nimport webgisReducer from './store/reducers/webgis';\nimport loginRegisterReducer from './store/reducers/loginRegister';\nimport alertsReducer from './store/reducers/alerts';\nimport statisticsReducer from './store/reducers/statistics';\nimport adminReducer from './store/reducers/admin';\nimport dropzoneReducer from './store/reducers/dropzone';\n\nconst composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;\n\nconst rootReducer = combineReducers({\n system: systemReducer,\n layerItems: layerItemsReducer,\n webgis: webgisReducer,\n loginRegister: loginRegisterReducer,\n alerts: alertsReducer,\n statistics: statisticsReducer,\n admin: adminReducer,\n dropzone: dropzoneReducer\n});\n\nconst store = createStore(rootReducer, composeEnhancers(\n applyMiddleware(thunk)\n));\n\nconst app = (\n \n \n \n \n \n);\n\nReactDOM.render( app, document.getElementById( 'root' ) );\nserviceWorker.register();","// extracted by mini-css-extract-plugin\nmodule.exports = {\"PopupPanel\":\"PopupPanel_PopupPanel__1_62M\",\"Show\":\"PopupPanel_Show__3Z4al\",\"Curtain\":\"PopupPanel_Curtain__2oZFQ\",\"Panel\":\"PopupPanel_Panel__3ohac\",\"CloseButtonWrapper\":\"PopupPanel_CloseButtonWrapper__21oMp\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Topbar\":\"Topbar_Topbar__2_ID0\",\"TopbarDesktop\":\"Topbar_TopbarDesktop__eTbl9\",\"TopbarInner\":\"Topbar_TopbarInner__1DnHG\",\"MenuButtons\":\"Topbar_MenuButtons__3RYWQ\",\"LoginRegisterButtons\":\"Topbar_LoginRegisterButtons___l2Hi\",\"SiteNameWrapper\":\"Topbar_SiteNameWrapper__5OqfT\",\"InfoButtonWrapper\":\"Topbar_InfoButtonWrapper__1giXz\",\"TopbarMobile\":\"Topbar_TopbarMobile__WzCPH\",\"LogoutMobile\":\"Topbar_LogoutMobile__RZCyS\",\"Show\":\"Topbar_Show__3DWL2\",\"MobileMenuBar\":\"Topbar_MobileMenuBar__3ORpB\",\"BannerWrapper\":\"Topbar_BannerWrapper__3_Z9J\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Root\":\"OpacitySlider_Root__1U4FG\",\"AdditionalMarks\":\"OpacitySlider_AdditionalMarks__2aPyN\",\"BaseValue\":\"OpacitySlider_BaseValue__3eDij\",\"UserValue\":\"OpacitySlider_UserValue__3mDI9\",\"UserValueTitle\":\"OpacitySlider_UserValueTitle__242nG\",\"UserInput\":\"OpacitySlider_UserInput__2FFnY\",\"Error\":\"OpacitySlider_Error__H63yg\",\"VariableInfo\":\"OpacitySlider_VariableInfo__2V74q\",\"Show\":\"OpacitySlider_Show__EqyQ8\",\"Track\":\"OpacitySlider_Track__jjS_4\",\"Mark\":\"OpacitySlider_Mark__1slS-\",\"MarkActive\":\"OpacitySlider_MarkActive__w6cTG\",\"MarkLabel\":\"OpacitySlider_MarkLabel__350AP\",\"Thumb\":\"OpacitySlider_Thumb__SSJUm\",\"ValueLabel\":\"OpacitySlider_ValueLabel__q3ZCo\",\"Rail\":\"OpacitySlider_Rail__2za-5\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Button\":\"DropzoneButton_Button__6PI_x\",\"Green\":\"DropzoneButton_Green__s_2pc\",\"Red\":\"DropzoneButton_Red__2nBBs\",\"Circle\":\"DropzoneButton_Circle__2JCAW\",\"Rectangle\":\"DropzoneButton_Rectangle__zNezf\",\"MaxSize\":\"DropzoneButton_MaxSize__2CkdF\",\"Large\":\"DropzoneButton_Large__1BwDI\",\"AlignRight\":\"DropzoneButton_AlignRight__3YpfL\",\"AlignCenter\":\"DropzoneButton_AlignCenter__KFPZY\",\"Hidden\":\"DropzoneButton_Hidden__2GO-o\",\"FontWhite\":\"DropzoneButton_FontWhite__1MAHr\",\"FontRegular\":\"DropzoneButton_FontRegular__3ZZFh\",\"backButton\":\"DropzoneButton_backButton__158Ng\"};"],"sourceRoot":""}