56 lines
1.5 KiB
TypeScript
56 lines
1.5 KiB
TypeScript
import fs from "fs";
|
|
import * as path from "path";
|
|
|
|
const stations = [
|
|
{
|
|
id: 1,
|
|
name: 'Tesla Supercharger',
|
|
address: '123 Main St',
|
|
lat: 37.7749,
|
|
lon: -122.4194,
|
|
network_operator: 'Tesla'
|
|
},
|
|
{
|
|
id: 2,
|
|
name: 'Electrify America',
|
|
address: '456 Maple Ave',
|
|
lat: 40.7128,
|
|
lon: -74.0060,
|
|
network_operator: 'Electrify America'
|
|
},
|
|
{id: 3, name: 'ChargePoint', address: '789 Oak St', lat: 34.0522, lon: -118.2437, network_operator: 'ChargePoint'},
|
|
];
|
|
|
|
interface Station {
|
|
[key: string]: string
|
|
}
|
|
|
|
function groupStationsByNetworkOperator(stations: Station[]): Map<string, Station[]> {
|
|
const groups
|
|
= new Map<string, Station[]>();
|
|
|
|
for (const station of stations) {
|
|
if (!groups.has(station.properties.network_operator)) {
|
|
groups.set(station.properties.network_operator, []);
|
|
}
|
|
|
|
groups.get(station.properties.network_operator)!.push(station);
|
|
}
|
|
|
|
return groups;
|
|
}
|
|
|
|
|
|
function groupStationsByNetworkOperatorAndWriteToFiles(stations: any[], outputDir: string): void {
|
|
const groups = groupStationsByNetworkOperator(stations);
|
|
|
|
for (const [networkOperator, stationsForOperator] of groups.entries()) {
|
|
const fileName = `${networkOperator}.json`;
|
|
const filePath = path.join(outputDir, fileName);
|
|
|
|
fs.writeFileSync(filePath, JSON.stringify(stationsForOperator, null, 2));
|
|
}
|
|
}
|
|
|
|
groupStationsByNetworkOperatorAndWriteToFiles(stations, "output")
|