Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

backfill #46

Merged
merged 7 commits into from
Apr 29, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion api/ContextProjects.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ export type Project = {
onHoldTill?: Date;
myNextActions: string;
othersNextActions: string;
context?: Context;
context: Context;
accountIds: string[];
activityIds: string[];
};
Expand Down
35 changes: 29 additions & 6 deletions api/useMeetings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,15 +54,24 @@ export const mapMeeting: (data: MeetingData) => Meeting = ({
.map(({ id }) => id),
});

const fetchMeetings = (page: number, context?: Context) => async () => {
type FetchMeetingsWithTokenFunction = (props: {
page: number;
token?: string;
context: Context;
}) => Promise<MeetingData[] | undefined>;

const fetchMeetingsWithToken: FetchMeetingsWithTokenFunction = async ({
page,
token,
context,
}) => {
if (!context) return;
const toDate = flow(
addDaysToDate(-4 * (page - 1) * 7 + 1),
getDayOfDate
)(new Date());
const fromDate = flow(addDaysToDate(-4 * page * 7), getDayOfDate)(new Date());
const { data, errors } = await client.models.Meeting.list({
filter: {
const filter = {
and: [
{
or: [
Expand Down Expand Up @@ -93,12 +102,26 @@ const fetchMeetings = (page: number, context?: Context) => async () => {
],
},
],
},
};

const { data, errors, nextToken } = await client.models.Meeting.list({
filter,
selectionSet: meetingSelectionSet,
nextToken: token,
});
if (errors) throw errors;
return data
.map(mapMeeting)
if (!nextToken) return data;
return [
...data,
...((await fetchMeetingsWithToken({ page, token: nextToken, context })) ||
[]),
];
};

const fetchMeetings = (page: number, context?: Context) => async () => {
if (!context) return;
return (await fetchMeetingsWithToken({ page, context }))
?.map(mapMeeting)
.sort((a, b) => b.meetingOn.getTime() - a.meetingOn.getTime());
};

Expand Down
31 changes: 31 additions & 0 deletions docs/releases/v1.3.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Stabilität von Tagesplänen und Projekten erhöhen (Version 1.3.0)

## Neue Funktionen und Änderungen

Datensätze in der Datenbank wurden bisher mit einer ID erzeugt. Hier ein Beispiel:

```typescript
const newDayPlan: DayPlan = {
id: crypto.randomUUID(),
day,
dayGoal,
done: false,
};
const { data, errors } = await client.models.DayPlan.create({
...newDayPlan,
context,
});
```

Das führte zu Fehlern und haben wir gefixt.

Wir haben die Amplify Packages auf die neueste Version aktualisiert und mussten das Datenschema entsprechend aktualisieren.

- `"@aws-amplify/backend": "^0.13.0"`
- `"@aws-amplify/backend-cli": "^0.12.0"`

Beim Laden der Tagespläne laden wir die Aufgaben gleich mit. Dadurch sparen wir uns einige der API Aufrufe und die Anwendung wird performanter. Außerdem versuchen wir Aufgaben in der neuen Tabelle `DayPlanTodo` zu konsolidieren. Wir bieten dem Anwender dafür an, bestehende Aufgaben in `DayPlanTodo` zu migrieren.

Die Projekte laden wir nun über einen Kontext, der der ganzen Anwendung zur Verfügung steht. Dadurch reduzieren wir API Aufrufe und Ladezeiten.

In der Projektdetailansicht sortieren wir die Aktivitäten nun schon beim Abruf aus der Datenbank nach dem Datum absteigend. Wir können dort nun auch die eigenen nächsten Aktivitäten festhalten als auch die anderer. Wenn in einem Meeting ein Projekt selektiert wird, sind sofort auch die zuletzt vereinbarten Aktivitäten sichtbar.
30 changes: 30 additions & 0 deletions docs/releases/v1.4.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Projektdetails anzeigen (Version 1.4.0)

## Neue Funktionen und Änderungen

### Projektdetails

Zusätzliche Projektdetails wie das Fälligkeitsdatum und bis wann es stummgeschaltet ist, werden jetzt angezeigt und sind editierbar.
Ein Projekt kann jetzt auch erledigt werden und ist anschließend nicht mehr auswählbar. Für weitere 90 Tage wird das Projekt noch angezeigt. Taucht der Projektname in Aktivitäten oder Meetings auf, wird angezeigt, wenn das Projekt als erledigt markiert ist.
Außerdem können Projekten nun Accounts zugeordnet werden.

### Listenansichten und Detailansichten

Ist implementiert für Accounts und Projekte.

### Verantwortung für Accounts

Tabelle angelegt, in der der Zeitraum gespeichert werden kann, wann ich für einen bestimmten Account verantwortlich gewesen bin.
Die Funktion ist auf der Oberfläche noch nicht implementiert.

### Wichtigkeit der Accounts

In der Tabelle `Account` gibt es ein Feld `Order`. Damit soll die Wichtigkeit eines Accounts definiert werden. Die Funktion ist an der Oberfläche noch nicht implementiert.

### Kleinere Änderungen

Habe eine Umgebungsvariable `NEXT_PUBLIC_ALLOW_FAKE_DATA_CREATION` eingeführt. Außerhalb der Produktionsumgebung soll damit an verschiedenen Stellen ein Button zur Erstellung von Dummy-Daten angeboten werden. Damit sollen potentiell leere Umgebungen schnell mit Daten befüllt werden können, um das Testen zu erleichtern. Im Moment ist die Funktion selbst noch nicht implementiert.

Accounts werden jetzt über einen React Context geladen. Das wirkt sich positiv auf die Stabilität und Performance der Applikation aus.

`ReactDatePicker` wird nun durchgehend für die Auswahl eines Datums und einer Uhrzeit verwendet.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "personal-crm",
"version": "1.2.1",
"version": "1.4.0",
"private": true,
"scripts": {
"dev": "next dev",
Expand Down
Loading