Skip to content

Commit 99134f3

Browse files
rename banner to announcement
1 parent 04a66a6 commit 99134f3

File tree

15 files changed

+116
-133
lines changed

15 files changed

+116
-133
lines changed

package-lock.json

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
"dependencies": {
1717
"@emotion/react": "^11.14.0",
1818
"@emotion/styled": "^11.14.0",
19-
"@gridsuite/commons-ui": "0.95.0",
19+
"@gridsuite/commons-ui": "file:../commons-ui/gridsuite-commons-ui-0.95.0.tgz",
2020
"@hookform/resolvers": "^4.0.0",
2121
"@mui/icons-material": "^5.16.14",
2222
"@mui/lab": "5.0.0-alpha.175",

src/components/App/app-top-bar.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,13 +74,13 @@ const tabs = new Map<MainPaths, ReactElement>([
7474
/>,
7575
],
7676
[
77-
MainPaths.banners,
77+
MainPaths.announcements,
7878
<Tab
7979
icon={<NotificationImportant />}
8080
label={<FormattedMessage id="appBar.tabs.warningBanner" />}
81-
href={`/${MainPaths.banners}`}
82-
value={MainPaths.banners}
83-
key={`tab-${MainPaths.banners}`}
81+
href={`/${MainPaths.announcements}`}
82+
value={MainPaths.announcements}
83+
key={`tab-${MainPaths.announcements}`}
8484
iconPosition="start"
8585
LinkComponent={forwardRef<HTMLAnchorElement, AnchorHTMLAttributes<HTMLAnchorElement>>((props, ref) => (
8686
<NavLink ref={ref} to={props.href as To} {...props} />

src/components/Grid/AgGrid.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ type ForwardRef<Props, Ref> = typeof forwardRef<Props, Ref>;
3737
type ForwardRefComponent<Props, Ref> = ReturnType<ForwardRef<Props, Ref>>;
3838

3939
interface AgGridWithRef extends FunctionComponent<CustomAGGridProps<unknown>> {
40-
<TData, TContext extends {}>(
40+
<TData, TContext extends {} = {}>(
4141
props: PropsWithoutRef<CustomAGGridProps<TData>> & RefAttributes<AgGridRef<TData, TContext>>
4242
): ReturnType<ForwardRefComponent<CustomAGGridProps<TData>, AgGridRef<TData, TContext>>>;
4343
}

src/pages/banners/add-announcement-form.tsx renamed to src/pages/announcements/add-announcement-form.tsx

Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -31,25 +31,23 @@ interface AddAnnouncementProps {
3131
onAnnouncementCreated: () => void;
3232
}
3333

34-
const AddAnnouncementForm: FunctionComponent<AddAnnouncementProps> = ({ onAnnouncementCreated }) => {
34+
export default function AddAnnouncementForm({ onAnnouncementCreated }: Readonly<AddAnnouncementProps>) {
3535
const intl = useIntl();
3636
const [languageLocal] = useParameterState(PARAM_LANGUAGE);
3737
const { snackError } = useSnackMessage();
3838

3939
const formSchema = yup
4040
.object()
4141
.shape({
42-
[MESSAGE]: yup.string().trim().required(),
43-
[START_DATE]: yup.string().required(),
44-
[END_DATE]: yup.string().required(),
45-
[SEVERITY]: yup.string().required(),
42+
[MESSAGE]: yup.string().trim().required(), // TODO not empty
43+
[START_DATE]: yup.string().required(), //TODO date
44+
[END_DATE]: yup.string().required(), // TODO date
45+
[SEVERITY]: yup.string().required(), // TODO enum
4646
})
4747
.required();
48-
4948
const formMethods = useForm({
5049
resolver: yupResolver(formSchema),
5150
});
52-
5351
const { register, setValue, handleSubmit, formState } = formMethods;
5452

5553
const onSubmit = useCallback(
@@ -69,7 +67,7 @@ const AddAnnouncementForm: FunctionComponent<AddAnnouncementProps> = ({ onAnnoun
6967
let errorMessage = getErrorMessage(error) ?? '';
7068
if (!handleAnnouncementCreationErrors(errorMessage, snackError)) {
7169
snackError({
72-
headerId: 'errCreateAnnouncement',
70+
headerId: 'announcements.form.errCreateAnnouncement',
7371
messageTxt: errorMessage,
7472
});
7573
}
@@ -85,7 +83,7 @@ const AddAnnouncementForm: FunctionComponent<AddAnnouncementProps> = ({ onAnnoun
8583
<TextField
8684
{...register('message')}
8785
id="message-input"
88-
label={intl.formatMessage({ id: 'banners.form.message' })}
86+
label={intl.formatMessage({ id: 'announcements.form.message' })}
8987
multiline
9088
rows={4}
9189
fullWidth
@@ -97,7 +95,7 @@ const AddAnnouncementForm: FunctionComponent<AddAnnouncementProps> = ({ onAnnoun
9795
<DateTimePicker
9896
{...register('startDate')}
9997
name={START_DATE}
100-
label={intl.formatMessage({ id: 'banners.table.startDate' })}
98+
label={intl.formatMessage({ id: 'announcements.table.startDate' })}
10199
onChange={(newValue) => setValue('startDate', newValue?.toISOString() ?? '')}
102100
/>
103101
</LocalizationProvider>
@@ -107,34 +105,32 @@ const AddAnnouncementForm: FunctionComponent<AddAnnouncementProps> = ({ onAnnoun
107105
<DateTimePicker
108106
{...register('endDate')}
109107
name={END_DATE}
110-
label={intl.formatMessage({ id: 'banners.table.endDate' })}
108+
label={intl.formatMessage({ id: 'announcements.table.endDate' })}
111109
onChange={(newValue) => setValue('endDate', newValue?.toISOString() ?? '')}
112110
/>
113111
</LocalizationProvider>
114112
</Grid>
115-
116113
<Grid item xs={2}>
117114
<FormControl fullWidth>
118115
<InputLabel id="severity-input-label">
119-
<FormattedMessage id="banners.table.severity" />
116+
<FormattedMessage id="announcements.severity" />
120117
</InputLabel>
121118
<Select
122119
{...register('severity')}
123120
name={SEVERITY}
124-
label={intl.formatMessage({ id: 'banners.table.severity' })}
121+
label={intl.formatMessage({ id: 'announcements.severity' })}
125122
fullWidth={true}
126-
defaultValue={''}
123+
defaultValue={''} // TODO default info
127124
>
128125
<MenuItem value={UserAdminSrv.AnnouncementSeverity.INFO}>
129-
{intl.formatMessage({ id: 'banners.table.info' })}
126+
{intl.formatMessage({ id: 'announcements.severity.INFO' })}
130127
</MenuItem>
131128
<MenuItem value={UserAdminSrv.AnnouncementSeverity.WARN}>
132-
{intl.formatMessage({ id: 'banners.table.warn' })}
129+
{intl.formatMessage({ id: 'announcements.severity.WARN' })}
133130
</MenuItem>
134131
</Select>
135132
</FormControl>
136133
</Grid>
137-
138134
<Grid item xs={2}>
139135
<SubmitButton
140136
variant="outlined"
@@ -146,6 +142,4 @@ const AddAnnouncementForm: FunctionComponent<AddAnnouncementProps> = ({ onAnnoun
146142
</Grid>
147143
</CustomFormProvider>
148144
);
149-
};
150-
151-
export default AddAnnouncementForm;
145+
}

src/pages/banners/announcements-page.tsx renamed to src/pages/announcements/announcements-page.tsx

Lines changed: 50 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,26 @@
55
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
66
*/
77

8-
import { FunctionComponent, useCallback, useMemo, useRef, useState } from 'react';
8+
import type { UUID } from 'crypto';
9+
import { useCallback, useMemo, useRef, useState } from 'react';
910
import { FormattedMessage, useIntl } from 'react-intl';
10-
import { Grid } from '@mui/material';
11-
import { GridTableRef } from '../../components/Grid';
11+
import { Grid, type SxProps, type Theme } from '@mui/material';
12+
import { useSnackMessage } from '@gridsuite/commons-ui';
13+
import type { ColDef, GetRowIdParams, ValueGetterParams } from 'ag-grid-community';
14+
import { type GridTableRef } from '../../components/Grid';
1215
import { Announcement, UserAdminSrv } from '../../services';
13-
import { ColDef, GetRowIdParams, ValueGetterParams } from 'ag-grid-community';
1416
import AddAnnouncementForm from './add-announcement-form';
1517
import { DateCellRenderer } from './date-cell-renderer';
1618
import AgGrid from '../../components/Grid/AgGrid';
17-
import { useSnackMessage } from '@gridsuite/commons-ui';
1819
import { CancelButtonCellRenderer } from './cancel-button-cell-renderer';
19-
import { UUID } from 'crypto';
2020

2121
const stylesLayout = {
22+
root: { display: 'flex' },
2223
columnContainer: {
2324
maxHeight: '60px',
2425
paddingLeft: '15px',
2526
},
26-
};
27+
} as const satisfies Record<string, SxProps<Theme>>;
2728

2829
const defaultColDef: ColDef<Announcement> = {
2930
editable: false,
@@ -34,11 +35,11 @@ const defaultColDef: ColDef<Announcement> = {
3435
sortable: true,
3536
};
3637

37-
function getRowId(params: GetRowIdParams<Announcement>): string {
38+
function getRowId(params: GetRowIdParams<Announcement>) {
3839
return params.data.id;
3940
}
4041

41-
const AnnouncementsPage: FunctionComponent = () => {
42+
export default function AnnouncementsPage() {
4243
const intl = useIntl();
4344
const gridRef = useRef<GridTableRef<Announcement>>(null);
4445

@@ -61,9 +62,9 @@ const AnnouncementsPage: FunctionComponent = () => {
6162
const convertSeverity = useCallback(
6263
(severity: string) => {
6364
if (severity === UserAdminSrv.AnnouncementSeverity.INFO) {
64-
return intl.formatMessage({ id: 'banners.table.info' });
65+
return intl.formatMessage({ id: 'announcements.severity.INFO' });
6566
} else if (severity === UserAdminSrv.AnnouncementSeverity.WARN) {
66-
return intl.formatMessage({ id: 'banners.table.warn' });
67+
return intl.formatMessage({ id: 'announcements.severity.WARN' });
6768
} else {
6869
return '';
6970
}
@@ -72,14 +73,12 @@ const AnnouncementsPage: FunctionComponent = () => {
7273
);
7374

7475
const refreshGrid = useCallback(() => {
75-
gridRef.current?.context?.refresh();
76+
gridRef.current?.context?.refresh?.();
7677
}, []);
7778

7879
const handleDeleteAnnouncement = useCallback(
7980
(announcementId: UUID) => {
80-
UserAdminSrv.deleteAnnouncement(announcementId).then(() => {
81-
refreshGrid();
82-
});
81+
UserAdminSrv.deleteAnnouncement(announcementId).then(refreshGrid);
8382
},
8483
[refreshGrid]
8584
);
@@ -91,28 +90,28 @@ const AnnouncementsPage: FunctionComponent = () => {
9190
cellDataType: 'text',
9291
flex: 3,
9392
lockVisible: true,
94-
headerName: intl.formatMessage({ id: 'banners.table.message' }),
93+
headerName: intl.formatMessage({ id: 'announcements.table.message' }),
9594
},
9695
{
9796
field: 'startDate',
9897
cellRenderer: DateCellRenderer,
9998
flex: 3,
10099
lockVisible: true,
101-
headerName: intl.formatMessage({ id: 'banners.table.startDate' }),
100+
headerName: intl.formatMessage({ id: 'announcements.table.startDate' }),
102101
},
103102
{
104103
field: 'endDate',
105104
cellRenderer: DateCellRenderer,
106105
flex: 3,
107106
lockVisible: true,
108-
headerName: intl.formatMessage({ id: 'banners.table.endDate' }),
107+
headerName: intl.formatMessage({ id: 'announcements.table.endDate' }),
109108
},
110109
{
111110
field: 'severity',
112111
cellDataType: 'text',
113112
flex: 2,
114113
lockVisible: true,
115-
headerName: intl.formatMessage({ id: 'banners.table.severity' }),
114+
headerName: intl.formatMessage({ id: 'announcements.severity' }),
116115
valueGetter: (value: ValueGetterParams) => convertSeverity(value.data.severity),
117116
},
118117
{
@@ -123,55 +122,47 @@ const AnnouncementsPage: FunctionComponent = () => {
123122
},
124123
flex: 2,
125124
lockVisible: true,
126-
headerName: intl.formatMessage({ id: 'banners.table.cancel' }),
125+
headerName: intl.formatMessage({ id: 'announcements.table.cancel' }),
127126
},
128127
],
129128
[intl, convertSeverity, handleDeleteAnnouncement]
130129
);
131130

132131
return (
133-
<>
134-
<Grid container direction="column" sx={{ display: 'flex' }}>
135-
<Grid container item xs={3} direction="column">
136-
<Grid item xs sx={stylesLayout.columnContainer}>
137-
<h3>
138-
<FormattedMessage id="banners.programNewMessage"></FormattedMessage>
139-
</h3>
140-
</Grid>
141-
<Grid item xs paddingX={'15px'}>
142-
<AddAnnouncementForm onAnnouncementCreated={refreshGrid} />
143-
</Grid>
132+
<Grid container direction="column" sx={stylesLayout.root}>
133+
<Grid container item xs={3} direction="column">
134+
<Grid item xs sx={stylesLayout.columnContainer}>
135+
<h3>
136+
<FormattedMessage id="announcements.programNewMessage"></FormattedMessage>
137+
</h3>
144138
</Grid>
139+
<Grid item xs paddingX="15px">
140+
<AddAnnouncementForm onAnnouncementCreated={refreshGrid} />
141+
</Grid>
142+
</Grid>
145143

146-
<Grid container item xs direction="column" marginBottom={'15px'}>
147-
<Grid item sx={stylesLayout.columnContainer}>
148-
<h3>
149-
<FormattedMessage id="banners.programmedMessage"></FormattedMessage>
150-
</h3>
151-
</Grid>
152-
<Grid container item xs paddingX={'15px'}>
153-
<Grid item xs>
154-
<AgGrid<Announcement, {}>
155-
ref={gridRef}
156-
rowData={data}
157-
alwaysShowVerticalScroll={true}
158-
onGridReady={loadDataAndSave}
159-
columnDefs={columns}
160-
defaultColDef={defaultColDef}
161-
gridId="table-banners"
162-
getRowId={getRowId}
163-
context={useMemo(
164-
() => ({
165-
refresh: loadDataAndSave,
166-
}),
167-
[loadDataAndSave]
168-
)}
169-
/>
170-
</Grid>
144+
<Grid container item xs direction="column" marginBottom="15px">
145+
<Grid item sx={stylesLayout.columnContainer}>
146+
<h3>
147+
<FormattedMessage id="announcements.programmedMessage" />
148+
</h3>
149+
</Grid>
150+
<Grid container item xs paddingX="15px">
151+
<Grid item xs>
152+
<AgGrid<Announcement>
153+
ref={gridRef}
154+
rowData={data}
155+
alwaysShowVerticalScroll
156+
onGridReady={loadDataAndSave}
157+
columnDefs={columns}
158+
defaultColDef={defaultColDef}
159+
gridId="table-banners"
160+
getRowId={getRowId}
161+
context={useMemo(() => ({ refresh: loadDataAndSave }), [loadDataAndSave])}
162+
/>
171163
</Grid>
172164
</Grid>
173165
</Grid>
174-
</>
166+
</Grid>
175167
);
176-
};
177-
export default AnnouncementsPage;
168+
}
File renamed without changes.
File renamed without changes.

src/pages/banners/index.ts renamed to src/pages/announcements/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@
55
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
66
*/
77

8-
export { default as Banners } from './announcements-page';
8+
export { default as Announcements } from './announcements-page';

src/pages/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@
88
export * from './users';
99
export * from './profiles';
1010
export * from './groups';
11-
export * from './banners';
11+
export * from './announcements';

0 commit comments

Comments
 (0)