Skip to content

Commit 7836f97

Browse files
authored
Merge pull request #476 from STAPLE-verse/deal-with-form-select-view
Deal with form select view
2 parents 641de89 + 042a406 commit 7836f97

5 files changed

Lines changed: 58 additions & 21 deletions

File tree

src/invites/components/InvitesList.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ export const InvitesListView = ({ invites }) => {
1414
export const InvitesList = ({ currentUser }) => {
1515
// Get invitations
1616
const [invites] = useQuery(getInvites, {
17-
where: { email: currentUser!.email.toLowerCase() },
17+
where: { email: { equals: currentUser!.email, mode: "insensitive" } },
1818
orderBy: { id: "asc" },
1919
include: { project: true },
2020
})

src/invites/mutations/createInvite.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ export default resolver.pipe(
1515
resolver.zod(CreateInviteSchema),
1616
resolver.authorize(),
1717
async (input) => {
18+
input.email = input.email.toLowerCase()
19+
1820
let textResult
1921

2022
// Check if the user is already a soft-deleted project member
@@ -24,7 +26,7 @@ export default resolver.pipe(
2426
name: null,
2527
deleted: true,
2628
users: {
27-
some: { email: input.email }, // Match by email
29+
some: { email: { equals: input.email, mode: "insensitive" } }, // Match by email
2830
},
2931
},
3032
})
@@ -35,7 +37,7 @@ export default resolver.pipe(
3537
data: {
3638
projectId: input.projectId,
3739
privilege: input.privilege,
38-
email: input.email,
40+
email: input.email.toLowerCase(),
3941
invitationCode: generateToken(20),
4042
addedBy: input.addedBy,
4143
tags: input.tags ?? undefined,
@@ -58,7 +60,7 @@ export default resolver.pipe(
5860
projectId: input.projectId,
5961
name: null,
6062
users: {
61-
some: { email: input.email }, // Use `some` to query an array field
63+
some: { email: { equals: input.email, mode: "insensitive" } }, // Use `some` to query an array field
6264
},
6365
},
6466
})
@@ -74,7 +76,7 @@ export default resolver.pipe(
7476
data: {
7577
projectId: input.projectId,
7678
privilege: input.privilege,
77-
email: input.email,
79+
email: input.email.toLowerCase(),
7880
invitationCode: generateToken(20),
7981
addedBy: input.addedBy,
8082
tags: input.tags ?? undefined,

src/projects/components/ProjectSchemaInput.tsx

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ export const ProjectSchemaInput = ({
8080
const schemas = typeduserForms
8181
.filter((form) => form.formVersion)
8282
.flatMap((form) => form.formVersion!)
83+
.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime())
8384

8485
// Add "(Default)" to the name of the default form
8586
const options = schemas.map((schema) => ({
@@ -91,19 +92,23 @@ export const ProjectSchemaInput = ({
9192
}))
9293

9394
// Extra columns for the select table
94-
const versionNumber = schemas.map((schema) => schema.version)
95-
96-
const extraData = versionNumber.map((version) => ({
97-
version: version,
95+
const extraData = schemas.map((schema) => ({
96+
version: schema.version,
97+
date: new Date(schema.createdAt).toLocaleDateString(),
9898
}))
99-
10099
const extraColumns = [
101100
{
102101
id: "version",
103102
header: "Version",
104103
accessorKey: "version",
105104
cell: (info) => <span>{info.getValue()}</span>,
106105
},
106+
{
107+
id: "date",
108+
header: "Created",
109+
accessorKey: "date",
110+
cell: (info) => <span>{info.getValue()}</span>,
111+
},
107112
]
108113

109114
// Handle radio button selection

src/projects/mutations/createProject.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,17 @@ export default resolver.pipe(
7777
container: {
7878
connect: { id: firstContainerId }, // put it in default to do
7979
},
80-
description:
81-
"You added a description form to your project. You can complete that form by going to the project > clicking on settings in the left hand menu > and then edit form data.",
80+
description: `### Next step: Complete your project description form
81+
82+
You just added a **Project Description Form** to this project.
83+
84+
**How to complete it:**
85+
1. Go to your **Project**.
86+
2. Click **Settings** in the left-hand menu.
87+
3. Open **Edit Form Data** and complete the required fields.
88+
89+
_Why this matters:_ Completing this form helps make your project transparent and searchable via metadata.
90+
`,
8291
createdBy: {
8392
connect: { id: projectMember.id },
8493
},

src/tasks/components/TaskSchemaInput.tsx

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,22 +31,37 @@ export const TaskSchemaInput = ({
3131

3232
const typedPmForms = pmForms as FormWithVersionAndUser[]
3333

34+
// Build a lookup from formVersion.id -> PM username for fast, reliable access
35+
const versionIdToUsername = new Map<number, string>()
36+
typedPmForms.forEach((form) => {
37+
const username =
38+
(form.user?.firstName && form.user?.lastName
39+
? `${form.user.firstName} ${form.user.lastName}`
40+
: form.user?.username) ?? ""
41+
const versions = Array.isArray(form.formVersion)
42+
? form.formVersion
43+
: form.formVersion
44+
? [form.formVersion]
45+
: []
46+
versions.forEach((fv: any) => {
47+
if (fv?.id != null) {
48+
versionIdToUsername.set(fv.id, username)
49+
}
50+
})
51+
})
52+
3453
const schemas = typedPmForms
3554
.filter((form) => form.formVersion)
3655
.flatMap((form) => form.formVersion!)
56+
.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime())
3757

3858
const options = schemas.map((schema) => ({ id: schema.id, label: schema.name }))
3959

4060
// Extra columns for the select table
41-
const versionNumber = schemas.map((schema) => schema.version)
42-
43-
const pmNames = typedPmForms
44-
.filter((form) => form.formVersion) // Keep only forms where formVersion is defined
45-
.map((form) => form.user?.username) // Map to the username
46-
47-
const extraData = versionNumber.map((version, index) => ({
48-
version: version,
49-
username: pmNames[index], // Safely access pmNames[index]
61+
const extraData = schemas.map((schema) => ({
62+
version: schema.version,
63+
username: versionIdToUsername.get(schema.id) ?? "",
64+
date: new Date(schema.createdAt).toLocaleDateString(),
5065
}))
5166

5267
const extraColumns = [
@@ -62,6 +77,12 @@ export const TaskSchemaInput = ({
6277
accessorKey: "username",
6378
cell: (info) => <span>{info.getValue()}</span>,
6479
},
80+
{
81+
id: "date",
82+
header: "Created",
83+
accessorKey: "date",
84+
cell: (info) => <span>{info.getValue()}</span>,
85+
},
6586
]
6687

6788
return (

0 commit comments

Comments
 (0)