Skip to content
Snippets Groups Projects
Commit 1b17f282 authored by Emmanuel Raviart's avatar Emmanuel Raviart
Browse files

Synchronize units with tax-benefit

parent fb6922ef
No related branches found
No related tags found
No related merge requests found
Pipeline #9478 failed
......@@ -90,6 +90,22 @@ function auditUnit(audit: Audit, dataUnknown: unknown): [unknown, unknown] {
if (data.units == undefined) {
auditConstantUnitContent(audit, data, errors, remainingKeys)
} else {
for (const key of ["label", "short_label"]) {
audit.attribute(
data,
key,
true,
errors,
remainingKeys,
auditSwitch(
auditString,
auditKeyValueDictionary(auditOptions([...pluralizationCategories]), [
auditString,
auditRequire,
]),
),
)
}
audit.attribute(
data,
"name",
......
......@@ -127,9 +127,9 @@ export {
getUnitAtDate,
getUnitLabel,
getUnitShortLabel,
labelFronConstantUnit,
labelFromUnit,
pluralizationCategories,
shortLabelFronConstantUnit,
shortLabelFromUnit,
type ChangingUnit,
type ConstantUnit,
type PluralizationCategory,
......
......@@ -3,10 +3,8 @@ export interface ChangingUnit extends UnitBase {
}
export interface ConstantUnit extends UnitBase {
label?: StringByPluralizationCategory | string
/// Name of parameter containing the values of the unit
parameter?: string
short_label?: StringByPluralizationCategory | string
units?: undefined
}
......@@ -29,15 +27,17 @@ export type StringByPluralizationCategory = {
export type Unit = ChangingUnit | ConstantUnit
export interface UnitBase {
label?: StringByPluralizationCategory | string
name: string
short_label?: StringByPluralizationCategory | string
units?: { [date: string]: ConstantUnit } | undefined
}
export function getUnitAtDate(
unitByName: { [name: string]: Unit },
name: string | undefined | null,
date: string,
): ConstantUnit | undefined {
date: string | undefined | null,
): Unit | undefined {
if (name == null) {
return undefined
}
......@@ -45,6 +45,9 @@ export function getUnitAtDate(
if (unit === undefined) {
return undefined
}
if (date == null) {
return unit
}
if (unit.units !== undefined) {
unit = Object.entries(unit.units)
.sort(([startDate1], [startDate2]) =>
......@@ -61,31 +64,31 @@ export function getUnitAtDate(
export function getUnitLabel(
unitByName: { [name: string]: Unit },
name: string | undefined | null,
date: string,
date: string | undefined | null,
pluralizationCategory: PluralizationCategory,
): string {
const unit = getUnitAtDate(unitByName, name, date)
if (unit === undefined) {
return name ?? ""
}
return labelFronConstantUnit(unit, pluralizationCategory)
return labelFromUnit(unit, pluralizationCategory)
}
export function getUnitShortLabel(
unitByName: { [name: string]: Unit },
name: string | undefined | null,
date: string,
date: string | undefined | null,
pluralizationCategory: PluralizationCategory,
): string {
const unit = getUnitAtDate(unitByName, name, date)
if (unit === undefined) {
return name ?? ""
}
return shortLabelFronConstantUnit(unit, pluralizationCategory)
return shortLabelFromUnit(unit, pluralizationCategory)
}
export function labelFronConstantUnit(
unit: ConstantUnit,
export function labelFromUnit(
unit: Unit,
pluralizationCategory: PluralizationCategory,
): string {
const label = unit.label
......@@ -96,15 +99,15 @@ export function labelFronConstantUnit(
: label[pluralizationCategory] ?? unit.name
}
export function shortLabelFronConstantUnit(
unit: ConstantUnit,
export function shortLabelFromUnit(
unit: Unit,
pluralizationCategory: PluralizationCategory,
): string {
const shortLabel = unit.short_label
return shortLabel === undefined
? labelFronConstantUnit(unit, pluralizationCategory)
? labelFromUnit(unit, pluralizationCategory)
: typeof shortLabel === "string"
? shortLabel
: shortLabel[pluralizationCategory] ??
labelFronConstantUnit(unit, pluralizationCategory)
labelFromUnit(unit, pluralizationCategory)
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment