Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dee2d5e30b |
@@ -655,7 +655,15 @@ test('et invitationslink opretter kontoen og giver adgang til projektet', async
|
|||||||
|
|
||||||
await page.getByLabel('Ny opgave').fill('males inden fredag #Fælleshuset');
|
await page.getByLabel('Ny opgave').fill('males inden fredag #Fælleshuset');
|
||||||
await page.getByLabel('Ny opgave').press('Enter');
|
await page.getByLabel('Ny opgave').press('Enter');
|
||||||
await page.getByText('males inden fredag', { exact: true }).click();
|
// Titlen alene, ikke rækken med datomærket i.
|
||||||
|
//
|
||||||
|
// Hurtig tilføjelse læser "fredag" som forfaldsdatoen og tager ordet ud af
|
||||||
|
// titlen, så rækken er "males inden" plus et mærke, der siger hvornår. Mærkets
|
||||||
|
// ord skifter med ugedagen — "fredag", når der er langt, og "I morgen", når man
|
||||||
|
// kører prøven på en torsdag. Den her linje ledte efter hele rækken og fandt
|
||||||
|
// den derfor ikke én dag om ugen. Prøven handler om invitationer, ikke om
|
||||||
|
// datoer; den skal ikke vide hvilken dag det er.
|
||||||
|
await page.getByText('males inden', { exact: true }).click();
|
||||||
|
|
||||||
const drawer = page.getByRole('complementary', { name: 'Opgave' });
|
const drawer = page.getByRole('complementary', { name: 'Opgave' });
|
||||||
await drawer.getByLabel('Ansvarlig').selectOption({ label: 'Nabo' });
|
await drawer.getByLabel('Ansvarlig').selectOption({ label: 'Nabo' });
|
||||||
|
|||||||
@@ -35,10 +35,29 @@
|
|||||||
* A flat list of two hundred rows says when nothing. "I dag" and "I går" are
|
* A flat list of two hundred rows says when nothing. "I dag" and "I går" are
|
||||||
* how anybody looking for something they just closed would describe it.
|
* how anybody looking for something they just closed would describe it.
|
||||||
*/
|
*/
|
||||||
|
/**
|
||||||
|
* Dagen en opgave blev lukket, målt hvor personen står.
|
||||||
|
*
|
||||||
|
* Ikke `completed_at.slice(0, 10)`. Tidsstemplet er i UTC, og de ti første tegn
|
||||||
|
* er derfor UTC's dato — mens overskriften nedenfor sammenligner med *lokal*
|
||||||
|
* dato. I to timer efter midnat i dansk sommertid er de to ikke den samme dag,
|
||||||
|
* så en opgave lukket 00.30 lå under "I går", indtil klokken blev to.
|
||||||
|
*
|
||||||
|
* Fundet af prøven, som kørte forbi midnat for første gang. Den havde været
|
||||||
|
* grøn hver eneste gang før, fordi de to datoer er ens tyve timer i døgnet.
|
||||||
|
*/
|
||||||
|
const localDay = (iso) => {
|
||||||
|
if (!iso) return '';
|
||||||
|
const d = new Date(iso);
|
||||||
|
if (Number.isNaN(d.getTime())) return '';
|
||||||
|
const pad = (n) => String(n).padStart(2, '0');
|
||||||
|
return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`;
|
||||||
|
};
|
||||||
|
|
||||||
let days = $derived.by(() => {
|
let days = $derived.by(() => {
|
||||||
const groups = new Map();
|
const groups = new Map();
|
||||||
for (const task of done) {
|
for (const task of done) {
|
||||||
const key = (task.completed_at ?? '').slice(0, 10);
|
const key = localDay(task.completed_at);
|
||||||
if (!groups.has(key)) groups.set(key, []);
|
if (!groups.has(key)) groups.set(key, []);
|
||||||
groups.get(key).push(task);
|
groups.get(key).push(task);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -113,6 +113,10 @@
|
|||||||
*/
|
*/
|
||||||
function plain(body) {
|
function plain(body) {
|
||||||
return (body ?? '')
|
return (body ?? '')
|
||||||
|
// Et billede har ingen ord i sig. Uden det her stod der
|
||||||
|
// "]*\)/g, '')
|
||||||
.replace(/^#{1,6}\s+/gm, '')
|
.replace(/^#{1,6}\s+/gm, '')
|
||||||
.replace(/^\s*[-*+]\s+/gm, '')
|
.replace(/^\s*[-*+]\s+/gm, '')
|
||||||
.replace(/^\s*>\s?/gm, '')
|
.replace(/^\s*>\s?/gm, '')
|
||||||
@@ -447,7 +451,7 @@
|
|||||||
border: 0;
|
border: 0;
|
||||||
background: none;
|
background: none;
|
||||||
padding: 2px var(--s1);
|
padding: 2px var(--s1);
|
||||||
max-width: 11ch;
|
max-width: 13ch;
|
||||||
}
|
}
|
||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
|
|||||||
Reference in New Issue
Block a user