Skip to content

Commit

Permalink
Sort by varighet then startdate
Browse files Browse the repository at this point in the history
  • Loading branch information
andersrognstad committed Dec 18, 2023
1 parent 51b3494 commit c34b8fa
Showing 1 changed file with 29 additions and 11 deletions.
40 changes: 29 additions & 11 deletions src/utils/hendelseFilteringUtils.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ export const getSortedEventsFromSortingType = (
return sortEventsOnVeileder(personregister, veiledere, type);
case 'UKE_ASC':
case 'UKE_DESC':
return sortEventsOnWeek(personregister, type);
return sortEventsOnSykefravar(personregister, type);
case 'DATO_ASC':
case 'DATO_DESC':
return sortEventsOnFrist(personregister, type);
Expand Down Expand Up @@ -289,27 +289,45 @@ const sortEventsOnName = (
: Object.fromEntries(sorted.reverse());
};

const sortEventsOnWeek = (
const sortEventsOnSykefravar = (
personregister: PersonregisterState,
order: SortingType
): PersonregisterState => {
const sorted = Object.entries(personregister).sort(
([, persondataA], [, persondataB]) => {
const startDateA =
persondataA.latestOppfolgingstilfelle?.oppfolgingstilfelleStart;
const startDateB =
persondataB.latestOppfolgingstilfelle?.oppfolgingstilfelleStart;
if (!startDateA) return order === 'UKE_ASC' ? -1 : 1;
if (!startDateB) return order === 'UKE_ASC' ? 1 : -1;
if (startDateA > startDateB) return order === 'UKE_ASC' ? -1 : 1;
if (startDateA < startDateB) return order === 'UKE_ASC' ? 1 : -1;
return 0;
const varighetUkerA = persondataA.latestOppfolgingstilfelle?.varighetUker;
const varighetUkerB = persondataB.latestOppfolgingstilfelle?.varighetUker;
if (!varighetUkerA) return order === 'UKE_ASC' ? -1 : 1;
if (!varighetUkerB) return order === 'UKE_ASC' ? 1 : -1;
const compareVarighet =
order === 'UKE_ASC'
? varighetUkerA - varighetUkerB
: varighetUkerB - varighetUkerA;
return compareVarighet === 0
? compareTilfelleStart(persondataA, persondataB, order)
: compareVarighet;
}
);

return Object.fromEntries(sorted);
};

const compareTilfelleStart = (
persondataA: PersonData,
persondataB: PersonData,
order: SortingType
) => {
const startDateA =
persondataA.latestOppfolgingstilfelle?.oppfolgingstilfelleStart;
const startDateB =
persondataB.latestOppfolgingstilfelle?.oppfolgingstilfelleStart;
if (!startDateA) return order === 'UKE_ASC' ? -1 : 1;
if (!startDateB) return order === 'UKE_ASC' ? 1 : -1;
if (startDateA > startDateB) return order === 'UKE_ASC' ? -1 : 1;
if (startDateA < startDateB) return order === 'UKE_ASC' ? 1 : -1;
return 0;
};

const sortEventsOnFrist = (
personregister: PersonregisterState,
order: 'DATO_ASC' | 'DATO_DESC'
Expand Down

0 comments on commit c34b8fa

Please sign in to comment.