Skip to content

Commit

Permalink
Merge pull request #260 from cabcookie:consider-activities-with-peopl…
Browse files Browse the repository at this point in the history
…e-mentioned

Consider-activities-with-people-mentioned
  • Loading branch information
cabcookie authored Nov 28, 2024
2 parents 14c173c + abca5eb commit 2f8b48b
Show file tree
Hide file tree
Showing 7 changed files with 58 additions and 40 deletions.
3 changes: 3 additions & 0 deletions amplify/data/project-schema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,9 @@ const projectSchema = {
partnerId: a.id(),
partner: a.belongsTo("Account", "partnerId"),
})
.secondaryIndexes((index) => [
index("partnerId").queryField("listByPartnerId"),
])
.authorization((allow) => [allow.owner()]),
};

Expand Down
43 changes: 43 additions & 0 deletions components/activities/activity-lean.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import PersonNoteMeeting from "@/components/people/PersonNoteMeeting";
import PersonNoteProject from "@/components/people/PersonNoteProject";
import NotesEditor from "@/components/ui-elements/editors/notes-editor/NotesEditor";
import { format } from "date-fns";
import { ExternalLink } from "lucide-react";
import Link from "next/link";
import { FC } from "react";

interface Activity {
id: string;
finishedOn: Date;
projectIds: string[];
meetingId?: string;
}

type LeanActivitiyProps = {
activity: Activity;
readonly?: boolean;
};

const LeanActivitiy: FC<LeanActivitiyProps> = ({ activity, readonly }) => {
return (
<div key={activity.id} className="space-y-2">
<div className="font-semibold text-base">
{format(activity.finishedOn, "PPp")}
<Link href={`/activities/${activity.id}`}>
<ExternalLink className="inline-block ml-2 w-5 h-5 -translate-y-0.5 text-muted-foreground hover:text-primary" />
</Link>
</div>

<div className="text-sm text-muted-foreground">
{activity.projectIds.map((pId) => (
<PersonNoteProject key={pId} projectId={pId} />
))}
<PersonNoteMeeting meetingId={activity.meetingId} />
</div>

<NotesEditor activityId={activity.id} readonly={readonly} />
</div>
);
};

export default LeanActivitiy;
2 changes: 1 addition & 1 deletion components/people/PersonNoteAccount.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ const PersonNoteAccount: FC<PersonNoteAccountProps> = ({

return (
<Link
href={`/account/${account?.id}`}
href={`/accounts/${account?.id}`}
className={cn("hover:text-blue-600", className)}
>
{account?.name}
Expand Down
2 changes: 1 addition & 1 deletion components/people/PersonNoteMeeting.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ const PersonNoteMeeting: FC<PersonNoteMeetingProps> = ({
return (
meeting && (
<div className={cn(className)}>
<Link href={`/meeting/${meeting.id}`} className="hover:text-blue-600">
<Link href={`/meetings/${meeting.id}`} className="hover:text-blue-600">
Meeting: {meeting.topic} ({format(meeting.meetingOn, "PPp")})
</Link>
</div>
Expand Down
25 changes: 2 additions & 23 deletions components/people/PersonNotes.tsx
Original file line number Diff line number Diff line change
@@ -1,15 +1,10 @@
import { useProjectsContext } from "@/api/ContextProjects";
import usePersonActivities, { PersonActivity } from "@/api/usePersonActivities";
import { format } from "date-fns";
import { flatMap, flow } from "lodash/fp";
import { ExternalLink } from "lucide-react";
import Link from "next/link";
import { FC } from "react";
import LeanActivitiy from "../activities/activity-lean";
import DefaultAccordionItem from "../ui-elements/accordion/DefaultAccordionItem";
import LoadingAccordionItem from "../ui-elements/accordion/LoadingAccordionItem";
import NotesEditor from "../ui-elements/editors/notes-editor/NotesEditor";
import PersonNoteMeeting from "./PersonNoteMeeting";
import PersonNoteProject from "./PersonNoteProject";

type PersonNotesProps = {
personId?: string;
Expand Down Expand Up @@ -40,23 +35,7 @@ const PersonNotes: FC<PersonNotesProps> = ({ showNotes, personId }) => {
>
<div className="space-y-6">
{activities?.map((a) => (
<div key={a.id} className="space-y-2">
<div className="font-semibold text-base">
{format(a.finishedOn, "PPp")}
<Link href={`/activities/${a.id}`}>
<ExternalLink className="inline-block ml-2 w-5 h-5 -translate-y-0.5 text-muted-foreground hover:text-primary" />
</Link>
</div>

<div className="text-sm text-muted-foreground">
{a.projectIds.map((pId) => (
<PersonNoteProject key={pId} projectId={pId} />
))}
<PersonNoteMeeting meetingId={a.meetingId} />
</div>

<NotesEditor activityId={a.id} readonly />
</div>
<LeanActivitiy key={a.id} activity={a} readonly />
))}
</div>
</DefaultAccordionItem>
Expand Down
15 changes: 4 additions & 11 deletions docs/releases/next.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
# Notizen verlinkter Personen zeigen (Version :VERSION)
# Partnerprojekte bei Partnerdetails zeigen (Version :VERSION)

- Auf der Person-Detailseite werden auch Notizen gezeigt, in denen die Person nur erwähnt wurde.
- Die Auflistung der Notizen wurde visuell verschlankt.
- Bei Accounts tauchen auch Projekte auf, bei denen der Account als Partner engagiert ist

## In Arbeit

- das gleiche gilt auch für die Notizen.

## Geplant

### Meetings
Expand All @@ -14,7 +15,6 @@

### Account Details

- Bei Accounts sollten auch Projekte auftauchen, bei denen der Account als Partner engagiert ist; das gleiche gilt auch für die Notizen.
- Ich möchte eine Möglichkeit haben, um zu dokumentieren, was ein Kunde mit einem Partner macht und mir dazu auch schnell eine Übersicht/Matrix erstellen können.
- Chart auch auf der Account-Detailseite anzeigen. Dort dann nach Payer Accounts aufgeteilt

Expand Down Expand Up @@ -43,7 +43,6 @@
- Bei in Notizen erwähnten Personen direkt das Schreiben einer Email oder das Anrufen (auf dem Smartphone) anbieten.
- Das Datum des letzten Uploads von CRM Daten anzeigen.
- Die Uploads für CRM Projekte sollen ähnlich wie bei den Finanzdaten eine Historie ermöglichen.
- Eine "Lean-Ansicht" wäre toll, zum Beispiel, wenn ich Notizen zu einem Projekt sehen möchte, dann scrolle ich einfach durch die Notizen ohne erst Akkordions aufklappen zu müssen.

### Finanzdaten

Expand All @@ -61,9 +60,3 @@
### Suche

- Ich möchte über alle Objekte in der App suchen können: Meetings, Projekte, Personen, Kunden, Notizen. Ich möchte, dass die Suchergebnisse relevant sind.

## Fehler

### Navigation

- Die Navigation wird langsam zu lang. Da muss ich mir was überlegen. Bei recht kurzen Suchbegriffen (z.B. ECR Tag) wird die Auswahl zu wenig eingeschränkt.
8 changes: 4 additions & 4 deletions helpers/projects.ts
Original file line number Diff line number Diff line change
Expand Up @@ -125,18 +125,18 @@ const searchTextInProjectName = (

const filterByProjectStatus =
({ accountId, projectFilter }: FilterProjectsProps) =>
({ accountIds, done, onHoldTill }: Project) =>
({ accountIds, done, onHoldTill, partnerId }: Project) =>
accountId
? accountIds.includes(accountId) && !done
? (accountIds.includes(accountId) || partnerId === accountId) && !done
: (projectFilter === "WIP" && !done && !onHoldTill) ||
(projectFilter === "On Hold" && !done && !!onHoldTill) ||
(projectFilter === "Done" && done);

const filterBySearch =
({ accountId, searchText }: FilterProjectsProps) =>
({ accountIds, done, project }: Project) =>
({ accountIds, done, project, partnerId }: Project) =>
accountId
? accountIds.includes(accountId) &&
? (accountIds.includes(accountId) || partnerId === accountId) &&
searchTextInProjectName(project, searchText) &&
!done
: searchTextInProjectName(project, searchText) && !done;
Expand Down

0 comments on commit 2f8b48b

Please sign in to comment.