Skip to content

Commit

Permalink
Graf viser nå for alle kvartal fra første til siste vi har noe som he…
Browse files Browse the repository at this point in the history
…lst data på.

La til et kvartal buffer i ennen av grafen ved render.
  • Loading branch information
sstensby committed Nov 28, 2023
1 parent 0a89da3 commit 6902d40
Show file tree
Hide file tree
Showing 3 changed files with 91 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,10 @@ const GrafVisning: FunctionComponent<Props> = ({
}
);

const siste = kvartalsvisSammenligningData[kvartalsvisSammenligningData.length - 1];

const kvartalsvisSammenligningDataMedEtKvartalBuffer = [...kvartalsvisSammenligningData, { årstall: siste.kvartal === 4 ? siste.årstall + 1 : siste.årstall, kvartal: siste.kvartal === 4 ? 1 : siste.kvartal + 1 }];

const punkterPåXAksenSomSkalMarkeres: string[] =
hentFørsteKvartalFraAlleÅreneIDatagrunnlaget(kvartalsvisSammenligning).map(
(årstallOgKvartal) =>
Expand All @@ -83,7 +87,7 @@ const GrafVisning: FunctionComponent<Props> = ({
return (
<ResponsiveContainer minHeight={400}>
<LineChart
data={kvartalsvisSammenligningData}
data={kvartalsvisSammenligningDataMedEtKvartalBuffer}
margin={margin}
role="img"
title="Graf som viser sykefraværet over tid. Kan også sees som tabell."
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,15 @@ describe("Tester for graf-og-tabell-utils", () => {
expect(kvartalsvisSammenligning[0].land.prosent).toEqual(40);
});

test("konverterTilKvartalsvisSammenligning skal returnere data for nøyaktig de årstall og kvartal som landshistorikken har", () => {
test("konverterTilKvartalsvisSammenligning skal returnere data for de årstall og kvartal som vi har historikk på", () => {
const kvartalsvisSammenligning = konverterTilKvartalsvisSammenligning([
lagHistorikkMedÅrstallOgKvartal(Statistikkategori.VIRKSOMHET, [
{ årstall: 1999, kvartal: 4 },
{ årstall: 2000, kvartal: 1 },
]),
lagHistorikkMedÅrstallOgKvartal(Statistikkategori.LAND, [
{ årstall: 2000, kvartal: 1 },
{ årstall: 2000, kvartal: 2 },
{ årstall: 2000, kvartal: 3 },
{ årstall: 2000, kvartal: 4 },
]),
Expand All @@ -56,12 +57,54 @@ describe("Tester for graf-og-tabell-utils", () => {
);
};

expect(årstallOgKvartalerSomVises.length).toEqual(3);
expect(årstallOgKvartalerSomVises.length).toEqual(5);
expect(resultatInneholder(1999, 4)).toBeTruthy();
expect(resultatInneholder(2000, 1)).toBeTruthy();
expect(resultatInneholder(2000, 2)).toBeTruthy();
expect(resultatInneholder(2000, 3)).toBeTruthy();
expect(resultatInneholder(2000, 4)).toBeTruthy();
});

test("konverterTilKvartalsvisSammenligning skal returnere alle perioder fra start til slutt, selv om det er glipe i dataen", () => {
const kvartalsvisSammenligning = konverterTilKvartalsvisSammenligning([
lagHistorikkMedÅrstallOgKvartal(Statistikkategori.VIRKSOMHET, [
{ årstall: 1999, kvartal: 4 },
{ årstall: 2000, kvartal: 1 },
]),
lagHistorikkMedÅrstallOgKvartal(Statistikkategori.LAND, [
{ årstall: 2000, kvartal: 1 },
{ årstall: 2000, kvartal: 3 },
{ årstall: 2001, kvartal: 4 },
]),
]);

const årstallOgKvartalerSomVises = kvartalsvisSammenligning.map(
(sammenligning) => {
return {
årstall: sammenligning.årstall,
kvartal: sammenligning.kvartal,
};
}
);

const resultatInneholder = (årstall: number, kvartal: number): boolean => {
return !!årstallOgKvartalerSomVises.find(
(årstallOgKvartal) =>
årstallOgKvartal.årstall === årstall &&
årstallOgKvartal.kvartal === kvartal
);
};

expect(årstallOgKvartalerSomVises.length).toEqual(9);
expect(resultatInneholder(2000, 1)).toBeTruthy();
expect(resultatInneholder(2000, 3)).toBeTruthy();
expect(resultatInneholder(2000, 4)).toBeTruthy();
expect(resultatInneholder(2001, 1)).toBeTruthy();
expect(resultatInneholder(2001, 2)).toBeTruthy();
expect(resultatInneholder(2001, 3)).toBeTruthy();
expect(resultatInneholder(2001, 4)).toBeTruthy();
});

test("konverterTilKvartalsvisSammenligning skal legge inn tom sykefraværsprosent hvis historikken ikke inneholder et gitt kvartal", () => {
const kvartalsvisSammenligning = konverterTilKvartalsvisSammenligning([
lagHistorikkMedÅrstallOgKvartal(Statistikkategori.VIRKSOMHET, []),
Expand Down
48 changes: 41 additions & 7 deletions src/sykefravarsstatistikk/utils/sykefraværshistorikk-utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,16 +74,50 @@ export const beregnHvilkeÅrstallOgKvartalerSomSkalVises = (
): ÅrstallOgKvartal[] => {
if (historikkListe.length === 0) return [];

const historikk = historikkListe.find(
(historikk) => historikk.type === Statistikkategori.LAND
);
let førsteKvartal = { årstall: 9999, kvartal: 4 };
let sisteKvartal = { årstall: 0, kvartal: 1 };

for (const historikkgruppe of historikkListe) {
for (const historikkelement of historikkgruppe.kvartalsvisSykefraværsprosent) {
if (
historikkelement.årstall < førsteKvartal.årstall ||
(historikkelement.årstall === førsteKvartal.årstall &&
historikkelement.kvartal < førsteKvartal.kvartal)
) {
førsteKvartal = historikkelement;
}
if (
historikkelement.årstall > sisteKvartal.årstall ||
(historikkelement.årstall === sisteKvartal.årstall &&
historikkelement.kvartal > sisteKvartal.kvartal)
) {
sisteKvartal = historikkelement;
}
}
}

if (historikk === undefined) return [];
const output = [];
let workingKvartal = førsteKvartal;
while (
workingKvartal.årstall < sisteKvartal.årstall ||
(workingKvartal.årstall === sisteKvartal.årstall &&
workingKvartal.kvartal <= sisteKvartal.kvartal)
) {
output.push(workingKvartal);

if (workingKvartal.kvartal < 4) {
workingKvartal = {
årstall: workingKvartal.årstall,
kvartal: workingKvartal.kvartal + 1,
};
} else {
workingKvartal = { årstall: workingKvartal.årstall + 1, kvartal: 1 };
}
}

return historikk.kvartalsvisSykefraværsprosent.map((prosent) => {
return { årstall: prosent.årstall, kvartal: prosent.kvartal };
});
return output;
};

export const konverterTilKvartalsvisSammenligning = (
historikkListe: KvartalsvisSykefraværshistorikk[]
): KvartalsvisSammenligning[] => {
Expand Down

0 comments on commit 6902d40

Please sign in to comment.