- Withdrawal wording from one backend helper everywhere ("bis
einschließlich TT.MM. – ab TT.MM. wieder erntefähig", year when it
crosses New Year); withdrawal-status returns lastBlockedDay and the
ready text, the frontend no longer computes dates
- Calendar events name colony or apiary, withdrawal events carry
product and detail; compact withdrawal rows on mobile
- One bottling warning per colony and treatment; pre-save hint
- Offline: online-only actions disabled with a reason, cached data
shows its timestamp, open sheets block submit offline
- Mobile: no horizontal scroll at 360 px, touch targets >= 44 px,
toasts and the add button no longer cover content
- Cleanup sheet without destructive preselection; natural sort of
colony codes; collapsible automation rule cards; varroa list newest
first with chart axes; text fixes
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
14 lines
508 B
TypeScript
14 lines
508 B
TypeScript
/** '2026-05-05' as '05.05.', with the year as '05.05.2026'. */
|
|
export function formatDayDe(day: string, withYear = false): string {
|
|
const [year, month, date] = day.split('-');
|
|
return withYear ? `${date}.${month}.${year}` : `${date}.${month}.`;
|
|
}
|
|
|
|
/**
|
|
* Closes a sentence with one period. A day formatted by formatDayDe ends with
|
|
* its own dot ('13.10.'), which then is the end of the sentence.
|
|
*/
|
|
export function endSentence(text: string): string {
|
|
return text.endsWith('.') ? text : `${text}.`;
|
|
}
|