stationAvailabilityTableData = stationCoverage().then((data) => {
return data.features
.map((d, i) => {
let dates = [];
let ranges = JSON.parse(d.properties.ranges);
let firstDate = d3.min(ranges, (d) => d3.timeParse("%s")(d.start_date));
let lastDate = d3.max(ranges, (d) => d3.timeParse("%s")(d.end_date));
let scale = d3
.scaleLinear()
.domain([
parseDate(stationCoverageStartDate),
parseDate(stationCoverageEndDate)
])
.range([0, 1])
.clamp(true);
let datum = {
site_id: d.properties.site_id,
first_date: firstDate,
last_date: lastDate,
sample_interval: d.properties.sample_interval,
coverage: ranges.map((range) => {
return [
scale(d3.timeParse("%s")(range.start_date)),
scale(d3.timeParse("%s")(range.end_date))
];
})
};
datum.percent = d3.sum(datum.coverage, (d) => d[1] - d[0]);
datum.i = i;
return datum;
})
.filter((d) => d.percent > 0)
.sort((a, b) => d3.descending(a.percent, b.percent));
})