Restructure and rename components

This commit is contained in:
Lukas Martinelli
2016-12-20 11:44:22 +01:00
parent 461a001552
commit fde60ac3e0
46 changed files with 365 additions and 425 deletions

View File

@@ -0,0 +1,96 @@
import React from 'react'
import Immutable from 'immutable'
import Select from 'rebass/dist/Select'
import Overlay from 'rebass/dist/Overlay'
import Panel from 'rebass/dist/Panel'
import PanelHeader from 'rebass/dist/PanelHeader'
import PanelFooter from 'rebass/dist/PanelFooter'
import Button from 'rebass/dist/Button'
import Text from 'rebass/dist/Text'
import Media from 'rebass/dist/Media'
import Close from 'rebass/dist/Close'
import Space from 'rebass/dist/Space'
import Input from 'rebass/dist/Input'
class SettingsModal extends React.Component {
static propTypes = {
mapStyle: React.PropTypes.instanceOf(Immutable.Map).isRequired,
onStyleChanged: React.PropTypes.func.isRequired,
open: React.PropTypes.bool.isRequired,
toggle: React.PropTypes.func.isRequired,
}
constructor(props) {
super(props);
}
onChange(property, e) {
const changedStyle = this.props.mapStyle.set(property, e.target.value)
this.props.onStyleChanged(changedStyle)
}
onRendererChange(e) {
const changedStyle = this.props.mapStyle.setIn(['metadata', 'maputnik:renderer'], e.target.value)
this.props.onStyleChanged(changedStyle)
}
render() {
return <Overlay open={this.props.open} >
<Panel theme={'secondary'}>
<PanelHeader theme={'default'}>
Style Settings
<Space auto />
<Close onClick={this.props.toggle('modalOpen')} />
</PanelHeader>
<br />
<Input
name="name"
label="Name"
value={this.props.mapStyle.get('name')}
onChange={this.onChange.bind(this, "name")}
/>
<Input
name="owner"
label="Owner"
value={this.props.mapStyle.get('owner')}
onChange={this.onChange.bind(this, "owner")}
/>
<Input
name="sprite"
label="Sprite URL"
value={this.props.mapStyle.get('sprite')}
onChange={this.onChange.bind(this, "sprite")}
/>
<Input
name="glyphs"
label="Glyphs URL"
value={this.props.mapStyle.get('glyphs')}
onChange={this.onChange.bind(this, "glyphs")}
/>
<Input
name="glyphs"
label="Glyphs URL"
value={this.props.mapStyle.get('glyphs')}
onChange={this.onChange.bind(this, "glyphs")}
/>
<Select
label="Style Renderer"
name="renderer"
onChange={this.onRendererChange.bind(this)}
options={[{children: 'Mapbox GL JS', value: 'mbgljs'}, {children: 'Open Layers 3', value: 'ol3'}]}
/>
<PanelFooter>
<Space auto />
<Button theme={'default'}
onClick={this.props.toggle('modalOpen')}
children='Close!'
/>
</PanelFooter>
</Panel>
</Overlay>
}
}
export default SettingsModal

View File

@@ -0,0 +1,82 @@
import React from 'react'
import Immutable from 'immutable'
import Overlay from 'rebass/dist/Overlay'
import Panel from 'rebass/dist/Panel'
import PanelHeader from 'rebass/dist/PanelHeader'
import PanelFooter from 'rebass/dist/PanelFooter'
import Button from 'rebass/dist/Button'
import Text from 'rebass/dist/Text'
import Media from 'rebass/dist/Media'
import Close from 'rebass/dist/Close'
import Space from 'rebass/dist/Space'
import Input from 'rebass/dist/Input'
import Toolbar from 'rebass/dist/Toolbar'
import NavItem from 'rebass/dist/NavItem'
import publicTilesets from '../../config/tilesets.json'
import theme from '../../config/rebass'
class TilesetsModal extends React.Component {
static propTypes = {
mapStyle: React.PropTypes.instanceOf(Immutable.Map).isRequired,
onStyleChanged: React.PropTypes.func.isRequired,
open: React.PropTypes.bool.isRequired,
toggle: React.PropTypes.func.isRequired,
}
constructor(props) {
super(props);
}
onChange(property, e) {
const changedStyle = this.props.mapStyle.set(property, e.target.value)
this.props.onStyleChanged(changedStyle)
}
render() {
const tilesetOptions = publicTilesets.map(tileset => {
return <div key={tileset.id} style={{
padding: theme.scale[0],
borderBottom: 1,
borderTop: 1,
borderLeft: 2,
borderRight: 0,
borderStyle: "solid",
borderColor: theme.borderColor,
}}>
<Toolbar>
<NavItem style={{fontWeight: 400}}>
#{tileset.id}
</NavItem>
<Space auto x={1} />
</Toolbar>
{tileset.url}
</div>
})
return <Overlay open={this.props.open} >
<Panel theme={'secondary'}>
<PanelHeader theme={'default'}>
Tilesets
<Space auto />
<Close onClick={this.props.toggle('modalOpen')} />
</PanelHeader>
<br />
<h2>Choose Public Tileset</h2>
{tilesetOptions}
<PanelFooter>
<Space auto />
<Button theme={'default'}
onClick={this.props.toggle('modalOpen')}
children='Close!'
/>
</PanelFooter>
</Panel>
</Overlay>
}
}
export default TilesetsModal