Skip to content

Commit e00ec8c

Browse files
committed
point property lat,lng
1 parent 0c5c97f commit e00ec8c

File tree

4 files changed

+94
-8
lines changed

4 files changed

+94
-8
lines changed

src/view/Vproperty/VpropertyMetadata/index.jsx

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,6 @@ import {List,fromJS} from 'immutable';
44

55
import Vfield from '../../Vfield';
66

7-
import VpropertyAdd from '../VpropertyAdd';
8-
9-
import styleSpec from '../../../vendor/style-spec/style-spec';
10-
117
export default class VpropertyMetadata extends React.Component {
128

139
static propTypes = {
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
import React from 'react';
2+
import PropTypes from 'prop-types';
3+
4+
import Vfield from '../../Vfield';
5+
6+
import styleSpec from '../../../vendor/style-spec/style-spec';
7+
8+
export default class VpropertyPoint extends React.Component {
9+
10+
static propTypes = {
11+
property: PropTypes.shape({
12+
type: PropTypes.string.isRequired,
13+
name: PropTypes.string.isRequired, // string of position . separated
14+
value: PropTypes.object, // list of 2 coordinates
15+
placeholder: PropTypes.string,
16+
error: PropTypes.oneOfType([
17+
PropTypes.string,
18+
PropTypes.object
19+
])
20+
}),
21+
focus: PropTypes.string,
22+
handle: PropTypes.object
23+
}
24+
25+
constructor(props) {
26+
super(props);
27+
const {handle, property} = this.props;
28+
29+
30+
this.fieldHandle = {
31+
...handle,
32+
backout:(f)=>{
33+
34+
}
35+
};
36+
37+
for (let i in this.fieldHandle){
38+
this.fieldHandle[i] = this.fieldHandle[i].bind(this);
39+
}
40+
41+
}
42+
43+
render (){
44+
const {property, focus} = this.props;
45+
46+
const lngName = property.name+'.0';
47+
const latName = property.name+'.1';
48+
49+
return <div className="form-group mb-0">
50+
<div className="mt-2 p-2 func-border position-relative">
51+
<div className="row">
52+
<div className="col-sm-6 pr-1">
53+
<Vfield field={{
54+
label:'longitude',
55+
type:'number',
56+
name:lngName,
57+
value:property.value.get(0),
58+
controlled:false,
59+
autoFocus:lngName === focus,
60+
}} handle={this.fieldHandle}/>
61+
</div>
62+
<div className="col-sm-6 pl-0">
63+
<Vfield field={{
64+
label:'latitude',
65+
type:'number',
66+
name:latName,
67+
value:property.value.get(1),
68+
controlled:false,
69+
autoFocus:latName === focus
70+
}} handle={this.fieldHandle}/>
71+
</div>
72+
</div>
73+
</div>
74+
</div>
75+
}
76+
};

src/view/Vproperty/index.jsx

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import VpropertyExpression from './VpropertyExpression';
1010
import VpropertyMetadata from './VpropertyMetadata';
1111
import VpropertyFunction from './VpropertyFunction';
1212
import VpropertyInfo from './VpropertyInfo';
13+
import VpropertyPoint from './VpropertyPoint';
1314

1415
export default class Vproperty extends React.Component {
1516

@@ -117,7 +118,17 @@ export default class Vproperty extends React.Component {
117118

118119
let elem, mode = type;
119120

120-
if (spec.type === 'enum'){
121+
if (property.label === 'center'){
122+
elem = <div>
123+
<VpropertyPoint property={{
124+
type:'array',
125+
name:property.name,
126+
value:property.value,
127+
placeholder:doc,
128+
error:property.error
129+
}} focus={focus} handle={handle}/>
130+
</div>;
131+
} else if (spec.type === 'enum'){
121132
let options = [];
122133
for (let i in spec.values){
123134
options.push({
@@ -235,7 +246,7 @@ export default class Vproperty extends React.Component {
235246
{mode}
236247
<i className="material-icons md-14">arrow_drop_down</i>
237248
</div>
238-
<div className="dropdown-menu">
249+
<div className="dropdown-menu" data-boundary="window">
239250
{types.map((type)=>{
240251
let className = 'dropdown-item';
241252
if (type === mode) className += ' active';

src/view/Vsetting/index.jsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,11 @@ export default class Vsetting extends React.Component {
2121

2222
this.handle = {
2323
change:(field)=>{
24-
Mstyle.setIn([field.name],field.value);
24+
let key = field.name.split('.');
25+
key.forEach((k,i)=>{
26+
if (/^\d+$/.test(k)) key[i] = Number(k);
27+
});
28+
Mstyle.setIn(key,field.value);
2529
},
2630
deleteConfirm:()=>{
2731
handle.routeHome();
@@ -51,7 +55,6 @@ export default class Vsetting extends React.Component {
5155
const spec = styleSpec.latest.$root;
5256

5357
let addSpec = {
54-
version:spec.version,
5558
name:spec.name,
5659
metadata:spec.metadata,
5760
center:spec.center,

0 commit comments

Comments
 (0)