From cbf9214a2d9566f3e73b54c559ae01dc2c70a011 Mon Sep 17 00:00:00 2001 From: Esko Ikkala <esko.ikkala@aalto.fi> Date: Fri, 12 Oct 2018 11:35:25 +0300 Subject: [PATCH] Remove bunch of unnecessary components --- .../components/IntegrationAutosuggest.js | 188 -- src/client/components/{map => }/LeafletMap.js | 62 +- src/client/components/SearchButtons.js | 89 - src/client/components/SearchField.js | 113 - src/client/components/SuggestionItem.js | 55 - src/client/components/TestData.js | 2315 ----------------- src/client/components/map/GMap.js | 21 - src/client/components/map/LeafletMap-old.js | 140 - src/client/components/map/MarkerCluster.js | 18 - src/client/components/map/ResultMarker.js | 42 - src/client/components/map/ResultMarkerList.js | 14 - src/client/components/map/SimpleSlider.js | 45 - .../result-table-candidates/DataGrid.js | 104 - .../result-table-candidates/DataTable.js | 60 - .../components/result-table/ResultTable.js | 106 - .../result-table/ResultTableHead.js | 67 - src/client/containers/MapApp.js | 56 +- 17 files changed, 51 insertions(+), 3444 deletions(-) delete mode 100644 src/client/components/IntegrationAutosuggest.js rename src/client/components/{map => }/LeafletMap.js (89%) delete mode 100644 src/client/components/SearchButtons.js delete mode 100644 src/client/components/SearchField.js delete mode 100644 src/client/components/SuggestionItem.js delete mode 100644 src/client/components/TestData.js delete mode 100644 src/client/components/map/GMap.js delete mode 100644 src/client/components/map/LeafletMap-old.js delete mode 100644 src/client/components/map/MarkerCluster.js delete mode 100644 src/client/components/map/ResultMarker.js delete mode 100644 src/client/components/map/ResultMarkerList.js delete mode 100644 src/client/components/map/SimpleSlider.js delete mode 100644 src/client/components/result-table-candidates/DataGrid.js delete mode 100644 src/client/components/result-table-candidates/DataTable.js delete mode 100644 src/client/components/result-table/ResultTable.js delete mode 100644 src/client/components/result-table/ResultTableHead.js diff --git a/src/client/components/IntegrationAutosuggest.js b/src/client/components/IntegrationAutosuggest.js deleted file mode 100644 index 502c08f0..00000000 --- a/src/client/components/IntegrationAutosuggest.js +++ /dev/null @@ -1,188 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import Autosuggest from 'react-autosuggest'; -import TextField from '@material-ui/core/TextField'; -import Paper from '@material-ui/core/Paper'; -import { withStyles } from '@material-ui/core/styles'; -import SuggestionItem from './SuggestionItem'; -import InputAdornment from '@material-ui/core/InputAdornment'; -import CircularProgress from '@material-ui/core/CircularProgress'; -import IconButton from '@material-ui/core/IconButton'; -import SearchButtons from './SearchButtons'; - -function renderInput(inputProps) { - const { classes, ref, ...other } = inputProps; - - return ( - <TextField - fullWidth - InputProps={{ - inputRef: ref, - classes: { - input: classes.input, - }, - ...other, - }} - /> - ); -} - -function renderSuggestion(suggestion, { query, isHighlighted }) { - return <SuggestionItem suggestion={suggestion} query={query} isHighlighted={isHighlighted} />; -} - -function renderSuggestionsContainer(options) { - const { containerProps, children } = options; - - return ( - <Paper {...containerProps} square> - {children} - </Paper> - ); -} - -function getSuggestionValue(suggestion) { - return suggestion; -} - -const styles = theme => ({ - container: { - position: 'relative', - width: 300, - }, - suggestionsContainerOpen: { - position: 'absolute', - zIndex: 1500, - marginTop: theme.spacing.unit, - left: 0, - right: 0, - marginLeft: 'auto', - marginRight: 'auto', - width: 300, - }, - suggestion: { - display: 'block', - }, - suggestionsList: { - margin: 0, - padding: 0, - listStyleType: 'none', - maxHeight: 500, - overflow: 'auto', - }, - icon: { - color: theme.palette.text.secondary, - }, -}); - -const IntegrationAutosuggest = (props) => { - - let autosuggestDOM = React.createRef(); - - const handleOnChange = (event, { newValue }) => { - props.clearSuggestions(); - props.updateQuery(newValue); - }; - - const handleOnSuggestionSelected = () => { - searchPlaces(); - }; - - const handleOnKeyDown = (event) => { - if (event.key === 'Enter') { - searchPlaces(); - } - }; - - const searchPlaces = () => { - if (props.search.query.length > 0) { - // console.log('fetching results'); - autosuggestDOM.current.input.blur(); - props.clearResults(); - props.fetchResults(); - } - }; - - // const handleOnBlur = (event, { highlightedSuggestion }) => { - // // console.log(event); - // // console.log(highlightedSuggestion); - // }; - - const handleOnSuggestionsFetchRequested = ({ value }) => { - if (props.search.suggestionsQuery != value || props.search.suggestions.length === 0) { - // console.log('fetching suggestions'); - //props.fetchSuggestions(); - } - else { - // console.log('using old suggestions'); - } - }; - - const shouldRenderSuggestions = (value) => { - return value.trim().length > 3; - }; - - const handleOnSuggestionsClearRequested = () => { - //console.log('SuggestionsClearRequested'); - //props.clearSuggestions(); - }; - - const { classes } = props; - let adornment = null; - if (props.search.fetchingSuggestions || props.search.fetchingResults) { - adornment = - <InputAdornment position="end"> - <IconButton - aria-label="Search places" - > - <CircularProgress size={24} /> - </IconButton> - </InputAdornment>; - } else { - adornment = <SearchButtons search={props.search} updateResultFormat={props.updateResultFormat} />; - } - - return ( - <Autosuggest - theme={{ - container: classes.container, - suggestionsContainerOpen: classes.suggestionsContainerOpen, - suggestionsList: classes.suggestionsList, - suggestion: classes.suggestion, - }} - renderInputComponent={renderInput} - suggestions={props.search.suggestions} - shouldRenderSuggestions={shouldRenderSuggestions} - onSuggestionsFetchRequested={handleOnSuggestionsFetchRequested} - onSuggestionsClearRequested={handleOnSuggestionsClearRequested} - renderSuggestionsContainer={renderSuggestionsContainer} - getSuggestionValue={getSuggestionValue} - renderSuggestion={renderSuggestion} - onSuggestionSelected={handleOnSuggestionSelected} - focusInputOnSuggestionClick={false} - ref={autosuggestDOM} - inputProps={{ - classes, - placeholder: 'Search place names', - value: props.search.query, - onChange: handleOnChange, - onKeyDown: handleOnKeyDown, - autoFocus: true, - endAdornment: adornment - }} - /> - ); -}; - -IntegrationAutosuggest.propTypes = { - classes: PropTypes.object.isRequired, - search: PropTypes.object.isRequired, - updateQuery: PropTypes.func.isRequired, - fetchSuggestions: PropTypes.func.isRequired, - clearSuggestions: PropTypes.func.isRequired, - fetchResults: PropTypes.func.isRequired, - clearResults: PropTypes.func.isRequired, - updateResultFormat: PropTypes.func.isRequired -}; - -export default withStyles(styles)(IntegrationAutosuggest); diff --git a/src/client/components/map/LeafletMap.js b/src/client/components/LeafletMap.js similarity index 89% rename from src/client/components/map/LeafletMap.js rename to src/client/components/LeafletMap.js index 15bd0b17..5b718000 100644 --- a/src/client/components/map/LeafletMap.js +++ b/src/client/components/LeafletMap.js @@ -43,17 +43,17 @@ class LeafletMap extends React.Component { attribution: '© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors' }); - const karelianMaps = L.tileLayer('http:///mapwarper.onki.fi/mosaics/tile/4/{z}/{x}/{y}.png', { - attribution: 'SeCo' - }); - - const senateAtlas = L.tileLayer('http:///mapwarper.onki.fi/mosaics/tile/5/{z}/{x}/{y}.png', { - attribution: 'SeCo' - }); - - const westernFront = L.tileLayer('http://mapwarper.net/mosaics/tile/844/{z}/{x}/{y}.png', { - attribution: 'SeCo' - }); + // const karelianMaps = L.tileLayer('http:///mapwarper.onki.fi/mosaics/tile/4/{z}/{x}/{y}.png', { + // attribution: 'SeCo' + // }); + // + // const senateAtlas = L.tileLayer('http:///mapwarper.onki.fi/mosaics/tile/5/{z}/{x}/{y}.png', { + // attribution: 'SeCo' + // }); + // + // const westernFront = L.tileLayer('http://mapwarper.net/mosaics/tile/844/{z}/{x}/{y}.png', { + // attribution: 'SeCo' + // }); // Marker layers this.resultMarkerLayer = L.layerGroup(); @@ -79,26 +79,26 @@ class LeafletMap extends React.Component { }); // layer controls - const baseMaps = { - 'OpenStreetMap': OSMBaseLayer, - }; - const overlayMaps = { - 'Search results': this.resultMarkerLayer, - 'Karelian maps (MapWarper)': karelianMaps, - 'Senate atlas (MapWarper)': senateAtlas, - 'Western Front July 1917 (MapWarper)': westernFront - }; - - this.layerControl = L.control.layers( - baseMaps, - overlayMaps, - ).addTo(this.leafletMap); - - L.control.opacity( - overlayMaps, { - collapsed: true, - position: 'bottomleft' - }).addTo(this.leafletMap); + // const baseMaps = { + // 'OpenStreetMap': OSMBaseLayer, + // }; + // const overlayMaps = { + // 'Search results': this.resultMarkerLayer, + // 'Karelian maps (MapWarper)': karelianMaps, + // 'Senate atlas (MapWarper)': senateAtlas, + // 'Western Front July 1917 (MapWarper)': westernFront + // }; + + // this.layerControl = L.control.layers( + // baseMaps, + // overlayMaps, + // ).addTo(this.leafletMap); + + // L.control.opacity( + // overlayMaps, { + // collapsed: true, + // position: 'bottomleft' + // }).addTo(this.leafletMap); L.Marker.setBouncingOptions({ exclusive: true }); diff --git a/src/client/components/SearchButtons.js b/src/client/components/SearchButtons.js deleted file mode 100644 index 6d5be397..00000000 --- a/src/client/components/SearchButtons.js +++ /dev/null @@ -1,89 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import IconButton from '@material-ui/core/IconButton'; -import Menu from '@material-ui/core/Menu'; -import MenuItem from '@material-ui/core/MenuItem'; -import MoreVertIcon from '@material-ui/icons/MoreVert'; -import SearchIcon from '@material-ui/icons/Search'; -import InputAdornment from '@material-ui/core/InputAdornment'; - -class SearchButtons extends React.Component { - state = { - anchorEl: null, - }; - - handleClick = event => { - this.setState({ anchorEl: event.currentTarget }); - }; - - handleClose = () => { - this.setState({ anchorEl: null }); - - }; - - handleClickSearchButton = () => { - // console.log('places'); - }; - - handleClickStats = () => { - this.handleClose(); - this.props.updateResultFormat('stats'); - } - - handleClickTable = () => { - this.handleClose(); - this.props.updateResultFormat('table'); - } - - handleMouseDownButton = (event) => { - event.preventDefault(); - }; - - render() { - const { anchorEl } = this.state; - - return ( - <InputAdornment position="end"> - <IconButton - aria-label="Search places" - onClick={this.handleClickSearchButton} - onMouseDown={this.handleMouseDownButton} - > - <SearchIcon /> - </IconButton> - <IconButton - aria-label="More" - aria-owns={anchorEl ? 'long-menu' : null} - aria-haspopup="true" - onClick={this.handleClick} - > - <MoreVertIcon /> - </IconButton> - <Menu - id="long-menu" - anchorEl={anchorEl} - open={Boolean(anchorEl)} - onClose={this.handleClose} - > - <MenuItem - key='stats' - onClick={this.handleClickStats}> - Results by place type - </MenuItem> - <MenuItem - key='list' - onClick={this.handleClickTable}> - Results as a table - </MenuItem> - </Menu> - </InputAdornment> - ); - } -} - -SearchButtons.propTypes = { - search: PropTypes.object.isRequired, - updateResultFormat: PropTypes.func.isRequired -}; - -export default SearchButtons; diff --git a/src/client/components/SearchField.js b/src/client/components/SearchField.js deleted file mode 100644 index 812c7931..00000000 --- a/src/client/components/SearchField.js +++ /dev/null @@ -1,113 +0,0 @@ -import React from 'react'; -import classNames from 'classnames'; -import PropTypes from 'prop-types'; -import { withStyles } from '@material-ui/core/styles'; -import IconButton from '@material-ui/core/IconButton'; -import SearchIcon from '@material-ui/icons/Search'; -import Input from '@material-ui/core/Input'; -import InputLabel from '@material-ui/core/InputLabel'; -import InputAdornment from '@material-ui/core/InputAdornment'; -import FormControl from '@material-ui/core/FormControl'; -import CircularProgress from '@material-ui/core/CircularProgress'; - -const styles = theme => ({ - root: { - display: 'flex', - flexWrap: 'wrap', - }, - margin: { - margin: theme.spacing.unit, - }, - withoutLabel: { - marginTop: theme.spacing.unit * 3, - }, - textField: { - flexBasis: 200, - }, -}); - -class SearchField extends React.Component { - state = { - value: '', - }; - - handleChange = (event) => { - this.setState({ value: event.target.value }); - }; - - handleMouseDown = (event) => { - event.preventDefault(); - }; - - // handleOnKeyDown = (event) => { - // if (event.key === 'Enter') { - // this.props.updateQuery(this.state.value); - // this.props.clearResults(); - // this.props.fetchResults(); - // } - // }; - - handleClick = () => { - //this.props.updateQuery(this.state.value); - //this.props.clearResults(); - //this.props.fetchManuscripts(); - this.props.fetchPlaces(); - }; - - render() { - const { classes } = this.props; - - let searchButton = null; - if (this.props.search.fetchingSuggestions || this.props.search.fetchingResults) { - searchButton = ( - <IconButton - aria-label="Search places" - > - <CircularProgress size={24} /> - </IconButton> - ); - } else { - searchButton = ( - <IconButton - aria-label="Search" - onClick={this.handleClick} - onMouseDown={this.handleMouseDown} - > - <SearchIcon /> - </IconButton> - ); - } - - return ( - <div className={classes.root}> - <FormControl className={classNames(classes.margin, classes.textField)}> - <InputLabel htmlFor="adornment-search">Search place names</InputLabel> - <Input - id="adornment-search" - type='text' - value={this.state.value} - onChange={this.handleChange} - onKeyDown={this.handleOnKeyDown} - endAdornment={ - <InputAdornment position="end"> - {searchButton} - </InputAdornment> - } - /> - </FormControl> - </div> - ); - } -} - -SearchField.propTypes = { - classes: PropTypes.object.isRequired, - search: PropTypes.object.isRequired, - fetchManuscripts: PropTypes.func.isRequired, - fetchPlaces: PropTypes.func.isRequired, - clearManuscripts: PropTypes.func.isRequired, - clearPlaces: PropTypes.func.isRequired, - updateQuery: PropTypes.func.isRequired -}; - -export default withStyles(styles)(SearchField); diff --git a/src/client/components/SuggestionItem.js b/src/client/components/SuggestionItem.js deleted file mode 100644 index cff15c11..00000000 --- a/src/client/components/SuggestionItem.js +++ /dev/null @@ -1,55 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import match from 'autosuggest-highlight/match'; -import parse from 'autosuggest-highlight/parse'; -import MenuItem from '@material-ui/core/MenuItem'; - -const styles = { - fontWeight: 300, - height: 10 -}; -// -// const getCounts = (suggestion) => suggestion.datasets.map((dataset, index) => ( -// <span key={dataset.datasetId}> -// {index > 0 ? ', ' : ''} -// {`${dataset.shortTitle}: ${dataset.count.value}`} -// </span> -// )); - -// <span> ({getCounts(suggestion)})</span> - -const SuggestionItem = ({ suggestion, query, isHighlighted }) => { - const matches = match(suggestion, query); - const parts = parse(suggestion, matches); - - return ( - <MenuItem - selected={isHighlighted} - component="div" - style={styles} - > - <div> - {parts.map((part, index) => { - return part.highlight ? ( - <strong key={String(index)} style={{ fontWeight: 500 }}> - {part.text} - </strong> - ) : ( - <span key={String(index)} style={{ fontWeight: 300 }}> - {part.text} - - </span> - ); - })} - </div> - </MenuItem> - ); -}; - -SuggestionItem.propTypes = { - suggestion: PropTypes.string.isRequired, - query: PropTypes.string.isRequired, - isHighlighted: PropTypes.bool.isRequired, -}; - -export default SuggestionItem; diff --git a/src/client/components/TestData.js b/src/client/components/TestData.js deleted file mode 100644 index a40885f6..00000000 --- a/src/client/components/TestData.js +++ /dev/null @@ -1,2315 +0,0 @@ -export const testDataArray = [ - { - 'x': 'Mäki', - 'y': 172, - 'values': [ - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1039078', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Miehikkälä', - 'source': 'DNA', - 'lat': '60.653679133752', - 'long': '27.897279446412' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1039079', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Miehikkälä', - 'source': 'DNA', - 'lat': '60.696554469946', - 'long': '27.532427062209997' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1059562', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Mouhijärvi', - 'source': 'DNA', - 'lat': '61.586046876023', - 'long': '23.060499028998' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1077190', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Muuruvesi', - 'source': 'DNA', - 'lat': '63.065731637652', - 'long': '28.292200603367' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1077191', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Muuruvesi', - 'source': 'DNA', - 'lat': '63.044021206903', - 'long': '28.245461459084' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1097579', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Nastola', - 'source': 'DNA', - 'lat': '61.000468215697005', - 'long': '26.009584254551' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1097580', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Nastola', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1105489', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Nilsiä', - 'source': 'DNA', - 'lat': '63.225388449455004', - 'long': '28.272961761998' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1105490', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Nilsiä', - 'source': 'DNA', - 'lat': '63.231545914257005', - 'long': '28.269480919240003' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1126816', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Nurmes', - 'source': 'DNA', - 'lat': '63.466022862631', - 'long': '29.464160386268002' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1172018', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Padasjoki', - 'source': 'DNA', - 'lat': '61.299559121555994', - 'long': '25.088167897957' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1192929', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Parikkala', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1192932', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Parikkala', - 'source': 'DNA', - 'lat': '61.568013834647', - 'long': '29.640563545313' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1243633', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Pieksämäki', - 'source': 'DNA', - 'lat': '62.325246891450995', - 'long': '27.244279448165003' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1280343', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Pihtipudas', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1284184', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Piippola', - 'source': 'DNA', - 'lat': '64.20775921581', - 'long': '26.039026798378' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1338772', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Puumala', - 'source': 'DNA', - 'lat': '61.519785367225', - 'long': '28.528244144534' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1363733', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Pyhäjärvi Vpl', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1363735', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Pyhäjärvi Vpl', - 'source': 'DNA', - 'lat': '60.760139235949', - 'long': '30.491863899304' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1379809', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Pyhäselkä', - 'source': 'DNA', - 'lat': '62.441498659699', - 'long': '29.974118153948' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1417649', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Rautalampi', - 'source': 'DNA', - 'lat': '62.759515518518', - 'long': '26.654346151664' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1426105', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Rautavaara', - 'source': 'DNA', - 'lat': '63.409740837714004', - 'long': '28.219872634772' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1426106', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Rautavaara', - 'source': 'DNA', - 'lat': '63.593619142293996', - 'long': '28.457204924713' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1505748', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Rääkkylä', - 'source': 'DNA', - 'lat': '62.348809821935994', - 'long': '29.809639159943' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1508689', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Saari', - 'source': 'DNA', - 'lat': '61.665324076491004', - 'long': '29.668829168905' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/151679', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Halikko', - 'source': 'DNA', - 'lat': '60.395543674067', - 'long': '22.954924134432996' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1552067', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Savitaipale', - 'source': 'DNA', - 'lat': '61.056907339151', - 'long': '27.477175124612998' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1552068', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Savitaipale', - 'source': 'DNA', - 'lat': '61.184958352859', - 'long': '27.744662305194996' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/157504', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Hankasalmi', - 'source': 'DNA', - 'lat': '62.34759027705999', - 'long': '26.382591289022997' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1576914', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Siilinjärvi', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1587972', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Sippola', - 'source': 'DNA', - 'lat': '60.856518024688995', - 'long': '27.297039446278' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1638978', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Sonkajärvi', - 'source': 'DNA', - 'lat': '63.704981907623996', - 'long': '28.017863862549' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1638979', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Sonkajärvi', - 'source': 'DNA', - 'lat': '63.644942966209', - 'long': '27.490981526587' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1638980', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Sonkajärvi', - 'source': 'DNA', - 'lat': '63.572628793482', - 'long': '27.630648521335' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1638983', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Sonkajärvi', - 'source': 'DNA', - 'lat': '63.648536183258', - 'long': '27.491848563534003' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1638985', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Sonkajärvi', - 'source': 'DNA', - 'lat': '63.721441274635', - 'long': '27.274630676851' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1642623', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Sortavala', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1663531', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Suistamo', - 'source': 'DNA', - 'lat': '61.968036082922', - 'long': '31.067202942823' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1675366', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Sumiainen', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1705127', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Suomussalmi', - 'source': 'DNA', - 'lat': '65.159626694609', - 'long': '29.084547847108002' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1749660', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Sääminki', - 'source': 'DNA', - 'lat': '61.947073315505', - 'long': '28.883817243545' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1749661', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Sääminki', - 'source': 'DNA', - 'lat': '61.946068629608', - 'long': '28.892508935924' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1756206', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Taipalsaari', - 'source': 'DNA', - 'lat': '61.167685011485005', - 'long': '28.129365241332998' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1756207', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Taipalsaari', - 'source': 'DNA', - 'lat': '61.238409513927', - 'long': '28.054671975441998' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1886639', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Vahviala', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1886640', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Vahviala', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1886641', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Vahviala', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1886642', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Vahviala', - 'source': 'DNA', - 'lat': '60.774411702299005', - 'long': '28.436951438846997' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1886643', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Vahviala', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1930167', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Varpaisjärvi', - 'source': 'DNA', - 'lat': '63.505074984372996', - 'long': '27.720644498730998' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1936661', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Vehkalahti', - 'source': 'DNA', - 'lat': '60.720506492557', - 'long': '27.207579790092' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1982588', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Viipuri', - 'source': 'DNA', - 'lat': '60.733926515528005', - 'long': '28.869811096321996' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/19989', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Alajärvi', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/19990', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Alajärvi', - 'source': 'DNA', - 'lat': '62.938032764407', - 'long': '23.84020504084' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2044821', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Joutseno', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2069470', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Lappee', - 'source': 'DNA', - 'lat': '61.001766817038', - 'long': '28.281463799611' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2069471', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Lappee', - 'source': 'DNA', - 'lat': '60.896641568514994', - 'long': '28.356128009573997' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2069473', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Lappee', - 'source': 'DNA', - 'lat': '60.869304191249', - 'long': '28.272498612324' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2069474', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Lappee', - 'source': 'DNA', - 'lat': '61.001878059400994', - 'long': '28.278330998753' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2069475', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Lappee', - 'source': 'DNA', - 'lat': '61.107597286322004', - 'long': '28.348889937237' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2069476', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Lappee', - 'source': 'DNA', - 'lat': '61.090478698631', - 'long': '28.328980608551998' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2069477', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Lappee', - 'source': 'DNA', - 'lat': '61.037298699263', - 'long': '28.228973332209996' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2120721', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Nuijamaa', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2120722', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Nuijamaa', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2120723', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Nuijamaa', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2120724', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Nuijamaa', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2120725', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Nuijamaa', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2127954', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Orimattila', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2127955', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Orimattila', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/213710', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Hiitola', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2182493', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Rautjärvi', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2182494', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Rautjärvi', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2182495', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Rautjärvi', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2182496', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Rautjärvi', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2182497', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Rautjärvi', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2182498', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Rautjärvi', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2182499', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Rautjärvi', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2182500', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Rautjärvi', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2182501', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Rautjärvi', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2194335', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Ruokolahti', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2194336', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Ruokolahti', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2194337', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Ruokolahti', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2194338', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Ruokolahti', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2194339', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Ruokolahti', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2257190', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Virrat', - 'source': 'DNA', - 'lat': '62.129363311115', - 'long': '23.833651356411' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2269691', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Ylikiiminki', - 'source': 'DNA', - 'lat': '65.036807885913', - 'long': '26.031062837466003' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2312131', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Äyräpää', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2312132', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Äyräpää', - 'source': 'DNA', - 'lat': '60.69256263297', - 'long': '29.42044742967' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2318379', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Antrea', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2325106', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Hiitola', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2332603', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Jaakkima', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2332604', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Jaakkima', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2332605', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Jaakkima', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2344409', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Kirvu', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2344411', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Kirvu', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2344413', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Kirvu', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2360971', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Kurkijoki', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2368355', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Lumivaara', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2368357', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Lumivaara', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2397683', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Sortavala', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2413579', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Vahviala', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2421691', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Vieremä', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2423875', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Viipuri', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2430912', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Vuoksenranta', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2430913', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Vuoksenranta', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2430914', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Vuoksenranta', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2430916', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Vuoksenranta', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2433846', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Äyräpää', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2433847', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Äyräpää', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/273275', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Iisalmi', - 'source': 'DNA', - 'lat': '63.60432799236', - 'long': '27.034357677425' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/273276', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Iisalmi', - 'source': 'DNA', - 'lat': '63.601728112816', - 'long': '26.848378067287' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/273277', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Iisalmi', - 'source': 'DNA', - 'lat': '63.606231010767004', - 'long': '26.971590503409' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/273278', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Iisalmi', - 'source': 'DNA', - 'lat': '63.46598816579701', - 'long': '27.058200396212' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/313069', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Imatra', - 'source': 'DNA', - 'lat': '61.23819201646', - 'long': '28.883861014038' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/342307', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Jaakkima', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/342309', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Jaakkima', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/382031', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Joutseno', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/416710', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Jyväskylä', - 'source': 'DNA', - 'lat': '62.243179049531', - 'long': '25.994982506066' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/435182', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Jääski', - 'source': 'DNA', - 'lat': '61.024972531632', - 'long': '29.044733550165' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/435185', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Jääski', - 'source': 'DNA', - 'lat': '61.024961325595996', - 'long': '29.044749770789' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/435186', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Jääski', - 'source': 'DNA', - 'lat': '61.024952535718', - 'long': '29.044674585085' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/441770', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Kaavi', - 'source': 'DNA', - 'lat': '62.94590506732099', - 'long': '28.542101061870998' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/441771', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Kaavi', - 'source': 'DNA', - 'lat': '63.032106363669996', - 'long': '28.603439385532997' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/441772', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Kaavi', - 'source': 'DNA', - 'lat': '63.037960685751', - 'long': '28.606188941766' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/530854', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Kauhava', - 'source': 'DNA', - 'lat': '63.166375310033', - 'long': '23.019794835156997' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/53561', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Antrea', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/53562', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Antrea', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/53563', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Antrea', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/53564', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Antrea', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/53565', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Antrea', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/53566', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Antrea', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/53567', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Antrea', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/53568', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Antrea', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/53569', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Antrea', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/53570', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Antrea', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/53571', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Antrea', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/536133', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Kaukola', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/575524', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Kerimäki', - 'source': 'DNA', - 'lat': '62.024249114304', - 'long': '29.524491402299' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/575525', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Kerimäki', - 'source': 'DNA', - 'lat': '62.034264868324', - 'long': '29.547867002407997' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/575526', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Kerimäki', - 'source': 'DNA', - 'lat': '62.003941182432', - 'long': '28.931552753295' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/585460', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Kesälahti', - 'source': 'DNA', - 'lat': '61.882808599911', - 'long': '29.738887130871' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/58610', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Anttola', - 'source': 'DNA', - 'lat': '61.553357628163994', - 'long': '27.720984934779' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/58611', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Anttola', - 'source': 'DNA', - 'lat': '61.54979735024', - 'long': '27.713862772333' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/619610', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Kirvu', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/619611', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Kirvu', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/619612', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Kirvu', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/619614', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Kirvu', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/619615', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Kirvu', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/619616', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Kirvu', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/619617', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Kirvu', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/619618', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Kirvu', - 'source': 'DNA', - 'lat': '61.180971143623', - 'long': '29.271364824608998' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/619621', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Kirvu', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/634695', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Kitee', - 'source': 'DNA', - 'lat': '61.952890564126996', - 'long': '30.077283124031002' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/634696', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Kitee', - 'source': 'DNA', - 'lat': '62.181899792919', - 'long': '29.933524359987' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/634697', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Kitee', - 'source': 'DNA', - 'lat': '62.071853212368005', - 'long': '30.220755486972' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/658596', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Kiuruvesi', - 'source': 'DNA', - 'lat': '63.898700062996', - 'long': '26.664092167099' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/658597', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Kiuruvesi', - 'source': 'DNA', - 'lat': '63.845110154744994', - 'long': '26.322372653673' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/658599', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Kiuruvesi', - 'source': 'DNA', - 'lat': '63.802147380967', - 'long': '26.441500304492997' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/683920', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Koivisto', - 'source': 'DNA', - 'lat': '60.326600847082005', - 'long': '28.521880007747' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/696829', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Konnevesi', - 'source': 'DNA', - 'lat': '62.581819246911', - 'long': '26.33076029532' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/787547', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Kurkijoki', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/787548', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Kurkijoki', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/787550', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Kurkijoki', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/787551', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Kurkijoki', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/787552', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Kurkijoki', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/928064', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Lemi', - 'source': 'DNA', - 'lat': '61.049583132747', - 'long': '27.723809101159' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/928065', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Lemi', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/989951', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Lumivaara', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/989952', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Lumivaara', - 'source': 'DNA', - 'lat': '61.357823347632', - 'long': '30.155878206391' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/989953', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Lumivaara', - 'source': 'DNA', - 'lat': '61.357823347632', - 'long': '30.155878206391' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/989954', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Lumivaara', - 'source': 'DNA', - 'lat': '61.415233627527996', - 'long': '30.169888045763003' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/989955', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäki', - 'broaderAreaLabel': 'Lumivaara', - 'source': 'DNA', - 'lat': '61.411643113616', - 'long': '30.174870468666' - } - ] - }, - { - 'x': 'Undefined', - 'y': 25, - 'values': [ - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1083154', - 'label': 'Ukonmäki', - 'typeLabel': 'Undefined', - 'broaderAreaLabel': 'Myrskylä', - 'source': 'DNA', - 'lat': '60.591396365824004', - 'long': '25.813772967477004' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1105491', - 'label': 'Ukonmäki', - 'typeLabel': 'Undefined', - 'broaderAreaLabel': 'Nilsiä', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1192930', - 'label': 'Ukonmäki', - 'typeLabel': 'Undefined', - 'broaderAreaLabel': 'Parikkala', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1426107', - 'label': 'Ukonmäki', - 'typeLabel': 'Undefined', - 'broaderAreaLabel': 'Rautavaara', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1426108', - 'label': 'Ukonmäki', - 'typeLabel': 'Undefined', - 'broaderAreaLabel': 'Rautavaara', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1426109', - 'label': 'Ukonmäki', - 'typeLabel': 'Undefined', - 'broaderAreaLabel': 'Rautavaara', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/14530', - 'label': 'Ukonmäki', - 'typeLabel': 'Undefined', - 'broaderAreaLabel': 'Alajärvi', - 'source': 'DNA', - 'lat': '62.938760120906', - 'long': '23.83670831702' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1638981', - 'label': 'Ukonmäki', - 'typeLabel': 'Undefined', - 'broaderAreaLabel': 'Sonkajärvi', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1638982', - 'label': 'Ukonmäki', - 'typeLabel': 'Undefined', - 'broaderAreaLabel': 'Sonkajärvi', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1638984', - 'label': 'Ukonmäki', - 'typeLabel': 'Undefined', - 'broaderAreaLabel': 'Sonkajärvi', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1663532', - 'label': 'Ukonmäki', - 'typeLabel': 'Undefined', - 'broaderAreaLabel': 'Suistamo', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1794482', - 'label': 'Ukonmäki', - 'typeLabel': 'Undefined', - 'broaderAreaLabel': 'Tervo', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1930169', - 'label': 'Ukonmäki', - 'typeLabel': 'Undefined', - 'broaderAreaLabel': 'Varpaisjärvi', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1930170', - 'label': 'Ukonmäki', - 'typeLabel': 'Undefined', - 'broaderAreaLabel': 'Varpaisjärvi', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2330114', - 'label': 'Ukonmäki', - 'typeLabel': 'Undefined', - 'broaderAreaLabel': 'Impilahti', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2332606', - 'label': 'Ukonmäki', - 'typeLabel': 'Undefined', - 'broaderAreaLabel': 'Jaakkima', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2360970', - 'label': 'Ukonmäki', - 'typeLabel': 'Undefined', - 'broaderAreaLabel': 'Kurkijoki', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2368356', - 'label': 'Ukonmäki', - 'typeLabel': 'Undefined', - 'broaderAreaLabel': 'Lumivaara', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2397684', - 'label': 'Ukonmäki', - 'typeLabel': 'Undefined', - 'broaderAreaLabel': 'Sortavala', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/273279', - 'label': 'Ukonmäki', - 'typeLabel': 'Undefined', - 'broaderAreaLabel': 'Iisalmi', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/342308', - 'label': 'Ukonmäki', - 'typeLabel': 'Undefined', - 'broaderAreaLabel': 'Jaakkima', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/585461', - 'label': 'Ukonmäki', - 'typeLabel': 'Undefined', - 'broaderAreaLabel': 'Kesälahti', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/619619', - 'label': 'Ukonmäki', - 'typeLabel': 'Undefined', - 'broaderAreaLabel': 'Kirvu', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/658598', - 'label': 'Ukonmäki', - 'typeLabel': 'Undefined', - 'broaderAreaLabel': 'Kiuruvesi', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/928066', - 'label': 'Ukonmäki', - 'typeLabel': 'Undefined', - 'broaderAreaLabel': 'Lemi', - 'source': 'DNA' - } - ] - }, - { - 'x': 'Talo', - 'y': 18, - 'values': [ - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1039080', - 'label': 'Ukonmäki', - 'typeLabel': 'Talo', - 'broaderAreaLabel': 'Miehikkälä', - 'source': 'DNA', - 'lat': '60.65498333736301', - 'long': '27.896418218715' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1250331', - 'label': 'Ukonmäki', - 'typeLabel': 'Talo', - 'broaderAreaLabel': 'Pielavesi', - 'source': 'DNA', - 'lat': '63.413090150852', - 'long': '26.919909258251' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1663529', - 'label': 'Ukonmäki', - 'typeLabel': 'Talo', - 'broaderAreaLabel': 'Suistamo', - 'source': 'DNA', - 'lat': '61.871934258688', - 'long': '31.044686773211' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1663534', - 'label': 'Ukonmäki', - 'typeLabel': 'Talo', - 'broaderAreaLabel': 'Suistamo', - 'source': 'DNA', - 'lat': '61.957665186933', - 'long': '31.101462763467' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1930168', - 'label': 'Ukonmäki', - 'typeLabel': 'Talo', - 'broaderAreaLabel': 'Varpaisjärvi', - 'source': 'DNA', - 'lat': '63.386324051819', - 'long': '27.945579451711' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1982586', - 'label': 'Ukonmäki', - 'typeLabel': 'Talo', - 'broaderAreaLabel': 'Viipuri', - 'source': 'DNA', - 'lat': '60.605632218286', - 'long': '28.809627209577' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1982587', - 'label': 'Ukonmäki', - 'typeLabel': 'Talo', - 'broaderAreaLabel': 'Viipuri', - 'source': 'DNA', - 'lat': '60.800375673854', - 'long': '28.790375736484' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1988573', - 'label': 'Ukonmäki', - 'typeLabel': 'Talo', - 'broaderAreaLabel': 'Viitasaari', - 'source': 'DNA', - 'lat': '63.112393063535', - 'long': '25.809715120788002' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1998629', - 'label': 'Ukonmäki', - 'typeLabel': 'Talo', - 'broaderAreaLabel': 'Vuoksenranta', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2423874', - 'label': 'Ukonmäki', - 'typeLabel': 'Talo', - 'broaderAreaLabel': 'Viipuri', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2430911', - 'label': 'Ukonmäki', - 'typeLabel': 'Talo', - 'broaderAreaLabel': 'Vuoksenranta', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2430915', - 'label': 'Ukonmäki', - 'typeLabel': 'Talo', - 'broaderAreaLabel': 'Vuoksenranta', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/246342', - 'label': 'Ukonmäki', - 'typeLabel': 'Talo', - 'broaderAreaLabel': 'Hyrynsalmi', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/514599', - 'label': 'Ukonmäki', - 'typeLabel': 'Talo', - 'broaderAreaLabel': 'Karttula', - 'source': 'DNA', - 'lat': '62.85453430606999', - 'long': '27.120869186478' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/514600', - 'label': 'Ukonmäki', - 'typeLabel': 'Talo', - 'broaderAreaLabel': 'Karttula', - 'source': 'DNA', - 'lat': '62.69456378664', - 'long': '27.298733169838' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/514601', - 'label': 'Ukonmäki', - 'typeLabel': 'Talo', - 'broaderAreaLabel': 'Karttula', - 'source': 'DNA', - 'lat': '62.979519361909', - 'long': '27.118974297119003' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/696830', - 'label': 'Ukonmäki', - 'typeLabel': 'Talo', - 'broaderAreaLabel': 'Konnevesi', - 'source': 'DNA', - 'lat': '62.578443917641', - 'long': '26.330570967633' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/920772', - 'label': 'Ukonmäki', - 'typeLabel': 'Talo', - 'broaderAreaLabel': 'Lehtimäki', - 'source': 'DNA', - 'lat': '62.840227084709994', - 'long': '23.974611439788' - } - ] - }, - { - 'x': 'Tila', - 'y': 12, - 'values': [ - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1011919', - 'label': 'Ukonmäki', - 'typeLabel': 'Tila', - 'broaderAreaLabel': 'Längelmäki', - 'source': 'DNA', - 'lat': '61.729274546277', - 'long': '24.655967195097' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1243634', - 'label': 'Ukonmäki', - 'typeLabel': 'Tila', - 'broaderAreaLabel': 'Pieksämäki', - 'source': 'DNA', - 'lat': '62.380219696066', - 'long': '26.882415926451' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1638977', - 'label': 'Ukonmäki', - 'typeLabel': 'Tila', - 'broaderAreaLabel': 'Sonkajärvi', - 'source': 'DNA', - 'lat': '63.58150935574', - 'long': '27.650981675849' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1794481', - 'label': 'Ukonmäki', - 'typeLabel': 'Tila', - 'broaderAreaLabel': 'Tervo', - 'source': 'DNA', - 'lat': '62.967444770674', - 'long': '26.812321397582' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/465850', - 'label': 'Ukonmäki', - 'typeLabel': 'Tila', - 'broaderAreaLabel': 'Kangasala', - 'source': 'DNA', - 'lat': '61.438152256146005', - 'long': '24.269524257694002' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/465851', - 'label': 'Ukonmäki', - 'typeLabel': 'Tila', - 'broaderAreaLabel': 'Kangasala', - 'source': 'DNA', - 'lat': '61.438259402325', - 'long': '24.268381115461' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/478596', - 'label': 'Ukonmäki', - 'typeLabel': 'Tila', - 'broaderAreaLabel': 'Kangasniemi', - 'source': 'DNA', - 'lat': '61.965155420849', - 'long': '26.723786360669' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/575523', - 'label': 'Ukonmäki', - 'typeLabel': 'Tila', - 'broaderAreaLabel': 'Kerimäki', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/585458', - 'label': 'Ukonmäki', - 'typeLabel': 'Tila', - 'broaderAreaLabel': 'Kesälahti', - 'source': 'DNA', - 'lat': '62.060802952497994', - 'long': '29.569223223269' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/58612', - 'label': 'Ukonmäki', - 'typeLabel': 'Tila', - 'broaderAreaLabel': 'Anttola', - 'source': 'DNA', - 'lat': '61.609303363466', - 'long': '27.812245408037' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/696831', - 'label': 'Ukonmäki', - 'typeLabel': 'Tila', - 'broaderAreaLabel': 'Konnevesi', - 'source': 'DNA', - 'lat': '62.713603701241', - 'long': '26.426417441273998' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/934938', - 'label': 'Ukonmäki', - 'typeLabel': 'Tila', - 'broaderAreaLabel': 'Leppävirta', - 'source': 'DNA', - 'lat': '62.518039296919', - 'long': '28.326682789449002' - } - ] - }, - { - 'x': 'Kallio', - 'y': 6, - 'values': [ - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1134813', - 'label': 'Ukonmäki', - 'typeLabel': 'Kallio', - 'broaderAreaLabel': 'Nurmo', - 'source': 'DNA', - 'lat': '62.867822705413', - 'long': '22.878806077328' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1445534', - 'label': 'Ukonmäki', - 'typeLabel': 'Kallio', - 'broaderAreaLabel': 'Ristiina', - 'source': 'DNA', - 'lat': '61.492010469991996', - 'long': '27.344101731964997' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2344412', - 'label': 'Ukonmäki', - 'typeLabel': 'Kallio', - 'broaderAreaLabel': 'Kirvu', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/435183', - 'label': 'Ukonmäki', - 'typeLabel': 'Kallio', - 'broaderAreaLabel': 'Jääski', - 'source': 'DNA', - 'lat': '61.066965398969', - 'long': '29.003031668046' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/619620', - 'label': 'Ukonmäki', - 'typeLabel': 'Kallio', - 'broaderAreaLabel': 'Kirvu', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/83167', - 'label': 'Ukonmäki', - 'typeLabel': 'Kallio', - 'broaderAreaLabel': 'Aura', - 'source': 'DNA', - 'lat': '60.661016828104', - 'long': '22.600052508943' - } - ] - }, - { - 'x': 'M', - 'y': 5, - 'values': [ - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1663530', - 'label': 'Ukonmäki', - 'typeLabel': 'M', - 'broaderAreaLabel': 'Suistamo', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1996946', - 'label': 'Ukonmäki', - 'typeLabel': 'M', - 'broaderAreaLabel': 'Virolahti', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2430910', - 'label': 'Ukonmäki', - 'typeLabel': 'M', - 'broaderAreaLabel': 'Vuoksenranta', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/53572', - 'label': 'Ukonmäki', - 'typeLabel': 'M', - 'broaderAreaLabel': 'Antrea', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/619613', - 'label': 'Ukonmäki', - 'typeLabel': 'M', - 'broaderAreaLabel': 'Kirvu', - 'source': 'DNA' - } - ] - }, - { - 'x': 'Mökki', - 'y': 3, - 'values': [ - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1352389', - 'label': 'Ukonmäki', - 'typeLabel': 'Mökki', - 'broaderAreaLabel': 'Pyhäjärvi Ol.', - 'source': 'DNA', - 'lat': '63.65324673411801', - 'long': '25.966102218539' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1576912', - 'label': 'Ukonmäki', - 'typeLabel': 'Mökki', - 'broaderAreaLabel': 'Siilinjärvi', - 'source': 'DNA' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2069472', - 'label': 'Ukonmäki', - 'typeLabel': 'Mökki', - 'broaderAreaLabel': 'Lappee', - 'source': 'DNA', - 'lat': '60.869304191249', - 'long': '28.272498612324' - } - ] - }, - { - 'x': 'Metsä', - 'y': 2, - 'values': [ - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1134814', - 'label': 'Ukonmäki', - 'typeLabel': 'Metsä', - 'broaderAreaLabel': 'Nurmo', - 'source': 'DNA', - 'lat': '62.866154745657994', - 'long': '22.887632130222997' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/530855', - 'label': 'Ukonmäki', - 'typeLabel': 'Metsä', - 'broaderAreaLabel': 'Kauhava', - 'source': 'DNA', - 'lat': '63.169398773014', - 'long': '23.018011018061' - } - ] - }, - { - 'x': 'Rinne', - 'y': 2, - 'values': [ - { - 's': 'http://ldf.fi/kotus-digital-names-archive/182238', - 'label': 'Ukonmäki', - 'typeLabel': 'Rinne', - 'broaderAreaLabel': 'Haukipudas', - 'source': 'DNA', - 'lat': '65.071898912874', - 'long': '25.416492183483' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/246344', - 'label': 'Ukonmäki', - 'typeLabel': 'Rinne', - 'broaderAreaLabel': 'Hyrynsalmi', - 'source': 'DNA', - 'lat': '64.714505291077', - 'long': '28.663837780231' - } - ] - }, - { - 'x': 'Vaara', - 'y': 2, - 'values': [ - { - 's': 'http://ldf.fi/kotus-digital-names-archive/246343', - 'label': 'Ukonmäki', - 'typeLabel': 'Vaara', - 'broaderAreaLabel': 'Hyrynsalmi', - 'source': 'DNA', - 'lat': '64.559968970756', - 'long': '28.696257437435' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/319001', - 'label': 'Ukonmäki', - 'typeLabel': 'Vaara', - 'broaderAreaLabel': 'Impilahti', - 'source': 'DNA', - 'lat': '61.678434351205', - 'long': '31.412490340917' - } - ] - }, - { - 'x': 'Mäkialue', - 'y': 2, - 'values': [ - { - 's': 'http://ldf.fi/kotus-digital-names-archive/575522', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäkialue', - 'broaderAreaLabel': 'Kerimäki', - 'source': 'DNA', - 'lat': '62.035429124330996', - 'long': '29.553893419227' - }, - { - 's': 'http://ldf.fi/kotus-digital-names-archive/585459', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäkialue', - 'broaderAreaLabel': 'Kesälahti', - 'source': 'DNA', - 'lat': '62.035403006406', - 'long': '29.553959649802' - } - ] - }, - { - 'x': 'Kalliomaa', - 'y': 1, - 'values': [ - { - 's': 'http://ldf.fi/kotus-digital-names-archive/10527', - 'label': 'Ukonmäki', - 'typeLabel': 'Kalliomaa', - 'broaderAreaLabel': 'Alahärmä', - 'source': 'DNA', - 'lat': '63.255930986944996', - 'long': '22.931255119909' - } - ] - }, - { - 'x': 'Kahvilarakennus', - 'y': 1, - 'values': [ - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1172019', - 'label': 'Ukonmäki', - 'typeLabel': 'Kahvilarakennus', - 'broaderAreaLabel': 'Padasjoki', - 'source': 'DNA' - } - ] - }, - { - 'x': 'Leikkipaikka', - 'y': 1, - 'values': [ - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1192931', - 'label': 'Ukonmäki', - 'typeLabel': 'Leikkipaikka', - 'broaderAreaLabel': 'Parikkala', - 'source': 'DNA', - 'lat': '61.567824741867', - 'long': '29.64169509088' - } - ] - }, - { - 'x': 'Ranta', - 'y': 1, - 'values': [ - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1363734', - 'label': 'Ukonmäki', - 'typeLabel': 'Ranta', - 'broaderAreaLabel': 'Pyhäjärvi Vpl', - 'source': 'DNA' - } - ] - }, - { - 'x': 'Töyränne', - 'y': 1, - 'values': [ - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1445535', - 'label': 'Ukonmäki', - 'typeLabel': 'Töyränne', - 'broaderAreaLabel': 'Ristiina', - 'source': 'DNA', - 'lat': '61.419683148431', - 'long': '27.364217898737003' - } - ] - }, - { - 'x': 'Työmiesasunto', - 'y': 1, - 'values': [ - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1576913', - 'label': 'Ukonmäki', - 'typeLabel': 'Työmiesasunto', - 'broaderAreaLabel': 'Siilinjärvi', - 'source': 'DNA', - 'lat': '63.036174371438996', - 'long': '27.604847691566' - } - ] - }, - { - 'x': 'Kangas', - 'y': 1, - 'values': [ - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1607142', - 'label': 'Ukonmäki', - 'typeLabel': 'Kangas', - 'broaderAreaLabel': 'Soini', - 'source': 'DNA', - 'lat': '62.856127659834996', - 'long': '24.163391614675003' - } - ] - }, - { - 'x': 'Korkea maa', - 'y': 1, - 'values': [ - { - 's': 'http://ldf.fi/kotus-digital-names-archive/1663533', - 'label': 'Ukonmäki', - 'typeLabel': 'Korkea maa', - 'broaderAreaLabel': 'Suistamo', - 'source': 'DNA', - 'lat': '61.960248810074', - 'long': '31.104494275911' - } - ] - }, - { - 'x': 'Kumpu', - 'y': 1, - 'values': [ - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2312133', - 'label': 'Ukonmäki', - 'typeLabel': 'Kumpu', - 'broaderAreaLabel': 'Äyräpää', - 'source': 'DNA' - } - ] - }, - { - 'x': 'Vuori', - 'y': 1, - 'values': [ - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2344410', - 'label': 'Ukonmäki', - 'typeLabel': 'Vuori', - 'broaderAreaLabel': 'Kirvu', - 'source': 'DNA' - } - ] - }, - { - 'x': 'Hakamaa', - 'y': 1, - 'values': [ - { - 's': 'http://ldf.fi/kotus-digital-names-archive/2363964', - 'label': 'Ukonmäki', - 'typeLabel': 'Hakamaa', - 'broaderAreaLabel': 'Laukaa', - 'source': 'DNA' - } - ] - }, - { - 'x': 'Avokallio', - 'y': 1, - 'values': [ - { - 's': 'http://ldf.fi/kotus-digital-names-archive/319002', - 'label': 'Ukonmäki', - 'typeLabel': 'Avokallio', - 'broaderAreaLabel': 'Impilahti', - 'source': 'DNA', - 'lat': '61.625533909716', - 'long': '31.374277938987998' - } - ] - }, - { - 'x': 'Kylänosa', - 'y': 1, - 'values': [ - { - 's': 'http://ldf.fi/kotus-digital-names-archive/342306', - 'label': 'Ukonmäki', - 'typeLabel': 'Kylänosa', - 'broaderAreaLabel': 'Jaakkima', - 'source': 'DNA' - } - ] - }, - { - 'x': 'Kennäs', - 'y': 1, - 'values': [ - { - 's': 'http://ldf.fi/kotus-digital-names-archive/342310', - 'label': 'Ukonmäki', - 'typeLabel': 'Kennäs', - 'broaderAreaLabel': 'Jaakkima', - 'source': 'DNA', - 'lat': '61.521412927609994', - 'long': '30.379742597111' - } - ] - }, - { - 'x': 'Mäet', - 'y': 1, - 'values': [ - { - 's': 'http://ldf.fi/kotus-digital-names-archive/435184', - 'label': 'Ukonmäki', - 'typeLabel': 'Mäet', - 'broaderAreaLabel': 'Jääski', - 'source': 'DNA' - } - ] - }, - { - 'x': 'Itärinne', - 'y': 1, - 'values': [ - { - 's': 'http://ldf.fi/kotus-digital-names-archive/478597', - 'label': 'Ukonmäki', - 'typeLabel': 'Itärinne', - 'broaderAreaLabel': 'Kangasniemi', - 'source': 'DNA', - 'lat': '61.964991799529', - 'long': '26.821790469992' - } - ] - }, - { - 'x': 'Pelto', - 'y': 1, - 'values': [ - { - 's': 'http://ldf.fi/kotus-digital-names-archive/850621', - 'label': 'Ukonmäki', - 'typeLabel': 'Pelto', - 'broaderAreaLabel': 'Kälviä', - 'source': 'DNA', - 'lat': '63.836328129688994', - 'long': '23.503555380576' - } - ] - }, - { - 'x': 'Kalliomäki', - 'y': 1, - 'values': [ - { - 's': 'http://ldf.fi/kotus-digital-names-archive/989958', - 'label': 'Ukonmäki', - 'typeLabel': 'Kalliomäki', - 'broaderAreaLabel': 'Lumivaara', - 'source': 'DNA' - } - ] - } -]; diff --git a/src/client/components/map/GMap.js b/src/client/components/map/GMap.js deleted file mode 100644 index 69490079..00000000 --- a/src/client/components/map/GMap.js +++ /dev/null @@ -1,21 +0,0 @@ -import React from 'react'; -import { withScriptjs, withGoogleMap, GoogleMap } from 'react-google-maps'; -import HeatmapLayer from 'react-google-maps/lib/components/visualization/HeatmapLayer'; - -let GMap = withScriptjs(withGoogleMap((props) => - <GoogleMap - defaultZoom={4} - defaultCenter={{ lat: 65.184809, lng: 27.31405 }} - > - <HeatmapLayer data={ - props.results.reduce((data, obj) => { - if (obj.hasOwnProperty('lat') && obj.hasOwnProperty('long')) { - data.push(new google.maps.LatLng(obj.lat, obj.long)); - } - return data; - },[]) - } /> - </GoogleMap> -)); - -export default GMap; diff --git a/src/client/components/map/LeafletMap-old.js b/src/client/components/map/LeafletMap-old.js deleted file mode 100644 index 8a27bc13..00000000 --- a/src/client/components/map/LeafletMap-old.js +++ /dev/null @@ -1,140 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { - Map, - LayersControl, - TileLayer, - GeoJSON -} from 'react-leaflet'; -const { BaseLayer, Overlay } = LayersControl; -import FullscreenControl from 'react-leaflet-fullscreen'; -import 'react-leaflet-fullscreen/dist/styles.css'; -import ResultMarkerList from './ResultMarkerList'; -// import MarkerCluster from './MarkerCluster'; -import SimpleSlider from './SimpleSlider'; -import Control from 'react-leaflet-control'; -// import { GoogleLayer } from 'react-leaflet-google'; -// // https://console.developers.google.com/apis/credentials?project=hipla-187309 -// const gKey = 'AIzaSyCKWw5FjhwLsfp_l2gjVAifPkT)3cxGXhA4'; -// const road = 'ROADMAP'; // displays the default road map view. This is the default map type. -// const satellite = 'SATELLITE'; // displays Google Earth satellite images. -// const hybrid = 'HYBRID'; // displays a mixture of normal and satellite views. -// const terrain = 'TERRAIN'; // displays a physical map based on terrain information. - -class LeafletMap extends React.Component { - - constructor(props) { - super(props); - this.state = { - lat: 65.184809, - lng: 27.314050, - zoom: 4, - opacity: 1.0 - }; - } - - handleSetOpacity = (value) => { - this.setState({ opacity: +value / 100 }); - } - - handleOnEachFeature = (feature, layer) => { - if (feature.properties && feature.properties.NIMI) { - layer.bindPopup('<p>Nimi: ' + feature.properties.NIMI + '</p></p>ID: ' + feature.id + '</p>'); - } - } - - - render() { - const position = [this.state.lat, this.state.lng]; - - return ( - <Map - center={position} - zoom={this.state.zoom} - > - <LayersControl position="topright"> - <BaseLayer checked name="OpenStreetMap"> - <TileLayer - attribution="&copy <a href="http://osm.org/copyright">OpenStreetMap</a> contributors" - url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png" - /> - </BaseLayer> - {/* <BaseLayer name='Google Maps Roads'> - <GoogleLayer googlekey={gKey} maptype={road}/> - </BaseLayer> - <BaseLayer name='Google Maps Satellite'> - <GoogleLayer googlekey={gKey} maptype={satellite} /> - </BaseLayer> - <BaseLayer name='Google Maps Hybrid'> - <GoogleLayer googlekey={gKey} maptype={hybrid} /> - </BaseLayer> - <BaseLayer name='Google Maps Terrain'> - <GoogleLayer googlekey={gKey} maptype={terrain} /> - </BaseLayer> */} - {/* <BaseLayer name="MML Maastokartta"> - <TileLayer - attribution="SeCo" - url="https://avoin-karttakuva.maanmittauslaitos.fi/avoin/wmts/1.0.0/maastokartta/default/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.png" - /> - </BaseLayer> */} - <Overlay name="Karelian maps"> - <TileLayer - attribution="SeCo" - url="http:///mapwarper.onki.fi/mosaics/tile/4/{z}/{x}/{y}.png" - opacity={this.state.opacity} - /> - </Overlay> - <Overlay name="Senate atlas"> - <TileLayer - attribution="SeCo" - url="http:///mapwarper.onki.fi/mosaics/tile/5/{z}/{x}/{y}.png" - opacity={this.state.opacity} - /> - </Overlay> - <Overlay name="Western Front July 1917"> - <TileLayer - attribution="SeCo" - url="http://mapwarper.net/mosaics/tile/844/{z}/{x}/{y}.png" - opacity={this.state.opacity} - /> - </Overlay> - </LayersControl> - <GeoJSON - key={this.props.geoJSONKey} - data={this.props.geoJSON} - onEachFeature={this.handleOnEachFeature} - /> - {/* {this.props.mapMode == 'cluster' && this.props.results.length > 0 && - <MarkerCluster results={this.props.results} /> - } */} - {this.props.mapMode == 'noCluster' && this.props.results.length > 0 && - <ResultMarkerList results={this.props.results} />} - <FullscreenControl position='topright' /> - <Control position="topright" > - <SimpleSlider - sliderValue={this.props.sliderValue} - setOpacity={this.handleSetOpacity} - /> - </Control> - <Control position="topright" > - <button - onClick={this.props.getGeoJSON} - > - Kotus pitäjät - </button> - </Control> - </Map> - ); - } -} - -LeafletMap.propTypes = { - results: PropTypes.array.isRequired, - sliderValue: PropTypes.number.isRequired, - geoJSON: PropTypes.object, - geoJSONKey: PropTypes.number, - getGeoJSON: PropTypes.func.isRequired, - mapMode: PropTypes.string.isRequired -}; - -export default LeafletMap; diff --git a/src/client/components/map/MarkerCluster.js b/src/client/components/map/MarkerCluster.js deleted file mode 100644 index 755b23ab..00000000 --- a/src/client/components/map/MarkerCluster.js +++ /dev/null @@ -1,18 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import ResultMarker from './ResultMarker'; -import MarkerClusterGroup from 'react-leaflet-markercluster'; -import 'react-leaflet-markercluster/dist/styles.min.css'; - -const MarkerCluster = ({results}) => { - const markers = results.map(result => <ResultMarker key={result.s} result={result} />); - return ( - <MarkerClusterGroup disableClusteringAtZoom={9}>{markers}</MarkerClusterGroup> - ); -}; - -MarkerCluster.propTypes = { - results: PropTypes.array.isRequired, -}; - -export default MarkerCluster; diff --git a/src/client/components/map/ResultMarker.js b/src/client/components/map/ResultMarker.js deleted file mode 100644 index d9d23254..00000000 --- a/src/client/components/map/ResultMarker.js +++ /dev/null @@ -1,42 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { Marker, Popup } from 'react-leaflet'; -// import L from 'leaflet'; - -const ResultMarker = ({result}) => { - // const greenIcon = new L.Icon({ - // iconUrl: 'https://cdn.rawgit.com/pointhi/leaflet-color-markers/master/img/marker-icon-2x-green.png', - // shadowUrl: 'https://cdnjs.cloudflare.com/ajax/libs/leaflet/0.7.7/images/marker-shadow.png', - // iconSize: [25, 41], - // iconAnchor: [12, 41], - // popupAnchor: [1, -34], - // shadowSize: [41, 41] - // }); - const { uri, label, typeLabel, broaderAreaLabel, source, lat, long } = result; - - if (typeof lat === 'undefined' || typeof long === 'undefined') { - return(null); - } else { - const pos = [+lat, +long]; - return ( - <Marker - position={pos} - > - <Popup> - <div> - <h3>{label}</h3> - <p>Type: {typeLabel}</p> - <p>Area: {broaderAreaLabel}</p> - <p>Source: <a target='_blank' rel='noopener noreferrer' href={uri}>{source}</a></p> - </div> - </Popup> - </Marker> - ); - } -}; - -ResultMarker.propTypes = { - result: PropTypes.object.isRequired, -}; - -export default ResultMarker; diff --git a/src/client/components/map/ResultMarkerList.js b/src/client/components/map/ResultMarkerList.js deleted file mode 100644 index a7866f2c..00000000 --- a/src/client/components/map/ResultMarkerList.js +++ /dev/null @@ -1,14 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import ResultMarker from './ResultMarker'; - -const ResultMarkerList = ({ results }) => { - const markers = results.map(result => <ResultMarker key={result.s} result={result} />); - return markers; -}; - -ResultMarkerList.propTypes = { - results: PropTypes.array.isRequired, -}; - -export default ResultMarkerList; diff --git a/src/client/components/map/SimpleSlider.js b/src/client/components/map/SimpleSlider.js deleted file mode 100644 index 3f4a9fb3..00000000 --- a/src/client/components/map/SimpleSlider.js +++ /dev/null @@ -1,45 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { withStyles } from '@material-ui/core/styles'; -// import Typography from '@material-ui/core/Typography'; -import Slider from '@material-ui/lab/Slider'; - -const styles = { - container: { - width: 150, - }, -}; - -class SimpleSlider extends React.Component { - - constructor(props) { - super(props); - this.state = { - value: props.sliderValue - }; - } - - handleChange = (event, value) => { - this.setState({ value }); - this.props.setOpacity(value); - } - - render() { - const { classes } = this.props; - const { value } = this.state; - - return ( - <div className={classes.container}> - <Slider value={value} aria-labelledby="label" onChange={this.handleChange} /> - </div> - ); - } -} - -SimpleSlider.propTypes = { - classes: PropTypes.object.isRequired, - sliderValue: PropTypes.number.isRequired, - setOpacity: PropTypes.func.isRequired, -}; - -export default withStyles(styles)(SimpleSlider); diff --git a/src/client/components/result-table-candidates/DataGrid.js b/src/client/components/result-table-candidates/DataGrid.js deleted file mode 100644 index 90d473bc..00000000 --- a/src/client/components/result-table-candidates/DataGrid.js +++ /dev/null @@ -1,104 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import ReactDataGrid from 'react-data-grid'; -import { Toolbar, Data, Filters } from 'react-data-grid-addons'; -const { MultiSelectFilter } = Filters; -const { Selectors } = Data; -import 'bootstrap/dist/css/bootstrap.css'; - -class DataGrid extends React.Component { - constructor(props, context) { - super(props, context); - this._columns = [ - { - key: 'label', - name: 'Name', - sortable: true, - filterable: true, - }, - { - key: 'typeLabel', - name: 'Type', - sortable: true, - filterable: true, - filterRenderer: MultiSelectFilter - }, - { - key: 'broaderAreaLabel', - name: 'Area', - sortable: true, - filterable: true, - filterRenderer: MultiSelectFilter - }, - { - key: 'source', - name: 'Source', - sortable: true, - filterable: true, - filterRenderer: MultiSelectFilter - }, - ]; - this.state = { - rows: this.props.data, - sortColumn: null, - sortDirection: null - }; - } - - getRows = () => { - return Selectors.getRows(this.state); - }; - - getSize = () => { - return this.getRows().length; - }; - - rowGetter = (rowIdx) => { - const rows = this.getRows(); - return rows[rowIdx]; - }; - - handleGridSort = (sortColumn, sortDirection) => { - this.setState({ sortColumn: sortColumn, sortDirection: sortDirection }); - }; - - handleFilterChange = (filter) => { - let newFilters = Object.assign({}, this.state.filters); - if (filter.filterTerm) { - newFilters[filter.column.key] = filter; - } else { - delete newFilters[filter.column.key]; - } - - this.setState({ filters: newFilters }); - }; - - getValidFilterValues = (columnId) => { - let values = this.state.rows.map(r => r[columnId]); - return values.filter((item, i, a) => { return i === a.indexOf(item); }); - }; - - onClearFilters = () => { - this.setState({ filters: {} }); - }; - - render() { - return ( - <ReactDataGrid - onGridSort={this.handleGridSort} - enableCellSelect={true} - columns={this._columns} - rowGetter={this.rowGetter} - rowsCount={this.getSize()} - toolbar={<Toolbar enableFilter={true}/>} - onAddFilter={this.handleFilterChange} - getValidFilterValues={this.getValidFilterValues} - onClearFilters={this.onClearFilters} />); - } -} - -DataGrid.propTypes = { - data: PropTypes.array.isRequired, -}; - -export default DataGrid; diff --git a/src/client/components/result-table-candidates/DataTable.js b/src/client/components/result-table-candidates/DataTable.js deleted file mode 100644 index 4e00acf0..00000000 --- a/src/client/components/result-table-candidates/DataTable.js +++ /dev/null @@ -1,60 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import MUIDataTable from 'mui-datatables'; - -const columns = [ - { - name: 'Name', - options: { - filter: false, - sort: true, - } - }, - { - name: 'Type', - options: { - filter: true, - sort: true, - } - }, - { - name: 'Area', - options: { - filter: true, - sort: true, - } - }, - { - name: 'Source', - options: { - filter: true, - sort: true, - } - }, -]; - -const options = { - -}; - -const DataTable = (props) => { - const dataArray = props.data.map(obj => { - const values = Object.values(obj); - return [values[1], values[2], values[3], values[4]]; - }); - - return ( - <MUIDataTable - title={'Search results'} - data={dataArray} - columns={columns} - options={options} - /> - ); -}; - -DataTable.propTypes = { - data: PropTypes.array.isRequired -}; - -export default DataTable; diff --git a/src/client/components/result-table/ResultTable.js b/src/client/components/result-table/ResultTable.js deleted file mode 100644 index bd5e109b..00000000 --- a/src/client/components/result-table/ResultTable.js +++ /dev/null @@ -1,106 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { withStyles } from '@material-ui/core/styles'; -import Table from '@material-ui/core/Table'; -import TableBody from '@material-ui/core/TableBody'; -import TableCell from '@material-ui/core/TableCell'; -import TableRow from '@material-ui/core/TableRow'; -import Paper from '@material-ui/core/Paper'; -import ResultTableHead from './ResultTableHead'; -import Checkbox from '@material-ui/core/Checkbox'; - -const styles = theme => ({ - root: { - width: '100%', - marginTop: theme.spacing.unit * 3, - overflowX: 'hidden', - }, - table: { - width: 600, - }, - -}); - -const handleClick = (event, id) => { - const { selected } = this.state; - const selectedIndex = selected.indexOf(id); - let newSelected = []; - - if (selectedIndex === -1) { - newSelected = newSelected.concat(selected, id); - } else if (selectedIndex === 0) { - newSelected = newSelected.concat(selected.slice(1)); - } else if (selectedIndex === selected.length - 1) { - newSelected = newSelected.concat(selected.slice(0, -1)); - } else if (selectedIndex > 0) { - newSelected = newSelected.concat( - selected.slice(0, selectedIndex), - selected.slice(selectedIndex + 1), - ); - } - - this.setState({ selected: newSelected }); -}; - -const columnData = [ - { id: 'name', numeric: false, disablePadding: true, label: 'Name' }, - { id: 'type', numeric: false, disablePadding: true, label: 'Type' }, - { id: 'area', numeric: false, disablePadding: true, label: 'Area' }, - { id: 'source', numeric: false, disablePadding: true, label: 'Source' }, -]; - -const ResultTable = (props) => { - const { classes, data } = props; - - return ( - <Paper className={classes.root}> - {data.length > 0 && - <Table className={classes.table}> - <ResultTableHead - numSelected={3} - order='asc' - orderBy='source' - onSelectAllClick={() => {}} - onRequestSort={() => {}} - rowCount={data.length} - columnData={columnData} - /> - <TableBody> - {data.map(n => { - //const isSelected = this.isSelected(n.id); - const isSelected = false; - return ( - <TableRow - hover - onClick={event => handleClick(event, n.id)} - role="checkbox" - aria-checked={isSelected} - tabIndex={-1} - key={n.s} - selected={isSelected} - > - <TableCell padding="checkbox"> - <Checkbox checked={isSelected} /> - </TableCell> - <TableCell component="th" scope="row" padding="none"> - {n.label} - </TableCell> - <TableCell padding='none'>{n.typeLabel}</TableCell> - <TableCell padding='none'>{n.broaderAreaLabel}</TableCell> - <TableCell padding='none'>{n.source}</TableCell> - </TableRow> - ); - })} - </TableBody> - </Table> - } - </Paper> - ); -}; - -ResultTable.propTypes = { - classes: PropTypes.object.isRequired, - data: PropTypes.array.isRequired, -}; - -export default withStyles(styles)(ResultTable); diff --git a/src/client/components/result-table/ResultTableHead.js b/src/client/components/result-table/ResultTableHead.js deleted file mode 100644 index bca97ae7..00000000 --- a/src/client/components/result-table/ResultTableHead.js +++ /dev/null @@ -1,67 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import TableHead from '@material-ui/core/TableHead'; -import TableRow from '@material-ui/core/TableRow'; -import TableCell from '@material-ui/core/TableCell'; -import Checkbox from '@material-ui/core/Checkbox'; -import Tooltip from '@material-ui/core/Tooltip'; -import TableSortLabel from '@material-ui/core/TableSortLabel'; - -const ResultTableHead = (props) => { - - const createSortHandler = property => event => { - this.props.onRequestSort(event, property); - }; - - const { onSelectAllClick, order, orderBy, numSelected, rowCount, columnData } = props; - - return ( - <TableHead> - <TableRow> - <TableCell padding="checkbox"> - <Checkbox - indeterminate={numSelected > 0 && numSelected < rowCount} - checked={numSelected === rowCount} - onChange={onSelectAllClick} - /> - </TableCell> - {columnData.map(column => { - return ( - <TableCell - key={column.id} - numeric={column.numeric} - padding={column.disablePadding ? 'none' : 'default'} - sortDirection={orderBy === column.id ? order : false} - > - <Tooltip - title="Sort" - placement={column.numeric ? 'bottom-end' : 'bottom-start'} - enterDelay={300} - > - <TableSortLabel - active={orderBy === column.id} - direction={order} - onClick={createSortHandler(column.id)} - > - {column.label} - </TableSortLabel> - </Tooltip> - </TableCell> - ); - }, this)} - </TableRow> - </TableHead> - ); -}; - -ResultTableHead.propTypes = { - numSelected: PropTypes.number.isRequired, - onRequestSort: PropTypes.func.isRequired, - onSelectAllClick: PropTypes.func.isRequired, - order: PropTypes.string.isRequired, - orderBy: PropTypes.string.isRequired, - rowCount: PropTypes.number.isRequired, - columnData: PropTypes.array.isRequired -}; - -export default ResultTableHead; diff --git a/src/client/containers/MapApp.js b/src/client/containers/MapApp.js index 7276e0f6..5eabe7e9 100644 --- a/src/client/containers/MapApp.js +++ b/src/client/containers/MapApp.js @@ -5,15 +5,11 @@ import { withStyles } from '@material-ui/core/styles'; import withWidth from '@material-ui/core/withWidth'; import compose from 'recompose/compose'; import Paper from '@material-ui/core/Paper'; -// import Immutable from 'immutable'; -// import VirtualizedTable from '../components/VirtualizedTable'; import ResultTable from '../components/ResultTable'; -import LeafletMap from '../components/map/LeafletMap'; -import GMap from '../components/map/GMap'; +import LeafletMap from '../components/LeafletMap'; import Pie from '../components/Pie'; import TopBar from '../components/TopBar'; import CircularProgress from '@material-ui/core/CircularProgress'; -//import Typography from '@material-ui/core/Typography'; import purple from '@material-ui/core/colors/purple'; import { @@ -145,7 +141,8 @@ const styles = theme => ({ }); let MapApp = (props) => { - const { classes, options, browser, search, map, manuscripts, creationPlaces, place, facet } = props; + const { classes, options, search, map, manuscripts, creationPlaces, place, facet } = props; + // browser //error, let oneColumnView = true; @@ -166,7 +163,6 @@ let MapApp = (props) => { } else { if ((oneColumnView && options.resultFormat === 'table') || (!oneColumnView)) { //console.log(facetValues) - //console.log(facet.values) table = ( <div className={oneColumnView ? classes.resultTableOneColumn : classes.resultTable}> <ResultTable @@ -184,35 +180,23 @@ let MapApp = (props) => { let mapElement = ''; if ((oneColumnView && options.resultFormat === 'map') || (!oneColumnView)) { - if (options.mapMode === 'heatmap') { - mapElement = ( - <GMap - results={props.creationPlaces} - googleMapURL="https://maps.googleapis.com/maps/api/js?key=AIzaSyCKWw5FjhwLsfp_l2gjVAifPkT3cxGXhA4&v=3.exp&libraries=geometry,drawing,places,visualization" - loadingElement={<div style={{ height: `100%` }} />} - containerElement={<div style={{ height: `100%` }} />} - mapElement={<div style={{ height: `100%` }} />} - /> - ); - } else { - mapElement = ( - <LeafletMap - fetchPlaces={props.fetchPlaces} - fetchPlace={props.fetchPlace} - fetchManuscripts={props.fetchManuscripts} - results={creationPlaces} - place={place} - mapMode={options.mapMode} - geoJSON={map.geoJSON} - geoJSONKey={map.geoJSONKey} - getGeoJSON={props.getGeoJSON} - bouncingMarker={map.bouncingMarker} - popupMarker={map.popupMarker} - bouncingMarkerKey={map.bouncingMarkerKey} - openPopupMarkerKey={map.openPopupMarkerKey} - /> - ); - } + mapElement = ( + <LeafletMap + fetchPlaces={props.fetchPlaces} + fetchPlace={props.fetchPlace} + fetchManuscripts={props.fetchManuscripts} + results={creationPlaces} + place={place} + mapMode={options.mapMode} + geoJSON={map.geoJSON} + geoJSONKey={map.geoJSONKey} + getGeoJSON={props.getGeoJSON} + bouncingMarker={map.bouncingMarker} + popupMarker={map.popupMarker} + bouncingMarkerKey={map.bouncingMarkerKey} + openPopupMarkerKey={map.openPopupMarkerKey} + /> + ); } //console.log(creationPlaces) -- GitLab