rankedData = {
const rowConversionFunction = ({
"Name": name,
"Visits": visits
}) => ({
name,
visits: +visits
});
const data5Jul = await d3.tsvParse(tsv5Jul, rowConversionFunction);
const data25Jul = await d3.tsvParse(tsv25Jul, rowConversionFunction);
let dataObjectTarget = [];
data25Jul.forEach(after => {
if (data5Jul.some(before => before.name === after.name)) {
dataObjectTarget.push({
name: after.name,
visits: [data5Jul.find(before => before.name === after.name).visits, after.visits]
})
}
});
const before = dataObjectTarget.map(d => d.visits[0]);
const after = dataObjectTarget.map(d => d.visits[1]);
const sortedBefore = before.slice().sort((a, b) => b - a);
const ranksBefore = before.map(v => sortedBefore.indexOf(v) + 1);
const sortedAfter = after.slice().sort((a, b) => b - a);
const ranksAfter = after.map(v => sortedAfter.indexOf(v) + 1);
dataObjectTarget = dataObjectTarget.map((d, i) => {
d.visitsRanked = [ranksBefore[i], ranksAfter[i]]
return d;
});
const extraPropertiesSource = {
columns: ["5 July 2020", "25 July 2020"],
xAxisLabel: "Time",
yAxisLabel: "Rank by visit",
observation: "",
title: "Neko Atsume cat visit rankings",
};
return Object.assign(dataObjectTarget, extraPropertiesSource);
}