Skip to content

Commit

Permalink
Merge pull request #183 from cabcookie:fix-small-issues
Browse files Browse the repository at this point in the history
fix: editor didn't show correct is-up-to-date state
  • Loading branch information
cabcookie authored Aug 27, 2024
2 parents 1e78057 + d0c998c commit fd84ef7
Show file tree
Hide file tree
Showing 6 changed files with 67 additions and 66 deletions.
44 changes: 23 additions & 21 deletions api/useDailyPlans.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,28 @@ type DailyPlanData = SelectionSet<
typeof selectionSet
>;

const mapDailyPlanTodo: (
todo: DailyPlanData["todos"][number]
) => DailyPlanTodo = ({
id: recordId,
todo: {
id: todoId,
projects,
status,
todo,
activity: { activityId },
},
}) => ({
recordId,
todoId,
todo: JSON.parse(todo as any),
done: status === "DONE",
projectIds: projects.map((p) =>
p.projectIdTodoStatus.replaceAll("-DONE", "").replaceAll("-OPEN", "")
),
activityId,
});

const mapDailyPlan: (dayplan: DailyPlanData) => DailyPlan = ({
id,
day,
Expand All @@ -65,27 +87,7 @@ const mapDailyPlan: (dayplan: DailyPlanData) => DailyPlan = ({
dayGoal,
context: context || "work",
status,
todos: todos.map(
({
id: recordId,
todo: {
id: todoId,
projects,
status,
todo,
activity: { activityId },
},
}): DailyPlanTodo => ({
recordId,
todoId,
todo: JSON.parse(todo as any),
done: status === "DONE",
projectIds: projects.map((p) =>
p.projectIdTodoStatus.replaceAll("-DONE", "").replaceAll("-OPEN", "")
),
activityId,
})
),
todos: todos.map(mapDailyPlanTodo),
});

const fetchDailyPlans =
Expand Down
2 changes: 1 addition & 1 deletion components/planning/DailyPlanForm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ const FormSchema = z.object({
type FormValues = z.infer<typeof FormSchema>;

type DailyPlanFormProps = {
dailyPlan: DailyPlan;
dailyPlan: DailyPlan | undefined;
createDailyPlan: ReturnType<typeof useDailyPlans>["createDailyPlan"];
confirmDailyPlanning: ReturnType<
typeof useDailyPlans
Expand Down
49 changes: 31 additions & 18 deletions components/ui-elements/editors/helpers/compare.ts
Original file line number Diff line number Diff line change
@@ -1,31 +1,44 @@
import { JSONContent } from "@tiptap/core";
import { isNil, omitBy } from "lodash";
import { flow, isEqual } from "lodash/fp";
import { isNil } from "lodash";
import { flow, identity, isEqual, omit, omitBy } from "lodash/fp";
import { LIST_TYPES } from "./blocks";

const cleanAttrs = (attrs: JSONContent["attrs"]): JSONContent => {
const omitBlockId = (level: number, type: JSONContent["type"]) =>
type &&
(level === 1 ||
(level === 2 && LIST_TYPES.includes(type)) ||
(level === 3 && !["listItem", "taskItem"].includes(type)) ||
level > 3)
? omit("blockId")
: identity;

const cleanAttrs = (
level: number,
type: JSONContent["type"],
attrs: JSONContent["attrs"]
): JSONContent => {
if (!attrs) return {};
const cleanedAttrs = omitBy(attrs, isNil);
const cleanedAttrs = flow(omitBy(isNil), omitBlockId(level, type))(attrs);
if (!cleanedAttrs) return {};
return Object.keys(cleanedAttrs).length === 0 ? {} : { attrs: cleanedAttrs };
};

const cleanContent = ({
attrs,
content,
...rest
}: JSONContent): JSONContent => ({
...rest,
...cleanAttrs(attrs),
...(!content
? {}
: {
content: content.map(cleanContent),
}),
});
const cleanContent =
(level: number = 1) =>
({ attrs, content, ...rest }: JSONContent): JSONContent => ({
...rest,
...cleanAttrs(level, rest.type, attrs),
...(!content
? {}
: {
content: content.map(cleanContent(level + 1)),
}),
});

export const isUpToDate = (
notes: JSONContent,
editorJson: JSONContent | undefined
) =>
!editorJson
? false
: flow(cleanContent, flow(cleanContent, isEqual)(notes))(editorJson);
: flow(cleanContent(), flow(cleanContent(), isEqual)(notes))(editorJson);
1 change: 1 addition & 0 deletions components/ui-elements/editors/helpers/project-todo-cud.ts
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ export const makeProjectIdTodoStatus = ({
`${projectId}-${done ? "DONE" : "OPEN"}`;

const getProjectTodoId = async ({ todoId, projectId }: TProjectTodoData) => {
if (!todoId || !projectId) return;
const { data, errors } =
await client.models.ProjectTodo.listProjectTodoByTodoId({ todoId });
if (errors)
Expand Down
25 changes: 6 additions & 19 deletions docs/releases/next.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,13 @@
# Notizen in separaten Blöcken speichern (Version :VERSION)

- Datenbankschema angepasst, so dass Blöcke separat gespeichert werden können.
- Wenn ich eine bestehende Notiz bearbeite, wird diese nun in der neuen Version 3 für das Notizenformat gespeichert. Das bedeutet, dass die einzelnen Blöcke der Notizen in unabhängigen Einträgen in der Datenbank landen.
- Wenn in einer Notiz neue Abschnitte hinzugefügt werden, werden diese auch in der Datenbank gespeichert.
- Enthält eine Notiz Verweise auf Personen, werden diese Personen in einem separaten Eintrag in der Datenbank gespeichert, so dass Verweise besser gefunden werden können (z.B. in der Personenansicht).
- Werden Aufgaben in einer Notiz angelegt, so landen diese Aufgaben auch in einer separaten Datenbank-Tabelle, so dass auch Aufgaben leichter gefunden und daran gearbeitet werden kann. Die Projekte, die an der Notiz hängen, werden auch als Verweise an der Aufgabe hinterlegt, so dass die Aufgaben auch von Projekt-Seite gefunden werden können.
- Das Löschen eines Abschnitts in einer Notiz führt dazu, dass der Block aus der Datenbank gelöscht wird und Einträge, die mit dem Block in Beziehung stehen (Aufgaben und Personen).
- Änderungen an einer Notiz werden nun in der Datenbank gespeichert inkl. Aufgaben und Verknüpfungen zu Personen oder Projekten.
- Für ein Meeting und Projekte werden die offenen vereinbarten Aufgaben dargestellt (sie können nicht editiert werden).
- Für Meetings und Projekte wird dargestellt, wenn Aktivitäten nach alter Formatierung enthalten sind. Das ist wichtig als Warnung, dass in der Aktivität Aufgaben enthalten sein könnten, die im Moment wegen der alten Formatierung nicht angezeigt werden könnten.
- Die Inbox funktioniert weiterhin und Einträge können im neuen Format in den Aktivitäten übernommen werden.
- Der Zeitraum für die angezeigte Liste der Meetings wird durch einen URL Parameter bestimmt (`startDate`).
- Für Zitate ist der Stil etwas angepasst. Die Schrift ist nicht mehr kursiv und auch nicht mehr fett gedruckt.
- Das Suchen nach Personen (in einer Notiz mit einer @-Erwähnung) ist jetzt stabiler und lädt die Personen auch hin und wieder nach.
- Numerierte Listen werden nun korrekt in NoteBlocks gespeichert.
- Die Tagesplanung funktioniert wieder und die tägliche Todoliste ebenso.
- Kleinere Fehlerbehebungen im Editor.
# Kleinere Fehlerbehebungen beim Bearbeiten von Notizen (Version :VERSION)

## In Arbeit

- Teilnehmer und Notizen in Zwischenablage kopieren, um schneller ins Quip oder Slack zu kopieren oder eine Email zu verfassen.
- Beziehungen zwischen Menschen abbilden (Partner, Ehe etc.).
- Weitere persönliche Jahrestage abbilden (Tauftag, Taufentscheidung etc.).
- In Wochenplanung persönliche Termine mit berücksichtigen (Geburtstage, Jahrestage).
- Beim Bearbeiten einer Person die Jahrestage nicht im Popup bearbeiten, sondern ähnlich wie bei den Projektdaten in dem Accordion.

## Geplant

- Die Verarbeitung in der Inbox soll auch ermöglichen Gelerntes zu Personen abzulegen.
- Teilnehmer und Notizen in Zwischenablage kopieren, um schneller ins Quip oder Slack zu kopieren oder eine Email zu verfassen.
12 changes: 5 additions & 7 deletions pages/planday.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -59,13 +59,11 @@ const DailyPlanningPage = () => {
{isLoading ? (
<Loader2 className="mt-2 ml-2 h-6 w-6 animate-spin" />
) : (
dailyPlan && (
<DailyPlanForm
createDailyPlan={createDailyPlan}
confirmDailyPlanning={confirmDailyPlanning}
dailyPlan={dailyPlan}
/>
)
<DailyPlanForm
createDailyPlan={createDailyPlan}
confirmDailyPlanning={confirmDailyPlanning}
dailyPlan={dailyPlan}
/>
)}

<div className="space-y-2">
Expand Down

0 comments on commit fd84ef7

Please sign in to comment.