{"version":3,"sources":["translations/index.js","../node_modules/kepler.gl/dist/localization sync /^/.*$","translations sync /^/.*$","api/helpers/history.js","actions.js","cloud-providers/index.js","components/CustomKepler/CustomGeocoderPanel.js","components/CustomKepler/CustomKeplerGl.js","theme/colors.js","components/CustomKepler/CustomMapContainer.js","components/CustomKepler/common/icons/FunctionIcon.js","store/actions/errorsActions.js","components/FetchData/DatabasesList.js","components/FetchData/Modals/FilterModal/FilterQueryBuilder.config.js","components/Portions/Button.js","components/Utilities/Modal.js","components/Utilities/ModalContainer.js","components/FetchData/Modals/FilterModal/FilterModal.js","components/FetchData/Modals/QueryModal.js","components/Portions/Text.js","components/Portions/Loading.js","constants/default-settings.js","services/mainService.js","services/database.js","services/googleService.js","services/dataset.js","services/session.js","store/actions/viewActions.js","components/FetchData/FetchData.js","components/Portions/DropList.js","components/Portions/FormGroup.js","components/Portions/InputError.js","components/Portions/Label.js","components/FunctionData/Modals/DynamicFilters.js","components/FunctionData/Modals/WithQuery.js","components/Portions/Badge.js","components/Portions/Icon.js","components/FunctionData/DatasetsList.js","components/FunctionData/FunctionsList.js","components/FunctionData/Modals/DeleteFunction.js","components/Portions/Input.js","components/FunctionData/SelectDoubleCoordColumn.js","components/FunctionData/SelectSingleColumn.js","components/FunctionData/SelectSingleOption.js","components/FunctionData/FunctionData.js","components/CustomKepler/CustomSidePanel.js","components/CustomKepler/common/action-panel.js","store/actions/polygonActions.js","components/CustomKepler/editor/CustomFeatureActionPanel.js","components/CustomKepler/map/CustomMapDrawPanel.js","components/CustomKepler/map/CustomMapControl.js","components/CustomKepler/modals/CustomAddMapStyleModal.js","components/Portions/RadioButton.js","components/CustomKepler/filters/CustomMultiSelectFilter.js","components/CustomKepler/filters/filter-panels/CustomMultiSelectFilterPanel.js","components/CustomKepler/side-panel/filter-panel/CustomFilterPanel.js","components/CustomKepler/side-panel/CustomFilterManager.js","components/CustomKepler/side-panel/CustomLayerManager.js","components/CustomKepler/side-panel/CustomMapManager.js","components/CustomKepler/side-panel/CustomPanelHeader.js","components/images/BugReport.js","components/images/Check.js","components/images/CloseIcon.js","components/images/DeleteBin.js","components/images/DownloadCloud.js","components/images/ErrorX.js","components/images/ExportData.js","components/images/ExportImage.js","components/images/Gallery.js","components/images/Help.js","components/images/ManageDatabases.js","components/images/ManageOrganisations.js","components/images/SavedMaps.js","components/images/SaveMaps.js","components/images/SearchIcon.js","components/images/Share.js","components/images/StudioMap.js","components/images/UserIcon.js","components/helpers/OutsideAlerter.js","components/Portions/DropDown.js","components/Portions/ToolTip.js","components/Layout/ToolBar.js","components/Layout/toolbar-options.js","components/CustomKepler/side-panel/CustomSideBar.js","components/CustomKepler/side-panel/common/CustomSourceDataCatalog.js","components/Portions/CheckBox.js","components/Management/Database/DatabaseItem.js","components/Management/Database/Modals/ConnectivityErrorModal.js","components/Portions/Form.js","components/Portions/TextArea.js","components/Management/Database/Modals/CreateDatabaseModal.js","components/Management/Database/Modals/DeleteDatabaseModal.js","components/Management/Database/Modals/DeleteTableModal.js","components/Management/Database/Modals/RefrechDatabaseModal.js","components/Management/Database/Modals/RefrechTableModal.js","components/Management/Database/Modals/UpdateDatabaseModal.js","components/Management/Database/Modals/UpdateTableModal.js","components/Portions/Pagination.js","services/tables.js","components/Management/Database/ManageDatabases.js","components/Management/Organisation/Modals/CreateOrganizationModal.js","components/Portions/PasswordChecker.js","components/Management/Organisation/Modals/CreateUserModal.js","components/Management/Organisation/Modals/DeleteOrganisationModal.js","components/Management/Organisation/Modals/DeleteUserModal.js","components/Management/Organisation/Modals/UpdateOrganisationModal.js","components/Management/Organisation/Modals/UpdateUserModal.js","components/Management/Organisation/OrganisationItem.js","services/organisation.js","services/users.js","utils/passwordValidation.js","components/Management/Organisation/ManageOrganisations.js","components/Management/Sessions/Modals/DeleteSessionModal.js","components/Management/Sessions/Modals/shareUrlModal.js","components/Management/Sessions/SessionItem.js","components/Management/Sessions/ManageSessions.js","components/Modals/Agreement/Agreement.js","components/Modals/Export/ExportData.js","components/Modals/Export/ExportImage.js","components/Modals/ResetMap/ResetMap.js","components/Modals/SaveSession/SaveSession.js","components/Modals/Settings/ChangePasswordForm.js","services/user.js","store/actions/userActions.js","components/Modals/Settings/UserInfoForm.js","components/Modals/Settings/Settings.js","components/Modals/UserGuide/UserGuide.js","components/Modals/UserHelp/UserHelp.js","components/Modals/ModalManger.js","configs/map.js","constants/localization.js","store/hooks/useAppState.js","app.js","store/hooks/useVisStateKeplerState.js","components/Layout/ScreanContainer.js","services/authService.js","components/Auth/Login.js","services/userAuth.js","components/Utilities/ApplicationError.js","components/Utilities/ApplicationLoading.js","components/Utilities/ForbiddenError.js","components/Utilities/ServerError.js","pages/Gallery/Layout/Layout.js","pages/Gallery/components/Header/Header.js","pages/Gallery/components/Section/SectionHeader.js","pages/Gallery/components/Section/SectionSubHeader.js","pages/Gallery/components/RecentlyAdded/RecentlyAdded.js","pages/Gallery/components/MapCard/MapCard.js","pages/Gallery/components/Search/Search.js","pages/Gallery/Gallery.js","store/reducers/appReducer/errorsReducer.js","store/reducers/appReducer/userReducer.js","store/reducers/appReducer/viewReducer.js","store/reducers/appReducer/appReducer.js","store/reducers/appReducer/filterByPolygonReducer.js","store/reducers/keplerReducer/keplerReducer.js","store/index.js","index.js","translations/ca.js","translations/cn.js","translations/es.js","translations/fi.js","translations/fr.js","translations/ja.js","translations/pt.js","translations/ru.js","translations/locales.js"],"names":["enFlat","flattenMessages","en","messages","Object","keys","LOCALE_CODES","reduce","acc","key","require","default","map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","resolve","module","exports","history","createBrowserHistory","onExportFileSuccess","response","provider","options","dispatch","isPublic","getShareUrl","push","getMapUrl","onLoadCloudMapSuccess","loadParams","mapUrl","CLOUD_PROVIDERS","ICON_LAYER","GEOCODER_LAYER_ID","type","config","label","color","GEOCODER_ICON_COLOR","dataId","GEOCODER_DATASET_NAME","columns","lat","lng","icon","isVisible","hidden","visConfig","radius","GEOCODER_ICON_SIZE","PARSED_CONFIG","KeplerGlSchema","parseSavedConfig","version","visState","layers","StyledGeocoderPanel","styled","div","props","theme","geocoderTop","geocoderRight","width","boxShadow","generateGeocoderDataset","lon","text","data","Processors","processRowObject","lt","ln","info","CustomGeocoderPanelFactory","GeocoderPanel","onSelected","geoItem","center","bbox","removeGeocoderDataset","updateVisData","keepExistingConfig","bounds","GEOCODER_GEO_OFFSET","centerAndZoom","getCenterAndZoomFromBounds","mapState","height","updateMap","latitude","longitude","Number","isFinite","zoom","pitch","bearing","transitionDuration","transitionInterpolator","FlyToInterpolator","removeMarker","this","removeDataset","mapboxApiAccessToken","publicUser","className","test","onDeleteMarker","Component","defaultProps","connect","state","app","user","GlobalStyle","fontFamily","fontWeight","fontSize","lineHeight","labelColor","BottomWidgetOuter","absolute","mapFieldsSelector","getMapboxRef","mapboxApiUrl","mapStyle","onDeckInitialized","onViewStateChange","deckGlProps","uiStateActions","visStateActions","mapStateActions","editor","datasets","layerOrder","layerData","layerBlending","filters","interactionConfig","hoverInfo","clicked","mousePos","animationConfig","activeSidePanel","uiState","mapControls","locale","DEFAULT_KEPLER_GL_PROPS","mapStyles","mapStylesReplaceDefault","DEFAULT_MAPBOX_API_URL","appName","KEPLER_GL_NAME","KEPLER_GL_VERSION","sidePanelWidth","DIMENSIONS","sidePanel","cloudProviders","readOnly","CustomKeplerGlFactory","BottomWidget","GeoCoderPanel","MapContainer","MapsLayout","ModalContainer","SidePanel","PlotContainer","NotificationPanel","KeplerGL","dimensions","handleResize","setState","root","createRef","bottomWidgetRef","themeSelector","availableThemeSelector","createSelector","basicTheme","THEME","light","themeLT","base","themeBS","availableProviders","providers","Array","isArray","length","hasStorage","some","p","hasPrivateStorage","hasShare","hasSharingUrl","localeMessagesSelector","localeMessages","customMessages","mergeMessages","loadMapStyle","defaultStyles","values","customStyles","ms","generateHashId","allStyles","style","toLoad","toRequest","mapStyleActions","loadMapStyles","requestMapStyles","validateMapboxToken","onKeplerGlInitialized","current","HTMLElement","observeDimensions","unobserveDimensions","validateToken","Console","warn","MISSING_MAPBOX_TOKEN","splitMaps","isSplit","isExportingImage","exportImage","exporting","mapFields","sideFields","appWebsite","onSaveMap","layerClasses","mapInfo","mapSaved","providerState","sidePanelSelector","plotContainerFields","exportImageSetting","addNotification","setExportImageSetting","setExportImageDataUri","setExportImageError","plotContainerSelector","bottomWidgetFields","toggleModal","margin","left","bottomWidgetSelector","modalContainerFields","rootNode","providerActions","onExportToCloudSuccess","onLoadCloudMapError","onExportToCloudError","modalContainerSelector","geoCoderPanelFields","isGeocoderEnabled","geocoder","enabled","geoCoderPanelSelector","notificationPanelFields","removeNotification","notifications","notificationPanelSelector","mapContainers","settings","index","primary","mapLayers","Provider","value","display","flexDirection","position","ref","containerW","containerH","contextType","RootContext","keplerGlConnect","mapStateToProps","makeMapDispatchToProps","withTheme","React","memo","deps","KeplerGlFactory","defaultUserActions","getDispatch","getUserActions","actions","makeGetActionCreators","userActions","VisStateActions","MapStateActions","MapStyleActions","UIStateActions","ProviderActions","bindActionCreators","overrides","hasOwnProperty","mergeActions","getActionCreators","ownProps","groupedActionCreators","mainDarkestBlue","StyledAttrbution","attrs","MAP_STYLE","container","top","pointerEvents","MAPBOXGL_STYLE_UPDATE","MAPBOXGL_RENDER","Attribution","href","target","rel","CustomMapContainerFactory","MapPopover","MapControl","Editor","_handleResize","layersSelector","layerDataSelector","mapLayersSelector","layerOrderSelector","layersToRenderSelector","prepareLayersToRender","layersForDeckSelector","prepareLayersForDeck","filtersSelector","polygonFilters","filter","f","FILTER_TYPES","polygon","mapboxLayersSelector","generateMapboxLayers","_onCloseMapPopover","onLayerClick","_onLayerSetDomain","idx","colorDomain","layerConfigChange","_handleMapToggleLayer","layerId","toggleLayerForMap","layer","find","x","_onMapboxStyleUpdate","previousLayers","_updateMapboxLayers","onMapStyleLoaded","_map","_setMapboxMap","mapbox","getMap","on","onMapRender","_onBeforeRender","gl","setLayerBlending","_onDeckError","error","errorMessage","message","notificationId","_deckGLErrorsElapsed","lastShown","Date","now","THROTTLE_NOTIFICATION_TIME","errorNotification","_onViewportChange","viewState","restViewState","next","_toggleMapControl","panelId","toggleMapControl","_deck","_ref","off","layersToRender","mousePosition","coordinate","pinned","tooltip","layerHoverProp","getLayerHoverProp","compareMode","pinnedPosition","layerPinnedProp","viewport","WebMercatorViewport","lngLat","_getHoverXY","primaryData","compareType","commonProp","onClose","canvas","undefined","frozen","isBase","y","screenCoord","project","layersForDeck","deckGlLayers","dataLayers","slice","reverse","overlays","layerCallbacks","onSetLayerDomain","val","layerOverlay","renderDeckGlLayer","concat","visibleLayerGroups","ThreeDBuildingLayer","threeDBuildingColor","updateTriggers","getFillColor","onBeforeRender","onHover","onLayerHover","onClick","onError","comp","deck","onWebGLInitialized","_onDeckInitialized","mapboxLayers","updateMapboxLayers","isStyleLoaded","MapComponent","isExport","mapProps","preserveDrawingBuffer","onViewportChange","transformRequest","isEdit","mapDraw","active","hasGeocoderLayer","l","Boolean","availableLocales","dragRotate","mapIndex","scale","onTogglePerspective","togglePerspective","onToggleSplitMap","toggleSplitMap","onMapToggleLayer","onToggleMapControl","onSetEditorMode","setEditorMode","onSetLocale","setLocale","onToggleEditorVisibility","toggleEditorVisibility","bottomMapStyle","getCursor","onMouseMove","_renderDeckOverlay","_renderMapboxOverlays","isEnabled","onDeleteFeature","deleteFeature","onSelect","setSelectedFeature","onUpdate","setFeatures","onTogglePolygonFilter","setPolygonFilterLayer","visible","topMapStyle","_renderMapPopover","globe","_renderMap","MapboxGLMap","displayName","MapContainerFactory","FunctionIcon","viewBox","fill","d","stroke","strokeLinecap","strokeLinejoin","strokeWidth","setErrorHandler","payload","showMessage","DatabasesList","toggleList","opened","handleClickOutside","listRef","contains","selectedDatabase","selectedTable","items","document","addEventListener","removeEventListener","title","name","points","smoothScrolling","item","tables","status","table","selectTable","getDerivedStateFromProps","JSON","stringify","commonOptionsForOperators","cardinality","isNotOp","commonOperatorsForDateAndDateTime","operators","BasicConfig","between","valueLabels","textSeparators","today","labelForFormat","days","weeks","months","quarters","years","day","week","month","quarter","year","yesterday","pastWeek","pastMonth","pastYear","widgets","textarea","maxRows","slider","rangeslider","date","dateFormat","valueFormat","time","timeFormat","datetime","func","customProps","showSearch","select","customDate","number","types","defaultOperator","customThisDate","conjunctions","AND","OR","showNot","Button","disable","loading","disabled","action","single","secondary","src","alt","loadingText","children","nextProps","prevState","Modal","small","medium","padding","disableSaveButton","handler","cancel","start","description","close","x1","y1","x2","y2","operatorMapping","equal","not_equal","greater","greater_or_equal","less","less_or_equal","not_between","is_empty","is_not_empty","typesMapping","boolean","decimal","float","int","numeric","str","timestamp","fieldSettings","min","subfields","Default","Past","defaultValue","valueSources","initialEmptyWhere","This","Next","widgetProps","labelYes","labelNo","FilterModal","componentDidMount","MapLabFiltersConfig","fields","includes","forEach","column","jsonTree","tree","QbUtils","checkTree","loadTree","uuid","renderBuilder","onChange","immutableTree","getTree","rulesToFilters","filterOperator","operator","field","console","log","col_name","symbol","CURRENT_TS","actualValue","rules","children1","flatMap","r","properties","innerRule","conjunction","QueryModal","setSqlQuery","query","save","getQuery","modalLoading","isShowHeader","enableBasicAutocompletion","debounceChangePeriod","validatorConfig","maxSqlNum","Text","Loading","bigWidth","SETTINGS","process","baseURL","mainService","axios","create","headers","Authorization","localStorage","getItem","Accept","interceptors","request","use","databaseRecords","parameters","order","join","get","getTime","then","res","catch","Promise","reject","databaseRecord","databaseList","gogleService","datasetUpload","token","filename","geoJson","url","strGeoJson","blob","Blob","googleService","put","datasetDownload","datasetFunction","post","sessionRecords","sessionImage","setMapCode","addDataset","dataset","addFunction","fn","setDatabses","databses","setSession","session","controlLoading","FetchData","getSession","sessionRetrive","respond","meta","sameOrganization","getItems","controlSideBar","setMapInfo","setDynamic","runQuery","runFunction","getFile","file","filterConjunction","database","toggleQueryModal","queryModal","toggleFilterModal","filterModal","draw","init","a","queryType","pages","page","dataType","raw","sid","drawData","fetchData","processData","processGeojson","features","processCsvData","fixLngValue","getBbox","mapGetBounds","mapRef","getBounds","min_lat","parseFloat","getSouthWest","toFixed","max_lat","getNorthEast","min_lon","max_lon","createDatasetObject","savedDataset","multi","allData","rows","_request","dataObject","centerMap","sendDataToMap","dataObjects","schemaData","load","runDynamic","getDynamic","bboxs","fullData","errors","messageType","files","fetchFilesData","setQuery","runQrunQuery","selectedDatasetError","selectedFunctionError","selectedColumnError","function","stringGen","respondDrror","possible","i","charAt","Math","floor","random","saveFilters","resetMap","resetMapConfig","deleteAllFunction","getDatasetToSave","keplerInstance","clearDataset","clearSession","currentInstance","setResetMap","rx","databases","view","keplerGl","MapLab","wrapTo","addDataToMap","DropList","handleChange","placeholder","onBlur","FormGroup","horizontal","InputError","Label","htmlFor","DynamicFilters","findColumns","handelChange","getFiltersData","toggleDynamicFilters","vertical","WithQuery","getQueryData","toggleWithQuery","Badge","Icon","badge","DatasetsList","withQuery","activeFunction","dynamicFilters","selectedDataset","maxHeight","selectDataset","cx","cy","ry","FunctionsList","selectedFunction","selectFunction","beta","DeleteFunction","Input","autoComplete","onKeyDown","SelectDoubleCoordColumn","handleSearchChange","toggleMenu","columnUuid","hexToRGB","hex","alpha","match","parseInt","g","b","string","integer","geometry","execute","columnName","getColumns","selectForColumn","activeFunctionUuid","functionkey","executeIndex","background","borderColor","borderWidth","removeExecute","SelectSingleColumn","forColumn","SelectSingleOption","columnFunction","getColumnOptions","selectForColumnOption","FunctionData","updateColumns","updateFunction","resolutionHelp","turf","area","kFormatter","num","abs","sign","findDataSet","findDatabase","driver","createFunction","uuidv4","runing","s","functionType","helpText","helpFunction","forGroup","executes","minimum","functionUuid","columnType","addExecute","selectForOption","option","z","typeOptions","toggleDeleteActiveFunction","deleteFunction","selected","deleteActiveFunction","fixLatValue","runActiveFunction","requird","withFunction","allowNone","savedDatasets","carto","replace","polygonToCellsLoading","functions","drivers","pickup","resolution","max","helpIndex","dropoff","groupBy","aggregateBy","borderLeft","columnIndex","StyledSidePanelContent","sidePanelScrollBar","sidePanelInnerPadding","CustomSidePanelFactory","Sidebar","PanelHeader","PanelToggle","PanelTitle","LayerManager","FilterManager","InteractionManager","MapManager","CustomPanels","SIDEBAR_COMPONENTS","interaction","fullPanels","SIDEBAR_PANELS","component","getCustomPanelProps","panels","openDeleteModal","toggleSidePanel","showDatasetTable","updateTableColor","useState","customPanels","onClickExportImage","useCallback","EXPORT_IMAGE_ID","onClickExportData","EXPORT_DATA_ID","onClickExportMap","EXPORT_MAP_ID","onClickSaveToStorage","OVERWRITE_MAP_ID","SAVE_MAP_ID","onClickSaveAsToStorage","onClickShareMap","SHARE_MAP_ID","onShowDatasetTable","onUpdateTableColor","newColor","onShowAddDataModal","ADD_DATA_ID","onShowAddMapStyleModal","ADD_MAP_STYLE_ID","onRemoveDataset","onToggleSidePanel","onSaveToStorage","useMemo","onSaveAsToStorage","newPanels","iconComponent","currentPanel","onShareMap","customPanelProps","PanelComponent","minifiedWidth","visibleDropdown","showExportDropdown","hideExportDropdown","onExportImage","onExportData","onExportMap","activePanel","togglePanel","showAddDataModal","showAddMapStyleModal","sidebarComponents","SidePanelFactory","StyledItem","actionPanelHeight","dropdownListBgd","actionPanelWidth","textColorHl","textColor","StyledCheckedbox","Checkbox","renderChildren","child","cloneElement","isValidElement","classnames","ActionPanelItem","isSelection","isActive","onClickCallback","event","preventDefault","stopPropagation","checked","Children","StyledActionPanel","direction","dropdownListShadow","transitionSlow","panelHeaderIcon","ActionPanel","filterByPolygon","StyledActionsLayer","CustomFeatureActionPanel","FeatureActionPanel","onFilterByPolygon","selectedFeature","datasetId","currentFilter","onToggleLayer","zIndex","filLayer","Icons","Layers","Trash","SquareSelect","polygons","FeatureActionPanelFactory","MaplabToolbarItem","ToolbarItem","CustomMapDrawPanelFactory","MapControlTooltip","MapControlPanel","MapControlToolbar","defaultActionIcons","EyeSeen","EyeUnseen","DrawPolygon","cursor","CursorClick","innerPolygon","Polygon","rectangle","Rectangle","MapDrawPanel","actionIcons","onToggleMenuPanel","show","EDITOR_MODES","EDIT","mode","DRAW_POLYGON","DRAW_RECTANGLE","MapDrawPanelFactory","StyledMapControl","mapControl","place","effect","StyledProjectPanel","panelBackground","panelBoxShadow","titleTextColor","SampleMapPanel","setActive","dispach","useDispatch","showSavedMap","LayerSelectorPanel","visibleLayers","disableClose","legendLayers","CustomMapControlPanel","header","MapControlPanelFactory","mapControlDeps","MapControlFactory","CustomMapControlFactory","Toggle3dButton","SplitMapButton","MapLegendPanel","DEFAULT_ACTIONS","actionComponents","ActionComponent","logoComponent","ErrorMsg","PreviewMap","errorColor","media","portable","palm","StyledPreviewImage","modalImagePlaceHolder","InlineLink","CustomAddMapStyleModalFactory","AddMapStyleModal","reRenderKey","previousToken","loadMapStyleJson","loadCustomMapStyle","loadMapStyleError","getStyle","inputStyle","intl","accessToken","formatMessage","inputMapStyle","isValid","el","injectIntl","polyfill","RadioButton","classes","dark","svgClasses","smallSize","alingCenter","styles","PanelLabel","CustomMultiSelectFilterFactory","initFilter","setFilter","setReverse","resetSelection","setChecked","useEffect","reverseValue","handleReverse","handleAll","domain","resVal","marginLeft","selectedItems","MultiSelectFilterFactory","CustomMultiSelectFilterPanelFactory","FieldPanelWithFieldSelect","MultiSelectFilter","MultiSelectFilterPanel","allAvailableFields","isAnyFilterAnimating","enlargeFilter","removeFilter","toggleAnimation","onInitializeFilter","oppositeValues","itm","onSetReverse","normalValue","enlarged","FieldPanelWithFieldSelectFactory","StyledFilterPanel","CustomFilterPanelFactory","NewFilterPanel","TimeRangeFilterPanel","SingleSelectFilterPanel","RangeFilterPanel","PolygonFilterPanel","FilterPanelComponents","timeRange","multiSelect","range","nameSelector","dataIdSelector","filterSelector","fieldsSelector","availableFieldsSelector","ALL_FIELD_TYPES","geojson","FilterFilterComponent","FilterPanelFactory","CustomFilterManagerFactory","SourceDataCatalog","FilterPanel","addFilter","toggleFilterFeature","isAnimating","hadEmptyFilter","hadDataset","reversedIndex","onClickAddFilter","defaultDataset","setTimeout","backgroundColor","inactive","FilterManagerFactory","ResetButton","LayerBlendingSelector","updateLayerBlending","labeledLayerBlendings","LAYER_BLENDINGS","blending","searchable","SortableStyledItem","dropdownWrapperZ","panelBackgroundHover","CustomLayerManagerFactory","AddDataButton","LayerPanel","SortableItem","SortableElement","isSorting","sorting","WrappedSortableContainer","SortableContainer","layerClassSelector","layerTypeOptionsSelector","layerIcon","requireData","_addEmptyNewLayer","addLayer","_handleSort","oldIndex","newIndex","reorderLayer","arrayMove","_onSortStart","_updateBeforeSortStart","layerIdx","isConfigActive","openModal","layerTypeOptions","layerActions","layerColorUIChange","layerVisualChannelConfigChange","layerTypeChange","layerVisConfigChange","layerTextLabelChange","removeLayer","duplicateLayer","panelProps","showDeleteDataset","isInactive","onSortEnd","onSortStart","updateBeforeSortStart","lockAxis","helperClass","useDragHandle","sortData","sideBar","LayerManagerFactory","CustomMapManagerFactory","MapStyleSelector","LayerGroupSelector","isSelecting","buildingColorSelector","setColorSelector","set3dBuildingColor","_toggleSelecting","_selectStyle","mapStyleChange","editableLayers","styleType","layerGroups","lg","slug","hasBuildingLayer","colorSets","selectedColor","setColor","isRange","colorSetSelector","toggleActive","topLayers","topLayerGroups","mapConfigChange","MapManagerFactory","StyledPanelHeader","sidePanelHeaderBg","CustomPanelHeaderFactory","SaveExportDropdown","CloudStorageDropdown","ModalDialog","closeUserInfoModal","setItem","PanelHeaderFactory","ModalDialogFactory","BugReport","Check","normalSize","svgActiveClasses","size","CloseIcon","xmlns","DeleteBin","DownloadCloud","ErrorX","ExportData","ExportImage","Gallery","transform","Help","ManageDatabases","ManageOrganisations","SavedMaps","SaveMaps","SearchIcon","Share","StudioMap","UserIcon","OutsideAlerter","wrapperRef","setWrapperRef","bind","clickOutside","node","DropDown","toggleDropDown","toggle","hideOnClickInside","hideAfterClick","toArray","ToolTip","renderPosition","big","ToolBar","logout","clear","window","location","pathname","onOpenOrClose","isOpen","SvgIcon","link","open","origin","withRouter","mapOptions","galleryOptions","StyledSidePanelContainer","SideBarContainer","SideBarInner","sidePanelBg","sidePanelBorder","sidePanelBorderColor","CustomSidebarFactory","CollapseButton","SideBar","isFunction","onOpenOrCloseFunction","horizontalOffset","paddingBottom","CollapseButtonFactory","SourceDataCatalogWrapper","transition","CustomSourceDataCatalogFactory","DatasetTitle","DatasetInfo","onTitleClick","ds","SourceDataCatalogFactory","CheckBox","DatabaseItem","toggleHandler","handleChecked","checkingDatabase","connectivity","private","schema","updated_at","service","checkDatabase","handelTableStatusChange","ConnectivityErrorModal","Form","onSubmit","TextArea","json","parse","CreateDatabaseModal","updateInputs","port","toggleAgreePolicy","agreePolicy","tab","inputs","username","password","host","Details","details","DeleteDatabaseModal","DeleteTableModal","RefrechDatabaseModal","RefrechTableModal","UpdateDatabaseModal","UpdateTableModal","checkErrors","total","geometryTypes","geometry_type","feature_type","checkAllErrors","onCheckUpdate","none","Lat","Lon","startLat","startLon","endLat","endLon","wkb","wkt","featureTypes","Pagination","renderPages","elements","from","to","changepage","count","tablesRefresh","tableRecord","ceil","modal","modalState","deleteDatabase","delete","deleteDatabaseModal","refreshDatabase","databaseRefresh","array","refreshTable","refreshDatabaseModal","temp","element","refresh","refreshTableModal","tableStatus","updateDatabase","createDatabase","callback","cancelCallback","databaseCheck","updateTableColumn","patch","tableColumnUpdate","deleteTable","deleteTableModal","connectivityErrorModal","createDatabaseModal","updateDatabaseModal","updateTableModal","refreshItems","CreateOrganizationModal","max_users","max_maps","expired_date","PasswordChecker","checker","CreateUserModal","setTypes","first_name","last_name","email","marginRight","lowerCase","upperCase","symbole","DeleteOrganisationModal","DeleteUserModal","UpdateOrganisationModal","UpdateUserModal","OrganisationItem","users","organization_id","locked","userIndex","handelUserStatusChange","organizationRecords","organizationRecord","userRecord","passwordValidation","hasUpperCase","hasLowerCase","hasNumber","hasSymbole","conditions","pass","condition","restResponse","updateUserModal","createOrganization","deleteOrganization","deleteOrganisationModal","updateOrganization","createUser","deleteUser","deleteUserModal","userStatus","updateUser","updateOrganisationModal","createOrganizationModal","createUserModal","marginTop","DeleteSessionModal","ShareUrlModal","copyText","textArea","createElement","body","appendChild","focus","execCommand","removeChild","public","SessionItem","openSession","reload","browserHistory","imageLoading","image","ReactTooltip","rebuild","created_at","ManageSessions","getImage","deleteSession","deleteSessionModal","addOrder","orderQuery","renderOrder","search","mySearch","selectMySearch","shareUrlModal","refreshSessionModal","justifyContent","gap","marginBlock","Agreement","onSelectDataset","applyCPUFilter","onChangeExportSelectedDataset","isMSEdge","navigator","msSaveOrOpenBlob","downloadFile","fileBlob","fileName","URL","createObjectURL","setAttribute","click","revokeObjectURL","exportData","filtered","selectedDatasets","selectedData","dataContainer","filteredIdxCPU","toExport","createIndexedDataContainer","csv","formatCsv","appState","toCPUFilter","onChangeExportDataType","onChangeExportFiltered","toLowerCase","onUpdateImageSetting","cleanupExportImage","setExportFiltered","setExportSelectedDataset","setExportDataType","imageDataUri","download","remove","screens","ratio","mapH","mapW","legend","CUSTOM","screen","ONE_X","TWO_X","onUpdateImageInit","showDimension","processing","ResetMap","restMap","SaveSession","getTokens","protocol","all","spread","tokenResponses","uploadFiles","tokenResponse","createRawDataset","uploadResponses","mediaLink","saveDatasets","uploadErrors","tokenErrors","overwrite","datasetResponses","datasetResponse","saveMapSession","dataseterrors","founded","visFilter","handleOverwriteMap","handelDataChange","dynamicDatasets","staticDatasets","getConfigToSave","MAP_THUMBNAIL_DIMENSION","mapLegend","updateDataset","ChangePasswordForm","passwordsNotSame","confirmPassword","new_password","old_password","setUser","UserInfoForm","Settings","changePassword","userInfo","UserGuide","activeStep","back","variant","UserHelp","ModalManger","manageDataBase","manageOrganisations","manageSessions","saveSession","userGuide","agreement","help","setToggleModal","userHelp","mapboxStyle","pt","fr","useAppState","selectFn","useSelector","KeplerGl","injectComponents","AddMapStyleModalFactory","SidebarFactory","GeocoderPanelFactory","keplerGlGetState","KeplerGlWrapper","setMapRef","setMapCodeAction","setUserAction","setPublicUserAction","selectorFn","viewerMode","timeRangeEnabled","setTimeRangeEnabled","visStateFilters","maplab","params","path","indexOf","finded","fil","overflow","getState","ScreanContainer","authService","Login","handelchange","login","lang","ApplicationError","applicationError","ApplicationLoading","applicationLoading","ForbiddenError","ServerError","serverError","ToolBarWrapper","LayoutWrapper","GalleryWrapper","Layout","HeaderWrapper","Header","SectionHeaderH3","h3","SectionHeader","SectionSubHeaderH3","SectionSubHeader","RecentlyAdded","toDateString","MapCard","setShareUrlModal","setModalLoading","RedirectToMaps","SearchWrapper","Search","onSearchChange","showDeleteButton","GalleryContainer","setItems","recentlyAdded","setRecentlyAdded","setPage","setPages","setTotal","setCount","setLoading","setSearch","inputSearch","limit","isUndefined","latestAddition","prevItems","newItems","debounceHandleSearch","debounce","onFetch","newPage","newState","initialState","AppReducer","combineReducers","toast","success","filterByPolygonReducer","newDatasets","constructor","polygonFilter","otherFilters","pair","fieldPairs","lonIndex","fieldIdx","latIndex","result","_rows","row","booleanPointInPolygon","point","parser","moment","unix","indexes","datasetInnerId","datasetInnerLabel","assign","cloneDeep","metadata","allIndexes","filteredIndex","filteredIndexForDomain","isFilteredByPolygon","hiddenDatasets","restoreDatasets","DEFAULT_EXPORT_MAP","uiStateUpdaters","KeplerReducer","keplerGlReducer","toggle3d","splitMap","mapLocale","currentModal","exportMap","EXPORT_MAP_FORMATS","HTML","exportMapboxAccessToken","loaders","loadOptions","road","border","building","water","land","plugin","HIDE_AND_SHOW_SIDE_PANEL","chainedKeplerReducer","reduceReducers","reducers","routing","routerReducer","middlewares","enhanceReduxMiddleware","thunk","routerMiddleware","enhancers","applyMiddleware","composeEnhancers","compose","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","actionsBlacklist","createStore","Root","store","autoClose","exact","App","render","getElementById","property","weight","fillColor","coverage","strokeColor","outline","density","sum","pointCount","selectField","yAxis","selectType","selectValue","enterValue","empty","misc","by","valuesIn","valueEquals","dataSource","brushRadius","panel","labelWithId","fontColor","textAnchor","alignment","addMoreLabel","sidebar","basemap","required","propertyBasedOn","basic","trailLength","trailLengthDescription","newLayer","elevationByDescription","colorByDescription","arc","line","grid","hexbin","cluster","heatmap","hexagon","hexagonid","trip","s2","layerVisConfigs","angle","strokeWidthRange","fixedRadius","fixedRadiusDescription","radiusRange","clusterRadius","radiusRangePixels","opacity","colorRange","strokeColorRange","targetColor","colorAggregation","heightAggregation","resolutionRange","sizeScale","worldUnitSize","elevationScale","enableElevationZoomFactor","enableElevationZoomFactorDescription","enableHeightZoomFactor","heightScale","coverageRange","highPrecisionRendering","highPrecisionRenderingDescription","heightDescription","enablePolygonHeight","showWireframe","weightIntensity","zoomScale","heightRange","heightMultiplier","layerManager","addData","mapManager","addMapStyle","layerConfiguration","defaultDescription","howTo","filterManager","datasetTitle","showDataTable","datasetInfo","rowCount","hideLayer","showLayer","hideFeature","showFeature","hide","layerSettings","closePanel","switchToDualView","showLegend","disable3DMap","DrawOnMap","selectLocale","hideLayerPanel","showLayerPanel","moveToTop","selectBaseMapStyle","timePlayback","cloudStorage","animationByWindow","animationByIncremental","speed","play","pause","reset","toolbar","shareMapURL","saveMap","LOCALES","deleteDataset","addCustomMapboxStyle","shareURL","button","export","addStyle","defaultCancel","defaultConfirm","ratioTitle","ratioDescription","ratioOriginalScreen","ratioCustom","ratio4_3","ratio16_9","resolutionTitle","resolutionDescription","mapLegendTitle","mapLegendAdd","datasetSubtitle","allDatasets","dataTypeTitle","dataTypeSubtitle","filterDataTitle","filterDataSubtitle","filteredData","unfilteredData","fileCount","deleteData","warning","publishTitle","publishSubtitle1","publishSubtitle2","publishSubtitle3","publishSubtitle4","publishSubtitle5","publishSubtitle6","publishSubtitle7","exampleToken","pasteTitle","pasteSubtitle1","pasteSubtitle2","namingTitle","shareMap","shareUriTitle","shareUriSubtitle","cloudTitle","cloudSubtitle","shareDisclaimer","gotoPage","statusPanel","mapUploading","subtitle","formatTitle","formatSubtitle","html","selection","tokenTitle","tokenSubtitle","tokenPlaceholder","tokenMisuseWarning","tokenDisclaimer","tokenUpdate","modeTitle","modeSubtitle1","modeSubtitle2","modeDescription","read","edit","configTitle","configDisclaimer","disclaimer","loadingDialog","loadData","upload","storage","tripInfo","description1","description2","example","iconInfo","icons","storageMapViewer","lastModified","overwriteMap","alreadyExists","loadStorageMap","goToPage","storageMaps","noSavedMaps","layerLegend","interactions","brush","additive","normal","subtractive","altitude","lat0","lng0","lat1","lng1","alt0","alt1","hex_id","customPalette","steps","reversed","colorScale","strokeScale","fileUploader","chromeMessage","configUploadMessage","browseFiles","uploading","fileNotSupported","or","fieldSelector","clearAll","formatting","compare","modeLabel","typeLabel","relative","mapPopover","Save","filterLayer","copyGeometry","pasteSubtitle0","pasteSubtitle3","pasteSubtitle4","fi","sv","es","ja","cn","ru"],"mappings":"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","file":"static/js/main.85131944.chunk.js","sourcesContent":["/* eslint-disable global-require */\r\n/* eslint-disable import/no-dynamic-require */\r\nimport en from 'kepler.gl/dist/localization/en'\r\nimport { flattenMessages } from 'kepler.gl/dist/utils/locale-utils'\r\nimport { LOCALE_CODES } from 'translations/locales'\r\n\r\nconst enFlat = flattenMessages(en)\r\n\r\nexport const messages = Object.keys(LOCALE_CODES).reduce(\r\n (acc, key) => ({\r\n ...acc,\r\n [key]: key === 'en' ? enFlat : { ...enFlat, ...flattenMessages(require(`./${key}`).default) },\r\n }),\r\n {},\r\n)\r\n\r\nexport { default as FormattedMessage } from 'kepler.gl/dist/localization/formatted-message'\r\nexport { LOCALES, LOCALE_CODES } from 'translations/locales'\r\n","var map = {\n\t\"./\": 50,\n\t\"./ca\": 694,\n\t\"./ca.js\": 694,\n\t\"./cn\": 695,\n\t\"./cn.js\": 695,\n\t\"./en\": 369,\n\t\"./en.js\": 369,\n\t\"./es\": 696,\n\t\"./es.js\": 696,\n\t\"./fi\": 697,\n\t\"./fi.js\": 697,\n\t\"./formatted-message\": 350,\n\t\"./formatted-message.js\": 350,\n\t\"./index\": 50,\n\t\"./index.js\": 50,\n\t\"./ja\": 698,\n\t\"./ja.js\": 698,\n\t\"./locales\": 147,\n\t\"./locales.js\": 147,\n\t\"./pt\": 699,\n\t\"./pt.js\": 699,\n\t\"./ru\": 700,\n\t\"./ru.js\": 700\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 1110;","var map = {\n\t\"./\": 111,\n\t\"./ca\": 878,\n\t\"./ca.js\": 878,\n\t\"./cn\": 879,\n\t\"./cn.js\": 879,\n\t\"./es\": 880,\n\t\"./es.js\": 880,\n\t\"./fi\": 881,\n\t\"./fi.js\": 881,\n\t\"./fr\": 882,\n\t\"./fr.js\": 882,\n\t\"./index\": 111,\n\t\"./index.js\": 111,\n\t\"./ja\": 883,\n\t\"./ja.js\": 883,\n\t\"./locales\": 98,\n\t\"./locales.js\": 98,\n\t\"./pt\": 884,\n\t\"./pt.js\": 884,\n\t\"./ru\": 885,\n\t\"./ru.js\": 885\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 1407;","import { createBrowserHistory } from 'history'\r\n\r\nexport const history = createBrowserHistory()\r\n","// Copyright (c) 2021 Uber Technologies, Inc.\r\n//\r\n// Permission is hereby granted, free of charge, to any person obtaining a copy\r\n// of this software and associated documentation files (the \"Software\"), to deal\r\n// in the Software without restriction, including without limitation the rights\r\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n// copies of the Software, and to permit persons to whom the Software is\r\n// furnished to do so, subject to the following conditions:\r\n//\r\n// The above copyright notice and this permission notice shall be included in\r\n// all copies or substantial portions of the Software.\r\n//\r\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n// THE SOFTWARE.\r\n\r\nimport { push } from 'react-router-redux'\r\n\r\n// CONSTANTS\r\nexport const INIT = 'INIT'\r\n\r\n// ACTIONS\r\nexport function initApp() {\r\n return {\r\n type: INIT,\r\n }\r\n}\r\n\r\n/**\r\n * Actions passed to kepler.gl, called\r\n *\r\n * Note: exportFile is called on both saving and sharing\r\n *\r\n * @param {*} param0\r\n */\r\nexport function onExportFileSuccess({ response = {}, provider, options }) {\r\n return (dispatch) => {\r\n // if isPublic is true, use share Url\r\n if (options.isPublic && provider.getShareUrl) {\r\n dispatch(push(provider.getShareUrl(false)))\r\n } else if (!options.isPublic && provider.getMapUrl) {\r\n // if save private map to storage, use map url\r\n dispatch(push(provider.getMapUrl(false)))\r\n }\r\n }\r\n}\r\n\r\nexport function onLoadCloudMapSuccess({ response, provider, loadParams }) {\r\n return (dispatch) => {\r\n if (provider.getMapUrl) {\r\n const mapUrl = provider.getMapUrl(false, loadParams)\r\n dispatch(push(mapUrl))\r\n }\r\n }\r\n}\r\n","// Copyright (c) 2021 Uber Technologies, Inc.\r\n\r\nexport const DEFAULT_CLOUD_PROVIDER = 'dropbox'\r\n\r\nexport const CLOUD_PROVIDERS = [\r\n // new DropboxProvider(DROPBOX_CLIENT_ID, DROPBOX_CLIENT_NAME),\r\n // new CartoProvider(CARTO_CLIENT_ID),\r\n]\r\n\r\nexport function getCloudProvider(providerName) {\r\n const cloudProvider = CLOUD_PROVIDERS.find((provider) => provider.name === providerName)\r\n if (!cloudProvider) {\r\n throw new Error(`Unknown cloud provider ${providerName}`)\r\n }\r\n return cloudProvider\r\n}\r\n","/* eslint-disable react/require-default-props */\r\n/* eslint-disable react/no-unused-prop-types */\r\n// Copyright (c) 2020 Uber Technologies, Inc.\r\n//\r\n// Permission is hereby granted, free of charge, to any person obtaining a copy\r\n// of this software and associated documentation files (the \"Software\"), to deal\r\n// in the Software without restriction, including without limitation the rights\r\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n// copies of the Software, and to permit persons to whom the Software is\r\n// furnished to do so, subject to the following conditions:\r\n//\r\n// The above copyright notice and this permission notice shall be included in\r\n// all copies or substantial portions of the Software.\r\n//\r\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n// THE SOFTWARE.\r\n\r\nimport { FlyToInterpolator } from '@deck.gl/core'\r\nimport { GeocoderPanelFactory } from 'kepler.gl/components'\r\nimport Geocoder from 'kepler.gl/dist/components/geocoder/geocoder'\r\nimport {\r\n GEOCODER_DATASET_NAME,\r\n GEOCODER_GEO_OFFSET,\r\n GEOCODER_ICON_COLOR,\r\n GEOCODER_ICON_SIZE,\r\n // eslint-disable-next-line prettier/prettier, comma-dangle\r\n GEOCODER_LAYER_ID,\r\n} from 'kepler.gl/dist/constants/default-settings'\r\nimport Processors from 'kepler.gl/dist/processors'\r\nimport KeplerGlSchema from 'kepler.gl/dist/schemas'\r\nimport { getCenterAndZoomFromBounds } from 'kepler.gl/dist/utils/projection-utils'\r\nimport PropTypes from 'prop-types'\r\nimport { Component } from 'react'\r\nimport { connect } from 'react-redux'\r\nimport styled from 'styled-components'\r\n\r\n// const AsyncUserAvatar = loadable(() => import('components/UI/UserAvatar/UserAvatar'))\r\n\r\nconst ICON_LAYER = {\r\n id: GEOCODER_LAYER_ID,\r\n type: 'icon',\r\n config: {\r\n label: 'Geocoder Layer',\r\n color: GEOCODER_ICON_COLOR,\r\n dataId: GEOCODER_DATASET_NAME,\r\n columns: {\r\n lat: 'lt',\r\n lng: 'ln',\r\n icon: 'icon',\r\n label: 'text',\r\n },\r\n isVisible: true,\r\n hidden: true,\r\n visConfig: {\r\n radius: GEOCODER_ICON_SIZE,\r\n },\r\n },\r\n}\r\n\r\nconst PARSED_CONFIG = KeplerGlSchema.parseSavedConfig({\r\n version: 'v1',\r\n config: {\r\n visState: {\r\n layers: [ICON_LAYER],\r\n },\r\n },\r\n})\r\n\r\nconst StyledGeocoderPanel = styled.div`\r\n position: absolute;\r\n top: ${(props) => props.theme.geocoderTop}px;\r\n right: 15px; // ${(props) => props.theme.geocoderRight}px;\r\n width: ${(props) => props.width}px;\r\n // box-shadow: ${(props) => props.theme.boxShadow};\r\n z-index: 98;\r\n align-items: center;\r\n`\r\n\r\n// const UserMenu = styled.div`\r\n// flex: 0 1 auto;\r\n// height: 50px;\r\n// padding: 0 0 0 10px;\r\n// text-align: center;\r\n// `\r\n\r\nfunction generateGeocoderDataset(lat, lon, text) {\r\n return {\r\n data: Processors.processRowObject([\r\n {\r\n lt: lat,\r\n ln: lon,\r\n icon: 'place',\r\n text,\r\n },\r\n ]),\r\n id: GEOCODER_DATASET_NAME,\r\n info: {\r\n hidden: true,\r\n id: GEOCODER_DATASET_NAME,\r\n label: GEOCODER_DATASET_NAME,\r\n },\r\n }\r\n}\r\n\r\nfunction isValid(key) {\r\n return /pk\\..*\\..*/.test(key)\r\n}\r\n\r\nfunction CustomGeocoderPanelFactory() {\r\n class GeocoderPanel extends Component {\r\n // eslint-disable-next-line react/static-property-placement\r\n static propTypes = {\r\n isGeocoderEnabled: PropTypes.bool.isRequired,\r\n mapboxApiAccessToken: PropTypes.string.isRequired,\r\n mapState: PropTypes.object.isRequired,\r\n updateVisData: PropTypes.func.isRequired,\r\n removeDataset: PropTypes.func.isRequired,\r\n updateMap: PropTypes.func.isRequired,\r\n\r\n transitionDuration: PropTypes.number,\r\n width: PropTypes.number,\r\n }\r\n\r\n onSelected = (viewport = null, geoItem) => {\r\n const {\r\n center: [lon, lat],\r\n text,\r\n bbox,\r\n } = geoItem\r\n\r\n this.removeGeocoderDataset()\r\n this.props.updateVisData(\r\n [generateGeocoderDataset(lat, lon, text)],\r\n {\r\n keepExistingConfig: true,\r\n },\r\n PARSED_CONFIG,\r\n )\r\n const bounds = bbox || [\r\n lon - GEOCODER_GEO_OFFSET,\r\n lat - GEOCODER_GEO_OFFSET,\r\n lon + GEOCODER_GEO_OFFSET,\r\n lat + GEOCODER_GEO_OFFSET,\r\n ]\r\n const centerAndZoom = getCenterAndZoomFromBounds(bounds, {\r\n width: this.props.mapState.width,\r\n height: this.props.mapState.height,\r\n })\r\n\r\n if (!centerAndZoom) {\r\n // failed to fit bounds\r\n return\r\n }\r\n\r\n this.props.updateMap({\r\n latitude: centerAndZoom.center[1],\r\n longitude: centerAndZoom.center[0],\r\n ...(Number.isFinite(centerAndZoom.zoom) ? { zoom: centerAndZoom.zoom } : {}),\r\n pitch: 0,\r\n bearing: 0,\r\n transitionDuration: this.props.transitionDuration,\r\n transitionInterpolator: new FlyToInterpolator(),\r\n })\r\n }\r\n\r\n removeMarker = () => {\r\n this.removeGeocoderDataset()\r\n }\r\n\r\n removeGeocoderDataset() {\r\n this.props.removeDataset(GEOCODER_DATASET_NAME)\r\n }\r\n\r\n render() {\r\n const { mapboxApiAccessToken, publicUser } = this.props\r\n return (\r\n \r\n {isValid(mapboxApiAccessToken) && (\r\n
\r\n {!publicUser ? (\r\n \r\n ) : null}\r\n
\r\n )}\r\n
\r\n )\r\n }\r\n }\r\n\r\n GeocoderPanel.defaultProps = {\r\n transitionDuration: 3000,\r\n }\r\n const mapStateToProps = (state) => ({\r\n publicUser: state.app.user.publicUser,\r\n })\r\n const mapDispatchToProps = (dispatch) => ({})\r\n\r\n return connect(mapStateToProps, mapDispatchToProps)(GeocoderPanel)\r\n}\r\n\r\nexport const replaceGeocoderPanel = () => {\r\n return [GeocoderPanelFactory, CustomGeocoderPanelFactory]\r\n}\r\n","/* eslint-disable react/no-array-index-key */\r\n/* eslint-disable react/jsx-indent */\r\n/* eslint-disable no-nested-ternary */\r\nimport Console from 'global/window'\r\nimport * as MapStateActions from 'kepler.gl/dist/actions/map-state-actions'\r\nimport * as MapStyleActions from 'kepler.gl/dist/actions/map-style-actions'\r\nimport * as ProviderActions from 'kepler.gl/dist/actions/provider-actions'\r\nimport * as UIStateActions from 'kepler.gl/dist/actions/ui-state-actions'\r\nimport * as VisStateActions from 'kepler.gl/dist/actions/vis-state-actions'\r\nimport { KeplerGlFactory } from 'kepler.gl/dist/components'\r\nimport { RootContext } from 'kepler.gl/dist/components/context'\r\nimport { connect as keplerGlConnect } from 'kepler.gl/dist/connect/keplergl-connect'\r\nimport {\r\n DEFAULT_MAPBOX_API_URL,\r\n DIMENSIONS,\r\n KEPLER_GL_NAME,\r\n KEPLER_GL_VERSION,\r\n // eslint-disable-next-line comma-dangle, prettier/prettier\r\n THEME,\r\n} from 'kepler.gl/dist/constants/default-settings'\r\nimport { MISSING_MAPBOX_TOKEN } from 'kepler.gl/dist/constants/user-feedbacks'\r\nimport { theme as basicTheme, themeBS, themeLT } from 'kepler.gl/dist/styles/base'\r\nimport { mergeMessages } from 'kepler.gl/dist/utils/locale-utils'\r\nimport { validateToken } from 'kepler.gl/dist/utils/mapbox-utils'\r\nimport { observeDimensions, unobserveDimensions } from 'kepler.gl/dist/utils/observe-dimensions'\r\nimport { generateHashId } from 'kepler.gl/dist/utils/utils'\r\nimport React, { Component, createRef } from 'react'\r\nimport { IntlProvider } from 'react-intl'\r\nimport { bindActionCreators } from 'redux'\r\nimport { createSelector } from 'reselect'\r\nimport styled, { ThemeProvider, withTheme } from 'styled-components'\r\n// eslint-disable-next-line absolute-import/no-relative-path\r\nimport { messages } from 'translations'\r\n\r\n// Maybe we should think about exporting this or creating a variable\r\n// as part of the base.js theme\r\nconst GlobalStyle = styled.div`\r\n font-family: ${(props) => props.theme.fontFamily};\r\n font-weight: ${(props) => props.theme.fontWeight};\r\n font-size: ${(props) => props.theme.fontSize};\r\n line-height: ${(props) => props.theme.lineHeight};\r\n\r\n *,\r\n *:before,\r\n *:after {\r\n -webkit-box-sizing: border-box;\r\n -moz-box-sizing: border-box;\r\n box-sizing: border-box;\r\n }\r\n\r\n ul {\r\n margin: 0;\r\n padding: 0;\r\n }\r\n\r\n li {\r\n margin: 0;\r\n }\r\n\r\n a {\r\n text-decoration: none;\r\n color: ${(props) => props.theme.labelColor};\r\n }\r\n\r\n .mapboxgl-ctrl .mapboxgl-ctrl-logo {\r\n display: none;\r\n }\r\n`\r\nconst BottomWidgetOuter = styled.div(\r\n ({ absolute }) => `\r\n ${absolute ? 'position: absolute; bottom: 0; right: 0;' : ''}\r\n pointer-events: none; /* prevent padding from blocking input */\r\n & > * {\r\n /* all children should allow input */\r\n pointer-events: all;\r\n }`,\r\n)\r\n\r\nexport const mapFieldsSelector = (props) => ({\r\n getMapboxRef: props.getMapboxRef,\r\n mapboxApiAccessToken: props.mapboxApiAccessToken,\r\n mapboxApiUrl: props.mapboxApiUrl,\r\n mapState: props.mapState,\r\n mapStyle: props.mapStyle,\r\n onDeckInitialized: props.onDeckInitialized,\r\n onViewStateChange: props.onViewStateChange,\r\n deckGlProps: props.deckGlProps,\r\n uiStateActions: props.uiStateActions,\r\n visStateActions: props.visStateActions,\r\n mapStateActions: props.mapStateActions,\r\n\r\n // visState\r\n editor: props.visState.editor,\r\n datasets: props.visState.datasets,\r\n layers: props.visState.layers,\r\n layerOrder: props.visState.layerOrder,\r\n layerData: props.visState.layerData,\r\n layerBlending: props.visState.layerBlending,\r\n filters: props.visState.filters,\r\n interactionConfig: props.visState.interactionConfig,\r\n hoverInfo: props.visState.hoverInfo,\r\n clicked: props.visState.clicked,\r\n mousePos: props.visState.mousePos,\r\n animationConfig: props.visState.animationConfig,\r\n\r\n // uiState\r\n activeSidePanel: props.uiState.activeSidePanel,\r\n mapControls: props.uiState.mapControls,\r\n\r\n locale: props.uiState.locale,\r\n})\r\n\r\nexport const sidePanelSelector = (props, availableProviders) => ({\r\n appName: props.appName,\r\n version: props.version,\r\n appWebsite: props.appWebsite,\r\n mapStyle: props.mapStyle,\r\n onSaveMap: props.onSaveMap,\r\n uiState: props.uiState,\r\n mapStyleActions: props.mapStyleActions,\r\n visStateActions: props.visStateActions,\r\n uiStateActions: props.uiStateActions,\r\n\r\n datasets: props.visState.datasets,\r\n filters: props.visState.filters,\r\n layers: props.visState.layers,\r\n layerOrder: props.visState.layerOrder,\r\n layerClasses: props.visState.layerClasses,\r\n interactionConfig: props.visState.interactionConfig,\r\n mapInfo: props.visState.mapInfo,\r\n layerBlending: props.visState.layerBlending,\r\n\r\n width: props.sidePanelWidth,\r\n availableProviders,\r\n mapSaved: props.providerState.mapSaved,\r\n})\r\n\r\nexport const plotContainerSelector = (props) => ({\r\n width: props.width,\r\n height: props.height,\r\n exportImageSetting: props.uiState.exportImage,\r\n mapFields: mapFieldsSelector(props),\r\n addNotification: props.uiStateActions.addNotification,\r\n setExportImageSetting: props.uiStateActions.setExportImageSetting,\r\n setExportImageDataUri: props.uiStateActions.setExportImageDataUri,\r\n setExportImageError: props.uiStateActions.setExportImageError,\r\n splitMaps: props.visState.splitMaps,\r\n})\r\n\r\nexport const isSplitSelector = (props) => props.visState.splitMaps && props.visState.splitMaps.length > 1\r\n\r\nexport const bottomWidgetSelector = (props, theme) => ({\r\n filters: props.visState.filters,\r\n datasets: props.visState.datasets,\r\n uiState: props.uiState,\r\n layers: props.visState.layers,\r\n animationConfig: props.visState.animationConfig,\r\n visStateActions: props.visStateActions,\r\n toggleModal: props.uiStateActions.toggleModal,\r\n sidePanelWidth: props.uiState.readOnly ? 0 : props.sidePanelWidth + theme.sidePanel.margin.left,\r\n})\r\n\r\nexport const modalContainerSelector = (props, rootNode) => ({\r\n appName: props.appName,\r\n mapStyle: props.mapStyle,\r\n visState: props.visState,\r\n mapState: props.mapState,\r\n uiState: props.uiState,\r\n providerState: props.providerState,\r\n\r\n mapboxApiAccessToken: props.mapboxApiAccessToken,\r\n mapboxApiUrl: props.mapboxApiUrl,\r\n visStateActions: props.visStateActions,\r\n uiStateActions: props.uiStateActions,\r\n mapStyleActions: props.mapStyleActions,\r\n providerActions: props.providerActions,\r\n\r\n rootNode,\r\n // User defined cloud provider props\r\n cloudProviders: props.cloudProviders,\r\n onExportToCloudSuccess: props.onExportToCloudSuccess,\r\n onLoadCloudMapSuccess: props.onLoadCloudMapSuccess,\r\n onLoadCloudMapError: props.onLoadCloudMapError,\r\n onExportToCloudError: props.onExportToCloudError,\r\n})\r\n\r\nexport const geoCoderPanelSelector = (props) => ({\r\n isGeocoderEnabled: props.visState.interactionConfig.geocoder.enabled,\r\n mapboxApiAccessToken: props.mapboxApiAccessToken,\r\n mapState: props.mapState,\r\n updateVisData: props.visStateActions.updateVisData,\r\n removeDataset: props.visStateActions.removeDataset,\r\n updateMap: props.mapStateActions.updateMap,\r\n})\r\n\r\nexport const notificationPanelSelector = (props) => ({\r\n removeNotification: props.uiStateActions.removeNotification,\r\n notifications: props.uiState.notifications,\r\n})\r\n\r\nexport const DEFAULT_KEPLER_GL_PROPS = {\r\n mapStyles: [],\r\n mapStylesReplaceDefault: false,\r\n mapboxApiUrl: DEFAULT_MAPBOX_API_URL,\r\n width: 800,\r\n height: 800,\r\n appName: KEPLER_GL_NAME,\r\n version: KEPLER_GL_VERSION,\r\n sidePanelWidth: DIMENSIONS.sidePanel.width,\r\n theme: {},\r\n cloudProviders: [],\r\n readOnly: false,\r\n}\r\n\r\nCustomKeplerGlFactory.deps = KeplerGlFactory.deps\r\nfunction CustomKeplerGlFactory(\r\n BottomWidget,\r\n GeoCoderPanel,\r\n MapContainer,\r\n MapsLayout,\r\n ModalContainer,\r\n SidePanel,\r\n PlotContainer,\r\n NotificationPanel,\r\n) {\r\n class KeplerGL extends Component {\r\n // eslint-disable-next-line react/static-property-placement\r\n static defaultProps = DEFAULT_KEPLER_GL_PROPS\r\n\r\n // eslint-disable-next-line react/static-property-placement\r\n static contextType = RootContext\r\n\r\n // eslint-disable-next-line react/state-in-constructor\r\n state = {\r\n dimensions: null,\r\n }\r\n\r\n componentDidMount() {\r\n this.validateMapboxToken()\r\n this.loadMapStyle()\r\n if (typeof this.props.onKeplerGlInitialized === 'function') {\r\n this.props.onKeplerGlInitialized()\r\n }\r\n if (this.root.current instanceof HTMLElement) {\r\n observeDimensions(this.root.current, this.handleResize)\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.root.current instanceof HTMLElement) {\r\n unobserveDimensions(this.root.current)\r\n }\r\n }\r\n\r\n handleResize = (dimensions) => {\r\n this.setState({ dimensions })\r\n }\r\n\r\n // eslint-disable-next-line react/sort-comp\r\n root = createRef()\r\n\r\n bottomWidgetRef = createRef()\r\n\r\n /* selectors */\r\n // eslint-disable-next-line react/sort-comp\r\n themeSelector = (props) => props.theme\r\n\r\n availableThemeSelector = createSelector(this.themeSelector, (theme) =>\r\n typeof theme === 'object'\r\n ? {\r\n ...basicTheme,\r\n ...theme,\r\n }\r\n : theme === THEME.light\r\n ? themeLT\r\n : theme === THEME.base\r\n ? themeBS\r\n : theme,\r\n )\r\n\r\n availableProviders = createSelector(\r\n (props) => props.cloudProviders,\r\n (providers) =>\r\n Array.isArray(providers) && providers.length\r\n ? {\r\n hasStorage: providers.some((p) => p.hasPrivateStorage()),\r\n hasShare: providers.some((p) => p.hasSharingUrl()),\r\n }\r\n : {},\r\n )\r\n\r\n localeMessagesSelector = createSelector(\r\n (props) => props.localeMessages,\r\n (customMessages) => (customMessages ? mergeMessages(messages, customMessages) : messages),\r\n )\r\n\r\n /* private methods */\r\n // eslint-disable-next-line react/sort-comp\r\n validateMapboxToken() {\r\n const { mapboxApiAccessToken } = this.props\r\n if (!validateToken(mapboxApiAccessToken)) {\r\n // eslint-disable-next-line no-undef\r\n Console.warn(MISSING_MAPBOX_TOKEN)\r\n }\r\n }\r\n\r\n loadMapStyle = () => {\r\n const defaultStyles = Object.values(this.props.mapStyle.mapStyles)\r\n // add id to custom map styles if not given\r\n const customStyles = (this.props.mapStyles || []).map((ms) => ({\r\n ...ms,\r\n id: ms.id || generateHashId(),\r\n }))\r\n\r\n const allStyles = [...customStyles, ...defaultStyles].reduce(\r\n (acc, style) => {\r\n const hasStyleObject = style.style && typeof style.style === 'object'\r\n acc[hasStyleObject ? 'toLoad' : 'toRequest'][style.id] = style\r\n\r\n return acc\r\n },\r\n { toLoad: {}, toRequest: {} },\r\n )\r\n\r\n this.props.mapStyleActions.loadMapStyles(allStyles.toLoad)\r\n this.props.mapStyleActions.requestMapStyles(allStyles.toRequest)\r\n }\r\n\r\n render() {\r\n const { id, width, height, uiState, visState } = this.props\r\n\r\n const dimensions = this.state.dimensions || { width, height }\r\n const {\r\n splitMaps, // this will store support for split map view is necessary\r\n } = visState\r\n\r\n const isSplit = isSplitSelector(this.props)\r\n const theme = this.availableThemeSelector(this.props)\r\n const localeMessages = this.localeMessagesSelector(this.props)\r\n const isExportingImage = uiState.exportImage.exporting\r\n const availableProviders = this.availableProviders(this.props)\r\n\r\n const mapFields = mapFieldsSelector(this.props)\r\n const sideFields = sidePanelSelector(this.props, availableProviders)\r\n const plotContainerFields = plotContainerSelector(this.props)\r\n const bottomWidgetFields = bottomWidgetSelector(this.props, theme)\r\n const modalContainerFields = modalContainerSelector(this.props, this.root.current)\r\n const geoCoderPanelFields = geoCoderPanelSelector(this.props)\r\n const notificationPanelFields = notificationPanelSelector(this.props)\r\n const mapContainers = !isSplit\r\n ? []\r\n : splitMaps.map((settings, index) => (\r\n \r\n ))\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {mapContainers}\r\n {isExportingImage && }\r\n \r\n \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 keplerGlConnect(mapStateToProps, makeMapDispatchToProps)(withTheme(React.memo(KeplerGL)))\r\n}\r\n\r\nfunction mapStateToProps(state = {}, props) {\r\n return {\r\n ...props,\r\n visState: state.visState,\r\n mapStyle: state.mapStyle,\r\n mapState: state.mapState,\r\n uiState: state.uiState,\r\n providerState: state.providerState,\r\n }\r\n}\r\n\r\nconst defaultUserActions = {}\r\nconst getDispatch = (dispatch) => dispatch\r\nconst getUserActions = (dispatch, props) => props.actions || defaultUserActions\r\n\r\nfunction makeGetActionCreators() {\r\n return createSelector([getDispatch, getUserActions], (dispatch, userActions) => {\r\n const [visStateActions, mapStateActions, mapStyleActions, uiStateActions, providerActions] = [\r\n VisStateActions,\r\n MapStateActions,\r\n MapStyleActions,\r\n UIStateActions,\r\n ProviderActions,\r\n ].map((actions) => bindActionCreators(mergeActions(actions, userActions), dispatch))\r\n\r\n return {\r\n visStateActions,\r\n mapStateActions,\r\n mapStyleActions,\r\n uiStateActions,\r\n providerActions,\r\n dispatch,\r\n }\r\n })\r\n}\r\n\r\nfunction makeMapDispatchToProps() {\r\n const getActionCreators = makeGetActionCreators()\r\n const mapDispatchToProps = (dispatch, ownProps) => {\r\n const groupedActionCreators = getActionCreators(dispatch, ownProps)\r\n\r\n return {\r\n ...groupedActionCreators,\r\n dispatch,\r\n }\r\n }\r\n\r\n return mapDispatchToProps\r\n}\r\n\r\n/**\r\n * Override default kepler.gl actions with user defined actions using the same key\r\n */\r\nfunction mergeActions(actions, userActions) {\r\n const overrides = {}\r\n for (const key in userActions) {\r\n // eslint-disable-next-line no-prototype-builtins\r\n if (userActions.hasOwnProperty(key) && actions.hasOwnProperty(key)) {\r\n overrides[key] = userActions[key]\r\n }\r\n }\r\n\r\n return { ...actions, ...overrides }\r\n}\r\n\r\nexport function replaceKeplerGl() {\r\n return [KeplerGlFactory, CustomKeplerGlFactory]\r\n}\r\n","/* BASIC 6 COLORS FOR APP */\r\nexport const mainDarkestBlue = '#28323c'\r\nexport const mainDarkestBlueOpacity = 'rgba(40, 50, 60, .9)'\r\nexport const darkestBlue = '#242730'\r\nexport const darkestBlueOpacity = 'rgba(17, 35, 48, .8)'\r\nexport const darkerBlue = '#004D5D'\r\nexport const darkTurquoise = '#4CA99D'\r\nexport const green = '#0F9668'\r\nexport const greenHover = '#4ca99d'\r\nexport const lightGreen = '#8FD578'\r\nexport const yello = '#F9F871'\r\nexport const logoMapColor = '#57787c'\r\nexport const logoMapColorLight = '#b8c6c7'\r\nexport const logoLabColor = '#031825'\r\n\r\n/* APP's GREY COLORS */\r\nexport const greyBlue = '#3a414c'\r\nexport const lightGrey = '#D9D9DA'\r\nexport const buttonGrey = '#6A7485'\r\nexport const shadow = 'rgba(0, 0, 0, 0.1)'\r\n","/* eslint-disable jsx-a11y/anchor-has-content */\r\n/* eslint-disable class-methods-use-this */\r\n/* eslint-disable no-underscore-dangle */\r\n/* eslint-disable react/default-props-match-prop-types */\r\n/* eslint-disable react/require-default-props */\r\n// Copyright (c) 2021 Uber Technologies, Inc.\r\n//\r\n// Permission is hereby granted, free of charge, to any person obtaining a copy\r\n// of this software and associated documentation files (the \"Software\"), to deal\r\n// in the Software without restriction, including without limitation the rights\r\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n// copies of the Software, and to permit persons to whom the Software is\r\n// furnished to do so, subject to the following conditions:\r\n//\r\n// The above copyright notice and this permission notice shall be included in\r\n// all copies or substantial portions of the Software.\r\n//\r\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n// THE SOFTWARE.\r\n\r\n// libraries\r\nimport DeckGL from '@deck.gl/react'\r\nimport { MapContainerFactory } from 'kepler.gl/components'\r\nimport ErrorBoundary from 'kepler.gl/dist/components/common/error-boundary'\r\nimport { StyledMapContainer } from 'kepler.gl/dist/components/common/styled-components'\r\nimport { FILTER_TYPES, GEOCODER_LAYER_ID, THROTTLE_NOTIFICATION_TIME } from 'kepler.gl/dist/constants/default-settings'\r\n// default-settings\r\nimport ThreeDBuildingLayer from 'kepler.gl/dist/deckgl-layers/3d-building-layer/3d-building-layer'\r\n// utils\r\nimport { generateMapboxLayers, updateMapboxLayers } from 'kepler.gl/dist/layers/mapbox-utils'\r\nimport { setLayerBlending } from 'kepler.gl/dist/utils/gl-utils'\r\nimport {\r\n getLayerHoverProp,\r\n prepareLayersForDeck,\r\n prepareLayersToRender,\r\n // eslint-disable-next-line prettier/prettier, comma-dangle\r\n renderDeckGlLayer,\r\n} from 'kepler.gl/dist/utils/layer-utils'\r\nimport { errorNotification } from 'kepler.gl/dist/utils/notifications-utils'\r\nimport { transformRequest } from 'kepler.gl/src/utils/map-style-utils/mapbox-utils'\r\nimport { observeDimensions, unobserveDimensions } from 'kepler.gl/src/utils/observe-dimensions'\r\nimport PropTypes from 'prop-types'\r\nimport React, { Component, createRef } from 'react'\r\nimport MapboxGLMap from 'react-map-gl'\r\nimport { createSelector } from 'reselect'\r\nimport styled from 'styled-components'\r\nimport { mainDarkestBlue } from 'theme/colors'\r\nimport { LOCALE_CODES } from 'translations/locales'\r\nimport WebMercatorViewport from 'viewport-mercator-project'\r\n\r\nexport const StyledAttrbution = styled.div.attrs({\r\n className: 'mapbox-attribution-container',\r\n})`\r\n bottom: 0;\r\n right: 0;\r\n position: absolute;\r\n display: block;\r\n margin: 0 10px 2px;\r\n z-index: 0;\r\n .map-lab {\r\n display: flex;\r\n font-size: 16px;\r\n justify-content: flex-end;\r\n align-items: center;\r\n color: ${(props) => props.theme.labelColor};\r\n line-height: 20px;\r\n a {\r\n font-size: 20px;\r\n font-weight: bold;\r\n margin-left: 4px;\r\n color: ${mainDarkestBlue} !important;\r\n }\r\n }\r\n .attrition-logo {\r\n display: flex;\r\n font-size: 12px;\r\n justify-content: flex-end;\r\n align-items: center;\r\n color: ${(props) => props.theme.labelColor};\r\n margin-bottom: -4px;\r\n a.mapboxgl-ctrl-logo {\r\n width: 88px;\r\n margin-left: 6px;\r\n }\r\n }\r\n a {\r\n font-size: 12px;\r\n }\r\n`\r\n\r\n/** @type {{[key: string]: React.CSSProperties}} */\r\nconst MAP_STYLE = {\r\n container: {\r\n display: 'inline-block',\r\n position: 'relative',\r\n width: '100%',\r\n height: '100%',\r\n },\r\n top: {\r\n position: 'absolute',\r\n top: '0px',\r\n pointerEvents: 'none',\r\n width: '100%',\r\n height: '100%',\r\n },\r\n}\r\n\r\nconst MAPBOXGL_STYLE_UPDATE = 'style.load'\r\nconst MAPBOXGL_RENDER = 'render'\r\nconst TRANSITION_DURATION = 0\r\n\r\nexport const Attribution = () => (\r\n \r\n
\r\n \r\n Powered by\r\n MapLab.world \r\n \r\n
\r\n
\r\n \r\n © Mapbox\r\n \r\n |\r\n \r\n © OpenStreetMap\r\n \r\n
\r\n
\r\n)\r\n\r\nfunction CustomMapContainerFactory(MapPopover, MapControl, Editor) {\r\n class MapContainer extends Component {\r\n // eslint-disable-next-line react/static-property-placement\r\n static propTypes = {\r\n // required\r\n datasets: PropTypes.object,\r\n interactionConfig: PropTypes.object.isRequired,\r\n layerBlending: PropTypes.string.isRequired,\r\n layerOrder: PropTypes.arrayOf(PropTypes.any).isRequired,\r\n layerData: PropTypes.arrayOf(PropTypes.any).isRequired,\r\n layers: PropTypes.arrayOf(PropTypes.any).isRequired,\r\n filters: PropTypes.arrayOf(PropTypes.any).isRequired,\r\n mapState: PropTypes.object.isRequired,\r\n mapControls: PropTypes.object.isRequired,\r\n mapStyle: PropTypes.object.isRequired,\r\n mousePos: PropTypes.object.isRequired,\r\n mapboxApiAccessToken: PropTypes.string.isRequired,\r\n mapboxApiUrl: PropTypes.string,\r\n visStateActions: PropTypes.object.isRequired,\r\n mapStateActions: PropTypes.object.isRequired,\r\n uiStateActions: PropTypes.object.isRequired,\r\n\r\n // optional\r\n primary: PropTypes.bool, // primary one will be reporting its size to appState\r\n readOnly: PropTypes.bool,\r\n isExport: PropTypes.bool,\r\n clicked: PropTypes.object,\r\n hoverInfo: PropTypes.object,\r\n mapLayers: PropTypes.object,\r\n onMapToggleLayer: PropTypes.func,\r\n onMapStyleLoaded: PropTypes.func,\r\n onMapRender: PropTypes.func,\r\n getMapboxRef: PropTypes.func,\r\n index: PropTypes.number,\r\n }\r\n\r\n // eslint-disable-next-line react/static-property-placement\r\n static defaultProps = {\r\n MapComponent: MapboxGLMap,\r\n deckGlProps: {},\r\n index: 0,\r\n primary: true,\r\n }\r\n\r\n constructor(props) {\r\n super(props)\r\n\r\n this.previousLayers = {\r\n // [layers.id]: mapboxLayerConfig\r\n }\r\n\r\n this._deck = null\r\n this._ref = createRef()\r\n }\r\n\r\n componentDidMount() {\r\n observeDimensions(this._ref.current, this._handleResize)\r\n }\r\n\r\n componentWillUnmount() {\r\n // unbind mapboxgl event listener\r\n if (this._map) {\r\n this._map.off(MAPBOXGL_STYLE_UPDATE)\r\n this._map.off(MAPBOXGL_RENDER)\r\n }\r\n unobserveDimensions(this._ref.current)\r\n }\r\n\r\n // eslint-disable-next-line react/sort-comp\r\n _handleResize = (dimensions) => {\r\n const { primary } = this.props\r\n if (primary) {\r\n const { mapStateActions } = this.props\r\n if (dimensions && dimensions.width > 0 && dimensions.height > 0) {\r\n mapStateActions.updateMap(dimensions)\r\n }\r\n }\r\n }\r\n\r\n // eslint-disable-next-line react/sort-comp\r\n layersSelector = (props) => props.layers\r\n\r\n layerDataSelector = (props) => props.layerData\r\n\r\n mapLayersSelector = (props) => props.mapLayers\r\n\r\n layerOrderSelector = (props) => props.layerOrder\r\n\r\n // eslint-disable-next-line react/sort-comp\r\n layersToRenderSelector = createSelector(\r\n this.layersSelector,\r\n this.layerDataSelector,\r\n this.mapLayersSelector,\r\n prepareLayersToRender,\r\n )\r\n\r\n layersForDeckSelector = createSelector(this.layersSelector, this.layerDataSelector, prepareLayersForDeck)\r\n\r\n filtersSelector = (props) => props.filters\r\n\r\n polygonFilters = createSelector(this.filtersSelector, (filters) =>\r\n filters.filter((f) => f.type === FILTER_TYPES.polygon),\r\n )\r\n\r\n mapboxLayersSelector = createSelector(\r\n this.layersSelector,\r\n this.layerDataSelector,\r\n this.layerOrderSelector,\r\n this.layersToRenderSelector,\r\n generateMapboxLayers,\r\n )\r\n\r\n /* component private functions */\r\n _onCloseMapPopover = () => {\r\n this.props.visStateActions.onLayerClick(null)\r\n }\r\n\r\n _onLayerSetDomain = (idx, colorDomain) => {\r\n this.props.visStateActions.layerConfigChange(this.props.layers[idx], {\r\n colorDomain,\r\n })\r\n }\r\n\r\n _handleMapToggleLayer = (layerId) => {\r\n const { index, visStateActions } = this.props\r\n if (this.props.mapState.isSplit) {\r\n visStateActions.toggleLayerForMap(index, layerId)\r\n } else {\r\n const layer = this.props.layers.find((x) => x.id === layerId)\r\n visStateActions.layerConfigChange(layer, { ...layer.config, isVisible: !layer.config.isVisible })\r\n }\r\n }\r\n\r\n _onMapboxStyleUpdate = () => {\r\n // force refresh mapboxgl layers\r\n this.previousLayers = {}\r\n this._updateMapboxLayers()\r\n\r\n if (typeof this.props.onMapStyleLoaded === 'function') {\r\n this.props.onMapStyleLoaded(this._map)\r\n }\r\n }\r\n\r\n _setMapboxMap = (mapbox) => {\r\n if (!this._map && mapbox) {\r\n this._map = mapbox.getMap()\r\n // i noticed in certain context we don't access the actual map element\r\n if (!this._map) {\r\n return\r\n }\r\n // bind mapboxgl event listener\r\n this._map.on(MAPBOXGL_STYLE_UPDATE, this._onMapboxStyleUpdate)\r\n\r\n this._map.on(MAPBOXGL_RENDER, () => {\r\n if (typeof this.props.onMapRender === 'function') {\r\n this.props.onMapRender(this._map)\r\n }\r\n })\r\n }\r\n\r\n if (this.props.getMapboxRef) {\r\n // The parent component can gain access to our MapboxGlMap by\r\n // providing this callback. Note that 'mapbox' will be null when the\r\n // ref is unset (e.g. when a split map is closed).\r\n this.props.getMapboxRef(mapbox, this.props.index)\r\n }\r\n }\r\n\r\n _onDeckInitialized(gl) {\r\n if (this.props.onDeckInitialized) {\r\n this.props.onDeckInitialized(this._deck, gl)\r\n }\r\n }\r\n\r\n _onBeforeRender = ({ gl }) => {\r\n setLayerBlending(gl, this.props.layerBlending)\r\n }\r\n\r\n _onDeckError = (error, layer) => {\r\n const errorMessage = `An error in deck.gl: ${error.message} in ${layer.id}`\r\n const notificationId = `${layer.id}-${error.message}`\r\n\r\n // Throttle error notifications, as React doesn't like too many state changes from here.\r\n this._deckGLErrorsElapsed = this._deckGLErrorsElapsed || {}\r\n const lastShown = this._deckGLErrorsElapsed[notificationId]\r\n if (!lastShown || lastShown < Date.now() - THROTTLE_NOTIFICATION_TIME) {\r\n this._deckGLErrorsElapsed[notificationId] = Date.now()\r\n\r\n // Create new error notification or update existing one with same id.\r\n // Update is required to preserve the order of notifications as they probably are going to \"jump\" based on order of errors.\r\n const { uiStateActions } = this.props\r\n uiStateActions.addNotification(\r\n errorNotification({\r\n message: errorMessage,\r\n id: notificationId,\r\n }),\r\n )\r\n }\r\n }\r\n\r\n /* component render functions */\r\n\r\n /* eslint-disable complexity */\r\n // eslint-disable-next-line react/sort-comp\r\n _renderMapPopover(layersToRender) {\r\n // TODO: move this into reducer so it can be tested\r\n const {\r\n mapState,\r\n hoverInfo,\r\n clicked,\r\n datasets,\r\n interactionConfig,\r\n layers,\r\n mousePos: { mousePosition, coordinate, pinned },\r\n } = this.props\r\n\r\n if (!mousePosition || !interactionConfig.tooltip) {\r\n return null\r\n }\r\n\r\n const layerHoverProp = getLayerHoverProp({\r\n interactionConfig,\r\n hoverInfo,\r\n layers,\r\n layersToRender,\r\n datasets,\r\n })\r\n\r\n const compareMode = interactionConfig.tooltip.config ? interactionConfig.tooltip.config.compareMode : false\r\n\r\n let pinnedPosition = {}\r\n let layerPinnedProp = null\r\n if (pinned || clicked) {\r\n // project lnglat to screen so that tooltip follows the object on zoom\r\n const viewport = new WebMercatorViewport(mapState)\r\n const lngLat = clicked ? clicked.lngLat : pinned.coordinate\r\n pinnedPosition = this._getHoverXY(viewport, lngLat)\r\n layerPinnedProp = getLayerHoverProp({\r\n interactionConfig,\r\n hoverInfo: clicked,\r\n layers,\r\n layersToRender,\r\n datasets,\r\n })\r\n if (layerHoverProp && layerPinnedProp) {\r\n layerHoverProp.primaryData = layerPinnedProp.data\r\n layerHoverProp.compareType = interactionConfig.tooltip.config.compareType\r\n }\r\n }\r\n\r\n const commonProp = {\r\n onClose: this._onCloseMapPopover,\r\n zoom: mapState.zoom,\r\n container: this._deck ? this._deck.canvas : undefined,\r\n }\r\n\r\n return (\r\n \r\n {layerPinnedProp && (\r\n \r\n )}\r\n {layerHoverProp && (!layerPinnedProp || compareMode) && (\r\n \r\n )}\r\n \r\n )\r\n }\r\n\r\n /* eslint-enable complexity */\r\n\r\n _getHoverXY(viewport, lngLat) {\r\n const screenCoord = !viewport || !lngLat ? null : viewport.project(lngLat)\r\n return screenCoord && { x: screenCoord[0], y: screenCoord[1] }\r\n }\r\n\r\n _renderDeckOverlay(layersForDeck) {\r\n const { mapState, mapStyle, layerData, layerOrder, layers, visStateActions, mapboxApiAccessToken, mapboxApiUrl } =\r\n this.props\r\n\r\n // initialise layers from props if exists\r\n let deckGlLayers = this.props.deckGlProps?.layers || []\r\n\r\n // wait until data is ready before render data layers\r\n if (layerData && layerData.length) {\r\n // last layer render first\r\n const dataLayers = layerOrder\r\n .slice()\r\n .reverse()\r\n .filter((idx) => layersForDeck[layers[idx].id])\r\n .reduce((overlays, idx) => {\r\n const layerCallbacks = {\r\n onSetLayerDomain: (val) => this._onLayerSetDomain(idx, val),\r\n }\r\n const layerOverlay = renderDeckGlLayer(this.props, layerCallbacks, idx)\r\n return overlays.concat(layerOverlay || [])\r\n }, [])\r\n deckGlLayers = deckGlLayers.concat(dataLayers)\r\n }\r\n\r\n if (mapStyle.visibleLayerGroups['3d building']) {\r\n deckGlLayers.push(\r\n new ThreeDBuildingLayer({\r\n id: '_keplergl_3d-building',\r\n mapboxApiAccessToken,\r\n mapboxApiUrl,\r\n threeDBuildingColor: mapStyle.threeDBuildingColor,\r\n updateTriggers: {\r\n getFillColor: mapStyle.threeDBuildingColor,\r\n },\r\n }),\r\n )\r\n }\r\n\r\n return (\r\n {\r\n if (comp && comp.deck && !this._deck) {\r\n this._deck = comp.deck\r\n }\r\n }}\r\n onWebGLInitialized={(gl) => this._onDeckInitialized(gl)}\r\n />\r\n )\r\n }\r\n\r\n _updateMapboxLayers() {\r\n const mapboxLayers = this.mapboxLayersSelector(this.props)\r\n if (!Object.keys(mapboxLayers).length && !Object.keys(this.previousLayers).length) {\r\n return\r\n }\r\n\r\n updateMapboxLayers(this._map, mapboxLayers, this.previousLayers)\r\n\r\n this.previousLayers = mapboxLayers\r\n }\r\n\r\n _renderMapboxOverlays() {\r\n if (this._map && this._map.isStyleLoaded()) {\r\n this._updateMapboxLayers()\r\n }\r\n }\r\n\r\n _onViewportChange = (viewState) => {\r\n const { width, height, ...restViewState } = viewState\r\n const { primary } = this.props\r\n // react-map-gl sends 0,0 dimensions during initialization\r\n // after we have received proper dimensions from observeDimensions\r\n const next = {\r\n ...(width > 0 && height > 0 ? viewState : restViewState),\r\n // enabling transition in two maps may lead to endless update loops\r\n transitionDuration: primary ? TRANSITION_DURATION : 0,\r\n }\r\n if (typeof this.props.onViewStateChange === 'function') {\r\n this.props.onViewStateChange(next)\r\n }\r\n this.props.mapStateActions.updateMap(next)\r\n }\r\n\r\n _toggleMapControl = (panelId) => {\r\n const { index, uiStateActions } = this.props\r\n\r\n uiStateActions.toggleMapControl(panelId, index)\r\n }\r\n\r\n /* eslint-disable complexity */\r\n _renderMap() {\r\n const {\r\n mapState,\r\n mapStyle,\r\n mapStateActions,\r\n layers,\r\n MapComponent,\r\n datasets,\r\n mapboxApiAccessToken,\r\n mapboxApiUrl,\r\n mapControls,\r\n isExport,\r\n locale,\r\n uiStateActions,\r\n visStateActions,\r\n interactionConfig,\r\n editor,\r\n index,\r\n primary,\r\n } = this.props\r\n\r\n const layersToRender = this.layersToRenderSelector(this.props)\r\n const layersForDeck = this.layersForDeckSelector(this.props)\r\n\r\n const mapProps = {\r\n ...mapState,\r\n width: '100%',\r\n height: '100%',\r\n preserveDrawingBuffer: true,\r\n mapboxApiAccessToken,\r\n mapboxApiUrl,\r\n onViewportChange: this._onViewportChange,\r\n transformRequest,\r\n }\r\n\r\n const isEdit = (mapControls.mapDraw || {}).active\r\n\r\n const hasGeocoderLayer = layers.find((l) => l.id === GEOCODER_LAYER_ID)\r\n const isSplit = Boolean(mapState.isSplit)\r\n\r\n return (\r\n <>\r\n \r\n 'pointer' : undefined}\r\n onMouseMove={this.props.visStateActions.onMouseMove}\r\n >\r\n {this._renderDeckOverlay(layersForDeck)}\r\n {this._renderMapboxOverlays()}\r\n \r\n \r\n {mapStyle.topMapStyle || hasGeocoderLayer ? (\r\n
\r\n \r\n {this._renderDeckOverlay({ [GEOCODER_LAYER_ID]: true })}\r\n \r\n
\r\n ) : null}\r\n {this._renderMapPopover(layersToRender)}\r\n {!isSplit || index === 1 ? : null}\r\n \r\n )\r\n }\r\n\r\n render() {\r\n const { mapState, mapStyle } = this.props\r\n return (\r\n \r\n {mapStyle.bottomMapStyle && this._renderMap()}\r\n \r\n )\r\n }\r\n }\r\n\r\n MapContainer.displayName = 'MapContainer'\r\n\r\n return MapContainer\r\n}\r\n\r\nCustomMapContainerFactory.deps = MapContainerFactory.deps\r\n\r\nexport function replaceMapContainer() {\r\n return [MapContainerFactory, CustomMapContainerFactory]\r\n}\r\n","import { Base } from 'kepler.gl/dist/components/common/icons'\r\nimport { Component } from 'react'\r\n\r\n// eslint-disable-next-line react/prefer-stateless-function\r\nexport default class FunctionIcon extends Component {\r\n render() {\r\n return (\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n}\r\n","export function setErrorHandler(error) {\r\n return {\r\n type: 'ERROR_HANDLER',\r\n payload: error,\r\n }\r\n}\r\n\r\nexport function showMessage(message) {\r\n return {\r\n type: 'MESSAGE_HANDLER',\r\n payload: message,\r\n }\r\n}\r\n","/* eslint-disable react/prefer-stateless-function */\r\nimport React, { Component, Fragment } from 'react'\r\nimport { connect } from 'react-redux'\r\nimport ScrollArea from 'react-scrollbar'\r\nimport { setErrorHandler } from 'store/actions/errorsActions'\r\n\r\nclass DatabasesList extends Component {\r\n constructor(props) {\r\n super(props)\r\n this.listRef = React.createRef()\r\n\r\n this.state = {\r\n selectedDatabase: null,\r\n selectedTable: null,\r\n opened: false,\r\n items: [],\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n document.addEventListener('mousedown', this.handleClickOutside)\r\n }\r\n\r\n componentWillUnmount() {\r\n document.removeEventListener('mousedown', this.handleClickOutside)\r\n }\r\n\r\n static getDerivedStateFromProps = (props, state) => {\r\n if (\r\n JSON.stringify(props.selectedDatabase) !== JSON.stringify(state.selectedDatabase) ||\r\n JSON.stringify(props.selectedTable) !== JSON.stringify(state.selectedTable) ||\r\n JSON.stringify(props.items) !== JSON.stringify(state.items)\r\n ) {\r\n return {\r\n selectedDatabase: props.selectedDatabase,\r\n selectedTable: props.selectedTable,\r\n items: props.items,\r\n }\r\n }\r\n return null\r\n }\r\n\r\n toggleList = () => {\r\n this.setState({\r\n // eslint-disable-next-line react/no-access-state-in-setstate\r\n opened: !this.state.opened,\r\n })\r\n }\r\n\r\n handleClickOutside = (e) => {\r\n if (this.listRef && !this.listRef.current?.contains(e.target)) {\r\n this.setState({ opened: false })\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n \r\n {this.state.selectedDatabase && (\r\n

\r\n {this.state.selectedDatabase.title || this.state.selectedDatabase.label}\r\n

\r\n )}\r\n
\r\n {!this.state.selectedDatabase &&

Select database

}\r\n {this.state.selectedTable &&

{this.state.selectedTable.name}

}\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n {this.state.opened && (\r\n
\r\n \r\n {this.state.items.map((item) => {\r\n return (\r\n \r\n

{item.title}

\r\n\r\n
\r\n {item.tables.filter((x) => x.status === 'active').length === 0 && (\r\n

\r\n No table\r\n

\r\n )}\r\n {item.tables\r\n .filter((x) => x.status === 'active')\r\n .map((table) => {\r\n return (\r\n {\r\n this.props.selectTable(item, table)\r\n this.setState({ opened: false })\r\n }}\r\n key={table.id}\r\n className=' dark-gray text-white tableName hover:bg-gray-300 transition duration-150 cursor-pointer'\r\n >\r\n {table.name}\r\n

\r\n )\r\n })}\r\n
\r\n
\r\n )\r\n })}\r\n
\r\n
\r\n )}\r\n \r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({})\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setErrorHandler: (data) => dispatch(setErrorHandler(data)),\r\n})\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(DatabasesList)\r\n","import { BasicConfig } from 'react-awesome-query-builder'\r\n\r\nconst commonOptionsForOperators = {\r\n cardinality: 0,\r\n isNotOp: false,\r\n}\r\n\r\nconst commonOperatorsForDateAndDateTime = [\r\n 'today',\r\n 'yesterday',\r\n 'equal',\r\n 'not_equal',\r\n 'less',\r\n 'less_or_equal',\r\n 'greater',\r\n 'greater_or_equal',\r\n 'between',\r\n 'not_between',\r\n 'is_empty',\r\n 'is_not_empty',\r\n]\r\n\r\nconst operators = {\r\n ...BasicConfig.operators,\r\n between: {\r\n ...BasicConfig.operators.between,\r\n valueLabels: ['Value from', 'Value to'],\r\n textSeparators: ['from', 'to'],\r\n },\r\n today: {\r\n ...commonOptionsForOperators,\r\n label: 'Today',\r\n labelForFormat: 'TODAY',\r\n },\r\n days: {\r\n label: 'Days',\r\n labelForFormat: 'DAYS',\r\n },\r\n weeks: {\r\n label: 'Weeks',\r\n labelForFormat: 'Weeks',\r\n },\r\n months: {\r\n label: 'Months',\r\n labelForFormat: 'MONTHS',\r\n },\r\n quarters: {\r\n label: 'Quarters',\r\n labelForFormat: 'QUARTERS',\r\n },\r\n years: {\r\n label: 'Years',\r\n labelForFormat: 'YEARS',\r\n },\r\n day: {\r\n ...commonOptionsForOperators,\r\n label: 'Day',\r\n labelForFormat: 'DAY',\r\n },\r\n week: {\r\n ...commonOptionsForOperators,\r\n label: 'Week',\r\n labelForFormat: 'Week',\r\n },\r\n month: {\r\n ...commonOptionsForOperators,\r\n label: 'Month',\r\n labelForFormat: 'MONTH',\r\n },\r\n quarter: {\r\n ...commonOptionsForOperators,\r\n label: 'Quarter',\r\n labelForFormat: 'QUARTER',\r\n },\r\n year: {\r\n ...commonOptionsForOperators,\r\n label: 'Year',\r\n labelForFormat: 'YEAR',\r\n },\r\n yesterday: {\r\n ...commonOptionsForOperators,\r\n label: 'Yesterday',\r\n labelForFormat: 'YESTERDAY',\r\n },\r\n pastWeek: {\r\n ...commonOptionsForOperators,\r\n label: 'Past Week',\r\n labelForFormat: 'PAST WEEK',\r\n },\r\n pastMonth: {\r\n ...commonOptionsForOperators,\r\n label: 'Past Month',\r\n labelForFormat: 'PAST MONTH',\r\n },\r\n pastYear: {\r\n ...commonOptionsForOperators,\r\n label: 'Past Year',\r\n labelForFormat: 'PAST YEAR',\r\n },\r\n}\r\n\r\nconst widgets = {\r\n ...BasicConfig.widgets,\r\n text: {\r\n ...BasicConfig.widgets.text,\r\n },\r\n textarea: {\r\n ...BasicConfig.widgets.textarea,\r\n maxRows: 3,\r\n },\r\n slider: {\r\n ...BasicConfig.widgets.slider,\r\n },\r\n rangeslider: {\r\n ...BasicConfig.widgets.rangeslider,\r\n },\r\n date: {\r\n ...BasicConfig.widgets.date,\r\n dateFormat: 'DD.MM.YYYY',\r\n valueFormat: 'YYYY-MM-DD',\r\n },\r\n time: {\r\n ...BasicConfig.widgets.time,\r\n timeFormat: 'HH:mm',\r\n valueFormat: 'HH:mm:ss',\r\n },\r\n datetime: {\r\n ...BasicConfig.widgets.datetime,\r\n timeFormat: 'HH:mm',\r\n dateFormat: 'DD.MM.YYYY',\r\n valueFormat: 'YYYY-MM-DD HH:mm:ss',\r\n },\r\n func: {\r\n ...BasicConfig.widgets.func,\r\n customProps: {\r\n showSearch: true,\r\n },\r\n },\r\n select: {\r\n ...BasicConfig.widgets.select,\r\n },\r\n customDate: {\r\n ...BasicConfig.widgets.number,\r\n type: 'customDate',\r\n },\r\n}\r\n\r\nconst types = {\r\n ...BasicConfig.types,\r\n text: {\r\n ...BasicConfig.types.text,\r\n operators: ['equal', 'not_equal'],\r\n },\r\n customDate: {\r\n ...BasicConfig.types.number,\r\n defaultOperator: 'days',\r\n operators: ['days', 'weeks', 'months', 'quarters', 'years'],\r\n widgets: {\r\n ...BasicConfig.types.number.widgets,\r\n number: {\r\n ...BasicConfig.types.number.widgets.number,\r\n operators: ['days', 'weeks', 'months', 'quarters', 'years'],\r\n },\r\n },\r\n },\r\n customThisDate: {\r\n ...BasicConfig.types.number,\r\n defaultOperator: 'day',\r\n operators: ['day', 'week', 'month', 'quarter', 'year'],\r\n widgets: {\r\n ...BasicConfig.types.number.widgets,\r\n number: {\r\n ...BasicConfig.types.number.widgets.number,\r\n operators: ['day', 'week', 'month', 'quarter', 'year'],\r\n },\r\n },\r\n },\r\n date: {\r\n ...BasicConfig.types.date,\r\n defaultOperator: 'today',\r\n operators: commonOperatorsForDateAndDateTime,\r\n widgets: {\r\n ...BasicConfig.types.date.widgets,\r\n date: {\r\n ...BasicConfig.types.date.widgets.date,\r\n operators: commonOperatorsForDateAndDateTime,\r\n },\r\n },\r\n },\r\n datetime: {\r\n ...BasicConfig.types.datetime,\r\n defaultOperator: 'today',\r\n operators: commonOperatorsForDateAndDateTime,\r\n widgets: {\r\n ...BasicConfig.types.datetime.widgets,\r\n date: {\r\n ...BasicConfig.types.date.widgets.date,\r\n operators: commonOperatorsForDateAndDateTime,\r\n },\r\n },\r\n },\r\n}\r\n\r\nexport default {\r\n ...BasicConfig,\r\n conjunctions: {\r\n AND: {\r\n ...BasicConfig.conjunctions,\r\n label: 'And',\r\n },\r\n OR: { ...BasicConfig.conjunctions, label: 'Or' },\r\n },\r\n settings: {\r\n ...BasicConfig.settings,\r\n showNot: false,\r\n },\r\n widgets,\r\n operators,\r\n types,\r\n}\r\n","import { Component } from 'react'\r\n\r\nclass Button extends Component {\r\n constructor() {\r\n super()\r\n this.state = { disable: false, loading: false }\r\n }\r\n\r\n static getDerivedStateFromProps(nextProps, prevState) {\r\n if (prevState.disable !== nextProps.disable || prevState.loading !== nextProps.loading) {\r\n return {\r\n disable: nextProps.disable,\r\n loading: nextProps.loading,\r\n }\r\n }\r\n return null\r\n }\r\n\r\n render() {\r\n return (\r\n {\r\n if (this.state.loading) {\r\n return false\r\n }\r\n return this.props?.action()\r\n }}\r\n // eslint-disable-next-line react/button-has-type\r\n type={this.props.type || 'button'}\r\n className={`${this.state.disable && 'isDisabled'} ${!this.props.width ? 'w-32' : this.props.width} ${\r\n !this.props.single ? 'mr-5' : 'mr-0'\r\n } ${\r\n this.props.secondary\r\n ? 'text-gray-700 bg-white hover:text-gray-900 active:text-gray-800 active:bg-gray-100'\r\n : `text-white ${this.props?.color ? `bg-${this.props?.color}-500` : 'bg-primarycolor'} ${\r\n this.props?.color ? `hover:bg-${this.props?.color}-700` : 'hover:bg-hovercolor'\r\n } focus:outline-none focus:border-primary focus:shadow-outline-${this.props?.color || 'green'} `\r\n } px-4 py-2 justify-center items-center flex whitespace-nowrap text-xs leading-5 font-medium rounded-sm focus:outline-none focus:shadow-outline-blue transition ease-in-out duration-150 relative ${\r\n this.props.className\r\n }`}\r\n >\r\n {this.state.loading ? (\r\n <>\r\n loading\r\n {this.props.loadingText || 'Saving ...'}\r\n \r\n ) : (\r\n this.props.children\r\n )}\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default Button\r\n","import Button from 'components/Portions/Button'\r\nimport { Component } from 'react'\r\nimport ScrollArea from 'react-scrollbar'\r\n\r\nexport default class Modal extends Component {\r\n constructor() {\r\n super()\r\n this.state = { disable: false, loading: false }\r\n }\r\n\r\n static getDerivedStateFromProps(nextProps, prevState) {\r\n if (prevState.disable !== nextProps.disable || prevState.loading !== nextProps.loading) {\r\n return {\r\n disable: nextProps.disable,\r\n loading: nextProps.loading,\r\n }\r\n }\r\n return null\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n \r\n {this.props.children}\r\n \r\n
\r\n {this.props?.action && (\r\n \r\n {this.props?.action?.text || 'Save'}\r\n \r\n )}\r\n {this.props?.cancel && (\r\n {} : this.props?.cancel?.handler}\r\n className={this.props?.cancel?.className}\r\n secondary\r\n >\r\n {this.props?.cancel?.text || 'Cancel'}\r\n \r\n )}\r\n
\r\n \r\n )\r\n }\r\n}\r\n","import { Component } from 'react'\r\n\r\n// eslint-disable-next-line react/prefer-stateless-function\r\nexport default class ModalContainer extends Component {\r\n render() {\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n

{this.props.title}

\r\n {this.props.description &&

{this.props.description}

}\r\n
\r\n {this.props.close && (\r\n
\r\n \r\n \r\n \r\n \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","/* eslint-disable react/no-unused-state */\r\n/* eslint-disable no-shadow */\r\nimport MapLabFiltersConfig from 'components/FetchData/Modals/FilterModal/FilterQueryBuilder.config'\r\nimport Modal from 'components/Utilities/Modal'\r\nimport ModalContainer from 'components/Utilities/ModalContainer'\r\nimport { Component } from 'react'\r\nimport { Builder, Utils as QbUtils, Query } from 'react-awesome-query-builder'\r\n\r\nconst operatorMapping = {\r\n equal: 'eq',\r\n not_equal: 'ne',\r\n greater: 'gt',\r\n greater_or_equal: 'ge',\r\n less: 'lt',\r\n less_or_equal: 'le',\r\n between: 'between',\r\n not_between: 'not_between',\r\n is_empty: 'is_empty',\r\n is_not_empty: 'is_not_empty',\r\n today: 'today',\r\n yesterday: 'yesterday',\r\n}\r\nconst typesMapping = {\r\n boolean: 'boolean',\r\n decimal: 'number',\r\n number: 'number',\r\n float: 'number',\r\n int: 'number',\r\n numeric: 'number',\r\n str: 'text',\r\n text: 'text',\r\n date: 'datetime',\r\n datetime: 'datetime',\r\n timestamp: 'datetime',\r\n time: 'time',\r\n}\r\n\r\nconst types = {\r\n text: {\r\n type: 'text',\r\n fieldSettings: {\r\n min: 0,\r\n },\r\n },\r\n number: {\r\n type: 'number',\r\n fieldSettings: {\r\n min: 0,\r\n },\r\n },\r\n datetime: {\r\n type: '!group',\r\n subfields: {\r\n Default: {\r\n type: 'datetime',\r\n },\r\n Past: {\r\n type: 'customDate',\r\n operators: ['days', 'weeks', 'months', 'quarters', 'years'],\r\n defaultValue: 1,\r\n fieldSettings: {\r\n min: 0,\r\n },\r\n valueSources: ['value'],\r\n initialEmptyWhere: false,\r\n },\r\n This: {\r\n type: 'customThisDate',\r\n operators: ['day', 'week', 'month', 'quarter', 'year'],\r\n valueSources: ['value'],\r\n },\r\n Next: {\r\n type: 'customDate',\r\n operators: ['days', 'weeks', 'months', 'quarters', 'years'],\r\n defaultValue: 1,\r\n fieldSettings: {\r\n min: 0,\r\n },\r\n valueSources: ['value'],\r\n initialEmptyWhere: false,\r\n },\r\n },\r\n },\r\n boolean: {\r\n type: 'boolean',\r\n widgets: {\r\n boolean: {\r\n widgetProps: {\r\n labelYes: 'True',\r\n labelNo: 'False',\r\n },\r\n },\r\n },\r\n },\r\n time: {\r\n type: 'time',\r\n },\r\n}\r\n// eslint-disable-next-line react/prefer-stateless-function\r\nexport default class FilterModal extends Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n config: {},\r\n columns: [],\r\n tree: null,\r\n filters: [],\r\n jsonTree: {},\r\n CURRENT_TS: 'currentTimeStamp(days=0)',\r\n }\r\n }\r\n\r\n componentDidMount = () => {\r\n const config = { ...MapLabFiltersConfig, fields: {} }\r\n\r\n this.props.columns\r\n .filter((x) => Object.keys(typesMapping).includes(x.type))\r\n .forEach((column) => {\r\n config.fields[column.name] = { ...types[typesMapping[column.type]], label: column.name }\r\n })\r\n\r\n this.setState({\r\n filters: this.props.filters,\r\n jsonTree: this.props.jsonTree,\r\n columns: this.props.columns,\r\n config,\r\n tree:\r\n Object.keys(this.props.jsonTree).length >= 1\r\n ? QbUtils.checkTree(QbUtils.loadTree(this.props.jsonTree), config)\r\n : QbUtils.checkTree(QbUtils.loadTree({ id: QbUtils.uuid(), type: 'group' }), config),\r\n })\r\n }\r\n\r\n renderBuilder = (props) => (\r\n
\r\n
\r\n \r\n
\r\n
\r\n )\r\n\r\n onChange = (immutableTree) => {\r\n // Tip: for better performance you can apply `throttle` - see `examples/demo`\r\n this.setState({ tree: immutableTree })\r\n\r\n const jsonTree = QbUtils.getTree(immutableTree)\r\n this.setState({ jsonTree, filters: this.rulesToFilters(jsonTree) })\r\n\r\n // `jsonTree` can be saved to backend, and later loaded to `queryValue`\r\n }\r\n\r\n filterOperator = ({ operator, field, value }, type) => {\r\n console.log({ operator, field, value }, type)\r\n switch (type) {\r\n case 'This': {\r\n switch (operator) {\r\n case 'day': {\r\n return {\r\n col_name: field,\r\n symbol: operatorMapping.equal,\r\n value: this.state.CURRENT_TS,\r\n }\r\n }\r\n case 'week': {\r\n return {\r\n col_name: field,\r\n symbol: operatorMapping.between,\r\n value: ['currentWeek(weeks=0)', this.state.CURRENT_TS],\r\n }\r\n }\r\n case 'month': {\r\n return {\r\n col_name: field,\r\n symbol: operatorMapping.between,\r\n value: ['currentMonth(months=0)', this.state.CURRENT_TS],\r\n }\r\n }\r\n case 'quarter': {\r\n return {\r\n col_name: field,\r\n symbol: operatorMapping.between,\r\n value: ['currentQuarter(quarters=0)', this.state.CURRENT_TS],\r\n }\r\n }\r\n case 'year': {\r\n return {\r\n col_name: field,\r\n symbol: operatorMapping.between,\r\n value: ['currentYear(years=0)', this.state.CURRENT_TS],\r\n }\r\n }\r\n default: {\r\n return {}\r\n }\r\n }\r\n }\r\n case 'Past':\r\n case 'Next': {\r\n switch (operator) {\r\n case 'days': {\r\n const actualValue =\r\n !value?.length || value[0] === 0\r\n ? `currentTimeStamp(days=${type === 'Past' ? -1 : 1})`\r\n : `currentTimeStamp(days=${type === 'Past' ? -Number(value[0]) : Number(value[0])})`\r\n return {\r\n col_name: field,\r\n symbol: operatorMapping.between,\r\n value: type === 'Past' ? [actualValue, this.state.CURRENT_TS] : [this.state.CURRENT_TS, actualValue],\r\n }\r\n }\r\n case 'weeks': {\r\n const actualValue =\r\n !value?.length || value[0] === 0\r\n ? `currentWeek(weeks=${type === 'Past' ? -1 : 1})`\r\n : `currentWeek(weeks=${type === 'Past' ? -Number(value[0]) : Number(value[0])})`\r\n return {\r\n col_name: field,\r\n symbol: operatorMapping.between,\r\n value: type === 'Past' ? [actualValue, this.state.CURRENT_TS] : [this.state.CURRENT_TS, actualValue],\r\n }\r\n }\r\n case 'months': {\r\n const actualValue =\r\n !value?.length || value[0] === 0\r\n ? `currentMonth(months=${type === 'Past' ? -1 : 1})`\r\n : `currentMonth(months=${type === 'Past' ? -Number(value[0]) : Number(value[0])})`\r\n return {\r\n col_name: field,\r\n symbol: operatorMapping.between,\r\n value: type === 'Past' ? [actualValue, this.state.CURRENT_TS] : [this.state.CURRENT_TS, actualValue],\r\n }\r\n }\r\n case 'quarters': {\r\n const actualValue =\r\n !value?.length || value[0] === 0\r\n ? `currentQuarter(quarters=${type === 'Past' ? -1 : 1})`\r\n : `currentQuarter(quarters=${type === 'Past' ? -Number(value[0]) : Number(value[0])})`\r\n return {\r\n col_name: field,\r\n symbol: operatorMapping.between,\r\n value: type === 'Past' ? [actualValue, this.state.CURRENT_TS] : [this.state.CURRENT_TS, actualValue],\r\n }\r\n }\r\n case 'years': {\r\n const actualValue =\r\n !value?.length || value[0] === 0\r\n ? `currentYear(years=${type === 'Past' ? -1 : 1})`\r\n : `currentYear(years=${type === 'Past' ? -Number(value[0]) : Number(value[0])})`\r\n return {\r\n col_name: field,\r\n symbol: operatorMapping.between,\r\n value: type === 'Past' ? [actualValue, this.state.CURRENT_TS] : [this.state.CURRENT_TS, actualValue],\r\n }\r\n }\r\n default: {\r\n return {}\r\n }\r\n }\r\n }\r\n default: {\r\n switch (operator) {\r\n case 'not_between':\r\n case 'between': {\r\n return {\r\n col_name: field,\r\n symbol: operatorMapping[operator],\r\n value,\r\n }\r\n }\r\n case 'is_null':\r\n case 'is_not_null': {\r\n return {\r\n col_name: field,\r\n symbol: operator === 'is_null' ? operatorMapping.equal : operatorMapping.not_equal,\r\n value: null,\r\n }\r\n }\r\n case 'is_empty':\r\n case 'is_not_empty': {\r\n return {\r\n col_name: field,\r\n symbol: operator === 'is_empty' ? operatorMapping.equal : operatorMapping.not_equal,\r\n value: null,\r\n }\r\n }\r\n case 'today': {\r\n return {\r\n col_name: field,\r\n symbol: operatorMapping.greater_or_equal,\r\n value: 'currentDate(days=0)',\r\n }\r\n }\r\n case 'yesterday': {\r\n return {\r\n col_name: field,\r\n symbol: operatorMapping.between,\r\n value: 'currentDate(days=-1)',\r\n }\r\n }\r\n default: {\r\n return {\r\n col_name: field,\r\n symbol: operatorMapping[operator],\r\n value: value[0],\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n rulesToFilters = (rules) => {\r\n return Object.values(rules?.children1)\r\n .flatMap((r) => {\r\n if (r.type === 'rule') {\r\n return this.filterOperator(r.properties)\r\n }\r\n\r\n if ((r.type === 'rule_group' || r.type === 'group') && r.children1) {\r\n return Object.values(r?.children1).map((innerRule) => {\r\n if (innerRule.properties?.field?.includes('Past')) {\r\n return this.filterOperator({ ...innerRule.properties, field: r.properties.field }, 'Past')\r\n }\r\n if (innerRule.properties?.field?.includes('This')) {\r\n return this.filterOperator({ ...innerRule.properties, field: r.properties.field }, 'This')\r\n }\r\n if (innerRule.properties?.field?.includes('Next')) {\r\n return this.filterOperator({ ...innerRule.properties, field: r.properties.field }, 'Next')\r\n }\r\n return this.filterOperator({ ...innerRule.properties, field: r.properties.field })\r\n })\r\n }\r\n return {}\r\n })\r\n .filter((f) => f.value !== undefined)\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {\r\n this.props.action.handler(\r\n this.state.jsonTree,\r\n this.state.filters,\r\n this.state.jsonTree?.properties?.conjunction || 'AND',\r\n )\r\n },\r\n }}\r\n >\r\n {this.state.tree && (\r\n \r\n )}\r\n \r\n \r\n )\r\n }\r\n}\r\n","/* eslint-disable react/prefer-stateless-function */\r\nimport Modal from 'components/Utilities/Modal'\r\nimport ModalContainer from 'components/Utilities/ModalContainer'\r\nimport { Component } from 'react'\r\nimport { connect } from 'react-redux'\r\nimport SqlEditor from 'react-sql-editor'\r\nimport { setErrorHandler } from 'store/actions/errorsActions'\r\n\r\nclass QueryModal extends Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n modalLoading: false,\r\n }\r\n }\r\n\r\n setSqlQuery = (query) => {\r\n this.setState({ query })\r\n }\r\n\r\n save = () => {\r\n this.props.getQuery(this.state.query)\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n

Sql Editor

\r\n {\r\n this.setSqlQuery(e)\r\n }}\r\n validatorConfig={{\r\n maxSqlNum: 1,\r\n }}\r\n />\r\n \r\n
\r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({})\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setErrorHandler: (data) => dispatch(setErrorHandler(data)),\r\n})\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(QueryModal)\r\n","import React, { Component } from 'react'\r\n\r\nexport default class Text extends Component {\r\n constructor() {\r\n super()\r\n this.state = {}\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n {this.props.children}\r\n
\r\n )\r\n }\r\n}\r\n","import React, { Component } from 'react'\r\n// eslint-disable-next-line absolute-import/no-relative-path\r\nimport Text from './Text'\r\n\r\nexport default class Loading extends Component {\r\n constructor() {\r\n super()\r\n this.state = { value: true }\r\n }\r\n\r\n static getDerivedStateFromProps(props, state) {\r\n if (props.value !== state.value) {\r\n return {\r\n value: props.value,\r\n }\r\n }\r\n return null\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n {this.state.value ? (\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n Loading please wait\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","export const SETTINGS = {\r\n DROPBOX_CLIENT_ID: '',\r\n DROPBOX_CLIENT_NAME: '',\r\n REPORT_BUG: 'https://form.jotform.com/213223240549549',\r\n\r\n APP_URL: process.env.REACT_APP_APP_URL,\r\n BASE_URL: process.env.REACT_APP_BASE_URL,\r\n\r\n MAPBOX_TOKEN: process.env.REACT_APP_MAPBOX_TOKEN,\r\n PUBLIC_USER_TOKEN: process.env.REACT_APP_PUBLIC_USER_TOKEN,\r\n}\r\n","import axios from 'axios'\r\nimport { SETTINGS } from 'constants/default-settings'\r\n\r\nexport const baseURL = SETTINGS.BASE_URL\r\n\r\nconst mainService = axios.create({\r\n baseURL,\r\n headers: {\r\n Authorization: `Token ${\r\n localStorage.getItem('token') ? localStorage.getItem('token') : SETTINGS.PUBLIC_USER_TOKEN\r\n }`,\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json',\r\n },\r\n})\r\n\r\nmainService.interceptors.request.use((config) => {\r\n /* let loadinBar = document.getElementById(\"loadinBar\");\r\n let bar = loadinBar.querySelector(\"span\");\r\n\r\n bar.classList.remove(\"w-3/4\");\r\n bar.classList.add(\"w-full\");\r\n\r\n setTimeout(() => {\r\n document.body.classList.remove(\"load\");\r\n }, 500); */\r\n\r\n return config\r\n})\r\n\r\nmainService.interceptors.request.use((response) => {\r\n /* document.body.classList.add(\"load\");\r\n\r\n let loadinBar = document.getElementById(\"loadinBar\");\r\n let bar = loadinBar.querySelector(\"span\");\r\n\r\n setTimeout(() => {\r\n bar.classList.add(\"w-1/4\");\r\n }, 100);\r\n setTimeout(() => {\r\n bar.classList.remove(\"w-1/4\");\r\n bar.classList.add(\"w-2/4\");\r\n }, 800);\r\n setTimeout(() => {\r\n bar.classList.remove(\"w-2/4\");\r\n bar.classList.add(\"w-3/4\");\r\n }, 1500); */\r\n\r\n return response\r\n})\r\n\r\nexport default mainService\r\n","/* eslint-disable linebreak-style */\r\nimport mainService from 'services/mainService'\r\n\r\nexport function databaseRecords(data) {\r\n let parameters = ''\r\n\r\n // eslint-disable-next-line guard-for-in\r\n for (const key in data) {\r\n const value = data[key]\r\n switch (key) {\r\n case 'order':\r\n parameters = `${parameters}&order=${value.type}.${value.order}`\r\n break\r\n case 'page':\r\n parameters = `${parameters}&page=${value}`\r\n break\r\n case 'count':\r\n parameters = `${parameters}&limit=${value}`\r\n break\r\n case 'filter':\r\n if (value.length >= 1) {\r\n parameters = `${parameters}&filter=${value}`\r\n }\r\n break\r\n case 'search':\r\n if (value.length >= 1) {\r\n parameters = `${parameters}&search=${value.join(',')}`\r\n }\r\n break\r\n default:\r\n break\r\n }\r\n }\r\n return mainService\r\n .get(`databases/records?rand=${new Date().getTime()}${parameters}`)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\n\r\nexport function databaseRecord(uuid) {\r\n return mainService\r\n .get(`databases/${uuid}`)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\n\r\nexport function databaseList() {\r\n return mainService\r\n .get(`databases/list`)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\n\r\nexport function databaseUpdate(uuid, data) {\r\n return mainService\r\n .put(`databases/${uuid}/update`, data)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\nexport function databaseDelete(uuid) {\r\n return mainService\r\n .delete(`databases/${uuid}/delete`)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\nexport function databaseRefresh(uuid) {\r\n return mainService\r\n .get(`databases/${uuid}/refresh`)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\n\r\nexport function databaseCheck(uuid) {\r\n return mainService\r\n .get(`databases/${uuid}/check`)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\n\r\nexport function databaseCreate(data) {\r\n return mainService\r\n .post('databases/create', data)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\n","/* eslint-disable linebreak-style */\r\nimport axios from 'axios'\r\n\r\nconst gogleService = axios.create({\r\n headers: {\r\n 'Access-Control-Allow-Origin': ['http://localhost:3000'],\r\n 'Content-Type': 'application/octet-stream',\r\n },\r\n})\r\n\r\ngogleService.interceptors.request.use((config) => {\r\n /* let loadinBar = document.getElementById(\"loadinBar\");\r\n let bar = loadinBar.querySelector(\"span\");\r\n\r\n bar.classList.remove(\"w-3/4\");\r\n bar.classList.add(\"w-full\");\r\n\r\n setTimeout(() => {\r\n document.body.classList.remove(\"load\");\r\n }, 500); */\r\n\r\n return config\r\n})\r\n\r\ngogleService.interceptors.request.use((response) => {\r\n /* document.body.classList.add(\"load\");\r\n\r\n let loadinBar = document.getElementById(\"loadinBar\");\r\n let bar = loadinBar.querySelector(\"span\");\r\n\r\n setTimeout(() => {\r\n bar.classList.add(\"w-1/4\");\r\n }, 100);\r\n setTimeout(() => {\r\n bar.classList.remove(\"w-1/4\");\r\n bar.classList.add(\"w-2/4\");\r\n }, 800);\r\n setTimeout(() => {\r\n bar.classList.remove(\"w-2/4\");\r\n bar.classList.add(\"w-3/4\");\r\n }, 1500); */\r\n\r\n return response\r\n})\r\n\r\nexport default gogleService\r\n","/* eslint-disable linebreak-style */\r\nimport googleService from 'services/googleService'\r\nimport mainService from 'services/mainService'\r\n\r\nexport function datasetDynamic(data) {\r\n return mainService\r\n .post(`datasets/dynamic`, data)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\n\r\nexport function datasetFetch(data) {\r\n return mainService\r\n .post(`datasets/fetch`, data)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\n\r\nexport function datasetQuery(data) {\r\n return mainService\r\n .post(`datasets/query`, data)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\nexport function datasetSave(data) {\r\n return mainService.post(`datasets/save`, data)\r\n}\r\nexport function datasetToken(data) {\r\n return mainService.post(`datasets/token`, data)\r\n}\r\n\r\nexport function datasetUpload(token, filename, geoJson) {\r\n const bucketName = 'davinci-web-assets'\r\n const url = `https://storage.googleapis.com/upload/storage/v1/b/${bucketName}/o?uploadType=resumable&name=${filename}&upload_id=${token}`\r\n /// const shareableUrl = `https://storage.googleapis.com/${bucketName}/${filename}`\r\n const strGeoJson = JSON.stringify(geoJson)\r\n const blob = new Blob([strGeoJson], { type: 'application/octet-stream' })\r\n\r\n return googleService.put(url, blob)\r\n}\r\n\r\nexport function datasetDownload(url) {\r\n return googleService\r\n .get(url)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\n\r\nexport function datasetFunction(type, data) {\r\n return mainService\r\n .post(`datasets/function/${type}`, data)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\n","/* eslint-disable linebreak-style */\r\nimport mainService from 'services/mainService'\r\n\r\nexport function sessionRecords(data) {\r\n let parameters = ''\r\n\r\n // eslint-disable-next-line guard-for-in\r\n for (const key in data) {\r\n const value = data[key]\r\n switch (key) {\r\n case 'limit':\r\n parameters = `${parameters}&limit=${value}`\r\n break\r\n case 'order':\r\n parameters = `${parameters}&order=${value.type}.${value.order}`\r\n break\r\n case 'page':\r\n parameters = `${parameters}&page=${value}`\r\n break\r\n case 'count':\r\n parameters = `${parameters}&limit=${value}`\r\n break\r\n case 'user':\r\n parameters = `${parameters}&user=${value}`\r\n break\r\n case 'filter':\r\n if (value.length >= 1) {\r\n parameters = `${parameters}&filter=${value}`\r\n }\r\n break\r\n case 'search':\r\n if (value.length >= 1) {\r\n parameters = `${parameters}&search=${value}`\r\n }\r\n break\r\n default:\r\n break\r\n }\r\n }\r\n return mainService\r\n .get(`sessions/records?rand=${new Date().getTime()}${parameters}`)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\n\r\nexport function sessionRetrive(code) {\r\n return mainService\r\n .get(`sessions/${code}`)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\n\r\nexport function sessionList() {\r\n return mainService\r\n .get(`sessions/list`)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\n\r\nexport function sessionSave(data) {\r\n return mainService\r\n .put(`sessions/save`, data)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\nexport function sessionDelete(uuid) {\r\n return mainService\r\n .delete(`sessions/${uuid}/delete`)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\nexport function sessionImage(uuid) {\r\n return mainService\r\n .get(`sessions/${uuid}/image`)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\n","export function setMapRef(mapRef) {\r\n return {\r\n type: 'MAP_REF',\r\n payload: mapRef,\r\n }\r\n}\r\n\r\nexport function setMapCode(code) {\r\n return {\r\n type: 'MAP_CODE',\r\n payload: code,\r\n }\r\n}\r\n\r\nexport function addDataset(dataset) {\r\n return {\r\n type: 'ADD_DATASET',\r\n payload: dataset,\r\n }\r\n}\r\n\r\nexport function updateDataset(uuid, key, value) {\r\n return {\r\n type: 'UPDATE_DATASET',\r\n payload: { uuid, key, value },\r\n }\r\n}\r\n\r\nexport function addFunction(fn) {\r\n return {\r\n type: 'ADD_FUNCTION',\r\n payload: fn,\r\n }\r\n}\r\n\r\nexport function updateFunction(uuid, value) {\r\n return {\r\n type: 'UPDATE_FUNCTION',\r\n payload: { uuid, value },\r\n }\r\n}\r\nexport function deleteFunction(uuid) {\r\n return {\r\n type: 'DELETE_FUNCTION',\r\n payload: uuid,\r\n }\r\n}\r\n\r\nexport function deleteAllFunction() {\r\n return {\r\n type: 'DELETE_ALL_FUNCTION',\r\n }\r\n}\r\n\r\nexport function setDatabses(databses) {\r\n return {\r\n type: 'SET_DATABASES',\r\n payload: databses,\r\n }\r\n}\r\n\r\nexport function clearDataset() {\r\n return {\r\n type: 'CLEAR_DATASET',\r\n }\r\n}\r\n\r\nexport function setResetMap(fn) {\r\n return {\r\n type: 'SET_RESET_MAP',\r\n payload: fn,\r\n }\r\n}\r\nexport function setToggleModal(fn) {\r\n return {\r\n type: 'SET_TOGGLE_MODAL',\r\n payload: fn,\r\n }\r\n}\r\n\r\nexport function setSession(session) {\r\n return {\r\n type: 'SET_SESSION',\r\n payload: session,\r\n }\r\n}\r\n\r\nexport function clearSession(session) {\r\n return {\r\n type: 'CLEAR_SESSION',\r\n }\r\n}\r\nexport function controlSideBar(state) {\r\n return {\r\n type: 'CONTROL_SIDEBAR',\r\n payload: state,\r\n }\r\n}\r\nexport function controlLoading(state) {\r\n return {\r\n type: 'CONTROL_LOADING',\r\n payload: state,\r\n }\r\n}\r\n","import DatabasesList from 'components/FetchData/DatabasesList'\r\nimport FilterModal from 'components/FetchData/Modals/FilterModal/FilterModal'\r\nimport QueryModal from 'components/FetchData/Modals/QueryModal'\r\nimport Button from 'components/Portions/Button'\r\nimport Loading from 'components/Portions/Loading'\r\nimport { addDataToMap, removeDataset, resetMapConfig, toggleSplitMap, wrapTo } from 'kepler.gl/actions'\r\nimport { toggleMapControl } from 'kepler.gl/dist/actions/ui-state-actions'\r\nimport { setMapInfo } from 'kepler.gl/dist/actions/vis-state-actions'\r\nimport { processCsvData, processGeojson, processRowObject } from 'kepler.gl/processors'\r\nimport KeplerGlSchema from 'kepler.gl/schemas'\r\nimport { Component } from 'react'\r\nimport { connect } from 'react-redux'\r\nimport { databaseList } from 'services/database'\r\nimport { datasetDownload, datasetDynamic, datasetFetch, datasetFunction, datasetQuery } from 'services/dataset'\r\nimport { sessionRetrive } from 'services/session'\r\nimport { setErrorHandler } from 'store/actions/errorsActions'\r\nimport {\r\n addDataset,\r\n addFunction,\r\n clearDataset,\r\n clearSession,\r\n controlLoading,\r\n controlSideBar,\r\n deleteAllFunction,\r\n setDatabses,\r\n setResetMap,\r\n // eslint-disable-next-line prettier/prettier\r\n setSession,\r\n} from 'store/actions/viewActions'\r\n// eslint-disable-next-line react/prefer-stateless-function\r\nclass FetchData extends Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n selectedDatabase: null,\r\n selectedTable: null,\r\n queryModal: false,\r\n filterModal: false,\r\n loading: false,\r\n // modalLoading: false,\r\n items: [],\r\n code: null,\r\n filters: [],\r\n filterConjunction: 'AND',\r\n jsonTree: {},\r\n\r\n currentInstance: this,\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n if (!this.props.code) {\r\n this.props.controlLoading(false)\r\n }\r\n this.props.setResetMap(this.resetMap)\r\n this.getItems()\r\n }\r\n\r\n static getDerivedStateFromProps(props, state) {\r\n if (JSON.stringify(props.databases) !== JSON.stringify(state.items)) {\r\n return { items: props.databases }\r\n }\r\n if (JSON.stringify(props.code) !== JSON.stringify(state.code)) {\r\n state.currentInstance.getSession(props.code)\r\n return { code: props.code }\r\n }\r\n return false\r\n }\r\n\r\n getSession = (code) => {\r\n sessionRetrive(code)\r\n .then((respond) => {\r\n Object.keys(respond.data?.config?.mapControls).forEach((x) => {\r\n if (respond.data?.config?.mapControls[x].active) {\r\n this.props.toggleMapControl(x)\r\n }\r\n })\r\n\r\n if (respond.meta.sameOrganization) {\r\n this.getItems()\r\n this.props.controlSideBar(true)\r\n }\r\n\r\n this.props.setSession(respond.data)\r\n this.props.setMapInfo({ title: respond.data.title, description: respond.data.description })\r\n respond.data.datasets.forEach((dataset) => {\r\n if (dataset.type === 'dynamic') {\r\n this.setDynamic({ ...dataset.request, uuid: dataset.uuid, id: dataset.id }, false, true)\r\n } else if (dataset.type === 'query') {\r\n this.runQuery({ ...dataset.request, uuid: dataset.uuid, id: dataset.id }, false, true)\r\n } else if (dataset.type === 'function') {\r\n this.runFunction(\r\n { ...dataset.request, query: dataset.query, uuid: dataset.uuid, id: dataset.id },\r\n dataset.respond,\r\n false,\r\n true,\r\n )\r\n } else {\r\n this.getFile({ ...dataset.file, uuid: dataset.uuid, id: dataset.id }, false, true)\r\n }\r\n })\r\n })\r\n .catch((error) => {\r\n this.props.setErrorHandler(error.response)\r\n })\r\n }\r\n\r\n // eslint-disable-next-line consistent-return\r\n getItems = (loading = true) => {\r\n if (this.props.publicUser) {\r\n return false\r\n }\r\n this.setState({ loading }, () => {\r\n databaseList()\r\n .then((respond) => {\r\n this.setState(\r\n {\r\n loading: false,\r\n filters: [],\r\n filterConjunction: 'AND',\r\n jsonTree: {},\r\n },\r\n () => {\r\n this.props.setDatabses(respond.data)\r\n },\r\n )\r\n })\r\n .catch((error) => {\r\n this.props.setErrorHandler(error.response)\r\n })\r\n })\r\n }\r\n\r\n selectTable = (database, table) => {\r\n this.setState({\r\n selectedDatabase: database,\r\n selectedTable: table,\r\n filters: [],\r\n filterConjunction: 'AND',\r\n jsonTree: {},\r\n })\r\n }\r\n\r\n toggleQueryModal = () => {\r\n this.setState({\r\n // eslint-disable-next-line react/no-access-state-in-setstate\r\n queryModal: !this.state.queryModal,\r\n })\r\n }\r\n\r\n toggleFilterModal = () => {\r\n this.setState({\r\n // eslint-disable-next-line react/no-access-state-in-setstate\r\n filterModal: !this.state.filterModal,\r\n })\r\n }\r\n\r\n // for static files\r\n getFile = (request, draw, init) => {\r\n datasetDownload(request.url)\r\n .then(async (data) => {\r\n const dataset = {\r\n file: request,\r\n request: {},\r\n type: 'static',\r\n save: 'static',\r\n respond: { queryType: 'static', pages: 1, page: 1, uuid: request.uuid, id: request.id, dataType: 'ROW' },\r\n raw: data,\r\n info: {\r\n sid: request.id,\r\n id: request.uuid,\r\n label: request.label,\r\n },\r\n loading: false,\r\n }\r\n await this.props.addDataset({ [request.uuid]: dataset })\r\n this.drawData(request, dataset.respond, draw, init)\r\n })\r\n .catch((error) => {\r\n this.setState({ modalLoading: false })\r\n this.props.setErrorHandler(error.response)\r\n })\r\n }\r\n\r\n // for dynamic and user query\r\n fetchData = (request, respond, draw, init) => {\r\n if (respond.page <= respond.pages) {\r\n datasetFetch(respond)\r\n .then(async (data) => {\r\n // eslint-disable-next-line no-nested-ternary\r\n let raw = respond.page > 1 ? this.props.datasets[respond.uuid].raw : respond.dataType === 'CSV' ? '' : []\r\n\r\n // eslint-disable-next-line no-nested-ternary\r\n raw = respond.dataType === 'CSV' ? (raw ? [raw, data].join(' /n ') : data) : raw.concat(data)\r\n\r\n const dataset = {\r\n request,\r\n type: respond.queryType,\r\n save: respond.queryType === 'static' ? 'static' : 'dynamic',\r\n respond: { ...respond, page: respond.page + 1 },\r\n raw,\r\n info: {\r\n sid: respond.id,\r\n id: respond.uuid,\r\n label: respond.label,\r\n },\r\n loading: respond.page !== respond.pages,\r\n }\r\n await this.props.addDataset({ [respond.uuid]: dataset })\r\n\r\n this.fetchData(request, this.props.datasets[respond.uuid].respond, draw, init)\r\n })\r\n .catch((error) => {\r\n this.setState({ modalLoading: false })\r\n this.props.setErrorHandler(error.response)\r\n })\r\n } else {\r\n this.drawData(request, respond, draw, init)\r\n }\r\n }\r\n\r\n processData = (data, type) => {\r\n switch (type) {\r\n case 'GEOJSON':\r\n return processGeojson({\r\n type: 'FeatureCollection',\r\n features: data,\r\n })\r\n case 'ROW':\r\n return processRowObject(data)\r\n case 'CSV':\r\n return processCsvData(data)\r\n default:\r\n break\r\n }\r\n return data\r\n }\r\n\r\n fixLngValue = (value) => {\r\n if (value > 180) {\r\n return 180\r\n }\r\n if (value < -180) {\r\n return -180\r\n }\r\n return value\r\n }\r\n\r\n getBbox = () => {\r\n const mapGetBounds = this.props.mapRef.getMap().getBounds()\r\n\r\n const mapBounds = [\r\n {\r\n min_lat: parseFloat(mapGetBounds.getSouthWest().lat.toFixed(6)),\r\n max_lat: parseFloat(mapGetBounds.getNorthEast().lat.toFixed(6)),\r\n min_lon: this.fixLngValue(parseFloat(mapGetBounds.getSouthWest().lng.toFixed(6))),\r\n max_lon: this.fixLngValue(parseFloat(mapGetBounds.getNorthEast().lng.toFixed(6))),\r\n },\r\n ]\r\n return mapBounds\r\n }\r\n\r\n createDatasetObject = (savedDataset, dataType, multi = false) => {\r\n const processData = this.processData(savedDataset.raw, dataType)\r\n return {\r\n version: 'v1',\r\n info: savedDataset.info,\r\n data: multi\r\n ? {\r\n allData: processData.rows,\r\n fields: processData.fields,\r\n id: savedDataset.info.id,\r\n label: savedDataset.info.label,\r\n }\r\n : { id: savedDataset.info.id, label: savedDataset.info.label, ...processData },\r\n }\r\n }\r\n\r\n drawData = async (_request, respond, draw, init) => {\r\n const { datasets } = this.props\r\n\r\n if (draw) {\r\n const dataObject = {\r\n datasets: [this.createDatasetObject(datasets[respond.uuid], respond.dataType)],\r\n options: {\r\n centerMap: false,\r\n keepExistingConfig: !init,\r\n },\r\n }\r\n this.props.sendDataToMap(dataObject)\r\n } else if (Object.keys(this.props.datasets).length === this.props.session?.datasets.length) {\r\n const dataObjects = Object.keys(this.props.datasets).map((key) => {\r\n return this.createDatasetObject(this.props.datasets[key], this.props.datasets[key].respond.dataType, true)\r\n })\r\n\r\n const schemaData = KeplerGlSchema.load(dataObjects, this.props.session.config)\r\n\r\n this.props.sendDataToMap({\r\n ...schemaData,\r\n options: {\r\n centerMap: false,\r\n keepExistingConfig: false,\r\n },\r\n })\r\n if (init) {\r\n this.props.controlLoading(false)\r\n }\r\n }\r\n\r\n this.setState({ modalLoading: false })\r\n }\r\n\r\n setDynamic = (request, draw, init) => {\r\n this.runDynamic(request, draw, init)\r\n }\r\n\r\n getDynamic = () => {\r\n this.setState({ modalLoading: true }, () => {\r\n const request = {\r\n database: this.state.selectedDatabase.uuid,\r\n table: this.state.selectedTable.uuid,\r\n bboxs: this.getBbox(),\r\n filters: this.state.filters,\r\n filterConjunction: this.state.filterConjunction,\r\n }\r\n this.runDynamic(request, true, false)\r\n })\r\n }\r\n\r\n runDynamic = (request, draw, init) => {\r\n datasetDynamic(request)\r\n .then((respond) => {\r\n if (!respond.data.fullData) {\r\n this.props.setErrorHandler({\r\n status: 400,\r\n data: {\r\n errors: {\r\n messageType: 'WARN',\r\n message: 'The request you made is very large , the system returned sample of the data',\r\n },\r\n },\r\n })\r\n }\r\n if (respond.data.files) {\r\n this.fetchFilesData(request, respond.data, draw, init)\r\n } else {\r\n this.fetchData(request, respond.data, draw, init)\r\n }\r\n })\r\n .catch((error) => {\r\n this.setState({ modalLoading: false })\r\n this.props.setErrorHandler(error.response)\r\n })\r\n }\r\n\r\n // for dynamic and user query\r\n fetchFilesData = (request, respond, draw, init) => {\r\n console.log({ request, respond })\r\n if (respond.page <= respond.pages) {\r\n datasetDownload(respond.files[respond.page - 1])\r\n .then(async (data) => {\r\n // eslint-disable-next-line no-nested-ternary\r\n let raw = respond.page > 1 ? this.props.datasets[respond.uuid].raw : respond.dataType === 'CSV' ? '' : []\r\n\r\n // eslint-disable-next-line no-nested-ternary\r\n raw = respond.dataType === 'CSV' ? (raw ? [raw, data].join(' /n ') : data) : raw.concat(data)\r\n\r\n const dataset = {\r\n request,\r\n type: respond.queryType,\r\n save: respond.queryType === 'static' ? 'static' : 'dynamic',\r\n respond: { ...respond, page: respond.page + 1 },\r\n raw,\r\n info: {\r\n sid: respond.id,\r\n id: respond.uuid,\r\n label: respond.label,\r\n },\r\n loading: respond.page !== respond.pages,\r\n }\r\n await this.props.addDataset({ [respond.uuid]: dataset })\r\n\r\n this.fetchFilesData(request, this.props.datasets[respond.uuid].respond, draw, init)\r\n })\r\n .catch((error) => {\r\n this.setState({ modalLoading: false })\r\n this.props.setErrorHandler(error.response)\r\n })\r\n } else {\r\n this.drawData(request, respond, draw, init)\r\n }\r\n }\r\n\r\n setQuery = (request, draw, init) => {\r\n this.runQrunQuery(request, draw, init)\r\n }\r\n\r\n runQuery = (request, draw, init) => {\r\n datasetQuery(request)\r\n .then((respond) => {\r\n this.setState({ queryModal: false }, () => {\r\n if (!respond.data.fullData) {\r\n this.props.setErrorHandler({\r\n status: 400,\r\n data: {\r\n errors: {\r\n messageType: 'WARN',\r\n message: 'The request you made is very large , the system returned sample of the data',\r\n },\r\n },\r\n })\r\n }\r\n\r\n if (respond.data.files) {\r\n this.fetchFilesData(request, respond.data, draw, init)\r\n } else {\r\n this.fetchData(request, respond.data, draw, init)\r\n }\r\n })\r\n })\r\n .catch((error) => {\r\n this.setState({ modalLoading: false })\r\n this.props.setErrorHandler(error.response)\r\n })\r\n }\r\n\r\n runFunction = (request, respond, draw, init) => {\r\n this.props.addFunction({\r\n [request.uuid]: {\r\n id: request.id,\r\n uuid: request.uuid,\r\n respond,\r\n request,\r\n selectedDatasetError: null,\r\n selectedFunctionError: null,\r\n selectedColumnError: null,\r\n },\r\n })\r\n\r\n datasetFunction(request.function.action, { id: request.id, uuid: request.uuid, request: { ...request } })\r\n .then(async (data) => {\r\n const dataset = {\r\n request,\r\n type: 'function',\r\n save: 'dynamic',\r\n raw: data,\r\n respond: { dataType: 'CSV', ...respond },\r\n info: {\r\n sid: request.id || null,\r\n id: request.uuid,\r\n label: request.dataset\r\n ? `${request.dataset.label}-${request.function.action}-${this.stringGen()}`\r\n : `${request.function.action}-${this.stringGen()}`,\r\n },\r\n loading: false,\r\n }\r\n await this.props.addDataset({ [request.uuid]: dataset })\r\n this.drawData(request, { dataType: 'CSV', ...respond }, draw, init)\r\n })\r\n .catch((respondDrror) => {\r\n console.log(respondDrror)\r\n this.props.setErrorHandler(respondDrror.response)\r\n })\r\n }\r\n\r\n stringGen = (length = 6) => {\r\n let text = ''\r\n const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'\r\n for (let i = 0; i < length; i++) text += possible.charAt(Math.floor(Math.random() * possible.length))\r\n return text\r\n }\r\n\r\n getQuery = (query) => {\r\n this.toggleQueryModal()\r\n if (query) {\r\n this.setState({ modalLoading: true }, () => {\r\n const request = {\r\n query,\r\n bboxs: this.getBbox(),\r\n database: this.state.selectedDatabase.uuid,\r\n table: this.state.selectedTable.uuid,\r\n }\r\n this.runQuery(request, true, false)\r\n })\r\n }\r\n }\r\n\r\n saveFilters = (jsonTree, filters, filterConjunction) => {\r\n this.setState({ jsonTree, filters, filterConjunction, filterModal: false })\r\n }\r\n\r\n resetMap = () => {\r\n this.props.resetMapConfig()\r\n this.props.toggleSplitMap(0)\r\n this.props.toggleSplitMap(1)\r\n this.props.deleteAllFunction()\r\n // this.props.togglePerspective(0)\r\n const datasets = KeplerGlSchema.getDatasetToSave(this.props.keplerInstance)\r\n datasets.forEach((dataset) => {\r\n this.props.removeDataset(dataset.data.id)\r\n })\r\n this.props.setMapInfo({ title: '', description: '' })\r\n this.props.clearDataset()\r\n this.props.clearSession()\r\n Object.keys(this.props.mapControls).forEach((x) => {\r\n if (this.props.mapControls[x].active) {\r\n this.props.toggleMapControl(x)\r\n }\r\n })\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n {this.state.queryModal && (\r\n \r\n )}\r\n {this.state.filterModal && (\r\n \r\n )}\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n

Fetch Data

\r\n \r\n
\r\n {' '}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\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 mapRef: state.app.view.mapRef,\r\n keplerInstance: state.keplerGl?.MapLab,\r\n code: state.app.view.code,\r\n session: state.app.view.session,\r\n databases: state.app.view.databases,\r\n datasets: state.app.view.datasets,\r\n mapControls: state.keplerGl?.MapLab.uiState.mapControls,\r\n activeSidePanel: state.keplerGl?.MapLab.uiState.activeSidePanel,\r\n publicUser: state.app.user.publicUser,\r\n})\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n toggleSplitMap: (data) => dispatch(wrapTo('MapLab', toggleSplitMap(data))),\r\n resetMapConfig: () => dispatch(wrapTo('MapLab', resetMapConfig())),\r\n removeDataset: (data) => dispatch(wrapTo('MapLab', removeDataset(data))),\r\n setErrorHandler: (data) => dispatch(setErrorHandler(data)),\r\n sendDataToMap: (data) => dispatch(wrapTo('MapLab', addDataToMap(data))),\r\n addDataset: (data) => {\r\n dispatch(addDataset(data))\r\n return Promise.resolve()\r\n },\r\n addFunction: (data) => dispatch(addFunction(data)),\r\n deleteAllFunction: () => dispatch(deleteAllFunction()),\r\n toggleMapControl: (data) => dispatch(toggleMapControl(data)),\r\n setResetMap: (data) => dispatch(setResetMap(data)),\r\n setDatabses: (data) => dispatch(setDatabses(data)),\r\n setSession: (data) => dispatch(setSession(data)),\r\n setMapInfo: (data) => dispatch(setMapInfo(data)),\r\n controlSideBar: (data) => dispatch(controlSideBar(data)),\r\n controlLoading: (data) => dispatch(controlLoading(data)),\r\n clearDataset: () => dispatch(clearDataset()),\r\n clearSession: () => dispatch(clearSession()),\r\n})\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(FetchData)\r\n","import React, { Component } from 'react'\r\n\r\nclass DropList extends Component {\r\n constructor() {\r\n super()\r\n this.state = { value: '' }\r\n }\r\n\r\n static getDerivedStateFromProps(props, state) {\r\n if (props.value !== state.value) {\r\n return {\r\n value: props.value,\r\n }\r\n }\r\n return null\r\n }\r\n\r\n handleChange = (e) => {\r\n this.setState({ value: e.target.value })\r\n }\r\n\r\n render() {\r\n return (\r\n {}}\r\n disabled={this.props.disabled}\r\n onChange={this.props.onChange}\r\n >\r\n {this.props.placeholder && }\r\n {this.props.options?.map((x) => {\r\n return (\r\n \r\n )\r\n })}\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default DropList\r\n","import React, { Component } from 'react'\r\n\r\nclass FormGroup extends Component {\r\n constructor() {\r\n super()\r\n this.state = {}\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.children}\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default FormGroup\r\n","import React, { Component } from 'react'\r\n\r\nexport default class InputError extends Component {\r\n constructor() {\r\n super()\r\n this.state = {}\r\n }\r\n\r\n render() {\r\n if (this.props.children) {\r\n // eslint-disable-next-line jsx-a11y/label-has-associated-control\r\n return \r\n }\r\n return null\r\n }\r\n}\r\n","import React, { Component } from 'react'\r\n\r\nclass Label extends Component {\r\n constructor() {\r\n super()\r\n this.state = {}\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.children}\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default Label\r\n","/* eslint-disable no-unused-vars */\r\n/* eslint-disable react/no-unused-state */\r\n/* eslint-disable react/no-access-state-in-setstate */\r\n/* eslint-disable no-shadow */\r\nimport MapLabFiltersConfig from 'components/FetchData/Modals/FilterModal/FilterQueryBuilder.config'\r\nimport DropList from 'components/Portions/DropList'\r\nimport FormGroup from 'components/Portions/FormGroup'\r\nimport InputError from 'components/Portions/InputError'\r\nimport Label from 'components/Portions/Label'\r\nimport Modal from 'components/Utilities/Modal'\r\nimport ModalContainer from 'components/Utilities/ModalContainer'\r\nimport { Component } from 'react'\r\nimport { Builder, Utils as QbUtils, Query } from 'react-awesome-query-builder'\r\nimport { connect } from 'react-redux'\r\nimport { setErrorHandler } from 'store/actions/errorsActions'\r\n\r\nconst operatorMapping = {\r\n equal: 'eq',\r\n not_equal: 'ne',\r\n greater: 'gt',\r\n greater_or_equal: 'ge',\r\n less: 'lt',\r\n less_or_equal: 'le',\r\n between: 'between',\r\n not_between: 'not_between',\r\n is_empty: 'is_empty',\r\n is_not_empty: 'is_not_empty',\r\n today: 'today',\r\n yesterday: 'yesterday',\r\n}\r\nconst typesMapping = {\r\n boolean: 'boolean',\r\n decimal: 'number',\r\n number: 'number',\r\n float: 'number',\r\n int: 'number',\r\n numeric: 'number',\r\n str: 'text',\r\n text: 'text',\r\n date: 'datetime',\r\n datetime: 'datetime',\r\n timestamp: 'datetime',\r\n time: 'time',\r\n}\r\n\r\nconst types = {\r\n text: {\r\n type: 'text',\r\n fieldSettings: {\r\n min: 0,\r\n },\r\n },\r\n number: {\r\n type: 'number',\r\n fieldSettings: {\r\n min: 0,\r\n },\r\n },\r\n datetime: {\r\n type: '!group',\r\n subfields: {\r\n Default: {\r\n type: 'datetime',\r\n },\r\n Past: {\r\n type: 'customDate',\r\n operators: ['days', 'weeks', 'months', 'quarters', 'years'],\r\n defaultValue: 1,\r\n fieldSettings: {\r\n min: 0,\r\n },\r\n valueSources: ['value'],\r\n initialEmptyWhere: false,\r\n },\r\n This: {\r\n type: 'customThisDate',\r\n operators: ['day', 'week', 'month', 'quarter', 'year'],\r\n valueSources: ['value'],\r\n },\r\n Next: {\r\n type: 'customDate',\r\n operators: ['days', 'weeks', 'months', 'quarters', 'years'],\r\n defaultValue: 1,\r\n fieldSettings: {\r\n min: 0,\r\n },\r\n valueSources: ['value'],\r\n initialEmptyWhere: false,\r\n },\r\n },\r\n },\r\n boolean: {\r\n type: 'boolean',\r\n widgets: {\r\n boolean: {\r\n widgetProps: {\r\n labelYes: 'True',\r\n labelNo: 'False',\r\n },\r\n },\r\n },\r\n },\r\n time: {\r\n type: 'time',\r\n },\r\n}\r\n\r\n// eslint-disable-next-line react/prefer-stateless-function\r\nclass DynamicFilters extends Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n item: {},\r\n errors: {},\r\n\r\n config: {},\r\n columns: [],\r\n\r\n tree: null,\r\n filters: [],\r\n filterConjunction: 'AND',\r\n jsonTree: {},\r\n CURRENT_TS: 'currentTimeStamp(days=0)',\r\n }\r\n }\r\n\r\n componentDidMount = () => {\r\n let config = { ...MapLabFiltersConfig, fields: {} }\r\n if (this.props.item.table) {\r\n config = this.findColumns(this.props.item.database, this.props.item.table)\r\n }\r\n this.setState({\r\n item: this.props.item,\r\n filters: this.props.item.filters,\r\n filterConjunction: this.props.item.filterConjunction || 'AND',\r\n jsonTree: this.props.item.jsonTree,\r\n config,\r\n tree:\r\n Object.keys(this.props.jsonTree).length >= 1\r\n ? QbUtils.checkTree(QbUtils.loadTree(this.props.jsonTree), config)\r\n : QbUtils.checkTree(QbUtils.loadTree({ id: QbUtils.uuid(), type: 'group' }), config),\r\n })\r\n }\r\n\r\n handelChange = (e) => {\r\n const { item, errors } = this.state\r\n item[e.target.name] = e.target.value\r\n let { config } = this.state\r\n errors[e.target.name] = null\r\n if (e.target.name === 'table') {\r\n config = this.findColumns(item.database, item.table)\r\n }\r\n this.setState({ config, item, errors })\r\n }\r\n\r\n findColumns = (database, table) => {\r\n const config = { ...MapLabFiltersConfig, fields: {} }\r\n\r\n this.props.databases\r\n .find((x) => x.uuid === database)\r\n .tables.find((x) => x.uuid === table)\r\n .columns.filter((x) => Object.keys(typesMapping).includes(x.type))\r\n .forEach((column) => {\r\n config.fields[column.name] = { ...types[typesMapping[column.type]], label: column.name }\r\n })\r\n\r\n return config\r\n }\r\n\r\n renderBuilder = (props) => (\r\n
\r\n
\r\n \r\n
\r\n
\r\n )\r\n\r\n onChange = (immutableTree) => {\r\n const jsonTree = QbUtils.getTree(immutableTree)\r\n this.setState({\r\n jsonTree,\r\n tree: immutableTree,\r\n item: {\r\n ...this.state.item,\r\n filters: this.rulesToFilters(jsonTree),\r\n filterConjunction: jsonTree.properties?.conjunction || 'AND',\r\n },\r\n })\r\n }\r\n\r\n filterOperator = ({ operator, field, value }, type) => {\r\n switch (type) {\r\n case 'This': {\r\n switch (operator) {\r\n case 'day': {\r\n return {\r\n col_name: field,\r\n symbol: operatorMapping.equal,\r\n value: this.state.CURRENT_TS,\r\n }\r\n }\r\n case 'week': {\r\n return {\r\n col_name: field,\r\n symbol: operatorMapping.between,\r\n value: ['currentWeek(weeks=0)', this.state.CURRENT_TS],\r\n }\r\n }\r\n case 'month': {\r\n return {\r\n col_name: field,\r\n symbol: operatorMapping.between,\r\n value: ['currentMonth(months=0)', this.state.CURRENT_TS],\r\n }\r\n }\r\n case 'quarter': {\r\n return {\r\n col_name: field,\r\n symbol: operatorMapping.between,\r\n value: ['currentQuarter(quarters=0)', this.state.CURRENT_TS],\r\n }\r\n }\r\n case 'year': {\r\n return {\r\n col_name: field,\r\n symbol: operatorMapping.between,\r\n value: ['currentYear(years=0)', this.state.CURRENT_TS],\r\n }\r\n }\r\n default: {\r\n return {}\r\n }\r\n }\r\n }\r\n case 'Past':\r\n case 'Next': {\r\n switch (operator) {\r\n case 'days': {\r\n const actualValue =\r\n !value?.length || value[0] === 0\r\n ? `currentTimeStamp(days=${type === 'Past' ? -1 : 1})`\r\n : `currentTimeStamp(days=${type === 'Past' ? -Number(value[0]) : Number(value[0])})`\r\n return {\r\n col_name: field,\r\n symbol: operatorMapping.between,\r\n value: type === 'Past' ? [actualValue, this.state.CURRENT_TS] : [this.state.CURRENT_TS, actualValue],\r\n }\r\n }\r\n case 'weeks': {\r\n const actualValue =\r\n !value?.length || value[0] === 0\r\n ? `currentWeek(weeks=${type === 'Past' ? -1 : 1})`\r\n : `currentWeek(weeks=${type === 'Past' ? -Number(value[0]) : Number(value[0])})`\r\n return {\r\n col_name: field,\r\n symbol: operatorMapping.between,\r\n value: type === 'Past' ? [actualValue, this.state.CURRENT_TS] : [this.state.CURRENT_TS, actualValue],\r\n }\r\n }\r\n case 'months': {\r\n const actualValue =\r\n !value?.length || value[0] === 0\r\n ? `currentMonth(months=${type === 'Past' ? -1 : 1})`\r\n : `currentMonth(months=${type === 'Past' ? -Number(value[0]) : Number(value[0])})`\r\n return {\r\n col_name: field,\r\n symbol: operatorMapping.between,\r\n value: type === 'Past' ? [actualValue, this.state.CURRENT_TS] : [this.state.CURRENT_TS, actualValue],\r\n }\r\n }\r\n case 'quarters': {\r\n const actualValue =\r\n !value?.length || value[0] === 0\r\n ? `currentQuarter(quarters=${type === 'Past' ? -1 : 1})`\r\n : `currentQuarter(quarters=${type === 'Past' ? -Number(value[0]) : Number(value[0])})`\r\n return {\r\n col_name: field,\r\n symbol: operatorMapping.between,\r\n value: type === 'Past' ? [actualValue, this.state.CURRENT_TS] : [this.state.CURRENT_TS, actualValue],\r\n }\r\n }\r\n case 'years': {\r\n const actualValue =\r\n !value?.length || value[0] === 0\r\n ? `currentYear(years=${type === 'Past' ? -1 : 1})`\r\n : `currentYear(years=${type === 'Past' ? -Number(value[0]) : Number(value[0])})`\r\n return {\r\n col_name: field,\r\n symbol: operatorMapping.between,\r\n value: type === 'Past' ? [actualValue, this.state.CURRENT_TS] : [this.state.CURRENT_TS, actualValue],\r\n }\r\n }\r\n default: {\r\n return {}\r\n }\r\n }\r\n }\r\n default: {\r\n switch (operator) {\r\n case 'not_between':\r\n case 'between': {\r\n return {\r\n col_name: field,\r\n symbol: operatorMapping[operator],\r\n value,\r\n }\r\n }\r\n case 'is_empty':\r\n case 'is_not_empty': {\r\n return {\r\n col_name: field,\r\n symbol: operator === 'is_empty' ? operatorMapping.equal : operatorMapping.not_equal,\r\n value: null,\r\n }\r\n }\r\n case 'today': {\r\n return {\r\n col_name: field,\r\n symbol: operatorMapping.greater_or_equal,\r\n value: 'currentDate(days=0)',\r\n }\r\n }\r\n case 'yesterday': {\r\n return {\r\n col_name: field,\r\n symbol: operatorMapping.between,\r\n value: 'currentDate(days=-1)',\r\n }\r\n }\r\n default: {\r\n return {\r\n col_name: field,\r\n symbol: operatorMapping[operator],\r\n value: value[0],\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n rulesToFilters = (rules) => {\r\n return Object.values(rules?.children1)\r\n .flatMap((r) => {\r\n if (r.type === 'rule') {\r\n return this.filterOperator(r.properties)\r\n }\r\n if (r.type === 'rule_group' && r.children1) {\r\n return Object.values(r?.children1).map((innerRule) => {\r\n if (innerRule.properties?.field?.includes('Default')) {\r\n return this.filterOperator({ ...innerRule.properties, field: r.properties.field })\r\n }\r\n if (innerRule.properties?.field?.includes('Past')) {\r\n return this.filterOperator({ ...innerRule.properties, field: r.properties.field }, 'Past')\r\n }\r\n if (innerRule.properties?.field?.includes('This')) {\r\n return this.filterOperator({ ...innerRule.properties, field: r.properties.field }, 'This')\r\n }\r\n if (innerRule.properties?.field?.includes('Next')) {\r\n return this.filterOperator({ ...innerRule.properties, field: r.properties.field }, 'Next')\r\n }\r\n return {}\r\n })\r\n }\r\n return {}\r\n })\r\n .filter((f) => f.value !== undefined)\r\n }\r\n\r\n save = () => {\r\n const { database, table, filters, filterConjunction } = this.state.item\r\n this.props.getFiltersData(this.props.uuid, database, table, filters, filterConjunction, this.state.jsonTree)\r\n this.props.toggleDynamicFilters()\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n \r\n {\r\n return { value: x.uuid, text: x.title }\r\n })}\r\n name='database'\r\n onChange={(e) => {\r\n this.handelChange(e)\r\n }}\r\n id='database'\r\n placeholder='Select database'\r\n value={this.state.item.database}\r\n />\r\n {this.state.errors.database}\r\n \r\n \r\n \r\n\r\n {\r\n return y.uuid === this.state?.item?.database\r\n })\r\n ?.tables.map((x) => {\r\n return { value: x.uuid, text: x.title }\r\n })}\r\n name='table'\r\n onChange={(e) => {\r\n this.handelChange(e)\r\n }}\r\n id='table'\r\n placeholder='Select table'\r\n value={this.state.item.table}\r\n />\r\n {this.state.errors.table}\r\n \r\n\r\n {this.state.tree && (\r\n \r\n )}\r\n \r\n \r\n )\r\n }\r\n}\r\nconst mapStateToProps = (state) => ({\r\n databases: state.app.view.databases,\r\n})\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setErrorHandler: (data) => dispatch(setErrorHandler(data)),\r\n})\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(DynamicFilters)\r\n","/* eslint-disable react/prefer-stateless-function */\r\nimport DropList from 'components/Portions/DropList'\r\nimport FormGroup from 'components/Portions/FormGroup'\r\nimport InputError from 'components/Portions/InputError'\r\nimport Label from 'components/Portions/Label'\r\nimport Modal from 'components/Utilities/Modal'\r\nimport ModalContainer from 'components/Utilities/ModalContainer'\r\nimport { Component } from 'react'\r\nimport { connect } from 'react-redux'\r\nimport SqlEditor from 'react-sql-editor'\r\nimport { setErrorHandler } from 'store/actions/errorsActions'\r\n\r\nclass WithQuery extends Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n item: {},\r\n errors: {},\r\n modalLoading: false,\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ item: this.props.item })\r\n }\r\n\r\n setSqlQuery = (query) => {\r\n // eslint-disable-next-line react/no-access-state-in-setstate\r\n this.setState({ item: { ...this.state.item, query } })\r\n }\r\n\r\n save = () => {\r\n const { database, table, query } = this.state.item\r\n this.props.getQueryData(this.props.uuid, database, table, query)\r\n this.props.toggleWithQuery()\r\n }\r\n\r\n handelChange = (e) => {\r\n const { item, errors } = this.state\r\n item[e.target.name] = e.target.value\r\n\r\n errors[e.target.name] = null\r\n\r\n this.setState({ item, errors })\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n \r\n {\r\n return { value: x.uuid, text: x.title }\r\n })}\r\n name='database'\r\n onChange={(e) => {\r\n // this.updateInputs(e.target.value)\r\n this.handelChange(e)\r\n }}\r\n id='database'\r\n placeholder='Select database'\r\n value={this.state.item.database}\r\n />\r\n {this.state.errors.database}\r\n \r\n \r\n \r\n\r\n {\r\n return y.uuid === this.state?.item?.database\r\n })\r\n ?.tables.map((x) => {\r\n return { value: x.uuid, text: x.title }\r\n })}\r\n name='table'\r\n onChange={(e) => {\r\n // this.updateInputs(e.target.value)\r\n this.handelChange(e)\r\n }}\r\n id='table'\r\n placeholder='Select table'\r\n value={this.state.item.table}\r\n />\r\n {this.state.errors.table}\r\n \r\n\r\n

Sql Editor

\r\n {\r\n this.setSqlQuery(e)\r\n }}\r\n validatorConfig={{\r\n maxSqlNum: 1,\r\n }}\r\n />\r\n \r\n
\r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n databases: state.app.view.databases,\r\n})\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setErrorHandler: (data) => dispatch(setErrorHandler(data)),\r\n})\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(WithQuery)\r\n","import React, { Component } from 'react'\r\n\r\nclass Badge extends Component {\r\n constructor() {\r\n super()\r\n this.state = {}\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.children}\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default Badge\r\n","import React, { Component } from 'react'\r\n// eslint-disable-next-line absolute-import/no-relative-path\r\nimport Badge from './Badge'\r\n\r\nexport default class Icon extends Component {\r\n constructor() {\r\n super()\r\n this.state = {}\r\n }\r\n\r\n render() {\r\n return (\r\n {\r\n if (this.props.action) {\r\n this.props.action()\r\n }\r\n }}\r\n >\r\n \r\n {this.props.children}\r\n \r\n {this.props.badge && {this.props.number}}\r\n \r\n )\r\n }\r\n}\r\n","/* eslint-disable react/prefer-stateless-function */\r\nimport DynamicFilters from 'components/FunctionData/Modals/DynamicFilters'\r\nimport WithQuery from 'components/FunctionData/Modals/WithQuery'\r\nimport Icon from 'components/Portions/Icon'\r\nimport KeplerGlSchema from 'kepler.gl/schemas'\r\nimport React, { Component, Fragment } from 'react'\r\nimport { connect } from 'react-redux'\r\nimport ScrollArea from 'react-scrollbar'\r\nimport { setErrorHandler } from 'store/actions/errorsActions'\r\n\r\nclass DatasetsList extends Component {\r\n constructor(props) {\r\n super(props)\r\n this.listRef = React.createRef()\r\n\r\n this.state = {\r\n selectedDataset: null,\r\n opened: false,\r\n withQuery: false,\r\n dynamicFilters: false,\r\n items: [],\r\n data: {},\r\n jsonTree: {},\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n document.addEventListener('mousedown', this.handleClickOutside)\r\n }\r\n\r\n componentWillUnmount() {\r\n document.removeEventListener('mousedown', this.handleClickOutside)\r\n }\r\n\r\n static getDerivedStateFromProps = (props, state) => {\r\n if (\r\n JSON.stringify(props.selectedDataset) !== JSON.stringify(state.selectedDataset) ||\r\n JSON.stringify(props.datasets) !== JSON.stringify(state.items)\r\n ) {\r\n const datasets = KeplerGlSchema.getDatasetToSave(props.keplerInstance)\r\n return {\r\n selectedDataset: props.selectedDataset,\r\n items: datasets\r\n .filter((x) => {\r\n return !x.data?.label?.includes('geocoder_dataset')\r\n })\r\n .map((dataset) => {\r\n const find = props.datasets[dataset.data.id]\r\n\r\n if (!find) {\r\n return {\r\n save: 'static',\r\n type: 'static',\r\n info: { id: dataset.data.id, sid: undefined, label: dataset.data.label },\r\n data: dataset.data,\r\n request: {},\r\n respond: {},\r\n }\r\n }\r\n return { ...find, data: dataset.data }\r\n }),\r\n }\r\n }\r\n return null\r\n }\r\n\r\n // eslint-disable-next-line consistent-return\r\n toggleList = () => {\r\n if (this.props.disable) {\r\n return false\r\n }\r\n\r\n this.setState({\r\n // eslint-disable-next-line react/no-access-state-in-setstate\r\n opened: !this.state.opened,\r\n })\r\n }\r\n\r\n handleClickOutside = (e) => {\r\n if (this.listRef && !this.listRef.current?.contains(e.target)) {\r\n this.setState({ opened: false })\r\n }\r\n }\r\n\r\n toggleWithQuery = (data) => {\r\n // eslint-disable-next-line react/no-access-state-in-setstate\r\n\r\n // eslint-disable-next-line react/no-access-state-in-setstate\r\n this.setState({ withQuery: !this.state.withQuery, opened: false, data: this.props.activeFunction.request })\r\n }\r\n\r\n toggleDynamicFilters = (data) => {\r\n // eslint-disable-next-line react/no-access-state-in-setstate\r\n\r\n // eslint-disable-next-line react/no-access-state-in-setstate\r\n this.setState({\r\n // eslint-disable-next-line react/no-access-state-in-setstate\r\n dynamicFilters: !this.state.dynamicFilters,\r\n opened: false,\r\n data: this.props.activeFunction.request,\r\n jsonTree: this.props.activeFunction.request.jsonTree,\r\n })\r\n }\r\n\r\n setSqlQuery = (query) => {\r\n // eslint-disable-next-line react/no-access-state-in-setstate\r\n this.setState({ item: { ...this.state.item, query } })\r\n }\r\n\r\n render() {\r\n const datasets = KeplerGlSchema.getDatasetToSave(this.props.keplerInstance)\r\n return (\r\n <>\r\n \r\n {this.state.withQuery && (\r\n \r\n )}\r\n {this.state.dynamicFilters && (\r\n {\r\n this.setState({ jsonTree })\r\n this.props.getFiltersData(uuid, database, table, filters, filterConjunction, jsonTree)\r\n }}\r\n toggleDynamicFilters={this.toggleDynamicFilters}\r\n cancel={{ text: 'Cancel', handler: this.toggleDynamicFilters }}\r\n />\r\n )}\r\n
\r\n \r\n {this.state.selectedDataset && (\r\n

{this.state.selectedDataset.label}

\r\n )}\r\n
\r\n {!this.props.type &&

Select dataset or write a query

}\r\n {!this.state.selectedDataset && this.props.type === 'dataset' &&

Select dataset

}\r\n {this.props.type === 'query' && (\r\n \r\n {'Query on table '}\r\n {this.props?.selectedTable?.name || 'With query'}\r\n

\r\n )}\r\n {this.props.type === 'dynamic' && (\r\n \r\n {'Dyanmic on table '}\r\n {this.props?.selectedTable?.name || 'Select table'}\r\n

\r\n )}\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n\r\n {this.state.opened && (\r\n <>\r\n
\r\n \r\n \r\n With query\r\n

\r\n \r\n Select table\r\n

\r\n {this.state.items\r\n .filter((x) => {\r\n return (\r\n datasets.map((y) => y.data.id).includes(x.info.id) && !['static', 'function'].includes(x.type)\r\n )\r\n })\r\n .map((item) => {\r\n return (\r\n \r\n {\r\n this.props.selectDataset(this.props.uuid, item)\r\n this.setState({ opened: false })\r\n }}\r\n className=' dark-gray text-white tableName hover:bg-gray-300 transition duration-150 cursor-pointer'\r\n >\r\n {item.info.label}\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.type === 'query') {\r\n this.toggleWithQuery()\r\n } else if (this.props.type === 'dynamic') {\r\n this.toggleDynamicFilters()\r\n }\r\n }}\r\n className={`${\r\n this.props.type === 'query' || this.props.type === 'dynamic'\r\n ? 'text-gray-600 cursor-pointer'\r\n : 'text-gray-600'\r\n } pt-2 ml-2 col-span-1 cursor-pointer w-3`}\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 datasets: state.app.view.datasets,\r\n keplerInstance: state.keplerGl?.MapLab,\r\n})\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setErrorHandler: (data) => dispatch(setErrorHandler(data)),\r\n})\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(DatasetsList)\r\n","/* eslint-disable react/prefer-stateless-function */\r\nimport React, { Component, Fragment } from 'react'\r\nimport { connect } from 'react-redux'\r\nimport ScrollArea from 'react-scrollbar'\r\nimport { setErrorHandler } from 'store/actions/errorsActions'\r\n\r\nclass FunctionsList extends Component {\r\n constructor(props) {\r\n super(props)\r\n this.listRef = React.createRef()\r\n\r\n this.state = {\r\n selectedFunction: null,\r\n opened: false,\r\n items: [],\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n document.addEventListener('mousedown', this.handleClickOutside)\r\n }\r\n\r\n componentWillUnmount() {\r\n document.removeEventListener('mousedown', this.handleClickOutside)\r\n }\r\n\r\n static getDerivedStateFromProps = (props, state) => {\r\n if (\r\n JSON.stringify(props.selectedFunction) !== JSON.stringify(state.selectedFunction) ||\r\n JSON.stringify(props.items) !== JSON.stringify(state.items)\r\n ) {\r\n return {\r\n selectedFunction: props.selectedFunction,\r\n items: props.items,\r\n }\r\n }\r\n return null\r\n }\r\n\r\n // eslint-disable-next-line consistent-return\r\n toggleList = () => {\r\n if (this.props.disable) {\r\n return false\r\n }\r\n this.setState({\r\n // eslint-disable-next-line react/no-access-state-in-setstate\r\n opened: !this.state.opened,\r\n })\r\n }\r\n\r\n handleClickOutside = (e) => {\r\n if (this.listRef && !this.listRef.current?.contains(e.target)) {\r\n this.setState({ opened: false })\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n
\r\n {this.state.selectedFunction &&

{this.state.selectedFunction.name}

}\r\n
\r\n {!this.state.selectedFunction &&

Select function

}\r\n
\r\n
\r\n {this.state.opened && (\r\n
\r\n \r\n {this.state.items.map((item) => {\r\n return (\r\n \r\n {\r\n this.props.selectFunction(this.props.uuid, item)\r\n this.setState({ opened: false })\r\n }}\r\n className=' dark-gray text-white justify-between flex tableName hover:bg-gray-300 transition duration-150 cursor-pointer'\r\n >\r\n {item.name} {item.beta && Beta}\r\n

\r\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\nconst mapDispatchToProps = (dispatch) => ({\r\n setErrorHandler: (data) => dispatch(setErrorHandler(data)),\r\n})\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(FunctionsList)\r\n","import Text from 'components/Portions/Text'\r\nimport Modal from 'components/Utilities/Modal'\r\nimport ModalContainer from 'components/Utilities/ModalContainer'\r\nimport { Component } from 'react'\r\nimport { connect } from 'react-redux'\r\n\r\n// eslint-disable-next-line react/prefer-stateless-function\r\nclass DeleteFunction extends Component {\r\n constructor() {\r\n super()\r\n this.state = {\r\n loading: false,\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n Are you sure you want to delete this function?\r\n\r\n \r\n The data set and map layers generated from this function also will be deleted\r\n \r\n \r\n \r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({})\r\nconst mapDispatchToProps = (dispatch) => ({})\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(DeleteFunction)\r\n","import React, { Component } from 'react'\r\n\r\nclass Input extends Component {\r\n constructor() {\r\n super()\r\n this.state = { value: '' }\r\n }\r\n\r\n static getDerivedStateFromProps(props, state) {\r\n if (props.value !== state.value) {\r\n return {\r\n value: props.value,\r\n }\r\n }\r\n return null\r\n }\r\n\r\n handleChange = (e) => {\r\n this.setState({ value: e.target.value })\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default Input\r\n","/* eslint-disable react/no-unused-state */\r\n/* eslint-disable react/no-access-state-in-setstate */\r\n/* eslint-disable react/prefer-stateless-function */\r\nimport Icon from 'components/Portions/Icon'\r\nimport Input from 'components/Portions/Input'\r\nimport { Minus } from 'kepler.gl/dist/components/common/icons'\r\nimport React, { Component } from 'react'\r\nimport ScrollArea from 'react-scrollbar'\r\n\r\nclass SelectDoubleCoordColumn extends Component {\r\n constructor(props) {\r\n super(props)\r\n this.listRef = React.createRef()\r\n\r\n this.state = {\r\n types: {\r\n string: { name: 'string', color: '#8cd2cd' },\r\n str: { name: 'string', color: '#8cd2cd' },\r\n int: { name: 'integer', color: '#f8c21c' },\r\n integer: { name: 'integer', color: '#f8c21c' },\r\n decimal: { name: 'float', color: '#f8c21c' },\r\n float: { name: 'float', color: '#f8c21c' },\r\n geometry: { name: 'geo', color: '#6aa0ce' },\r\n boolean: { name: 'boolean', color: '#8cd2cd' },\r\n time: { name: 'time', color: '#6aa038' },\r\n date: { name: 'date', color: '#6aa038' },\r\n datetime: { name: 'datetime', color: '#6aa038' },\r\n timestamp: { name: 'timestamp', color: '#6aa038' },\r\n },\r\n\r\n opened: false,\r\n columnUuid: null,\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n document.addEventListener('mousedown', this.handleClickOutside)\r\n }\r\n\r\n componentWillUnmount() {\r\n document.removeEventListener('mousedown', this.handleClickOutside)\r\n }\r\n\r\n static getDerivedStateFromProps(props, state) {\r\n if (JSON.stringify(props.activeFunction) !== JSON.stringify(state.activeFunction)) {\r\n return { activeFunction: props.activeFunction }\r\n }\r\n return null\r\n }\r\n\r\n handleSearchChange = (e) => {\r\n this.setState({ query: e.target.value })\r\n }\r\n\r\n // eslint-disable-next-line consistent-return\r\n toggleMenu = (columnUuid) => {\r\n this.setState({ opened: !this.state.opened, columnUuid })\r\n }\r\n\r\n hexToRGB = (hex, alpha = 1) => {\r\n const [r, g, b] = hex.match(/\\w\\w/g).map((x) => parseInt(x, 16))\r\n return `rgba(${r},${g},${b},${alpha})`\r\n }\r\n\r\n handleClickOutside = (e) => {\r\n if (this.listRef && !this.listRef.current?.contains(e.target)) {\r\n this.setState({ opened: false })\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n \r\n
\r\n {this.props.execute.data.map((x) => {\r\n return (\r\n {\r\n this.toggleMenu(x.uuid)\r\n }}\r\n className=' mb-1 mr-1 hover:text-white text-gray-400 px-2 py-1 text-xs bg-tagColor cursor-pointer'\r\n >\r\n {`${x.name} - ${x.columnName || 'Not selected'}`}\r\n
\r\n )\r\n })}\r\n
\r\n {this.state.opened && (\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n {this.props\r\n .getColumns(\r\n this.props.activeFunction.request.database,\r\n this.props.activeFunction.request.table,\r\n this.props.execute.data.map((x) => {\r\n return x.columnUuid\r\n }),\r\n this.props.column.types,\r\n )\r\n ?.map((column) => {\r\n return (\r\n {\r\n this.toggleMenu(null)\r\n this.props.selectForColumn(\r\n this.props.activeFunctionUuid,\r\n this.props.functionkey,\r\n this.props.executeIndex,\r\n this.state.columnUuid,\r\n column,\r\n )\r\n }}\r\n className='px-2 hover:bg-droplist cursor-pointer flex justify-start items-center gap-2'\r\n >\r\n \r\n {this.state.types[column.type].name}\r\n
\r\n

{column.name}

\r\n
\r\n )\r\n })}\r\n \r\n \r\n \r\n )}\r\n \r\n
\r\n {\r\n this.props.removeExecute(this.props.activeFunctionUuid, this.props.functionkey, this.props.executeIndex)\r\n }}\r\n className='w-3'\r\n />\r\n
\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default SelectDoubleCoordColumn\r\n","/* eslint-disable react/no-unused-state */\r\n/* eslint-disable react/no-access-state-in-setstate */\r\n/* eslint-disable react/prefer-stateless-function */\r\nimport Icon from 'components/Portions/Icon'\r\nimport Input from 'components/Portions/Input'\r\nimport React, { Component } from 'react'\r\nimport ScrollArea from 'react-scrollbar'\r\n\r\nclass SelectSingleColumn extends Component {\r\n constructor(props) {\r\n super(props)\r\n this.listRef = React.createRef()\r\n this.state = {\r\n types: {\r\n string: { name: 'string', color: '#8cd2cd' },\r\n str: { name: 'string', color: '#8cd2cd' },\r\n int: { name: 'integer', color: '#f8c21c' },\r\n integer: { name: 'integer', color: '#f8c21c' },\r\n decimal: { name: 'float', color: '#f8c21c' },\r\n float: { name: 'float', color: '#f8c21c' },\r\n geometry: { name: 'geo', color: '#6aa0ce' },\r\n boolean: { name: 'boolean', color: '#8cd2cd' },\r\n time: { name: 'time', color: '#6aa038' },\r\n date: { name: 'date', color: '#6aa038' },\r\n datetime: { name: 'datetime', color: '#6aa038' },\r\n timestamp: { name: 'timestamp', color: '#6aa038' },\r\n },\r\n column: '',\r\n forColumn: null,\r\n query: '',\r\n\r\n opened: false,\r\n }\r\n }\r\n\r\n static getDerivedStateFromProps(props, state) {\r\n if (JSON.stringify(props.activeFunction) !== JSON.stringify(state.activeFunction)) {\r\n return { activeFunction: props.activeFunction }\r\n }\r\n return null\r\n }\r\n\r\n componentDidMount() {\r\n document.addEventListener('mousedown', this.handleClickOutside)\r\n }\r\n\r\n componentWillUnmount() {\r\n document.removeEventListener('mousedown', this.handleClickOutside)\r\n }\r\n\r\n handleSearchChange = (e) => {\r\n this.setState({ query: e.target.value })\r\n }\r\n\r\n // eslint-disable-next-line consistent-return\r\n toggleMenu = (columnUuid) => {\r\n this.setState({ opened: !this.state.opened, columnUuid })\r\n }\r\n\r\n hexToRGB = (hex, alpha = 1) => {\r\n const [r, g, b] = hex.match(/\\w\\w/g).map((x) => parseInt(x, 16))\r\n return `rgba(${r},${g},${b},${alpha})`\r\n }\r\n\r\n handleClickOutside = (e) => {\r\n if (this.listRef && !this.listRef.current?.contains(e.target)) {\r\n this.setState({ opened: false })\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n \r\n
\r\n {this.props.execute.data.map((x) => {\r\n return (\r\n {\r\n this.toggleMenu(x.uuid)\r\n }}\r\n className=' overflow-hidden truncate hover:text-white text-gray-400 px-2 text-xs bg-tagColor cursor-pointer'\r\n >\r\n {`${x.columnName || 'Not selected'}`}\r\n
\r\n )\r\n })}\r\n
\r\n {this.state.opened && (\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n {this.props\r\n .getColumns(\r\n this.props.activeFunction.request.database,\r\n this.props.activeFunction.request.table,\r\n [],\r\n this.props.column.types,\r\n )\r\n ?.map((column) => {\r\n return (\r\n {\r\n this.toggleMenu(null)\r\n this.props.selectForColumn(\r\n this.props.activeFunctionUuid,\r\n this.props.functionkey,\r\n this.props.executeIndex,\r\n this.state.columnUuid,\r\n column,\r\n )\r\n }}\r\n className='px-2 hover:bg-droplist cursor-pointer flex justify-start items-center gap-2'\r\n >\r\n \r\n {this.state.types[column.type].name}\r\n
\r\n

{column.name}

\r\n
\r\n )\r\n })}\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n )\r\n }\r\n}\r\n\r\nexport default SelectSingleColumn\r\n","/* eslint-disable react/no-unused-state */\r\n/* eslint-disable react/no-access-state-in-setstate */\r\n/* eslint-disable react/prefer-stateless-function */\r\nimport { Minus } from 'kepler.gl/dist/components/common/icons'\r\nimport React, { Component } from 'react'\r\nimport ScrollArea from 'react-scrollbar'\r\n\r\nclass SelectSingleOption extends Component {\r\n constructor(props) {\r\n super(props)\r\n this.listRef = React.createRef()\r\n this.state = {\r\n column: '',\r\n forColumn: null,\r\n query: '',\r\n\r\n opened: false,\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n document.addEventListener('mousedown', this.handleClickOutside)\r\n }\r\n\r\n componentWillUnmount() {\r\n document.removeEventListener('mousedown', this.handleClickOutside)\r\n }\r\n\r\n static getDerivedStateFromProps(props, state) {\r\n if (JSON.stringify(props.activeFunction) !== JSON.stringify(state.activeFunction)) {\r\n return { activeFunction: props.activeFunction }\r\n }\r\n return null\r\n }\r\n\r\n handleSearchChange = (e) => {\r\n this.setState({ query: e.target.value })\r\n }\r\n\r\n // eslint-disable-next-line consistent-return\r\n toggleMenu = (columnUuid) => {\r\n this.setState({ opened: !this.state.opened, columnUuid })\r\n }\r\n\r\n hexToRGB = (hex, alpha = 1) => {\r\n const [r, g, b] = hex.match(/\\w\\w/g).map((x) => parseInt(x, 16))\r\n return `rgba(${r},${g},${b},${alpha})`\r\n }\r\n\r\n handleClickOutside = (e) => {\r\n if (this.listRef && !this.listRef.current?.contains(e.target)) {\r\n this.setState({ opened: false })\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n
\r\n \r\n
\r\n {this.props.execute.data.map((x) => {\r\n return (\r\n {\r\n this.toggleMenu(x.uuid)\r\n }}\r\n className=' overflow-hidden truncate hover:text-white text-gray-400 px-2 text-xs bg-tagColor cursor-pointer'\r\n >\r\n {`${x.columnFunction[0] === 'none' ? '---' : x.columnFunction[0] || 'No'}`}\r\n
\r\n )\r\n })}\r\n
\r\n {this.state.opened && (\r\n
\r\n
\r\n \r\n {this.props\r\n .getColumnOptions(\r\n this.props.activeFunctionUuid,\r\n this.props.functionkey,\r\n this.props.executeIndex,\r\n this.state.columnUuid,\r\n )\r\n ?.map((column) => {\r\n return (\r\n {\r\n this.toggleMenu(null)\r\n this.props.selectForColumnOption(\r\n this.props.activeFunctionUuid,\r\n this.props.functionkey,\r\n this.props.executeIndex,\r\n this.state.columnUuid,\r\n column,\r\n )\r\n }}\r\n className='px-2 hover:bg-droplist cursor-pointer flex justify-start items-center gap-2'\r\n >\r\n

{column && column[0]}

\r\n
\r\n )\r\n })}\r\n \r\n
\r\n \r\n )}\r\n \r\n \r\n
\r\n {\r\n this.props.removeExecute(this.props.activeFunctionUuid, this.props.functionkey, this.props.executeIndex)\r\n }}\r\n className='w-3'\r\n />\r\n
\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default SelectSingleOption\r\n","/* eslint-disable react/no-unused-state */\r\nimport * as turf from '@turf/turf'\r\nimport DatasetsList from 'components/FunctionData/DatasetsList'\r\nimport FunctionsList from 'components/FunctionData/FunctionsList'\r\nimport DeleteFunction from 'components/FunctionData/Modals/DeleteFunction'\r\nimport SelectDoubleCoordColumn from 'components/FunctionData/SelectDoubleCoordColumn'\r\nimport SelectSingleColumn from 'components/FunctionData/SelectSingleColumn'\r\nimport SelectSingleOption from 'components/FunctionData/SelectSingleOption'\r\nimport Icon from 'components/Portions/Icon'\r\nimport Input from 'components/Portions/Input'\r\nimport InputError from 'components/Portions/InputError'\r\nimport Text from 'components/Portions/Text'\r\nimport { addDataToMap, removeDataset, wrapTo } from 'kepler.gl/actions'\r\nimport { Add, Play, Trash } from 'kepler.gl/dist/components/common/icons'\r\nimport { Button } from 'kepler.gl/dist/components/common/styled-components'\r\nimport { processCsvData, processGeojson, processRowObject } from 'kepler.gl/processors'\r\nimport KeplerGlSchema from 'kepler.gl/schemas'\r\nimport { Component } from 'react'\r\nimport Slider from 'react-rangeslider'\r\nimport { connect } from 'react-redux'\r\nimport { datasetFunction } from 'services/dataset'\r\nimport { setErrorHandler, showMessage } from 'store/actions/errorsActions'\r\nimport { addDataset, addFunction, deleteFunction, updateFunction } from 'store/actions/viewActions'\r\nimport { v4 as uuidv4 } from 'uuid'\r\n\r\nclass FunctionData extends Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n deleteFunction: false,\r\n selected: null,\r\n polygonToCellsLoading: false,\r\n functions: [\r\n {\r\n id: 1,\r\n name: 'Aggregate trips',\r\n action: 'aggregateTrips',\r\n beta: true,\r\n drivers: ['snowflake', 'googleBigQuery'],\r\n data: {\r\n pickup: {\r\n title: 'Pickup',\r\n requird: true,\r\n withFunction: false,\r\n minimum: 1,\r\n types: ['float', 'decimal', 'integer', 'int'],\r\n functionType: 'twoColumnWithCoord',\r\n options: [{ name: 'lat' }, { name: 'lon' }],\r\n },\r\n resolution: {\r\n functionType: 'slider',\r\n name: 'resolution',\r\n title: 'Resolution',\r\n default: 5,\r\n min: 0,\r\n max: 15,\r\n helpIndex: 1,\r\n helpText: '',\r\n helpFunction: this.resolutionHelp,\r\n },\r\n dropoff: {\r\n title: 'Dropoff',\r\n requird: true,\r\n withFunction: false,\r\n minimum: 1,\r\n types: ['float', 'decimal', 'integer', 'int'],\r\n functionType: 'twoColumnWithCoord',\r\n options: [{ name: 'lat' }, { name: 'lon' }],\r\n },\r\n },\r\n },\r\n {\r\n id: 2,\r\n name: 'Aggregate and group',\r\n action: 'aggregateAndGroup',\r\n beta: true,\r\n drivers: ['snowflake', 'googleBigQuery'],\r\n data: {\r\n hex: {\r\n title: 'Group by hex',\r\n requird: true,\r\n minimum: 1,\r\n withFunction: false,\r\n types: ['float', 'decimal', 'integer', 'int'],\r\n functionType: 'twoColumnWithCoord',\r\n options: [{ name: 'lat' }, { name: 'lon' }],\r\n },\r\n resolution: {\r\n functionType: 'slider',\r\n name: 'resolution',\r\n title: 'Resolution',\r\n default: 5,\r\n min: 0,\r\n max: 15,\r\n helpIndex: 1,\r\n helpText: '',\r\n helpFunction: this.resolutionHelp,\r\n },\r\n groupBy: {\r\n requird: false,\r\n allowNone: true,\r\n withFunction: true,\r\n minimum: 0,\r\n title: 'group by',\r\n functionType: 'columnWithList',\r\n types: ['timestamp', 'datetime', 'date', 'time', 'str', 'int', 'float', 'decimal', 'boolean'],\r\n options: [{ name: 'column' }],\r\n typeOptions: {\r\n timestamp: [\r\n ['year', 'timestamp'],\r\n ['quarter', 'timestamp'],\r\n ['month', 'timestamp'],\r\n ['day', 'timestamp'],\r\n ['week', 'timestamp'],\r\n ['dayofweek', 'timestamp'],\r\n ['hour', 'timestamp'],\r\n ['minute', 'timestamp'],\r\n ['second', 'timestamp'],\r\n ['millisecond', 'timestamp'],\r\n ],\r\n datetime: [\r\n ['year', 'datetime'],\r\n ['quarter', 'datetime'],\r\n ['month', 'datetime'],\r\n ['day', 'datetime'],\r\n ['week', 'datetime'],\r\n ['dayofweek', 'datetime'],\r\n ['hour', 'datetime'],\r\n ['minute', 'datetime'],\r\n ['second', 'datetime'],\r\n ['millisecond', 'datetime'],\r\n ],\r\n date: [\r\n ['year', 'date'],\r\n ['quarter', 'date'],\r\n ['month', 'date'],\r\n ['day', 'date'],\r\n ['week', 'date'],\r\n ['dayofweek', 'date'],\r\n ],\r\n time: [\r\n ['hour', 'time'],\r\n ['minute', 'time'],\r\n ['second', 'time'],\r\n ['millisecond', 'time'],\r\n ],\r\n str: [['none', 'str']],\r\n int: [['none', 'int']],\r\n float: [\r\n ['none', 'float'],\r\n ['floor', 'float'],\r\n ['round', 'float'],\r\n ['ceil', 'float'],\r\n ],\r\n decimal: [\r\n ['none', 'decimal'],\r\n ['floor', 'decimal'],\r\n ['round', 'decimal'],\r\n ['ceil', 'decimal'],\r\n ],\r\n boolean: [['none', 'boolean']],\r\n },\r\n },\r\n aggregateBy: {\r\n requird: false,\r\n allowNone: false,\r\n withFunction: true,\r\n minimum: 0,\r\n title: 'aggregated fields',\r\n functionType: 'columnWithList',\r\n types: ['timestamp', 'datetime', 'date', 'time', 'str', 'int', 'float', 'decimal', 'boolean'],\r\n options: [{ name: 'column' }],\r\n typeOptions: {\r\n timestamp: [\r\n ['count', 'timestamp'],\r\n ['count_distinct', 'timestamp'],\r\n ['min', 'timestamp'],\r\n ['max', 'timestamp'],\r\n ],\r\n datetime: [\r\n ['count', 'datetime'],\r\n ['count_distinct', 'datetime'],\r\n ['min', 'datetime'],\r\n ['max', 'datetime'],\r\n ],\r\n date: [\r\n ['count', 'date'],\r\n ['count_distinct', 'date'],\r\n ['min', 'date'],\r\n ['max', 'date'],\r\n ],\r\n time: [\r\n ['count', 'time'],\r\n ['count_distinct', 'time'],\r\n ['min', 'time'],\r\n ['max', 'time'],\r\n ],\r\n str: [\r\n ['count', 'str'],\r\n ['count_distinct', 'str'],\r\n ['min', 'str'],\r\n ['max', 'str'],\r\n ],\r\n int: [\r\n ['count', 'int'],\r\n ['count_distinct', 'int'],\r\n ['min', 'int'],\r\n ['max', 'int'],\r\n ['avg', 'int'],\r\n ['sum', 'int'],\r\n ],\r\n float: [\r\n ['count', 'float'],\r\n ['count_distinct', 'float'],\r\n ['min', 'float'],\r\n ['max', 'float'],\r\n ['avg', 'float'],\r\n ['sum', 'float'],\r\n ],\r\n decimal: [\r\n ['count', 'decimal'],\r\n ['count_distinct', 'decimal'],\r\n ['min', 'decimal'],\r\n ['max', 'decimal'],\r\n ['avg', 'decimal'],\r\n ['sum', 'decimal'],\r\n ],\r\n boolean: [\r\n ['count', 'boolean'],\r\n ['count_distinct', 'boolean'],\r\n ['min', 'boolean'],\r\n ['max', 'boolean'],\r\n ['avg', 'boolean'],\r\n ['sum', 'boolean'],\r\n ],\r\n },\r\n },\r\n },\r\n },\r\n ],\r\n items: [],\r\n datasets: [],\r\n }\r\n }\r\n\r\n static getDerivedStateFromProps(props, state) {\r\n if (\r\n JSON.stringify(props.functions) !== JSON.stringify(state.items) ||\r\n JSON.stringify(props.datasets) !== JSON.stringify(state.datasets)\r\n ) {\r\n return { items: props.functions, datasets: props.datasets }\r\n }\r\n return false\r\n }\r\n\r\n // v3\r\n selectFunction = (uuid, selectedFunction) => {\r\n this.state.items.forEach((x) => {\r\n if (x.uuid === uuid) {\r\n // rester error\r\n x.selectedFunctionError = false\r\n // TODO stop change columns values if same function type\r\n x.request = { ...x.request, columns: this.updateColumns(selectedFunction), function: selectedFunction }\r\n this.props.updateFunction(x.uuid, x)\r\n }\r\n })\r\n }\r\n\r\n resolutionHelp = (res) => {\r\n const bbox = this.getBbox()\r\n\r\n const polygon = turf.polygon([\r\n [\r\n [bbox[0].min_lon, bbox[0].min_lat],\r\n [bbox[0].max_lon, bbox[0].min_lat],\r\n [bbox[0].max_lon, bbox[0].max_lat],\r\n [bbox[0].min_lon, bbox[0].max_lat],\r\n [bbox[0].min_lon, bbox[0].min_lat],\r\n ],\r\n ])\r\n\r\n const area = turf.area(polygon) / 509262593023557\r\n\r\n const zoomData = [\r\n 110, 830, 5870, 41150, 288110, 2016830, 14117870, 98825150, 691776110, 4842432830, 33897029870, 237279209150,\r\n 1660954464110, 11626681248830, 81386768741870, 569707381193150,\r\n ]\r\n\r\n return `Map will generate max ${this.kFormatter(Math.floor(area * zoomData[res]))} H3 hex`\r\n }\r\n\r\n kFormatter = (num) => {\r\n return Math.abs(num) > 999\r\n ? `${Math.sign(num) * (Math.abs(num) / 1000).toFixed(1)} K`\r\n : Math.sign(num) * Math.abs(num)\r\n }\r\n\r\n // v3\r\n selectDataset = (uuid, selectedDataset) => {\r\n const datasets = KeplerGlSchema.getDatasetToSave(this.props.keplerInstance)\r\n this.state.items.forEach((x) => {\r\n if (x.uuid === uuid) {\r\n // reset error\r\n x.selectedDatasetError = false\r\n\r\n const findDataSet = datasets.find((y) => y.data.id === selectedDataset.info.id)\r\n const findDatabase = this.props.databases.find((y) => {\r\n return y.uuid === selectedDataset.request.database\r\n })\r\n\r\n if (findDataSet && findDatabase) {\r\n this.props.updateFunction(x.uuid, {\r\n ...x,\r\n respond: {\r\n color: findDataSet.data.color,\r\n driver: findDatabase.driver,\r\n database: selectedDataset.respond.database,\r\n table: selectedDataset.respond.table,\r\n },\r\n request: {\r\n ...x.request,\r\n query: selectedDataset.respond.query,\r\n type: 'dataset',\r\n filters: {},\r\n columns: this.updateColumns(x.request.function),\r\n withQuery: false,\r\n dataset: selectedDataset.info,\r\n database: selectedDataset.respond.database.uuid,\r\n table: selectedDataset.respond.table.uuid,\r\n },\r\n })\r\n } else {\r\n this.props.showMessage({\r\n messageType: 'ERROR',\r\n message: '2000 - Application error please try again',\r\n })\r\n }\r\n }\r\n })\r\n }\r\n\r\n // v3\r\n createFunction = () => {\r\n const uuid = uuidv4()\r\n this.props.addFunction({\r\n [uuid]: {\r\n uuid,\r\n\r\n respond: {\r\n active: false,\r\n runing: false,\r\n color: [125, 125, 125],\r\n database: null,\r\n table: null,\r\n },\r\n request: {\r\n query: null,\r\n columns: {},\r\n filters: {},\r\n withQuery: false,\r\n database: null,\r\n table: null,\r\n jsonTree: {},\r\n filterConjunction: 'AND',\r\n dataset: null,\r\n function: null,\r\n },\r\n selectedDatasetError: null,\r\n selectedFunctionError: null,\r\n selectedColumnError: null,\r\n },\r\n })\r\n }\r\n\r\n // v3\r\n updateColumns = (selectedFunction) => {\r\n const columns = {}\r\n if (!selectedFunction) {\r\n return columns\r\n }\r\n Object.keys(selectedFunction.data).forEach((s) => {\r\n if (selectedFunction.data[s].functionType === 'slider') {\r\n columns[s] = {\r\n ...selectedFunction.data[s],\r\n helpText: selectedFunction.data[s].helpFunction(selectedFunction.data[s].default),\r\n value: selectedFunction.data[s].default,\r\n forGroup: s,\r\n name: null,\r\n error: null,\r\n }\r\n } else {\r\n columns[s] = {\r\n ...selectedFunction.data[s],\r\n forGroup: s,\r\n uuid: uuidv4(),\r\n title: selectedFunction.data[s].title,\r\n executes:\r\n selectedFunction.data[s].minimum === 0\r\n ? []\r\n : [\r\n {\r\n error: null,\r\n data: selectedFunction.data[s].options.map((x) => {\r\n return {\r\n uuid: uuidv4(),\r\n error: null,\r\n name: x.name,\r\n columnFunction: ['none', 'none'],\r\n columnName: null,\r\n columnUuid: null,\r\n }\r\n }),\r\n },\r\n ],\r\n }\r\n }\r\n })\r\n\r\n return columns\r\n }\r\n\r\n // v3\r\n selectForColumn = (functionUuid, functionkey, executeIndex, columnUuid, column) => {\r\n console.log(functionUuid, functionkey, executeIndex, columnUuid, column)\r\n this.state.items.forEach((x) => {\r\n if (x.uuid === functionUuid) {\r\n x.request.columns[functionkey].executes[executeIndex].data.forEach((y) => {\r\n if (y.uuid === columnUuid) {\r\n y.columnName = column.name\r\n y.columnUuid = column.uuid\r\n y.columnType = column.type\r\n y.columnFunction = ['none', column.type]\r\n }\r\n })\r\n\r\n this.props.updateFunction(x.uuid, x)\r\n }\r\n })\r\n }\r\n\r\n // v3\r\n selectForColumnOption = (functionUuid, functionkey, executeIndex, columnUuid, func) => {\r\n this.state.items.forEach((x) => {\r\n if (x.uuid === functionUuid) {\r\n x.request.columns[functionkey].executes[executeIndex].data.forEach((y) => {\r\n if (y.uuid === columnUuid) {\r\n y.columnFunction = func\r\n }\r\n })\r\n this.props.updateFunction(x.uuid, x)\r\n }\r\n })\r\n }\r\n\r\n // v3\r\n addExecute = (activeFunction, functionUuid, functionkey) => {\r\n this.state.items.forEach((x) => {\r\n if (x.uuid === functionUuid) {\r\n x.request.columns[functionkey].executes.push({\r\n error: null,\r\n data: activeFunction.request.function.data[functionkey].options.map((y) => {\r\n return {\r\n uuid: uuidv4(),\r\n error: null,\r\n name: y.name,\r\n columnFunction: ['none', 'none'],\r\n columnType: null,\r\n columnName: null,\r\n columnUuid: null,\r\n }\r\n }),\r\n })\r\n\r\n this.props.updateFunction(x.uuid, x)\r\n }\r\n })\r\n }\r\n\r\n // v3\r\n removeExecute = (functionUuid, functionkey, executeIndex) => {\r\n this.state.items.forEach((x) => {\r\n if (x.uuid === functionUuid) {\r\n if (x.request.columns[functionkey].executes.filter(Boolean).length > x.request.columns[functionkey].minimum) {\r\n x.request.columns[functionkey].executes = x.request.columns[functionkey].executes.filter((s, i) => {\r\n return i !== executeIndex\r\n })\r\n\r\n this.props.updateFunction(x.uuid, x)\r\n }\r\n }\r\n })\r\n }\r\n\r\n // v2\r\n selectForOption = (uuid, forColumn, option) => {\r\n this.state.items.forEach((x) => {\r\n if (x.uuid === uuid) {\r\n x.selectedColumnError = false\r\n x.request.columns[forColumn] = {\r\n ...x.request.columns[forColumn],\r\n forColumn,\r\n option,\r\n }\r\n this.props.updateFunction(x.uuid, x)\r\n }\r\n })\r\n }\r\n\r\n // v3\r\n getColumns = (database, table, id = [], types = []) => {\r\n const columns = this.props.databases\r\n .find((x) => x.uuid === database)\r\n .tables.find((y) => y.uuid === table)\r\n .columns.filter((s) => {\r\n return !id.includes(s.uuid)\r\n })\r\n .filter((z) => {\r\n return types.includes(z.type)\r\n })\r\n\r\n return columns\r\n }\r\n\r\n getColumnOptions = (functionUuid, functionkey, executeIndex, columnUuid) => {\r\n let columns = []\r\n this.state.items.forEach((x) => {\r\n if (x.uuid === functionUuid) {\r\n x.request.columns[functionkey].executes[executeIndex].data.forEach((y) => {\r\n if (y.uuid === columnUuid) {\r\n columns = x.request.columns[functionkey].typeOptions[y.columnType]\r\n }\r\n })\r\n }\r\n })\r\n return columns\r\n }\r\n\r\n toggleDeleteActiveFunction = (uuid) => {\r\n this.setState({ deleteFunction: uuid !== undefined, selected: uuid })\r\n }\r\n\r\n // v3\r\n deleteActiveFunction = (uuid) => {\r\n this.setState({\r\n // eslint-disable-next-line react/no-access-state-in-setstate\r\n items: this.state.items.forEach((x) => {\r\n if (x.uuid === uuid) {\r\n this.props.deleteFunction(x.uuid)\r\n if (x.respond.active) {\r\n this.props.removeDataset(x.uuid)\r\n }\r\n }\r\n }),\r\n })\r\n }\r\n\r\n fixLngValue = (value) => {\r\n if (value > 180) {\r\n return 180\r\n }\r\n if (value < -180) {\r\n return -180\r\n }\r\n return value\r\n }\r\n\r\n fixLatValue = (value) => {\r\n if (value > 85) {\r\n return 85\r\n }\r\n if (value < -85) {\r\n return -85\r\n }\r\n return value\r\n }\r\n\r\n // TO CHECK: START: This is wrong for sure, please replicate what the regular fetch is doing\r\n getBbox = () => {\r\n const mapGetBounds = this.props.mapRef.getMap().getBounds()\r\n\r\n const mapBounds = [\r\n {\r\n min_lat: this.fixLatValue(parseFloat(mapGetBounds.getSouthWest().lat.toFixed(6))),\r\n max_lat: this.fixLatValue(parseFloat(mapGetBounds.getNorthEast().lat.toFixed(6))),\r\n min_lon: this.fixLngValue(parseFloat(mapGetBounds.getSouthWest().lng.toFixed(6))),\r\n max_lon: this.fixLngValue(parseFloat(mapGetBounds.getNorthEast().lng.toFixed(6))),\r\n },\r\n ]\r\n return mapBounds\r\n }\r\n // TO CHECK: END\r\n\r\n // v3\r\n runActiveFunction = async (uuid) => {\r\n // TO CHECK: START\r\n const bboxs = this.getBbox(this.props.keplerInstance.mapState)\r\n // TO CHECK: END\r\n this.setState({\r\n // eslint-disable-next-line react/no-access-state-in-setstate\r\n items: this.state.items.map((x) => {\r\n if (x.uuid === uuid) {\r\n // TO CHECK: START\r\n x.request.bboxs = bboxs\r\n // END OF MESSAGE\r\n this.props.removeDataset(x.uuid)\r\n let error = false\r\n if (x.request.dataset === null && !x.request.withQuery) {\r\n error = true\r\n x.selectedDatasetError = true\r\n }\r\n\r\n if (x.request.function === null) {\r\n error = true\r\n x.selectedFunctionError = true\r\n }\r\n\r\n Object.keys(x.request.columns).forEach((y) => {\r\n if (x.request.columns[y].requird && x.request.columns[y]?.executes?.filter(Boolean).length === 0) {\r\n x.request.columns[y].error = true\r\n error = true\r\n } else {\r\n x.request.columns[y].error = false\r\n x.request.columns[y]?.executes?.filter(Boolean)?.forEach((s) => {\r\n s.data.forEach((e) => {\r\n if (e && !e.columnUuid) {\r\n s.error = true\r\n error = true\r\n } else {\r\n s.error = false\r\n if (\r\n x.request.columns[y].withFunction &&\r\n e &&\r\n !x.request.columns[y].allowNone &&\r\n e.columnFunction[0] === 'none'\r\n ) {\r\n s.error = true\r\n error = true\r\n } else {\r\n s.error = false\r\n }\r\n }\r\n })\r\n })\r\n }\r\n })\r\n\r\n if (error === false) {\r\n x.respond.runing = true\r\n\r\n datasetFunction(x.request.function.action, x)\r\n .then(async (data) => {\r\n const dataset = {\r\n ...x,\r\n type: 'function',\r\n save: 'dynamic',\r\n raw: data,\r\n info: {\r\n sid: x.id || null,\r\n id: x.uuid,\r\n label: `${x.request.dataset?.label || 'runing_query'}-${\r\n x.request.function.action\r\n }-${this.stringGen()}`,\r\n },\r\n loading: false,\r\n }\r\n\r\n await this.props.addDataset({ [x.uuid]: dataset })\r\n this.drawData(x.uuid)\r\n x.respond.active = true\r\n x.respond.runing = false\r\n this.props.updateFunction(x.uuid, x)\r\n })\r\n .catch((respondDrror) => {\r\n x.respond.runing = false\r\n this.props.updateFunction(x.uuid, x)\r\n this.props.setErrorHandler(respondDrror.response)\r\n })\r\n\r\n this.props.updateFunction(x.uuid, x)\r\n }\r\n }\r\n\r\n return x\r\n }),\r\n })\r\n }\r\n\r\n // v3\r\n stringGen = (length = 6) => {\r\n let text = ''\r\n const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'\r\n for (let i = 0; i < length; i++) text += possible.charAt(Math.floor(Math.random() * possible.length))\r\n return text\r\n }\r\n\r\n // v3\r\n drawData = async (uuid) => {\r\n const { savedDatasets } = this.props\r\n\r\n const dataObject = {\r\n datasets: [this.createDatasetObject(savedDatasets[uuid], 'CSV')],\r\n options: {\r\n centerMap: false,\r\n keepExistingConfig: true,\r\n },\r\n }\r\n this.props.sendDataToMap(dataObject)\r\n }\r\n\r\n // v3\r\n processData = (data, type) => {\r\n switch (type) {\r\n case 'GEOJSON':\r\n return processGeojson({\r\n type: 'FeatureCollection',\r\n features: data,\r\n })\r\n case 'ROW':\r\n return processRowObject(data)\r\n case 'CSV':\r\n return processCsvData(data)\r\n default:\r\n break\r\n }\r\n return data\r\n }\r\n\r\n // v3\r\n createDatasetObject = (savedDataset, dataType, multi = false) => {\r\n const processData = this.processData(savedDataset.raw, dataType)\r\n return {\r\n version: 'v1',\r\n info: savedDataset.info,\r\n data: multi\r\n ? {\r\n allData: processData.rows,\r\n fields: processData.fields,\r\n id: savedDataset.info.id,\r\n label: savedDataset.info.label,\r\n }\r\n : { id: savedDataset.info.id, label: savedDataset.info.label, ...processData },\r\n }\r\n }\r\n\r\n // v3\r\n getQueryData = (uuid, selectedDatabase, selectedTable, query) => {\r\n const database = this.props.databases.find((x) => x.uuid === selectedDatabase)\r\n const table = database?.tables?.find((y) => y.uuid === selectedTable)\r\n\r\n this.state.items.forEach((x) => {\r\n if (x.uuid === uuid) {\r\n x.respond = {\r\n ...x.respond,\r\n driver: database.driver,\r\n table: { name: table.name, uuid: table.uuid },\r\n database: { carto: database.carto, name: database.title, uuid: database.uuid },\r\n }\r\n x.request = {\r\n ...x.request,\r\n withQuery: true,\r\n columns: this.updateColumns(x.request.function),\r\n query: query.replace(/\\n\\s*\\n/g, ''),\r\n type: 'query',\r\n filters: {},\r\n table: table.uuid,\r\n database: database.uuid,\r\n }\r\n this.props.updateFunction(x.uuid, x)\r\n }\r\n })\r\n }\r\n\r\n // v3\r\n getFiltersData = (uuid, selectedDatabase, selectedTable, filters, filterConjunction, jsonTree) => {\r\n const database = this.props.databases.find((x) => x.uuid === selectedDatabase)\r\n const table = database?.tables?.find((y) => y.uuid === selectedTable)\r\n\r\n this.state.items.forEach((x) => {\r\n if (x.uuid === uuid) {\r\n x.respond = {\r\n ...x.respond,\r\n driver: database.driver,\r\n table: { name: table.name, uuid: table.uuid },\r\n database: { carto: database.carto, name: database.title, uuid: database.uuid },\r\n }\r\n x.request = {\r\n ...x.request,\r\n withQuery: true,\r\n filters,\r\n columns: this.updateColumns(x.request.function),\r\n jsonTree,\r\n filterConjunction,\r\n query: '',\r\n type: 'dynamic',\r\n table: table.uuid,\r\n database: database.uuid,\r\n }\r\n this.props.updateFunction(x.uuid, x)\r\n }\r\n })\r\n }\r\n\r\n // v3\r\n handleChange = (uuid, column, value) => {\r\n this.state.items.forEach((x) => {\r\n if (x.uuid === uuid) {\r\n x.selectedColumnError = false\r\n\r\n if (x.request.columns[column].helpFunction) {\r\n if (x.request.columns[column].value !== value) {\r\n x.request.columns[column].helpText = x.request.columns[column].helpFunction(value)\r\n }\r\n }\r\n x.request.columns[column].value = value\r\n this.props.updateFunction(x.uuid, x)\r\n }\r\n })\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n {this.state.deleteFunction && (\r\n {\r\n this.deleteActiveFunction(this.state.selected)\r\n this.toggleDeleteActiveFunction()\r\n }}\r\n close={() => {\r\n this.toggleDeleteActiveFunction()\r\n }}\r\n />\r\n )}\r\n
\r\n {this.state.items.map((activeFunction) => {\r\n return (\r\n
\r\n \r\n \r\n {activeFunction.respond.runing ? (\r\n
\r\n loading\r\n
\r\n ) : (\r\n <>\r\n {\r\n this.toggleDeleteActiveFunction(activeFunction.uuid)\r\n }}\r\n className='h-full py-2 col-span-1 pl-2'\r\n >\r\n \r\n
\r\n {\r\n this.runActiveFunction(activeFunction.uuid)\r\n }}\r\n className='h-full py-2 col-span-1 pl-2'\r\n >\r\n \r\n
\r\n \r\n )}\r\n
\r\n {activeFunction.respond?.database && (\r\n <>\r\n {!activeFunction.respond?.database?.carto ? (\r\n
\r\n \r\n The geography function is not defined on your database settings - You can't use this function\r\n \r\n
\r\n ) : (\r\n
\r\n
\r\n Function\r\n
\r\n \r\n
\r\n )}\r\n\r\n {activeFunction?.request?.table && activeFunction.request.function && (\r\n <>\r\n {!activeFunction.request.function?.drivers.includes(activeFunction.respond.driver) ? (\r\n
{`Function is not compatable with ${activeFunction.respond.driver}`}
\r\n ) : (\r\n
\r\n {activeFunction.request.function.action ? (\r\n <>\r\n {Object.keys(activeFunction.request.columns)\r\n .map((column) => {\r\n return { key: column, ...activeFunction.request.columns[column] }\r\n })\r\n .filter((column) => {\r\n return column.functionType === 'twoColumnWithCoord'\r\n })\r\n .map((column, columnIndex) => {\r\n return (\r\n <>\r\n
\r\n {column.title}\r\n\r\n
\r\n {\r\n this.addExecute(activeFunction, activeFunction.uuid, column.key)\r\n }}\r\n className='w-3'\r\n />\r\n
\r\n
\r\n {column.executes.filter(Boolean).map((execute, executeIndex) => {\r\n return (\r\n \r\n \r\n
\r\n )\r\n })}\r\n \r\n )\r\n })}\r\n\r\n {Object.keys(activeFunction.request.columns)\r\n .map((column) => {\r\n return { key: column, ...activeFunction.request.columns[column] }\r\n })\r\n .filter((column) => {\r\n return column.functionType === 'slider'\r\n })\r\n .map((column) => {\r\n return (\r\n <>\r\n
\r\n
\r\n {column.title}\r\n
\r\n
\r\n
\r\n {\r\n this.handleChange(activeFunction.uuid, column.key, value)\r\n }}\r\n />\r\n
\r\n {\r\n if (e.target.value > column.max || e.target.value < column.min) {\r\n return false\r\n }\r\n return this.handleChange(\r\n activeFunction.uuid,\r\n column.key,\r\n parseFloat(e.target.value) || column.value,\r\n )\r\n }}\r\n className='focus:outline-none w-12 h-5 bg-menu text-gray-400 text-xxs px-3 ml-auto'\r\n value={column.value}\r\n />\r\n\r\n
\r\n {\r\n this.props.toggleModal('userHelp', { index: column.helpIndex })\r\n }}\r\n className='text-white w-4 h-4 rounded-sm'\r\n >\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
{column.helpText}
\r\n \r\n )\r\n })}\r\n\r\n {Object.keys(activeFunction.request.columns)\r\n .map((column) => {\r\n return { key: column, ...activeFunction.request.columns[column] }\r\n })\r\n .filter((column) => {\r\n return column.functionType === 'columnWithList'\r\n })\r\n .map((column, columnIndex) => {\r\n return (\r\n <>\r\n
\r\n {column.title}\r\n\r\n
\r\n {\r\n this.addExecute(activeFunction, activeFunction.uuid, column.key)\r\n }}\r\n className='w-3'\r\n />\r\n
\r\n
\r\n {column.executes.filter(Boolean).map((execute, executeIndex) => {\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 ) : 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\r\nconst mapStateToProps = (state) => ({\r\n // TO CHECK: START\r\n\r\n keplerInstance: state.keplerGl?.MapLab,\r\n mapRef: state.app.view.mapRef,\r\n // code: state.app.view.code,\r\n // TO CHECK: END\r\n datasets: Object.keys(state.app.view.datasets)\r\n .map((x) => {\r\n return state.app.view.datasets[x]\r\n })\r\n .filter((x) => {\r\n return x.type !== 'function'\r\n }),\r\n savedDatasets: state.app.view.datasets,\r\n databases: state.app.view.databases,\r\n toggleModal: state.app.view.toggleModal,\r\n functions: Object.keys(state.app.view.functions).map((x) => {\r\n return state.app.view.functions[x]\r\n }),\r\n})\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setErrorHandler: (data) => dispatch(setErrorHandler(data)),\r\n addFunction: (data) => dispatch(addFunction(data)),\r\n deleteFunction: (uuid) => dispatch(deleteFunction(uuid)),\r\n updateFunction: (uuid, data) => dispatch(updateFunction(uuid, data)),\r\n showMessage: (data) => dispatch(showMessage(data)),\r\n sendDataToMap: (data) => dispatch(wrapTo('MapLab', addDataToMap(data))),\r\n removeDataset: (data) => dispatch(wrapTo('MapLab', removeDataset(data))),\r\n addDataset: (data) => {\r\n dispatch(addDataset(data))\r\n return Promise.resolve()\r\n },\r\n})\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(FunctionData)\r\n","/* eslint-disable no-unused-vars */\r\n/* eslint-disable no-underscore-dangle */\r\nimport FunctionIcon from 'components/CustomKepler/common/icons/FunctionIcon'\r\nimport FetchData from 'components/FetchData/FetchData'\r\nimport FunctionData from 'components/FunctionData/FunctionData'\r\nimport { SidePanelFactory } from 'kepler.gl/components'\r\nimport {\r\n ADD_DATA_ID,\r\n ADD_MAP_STYLE_ID,\r\n EXPORT_DATA_ID,\r\n EXPORT_IMAGE_ID,\r\n EXPORT_MAP_ID,\r\n OVERWRITE_MAP_ID,\r\n SAVE_MAP_ID,\r\n SHARE_MAP_ID,\r\n // eslint-disable-next-line prettier/prettier, comma-dangle\r\n SIDEBAR_PANELS,\r\n} from 'kepler.gl/dist/constants/default-settings'\r\nimport get from 'lodash.get'\r\nimport { useCallback, useMemo, useState } from 'react'\r\n\r\nimport styled from 'styled-components'\r\nimport { FormattedMessage } from 'translations'\r\n\r\nexport const StyledSidePanelContent = styled.div`\r\n ${(props) => props.theme.sidePanelScrollBar};\r\n flex-grow: 1;\r\n padding: ${(props) => props.theme.sidePanelInnerPadding}px;\r\n overflow-y: scroll;\r\n overflow-x: hidden;\r\n\r\n .side-panel__content__inner {\r\n display: flex;\r\n height: 100%;\r\n flex-direction: column;\r\n }\r\n`\r\n\r\nCustomSidePanelFactory.deps = SidePanelFactory.deps\r\n\r\n/**\r\n * Vertical sidebar containing input components for the rendering layers\r\n */\r\nexport default function CustomSidePanelFactory(\r\n Sidebar,\r\n PanelHeader,\r\n PanelToggle,\r\n PanelTitle,\r\n LayerManager,\r\n FilterManager,\r\n InteractionManager,\r\n MapManager,\r\n CustomPanels,\r\n) {\r\n // inject components\r\n const SIDEBAR_COMPONENTS = {\r\n layer: LayerManager,\r\n filter: FilterManager,\r\n interaction: InteractionManager,\r\n map: MapManager,\r\n }\r\n\r\n // We should defined sidebar panels here but keeping them for backward compatible\r\n const fullPanels = SIDEBAR_PANELS.map((component) => ({\r\n ...component,\r\n component: SIDEBAR_COMPONENTS[component.id],\r\n }))\r\n\r\n const getCustomPanelProps = get(CustomPanels, ['defaultProps', 'getProps']) || (() => ({}))\r\n\r\n /** @type {typeof import('./side-panel').SidePanel} */\r\n // eslint-disable-next-line max-statements\r\n const SidePanel = (props) => {\r\n const {\r\n appName,\r\n appWebsite,\r\n availableProviders,\r\n datasets,\r\n filters,\r\n layers,\r\n layerBlending,\r\n layerClasses,\r\n layerOrder,\r\n interactionConfig,\r\n panels,\r\n mapInfo,\r\n mapSaved,\r\n mapStateActions,\r\n mapStyle,\r\n mapStyleActions,\r\n onSaveMap,\r\n uiState,\r\n uiStateActions,\r\n visStateActions,\r\n version,\r\n width,\r\n } = props\r\n const { openDeleteModal, toggleModal, toggleSidePanel } = uiStateActions\r\n const { activeSidePanel } = uiState\r\n const { setMapInfo, showDatasetTable, updateTableColor } = visStateActions\r\n const { hasShare, hasStorage } = availableProviders\r\n const [customPanels, setCustomPanels] = useState(null)\r\n const { title } = mapInfo\r\n\r\n const onClickExportImage = useCallback(() => toggleModal(EXPORT_IMAGE_ID), [toggleModal])\r\n const onClickExportData = useCallback(() => toggleModal(EXPORT_DATA_ID), [toggleModal])\r\n const onClickExportMap = useCallback(() => toggleModal(EXPORT_MAP_ID), [toggleModal])\r\n const onClickSaveToStorage = useCallback(\r\n () => toggleModal(mapSaved ? OVERWRITE_MAP_ID : SAVE_MAP_ID),\r\n [mapSaved, toggleModal],\r\n )\r\n const onClickSaveAsToStorage = useCallback(() => {\r\n setMapInfo({\r\n title: `${title || 'Kepler.gl'} (Copy)`,\r\n })\r\n\r\n toggleModal(SAVE_MAP_ID)\r\n }, [title, setMapInfo, toggleModal])\r\n const onClickShareMap = useCallback(() => toggleModal(SHARE_MAP_ID), [toggleModal])\r\n const onShowDatasetTable = useCallback((dataId) => showDatasetTable(dataId), [showDatasetTable])\r\n const onUpdateTableColor = useCallback((dataId, newColor) => updateTableColor(dataId, newColor), [updateTableColor])\r\n const onShowAddDataModal = useCallback(() => toggleModal(ADD_DATA_ID), [toggleModal])\r\n const onShowAddMapStyleModal = useCallback(() => toggleModal(ADD_MAP_STYLE_ID), [toggleModal])\r\n const onRemoveDataset = useCallback((dataId) => openDeleteModal(dataId), [openDeleteModal])\r\n const onToggleSidePanel = useCallback((dataId) => toggleSidePanel(dataId), [activeSidePanel, toggleSidePanel])\r\n const onSaveToStorage = useMemo(\r\n () => (hasStorage ? onClickSaveToStorage : null),\r\n [hasStorage, onClickSaveToStorage],\r\n )\r\n const onSaveAsToStorage = useMemo(\r\n () => (hasStorage && mapSaved ? onClickSaveAsToStorage : null),\r\n [hasStorage, mapSaved, onClickSaveAsToStorage],\r\n )\r\n\r\n const newPanels = [\r\n ...panels,\r\n {\r\n id: 'functions',\r\n label: 'Functions',\r\n iconComponent: FunctionIcon,\r\n onClick: () => {\r\n onToggleSidePanel('functions')\r\n },\r\n },\r\n ]\r\n\r\n const currentPanel = useMemo(\r\n () => newPanels.find(({ id }) => id === activeSidePanel) || {},\r\n [activeSidePanel, newPanels],\r\n )\r\n const onShareMap = useMemo(() => (hasShare ? onClickShareMap : null), [hasShare, onClickShareMap])\r\n const customPanelProps = useMemo(() => getCustomPanelProps(props), [props])\r\n\r\n const PanelComponent = currentPanel.component\r\n\r\n return (\r\n \r\n \r\n {/* the next two components should be moved into one */}\r\n {/* but i am keeping them because of backward compatibility */}\r\n \r\n \r\n
\r\n \r\n \r\n \r\n {PanelComponent && customPanels === null ? (\r\n \r\n ) : null}\r\n\r\n {activeSidePanel === 'functions' && }\r\n \r\n
\r\n
\r\n \r\n
\r\n )\r\n }\r\n\r\n SidePanel.defaultProps = {\r\n panels: fullPanels,\r\n sidebarComponents: SIDEBAR_COMPONENTS,\r\n uiState: {},\r\n visStateActions: {},\r\n mapStyleActions: {},\r\n uiStateActions: {},\r\n availableProviders: {},\r\n mapInfo: {},\r\n }\r\n\r\n return SidePanel\r\n}\r\n\r\nexport const replaceSidePanel = () => {\r\n return [SidePanelFactory, CustomSidePanelFactory]\r\n}\r\n","// Copyright (c) 2020 Uber Technologies, Inc.\r\n//\r\n// Permission is hereby granted, free of charge, to any person obtaining a copy\r\n// of this software and associated documentation files (the \"Software\"), to deal\r\n// in the Software without restriction, including without limitation the rights\r\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n// copies of the Software, and to permit persons to whom the Software is\r\n// furnished to do so, subject to the following conditions:\r\n//\r\n// The above copyright notice and this permission notice shall be included in\r\n// all copies or substantial portions of the Software.\r\n//\r\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n// THE SOFTWARE.\r\n\r\nimport classnames from 'classnames'\r\nimport { ArrowRight } from 'kepler.gl/dist/components/common/icons'\r\nimport Checkbox from 'kepler.gl/dist/components/common/switch'\r\nimport React, { useCallback } from 'react'\r\nimport styled from 'styled-components'\r\n\r\nconst StyledItem = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n font-size: 12px;\r\n line-height: 14px;\r\n padding: 8px;\r\n min-height: ${(props) => props.theme.actionPanelHeight}px;\r\n text-transform: capitalize;\r\n background-color: ${(props) => props.theme.dropdownListBgd};\r\n width: ${(props) => props.theme.actionPanelWidth}px;\r\n position: relative;\r\n ${(props) => (props.color ? `border-left: 3px solid rgb(${props.color});` : '')}\r\n\r\n :hover {\r\n cursor: pointer;\r\n color: ${(props) => props.theme.textColorHl};\r\n .nested-group {\r\n display: block;\r\n }\r\n }\r\n\r\n .label {\r\n margin-left: 8px;\r\n }\r\n\r\n .label-icon {\r\n margin-left: auto;\r\n }\r\n\r\n .nested-group {\r\n width: 110px;\r\n display: none;\r\n color: ${(props) => props.theme.textColor};\r\n position: absolute;\r\n left: 110px;\r\n top: 0px;\r\n padding-left: 4px;\r\n }\r\n`\r\n\r\nconst StyledCheckedbox = styled(Checkbox)`\r\n label {\r\n margin-bottom: 0;\r\n color: ${(props) => props.theme.textColor};\r\n padding-left: 20px;\r\n line-height: 12px;\r\n\r\n &:before {\r\n width: 12px;\r\n height: 12px;\r\n background-color: ${(props) => props.theme.dropdownListBgd};\r\n }\r\n &:hover {\r\n color: ${(props) => props.theme.textColorHl};\r\n }\r\n }\r\n`\r\n\r\nconst renderChildren = (child, index) => {\r\n return React.cloneElement(child, {\r\n onClick: () => {\r\n if (React.isValidElement(child)) {\r\n if (child.props.onClick) {\r\n child.props.onClick(index)\r\n }\r\n }\r\n },\r\n className: classnames('action-panel-item', child.props.className),\r\n })\r\n}\r\n\r\nexport const ActionPanelItem = React.memo(\r\n ({ children, color, className, Icon, label, onClick, isSelection, isActive, style }) => {\r\n const onClickCallback = useCallback(\r\n (event) => {\r\n event.preventDefault()\r\n event.stopPropagation()\r\n onClick()\r\n },\r\n [onClick],\r\n )\r\n\r\n return (\r\n \r\n {Icon ? (\r\n
\r\n \r\n
\r\n ) : null}\r\n {isSelection ? (\r\n \r\n ) : (\r\n {label}\r\n )}\r\n {children && children.length ? (\r\n
\r\n
\r\n \r\n
\r\n
{React.Children.map(children, renderChildren)}
\r\n
\r\n ) : null}\r\n
\r\n )\r\n },\r\n)\r\n\r\nActionPanelItem.displayName = 'ActionPanelItem'\r\n\r\nconst StyledActionPanel = styled.div`\r\n display: flex;\r\n flex-direction: ${(props) => props.direction};\r\n box-shadow: ${(props) => props.theme.dropdownListShadow};\r\n transition: ${(props) => props.theme.transitionSlow};\r\n color: ${(props) => props.theme.textColor};\r\n\r\n .action-panel-item {\r\n ${(props) =>\r\n props.direction === 'column'\r\n ? `border-bottom: 1px solid ${props.theme.panelHeaderIcon}`\r\n : `border-right: 1px solid ${props.theme.panelHeaderIcon}`}\r\n\r\n &:last-of-type {\r\n border-bottom: 0;\r\n }\r\n }\r\n`\r\n\r\n// React compound element https://medium.com/@Dane_s/react-js-compound-components-a6e54b5c9992\r\nconst ActionPanel = React.memo(({ children, className, direction = 'column' }) => {\r\n return (\r\n \r\n {React.Children.map(\r\n children.filter((child) => child),\r\n renderChildren,\r\n )}\r\n \r\n )\r\n})\r\n\r\nActionPanel.displayName = 'ActionPanel'\r\n\r\nexport default ActionPanel\r\n","export function setSelectedPolygon(selectedPolygon) {\r\n return {\r\n type: 'SET_SELECTED_POLYGON',\r\n selectedPolygon,\r\n }\r\n}\r\n\r\nexport function setPointsToLoad(pointsToLoad) {\r\n return {\r\n type: 'SET_POINTS_TO_LOAD',\r\n pointsToLoad,\r\n }\r\n}\r\n\r\nexport function setPolygonsToLoad(polygonsToLoad) {\r\n return {\r\n type: 'SET_POLYGONS_TO_LOAD',\r\n polygonsToLoad,\r\n }\r\n}\r\n\r\nexport function filterByPolygon(polygon) {\r\n return {\r\n type: 'FILTER_BY_POLYGON',\r\n polygon,\r\n }\r\n}\r\n","import classnames from 'classnames'\r\nimport ActionPanel, { ActionPanelItem } from 'components/CustomKepler/common/action-panel'\r\nimport { showDatasetTable } from 'kepler.gl/actions'\r\nimport { FeatureActionPanelFactory, Icons } from 'kepler.gl/components'\r\nimport React, { Component } from 'react'\r\nimport { connect } from 'react-redux'\r\nimport { filterByPolygon } from 'store/actions/polygonActions'\r\n// import { getPointsInPolygon, saveSelectedPointsAndPolygon } from 'store/services/polygonService'\r\nimport styled from 'styled-components'\r\n\r\nconst LAYOVER_OFFSET = 4\r\n\r\nconst StyledActionsLayer = styled.div`\r\n position: absolute;\r\n`\r\n\r\nconst CustomFeatureActionPanel = () => {\r\n class FeatureActionPanel extends Component {\r\n // eslint-disable-next-line react/static-property-placement\r\n static defaultProps = {\r\n position: {},\r\n }\r\n\r\n // Used by onClickOutside\r\n handleClickOutside = (e) => {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n // eslint-disable-next-line react/prop-types\r\n this.props.onClose()\r\n }\r\n\r\n // onSavePolygon = async (datasets, layers, selectedFeature) => {\r\n // // save selected polygon points\r\n // // eslint-disable-next-line react/prop-types\r\n // const pointsInPoly = getPointsInPolygon(selectedFeature, layers, datasets)\r\n // this.props.dispatch(saveSelectedPointsAndPolygon(selectedFeature, pointsInPoly))\r\n // // get selected polygon\r\n // }\r\n\r\n onFilterByPolygon = async (selectedFeature, datasetId) => {\r\n this.props.dispatch(filterByPolygon(selectedFeature))\r\n this.props.dispatch(showDatasetTable(datasetId))\r\n }\r\n\r\n render() {\r\n // eslint-disable-next-line react/prop-types\r\n const { className, datasets, position, layers, currentFilter, onToggleLayer, onDeleteFeature, selectedFeature } =\r\n this.props\r\n\r\n const { layerId = [] } = currentFilter || {}\r\n\r\n return (\r\n \r\n {layers?.filter((filLayer) => filLayer.type === 'point').length > 0 ? (\r\n \r\n \r\n {layers\r\n .filter((filLayer) => filLayer.type === 'point')\r\n .map((layer, index) => (\r\n onToggleLayer(layer)}\r\n className='layer-panel-item'\r\n />\r\n ))}\r\n \r\n \r\n\r\n {/* Save Polygon button will enable in the future\r\n this.onSavePolygon(datasets, layers, selectedFeature)}\r\n /> */}\r\n\r\n this.onFilterByPolygon(selectedFeature, Object.keys(datasets)[0])}\r\n />\r\n \r\n ) : null}\r\n \r\n )\r\n }\r\n }\r\n\r\n FeatureActionPanel.displayName = 'FeatureActionPanel'\r\n\r\n const mapStateToProps = (state) => ({\r\n polygons: state.app.polygons,\r\n })\r\n const mapDispatchToProps = (dispatch) => ({ dispatch })\r\n\r\n return connect(mapStateToProps, mapDispatchToProps)(FeatureActionPanel)\r\n}\r\n\r\nCustomFeatureActionPanel.deps = FeatureActionPanelFactory.deps\r\n\r\nexport function replaceFeatureActionPanel() {\r\n return [FeatureActionPanelFactory, CustomFeatureActionPanel]\r\n}\r\n","/* eslint-disable react-hooks/rules-of-hooks */\r\n// Copyright (c) 2021 Uber Technologies, Inc.\r\n//\r\n// Permission is hereby granted, free of charge, to any person obtaining a copy\r\n// of this software and associated documentation files (the \"Software\"), to deal\r\n// in the Software without restriction, including without limitation the rights\r\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n// copies of the Software, and to permit persons to whom the Software is\r\n// furnished to do so, subject to the following conditions:\r\n//\r\n// The above copyright notice and this permission notice shall be included in\r\n// all copies or substantial portions of the Software.\r\n//\r\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n// THE SOFTWARE.\r\n\r\nimport classnames from 'classnames'\r\nimport { MapDrawPanelFactory } from 'kepler.gl/components'\r\nimport {\r\n CursorClick,\r\n DrawPolygon,\r\n EyeSeen,\r\n EyeUnseen,\r\n Polygon,\r\n // eslint-disable-next-line prettier/prettier, comma-dangle\r\n Rectangle,\r\n} from 'kepler.gl/dist/components/common/icons'\r\nimport { MapControlButton } from 'kepler.gl/dist/components/common/styled-components'\r\nimport ToolbarItem from 'kepler.gl/dist/components/common/toolbar-item'\r\nimport { EDITOR_MODES } from 'kepler.gl/dist/constants/default-settings'\r\nimport React from 'react'\r\nimport { connect } from 'react-redux'\r\nimport styled from 'styled-components'\r\n\r\nconst MaplabToolbarItem = styled(ToolbarItem)`\r\n .toolbar-item__title {\r\n white-space: normal;\r\n text-align: center;\r\n color: ${(props) => props.theme.textColorHl};\r\n }\r\n`\r\n\r\nCustomMapDrawPanelFactory.deps = MapDrawPanelFactory.deps\r\nfunction CustomMapDrawPanelFactory(MapControlTooltip, MapControlPanel, MapControlToolbar) {\r\n const defaultActionIcons = {\r\n visible: EyeSeen,\r\n hidden: EyeUnseen,\r\n polygon: DrawPolygon,\r\n cursor: CursorClick,\r\n innerPolygon: Polygon,\r\n rectangle: Rectangle,\r\n // savedPolygons: ViewListIcon,\r\n }\r\n /** @type {import('./map-draw-panel').MapDrawPanelComponent} */\r\n const MapDrawPanel = React.memo(\r\n ({\r\n editor,\r\n mapControls,\r\n onToggleMapControl,\r\n onSetEditorMode,\r\n publicUser,\r\n\r\n onToggleEditorVisibility,\r\n actionIcons = defaultActionIcons,\r\n }) => {\r\n // const dispatch = useDispatch()\r\n // const EDITOR_MODES = {\r\n // ...MODES,\r\n // SAVED_POLYGONS: 'SAVED_POLYGONS',\r\n // }\r\n const isActive = mapControls?.mapDraw?.active\r\n\r\n const onToggleMenuPanel = React.useCallback(() => onToggleMapControl('mapDraw'), [onToggleMapControl])\r\n // const onLoadSavedPolygons = React.useCallback(() => {\r\n // dispatch(setEditorMode('SAVED_POLYGONS'))\r\n // dispatch(toggleModal('USER_SAVED_POLYGONS'))\r\n // }, [])\r\n if (!mapControls?.mapDraw?.show) {\r\n return null\r\n }\r\n return (\r\n
\r\n {isActive ? (\r\n \r\n {/* \r\n // KEEP IT IN COMMENTS TO SHOW HOW TO ADD CUSTOM OPTION\r\n */}\r\n onSetEditorMode(EDITOR_MODES.EDIT)}\r\n label='toolbar.select'\r\n icon={actionIcons.cursor}\r\n active={editor.mode === EDITOR_MODES.EDIT}\r\n />\r\n onSetEditorMode(EDITOR_MODES.DRAW_POLYGON)}\r\n label='toolbar.polygon'\r\n icon={actionIcons.innerPolygon}\r\n active={editor.mode === EDITOR_MODES.DRAW_POLYGON}\r\n />\r\n onSetEditorMode(EDITOR_MODES.DRAW_RECTANGLE)}\r\n label='toolbar.rectangle'\r\n icon={actionIcons.rectangle}\r\n active={editor.mode === EDITOR_MODES.DRAW_RECTANGLE}\r\n />\r\n \r\n \r\n ) : null}\r\n\r\n {\r\n e.preventDefault()\r\n onToggleMenuPanel()\r\n }}\r\n active={isActive}\r\n className={classnames('map-control-button ', 'map-draw ', { isActive })}\r\n data-tip\r\n data-for='map-draw'\r\n >\r\n \r\n \r\n \r\n
\r\n )\r\n },\r\n )\r\n\r\n MapDrawPanel.displayName = 'MapDrawPanel'\r\n const mapStateToProps = (state) => ({\r\n publicUser: state.app.user.publicUser,\r\n })\r\n const mapDispatchToProps = (dispatch) => ({})\r\n\r\n return connect(mapStateToProps, mapDispatchToProps)(MapDrawPanel)\r\n}\r\n\r\nexport default CustomMapDrawPanelFactory\r\n","/* eslint-disable lines-between-class-members */\r\n/* eslint-disable react/sort-comp */\r\n/* eslint-disable react/jsx-no-undef */\r\n/* eslint-disable no-nested-ternary */\r\n/* eslint-disable react/default-props-match-prop-types */\r\n/* eslint-disable react/require-default-props */\r\n/* eslint-disable react/no-unused-prop-types */\r\n// Copyright (c) 2021 Uber Technologies, Inc.\r\n//\r\n// Permission is hereby granted, free of charge, to any person obtaining a copy\r\n// of this software and associated documentation files (the \"Software\"), to deal\r\n// in the Software without restriction, including without limitation the rights\r\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n// copies of the Software, and to permit persons to whom the Software is\r\n// furnished to do so, subject to the following conditions:\r\n//\r\n// The above copyright notice and this permission notice shall be included in\r\n// all copies or substantial portions of the Software.\r\n//\r\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n// THE SOFTWARE.\r\n\r\nimport classnames from 'classnames'\r\nimport CustomMapDrawPanelFactory from 'components/CustomKepler/map/CustomMapDrawPanel'\r\nimport { toggleModal } from 'kepler.gl/actions'\r\nimport { MapControlFactory, MapControlPanelFactory } from 'kepler.gl/components'\r\nimport { Docs, Layers } from 'kepler.gl/dist/components/common/icons'\r\nimport MapLayerSelector from 'kepler.gl/dist/components/common/map-layer-selector'\r\nimport { MapControlButton, Tooltip } from 'kepler.gl/dist/components/common/styled-components'\r\n// import ToolbarItem from 'kepler.gl/dist/components/common/toolbar-item'\r\n// import VerticalToolbar from 'kepler.gl/dist/components/common/vertical-toolbar'\r\n// eslint-disable-next-line absolute-import/no-relative-path\r\nimport React from 'react'\r\nimport { connect, useDispatch } from 'react-redux'\r\nimport styled from 'styled-components'\r\nimport { FormattedMessage } from 'translations/index'\r\n// import { LOCALE_CODES } from 'translations/locales'\r\n\r\nconst StyledMapControl = styled.div`\r\n right: 0;\r\n top: 84px;\r\n padding: ${(props) => props.theme.mapControl.padding + 3}px;\r\n z-index: 10;\r\n // margin-top: ${(props) => props.top || 0}px;\r\n position: absolute;\r\n display: grid;\r\n row-gap: 8px;\r\n justify-items: end;\r\n pointer-events: none; /* prevent padding from blocking input */\r\n & > * {\r\n /* all children should allow input */\r\n pointer-events: all;\r\n }\r\n`\r\n\r\n/** @type {import('./map-control').MapControlTooltipComponent} */\r\nconst MapControlTooltip = React.memo(({ id, message }) => (\r\n \r\n \r\n \r\n \r\n \r\n))\r\n\r\nMapControlTooltip.displayName = 'MapControlTooltip'\r\n\r\n/**\r\n *\r\n * EXTRA CUSTOM BUTTON - THIS ONE WAS FOR USER'S SAVED MAPS\r\n *\r\n * */\r\nconst StyledProjectPanel = styled.div`\r\n background: ${(props) => props.theme.panelBackground};\r\n padding: 10px;\r\n width: 280px;\r\n box-shadow: ${(props) => props.theme.panelBoxShadow};\r\n .project-title {\r\n color: ${(props) => props.theme.titleTextColor};\r\n font-size: 13px;\r\n font-weight: 500;\r\n display: flex;\r\n justify-content: space-between;\r\n }\r\n .project-description {\r\n color: ${(props) => props.theme.textColor};\r\n font-size: 11px;\r\n margin-top: 12px;\r\n a {\r\n font-weight: 500;\r\n color: ${(props) => props.theme.titleTextColor};\r\n }\r\n }\r\n .project-links {\r\n margin-top: 20px;\r\n width: 100%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: flex-end;\r\n }\r\n`\r\n\r\nconst SampleMapPanel = React.memo((props) => {\r\n const [isActive, setActive] = React.useState(props.publicUser)\r\n\r\n // Redux Selector\r\n\r\n return (\r\n <>\r\n {props.code !== null && props.session.title !== '' && props.session.title !== null ? (\r\n <>\r\n {isActive ? (\r\n \r\n
\r\n
{props.session.title}
\r\n
setActive(false)} className='cursor-pointer w-3 h-3'>\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n {props.session.description &&
{props.session.description}
}\r\n
\r\n ) : (\r\n {\r\n e.preventDefault()\r\n\r\n setActive(true)\r\n }}\r\n >\r\n \r\n \r\n )}\r\n \r\n ) : null}\r\n \r\n )\r\n})\r\nconst UserMapsLoaderPanel = React.memo(({ onToggleMapControl, mapControls }) => {\r\n const dispach = useDispatch()\r\n const showSavedMap = mapControls?.showSavedMap || {}\r\n const { active: isActive } = showSavedMap || {}\r\n\r\n const onToggleMenuPanel = React.useCallback(\r\n (event) => {\r\n event.preventDefault()\r\n onToggleMapControl('showSavedMap')\r\n dispach(toggleModal('USER_SAVED_MAPS'))\r\n },\r\n [onToggleMapControl],\r\n )\r\n\r\n return (\r\n \r\n {/* */}\r\n \r\n \r\n )\r\n})\r\n\r\nUserMapsLoaderPanel.displayName = 'UserMapsLoaderPanel'\r\n\r\n/** @type {import('./map-control').LayerSelectorPanelComponent} */\r\nconst LayerSelectorPanel = React.memo(\r\n ({ onMapToggleLayer, onToggleMapControl, layers, layersToRender, isSplit, mapControls, readOnly, ...restProps }) => {\r\n const visibleLayers = mapControls?.visibleLayers || {}\r\n const { active: isActive, disableClose } = visibleLayers || {}\r\n\r\n const legendLayers = React.useMemo(\r\n () =>\r\n layers.map(({ id, config }) => ({\r\n id,\r\n name: config.label,\r\n // layer\r\n isVisible: layersToRender[id],\r\n })),\r\n [layers, layersToRender],\r\n )\r\n\r\n const onToggleMenuPanel = React.useCallback(\r\n (event) => {\r\n event.preventDefault()\r\n onToggleMapControl('visibleLayers')\r\n },\r\n [onToggleMapControl],\r\n )\r\n\r\n return !isActive ? (\r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n )\r\n },\r\n)\r\n\r\nLayerSelectorPanel.displayName = 'LayerSelectorPanel'\r\n\r\nconst CustomMapControlPanel = React.memo(MapControlPanelFactory())\r\n\r\n// const StyledToolbar = styled(VerticalToolbar)`\r\n// position: absolute;\r\n// right: 32px;\r\n// `\r\n\r\n// /** @type {import('./map-control').LocalePanelComponent} */\r\n// const LocalePanel = React.memo(\r\n// ({ availableLocales, onToggleMapControl, onSetLocale, locale: currentLocal, mapControls }) => {\r\n// const { active: isActive, disableClose, show } = mapControls.mapLocale || {}\r\n\r\n// const onClickItem = React.useCallback(\r\n// (locale) => {\r\n// onSetLocale(locale)\r\n// onToggleMapControl('mapLocale')\r\n// },\r\n// [onSetLocale],\r\n// )\r\n\r\n// const onClickButton = React.useCallback(\r\n// (e) => {\r\n// e.preventDefault()\r\n// onToggleMapControl('mapLocale')\r\n// },\r\n// [onToggleMapControl],\r\n// )\r\n// const getLabel = React.useCallback((locale) => `toolbar.${locale}`, [])\r\n\r\n// if (!show) {\r\n// return null\r\n// }\r\n\r\n// return (\r\n//
\r\n// {isActive ? (\r\n// \r\n// {/* Use our LOCALE_CODES instead of default 'availableLocales' */}\r\n// {Object.keys(LOCALE_CODES).map((locale) => (\r\n// onClickItem(locale)}\r\n// label={getLabel(locale)}\r\n// active={currentLocal === locale}\r\n// />\r\n// ))}\r\n// \r\n// ) : null}\r\n// \r\n// {currentLocal.toUpperCase()}\r\n// \r\n// \r\n//
\r\n// )\r\n// },\r\n// )\r\n\r\n// LocalePanel.displayName = 'LocalePanel'\r\n\r\n// const SampleMapPanel = React.memo(() => {\r\n// return (\r\n// {\r\n// e.preventDefault()\r\n// }}\r\n// >\r\n// \r\n// \r\n// )\r\n// })\r\n\r\nconst mapControlDeps = [...MapControlFactory.deps]\r\nmapControlDeps[0] = CustomMapDrawPanelFactory\r\nCustomMapControlFactory.deps = mapControlDeps\r\n\r\nfunction CustomMapControlFactory(MapDrawPanel, Toggle3dButton, SplitMapButton, MapLegendPanel) {\r\n const DEFAULT_ACTIONS = [\r\n SampleMapPanel,\r\n SplitMapButton,\r\n LayerSelectorPanel,\r\n Toggle3dButton,\r\n MapLegendPanel,\r\n MapDrawPanel,\r\n // LocalePanel,\r\n ]\r\n\r\n /** @type {import('./map-control').MapControl} */\r\n const MapControl = ({ actionComponents = DEFAULT_ACTIONS, ...props }) => {\r\n return (\r\n \r\n {actionComponents.map((ActionComponent, index) => (\r\n // eslint-disable-next-line react/no-array-index-key\r\n \r\n ))}\r\n \r\n )\r\n }\r\n\r\n MapControl.defaultProps = {\r\n isSplit: false,\r\n top: 0,\r\n mapIndex: 0,\r\n logoComponent: <>,\r\n }\r\n\r\n MapControl.displayName = 'MapControl'\r\n\r\n const mapStateToProps = (state) => ({\r\n user: state.app.user.user,\r\n session: state.app.view.session,\r\n code: state.app.view.code,\r\n })\r\n const mapDispatchToProps = (dispatch) => ({})\r\n\r\n return connect(mapStateToProps, mapDispatchToProps)(MapControl)\r\n}\r\n\r\nexport function replaceMapControl() {\r\n return [MapControlFactory, CustomMapControlFactory]\r\n}\r\n","/* eslint-disable react/state-in-constructor */\r\n/* eslint-disable no-underscore-dangle */\r\n/* eslint-disable react/static-property-placement */\r\n// Copyright (c) 2021 Uber Technologies, Inc.\r\n//\r\n// Permission is hereby granted, free of charge, to any person obtaining a copy\r\n// of this software and associated documentation files (the \"Software\"), to deal\r\n// in the Software without restriction, including without limitation the rights\r\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n// copies of the Software, and to permit persons to whom the Software is\r\n// furnished to do so, subject to the following conditions:\r\n//\r\n// The above copyright notice and this permission notice shall be included in\r\n// all copies or substantial portions of the Software.\r\n//\r\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n// THE SOFTWARE.\r\n\r\nimport classnames from 'classnames'\r\nimport { AddMapStyleModalFactory } from 'kepler.gl/components'\r\nimport {\r\n InputLight,\r\n StyledMapContainer,\r\n StyledModalContent,\r\n StyledModalSection,\r\n StyledModalVerticalPanel,\r\n} from 'kepler.gl/dist/components/common/styled-components'\r\nimport { media } from 'kepler.gl/dist/styles/media-breakpoints'\r\nimport PropTypes from 'prop-types'\r\nimport { Component } from 'react'\r\nimport { polyfill } from 'react-lifecycles-compat'\r\nimport MapboxGLMap from 'react-map-gl'\r\nimport styled from 'styled-components'\r\n\r\n// Utils\r\nimport { transformRequest } from 'kepler.gl/dist/utils/map-style-utils/mapbox-utils'\r\nimport { injectIntl } from 'react-intl'\r\nimport { FormattedMessage } from 'translations'\r\n\r\nconst MapH = 190\r\nconst MapW = 264\r\nconst ErrorMsg = {\r\n styleError: 'Failed to load map style, make sure it is published. For private style, paste in your access token.',\r\n}\r\n\r\nconst PreviewMap = styled.div`\r\n align-items: center;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n margin-left: 116px;\r\n flex-shrink: 0;\r\n\r\n .preview-title {\r\n font-weight: 500;\r\n font-size: 10px;\r\n padding: 8px 0px;\r\n }\r\n\r\n .preview-title.error {\r\n color: ${(props) => props.theme.errorColor};\r\n }\r\n\r\n ${media.portable`\r\n margin-left: 32px;\r\n `};\r\n\r\n ${media.palm`\r\n margin-left: unset;\r\n .preview-title {\r\n margin-top: 0px;\r\n }\r\n `};\r\n`\r\n\r\nconst StyledPreviewImage = styled.div`\r\n background: ${(props) => props.theme.modalImagePlaceHolder};\r\n border-radius: 4px;\r\n box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.18);\r\n width: ${MapW}px;\r\n height: ${MapH}px;\r\n position: relative;\r\n\r\n .preview-image-placeholder {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n }\r\n\r\n .preview-image-spinner {\r\n position: absolute;\r\n left: calc(50% - 25px);\r\n top: calc(50% - 25px);\r\n }\r\n`\r\n\r\nconst InlineLink = styled.a`\r\n font-weight: 500;\r\n\r\n :hover {\r\n cursor: pointer;\r\n }\r\n`\r\n\r\nfunction CustomAddMapStyleModalFactory() {\r\n class AddMapStyleModal extends Component {\r\n static propTypes = {\r\n inputMapStyle: PropTypes.func.isRequired,\r\n inputStyle: PropTypes.object.isRequired,\r\n loadCustomMapStyle: PropTypes.func.isRequired,\r\n mapboxApiAccessToken: PropTypes.string.isRequired,\r\n mapboxApiUrl: PropTypes.string.isRequired,\r\n mapState: PropTypes.object.isRequired,\r\n }\r\n\r\n state = {\r\n reRenderKey: 0,\r\n previousToken: null,\r\n }\r\n\r\n static getDerivedStateFromProps(props, state) {\r\n if (props.inputStyle && props.inputStyle.accessToken && props.inputStyle.accessToken !== state.previousToken) {\r\n // toke has changed\r\n // ReactMapGl doesn't re-create map when token has changed\r\n // here we force the map to update\r\n\r\n return {\r\n reRenderKey: state.reRenderKey + 1,\r\n previousToken: props.inputStyle.accessToken,\r\n }\r\n }\r\n\r\n return null\r\n }\r\n\r\n componentDidUpdate() {\r\n const map = this.mapRef && this.mapRef.getMap()\r\n if (map && this._map !== map) {\r\n this._map = map\r\n\r\n map.on('style.load', () => {\r\n const style = map.getStyle()\r\n this.loadMapStyleJson(style)\r\n })\r\n\r\n map.on('error', () => {\r\n this.loadMapStyleError()\r\n })\r\n }\r\n }\r\n\r\n loadMapStyleJson = (style) => {\r\n this.props.loadCustomMapStyle({ style, error: false })\r\n }\r\n\r\n loadMapStyleError = () => {\r\n this.props.loadCustomMapStyle({ error: true })\r\n }\r\n\r\n render() {\r\n const { inputStyle, mapState, mapboxApiUrl, intl } = this.props\r\n\r\n const mapboxApiAccessToken = inputStyle.accessToken || this.props.mapboxApiAccessToken\r\n const mapProps = {\r\n ...mapState,\r\n mapboxApiUrl,\r\n mapboxApiAccessToken,\r\n preserveDrawingBuffer: true,\r\n transformRequest,\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 {intl.formatMessage({ id: 'modal.addStyle.pasteSubtitle0' })}\r\n \r\n {intl.formatMessage({ id: 'modal.addStyle.pasteSubtitle2' })}\r\n \r\n {intl.formatMessage({ id: 'modal.addStyle.pasteSubtitle3' })}\r\n \r\n {intl.formatMessage({ id: 'modal.addStyle.pasteSubtitle4' })}\r\n \r\n
\r\n this.props.inputMapStyle({ url: value })}\r\n placeholder='e.g. mapbox://styles/username/style, http://my.styles.com/xxx/style.json '\r\n />\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n {intl.formatMessage({ id: 'modal.addStyle.publishSubtitle1' })}\r\n \r\n {` mapbox `}\r\n \r\n {intl.formatMessage({ id: 'modal.addStyle.publishSubtitle2' })}\r\n \r\n {intl.formatMessage({ id: 'modal.addStyle.publishSubtitle3' })}\r\n \r\n {intl.formatMessage({ id: 'modal.addStyle.publishSubtitle4' })}\r\n
\r\n\r\n
\r\n {intl.formatMessage({ id: 'modal.addStyle.publishSubtitle5' })}\r\n \r\n {intl.formatMessage({ id: 'modal.addStyle.publishSubtitle6' })}\r\n \r\n {intl.formatMessage({ id: 'modal.addStyle.publishSubtitle7' })}\r\n
\r\n this.props.inputMapStyle({ accessToken: value })}\r\n placeholder={intl.formatMessage({ id: 'modal.addStyle.exampleToken' })}\r\n />\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n this.props.inputMapStyle({ label: value })}\r\n />\r\n
\r\n {intl.formatMessage({ id: 'modal.addStyle.publishSubtitle8' })}\r\n
\r\n \r\n \r\n {inputStyle.error ? ErrorMsg.styleError : (inputStyle.style && inputStyle.style.name) || ''}\r\n
\r\n \r\n {!inputStyle.isValid ? (\r\n
\r\n ) : (\r\n \r\n {\r\n this.mapRef = el\r\n }}\r\n key={this.state.reRenderKey}\r\n width={MapW}\r\n height={MapH}\r\n mapStyle={inputStyle.url}\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 injectIntl(polyfill(AddMapStyleModal))\r\n}\r\n\r\nexport default CustomAddMapStyleModalFactory\r\n\r\nexport function replaceAddMapStyleModal() {\r\n return [AddMapStyleModalFactory, CustomAddMapStyleModalFactory]\r\n}\r\n","import Label from 'components/Portions/Label'\r\nimport React, { Component } from 'react'\r\n\r\nexport default class RadioButton extends Component {\r\n constructor() {\r\n super()\r\n this.state = { checked: true, disable: false }\r\n }\r\n\r\n static getDerivedStateFromProps(nextProps, prevState) {\r\n if (prevState.checked !== nextProps.checked) {\r\n return {\r\n checked: nextProps.checked,\r\n }\r\n }\r\n return null\r\n }\r\n\r\n handleChange = () => {\r\n if (this.state.disable) {\r\n return false\r\n }\r\n const target = { name: this.props.name }\r\n target.value = this.props.value\r\n return this.props.onChange({ target })\r\n }\r\n\r\n render() {\r\n const classes = this.props.dark ? ' bg-droplist' : ' bg-gray-100'\r\n const svgClasses = this.props.dark ? ' text-subPrimary' : ' text-gray-200'\r\n const smallSize = this.props.smallSize ? '0 0 32 32' : '0 0 32 32'\r\n const alingCenter = this.props.smallSize ? 'items-center ' : ''\r\n return (\r\n
\r\n {} : this.handleChange}\r\n className={` ${\r\n this.state.checked ? ' bg-primarycolor' : classes\r\n } h-4 w-4 border-2 border-transparent rounded-full cursor-pointer transition-colors ease-in-out duration-200 focus:outline-none focus:shadow-outline`}\r\n >\r\n \r\n \r\n \r\n \r\n {this.props.label && }\r\n
\r\n )\r\n }\r\n}\r\n","import { useEffect, useMemo, useState } from 'react'\r\n// import { FormattedMessage } from 'translations'\r\nimport RadioButton from 'components/Portions/RadioButton'\r\nimport { MultiSelectFilterFactory } from 'kepler.gl/components'\r\nimport ItemSelector from 'kepler.gl/dist/components/common/item-selector/item-selector'\r\nimport styled from 'styled-components'\r\n\r\nexport const PanelLabel = styled.label.attrs({\r\n className: 'side-panel-panel__label',\r\n})`\r\n color: ${(props) => props.theme.labelColor};\r\n font-size: 11px;\r\n font-weight: 400;\r\n margin-bottom: 4px;\r\n text-transform: capitalize;\r\n`\r\n\r\nCustomMultiSelectFilterFactory.deps = MultiSelectFilterFactory.deps\r\n\r\nfunction CustomMultiSelectFilterFactory() {\r\n const MultiSelectFilter = ({ idx, filter, initFilter, setFilter, setReverse, resetSelection }) => {\r\n const [checked, setChecked] = useState(null)\r\n\r\n useEffect(() => {\r\n if (filter?.reverse) {\r\n setChecked('exclude')\r\n return\r\n }\r\n if ((filter?.reverseValue?.length === 0 || !filter?.reverseValue) && filter.value.length === 0) {\r\n setChecked('all')\r\n return\r\n }\r\n setChecked('include')\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (Array.isArray(filter?.value)) {\r\n if (filter?.value?.length > 0 && checked === 'all' && !filter?.reverse) {\r\n setChecked('include')\r\n }\r\n return\r\n }\r\n if (filter?.reverseValue?.length && checked === 'all' && filter?.reverse) {\r\n setChecked('exclude')\r\n }\r\n }, [filter?.reverseValue, filter?.value])\r\n\r\n const handleReverse = (e) => {\r\n if (filter?.reverseValue?.length === 0 && filter?.value?.length === 0) {\r\n handleAll({ target: { value: 'all' } })\r\n return\r\n }\r\n setChecked(e?.target?.value)\r\n setReverse(e?.target?.value !== 'exclude')\r\n }\r\n\r\n const handleAll = (e) => {\r\n if (checked === 'all') {\r\n return\r\n }\r\n setChecked(e?.target?.value)\r\n resetSelection()\r\n }\r\n\r\n // Drop down available selection options\r\n const options = useMemo(() => {\r\n return filter.domain?.filter((item) =>\r\n filter?.reverse\r\n ? !filter?.reverseValue?.find((resVal) => resVal === item)\r\n : !filter?.value?.find((val) => val === item),\r\n )\r\n }, [filter?.reverseValue, filter?.value])\r\n\r\n useEffect(() => {\r\n if (checked === 'exclude') {\r\n /**\r\n * By default, Kepler uses include functionality. This means that if you don't have any selection, it will show you the map as it is\r\n * (everything visible - filter func disabled).\r\n * If you make at least one selection it will enable the filter functionality & will show you only that one by hiding all the others.\r\n * If you select all the options, visually, it will be in the exact state of the empty selection (It will show you all the available data on the map)\r\n * So, If you start doing the opposite (deleting one by one the selected options) you'll see that it will come to the last one (only one item shown on the map),\r\n * and if you also delete that, it will show you all the map as it is (filtering func disabled). By using the include & exclude functionality,\r\n * we alternate the arrays between \"filter.value\" and \"filter.reverseValue\" keys. At the time that all options are selected (e.g. 10 options) in the \"include\" mode\r\n * the \"filter.value\" array has length 10 and the \"filter.reverseValue\" has length 0. If we click on the \"exclude\" mode, we have to alternate the arrays and\r\n * make \"filter.value\" 0 & \"filter.reverseValue\" 10. But by default Kepler only watches the \"filter.value\" and if it sees that its value is zero, will disable filter\r\n * functionality and will show you all the data. To avoid that we use the \"maplab_dummy\" value as selected value in for \"filter.value\" key. By doing that, the \"filter.value\"\r\n * will always have a value without being able to find it on the map (filter func still enabled) -- THIS IS A HACKY WAY, NOT GOOD ONE BUT AT THE MONENT WORKS.\r\n */\r\n if (options?.length === 0 && (filter?.value?.length === 0 || filter?.value[0] !== 'maplab_dummy')) {\r\n setFilter(idx, 'value', ['maplab_dummy'])\r\n }\r\n if (options?.length === filter.domain?.length) {\r\n handleAll({ target: { value: 'all' } })\r\n }\r\n }\r\n if (checked === 'include') {\r\n // This will happens if users starts deleting one by one the selected options\r\n // and no selected option is available\r\n if (options?.length === filter.domain?.length) {\r\n handleAll({ target: { value: 'all' } })\r\n }\r\n }\r\n }, [options])\r\n\r\n return (\r\n
\r\n \r\n {/*
\r\n \r\n
*/}\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n )\r\n }\r\n return MultiSelectFilter\r\n}\r\n\r\nexport default CustomMultiSelectFilterFactory\r\n","/* eslint-disable react-hooks/rules-of-hooks */\r\n\r\nimport React, { useCallback } from 'react'\r\n\r\nimport CustomMultiSelectFilterFactory from 'components/CustomKepler/filters/CustomMultiSelectFilter'\r\nimport FieldPanelWithFieldSelectFactory from 'kepler.gl/dist/components/filters/filter-panels/filter-panel-with-field-select'\r\n\r\nCustomMultiSelectFilterPanelFactory.deps = [FieldPanelWithFieldSelectFactory, CustomMultiSelectFilterFactory]\r\n\r\nfunction CustomMultiSelectFilterPanelFactory(FieldPanelWithFieldSelect, MultiSelectFilter) {\r\n /** @type {import('./filter-panel-types').FilterPanelComponent} */\r\n const MultiSelectFilterPanel = React.memo(\r\n ({\r\n idx,\r\n datasets,\r\n allAvailableFields,\r\n filter,\r\n isAnyFilterAnimating,\r\n enlargeFilter,\r\n setFilter,\r\n removeFilter,\r\n toggleAnimation,\r\n }) => {\r\n // Selecting option from the list\r\n const onInitializeFilter = useCallback(\r\n (value) => {\r\n // Value is always an array with all the selected options\r\n // If we are in normal mode\r\n if (!filter?.reverse) {\r\n setFilter(idx, 'value', value)\r\n return\r\n }\r\n // Else we are in reverse mode\r\n setFilter(idx, 'reverseValue', value)\r\n // Get opposite values array and assigned them in filter's 'value' key\r\n const oppositeValues = filter.domain.filter((val) => !value.find((itm) => itm === val))\r\n setFilter(idx, 'value', oppositeValues)\r\n },\r\n [idx, setFilter, filter?.reverse],\r\n )\r\n\r\n const onSetReverse = useCallback(\r\n (value) => {\r\n // If both are empty means that users just checked on the \"include\" or \"exclude\"\r\n // radio battons without any select.\r\n if (filter?.reverseValue?.length === 0 && filter?.value?.length === 0) {\r\n return\r\n }\r\n // Toggle reverse key\r\n setFilter(idx, 'reverse', !value)\r\n // If the value was false, means that with the above setFilter the reverse will become true\r\n if (!value) {\r\n // Keep the opposite from the selected values\r\n const oppositeValues = filter.domain.filter((val) => !filter.value.some((itm) => itm === val))\r\n // Keep actual selected values in another key('reverseValue') inside filter object\r\n setFilter(idx, 'reverseValue', filter?.value)\r\n // Update filter's 'value' key with the opposite values\r\n setFilter(idx, 'value', oppositeValues?.length === 0 ? ['dummy'] : oppositeValues)\r\n return\r\n }\r\n // Else, the value was true (we were in reverse mode) and will become false (normal mode), so alternate the assigned keys\r\n const normalValue = filter.reverseValue\r\n setFilter(idx, 'reverseValue', filter?.value)\r\n setFilter(idx, 'value', normalValue?.length === 0 ? [] : normalValue)\r\n },\r\n [idx, setFilter, filter.value, filter.reverseValue],\r\n )\r\n\r\n const onResetSelection = () => {\r\n // Reseting all 'reverse', 'value' & 'reverseValue' keys\r\n setFilter(idx, 'reverse', false)\r\n setFilter(idx, 'reverseValue', [])\r\n setFilter(idx, 'value', [])\r\n }\r\n\r\n return (\r\n
\r\n \r\n {filter.type && !filter.enlarged && (\r\n
\r\n \r\n
\r\n )}\r\n \r\n
\r\n )\r\n },\r\n )\r\n\r\n MultiSelectFilterPanel.displayName = 'MultiSelectFilterPanel'\r\n\r\n return MultiSelectFilterPanel\r\n}\r\n\r\nexport default CustomMultiSelectFilterPanelFactory\r\n","/* eslint-disable react/sort-comp */\r\n/* eslint-disable react/require-default-props */\r\n/* eslint-disable react/static-property-placement */\r\n\r\nimport React, { Component } from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport { createSelector } from 'reselect'\r\nimport styled from 'styled-components'\r\nimport get from 'lodash.get'\r\n\r\nimport CustomMultiSelectFilterPanelFactory from 'components/CustomKepler/filters/filter-panels/CustomMultiSelectFilterPanel'\r\nimport { FilterPanelFactory } from 'kepler.gl/components'\r\nimport { ALL_FIELD_TYPES, FILTER_TYPES } from 'kepler.gl/constants'\r\n\r\nconst StyledFilterPanel = styled.div`\r\n margin-bottom: 12px;\r\n border-radius: 1px;\r\n`\r\n\r\nCustomFilterPanelFactory.deps = [\r\n FilterPanelFactory.deps[0],\r\n FilterPanelFactory.deps[1],\r\n FilterPanelFactory.deps[2],\r\n CustomMultiSelectFilterPanelFactory,\r\n FilterPanelFactory.deps[4],\r\n FilterPanelFactory.deps[5],\r\n]\r\n\r\nfunction CustomFilterPanelFactory(\r\n NewFilterPanel,\r\n TimeRangeFilterPanel,\r\n SingleSelectFilterPanel,\r\n MultiSelectFilterPanel,\r\n RangeFilterPanel,\r\n PolygonFilterPanel,\r\n) {\r\n const FilterPanelComponents = {\r\n default: NewFilterPanel,\r\n [FILTER_TYPES.timeRange]: TimeRangeFilterPanel,\r\n [FILTER_TYPES.select]: SingleSelectFilterPanel,\r\n [FILTER_TYPES.multiSelect]: MultiSelectFilterPanel,\r\n [FILTER_TYPES.range]: RangeFilterPanel,\r\n [FILTER_TYPES.polygon]: PolygonFilterPanel,\r\n }\r\n\r\n return class FilterPanel extends Component {\r\n static propTypes = {\r\n idx: PropTypes.number,\r\n filters: PropTypes.arrayOf(PropTypes.any).isRequired,\r\n filter: PropTypes.object.isRequired,\r\n setFilter: PropTypes.func.isRequired,\r\n removeFilter: PropTypes.func.isRequired,\r\n enlargeFilter: PropTypes.func.isRequired,\r\n toggleAnimation: PropTypes.func.isRequired,\r\n toggleFilterFeature: PropTypes.func.isRequired,\r\n datasets: PropTypes.object,\r\n showDatasetTable: PropTypes.func,\r\n isAnyFilterAnimating: PropTypes.bool,\r\n }\r\n\r\n /* selectors */\r\n\r\n nameSelector = (props) => props.filter.name\r\n\r\n dataIdSelector = (props) => props.filter.dataId[0]\r\n\r\n filterSelector = (props) => props.filters\r\n\r\n fieldsSelector = (props) => {\r\n const datasetId = props.filter.dataId[0]\r\n if (!datasetId) {\r\n return []\r\n }\r\n return get(props, ['datasets', datasetId, 'fields'], [])\r\n }\r\n\r\n // only show current field and field that's not already been used as a filter\r\n availableFieldsSelector = createSelector(\r\n this.fieldsSelector,\r\n this.filterSelector,\r\n this.nameSelector,\r\n this.dataIdSelector,\r\n (fields, filters, name, dataId) =>\r\n fields.filter(\r\n (f) =>\r\n f.type &&\r\n f.type !== ALL_FIELD_TYPES.geojson &&\r\n (f.name === name || !filters.find((d) => d.name === f.name && d.dataId === dataId)),\r\n ),\r\n )\r\n\r\n render() {\r\n const { filter } = this.props\r\n\r\n const { type } = filter\r\n const FilterFilterComponent = (type && FilterPanelComponents[type]) || FilterPanelComponents.default\r\n const allAvailableFields = this.availableFieldsSelector(this.props)\r\n\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n }\r\n}\r\n\r\nexport default CustomFilterPanelFactory\r\n","/* eslint-disable react/require-default-props */\r\n/* eslint-disable react/no-unused-prop-types */\r\n\r\nimport CustomFilterPanelFactory from 'components/CustomKepler/side-panel/filter-panel/CustomFilterPanel'\r\nimport { FilterManagerFactory } from 'kepler.gl/components'\r\nimport { Add } from 'kepler.gl/dist/components/common/icons'\r\nimport { Button, SidePanelDivider, SidePanelSection } from 'kepler.gl/dist/components/common/styled-components'\r\nimport PropTypes from 'prop-types'\r\nimport { useCallback, useMemo } from 'react'\r\nimport { FormattedMessage } from 'translations'\r\n\r\nCustomFilterManagerFactory.deps = [FilterManagerFactory.deps[0], CustomFilterPanelFactory]\r\n\r\nfunction CustomFilterManagerFactory(SourceDataCatalog, FilterPanel) {\r\n const FilterManager = ({ filters = [], datasets, layers, showDatasetTable, visStateActions }) => {\r\n const { addFilter, enlargeFilter, removeFilter, setFilter, toggleAnimation, toggleFilterFeature } = visStateActions\r\n const isAnyFilterAnimating = filters.some((f) => f.isAnimating)\r\n const hadEmptyFilter = filters.some((f) => !f.name)\r\n const hadDataset = Object.keys(datasets).length\r\n\r\n // render last added filter first\r\n const reversedIndex = useMemo(() => {\r\n return new Array(filters.length)\r\n .fill(0)\r\n .map((d, i) => i)\r\n .reverse()\r\n }, [filters.length])\r\n\r\n const onClickAddFilter = useCallback(() => {\r\n const defaultDataset = (Object.keys(datasets).length && Object.keys(datasets)[0]) || null\r\n addFilter(defaultDataset)\r\n setTimeout(() => {\r\n setFilter(filters.length, 'reverse', false)\r\n setFilter(filters.length, 'reverseValue', [])\r\n }, 0)\r\n }, [datasets, addFilter, filters.length])\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n {reversedIndex.map((idx) => (\r\n removeFilter(idx)}\r\n enlargeFilter={() => enlargeFilter(idx)}\r\n toggleAnimation={() => toggleAnimation(idx)}\r\n toggleFilterFeature={() => toggleFilterFeature(idx)}\r\n setFilter={setFilter}\r\n />\r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n )\r\n }\r\n\r\n FilterManager.propTypes = {\r\n datasets: PropTypes.object,\r\n layers: PropTypes.arrayOf(PropTypes.any).isRequired,\r\n filters: PropTypes.arrayOf(PropTypes.any).isRequired,\r\n showDatasetTable: PropTypes.func.isRequired,\r\n visStateActions: PropTypes.object.isRequired,\r\n\r\n // fields can be undefined when dataset is not selected\r\n fields: PropTypes.arrayOf(PropTypes.any),\r\n }\r\n\r\n return FilterManager\r\n}\r\n\r\nexport default CustomFilterManagerFactory\r\n\r\nexport function replaceFilterManager() {\r\n return [FilterManagerFactory, CustomFilterManagerFactory]\r\n}\r\n","/* eslint-disable no-underscore-dangle */\r\n/* eslint-disable react/sort-comp */\r\n/* eslint-disable react/state-in-constructor */\r\n/* eslint-disable react/static-property-placement */\r\n// Copyright (c) 2021 Uber Technologies, Inc.\r\n//\r\n// Permission is hereby granted, free of charge, to any person obtaining a copy\r\n// of this software and associated documentation files (the \"Software\"), to deal\r\n// in the Software without restriction, including without limitation the rights\r\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n// copies of the Software, and to permit persons to whom the Software is\r\n// furnished to do so, subject to the following conditions:\r\n//\r\n// The above copyright notice and this permission notice shall be included in\r\n// all copies or substantial portions of the Software.\r\n//\r\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n// THE SOFTWARE.\r\n\r\nimport classnames from 'classnames'\r\nimport { LayerManagerFactory } from 'kepler.gl/components'\r\nimport { LAYER_BLENDINGS } from 'kepler.gl/constants'\r\nimport { Add, Trash } from 'kepler.gl/dist/components/common/icons'\r\nimport ItemSelector from 'kepler.gl/dist/components/common/item-selector/item-selector'\r\nimport {\r\n Button,\r\n PanelLabel,\r\n SidePanelDivider,\r\n SidePanelSection,\r\n} from 'kepler.gl/dist/components/common/styled-components'\r\nimport { arrayMove } from 'kepler.gl/dist/utils/data-utils'\r\nimport PropTypes from 'prop-types'\r\nimport React, { Component } from 'react'\r\nimport { injectIntl } from 'react-intl'\r\nimport { connect } from 'react-redux'\r\nimport { SortableContainer, SortableElement } from 'react-sortable-hoc'\r\nimport { createSelector } from 'reselect'\r\nimport styled from 'styled-components'\r\nimport { FormattedMessage } from 'translations'\r\n\r\nconst ResetButton = styled(Button)`\r\n background: #3a414c;\r\n margin-left: 8px;\r\n &:hover {\r\n background: #29323c;\r\n }\r\n`\r\n\r\nconst LayerBlendingSelector = ({ layerBlending, updateLayerBlending, intl }) => {\r\n const labeledLayerBlendings = Object.keys(LAYER_BLENDINGS).reduce(\r\n (acc, current) => ({\r\n ...acc,\r\n [intl.formatMessage({ id: LAYER_BLENDINGS[current].label })]: current,\r\n }),\r\n {},\r\n )\r\n\r\n const onChange = React.useCallback(\r\n (blending) => updateLayerBlending(labeledLayerBlendings[blending]),\r\n [updateLayerBlending, labeledLayerBlendings],\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// make sure the element is always visible while is being dragged\r\n// item being dragged is appended in body, here to reset its global style\r\nconst SortableStyledItem = styled.div`\r\n z-index: ${(props) => props.theme.dropdownWrapperZ + 1};\r\n\r\n &.sorting {\r\n pointer-events: none;\r\n }\r\n\r\n &.sorting-layers .layer-panel__header {\r\n background-color: ${(props) => props.theme.panelBackgroundHover};\r\n font-family: ${(props) => props.theme.fontFamily};\r\n font-weight: ${(props) => props.theme.fontWeight};\r\n font-size: ${(props) => props.theme.fontSize};\r\n line-height: ${(props) => props.theme.lineHeight};\r\n *,\r\n *:before,\r\n *:after {\r\n box-sizing: border-box;\r\n }\r\n .layer__drag-handle {\r\n opacity: 1;\r\n color: ${(props) => props.theme.textColorHl};\r\n }\r\n }\r\n`\r\n\r\nCustomLayerManagerFactory.deps = LayerManagerFactory.deps\r\n\r\nfunction CustomLayerManagerFactory(AddDataButton, LayerPanel, SourceDataCatalog) {\r\n // By wrapping layer panel using a sortable element we don't have to implement the drag and drop logic into the panel itself;\r\n // Developers can provide any layer panel implementation and it will still be sortable\r\n const SortableItem = SortableElement(({ children, isSorting }) => {\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n })\r\n\r\n const WrappedSortableContainer = SortableContainer(({ children }) => {\r\n return
{children}
\r\n })\r\n\r\n class LayerManager extends Component {\r\n static propTypes = {\r\n datasets: PropTypes.object.isRequired,\r\n layerBlending: PropTypes.string.isRequired,\r\n layerClasses: PropTypes.object.isRequired,\r\n layers: PropTypes.arrayOf(PropTypes.any).isRequired,\r\n visStateActions: PropTypes.object.isRequired,\r\n // functions\r\n removeDataset: PropTypes.func.isRequired,\r\n showDatasetTable: PropTypes.func.isRequired,\r\n updateTableColor: PropTypes.func.isRequired,\r\n }\r\n\r\n state = {\r\n isSorting: false,\r\n }\r\n\r\n layerClassSelector = (props) => props.layerClasses\r\n\r\n layerTypeOptionsSelector = createSelector(this.layerClassSelector, (layerClasses) =>\r\n Object.keys(layerClasses).map((key) => {\r\n const layer = new layerClasses[key]()\r\n return {\r\n id: key,\r\n label: layer.name,\r\n icon: layer.layerIcon,\r\n requireData: layer.requireData,\r\n }\r\n }),\r\n )\r\n\r\n _addEmptyNewLayer = () => {\r\n const { visStateActions } = this.props\r\n visStateActions.addLayer()\r\n }\r\n\r\n _handleSort = ({ oldIndex, newIndex }) => {\r\n const { visStateActions } = this.props\r\n visStateActions.reorderLayer(arrayMove(this.props.layerOrder, oldIndex, newIndex))\r\n this.setState({ isSorting: false })\r\n }\r\n\r\n _onSortStart = () => {\r\n this.setState({ isSorting: true })\r\n }\r\n\r\n _updateBeforeSortStart = ({ index }) => {\r\n // if layer config is active, close it\r\n const { layerOrder, layers, visStateActions } = this.props\r\n const layerIdx = layerOrder[index]\r\n if (layers[layerIdx].config.isConfigActive) {\r\n visStateActions.layerConfigChange(layers[layerIdx], { isConfigActive: false })\r\n }\r\n }\r\n\r\n render() {\r\n const {\r\n layers,\r\n datasets,\r\n intl,\r\n layerOrder,\r\n showAddDataModal,\r\n updateTableColor,\r\n showDatasetTable,\r\n removeDataset,\r\n uiStateActions,\r\n toggleModal,\r\n visStateActions,\r\n publicUser,\r\n } = this.props\r\n const { toggleModal: openModal } = uiStateActions\r\n const defaultDataset = Object.keys(datasets)[0]\r\n const layerTypeOptions = this.layerTypeOptionsSelector(this.props)\r\n\r\n const onResetMap = () => {\r\n toggleModal('resetMap')\r\n }\r\n\r\n const layerActions = {\r\n layerColorUIChange: visStateActions.layerColorUIChange,\r\n layerConfigChange: visStateActions.layerConfigChange,\r\n layerVisualChannelConfigChange: visStateActions.layerVisualChannelConfigChange,\r\n layerTypeChange: visStateActions.layerTypeChange,\r\n layerVisConfigChange: visStateActions.layerVisConfigChange,\r\n layerTextLabelChange: visStateActions.layerTextLabelChange,\r\n removeLayer: visStateActions.removeLayer,\r\n duplicateLayer: visStateActions.duplicateLayer,\r\n }\r\n\r\n const panelProps = {\r\n datasets,\r\n openModal,\r\n layerTypeOptions,\r\n }\r\n\r\n return (\r\n
\r\n \r\n {!publicUser && (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n {layerOrder.map(\r\n (layerIdx, index) =>\r\n !layers[layerIdx].config.hidden && (\r\n \r\n \r\n \r\n ),\r\n )}\r\n \r\n \r\n \r\n {defaultDataset ? (\r\n \r\n ) : null}\r\n \r\n \r\n
\r\n )\r\n }\r\n }\r\n\r\n const mapStateToProps = (state) => ({\r\n sideBar: state.app.view.sideBar,\r\n toggleModal: state.app.view.toggleModal,\r\n })\r\n const mapDispatchToProps = (dispatch) => ({})\r\n\r\n return injectIntl(connect(mapStateToProps, mapDispatchToProps)(LayerManager))\r\n}\r\nexport function replaceLayerManager() {\r\n return [LayerManagerFactory, CustomLayerManagerFactory]\r\n}\r\n","/* eslint-disable no-underscore-dangle */\r\n/* eslint-disable react/no-access-state-in-setstate */\r\n/* eslint-disable react/state-in-constructor */\r\n/* eslint-disable react/static-property-placement */\r\n// Copyright (c) 2021 Uber Technologies, Inc.\r\n//\r\n// Permission is hereby granted, free of charge, to any person obtaining a copy\r\n// of this software and associated documentation files (the \"Software\"), to deal\r\n// in the Software without restriction, including without limitation the rights\r\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n// copies of the Software, and to permit persons to whom the Software is\r\n// furnished to do so, subject to the following conditions:\r\n//\r\n// The above copyright notice and this permission notice shall be included in\r\n// all copies or substantial portions of the Software.\r\n//\r\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n// THE SOFTWARE.\r\n\r\nimport PropTypes from 'prop-types'\r\nimport { Component } from 'react'\r\n\r\nimport { /* Button, */ SidePanelSection } from 'kepler.gl/dist/components/common/styled-components'\r\n\r\n// import { Add } from 'kepler.gl/dist/components/common/icons'\r\nimport { injectIntl } from 'react-intl'\r\nimport { createSelector } from 'reselect'\r\n// import { FormattedMessage } from 'translations'\r\nimport { MapManagerFactory } from 'kepler.gl/components'\r\nimport ColorSelector from 'kepler.gl/dist/components/side-panel/layer-panel/color-selector'\r\n\r\nCustomMapManagerFactory.deps = MapManagerFactory.deps\r\n\r\nfunction CustomMapManagerFactory(MapStyleSelector, LayerGroupSelector) {\r\n class MapManager extends Component {\r\n static propTypes = {\r\n mapStyle: PropTypes.object.isRequired,\r\n mapStyleActions: PropTypes.object.isRequired,\r\n // showAddMapStyleModal: PropTypes.func.isRequired,\r\n }\r\n\r\n state = {\r\n isSelecting: false,\r\n }\r\n\r\n buildingColorSelector = (props) => props.mapStyle.threeDBuildingColor\r\n\r\n setColorSelector = (props) => props.mapStyleActions.set3dBuildingColor\r\n\r\n _toggleSelecting = () => {\r\n this.setState({ isSelecting: !this.state.isSelecting })\r\n }\r\n\r\n _selectStyle = (val) => {\r\n const { mapStyleActions } = this.props\r\n const { mapStyleChange } = mapStyleActions\r\n mapStyleChange(val)\r\n this._toggleSelecting()\r\n }\r\n\r\n render() {\r\n const { mapStyle, intl, mapStyleActions /* showAddMapStyleModal */ } = this.props\r\n const currentStyle = mapStyle.mapStyles[mapStyle.styleType] || {}\r\n const editableLayers = (currentStyle.layerGroups || []).map((lg) => lg.slug)\r\n const hasBuildingLayer = mapStyle.visibleLayerGroups['3d building']\r\n const colorSetSelector = createSelector(\r\n this.buildingColorSelector,\r\n this.setColorSelector,\r\n (selectedColor, setColor) => [\r\n {\r\n selectedColor,\r\n setColor,\r\n isRange: false,\r\n label: intl.formatMessage({ id: 'mapManager.3dBuildingColor' }),\r\n },\r\n ],\r\n )\r\n\r\n const colorSets = colorSetSelector(this.props)\r\n\r\n return (\r\n
\r\n
\r\n \r\n {editableLayers.length ? (\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 return injectIntl(MapManager)\r\n}\r\n\r\nexport default CustomMapManagerFactory\r\n\r\nexport function replaceMapManager() {\r\n return [MapManagerFactory, CustomMapManagerFactory]\r\n}\r\n","/* eslint-disable react/no-danger */\r\n/* eslint-disable react/require-default-props */\r\n/* eslint-disable react/static-property-placement */\r\nimport { ModalDialogFactory, PanelHeaderFactory } from 'kepler.gl/components'\r\nimport React, { Component } from 'react'\r\nimport styled from 'styled-components'\r\n\r\nconst StyledPanelHeader = styled.div.attrs({\r\n className: 'side-side-panel__header',\r\n})`\r\n background-color: ${(props) => props.theme.sidePanelHeaderBg};\r\n padding: 12px 16px 0 16px;\r\n padding-top: 18px;\r\n`\r\n\r\nfunction CustomPanelHeaderFactory(SaveExportDropdown, CloudStorageDropdown, ModalDialog) {\r\n class PanelHeader extends Component {\r\n static propTypes = {}\r\n\r\n static defaultProps = {}\r\n\r\n constructor() {\r\n super()\r\n\r\n if (!localStorage.getItem('modalInfoShown')) {\r\n localStorage.setItem('modalInfoShown', 'true')\r\n }\r\n }\r\n\r\n closeUserInfoModal = () => {\r\n localStorage.setItem('modalInfoShown', 'false')\r\n }\r\n\r\n render() {\r\n return \r\n }\r\n }\r\n return React.memo(PanelHeader)\r\n}\r\n\r\nCustomPanelHeaderFactory.deps = [PanelHeaderFactory.deps[1], ModalDialogFactory]\r\n\r\nexport const panelHeaderFactories = [PanelHeaderFactory, CustomPanelHeaderFactory]\r\n\r\nexport const customPanelHeaderFactory = CustomPanelHeaderFactory\r\n\r\nexport function replacePanelHeader() {\r\n return [PanelHeaderFactory, CustomPanelHeaderFactory]\r\n}\r\n","const BugReport = () => (\r\n \r\n \r\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 BugReport\r\n","const Check = ({ dark, normalSize, active }) => {\r\n const classes = dark ? ' bg-droplist' : ' bg-gray-100'\r\n const defaultClass = dark ? ' text-subPrimary' : ' text-gray-200'\r\n const svgActiveClasses = active ? 'text-white' : defaultClass\r\n const size = normalSize ? '0 0 32 32' : '0 0 24 24'\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default Check\r\n","const CloseIcon = () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default CloseIcon\r\n","const DeleteBin = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n)\r\n\r\nexport default DeleteBin\r\n","const DownloadCloud = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n)\r\n\r\nexport default DownloadCloud\r\n","const ErrorX = ({ dark, normalSize, active }) => {\r\n const classes = dark ? ' bg-droplist' : ' bg-gray-100'\r\n const defaultClass = dark ? ' text-subPrimary' : ' text-gray-200'\r\n const svgActiveClasses = active ? 'text-white' : defaultClass\r\n const size = normalSize ? '0 0 32 32' : '0 0 24 24'\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default ErrorX\r\n","const ExportData = () => (\r\n \r\n \r\n \r\n \r\n)\r\n\r\nexport default ExportData\r\n","const ExportImage = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n)\r\n\r\nexport default ExportImage\r\n","const Gallery = () => (\r\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 Gallery\r\n","const Help = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n)\r\n\r\nexport default Help\r\n","const ManageDatabases = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n)\r\n\r\nexport default ManageDatabases\r\n","const ManageOrganisations = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n)\r\n\r\nexport default ManageOrganisations\r\n","const SavedMaps = () => (\r\n \r\n \r\n \r\n)\r\n\r\nexport default SavedMaps\r\n","const SaveMaps = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n)\r\n\r\nexport default SaveMaps\r\n","const SearchIcon = () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default SearchIcon\r\n","const Share = ({ color = 'currentColor' }) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n)\r\n\r\nexport default Share\r\n","const StudioMap = () => (\r\n \r\n \r\n \r\n)\r\n\r\nexport default StudioMap\r\n","const UserIcon = ({ color = 'currentColor' }) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n)\r\n\r\nexport default UserIcon\r\n","import PropTypes from 'prop-types'\r\nimport React, { Component } from 'react'\r\n\r\n/**\r\n * Component that alerts if you click outside of it\r\n */\r\nclass OutsideAlerter extends Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.wrapperRef = React.createRef()\r\n this.setWrapperRef = this.setWrapperRef.bind(this)\r\n this.handleClickOutside = this.handleClickOutside.bind(this)\r\n }\r\n\r\n componentDidMount() {\r\n document.addEventListener('mousedown', this.handleClickOutside)\r\n }\r\n\r\n componentWillUnmount() {\r\n document.removeEventListener('mousedown', this.handleClickOutside)\r\n }\r\n\r\n /**\r\n * Alert if clicked on outside of element\r\n */\r\n handleClickOutside(event) {\r\n if (this.wrapperRef && !this.wrapperRef.current.contains(event.target)) {\r\n this.props.clickOutside()\r\n }\r\n }\r\n\r\n setWrapperRef(node) {\r\n this.wrapperRef = node\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n {this.props.children}\r\n
\r\n )\r\n }\r\n}\r\n\r\nOutsideAlerter.propTypes = {\r\n children: PropTypes.element.isRequired,\r\n}\r\n\r\nexport default OutsideAlerter\r\n","import OutsideAlerter from 'components/helpers/OutsideAlerter'\r\nimport React, { Component } from 'react'\r\n\r\nclass DropDown extends Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = { enabled: true, show: false }\r\n }\r\n\r\n static getDerivedStateFromProps(props, state) {\r\n if (props.enabled !== state.enabled) {\r\n return {\r\n enabled: props.enabled,\r\n }\r\n }\r\n return null\r\n }\r\n\r\n toggleDropDown = () => {\r\n if (this.props.disabled === true) {\r\n return false\r\n }\r\n this.props?.toggle(!this.state.show)\r\n // eslint-disable-next-line react/no-access-state-in-setstate\r\n this.setState({ show: !this.state.show })\r\n return true\r\n }\r\n\r\n clickOutside = () => {\r\n try {\r\n this.props?.toggle(false)\r\n } catch (error) {\r\n this.setState({ show: false })\r\n }\r\n\r\n this.setState({ show: false })\r\n }\r\n\r\n hideOnClickInside = () => {\r\n if (this.props?.hideAfterClick) {\r\n this.props.toggle(false)\r\n this.setState({ show: false })\r\n }\r\n }\r\n\r\n render() {\r\n const data = React.Children.toArray(this.props.children)\r\n\r\n return (\r\n \r\n
{data[0]}
\r\n {this.state.show ?
{data[1]}
: null}\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default DropDown\r\n","import React, { Component } from 'react'\r\n\r\nexport default class ToolTip extends Component {\r\n constructor() {\r\n super()\r\n this.state = { enabled: true }\r\n }\r\n\r\n static getDerivedStateFromProps(props, state) {\r\n if (props.enabled !== state.enabled) {\r\n return {\r\n enabled: props.enabled,\r\n }\r\n }\r\n return null\r\n }\r\n\r\n renderPosition = () => {\r\n switch (this.props.position) {\r\n case 'top':\r\n return 'w-32 text-center toptooltip'\r\n case 'bottom':\r\n return 'w-64 bottomtooltip'\r\n case 'right':\r\n return ' top-0 ml-12 tooltip'\r\n case 'center':\r\n return ' top-0 tooltip'\r\n default:\r\n break\r\n }\r\n return null\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n {this.props.children}\r\n {this.state.enabled ? (\r\n
\r\n ) : null}\r\n \r\n )\r\n }\r\n}\r\n","/* eslint-disable react/prefer-stateless-function */\r\nimport { BugReport, Help, UserIcon } from 'components/images'\r\nimport DropDown from 'components/Portions/DropDown'\r\nimport Icon from 'components/Portions/Icon'\r\nimport ToolTip from 'components/Portions/ToolTip'\r\nimport { SETTINGS } from 'constants/default-settings'\r\nimport { Component } from 'react'\r\nimport { connect } from 'react-redux'\r\nimport { withRouter } from 'react-router-dom'\r\n\r\nclass ToolBar extends Component {\r\n toggle = (opened) => {}\r\n\r\n logout = () => {\r\n localStorage.clear()\r\n window.location = '/'\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 {this.props.options.map(({ key, title, icon: SvgIcon, link }) => {\r\n if (\r\n key !== 'manageOrganisations' ||\r\n (key === 'manageOrganisations' &&\r\n (this.props.user.type === 'systemAdministrator' ||\r\n this.props.user.type === 'organizationAdministrator'))\r\n ) {\r\n return (\r\n {\r\n link ? window.open(`${window.location.origin}${link}`) : this.props.toggleModal(key)\r\n }}\r\n >\r\n \r\n \r\n \r\n
\r\n )\r\n }\r\n return <>\r\n })}\r\n
\r\n\r\n
\r\n {\r\n window.open(`${SETTINGS.REPORT_BUG}`)\r\n }}\r\n className='w-12 h-12 relative flex justify-center items-center cursor-pointer text-gray-700 hover:text-white hover:bg-gray-500 transition duration-150 tooltip-container justify-self-end'\r\n >\r\n \r\n \r\n \r\n
\r\n {\r\n this.props.toggleModal('userGuide')\r\n }}\r\n className='w-12 h-12 relative flex justify-center items-center cursor-pointer text-gray-700 hover:text-white hover:bg-gray-500 transition duration-150 tooltip-container justify-self-end'\r\n >\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n {\r\n this.props.toggleModal('settings')\r\n }}\r\n className='flex justify-start gap-2 items-center py-2 px-2 border-gray-400 border-b-1 hover:bg-gray-200 transition duration-150'\r\n >\r\n \r\n \r\n \r\n \r\n \r\n Settings\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n Sign Out\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 toggleModal: state.app.view.toggleModal,\r\n user: state.app.user.user,\r\n})\r\nconst mapDispatchToProps = (dispatch) => ({})\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withRouter(ToolBar))\r\n","import {\r\n ExportData,\r\n ExportImage,\r\n Gallery,\r\n ManageDatabases,\r\n ManageOrganisations,\r\n SaveMaps,\r\n SavedMaps,\r\n StudioMap,\r\n} from 'components/images'\r\n\r\nexport const mapOptions = [\r\n {\r\n key: 'manageSessions',\r\n title: 'Saved maps',\r\n icon: SavedMaps,\r\n },\r\n {\r\n key: 'saveSession',\r\n title: 'Save map',\r\n icon: SaveMaps,\r\n },\r\n {\r\n key: 'exportData',\r\n title: 'Export data',\r\n icon: ExportData,\r\n },\r\n {\r\n key: 'exportImage',\r\n title: 'Export image',\r\n icon: ExportImage,\r\n },\r\n {\r\n key: 'manageDataBase',\r\n title: 'Manage databases',\r\n icon: ManageDatabases,\r\n },\r\n {\r\n key: 'manageOrganisations',\r\n title: 'Manage organisations',\r\n icon: ManageOrganisations,\r\n },\r\n {\r\n key: 'maps-gallery',\r\n title: 'Maps Gallery',\r\n icon: Gallery,\r\n link: '/gallery',\r\n },\r\n]\r\n\r\nexport const galleryOptions = [\r\n {\r\n key: 'manageDataBase',\r\n title: 'Manage databases',\r\n icon: ManageDatabases,\r\n },\r\n {\r\n key: 'manageOrganisations',\r\n title: 'Manage organisations',\r\n icon: ManageOrganisations,\r\n },\r\n {\r\n key: 'studio',\r\n title: 'Map studio',\r\n icon: StudioMap,\r\n link: '/maps',\r\n },\r\n]\r\n","/* eslint-disable react/no-access-state-in-setstate */\r\n/* eslint-disable react/static-property-placement */\r\nimport ToolBar from 'components/Layout/ToolBar'\r\nimport { mapOptions } from 'components/Layout/toolbar-options'\r\nimport { SidebarFactory } from 'kepler.gl/components'\r\nimport { CollapseButtonFactory } from 'kepler.gl/dist/components/side-panel/side-bar'\r\nimport { Component } from 'react'\r\nimport { connect } from 'react-redux'\r\nimport styled from 'styled-components'\r\n\r\n// const AsyncFetchData = loadable(() => import('components/FetchData'))\r\n\r\nconst StyledSidePanelContainer = styled.div`\r\n z-index: 1000;\r\n height: 100%;\r\n width: ${(props) => props.width + 2 * props.theme.sidePanel.margin.left}px;\r\n display: flex;\r\n transition: width 250ms;\r\n position: absolute;\r\n\r\n pointer-events: none; /* prevent padding from blocking input */\r\n & > * {\r\n /* all children should allow input */\r\n pointer-events: all;\r\n }\r\n`\r\n\r\nconst SideBarContainer = styled.div`\r\n transition: left 250ms, right 250ms;\r\n left: ${(props) => props.left}px;\r\n align-items: stretch;\r\n\r\n flex-grow: 1;\r\n`\r\n\r\nconst SideBarInner = styled.div`\r\n background-color: ${(props) => props.theme.sidePanelBg};\r\n border-radius: 1px;\r\n display: flex;\r\n flex-direction: column;\r\n padding-bottom: 100px;\r\n position: relative;\r\n height: 100%;\r\n border-left: ${(props) => props.theme.sidePanelBorder}px solid ${(props) => props.theme.sidePanelBorderColor};\r\n`\r\n\r\nexport function CustomSidebarFactory(CollapseButton) {\r\n class SideBar extends Component {\r\n static defaultProps = {\r\n width: 300,\r\n minifiedWidth: 0,\r\n onOpenOrClose: function noop() {},\r\n }\r\n\r\n constructor() {\r\n super()\r\n this.state = {\r\n // eslint-disable-next-line react/no-unused-state\r\n isFunction: false,\r\n isOpen: true,\r\n }\r\n }\r\n\r\n onOpenOrClose = () => {\r\n this.setState({ isOpen: !this.state.isOpen }, () => {\r\n if (this.state.isFunction) {\r\n this.setState({ isFunction: false })\r\n }\r\n })\r\n }\r\n\r\n onOpenOrCloseFunction = () => {\r\n this.setState({ isFunction: !this.state.isFunction })\r\n }\r\n\r\n render() {\r\n // eslint-disable-next-line no-unused-vars\r\n const { minifiedWidth, width } = this.props\r\n const { isOpen } = this.state\r\n const horizontalOffset = isOpen ? 0 : minifiedWidth - width\r\n\r\n return (\r\n \r\n \r\n \r\n {this.props.children}\r\n \r\n \r\n\r\n \r\n \r\n )\r\n }\r\n }\r\n const mapStateToProps = (state) => ({\r\n activeSidePanel: state.keplerGl?.MapLab.uiState.activeSidePanel,\r\n sideBar: state.app.view.sideBar,\r\n publicUser: state.app.user.publicUser,\r\n toggleModal: state.app.view.toggleModal,\r\n })\r\n const mapDispatchToProps = (dispatch) => ({})\r\n\r\n return connect(mapStateToProps, mapDispatchToProps)(SideBar)\r\n // return React.memo(SideBar)\r\n}\r\n\r\nCustomSidebarFactory.deps = [CollapseButtonFactory]\r\n\r\nexport const replaceSidebar = () => {\r\n return [SidebarFactory, CustomSidebarFactory]\r\n}\r\n","import { SourceDataCatalogFactory } from 'kepler.gl/components'\r\nimport { SidePanelSection } from 'kepler.gl/dist/components/common/styled-components'\r\nimport React from 'react'\r\nimport styled from 'styled-components'\r\n\r\nconst SourceDataCatalogWrapper = styled.div`\r\n transition: ${(props) => props.theme.transition};\r\n`\r\n\r\nCustomSourceDataCatalogFactory.deps = SourceDataCatalogFactory.deps\r\n\r\nfunction CustomSourceDataCatalogFactory(DatasetTitle, DatasetInfo) {\r\n // eslint-disable-next-line react/prop-types\r\n const SourceDataCatalog = ({\r\n datasets,\r\n showDatasetTable,\r\n removeDataset,\r\n onTitleClick,\r\n showDeleteDataset = false,\r\n }) => (\r\n \r\n {Object.values(datasets)\r\n .filter((ds) => ds.type !== 'geojson')\r\n .map((dataset) => (\r\n \r\n \r\n {showDatasetTable ? : null}\r\n \r\n ))}\r\n \r\n )\r\n\r\n return React.memo(SourceDataCatalog)\r\n}\r\n\r\nexport function replaceSourceDataCatalog() {\r\n return [SourceDataCatalogFactory, CustomSourceDataCatalogFactory]\r\n}\r\n","/* eslint-disable jsx-a11y/interactive-supports-focus */\r\nimport React, { Component } from 'react'\r\n\r\nexport default class CheckBox extends Component {\r\n constructor() {\r\n super()\r\n this.state = { checked: true, disable: false }\r\n }\r\n\r\n static getDerivedStateFromProps(nextProps, prevState) {\r\n if (prevState.checked !== nextProps.checked || prevState.disable !== nextProps.disable) {\r\n return {\r\n checked: nextProps.string ? nextProps.checked === nextProps.options[0] : nextProps.checked,\r\n disable: nextProps.disable,\r\n }\r\n }\r\n return null\r\n }\r\n\r\n handleChange = (e) => {\r\n if (this.state.disable) {\r\n return false\r\n }\r\n const target = { name: this.props.name }\r\n if (this.props.string) {\r\n target.value = !this.state.checked ? this.props.options[0] : this.props.options[1]\r\n } else {\r\n target.value = !this.state.checked\r\n }\r\n return this.props.onChange({ target })\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n {this.state.checked && }\r\n \r\n )\r\n }\r\n}\r\n","// eslint-disable-next-line import/no-named-as-default\r\nimport CheckBox from 'components/Portions/CheckBox'\r\nimport ToolTip from 'components/Portions/ToolTip'\r\nimport { Component } from 'react'\r\n\r\n// eslint-disable-next-line react/prefer-stateless-function\r\nexport default class DatabaseItem extends Component {\r\n constructor() {\r\n super()\r\n this.state = {\r\n opened: false,\r\n checked: false,\r\n checkingDatabase: false,\r\n }\r\n }\r\n\r\n toggleHandler = () => {\r\n // eslint-disable-next-line react/no-access-state-in-setstate\r\n this.setState({ opened: !this.state.opened })\r\n }\r\n\r\n handleChecked = () => {\r\n // eslint-disable-next-line react/no-access-state-in-setstate\r\n this.setState({ checked: !this.state.checked })\r\n }\r\n\r\n render() {\r\n const { item, key } = this.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

{item.title}

\r\n {item.connectivity === 'false' && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n\r\n {item.private === 'true' && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n

\r\n {/* eslint-disable-next-line react/jsx-one-expression-per-line */}\r\n {`Driver: ${item.driver}`} \r\n {item.schema && {`Schema: ${item.schema}`}}\r\n {`Tables: ${item.tables.length}`}\r\n \r\n {`last update: \r\n ${item.updated_at}`}\r\n \r\n

\r\n
\r\n
\r\n
\r\n {\r\n item.connectivity === 'true'\r\n ? this.props.toggleModal('refreshDatabaseModal', {\r\n data: false,\r\n service: 'databases',\r\n uuid: item.uuid,\r\n })\r\n : this.setState({ checkingDatabase: true }, () => {\r\n this.props.checkDatabase(\r\n item.uuid,\r\n () => {\r\n this.props.toggleModal('refreshDatabaseModal', {\r\n data: false,\r\n service: 'databases',\r\n uuid: item.uuid,\r\n })\r\n },\r\n () => {\r\n this.setState({ checkingDatabase: false })\r\n },\r\n )\r\n })\r\n }}\r\n >\r\n {this.state.checkingDatabase ? (\r\n Loading please wait\r\n ) : (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n {\r\n this.props.toggleModal('deleteDatabaseModal', { data: false, service: 'databases', uuid: item.uuid })\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n this.props.toggleModal('updateDatabaseModal', { data: true, service: 'databases', uuid: item.uuid })\r\n }}\r\n className='icon cursor-pointer hover:text-primarycolor transition duration-150'\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.opened && item.connectivity\r\n ? item.tables.map((table) => {\r\n return (\r\n
\r\n
\r\n {\r\n this.props.handelTableStatusChange(e, table.uuid)\r\n }}\r\n disable={\r\n table.status === 'error' ||\r\n table.columns.length === 0 ||\r\n table.columns.filter((x) => x.geometry === 'true').length === 0\r\n }\r\n checked={table.status}\r\n options={['active', 'inactive']}\r\n string\r\n />\r\n
\r\n
\r\n x.select === 'true')\r\n .map((x) => x.name)\r\n .join(' ,')}\r\n >\r\n x.geometry === 'true').length === 0 ||\r\n table.status === 'error'\r\n ? 'disconnected'\r\n : ''\r\n } ellipsis`}\r\n >\r\n {`${table.title} ${\r\n // eslint-disable-next-line no-nested-ternary\r\n table.columns.length === 0\r\n ? `[ No columns ]`\r\n : table.columns.filter((x) => x.select === 'true').length === table.columns.length\r\n ? `[ All columns ]`\r\n : `[ ${table.columns\r\n .filter((x) => x.select === 'true')\r\n .map((x) => x.name)\r\n .join(' ,')} ]`\r\n }`}\r\n

\r\n \r\n {table.status !== 'error' && table.columns.filter((x) => x.geometry === 'true').length === 0 && (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n )}\r\n\r\n {table.status === 'error' && (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n )}\r\n
\r\n\r\n

\r\n {`last update ${table.updated_at}`}\r\n

\r\n
\r\n
\r\n
\r\n {table.status !== 'error' ? (\r\n <>\r\n
\r\n {\r\n item.connectivity === 'true'\r\n ? this.props.toggleModal('refreshTableModal', {\r\n data: false,\r\n service: 'tables',\r\n uuid: table.uuid,\r\n })\r\n : this.props.checkDatabase(item.uuid, () => {\r\n this.props.toggleModal('refreshTableModal', {\r\n data: false,\r\n service: 'tables',\r\n uuid: table.uuid,\r\n })\r\n })\r\n }}\r\n viewBox='0 0 24 24'\r\n strokeWidth='1'\r\n stroke='currentColor'\r\n fill='none'\r\n strokeLinecap='round'\r\n strokeLinejoin='round'\r\n >\r\n \r\n \r\n \r\n \r\n
\r\n\r\n {\r\n this.props.toggleModal('updateTableModal', {\r\n data: true,\r\n service: 'tables',\r\n uuid: table.uuid,\r\n })\r\n }}\r\n className='icon cursor-pointer hover:text-primarycolor transition duration-150'\r\n >\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n ) : (\r\n
\r\n
\r\n {\r\n this.props.toggleModal('deleteTableModal', {\r\n data: false,\r\n service: 'tables',\r\n uuid: table.uuid,\r\n })\r\n }}\r\n viewBox='0 0 24 24'\r\n strokeWidth='1'\r\n stroke='currentColor'\r\n fill='none'\r\n strokeLinecap='round'\r\n strokeLinejoin='round'\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n )}\r\n
\r\n
\r\n )\r\n })\r\n : null}\r\n \r\n )\r\n }\r\n}\r\n","import Button from 'components/Portions/Button'\r\nimport Text from 'components/Portions/Text'\r\nimport ModalContainer from 'components/Utilities/ModalContainer'\r\nimport React, { Component } from 'react'\r\n\r\n// eslint-disable-next-line react/prefer-stateless-function\r\nexport default class ConnectivityErrorModal extends Component {\r\n constructor() {\r\n super()\r\n this.state = {}\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n
\r\n error\r\n Connection Error\r\n \r\n You are trying to fetch data from disconnected database. Please check the connectivity and try again\r\n \r\n \r\n
\r\n
\r\n )\r\n }\r\n}\r\n","import React, { Component } from 'react'\r\n\r\nclass Form extends Component {\r\n constructor() {\r\n super()\r\n this.state = {}\r\n }\r\n\r\n onSubmit = (e) => {\r\n e.preventDefault()\r\n this.props.onSubmit()\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n {this.props.children}\r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default Form\r\n","import React, { Component } from 'react'\r\n\r\nclass TextArea extends Component {\r\n constructor() {\r\n super()\r\n this.state = { value: '' }\r\n }\r\n\r\n static getDerivedStateFromProps(props, state) {\r\n if (props.value !== state.value) {\r\n return {\r\n value: props.value,\r\n }\r\n }\r\n return null\r\n }\r\n\r\n handleChange = (e) => {\r\n const target = { name: e.target.name, value: e.target.value }\r\n if (this.props.json) {\r\n try {\r\n target.value = JSON.parse(target.value)\r\n } catch (error) {\r\n target.value = this.state.value\r\n }\r\n }\r\n this.props.onChange({ target })\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default TextArea\r\n","import CheckBox from 'components/Portions/CheckBox'\r\nimport DropList from 'components/Portions/DropList'\r\nimport Form from 'components/Portions/Form'\r\nimport FormGroup from 'components/Portions/FormGroup'\r\nimport Input from 'components/Portions/Input'\r\nimport InputError from 'components/Portions/InputError'\r\nimport Label from 'components/Portions/Label'\r\nimport TextArea from 'components/Portions/TextArea'\r\nimport Modal from 'components/Utilities/Modal'\r\nimport ModalContainer from 'components/Utilities/ModalContainer'\r\nimport { Component } from 'react'\r\nimport { connect } from 'react-redux'\r\n\r\n// eslint-disable-next-line react/prefer-stateless-function\r\nclass CreateDatabaseModal extends Component {\r\n constructor() {\r\n super()\r\n this.state = {\r\n agreePolicy: false,\r\n item: {},\r\n errors: {},\r\n loading: false,\r\n tab: 'connection',\r\n drivers: [\r\n {\r\n name: 'mysql',\r\n port: 3306,\r\n title: 'Mysql - Maria db',\r\n inputs: ['host', 'port', 'username', 'password', 'name'],\r\n },\r\n {\r\n name: 'mssql',\r\n port: 1433,\r\n title: 'Microsoft SQL Server ',\r\n inputs: ['host', 'port', 'username', 'password', 'name', 'schema'],\r\n },\r\n {\r\n name: 'postgres',\r\n port: 5432,\r\n title: 'Postgres - postgis',\r\n inputs: ['host', 'port', 'username', 'password', 'name', 'schema'],\r\n },\r\n {\r\n name: 'snowflake',\r\n port: null,\r\n title: 'Snowflake',\r\n inputs: ['username', 'password', 'name', 'details', 'schema'],\r\n },\r\n { name: 'googleBigQuery', port: null, title: 'Google Big Query', inputs: ['details'] },\r\n ],\r\n driver: {},\r\n }\r\n }\r\n\r\n static getDerivedStateFromProps(props, state) {\r\n if (\r\n props.loading !== state.loading ||\r\n JSON.stringify(props.item) !== JSON.stringify(state.item) ||\r\n JSON.stringify(props.errors) !== JSON.stringify(state.errors)\r\n ) {\r\n return { loading: props.loading, item: props.item, errors: props.errors }\r\n }\r\n return false\r\n }\r\n\r\n componentDidMount() {\r\n const { drivers } = this.state\r\n this.setState({ driver: drivers.find((x) => x.name === this.props.item.driver) })\r\n }\r\n\r\n updateInputs = (driver) => {\r\n const { drivers } = this.state\r\n this.setState({ driver: drivers.find((x) => x.name === driver) }, () => {\r\n this.props.handelChange({ target: { name: 'port', value: this.state.driver.port } })\r\n })\r\n }\r\n\r\n toggleAgreePolicy = (e) => {\r\n this.setState({ agreePolicy: e.target.value })\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n
\r\n
\r\n {\r\n this.setState({ tab: 'connection' })\r\n }}\r\n className={`${\r\n this.state.tab === 'connection' && 'font-bold text-primarycolor hover:text-hovercolor'\r\n } pr-2 py-2 cursor-pointer`}\r\n >\r\n Connection\r\n
\r\n {\r\n this.setState({ tab: 'advanced' })\r\n }}\r\n className={`${\r\n this.state.tab === 'advanced' && 'font-bold text-primarycolor hover:text-hovercolor'\r\n } pr-2 py-2 cursor-pointer`}\r\n >\r\n Advanced\r\n \r\n \r\n {this.state.tab === 'connection' && (\r\n
\r\n \r\n \r\n \r\n {this.state.errors.title}\r\n \r\n\r\n \r\n \r\n {\r\n return { value: x.name, text: x.title }\r\n })}\r\n name='driver'\r\n onChange={(e) => {\r\n this.updateInputs(e.target.value)\r\n this.props.handelChange(e)\r\n }}\r\n id='driver'\r\n placeholder='Select database driver'\r\n value={this.state.item.driver}\r\n />\r\n {this.state.errors.driver}\r\n \r\n\r\n
\r\n {this.state.driver?.inputs?.includes('username') && (\r\n \r\n \r\n \r\n {this.state.errors.username}\r\n \r\n )}\r\n {this.state.driver?.inputs?.includes('password') && (\r\n \r\n \r\n \r\n {this.state.errors.password}\r\n \r\n )}\r\n
\r\n
\r\n {this.state.driver?.inputs?.includes('host') && (\r\n \r\n \r\n \r\n {this.state.errors.host}\r\n \r\n )}\r\n {this.state.driver?.inputs?.includes('port') && (\r\n \r\n \r\n \r\n {this.state.errors.port}\r\n \r\n )}\r\n
\r\n
\r\n {this.state.driver?.inputs?.includes('name') && (\r\n \r\n \r\n \r\n {this.state.errors.name}\r\n \r\n )}\r\n {this.state.driver?.inputs?.includes('schema') && (\r\n \r\n \r\n \r\n {this.state.errors.schema}\r\n \r\n )}\r\n
\r\n\r\n {this.state.driver?.inputs?.includes('details') && (\r\n \r\n \r\n \r\n {this.state.errors.details}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n )}\r\n\r\n {this.state.tab === 'advanced' && (\r\n
\r\n \r\n \r\n \r\n {this.state.errors.carto}\r\n \r\n \r\n
What is the Geography function
\r\n
\r\n The database usually not supports geography functions. Geography functions operate on or generate\r\n Standard SQL GEOGRAPHY values.\r\n
\r\n
\r\n You need to install this function inside your databse driver so you can use the our Geography\r\n functions\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 toggleModal: state.app.view.toggleModal,\r\n})\r\n\r\nexport default connect(mapStateToProps)(CreateDatabaseModal)\r\n","import Text from 'components/Portions/Text'\r\nimport Modal from 'components/Utilities/Modal'\r\nimport ModalContainer from 'components/Utilities/ModalContainer'\r\nimport React, { Component } from 'react'\r\n\r\n// eslint-disable-next-line react/prefer-stateless-function\r\nexport default class DeleteDatabaseModal extends Component {\r\n constructor() {\r\n super()\r\n this.state = {\r\n loading: false,\r\n }\r\n }\r\n\r\n static getDerivedStateFromProps(props, state) {\r\n if (props.loading !== state.loading) {\r\n return { loading: props.loading }\r\n }\r\n return null\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n Are you sure you want to delete this database?\r\n \r\n If you delete a database, you might not be able to access it. This action cannot be undone, do you wish to\r\n continue?\r\n \r\n \r\n \r\n )\r\n }\r\n}\r\n","import Text from 'components/Portions/Text'\r\nimport Modal from 'components/Utilities/Modal'\r\nimport ModalContainer from 'components/Utilities/ModalContainer'\r\nimport { Component } from 'react'\r\n// eslint-disable-next-line react/prefer-stateless-function\r\nexport default class DeleteTableModal extends Component {\r\n constructor() {\r\n super()\r\n this.state = {\r\n loading: false,\r\n }\r\n }\r\n\r\n static getDerivedStateFromProps(props, state) {\r\n if (props.loading !== state.loading) {\r\n return { loading: props.loading }\r\n }\r\n return null\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n Are you sure you want to delete this table?\r\n \r\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et\r\n dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi\r\n \r\n \r\n \r\n )\r\n }\r\n}\r\n","import Text from 'components/Portions/Text'\r\nimport Modal from 'components/Utilities/Modal'\r\nimport ModalContainer from 'components/Utilities/ModalContainer'\r\nimport React, { Component } from 'react'\r\n\r\n// eslint-disable-next-line react/prefer-stateless-function\r\nexport default class RefrechDatabaseModal extends Component {\r\n constructor() {\r\n super()\r\n this.state = {\r\n loading: false,\r\n }\r\n }\r\n\r\n static getDerivedStateFromProps(props, state) {\r\n if (props.loading !== state.loading) {\r\n return { loading: props.loading }\r\n }\r\n return null\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n Are you sure you want to refresh the database metadata?\r\n \r\n Refreshing the database would include all updates made to data in the database’s tables and associated\r\n columns.\r\n \r\n \r\n \r\n )\r\n }\r\n}\r\n","import Text from 'components/Portions/Text'\r\nimport Modal from 'components/Utilities/Modal'\r\nimport ModalContainer from 'components/Utilities/ModalContainer'\r\nimport { Component } from 'react'\r\n\r\n// eslint-disable-next-line react/prefer-stateless-function\r\nexport default class RefrechTableModal extends Component {\r\n constructor() {\r\n super()\r\n this.state = {\r\n loading: false,\r\n }\r\n }\r\n\r\n static getDerivedStateFromProps(props, state) {\r\n if (props.loading !== state.loading) {\r\n return { loading: props.loading }\r\n }\r\n return null\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n Are you sure you want to refresh the table metadata?\r\n This action will update current information with new data.\r\n \r\n \r\n )\r\n }\r\n}\r\n","import CheckBox from 'components/Portions/CheckBox'\r\nimport DropList from 'components/Portions/DropList'\r\nimport Form from 'components/Portions/Form'\r\nimport FormGroup from 'components/Portions/FormGroup'\r\nimport Input from 'components/Portions/Input'\r\nimport InputError from 'components/Portions/InputError'\r\nimport Label from 'components/Portions/Label'\r\nimport TextArea from 'components/Portions/TextArea'\r\nimport Modal from 'components/Utilities/Modal'\r\nimport ModalContainer from 'components/Utilities/ModalContainer'\r\nimport { Component } from 'react'\r\n\r\n// eslint-disable-next-line react/prefer-stateless-function\r\nexport default class UpdateDatabaseModal extends Component {\r\n constructor() {\r\n super()\r\n this.state = {\r\n item: {},\r\n errors: {},\r\n loading: false,\r\n tab: 'connection',\r\n drivers: [\r\n {\r\n name: 'mysql',\r\n port: 3306,\r\n title: 'Mysql - Maria db',\r\n inputs: ['host', 'port', 'username', 'password', 'name'],\r\n },\r\n {\r\n name: 'mssql',\r\n port: 1433,\r\n title: 'Microsoft SQL Server ',\r\n inputs: ['host', 'port', 'username', 'password', 'name', 'schema'],\r\n },\r\n {\r\n name: 'postgres',\r\n port: 5432,\r\n title: 'Postgres - postgis',\r\n inputs: ['host', 'port', 'username', 'password', 'name', 'schema'],\r\n },\r\n {\r\n name: 'snowflake',\r\n port: null,\r\n title: 'Snowflake',\r\n inputs: ['username', 'password', 'name', 'details', 'schema'],\r\n },\r\n { name: 'googleBigQuery', port: null, title: 'Google Big Query', inputs: ['details'] },\r\n ],\r\n driver: {},\r\n }\r\n }\r\n\r\n static getDerivedStateFromProps(props, state) {\r\n if (\r\n props.loading !== state.loading ||\r\n JSON.stringify(props.item) !== JSON.stringify(state.item) ||\r\n JSON.stringify(props.errors) !== JSON.stringify(state.errors)\r\n ) {\r\n return { loading: props.loading, item: props.item, errors: props.errors }\r\n }\r\n return false\r\n }\r\n\r\n componentDidMount() {\r\n const { drivers } = this.state\r\n this.setState({ driver: drivers.find((x) => x.name === this.props.item.driver) })\r\n }\r\n\r\n updateInputs = (driver) => {\r\n const { drivers } = this.state\r\n this.setState({ driver: drivers.find((x) => x.name === driver) }, () => {\r\n this.props.handelChange({ target: { name: 'port', value: this.state.driver.port } })\r\n })\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n
\r\n
\r\n {\r\n this.setState({ tab: 'connection' })\r\n }}\r\n className={`${\r\n this.state.tab === 'connection' && 'font-bold text-primarycolor hover:text-hovercolor'\r\n } pr-2 py-2 cursor-pointer`}\r\n >\r\n Connection\r\n
\r\n {\r\n this.setState({ tab: 'advanced' })\r\n }}\r\n className={`${\r\n this.state.tab === 'advanced' && 'font-bold text-primarycolor hover:text-hovercolor'\r\n } pr-2 py-2 cursor-pointer`}\r\n >\r\n Advanced\r\n \r\n \r\n {this.state.tab === 'connection' && (\r\n
\r\n \r\n \r\n \r\n {this.state.errors.title}\r\n \r\n\r\n \r\n \r\n {\r\n return { value: x.name, text: x.title }\r\n })}\r\n name='driver'\r\n onChange={(e) => {\r\n this.updateInputs(e.target.value)\r\n this.props.handelChange(e)\r\n }}\r\n id='driver'\r\n placeholder='Database Driver'\r\n value={this.state.item.driver}\r\n />\r\n {this.state.errors.driver}\r\n \r\n\r\n
\r\n {this.state.driver?.inputs?.includes('username') && (\r\n \r\n \r\n \r\n {this.state.errors.username}\r\n \r\n )}\r\n {this.state.driver?.inputs?.includes('password') && (\r\n \r\n \r\n \r\n {this.state.errors.password}\r\n \r\n )}\r\n
\r\n
\r\n {this.state.driver?.inputs?.includes('host') && (\r\n \r\n \r\n \r\n {this.state.errors.host}\r\n \r\n )}\r\n {this.state.driver?.inputs?.includes('port') && (\r\n \r\n \r\n \r\n {this.state.errors.port}\r\n \r\n )}\r\n
\r\n
\r\n {this.state.driver?.inputs?.includes('name') && (\r\n \r\n \r\n \r\n {this.state.errors.name}\r\n \r\n )}\r\n {this.state.driver?.inputs?.includes('schema') && (\r\n \r\n \r\n \r\n {this.state.errors.schema}\r\n \r\n )}\r\n
\r\n\r\n {this.state.driver?.inputs?.includes('details') && (\r\n \r\n \r\n \r\n {this.state.errors.details}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n
\r\n )}\r\n {this.state.tab === 'advanced' && (\r\n
\r\n \r\n \r\n \r\n {this.state.errors.carto}\r\n \r\n \r\n
What is the Geography function
\r\n
\r\n The database usually not supports geography functions. Geography functions operate on or generate\r\n Standard SQL GEOGRAPHY values.\r\n
\r\n
\r\n You need to install this function inside your databse driver so you can use the our Geography\r\n functions\r\n
\r\n
\r\n
\r\n )}\r\n \r\n
\r\n
\r\n )\r\n }\r\n}\r\n","import CheckBox from 'components/Portions/CheckBox'\r\nimport DropList from 'components/Portions/DropList'\r\nimport FormGroup from 'components/Portions/FormGroup'\r\nimport InputError from 'components/Portions/InputError'\r\nimport Label from 'components/Portions/Label'\r\nimport Text from 'components/Portions/Text'\r\nimport Modal from 'components/Utilities/Modal'\r\nimport ModalContainer from 'components/Utilities/ModalContainer'\r\nimport { Component } from 'react'\r\n\r\n// eslint-disable-next-line react/prefer-stateless-function\r\nexport default class UpdateTableModal extends Component {\r\n constructor() {\r\n super()\r\n this.state = {\r\n item: {},\r\n items: [],\r\n errors: {},\r\n loading: false,\r\n\r\n // geometryError: false,\r\n geometryTypes: {\r\n none: { value: 0, types: [] },\r\n geometry: { value: 2, types: ['str', 'geometry'] },\r\n Lat: { value: 1, types: ['float', 'decimal'] },\r\n Lon: { value: 1, types: ['float', 'decimal'] },\r\n startLat: { value: 0.5, types: ['float', 'decimal'] },\r\n startLon: { value: 0.5, types: ['float', 'decimal'] },\r\n endLat: { value: 0.5, types: ['float', 'decimal'] },\r\n endLon: { value: 0.5, types: ['float', 'decimal'] },\r\n wkb: { value: 2, types: ['str', 'geometry'] },\r\n wkt: { value: 2, types: ['str', 'geometry'] },\r\n geojson: { value: 2, types: ['str', 'geometry'] },\r\n },\r\n featureTypes: ['point', 'line', 'polygon'],\r\n }\r\n }\r\n\r\n static getDerivedStateFromProps(props, state) {\r\n if (props.loading !== state.loading || JSON.stringify(props.errors) !== JSON.stringify(state.errors)) {\r\n return { loading: props.loading, errors: props.errors }\r\n }\r\n return false\r\n }\r\n\r\n componentDidMount() {\r\n // eslint-disable-next-line react/no-access-state-in-setstate\r\n this.setState({ items: this.props.item?.columns, item: this.props.item })\r\n }\r\n\r\n checkErrors = (column) => {\r\n // check total size of selected types\r\n const total = this.state.items\r\n .map((x) => {\r\n if (x.geometry === 'false') {\r\n return 0\r\n }\r\n return this.state.geometryTypes[x.geometry_type].value\r\n })\r\n .reduce((a, b) => a + b, 0)\r\n\r\n // check if geometry selected or not\r\n if (column.geometry === 'false') {\r\n return false\r\n }\r\n\r\n if (!this.state.geometryTypes[column.geometry_type]?.types?.includes(column.type)) {\r\n return true\r\n }\r\n if (this.state.geometryTypes[column.geometry_type].value === 0.5 && this.state.item.feature_type !== 'line') {\r\n return true\r\n }\r\n if (this.state.geometryTypes[column.geometry_type].value !== 2) {\r\n return (\r\n this.state.items.filter((x) => {\r\n return x.geometry_type === column.geometry_type\r\n }).length > 1\r\n )\r\n }\r\n return total !== 2\r\n }\r\n\r\n checkAllErrors = () => {\r\n return (\r\n this.state.items\r\n .map((x) => {\r\n return this.checkErrors(x)\r\n })\r\n .filter(Boolean).length !== 0\r\n )\r\n }\r\n\r\n handleChange = (e) => {\r\n const { item } = this.state\r\n this.setState({\r\n item: { ...item, [e.target.name]: e.target.value },\r\n })\r\n }\r\n\r\n onCheckUpdate = (column, e) => {\r\n const { items } = this.state\r\n\r\n this.setState({\r\n items: items.map((x) => {\r\n if (x.id === column.id) {\r\n x[e.target.name] = e.target.value\r\n if (x.geometry === 'false') {\r\n x.geometry_type = 'none'\r\n } else {\r\n x.select = 'true'\r\n }\r\n }\r\n\r\n return x\r\n }),\r\n })\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {\r\n this.props.action.handler({ feature_type: this.state.item.feature_type, columns: this.state.items })\r\n },\r\n }}\r\n >\r\n \r\n \r\n {\r\n return { value: x, text: x }\r\n })}\r\n className='w-40'\r\n name='feature_type'\r\n onChange={this.handleChange}\r\n id='feature_type'\r\n value={this.state.item.feature_type}\r\n />\r\n \r\n\r\n \r\n {this.checkAllErrors() && this.state.item.feature_type !== 'line'\r\n ? `you can select start and end only with lines`\r\n : null}\r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n

Field name

\r\n
\r\n
\r\n
\r\n
\r\n Selected\r\n Geometry\r\n Type\r\n
\r\n
\r\n {this.state.items.map((column) => {\r\n return (\r\n \r\n
\r\n
\r\n
\r\n

{`${column.name} `}

\r\n\r\n {`[${column.type}]`}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {\r\n this.onCheckUpdate(column, e)\r\n }}\r\n name='select'\r\n options={['true', 'false']}\r\n string\r\n checked={column.select}\r\n />\r\n
\r\n
\r\n {\r\n this.onCheckUpdate(column, e)\r\n }}\r\n name='geometry'\r\n options={['true', 'false']}\r\n string\r\n checked={column.geometry}\r\n />\r\n
\r\n\r\n
\r\n {\r\n return { value: x, text: x }\r\n })}\r\n className='w-20 px-1'\r\n name='geometry_type'\r\n onChange={(e) => {\r\n this.onCheckUpdate(column, e)\r\n }}\r\n id='geometry_type'\r\n value={column.geometry_type}\r\n />\r\n
\r\n
\r\n \r\n )\r\n })}\r\n \r\n
\r\n )\r\n }\r\n}\r\n","import { Component } from 'react'\r\n\r\nexport default class Pagination extends Component {\r\n renderPages = () => {\r\n const elements = []\r\n const from = this.props.page - 2 > 1 ? this.props.page - 2 : 1\r\n const to = this.props.page + 2 < this.props.pages ? this.props.page + 2 : this.props.pages\r\n\r\n if (this.props.page > 3) {\r\n elements.push(\r\n \r\n ...\r\n ,\r\n )\r\n }\r\n\r\n for (let index = from; index <= to; index++) {\r\n if (index === this.props.page) {\r\n elements.push(\r\n \r\n {index}\r\n ,\r\n )\r\n } else {\r\n elements.push(\r\n this.props.changepage(index)}\r\n className='cursor-pointer p-2 pb-3 -mt-px border-b-2 border-transparent inline-flex items-center text-sm leading-5 font-medium text-gray-500 hover:text-gray-700 hover:border-gray-300 focus:outline-none focus:text-gray-700 focus:border-gray-400 transition ease-in-out duration-150'\r\n >\r\n {index}\r\n ,\r\n )\r\n }\r\n }\r\n\r\n if (this.props.page + 2 < this.props.pages && this.props.pages > 2) {\r\n elements.push(\r\n \r\n ...\r\n ,\r\n )\r\n }\r\n\r\n return elements\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
{this.renderPages()}
\r\n

\r\n displaying from:\r\n {(this.props.page - 1) * this.props.count + 1}\r\n to:\r\n \r\n {(this.props.page - 1) * this.props.count + this.props.count > this.props.total\r\n ? this.props.total\r\n : (this.props.page - 1) * this.props.count + this.props.count}\r\n \r\n from:\r\n {this.props.total}\r\n

\r\n
\r\n )\r\n }\r\n}\r\n","/* eslint-disable linebreak-style */\r\nimport mainService from 'services/mainService'\r\n\r\nexport function tableStatus(uuid, data) {\r\n return mainService\r\n .put(`tables/${uuid}/status`, data)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\nexport function tablesRefresh(uuid) {\r\n return mainService\r\n .get(`tables/${uuid}/refresh`)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\n\r\nexport function tableDelete(uuid) {\r\n return mainService\r\n .delete(`tables/${uuid}/delete`)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\n\r\nexport function tableRecord(uuid) {\r\n return mainService\r\n .get(`tables/${uuid}`)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\nexport function tableColumnUpdate(uuid, data) {\r\n return mainService\r\n .patch(`tables/${uuid}/updateColumns`, data)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\n","import DatabaseItem from 'components/Management/Database/DatabaseItem'\r\nimport ConnectivityErrorModal from 'components/Management/Database/Modals/ConnectivityErrorModal'\r\nimport CreateDatabaseModal from 'components/Management/Database/Modals/CreateDatabaseModal'\r\nimport DeleteDatabaseModal from 'components/Management/Database/Modals/DeleteDatabaseModal'\r\nimport DeleteTableModal from 'components/Management/Database/Modals/DeleteTableModal'\r\nimport RefrechDatabaseModal from 'components/Management/Database/Modals/RefrechDatabaseModal'\r\nimport RefrechTableModal from 'components/Management/Database/Modals/RefrechTableModal'\r\nimport UpdateDatabaseModal from 'components/Management/Database/Modals/UpdateDatabaseModal'\r\nimport UpdateTableModal from 'components/Management/Database/Modals/UpdateTableModal'\r\nimport Button from 'components/Portions/Button'\r\nimport Loading from 'components/Portions/Loading'\r\nimport Pagination from 'components/Portions/Pagination'\r\nimport Text from 'components/Portions/Text'\r\nimport ModalContainer from 'components/Utilities/ModalContainer'\r\nimport { Component } from 'react'\r\nimport { connect } from 'react-redux'\r\nimport ScrollArea from 'react-scrollbar'\r\nimport {\r\n databaseCheck,\r\n databaseCreate,\r\n databaseDelete,\r\n databaseRecord,\r\n databaseRecords,\r\n databaseRefresh,\r\n // eslint-disable-next-line comma-dangle, prettier/prettier\r\n databaseUpdate,\r\n} from 'services/database'\r\nimport { tableColumnUpdate, tableDelete, tableRecord, tablesRefresh, tableStatus } from 'services/tables'\r\nimport { setErrorHandler, showMessage } from 'store/actions/errorsActions'\r\nimport { setDatabses } from 'store/actions/viewActions'\r\n\r\n// eslint-disable-next-line react/prefer-stateless-function\r\nclass ManageDatabases extends Component {\r\n constructor() {\r\n super()\r\n this.state = {\r\n items: [],\r\n item: {},\r\n errors: {},\r\n selected: null,\r\n loading: false,\r\n deleteDatabaseModal: false,\r\n refreshDatabaseModal: false,\r\n refreshTableModal: false,\r\n connectivityErrorModal: false,\r\n deleteTableModal: false,\r\n modalLoading: true,\r\n createDatabaseModal: false,\r\n updateDatabaseModal: false,\r\n updateTableModal: false,\r\n page: 1,\r\n pages: 1,\r\n total: 0,\r\n count: 30,\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.getItems()\r\n }\r\n\r\n getItems = (loading = true) => {\r\n this.setState({ loading }, () => {\r\n databaseRecords({ page: this.state.page, count: this.state.count })\r\n .then((respond) => {\r\n this.props.setDatabses(respond.data)\r\n this.setState({\r\n loading: false,\r\n items: respond.data,\r\n total: respond.meta.total,\r\n pages: Math.ceil(respond.meta.total / respond.meta.count),\r\n count: respond.meta.count,\r\n })\r\n })\r\n .catch((error) => {\r\n this.setState({ modalLoading: false })\r\n\r\n this.props.setErrorHandler(error.response)\r\n })\r\n })\r\n }\r\n\r\n handelChange = (e) => {\r\n const { item, errors } = this.state\r\n item[e.target.name] = e.target.value\r\n\r\n errors[e.target.name] = null\r\n\r\n this.setState({ item, errors })\r\n }\r\n\r\n toggleModal = (modal, selected = null) => {\r\n const modalState = this.state[modal]\r\n // need to close modal\r\n if (!selected) {\r\n this.setState({ item: {}, errors: {}, selected: null, [modal]: !modalState })\r\n return\r\n }\r\n\r\n // need to open modal\r\n if (selected.data) {\r\n // open model with data\r\n switch (selected.service) {\r\n case 'databases':\r\n databaseRecord(selected.uuid)\r\n .then((respond) => {\r\n this.setState({\r\n modalLoading: false,\r\n item: respond.data,\r\n errors: {},\r\n selected,\r\n [modal]: !modalState,\r\n })\r\n })\r\n .catch((error) => {})\r\n break\r\n case 'tables':\r\n tableRecord(selected.uuid)\r\n .then((respond) => {\r\n this.setState({\r\n modalLoading: false,\r\n item: respond.data,\r\n errors: {},\r\n selected,\r\n [modal]: !modalState,\r\n })\r\n })\r\n .catch((error) => {})\r\n break\r\n\r\n default:\r\n break\r\n }\r\n } else {\r\n // open model without data\r\n this.setState({ modalLoading: false, item: {}, errors: {}, selected, [modal]: !modalState })\r\n }\r\n }\r\n\r\n deleteDatabase = () => {\r\n this.setState({ modalLoading: true }, () => {\r\n databaseDelete(this.state.selected.uuid)\r\n .then((respond) => {\r\n this.setState({ deleteDatabaseModal: false })\r\n this.getItems()\r\n this.props.showMessage({\r\n messageType: 'SUCCESS',\r\n message: `Database deleted successfully!`,\r\n })\r\n })\r\n .catch((error) => {\r\n this.props.setErrorHandler(error.response)\r\n })\r\n })\r\n }\r\n\r\n refreshDatabase = (uuid) => {\r\n this.setState({ modalLoading: true }, () => {\r\n databaseRefresh(uuid || this.state.selected.uuid)\r\n .then((respond) => {\r\n if (uuid) {\r\n respond.data.forEach((table, index, array) => {\r\n this.refreshTable(table.uuid, index === array.length - 1)\r\n })\r\n }\r\n this.setState({ refreshDatabaseModal: false })\r\n this.getItems(false)\r\n })\r\n .catch((error) => {\r\n this.setState({ modalLoading: false })\r\n switch (error.response.status) {\r\n case 422:\r\n {\r\n const temp = {}\r\n for (let index = 0; index < error.response.data.errors.length; index++) {\r\n const element = error.response.data.errors[index]\r\n // eslint-disable-next-line prefer-destructuring\r\n temp[element[0]] = element[1][0]\r\n }\r\n this.setState({ errors: temp })\r\n }\r\n break\r\n default:\r\n this.props.setErrorHandler(error.response)\r\n break\r\n }\r\n })\r\n })\r\n }\r\n\r\n refreshTable = (refresh = true, uuid) => {\r\n this.setState({ modalLoading: true }, () => {\r\n tablesRefresh(uuid || this.state.selected.uuid)\r\n .then((respond) => {\r\n this.setState({ refreshTableModal: false })\r\n if (refresh) {\r\n this.getItems(false)\r\n }\r\n })\r\n .catch((error) => {\r\n this.setState({ modalLoading: false })\r\n switch (error.response.status) {\r\n case 422:\r\n {\r\n const temp = {}\r\n for (let index = 0; index < error.response.data.errors.length; index++) {\r\n const element = error.response.data.errors[index]\r\n // eslint-disable-next-line prefer-destructuring\r\n temp[element[0]] = element[1][0]\r\n }\r\n this.setState({ errors: temp })\r\n }\r\n break\r\n default:\r\n this.props.setErrorHandler(error.response)\r\n break\r\n }\r\n })\r\n })\r\n }\r\n\r\n handelTableStatusChange = (e, uuid) => {\r\n tableStatus(uuid, { status: e.target.value })\r\n .then((res) => {\r\n this.getItems(false)\r\n })\r\n .catch((error) => {\r\n this.setState({ modalLoading: false })\r\n switch (error.response.status) {\r\n case 422:\r\n {\r\n const temp = {}\r\n for (let index = 0; index < error.response.data.errors.length; index++) {\r\n const element = error.response.data.errors[index]\r\n // eslint-disable-next-line prefer-destructuring\r\n temp[element[0]] = element[1][0]\r\n }\r\n this.setState({ errors: temp })\r\n }\r\n break\r\n default:\r\n this.props.setErrorHandler(error.response)\r\n break\r\n }\r\n })\r\n }\r\n\r\n updateDatabase = () => {\r\n this.setState({ modalLoading: true }, () => {\r\n databaseUpdate(this.state.selected.uuid, this.state.item)\r\n .then((res) => {\r\n this.getItems(false)\r\n this.props.showMessage({\r\n messageType: 'SUCCESS',\r\n message: 'Database updated please wait while system update you schema informations',\r\n })\r\n this.toggleModal('updateDatabaseModal')\r\n this.setState({ modalLoading: false })\r\n })\r\n .catch((error) => {\r\n this.setState({ modalLoading: false })\r\n switch (error.response.status) {\r\n case 422:\r\n {\r\n const temp = {}\r\n for (let index = 0; index < error.response.data.errors.length; index++) {\r\n const element = error.response.data.errors[index]\r\n // eslint-disable-next-line prefer-destructuring\r\n temp[element[0]] = element[1][0]\r\n }\r\n this.setState({ errors: temp, modalLoading: false })\r\n }\r\n break\r\n default:\r\n this.props.setErrorHandler(error.response)\r\n break\r\n }\r\n })\r\n })\r\n }\r\n\r\n createDatabase = () => {\r\n this.setState({ modalLoading: true }, () => {\r\n databaseCreate(this.state.item)\r\n .then((res) => {\r\n this.props.showMessage({\r\n messageType: 'SUCCESS',\r\n message: 'Database inserted please wait while system getting you schema informations',\r\n })\r\n this.getItems()\r\n this.toggleModal('createDatabaseModal')\r\n this.setState({ modalLoading: false })\r\n })\r\n .catch((error) => {\r\n this.setState({ modalLoading: false })\r\n switch (error.response.status) {\r\n case 422:\r\n {\r\n const temp = {}\r\n for (let index = 0; index < error.response.data.errors.length; index++) {\r\n const element = error.response.data.errors[index]\r\n // eslint-disable-next-line prefer-destructuring\r\n temp[element?.[0][0]] = element[0][1]\r\n }\r\n this.setState({ errors: temp, modalLoading: false })\r\n }\r\n break\r\n default:\r\n this.getItems()\r\n this.props.setErrorHandler(error.response)\r\n break\r\n }\r\n })\r\n })\r\n }\r\n\r\n checkDatabase = (uuid, callback, cancelCallback) => {\r\n databaseCheck(uuid)\r\n .then((res) => {\r\n cancelCallback()\r\n if (!res.meta.status) {\r\n this.toggleModal('connectivityErrorModal', {\r\n data: false,\r\n service: 'databases',\r\n uuid: null,\r\n })\r\n } else {\r\n callback()\r\n this.getItems(false)\r\n }\r\n })\r\n .catch((error) => {\r\n this.setState({ modalLoading: false })\r\n switch (error.response.status) {\r\n case 422:\r\n {\r\n const temp = {}\r\n for (let index = 0; index < error.response.data.errors.length; index++) {\r\n const element = error.response.data.errors[index]\r\n // eslint-disable-next-line prefer-destructuring\r\n temp[element[0]] = element[1][0]\r\n }\r\n this.setState({ errors: temp, modalLoading: false })\r\n }\r\n break\r\n default:\r\n this.props.setErrorHandler(error.response)\r\n break\r\n }\r\n })\r\n }\r\n\r\n updateTableColumn = (data) => {\r\n tableColumnUpdate(this.state.selected.uuid, data)\r\n .then((res) => {\r\n this.getItems(false)\r\n this.toggleModal('updateTableModal')\r\n this.setState({ modalLoading: false })\r\n })\r\n .catch((error) => {\r\n this.setState({ modalLoading: false })\r\n switch (error.response.status) {\r\n case 422:\r\n {\r\n const temp = {}\r\n for (let index = 0; index < error.response.data.errors.length; index++) {\r\n const element = error.response.data.errors[index]\r\n // eslint-disable-next-line prefer-destructuring\r\n temp[element[0]] = element[1][0]\r\n }\r\n this.setState({ errors: temp, modalLoading: false })\r\n }\r\n break\r\n default:\r\n this.props.setErrorHandler(error.response)\r\n break\r\n }\r\n })\r\n }\r\n\r\n changepage = (page) => {\r\n // save page to state\r\n this.setState({ page }, () => {\r\n this.getItems()\r\n })\r\n // save page to context\r\n }\r\n\r\n close = () => {\r\n this.props.close()\r\n }\r\n\r\n deleteTable = () => {\r\n this.setState({ modalLoading: true }, () => {\r\n tableDelete(this.state.selected.uuid)\r\n .then((respond) => {\r\n this.setState({ deleteTableModal: false })\r\n this.getItems(false)\r\n })\r\n .catch((error) => {\r\n this.setState({ modalLoading: false })\r\n this.props.setErrorHandler(error.response)\r\n })\r\n })\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.state.deleteTableModal && (\r\n this.toggleModal('deletTableModal') }}\r\n />\r\n )}\r\n {this.state.deleteDatabaseModal && (\r\n this.toggleModal('deleteDatabaseModal') }}\r\n />\r\n )}\r\n {this.state.refreshDatabaseModal && (\r\n this.toggleModal('refreshDatabaseModal') }}\r\n />\r\n )}\r\n {this.state.connectivityErrorModal && (\r\n this.toggleModal('connectivityErrorModal') }}\r\n />\r\n )}\r\n {this.state.refreshTableModal && (\r\n this.toggleModal('refreshTableModal') }}\r\n />\r\n )}\r\n\r\n {this.state.updateDatabaseModal && (\r\n this.toggleModal('updateDatabaseModal') }}\r\n />\r\n )}\r\n {this.state.createDatabaseModal && (\r\n this.toggleModal('createDatabaseModal') }}\r\n />\r\n )}\r\n {this.state.updateTableModal && (\r\n this.toggleModal('updateTableModal') }}\r\n />\r\n )}\r\n
\r\n

Manage your database’s connection and update the tables’ resources

\r\n {\r\n this.toggleModal('createDatabaseModal', {\r\n data: false,\r\n service: 'databases',\r\n uuid: null,\r\n })\r\n }}\r\n single\r\n type='button'\r\n className={` inline-flex items-center justify-center px-5 py-2 border border-transparent font-medium rounded-sm text-white bg-primarycolor hover:bg-hovercolor focus:outline-none focus:border-primary focus:shadow-outline-green transition ease-in-out duration-150 text-xs leading-5 whitespace-nowrap`}\r\n >\r\n New database\r\n \r\n
\r\n {/* accordiion item header */}\r\n \r\n {this.state.items.length === 0 ? (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n There is no databases available\r\n
\r\n ) : (\r\n <>\r\n \r\n \r\n {this.state.items.map((item) => {\r\n return (\r\n \r\n )\r\n })}\r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n )\r\n }\r\n}\r\nconst mapStateToProps = (state) => ({\r\n refreshItems: state.app.view.refreshDatabase,\r\n})\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setErrorHandler: (data) => dispatch(setErrorHandler(data)),\r\n setDatabses: (data) => dispatch(setDatabses(data)),\r\n showMessage: (data) => dispatch(showMessage(data)),\r\n})\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ManageDatabases)\r\n","import Form from 'components/Portions/Form'\r\nimport FormGroup from 'components/Portions/FormGroup'\r\nimport Input from 'components/Portions/Input'\r\nimport InputError from 'components/Portions/InputError'\r\nimport Label from 'components/Portions/Label'\r\nimport Modal from 'components/Utilities/Modal'\r\nimport ModalContainer from 'components/Utilities/ModalContainer'\r\nimport React, { Component } from 'react'\r\n\r\n// eslint-disable-next-line react/prefer-stateless-function\r\nexport default class CreateOrganizationModal extends Component {\r\n constructor() {\r\n super()\r\n this.state = {\r\n item: {},\r\n errors: {},\r\n loading: false,\r\n }\r\n }\r\n\r\n static getDerivedStateFromProps(props, state) {\r\n if (\r\n props.loading !== state.loading ||\r\n JSON.stringify(props.item) !== JSON.stringify(state.item) ||\r\n JSON.stringify(props.errors) !== JSON.stringify(state.errors)\r\n ) {\r\n return { loading: props.loading, item: props.item, errors: props.errors }\r\n }\r\n return false\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n render() {\r\n return (\r\n \r\n \r\n
\r\n \r\n \r\n \r\n {this.state.errors?.name}\r\n \r\n \r\n \r\n \r\n {this.state.errors.description}\r\n \r\n \r\n \r\n \r\n {this.state.errors.max_users}\r\n \r\n \r\n \r\n \r\n {this.state.errors.max_maps}\r\n \r\n \r\n \r\n \r\n {this.state.errors.expired_date}\r\n \r\n
\r\n
\r\n
\r\n )\r\n }\r\n}\r\n","import Label from 'components/Portions/Label'\r\nimport { Check, ErrorX } from 'components/images'\r\n\r\nconst PasswordChecker = ({ styles, label, checker }) => {\r\n return (\r\n
\r\n {checker ? : }\r\n {label && }\r\n
\r\n )\r\n}\r\n\r\nexport default PasswordChecker\r\n","import DropList from 'components/Portions/DropList'\r\nimport Form from 'components/Portions/Form'\r\nimport FormGroup from 'components/Portions/FormGroup'\r\nimport Input from 'components/Portions/Input'\r\nimport InputError from 'components/Portions/InputError'\r\nimport Label from 'components/Portions/Label'\r\nimport Modal from 'components/Utilities/Modal'\r\nimport ModalContainer from 'components/Utilities/ModalContainer'\r\nimport PasswordChecker from 'components/Portions/PasswordChecker'\r\nimport { Component } from 'react'\r\nimport { connect } from 'react-redux'\r\n\r\n// eslint-disable-next-line react/prefer-stateless-function\r\nclass CreateUserModal extends Component {\r\n constructor() {\r\n super()\r\n this.state = {\r\n item: {},\r\n errors: {},\r\n loading: false,\r\n types: [],\r\n }\r\n }\r\n\r\n static getDerivedStateFromProps(props, state) {\r\n if (\r\n props.loading !== state.loading ||\r\n JSON.stringify(props.item) !== JSON.stringify(state.item) ||\r\n JSON.stringify(props.errors) !== JSON.stringify(state.errors)\r\n ) {\r\n return { loading: props.loading, item: props.item, errors: props.errors }\r\n }\r\n return false\r\n }\r\n\r\n componentDidMount() {\r\n this.setTypes()\r\n }\r\n\r\n setTypes = () => {\r\n if (this.props.user.type !== 'systemAdministrator') {\r\n this.setState({\r\n types: [\r\n { value: 'organizationUser', text: 'Organization user' },\r\n { value: 'organizationAdministrator', text: 'Organization administrator' },\r\n ],\r\n })\r\n } else {\r\n this.setState({\r\n types: [\r\n { value: 'systemAdministrator', text: 'System administrator' },\r\n { value: 'organizationUser', text: 'Organization user' },\r\n { value: 'organizationAdministrator', text: 'Organization administrator' },\r\n ],\r\n })\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n
\r\n \r\n \r\n \r\n {this.state.errors?.first_name}\r\n \r\n \r\n \r\n \r\n {this.state.errors?.last_name}\r\n \r\n \r\n \r\n \r\n {this.state.errors?.email}\r\n \r\n \r\n \r\n \r\n {this.state.errors.password?.message}\r\n {this.state.errors.password?.message && (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n )}\r\n
\r\n\r\n \r\n \r\n {\r\n this.props.handelChange(e)\r\n }}\r\n id='type'\r\n // placeholder='Select user type'\r\n value={this.state?.item?.type}\r\n />\r\n {this.state?.errors?.type}\r\n \r\n
\r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n user: state.app.user.user,\r\n})\r\n\r\nexport default connect(mapStateToProps)(CreateUserModal)\r\n","import Text from 'components/Portions/Text'\r\nimport Modal from 'components/Utilities/Modal'\r\nimport ModalContainer from 'components/Utilities/ModalContainer'\r\nimport { Component } from 'react'\r\n\r\n// eslint-disable-next-line react/prefer-stateless-function\r\nexport default class DeleteOrganisationModal extends Component {\r\n constructor() {\r\n super()\r\n this.state = {\r\n loading: false,\r\n }\r\n }\r\n\r\n static getDerivedStateFromProps(props, state) {\r\n if (props.loading !== state.loading) {\r\n return { loading: props.loading }\r\n }\r\n return null\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n Are you sure you want to delete this organisation?\r\n Are you sure you want to delete this organization? \r\n \r\n If you delete an organization, all users within it would be restrained from accessing the application. All\r\n existing maps would eventually be deleted. This action cannot be undone, do you wish to continue?\r\n \r\n \r\n \r\n )\r\n }\r\n}\r\n","import Text from 'components/Portions/Text'\r\nimport Modal from 'components/Utilities/Modal'\r\nimport ModalContainer from 'components/Utilities/ModalContainer'\r\nimport React, { Component } from 'react'\r\n\r\n// eslint-disable-next-line react/prefer-stateless-function\r\nexport default class DeleteUserModal extends Component {\r\n constructor() {\r\n super()\r\n this.state = {\r\n loading: false,\r\n }\r\n }\r\n\r\n static getDerivedStateFromProps(props, state) {\r\n if (props.loading !== state.loading) {\r\n return { loading: props.loading }\r\n }\r\n return null\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n Are you sure you want to delete this user?\r\n \r\n If you delete an existing user, the user’s access to the application would be restrained. This action cannot\r\n be undone, do you wish to continue?\r\n \r\n \r\n \r\n )\r\n }\r\n}\r\n","import Form from 'components/Portions/Form'\r\nimport FormGroup from 'components/Portions/FormGroup'\r\nimport Input from 'components/Portions/Input'\r\nimport InputError from 'components/Portions/InputError'\r\nimport Label from 'components/Portions/Label'\r\nimport Modal from 'components/Utilities/Modal'\r\nimport ModalContainer from 'components/Utilities/ModalContainer'\r\nimport React, { Component } from 'react'\r\n\r\n// eslint-disable-next-line react/prefer-stateless-function\r\nexport default class UpdateOrganisationModal extends Component {\r\n constructor() {\r\n super()\r\n this.state = {\r\n item: {},\r\n errors: {},\r\n loading: false,\r\n }\r\n }\r\n\r\n static getDerivedStateFromProps(props, state) {\r\n if (\r\n props.loading !== state.loading ||\r\n JSON.stringify(props.item) !== JSON.stringify(state.item) ||\r\n JSON.stringify(props.errors) !== JSON.stringify(state.errors)\r\n ) {\r\n return { loading: props.loading, item: props.item, errors: props.errors }\r\n }\r\n return false\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n render() {\r\n return (\r\n \r\n \r\n
\r\n \r\n \r\n \r\n {this.state.errors.name}\r\n \r\n \r\n \r\n \r\n {this.state.errors.description}\r\n \r\n \r\n \r\n \r\n {this.state.errors.max_users}\r\n \r\n \r\n \r\n \r\n {this.state.errors.max_maps}\r\n \r\n \r\n \r\n \r\n {this.state.errors.expired_date}\r\n \r\n
\r\n
\r\n
\r\n )\r\n }\r\n}\r\n","import DropList from 'components/Portions/DropList'\r\nimport Form from 'components/Portions/Form'\r\nimport FormGroup from 'components/Portions/FormGroup'\r\nimport Input from 'components/Portions/Input'\r\nimport InputError from 'components/Portions/InputError'\r\nimport Label from 'components/Portions/Label'\r\nimport Text from 'components/Portions/Text'\r\nimport Modal from 'components/Utilities/Modal'\r\nimport ModalContainer from 'components/Utilities/ModalContainer'\r\nimport PasswordChecker from 'components/Portions/PasswordChecker'\r\nimport { Component } from 'react'\r\nimport { connect } from 'react-redux'\r\n\r\n// eslint-disable-next-line react/prefer-stateless-function\r\nclass UpdateUserModal extends Component {\r\n constructor() {\r\n super()\r\n this.state = {\r\n item: {},\r\n errors: {},\r\n loading: false,\r\n types: [],\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.setTypes()\r\n }\r\n\r\n static getDerivedStateFromProps(props, state) {\r\n if (\r\n props.loading !== state.loading ||\r\n JSON.stringify(props.item) !== JSON.stringify(state.item) ||\r\n JSON.stringify(props.errors) !== JSON.stringify(state.errors)\r\n ) {\r\n return { loading: props.loading, item: props.item, errors: props.errors }\r\n }\r\n return false\r\n }\r\n\r\n setTypes = () => {\r\n if (this.props.user.type !== 'systemAdministrator') {\r\n this.setState({\r\n types: [\r\n { value: 'organizationUser', text: 'Organization user' },\r\n { value: 'organizationAdministrator', text: 'Organization administrator' },\r\n ],\r\n })\r\n } else {\r\n this.setState({\r\n types: [\r\n { value: 'systemAdministrator', text: 'System administrator' },\r\n { value: 'organizationUser', text: 'Organization user' },\r\n { value: 'organizationAdministrator', text: 'Organization administrator' },\r\n ],\r\n })\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n
\r\n \r\n \r\n \r\n {this.state.errors?.first_name}\r\n \r\n \r\n \r\n \r\n {this.state.errors?.last_name}\r\n \r\n \r\n \r\n \r\n {this.state.errors?.email}\r\n \r\n \r\n \r\n \r\n {this.state.item?.password?.length > 0 && {this.state.errors.password?.message}}\r\n {this.state.item?.password?.length > 0 && this.state.errors.password?.message && (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n )}\r\n \r\n If you do not wish to change your password, please leave this field blank. Failure to do so may result\r\n in an unwanted change to your password\r\n \r\n
\r\n\r\n \r\n \r\n {\r\n this.props.handelChange(e)\r\n }}\r\n id='type'\r\n // placeholder='Select user type'\r\n value={this.state?.item?.type}\r\n />\r\n {this.state?.errors?.type}\r\n \r\n
\r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n user: state.app.user.user,\r\n})\r\n\r\nexport default connect(mapStateToProps)(UpdateUserModal)\r\n","// eslint-disable-next-line import/no-named-as-default\r\nimport CheckBox from 'components/Portions/CheckBox'\r\nimport ToolTip from 'components/Portions/ToolTip'\r\nimport { Component } from 'react'\r\n\r\n// eslint-disable-next-line react/prefer-stateless-function\r\nexport default class OrganisationItem extends Component {\r\n constructor() {\r\n super()\r\n this.state = {\r\n opened: false,\r\n checked: false,\r\n }\r\n }\r\n\r\n toggleHandler = () => {\r\n // eslint-disable-next-line react/no-access-state-in-setstate\r\n this.setState({ opened: !this.state.opened })\r\n }\r\n\r\n handleChecked = () => {\r\n // eslint-disable-next-line react/no-access-state-in-setstate\r\n this.setState({ checked: !this.state.checked })\r\n }\r\n\r\n render() {\r\n const { item, index, items } = this.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

{item.name}

\r\n

{item.description}

\r\n\r\n {item.status === 'inactive' && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n

\r\n {/* eslint-disable-next-line react/jsx-one-expression-per-line */}\r\n \r\n {/* eslint-disable-next-line react/jsx-one-expression-per-line */}\r\n {`${item.users?.length || 0} of ${item.max_users} users - ${item.max_maps} max maps`}\r\n \r\n \r\n {` - last update\r\n ${item.updated_at}`}\r\n \r\n

\r\n
\r\n \r\n
\r\n {this.props.user.type === 'systemAdministrator' && (\r\n {\r\n this.props.toggleModal('deleteOrganisationModal', {\r\n data: false,\r\n service: 'organisations',\r\n uuid: item.uuid,\r\n })\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n )}\r\n {this.props.user.type === 'systemAdministrator' && (\r\n {\r\n this.props.toggleModal('updateOrganisationModal', {\r\n data: true,\r\n service: 'organisations',\r\n uuid: item.uuid,\r\n })\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {\r\n this.props.toggleModal('createUserModal', {\r\n data: false,\r\n service: 'users',\r\n organization_id: item.id,\r\n uuid: item.uuid,\r\n })\r\n }}\r\n className='icon cursor-pointer hover:text-primarycolor transition duration-150'\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.opened && !item.locked\r\n ? item.users?.map((user, userIndex) => {\r\n return (\r\n \r\n
\r\n {\r\n this.props.handelUserStatusChange(e, user.uuid)\r\n }}\r\n disable={item.status === 'inactive'}\r\n checked={user.status}\r\n options={['active', 'inactive']}\r\n string\r\n />\r\n
\r\n

{user.email}

\r\n

\r\n \r\n {`last update \r\n ${user.updated_at}`}\r\n \r\n

\r\n
\r\n
\r\n
\r\n {\r\n this.props.toggleModal('deleteUserModal', {\r\n data: false,\r\n service: 'users',\r\n uuid: user.uuid,\r\n })\r\n }}\r\n className='icon cursor-pointer hover:text-primarycolor transition duration-150'\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n {\r\n this.props.toggleModal('updateUserModal', {\r\n data: true,\r\n service: 'users',\r\n uuid: user.uuid,\r\n })\r\n }}\r\n className='icon cursor-pointer hover:text-primarycolor transition duration-150'\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n )\r\n })\r\n : null}\r\n \r\n )\r\n }\r\n}\r\n","/* eslint-disable linebreak-style */\r\nimport mainService from 'services/mainService'\r\n\r\nexport function organizationRecords(data) {\r\n let parameters = ''\r\n\r\n // eslint-disable-next-line guard-for-in\r\n for (const key in data) {\r\n const value = data[key]\r\n switch (key) {\r\n case 'order':\r\n parameters = `${parameters}&order=${value.type}.${value.order}`\r\n break\r\n case 'page':\r\n parameters = `${parameters}&page=${value}`\r\n break\r\n case 'count':\r\n parameters = `${parameters}&limit=${value}`\r\n break\r\n case 'filter':\r\n if (value.length >= 1) {\r\n parameters = `${parameters}&filter=${value}`\r\n }\r\n break\r\n case 'search':\r\n if (value.length >= 1) {\r\n parameters = `${parameters}&search=${value.join(',')}`\r\n }\r\n break\r\n default:\r\n break\r\n }\r\n }\r\n return mainService\r\n .get(`organizations/records?rand=${new Date().getTime()}${parameters}`)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\n\r\nexport function organizationRecord(uuid) {\r\n return mainService\r\n .get(`organizations/${uuid}`)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\n\r\nexport function organizationList() {\r\n return mainService\r\n .get(`organizations/list`)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\n\r\nexport function organizationUpdate(uuid, data) {\r\n return mainService\r\n .put(`organizations/${uuid}/update`, data)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\nexport function organizationDelete(uuid) {\r\n return mainService\r\n .delete(`organizations/${uuid}/delete`)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\nexport function organizationRefresh(uuid) {\r\n return mainService\r\n .get(`organizations/${uuid}/refreshorganization`)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\nexport function organizationRefreshTable(uuid) {\r\n return mainService\r\n .get(`organizations/${uuid}/refreshTable`)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\nexport function organizationCheck(uuid) {\r\n return mainService\r\n .get(`organizations/${uuid}/check`)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\n\r\nexport function organizationCreate(data) {\r\n return mainService\r\n .post('organizations/create', data)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\n","/* eslint-disable linebreak-style */\r\nimport mainService from 'services/mainService'\r\n\r\nexport function userRecord(uuid) {\r\n return mainService\r\n .get(`users/${uuid}`)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\n\r\nexport function userList() {\r\n return mainService\r\n .get(`users/list`)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\n\r\nexport function userUpdate(uuid, data) {\r\n return mainService\r\n .put(`users/${uuid}/update`, data)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\nexport function userDelete(uuid) {\r\n return mainService\r\n .delete(`users/${uuid}/delete`)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\n\r\nexport function userCreate(data) {\r\n return mainService\r\n .post('users/create', data)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\n\r\nexport function userStatus(uuid, data) {\r\n return mainService\r\n .put(`users/${uuid}/status`, data)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\n","/* eslint-disable no-useless-escape */\r\nconst passwordValidation = (value) => {\r\n const hasUpperCase = /[A-Z]/.test(value)\r\n const hasLowerCase = /[a-z]/.test(value)\r\n const hasNumber = /[0-9]/.test(value)\r\n const hasSymbole = /[ `!@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?~]/.test(value)\r\n const length = value?.length > 7\r\n const conditions = [hasLowerCase, hasUpperCase, hasNumber, hasSymbole, length]\r\n const validConditions = conditions.reduce((acc, condition) => (condition ? ++acc : acc), 0)\r\n return {\r\n pass: validConditions === conditions.length,\r\n lowerCase: hasLowerCase,\r\n upperCase: hasUpperCase,\r\n number: hasNumber,\r\n symbole: hasSymbole,\r\n length,\r\n }\r\n}\r\n\r\nexport default passwordValidation\r\n","import CreateOrganizationModal from 'components/Management/Organisation/Modals/CreateOrganizationModal'\r\nimport CreateUserModal from 'components/Management/Organisation/Modals/CreateUserModal'\r\nimport DeleteOrganisationModal from 'components/Management/Organisation/Modals/DeleteOrganisationModal'\r\nimport DeleteUserModal from 'components/Management/Organisation/Modals/DeleteUserModal'\r\nimport UpdateOrganisationModal from 'components/Management/Organisation/Modals/UpdateOrganisationModal'\r\nimport UpdateUserModal from 'components/Management/Organisation/Modals/UpdateUserModal'\r\nimport OrganisationItem from 'components/Management/Organisation/OrganisationItem'\r\nimport Button from 'components/Portions/Button'\r\nimport Loading from 'components/Portions/Loading'\r\nimport Pagination from 'components/Portions/Pagination'\r\nimport ModalContainer from 'components/Utilities/ModalContainer'\r\nimport { Component } from 'react'\r\nimport { connect } from 'react-redux'\r\nimport ScrollArea from 'react-scrollbar'\r\nimport {\r\n organizationCreate,\r\n organizationDelete,\r\n organizationRecord,\r\n organizationRecords,\r\n organizationUpdate,\r\n} from 'services/organisation'\r\nimport { userCreate, userDelete, userRecord, userStatus, userUpdate } from 'services/users'\r\nimport { setErrorHandler, showMessage } from 'store/actions/errorsActions'\r\nimport passwordValidation from 'utils/passwordValidation'\r\n\r\n// eslint-disable-next-line react/prefer-stateless-function\r\nclass ManageOrganisations extends Component {\r\n constructor() {\r\n super()\r\n this.state = {\r\n items: [],\r\n item: {},\r\n selected: null,\r\n deleteOrganisationModal: false,\r\n deleteUserModal: false,\r\n updateOrganisationModal: false,\r\n updateUserModal: false,\r\n createOrganizationModal: false,\r\n createUserModal: false,\r\n modalLoading: false,\r\n page: 1,\r\n pages: 1,\r\n total: 0,\r\n count: 30,\r\n disableSaveButton: false,\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.getItems()\r\n }\r\n\r\n toggleModal = (modal, selected = null) => {\r\n const modalState = this.state[modal]\r\n // need to close modal\r\n if (!selected) {\r\n this.setState({ item: {}, errors: {}, selected: null, [modal]: !modalState })\r\n return\r\n }\r\n\r\n // need to open modal\r\n if (selected.data) {\r\n // open model with data\r\n switch (selected.service) {\r\n case 'organisations':\r\n organizationRecord(selected.uuid)\r\n .then((respond) => {\r\n this.setState({\r\n modalLoading: false,\r\n item: respond.data,\r\n errors: {},\r\n selected,\r\n [modal]: !modalState,\r\n })\r\n })\r\n .catch((error) => {})\r\n break\r\n case 'users':\r\n userRecord(selected.uuid)\r\n .then((respond) => {\r\n this.setState({\r\n modalLoading: false,\r\n item: respond.data,\r\n errors: {},\r\n selected,\r\n [modal]: !modalState,\r\n disableSaveButton: false,\r\n })\r\n })\r\n .catch((error) => {})\r\n break\r\n default:\r\n break\r\n }\r\n } else {\r\n // open model without data\r\n this.setState({\r\n modalLoading: false,\r\n item: {},\r\n errors: {},\r\n selected,\r\n [modal]: !modalState,\r\n disableSaveButton: false,\r\n })\r\n }\r\n }\r\n\r\n getItems = (loading = true) => {\r\n this.setState({ loading }, () => {\r\n organizationRecords({ page: this.state.page, count: this.state.count })\r\n .then((respond) => {\r\n this.setState({\r\n loading: false,\r\n items: respond.data,\r\n total: respond.meta.total,\r\n pages: Math.ceil(respond.meta.total / respond.meta.count),\r\n count: respond.meta.count,\r\n })\r\n })\r\n .catch((error) => {\r\n this.props.setErrorHandler(error.response)\r\n })\r\n })\r\n }\r\n\r\n handelChange = (e) => {\r\n const { item, errors } = this.state\r\n item[e.target.name] = e.target.value\r\n\r\n if (e.target.name === 'password') {\r\n const { pass, ...restResponse } = passwordValidation(e.target.value)\r\n if (!pass) {\r\n errors[e.target.name] = {\r\n message: 'Password must contain at least:',\r\n ...restResponse,\r\n }\r\n } else {\r\n errors[e.target.name] = {\r\n message: ' ',\r\n ...restResponse,\r\n }\r\n setTimeout(() => {\r\n errors.password = null\r\n this.setState({ item, errors })\r\n }, 1800)\r\n }\r\n // ONLY ON UPDATE MODE WE CAN LEAVE PASSWORD EMPTY\r\n if (this.state.updateUserModal && !pass && e.target.value?.length === 0) {\r\n this.setState({ disableSaveButton: false })\r\n } else {\r\n this.setState({ disableSaveButton: !pass })\r\n }\r\n } else {\r\n errors[e.target.name] = null\r\n }\r\n this.setState({ item, errors })\r\n }\r\n\r\n createOrganization = () => {\r\n this.setState({ modalLoading: true }, () => {\r\n organizationCreate(this.state.item)\r\n .then((res) => {\r\n this.getItems(false)\r\n this.toggleModal('createOrganizationModal')\r\n this.setState({ modalLoading: false })\r\n })\r\n .catch((error) => {\r\n this.setState({ modalLoading: false })\r\n switch (error.response.status) {\r\n case 422:\r\n {\r\n const temp = {}\r\n for (let index = 0; index < error.response.data.errors.length; index++) {\r\n const element = error.response.data.errors[index]\r\n // eslint-disable-next-line prefer-destructuring\r\n temp[element[0]] = element[1][0]\r\n }\r\n this.setState({ errors: temp, modalLoading: false })\r\n }\r\n break\r\n default:\r\n this.props.setErrorHandler(error.response)\r\n break\r\n }\r\n })\r\n })\r\n }\r\n\r\n deleteOrganization = () => {\r\n this.setState({ modalLoading: true }, () => {\r\n organizationDelete(this.state.selected.uuid)\r\n .then((respond) => {\r\n this.setState({ deleteOrganisationModal: false })\r\n this.getItems(false)\r\n this.props.showMessage({\r\n messageType: 'SUCCESS',\r\n message: `Organization deleted successfully!`,\r\n })\r\n })\r\n .catch((error) => {\r\n this.setState({ modalLoading: false })\r\n this.props.setErrorHandler(error.response)\r\n })\r\n })\r\n }\r\n\r\n updateOrganization = () => {\r\n this.setState({ modalLoading: true }, () => {\r\n organizationUpdate(this.state.selected.uuid, this.state.item)\r\n .then((res) => {\r\n this.getItems(false)\r\n this.toggleModal('updateOrganisationModal')\r\n this.setState({ modalLoading: false })\r\n })\r\n .catch((error) => {\r\n this.setState({ modalLoading: false })\r\n switch (error.response.status) {\r\n case 422:\r\n {\r\n const temp = {}\r\n for (let index = 0; index < error.response.data.errors.length; index++) {\r\n const element = error.response.data.errors[index]\r\n // eslint-disable-next-line prefer-destructuring\r\n temp[element[0]] = element[1][0]\r\n }\r\n this.setState({ errors: temp, modalLoading: false })\r\n }\r\n break\r\n default:\r\n this.props.setErrorHandler(error.response)\r\n break\r\n }\r\n })\r\n })\r\n }\r\n\r\n createUser = () => {\r\n this.setState({ modalLoading: true }, () => {\r\n userCreate({ organization_id: this.state.selected.organization_id, ...this.state.item })\r\n .then((res) => {\r\n this.getItems(false)\r\n this.toggleModal('createUserModal')\r\n this.setState({ modalLoading: false })\r\n })\r\n .catch((error) => {\r\n this.setState({ modalLoading: false })\r\n switch (error.response.status) {\r\n case 422:\r\n {\r\n const temp = {}\r\n for (let index = 0; index < error.response.data.errors.length; index++) {\r\n const element = error.response.data.errors[index]\r\n // eslint-disable-next-line prefer-destructuring\r\n temp[element[0]] = element[1][0]\r\n }\r\n this.setState({ errors: temp, modalLoading: false })\r\n }\r\n break\r\n default:\r\n this.props.setErrorHandler(error.response)\r\n break\r\n }\r\n })\r\n })\r\n }\r\n\r\n deleteUser = () => {\r\n this.setState({ modalLoading: true }, () => {\r\n userDelete(this.state.selected.uuid)\r\n .then((respond) => {\r\n this.setState({ deleteUserModal: false })\r\n this.getItems(false)\r\n this.props.showMessage({\r\n messageType: 'SUCCESS',\r\n message: `User deleted successfully!`,\r\n })\r\n })\r\n .catch((error) => {\r\n this.setState({ modalLoading: false })\r\n\r\n this.props.setErrorHandler(error.response)\r\n })\r\n })\r\n }\r\n\r\n handelUserStatusChange = (e, uuid) => {\r\n userStatus(uuid, { status: e.target.value })\r\n .then((res) => {\r\n this.getItems(false)\r\n })\r\n .catch((error) => {\r\n switch (error.response.status) {\r\n case 422:\r\n {\r\n const temp = {}\r\n for (let index = 0; index < error.response.data.errors.length; index++) {\r\n const element = error.response.data.errors[index]\r\n\r\n // eslint-disable-next-line prefer-destructuring\r\n temp[element[0]] = element[1][0]\r\n }\r\n this.setState({ errors: temp, modalLoading: false })\r\n }\r\n break\r\n default:\r\n // this.context.state.handelError(errors)\r\n break\r\n }\r\n })\r\n }\r\n\r\n updateUser = () => {\r\n this.setState({ modalLoading: true }, () => {\r\n userUpdate(this.state.selected.uuid, this.state.item)\r\n .then((res) => {\r\n this.getItems(false)\r\n this.toggleModal('updateUserModal')\r\n this.setState({ modalLoading: false })\r\n })\r\n .catch((error) => {\r\n this.setState({ modalLoading: false })\r\n switch (error.response.status) {\r\n case 422:\r\n {\r\n const temp = {}\r\n for (let index = 0; index < error.response.data.errors.length; index++) {\r\n const element = error.response.data.errors[index]\r\n // eslint-disable-next-line prefer-destructuring\r\n temp[element[0]] = element[1][0]\r\n }\r\n this.setState({ errors: temp, modalLoading: false })\r\n }\r\n break\r\n default:\r\n this.props.setErrorHandler(error.response)\r\n break\r\n }\r\n })\r\n })\r\n }\r\n\r\n changepage = (page) => {\r\n // save page to state\r\n this.setState({ page }, () => {\r\n this.getItems()\r\n })\r\n // save page to context\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.state.deleteOrganisationModal && (\r\n this.toggleModal('deleteOrganisationModal') }}\r\n />\r\n )}\r\n {this.state.updateOrganisationModal && (\r\n this.toggleModal('updateOrganisationModal') }}\r\n />\r\n )}\r\n\r\n {this.state.createOrganizationModal && (\r\n this.toggleModal('createOrganizationModal') }}\r\n />\r\n )}\r\n {this.state.createUserModal && (\r\n this.toggleModal('createUserModal') }}\r\n disableSaveButton={this.state.disableSaveButton}\r\n />\r\n )}\r\n {this.state.updateUserModal && (\r\n this.toggleModal('updateUserModal') }}\r\n disableSaveButton={this.state.disableSaveButton}\r\n />\r\n )}\r\n {this.state.deleteUserModal && (\r\n this.toggleModal('deleteUserModal') }}\r\n />\r\n )}\r\n {this.props.user.type === 'systemAdministrator' && (\r\n
\r\n

\r\n Here, you can view and edit your organization's details and manage your team members. Remember to save any\r\n changes made before leaving the page.\r\n

\r\n {\r\n this.toggleModal('createOrganizationModal', {\r\n data: false,\r\n service: 'organizations',\r\n uuid: null,\r\n })\r\n }}\r\n single\r\n type='button'\r\n className={` inline-flex items-center justify-center px-5 py-2 border border-transparent font-medium rounded-sm text-white bg-primarycolor hover:bg-hovercolor focus:outline-none focus:border-primary focus:shadow-outline-green transition ease-in-out duration-150 text-xs leading-5 whitespace-nowrap`}\r\n >\r\n New organization\r\n \r\n
\r\n )}\r\n {/* accordiion item header */}\r\n \r\n \r\n {this.state.items.map((item, index) => {\r\n return (\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 user: state.app.user.user,\r\n})\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setErrorHandler: (data) => dispatch(setErrorHandler(data)),\r\n showMessage: (data) => dispatch(showMessage(data)),\r\n})\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ManageOrganisations)\r\n","import Text from 'components/Portions/Text'\r\nimport Modal from 'components/Utilities/Modal'\r\nimport ModalContainer from 'components/Utilities/ModalContainer'\r\nimport React, { Component } from 'react'\r\n\r\n// eslint-disable-next-line react/prefer-stateless-function\r\nexport default class DeleteSessionModal extends Component {\r\n constructor() {\r\n super()\r\n this.state = {\r\n loading: false,\r\n }\r\n }\r\n\r\n static getDerivedStateFromProps(props, state) {\r\n if (props.loading !== state.loading) {\r\n return { loading: props.loading }\r\n }\r\n return null\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n Are you sure you want to delete this map?\r\n \r\n Confirm deletion of the map? This action cannot be undone and will permanently remove the map from the\r\n system.\r\n \r\n \r\n \r\n )\r\n }\r\n}\r\n","import FormGroup from 'components/Portions/FormGroup'\r\nimport Label from 'components/Portions/Label'\r\nimport Text from 'components/Portions/Text'\r\nimport Modal from 'components/Utilities/Modal'\r\nimport ModalContainer from 'components/Utilities/ModalContainer'\r\nimport { SETTINGS } from 'constants/default-settings'\r\nimport { Component } from 'react'\r\nimport { connect } from 'react-redux'\r\nimport { showMessage } from 'store/actions/errorsActions'\r\n\r\n// eslint-disable-next-line react/prefer-stateless-function\r\nclass ShareUrlModal extends Component {\r\n constructor() {\r\n super()\r\n this.state = {\r\n loading: false,\r\n }\r\n }\r\n\r\n static getDerivedStateFromProps(props, state) {\r\n if (props.loading !== state.loading) {\r\n return { loading: props.loading }\r\n }\r\n return null\r\n }\r\n\r\n copyText = (text) => {\r\n this.props.showMessage({\r\n messageType: 'SUCCESS',\r\n message: 'url copied successfully',\r\n })\r\n const textArea = document.createElement('textarea')\r\n textArea.value = text\r\n\r\n // Avoid scrolling to bottom\r\n textArea.style.top = '0'\r\n textArea.style.left = '0'\r\n textArea.style.position = 'fixed'\r\n\r\n document.body.appendChild(textArea)\r\n textArea.focus()\r\n textArea.select()\r\n\r\n document.execCommand('copy')\r\n\r\n document.body.removeChild(textArea)\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n
\r\n share URL\r\n Copy the Map's URL\r\n\r\n \r\n \r\n \r\n {`${SETTINGS.APP_URL}${this.props.public === 'true' ? 'public-map' : 'map'}/${this.props.code}`}\r\n \r\n \r\n\r\n \r\n
\r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({ resetMap: state.app.view.resetMap, session: state.app.view.session })\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setMapCode: (data) => dispatch(setMapCode(data)),\r\n controlLoading: (data) => dispatch(controlLoading(data)),\r\n})\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SessionItem)\r\n","/* eslint-disable react/jsx-one-expression-per-line */\r\nimport DeleteSessionModal from 'components/Management/Sessions/Modals/DeleteSessionModal'\r\nimport ShareUrlModal from 'components/Management/Sessions/Modals/shareUrlModal'\r\nimport SessionItem from 'components/Management/Sessions/SessionItem'\r\nimport Button from 'components/Portions/Button'\r\nimport CheckBox from 'components/Portions/CheckBox'\r\nimport FormGroup from 'components/Portions/FormGroup'\r\nimport Input from 'components/Portions/Input'\r\nimport Label from 'components/Portions/Label'\r\nimport Loading from 'components/Portions/Loading'\r\nimport Pagination from 'components/Portions/Pagination'\r\nimport ModalContainer from 'components/Utilities/ModalContainer'\r\nimport { Component } from 'react'\r\nimport { connect } from 'react-redux'\r\nimport ScrollArea from 'react-scrollbar'\r\nimport ReactTooltip from 'react-tooltip'\r\nimport { sessionDelete, sessionImage, sessionRecords } from 'services/session'\r\nimport { setErrorHandler, showMessage } from 'store/actions/errorsActions'\r\n\r\n// eslint-disable-next-line react/prefer-stateless-function\r\nclass ManageSessions extends Component {\r\n constructor() {\r\n super()\r\n this.state = {\r\n items: [],\r\n item: {},\r\n errors: {},\r\n selected: null,\r\n loading: false,\r\n deleteSessionModal: false,\r\n shareUrlModal: false,\r\n refreshSessionModal: false,\r\n modalLoading: true,\r\n mySearch: false,\r\n search: '',\r\n page: 1,\r\n pages: 1,\r\n total: 0,\r\n count: 30,\r\n orderQuery: { type: 'created_at', order: 'desc' },\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.getItems()\r\n }\r\n\r\n getImage = (uuid) => {\r\n sessionImage(uuid)\r\n .then((respond) => {\r\n const { items } = this.state\r\n items.map((x) => {\r\n if (x.uuid === uuid) {\r\n x.image = respond.data.image\r\n x.imageLoading = false\r\n }\r\n return x\r\n })\r\n this.setState({ items })\r\n })\r\n .catch((error) => {\r\n const { items } = this.state\r\n items.map((x) => {\r\n if (x.uuid === uuid) {\r\n x.image = null\r\n x.imageLoading = false\r\n }\r\n return x\r\n })\r\n this.setState({ items })\r\n })\r\n }\r\n\r\n deleteSession = () => {\r\n this.setState({ modalLoading: true }, () => {\r\n sessionDelete(this.state.selected.uuid)\r\n .then((respond) => {\r\n this.setState({ deleteSessionModal: false })\r\n this.getItems()\r\n this.props.showMessage({\r\n messageType: 'SUCCESS',\r\n message: `Map deleted successfully!`,\r\n })\r\n })\r\n .catch((error) => {\r\n this.props.setErrorHandler(error.response)\r\n })\r\n })\r\n }\r\n\r\n addOrder = (type) => {\r\n let { orderQuery } = this.state\r\n if (orderQuery.type === type) {\r\n orderQuery.order = orderQuery.order === 'desc' ? 'asc' : 'desc'\r\n } else {\r\n orderQuery = { type, order: 'desc' }\r\n }\r\n // save order to state\r\n this.setState(\r\n {\r\n orderQuery,\r\n },\r\n // update the table data\r\n this.getItems,\r\n )\r\n }\r\n\r\n // create order icon next to the selected col\r\n renderOrder = (type) => {\r\n if (type !== this.state.orderQuery.type) {\r\n return (\r\n this.addOrder(type)}\r\n className='w-3 h-3 orderLocation ml-1 cursor-pointer float-right order'\r\n viewBox='0 0 1792 1792'\r\n >\r\n \r\n \r\n )\r\n }\r\n switch (this.state.orderQuery.order) {\r\n case 'desc':\r\n return (\r\n this.addOrder(type)}\r\n className='w-3 h-3 orderLocation ml-1 cursor-pointer float-right order'\r\n viewBox='0 0 1792 1792'\r\n >\r\n \r\n \r\n )\r\n case 'asc':\r\n return (\r\n this.addOrder(type)}\r\n className='w-3 h-3 orderLocation ml-1 cursor-pointer float-right order'\r\n viewBox='0 0 1792 1792'\r\n >\r\n \r\n \r\n )\r\n default:\r\n return (\r\n this.addOrder(type)}\r\n className='w-3 h-3 orderLocation ml-1 cursor-pointer float-right order'\r\n viewBox='0 0 1792 1792'\r\n >\r\n \r\n \r\n )\r\n }\r\n }\r\n\r\n getItems = (loading = true) => {\r\n this.setState({ loading }, () => {\r\n sessionRecords({\r\n count: this.state.count,\r\n page: this.state.page,\r\n order: this.state.orderQuery, // send order value\r\n search: this.state.search,\r\n user: this.state.mySearch,\r\n })\r\n .then((respond) => {\r\n this.setState({\r\n loading: false,\r\n items: respond.data.map((x) => {\r\n this.getImage(x.uuid)\r\n return { ...x, imageLoading: true }\r\n }),\r\n total: respond.meta.total,\r\n pages: Math.ceil(respond.meta.total / respond.meta.count),\r\n count: respond.meta.count,\r\n })\r\n })\r\n .catch((error) => {\r\n this.setState({ modalLoading: false })\r\n\r\n this.props.setErrorHandler(error.response)\r\n })\r\n })\r\n }\r\n\r\n handleSearchChange = (e) => {\r\n this.setState({ search: e.target.value })\r\n }\r\n\r\n handelChange = (e) => {\r\n const { item, errors } = this.state\r\n item[e.target.name] = e.target.value\r\n\r\n errors[e.target.name] = null\r\n\r\n this.setState({ item, errors })\r\n }\r\n\r\n toggleModal = (modal, selected = null) => {\r\n const modalState = this.state[modal]\r\n // need to close modal\r\n if (!selected) {\r\n this.setState({ item: {}, errors: {}, selected: null, [modal]: !modalState })\r\n return\r\n }\r\n\r\n // need to open modal\r\n if (selected.data) {\r\n // open model with data\r\n // to do later\r\n } else {\r\n // open model without data\r\n this.setState({ modalLoading: false, item: {}, errors: {}, selected, [modal]: !modalState })\r\n }\r\n }\r\n\r\n selectMySearch = () => {\r\n // eslint-disable-next-line react/no-access-state-in-setstate\r\n this.setState({ mySearch: !this.state.mySearch }, () => {\r\n this.changepage(1)\r\n })\r\n }\r\n\r\n changepage = (page) => {\r\n // save page to state\r\n this.setState({ page }, () => {\r\n this.getItems()\r\n })\r\n // save page to context\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n {this.state.deleteSessionModal && (\r\n this.toggleModal('deleteSessionModal') }}\r\n />\r\n )}\r\n {this.state.shareUrlModal && (\r\n this.toggleModal('shareUrlModal') }}\r\n />\r\n )}\r\n\r\n
\r\n

\r\n Choose one of the Available Maps and load the saved configs and the saved datasets from MapLab.world's\r\n session.\r\n

\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n {/* accordiion item header */}\r\n\r\n
\r\n
\r\n
\r\n
\r\n

Image

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

Title

{this.renderOrder('title')}\r\n
\r\n
\r\n

Created

{this.renderOrder('created_at')}\r\n
\r\n
\r\n

User

{this.renderOrder('user_id')}\r\n
\r\n
\r\n

Datasets

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

Public

{this.renderOrder('public')}\r\n
\r\n
\r\n

Actions

\r\n
\r\n
\r\n \r\n \r\n {this.state.items.length > 0 ? (\r\n this.state.items.map((item, index) => {\r\n return (\r\n \r\n )\r\n })\r\n ) : (\r\n
\r\n

No data available

\r\n
\r\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\nconst mapDispatchToProps = (dispatch) => ({\r\n setErrorHandler: (data) => dispatch(setErrorHandler(data)),\r\n showMessage: (data) => dispatch(showMessage(data)),\r\n})\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ManageSessions)\r\n","/* eslint-disable react/jsx-one-expression-per-line */\r\n/* eslint-disable react/prefer-stateless-function */\r\n\r\nimport Modal from 'components/Utilities/Modal'\r\nimport ModalContainer from 'components/Utilities/ModalContainer'\r\nimport React, { Component } from 'react'\r\nimport { connect } from 'react-redux'\r\n\r\nclass Agreement extends Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = { modalLoading: false }\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n render() {\r\n return (\r\n \r\n \r\n
\r\n

Privacy Policy

\r\n
\r\n

Last updated: October 24, 2022

\r\n

\r\n This Privacy Policy describes Our policies and procedures on the collection, use and disclosure of Your\r\n information when You use the Service and tells You about Your privacy rights and how the law protects\r\n You.\r\n

\r\n

\r\n We use Your Personal data to provide and improve the Service. By using the Service, You agree to the\r\n collection and use of information in accordance with this Privacy Policy. This Privacy Policy has been\r\n created with the help of the\r\n \r\n TermsFeed Privacy Policy Generator\r\n \r\n .\r\n

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

Interpretation and Definitions

\r\n
\r\n

Interpretation

\r\n

\r\n The words of which the initial letter is capitalized have meanings defined under the following\r\n conditions. The following definitions shall have the same meaning regardless of whether they appear in\r\n singular or in plural.\r\n

\r\n

Definitions

\r\n

For the purposes of this Privacy Policy:

\r\n
    \r\n
  • \r\n

    \r\n Account means a unique account created for You to access our Service or parts of\r\n our Service.\r\n

    \r\n
  • \r\n
  • \r\n

    \r\n Affiliate means an entity that controls, is controlled by or is under common\r\n control with a party, where "control" means ownership of 50% or more of the shares, equity\r\n interest or other securities entitled to vote for election of directors or other managing authority.\r\n

    \r\n
  • \r\n
  • \r\n

    \r\n Application means the software program provided by the Company downloaded by You on\r\n any electronic device, named Maplab.world\r\n

    \r\n
  • \r\n
  • \r\n

    \r\n Company (referred to as either "the Company", "We",\r\n "Us" or "Our" in this Agreement) refers to MapLab.world, 3.6 Bank Studios Park\r\n Royal Road London NW10 7LQ.\r\n

    \r\n
  • \r\n
  • \r\n

    \r\n Country refers to: United Kingdom\r\n

    \r\n
  • \r\n
  • \r\n

    \r\n Device means any device that can access the Service such as a computer, a cellphone\r\n or a digital tablet.\r\n

    \r\n
  • \r\n
  • \r\n

    \r\n Personal Data is any information that relates to an identified or identifiable\r\n individual.\r\n

    \r\n
  • \r\n
  • \r\n

    \r\n Service refers to the Application.\r\n

    \r\n
  • \r\n
  • \r\n

    \r\n Service Provider means any natural or legal person who processes the data on behalf\r\n of the Company. It refers to third-party companies or individuals employed by the Company to\r\n facilitate the Service, to provide the Service on behalf of the Company, to perform services related\r\n to the Service or to assist the Company in analyzing how the Service is used.\r\n

    \r\n
  • \r\n
  • \r\n

    \r\n Usage Data refers to data collected automatically, either generated by the use of\r\n the Service or from the Service infrastructure itself (for example, the duration of a page visit).\r\n

    \r\n
  • \r\n
  • \r\n

    \r\n You means the individual accessing or using the Service, or the company, or other\r\n legal entity on behalf of which such individual is accessing or using the Service, as applicable.\r\n

    \r\n
  • \r\n
\r\n
\r\n
\r\n
\r\n

Collecting and Using Your Personal Data

\r\n
\r\n

Types of Data Collected

\r\n

Personal Data

\r\n

\r\n While using Our Service, We may ask You to provide Us with certain personally identifiable information\r\n that can be used to contact or identify You. Personally identifiable information may include, but is not\r\n limited to:\r\n

\r\n
    \r\n
  • \r\n

    Email address

    \r\n
  • \r\n
  • \r\n

    First name and last name

    \r\n
  • \r\n
  • \r\n

    Database Connection Details

    \r\n
  • \r\n
  • \r\n

    Usage Data

    \r\n
  • \r\n
\r\n

Usage Data

\r\n

Usage Data is collected automatically when using the Service.

\r\n

\r\n Usage Data may include information such as Your Device's Internet Protocol address (e.g. IP address),\r\n browser type, browser version, the pages of our Service that You visit, the time and date of Your visit,\r\n the time spent on those pages, unique device identifiers and other diagnostic data.\r\n

\r\n

\r\n When You access the Service by or through a mobile device, We may collect certain information\r\n automatically, including, but not limited to, the type of mobile device You use, Your mobile device\r\n unique ID, the IP address of Your mobile device, Your mobile operating system, the type of mobile\r\n Internet browser You use, unique device identifiers and other diagnostic data.\r\n

\r\n

\r\n We may also collect information that Your browser sends whenever You visit our Service or when You\r\n access the Service by or through a mobile device.\r\n

\r\n

Use of Your Personal Data

\r\n

The Company may use Personal Data for the following purposes:

\r\n
    \r\n
  • \r\n

    \r\n To provide and maintain our Service, including to monitor the usage of our Service.\r\n

    \r\n
  • \r\n
  • \r\n

    \r\n To manage Your Account: to manage Your registration as a user of the Service. The\r\n Personal Data You provide can give You access to different functionalities of the Service that are\r\n available to You as a registered user.\r\n

    \r\n
  • \r\n
  • \r\n

    \r\n For the performance of a contract: the development, compliance and undertaking of\r\n the purchase contract for the products, items or services You have purchased or of any other\r\n contract with Us through the Service.\r\n

    \r\n
  • \r\n
  • \r\n

    \r\n To contact You: To contact You by email, telephone calls, SMS, or other equivalent\r\n forms of electronic communication, such as a mobile application's push notifications regarding\r\n updates or informative communications related to the functionalities, products or contracted\r\n services, including the security updates, when necessary or reasonable for their implementation.\r\n

    \r\n
  • \r\n
  • \r\n

    \r\n To provide You with news, special offers and general information about other goods,\r\n services and events which we offer that are similar to those that you have already purchased or\r\n enquired about unless You have opted not to receive such information.\r\n

    \r\n
  • \r\n
  • \r\n

    \r\n To manage Your requests: To attend and manage Your requests to Us.\r\n

    \r\n
  • \r\n
  • \r\n

    \r\n For business transfers: We may use Your information to evaluate or conduct a\r\n merger, divestiture, restructuring, reorganization, dissolution, or other sale or transfer of some\r\n or all of Our assets, whether as a going concern or as part of bankruptcy, liquidation, or similar\r\n proceeding, in which Personal Data held by Us about our Service users is among the assets\r\n transferred.\r\n

    \r\n
  • \r\n
  • \r\n

    \r\n For other purposes: We may use Your information for other purposes, such as data\r\n analysis, identifying usage trends, determining the effectiveness of our promotional campaigns and\r\n to evaluate and improve our Service, products, services, marketing and your experience.\r\n

    \r\n
  • \r\n
\r\n

We may share Your personal information in the following situations:

\r\n
    \r\n
  • \r\n With Service Providers: We may share Your personal information with Service Providers\r\n to monitor and analyze the use of our Service, to contact You.\r\n
  • \r\n
  • \r\n For business transfers: We may share or transfer Your personal information in\r\n connection with, or during negotiations of, any merger, sale of Company assets, financing, or\r\n acquisition of all or a portion of Our business to another company.\r\n
  • \r\n
  • \r\n With Affiliates: We may share Your information with Our affiliates, in which case we\r\n will require those affiliates to honor this Privacy Policy. Affiliates include Our parent company and\r\n any other subsidiaries, joint venture partners or other companies that We control or that are under\r\n common control with Us.\r\n
  • \r\n
  • \r\n With business partners: We may share Your information with Our business partners to\r\n offer You certain products, services or promotions.\r\n
  • \r\n
  • \r\n With other users: when You share personal information or otherwise interact in the\r\n public areas with other users, such information may be viewed by all users and may be publicly\r\n distributed outside.\r\n
  • \r\n
  • \r\n With Your consent: We may disclose Your personal information for any other purpose\r\n with Your consent.\r\n
  • \r\n
\r\n

Retention of Your Personal Data

\r\n

\r\n The Company will retain Your Personal Data only for as long as is necessary for the purposes set out in\r\n this Privacy Policy. We will retain and use Your Personal Data to the extent necessary to comply with\r\n our legal obligations (for example, if we are required to retain your data to comply with applicable\r\n laws), resolve disputes, and enforce our legal agreements and policies.\r\n

\r\n

\r\n The Company will also retain Usage Data for internal analysis purposes. Usage Data is generally retained\r\n for a shorter period of time, except when this data is used to strengthen the security or to improve the\r\n functionality of Our Service, or We are legally obligated to retain this data for longer time periods.\r\n

\r\n

Transfer of Your Personal Data

\r\n

\r\n Your information, including Personal Data, is processed at the Company's operating offices and in any\r\n other places where the parties involved in the processing are located. It means that this information\r\n may be transferred to — and maintained on — computers located outside of Your state, province, country\r\n or other governmental jurisdiction where the data protection laws may differ than those from Your\r\n jurisdiction.\r\n

\r\n

\r\n Your consent to this Privacy Policy followed by Your submission of such information represents Your\r\n agreement to that transfer.\r\n

\r\n

\r\n The Company will take all steps reasonably necessary to ensure that Your data is treated securely and in\r\n accordance with this Privacy Policy and no transfer of Your Personal Data will take place to an\r\n organization or a country unless there are adequate controls in place including the security of Your\r\n data and other personal information.\r\n

\r\n

Delete Your Personal Data

\r\n

\r\n You have the right to delete or request that We assist in deleting the Personal Data that We have\r\n collected about You.\r\n

\r\n

\r\n Our Service may give You the ability to delete certain information about You from within the Service.\r\n

\r\n

\r\n You may update, amend, or delete Your information at any time by signing in to Your Account, if you have\r\n one, and visiting the account settings section that allows you to manage Your personal information. You\r\n may also contact Us to request access to, correct, or delete any personal information that You have\r\n provided to Us.\r\n

\r\n

\r\n Please note, however, that We may need to retain certain information when we have a legal obligation or\r\n lawful basis to do so.\r\n

\r\n

Disclosure of Your Personal Data

\r\n

Business Transactions

\r\n

\r\n If the Company is involved in a merger, acquisition or asset sale, Your Personal Data may be\r\n transferred. We will provide notice before Your Personal Data is transferred and becomes subject to a\r\n different Privacy Policy.\r\n

\r\n

Law enforcement

\r\n

\r\n Under certain circumstances, the Company may be required to disclose Your Personal Data if required to\r\n do so by law or in response to valid requests by public authorities (e.g. a court or a government\r\n agency).\r\n

\r\n

Other legal requirements

\r\n

\r\n The Company may disclose Your Personal Data in the good faith belief that such action is necessary to:\r\n

\r\n
    \r\n
  • Comply with a legal obligation
  • \r\n
  • Protect and defend the rights or property of the Company
  • \r\n
  • Prevent or investigate possible wrongdoing in connection with the Service
  • \r\n
  • Protect the personal safety of Users of the Service or the public
  • \r\n
  • Protect against legal liability
  • \r\n
\r\n

Security of Your Personal Data

\r\n

\r\n The security of Your Personal Data is important to Us, but remember that no method of transmission over\r\n the Internet, or method of electronic storage is 100% secure. While We strive to use commercially\r\n acceptable means to protect Your Personal Data, We cannot guarantee its absolute security.\r\n

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

Children's Privacy

\r\n
\r\n

\r\n Our Service does not address anyone under the age of 13. We do not knowingly collect personally\r\n identifiable information from anyone under the age of 13. If You are a parent or guardian and You are\r\n aware that Your child has provided Us with Personal Data, please contact Us. If We become aware that We\r\n have collected Personal Data from anyone under the age of 13 without verification of parental consent,\r\n We take steps to remove that information from Our servers.\r\n

\r\n

\r\n If We need to rely on consent as a legal basis for processing Your information and Your country requires\r\n consent from a parent, We may require Your parent's consent before We collect and use that information.\r\n

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

Links to Other Websites

\r\n
\r\n

\r\n Our Service may contain links to other websites that are not operated by Us. If You click on a third\r\n party link, You will be directed to that third party's site. We strongly advise You to review the\r\n Privacy Policy of every site You visit.\r\n

\r\n

\r\n We have no control over and assume no responsibility for the content, privacy policies or practices of\r\n any third party sites or services.\r\n

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

Changes to this Privacy Policy

\r\n
\r\n

\r\n We may update Our Privacy Policy from time to time. We will notify You of any changes by posting the new\r\n Privacy Policy on this page.\r\n

\r\n

\r\n We will let You know via email and/or a prominent notice on Our Service, prior to the change becoming\r\n effective and update the "Last updated" date at the top of this Privacy Policy.\r\n

\r\n

\r\n You are advised to review this Privacy Policy periodically for any changes. Changes to this Privacy\r\n Policy are effective when they are posted on this page.\r\n

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

Contact Us

\r\n
\r\n

If you have any questions about this Privacy Policy, You can contact us:

\r\n
    \r\n
  • By email: contact@maplab.world
  • \r\n
\r\n
\r\n
\r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n user: state.app.user.user,\r\n})\r\nconst mapDispatchToProps = (dispatch) => ({})\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Agreement)\r\n","/* eslint-disable react/no-unused-state */\r\n/* eslint-disable jsx-a11y/no-onchange */\r\n/* eslint-disable no-unused-vars */\r\n/* eslint-disable react/prefer-stateless-function */\r\nimport DropList from 'components/Portions/DropList'\r\nimport Form from 'components/Portions/Form'\r\nimport FormGroup from 'components/Portions/FormGroup'\r\nimport InputError from 'components/Portions/InputError'\r\nimport Label from 'components/Portions/Label'\r\nimport Text from 'components/Portions/Text'\r\nimport Modal from 'components/Utilities/Modal'\r\nimport ModalContainer from 'components/Utilities/ModalContainer'\r\nimport {\r\n cleanupExportImage,\r\n setExportDataType,\r\n setExportFiltered,\r\n setExportImageSetting,\r\n // eslint-disable-next-line prettier/prettier\r\n setExportSelectedDataset,\r\n} from 'kepler.gl/actions'\r\nimport { applyCPUFilter, setMapInfo } from 'kepler.gl/dist/actions/vis-state-actions'\r\nimport { formatCsv } from 'kepler.gl/dist/processors/data-processor'\r\nimport { createIndexedDataContainer } from 'kepler.gl/dist/utils/table-utils/data-container-utils'\r\nimport KeplerGlSchema from 'kepler.gl/schemas'\r\nimport { Component } from 'react'\r\nimport { connect } from 'react-redux'\r\nimport { setErrorHandler } from 'store/actions/errorsActions'\r\nimport { setSession } from 'store/actions/viewActions'\r\n\r\nclass ExportData extends Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n item: { type: 'csv', filter: false },\r\n errors: {},\r\n datasets: [],\r\n modalLoading: false,\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n const toCPUFilter = this.props.selectedDataset || Object.keys(this.props.datasets)\r\n this.props.applyCPUFilter(toCPUFilter)\r\n }\r\n\r\n onSelectDataset = ({ target: { value } }) => {\r\n this.props.applyCPUFilter(value)\r\n this.props.onChangeExportSelectedDataset(value)\r\n }\r\n\r\n isMSEdge = (window) => {\r\n return Boolean(window.navigator && window.navigator.msSaveOrOpenBlob)\r\n }\r\n\r\n downloadFile = (fileBlob, fileName) => {\r\n if (this.isMSEdge(window)) {\r\n window.navigator.msSaveOrOpenBlob(fileBlob, fileName)\r\n } else {\r\n const url = URL.createObjectURL(fileBlob)\r\n\r\n const link = document.createElement('a')\r\n link.setAttribute('href', url)\r\n link.setAttribute('download', fileName)\r\n\r\n document.body.appendChild(link)\r\n link.click()\r\n document.body.removeChild(link)\r\n URL.revokeObjectURL(url)\r\n }\r\n }\r\n\r\n exportData = (state, option) => {\r\n const { visState, appName } = state\r\n const { datasets } = visState\r\n const { selectedDataset, dataType, filtered } = option\r\n // get the selected data\r\n const filename = appName\r\n const selectedDatasets = datasets[selectedDataset] ? [datasets[selectedDataset]] : Object.values(datasets)\r\n if (!selectedDatasets.length) {\r\n // error: selected dataset not found.\r\n return\r\n }\r\n\r\n selectedDatasets.forEach((selectedData) => {\r\n const { dataContainer, fields, label, filteredIdxCPU = [] } = selectedData\r\n const toExport = filtered ? createIndexedDataContainer(dataContainer, filteredIdxCPU) : dataContainer\r\n\r\n // start to export data according to selected data type\r\n switch (dataType) {\r\n case 'CSV': {\r\n const csv = formatCsv(toExport, fields)\r\n\r\n const fileBlob = new Blob([csv], { type: 'text/csv' })\r\n this.downloadFile(fileBlob, `${filename}_${label}.csv`)\r\n break\r\n }\r\n case 'JSON': {\r\n break\r\n }\r\n // TODO: support more file types.\r\n default:\r\n break\r\n }\r\n })\r\n }\r\n\r\n onExportData = () => {\r\n const { selectedDataset, dataType, filtered } = this.props\r\n this.exportData(this.props.appState, { selectedDataset, dataType, filtered })\r\n }\r\n\r\n render() {\r\n const { selectedDataset, dataType, filtered, onChangeExportDataType, onChangeExportFiltered } = this.props\r\n const datasets = KeplerGlSchema.getDatasetToSave(this.props.keplerInstance)\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n Choose the datasets you want to export\r\n
\r\n {\r\n return { value: x.data.id, text: x.data.label }\r\n })}\r\n name='dataset'\r\n onChange={this.onSelectDataset}\r\n placeholder='Select dataset'\r\n id='dataset'\r\n value={selectedDataset}\r\n />\r\n {this.state.errors.dataset}\r\n
\r\n \r\n
\r\n \r\n Choose the type of data you want to export\r\n
\r\n
\r\n {['CSV'].map((x) => {\r\n return (\r\n {\r\n onChangeExportDataType(x)\r\n }}\r\n key={x}\r\n className={` ${\r\n dataType === x ? 'border-primarycolor bg-gray-100' : 'border-transparent'\r\n } px-2 py-2 border-2 rounded-sm cursor-pointer `}\r\n >\r\n {`${x}`}\r\n
\r\n )\r\n })}\r\n \r\n
\r\n \r\n
\r\n \r\n You can choose exporting original data or filtered data\r\n
\r\n
\r\n {[true, false].map((x) => {\r\n return (\r\n {\r\n onChangeExportFiltered(x)\r\n }}\r\n key={x}\r\n className={` ${\r\n filtered === x ? 'border-primarycolor' : 'border-transparent'\r\n } px-2 py-2 border-2 rounded-sm cursor-pointer `}\r\n >\r\n {x ? 'Filtered data' : 'Unfiltered Data'}\r\n
\r\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 keplerInstance: state.keplerGl?.MapLab,\r\n exportImage: state.keplerGl?.MapLab.uiState.exportImage,\r\n selectedDataset: state.keplerGl?.MapLab.uiState.exportData.selectedDataset,\r\n dataType: state.keplerGl?.MapLab.uiState.exportData.dataType,\r\n filtered: state.keplerGl?.MapLab.uiState.exportData.filtered,\r\n datasets: state.app.view.datasets,\r\n session: state.app.view.session,\r\n appState: state.keplerGl?.MapLab,\r\n})\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setErrorHandler: (data) => dispatch(setErrorHandler(data)),\r\n setSession: (data) => dispatch(setSession(data)),\r\n setMapInfo: (data) => dispatch(setMapInfo(data)),\r\n applyCPUFilter: (data) => dispatch(applyCPUFilter(data)),\r\n onUpdateImageSetting: (data) => dispatch(setExportImageSetting(data)),\r\n cleanupExportImage: () => dispatch(cleanupExportImage()),\r\n onChangeExportFiltered: (data) => dispatch(setExportFiltered(data)),\r\n onChangeExportSelectedDataset: (data) => dispatch(setExportSelectedDataset(data)),\r\n onChangeExportDataType: (data) => dispatch(setExportDataType(data)),\r\n})\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ExportData)\r\n","/* eslint-disable react/prefer-stateless-function */\r\n\r\nimport CheckBox from 'components/Portions/CheckBox'\r\nimport Form from 'components/Portions/Form'\r\nimport FormGroup from 'components/Portions/FormGroup'\r\nimport Label from 'components/Portions/Label'\r\nimport Text from 'components/Portions/Text'\r\nimport Modal from 'components/Utilities/Modal'\r\nimport ModalContainer from 'components/Utilities/ModalContainer'\r\nimport { cleanupExportImage, setExportImageSetting } from 'kepler.gl/actions'\r\nimport ImagePreview from 'kepler.gl/dist/components/common/image-preview'\r\nimport ImageModalContainer from 'kepler.gl/dist/components/modals/image-modal-container'\r\nimport { Component } from 'react'\r\nimport { connect } from 'react-redux'\r\n\r\nclass ExportImage extends Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n exportImage: {},\r\n item: { mapH: 768, mapW: 1024, ratio: 'CUSTOM', resolution: 'ONE_X', legend: false },\r\n screens: {\r\n CUSTOM: { mapH: window.screen.height, mapW: window.screen.width, ratio: 'CUSTOM' },\r\n '16:9': { mapH: 900, mapW: 1200, ratio: '16:9' },\r\n '4:3': { mapH: 768, mapW: 1024, ratio: '4:3' },\r\n },\r\n resolution: { ONE_X: '1x', TWO_X: '2x' },\r\n errors: {},\r\n modalLoading: true,\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.props.onUpdateImageSetting({ ...this.state.item, ...this.state.screens.CUSTOM })\r\n }\r\n\r\n static getDerivedStateFromProps = (props, state) => {\r\n if (JSON.stringify(props.exportImage) !== JSON.stringify(state.exportImage)) {\r\n return { exportImage: props.exportImage, modalLoading: props.exportImage.processing }\r\n }\r\n return false\r\n }\r\n\r\n save = () => {\r\n const a = document.createElement('a')\r\n a.href = `${this.state.exportImage?.imageDataUri}`\r\n a.download = 'MapLab-world.png'\r\n a.click()\r\n a.remove()\r\n }\r\n\r\n handelChange = (e) => {\r\n const { item, errors, screens } = this.state\r\n item[e.target.name] = e.target.value\r\n\r\n errors[e.target.name] = null\r\n\r\n this.props.onUpdateImageSetting({ ...item, ...screens[item.ratio] })\r\n this.setState({ item, errors })\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n
\r\n

Export an image of your map

\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n Choose the ratio for various usages.\r\n\r\n
\r\n {Object.keys(this.state.screens).map((x) => {\r\n return (\r\n {\r\n this.handelChange({ target: { name: 'ratio', value: x } })\r\n }}\r\n key={x}\r\n className={`${\r\n this.state.item?.ratio === x ? 'border-primarycolor bg-gray-100' : 'border-gray-200'\r\n } px-2 py-2 border-2 rounded-sm cursor-pointer `}\r\n >\r\n {x === 'CUSTOM' ? 'Original Screen' : x}\r\n
\r\n )\r\n })}\r\n
\r\n
\r\n {/* {this.state.errors.dataset} */}\r\n \r\n \r\n
\r\n \r\n High resolution is better for prints.\r\n\r\n
\r\n {Object.keys(this.state.resolution).map((x) => {\r\n return (\r\n {\r\n this.handelChange({ target: { name: 'resolution', value: x } })\r\n }}\r\n key={x}\r\n className={`${\r\n this.state.item?.resolution === x ? 'border-primarycolor bg-gray-100' : 'border-gray-200'\r\n } px-4 py-2 border-2 rounded-sm cursor-pointer `}\r\n >\r\n {this.state.resolution[x]}\r\n
\r\n )\r\n })}\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\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 keplerInstance: state.keplerGl?.MapLab,\r\n exportImage: state.keplerGl?.MapLab.uiState.exportImage,\r\n datasets: state.app.view.datasets,\r\n session: state.app.view.session,\r\n})\r\nconst mapDispatchToProps = (dispatch) => ({\r\n onUpdateImageSetting: (data) => dispatch(setExportImageSetting(data)),\r\n onUpdateImageInit: (data) =>\r\n dispatch(setExportImageSetting({ ...data, mapH: window.screen.height, mapW: window.screen.width })),\r\n cleanupExportImage: () => dispatch(cleanupExportImage()),\r\n})\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ExportImage)\r\n","import Text from 'components/Portions/Text'\r\nimport Modal from 'components/Utilities/Modal'\r\nimport ModalContainer from 'components/Utilities/ModalContainer'\r\nimport { Component } from 'react'\r\nimport { connect } from 'react-redux'\r\nimport { browserHistory } from 'react-router'\r\n\r\n// eslint-disable-next-line react/prefer-stateless-function\r\nclass ResetMap extends Component {\r\n constructor() {\r\n super()\r\n this.state = {\r\n loading: false,\r\n }\r\n }\r\n\r\n static getDerivedStateFromProps(props, state) {\r\n if (props.loading !== state.loading) {\r\n return { loading: props.loading }\r\n }\r\n return null\r\n }\r\n\r\n restMap = () => {\r\n this.props.resetMap()\r\n browserHistory.push(`/maps`)\r\n this.props.close()\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n this.props.close() }}\r\n >\r\n Are you sure you want to reset this map?\r\n \r\n {`Resetting the map would affect ${this.props.layers.length} layers and ${\r\n Object.keys(this.props.datasets).length\r\n } datasets.\r\n The view would be restored to the default application view.`}\r\n \r\n \r\n \r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n datasets: state.keplerGl.MapLab.visState.datasets,\r\n layers: state.keplerGl.MapLab.visState.layers,\r\n resetMap: state.app.view.resetMap,\r\n})\r\nconst mapDispatchToProps = (dispatch) => ({})\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ResetMap)\r\n","/* eslint-disable no-prototype-builtins */\r\n/* eslint-disable react/prefer-stateless-function */\r\n\r\nimport axios from 'axios'\r\nimport ShareUrlModal from 'components/Management/Sessions/Modals/shareUrlModal'\r\nimport Form from 'components/Portions/Form'\r\nimport FormGroup from 'components/Portions/FormGroup'\r\nimport Input from 'components/Portions/Input'\r\nimport InputError from 'components/Portions/InputError'\r\nimport Label from 'components/Portions/Label'\r\nimport RadioButton from 'components/Portions/RadioButton'\r\nimport Text from 'components/Portions/Text'\r\nimport TextArea from 'components/Portions/TextArea'\r\nimport Modal from 'components/Utilities/Modal'\r\nimport ModalContainer from 'components/Utilities/ModalContainer'\r\nimport { cleanupExportImage, setExportImageSetting } from 'kepler.gl/actions'\r\nimport { setMapInfo } from 'kepler.gl/dist/actions/vis-state-actions'\r\nimport ImagePreview from 'kepler.gl/dist/components/common/image-preview'\r\nimport ImageModalContainer from 'kepler.gl/dist/components/modals/image-modal-container'\r\nimport { MAP_THUMBNAIL_DIMENSION } from 'kepler.gl/dist/constants/default-settings'\r\nimport KeplerGlSchema from 'kepler.gl/schemas'\r\nimport { Component } from 'react'\r\nimport { connect } from 'react-redux'\r\nimport { browserHistory } from 'react-router'\r\nimport { datasetSave, datasetToken, datasetUpload } from 'services/dataset'\r\nimport { sessionSave } from 'services/session'\r\nimport { setErrorHandler, showMessage } from 'store/actions/errorsActions'\r\nimport { addDataset, setSession, updateDataset } from 'store/actions/viewActions'\r\n\r\nclass SaveSession extends Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n item: { private: 'false' },\r\n errors: {},\r\n datasets: [],\r\n shareUrlModal: false,\r\n modalLoading: false,\r\n overwrite: true,\r\n config: {},\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n const datasets = KeplerGlSchema.getDatasetToSave(this.props.keplerInstance)\r\n\r\n this.setState({\r\n config: KeplerGlSchema.getConfigToSave(this.props.keplerInstance),\r\n datasets: datasets\r\n .filter((x) => {\r\n return !x.data?.label?.includes('geocoder_dataset')\r\n })\r\n .map((dataset) => {\r\n const find = this.props.datasets[dataset.data.id]\r\n\r\n if (!find) {\r\n return {\r\n save: 'static',\r\n type: 'static',\r\n info: { id: dataset.data.id, sid: undefined, label: dataset.data.label },\r\n data: dataset.data,\r\n request: {},\r\n respond: dataset.respond,\r\n }\r\n }\r\n return { ...find, data: dataset.data }\r\n }),\r\n item: this.props.session,\r\n })\r\n\r\n this.props.onUpdateImageSetting({\r\n mapW: 1200,\r\n mapH: 800,\r\n ratio: 2,\r\n legend: false,\r\n })\r\n }\r\n\r\n save = () => {\r\n // console.log('info : start saving map')\r\n this.setState({ modalLoading: true }, () => {\r\n const { datasets } = this.state\r\n\r\n const getTokens = datasets.map((dataset) => {\r\n if (\r\n // if is static file wiathout id\r\n ((!dataset.info.sid || dataset.info.sid === undefined) && dataset.type === 'static') ||\r\n // if save as static and data is not static\r\n (dataset.save === 'static' && dataset.type !== 'static')\r\n ) {\r\n console.log('info : set get token for static dataset')\r\n return datasetToken({\r\n filename: dataset.info.id,\r\n origin: `${window.location.protocol}//${window.location.host}`,\r\n })\r\n }\r\n return null\r\n })\r\n if (getTokens.filter((x) => x !== null).length !== 0) {\r\n axios\r\n .all(getTokens.filter((x) => x !== null))\r\n .then(\r\n axios.spread((...tokenResponses) => {\r\n if (tokenResponses.length >= 1) {\r\n console.log('event : static token recived')\r\n const uploadFiles = tokenResponses.map((tokenResponse) => {\r\n const dataset = datasets.find((x) => x.info.id === tokenResponse.data.data.uuid)\r\n console.log('info : start uploading datasets')\r\n return datasetUpload(\r\n tokenResponse.data.data.token,\r\n tokenResponse.data.data.fileName,\r\n this.createRawDataset(dataset),\r\n )\r\n })\r\n axios\r\n .all(uploadFiles)\r\n .then(\r\n axios.spread((...uploadResponses) => {\r\n if (uploadResponses.length >= 1) {\r\n console.log('event : datasets uploaded successfully')\r\n this.setState(\r\n {\r\n datasets: datasets.map((x) => {\r\n uploadResponses.forEach((y) => {\r\n if (y.data.name === `${x.info.id}.json`) {\r\n x.file = { label: x.info.label, url: y.data.mediaLink }\r\n x.type = 'static'\r\n }\r\n })\r\n return x\r\n }),\r\n },\r\n this.saveDatasets,\r\n )\r\n }\r\n }),\r\n )\r\n .catch((uploadErrors) => {\r\n this.setState({ modalLoading: false })\r\n })\r\n }\r\n }),\r\n )\r\n .catch((tokenErrors) => {\r\n console.log(tokenErrors)\r\n this.props.setErrorHandler(tokenErrors)\r\n this.setState({ modalLoading: false })\r\n })\r\n } else {\r\n this.saveDatasets()\r\n }\r\n })\r\n }\r\n\r\n createRawDataset = (dataset) => {\r\n console.log('event : update dataset data to be raw')\r\n const data = dataset.data.allData.map((y) => {\r\n const x = {}\r\n for (let index = 0; index < dataset.data.fields.length; index++) {\r\n x[dataset.data.fields[index].name] = y[index]\r\n }\r\n return x\r\n })\r\n return data\r\n }\r\n\r\n saveDatasets = () => {\r\n console.log('info : start saving datasets ')\r\n const { datasets } = this.state\r\n axios\r\n .all(\r\n datasets.map((dataset) => {\r\n return datasetSave({\r\n request: dataset.request || {},\r\n respond: dataset.respond || {},\r\n file: dataset.file || {},\r\n uuid: dataset.info.id,\r\n type: dataset.type,\r\n id: this.state.overwrite ? dataset.info.sid : null,\r\n })\r\n }),\r\n )\r\n .then(\r\n axios.spread((...datasetResponses) => {\r\n console.log('event : datasets saved successfully')\r\n datasetResponses.map(async (datasetResponse) => {\r\n if (datasetResponse.data.data.type === 'static') {\r\n const dataset = {\r\n request: {},\r\n file: datasetResponse.data.data.file,\r\n type: 'static',\r\n save: 'static',\r\n respond: {\r\n queryType: 'static',\r\n pages: 1,\r\n page: 1,\r\n uuid: datasetResponse.data.data.uuid,\r\n id: datasetResponse.data.data.id,\r\n dataType: 'ROW',\r\n },\r\n info: {\r\n sid: datasetResponse.data.data.id,\r\n id: datasetResponse.data.data.uuid,\r\n label: datasetResponse.data.data.file.label,\r\n },\r\n loading: false,\r\n }\r\n await this.props.addDataset({ [datasetResponse.data.data.uuid]: dataset })\r\n } else if (datasetResponse.data.data.type !== 'function') {\r\n await this.props.addDataset({\r\n [datasetResponse.data.data.uuid]: {\r\n ...this.props.datasets[datasetResponse.data.data.uuid],\r\n info: {\r\n ...this.props.datasets[datasetResponse.data.data.uuid].info,\r\n sid: datasetResponse.data.data.id,\r\n },\r\n },\r\n })\r\n }\r\n })\r\n\r\n this.saveMapSession(datasetResponses)\r\n }),\r\n )\r\n .catch((dataseterrors) => {\r\n console.log(dataseterrors)\r\n this.props.setErrorHandler(dataseterrors)\r\n this.setState({ modalLoading: false })\r\n })\r\n }\r\n\r\n saveMapSession = (datasets) => {\r\n console.log('info : start session saving')\r\n const { item } = this.state\r\n if (!this.state.overwrite) {\r\n delete item.uuid\r\n delete item.id\r\n delete item.code\r\n }\r\n const { config } = this.state\r\n config.config.visState.filters = config.config.visState.filters\r\n .filter((x) => {\r\n return x.dataId?.length > 0\r\n })\r\n .map((filter) => {\r\n const founded = this.props.filters.find((visFilter) => visFilter.id === filter.id)\r\n if (\r\n founded?.type === 'multiSelect' &&\r\n founded?.hasOwnProperty('reverse') &&\r\n founded?.hasOwnProperty('reverseValue')\r\n ) {\r\n return { ...filter, reverse: founded.reverse, reverseValue: founded.reverseValue }\r\n }\r\n return filter\r\n })\r\n sessionSave({\r\n ...item,\r\n datasets: datasets.map((dataset) => {\r\n return { uuid: dataset.data.data.uuid, id: dataset.data.data.id }\r\n }),\r\n image: this.props.exportImage.imageDataUri,\r\n config: { ...config, mapControls: this.props.mapControls },\r\n })\r\n .then((respond) => {\r\n console.log('event : session saved successfully')\r\n this.setState({ item: respond.data, shareUrlModal: true, modalLoading: false }, () => {\r\n this.props.showMessage({\r\n messageType: 'SUCCESS',\r\n message: 'You have successfully saved your map.',\r\n })\r\n if (respond.data.public === 'true') {\r\n this.props.setMapInfo({\r\n title: respond.data.title,\r\n description: respond.data.description,\r\n })\r\n }\r\n browserHistory.push(`/map/${respond.data.code}`)\r\n\r\n this.props.setSession(respond.data)\r\n })\r\n })\r\n .catch((error) => {\r\n this.setState({ modalLoading: false })\r\n switch (error.response.status) {\r\n case 422:\r\n {\r\n const temp = {}\r\n for (let index = 0; index < error.response.data.errors.length; index++) {\r\n const element = error.response.data.errors[index]\r\n // eslint-disable-next-line prefer-destructuring\r\n temp[element[0]] = element[1][0]\r\n }\r\n this.setState({ errors: temp })\r\n }\r\n break\r\n default:\r\n this.props.setErrorHandler(error.response)\r\n break\r\n }\r\n })\r\n }\r\n\r\n handelChange = (e) => {\r\n const { item, errors } = this.state\r\n item[e.target.name] = e.target.value\r\n\r\n errors[e.target.name] = null\r\n\r\n this.setState({ item, errors })\r\n }\r\n\r\n handleOverwriteMap = (e) => {\r\n this.setState({ overwrite: e.target.value })\r\n }\r\n\r\n handelDataChange = (e) => {\r\n const { datasets } = this.state\r\n\r\n const dynamicDatasets = datasets.filter((dataset) => {\r\n return ['dynamic', 'query', 'function'].includes(dataset.type)\r\n })\r\n dynamicDatasets[e.target.value.index].save = e.target.value.save\r\n\r\n const staticDatasets = datasets.filter((dataset) => {\r\n return ['static'].includes(dataset.type)\r\n })\r\n\r\n this.setState({ datasets: [...dynamicDatasets, ...staticDatasets] })\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n \r\n \r\n
\r\n

Save the same configuration/view of your map.

\r\n

\r\n You can save your custom uploaded data (all data or part of it) by just ticking the desired selections.\r\n

\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n {this.state.errors.title}\r\n \r\n \r\n \r\n \r\n {this.state.errors.description}\r\n \r\n \r\n \r\n \r\n Select whether the map is to be shared publicly or privately\r\n \r\n
\r\n \r\n \r\n
\r\n {this.state.errors.public}\r\n
\r\n\r\n {this.state.item.uuid && (\r\n \r\n \r\n \r\n {this.state.overwrite\r\n ? 'Overwrite Map - Your current settings will overwrite the existing Map'\r\n : 'Save as New - Your current settings will be saved as a new Map'}\r\n \r\n
\r\n \r\n \r\n
\r\n {this.state.errors.private}\r\n
\r\n )}\r\n\r\n {this.state.datasets.length === 0 ? (\r\n \r\n \r\n There are no available custom data added to the map.\r\n \r\n \r\n ) : (\r\n <>\r\n \r\n {this.state.datasets.filter((dataset) => dataset.type !== 'static').length === 0 ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n {this.state.datasets\r\n .filter((dataset) => dataset.type !== 'static')\r\n .map((dataset, index) => {\r\n return (\r\n \r\n \r\n {dataset.type === 'static' ? (\r\n {`static file ${dataset.info.label}`}\r\n ) : (\r\n <>\r\n \r\n {`dynamic dataset from ${\r\n dataset.respond.database.label || dataset.respond.database.name\r\n } ${dataset.respond.table.name}`}\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n )}\r\n
\r\n )\r\n })}\r\n \r\n )}\r\n
\r\n
\r\n
\r\n \r\n
\r\n {this.state.shareUrlModal && (\r\n \r\n )}\r\n \r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n keplerInstance: state.keplerGl?.MapLab,\r\n exportImage: state.keplerGl?.MapLab.uiState.exportImage,\r\n datasets: state.app.view.datasets,\r\n session: state.app.view.session,\r\n toggleModal: state.app.view.toggleModal,\r\n filters: state.keplerGl?.MapLab.visState.filters,\r\n mapControls: {\r\n mapLegend: state.keplerGl?.MapLab.uiState.mapControls.mapLegend,\r\n visibleLayers: state.keplerGl?.MapLab.uiState.mapControls.visibleLayers,\r\n },\r\n})\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setErrorHandler: (data) => dispatch(setErrorHandler(data)),\r\n setSession: (data) => dispatch(setSession(data)),\r\n setMapInfo: (data) => dispatch(setMapInfo(data)),\r\n showMessage: (data) => dispatch(showMessage(data)),\r\n updateDataset: (data) => dispatch(updateDataset(data)),\r\n addDataset: (data) => dispatch(addDataset(data)),\r\n onUpdateImageSetting: (data) =>\r\n dispatch(setExportImageSetting({ ...data, mapH: window.screen.height, mapW: window.screen.width })),\r\n cleanupExportImage: () => dispatch(cleanupExportImage()),\r\n})\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SaveSession)\r\n","import Button from 'components/Portions/Button'\r\nimport Form from 'components/Portions/Form'\r\nimport FormGroup from 'components/Portions/FormGroup'\r\nimport Input from 'components/Portions/Input'\r\nimport InputError from 'components/Portions/InputError'\r\nimport Label from 'components/Portions/Label'\r\nimport PasswordChecker from 'components/Portions/PasswordChecker'\r\nimport { Component } from 'react'\r\nimport { connect } from 'react-redux'\r\nimport ScrollArea from 'react-scrollbar'\r\nimport { passwordChange } from 'services/user'\r\nimport { setErrorHandler, showMessage } from 'store/actions/errorsActions'\r\nimport passwordValidation from 'utils/passwordValidation'\r\n\r\n// eslint-disable-next-line react/prefer-stateless-function\r\nclass ChangePasswordForm extends Component {\r\n constructor() {\r\n super()\r\n this.state = {\r\n item: {},\r\n errors: {},\r\n modalLoading: false,\r\n disableSaveButton: true,\r\n passwordsNotSame: false,\r\n }\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n handelChange = (e) => {\r\n const { item, errors, passwordsNotSame } = this.state\r\n const { name } = e.target\r\n item[name] = e.target.value\r\n\r\n if (name === 'new_password' || name === 'confirmPassword') {\r\n const { pass, ...restResponse } = passwordValidation(e.target.value)\r\n if (!pass) {\r\n errors[name] = {\r\n message: 'Password must contain at least:',\r\n ...restResponse,\r\n }\r\n } else {\r\n errors[name] = {\r\n message: ' ',\r\n ...restResponse,\r\n }\r\n setTimeout(() => {\r\n errors[name] = null\r\n this.setState({ item, errors })\r\n }, 1800)\r\n }\r\n this.setState({\r\n disableSaveButton:\r\n !pass ||\r\n item?.confirmPassword !== item?.new_password ||\r\n !item.old_password ||\r\n item?.old_password?.length === 0,\r\n passwordsNotSame: item?.confirmPassword !== item?.new_password,\r\n item,\r\n errors,\r\n })\r\n return\r\n }\r\n errors[name] = null\r\n\r\n this.setState({\r\n item,\r\n errors,\r\n disableSaveButton:\r\n !item?.confirmPassword ||\r\n !item?.new_password ||\r\n passwordsNotSame ||\r\n !item.old_password ||\r\n item?.old_password?.length === 0,\r\n })\r\n }\r\n\r\n save = () => {\r\n const { errors } = this.state\r\n if (this.state.item?.new_password !== this.state.item?.confirmPassword) {\r\n this.setState({ errors: { ...errors, confirmPassword: 'please, make sure your password match' } })\r\n } else {\r\n this.setState({ modalLoading: true })\r\n\r\n passwordChange(this.state.item)\r\n .then((res) => {\r\n this.props.close()\r\n this.props.showMessage({\r\n messageType: 'SUCCESS',\r\n message: 'Password changed successfully',\r\n })\r\n this.setState({ modalLoading: false })\r\n })\r\n .catch((error) => {\r\n this.setState({ modalLoading: false })\r\n switch (error.response.status) {\r\n case 422:\r\n {\r\n const temp = {}\r\n for (let index = 0; index < error.response.data.errors.length; index++) {\r\n const element = error.response.data.errors[index]\r\n // eslint-disable-next-line prefer-destructuring\r\n temp[element[0]] = element[1][0]\r\n }\r\n this.setState({ errors: temp })\r\n }\r\n break\r\n default:\r\n this.props.setErrorHandler(error.response)\r\n break\r\n }\r\n })\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n

Change Password

\r\n
\r\n \r\n \r\n \r\n {this.state.errors.old_password}\r\n \r\n \r\n \r\n \r\n {this.state.errors.new_password?.message}\r\n {this.state.errors.new_password?.message && (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n )}\r\n
\r\n \r\n \r\n \r\n {this.state.errors.confirmPassword?.message}\r\n {this.state.errors.confirmPassword?.message && (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n )}\r\n \r\n {this.state.passwordsNotSame && this.state.item.confirmPassword && this.state.item.new_password\r\n ? 'Passwords are not the same'\r\n : ''}\r\n \r\n
\r\n\r\n
\r\n \r\n Save\r\n \r\n\r\n \r\n Cancel\r\n \r\n
\r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n user: state.app.user.user,\r\n})\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setErrorHandler: (data) => dispatch(setErrorHandler(data)),\r\n showMessage: (data) => dispatch(showMessage(data)),\r\n})\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ChangePasswordForm)\r\n","import mainService from 'services/mainService'\r\n\r\nexport function userInfo(data) {\r\n return mainService\r\n .put(`user/updateInfo`, data)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\nexport function passwordChange(data) {\r\n return mainService\r\n .post(`user/changePassword`, data)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\n","export function setUser(user) {\r\n return {\r\n type: 'SET_USER',\r\n payload: user,\r\n }\r\n}\r\n\r\nexport function setPublicUser(state) {\r\n return {\r\n type: 'SET_PUBLIC_USER',\r\n payload: state,\r\n }\r\n}\r\n","import Button from 'components/Portions/Button'\r\nimport Form from 'components/Portions/Form'\r\nimport FormGroup from 'components/Portions/FormGroup'\r\nimport Input from 'components/Portions/Input'\r\nimport InputError from 'components/Portions/InputError'\r\nimport Label from 'components/Portions/Label'\r\nimport { Component } from 'react'\r\nimport { connect } from 'react-redux'\r\nimport ScrollArea from 'react-scrollbar'\r\nimport { userInfo } from 'services/user'\r\nimport { setErrorHandler, showMessage } from 'store/actions/errorsActions'\r\nimport { setUser } from 'store/actions/userActions'\r\n\r\n// eslint-disable-next-line react/prefer-stateless-function\r\nclass UserInfoForm extends Component {\r\n constructor() {\r\n super()\r\n this.state = {\r\n item: {},\r\n errors: {},\r\n modalLoading: false,\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({\r\n item: this.props.user,\r\n })\r\n }\r\n\r\n handelChange = (e) => {\r\n const { item, errors } = this.state\r\n item[e.target.name] = e.target.value\r\n\r\n errors[e.target.name] = null\r\n\r\n this.setState({ item, errors })\r\n }\r\n\r\n save = () => {\r\n this.setState({ modalLoading: true })\r\n userInfo(this.state.item)\r\n .then((res) => {\r\n this.props.showMessage({\r\n messageType: 'SUCCESS',\r\n message: 'info updated successfully',\r\n })\r\n localStorage.setItem('user', JSON.stringify(res.data))\r\n this.props.setUser(res.data)\r\n this.props.close()\r\n this.setState({ modalLoading: false })\r\n })\r\n .catch((error) => {\r\n this.setState({ modalLoading: false })\r\n switch (error.response.status) {\r\n case 422:\r\n {\r\n const temp = {}\r\n for (let index = 0; index < error.response.data.errors.length; index++) {\r\n const element = error.response.data.errors[index]\r\n // eslint-disable-next-line prefer-destructuring\r\n temp[element[0]] = element[1][0]\r\n }\r\n this.setState({ errors: temp })\r\n }\r\n break\r\n default:\r\n this.props.setErrorHandler(error.response)\r\n break\r\n }\r\n })\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n

User Information

\r\n
\r\n \r\n \r\n \r\n {this.state.errors?.first_name}\r\n \r\n \r\n \r\n \r\n {this.state.errors?.last_name}\r\n \r\n \r\n \r\n \r\n {this.state.errors?.email}\r\n \r\n\r\n
\r\n \r\n\r\n \r\n Cancel\r\n \r\n
\r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n user: state.app.user.user,\r\n})\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setErrorHandler: (data) => dispatch(setErrorHandler(data)),\r\n setUser: (data) => dispatch(setUser(data)),\r\n showMessage: (data) => dispatch(showMessage(data)),\r\n})\r\nexport default connect(mapStateToProps, mapDispatchToProps)(UserInfoForm)\r\n","/* eslint-disable react/prefer-stateless-function */\r\nimport ChangePasswordForm from 'components/Modals/Settings/ChangePasswordForm'\r\nimport UserInfoForm from 'components/Modals/Settings/UserInfoForm'\r\nimport ModalContainer from 'components/Utilities/ModalContainer'\r\nimport { Component } from 'react'\r\n\r\nexport default class Settings extends Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n changePassword: false,\r\n userInfo: true,\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n
\r\n
\r\n
\r\n {\r\n this.setState({ userInfo: true, changePassword: false })\r\n }}\r\n className={`${\r\n this.state.userInfo && 'bg-gray-100'\r\n } hover:bg-gray-200 w-full px-3 py-1 cursor-pointer transition duration-200`}\r\n >\r\n User Information\r\n

\r\n {\r\n this.setState({ changePassword: true, userInfo: false })\r\n }}\r\n >\r\n Change Password\r\n

\r\n
\r\n
\r\n
\r\n {this.state.changePassword && }\r\n {this.state.userInfo && }\r\n
\r\n
\r\n
\r\n )\r\n }\r\n}\r\n","/* eslint-disable react/prefer-stateless-function */\r\n\r\nimport Button from 'components/Portions/Button'\r\nimport Text from 'components/Portions/Text'\r\nimport Modal from 'components/Utilities/Modal'\r\nimport ModalContainer from 'components/Utilities/ModalContainer'\r\nimport { Component } from 'react'\r\nimport { connect } from 'react-redux'\r\n\r\nclass UserGuide extends Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = { modalLoading: false, activeStep: 0 }\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n next = () => {\r\n const { activeStep } = this.state\r\n\r\n this.setState({ activeStep: activeStep + 1 })\r\n }\r\n\r\n back = () => {\r\n const { activeStep } = this.state\r\n\r\n this.setState({ activeStep: activeStep - 1 })\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n
    \r\n
  1. \r\n \r\n 1\r\n \r\n
    \r\n
    \r\n

    \r\n Enter your data\r\n

    \r\n
    \r\n
    \r\n <>\r\n \r\n Use the left panel to build the view by entering your data.\r\n \r\n \r\n It is possible to add static geocoded (single/multi coordinates) files by clicking on the\r\n \r\n {` \"Add Data\" `}\r\n \r\n button.\r\n \r\n \r\n Supported formats are csv, json, or geojson. Or, you can fetch data from your PostGIS/SQL servers\r\n by clicking on\r\n \r\n {` \"Select a database\" `}\r\n \r\n on the bottom left menu.\r\n \r\n \r\n Once you have selected the database from the list of databases that were connected to your\r\n organization, it is possible to apply dynamic filters by clicking on the\r\n \r\n {` \"Fetch Data Filtering\" `}\r\n \r\n button.\r\n \r\n \r\n Finally you can fetch your filtered/unfiltered data by clicking on the\r\n \r\n {` \"Fetch Data\" `}\r\n \r\n button.\r\n \r\n \r\n Now, your data will be visible on your map through a default layer depending on the geocoded\r\n format of the data\r\n \r\n {` (single coordinates by Points layer, multi-coordinates by Polygon or Trips layer).`}\r\n \r\n \r\n \r\n After that, you can edit the configuration of the map by entering the appropriate attributes for\r\n coordinates\r\n \r\n (if your data has more than one: for instance pick-up and drop-offs points)\r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
  2. \r\n
  3. \r\n \r\n 2\r\n \r\n
    \r\n
    \r\n

    \r\n Build your view\r\n

    \r\n
    \r\n
    \r\n \r\n You can build your view according to your needs.\r\n \r\n
    \r\n You can edit the layer type from the available ones:\r\n
      \r\n
    • \r\n \r\n \r\n Hexbin, Grid, Cluster\r\n \r\n {` for points aggregation on a X km/pixels radius`}\r\n \r\n
    • \r\n
    • \r\n \r\n \r\n Heatmap\r\n \r\n {` to visualize areas of high density`}\r\n \r\n
    • \r\n
    • \r\n \r\n \r\n Arc, Line\r\n \r\n {` to visualize \"source\" to \"target\" itinerary`}\r\n \r\n
    • \r\n
    • \r\n \r\n \r\n Polygons, Trips\r\n \r\n {` for multi-coordinates data`}\r\n \r\n
    • \r\n
    \r\n \r\n {` You can eventually base your layer colors`}\r\n \r\n (or heights in hexbin/grid layers case)\r\n \r\n {` on the different attributes of your fetched/inserted data.`}\r\n \r\n\r\n \r\n You can select the mapstyle by clicking on the 4th tab of the left menu. You can either choose one\r\n of the default map styles provided by MapLab.world or insert a custom one by clicking on\r\n \r\n {` \"Add Map Style .\"`}\r\n \r\n \r\n\r\n \r\n It is also possible to customize what you want to be seen on our default maps by clicking on the\r\n \r\n {` \"eye icon\" `}\r\n \r\n placed next to the different map layers such as\r\n \r\n {` Borders, Water, Labels, Roads, `}\r\n \r\n etc..\r\n \r\n\r\n \r\n Last, it is possible to customize the color of your 3D buildings if you have chosen to view 3D\r\n buildings by clicking on\r\n \r\n {` \"3D building color\" `}\r\n \r\n and choosing the preferred color.\r\n \r\n\r\n
    \r\n \r\n\r\n \r\n Back\r\n \r\n
    \r\n
    \r\n
    \r\n
  4. \r\n
  5. \r\n \r\n 3\r\n \r\n
    \r\n
    \r\n

    \r\n Interact with your map\r\n

    \r\n
    \r\n
    \r\n <>\r\n \r\n Finally, now that you have built your view, you can use the 2nd and 3rd tab on the left panel to\r\n interact with your map and derive insights based on your analysis purpose. You can filter your\r\n data by clicking on\r\n \r\n {` \"Add filter\" > \"Choose Data Source\" > `}\r\n \r\n Choose the column you want to filter and enter the desired figures\r\n \r\n\r\n \r\n When hovering over the map, a tooltip appears for each data point. By clicking the 3rd tab from\r\n the left menu, you can add/remove visible attributes according to your analysis. You can always\r\n conduct a comparative analysis of two different data points by checking\r\n \r\n {` \"Comparison mode\" `}\r\n \r\n then selecting the appropriate type\r\n \r\n {` \"Absolute - for raw values comparison\" `}\r\n \r\n or\r\n \r\n {` \"Relative - for percentage values comparison\" `}\r\n \r\n .\r\n \r\n\r\n The right part of the product allows more interaction: \r\n
      \r\n
    • \r\n \r\n You can\r\n \r\n {` \"Switch to dual map view\" `}\r\n \r\n if you want to analyze the same map through different layers.\r\n \r\n
    • \r\n
    • \r\n \r\n Enter an address or coordinates\r\n \r\n
    • \r\n
    • \r\n \r\n \r\n \"Enable/Disable 3D mode\".\r\n \r\n \r\n
    • \r\n
    • \r\n \r\n \r\n \"Trace polygons or rectangles for a particular desired area\"\r\n \r\n \r\n
    • \r\n
    \r\n \r\n Once your map is ready, you can generate a private or public link to access it by clicking on the\r\n \r\n {` \"Save\" `}\r\n \r\n button on the left panel from above.\r\n \r\n\r\n \r\n You can\r\n \r\n {` \"Name\" `}\r\n \r\n your map, choose the type of saving\r\n \r\n {` (Static or Dynamic) `}\r\n \r\n , choose the availability of the map\r\n \r\n {` (Private, Public) `}\r\n \r\n and finally\r\n \r\n {` \"Save\" `}\r\n \r\n .\r\n \r\n\r\n \r\n Once your map is saved a menu will appear displaying the Public/Private URL and an iframe code to\r\n embed it on your website\r\n \r\n {` (in case of public saving) `}\r\n \r\n \r\n
    \r\n \r\n You can also click on the\r\n \r\n {` \"Share\" `}\r\n \r\n button if you want to save your view in image format or if you want to save the data in it in csv\r\n format.\r\n \r\n \r\n
    \r\n \r\n Back\r\n \r\n
    \r\n
    \r\n
    \r\n
  6. \r\n
\r\n
\r\n \r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n user: state.app.user.user,\r\n})\r\nconst mapDispatchToProps = (dispatch) => ({})\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(UserGuide)\r\n","/* eslint-disable react/prefer-stateless-function */\r\n\r\nimport Text from 'components/Portions/Text'\r\nimport Modal from 'components/Utilities/Modal'\r\nimport ModalContainer from 'components/Utilities/ModalContainer'\r\nimport { Component } from 'react'\r\nimport { connect } from 'react-redux'\r\n\r\nclass UserHelp extends Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = { modalLoading: false }\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n render() {\r\n return (\r\n \r\n \r\n
    \r\n
  1. \r\n
    \r\n
    \r\n

    \r\n Tables of Cell Statistics Across Resolutions\r\n

    \r\n
    \r\n
    \r\n <>\r\n \r\n Cell counts\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    ResTotal number of cellsNumber of hexagonsNumber of pentagons
    012211012
    184283012
    25,8825,87012
    341,16241,15012
    4288,122288,11012
    52,016,8422,016,83012
    614,117,88214,117,87012
    798,825,16298,825,15012
    8691,776,122691,776,11012
    94,842,432,8424,842,432,83012
    1033,897,029,88233,897,029,87012
    11237,279,209,162237,279,209,15012
    121,660,954,464,1221,660,954,464,11012
    1311,626,681,248,84211,626,681,248,83012
    1481,386,768,741,88281,386,768,741,87012
    15569,707,381,193,162569,707,381,193,15012
    \r\n \r\n
    \r\n
    \r\n
  2. \r\n
\r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n user: state.app.user.user,\r\n})\r\nconst mapDispatchToProps = (dispatch) => ({})\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(UserHelp)\r\n","import ManageDatabases from 'components/Management/Database/ManageDatabases'\r\nimport ManageOrganisations from 'components/Management/Organisation/ManageOrganisations'\r\nimport ManageSessions from 'components/Management/Sessions/ManageSessions'\r\nimport Agreement from 'components/Modals/Agreement/Agreement'\r\nimport ExportData from 'components/Modals/Export/ExportData'\r\nimport ExportImage from 'components/Modals/Export/ExportImage'\r\nimport ResetMap from 'components/Modals/ResetMap/ResetMap'\r\nimport SaveSession from 'components/Modals/SaveSession/SaveSession'\r\nimport Settings from 'components/Modals/Settings/Settings'\r\nimport UserGuide from 'components/Modals/UserGuide/UserGuide'\r\nimport UserHelp from 'components/Modals/UserHelp/UserHelp'\r\nimport { Component } from 'react'\r\nimport { connect } from 'react-redux'\r\nimport { setToggleModal } from 'store/actions/viewActions'\r\n\r\n// eslint-disable-next-line react/prefer-stateless-function\r\nclass ModalManger extends Component {\r\n constructor() {\r\n super()\r\n this.state = {\r\n manageDataBase: false,\r\n manageOrganisations: false,\r\n manageSessions: false,\r\n resetMap: false,\r\n saveSession: false,\r\n userGuide: false,\r\n exportData: false,\r\n exportImage: false,\r\n settings: false,\r\n agreement: false,\r\n help: false,\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.props.setToggleModal(this.toggleModal)\r\n }\r\n\r\n toggleModal = (modal, data = {}) => {\r\n console.log(modal)\r\n // eslint-disable-next-line react/no-access-state-in-setstate\r\n this.setState({ [modal]: !this.state[modal], data })\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n {this.state.settings && (\r\n {\r\n this.toggleModal('settings')\r\n }}\r\n />\r\n )}\r\n {this.state.exportImage && (\r\n {\r\n this.toggleModal('exportImage')\r\n }}\r\n />\r\n )}\r\n {this.state.exportData && (\r\n {\r\n this.toggleModal('exportData')\r\n }}\r\n />\r\n )}\r\n {this.state.userGuide && (\r\n {\r\n this.toggleModal('userGuide')\r\n }}\r\n />\r\n )}\r\n {this.state.userHelp && (\r\n {\r\n this.toggleModal('userHelp')\r\n }}\r\n />\r\n )}\r\n {this.state.manageDataBase && (\r\n {\r\n this.toggleModal('manageDataBase')\r\n }}\r\n />\r\n )}\r\n {this.state.resetMap && (\r\n {\r\n this.toggleModal('resetMap')\r\n }}\r\n />\r\n )}\r\n {this.state.manageOrganisations && (\r\n {\r\n this.toggleModal('manageOrganisations')\r\n }}\r\n />\r\n )}\r\n {this.state.manageSessions && (\r\n {\r\n this.toggleModal('manageSessions')\r\n }}\r\n />\r\n )}\r\n {this.state.saveSession && (\r\n {\r\n this.toggleModal('saveSession')\r\n }}\r\n />\r\n )}\r\n {this.state.agreement && (\r\n {\r\n this.toggleModal('agreement')\r\n }}\r\n />\r\n )}\r\n \r\n )\r\n }\r\n}\r\nconst mapStateToProps = (state) => ({})\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setToggleModal: (data) => dispatch(setToggleModal(data)),\r\n})\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ModalManger)\r\n","import polygonConfig from 'configs/polygon'\r\n\r\n/**\r\n * MapBox custom style object\r\n * @typedef MapBoxStyle\r\n * @property {string} id unique id for custom style object\r\n * @property {string} label name of custom style\r\n * @property {string} url a mapbox url e.g mapbox://styles/myAccountInMapBox/ckl64o537391w17qh81pg46qv\r\n * @property {string} icon a url link for custom map icon e.g. https://storage.googleapis.com/test/images/x.png\r\n * @property {string[]} [layerGroups] a list layerGroups - NOT CLEAR what the use of this attribute\r\n */\r\n\r\n/**\r\n * MapBox custom styles array\r\n * @type {MapBoxStyle[]}\r\n */\r\nexport const mapboxStyle = [\r\n {\r\n id: 'maplab-default-map',\r\n label: 'MapLab.world Default Map',\r\n url: 'mapbox://styles/alatoccam/ckymrtcb14ndk14l2n4r0bs1z',\r\n icon: 'https://api.mapbox.com/styles/v1/alatoccam/ckvaqt9ag2dnx14rns0owbaqn/static/-122.3391,37.7922,9,0,0/400x300?access_token=pk.eyJ1IjoiYWxhdG9jY2FtIiwiYSI6ImNqcXFmdXhzYzBiMWg0MnBmaXRtbmp0MDgifQ.lqaCHLpzviZEBjW-YjUvIg&logo=false&attribution=false',\r\n layerGroups: [],\r\n },\r\n // {\r\n // id: 'maplab-number-of-transactions',\r\n // label: 'Number of Transactions',\r\n // url: 'mapbox://styles/alatoccam/ckl64o537391w17qh81pg46qv',\r\n // icon: 'https://storage.googleapis.com/davinci-web-assets/images/number_of_transacitons.png',\r\n // layerGroups: [],\r\n // },\r\n // {\r\n // id: 'maplab-avg-price-per-sm',\r\n // label: 'Average Price per Square Meter',\r\n // url: 'mapbox://styles/alatoccam/ckl51g3bk270s17qh3y6hpjjw',\r\n // icon: 'https://storage.googleapis.com/davinci-web-assets/images/av_price_per_sq_meter.png',\r\n // layerGroups: [],\r\n // },\r\n\r\n // {\r\n // id: 'maplab-avg-selling-price-on-transaction',\r\n // label: 'Average Selling Price on Transaction',\r\n // url: 'mapbox://styles/alatoccam/ckl64pat70h8k17s1k161qld2',\r\n // icon: 'https://storage.googleapis.com/davinci-web-assets/images/av_selling_price_trans.png',\r\n // layerGroups: [],\r\n // },\r\n // {\r\n // id: 'maplab-navigation',\r\n // label: 'Navigation',\r\n // url: 'mapbox://styles/alatoccam/ckvaqt9ag2dnx14rns0owbaqn',\r\n // token: 'pk.eyJ1IjoiYWxhdG9jY2FtIiwiYSI6ImNqcXFmdXhzYzBiMWg0MnBmaXRtbmp0MDgifQ.lqaCHLpzviZEBjW-YjUvIg',\r\n // icon: 'https://api.mapbox.com/styles/v1/alatoccam/ckvaqt9ag2dnx14rns0owbaqn/static/-122.3391,37.7922,9,0,0/400x300?access_token=pk.eyJ1IjoiYWxhdG9jY2FtIiwiYSI6ImNqcXFmdXhzYzBiMWg0MnBmaXRtbmp0MDgifQ.lqaCHLpzviZEBjW-YjUvIg&logo=false&attribution=false',\r\n // layerGroups: [],\r\n // },\r\n]\r\n\r\n/**\r\n * Get Map config for Points.\r\n * @param {?string} id\r\n * @returns A map configuration for the dataset that will be added in Kepler\r\n */\r\nexport function getMapConfig(id = null, label = null) {\r\n const settings = {\r\n ...polygonConfig,\r\n id,\r\n config: {\r\n // ...pointSettings.config,\r\n dataId: id,\r\n label,\r\n },\r\n }\r\n\r\n return {\r\n version: 'v1',\r\n config: {\r\n visState: {\r\n filters: [\r\n // CPU OVERLOAD IF WE ASSIGN IN EACH FETCH A FILTER\r\n // {\r\n // dataId: ['points'],\r\n // id: 'points',\r\n // name: ['date'],\r\n // type: 'timeRange',\r\n // enlarged: true,\r\n // plotType: 'histogram',\r\n // animationWindow: 'free',\r\n // yAxis: null,\r\n // speed: 1,\r\n // },\r\n ],\r\n layers: [settings],\r\n interactionConfig: {\r\n // tooltip: {\r\n // fieldsToShow: {\r\n // // [`data-${id}`]: [\r\n // // 'commune_name',\r\n // // 'date',\r\n // // 'street_number',\r\n // // 'street',\r\n // // 'surface',\r\n // // 'nr_rooms',\r\n // // 'price',\r\n // // 'price_per_sm',\r\n // // ],\r\n // },\r\n // enabled: true,\r\n // compareMode: true,\r\n // compareType: 'relative',\r\n // },\r\n },\r\n layerBlending: 'normal',\r\n // splitMaps: []\r\n },\r\n mapState: {\r\n bearing: 0,\r\n dragRotate: true,\r\n pitch: 0, // an to kaneis 50 energopoieis to 3d view\r\n isSplit: false,\r\n },\r\n // ENABLE 3D VIEW FOR POINTS\r\n // ? {\r\n // ...mapState,\r\n // pitch: 50,\r\n // dragRotate: true,\r\n // bearing: 1\r\n // }\r\n // : mapState\r\n },\r\n }\r\n}\r\n\r\n// export const getExportedMapConfig = () => {\r\n// return {\r\n// version: 'v1',\r\n// config: {\r\n// visState: {\r\n// filters: [],\r\n// layers: [],\r\n// interactionConfig: {\r\n// tooltip: {\r\n// fieldsToShow: {\r\n// points: ['commune_name', 'date', 'street_number', 'street', 'surface', 'nr_rooms', 'price'],\r\n// },\r\n// compareMode: false,\r\n// compareType: 'absolute',\r\n// enabled: true,\r\n// },\r\n// brush: { size: 0.5, enabled: true },\r\n// geocoder: { enabled: true },\r\n// coordinate: { enabled: false },\r\n// },\r\n// layerBlending: 'normal',\r\n// splitMaps: [],\r\n// animationConfig: { currentTime: null, speed: 1 },\r\n// },\r\n// mapState: {\r\n// bearing: 0,\r\n// dragRotate: false,\r\n// latitude: 46.2276,\r\n// longitude: 2.2137,\r\n// pitch: 0,\r\n// zoom: 10,\r\n// isSplit: false,\r\n// },\r\n// mapStyle: {\r\n// styleType: 'occamlab-avg-price-per-sm',\r\n// topLayerGroups: { label: true },\r\n// visibleLayerGroups: {\r\n// label: true,\r\n// road: true,\r\n// border: false,\r\n// building: true,\r\n// water: true,\r\n// land: true,\r\n// '3d building': false,\r\n// },\r\n// threeDBuildingColor: [194.6103322548211, 191.81688250953655, 185.2988331038727],\r\n// mapStyles: mapboxStyle,\r\n// },\r\n// },\r\n// }\r\n// }\r\n","export const messages = {\r\n en: {\r\n 'toolbar.fr': 'Français',\r\n 'toolbar.hideUserMapsLoader': 'Hide saved maps',\r\n 'toolbar.showUserMapsLoader': 'Show saved maps',\r\n 'toolbar.showSavedPolygons': 'Saved polygons',\r\n 'load.user.points': 'Load User Points',\r\n 'load.user.polygons': 'Load User Polygons',\r\n 'load.user.maps': 'Load User Maps',\r\n 'bug.report.under.construction': 'Bug Report - under construction',\r\n 'user.guide': 'User Guide',\r\n 'panel.header.logout': 'Log out',\r\n 'modal.button.resetMap': 'Reset',\r\n 'modal.button.fetch': 'Fetch',\r\n 'modal.title.savedMaps': 'Saved Maps',\r\n 'modal.title.savedPolygons': 'Saved Polygons',\r\n 'modal.iconInfo.description2': ' MapLab.world will automatically create a icon layer for you.',\r\n 'modal.addStyle.publishSubtitle5': 'To use your added (private) style, paste your',\r\n 'modal.addStyle.publishSubtitle7': 'here.',\r\n 'modal.addStyle.publishSubtitle8':\r\n '*MapLab.world is a client-side application that stores all data locally on your machine/browser, and no information or map data is transmitted to any servers, unless you opt to save the map.',\r\n 'modal.shareMap.shareDisclaimer':\r\n 'MapLab.world will save your map data to your personal cloud storage, only people with the URL can access your map and data. ' +\r\n 'You can edit/delete the data file in your cloud account anytime.',\r\n 'modal.shareMap.gotoPage': 'Go to your MapLab.world {currentProvider} page',\r\n 'modal.exportMap.json.configDisclaimer':\r\n 'Map config will be included in the Json file. If you are using MapLab.world in your own app. You can copy this config and pass it to ',\r\n 'modal.exportMap.json.selection':\r\n 'Export current map data and config into a single Json file. You can later open the same map by uploading this file to MapLab.world.',\r\n 'modal.loadStorageMap.goToPage': 'Go to your MapLab.world {displayName} page',\r\n 'fileUploader.disclaimer':\r\n '*MapLab.world is a client-side application with no server backend. Data lives only on your machine/browser. ' +\r\n 'No information or map data is sent to any server.',\r\n resetMap: 'Reset Map',\r\n 'modal.addStyle.publishTitle':\r\n '2. If a Mapbox style URL was entered in step 1, please either publish the style on Mapbox or provide an access token (optional).',\r\n 'modal.addStyle.pasteTitle': '1. Paste style URL',\r\n 'modal.addStyle.pasteSubtitle0': 'Supported style URL formats:',\r\n 'modal.addStyle.pasteSubtitle2': 'Mapbox style URL',\r\n 'modal.addStyle.pasteSubtitle3': 'or JSON adhering to ',\r\n 'modal.addStyle.pasteSubtitle4': 'Mapbox GL Style Specification.',\r\n 'tooltip.showLegend': 'Show Legend',\r\n },\r\n pt: {\r\n 'toolbar.fr': 'Français',\r\n },\r\n fr: {\r\n 'load.user.points': \"Charger les points d'utilisateur\",\r\n 'load.user.polygons': 'Charger les polygones utilisateur',\r\n 'load.user.maps': 'Charger les cartes utilisateur',\r\n 'panel.header.logout': 'Se déconnecter',\r\n 'toolbar.fr': 'Français',\r\n 'bug.report.under.construction': 'Rapport d’erreur',\r\n 'user.guide': 'Guide d’utilisateur',\r\n },\r\n}\r\n","import { useSelector } from 'react-redux'\r\n\r\n/**\r\n * Quick alias for Redux selectors\r\n * @param selectFn\r\n */\r\nexport const useAppState = (selectFn) => useSelector(selectFn)\r\n","/* eslint-disable prettier/prettier */\r\nimport { onExportFileSuccess, onLoadCloudMapSuccess } from 'actions'\r\nimport { CLOUD_PROVIDERS } from 'cloud-providers'\r\nimport { replaceGeocoderPanel } from 'components/CustomKepler/CustomGeocoderPanel'\r\nimport { replaceKeplerGl } from 'components/CustomKepler/CustomKeplerGl'\r\nimport { replaceMapContainer } from 'components/CustomKepler/CustomMapContainer'\r\nimport { replaceSidePanel } from 'components/CustomKepler/CustomSidePanel'\r\nimport { replaceFeatureActionPanel } from 'components/CustomKepler/editor/CustomFeatureActionPanel'\r\nimport { replaceMapControl } from 'components/CustomKepler/map/CustomMapControl'\r\nimport { replaceAddMapStyleModal } from 'components/CustomKepler/modals/CustomAddMapStyleModal'\r\nimport { replaceFilterManager } from 'components/CustomKepler/side-panel/CustomFilterManager'\r\nimport { replaceLayerManager } from 'components/CustomKepler/side-panel/CustomLayerManager'\r\nimport { replaceMapManager } from 'components/CustomKepler/side-panel/CustomMapManager'\r\nimport { replacePanelHeader } from 'components/CustomKepler/side-panel/CustomPanelHeader'\r\nimport { replaceSidebar } from 'components/CustomKepler/side-panel/CustomSideBar'\r\nimport { replaceSourceDataCatalog } from 'components/CustomKepler/side-panel/common/CustomSourceDataCatalog'\r\nimport ModalManger from 'components/Modals/ModalManger'\r\nimport { mapboxStyle } from 'configs/map'\r\nimport { SETTINGS } from 'constants/default-settings'\r\nimport { messages } from 'constants/localization'\r\nimport { theme } from 'kepler.gl/dist/styles/base'\r\nimport React from 'react'\r\nimport { connect, useDispatch } from 'react-redux'\r\nimport AutoSizer from 'react-virtualized/dist/commonjs/AutoSizer'\r\nimport { setPublicUser, setUser } from 'store/actions/userActions'\r\nimport { setMapCode, setMapRef as setMapRefAction } from 'store/actions/viewActions'\r\nimport { useVisStateKeplerState } from 'store/hooks'\r\nimport styled, { ThemeProvider } from 'styled-components'\r\n\r\nconst KeplerGl = require('kepler.gl/components').injectComponents([\r\n replaceKeplerGl(),\r\n replaceSidePanel(),\r\n replacePanelHeader(),\r\n replaceAddMapStyleModal(),\r\n replaceFilterManager(),\r\n replaceSidebar(),\r\n replaceLayerManager(),\r\n replaceMapManager(),\r\n replaceSourceDataCatalog(),\r\n\r\n replaceMapContainer(),\r\n replaceMapControl(),\r\n replaceFeatureActionPanel(),\r\n replaceGeocoderPanel(),\r\n])\r\n\r\n/* eslint-enable no-unused-vars */\r\nconst keplerGlGetState = (state) => state.keplerGl\r\n\r\nconst GlobalStyle = styled.div`\r\n font-family: ff-clan-web-pro, 'Helvetica Neue', Helvetica, sans-serif;\r\n font-weight: 400;\r\n font-size: 0.875em;\r\n line-height: 1.71429;\r\n\r\n *,\r\n *:before,\r\n *:after {\r\n -webkit-box-sizing: border-box;\r\n -moz-box-sizing: border-box;\r\n box-sizing: border-box;\r\n }\r\n\r\n ul {\r\n margin: 0;\r\n padding: 0;\r\n }\r\n\r\n li {\r\n margin: 0;\r\n }\r\n\r\n a {\r\n text-decoration: none;\r\n color: ${(props) => props.theme.labelColor};\r\n }\r\n`\r\n\r\nconst KeplerGlWrapper = styled.div`\r\n transition: 'margin 1s, height 1s';\r\n position: absolute;\r\n width: 100%;\r\n height: 100%;\r\n left: 0;\r\n top: 0;\r\n`\r\n\r\nconst App = ({ viewerMode, setMapRef, setMapCodeAction, setUserAction, setPublicUserAction, match }) => {\r\n // Inner state\r\n const [timeRangeEnabled, setTimeRangeEnabled] = React.useState(false)\r\n\r\n // Redux Default Dispatcher\r\n const dispatch = useDispatch()\r\n\r\n // Redux Selectors\r\n const visStateFilters = useVisStateKeplerState((state) => state?.filters)\r\n // const visStateInteractionConfig = useVisStateKeplerState((state) => state?.interactionConfig)\r\n\r\n // Hooks\r\n\r\n React.useEffect(() => {\r\n if (match.params.code) {\r\n setMapCodeAction(match.params.code)\r\n }\r\n }, [match])\r\n React.useEffect(() => {\r\n setPublicUserAction(\r\n match?.path?.indexOf('public-map') >= 0 ||\r\n localStorage.getItem('user') === undefined ||\r\n localStorage.getItem('user') === null,\r\n )\r\n setUserAction(localStorage.getItem('user') ? JSON.parse(localStorage.getItem('user')) : {})\r\n }, [])\r\n\r\n // TimeRange filter\r\n React.useEffect(() => {\r\n if (visStateFilters?.length > 0) {\r\n const finded = visStateFilters?.find((fil) => fil.type === 'timeRange')\r\n if (finded?.enlarged && !timeRangeEnabled) {\r\n setTimeRangeEnabled(true)\r\n } else if (!finded || (finded && !finded.enlarged && timeRangeEnabled)) {\r\n setTimeRangeEnabled(false)\r\n }\r\n }\r\n\r\n if (visStateFilters?.length === 0 && timeRangeEnabled) {\r\n setTimeRangeEnabled(false)\r\n }\r\n }, [visStateFilters])\r\n\r\n // Geocoder\r\n // React.useEffect(() => {\r\n // if (visStateInteractionConfig?.geocoder?.id === 'geocoder' && !visStateInteractionConfig?.geocoder?.enabled) {\r\n // const config = {\r\n // ...visStateInteractionConfig?.geocoder,\r\n // enabled: true,\r\n // }\r\n // dispatch(wrapTo('MapLab', interactionConfigChange(config)))\r\n // }\r\n // }, [visStateInteractionConfig])\r\n\r\n // Mapbox\r\n const getMapboxRef = React.useCallback(\r\n (mapbox, index) => {\r\n setMapRef(mapbox)\r\n },\r\n [viewerMode, dispatch],\r\n )\r\n\r\n return (\r\n \r\n node ?? null}>\r\n \r\n \r\n \r\n {({ height, width }) => (\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\nconst mapDispatchToProps = (dispatch) => ({\r\n setMapRef: (data) => dispatch(setMapRefAction(data)),\r\n setMapCodeAction: (data) => dispatch(setMapCode(data)),\r\n setUserAction: (data) => dispatch(setUser(data)),\r\n setPublicUserAction: (data) => dispatch(setPublicUser(data)),\r\n})\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(App)\r\n","import { useAppState } from 'store/hooks/useAppState'\r\n\r\nexport const useVisStateKeplerState = (selectorFn) =>\r\n useAppState((state) => selectorFn(state.maplab?.keplerGl?.MapLab?.visState))\r\n","/* eslint-disable react/prefer-stateless-function */\r\nimport React, { Component } from 'react'\r\n\r\nclass ScreanContainer extends Component {\r\n render() {\r\n return (\r\n <>\r\n
\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\nexport default ScreanContainer\r\n","import axios from 'axios'\r\nimport { SETTINGS } from 'constants/default-settings'\r\n\r\nexport const baseURL = SETTINGS.BASE_URL\r\n\r\nconst authService = axios.create({\r\n baseURL,\r\n // withCredentials: true,\r\n headers: {\r\n // Authorization: \"Bearer \" + localStorage.getItem(\"token\"),\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json',\r\n },\r\n})\r\n\r\nexport default authService\r\n","import ScreanContainer from 'components/Layout/ScreanContainer'\r\nimport Button from 'components/Portions/Button'\r\nimport Form from 'components/Portions/Form'\r\nimport FormGroup from 'components/Portions/FormGroup'\r\nimport Input from 'components/Portions/Input'\r\nimport InputError from 'components/Portions/InputError'\r\nimport Label from 'components/Portions/Label'\r\nimport Text from 'components/Portions/Text'\r\nimport { Component } from 'react'\r\nimport { connect } from 'react-redux'\r\nimport { login } from 'services/userAuth'\r\nimport { setErrorHandler } from 'store/actions/errorsActions'\r\nimport { setUser } from 'store/actions/userActions'\r\nimport { controlLoading } from 'store/actions/viewActions'\r\n\r\nclass Login extends Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n item: {},\r\n errors: {},\r\n modalLoading: false,\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n if (localStorage.getItem('user')) {\r\n window.location = `/maps`\r\n } else {\r\n this.props.controlLoading(false)\r\n }\r\n }\r\n\r\n handelchange = (e) => {\r\n const { item, errors } = this.state\r\n\r\n item[e.target.name] = e.target.value\r\n errors[e.target.name] = null\r\n this.setState({ item, errors })\r\n }\r\n\r\n login = () => {\r\n login({ ...this.state.item })\r\n .then((res) => {\r\n this.setState({ modalLoading: false })\r\n // set user to local storage\r\n localStorage.setItem('token', res.token)\r\n localStorage.setItem('user', JSON.stringify(res.user))\r\n localStorage.setItem('lang', res.lang || 'en')\r\n // set user to store\r\n this.props.setUser(res.data)\r\n\r\n window.location = `/maps`\r\n })\r\n .catch((error) => {\r\n this.setState({ modalLoading: false })\r\n switch (error.response.status) {\r\n case 400:\r\n this.setState({ errors: { password: 'Sorry the credentials you are using are invalid' } })\r\n break\r\n default:\r\n this.props.setErrorHandler(error.response)\r\n break\r\n }\r\n })\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n
\r\n
\r\n
\r\n logo\r\n
\r\n Sign in to MapLab.world\r\n \r\n Fast and powerful online GIS for data visualization tool\r\n \r\n
\r\n
{}}>\r\n \r\n \r\n\r\n \r\n {this.state.errors.username}\r\n \r\n \r\n \r\n \r\n {this.state.errors.password}\r\n \r\n \r\n Sign in\r\n \r\n \r\n\r\n \r\n {` Copyright © 2023 `}\r\n \r\n MapLab.world\r\n \r\n {` All rights reserved. `}\r\n \r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({})\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setErrorHandler: (data) => dispatch(setErrorHandler(data)),\r\n controlLoading: (data) => dispatch(controlLoading(data)),\r\n setUser: (data) => dispatch(setUser(data)),\r\n})\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Login)\r\n","import authService from 'services/authService'\r\n\r\nexport function login(data) {\r\n return authService\r\n .post('/login', data)\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\n\r\nexport function logout() {\r\n return authService\r\n .post('/logout', {})\r\n .then((res) => {\r\n return res.data\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error)\r\n })\r\n}\r\n","/* eslint-disable react/prefer-stateless-function */\r\nimport React from 'react'\r\nimport { connect } from 'react-redux'\r\n\r\nclass ApplicationError extends React.Component {\r\n render() {\r\n return (\r\n
\r\n {this.props.applicationError && (\r\n
\r\n
\r\n
\r\n error\r\n
\r\n
\r\n

System Error

\r\n

Application error please contact the system administrator

\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 applicationError: state.app.errors.applicationError,\r\n})\r\nexport default connect(mapStateToProps)(ApplicationError)\r\n","/* eslint-disable react/prefer-stateless-function */\r\nimport React from 'react'\r\nimport { connect } from 'react-redux'\r\n\r\nclass ApplicationLoading extends React.Component {\r\n render() {\r\n return (\r\n
\r\n {this.props.applicationLoading && (\r\n
\r\n
\r\n
\r\n logo\r\n\r\n
\r\n
\r\n error\r\n\r\n

Loading, Please Wait...

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n )}\r\n
\r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => ({\r\n applicationLoading: state.app.view.applicationLoading,\r\n})\r\nexport default connect(mapStateToProps)(ApplicationLoading)\r\n","/* eslint-disable react/prefer-stateless-function */\r\nimport React from 'react'\r\nimport { connect } from 'react-redux'\r\n\r\nclass ForbiddenError extends React.Component {\r\n render() {\r\n return (\r\n
\r\n {this.props.ForbiddenError && (\r\n
\r\n
\r\n
\r\n error\r\n
\r\n
\r\n

Forbidden 403

\r\n

You don't have the permission to access this page

\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 ForbiddenError: state.app.errors.ForbiddenError,\r\n})\r\nexport default connect(mapStateToProps)(ForbiddenError)\r\n","/* eslint-disable react/prefer-stateless-function */\r\nimport React, { Component } from 'react'\r\nimport { connect } from 'react-redux'\r\nimport { setErrorHandler } from 'store/actions/errorsActions'\r\n\r\nclass ServerError extends Component {\r\n render() {\r\n return (\r\n <>\r\n {this.props.serverError && (\r\n
\r\n
\r\n
\r\n error\r\n
\r\n
\r\n

Application Error

\r\n

\r\n Application error please contact your system administrator or\r\n {\r\n this.props.setErrorHandler({ status: null })\r\n }}\r\n >\r\n {` click here`}\r\n \r\n {` To try again .`}\r\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 serverError: state.app.errors.serverError,\r\n})\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setErrorHandler: (data) => dispatch(setErrorHandler(data)),\r\n})\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ServerError)\r\n","import ToolBar from 'components/Layout/ToolBar'\r\nimport { galleryOptions } from 'components/Layout/toolbar-options'\r\nimport ModalManger from 'components/Modals/ModalManger'\r\nimport { theme } from 'kepler.gl/dist/styles/base'\r\nimport { useEffect } from 'react'\r\nimport { useDispatch } from 'react-redux'\r\nimport { setUser } from 'store/actions/userActions'\r\nimport { controlLoading } from 'store/actions/viewActions'\r\nimport styled, { ThemeProvider } from 'styled-components'\r\n\r\nconst ToolBarWrapper = styled.div`\r\n z-index: 99;\r\n height: 100%;\r\n display: flex;\r\n flex: 0 1 auto;\r\n width: 48px;\r\n pointer-events: none; /* prevent padding from blocking input */\r\n & > * {\r\n /* all children should allow input */\r\n pointer-events: all;\r\n }\r\n`\r\nconst LayoutWrapper = styled.div`\r\n display: flex;\r\n position: relative;\r\n background: #f7f7f7;\r\n height: 100vh;\r\n font-family: ff-clan-web-pro, 'Helvetica Neue', Helvetica, sans-serif;\r\n`\r\nconst GalleryWrapper = styled.div`\r\n flex: 1 1 auto;\r\n width: calc(100% - 48px);\r\n`\r\n\r\nconst Layout = ({ children }) => {\r\n const dispatch = useDispatch()\r\n\r\n useEffect(() => {\r\n dispatch(controlLoading(false))\r\n dispatch(setUser(localStorage.getItem('user') ? JSON.parse(localStorage.getItem('user')) : {}))\r\n }, [])\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {children}\r\n \r\n \r\n )\r\n}\r\nexport default Layout\r\n","import styled from 'styled-components'\r\n\r\nconst HeaderWrapper = styled.div`\r\n border-bottom: 2px solid rgba(41, 50, 60, 1);\r\n height: 50px;\r\n`\r\n\r\nconst Header = () => (\r\n \r\n

Maps Gallery

\r\n
\r\n)\r\n\r\nexport default Header\r\n","import styled from 'styled-components'\r\nimport { mainDarkestBlue } from 'theme/colors'\r\n\r\nconst SectionHeaderH3 = styled.h3`\r\n font-size: 32px;\r\n font-weight: 500;\r\n color: ${mainDarkestBlue};\r\n`\r\n\r\nconst SectionHeader = ({ children }) => {children}\r\n\r\nexport default SectionHeader\r\n","import styled from 'styled-components'\r\nimport { greyBlue } from 'theme/colors'\r\n\r\nconst SectionSubHeaderH3 = styled.h3`\r\n font-size: 20px;\r\n font-weight: 300;\r\n margin-top: -4px;\r\n margin-bottom: 16px;\r\n color: ${greyBlue};\r\n`\r\n\r\nconst SectionSubHeader = ({ children }) => {children}\r\n\r\nexport default SectionSubHeader\r\n","import SectionHeader from 'pages/Gallery/components/Section/SectionHeader'\r\nimport SectionSubHeader from 'pages/Gallery/components/Section/SectionSubHeader'\r\nimport { Link } from 'react-router-dom'\r\nimport { UserIcon } from 'components/images'\r\nimport { mainDarkestBlue } from 'theme/colors'\r\n\r\nconst RecentlyAdded = ({ map }) => {\r\n return (\r\n
\r\n Recently Added\r\n The last added map in the app\r\n\r\n
\r\n
\r\n {\r\n // eslint-disable-next-line no-nested-ternary\r\n map.imageLoading ? (\r\n
\r\n map\r\n
\r\n ) : map.image !== null ? (\r\n `}\r\n data-html\r\n data-class='p-2'\r\n data-for='largeImage'\r\n src={map.image}\r\n alt='map'\r\n className='w-big_42 h-96 block mx-auto'\r\n />\r\n ) : (\r\n map\r\n )\r\n }\r\n
\r\n
\r\n
\r\n Map Title\r\n

\r\n \r\n {map?.title}\r\n \r\n

\r\n Databases \r\n \r\n {\r\n map?.datasets?.filter((dataset) => {\r\n return dataset.type === 'static'\r\n }).length\r\n }\r\n {` Static`}\r\n \r\n \r\n {\r\n map?.datasets?.filter((dataset) => {\r\n return dataset.type !== 'static'\r\n }).length\r\n }\r\n {` Dynamic`}\r\n \r\n

\r\n {!map.description ? No available description... : map.description}\r\n

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

\r\n \r\n \r\n {`${map.user?.first_name} ${map.user?.last_name}`}\r\n \r\n

\r\n
\r\n \r\n {new Date(map.created_at).toDateString()}\r\n \r\n
\r\n
\r\n \r\n {map.public === 'true' ? 'Public Map' : 'Private Map'}\r\n \r\n
\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default RecentlyAdded\r\n","/* eslint-disable no-shadow */\r\nimport { UserIcon, Share } from 'components/images'\r\nimport ShareUrlModal from 'components/Management/Sessions/Modals/shareUrlModal'\r\nimport { mainDarkestBlue } from 'theme/colors'\r\nimport { useState } from 'react'\r\n\r\nconst MapCard = ({ map }) => {\r\n const [shareUrlModal, setShareUrlModal] = useState(false)\r\n const [modalLoading, setModalLoading] = useState(true)\r\n\r\n const toggleModal = (selected = null) => {\r\n // need to close modal\r\n if (!selected) {\r\n setShareUrlModal(false)\r\n return\r\n }\r\n\r\n // need to open modal\r\n if (selected.data) {\r\n // open model with data\r\n // to do later\r\n } else {\r\n // open model without data\r\n setModalLoading(false)\r\n setShareUrlModal(!shareUrlModal)\r\n }\r\n }\r\n\r\n const RedirectToMaps = (code) => () => {\r\n window.open(`${window.location.origin}/map/${code}`)\r\n }\r\n\r\n return (\r\n
\r\n {shareUrlModal && (\r\n toggleModal() }}\r\n />\r\n )}\r\n
\r\n {\r\n // eslint-disable-next-line no-nested-ternary\r\n map.imageLoading ? (\r\n \r\n map\r\n
\r\n ) : map.image !== null ? (\r\n
\r\n `}\r\n data-html\r\n data-class='p-2'\r\n data-for='largeImage'\r\n src={map.image}\r\n alt='map'\r\n className='absolute inset-0 h-full w-full object-cover'\r\n />\r\n
\r\n ) : (\r\n \r\n map\r\n
\r\n )\r\n }\r\n\r\n
\r\n \r\n {map.public === 'true' ? 'Public Map' : 'Private Map'}\r\n \r\n \r\n {map.title}\r\n \r\n Databases \r\n \r\n {\r\n map.datasets.filter((dataset) => {\r\n return dataset.type === 'static'\r\n }).length\r\n }\r\n {` Static`}\r\n \r\n \r\n {\r\n map.datasets.filter((dataset) => {\r\n return dataset.type !== 'static'\r\n }).length\r\n }\r\n {` Dynamic`}\r\n \r\n

\r\n {!map.description ? No available description... : map.description}\r\n

\r\n
\r\n
\r\n
\r\n \r\n \r\n {`${map.user?.first_name} ${map.user?.last_name}`}\r\n \r\n
\r\n
\r\n {new Date(map.created_at).toDateString()}\r\n
\r\n toggleModal({ data: false })}\r\n >\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n )\r\n}\r\n\r\nexport default MapCard\r\n","import Input from 'components/Portions/Input'\r\nimport { CloseIcon, SearchIcon } from 'components/images'\r\nimport styled from 'styled-components'\r\n\r\nconst SearchWrapper = styled.div`\r\n max-width: 664px;\r\n display: flex;\r\n margin-block: 10px;\r\n`\r\n\r\nconst Search = ({ onSearchChange, search }) => {\r\n const showDeleteButton = search && search !== ''\r\n\r\n const clearSearch = () => {\r\n onSearchChange({ target: { value: '' } })\r\n }\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n \r\n {showDeleteButton && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n )\r\n}\r\n\r\nexport default Search\r\n","import Layout from 'pages/Gallery/Layout/Layout'\r\nimport Header from 'pages/Gallery/components/Header/Header'\r\nimport { sessionImage, sessionRecords } from 'services/session'\r\nimport Pagination from 'components/Portions/Pagination'\r\nimport { useState, useEffect, useCallback } from 'react'\r\nimport { setErrorHandler } from 'store/actions/errorsActions'\r\nimport Loading from 'components/Portions/Loading'\r\nimport { useDispatch } from 'react-redux'\r\nimport RecentlyAdded from 'pages/Gallery/components/RecentlyAdded/RecentlyAdded'\r\nimport SectionHeader from 'pages/Gallery/components/Section/SectionHeader'\r\nimport SectionSubHeader from 'pages/Gallery/components/Section/SectionSubHeader'\r\nimport MapCard from 'pages/Gallery/components/MapCard/MapCard'\r\nimport Search from 'pages/Gallery/components/Search/Search'\r\nimport styled from 'styled-components'\r\n\r\nimport debounce from 'lodash/debounce'\r\nimport isUndefined from 'lodash/isUndefined'\r\n\r\nconst GalleryWrapper = styled.div`\r\n width: 100%;\r\n height: calc(100vh - 50px);\r\n overflow: auto;\r\n`\r\nconst GalleryContainer = styled.div`\r\n padding: 20px;\r\n margin: 10px auto;\r\n max-width: 1400px;\r\n`\r\nconst Gallery = () => {\r\n const [items, setItems] = useState([])\r\n const [recentlyAdded, setRecentlyAdded] = useState({})\r\n const [page, setPage] = useState(1)\r\n const [pages, setPages] = useState(1)\r\n const [total, setTotal] = useState(0)\r\n const [count, setCount] = useState(30)\r\n const [loading, setLoading] = useState(false)\r\n const [search, setSearch] = useState(undefined)\r\n const dispatch = useDispatch()\r\n\r\n const getItems = useCallback(\r\n (inputSearch) => {\r\n setLoading(true)\r\n sessionRecords({\r\n page,\r\n limit: 16,\r\n search: isUndefined(inputSearch) ? search || '' : inputSearch,\r\n user: false /* true if we want to seen only user's maps */,\r\n })\r\n .then((respond) => {\r\n setLoading(false)\r\n setItems(\r\n respond.data.map((x, i) => {\r\n if (i === 0 && page === 1 && (isUndefined(inputSearch) || inputSearch === '')) {\r\n setRecentlyAdded({ ...x, imageLoading: true })\r\n }\r\n getImage(x.uuid)\r\n return { ...x, imageLoading: true }\r\n }),\r\n )\r\n // setItems(newItems)\r\n setTotal(respond.meta.total)\r\n setPages(Math.ceil(respond.meta.total / respond.meta.count))\r\n setCount(respond.meta.count)\r\n })\r\n .catch((error) => {\r\n setLoading(false)\r\n dispatch(setErrorHandler(error.response))\r\n })\r\n },\r\n [page, search],\r\n )\r\n\r\n const getImage = useCallback(\r\n (uuid, latestAddition = false) => {\r\n sessionImage(uuid)\r\n .then((respond) => {\r\n if (latestAddition) {\r\n setRecentlyAdded((prevState) => ({\r\n ...prevState,\r\n image: respond.data.image,\r\n imageLoading: false,\r\n }))\r\n return\r\n }\r\n setItems((prevItems) =>\r\n prevItems.map((x) => {\r\n if (x.uuid === uuid) {\r\n x.image = respond.data.image\r\n x.imageLoading = false\r\n }\r\n return x\r\n }),\r\n )\r\n })\r\n .catch((error) => {\r\n const newItems = items.map((x) => {\r\n if (x.uuid === uuid) {\r\n x.image = null\r\n x.imageLoading = false\r\n }\r\n return x\r\n })\r\n setItems(newItems)\r\n })\r\n },\r\n [items, page, search],\r\n )\r\n\r\n useEffect(() => {\r\n if (recentlyAdded?.imageLoading) {\r\n getImage(recentlyAdded?.uuid, true)\r\n }\r\n }, [recentlyAdded?.imageLoading])\r\n\r\n useEffect(() => {\r\n getItems()\r\n }, [page])\r\n\r\n const handlePageChage = (newPage) => {\r\n setPage(newPage)\r\n }\r\n\r\n const debounceHandleSearch = useCallback(debounce(getItems, 600), [])\r\n\r\n const handleSearchChange = (e) => {\r\n setSearch(e.target.value)\r\n debounceHandleSearch(e.target.value)\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 Map Gallery\r\n See the List of All Saved Maps\r\n \r\n \r\n
\r\n
\r\n {items.map((map) => (\r\n \r\n ))}\r\n {items.length === 0 && (\r\n
No Maps available!
\r\n )}\r\n
\r\n
\r\n
\r\n
\r\n {!loading && items?.length > 0 && (\r\n \r\n )}\r\n
\r\n
\r\n \r\n )\r\n}\r\n\r\nexport default Gallery\r\n","const newState = {\r\n applicationError: false,\r\n serverError: false,\r\n ForbiddenError: false,\r\n}\r\n\r\nexport const errorsReducer = (state = newState, action) => {\r\n switch (action.type) {\r\n case 'MESSAGE_HANDLER':\r\n switch (action.payload.messageType) {\r\n case 'SUCCESS':\r\n window.toast.success(action.payload.message)\r\n break\r\n case 'ERROR':\r\n window.toast.error(action.payload.message)\r\n break\r\n case 'WARN':\r\n window.toast.warn(action.payload.message)\r\n break\r\n case 'INFO':\r\n window.toast.info(action.payload.message)\r\n break\r\n default:\r\n break\r\n }\r\n break\r\n case 'ERROR_HANDLER':\r\n switch (action.payload?.status) {\r\n case 401:\r\n localStorage.clear()\r\n window.location = '/'\r\n break\r\n case 404:\r\n case 403:\r\n return { ...state, ForbiddenError: true }\r\n case 500:\r\n return { ...state, serverError: !state.serverError }\r\n case 400:\r\n switch (action.payload.data.errors.messageType) {\r\n case 'SUCCESS':\r\n window.toast.success(action.payload.data.message)\r\n break\r\n case 'ERROR':\r\n window.toast.error(action.payload.data.errors.message)\r\n break\r\n case 'WARN':\r\n window.toast.warn(action.payload.data.errors.message)\r\n break\r\n case 'INFO':\r\n window.toast.info(action.payload.data.errors.message)\r\n break\r\n default:\r\n break\r\n }\r\n break\r\n case null:\r\n return { ...state, serverError: false }\r\n default:\r\n break\r\n }\r\n break\r\n default:\r\n return state\r\n }\r\n return state\r\n}\r\n","const newState = {\r\n user: {},\r\n publicUser: true,\r\n}\r\n\r\nexport const userReducer = (state = newState, action) => {\r\n switch (action.type) {\r\n case 'SET_USER':\r\n return { ...state, user: action.payload }\r\n case 'SET_PUBLIC_USER':\r\n return { ...state, publicUser: action.payload }\r\n\r\n default:\r\n return state\r\n }\r\n}\r\n","const initialState = {\r\n mapRef: null,\r\n code: null,\r\n datasets: {},\r\n functions: {},\r\n resetMap: () => {},\r\n session: { public: 'false' },\r\n sideBar: false,\r\n applicationLoading: true,\r\n toggleModal: () => {},\r\n polygons: [],\r\n databases: [],\r\n}\r\nexport const viewReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case 'MAP_REF':\r\n return { ...state, mapRef: state.mapRef === null ? action.payload : state.mapRef }\r\n case 'SET_TOGGLE_MODAL':\r\n return { ...state, toggleModal: action.payload }\r\n case 'SET_DATABASES':\r\n return { ...state, databases: action.payload }\r\n case 'MAP_CODE':\r\n return { ...state, code: action.payload }\r\n case 'ADD_DATASET':\r\n return { ...state, datasets: { ...state.datasets, ...action.payload } }\r\n case 'ADD_FUNCTION':\r\n return { ...state, functions: { ...state.functions, ...action.payload } }\r\n case 'UPDATE_FUNCTION':\r\n state.functions[action.payload.uuid] = action.payload.value\r\n return { ...state, functions: { ...state.functions } }\r\n case 'DELETE_FUNCTION':\r\n delete state.functions[action.payload]\r\n return { ...state, functions: { ...state.functions } }\r\n case 'DELETE_ALL_FUNCTION':\r\n return { ...state, functions: [] }\r\n case 'UPDATE_DATASET':\r\n state.datasets[action.payload.uuid][action.payload.key] = action.payload.value\r\n return { ...state, datasets: { ...state.datasets } }\r\n case 'CLEAR_DATASET':\r\n return { ...state, datasets: [] }\r\n case 'SET_RESET_MAP':\r\n return { ...state, resetMap: action.payload }\r\n case 'SET_SESSION':\r\n return { ...state, session: action.payload }\r\n case 'CLEAR_SESSION':\r\n return { ...state, session: { public: 'false' } }\r\n case 'CONTROL_SIDEBAR':\r\n return { ...state, sideBar: action.payload }\r\n case 'CONTROL_LOADING':\r\n return { ...state, applicationLoading: action.payload }\r\n default:\r\n return state\r\n }\r\n}\r\n","import { combineReducers } from 'redux'\r\nimport { errorsReducer } from 'store/reducers/appReducer/errorsReducer'\r\nimport { userReducer } from 'store/reducers/appReducer/userReducer'\r\nimport { viewReducer } from 'store/reducers/appReducer/viewReducer'\r\n\r\nconst AppReducer = combineReducers({\r\n errors: errorsReducer,\r\n view: viewReducer,\r\n user: userReducer,\r\n})\r\n\r\nexport default AppReducer\r\n","/* eslint-disable no-underscore-dangle */\r\nimport booleanPointInPolygon from '@turf/boolean-point-in-polygon'\r\nimport { point } from '@turf/helpers'\r\nimport cloneDeep from 'lodash/cloneDeep'\r\nimport moment from 'moment'\r\n\r\nconst restoreDatasets = (state, action) => ({\r\n ...state,\r\n MapLab: {\r\n ...state.MapLab,\r\n visState: {\r\n ...state.MapLab.visState,\r\n datasets: {\r\n ...state.MapLab.visState.datasets,\r\n ...state.MapLab.visState.hiddenDatasets,\r\n },\r\n hiddenDatasets: {},\r\n },\r\n },\r\n})\r\n\r\nconst filterByPolygon = (state, action) => {\r\n const { MapLab } = state // eslint-disable-line\r\n const { datasets } = MapLab.visState\r\n const newDatasets = {}\r\n // if no dataset is loaded or no polygon is selected, reset the filteredByPolygon to null\r\n if (datasets && Object.keys(datasets).length === 0 && datasets.constructor === Object) return state\r\n\r\n // get the first dataset\r\n const datasetIds = Object.keys(datasets)\r\n datasetIds.forEach((datasetId) => {\r\n const dataset = datasets[datasetId]\r\n const polygonFilter = action.polygon\r\n const otherFilters = MapLab.visState.filters.filter((f) => f.type !== 'polygon' && f.dataId.indexOf(datasetId) > -1)\r\n if (polygonFilter === null) return state\r\n\r\n const pair = dataset.fieldPairs[0]\r\n if (!pair) return state\r\n const lonIndex = pair.pair.lng.fieldIdx\r\n const latIndex = pair.pair.lat.fieldIdx\r\n let result = dataset.dataContainer._rows.filter(\r\n (row) =>\r\n row[lonIndex] && row[latIndex] && booleanPointInPolygon(point([row[lonIndex], row[latIndex]]), polygonFilter),\r\n )\r\n otherFilters.forEach((filter) => {\r\n switch (filter.type) {\r\n case 'range':\r\n result = result.filter(\r\n (row) => filter.value[0] <= row[filter.fieldIdx[0]] && filter.value[1] >= row[filter.fieldIdx[0]],\r\n )\r\n break\r\n case 'timeRange':\r\n {\r\n const parser = typeof result[0][filter.fieldIdx[0]] === 'string' ? (x) => moment(x).unix() * 1000 : (x) => x\r\n result = result.filter(\r\n (row) =>\r\n filter.value[0] <= parser(row[filter.fieldIdx[0]]) &&\r\n filter.value[1] >= parser(row[filter.fieldIdx[0]]),\r\n )\r\n }\r\n break\r\n case 'multiSelect':\r\n result = result.filter((row) => filter.value.indexOf(row[filter.fieldIdx[0]]) > -1)\r\n break\r\n case 'select':\r\n result = result.filter((row) => filter.value === row[filter.fieldIdx[0]])\r\n break\r\n default:\r\n result = result.filter(\r\n (row) => filter.value[0] <= row[filter.fieldIdx[0]] && filter.value[1] >= row[filter.fieldIdx[0]],\r\n )\r\n break\r\n }\r\n })\r\n\r\n const indexes = [...Array(result.length).keys()]\r\n const datasetInnerId = `${dataset.id}`\r\n const datasetInnerLabel = `${dataset.label}`\r\n\r\n newDatasets[datasetInnerId] = Object.assign(cloneDeep(dataset), {\r\n ...dataset,\r\n id: datasetInnerId,\r\n label: datasetInnerLabel,\r\n metadata: {\r\n ...dataset.metadata,\r\n id: datasetInnerId,\r\n label: datasetInnerLabel,\r\n },\r\n dataContainer: Object.assign(cloneDeep(dataset.dataContainer), { ...dataset.dataContainer, _rows: result }),\r\n allIndexes: indexes,\r\n filteredIndex: indexes,\r\n filteredIndexForDomain: indexes,\r\n isFilteredByPolygon: true,\r\n })\r\n return 0\r\n })\r\n // To display the points inside the polygon as a kepler dataset spread operator was enough\r\n // but filtering was not functional, as it requires the function filterTable() which is not copied using the spread operator\r\n // So i needed to deepcopy the dataset to copy the functions.\r\n return {\r\n ...state,\r\n MapLab: {\r\n ...state.MapLab,\r\n visState: {\r\n ...state.MapLab.visState,\r\n datasets: {\r\n ...state.MapLab.visState.datasets,\r\n ...newDatasets,\r\n },\r\n hiddenDatasets: { ...datasets },\r\n },\r\n },\r\n }\r\n}\r\n\r\nfunction filterByPolygonReducer(state, action) {\r\n switch (action.type) {\r\n case 'FILTER_BY_POLYGON':\r\n return filterByPolygon(state, action)\r\n case '@@kepler.gl/TOGGLE_MODAL':\r\n return restoreDatasets(state, action)\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nexport default filterByPolygonReducer\r\n","import { SETTINGS } from 'constants/default-settings'\r\nimport { EXPORT_MAP_FORMATS } from 'kepler.gl/constants'\r\nimport keplerGlReducer, { uiStateUpdaters } from 'kepler.gl/reducers'\r\n\r\nconst { DEFAULT_EXPORT_MAP } = uiStateUpdaters\r\n\r\nconst KeplerReducer = keplerGlReducer\r\n .initialState({\r\n // In order to provide single file export functionality\r\n // we are going to set the mapbox access token to be used\r\n // in the exported file\r\n uiState: {\r\n readOnly: false,\r\n activeSidePanel: 'layer',\r\n // locale: LOCALE_CODES.fr,\r\n mapControls: {\r\n visibleLayers: {\r\n show: true,\r\n active: false,\r\n },\r\n toggle3d: {\r\n show: true,\r\n active: false,\r\n },\r\n splitMap: {\r\n show: true,\r\n },\r\n mapLegend: {\r\n show: true,\r\n active: false,\r\n },\r\n mapDraw: {\r\n show: true,\r\n active: false,\r\n },\r\n mapLocale: {\r\n show: true,\r\n active: false,\r\n },\r\n showSavedMap: {\r\n show: true,\r\n active: false,\r\n },\r\n },\r\n currentModal: null,\r\n exportMap: {\r\n ...DEFAULT_EXPORT_MAP,\r\n [EXPORT_MAP_FORMATS.HTML]: {\r\n ...DEFAULT_EXPORT_MAP[[EXPORT_MAP_FORMATS.HTML]],\r\n exportMapboxAccessToken: SETTINGS.MAPBOX_TOKEN,\r\n },\r\n },\r\n },\r\n visState: {\r\n // interactionConfig: {\r\n // tooltip: {\r\n // id: 'tooltip',\r\n // label: 'interactions.tooltip',\r\n // enabled: true,\r\n // config: {\r\n // fieldsToShow: {},\r\n // compareMode: false,\r\n // compareType: 'absolute',\r\n // },\r\n // },\r\n // brush: { id: 'brush', label: 'interactions.brush', enabled: true, config: { size: 0.5 } },\r\n // coordinate: { id: 'coordinate', label: 'interactions.coordinate', enabled: true, position: null },\r\n // geocoder: { id: 'geocoder', label: 'interactions.geocoder', enabled: true, position: null },\r\n // },\r\n loaders: [], // Add additional loaders.gl loaders here\r\n loadOptions: {}, // Add additional loaders.gl loader options here\r\n },\r\n mapState: {\r\n zoom: 2,\r\n latitude: 48.9996,\r\n longitude: 4.7363,\r\n },\r\n mapStyle: {\r\n styleType: 'maplab-default-map',\r\n topLayerGroups: { label: true },\r\n visibleLayerGroups: {\r\n '3d building': true,\r\n label: true,\r\n road: true,\r\n border: true,\r\n building: true,\r\n water: true,\r\n land: true,\r\n },\r\n },\r\n })\r\n .plugin({\r\n HIDE_AND_SHOW_SIDE_PANEL: (state, action) => ({\r\n ...state,\r\n uiState: {\r\n ...state.uiState,\r\n readOnly: action.payload,\r\n },\r\n // mapStyle: {\r\n // ...state.mapStyle,\r\n // styleType: 'dark',\r\n // },\r\n }),\r\n })\r\n\r\nexport default KeplerReducer\r\n","/* eslint-disable no-underscore-dangle */\r\n// eslint-disable-next-line no-unused-vars\r\nimport window from 'global/window'\r\nimport { enhanceReduxMiddleware } from 'kepler.gl/middleware'\r\nimport { browserHistory } from 'react-router'\r\n// import { taskMiddleware } from 'react-palm/tasks'\r\n// import thunkMiddleware from 'redux-thunk'\r\nimport { routerMiddleware, routerReducer } from 'react-router-redux'\r\nimport reduceReducers from 'reduce-reducers'\r\nimport { applyMiddleware, combineReducers, compose, createStore } from 'redux'\r\nimport thunk from 'redux-thunk'\r\nimport AppReducer from 'store/reducers/appReducer/appReducer'\r\nimport filterByPolygonReducer from 'store/reducers/appReducer/filterByPolygonReducer'\r\nimport KeplerReducer from 'store/reducers/keplerReducer/keplerReducer'\r\n\r\nconst chainedKeplerReducer = reduceReducers([], KeplerReducer, filterByPolygonReducer)\r\n\r\nconst reducers = combineReducers({\r\n keplerGl: chainedKeplerReducer,\r\n routing: routerReducer,\r\n app: AppReducer,\r\n})\r\n\r\n// const middlewares = [taskMiddleware, thunkMiddleware]\r\nexport const middlewares = enhanceReduxMiddleware([thunk, routerMiddleware(browserHistory)])\r\n\r\nexport const enhancers = [applyMiddleware(...middlewares)]\r\n\r\nconst initialState = {}\r\n\r\n// eslint-disable-next-line prefer-const\r\nlet composeEnhancers = compose\r\n\r\n/**\r\n * comment out code below to enable Redux Devtools\r\n */\r\nif (window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__) {\r\n composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({\r\n actionsBlacklist: ['@@kepler.gl/MOUSE_MOVE', '@@kepler.gl/UPDATE_MAP', '@@kepler.gl/LAYER_HOVER'],\r\n })\r\n}\r\n\r\nexport default createStore(reducers, initialState, composeEnhancers(...enhancers))\r\n","// Copyright (c) 2021 Uber Technologies, Inc.\r\n//\r\n// Permission is hereby granted, free of charge, to any person obtaining a copy\r\n// of this software and associated documentation files (the \"Software\"), to deal\r\n// in the Software without restriction, including without limitation the rights\r\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n// copies of the Software, and to permit persons to whom the Software is\r\n// furnished to do so, subject to the following conditions:\r\n//\r\n// The above copyright notice and this permission notice shall be included in\r\n// all copies or substantial portions of the Software.\r\n//\r\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n// THE SOFTWARE.\r\n\r\nimport { history } from 'api/helpers/history'\r\nimport App from 'app'\r\nimport Login from 'components/Auth/Login'\r\nimport ApplicationError from 'components/Utilities/ApplicationError'\r\nimport ApplicationLoading from 'components/Utilities/ApplicationLoading'\r\nimport ForbiddenError from 'components/Utilities/ForbiddenError'\r\nimport ServerError from 'components/Utilities/ServerError'\r\nimport Gallery from 'pages/Gallery/Gallery'\r\nimport document from 'global/document'\r\nimport 'react-awesome-query-builder/lib/css/compact_styles.css'\r\nimport 'react-awesome-query-builder/lib/css/styles.css'\r\nimport { render } from 'react-dom'\r\nimport 'react-rangeslider/lib/index.css'\r\nimport { Provider } from 'react-redux'\r\nimport { Redirect, Route, Router, Switch } from 'react-router-dom'\r\nimport { toast, ToastContainer } from 'react-toastify'\r\nimport store from 'store/index'\r\nimport 'styles/plugins/ReactToastify.css'\r\n// eslint-disable-next-line absolute-import/no-relative-path\r\nimport './styles/app.css'\r\n// eslint-disable-next-line absolute-import/no-relative-path\r\nimport './styles/tailwind.css'\r\n\r\n// const AsyncLoginPage = loadable(() => import('components/LoginPage/LoginPage'))\r\n\r\nwindow.toast = toast\r\nconst Root = () => (\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n)\r\n\r\nrender(, document.getElementById('root'))\r\n","// Copyright (c) 2021 Uber Technologies, Inc.\r\n//\r\n// Permission is hereby granted, free of charge, to any person obtaining a copy\r\n// of this software and associated documentation files (the \"Software\"), to deal\r\n// in the Software without restriction, including without limitation the rights\r\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n// copies of the Software, and to permit persons to whom the Software is\r\n// furnished to do so, subject to the following conditions:\r\n//\r\n// The above copyright notice and this permission notice shall be included in\r\n// all copies or substantial portions of the Software.\r\n//\r\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n// THE SOFTWARE.\r\n\r\n// eslint-disable-next-line absolute-import/no-relative-path\r\nimport { LOCALES } from './locales'\r\n\r\nexport default {\r\n property: {\r\n weight: 'pes',\r\n label: 'etiqueta',\r\n fillColor: 'color fons',\r\n color: 'color',\r\n coverage: 'cobertura',\r\n strokeColor: 'color de traç',\r\n radius: 'radi',\r\n outline: 'outline',\r\n stroke: 'traç',\r\n density: 'densitat',\r\n height: 'alçada',\r\n sum: 'suma',\r\n pointCount: 'Recompte de Punts',\r\n },\r\n placeholder: {\r\n search: 'Cerca',\r\n selectField: 'Selecciona un camp',\r\n yAxis: 'Eix Y',\r\n selectType: 'Selecciona un Tipus',\r\n selectValue: 'Selecciona un Valor',\r\n enterValue: 'Entra un valor',\r\n empty: 'buit',\r\n },\r\n misc: {\r\n by: '',\r\n valuesIn: 'Valors a',\r\n valueEquals: 'Valor igual a',\r\n dataSource: 'Font de dades',\r\n brushRadius: 'Radi del pinzell (km)',\r\n empty: ' ',\r\n },\r\n mapLayers: {\r\n title: 'Capes del mapa',\r\n label: 'Etiqueta',\r\n road: 'Carretera',\r\n border: 'Frontera',\r\n building: 'Edifici',\r\n water: 'Aigua',\r\n land: 'Terra',\r\n '3dBuilding': 'Edifici 3D',\r\n },\r\n panel: {\r\n text: {\r\n label: 'etiqueta',\r\n labelWithId: 'Etiqueta {labelId}',\r\n fontSize: 'Mida de la font',\r\n fontColor: 'Color de la font',\r\n textAnchor: 'Àncora del text',\r\n alignment: 'Alineació',\r\n addMoreLabel: 'Afegeix més etiquetes',\r\n },\r\n },\r\n sidebar: {\r\n panels: {\r\n layer: 'Capes',\r\n filter: 'Filtres',\r\n interaction: 'Interaccions',\r\n basemap: 'Mapa base',\r\n },\r\n },\r\n layer: {\r\n required: 'Requerit*',\r\n radius: 'Radi',\r\n color: 'Color',\r\n fillColor: 'Color fons',\r\n outline: 'Contorn',\r\n weight: 'Gruix',\r\n propertyBasedOn: '{property} basada en',\r\n coverage: 'Cobertura',\r\n stroke: 'Traç',\r\n strokeWidth: 'Amplada de traç',\r\n strokeColor: 'Color de traç',\r\n basic: 'Basic',\r\n trailLength: 'Longitud de pista',\r\n trailLengthDescription: 'Nombre de segons fins que desapareix el camí',\r\n newLayer: 'nova capa',\r\n elevationByDescription: \"Si desactivat, l'alçada es basa en el recompte de punts\",\r\n colorByDescription: 'Si desactivat, el color es basa en el recompte de punts',\r\n aggregateBy: '{field} agregat per',\r\n '3DModel': 'Model 3D',\r\n '3DModelOptions': 'Opcions del model 3D',\r\n type: {\r\n point: 'punt',\r\n arc: 'arc',\r\n line: 'línia',\r\n grid: 'malla',\r\n hexbin: 'hexbin',\r\n polygon: 'polígon',\r\n geojson: 'geojson',\r\n cluster: 'cluster',\r\n icon: 'icona',\r\n heatmap: 'heatmap',\r\n hexagon: 'hexàgon',\r\n hexagonid: 'H3',\r\n trip: 'viatge',\r\n s2: 'S2',\r\n '3d': '3D',\r\n },\r\n },\r\n layerVisConfigs: {\r\n angle: 'Angle',\r\n strokeWidth: 'Amplada traç',\r\n strokeWidthRange: 'Rang amplada de traç',\r\n radius: 'Radi',\r\n fixedRadius: 'Radi fixe a mesurar',\r\n fixedRadiusDescription: 'Ajusta el radi al radi absolut en metres, p.ex 5 a 5 metres',\r\n radiusRange: 'Rang de radi',\r\n clusterRadius: 'Radi Cluster en Pixels',\r\n radiusRangePixels: 'Rang del radi en pixels',\r\n opacity: 'Opacitat',\r\n coverage: 'Cobertura',\r\n outline: 'Outline',\r\n colorRange: 'Rang de color',\r\n stroke: 'Traç',\r\n strokeColor: 'Color de traç',\r\n strokeColorRange: 'Rang de color de traç',\r\n targetColor: 'Color destí',\r\n colorAggregation: 'Agregació de color',\r\n heightAggregation: 'Agregació alçada',\r\n resolutionRange: 'Rang de resolució',\r\n sizeScale: 'Mida escala',\r\n worldUnitSize: 'Mida de la unitat mundial',\r\n elevationScale: 'Escala elevació',\r\n enableElevationZoomFactor: 'Utilitzeu el factor de zoom d’elevació',\r\n enableElevationZoomFactorDescription: \"'Ajusteu l'alçada / elevació en funció del factor de zoom actual\",\r\n enableHeightZoomFactor: 'Utilitzeu el factor de zoom d’alçada',\r\n heightScale: 'Escala alçada',\r\n coverageRange: 'Rang ed cobertura',\r\n highPrecisionRendering: 'Representació alta precisió',\r\n highPrecisionRenderingDescription: 'La precisió alta tindrà rendiment més baix',\r\n height: 'Alçada',\r\n heightDescription: 'Fes clic al botó a dalt a la dreta del mapa per canviar a vista 3D',\r\n fill: 'Omple',\r\n enablePolygonHeight: 'Activa alçada del polígon',\r\n showWireframe: 'Mostra Wireframe',\r\n weightIntensity: 'Intensitat de pes',\r\n zoomScale: 'Escala de zoom',\r\n heightRange: 'Rang alçada',\r\n heightMultiplier: \"Multiplicador d'alçada\",\r\n },\r\n layerManager: {\r\n addData: 'Afegeix Dades',\r\n addLayer: 'Afegeix Capes',\r\n layerBlending: 'Combinar capes',\r\n },\r\n mapManager: {\r\n mapStyle: 'Estil de mapa',\r\n addMapStyle: 'Afegeix estils de mapa',\r\n '3dBuildingColor': 'Color edifici 3D',\r\n },\r\n layerConfiguration: {\r\n defaultDescription: 'Calcula {property} segons el camp seleccionat',\r\n howTo: 'How to',\r\n },\r\n filterManager: {\r\n addFilter: 'Afegeix Filtre',\r\n },\r\n datasetTitle: {\r\n showDataTable: 'Mostra taula de dades',\r\n removeDataset: 'Elimina conjunt de dades',\r\n },\r\n datasetInfo: {\r\n rowCount: '{rowCount} files',\r\n },\r\n tooltip: {\r\n hideLayer: 'oculta la capa',\r\n showLayer: 'mostra la capa',\r\n hideFeature: \"Amaga l'objecte\",\r\n showFeature: \"Mostra l'objecte\",\r\n hide: 'amaga',\r\n show: 'mostra',\r\n removeLayer: 'Elimina capa',\r\n layerSettings: 'Configuració de capa',\r\n closePanel: 'Tanca panel actual',\r\n switchToDualView: 'Canvia a la vista de mapa dual',\r\n showLegend: 'mostra llegenda',\r\n disable3DMap: 'Desactiva mapa 3D',\r\n DrawOnMap: 'Dibuixa al mapa',\r\n selectLocale: 'Selecciona configuració regional',\r\n hideLayerPanel: 'Oculta el tauler de capes',\r\n showLayerPanel: 'Mostra el tauler de capes',\r\n moveToTop: 'Desplaça a dalt de tot de les capes de dades',\r\n selectBaseMapStyle: 'Selecciona estil de mapa base',\r\n delete: 'Esborra',\r\n timePlayback: 'Reproducció de temps',\r\n cloudStorage: 'Emmagatzematge al núvol',\r\n '3DMap': 'Mapa 3D',\r\n animationByWindow: 'Finestra Temporal Mòbil',\r\n animationByIncremental: 'Finestra Temporal Incremental',\r\n speed: 'velocitat',\r\n play: 'iniciar',\r\n pause: 'pausar',\r\n reset: 'reiniciar',\r\n },\r\n toolbar: {\r\n exportImage: 'Exporta imatge',\r\n exportData: 'Exporta dades',\r\n exportMap: 'Exporta mapa',\r\n shareMapURL: 'Comparteix URL del mapa',\r\n saveMap: 'Desa mapa',\r\n select: 'selecciona',\r\n polygon: 'polígon',\r\n rectangle: 'rectangle',\r\n hide: 'amaga',\r\n show: 'mostra',\r\n ...LOCALES,\r\n },\r\n modal: {\r\n title: {\r\n deleteDataset: 'Esborra conjunt de dades',\r\n addDataToMap: 'Afegeix dades al mapa',\r\n exportImage: 'Exporta imatge',\r\n exportData: 'Exporta dades',\r\n exportMap: 'Exporta mapa',\r\n addCustomMapboxStyle: 'Afegeix estil Mapbox propi',\r\n saveMap: 'Desa mapa',\r\n shareURL: 'Comparteix URL',\r\n },\r\n button: {\r\n delete: 'Esborra',\r\n download: 'Descarrega',\r\n export: 'Exporta',\r\n addStyle: 'Afegeix estil',\r\n save: 'Desa',\r\n defaultCancel: 'Cancel·la',\r\n defaultConfirm: 'Confirma',\r\n },\r\n exportImage: {\r\n ratioTitle: 'Ràtio',\r\n ratioDescription: 'Escull ràtio per diversos usos.',\r\n ratioOriginalScreen: 'Pantalla original',\r\n ratioCustom: 'Personalitzat',\r\n ratio4_3: '4:3',\r\n ratio16_9: '16:9',\r\n resolutionTitle: 'Resolució',\r\n resolutionDescription: 'Alta resolució és millor per a les impressions.',\r\n mapLegendTitle: 'Llegenda del mapa',\r\n mapLegendAdd: 'Afegir llegenda al mapa',\r\n },\r\n exportData: {\r\n datasetTitle: 'Conjunt de dades',\r\n datasetSubtitle: 'Escull els conjunts de dades que vols exportar',\r\n allDatasets: 'Tots',\r\n dataTypeTitle: 'Tipus de dades',\r\n dataTypeSubtitle: 'Escull els tipus de dades que vols exportar',\r\n filterDataTitle: 'Filtra dades',\r\n filterDataSubtitle: 'Pots escollir exportar les dades originals o les filtrades',\r\n filteredData: 'Dades filtrades',\r\n unfilteredData: 'Dades sense filtrar',\r\n fileCount: '{fileCount} Arxius',\r\n rowCount: '{rowCount} Files',\r\n },\r\n deleteData: {\r\n warning: \"estàs a punt d'esborrar aquest conjunt de dades. Afectarà {length} capes\",\r\n },\r\n addStyle: {\r\n publishTitle: \"2. Publica el teu estil a Mapbox o proporciona el token d'accés\",\r\n publishSubtitle1: 'Pots crear el teu propi estil de mapa a',\r\n publishSubtitle2: 'i',\r\n publishSubtitle3: 'publicar',\r\n publishSubtitle4: 'ho.',\r\n publishSubtitle5: 'Per utilitzar un estil privat, enganxa el teu',\r\n publishSubtitle6: \"token d'accés\",\r\n publishSubtitle7: 'aquí. *MapLab.world és una aplicació client, les dades romanen al teu navegador..',\r\n exampleToken: 'p.ex. pk.abcdefg.xxxxxx',\r\n pasteTitle: \"1. Enganxa la URL de l'estil\",\r\n pasteSubtitle1: 'Què és un',\r\n pasteSubtitle2: \"URL de l'estil\",\r\n namingTitle: '3. Posa nom al teu estil',\r\n },\r\n shareMap: {\r\n shareUriTitle: 'Comparteix URL del mapa',\r\n shareUriSubtitle: 'Genera una URL del mapa per compartir amb altri',\r\n cloudTitle: 'Emmagatzematge al núvol',\r\n cloudSubtitle: 'Accedeix i carrega dades de mapa al teu emmagatzematge al núvol personal',\r\n shareDisclaimer:\r\n 'MapLab.world desarà les dades del mapa al teu emmagatzematge al núvol personal, només qui tingui la URL podrà accedir al mapa i a les dades . ' +\r\n \"Pots editar/esborrar l'arxiu de dades en el teu compte al núvol en qualsevol moment.\",\r\n gotoPage: 'Ves a la pàgina de {currentProvider} de MapLab.world',\r\n },\r\n statusPanel: {\r\n mapUploading: 'Carregar un mapa',\r\n error: 'Error',\r\n },\r\n saveMap: {\r\n title: 'Emmagatzematge al núvol',\r\n subtitle: 'Accedeix per desar el mapa al teu emmagatzematge al núvol',\r\n },\r\n exportMap: {\r\n formatTitle: 'Format de mapa',\r\n formatSubtitle: 'Escull el format amb què vols exportar el teu mapa',\r\n html: {\r\n selection: 'Exporta el teu mapa com un arxiu HTML interactiu.',\r\n tokenTitle: \"Token d'accés de Mapbox\",\r\n tokenSubtitle: \"Utilitza el teu token d'accés de Mapbox a l'arxiu HTML (opcional)\",\r\n tokenPlaceholder: \"Enganxa el teu token d'accés a Mapbox\",\r\n tokenMisuseWarning:\r\n '* Si no proporciones el teu propi token, el mapa podria fallar en qualsevol moment quan reemplacem el nostre token per evitar abusos. ',\r\n tokenDisclaimer: 'Pots canviar el toke de Mapbox més endavant fent servir aquestes instruccions: ',\r\n tokenUpdate: 'Com actualitzar un token preexistent.',\r\n modeTitle: 'Mode mapa',\r\n modeSubtitle1: 'Selecciona mode app. Més ',\r\n modeSubtitle2: 'informació',\r\n modeDescription: 'Permet als usuaris {mode} el mapa',\r\n read: 'llegir',\r\n edit: 'editar',\r\n },\r\n json: {\r\n configTitle: 'Configuració del mapa',\r\n configDisclaimer:\r\n \"La configuració del mapa s'inclourà a l'arxiu Json. Si utilitzes MapLab.world a la teva pròpia app pots copiar aquesta configuració i passar-la a \",\r\n selection:\r\n 'Exporta les dades del mapa i la configuració en un sol arxiu Json. Més endavant pots obrir aquest mateix mapa carregant aquest mateix arxiu a MapLab.world.',\r\n disclaimer:\r\n \"* La configuració del mapa es combina amb els conjunts de dades carregats. ‘dataId’ s'utilitza per lligar capes, filtres i suggeriments a un conjunt de dades específic. \" +\r\n \"Quan passis aquesta configuració a addDataToMap, assegura que l'identificador del conjunt de dades coincideixi amb els ‘dataId’ d'aquesta configuració.\",\r\n },\r\n },\r\n loadingDialog: {\r\n loading: 'Carregant...',\r\n },\r\n loadData: {\r\n upload: 'Carregar arxius',\r\n storage: \"Carregar des d'emmagatzematge\",\r\n },\r\n tripInfo: {\r\n title: 'Com habilitar l’animació de viatge',\r\n description1:\r\n 'Per animar la ruta, les dades geoJSON han de contenir `LineString` en la seva geometria i les coordenades de LineString han de tenir 4 elements en els formats de ',\r\n code: ' [longitude, latitude, altitude, timestamp] ',\r\n description2:\r\n 'i el darrer element ha de ser la marca de temps. Els formats vàlids per a la marca de temps inclouen Unix en segons com `1564184363` o en milisegons com `1564184363000`.',\r\n example: 'Exemple:',\r\n },\r\n iconInfo: {\r\n title: 'Com dibuixar icones',\r\n description1:\r\n \"En el teu CSV crea una columna i posa-hi el nom de la icona que vols dibuixar. Pots deixar la cel·la buida quan no vulguis que es mostri per a certs punts. Quan la columna s'anomena\",\r\n code: 'icon',\r\n description2: \" MapLab.world automàticament crearà una capa d'icona.\",\r\n example: 'Exemple:',\r\n icons: 'Icones',\r\n },\r\n storageMapViewer: {\r\n lastModified: 'Darrera modificació fa {lastUpdated}',\r\n back: 'Enrere',\r\n },\r\n overwriteMap: {\r\n title: 'Desant mapa...',\r\n alreadyExists: 'ja existeix a {mapSaved}. El vols sobreescriure?',\r\n },\r\n loadStorageMap: {\r\n back: 'Enrere',\r\n goToPage: 'Ves a la pàgina {displayName} de MapLab.world',\r\n storageMaps: 'Emmagatzematge / Mapes',\r\n noSavedMaps: 'Cap mapa desat encara',\r\n },\r\n },\r\n header: {\r\n visibleLayers: 'Capes visibles',\r\n layerLegend: 'Llegenda de capes',\r\n },\r\n interactions: {\r\n tooltip: 'Suggeriment',\r\n brush: 'Pinzell',\r\n coordinate: 'Coordenades',\r\n geocoder: 'Geocodificador',\r\n },\r\n layerBlending: {\r\n title: 'Combinació de capes',\r\n additive: 'additiva',\r\n normal: 'normal',\r\n subtractive: 'substractiva',\r\n },\r\n columns: {\r\n title: 'Columnes',\r\n lat: 'lat',\r\n lng: 'lon',\r\n altitude: 'alçada',\r\n icon: 'icona',\r\n geojson: 'geojson',\r\n arc: {\r\n lat0: 'lat origen',\r\n lng0: 'lng origen ',\r\n lat1: 'lat destinació',\r\n lng1: 'lng destinació',\r\n },\r\n line: {\r\n alt0: 'alçada origen',\r\n alt1: 'alçada destinació',\r\n },\r\n grid: {\r\n worldUnitSize: 'Mida de malla (km)',\r\n },\r\n hexagon: {\r\n worldUnitSize: \"Radi d'hexàgon (km)\",\r\n },\r\n hex_id: 'id hex',\r\n },\r\n color: {\r\n customPalette: 'Paleta personalitzada',\r\n steps: 'intervals',\r\n type: 'tipus',\r\n reversed: 'invertida',\r\n },\r\n scale: {\r\n colorScale: 'Escala de color',\r\n sizeScale: 'Escala de mides',\r\n strokeScale: 'Escala de traç',\r\n scale: 'Escala',\r\n },\r\n fileUploader: {\r\n message: \"Arrossega i deixa anar l'arxiu aquí\",\r\n chromeMessage: '*usuari de Chrome: la mida màxima són 250mb, si has de carrgar un arxiu més gran fes servir Safari',\r\n disclaimer:\r\n '*MapLab.world és una aplicació a la banda client que no es recolza en cap servidor. Les dades només existeixen a la teva màquina/navegador. ' +\r\n \"No s'envien dades ni mapes a cap servidor.\",\r\n configUploadMessage:\r\n 'Carrega {fileFormatNames} o un mapa desat en **Json**. Més informació sobre [**supported file formats**]',\r\n browseFiles: 'navega pels teus arxius',\r\n uploading: 'Carregant',\r\n fileNotSupported: \"L'arxiu {errorFiles} no és compatible.\",\r\n or: 'o',\r\n },\r\n geocoder: {\r\n title: 'Introdueix una adreça',\r\n },\r\n fieldSelector: {\r\n clearAll: 'Treure tots',\r\n formatting: 'Format',\r\n },\r\n compare: {\r\n modeLabel: 'Mode Comparació',\r\n typeLabel: 'Tipus de Comparació',\r\n types: {\r\n absolute: 'Absoluta',\r\n relative: 'Relativa',\r\n },\r\n },\r\n mapPopover: {\r\n primary: 'Principal',\r\n },\r\n density: 'densitat',\r\n 'Bug Report': \"Informe d'errors\",\r\n 'User Guide': \"Guia d'usuari\",\r\n Save: 'Desa',\r\n Share: 'Comparteix',\r\n}\r\n","// Copyright (c) 2021 Uber Technologies, Inc.\r\n//\r\n// Permission is hereby granted, free of charge, to any person obtaining a copy\r\n// of this software and associated documentation files (the \"Software\"), to deal\r\n// in the Software without restriction, including without limitation the rights\r\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n// copies of the Software, and to permit persons to whom the Software is\r\n// furnished to do so, subject to the following conditions:\r\n//\r\n// The above copyright notice and this permission notice shall be included in\r\n// all copies or substantial portions of the Software.\r\n//\r\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n// THE SOFTWARE.\r\n\r\n// eslint-disable-next-line absolute-import/no-relative-path\r\nimport { LOCALES } from './locales'\r\n\r\nexport default {\r\n property: {\r\n weight: '权重',\r\n label: '标签',\r\n fillColor: '填充色',\r\n color: '颜色',\r\n coverage: '覆盖范围',\r\n strokeColor: '线条颜色',\r\n radius: '半径',\r\n outline: '轮廓线',\r\n stroke: '线条粗细',\r\n density: '密度',\r\n height: '高度',\r\n sum: '总和',\r\n pointCount: '点数',\r\n },\r\n placeholder: {\r\n search: '搜索',\r\n selectField: '选择区域',\r\n yAxis: 'Y轴',\r\n selectType: '选择类型',\r\n selectValue: '选择值',\r\n enterValue: '输入值',\r\n empty: '未选择',\r\n },\r\n misc: {\r\n by: '',\r\n valuesIn: '值包含',\r\n valueEquals: '值等于',\r\n dataSource: '数据源',\r\n brushRadius: '画笔半径 (km)',\r\n empty: ' ',\r\n },\r\n mapLayers: {\r\n title: '图层',\r\n label: '标签',\r\n road: '道路',\r\n border: '边界线',\r\n building: '建筑物',\r\n water: '水',\r\n land: '地面',\r\n '3dBuilding': '3D建筑',\r\n },\r\n panel: {\r\n text: {\r\n label: '标签',\r\n labelWithId: '标签 {labelId}',\r\n fontSize: '字体大小',\r\n fontColor: '字体颜色',\r\n textAnchor: '文本锚',\r\n alignment: '对齐方式',\r\n addMoreLabel: '添加更多标签',\r\n },\r\n },\r\n sidebar: {\r\n panels: {\r\n layer: '图层',\r\n filter: '过滤器',\r\n interaction: '交互',\r\n basemap: '底图',\r\n },\r\n },\r\n layer: {\r\n required: '必填*',\r\n radius: '半径',\r\n color: '颜色',\r\n fillColor: '填充色',\r\n outline: '轮廓线',\r\n weight: '权重',\r\n propertyBasedOn: '{property}的基准',\r\n coverage: '覆盖范围',\r\n stroke: '线条粗细',\r\n strokeWidth: '线条宽度',\r\n strokeColor: '线条颜色',\r\n basic: '基础设置',\r\n trailLength: '轨迹长度',\r\n trailLengthDescription: '轨迹淡出的秒数',\r\n newLayer: '新建图层',\r\n elevationByDescription: '关闭时,高度取决于点数',\r\n colorByDescription: '关闭时,颜色取决于点数',\r\n aggregateBy: '{field}聚合如下: ',\r\n '3DModel': '3D模型',\r\n '3DModelOptions': '3D模型选项',\r\n type: {\r\n point: 'point',\r\n arc: 'arc',\r\n line: 'line',\r\n grid: 'grid',\r\n hexbin: 'hexbin',\r\n polygon: 'polygon',\r\n geojson: 'geojson',\r\n cluster: 'cluster',\r\n icon: 'icon',\r\n heatmap: 'heatmap',\r\n hexagon: 'hexagon',\r\n hexagonid: 'H3',\r\n trip: 'trip',\r\n s2: 'S2',\r\n '3d': '3D',\r\n },\r\n },\r\n layerVisConfigs: {\r\n angle: '角度',\r\n strokeWidth: '线条宽度',\r\n strokeWidthRange: '线条宽度范围',\r\n radius: '半径',\r\n fixedRadius: '以米为单位固定半径',\r\n fixedRadiusDescription: '将半径映射到以米为单位的绝对半径(例: 5 → 5米)',\r\n radiusRange: '半径范围',\r\n clusterRadius: '聚类半径',\r\n radiusRangePixels: '半径范围[像素]',\r\n opacity: '透明度',\r\n coverage: '覆盖范围',\r\n outline: '轮廓',\r\n colorRange: '色彩范围',\r\n stroke: '线',\r\n strokeColor: '线条颜色',\r\n strokeColorRange: '线条色彩范围',\r\n targetColor: '目标颜色',\r\n colorAggregation: '颜色聚合',\r\n heightAggregation: '高度聚合',\r\n resolutionRange: '分辨率范围',\r\n sizeScale: '大小比例',\r\n worldUnitSize: '世界单位大小',\r\n elevationScale: '海拔比例',\r\n enableElevationZoomFactor: '使用高程缩放系数',\r\n enableElevationZoomFactorDescription: '根据当前缩放系数调整海拔',\r\n heightScale: '高度比例',\r\n coverageRange: '覆盖范围',\r\n highPrecisionRendering: '高精度渲染',\r\n highPrecisionRenderingDescription: '高精度渲染会导致性能下降',\r\n height: '高度',\r\n heightDescription: '点击屏幕右上角的按钮切换到3D视图',\r\n fill: '填充',\r\n enablePolygonHeight: '启用多边形高度',\r\n showWireframe: '显示线框',\r\n weightIntensity: '加权强度',\r\n zoomScale: '缩放比例',\r\n heightRange: '高度范围',\r\n },\r\n layerManager: {\r\n addData: '添加数据',\r\n addLayer: '添加图层',\r\n layerBlending: '混合图层',\r\n },\r\n mapManager: {\r\n mapStyle: '地图样式',\r\n addMapStyle: '添加地图样式',\r\n '3dBuildingColor': '3D 建筑颜色',\r\n },\r\n layerConfiguration: {\r\n defaultDescription: '根据所选字段计算 {property}',\r\n howTo: '使用方法',\r\n },\r\n filterManager: {\r\n addFilter: '添加过滤器',\r\n },\r\n datasetTitle: {\r\n showDataTable: '显示数据表',\r\n removeDataset: '删除数据集',\r\n },\r\n datasetInfo: {\r\n rowCount: '{rowCount}行',\r\n },\r\n tooltip: {\r\n hideLayer: '隐藏图层',\r\n showLayer: '显示图层',\r\n hideFeature: '隐藏特征',\r\n showFeature: '显示特征',\r\n hide: '隐藏',\r\n show: '显示',\r\n removeLayer: '删除图层',\r\n duplicateLayer: '复制图层',\r\n layerSettings: '图层设置',\r\n closePanel: '关闭当前面板',\r\n switchToDualView: '切换到双地图视图',\r\n showLegend: '显示图例',\r\n disable3DMap: '禁用 3D 地图',\r\n DrawOnMap: '在地图上绘制',\r\n selectLocale: '选择语言',\r\n hideLayerPanel: '隐藏图层面板',\r\n showLayerPanel: '显示图层面板',\r\n moveToTop: '移至图层顶部',\r\n selectBaseMapStyle: '选择底图样式',\r\n delete: '删除',\r\n timePlayback: '时空回放',\r\n cloudStorage: '云存储',\r\n '3DMap': '3D 地图',\r\n animationByWindow: '移动时间窗口',\r\n animationByIncremental: '增量时间窗口',\r\n speed: '速度',\r\n play: '播放',\r\n pause: '暂停',\r\n reset: '重置',\r\n },\r\n toolbar: {\r\n exportImage: '导出图片',\r\n exportData: '导出数据',\r\n exportMap: '导出地图',\r\n shareMapURL: '分享地图网址',\r\n saveMap: '保存地图',\r\n select: '选择',\r\n polygon: 'polygon',\r\n rectangle: 'rectangle',\r\n hide: '隐藏',\r\n show: '显示',\r\n ...LOCALES,\r\n },\r\n editor: {\r\n filterLayer: '过滤图层',\r\n copyGeometry: '复制几何图形',\r\n },\r\n modal: {\r\n title: {\r\n deleteDataset: '删除数据集',\r\n addDataToMap: '添加数据到地图',\r\n exportImage: '导出图片',\r\n exportData: '导出数据',\r\n exportMap: '导出地图',\r\n addCustomMapboxStyle: '添加自定义地图',\r\n saveMap: '保存地图',\r\n shareURL: '分享网址',\r\n },\r\n button: {\r\n delete: '删除',\r\n download: '下载',\r\n export: '出口',\r\n addStyle: '添加样式',\r\n save: '保存',\r\n defaultCancel: '取消',\r\n defaultConfirm: '确认',\r\n },\r\n exportImage: {\r\n ratioTitle: '比率',\r\n ratioDescription: '选择不同用途的比例。',\r\n ratioOriginalScreen: '原始屏幕',\r\n ratioCustom: '自定义',\r\n ratio4_3: '4:3',\r\n ratio16_9: '16:9',\r\n resolutionTitle: '分辨率',\r\n resolutionDescription: '高分辨率更适合打印。',\r\n mapLegendTitle: '地图图例',\r\n mapLegendAdd: '在地图上添加图例',\r\n },\r\n exportData: {\r\n datasetTitle: '数据集',\r\n datasetSubtitle: '选择要导出的数据集',\r\n allDatasets: '全部',\r\n dataTypeTitle: '数据类型',\r\n dataTypeSubtitle: '选择要导出的数据类型',\r\n filterDataTitle: '过滤数据',\r\n filterDataSubtitle: '可以选择导出原始数据或过滤后的数据',\r\n filteredData: '过滤数据',\r\n unfilteredData: '元数据',\r\n fileCount: '{fileCount} 个文件',\r\n rowCount: '{rowCount} 行',\r\n },\r\n deleteData: {\r\n warning: '确认要删除这个数据集。它会影响 {length} 个层',\r\n },\r\n addStyle: {\r\n publishTitle:\r\n '2. 如果在步骤1中输入了 mapbox 样式的 url,需要在 mapbox 上发布样式或提供访问令牌(access token)。(可选)',\r\n publishSubtitle1: '可以在以下位置创建自己的地图样式',\r\n publishSubtitle2: '并',\r\n publishSubtitle3: '发布',\r\n publishSubtitle4: '。',\r\n publishSubtitle5: '使用私有样式,需粘贴',\r\n publishSubtitle6: '访问令牌(access token)',\r\n publishSubtitle7: '。* MapLab.world 是一个客户端应用程序,数据保留在您的浏览器中。',\r\n exampleToken: '例) pk.abcdefg.xxxxxx',\r\n pasteTitle: '1. 粘贴样式 url',\r\n pasteSubtitle0: '样式 url 可以是 Mapbox 的',\r\n pasteSubtitle1: '什么是',\r\n pasteSubtitle2: '样式 URL,',\r\n pasteSubtitle3: '还可以使用遵从Mapbox GL样式的style.json的url:',\r\n pasteSubtitle4: 'Mapbox GL 样式规范',\r\n namingTitle: '3. 命名你的样式',\r\n },\r\n shareMap: {\r\n shareUriTitle: '分享地图网址',\r\n shareUriSubtitle: '生成分享地图的链接',\r\n cloudTitle: '云存储',\r\n cloudSubtitle: '登录并将地图数据上传到个人云存储',\r\n shareDisclaimer:\r\n 'MapLab.world 将创建的地图存储在个人云存储中,因此只有知道 URL 的人才能访问地图及其数据。' +\r\n '可以随时使用个人云存储帐户编辑/删除数据文件。',\r\n gotoPage: '跳转到MapLab.world的{currentProvider}页面',\r\n },\r\n statusPanel: {\r\n mapUploading: '地图上传中',\r\n error: '错误',\r\n },\r\n saveMap: {\r\n title: '云存储',\r\n subtitle: '登录以将地图保存到个人云存储',\r\n },\r\n exportMap: {\r\n formatTitle: '地图的格式',\r\n formatSubtitle: '选择导出地图的格式',\r\n html: {\r\n selection: '将地图导出至交互式的html文件中。',\r\n tokenTitle: 'Mapbox的访问令牌(access token)',\r\n tokenSubtitle: '在 html 中使用自己的 Mapbox 访问令牌(access token)(可选)',\r\n tokenPlaceholder: '粘贴个人的 Mapbox 访问令牌access token)',\r\n tokenMisuseWarning: '* 如果您不提供自己的令牌,则在我们更换令牌时,地图可能随时无法显示,以免被滥用。',\r\n tokenDisclaimer: '可以稍后使用以下说明更改 Mapbox 令牌:',\r\n tokenUpdate: '如何更新现有的地图令牌。',\r\n modeTitle: '地图模式',\r\n modeSubtitle1: '选择地图模式。更多的',\r\n modeSubtitle2: '信息',\r\n modeDescription: '允许用户{mode}地图',\r\n read: '阅读',\r\n edit: '编辑',\r\n },\r\n json: {\r\n configTitle: '地图配置',\r\n configDisclaimer:\r\n '地图配置将包含在 Json 文件中。如果您在自己的应用程序中使用 MapLab.world。您可以复制此配置并将其传递给',\r\n selection:\r\n '将当前地图数据和配置导出到单个 Json 文件中。稍后您可以通过将此文件上传到 MapLab.world 来打开同一张地图。',\r\n disclaimer:\r\n '* 地图配置与加载的数据集相结合。 “dataId”用于将图层、过滤器和工具提示绑定到特定数据集。' +\r\n '将此配置传递给 addDataToMap 时,请确保数据集 ID 与此配置中的 dataId/s 匹配。',\r\n },\r\n },\r\n loadingDialog: {\r\n loading: '加载中...',\r\n },\r\n loadData: {\r\n upload: '上传文件',\r\n storage: '从存储中加载',\r\n },\r\n tripInfo: {\r\n title: '如何启用移动动画',\r\n description1: '要路径设置动画,geoJSON 数据必须包含 `LineString` 作为要素几何。此外,LineString 的坐标有四个元素',\r\n code: ' [经度,纬度,高程,时间戳] ',\r\n description2:\r\n '最后一个元素是时间戳。有效的时间戳格式包括以秒为单位的 unix,例如`1564184363`或以毫秒为单位的`1564184363000`。',\r\n example: '例:',\r\n },\r\n iconInfo: {\r\n title: '如何绘制图标',\r\n description1:\r\n '在您的 csv 中,创建一列,将您要绘制的图标的名称放入其中。如果不想在某些点上显示图标,可以将单元格留空。当列被命名为',\r\n code: '图标',\r\n description2: '时,MapLab.world 会自动为你创建一个图标层。',\r\n example: '例:',\r\n icons: '图标一览',\r\n },\r\n storageMapViewer: {\r\n lastModified: '上次修改 {lastUpdated} 前',\r\n back: '返回',\r\n },\r\n overwriteMap: {\r\n title: '正在保存地图...',\r\n alreadyExists: '已经存在于 {mapSaved} 中。你想覆盖吗?',\r\n },\r\n loadStorageMap: {\r\n back: '返回',\r\n goToPage: '跳转到 MapLab.world 的 {displayName} 页面',\r\n storageMaps: '存储 / 地図',\r\n noSavedMaps: '还没有保存的地图',\r\n },\r\n },\r\n header: {\r\n visibleLayers: '可见图层',\r\n layerLegend: '图层图例',\r\n },\r\n interactions: {\r\n tooltip: '工具提示',\r\n brush: '刷',\r\n coordinate: '坐标',\r\n geocoder: '地理编码器',\r\n },\r\n layerBlending: {\r\n title: '图层混合',\r\n additive: 'additive',\r\n normal: 'normal',\r\n subtractive: 'subtractive',\r\n },\r\n columns: {\r\n title: '列',\r\n lat: '纬度',\r\n lng: '经度',\r\n altitude: '海拔',\r\n icon: '图标',\r\n geojson: 'geojson',\r\n token: '令牌',\r\n arc: {\r\n lat0: '起点 纬度',\r\n lng0: '起点 经度',\r\n lat1: '终点 纬度',\r\n lng1: '终点 经度',\r\n },\r\n grid: {\r\n worldUnitSize: '网格大小 (km)',\r\n },\r\n hexagon: {\r\n worldUnitSize: '六边形半径 (km)',\r\n },\r\n hex_id: 'hex id',\r\n },\r\n color: {\r\n customPalette: '自定义调色板',\r\n steps: '步骤',\r\n type: '类型',\r\n reversed: '反转',\r\n },\r\n scale: {\r\n colorScale: '色阶',\r\n sizeScale: '大小比例',\r\n strokeScale: '描边比例',\r\n scale: '规模',\r\n },\r\n fileUploader: {\r\n message: '将您的文件拖放到此处(可多个)',\r\n chromeMessage: '*对于 Chrome 用户:文件大小最大为 250mb。如果需要上传更多文件,请尝试使用 Safari。',\r\n disclaimer:\r\n '* MapLab.world 在客户端上工作。数据仅保留在您自己的设备/浏览器中。 没有信息或地图数据被发送到任何服务器。',\r\n configUploadMessage: '上传 {fileFormatNames} 或保存的地图 **Json**。阅读更多关于[**支持的文件格式**]',\r\n browseFiles: '浏览你的文件',\r\n uploading: '上传',\r\n fileNotSupported: '不支持文件 {errorFiles}。',\r\n or: '或',\r\n },\r\n geocoder: {\r\n title: '输入地址或坐标(例: 37.79,-122.40)',\r\n },\r\n fieldSelector: {\r\n clearAll: '清除所有',\r\n formatting: '格式化',\r\n },\r\n compare: {\r\n modeLabel: '比较模式',\r\n typeLabel: '比较类型',\r\n types: {\r\n absolute: '绝对',\r\n relative: '相对',\r\n },\r\n },\r\n mapPopover: {\r\n primary: '主要',\r\n },\r\n density: '密度',\r\n 'Bug Report': '错误报告',\r\n 'User Guide': '用户指南',\r\n Save: '保存',\r\n Share: '分享',\r\n}\r\n","// Copyright (c) 2020 Uber Technologies, Inc.\r\n//\r\n// Permission is hereby granted, free of charge, to any person obtaining a copy\r\n// of this software and associated documentation files (the \"Software\"), to deal\r\n// in the Software without restriction, including without limitation the rights\r\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n// copies of the Software, and to permit persons to whom the Software is\r\n// furnished to do so, subject to the following conditions:\r\n//\r\n// The above copyright notice and this permission notice shall be included in\r\n// all copies or substantial portions of the Software.\r\n//\r\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n// THE SOFTWARE.\r\n\r\n// eslint-disable-next-line absolute-import/no-relative-path\r\nimport { LOCALES } from './locales'\r\n\r\nexport default {\r\n property: {\r\n weight: 'peso',\r\n label: 'etiqueta',\r\n fillColor: 'color de relleno',\r\n color: 'color',\r\n coverage: 'cobertura',\r\n strokeColor: 'color de trazo',\r\n radius: 'radio',\r\n outline: 'contorno',\r\n stroke: 'trazo',\r\n density: 'densidad',\r\n height: 'altura',\r\n sum: 'suma',\r\n pointCount: 'Recuento de puntos',\r\n },\r\n placeholder: {\r\n search: 'Busqueda',\r\n selectField: 'Selecciona un campo',\r\n yAxis: 'Eje Y',\r\n selectType: 'Selecciona un Tipo',\r\n selectValue: 'Selecciona un Valor',\r\n enterValue: 'Entra un valor',\r\n empty: 'vacio',\r\n },\r\n misc: {\r\n by: '',\r\n valuesIn: 'Valores en',\r\n valueEquals: 'Valor igual a',\r\n dataSource: 'Fuente de datos',\r\n brushRadius: 'Radio del pincel (km)',\r\n empty: ' ',\r\n },\r\n mapLayers: {\r\n title: 'Capas del mapa',\r\n label: 'Etiqueta',\r\n road: 'Carretera',\r\n border: 'Frontera',\r\n building: 'Edificio',\r\n water: 'Agua',\r\n land: 'Tierra',\r\n '3dBuilding': 'Edificio 3D',\r\n },\r\n panel: {\r\n text: {\r\n label: 'etiqueta',\r\n labelWithId: 'Etiqueta {labelId}',\r\n fontSize: 'Tamaño de fuente',\r\n fontColor: 'Color de fuente',\r\n textAnchor: 'Anclaje del texto',\r\n alignment: 'Alineación',\r\n addMoreLabel: 'Añadir más etiquetas',\r\n },\r\n },\r\n sidebar: {\r\n panels: {\r\n layer: 'Capas',\r\n filter: 'Filtros',\r\n interaction: 'Interacciones',\r\n basemap: 'Mapa base',\r\n },\r\n },\r\n layer: {\r\n required: 'Requerido*',\r\n radius: 'Radio',\r\n color: 'Color',\r\n fillColor: 'Color de relleno',\r\n outline: 'Contorno',\r\n weight: 'Grueso',\r\n propertyBasedOn: '{property} basado en',\r\n coverage: 'Cobertura',\r\n stroke: 'Trazo',\r\n strokeWidth: 'Grosor de trazo',\r\n strokeColor: 'Color de trazo',\r\n basic: 'Básico',\r\n trailLength: 'Longitud de pista',\r\n trailLengthDescription: 'Numero de segundos hasta que desaparezca el camino',\r\n newLayer: 'nueva capa',\r\n elevationByDescription: 'Si desactivado, la altura se basa en el recuento de puntos',\r\n colorByDescription: 'Si desactivado, el color se basa en el recuento de puntos',\r\n aggregateBy: '{field} agregado por',\r\n '3DModel': 'Modelo 3D',\r\n '3DModelOptions': 'Opciones del modelo 3D',\r\n type: {\r\n point: 'punto',\r\n arc: 'arco',\r\n line: 'línea',\r\n grid: 'malla',\r\n hexbin: 'hexbin',\r\n polygon: 'polígono',\r\n geojson: 'geojson',\r\n cluster: 'cluster',\r\n icon: 'icono',\r\n heatmap: 'concentración',\r\n hexagon: 'hexágono',\r\n hexagonid: 'H3',\r\n trip: 'viaje',\r\n s2: 'S2',\r\n '3d': '3D',\r\n },\r\n },\r\n layerVisConfigs: {\r\n angle: 'Ángulo',\r\n strokeWidth: 'Ancho del trazo',\r\n strokeWidthRange: 'Rango del ancho del trazo',\r\n radius: 'Radio',\r\n fixedRadius: 'Radio fijo a medir',\r\n fixedRadiusDescription: 'Ajustar el radio al radio absoluto en metros, p.e. 5 a 5 metros',\r\n radiusRange: 'Rango de radio',\r\n clusterRadius: 'Radio del cluster en píxeles',\r\n radiusRangePixels: 'Rango del radio en píxeles',\r\n opacity: 'Opacidad',\r\n coverage: 'Cobertura',\r\n outline: 'Contorno',\r\n colorRange: 'Rango de color',\r\n stroke: 'Trazo',\r\n strokeColor: 'Color de trazo',\r\n strokeColorRange: 'Rango de color de trazo',\r\n targetColor: 'Color destino',\r\n colorAggregation: 'Agregación de color',\r\n heightAggregation: 'Agregación de la altura',\r\n resolutionRange: 'Rango de resolución',\r\n sizeScale: 'Medida de escala',\r\n worldUnitSize: 'Medida de la unidad mundial',\r\n elevationScale: 'Escala de elevación',\r\n heightScale: 'Escala de altura',\r\n coverageRange: 'Rango de cobertura',\r\n highPrecisionRendering: 'Representación de alta precisión',\r\n highPrecisionRenderingDescription: 'La precisión alta tendrá un rendimiento más bajo',\r\n height: 'Altura',\r\n heightDescription: 'Haz clic en el botón de arriba a la derecha del mapa per cambiar a vista 3D',\r\n fill: 'Rellenar',\r\n enablePolygonHeight: 'Activar la altura del polígono',\r\n showWireframe: 'Muestra esquemàtico',\r\n weightIntensity: 'Intensidad de peso',\r\n zoomScale: 'Escala de zoom',\r\n heightRange: 'Rango de alturas',\r\n },\r\n layerManager: {\r\n addData: 'Añadir datos',\r\n addLayer: 'Añadir capa',\r\n layerBlending: 'Combinar capas',\r\n },\r\n mapManager: {\r\n mapStyle: 'Estilo de mapa',\r\n addMapStyle: 'Añadir estilo de mapa',\r\n '3dBuildingColor': 'Color edificios 3D',\r\n },\r\n layerConfiguration: {\r\n defaultDescription: 'Calcular {property} según el campo seleccionado',\r\n howTo: 'How to',\r\n },\r\n filterManager: {\r\n addFilter: 'Añadir filtro',\r\n },\r\n datasetTitle: {\r\n showDataTable: 'Mostar la tabla de datos',\r\n removeDataset: 'Eliminar conjunto de datos',\r\n },\r\n datasetInfo: {\r\n rowCount: '{rowCount} files',\r\n },\r\n tooltip: {\r\n hideLayer: 'Ocultar la capa',\r\n showLayer: 'Mostrar la capa',\r\n hideFeature: 'Ocultar el objeto',\r\n showFeature: 'Mostrar el objeto',\r\n hide: 'Ocultar',\r\n show: 'Mostrar',\r\n removeLayer: 'Eliminar capa',\r\n layerSettings: 'Configuración de capa',\r\n closePanel: 'Cerrar el panel actual',\r\n switchToDualView: 'Cambiar a la vista de mapa dual',\r\n showLegend: 'Mostrar leyenda',\r\n disable3DMap: 'Desactivar mapa 3D',\r\n DrawOnMap: 'Dibujar en el mapa',\r\n selectLocale: 'Seleccionar configuración regional',\r\n hideLayerPanel: 'Ocultar la tabla de capas',\r\n showLayerPanel: 'Mostrar la tabla de capas',\r\n moveToTop: 'Desplazar arriba de las capas de datos',\r\n selectBaseMapStyle: 'Seleccionar estilo de mapa base',\r\n delete: 'Borrar',\r\n timePlayback: 'Reproducción de tiempo',\r\n cloudStorage: 'Almacenaje en la nube',\r\n '3DMap': 'Mapa 3D',\r\n animationByWindow: 'Ventana Temporal Móvil',\r\n animationByIncremental: 'Ventana Temporal Incremental',\r\n speed: 'velocidad',\r\n play: 'iniciar',\r\n pause: 'pausar',\r\n reset: 'reiniciar',\r\n },\r\n toolbar: {\r\n exportImage: 'Exportar imagen',\r\n exportData: 'Exportar datos',\r\n exportMap: 'Exportar mapa',\r\n shareMapURL: 'Compartir el enlace del mapa',\r\n saveMap: 'Guardar mapa',\r\n select: 'selecciona',\r\n polygon: 'polígono',\r\n rectangle: 'rectángulo',\r\n hide: 'esconder',\r\n show: 'mostrar',\r\n ...LOCALES,\r\n },\r\n modal: {\r\n title: {\r\n deleteDataset: 'Borrar conjunto de datos',\r\n addDataToMap: 'Añadir datos al mapa',\r\n exportImage: 'Exportar imagen',\r\n exportData: 'Exportar datos',\r\n exportMap: 'Exportar mapa',\r\n addCustomMapboxStyle: 'Añadir estilo de Mapbox propio',\r\n saveMap: 'Guardar mapa',\r\n shareURL: 'Compartir enlace',\r\n },\r\n button: {\r\n delete: 'Borrar',\r\n download: 'Descargar',\r\n export: 'Exportar',\r\n addStyle: 'Añadir estilo',\r\n save: 'Guardar',\r\n defaultCancel: 'Cancelar',\r\n defaultConfirm: 'Confirmar',\r\n },\r\n exportImage: {\r\n ratioTitle: 'Ratio',\r\n ratioDescription: 'Esoger ratio por diversos usos.',\r\n ratioOriginalScreen: 'Pantalla original',\r\n ratioCustom: 'Personalizado',\r\n ratio4_3: '4:3',\r\n ratio16_9: '16:9',\r\n resolutionTitle: 'Resolución',\r\n resolutionDescription: 'Una alta resolución es mejor para las impresiones.',\r\n mapLegendTitle: 'Leyenda del mapa',\r\n mapLegendAdd: 'Añadir leyenda al mapa',\r\n },\r\n exportData: {\r\n datasetTitle: 'Conjunto de datos',\r\n datasetSubtitle: 'Escoger los conjuntos de datos a exportar',\r\n allDatasets: 'Todos',\r\n dataTypeTitle: 'Tipo de datos',\r\n dataTypeSubtitle: 'Escoger el tipo de datos a exportar',\r\n filterDataTitle: 'Filtrar datos',\r\n filterDataSubtitle: 'Se puede escoger exportar los datos originales o filtrados',\r\n filteredData: 'Datos filtrados',\r\n unfilteredData: 'Datos sin filtrar',\r\n fileCount: '{fileCount} Archivos',\r\n rowCount: '{rowCount} Files',\r\n },\r\n deleteData: {\r\n warning: 'estás a punto de borrar este conjunto de datos. Afectará a {length} capas',\r\n },\r\n addStyle: {\r\n publishTitle: '1. Publicar tu estilo en Mapbox o proporcionar el token de acceso',\r\n publishSubtitle1: 'Puedes crear el tu propio estilo de mapa en',\r\n publishSubtitle2: 'y',\r\n publishSubtitle3: 'publicar',\r\n publishSubtitle4: 'lo.',\r\n publishSubtitle5: 'Para utilizar un estilo privado, engancha tu',\r\n publishSubtitle6: 'token de acceso',\r\n publishSubtitle7: 'aquí. *MapLab.world es una aplicación cliente, los datos quedan en tu navegador..',\r\n exampleToken: 'p.e. pk.abcdefg.xxxxxx',\r\n pasteTitle: '2. Engancha el enlace del estilo',\r\n pasteSubtitle1: 'Qué es un',\r\n pasteSubtitle2: 'enlace del estilo',\r\n namingTitle: '3. Poner nombre a tu estilo',\r\n },\r\n shareMap: {\r\n shareUriTitle: 'Compartir el enlace del mapa',\r\n shareUriSubtitle: 'Generar un enlace del mapa para compartir con otros',\r\n cloudTitle: 'Almacenage en la nube',\r\n cloudSubtitle: 'Acceder y cargar datos del mapa a tu almacenage a la nube personal',\r\n shareDisclaimer:\r\n 'MapLab.world guardará los datos del mapa en el almacenage de tu nube personal, sólo quien tenga el enlace podra acceder al mapa y a los datos . ' +\r\n 'Puedes editar/borrar el archivo de datos en tu cuenta en la nube en cualquier momento.',\r\n gotoPage: 'Ves a la página de {currentProvider} de MapLab.world',\r\n },\r\n statusPanel: {\r\n mapUploading: 'Cargar un mapa',\r\n error: 'Error',\r\n },\r\n saveMap: {\r\n title: 'Almacentage en la nube',\r\n subtitle: 'Acceder para guardar el mapa en teu almacenage en la nube',\r\n },\r\n exportMap: {\r\n formatTitle: 'Formato de mapa',\r\n formatSubtitle: 'Escoger el formato al que se desea exportar el mapa',\r\n html: {\r\n selection: 'Exportar tu mapa como un archivo HTML interactivo.',\r\n tokenTitle: 'Token de acceso de Mapbox',\r\n tokenSubtitle: 'Utilizar tu token de acceso a Mapbox al archivo HTML (opcional)',\r\n tokenPlaceholder: 'Enganchar tu token de acceso a Mapbox',\r\n tokenMisuseWarning:\r\n '* Si no proporcionas tu propio token, el mapa podría fallar en cualquier momento cuando reemplacemos nuestro token para evitar abusos. ',\r\n tokenDisclaimer: 'Puedes cambiar el token de Mapbox posteriormente utilizando estas instrucciones: ',\r\n tokenUpdate: 'Como actualitzar un token preexistente.',\r\n modeTitle: 'Modo mapa',\r\n modeSubtitle1: 'Seleccionar modo app. Más ',\r\n modeSubtitle2: 'información',\r\n modeDescription: 'Permmite a los usuarios {modo} el mapa',\r\n read: 'leer',\r\n edit: 'editar',\r\n },\r\n json: {\r\n configTitle: 'Configuración del mapa',\r\n configDisclaimer:\r\n 'La configuración del mapa será incluida en el archivo Json. Si utilitzas MapLab.world en tu propia app puedes copiar esta configuración y pasarla a ',\r\n selection:\r\n 'Exportar los datos del mapa y la configuración en un solo archivo Json. Posteriormente puedes abrir este mismo mapa cargando este mismo archivo a MapLab.world.',\r\n disclaimer:\r\n '* La configuración del mapa se combina con los conjuntos de datos cargados. ‘dataId’ se utiliza para vincular capas, filtros y sugerencias a un conjunto de datos específico. ' +\r\n 'Cuando pases esta configuración a addDataToMap, asegura que el identificador del conjunto de datos coincida con los ‘dataId’ de esta configuración.',\r\n },\r\n },\r\n loadingDialog: {\r\n loading: 'Cargando...',\r\n },\r\n loadData: {\r\n upload: 'Cargar archivos',\r\n storage: 'Cargar desde almacenage',\r\n },\r\n tripInfo: {\r\n title: 'Como habilitar la animación de viaje',\r\n description1:\r\n 'Para animar la ruta, los datos geoJSON han de contener `LineString` en su geometría y las coordenadas de LineString deben tener 4 elementos en los formats de ',\r\n code: ' [longitude, latitude, altitude, timestamp] ',\r\n description2:\r\n 'y el último elemento debe ser la marca del tiempo. Los formatos válidos para la marca de tiempo incluyen Unix en segundos como `1564184363` o en milisegundos como `1564184363000`.',\r\n example: 'Ejemplo:',\r\n },\r\n iconInfo: {\r\n title: 'Como dibujar íconos',\r\n description1:\r\n 'En tu CSV crea una columna y pon el nombre del ícono que quieres dibujar. Puedes dejar la celda vacía cuando no quieras que se muestre para ciertos puntos. Cuando la columna se llama',\r\n code: 'ícono',\r\n description2: ' MapLab.world automáticamente creará una capa de ícono.',\r\n example: 'Ejemplo:',\r\n icons: 'Iconos',\r\n },\r\n storageMapViewer: {\r\n lastModified: 'Última modificación hace {lastUpdated}',\r\n back: 'Atrás',\r\n },\r\n overwriteMap: {\r\n title: 'Guardando el mapa...',\r\n alreadyExists: 'ja existe en {mapSaved}. Lo quieres sobreescrivir?',\r\n },\r\n loadStorageMap: {\r\n back: 'Atrás',\r\n goToPage: 'Ves a la página {displayName} de MapLab.world',\r\n storageMaps: 'Almancenage / Mapas',\r\n noSavedMaps: 'No hay ningún mapa guardado todavía',\r\n },\r\n },\r\n header: {\r\n visibleLayers: 'Capas visibles',\r\n layerLegend: 'Capa de leyenda',\r\n },\r\n interactions: {\r\n tooltip: 'Sugerencias',\r\n brush: 'Pincel',\r\n coordinate: 'Coordenadas',\r\n geocoder: 'Geocodificador',\r\n },\r\n layerBlending: {\r\n title: 'Combinación de capas',\r\n additive: 'aditiva',\r\n normal: 'normal',\r\n subtractive: 'substractiva',\r\n },\r\n columns: {\r\n title: 'Columnas',\r\n lat: 'lat',\r\n lng: 'lon',\r\n altitude: 'altura',\r\n icon: 'ícono',\r\n geojson: 'geojson',\r\n arc: {\r\n lat0: 'lat origen',\r\n lng0: 'lng origen ',\r\n lat1: 'lat destino',\r\n lng1: 'lng destino',\r\n },\r\n grid: {\r\n worldUnitSize: 'Tamaño de la malla (km)',\r\n },\r\n hexagon: {\r\n worldUnitSize: 'Radio de hexágono (km)',\r\n },\r\n hex_id: 'id hex',\r\n },\r\n color: {\r\n customPalette: 'Paleta personalizada',\r\n steps: 'pasos',\r\n type: 'tipo',\r\n reversed: 'invertida',\r\n },\r\n scale: {\r\n colorScale: 'Escala de color',\r\n sizeScale: 'Escala de medidas',\r\n strokeScale: 'Escala de trazo',\r\n scale: 'Escala',\r\n },\r\n fileUploader: {\r\n message: 'Arrastra y suelta el archivo aquí',\r\n chromeMessage:\r\n '*usuario de Chrome: la medida máxima son 250mb, si debes cargar un archivo más grande utiliza Safari',\r\n disclaimer:\r\n '*MapLab.world es una aplicación al lado cliente que no utiliza ningún servidor. Los datos sólo existen en tu máquina/navegador. ' +\r\n 'No se envian datos ni mapas a ningún servidor.',\r\n configUploadMessage:\r\n 'Cargar {fileFormatNames} o un mapa guardado en **Json**. Más información sobre [**supported file formats**]',\r\n browseFiles: 'navega por tus archivos',\r\n uploading: 'Cargando',\r\n fileNotSupported: 'El archivo {errorFiles} no es compatible.',\r\n or: 'o',\r\n },\r\n geocoder: {\r\n title: 'Introduce una dirección',\r\n },\r\n fieldSelector: {\r\n clearAll: 'Quitar todos',\r\n formatting: 'Formato',\r\n },\r\n compare: {\r\n modeLabel: 'Modo Comparación',\r\n typeLabel: 'Tipo de Comparación',\r\n types: {\r\n absolute: 'Absoluta',\r\n relative: 'Relativa',\r\n },\r\n },\r\n mapPopover: {\r\n primary: 'Principal',\r\n },\r\n density: 'densidad',\r\n 'Bug Report': 'Informe de errores',\r\n 'User Guide': 'Guía de usuario',\r\n Save: 'Guadar',\r\n Share: 'Compartir',\r\n}\r\n","// Copyright (c) 2021 Uber Technologies, Inc.\r\n//\r\n// Permission is hereby granted, free of charge, to any person obtaining a copy\r\n// of this software and associated documentation files (the \"Software\"), to deal\r\n// in the Software without restriction, including without limitation the rights\r\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n// copies of the Software, and to permit persons to whom the Software is\r\n// furnished to do so, subject to the following conditions:\r\n//\r\n// The above copyright notice and this permission notice shall be included in\r\n// all copies or substantial portions of the Software.\r\n//\r\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n// THE SOFTWARE.\r\n\r\n// eslint-disable-next-line absolute-import/no-relative-path\r\nimport { LOCALES } from './locales'\r\n\r\nexport default {\r\n property: {\r\n weight: 'painotus',\r\n label: 'nimiö',\r\n fillColor: 'täyttöväri',\r\n color: 'väri',\r\n strokeColor: 'viivan väri',\r\n radius: 'säde',\r\n outline: 'ääriviiva',\r\n stroke: 'viiva',\r\n density: 'tiheys',\r\n coverage: 'kattavuus',\r\n sum: 'summa',\r\n pointCount: 'pisteiden lukumäärä',\r\n },\r\n placeholder: {\r\n search: 'Etsi',\r\n selectField: 'Valitse kenttä',\r\n yAxis: 'Y-akseli',\r\n selectType: 'Valitse tyyppi',\r\n selectValue: 'Valitse arvo',\r\n enterValue: 'Anna arvo',\r\n empty: 'tyhjä',\r\n },\r\n misc: {\r\n by: '',\r\n valuesIn: 'Arvot joukossa:',\r\n valueEquals: 'Arvo on yhtäsuuri kuin',\r\n dataSource: 'Aineistolähde',\r\n brushRadius: 'Harjan säde (km)',\r\n empty: ' ',\r\n },\r\n mapLayers: {\r\n title: 'Kartan tasot',\r\n label: 'Nimiöt',\r\n road: 'Tiet',\r\n border: 'Rajat',\r\n building: 'Rakennukset',\r\n water: 'Vesi',\r\n land: 'Maa',\r\n '3dBuilding': '3d-rakennukset',\r\n },\r\n panel: {\r\n text: {\r\n label: 'Nimiö',\r\n labelWithId: 'Nimiö {labelId}',\r\n fontSize: 'Fontin koko',\r\n fontColor: 'Fontin väri',\r\n textAnchor: 'Tekstin ankkuri',\r\n alignment: 'Sijoittelu',\r\n addMoreLabel: 'Lisää uusia nimiöitä',\r\n },\r\n },\r\n sidebar: {\r\n panels: {\r\n layer: 'Tasot',\r\n filter: 'Suodattimet',\r\n interaction: 'Interaktiot',\r\n basemap: 'Taustakartta',\r\n },\r\n },\r\n layer: {\r\n required: 'Pakollinen*',\r\n radius: 'Säde',\r\n weight: 'Painotus',\r\n propertyBasedOn: '{property} perustuen arvoon',\r\n color: 'Väri',\r\n fillColor: 'Täytön väri',\r\n outline: 'ääriviiva',\r\n coverage: 'Kattavuus',\r\n stroke: 'Viiva',\r\n strokeWidth: 'Viivan paksuus',\r\n strokeColor: 'Viivan väri',\r\n basic: 'Perus',\r\n trailLength: 'Jäljen pituus',\r\n trailLengthDescription: 'Jäljen kesto sekunteina, ennenkuin se himmenee näkyvistä',\r\n newLayer: 'uusi taso',\r\n elevationByDescription: 'Kun asetus on pois päältä, korkeus perustuu pisteiden määrään',\r\n colorByDescription: 'Kun asetus on pois päältä, väri perustuu pisteiden määrään',\r\n aggregateBy: 'Aggregoi kenttä {field} by',\r\n '3DModel': '3D-malli',\r\n '3DModelOptions': '3D-mallin asetukset',\r\n type: {\r\n point: 'piste',\r\n arc: 'kaari',\r\n line: 'viiva',\r\n grid: 'ruudukko',\r\n hexbin: 'hexbin',\r\n polygon: 'polygoni',\r\n geojson: 'geojson',\r\n cluster: 'klusteri',\r\n icon: 'kuva',\r\n heatmap: 'lämpökartta',\r\n hexagon: 'kuusikulmio',\r\n hexagonid: 'H3',\r\n trip: 'matka',\r\n s2: 'S2',\r\n '3d': '3D',\r\n },\r\n },\r\n layerVisConfigs: {\r\n strokeWidth: 'Viivan paksuus',\r\n strokeWidthRange: 'Viivan paksuuden rajat',\r\n radius: 'Säde',\r\n fixedRadius: 'Vakiosäde metreinä',\r\n fixedRadiusDescription: 'Kartan säde absoluuttiseksi säteeksi metreinä, esim. 5 -> 5 metriin',\r\n radiusRange: 'Säteen rajat',\r\n clusterRadius: 'Klusterien säde pikseleinä',\r\n radiusRangePixels: 'Säteen rajat pikseleinä',\r\n opacity: 'Läpinäkyvyys',\r\n coverage: 'Kattavuus',\r\n outline: 'Ääriviiva',\r\n colorRange: 'Värien rajat',\r\n stroke: 'Viiva',\r\n strokeColor: 'Viivan väri',\r\n strokeColorRange: 'Viivan värin rajat',\r\n targetColor: 'Kohteen väri',\r\n colorAggregation: 'Värien aggregointi',\r\n heightAggregation: 'Korkeuden aggregointi',\r\n resolutionRange: 'Resoluution rajat',\r\n sizeScale: 'Koon skaala',\r\n worldUnitSize: 'Yksikkö',\r\n elevationScale: 'Korottamisen skaala',\r\n enableElevationZoomFactor: 'Käytä korkeuden zoomauskerrointa',\r\n enableElevationZoomFactorDescription: 'Säädä korkeus / korkeus nykyisen zoomauskertoimen perusteella',\r\n enableHeightZoomFactor: 'Käytä korkeuden zoomauskerrointa',\r\n heightScale: 'Korkeuden skaala',\r\n coverageRange: 'Peittävyyden rajat',\r\n highPrecisionRendering: 'Tarkka renderöinti',\r\n highPrecisionRenderingDescription: 'Tarkka renderöinti johtaa hitaampaan suorittamiseen',\r\n height: 'Korkeus',\r\n heightDescription: 'Klikkaa oikeasta ylänurkasta nappia vaihtaaksesi 3D-näkymään',\r\n fill: 'Täyttö',\r\n enablePolygonHeight: 'Salli polygonien korkeus',\r\n showWireframe: 'Näytä rautalankamalli',\r\n weightIntensity: 'Painotuksen intensiteetti',\r\n zoomScale: 'Zoomausskaala',\r\n heightRange: 'Korkeuden rajat',\r\n heightMultiplier: 'Korkeuskerroin',\r\n },\r\n layerManager: {\r\n addData: 'Lisää aineisto',\r\n addLayer: 'Lisää taso',\r\n layerBlending: 'Tasojen sekoittuvuus',\r\n },\r\n mapManager: {\r\n mapStyle: 'Kartan tyyli',\r\n addMapStyle: 'Lisää tyyli kartalle',\r\n '3dBuildingColor': '3D-rakennusten väri',\r\n },\r\n layerConfiguration: {\r\n defaultDescription: 'Laske suureen {property} arvo valitun kentän perusteella',\r\n howTo: 'Miten toimii',\r\n },\r\n filterManager: {\r\n addFilter: 'Lisää suodatin',\r\n },\r\n datasetTitle: {\r\n showDataTable: 'Näytä attribuuttitaulu',\r\n removeDataset: 'Poista aineisto',\r\n },\r\n datasetInfo: {\r\n rowCount: '{rowCount} riviä',\r\n },\r\n tooltip: {\r\n hideLayer: 'Piilota taso',\r\n showLayer: 'Näytä taso',\r\n hideFeature: 'Piilota kohde',\r\n showFeature: 'Näytä kohde',\r\n hide: 'piilota',\r\n show: 'näytä',\r\n removeLayer: 'Poista taso',\r\n layerSettings: 'Tason asetukset',\r\n closePanel: 'Sulje paneeli',\r\n switchToDualView: 'Vaihda kaksoiskarrtanäkymään',\r\n showLegend: 'Näytä selite',\r\n disable3DMap: 'Poistu 3D-näkymästä',\r\n DrawOnMap: 'Piirrä kartalle',\r\n selectLocale: 'Valitse kielisyys',\r\n hideLayerPanel: 'Piilota tasopaneeli',\r\n showLayerPanel: 'Näytä tasopaneeli',\r\n moveToTop: 'Siirrä tasojen päällimmäiseksi',\r\n selectBaseMapStyle: 'Valitse taustakarttatyyli',\r\n delete: 'Poista',\r\n timePlayback: 'Ajan animointi',\r\n cloudStorage: 'Pilvitallennus',\r\n '3DMap': '3D-näkymä',\r\n },\r\n toolbar: {\r\n exportImage: 'Vie kuva',\r\n exportData: 'Vie aineistot',\r\n exportMap: 'Vie kartta',\r\n shareMapURL: 'Jaa kartan URL',\r\n saveMap: 'Tallenna kartta',\r\n select: 'valitse',\r\n polygon: 'polygoni',\r\n rectangle: 'nelikulmio',\r\n hide: 'piilota',\r\n show: 'näytä',\r\n ...LOCALES,\r\n },\r\n modal: {\r\n title: {\r\n deleteDataset: 'Poista aineisto',\r\n addDataToMap: 'Lisää aineistoja kartalle',\r\n exportImage: 'Vie kuva',\r\n exportData: 'Vie aineistot',\r\n exportMap: 'Vie kartta',\r\n addCustomMapboxStyle: 'Lisää oma Mapbox-tyyli',\r\n saveMap: 'Tallenna kartta',\r\n shareURL: 'Jaa URL',\r\n },\r\n button: {\r\n delete: 'Poista',\r\n download: 'Lataa',\r\n export: 'Vie',\r\n addStyle: 'Lisää tyyli',\r\n save: 'Tallenna',\r\n defaultCancel: 'Peru',\r\n defaultConfirm: 'Vahvista',\r\n },\r\n exportImage: {\r\n ratioTitle: 'Kuvasuhde',\r\n ratioDescription: 'Valitse sopiva kuvasuhde käyttötapaustasi varten.',\r\n ratioOriginalScreen: 'Alkuperäinen näyttö',\r\n ratioCustom: 'Kustomoitu',\r\n ratio4_3: '4:3',\r\n ratio16_9: '16:9',\r\n resolutionTitle: 'Resoluutio',\r\n resolutionDescription: 'Korkea resoluutio on parempi tulostamista varten.',\r\n mapLegendTitle: 'Kartan selite',\r\n mapLegendAdd: 'Lisää selite karttaan',\r\n },\r\n exportData: {\r\n datasetTitle: 'Aineistot',\r\n datasetSubtitle: 'Valitse aineisto, jonka aiot viedä',\r\n allDatasets: 'Kaikki',\r\n dataTypeTitle: 'Aineistojen formaatti',\r\n dataTypeSubtitle: 'Valitse aineistoformaatti valitsemillesi aineistoille',\r\n filterDataTitle: 'Suodata aineistoja',\r\n filterDataSubtitle: 'Voit viedä joko alkuperäiset aineistot tai suodatetut aineistot',\r\n filteredData: 'Suodatetut aineistot',\r\n unfilteredData: 'Suodattamattomat aineistot',\r\n fileCount: '{fileCount} tiedostoa',\r\n rowCount: '{rowCount} riviä',\r\n },\r\n deleteData: {\r\n warning: 'aiot poistaa tämän aineiston. Aineostoa käyttävien tasojen lukumäärä: {length}',\r\n },\r\n addStyle: {\r\n publishTitle: '1. Julkaise tyylisi Mapboxissa tai anna tunniste',\r\n publishSubtitle1: 'Voit luoda oman karttatyylisi sivulla',\r\n publishSubtitle2: 'ja',\r\n publishSubtitle3: 'julkaista',\r\n publishSubtitle4: 'sen.',\r\n publishSubtitle5: 'Käyttääksesi yksityistä tyyliä, liitä',\r\n publishSubtitle6: 'tunnisteesi',\r\n publishSubtitle7: 'tänne. *MapLab.world on client-side sovellus, data pysyy vain selaimessasi...',\r\n exampleToken: 'esim. pk.abcdefg.xxxxxx',\r\n pasteTitle: '2. Liitä tyyli-URL',\r\n pasteSubtitle1: 'Mikä on',\r\n pasteSubtitle2: 'tyyli-URL?',\r\n namingTitle: '3. Nimeä tyylisi',\r\n },\r\n shareMap: {\r\n shareUriTitle: 'Jaa kartan URL',\r\n shareUriSubtitle: 'Luo kartalle URL, jonka voit jakaa muiden kanssa',\r\n cloudTitle: 'Pilvitallennus',\r\n cloudSubtitle: 'Kirjaudu sisään ja lataa kartta ja aineistot henkilökohtaiseen pilvipalveluun',\r\n shareDisclaimer:\r\n 'MapLab.world tallentaa kartan datan henkilökohtaiseen pilvitallennustilaasi, vain ihmiset, joilla on URL, voivat päästä käsiksi karttaan ja aineistoihin. ' +\r\n 'Voit muokata tiedostoja tai poistaa ne pilvipalvelustasi milloin vain.',\r\n gotoPage: 'Mene MapLab.world {currentProvider} sivullesi',\r\n },\r\n statusPanel: {\r\n mapUploading: 'Karttaa ladataan',\r\n error: 'Virhe',\r\n },\r\n saveMap: {\r\n title: 'Pilvitallennus',\r\n subtitle: 'Kirjaudu sisään pilvipalveluusi tallentaaksesi kartan',\r\n },\r\n exportMap: {\r\n formatTitle: 'Kartan formaatti',\r\n formatSubtitle: 'Valitse formaatti, jossa viet kartan',\r\n html: {\r\n selection: 'Vie kartta interaktiivisena html-tiedostona',\r\n tokenTitle: 'Mapbox-tunniste',\r\n tokenSubtitle: 'Käytä omaa Mapbox-tunnistettasi html-tiedostossa (valinnainen)',\r\n tokenPlaceholder: 'Liitä Mapbox-tunnisteesi',\r\n tokenMisuseWarning:\r\n '* Jos et käytä omaa tunnistettasi, kartta voi lakata toimimasta milloin vain kun vaihdamme omaa tunnistettamme väärinkäytön estämiseksi. ',\r\n tokenDisclaimer: 'Voit vaihtaa Mapbox-tunnisteesi näiden ohjeiden avulla: ',\r\n tokenUpdate: 'Kuinka vaihtaa olemassaoleva Mapbox-tunniste',\r\n modeTitle: 'Kartan tila',\r\n modeSubtitle1: 'Valitse kartan tila.',\r\n modeSubtitle2: 'Lisätietoja',\r\n modeDescription: 'Anna käyttäjien {mode} karttaa',\r\n read: 'lukea',\r\n edit: 'muokata',\r\n },\r\n json: {\r\n configTitle: 'Kartan asetukset',\r\n configDisclaimer:\r\n 'Kartan asetukset sisältyvät Json-tiedostoon. Jos käytät kirjastoa MapLab.world omassa sovelluksessasi. Voit kopioida asetukset ja antaa ne funktiolle: ',\r\n selection:\r\n 'Vie kyseisen kartan aineistot ja asetukset yhdessä json-tiedostossa. Voit myöhemmin avata saman kartan lataamalla tiedoston MapLab.world:n',\r\n disclaimer:\r\n '* Kartan asetukset ovat sidoksissa ladattuihin aineistoihin. Arvoa ‘dataId’ käytetään tasojen, suodattimien ja vihjeiden liittämiseksi tiettyyn aineistoon. ' +\r\n 'Varmista, että aineiston dataId:t vastaavat asetusten arvoja jos lataat asetukset käyttäen `addDataToMap`-funktiolle.',\r\n },\r\n },\r\n loadingDialog: {\r\n loading: 'Ladataan...',\r\n },\r\n loadData: {\r\n upload: 'Lataa tiedostot',\r\n storage: 'Lataa tallennustilasta',\r\n },\r\n tripInfo: {\r\n title: 'Kuinka käyttää matka-animaatiota',\r\n description1:\r\n 'Reitin animoimiseksi geoJSON-aineiston täytyy olla geometriatyypiltään `LineString`, LineString-koordinaattien täytyy sisältää 4 elementtiä formaatissa:',\r\n code: ' [pituusaste, leveysaste, korkeus, aikaleima] ',\r\n description2:\r\n 'siten, että viimeinen elementti on aikaleima. Aikaleima voi olla muodoltaan unix-sekunteja, kuten `1564184363` tai millisekunteja, kuten `1564184363000`.',\r\n example: 'Esimerkki:',\r\n },\r\n iconInfo: {\r\n title: 'Miten piirtää kuvia',\r\n description1:\r\n 'csv-tiedostossasi, luo sarake nimeltä icon. Voit jättää sen tyhjäksi jos et halua piirtää kuvaa joillain pisteillä. Kun sarakkeen nimi on ',\r\n code: 'icon',\r\n description2: ' MapLab.world luo automaattisesti kuvatason sinua varten.',\r\n example: 'Esimerkki:',\r\n icons: 'Kuvat',\r\n },\r\n storageMapViewer: {\r\n lastModified: 'Viimeksi muokattu {lastUpdated} sitten',\r\n back: 'Takaisin',\r\n },\r\n overwriteMap: {\r\n title: 'Tallennetaan karttaa...',\r\n alreadyExists: 'on jo {mapSaved}:ssa. Haluatko ylikirjoittaa sen?',\r\n },\r\n loadStorageMap: {\r\n back: 'Takaisin',\r\n goToPage: 'Mene MapLab.world {displayName} sivullesi',\r\n storageMaps: 'Tallennus / Kartat',\r\n noSavedMaps: 'Ei tallennettuja karttoja vielä',\r\n },\r\n },\r\n header: {\r\n visibleLayers: 'Näkyvissä olevat tasot',\r\n layerLegend: 'Tason selite',\r\n },\r\n interactions: {\r\n tooltip: 'Vihje',\r\n brush: 'Harja',\r\n coordinate: 'Koordinaatit',\r\n },\r\n layerBlending: {\r\n title: 'Tasojen sekoittuvuus',\r\n additive: 'lisäävä',\r\n normal: 'normaali',\r\n subtractive: 'vähentävä',\r\n },\r\n columns: {\r\n title: 'Sarakkeet',\r\n lat: 'lat',\r\n lng: 'lng',\r\n altitude: 'korkeus',\r\n icon: 'kuva',\r\n geojson: 'geojson',\r\n arc: {\r\n lat0: 'lähdön lat',\r\n lng0: 'lähdön lng',\r\n lat1: 'kohteen lat',\r\n lng1: 'kohteen lng',\r\n },\r\n line: {\r\n alt0: 'lähteen korkeus',\r\n alt1: 'kohde korkeus',\r\n },\r\n grid: {\r\n worldUnitSize: 'Ruutujen koko (km)',\r\n },\r\n hexagon: {\r\n worldUnitSize: 'Hexagonien säde (km)',\r\n },\r\n },\r\n color: {\r\n customPalette: 'Mukautettu paletti',\r\n steps: 'askeleet',\r\n type: 'tyyppi',\r\n reversed: 'käänteinen',\r\n },\r\n scale: {\r\n colorScale: 'Värin skaala',\r\n sizeScale: 'Koon skaala',\r\n strokeScale: 'Viivan paksuuden skaala',\r\n scale: 'Skaala',\r\n },\r\n fileUploader: {\r\n message: 'Raahaa ja pudota tiedostosi tänne',\r\n chromeMessage:\r\n '*Chromen käyttäjä: Rajoita tiedostokokosi 250Mb:hen. Jos haluat suurempia tiedostoja, kokeile Safaria',\r\n disclaimer:\r\n '*MapLab.world on client-side sovellus, data pysyy vain selaimessasi... Tietoja ei lähetetä palvelimelle.',\r\n configUploadMessage:\r\n 'Lisää {fileFormatNames} tai tallennettu kartta **Json**. Lue lisää [**tuetuista formaateista**]',\r\n browseFiles: 'selaa tiedostojasi',\r\n uploading: 'ladataan',\r\n fileNotSupported: 'Tiedosto {errorFiles} ei ole tuettu.',\r\n or: 'tai',\r\n },\r\n density: 'tiheys',\r\n 'Bug Report': 'Bugiraportointi',\r\n 'User Guide': 'Opas',\r\n Save: 'Tallenna',\r\n Share: 'Jaa',\r\n}\r\n","export default {\r\n property: {\r\n weight: 'pondération',\r\n label: 'label',\r\n fillColor: 'couleur de remplissage',\r\n color: 'couleur',\r\n coverage: 'couverture',\r\n strokeColor: 'couleur du contour',\r\n radius: 'rayon',\r\n outline: 'contour',\r\n stroke: 'contour',\r\n density: 'densité',\r\n height: 'hauteur',\r\n sum: 'somme',\r\n pointCount: 'Nombre de points',\r\n },\r\n placeholder: {\r\n search: 'Rechercher',\r\n selectField: 'Sélectionner un champ',\r\n yAxis: 'Axe Y',\r\n selectType: 'Sélectionner un type',\r\n selectValue: 'Sélectionner une valeur',\r\n enterValue: 'Entrer une valeur',\r\n empty: 'vide',\r\n },\r\n misc: {\r\n by: '',\r\n valuesIn: 'Valeurs dans',\r\n valueEquals: 'Valeurs égales à',\r\n dataSource: 'Source de données',\r\n brushRadius: 'Rayon du cercle(km)',\r\n empty: ' ',\r\n },\r\n mapLayers: {\r\n title: 'Couches cartographiques',\r\n label: 'Label',\r\n road: 'Route',\r\n border: 'Limites',\r\n building: 'Bâtiments',\r\n water: 'Eau',\r\n land: 'Terre',\r\n '3dBuilding': 'Bâtiment 3D',\r\n },\r\n panel: {\r\n text: {\r\n label: 'label',\r\n labelWithId: 'Label {labelId}',\r\n fontSize: 'Taille de police',\r\n fontColor: 'couleur de police',\r\n textAnchor: 'Texte',\r\n alignment: 'Alignement',\r\n addMoreLabel: 'Ajouter un autre label',\r\n },\r\n },\r\n sidebar: {\r\n panels: {\r\n layer: 'Couches',\r\n filter: 'Filtres',\r\n interaction: 'Interactions',\r\n basemap: 'Fond de carte',\r\n },\r\n },\r\n layer: {\r\n required: 'Obligatoire*',\r\n radius: 'Rayon',\r\n color: 'Couleur',\r\n fillColor: 'Couleur de remplissage',\r\n outline: 'Contour',\r\n weight: 'Pondération',\r\n propertyBasedOn: '{propriété} basée sur',\r\n coverage: 'Couverture',\r\n stroke: 'contour',\r\n strokeWidth: 'Épaisseur du contour',\r\n strokeColor: 'Couleur du contour',\r\n basic: 'Basique',\r\n trailLength: 'Longueur du trajet',\r\n trailLengthDescription: 'Durée en secondes pour disparition totale du trajet',\r\n newLayer: 'Nouvelle couche',\r\n elevationByDescription: 'Si désactivé, la hauteur est basée sur le nombre de points',\r\n colorByDescription: 'Si désactivé, la couleur est basée sur le nombre de points',\r\n aggregateBy: 'Agréger {champ} par',\r\n '3DModel': 'Modèle 3D',\r\n '3DModelOptions': 'Options du modèle 3D',\r\n type: {\r\n point: 'point',\r\n arc: 'arc',\r\n line: 'ligne',\r\n grid: 'grille',\r\n hexbin: 'hexbin',\r\n polygon: 'polygone',\r\n geojson: 'geojson',\r\n cluster: 'cluster',\r\n icon: 'icône',\r\n heatmap: 'heatmap',\r\n hexagon: 'hexagone',\r\n hexagonid: 'H3',\r\n trip: 'voyage',\r\n s2: 'S2',\r\n '3d': '3D',\r\n },\r\n },\r\n layerVisConfigs: {\r\n angle: 'Angle',\r\n strokeWidth: 'Épaisseur du contour (Pixels)',\r\n strokeWidthRange: 'Intervalle d’épaisseur',\r\n radius: 'Rayon',\r\n fixedRadius: 'Rayon fixé en mètre',\r\n fixedRadiusDescription: 'Rayon de la carte en rayon absolu en mètre, exemple 5 à 5 mètres',\r\n radiusRange: 'Intervalle du rayon ',\r\n clusterRadius: ' Rayon du cluster en pixels',\r\n radiusRangePixels: 'Intervalle du rayon en pixels',\r\n opacity: 'Opacité',\r\n coverage: 'Couverture',\r\n outline: 'Bordure/Contour',\r\n colorRange: 'Gamme de couleurs',\r\n stroke: 'contour',\r\n strokeColor: 'Couleur du contour',\r\n strokeColorRange: 'Gamme de couleurs du contour',\r\n targetColor: 'Couleur de la cible',\r\n colorAggregation: 'Couleur d’agrégation',\r\n heightAggregation: 'Hauteur d’agrégation',\r\n resolutionRange: 'Plage de résolution',\r\n sizeScale: ' Échelle de calibre',\r\n worldUnitSize: 'Unité de taille mondiale',\r\n elevationScale: 'Échelle d’élévation',\r\n heightScale: ' Échelle de hauteur',\r\n coverageRange: 'Intervalle de couverture',\r\n highPrecisionRendering: 'Interprétation à précision élevée',\r\n highPrecisionRenderingDescription:\r\n ' La précision élevée peut entraîner une diminution des performances du système ',\r\n height: 'Hauteur',\r\n heightDescription: 'Cliquer sur le bouton en haut à droite de la carte pour changer de vue en 3d',\r\n fill: 'Remplir',\r\n enablePolygonHeight: 'Activer la hauteur du polygone',\r\n showWireframe: 'Afficher en mode Fil de fer',\r\n weightIntensity: 'Intensité de pondération',\r\n zoomScale: 'Échelle de zoom ',\r\n heightRange: 'Intervalle de hauteur',\r\n },\r\n 'layerManager.addData': 'Ajouter des données',\r\n 'layerManager.addLayer': 'Ajouter une couche',\r\n 'layerManager.layerBlending': 'Fusion de couches',\r\n // layerManager: {\r\n // addData: 'Ajouter des données',\r\n // addLayer: 'Ajouter une couche',\r\n // layerBlending: 'Fusion de couches'\r\n // },\r\n mapManager: {\r\n mapStyle: 'Style de carte',\r\n addMapStyle: 'Ajouter un style de carte',\r\n '3dBuildingColor': 'Couleur de bâtiment en 3D',\r\n },\r\n layerConfiguration: {\r\n defaultDescription: 'Calculer {propriété} basé sur le champ selectionné ',\r\n howTo: 'Comment',\r\n },\r\n filterManager: {\r\n addFilter: 'Ajouter un filtre',\r\n },\r\n datasetTitle: {\r\n showDataTable: 'Afficher le tableau des données',\r\n removeDataset: 'Supprimer l’ensemble des données',\r\n },\r\n datasetInfo: {\r\n rowCount: '{rowCount} enregistrements',\r\n },\r\n tooltip: {\r\n hideLayer: 'masquer la couche',\r\n showLayer: 'afficher la couche',\r\n hideFeature: 'Masquer la fonction',\r\n showFeature: 'Afficher la fonction',\r\n hide: 'masquer',\r\n show: 'afficher',\r\n removeLayer: 'Supprimer la couche',\r\n duplicateLayer: 'Dupliquer la couche',\r\n layerSettings: 'Paramètres des couches',\r\n closePanel: 'Fermer le panneau courant',\r\n switchToDualView: 'Basculer en mode d’affichage double',\r\n showLegend: 'afficher la légende',\r\n disable3DMap: 'Désactiver la carte en 3D',\r\n DrawOnMap: 'Dessiner sur la carte',\r\n selectLocale: 'Langue',\r\n hideLayerPanel: 'Masquer le panneau des couches',\r\n showLayerPanel: 'Afficher le panneau des couches',\r\n moveToTop: 'Aller en tête des couches de données',\r\n selectBaseMapStyle: ' Sélectionner le style de la carte de base',\r\n delete: 'Supprimer',\r\n timePlayback: 'Lecture en temps',\r\n cloudStorage: 'Stockage Cloud',\r\n '3DMap': 'Carte 3D',\r\n animationByWindow: 'Fenêtre de temps mobile',\r\n animationByIncremental: 'Fenêtre de temps incrémentale',\r\n speed: 'vitesse',\r\n play: 'Lecture',\r\n pause: 'pause',\r\n reset: 'remettre à zéro',\r\n },\r\n toolbar: {\r\n exportImage: 'Exporter l’image',\r\n exportData: 'Exporter les données',\r\n exportMap: 'Exporter la carte',\r\n shareMapURL: 'Partager l’URL de la carte',\r\n saveMap: 'Sauvegarder la carte',\r\n select: 'Sélectionner',\r\n polygon: 'Polygone',\r\n rectangle: 'Rectangle',\r\n hide: 'Masquer',\r\n show: 'Afficher',\r\n en: 'English',\r\n fi: 'Suomi',\r\n pt: 'Português',\r\n sv: 'Svenska',\r\n fr: 'Française',\r\n },\r\n modal: {\r\n title: {\r\n deleteDataset: 'Supprimer l’ensemble des données',\r\n addDataToMap: 'Ajouter des données à la carte',\r\n exportImage: 'Exporter l’image',\r\n exportData: 'Exporter les données',\r\n exportMap: 'Exporter la carte',\r\n addCustomMapboxStyle: 'Ajouter un style de mapbox personnalisé',\r\n saveMap: 'Sauvegarder la carte',\r\n shareURL: 'Partager l’URL',\r\n },\r\n button: {\r\n delete: 'Supprimer',\r\n download: 'Télécharger',\r\n export: 'Exporter',\r\n addStyle: 'Ajouter un style',\r\n save: 'Sauvegarder',\r\n defaultCancel: 'Annuler',\r\n defaultConfirm: 'Confirmer',\r\n },\r\n exportImage: {\r\n ratioTitle: 'ratio',\r\n ratioDescription: 'Choisir le ratio pour plusieurs utilisations.',\r\n ratioOriginalScreen: 'écran original',\r\n ratioCustom: 'Personnalisé',\r\n ratio4_3: '4:3',\r\n ratio16_9: '16:9',\r\n resolutionTitle: 'Résolution',\r\n resolutionDescription: ' La haute résolution est toujours mieux pour les impressions',\r\n mapLegendTitle: 'Légende de la carte',\r\n mapLegendAdd: 'Ajouter une légende sur la carte',\r\n },\r\n exportData: {\r\n datasetTitle: 'Ensemble de données',\r\n datasetSubtitle: 'Choisir l’ensemble de données que vous voulez exporter',\r\n allDatasets: 'Tout',\r\n dataTypeTitle: 'Type de données',\r\n dataTypeSubtitle: 'Choisir le type de données que vous voulez exporter',\r\n filterDataTitle: 'Filtrer les données',\r\n filterDataSubtitle: 'Vous pouvez choisir d’exporter des données originales ou filtrées',\r\n filteredData: ' Données filtrées. ',\r\n unfilteredData: ' Données non filtrées ',\r\n fileCount: '{fileCount} Fichier',\r\n rowCount: '{rowCount} enregistrements',\r\n },\r\n deleteData: {\r\n warning: 'Vous allez supprimer cet ensemble de données. Ça pourrait affecter {length} les couches ',\r\n },\r\n addStyle: {\r\n publishTitle: '1. Publier votre style sur mapbox ou bien fournir un jeton d’accès',\r\n publishSubtitle1: 'Vous pouvez créeer votre propre style de carte',\r\n publishSubtitle2: 'et',\r\n publishSubtitle3: 'le',\r\n publishSubtitle4: 'publier.',\r\n publishSubtitle5: 'Pour utiliser votre style privé, coller votre',\r\n publishSubtitle6: 'jeton d’accès',\r\n publishSubtitle7: 'ici. *MapLab.world est une application client, les données restent sur votre navigateur..',\r\n exampleToken: 'exp. pk.abcdefg.xxxxxx',\r\n pasteTitle: '2. Collez le style d’URL',\r\n pasteSubtitle1: 'Qu’est-ce qu’un',\r\n pasteSubtitle2: 'style d’URL',\r\n namingTitle: '3. Nommez votre style',\r\n },\r\n shareMap: {\r\n shareUriTitle: 'Partagez l’URL de la carte',\r\n shareUriSubtitle: ' Créer une URL de la carte pour le partage',\r\n cloudTitle: ' Stockage Cloud',\r\n cloudSubtitle: ' Connectez-vous et chargez vos données de carte dans votre stockage cloud personnel',\r\n shareDisclaimer:\r\n 'MapLab.world enregistrera vos données de carte sur votre stockage cloud personnel, seules les personnes qui disposent de l’URL pourront accèder à votre carte et vos données. Vous pouvez modifier/supprimer les fichiers de données sur votre compte de stockage cloud à tout moment.',\r\n gotoPage: 'Allez sur votre page {currentProvider} MapLab.world ',\r\n },\r\n statusPanel: {\r\n mapUploading: 'Chargement de la carte',\r\n error: 'Erreur',\r\n },\r\n saveMap: {\r\n title: 'Stockage Cloud',\r\n subtitle: 'Connectez-vous pour sauvegarder vos données de carte sur votre stockage cloud personnel ',\r\n },\r\n exportMap: {\r\n formatTitle: 'Format de la carte',\r\n formatSubtitle: ' Choisissez le format qui vous convient le mieux pour exporter votre carte',\r\n html: {\r\n selection: 'Exportez votre carte en fichier html interactif.',\r\n tokenTitle: ' Jeton d’accès du Mapbox',\r\n tokenSubtitle: 'Utilisez votre propre jeton d’accès du Mapbox dans l’html (optionnel) ',\r\n tokenPlaceholder: 'Collez votre jeton d’accès du Mapbox',\r\n tokenMisuseWarning:\r\n '*Si vous ne fournissez pas votre propre jeton, la carte risque de ne pas s’afficher à chaque fois qu’on replace la nôtre pour éviter toute utilisation incorrecte ',\r\n tokenDisclaimer: ' Vous pouvez changer le jeton du Mapbox ultérieurement en suivant ces instructions :',\r\n tokenUpdate: ' Comment mettre à jour un jeton existant.',\r\n modeTitle: 'Mode de la carte',\r\n modeSubtitle1: 'Selectionnez le mode d’application. Plus ',\r\n modeSubtitle2: 'info',\r\n modeDescription: 'Autorisez des utilisateur à {mode} la carte',\r\n read: 'lire',\r\n edit: 'modifier',\r\n },\r\n json: {\r\n configTitle: 'Configuration de la carte',\r\n configDisclaimer:\r\n 'La configuration de la carte sera incluse dans le fichier Json. Si vous utilisez MapLab.world sur votre propre application, vous pouvez copier cette configuration et la passer à ',\r\n selection:\r\n 'Exporter les données actuelles de la carte et les configurer dans un seul fichier Json. Vous pouvez, utlérieurement, ouvrir la même carte en chargeant ce fichier sur MapLab.world ',\r\n disclaimer:\r\n '* La configuration de la carte est couplé en ensembles de données chargées. ‘dataId’ est utilisé pour lier des couches, des filtres et des info-bulles à un ensemble de données spécifique. En passant cette configuration à addDataToMap, assurez vous que l’identifiant de l’ensemble de données correspond à dataId/s dans cette configuration. ',\r\n },\r\n },\r\n loadingDialog: {\r\n loading: 'Chargement…',\r\n },\r\n loadData: {\r\n upload: 'Charger des fichiers',\r\n storage: 'Charger depuis stockage',\r\n },\r\n tripInfo: {\r\n title: 'Comment activer l’animation voyage',\r\n description1:\r\n 'Afin d’animer la trajectoire, les données geoJSON doivent contenir ‘LineString’ and sa fonction géométrie, et les coordonnées dans la LineString doivent avoir 4 éléments dont le format est',\r\n code: ' [longitude, latitude, altitude, timestamp] ',\r\n description2:\r\n 'le dernier élément étant un horodatage. Les formats valides sont en unix aux formats secondes comme `1564184363` ou en millisecondes comme `1564184363000`.',\r\n example: 'Exemple:',\r\n },\r\n iconInfo: {\r\n title: 'Comment dessiner des icônes',\r\n description1:\r\n 'Dans votre csv, créez une colonne, mettez le nom de l’icône dans laquelle vous voulez dessiner. Vous pouvez laisser la cellule vide si vous ne voulez pas que l’icône s’affiche pour quelques points. Quand la colonne est nommée',\r\n code: 'icône',\r\n description2: ' MapLab.world va automatiquement créer une couche icône pour vous.',\r\n example: 'Exemple:',\r\n icons: 'Icônes',\r\n },\r\n storageMapViewer: {\r\n lastModified: 'Modifié il y’a {lastUpdated}',\r\n back: 'Retour',\r\n },\r\n overwriteMap: {\r\n title: 'Sauvegarder la carte...',\r\n alreadyExists: 'existe déjà sur votre {mapSaved}. Souhaitez-vous la remplacer ?',\r\n },\r\n loadStorageMap: {\r\n back: 'Retour',\r\n goToPage: 'Allez sur votre page MapLab.world {displayName}',\r\n storageMaps: 'Stockage / Cartes',\r\n noSavedMaps: 'Pas de cartes enregistrées',\r\n },\r\n },\r\n header: {\r\n visibleLayers: 'Couches visibles',\r\n layerLegend: 'Légende de la couche',\r\n },\r\n interactions: {\r\n tooltip: 'Info-bulle',\r\n brush: 'Brosse',\r\n coordinate: 'Coordonnées',\r\n geocoder: ' Géocodeur',\r\n },\r\n layerBlending: {\r\n title: 'Fusion des couches',\r\n additive: 'additive',\r\n normal: 'normal',\r\n subtractive: 'soustractive',\r\n },\r\n columns: {\r\n title: 'Colonnes',\r\n lat: 'lat',\r\n lng: 'lon',\r\n altitude: 'altitude',\r\n icon: 'icône',\r\n geojson: 'geojson',\r\n token: 'jeton',\r\n arc: {\r\n lat0: 'lat de la source',\r\n lng0: 'lng de la source',\r\n lat1: ' lat de la cible',\r\n lng1: ' lng de la cible',\r\n },\r\n grid: {\r\n worldUnitSize: 'Taille de grille (km)',\r\n },\r\n hexagon: {\r\n worldUnitSize: 'Rayon de l’hexagone (km)',\r\n },\r\n hex_id: 'hex id',\r\n },\r\n color: {\r\n customPalette: 'Palette personnalisée ',\r\n steps: 'échelons',\r\n type: 'type',\r\n reversed: 'inversée',\r\n },\r\n scale: {\r\n colorScale: 'Échelle de couleur',\r\n sizeScale: ' Échelle de calibre',\r\n strokeScale: 'Échelle du contour ',\r\n scale: ' Échelle',\r\n },\r\n fileUploader: {\r\n message: 'Glisser-déposer vos fichiers ici',\r\n chromeMessage:\r\n '*Utilisateur Chrome: Limiter la taille du fichier à 250mb, si besoin de charger un fichier plus grand, essayer Safari',\r\n disclaimer: ' ',\r\n configUploadMessage:\r\n 'Charger {fileFormatNames} ou une carte enregistrée **Json**. Savoir plus sur [**les formats des fichiers supportés**]',\r\n browseFiles: 'naviguer vos fichiers ',\r\n uploading: 'Chargement',\r\n fileNotSupported: 'Le fichier {errorFiles} n’est pas pris en charge.',\r\n or: 'ou',\r\n },\r\n geocoder: {\r\n title: 'Entrer une adresse ou des coordonnées, exp 37.79,-122.40',\r\n },\r\n fieldSelector: {\r\n clearAll: 'Tout effacer',\r\n formatting: 'Mise en forme',\r\n },\r\n compare: {\r\n modeLabel: 'Mode comparaison',\r\n typeLabel: 'Type de comparaison',\r\n types: {\r\n absolute: 'Absolu',\r\n relative: 'Relatif',\r\n },\r\n },\r\n mapPopover: {\r\n primary: 'Primaire',\r\n },\r\n density: 'densité',\r\n 'Bug Report': 'Rapport d’erreur',\r\n 'User Guide': 'Guide d’utilisateur',\r\n Save: 'Sauvegarder',\r\n Share: 'Partager',\r\n}\r\n","// Copyright (c) 2021 Uber Technologies, Inc.\r\n//\r\n// Permission is hereby granted, free of charge, to any person obtaining a copy\r\n// of this software and associated documentation files (the \"Software\"), to deal\r\n// in the Software without restriction, including without limitation the rights\r\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n// copies of the Software, and to permit persons to whom the Software is\r\n// furnished to do so, subject to the following conditions:\r\n//\r\n// The above copyright notice and this permission notice shall be included in\r\n// all copies or substantial portions of the Software.\r\n//\r\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n// THE SOFTWARE.\r\n\r\n// eslint-disable-next-line absolute-import/no-relative-path\r\nimport { LOCALES } from './locales'\r\n\r\nexport default {\r\n property: {\r\n weight: '重み',\r\n label: 'ラベル',\r\n fillColor: '塗りつぶしの色',\r\n color: '色',\r\n coverage: 'カバー率',\r\n strokeColor: '線の色',\r\n radius: '半径',\r\n outline: '輪郭線',\r\n stroke: '線の太さ',\r\n density: '密度',\r\n height: '高さ',\r\n sum: '合計',\r\n pointCount: '点の数',\r\n },\r\n placeholder: {\r\n search: '検索',\r\n selectField: 'フィールドを選択',\r\n yAxis: 'Y軸',\r\n selectType: 'タイプを選択',\r\n selectValue: '値を選択',\r\n enterValue: '値を入力',\r\n empty: '未選択',\r\n },\r\n misc: {\r\n by: '',\r\n valuesIn: '値が以下に含まれる',\r\n valueEquals: '値が以下に等しい',\r\n dataSource: 'データソース',\r\n brushRadius: 'ブラシ半径 (km)',\r\n empty: ' ',\r\n },\r\n mapLayers: {\r\n title: '地図レイヤ',\r\n label: 'ラベル',\r\n road: '道路',\r\n border: '境界線',\r\n building: '建物',\r\n water: '水',\r\n land: '地面',\r\n '3dBuilding': '3D建物',\r\n },\r\n panel: {\r\n text: {\r\n label: 'ラベル',\r\n labelWithId: 'ラベル {labelId}',\r\n fontSize: '文字サイズ',\r\n fontColor: '文字色',\r\n textAnchor: '文字左右',\r\n alignment: '文字上下',\r\n addMoreLabel: 'ラベルを追加',\r\n },\r\n },\r\n sidebar: {\r\n panels: {\r\n layer: 'レイヤ',\r\n filter: 'フィルター',\r\n interaction: 'インタラクション',\r\n basemap: 'ベースマップ',\r\n },\r\n },\r\n layer: {\r\n required: '必須*',\r\n radius: '半径',\r\n color: '色',\r\n fillColor: '塗りつぶしの色',\r\n outline: '輪郭線',\r\n weight: '重み',\r\n propertyBasedOn: '{property}の基準',\r\n coverage: 'カバー率',\r\n stroke: '線',\r\n strokeWidth: '線の太さ',\r\n strokeColor: '線の色',\r\n basic: '基本設定',\r\n trailLength: '痕跡の長さ',\r\n trailLengthDescription: '痕跡が完全に消えるまでの秒数',\r\n newLayer: '新しいレイヤ',\r\n elevationByDescription: 'オフの場合、高さは点の数に応じて決まります',\r\n colorByDescription: 'オフの場合、色は点の数に応じて決まります',\r\n aggregateBy: '{field}を以下で集計: ',\r\n '3DModel': '3Dモデル',\r\n '3DModelOptions': '3Dモデルのオプション',\r\n type: {\r\n point: 'point',\r\n arc: 'arc',\r\n line: 'line',\r\n grid: 'grid',\r\n hexbin: 'hexbin',\r\n polygon: 'polygon',\r\n geojson: 'geojson',\r\n cluster: 'cluster',\r\n icon: 'icon',\r\n heatmap: 'heatmap',\r\n hexagon: 'hexagon',\r\n hexagonid: 'H3',\r\n trip: 'trip',\r\n s2: 'S2',\r\n '3d': '3D',\r\n },\r\n },\r\n layerVisConfigs: {\r\n angle: '角度',\r\n strokeWidth: '線の太さ (ピクセル)',\r\n strokeWidthRange: '線の太さの範囲',\r\n radius: '半径',\r\n fixedRadius: '半径をメートルで固定',\r\n fixedRadiusDescription: '半径をメートル単位の絶対半径に変換します(例: 5 → 5メートル)',\r\n radiusRange: '半径の範囲',\r\n clusterRadius: 'クラスターの範囲[ピクセル]',\r\n radiusRangePixels: '半径の範囲[ピクセル]',\r\n opacity: '不透明度',\r\n coverage: 'カバー率',\r\n outline: '輪郭線',\r\n colorRange: '色の範囲',\r\n stroke: '線',\r\n strokeColor: '線の色',\r\n strokeColorRange: '線の色の範囲',\r\n targetColor: 'Targetの色',\r\n colorAggregation: '色の集計',\r\n heightAggregation: '高さの集計',\r\n resolutionRange: '解像度の範囲',\r\n sizeScale: 'サイズのスケール',\r\n worldUnitSize: 'World Unit Size',\r\n elevationScale: '標高のスケール',\r\n enableElevationZoomFactor: '標高ズーム係数を使用する',\r\n enableElevationZoomFactorDescription: '現在のズーム率に基づいて高さ/標高を調整します',\r\n enableHeightZoomFactor: '高さズーム係数を使用する',\r\n heightScale: '高さのスケール',\r\n coverageRange: 'カバー率の範囲',\r\n highPrecisionRendering: '高精度レンダリング',\r\n highPrecisionRenderingDescription: '高精度にすると速度は低下します',\r\n height: '高さ',\r\n heightDescription: '3Dビューに切り替えるには画面右上のボタンをクリックします',\r\n fill: '塗りつぶし',\r\n enablePolygonHeight: 'ポリゴンの高さを有効にする',\r\n showWireframe: 'ワイヤーフレームを表示',\r\n weightIntensity: '重みづけの強さ',\r\n zoomScale: 'ズームのスケール',\r\n heightRange: '高さの範囲',\r\n heightMultiplier: '高さ乗数',\r\n },\r\n layerManager: {\r\n addData: 'データ追加',\r\n addLayer: 'レイヤ追加',\r\n layerBlending: 'レイヤのブレンド',\r\n },\r\n mapManager: {\r\n mapStyle: 'マップスタイル',\r\n addMapStyle: 'マップスタイル追加',\r\n '3dBuildingColor': '3D建物の色',\r\n },\r\n layerConfiguration: {\r\n defaultDescription: '選択されたフィールドに基づいて{property}を計算します',\r\n howTo: '使い方',\r\n },\r\n filterManager: {\r\n addFilter: 'フィルター追加',\r\n },\r\n datasetTitle: {\r\n showDataTable: 'データ表を表示',\r\n removeDataset: 'データセットを削除',\r\n },\r\n datasetInfo: {\r\n rowCount: '{rowCount}行',\r\n },\r\n tooltip: {\r\n hideLayer: 'レイヤを非表示',\r\n showLayer: 'レイヤを表示',\r\n hideFeature: 'フィーチャーを非表示',\r\n showFeature: 'フィーチャーを表示',\r\n hide: '非表示にする',\r\n show: '表示する',\r\n removeLayer: 'レイヤを削除',\r\n duplicateLayer: 'レイヤを複製',\r\n layerSettings: 'レイヤ設定',\r\n closePanel: 'このパネルを閉じる',\r\n switchToDualView: 'デュアルビューに切り替え',\r\n showLegend: '凡例を表示',\r\n disable3DMap: '3D地図を無効化',\r\n DrawOnMap: '地図上に図形を描画',\r\n selectLocale: '言語設定',\r\n hideLayerPanel: 'レイヤパネルを非表示',\r\n showLayerPanel: 'レイヤパネルを表示',\r\n moveToTop: 'データレイヤの手前に移動',\r\n selectBaseMapStyle: 'ベースマップのスタイルを選択',\r\n delete: '削除',\r\n timePlayback: '時系列で再生',\r\n cloudStorage: 'クラウドストレージ',\r\n '3DMap': '3D地図',\r\n animationByWindow: '時間枠を移動',\r\n animationByIncremental: '時間枠を増加',\r\n speed: '速度',\r\n play: '再生',\r\n pause: '一時停止',\r\n reset: 'リセット',\r\n },\r\n toolbar: {\r\n exportImage: '画像を出力',\r\n exportData: 'データを出力',\r\n exportMap: '地図を出力',\r\n shareMapURL: '地図のURLを共有',\r\n saveMap: '地図を保存',\r\n select: '選択',\r\n polygon: 'ポリゴン',\r\n rectangle: '長方形',\r\n hide: '非表示',\r\n show: '表示',\r\n ...LOCALES,\r\n },\r\n modal: {\r\n title: {\r\n deleteDataset: 'データセットを削除',\r\n addDataToMap: '地図にデータを追加',\r\n exportImage: '画像を出力',\r\n exportData: 'データを出力',\r\n exportMap: '地図を出力',\r\n addCustomMapboxStyle: 'カスタムマップスタイルを追加',\r\n saveMap: '地図を保存',\r\n shareURL: 'URLを共有',\r\n },\r\n button: {\r\n delete: '削除',\r\n download: 'ダウンロード',\r\n export: '出力',\r\n addStyle: 'スタイル追加',\r\n save: '保存',\r\n defaultCancel: 'キャンセル',\r\n defaultConfirm: '確認',\r\n },\r\n exportImage: {\r\n ratioTitle: '縦横比',\r\n ratioDescription: '用途に適した縦横比を選択します。',\r\n ratioOriginalScreen: '元のスクリーンサイズ',\r\n ratioCustom: 'カスタム',\r\n ratio4_3: '4:3',\r\n ratio16_9: '16:9',\r\n resolutionTitle: '解像度',\r\n resolutionDescription: '印刷には高解像度が適しています。',\r\n mapLegendTitle: '地図の凡例',\r\n mapLegendAdd: '地図に判例を追加',\r\n },\r\n exportData: {\r\n datasetTitle: 'データセット',\r\n datasetSubtitle: 'エクスポートしたいデータセットを選択します',\r\n allDatasets: '全て',\r\n dataTypeTitle: 'データ形式',\r\n dataTypeSubtitle: 'エクスポートしたいデータ形式を選択します',\r\n filterDataTitle: 'データのフィルタ',\r\n filterDataSubtitle: '元データ(フィルタなし)とフィルタ済データのどちらをエクスポートするか選択します',\r\n filteredData: 'フィルタ済データ',\r\n unfilteredData: '元データ',\r\n fileCount: '{fileCount}個のファイル',\r\n rowCount: '{rowCount}行',\r\n },\r\n deleteData: {\r\n warning: 'このデータセットを削除します。{length}個のレイヤに影響します。',\r\n },\r\n addStyle: {\r\n publishTitle:\r\n '2. ステップ1でMapboxのスタイルURLを指定した場合、Mapboxでスタイルを公開するか、アクセストークンを以下に入力します(オプション)',\r\n publishSubtitle1: '独自のスタイルを',\r\n publishSubtitle2: 'で作成し、',\r\n publishSubtitle3: '公開',\r\n publishSubtitle4: 'することができます',\r\n publishSubtitle5: '非公開のスタイルを使用するには、自身の',\r\n publishSubtitle6: 'アクセストークン',\r\n publishSubtitle7:\r\n 'をここに入力します。*MapLab.worldはクライアント上で動作するため、データは自身のブラウザに保持されます。',\r\n exampleToken: '例) pk.abcdefg.xxxxxx',\r\n pasteTitle: '1. スタイルのURLをペースト',\r\n pasteSubtitle0: 'スタイルのURLはMapboxの',\r\n pasteSubtitle1: 'What is a',\r\n pasteSubtitle2: 'スタイルURL',\r\n pasteSubtitle3: 'を指定するか、Mapbox GLの仕様に沿ったstyle.jsonのURLを指定します:',\r\n pasteSubtitle4: 'Mapbox GL スタイル仕様',\r\n namingTitle: '3. スタイルの名称を設定',\r\n },\r\n shareMap: {\r\n shareUriTitle: '地図のURLを共有',\r\n shareUriSubtitle: '共有用に地図のURLを生成',\r\n cloudTitle: 'クラウドストレージ',\r\n cloudSubtitle: 'ログインして地図データを個人用クラウドストレージにアップロード',\r\n shareDisclaimer:\r\n 'MapLab.worldは作成した地図をあなたのクラウドストレージに保存するため、そのURLを知っている人のみが地図やそのデータにアクセス可能です。' +\r\n 'クラウドストレージのアカウントでいつでもデータファイルを編集/削除することができます。',\r\n gotoPage: 'MapLab.worldの{currentProvider}ページに移動',\r\n },\r\n statusPanel: {\r\n mapUploading: '地図をアップロード中',\r\n error: 'エラー',\r\n },\r\n saveMap: {\r\n title: 'クラウドストレージ',\r\n subtitle: '地図を個人用クラウドストレージに保存するためにログインする',\r\n },\r\n exportMap: {\r\n formatTitle: '地図の形式',\r\n formatSubtitle: '地図の出力形式を選択します',\r\n html: {\r\n selection: '地図をインタラクティブなHTMLファイルとして出力します。',\r\n tokenTitle: 'Mapboxアクセストークン',\r\n tokenSubtitle: 'HTMLファイルで自分のMapboxアクセストークンを使用します (オプション)',\r\n tokenPlaceholder: '自分のMapboxアクセストークンをここに貼り付け',\r\n tokenMisuseWarning:\r\n '* 自分のトークンを使用しない場合は、デフォルトのトークンが悪用防止のために更新され、地図が表示されなくなる可能性があります。 ',\r\n tokenDisclaimer: 'Mapboxのトークンは下記の方法に従って後から変更することも可能です:',\r\n tokenUpdate: '既存の地図のトークンを更新する方法',\r\n modeTitle: '地図のモード',\r\n modeSubtitle1: '地図のモードを選択します。詳細は',\r\n modeSubtitle2: 'こちら',\r\n modeDescription: 'ユーザーに地図の{mode}を許可',\r\n read: '閲覧',\r\n edit: '編集',\r\n },\r\n json: {\r\n configTitle: '地図の設定',\r\n configDisclaimer:\r\n '地図の設定はjsonファイルに収められます。他のアプリケーションでMapLab.worldを使用する場合、この設定をコピーペーストすることが可能です:',\r\n selection:\r\n '現在の地図データと設定を単一のjsonファイルに出力します。このファイルをMapLab.worldにアップロードすることで、同じ地図を後から開くことが可能になります。',\r\n disclaimer:\r\n '* 地図の設定は読み込まれたデータセットとセットになっています。‘dataId’によってレイヤ、フィルター、ツールチップは特定のデータセットに紐づけられます。 ' +\r\n 'この設定をaddDataToMapに渡す際は、データセットIDがこの設定内のdataIdと一致するようにしてください。',\r\n },\r\n },\r\n loadingDialog: {\r\n loading: 'ロード中...',\r\n },\r\n loadData: {\r\n upload: 'ファイルをロード',\r\n storage: 'ストレージからロード',\r\n },\r\n tripInfo: {\r\n title: '移動アニメーションを有効にする方法',\r\n description1:\r\n '経路をアニメーション化するには、geoJSONデータはfeatureのgeometryとして `LineString` を含む必要があります。また、LineStringの座標は4つの要素を',\r\n code: ' [経度, 緯度, 標高, timestamp] ',\r\n description2:\r\n 'という形式(最後にタイムスタンプを含む)で保持する必要があります。タイムスタンプの形式は、 UNIX時間の秒単位(例: `1564184363`)またはミリ秒単位(例: `1564184363000`)が有効です。',\r\n example: '例:',\r\n },\r\n iconInfo: {\r\n title: 'アイコンの描画方法',\r\n description1:\r\n 'CSVファイルに列を作成し、描画したいアイコンの名称を記載します。アイコンの描画が不要な点があれば、セルを空白にすることも可能です。列名が',\r\n code: 'icon',\r\n description2: 'の場合、MapLab.worldは自動的にアイコンレイヤを作成します。',\r\n example: '例:',\r\n icons: 'アイコン一覧',\r\n },\r\n storageMapViewer: {\r\n lastModified: '最終編集:{lastUpdated} 前',\r\n back: '戻る',\r\n },\r\n overwriteMap: {\r\n title: '地図を保存中...',\r\n alreadyExists: '既に{mapSaved}に存在します。上書きしますか?',\r\n },\r\n loadStorageMap: {\r\n back: '戻る',\r\n goToPage: 'MapLab.worldの{displayName}ページに移動',\r\n storageMaps: 'ストレージ / 地図',\r\n noSavedMaps: '保存済の地図はまだありません',\r\n },\r\n },\r\n header: {\r\n visibleLayers: '表示中のレイヤ',\r\n layerLegend: 'レイヤ判例',\r\n },\r\n interactions: {\r\n tooltip: 'ツールチップ',\r\n brush: 'ブラシ',\r\n coordinate: '座標',\r\n geocoder: 'ジオコーダー',\r\n },\r\n layerBlending: {\r\n title: 'レイヤのブレンド',\r\n additive: 'additive',\r\n normal: 'normal',\r\n subtractive: 'subtractive',\r\n },\r\n columns: {\r\n title: '列',\r\n lat: '緯度',\r\n lng: '経度',\r\n altitude: '標高',\r\n icon: 'アイコン',\r\n geojson: 'geojson',\r\n token: 'トークン',\r\n arc: {\r\n lat0: '出発 緯度',\r\n lng0: '出発 経度',\r\n lat1: '到着 緯度',\r\n lng1: '到着 経度',\r\n },\r\n grid: {\r\n worldUnitSize: 'グリッドサイズ (km)',\r\n },\r\n hexagon: {\r\n worldUnitSize: '六角形の半径 (km)',\r\n },\r\n hex_id: 'hex id',\r\n },\r\n color: {\r\n customPalette: 'カスタムパレット',\r\n steps: '段階数',\r\n type: 'タイプ',\r\n reversed: '反転',\r\n },\r\n scale: {\r\n colorScale: 'カラースケール',\r\n sizeScale: 'サイズのスケール',\r\n strokeScale: '線のスケール',\r\n scale: 'スケール',\r\n },\r\n fileUploader: {\r\n message: 'ここにファイルをドロップ(複数可)',\r\n chromeMessage:\r\n '*Chromeユーザーの場合: ファイルサイズは250mbまでにしてください。それ以上のファイルをアップロードする必要がある場合、Safariを試してください。',\r\n disclaimer:\r\n '*MapLab.worldはクライアント上で動作します。データは自身の機器・ブラウザにのみ保持されます。' +\r\n '情報や地図データは、いかなるサーバーにも送信されません。',\r\n configUploadMessage:\r\n '{fileFormatNames} または保存済地図の**Json**をアップロードします。詳細は以下を参照してください:[**対応ファイル形式**]',\r\n browseFiles: 'デバイスのファイルを選択',\r\n uploading: 'アップロード中',\r\n fileNotSupported: '{errorFiles} はサポートされていないファイルです。',\r\n or: 'or',\r\n },\r\n geocoder: {\r\n title: '住所または座標を入力(例: 37.79,-122.40)',\r\n },\r\n fieldSelector: {\r\n clearAll: '全て解除',\r\n formatting: '値の形式',\r\n },\r\n compare: {\r\n modeLabel: '比較モード',\r\n typeLabel: '比較方式',\r\n types: {\r\n absolute: '絶対',\r\n relative: '相対',\r\n },\r\n },\r\n mapPopover: {\r\n primary: 'プライマリ',\r\n },\r\n density: 'density',\r\n 'Bug Report': 'バグを報告',\r\n 'User Guide': 'ユーザーガイド',\r\n Save: '保存',\r\n Share: '共有',\r\n}\r\n","// Copyright (c) 2020 Uber Technologies, Inc.\r\n//\r\n// Permission is hereby granted, free of charge, to any person obtaining a copy\r\n// of this software and associated documentation files (the \"Software\"), to deal\r\n// in the Software without restriction, including without limitation the rights\r\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n// copies of the Software, and to permit persons to whom the Software is\r\n// furnished to do so, subject to the following conditions:\r\n//\r\n// The above copyright notice and this permission notice shall be included in\r\n// all copies or substantial portions of the Software.\r\n//\r\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n// THE SOFTWARE.\r\n\r\n// eslint-disable-next-line absolute-import/no-relative-path\r\nimport { LOCALES } from './locales'\r\n\r\nexport default {\r\n property: {\r\n weight: 'Espessura do texto',\r\n label: 'Rótulo',\r\n fillColor: 'Cor do preenchimento',\r\n color: 'Cor',\r\n strokeColor: 'Cor da borda',\r\n radius: 'Raio',\r\n outline: 'Contorno',\r\n stroke: 'Traçado',\r\n density: 'Densidade',\r\n height: 'Altura',\r\n sum: 'Soma',\r\n pointCount: 'Contagem de Pontos',\r\n },\r\n placeholder: {\r\n search: 'Pesquisar',\r\n selectField: 'Selecione um campo',\r\n yAxis: 'Eixo Y',\r\n selectType: 'Selecione um Tipo',\r\n selectValue: 'Selecione um valor',\r\n enterValue: 'Insira um valor',\r\n empty: 'Vazio',\r\n },\r\n misc: {\r\n by: '',\r\n valuesIn: 'Valores em',\r\n valueEquals: 'Valor igual a',\r\n dataSource: 'Origem dos dados',\r\n brushRadius: 'Raio do Traço (km)',\r\n empty: ' ',\r\n },\r\n mapLayers: {\r\n title: 'Camadas do mapa',\r\n label: 'Rótulo',\r\n road: 'Estrada',\r\n border: 'Fronteira',\r\n building: 'Edifícios',\r\n water: 'Água',\r\n land: 'Terra',\r\n '3dBuilding': 'Edifícios em 3d',\r\n },\r\n panel: {\r\n text: {\r\n label: 'Rótulo',\r\n labelWithId: 'Rótulo {labelId}',\r\n fontSize: 'Tamanho da fonte',\r\n fontColor: 'Cor da fonte',\r\n textAnchor: 'Âncora do texto',\r\n alignment: 'Alinhamento',\r\n addMoreLabel: 'Adicionar mais Rótulos',\r\n },\r\n },\r\n sidebar: {\r\n panels: {\r\n layer: 'Camadas',\r\n filter: 'Filtros',\r\n interaction: 'Interações',\r\n basemap: 'Mapa base',\r\n },\r\n },\r\n layer: {\r\n required: 'Obrigatório*',\r\n radius: 'Raio',\r\n color: 'Cor',\r\n fillColor: 'Cor de preenchimento',\r\n outline: 'Contorno',\r\n weight: 'Espessura',\r\n propertyBasedOn: '{property} baseada em',\r\n coverage: 'Cobertura',\r\n stroke: 'Traço',\r\n strokeWidth: 'Largura do Traçado',\r\n strokeColor: 'Cor do Traçado',\r\n basic: 'Básico',\r\n trailLength: 'Comprimento da trilha',\r\n trailLengthDescription: 'Número de segundos para um caminho completamente desaparecer',\r\n newLayer: 'nova camada',\r\n elevationByDescription: 'Quando desligado, a altura é baseada na contagem de pontos',\r\n colorByDescription: 'Quando desligado, a cor é baseada na contagem de pontos',\r\n aggregateBy: '{field} agregado por',\r\n '3DModel': 'Modelo 3D',\r\n '3DModelOptions': 'Opções do Modelo 3D',\r\n type: {\r\n point: 'ponto',\r\n arc: 'arco',\r\n line: 'linha',\r\n grid: 'grade',\r\n hexbin: 'hexágono',\r\n polygon: 'polígono',\r\n geojson: 'geojson',\r\n cluster: 'grupo',\r\n icon: 'icon',\r\n heatmap: 'mapa de calor',\r\n hexagon: 'hexágono',\r\n hexagonid: 'H3',\r\n trip: 'viagem',\r\n s2: 'S2',\r\n '3d': '3D',\r\n },\r\n },\r\n layerVisConfigs: {\r\n strokeWidth: 'Largura do Traço',\r\n strokeWidthRange: 'Alcance da Largura do Traço',\r\n radius: 'Raio',\r\n fixedRadius: 'Raio ajustado para metro',\r\n fixedRadiusDescription: 'Raio do Mapa para Raio absoluto em metros, e.g. 5 para 5 metros',\r\n radiusRange: 'Alcance do Raio',\r\n clusterRadius: 'Raio do Agrupamento em pixels',\r\n radiusRangePixels: 'Alcance do Raio em pixels',\r\n opacity: 'Opacidade',\r\n coverage: 'Cobertura',\r\n outline: 'Contorno',\r\n colorRange: 'Alcance da Cor',\r\n stroke: 'Traçado',\r\n strokeColor: 'Cor do Traçado',\r\n strokeColorRange: 'Alcance da Cor do Traçado',\r\n targetColor: 'Cor de destino',\r\n colorAggregation: 'Agregação da Cor',\r\n heightAggregation: 'Agregação da Altura',\r\n resolutionRange: 'Alcance da Resolução',\r\n sizeScale: 'Escala de tamanho',\r\n worldUnitSize: 'Tamanho unitário do mundo',\r\n elevationScale: 'Escala de Elevação',\r\n heightScale: 'Escala de Altura',\r\n coverageRange: 'Alcance de cobertura',\r\n highPrecisionRendering: 'Renderização de Alta Precisão',\r\n highPrecisionRenderingDescription: 'Alta precisão irá em resultar em baixa performance',\r\n height: 'Altura',\r\n heightDescription: 'Clique no botão no canto superior direito para trocar para a visualização 3d',\r\n fill: 'Preenchimento',\r\n enablePolygonHeight: 'Habilitar Altura de Polígono',\r\n showWireframe: 'Mostrar Wireframe',\r\n weightIntensity: 'Intensidade da Espessura',\r\n zoomScale: 'Escala do Zoom',\r\n heightRange: 'Alcance da Altura',\r\n },\r\n layerManager: {\r\n addData: 'Adicionar Dados',\r\n addLayer: 'Adicionar Camada',\r\n layerBlending: 'Mistura de Camada',\r\n },\r\n mapManager: {\r\n mapStyle: 'Estilo do Mapa',\r\n addMapStyle: 'Adicionar Estilo de Mapa',\r\n '3dBuildingColor': 'Cor do Edifício 3D',\r\n },\r\n layerConfiguration: {\r\n defaultDescription: 'Calcular {property} baseada no campo selecionado',\r\n howTo: 'Como',\r\n },\r\n filterManager: {\r\n addFilter: 'Adicionar Filtro',\r\n },\r\n datasetTitle: {\r\n showDataTable: 'Mostrar tabela de dados',\r\n removeDataset: 'Remover tabela de dados',\r\n },\r\n datasetInfo: {\r\n rowCount: '{rowCount} linhas',\r\n },\r\n tooltip: {\r\n hideLayer: 'esconder camada',\r\n showLayer: 'mostrar camada',\r\n hideFeature: 'Esconder propriedade',\r\n showFeature: 'Mostrar propriedade',\r\n hide: 'esconder',\r\n show: 'mostrar',\r\n removeLayer: 'Remover Camada',\r\n layerSettings: 'Configurações de Camada',\r\n closePanel: 'Fechar painel atual',\r\n switchToDualView: 'Trocar para visualização dupla de mapa',\r\n showLegend: 'mostrar legenda',\r\n disable3DMap: 'Desabilitar Mapa 3D',\r\n DrawOnMap: 'Desenhar no mapa',\r\n selectLocale: 'Selecionar língua',\r\n hideLayerPanel: 'Esconder painel de camada',\r\n showLayerPanel: 'Mostrar painel de camada',\r\n moveToTop: 'Mover para o topo das camadas',\r\n selectBaseMapStyle: 'Selecionar o Estilo do Mapa Base',\r\n delete: 'Deletar',\r\n timePlayback: 'Tempo de reprodução',\r\n cloudStorage: 'Armazenamento Cloud',\r\n '3DMap': ' Mapa 3D',\r\n },\r\n toolbar: {\r\n exportImage: 'Exportar Imagem',\r\n exportData: 'Exportar Dados',\r\n exportMap: 'Exportar Mapa',\r\n shareMapURL: 'Compartilhar URL do Mapa',\r\n saveMap: 'Salvar Mapa',\r\n select: 'selecionar',\r\n polygon: 'polígono',\r\n rectangle: 'retângulo',\r\n hide: 'esconder',\r\n show: 'mostrar',\r\n ...LOCALES,\r\n },\r\n modal: {\r\n title: {\r\n deleteDataset: 'Deletar Conjunto de Dados',\r\n addDataToMap: 'Adicionar Dados ao Mapa',\r\n exportImage: 'Exportar Imagem',\r\n exportData: 'Exportar Dados',\r\n exportMap: 'Exportar Mapa',\r\n addCustomMapboxStyle: 'Adicionar Estilo Mapbox Customizado',\r\n saveMap: 'Salvar Mapa',\r\n shareURL: 'Compartilhar URL',\r\n },\r\n button: {\r\n delete: 'Deletar',\r\n download: 'Download',\r\n export: 'Exportar',\r\n addStyle: 'Adicionar Estilo',\r\n save: 'Salvar',\r\n defaultCancel: 'Cancelar',\r\n defaultConfirm: 'Confirmar',\r\n },\r\n exportImage: {\r\n ratioTitle: 'Proporção',\r\n ratioDescription: 'Escolha a proporção para vários usos.',\r\n ratioOriginalScreen: 'Tela Original',\r\n ratioCustom: 'Customizado',\r\n ratio4_3: '4:3',\r\n ratio16_9: '16:9',\r\n resolutionTitle: 'Resolução',\r\n resolutionDescription: 'Alta resolução é melhor para impressões.',\r\n mapLegendTitle: 'Legenda do Mapa',\r\n mapLegendAdd: 'Adicionar Legenda no mapa',\r\n },\r\n exportData: {\r\n datasetTitle: 'Conjunto de dados',\r\n datasetSubtitle: 'Escolha o conjunto de dados que você quer exportar',\r\n allDatasets: 'Todos',\r\n dataTypeTitle: 'Tipo de Dado',\r\n dataTypeSubtitle: 'Escolha o tipo de dados que você quer exportar',\r\n filterDataTitle: 'Filtrar Dados',\r\n filterDataSubtitle: 'Você pode escolher exportar os dados originais ou os dados filtrados',\r\n filteredData: 'Dados Filtrados',\r\n unfilteredData: 'Dados não filtrados',\r\n fileCount: '{fileCount} Arquivos',\r\n rowCount: '{rowCount} Linhas',\r\n },\r\n deleteData: {\r\n warning: 'você irá deletar esse conjunto de dados. Isso irá afetar {length} camadas',\r\n },\r\n addStyle: {\r\n publishTitle: '1. Publique o seu Estilo no Mapbox ou providencie a chave de acesso',\r\n publishSubtitle1: 'Você pode criar o seu próprio estilo em',\r\n publishSubtitle2: 'e',\r\n publishSubtitle3: 'publicar',\r\n publishSubtitle4: 'isso.',\r\n publishSubtitle5: 'Para utilizar estilo privado, cole a sua',\r\n publishSubtitle6: 'chave de acesso',\r\n publishSubtitle7: 'aqui. *MapLab.world é uma aplicação client-side, os dados permanecem no seu browser..',\r\n exampleToken: 'e.g. pk.abcdefg.xxxxxx',\r\n pasteTitle: '2. Cole a url do seu estilo',\r\n pasteSubtitle1: 'O que é uma',\r\n pasteSubtitle2: 'URL de estilo',\r\n namingTitle: '3. Nomeie o seu estilo',\r\n },\r\n shareMap: {\r\n shareUriTitle: 'Compartilhar a URL do Mapa',\r\n shareUriSubtitle: 'Gerar a url do mapa e compartilhar com outros',\r\n cloudTitle: 'Armazenamento Cloud',\r\n cloudSubtitle: 'Conecte-se e envie os dados do mapa para o seu armazenamento cloud pessoal',\r\n shareDisclaimer:\r\n 'MapLab.world irá salvar os dados do mapa em seu armazenamento cloud pessoal, apenas pessoas com a URL podem acessar o seu mapa e dados. ' +\r\n 'Você pode editar/deletar o arquivo de dados na sua conta de armazenamento cloud em qualquer momento.',\r\n gotoPage: 'Vá para a sua página MapLab.world {currentProvider}',\r\n },\r\n statusPanel: {\r\n mapUploading: 'Enviando Mapa',\r\n error: 'Erro',\r\n },\r\n saveMap: {\r\n title: 'Armazenamento Cloud',\r\n subtitle: 'Conecte-se para salvar o mapa para o seu armazenamento cloud pessoal',\r\n },\r\n exportMap: {\r\n formatTitle: 'Formato do mapa',\r\n formatSubtitle: 'Escolher o formato de mapa para exportar',\r\n html: {\r\n selection: 'Exportar seu mapa em um arquivo html interativo.',\r\n tokenTitle: 'Chave de acesso do Mapbox',\r\n tokenSubtitle: 'Use a sua própria chave de acesso Mapbox em seu arquivo html (opcional)',\r\n tokenPlaceholder: 'Cole a sua chave de acesso Mapbox',\r\n tokenMisuseWarning:\r\n '* Se você não fornecer a sua própria chave de acesso, o mapa pode falhar em exibir a qualquer momento quando nós substituirmos a nossa para evitar mau uso. ',\r\n tokenDisclaimer: 'Você pode trocar a sua chave de acesso Mapbox mais tarde utizando as instruções seguintes: ',\r\n tokenUpdate: 'Como atualizar a chave de acesso de um mapa existente.',\r\n modeTitle: 'Modo do Mapa',\r\n modeSubtitle1: 'Selecionar o modo do aplicativo. Mais ',\r\n modeSubtitle2: 'info',\r\n modeDescription: 'Permitir usuários a {mode} o mapa',\r\n read: 'ler',\r\n edit: 'editar',\r\n },\r\n json: {\r\n configTitle: 'Configurações do Mapa',\r\n configDisclaimer:\r\n 'A configuração do mapa será incluida no arquivo Json. Se você está utilizando MapLab.world no seu próprio mapa. Você pode copiar essa configuração e passar para ele ',\r\n selection:\r\n 'Exportar atuais dados e configurações do mapa em um único arquivo Json. Você pode mais tarde abrir o mesmo mapa enviando esse arquivo para o MapLab.world.',\r\n disclaimer:\r\n '* Configuração do mapa é aclopado com conjunto de dados carregados. ‘dataId’ é utilizado para ligar as camadas, filtros, e dicas de contextos a conjunto de dados expecíficos. ' +\r\n 'Quando passando essa configuração para addDataToMap, tenha certeza de que o id do conjunto de dados combina com o(s) dataId/s nessa configuração.',\r\n },\r\n },\r\n loadingDialog: {\r\n loading: 'Carregando...',\r\n },\r\n loadData: {\r\n upload: 'Carregar arquivo',\r\n storage: 'Carregar do armazenamento',\r\n },\r\n tripInfo: {\r\n title: 'Como habilitar animação de viagem',\r\n description1:\r\n 'Para animar o caminho, o dado geoJSON deve conter `LineString` na sua propriedade geometry, e as coordenadas na LineString devem ter 4 elementos no seguinte formato',\r\n code: ' [longitude, latitude, altitude, data] ',\r\n description2:\r\n 'com um ultimo elemento sendo uma data. Um formato de data válida inclui segundos unix como `1564184363` ou em milisegundos como `1564184363000`.',\r\n example: 'Exemplo:',\r\n },\r\n iconInfo: {\r\n title: 'Como desenhar ícones',\r\n description1:\r\n 'No seu csv, crie uma coluna, coloque o nome do ícone que você quer desenhar nele. Você pode deixar o campo vazio se você não desejar que o ícone apareça para alguns pontos. Quando a coluna tem nome',\r\n code: 'icon',\r\n description2: ' MapLab.world irá automaticamente criar uma camada de ícone para você.',\r\n example: 'Exemplos:',\r\n icons: 'Ícones',\r\n },\r\n storageMapViewer: {\r\n lastModified: 'Modificado há {lastUpdated}',\r\n back: 'Voltar',\r\n },\r\n overwriteMap: {\r\n title: 'Salvando mapa...',\r\n alreadyExists: 'já existe no mapa {mapSaved}. Você desejaria sobrescrever o mapa?',\r\n },\r\n loadStorageMap: {\r\n back: 'Voltar',\r\n goToPage: 'Vá para a sua página {displayName} do MapLab.world',\r\n storageMaps: 'Armazenamento / Mapas',\r\n noSavedMaps: 'Nenhum mapa salvo',\r\n },\r\n },\r\n header: {\r\n visibleLayers: 'Camadas Visíveis',\r\n layerLegend: 'Legenda da Camada',\r\n },\r\n interactions: {\r\n tooltip: 'Dica de contexto',\r\n brush: 'Pincel',\r\n coordinate: 'Coordenadas',\r\n },\r\n layerBlending: {\r\n title: 'Mistura de Camadas',\r\n additive: 'aditivo',\r\n normal: 'normal',\r\n subtractive: 'subtrativo',\r\n },\r\n columns: {\r\n title: 'Colunas',\r\n lat: 'lat',\r\n lng: 'lon',\r\n altitude: 'altitude',\r\n icon: 'ícone',\r\n geojson: 'geojson',\r\n arc: {\r\n lat0: 'origem lat',\r\n lng0: 'origem lng',\r\n lat1: 'destino lat',\r\n lng1: 'destino lng',\r\n },\r\n grid: {\r\n worldUnitSize: 'Tamanho da Grade (km)',\r\n },\r\n hexagon: {\r\n worldUnitSize: 'Raio do Hexágono (km)',\r\n },\r\n },\r\n color: {\r\n customPalette: 'Paletas customizadas',\r\n steps: 'caminhos',\r\n type: 'tipo',\r\n reversed: 'reverso',\r\n },\r\n scale: {\r\n colorScale: 'Escala da Cor',\r\n sizeScale: 'Tamanho da Escala',\r\n strokeScale: 'Escala do Traço',\r\n scale: 'Escala',\r\n },\r\n fileUploader: {\r\n message: 'Arraste e solte seu(s) arquivo(s) aqui',\r\n chromeMessage:\r\n '*Usuários do chrome: O limite de tamanho de arquivo é 250mb, se você precisa fazer upload de arquivos maiores tente o Safari',\r\n disclaimer:\r\n '*MapLab.world é uma aplicação client-side, sem um servidor backend. Os dados ficam apenas na sua máquina/browser. ' +\r\n 'Nenhuma informação ou dados de mapa é enviado para qualquer server.',\r\n configUploadMessage:\r\n 'Envie {fileFormatNames} ou mapas salvos **Json**. Leia mais sobre [**tipos de arquivos suportados**]',\r\n browseFiles: 'procure seus arquivos',\r\n uploading: 'Enviando',\r\n fileNotSupported: 'Arquivo {errorFiles} não é suportado.',\r\n or: 'ou',\r\n },\r\n density: 'densidade',\r\n 'Bug Report': 'Reportar Bug',\r\n 'User Guide': 'Guia do Usuário',\r\n Save: 'Salvar',\r\n Share: 'Compartilhar',\r\n}\r\n","// Copyright (c) 2021 Uber Technologies, Inc.\r\n//\r\n// Permission is hereby granted, free of charge, to any person obtaining a copy\r\n// of this software and associated documentation files (the \"Software\"), to deal\r\n// in the Software without restriction, including without limitation the rights\r\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n// copies of the Software, and to permit persons to whom the Software is\r\n// furnished to do so, subject to the following conditions:\r\n//\r\n// The above copyright notice and this permission notice shall be included in\r\n// all copies or substantial portions of the Software.\r\n//\r\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n// THE SOFTWARE.\r\n\r\n// eslint-disable-next-line absolute-import/no-relative-path\r\nimport { LOCALES } from './locales'\r\n\r\nexport default {\r\n property: {\r\n weight: 'вес',\r\n label: 'ярлык',\r\n fillColor: 'цвет заливки',\r\n color: 'цвет',\r\n coverage: 'покрытие',\r\n strokeColor: 'цвет обводки',\r\n radius: 'радиус',\r\n outline: 'контур',\r\n stroke: 'обводка',\r\n density: 'плотность',\r\n height: 'высота',\r\n sum: 'сумма',\r\n pointCount: 'Кол-во точек',\r\n },\r\n placeholder: {\r\n search: 'Поиск',\r\n selectField: 'Выберите поле',\r\n yAxis: 'Y Ось',\r\n selectType: 'Выберите A тип',\r\n selectValue: 'Выберите A значение',\r\n enterValue: 'Введите значение',\r\n empty: 'пустой',\r\n },\r\n misc: {\r\n by: '',\r\n valuesIn: 'Значение в',\r\n valueEquals: 'Значение равно',\r\n dataSource: 'Источник данных',\r\n brushRadius: 'Радиус кисти (km)',\r\n empty: ' ',\r\n },\r\n mapLayers: {\r\n title: 'Слои карты',\r\n label: 'Обозначения',\r\n road: 'Дороги',\r\n border: 'Границы',\r\n building: 'Здания',\r\n water: 'Вода',\r\n land: 'Земля',\r\n '3dBuilding': '3d здания',\r\n },\r\n panel: {\r\n text: {\r\n label: 'Ярлык',\r\n labelWithId: 'Ярлык {labelId}',\r\n fontSize: 'Размер шрифта',\r\n fontColor: 'Цвет шрифта',\r\n textAnchor: 'Анкор текста',\r\n alignment: 'Положение',\r\n addMoreLabel: 'Добавить еще ярлык',\r\n },\r\n },\r\n sidebar: {\r\n panels: {\r\n layer: 'Слои',\r\n filter: 'Фильтры',\r\n interaction: 'Взаимодействия',\r\n basemap: 'Базовая карта',\r\n },\r\n },\r\n layer: {\r\n required: 'Требования*',\r\n radius: 'Радиус',\r\n color: 'Цвет',\r\n fillColor: 'Цвет заливки',\r\n outline: 'Контур',\r\n weight: 'Вес',\r\n propertyBasedOn: '{property} на основе',\r\n coverage: 'Покрытие',\r\n stroke: 'Обводка',\r\n strokeWidth: 'Ширина обводки',\r\n strokeColor: 'Цвет обводки',\r\n basic: 'Basic',\r\n trailLength: 'Trail Length',\r\n trailLengthDescription: 'Number of seconds for a path to completely fade out',\r\n newLayer: 'new layer',\r\n elevationByDescription: 'When off, height is based on count of points',\r\n colorByDescription: 'When off, color is based on count of points',\r\n aggregateBy: 'Aggregate {field} by',\r\n '3DModel': '3D Model',\r\n '3DModelOptions': '3D Model Options',\r\n type: {\r\n point: 'точки',\r\n arc: 'дуги',\r\n line: 'линии',\r\n grid: 'сетка',\r\n hexbin: 'hexbin',\r\n polygon: 'многоугольники',\r\n geojson: 'geojson',\r\n cluster: 'кластеры',\r\n icon: 'значки',\r\n heatmap: 'тепловая карта',\r\n hexagon: 'шестиугольник',\r\n hexagonid: 'H3',\r\n trip: 'пути',\r\n s2: 'S2',\r\n '3d': '3D',\r\n },\r\n },\r\n layerVisConfigs: {\r\n angle: 'Угол',\r\n strokeWidth: 'Ширина штриха (в пикселях)',\r\n strokeWidthRange: 'Диапазон ширины штриха',\r\n radius: 'Радиус',\r\n fixedRadius: 'Фиксированный радиус в метрах',\r\n fixedRadiusDescription: 'Сопоставьте радиус с абсолютным радиусом в метрах, например От 5 до 5 метров',\r\n radiusRange: 'Диапазон радиуса',\r\n clusterRadius: 'Радиус кластера в пикселях',\r\n radiusRangePixels: 'Диапазон радиуса в пикселях',\r\n opacity: 'Непрозрачность',\r\n coverage: 'Покрытие',\r\n outline: 'Контур',\r\n colorRange: 'Цветовая гамма',\r\n stroke: 'Обводка',\r\n strokeColor: 'Цвет обводки',\r\n strokeColorRange: 'Обводка Цветовой диапазон',\r\n targetColor: 'Целевой цвет',\r\n colorAggregation: 'Цветовая агрегация',\r\n heightAggregation: 'Агрегация по высоте',\r\n resolutionRange: 'Диапазон разрешения',\r\n sizeScale: 'Шкала размеров',\r\n worldUnitSize: 'Мировые ед.изм.',\r\n elevationScale: 'Шкала возвышения',\r\n enableElevationZoomFactor: 'Использовать коэффициент увеличения по высоте',\r\n enableElevationZoomFactorDescription:\r\n 'Отрегулируйте высоту / возвышение на основе текущего коэффициента масштабирования',\r\n enableHeightZoomFactor: 'вкл. коэффициент масштабирования по высоте',\r\n heightScale: 'Масштаб высоты',\r\n coverageRange: 'Диапазон покрытия',\r\n highPrecisionRendering: 'Высокая точность рендеринга',\r\n highPrecisionRenderingDescription: 'Высокая точность приведет к снижению производительности',\r\n height: 'Высота',\r\n heightDescription: 'Нажмите кнопку в правом верхнем углу карты, чтобы переключиться в 3D-вид',\r\n fill: 'Наполнить',\r\n enablePolygonHeight: 'Включить высоту многоугольника',\r\n showWireframe: 'Показать каркас',\r\n weightIntensity: 'Вес Интенсивность',\r\n zoomScale: 'Масштаб увеличения',\r\n heightRange: 'Диапазон высоты',\r\n heightMultiplier: 'Множитель высоты',\r\n },\r\n layerManager: {\r\n addData: 'Добавить данные',\r\n addLayer: 'Добавить слой',\r\n layerBlending: 'Смешивание слоев',\r\n },\r\n mapManager: {\r\n mapStyle: 'Стиль карты',\r\n addMapStyle: 'Добавить стиль карты',\r\n '3dBuildingColor': '3D Цвет здания',\r\n },\r\n layerConfiguration: {\r\n defaultDescription: 'Рассчитать {property} на основе выбранного поля',\r\n howTo: 'How to',\r\n },\r\n filterManager: {\r\n addFilter: 'Добавить фильтр',\r\n },\r\n datasetTitle: {\r\n showDataTable: 'Показать таблицу данных ',\r\n removeDataset: 'Удалить набор данных',\r\n },\r\n datasetInfo: {\r\n rowCount: '{rowCount} строк',\r\n },\r\n tooltip: {\r\n hideLayer: 'скрыть слой',\r\n showLayer: 'показать слой',\r\n hideFeature: 'Скрыть функцию',\r\n showFeature: 'Показать функцию',\r\n hide: 'скрыть',\r\n show: 'показать',\r\n removeLayer: 'Удалить слой',\r\n duplicateLayer: 'Дублировать слой',\r\n layerSettings: 'Настройки слоя',\r\n closePanel: 'Закрыть текущую панель',\r\n switchToDualView: 'Перейти в режим двойной карты',\r\n showLegend: 'Показать легенду',\r\n disable3DMap: 'Отключить 3D Карту',\r\n DrawOnMap: 'Рисовать на карте',\r\n selectLocale: 'Выберите регион',\r\n hideLayerPanel: 'Скрыть панель слоев',\r\n showLayerPanel: 'Показать панель слоев',\r\n moveToTop: 'Перейти к верхним слоям данных',\r\n selectBaseMapStyle: 'Выберите стиль базовой карты',\r\n delete: 'Удалить',\r\n timePlayback: 'Воспроизведение времени',\r\n cloudStorage: 'Облачное хранилище',\r\n '3DMap': '3D Карта',\r\n animationByWindow: 'Перемещение временного окна',\r\n animationByIncremental: 'Дополнительное временное окно',\r\n speed: 'скорость',\r\n play: 'проиграть',\r\n pause: 'пауза',\r\n reset: 'перезапустить',\r\n },\r\n toolbar: {\r\n exportImage: 'Экспорт изображения',\r\n exportData: 'Экспорт данных',\r\n exportMap: 'Экспорт карты',\r\n shareMapURL: 'Share Map URL',\r\n saveMap: 'Сохарнить Карту',\r\n select: 'Выбрать',\r\n polygon: 'Многоугольник',\r\n rectangle: 'Квадрат',\r\n hide: 'Скрыть',\r\n show: 'Показать',\r\n ...LOCALES,\r\n },\r\n editor: {\r\n filterLayer: 'Слои фильтров',\r\n copyGeometry: 'Копировать геометрию',\r\n },\r\n\r\n modal: {\r\n title: {\r\n deleteDataset: 'Удалить данные',\r\n addDataToMap: 'Добавить данные на карту',\r\n exportImage: 'Экспорт изображения',\r\n exportData: 'Экспорт данных',\r\n exportMap: 'Экспорт карты',\r\n addCustomMapboxStyle: 'Добавить собственный стиль карты',\r\n saveMap: 'Поделиться Картой',\r\n shareURL: 'Поделиться URL',\r\n },\r\n button: {\r\n delete: 'Удалить',\r\n download: 'Скачать',\r\n export: 'Экспортировать',\r\n addStyle: 'Добавить стиль',\r\n save: 'Сохранить',\r\n defaultCancel: 'Отменить',\r\n defaultConfirm: 'Подтвердить',\r\n },\r\n exportImage: {\r\n ratioTitle: 'Ratio',\r\n ratioDescription: 'Выберите соотношение для различного использования',\r\n ratioOriginalScreen: 'Исходный экран',\r\n ratioCustom: 'Настройки',\r\n ratio4_3: '4:3',\r\n ratio16_9: '16:9',\r\n resolutionTitle: 'Разрешение',\r\n resolutionDescription: 'Для печати лучше использовать высокое разрешение',\r\n mapLegendTitle: 'Легенда карты',\r\n mapLegendAdd: 'Добавить легенду на карту',\r\n },\r\n exportData: {\r\n datasetTitle: 'Набор данных',\r\n datasetSubtitle: 'Выберите наборы данных, которые хотите экспортировать',\r\n allDatasets: 'Все',\r\n dataTypeTitle: 'Тип данных',\r\n dataTypeSubtitle: 'Выберите тип данных, которые вы хотите экспортировать',\r\n filterDataTitle: 'Отфильтрованные данные',\r\n filterDataSubtitle: 'Вы можете выбрать экспорт исходных данных или отфильтрованных данных',\r\n filteredData: 'Отфильтрованные данные',\r\n unfilteredData: 'Нефильтрованные данные',\r\n fileCount: '{fileCount} Файлов',\r\n rowCount: '{rowCount} Строк',\r\n },\r\n deleteData: {\r\n warning: 'вы собираетесь удалить этот набор данных. Это повлияет на {length} слой',\r\n },\r\n addStyle: {\r\n publishTitle:\r\n '2. Если вы указали URL-адрес файла mapbox на шаге 1, опубликуйте свой стиль на mapbox или предоставьте токен доступа. (Необязательно)',\r\n publishSubtitle1: 'Вы можете создать свой собственный стиль карты',\r\n publishSubtitle2: 'и',\r\n publishSubtitle3: 'опубликовать',\r\n publishSubtitle4: 'его.',\r\n publishSubtitle5: 'Чтобы использовать частный стиль, вставьте свой',\r\n publishSubtitle6: 'token доступа',\r\n publishSubtitle7: 'прим. MapLab.world - это клиентское приложение, данные остаются в вашем браузере .',\r\n exampleToken: 'например pk.abcdefg.xxxxxx',\r\n pasteTitle: '1. Вставить URL стиля',\r\n pasteSubtitle0: 'URL стиля может быть mapbox',\r\n pasteSubtitle1: 'Или',\r\n pasteSubtitle2: 'URL стиля',\r\n pasteSubtitle3: 'style.json используя',\r\n pasteSubtitle4: 'Mapbox GL Style Spec',\r\n namingTitle: '3. Назови свой стиль',\r\n },\r\n shareMap: {\r\n shareUriTitle: 'Поделиться URL карты',\r\n shareUriSubtitle: 'Создать URL карты, чтобы поделиться с другими',\r\n cloudTitle: 'Облачное хранилище',\r\n cloudSubtitle: 'Войдите и загрузите данные карты в свое личное облачное хранилище',\r\n shareDisclaimer:\r\n 'MapLab.world сохранит данные вашей карты в вашем личном облачном хранилище, только люди с URL-адресом могут получить доступ к вашей карте и данным. ' +\r\n 'Вы можете редактировать / удалить файл данных в своей облачной учетной записи в любое время.',\r\n gotoPage: 'Перейти на страницу MapLab.world {currentProvider}',\r\n },\r\n statusPanel: {\r\n mapUploading: 'Загрузка карты',\r\n error: 'Ошибка',\r\n },\r\n saveMap: {\r\n title: 'Облачное хранилище',\r\n subtitle: 'Авторизуйтесь, чтобы сохранить карту в вашем личном облачном хранилище',\r\n },\r\n exportMap: {\r\n formatTitle: 'Формат карты',\r\n formatSubtitle: 'Выберите формат для экспорта карты',\r\n html: {\r\n selection: 'Экспорт карты в интерактивный файл HTML.',\r\n tokenTitle: 'Токен доступа к Mapbox',\r\n tokenSubtitle: 'Используйте свой токен доступа Mapbox в html(необязательно)',\r\n tokenPlaceholder: 'Вставьте токен доступа Mapbox',\r\n tokenMisuseWarning:\r\n '* If you do not provide your own token, the map may fail to display at any time when we replace ours to avoid misuse. ',\r\n tokenDisclaimer:\r\n 'Если вы не предоставите свой собственный токен, карта может не отображаться в любое время, когда мы заменяем наш, чтобы избежать неправильного использования.',\r\n tokenUpdate: 'Как обновить существующий токен карты.',\r\n modeTitle: 'Режим карты',\r\n modeSubtitle1: 'Выберите режим приложения. Подробнее',\r\n modeSubtitle2: 'Информация',\r\n modeDescription: 'Разрешить пользователям {mode} карту',\r\n read: 'чтение',\r\n edit: 'редактирование',\r\n },\r\n json: {\r\n configTitle: 'Конфигурация карты',\r\n configDisclaimer:\r\n 'Конфигурация карты будет включена в файл Json. Если вы используете MapLab.world в своем собственном приложении. Вы можете скопировать этот конфиг и передать его ',\r\n selection:\r\n 'Экспорт текущих данных карты и конфигурации в один файл Json. Позже вы сможете открыть ту же карту, загрузив этот файл на MapLab.world.',\r\n disclaimer:\r\n '* Конфигурация карты связана с загруженными наборами данных. DataId используется для привязки слоев, фильтров и всплывающих подсказок к определенному набору данных. ' +\r\n 'При передаче этой конфигурации addDataToMap, убедитесь, что идентификатор набора данных совпадает с dataId / s в этой конфигурации.',\r\n },\r\n },\r\n loadingDialog: {\r\n loading: 'Загрузка...',\r\n },\r\n loadData: {\r\n upload: 'Загрузить файлы',\r\n storage: 'Загрузить из хранилища',\r\n },\r\n tripInfo: {\r\n title: 'Как включить анимацию поездки',\r\n description1:\r\n 'Чтобы анимировать путь, данные geoJSON должны содержать LineString в своей геометрии объекта, а координаты в LineString должны иметь 4 элемента в форматах',\r\n code: ' [longitude, latitude, altitude, timestamp] ',\r\n description2:\r\n 'с последним элементом, являющимся отметкой времени. Допустимые форматы меток времени включают unix в секундах, например 1564184363, или в миллисекундах, например 1564184363000',\r\n example: ',Пример:',\r\n },\r\n iconInfo: {\r\n title: 'Как рисовать значки',\r\n description1:\r\n 'В вашем csv создайте столбец, поместите в него имя значка, который вы хотите нарисовать. Вы можете оставить ячейку пустой, если не хотите, чтобы значок отображался для некоторых точек. Когда столбец назван',\r\n code: 'значек',\r\n description2: ' MapLab.world автоматически создаст для вас слой значков.',\r\n example: 'Пример:',\r\n icons: 'Значки',\r\n },\r\n storageMapViewer: {\r\n lastModified: 'Последнее изменение {lastUpdated} назад',\r\n back: 'Назад',\r\n },\r\n overwriteMap: {\r\n title: 'Сохранение карты...',\r\n alreadyExists: 'уже существует в вашем {mapSaved}. Хотите его перезаписать?',\r\n },\r\n loadStorageMap: {\r\n back: 'Назад',\r\n goToPage: 'Перейти на страницу MapLab.world {displayName}',\r\n storageMaps: 'Хранилище / Карты',\r\n noSavedMaps: 'Нет сохраненных карт',\r\n },\r\n },\r\n header: {\r\n visibleLayers: 'Видимые слои',\r\n layerLegend: 'Легенда слоя',\r\n },\r\n interactions: {\r\n tooltip: 'Подсказка',\r\n brush: 'Кисть',\r\n coordinate: 'Координаты',\r\n geocoder: 'Геокодер',\r\n },\r\n layerBlending: {\r\n title: 'Смешивание слоев',\r\n additive: 'добавление',\r\n normal: 'нормальное',\r\n subtractive: 'вычитание',\r\n },\r\n columns: {\r\n title: 'Столбцы',\r\n lat: 'lat',\r\n lng: 'lon',\r\n altitude: 'высота',\r\n icon: 'значек',\r\n geojson: 'geojson',\r\n token: 'token',\r\n arc: {\r\n lat0: 'lat источника',\r\n lng0: 'lng источника',\r\n lat1: 'lat цели',\r\n lng1: 'lng цели',\r\n },\r\n line: {\r\n alt0: 'высота источника',\r\n alt1: 'высота цели',\r\n },\r\n grid: {\r\n worldUnitSize: 'Размер сетки (km)',\r\n },\r\n hexagon: {\r\n worldUnitSize: 'Hexagon радиус (km)',\r\n },\r\n hex_id: 'hex id',\r\n },\r\n color: {\r\n customPalette: 'Ваша палитра',\r\n steps: 'шагов',\r\n type: 'тип',\r\n reversed: 'перевернуть',\r\n },\r\n scale: {\r\n colorScale: 'Цветовая шкала',\r\n sizeScale: 'Масштаб размера',\r\n strokeScale: 'Масштаб штриха',\r\n scale: 'Масштаб',\r\n },\r\n fileUploader: {\r\n message: 'Перетащите сюда ваши файлы',\r\n chromeMessage:\r\n '*Пользователь Chrome: ограничьте размер файла до 250 МБ, если нужно загрузить файл большего размера, попробуйте Safari',\r\n disclaimer:\r\n '*MapLab.world - это клиентское приложение без серверной части. Данные живут только на вашем компьютере. ' +\r\n 'Никакая информация или данные карты не отправляются ни на один сервер.',\r\n configUploadMessage:\r\n 'Загрузите {fileFormatNames} или сохраненную карту **Json**. Подробнее [**supported file formats**]',\r\n browseFiles: 'Просматреть файлы',\r\n uploading: 'Загрузка',\r\n fileNotSupported: 'File {errorFiles} is not supported.',\r\n or: 'or',\r\n },\r\n geocoder: {\r\n title: 'Введите адрес или координаты, например 37.79, -122.40',\r\n },\r\n fieldSelector: {\r\n clearAll: 'Очистить все',\r\n formatting: 'Форматирование',\r\n },\r\n compare: {\r\n modeLabel: 'Режим сравнения',\r\n typeLabel: 'Тип сравнения',\r\n types: {\r\n absolute: 'Абсолютный',\r\n relative: 'Относительный',\r\n },\r\n },\r\n mapPopover: {\r\n primary: 'Первичный',\r\n },\r\n density: 'density',\r\n 'Bug Report': 'Отчет об ошибках',\r\n 'User Guide': 'Инструкции',\r\n Save: 'Сохранить',\r\n Share: 'Поделиться',\r\n}\r\n","export const LOCALES = {\r\n en: 'English',\r\n fr: 'Française',\r\n es: 'Español',\r\n pt: 'Português',\r\n ja: '日本語',\r\n cn: '简体中文',\r\n ru: 'Русский',\r\n fi: 'Suomi',\r\n // sv: 'Svenska',\r\n}\r\n\r\nexport const LOCALE_CODES = Object.keys(LOCALES).reduce((acc, key) => ({ ...acc, [key]: key }), {})\r\n"],"sourceRoot":""}