diff --git a/Frontend/src/components/analytics/CellDensityDistribution.tsx b/Frontend/src/components/analytics/CellDensityDistribution.tsx new file mode 100644 index 00000000..d7845a70 --- /dev/null +++ b/Frontend/src/components/analytics/CellDensityDistribution.tsx @@ -0,0 +1,40 @@ +import React from 'react'; + +export interface DensityBin { + range: string; + cellCount: number; +} + +export interface CellDensityDistributionProps { + bins?: DensityBin[]; +} + +export const CellDensityDistribution: React.FC = ({ + bins = [], +}) => { + return ( +
+

+ Geohash Cell Density Distribution +

+
+ {bins.map((bin, i) => ( +
+ {bin.range} +
+
+
+ + {bin.cellCount} + +
+ ))} +
+
+ ); +}; + +export default CellDensityDistribution; diff --git a/Frontend/src/components/analytics/GeographicSpreadMetrics.tsx b/Frontend/src/components/analytics/GeographicSpreadMetrics.tsx new file mode 100644 index 00000000..03beb981 --- /dev/null +++ b/Frontend/src/components/analytics/GeographicSpreadMetrics.tsx @@ -0,0 +1,39 @@ +import React from 'react'; + +export interface SpreadMetrics { + totalAreaKm2: number; + dispersionRadiusKm: number; + activeBoundingBox: string; +} + +export interface GeographicSpreadMetricsProps { + metrics?: Partial; +} + +export const GeographicSpreadMetrics: React.FC = ({ + metrics = {}, +}) => { + return ( +
+

+ Geographic Spread Metrics +

+
+
+ Coverage Area + + {metrics.totalAreaKm2 ?? 0} km² + +
+
+ Dispersion Radius + + {metrics.dispersionRadiusKm ?? 0} km + +
+
+
+ ); +}; + +export default GeographicSpreadMetrics;