-
Notifications
You must be signed in to change notification settings - Fork 383
/
FeatureTypeUtils.js
74 lines (70 loc) · 2.04 KB
/
FeatureTypeUtils.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
const {get} = require('lodash');
const types = {
// string
// 'xsd:ENTITIES': 'string',
// 'xsd:ENTITY': 'string',
// 'xsd:ID': 'string',
// 'xsd:IDREF': 'string',
// 'xsd:IDREFS': 'string',
// 'xsd:language': 'string',
// 'xsd:Name': 'string',
// 'xsd:NCName': 'string',
// 'xsd:NMTOKEN': 'string',
// 'xsd:NMTOKENS': 'string',
'xsd:normalizedString': 'string',
// 'xsd:QName': 'string',
'xsd:string': 'string',
// 'xsd:token': 'string',
// date
'xsd:date': 'date',
'xsd:dateTime': 'date',
// 'xsd:duration': 'date',
// 'xsd:gDay': 'date',
// 'xsd:gMonth': 'date',
// 'xsd:gMonthDay': 'date',
// 'xsd:gYear': 'date',
// 'xsd:gYearMonth': 'date',
// date-time
'xsd:date-time': 'date-time',
// time
'xsd:time': 'time',
// number
// 'xsd:byte': 'number',
'xsd:decimal': 'number',
'xsd:int': 'number',
'xsd:integer': 'number',
'xsd:long': 'number',
'xsd:negativeInteger': 'number',
'xsd:nonNegativeInteger': 'number',
'xsd:nonPositiveInteger': 'number',
'xsd:positiveInteger': 'number',
'xsd:short': 'number',
'xsd:unsignedLong': 'number',
'xsd:unsignedInt': 'number',
'xsd:unsignedShort': 'number',
// 'xsd:unsignedByte': 'number',
// from old object
'xsd:number': 'number',
// misc
// 'xsd:anyURI': 'string',
// 'xsd:base64Binary': 'number',
'xsd:boolean': 'boolean',
'xsd:double': 'number',
// 'xsd:hexBinary': 'string',
// 'xsd:NOTATION': 'string',
'xsd:float': 'number'
};
module.exports = {
describeFeatureTypeToAttributes: (data) => get(data, "featureTypes[0].properties")
.filter((attribute) => attribute.type.indexOf('gml:') !== 0 && types[attribute.type])
.map((attribute) => {
return {
label: attribute.name,
attribute: attribute.name,
type: types[attribute.type],
valueId: "id",
valueLabel: "name",
values: []
};
})
};