fix(links): offer the whole vault when linking a document to a record

The visit and vaccination forms asked the document list for a page of
200 while the route accepts at most 100. The refusal read as an empty
list, so the picker said "No documents yet." to anyone with a full
vault, and the only way a scan reached a dose was the seven-day
suggestion offered at upload. The visit form's condition picker had the
same problem against the episode list.

The document pickers now walk the vault page by page at the route's own
limit, so any document can be linked from a vaccination or a visit, and
one document can sit on as many records as it covers. Documents dated
within seven days of the record stay on top under their own heading,
the rest follow by month and are searchable. A failed read now shows an
error with a retry instead of passing for an empty list.

Refs #1024, #1005
This commit is contained in:
Marc-André Bombeck committed 2026-09-24 09:28:41 +02:00
1 parent 8f889cf942
commit f46ed99def
17 files changed
+443 -85

No files matched your search

+3 -1
View File
@@ -10825,7 +10825,9 @@
"selectAll": "Alle auswählen",
"searchPlaceholder": "Suchen",
"searchNoMatch": "Kein Treffer",
"remove": "Entfernen"
"remove": "Entfernen",
"suggested": "Um dieses Datum",
"loadError": "Die Liste konnte nicht geladen werden."
}
}
}
+3 -1
View File
@@ -10825,7 +10825,9 @@
"selectAll": "Select all",
"searchPlaceholder": "Search",
"searchNoMatch": "No match",
"remove": "Remove"
"remove": "Remove",
"suggested": "Around this date",
"loadError": "The list could not be loaded."
}
}
}
+3 -1
View File
@@ -10825,7 +10825,9 @@
"selectAll": "Seleccionar todo",
"searchPlaceholder": "Buscar",
"searchNoMatch": "Sin coincidencias",
"remove": "Quitar"
"remove": "Quitar",
"suggested": "En torno a esta fecha",
"loadError": "No se pudo cargar la lista."
}
}
}
+3 -1
View File
@@ -10825,7 +10825,9 @@
"selectAll": "Tout sélectionner",
"searchPlaceholder": "Rechercher",
"searchNoMatch": "Aucun résultat",
"remove": "Retirer"
"remove": "Retirer",
"suggested": "Autour de cette date",
"loadError": "Impossible de charger la liste."
}
}
}
+3 -1
View File
@@ -10825,7 +10825,9 @@
"selectAll": "Seleziona tutto",
"searchPlaceholder": "Cerca",
"searchNoMatch": "Nessun risultato",
"remove": "Rimuovi"
"remove": "Rimuovi",
"suggested": "Intorno a questa data",
"loadError": "Impossibile caricare l’elenco."
}
}
}
+3 -1
View File
@@ -10825,7 +10825,9 @@
"selectAll": "전체 선택",
"searchPlaceholder": "검색",
"searchNoMatch": "결과 없음",
"remove": "제거"
"remove": "제거",
"suggested": "이 날짜 전후",
"loadError": "목록을 불러오지 못했습니다."
}
}
}
+3 -1
View File
@@ -10825,7 +10825,9 @@
"selectAll": "Zaznacz wszystko",
"searchPlaceholder": "Szukaj",
"searchNoMatch": "Brak wyników",
"remove": "Usuń"
"remove": "Usuń",
"suggested": "Wokół tej daty",
"loadError": "Nie udało się wczytać listy."
}
}
}