rates = {
const fff = files[`ur-${yyyy_mm}.txt`];
if (fff) {
const values = await fff.tsv({ array: true, typed: false });
const rates = values.slice().map((d) => ({
airspace: d[0].trim(),
start: parseDate(d[1]),
end: parseDate(d[2]),
unit_rate_global: +d[3] / 100.0,
euro_exchange_rate: +d[4],
currency: d[5],
name: d[6]
}));
return rates;
} else {
const response = await fetch(cors_url);
if (response.status === 200) {
return d3.text("https://corsproxy.io/?" + file_url).then((source) => {
return d3.tsvParseRows(source, (d) => {
return {
airspace: d[0],
start: parseDate(d[1]),
end: parseDate(d[2]),
unit_rate_global: +d[3] / 100.0,
euro_exchange_rate: +d[4],
currency: d[5],
name: d[6]
};
});
});
} else {
const last_file = Object.keys(files).at(-1).split(".")[0];
const ym = last_file.split("-");
set(viewof yyyy_mm, last_file);
const values = await files[Object.keys(files).at(-1)].tsv({
array: true,
typed: false
});
const rates = values.slice().map((d) => ({
airspace: d[0].trim(),
start: parseDate(d[1]),
end: parseDate(d[2]),
unit_rate_global: +d[3] / 100.0,
euro_exchange_rate: +d[4],
currency: d[5],
name: d[6]
}));
return rates;
}
}
}