mirror of
https://github.com/maputnik/editor.git
synced 2026-08-27 07:27:33 +00:00
Add support to change source TileJSON url
This commit is contained in:
@@ -21,6 +21,7 @@ class UnsupportedSource extends React.Component {
|
|||||||
class VectorSource extends React.Component {
|
class VectorSource extends React.Component {
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
source: React.PropTypes.instanceOf(Immutable.Map).isRequired,
|
source: React.PropTypes.instanceOf(Immutable.Map).isRequired,
|
||||||
|
onSourceChanged: React.PropTypes.func.isRequired,
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
@@ -30,7 +31,11 @@ class VectorSource extends React.Component {
|
|||||||
|
|
||||||
render() {
|
render() {
|
||||||
return <div>
|
return <div>
|
||||||
<Input name="url" label="TileJSON url" value={this.props.source.get("url")} />
|
<Input
|
||||||
|
onChange={e => this.props.onSourceChanged(this.props.source.set('url', e.target.value))}
|
||||||
|
name="url" label="TileJSON url"
|
||||||
|
value={this.props.source.get("url")}
|
||||||
|
/>
|
||||||
<Input name="minzoom" label="Minimum zoom level" value={this.props.source.get("minzoom")} />
|
<Input name="minzoom" label="Minimum zoom level" value={this.props.source.get("minzoom")} />
|
||||||
<Input name="maxzoom" label="Maximum zoom level" value={this.props.source.get("maxzoom")} />
|
<Input name="maxzoom" label="Maximum zoom level" value={this.props.source.get("maxzoom")} />
|
||||||
</div>
|
</div>
|
||||||
@@ -41,6 +46,7 @@ export class SourceEditor extends React.Component {
|
|||||||
static propTypes = {
|
static propTypes = {
|
||||||
sourceId: React.PropTypes.string.isRequired,
|
sourceId: React.PropTypes.string.isRequired,
|
||||||
source: React.PropTypes.instanceOf(Immutable.Map).isRequired,
|
source: React.PropTypes.instanceOf(Immutable.Map).isRequired,
|
||||||
|
onSourceChanged: React.PropTypes.func.isRequired,
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
@@ -58,6 +64,7 @@ export class SourceEditor extends React.Component {
|
|||||||
sourceFromType(type) {
|
sourceFromType(type) {
|
||||||
if (type === "vector") {
|
if (type === "vector") {
|
||||||
return <VectorSource
|
return <VectorSource
|
||||||
|
onSourceChanged={s => this.props.onSourceChanged(this.props.sourceId, s)}
|
||||||
source={this.props.source}
|
source={this.props.source}
|
||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import PureRenderMixin from 'react-addons-pure-render-mixin';
|
|||||||
export class SourceList extends React.Component {
|
export class SourceList extends React.Component {
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
sources: React.PropTypes.instanceOf(Immutable.Map).isRequired,
|
sources: React.PropTypes.instanceOf(Immutable.Map).isRequired,
|
||||||
|
onSourcesChanged: React.PropTypes.func.isRequired,
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
@@ -21,12 +22,18 @@ export class SourceList extends React.Component {
|
|||||||
this.shouldComponentUpdate = PureRenderMixin.shouldComponentUpdate.bind(this);
|
this.shouldComponentUpdate = PureRenderMixin.shouldComponentUpdate.bind(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onSourceChanged(sourceId, changedSource) {
|
||||||
|
const changedSources = this.props.sources.set(sourceId, changedSource)
|
||||||
|
this.props.onSourcesChanged(changedSources)
|
||||||
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const sourceEditors = this.props.sources.map((source, sourceId) => {
|
const sourceEditors = this.props.sources.map((source, sourceId) => {
|
||||||
return <SourceEditor
|
return <SourceEditor
|
||||||
key={sourceId}
|
key={sourceId}
|
||||||
sourceId={sourceId}
|
sourceId={sourceId}
|
||||||
source={source}
|
source={source}
|
||||||
|
onSourceChanged={this.onSourceChanged.bind(this)}
|
||||||
/>
|
/>
|
||||||
}).toIndexedSeq()
|
}).toIndexedSeq()
|
||||||
|
|
||||||
|
|||||||
@@ -22,11 +22,17 @@ export class WorkspaceDrawer extends React.Component {
|
|||||||
this.props.onStyleChanged(changedStyle)
|
this.props.onStyleChanged(changedStyle)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onSourcesChanged(changedSources) {
|
||||||
|
const changedStyle = this.props.mapStyle.set('sources', changedSources)
|
||||||
|
this.props.onStyleChanged(changedStyle)
|
||||||
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
let workspaceContent = null
|
let workspaceContent = null
|
||||||
|
|
||||||
if(this.props.workContext === "sources") {
|
if(this.props.workContext === "sources") {
|
||||||
workspaceContent = <SourceList
|
workspaceContent = <SourceList
|
||||||
|
onSourcesChanged={this.onSourcesChanged.bind(this)}
|
||||||
sources={this.props.mapStyle.get('sources')}
|
sources={this.props.mapStyle.get('sources')}
|
||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user