@jjlmoya/utils-babies 1.5.0 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +67 -66
- package/src/category/i18n/de.ts +48 -0
- package/src/category/i18n/en.ts +10 -10
- package/src/category/i18n/fr.ts +10 -10
- package/src/category/i18n/id.ts +48 -0
- package/src/category/i18n/it.ts +48 -0
- package/src/category/i18n/ja.ts +48 -0
- package/src/category/i18n/ko.ts +48 -0
- package/src/category/i18n/nl.ts +48 -0
- package/src/category/i18n/pl.ts +48 -0
- package/src/category/i18n/pt.ts +48 -0
- package/src/category/i18n/ru.ts +48 -0
- package/src/category/i18n/sv.ts +48 -0
- package/src/category/i18n/tr.ts +48 -0
- package/src/category/i18n/zh.ts +48 -0
- package/src/category/index.ts +13 -1
- package/src/tests/faq_count.test.ts +1 -1
- package/src/tests/i18n_coverage.test.ts +36 -0
- package/src/tests/locale_completeness.test.ts +1 -1
- package/src/tests/schemas_fulfillment.test.ts +23 -0
- package/src/tests/seo_length.test.ts +1 -2
- package/src/tests/title_quality.test.ts +55 -0
- package/src/tool/baby-feeding-calculator/component.astro +40 -40
- package/src/tool/baby-feeding-calculator/i18n/de.ts +162 -0
- package/src/tool/baby-feeding-calculator/i18n/id.ts +162 -0
- package/src/tool/baby-feeding-calculator/i18n/it.ts +162 -0
- package/src/tool/baby-feeding-calculator/i18n/ja.ts +162 -0
- package/src/tool/baby-feeding-calculator/i18n/ko.ts +162 -0
- package/src/tool/baby-feeding-calculator/i18n/nl.ts +162 -0
- package/src/tool/baby-feeding-calculator/i18n/pl.ts +162 -0
- package/src/tool/baby-feeding-calculator/i18n/pt.ts +162 -0
- package/src/tool/baby-feeding-calculator/i18n/ru.ts +162 -0
- package/src/tool/baby-feeding-calculator/i18n/sv.ts +162 -0
- package/src/tool/baby-feeding-calculator/i18n/tr.ts +162 -0
- package/src/tool/baby-feeding-calculator/i18n/zh.ts +162 -0
- package/src/tool/baby-feeding-calculator/index.ts +12 -0
- package/src/tool/baby-percentile-calculator/component.astro +38 -38
- package/src/tool/baby-percentile-calculator/i18n/de.ts +245 -0
- package/src/tool/baby-percentile-calculator/i18n/id.ts +245 -0
- package/src/tool/baby-percentile-calculator/i18n/it.ts +245 -0
- package/src/tool/baby-percentile-calculator/i18n/ja.ts +245 -0
- package/src/tool/baby-percentile-calculator/i18n/ko.ts +245 -0
- package/src/tool/baby-percentile-calculator/i18n/nl.ts +245 -0
- package/src/tool/baby-percentile-calculator/i18n/pl.ts +245 -0
- package/src/tool/baby-percentile-calculator/i18n/pt.ts +245 -0
- package/src/tool/baby-percentile-calculator/i18n/ru.ts +245 -0
- package/src/tool/baby-percentile-calculator/i18n/sv.ts +245 -0
- package/src/tool/baby-percentile-calculator/i18n/tr.ts +245 -0
- package/src/tool/baby-percentile-calculator/i18n/zh.ts +245 -0
- package/src/tool/baby-percentile-calculator/index.ts +12 -0
- package/src/tool/baby-size-converter/component.astro +42 -42
- package/src/tool/baby-size-converter/i18n/de.ts +203 -0
- package/src/tool/baby-size-converter/i18n/fr.ts +1 -1
- package/src/tool/baby-size-converter/i18n/id.ts +203 -0
- package/src/tool/baby-size-converter/i18n/it.ts +203 -0
- package/src/tool/baby-size-converter/i18n/ja.ts +203 -0
- package/src/tool/baby-size-converter/i18n/ko.ts +203 -0
- package/src/tool/baby-size-converter/i18n/nl.ts +203 -0
- package/src/tool/baby-size-converter/i18n/pl.ts +203 -0
- package/src/tool/baby-size-converter/i18n/pt.ts +203 -0
- package/src/tool/baby-size-converter/i18n/ru.ts +203 -0
- package/src/tool/baby-size-converter/i18n/sv.ts +203 -0
- package/src/tool/baby-size-converter/i18n/tr.ts +203 -0
- package/src/tool/baby-size-converter/i18n/zh.ts +203 -0
- package/src/tool/baby-size-converter/index.ts +12 -0
- package/src/tool/fertile-days-estimator/component.astro +14 -9
- package/src/tool/fertile-days-estimator/i18n/de.ts +262 -0
- package/src/tool/fertile-days-estimator/i18n/id.ts +262 -0
- package/src/tool/fertile-days-estimator/i18n/it.ts +262 -0
- package/src/tool/fertile-days-estimator/i18n/ja.ts +262 -0
- package/src/tool/fertile-days-estimator/i18n/ko.ts +262 -0
- package/src/tool/fertile-days-estimator/i18n/nl.ts +262 -0
- package/src/tool/fertile-days-estimator/i18n/pl.ts +262 -0
- package/src/tool/fertile-days-estimator/i18n/pt.ts +262 -0
- package/src/tool/fertile-days-estimator/i18n/ru.ts +262 -0
- package/src/tool/fertile-days-estimator/i18n/sv.ts +262 -0
- package/src/tool/fertile-days-estimator/i18n/tr.ts +262 -0
- package/src/tool/fertile-days-estimator/i18n/zh.ts +262 -0
- package/src/tool/fertile-days-estimator/index.ts +12 -0
- package/src/tool/pregnancy-calculator/component.astro +55 -48
- package/src/tool/pregnancy-calculator/i18n/de.ts +467 -0
- package/src/tool/pregnancy-calculator/i18n/en.ts +140 -0
- package/src/tool/pregnancy-calculator/i18n/es.ts +143 -3
- package/src/tool/pregnancy-calculator/i18n/fr.ts +143 -3
- package/src/tool/pregnancy-calculator/i18n/id.ts +467 -0
- package/src/tool/pregnancy-calculator/i18n/it.ts +467 -0
- package/src/tool/pregnancy-calculator/i18n/ja.ts +467 -0
- package/src/tool/pregnancy-calculator/i18n/ko.ts +467 -0
- package/src/tool/pregnancy-calculator/i18n/nl.ts +467 -0
- package/src/tool/pregnancy-calculator/i18n/pl.ts +467 -0
- package/src/tool/pregnancy-calculator/i18n/pt.ts +467 -0
- package/src/tool/pregnancy-calculator/i18n/ru.ts +467 -0
- package/src/tool/pregnancy-calculator/i18n/sv.ts +467 -0
- package/src/tool/pregnancy-calculator/i18n/tr.ts +467 -0
- package/src/tool/pregnancy-calculator/i18n/zh.ts +467 -0
- package/src/tool/pregnancy-calculator/index.ts +37 -1
- package/src/tool/pregnancy-calculator/milestones.ts +2 -146
- package/src/tool/vaccination-calendar/component.astro +26 -24
- package/src/tool/vaccination-calendar/i18n/de.ts +194 -0
- package/src/tool/vaccination-calendar/i18n/en.ts +20 -0
- package/src/tool/vaccination-calendar/i18n/es.ts +20 -0
- package/src/tool/vaccination-calendar/i18n/fr.ts +99 -75
- package/src/tool/vaccination-calendar/i18n/id.ts +194 -0
- package/src/tool/vaccination-calendar/i18n/it.ts +194 -0
- package/src/tool/vaccination-calendar/i18n/ja.ts +194 -0
- package/src/tool/vaccination-calendar/i18n/ko.ts +194 -0
- package/src/tool/vaccination-calendar/i18n/nl.ts +194 -0
- package/src/tool/vaccination-calendar/i18n/pl.ts +194 -0
- package/src/tool/vaccination-calendar/i18n/pt.ts +194 -0
- package/src/tool/vaccination-calendar/i18n/ru.ts +194 -0
- package/src/tool/vaccination-calendar/i18n/sv.ts +194 -0
- package/src/tool/vaccination-calendar/i18n/tr.ts +194 -0
- package/src/tool/vaccination-calendar/i18n/zh.ts +194 -0
- package/src/tool/vaccination-calendar/index.ts +33 -1
- package/src/tool/vaccination-calendar/logic.ts +39 -13
|
@@ -5,12 +5,13 @@ export interface DoseGroup {
|
|
|
5
5
|
vaccines: string[];
|
|
6
6
|
}
|
|
7
7
|
|
|
8
|
-
export function buildDoseGroups(): DoseGroup[] {
|
|
8
|
+
export function buildDoseGroups(ui: Record<string, string>): DoseGroup[] {
|
|
9
9
|
const groups: Record<number, string[]> = {};
|
|
10
10
|
VACCINES.forEach((vac) => {
|
|
11
|
+
const name = ui[`vac_${vac.id}`]!;
|
|
11
12
|
vac.doses.forEach((d) => {
|
|
12
13
|
if (!groups[d]) groups[d] = [];
|
|
13
|
-
groups[d].push(
|
|
14
|
+
groups[d].push(name);
|
|
14
15
|
});
|
|
15
16
|
});
|
|
16
17
|
return Object.entries(groups)
|
|
@@ -18,16 +19,29 @@ export function buildDoseGroups(): DoseGroup[] {
|
|
|
18
19
|
.sort((a, b) => a.months - b.months);
|
|
19
20
|
}
|
|
20
21
|
|
|
21
|
-
export function getAgeLabel(months: number): string {
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
export function getAgeLabel(months: number, ui: Record<string, string>): string {
|
|
23
|
+
const labelMonth = ui['labelMonth'];
|
|
24
|
+
const labelMonths = ui['labelMonths'];
|
|
25
|
+
const labelYear = ui['labelYear'];
|
|
26
|
+
const labelYears = ui['labelYears'];
|
|
27
|
+
|
|
28
|
+
if (months < 12) return `${months} ${months === 1 ? labelMonth : labelMonths}`;
|
|
29
|
+
if (months === 12) return `12 ${labelMonths} (1 ${labelYear})`;
|
|
24
30
|
const yrs = Math.floor(months / 12);
|
|
25
31
|
const rem = months % 12;
|
|
26
|
-
if (rem === 0) return `${yrs} ${yrs === 1 ?
|
|
27
|
-
return `${months}
|
|
32
|
+
if (rem === 0) return `${yrs} ${yrs === 1 ? labelYear : labelYears}`;
|
|
33
|
+
return `${months} ${labelMonths}`;
|
|
28
34
|
}
|
|
29
35
|
|
|
30
|
-
export function calculateAge(birthDate: Date, today: Date): string {
|
|
36
|
+
export function calculateAge(birthDate: Date, today: Date, ui: Record<string, string>): string {
|
|
37
|
+
const labelMonth = ui['labelMonth'];
|
|
38
|
+
const labelMonths = ui['labelMonths'];
|
|
39
|
+
const labelYear = ui['labelYear'];
|
|
40
|
+
const labelYears = ui['labelYears'];
|
|
41
|
+
const labelDay = ui['labelDay'];
|
|
42
|
+
const labelDays = ui['labelDays'];
|
|
43
|
+
const labelAnd = ui['labelAnd'];
|
|
44
|
+
|
|
31
45
|
let years = today.getFullYear() - birthDate.getFullYear();
|
|
32
46
|
let months = today.getMonth() - birthDate.getMonth();
|
|
33
47
|
let days = today.getDate() - birthDate.getDate();
|
|
@@ -40,19 +54,31 @@ export function calculateAge(birthDate: Date, today: Date): string {
|
|
|
40
54
|
years -= 1;
|
|
41
55
|
months += 12;
|
|
42
56
|
}
|
|
43
|
-
|
|
44
|
-
|
|
57
|
+
const mStr = `${months} ${months === 1 ? labelMonth : labelMonths}`;
|
|
58
|
+
const dStr = `${days} ${days === 1 ? labelDay : labelDays}`;
|
|
59
|
+
if (years === 0) return `${mStr} ${labelAnd} ${dStr}`;
|
|
60
|
+
const yStr = `${years} ${years === 1 ? labelYear : labelYears}`;
|
|
61
|
+
return `${yStr}, ${mStr} ${labelAnd} ${dStr}`;
|
|
45
62
|
}
|
|
46
63
|
|
|
47
|
-
export function buildIcsContent(birthDate: Date, doseGroups: DoseGroup[]): string {
|
|
64
|
+
export function buildIcsContent(birthDate: Date, doseGroups: DoseGroup[], ui: Record<string, string>): string {
|
|
65
|
+
const labelVaccination = ui['labelVaccination'];
|
|
66
|
+
const labelAppointment = ui['labelAppointment'];
|
|
67
|
+
const labelMonth = ui['labelMonth'];
|
|
68
|
+
const labelMonths = ui['labelMonths'];
|
|
69
|
+
const labelYear = ui['labelYear'];
|
|
70
|
+
const labelYears = ui['labelYears'];
|
|
71
|
+
|
|
48
72
|
let ics = 'BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:-//jjlmoya//VaxCal//ES\n';
|
|
49
73
|
doseGroups.forEach(({ months, vaccines }) => {
|
|
50
74
|
const target = new Date(birthDate);
|
|
51
75
|
target.setMonth(target.getMonth() + months);
|
|
52
76
|
if (target <= new Date()) return;
|
|
53
77
|
const dateStr = target.toISOString().replace(/[-:]/g, '').split('.')[0] + 'Z';
|
|
54
|
-
const label = months >= 12
|
|
55
|
-
|
|
78
|
+
const label = months >= 12
|
|
79
|
+
? `${Math.floor(months / 12)} ${Math.floor(months / 12) === 1 ? labelYear : labelYears}`
|
|
80
|
+
: `${months} ${months === 1 ? labelMonth : labelMonths}`;
|
|
81
|
+
ics += `BEGIN:VEVENT\nDTSTART:${dateStr}\nSUMMARY:${labelVaccination} ${label}: ${vaccines.join(', ')}\nDESCRIPTION:${labelAppointment}\nEND:VEVENT\n`;
|
|
56
82
|
});
|
|
57
83
|
ics += 'END:VCALENDAR';
|
|
58
84
|
return ics;
|