Skip to content
Snippets Groups Projects
Commit 004d3eed authored by Bjarke Madsen's avatar Bjarke Madsen
Browse files

Only show latest data for policy

parent 231b743b
Branches
Tags
No related merge requests found
......@@ -614,4 +614,18 @@ export function createNetworkDarkFibreDataLookUp<Datatype extends NrenAndYearDat
datasets: sets,
labels: labelsYear.map(year => year.toString())
};
}
export function getLatestData(data: any[]) {
// Get the latest year for each NREN, and return the data for that year
// Mainly used for URL data, which doesn't make sense to compare across years
const latestData = new Map<string, any>();
data.forEach(institution => {
const existingData = latestData.get(institution.nren);
if (!existingData || existingData.year < institution.year) {
latestData.set(institution.nren, institution);
}
});
return Array.from(latestData.values());
}
\ No newline at end of file
......@@ -2,7 +2,7 @@ import React, { useContext } from 'react';
import { Table } from "react-bootstrap";
import { ConnectedInstitutionURLs } from "../Schema";
import { createDataLookup } from '../helpers/dataconversion';
import { createDataLookup, getLatestData } from '../helpers/dataconversion';
import DataPage from '../components/DataPage';
import Filter from "../components/graphing/Filter";
import { Sections } from '../helpers/constants';
......@@ -30,19 +30,6 @@ function getJSXFromMap(data: Map<string, Map<number, ConnectedInstitutionURLs>>)
));
});
}
function getLatestData(data: ConnectedInstitutionURLs[]) {
// Get the latest year for each NREN, and return the data for that year
// Since they are URLs, it only makes sense to display the latest data
const latestData = new Map<string, ConnectedInstitutionURLs>();
data.forEach(institution => {
const existingData = latestData.get(institution.nren);
if (!existingData || existingData.year < institution.year) {
latestData.set(institution.nren, institution);
}
});
return Array.from(latestData.values());
}
function ConnectedInstitutionsURLsPage() {
const { filterSelection, setFilterSelection } = useContext(FilterSelectionContext);
......@@ -50,7 +37,9 @@ function ConnectedInstitutionsURLsPage() {
const institutionData = fetchedData ? getLatestData(fetchedData) : [];
const selectedData = institutionData;
const selectedData = institutionData.filter(institution =>
filterSelection.selectedNrens.includes(institution.nren)
);
const sheetSelectedData = selectedData.map(institution => ({
...institution,
......
......@@ -2,7 +2,7 @@ import React, { useContext } from 'react';
import { Table } from "react-bootstrap";
import { Policy } from "../Schema";
import { createDataLookup } from '../helpers/dataconversion';
import { createDataLookup, getLatestData } from '../helpers/dataconversion';
import DataPage from '../components/DataPage';
import Filter from "../components/graphing/Filter"
import { Sections } from '../helpers/constants';
......@@ -47,15 +47,17 @@ function getJSXFromMap(data: Map<string, Map<number, Policy>>) {
function PolicyPage() {
const { filterSelection, setFilterSelection } = useContext(FilterSelectionContext);
const { data: policyData, years, nrens } = useData<Policy>('/api/policy/', setFilterSelection);
const { data: fetchedData, years, nrens } = useData<Policy>('/api/policy/', setFilterSelection);
const policyData = fetchedData ? getLatestData(fetchedData) : [];
const selectedData = policyData.filter(project =>
filterSelection.selectedYears.includes(project.year) && filterSelection.selectedNrens.includes(project.nren)
filterSelection.selectedNrens.includes(project.nren)
);
const policyDataByYear = createDataLookup(selectedData);
const filterNode = <Filter
filterOptions={{ availableYears: [...years], availableNrens: [...nrens.values()] }}
filterOptions={{ availableYears: [], availableNrens: [...nrens.values()] }}
filterSelection={filterSelection}
setFilterSelection={setFilterSelection}
/>
......
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment