import React from 'react' import Block from './Block' import FieldString from './FieldString' export type InspectFeature = { id: string properties: {[key:string]: any} layer: {[key:string]: any} geometry: GeoJSON.Geometry sourceLayer: string inspectModeCounter?: number counter?: number } function displayValue(value: string | number | Date | object) { if (typeof value === 'undefined' || value === null) return value; if (value instanceof Date) return value.toLocaleString(); if (typeof value === 'object' || typeof value === 'number' || typeof value === 'string') return value.toString(); return value; } function renderProperties(feature: InspectFeature) { return Object.keys(feature.properties).map(propertyName => { const property = feature.properties[propertyName] return }) } function renderFeatureId(feature: InspectFeature) { return } function renderFeature(feature: InspectFeature, idx: number) { return
{feature.layer['source']}: {feature.layer['source-layer']}{feature.inspectModeCounter && × {feature.inspectModeCounter}}
{renderFeatureId(feature)} {renderProperties(feature)}
} function removeDuplicatedFeatures(features: InspectFeature[]) { const uniqueFeatures: InspectFeature[] = []; features.forEach(feature => { const featureIndex = uniqueFeatures.findIndex(feature2 => { return feature.layer['source-layer'] === feature2.layer['source-layer'] && JSON.stringify(feature.properties) === JSON.stringify(feature2.properties) }) if(featureIndex === -1) { uniqueFeatures.push(feature) } else { if('inspectModeCounter' in uniqueFeatures[featureIndex]) { uniqueFeatures[featureIndex].inspectModeCounter!++ } else { uniqueFeatures[featureIndex].inspectModeCounter = 2 } } }) return uniqueFeatures } type FeaturePropertyPopupProps = { features: InspectFeature[] }; class FeaturePropertyPopup extends React.Component { render() { const features = removeDuplicatedFeatures(this.props.features) return
{features.map(renderFeature)}
} } export default FeaturePropertyPopup