diff --git a/packages/datatrak-web-server/src/routes/TaskMetricsRoute.ts b/packages/datatrak-web-server/src/routes/TaskMetricsRoute.ts index 9b6d466e7f..3e4e958f7b 100644 --- a/packages/datatrak-web-server/src/routes/TaskMetricsRoute.ts +++ b/packages/datatrak-web-server/src/routes/TaskMetricsRoute.ts @@ -26,8 +26,13 @@ export class TaskMetricsRoute extends Route { const unassignedTasks = await models.task.count( { ...baseQuery, - [QUERY_CONJUNCTIONS.RAW]: { - sql: `assignee_id IS NULL`, + status: { + comparator: 'NOT IN', + comparisonValue: [TaskStatus.completed, TaskStatus.cancelled], + }, + assignee_id: { + comparator: 'IS', + comparisonValue: null, }, }, baseJoin, @@ -36,6 +41,10 @@ export class TaskMetricsRoute extends Route { const overdueTasks = await models.task.count( { ...baseQuery, + status: { + comparator: 'NOT IN', + comparisonValue: [TaskStatus.completed, TaskStatus.cancelled], + }, due_date: { comparator: '<=', comparisonValue: new Date().getTime(), @@ -49,8 +58,9 @@ export class TaskMetricsRoute extends Route { { ...baseQuery, status: TaskStatus.completed, - [QUERY_CONJUNCTIONS.RAW]: { - sql: `repeat_schedule IS NULL`, + repeat_schedule: { + comparator: 'IS', + comparisonValue: null, }, }, { @@ -68,7 +78,7 @@ export class TaskMetricsRoute extends Route { return new Date(formattedDate).getTime() <= record.due_date; }); - const onTimeCompletionRate = (completedTasks.length / onTimeCompletedTasks.length) * 100 || 0; + const onTimeCompletionRate = (onTimeCompletedTasks.length / completedTasks.length) * 100 || 0; return { unassignedTasks, diff --git a/packages/datatrak-web/src/components/TaskMetrics/TaskMetric.tsx b/packages/datatrak-web/src/components/TaskMetrics/TaskMetric.tsx index 9612b1c3a0..9b0c5ce415 100644 --- a/packages/datatrak-web/src/components/TaskMetrics/TaskMetric.tsx +++ b/packages/datatrak-web/src/components/TaskMetrics/TaskMetric.tsx @@ -4,10 +4,11 @@ import styled from 'styled-components'; const MetricWrapper = styled.div` display: flex; - border: 1px solid; + border: 1px solid #3f5539; border-radius: 3px; margin-inline: 0.5rem; margin-block-end: auto; + min-width: 28%; ${({ theme }) => theme.breakpoints.down('xs')} { width: inherit; margin-block-start: 0.5rem; @@ -37,7 +38,7 @@ const MetricText = styled.p` font-weight: 500; margin: 0; ${({ theme }) => theme.breakpoints.up('lg')} { - min-width: 12rem; + min-width: 16rem; } `; diff --git a/packages/datatrak-web/src/components/TaskMetrics/TaskMetrics.tsx b/packages/datatrak-web/src/components/TaskMetrics/TaskMetrics.tsx index 25fa30c9d3..24fc074e0d 100644 --- a/packages/datatrak-web/src/components/TaskMetrics/TaskMetrics.tsx +++ b/packages/datatrak-web/src/components/TaskMetrics/TaskMetrics.tsx @@ -5,11 +5,13 @@ import { useCurrentUserContext, useTaskMetrics } from '../../api'; const TaskMetricsContainer = styled.div` margin-block-end: 0; - gap: 0.5rem; + gap: 0.2rem; + flex: 1; ${({ theme }) => theme.breakpoints.up('xs')} { display: flex; flex-direction: row; flex-wrap: wrap; + margin-left: 1rem; } ${({ theme }) => theme.breakpoints.down('xs')} { width: inherit; diff --git a/packages/datatrak-web/src/features/Tasks/TaskPageHeader.tsx b/packages/datatrak-web/src/features/Tasks/TaskPageHeader.tsx index 760badcbf1..8023efdd12 100644 --- a/packages/datatrak-web/src/features/Tasks/TaskPageHeader.tsx +++ b/packages/datatrak-web/src/features/Tasks/TaskPageHeader.tsx @@ -61,6 +61,7 @@ const ContentWrapper = styled.div` align-items: center; justify-content: flex-end; width: 100%; + flex: 1; ${({ theme }) => theme.breakpoints.down('xs')} { padding-inline-start: 1rem; flex-direction: column;