From 333eedfeaa946d17b0dd41d3f1a8f057e2df5864 Mon Sep 17 00:00:00 2001 From: Ole Martin Pettersen Date: Thu, 12 Dec 2024 13:49:46 +0100 Subject: [PATCH] stuff --- client/components/EventList/DurationDisplay/types.tsx | 2 +- client/components/ProjectTag/ProjectTag.tsx | 5 ++++- client/components/ProjectTag/types.tsx | 3 ++- client/graphql-client/fragments/timeentry-fragment.gql | 4 ++++ server/graphql/resolvers/reports/types.ts | 5 ++++- 5 files changed, 15 insertions(+), 4 deletions(-) diff --git a/client/components/EventList/DurationDisplay/types.tsx b/client/components/EventList/DurationDisplay/types.tsx index 5b2bd99a7..d7bc3c7ec 100644 --- a/client/components/EventList/DurationDisplay/types.tsx +++ b/client/components/EventList/DurationDisplay/types.tsx @@ -4,4 +4,4 @@ import { EventObject, TimeEntry } from 'types' export interface IDurationDisplayProps extends HTMLProps { displayFormat?: string event: TimeEntry | EventObject -} +} \ No newline at end of file diff --git a/client/components/ProjectTag/ProjectTag.tsx b/client/components/ProjectTag/ProjectTag.tsx index a76ac06ce..1e236b0ee 100644 --- a/client/components/ProjectTag/ProjectTag.tsx +++ b/client/components/ProjectTag/ProjectTag.tsx @@ -19,6 +19,8 @@ import { useProjectTag } from './useProjectTag' import ReactMarkdown from 'react-markdown' /** + * A tag for a project. The tag can be copied to the clipboard and favorited. + * * @category Reusable Component */ export const ProjectTag: ReusableComponent = (props) => { @@ -26,7 +28,7 @@ export const ProjectTag: ReusableComponent = (props) => { const { hasOutlookCategory, addOutlookCategory, onTagCopied, colorPresets } = useProjectTag(props) return ( - + = (props) => { ProjectTag.displayName = 'ProjectLink' ProjectTag.className = styles.projectTag ProjectTag.defaultProps = { + size: 'medium', outlookCategoriesHref: 'https://outlook.office.com/mail/options/general/categories' } diff --git a/client/components/ProjectTag/types.tsx b/client/components/ProjectTag/types.tsx index 1cb277206..ecb82257e 100644 --- a/client/components/ProjectTag/types.tsx +++ b/client/components/ProjectTag/types.tsx @@ -1,10 +1,11 @@ +import { InteractionTagProps } from '@fluentui/react-tags-preview' import { HTMLProps } from 'react' import { Project } from 'types' /** * Props for the ProjectLink component. */ -export interface IProjectTagProps extends HTMLProps { +export interface IProjectTagProps extends Omit, 'size'>, Pick { /** * The project to link to. */ diff --git a/client/graphql-client/fragments/timeentry-fragment.gql b/client/graphql-client/fragments/timeentry-fragment.gql index 49c8bc1e7..ec5143de5 100644 --- a/client/graphql-client/fragments/timeentry-fragment.gql +++ b/client/graphql-client/fragments/timeentry-fragment.gql @@ -18,4 +18,8 @@ fragment TimeEntryFragment on TimeEntry { resource { id } + role { + name + hourlyRate + } } diff --git a/server/graphql/resolvers/reports/types.ts b/server/graphql/resolvers/reports/types.ts index 2d8a6e8f8..ecd52e522 100644 --- a/server/graphql/resolvers/reports/types.ts +++ b/server/graphql/resolvers/reports/types.ts @@ -1,7 +1,7 @@ /* eslint-disable max-classes-per-file */ import 'reflect-metadata' import { Field, Float, ID, InputType, ObjectType } from 'type-graphql' -import { Customer, Project, User } from '../types' +import { Customer, Project, ProjectRole, User } from '../types' /** * @category GraphQL ObjectType @@ -61,6 +61,9 @@ export class TimeEntry { @Field(() => User) resource: User + + @Field(() => ProjectRole) + role: ProjectRole } /**