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

Minor refactor

parent 05a3eeca
Branches
Tags
No related merge requests found
......@@ -101,9 +101,7 @@ const DownloadDataButton: React.FC<DownloadProps> = ({ data, filename, exportTyp
}
return (
<>
<button className={classname} onClick={downloadData}>{exportType} <FaDownload /></button>
</>
<button className={classname} onClick={downloadData}>{exportType} <FaDownload /></button>
);
}
......
......@@ -14,9 +14,9 @@ function getYearsAndNrens(sourceData: NrenAndYearDatapoint[]) {
}
export function useData<Datatype extends NrenAndYearDatapoint>(url, setFilterSelection, validityCheck: (data: Datatype) => boolean = () => true) {
export function useData<T extends NrenAndYearDatapoint>(url, setFilterSelection, validityCheck: (data: T) => boolean = () => true) {
const [data, setData] = useState<Datatype[]>([]);
const [data, setData] = useState<T[]>([]);
const preview = usePreview();
const loadUrl = url + (preview ? '?preview' : '');
......
import React, { useContext } from "react";
import { Link } from 'react-router-dom';
import { Link } from "react-router-dom";
import {
ConnectedProportion,
......@@ -9,18 +9,14 @@ import {
ConnectivityLoad,
ConnectivityPage
} from "../../Schema";
import {
createCategoryMatrixLookup,
} from "../../helpers/dataconversion";
import { createCategoryMatrixLookup } from "../../helpers/dataconversion";
import DataPage from "../../components/DataPage";
import Filter from "../../components/graphing/Filter";
import { Sections } from "../../helpers/constants";
import { CommercialConnectionCategories, CommercialOrgCategories, Sections, UserCategories } from "../../helpers/constants";
import { FilterSelectionContext } from "../../providers/FilterSelectionProvider";
import ChartContainer from "../../components/graphing/ChartContainer";
import { useData } from "../../helpers/useData";
import { ScrollableMatrix } from "../../components/ScrollableMatrix";
import { UserCategories, CommercialOrgCategories, CommercialConnectionCategories } from "../../helpers/constants";
const displayTitle = {
[ConnectivityPage.ConnectedProportion]: "Proportion of Different Categories of Institutions Served by NRENs",
......@@ -135,7 +131,7 @@ function ConnectedUserPage({ page }: inputProps): React.ReactElement {
} else if (page == ConnectivityPage.ConnectionCarrier) {
categoryLookup = UserCategories;
isTickIcon = true;
dataLookup = createCategoryMatrixLookup(selectedData, ['carry_mechanism'], 'user_category');
dataLookup = createCategoryMatrixLookup(selectedData, ["carry_mechanism"], "user_category");
} else if (page == ConnectivityPage.ConnectedProportion) {
categoryLookup = UserCategories;
......@@ -148,7 +144,7 @@ function ConnectedUserPage({ page }: inputProps): React.ReactElement {
"no_other": "No - other reason",
"unsure": "Unsure/unclear"
}
const fieldToMap = 'coverage';
const fieldToMap = "coverage";
const preprocess = (datapoint: DataFormat) => {
// replace the value with a human readable value
......@@ -158,10 +154,10 @@ function ConnectedUserPage({ page }: inputProps): React.ReactElement {
}
return datapoint;
}
dataLookup = createCategoryMatrixLookup(selectedData, Object.values(rowFieldMap[page]), 'user_category', false, preprocess);
dataLookup = createCategoryMatrixLookup(selectedData, Object.values(rowFieldMap[page]), "user_category", false, preprocess);
} else {
categoryLookup = UserCategories;
dataLookup = createCategoryMatrixLookup(selectedData, Object.values(rowFieldMap[page]), 'user_category', false);
dataLookup = createCategoryMatrixLookup(selectedData, Object.values(rowFieldMap[page]), "user_category", false);
}
const filterNode = <Filter
filterOptions={{ availableYears: [...years], availableNrens: [...nrens.values()] }}
......@@ -172,11 +168,13 @@ function ConnectedUserPage({ page }: inputProps): React.ReactElement {
// contains title for each row, and the field in the data object to look up for that row
const rowInfo = rowFieldMap[page];
const filename = `nren_connected_${page.toString()}`;
return (
<DataPage title={displayTitle[page]}
description={description[page]}
category={Sections.ConnectedUsers} filter={filterNode}
data={selectedData} filename="nren_connectivity">
data={selectedData} filename={filename}>
<ChartContainer>
<ScrollableMatrix
dataLookup={dataLookup}
......
......@@ -110,9 +110,9 @@ function StaffGraphPage({ roles = false }: inputProps) {
(!roles && staffdata.permanent_fte > 0 && staffdata.subcontracted_fte > 0);
}
const { filterSelection, setFilterSelection } = useContext(FilterSelectionContext);
const { data: staffData, years, nrens } = useData<NrenStaff>('/api/staff', setFilterSelection, validityCheck);
const { data, years, nrens } = useData<NrenStaff>('/api/staff', setFilterSelection, validityCheck);
const selectedData = staffData.filter(data =>
const selectedData = data.filter(data =>
filterSelection.selectedYears.includes(data.year) && filterSelection.selectedNrens.includes(data.nren)
);
......
......@@ -85,27 +85,13 @@ const chartOptions = {
function StaffGraphAbsolutePage() {
const { filterSelection, setFilterSelection } = useContext(FilterSelectionContext);
const { data: staffData, years, nrens } = useData<NrenStaff>('/api/staff', setFilterSelection);
const nrenStaffDataset = createNRENStaffDatasetAbsolute(staffData, filterSelection.selectedYears);
nrenStaffDataset.datasets.forEach(dataset => {
dataset.hidden = !filterSelection.selectedYears.includes(parseInt(dataset.stack));
});
const selectedData = staffData.filter(data =>
const { data, years, nrens } = useData<NrenStaff>('/api/staff', setFilterSelection);
const selectedData = data.filter(data =>
filterSelection.selectedYears.includes(data.year) && filterSelection.selectedNrens.includes(data.nren)
);
// remove the datapoints and labels for the nrens that aren't selected
// unfortunately we cannot just hide them because graph.js doesn't want
// to create a stack from a single dataset
nrenStaffDataset.datasets.forEach(dataset => {
dataset.data = dataset.data.filter((e, i) => {
return filterSelection.selectedNrens.includes(nrenStaffDataset.labels[i]);
});
});
nrenStaffDataset.labels = nrenStaffDataset.labels.filter((e) => filterSelection.selectedNrens.includes(e));
const nrenStaffDataset = createNRENStaffDatasetAbsolute(selectedData, filterSelection.selectedYears);
const filterNode = <Filter
filterOptions={{ availableYears: [...years], availableNrens: [...nrens.values()] }}
......
......@@ -135,7 +135,7 @@ function SurveyContainerComponent({ loadFrom }) {
}, []);
if (!surveyModel) {
return <>{error}</>
return error;
}
const saveSurveyData = async (survey, newState) => {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment