Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 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 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | 1x 1x 1x 1x 1x | const _ = require('lodash')
const {
calculateExtent,
getGeometryTypeFromGeojson,
getSpatialReference,
normalizeExtent,
normalizeInputData
} = require('./helpers')
const {
LayerFields
} = require('./helpers/fields')
const { layerMetadata: layerMetadataDefaults, renderers: rendererDefaults } = require('./defaults')
module.exports = function relationshipsMetadata (providerResponse, queryParams = {}) {
const { layers: layersInput, tables: tablesInput } = normalizeInputData(providerResponse)
const layers = layersInput.map((layer, i) => {
return formatResponse(layer, { queryParams, layerId: i, isLayer: true })
})
const tables = tablesInput.map((table, i) => {
return formatResponse(table, { queryParams, layerId: layers.length + i })
})
return { layers, tables }
}
function formatResponse (geojson = {}, options = {}) {
const { layerId, isLayer, queryParams } = options
const {
metadata = {},
capabilities: {
quantization,
extract
} = {}
} = geojson
const {
id,
name,
description,
idField,
displayField,
timeInfo,
maxRecordCount,
renderer,
defaultVisibility,
minScale,
maxScale,
hasStaticData
} = metadata
const geometryType = isLayer ? getGeometryTypeFromGeojson(geojson) : undefined
const spatialReference = getSpatialReference(geojson, queryParams)
const extent = metadata.extent ? normalizeExtent(metadata.extent, spatialReference) : calculateExtent({ isLayer, geojson, spatialReference })
const json = {
id: id || layerId,
fields: LayerFields.create({ ...geojson, ...queryParams }) || [],
type: isLayer ? 'Feature Layer' : 'Table',
geometryType,
drawingInfo: {
renderer: renderer || rendererDefaults[geometryType],
labelingInfo: null
},
spatialReference,
extent,
defaultVisibility,
minScale,
maxScale,
quantization,
extract,
hasStaticData,
name,
description,
objectIdField: idField,
displayField: displayField || idField,
uniqueIdField: idField,
timeInfo,
maxRecordCount,
supportsCoordinatesQuantization: !!quantization
}
return _.defaults(json, {
capabilities: extract ? `${layerMetadataDefaults.capabilities},Extract` : layerMetadataDefaults.capabilities
}, layerMetadataDefaults)
}
|