Skip to content

Commit 7c5a0b4

Browse files
authored
Merge pull request #1696 from Northeastern-Electric-Racing/1249-create-enum-pipe
#1249 Created displayEnum pipe and applied to settings page
2 parents eee4227 + 7629f42 commit 7c5a0b4

4 files changed

Lines changed: 20 additions & 3 deletions

File tree

src/frontend/src/pages/SettingsPage/Settings.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import { useCurrentUser, useCurrentUserSecureSettings, useSingleUserSettings } f
1616
import ErrorPage from '../ErrorPage';
1717
import UserSecureSettings from './UserSecureSettings/UserSecureSettings';
1818
import { useAllTeams } from '../../hooks/teams.hooks';
19+
import { displayEnum } from '../../utils/pipes';
1920

2021
const NERSwitch = styled((props: SwitchProps) => (
2122
<Switch focusVisibleClassName=".Mui-focusVisible" disableRipple {...props} />
@@ -152,7 +153,7 @@ const Settings: React.FC = () => {
152153
<DetailDisplay label="Email ID" content={String(user.emailId)} />
153154
</Grid>
154155
<Grid item xs={12} sm={6} md={4} lg>
155-
<DetailDisplay label="Role" content={user.role} />
156+
<DetailDisplay label="Role" content={displayEnum(user.role)} />
156157
</Grid>
157158
<Grid item xs={12} sm={6} md={4} lg>
158159
<DetailDisplay

src/frontend/src/pages/SettingsPage/UserSettings/UserSettingsView.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { UserSettings } from 'shared';
88
import ExternalLink from '../../../components/ExternalLink';
99
import DetailDisplay from '../../../components/DetailDisplay';
1010
import { Box } from '@mui/system';
11+
import { displayEnum } from '../../../utils/pipes';
1112

1213
export interface UserSettingsViewProps {
1314
settings: UserSettings;
@@ -26,7 +27,7 @@ const UserSettingsView: React.FC<UserSettingsViewProps> = ({ settings }) => {
2627
return (
2728
<Grid container spacing={2}>
2829
<Grid item xs={12} sm={6}>
29-
<DetailDisplay label="Default Theme" content={settings.defaultTheme} />
30+
<DetailDisplay label="Default Theme" content={displayEnum(settings.defaultTheme)} />
3031
</Grid>
3132
<Grid item xs={12} sm={6}>
3233
<SlackId settings={settings} />

src/frontend/src/tests/pages/SettingsPage/UserSettings/UserSettingsView.test.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import { render, screen } from '../../../test-support/test-utils';
77
import { exampleUserSettingsLight } from '../../../test-support/test-data/user-settings.stub';
88
import UserSettingsView from '../../../../pages/SettingsPage/UserSettings/UserSettingsView';
9+
import { displayEnum } from '../../../../utils/pipes';
910

1011
/**
1112
* Sets up the component under test with the desired values and renders it.
@@ -17,6 +18,6 @@ const renderComponent = () => {
1718
describe('user settings view component', () => {
1819
it('renders default theme', () => {
1920
renderComponent();
20-
expect(screen.getByText(exampleUserSettingsLight.defaultTheme)).toBeInTheDocument();
21+
expect(screen.getByText(displayEnum(exampleUserSettingsLight.defaultTheme))).toBeInTheDocument();
2122
});
2223
});

src/frontend/src/utils/pipes.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,3 +141,17 @@ export const codeAndRefundSourceName = (refundSource: ClubAccount) => {
141141
return `${BUDGET_ACCOUNT_CODE} - ${refundSource}`;
142142
}
143143
};
144+
145+
// Takes in an enum string to capitalize first letter of each word and gets rid of underscore
146+
export const displayEnum = (enumString: string) => {
147+
enumString = enumString.toLowerCase();
148+
while (enumString.indexOf('_') !== -1) {
149+
enumString =
150+
enumString.substring(0, enumString.indexOf('_')) +
151+
' ' +
152+
enumString.charAt(enumString.indexOf('_') + 1).toUpperCase() +
153+
enumString.slice(enumString.indexOf('_') + 2);
154+
}
155+
enumString = enumString.charAt(0).toUpperCase() + enumString.slice(1);
156+
return enumString;
157+
};

0 commit comments

Comments
 (0)