Skip to content

Commit 5b54aba

Browse files
committed
clean up the status
1 parent 0583032 commit 5b54aba

File tree

4 files changed

+66
-29
lines changed

4 files changed

+66
-29
lines changed

src/common/types/roomRequest.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ export const spaceTypeOptions = [
5252

5353
export enum RoomRequestStatus {
5454
CREATED = "created",
55+
MORE_INFORMATION_NEEDED = "more_information_needed",
5556
REJECTED_BY_ACM = "rejected_by_acm",
5657
SUBMITTED = "submitted",
5758
APPROVED = "approved",

src/ui/pages/roomRequest/NewRoomRequest.tsx

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -131,13 +131,13 @@ const YesNoField: React.FC<YesNoFieldProps> = ({
131131
interface NewRoomRequestProps {
132132
createRoomRequest?: (payload: RoomRequestFormValues) => Promise<RoomRequestPostResponse>;
133133
initialValues?: RoomRequestFormValues;
134-
disabled?: boolean;
134+
viewOnly?: boolean;
135135
}
136136

137137
const NewRoomRequest: React.FC<NewRoomRequestProps> = ({
138138
createRoomRequest,
139139
initialValues,
140-
disabled,
140+
viewOnly,
141141
}) => {
142142
const [active, setActive] = useState(0);
143143
const [isSubmitting, setIsSubmitting] = useState(false);
@@ -147,7 +147,7 @@ const NewRoomRequest: React.FC<NewRoomRequestProps> = ({
147147
const semesterValues = semesterOptions.map((x) => x.value);
148148

149149
const form = useForm<RoomRequestFormValues>({
150-
enhanceGetInputProps: () => ({ readOnly: disabled }),
150+
enhanceGetInputProps: () => ({ readOnly: viewOnly }),
151151
initialValues: initialValues || {
152152
host: '',
153153
title: '',
@@ -171,7 +171,7 @@ const NewRoomRequest: React.FC<NewRoomRequestProps> = ({
171171
},
172172

173173
validate: (values) => {
174-
if (disabled) {
174+
if (viewOnly) {
175175
return {};
176176
}
177177
if (active === 0) {
@@ -279,7 +279,7 @@ const NewRoomRequest: React.FC<NewRoomRequestProps> = ({
279279
}, [form.values.locationType]);
280280

281281
const handleSubmit = async () => {
282-
if (disabled) {
282+
if (viewOnly) {
283283
return;
284284
}
285285
const apiFormValues = { ...form.values };
@@ -563,7 +563,7 @@ const NewRoomRequest: React.FC<NewRoomRequestProps> = ({
563563
{...form.getInputProps('comments')}
564564
/>
565565
</Stepper.Step>
566-
{!disabled && (
566+
{!viewOnly && (
567567
<Stepper.Completed>
568568
Click the Submit button to submit the following room request:
569569
<Code block mt="xl">
@@ -579,10 +579,10 @@ const NewRoomRequest: React.FC<NewRoomRequestProps> = ({
579579
</Button>
580580
)}
581581
{active !== numSteps &&
582-
(disabled && active === numSteps - 1 ? null : (
582+
(viewOnly && active === numSteps - 1 ? null : (
583583
<Button onClick={nextStep}>{active === numSteps - 1 ? 'Review' : 'Next'}</Button>
584584
))}
585-
{active === numSteps && !disabled && (
585+
{active === numSteps && !viewOnly && (
586586
<Button onClick={handleSubmit} color="green">
587587
{isSubmitting ? (
588588
<>

src/ui/pages/roomRequest/ViewRoomRequest.page.tsx

Lines changed: 33 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import React, { useEffect, useState } from 'react';
2-
import { Container, Title, Tabs, GridCol, Grid, Timeline, Text } from '@mantine/core';
2+
import { Container, Title, Tabs, GridCol, Grid, Timeline, Text, Tooltip } from '@mantine/core';
33
import { AuthGuard } from '@ui/components/AuthGuard';
44
import { AppRoles } from '@common/roles';
55
import { useApi } from '@ui/util/api';
@@ -14,6 +14,7 @@ import { useParams } from 'react-router-dom';
1414
import { IconGitBranch } from '@tabler/icons-react';
1515
import { capitalizeFirstLetter } from '../events/ManageEvent.page';
1616
import { formatStatus, getStatusIcon } from './roomRequestUtils';
17+
import moment from 'moment-timezone';
1718

1819
export const ViewRoomRequest: React.FC = () => {
1920
const { semesterId, requestId } = useParams();
@@ -39,27 +40,40 @@ export const ViewRoomRequest: React.FC = () => {
3940
</Container>
4041
<Grid ml={'xl'}>
4142
<Grid.Col span={8}>
42-
{data && <NewRoomRequest disabled initialValues={data?.data} />}
43+
{data && <NewRoomRequest viewOnly initialValues={data?.data} />}
4344
</Grid.Col>
4445
<Grid.Col span={3} ml={'lg'}>
4546
{data && (
46-
<Timeline active={data.updates.length} bulletSize={28} lineWidth={4}>
47-
{data.updates.map((x) => (
48-
<Timeline.Item bullet={getStatusIcon(x.status)} title={formatStatus(x.status)}>
49-
{x.createdBy && <Text size="xs">{x.createdBy}</Text>}
50-
{x.notes && (
51-
<Text c="dimmed" size="sm">
52-
{x.notes}
53-
</Text>
54-
)}
55-
{x.createdAt && (
56-
<Text c="dimmed" size="sm">
57-
{x.createdAt}
58-
</Text>
59-
)}
60-
</Timeline.Item>
61-
))}
62-
</Timeline>
47+
<>
48+
<Timeline active={data.updates.length} bulletSize={28} lineWidth={4}>
49+
{data.updates.map((x) => (
50+
<Timeline.Item bullet={getStatusIcon(x.status)} title={formatStatus(x.status)}>
51+
{x.createdBy && <Text size="xs">{x.createdBy}</Text>}
52+
{x.notes && (
53+
<Text c="dimmed" size="sm">
54+
{x.notes}
55+
</Text>
56+
)}
57+
{x.createdAt && (
58+
<Tooltip
59+
label={moment
60+
.tz(x.createdAt, 'America/Chicago')
61+
.format('MMMM Do YYYY, h:mm:ss a')}
62+
position="top"
63+
withArrow
64+
>
65+
<Text c="dimmed" size="xs">
66+
{moment.tz(x.createdAt, 'America/Chicago').fromNow()}
67+
</Text>
68+
</Tooltip>
69+
)}
70+
</Timeline.Item>
71+
))}
72+
</Timeline>
73+
<Text mt="md" size="sm" c="dimmed">
74+
All times in the America/Chicago timezone.
75+
</Text>
76+
</>
6377
)}
6478
<AuthGuard
6579
resourceDef={{
Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,33 @@
11
import { RoomRequestStatus } from '@common/types/roomRequest';
22
import { capitalizeFirstLetter } from '../events/ManageEvent.page';
3-
import { IconGitBranch } from '@tabler/icons-react';
3+
import {
4+
IconCircleCheck,
5+
IconCircleDashedCheck,
6+
IconExclamationCircle,
7+
IconProgressCheck,
8+
IconQuestionMark,
9+
} from '@tabler/icons-react';
410

511
export const getStatusIcon = (status: RoomRequestStatus) => {
6-
return <IconGitBranch size={12} />;
12+
const commonProps = { size: 20 };
13+
switch (status) {
14+
case RoomRequestStatus.APPROVED:
15+
return <IconCircleCheck {...commonProps} />;
16+
case RoomRequestStatus.REJECTED_BY_UIUC:
17+
case RoomRequestStatus.REJECTED_BY_ACM:
18+
return <IconExclamationCircle {...commonProps} />;
19+
case RoomRequestStatus.SUBMITTED:
20+
return <IconProgressCheck {...commonProps} />;
21+
case RoomRequestStatus.MORE_INFORMATION_NEEDED:
22+
return <IconQuestionMark {...commonProps} />;
23+
default:
24+
return <IconCircleDashedCheck {...commonProps} />;
25+
}
726
};
827

928
export const formatStatus = (status: RoomRequestStatus) => {
29+
if (status === RoomRequestStatus.SUBMITTED) {
30+
return 'Submitted to UIUC';
31+
}
1032
return capitalizeFirstLetter(status).replaceAll('_', ' ').replaceAll('uiuc', 'UIUC');
1133
};

0 commit comments

Comments
 (0)