Skip to content

Commit ef74ff5

Browse files
design fix
1 parent dadc9f3 commit ef74ff5

File tree

6 files changed

+69
-107
lines changed

6 files changed

+69
-107
lines changed

src/pages/announcements/add-announcement-form.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,8 +155,8 @@ export default function AddAnnouncementForm({ onAnnouncementCreated }: Readonly<
155155
<TextareaAutosizeElement<FormSchema>
156156
name={MESSAGE}
157157
label={intl.formatMessage({ id: 'announcements.form.message' })}
158-
style={{ height: '100%' }}
159158
rows={5} // why does it do nothing even if the field is set as multiline?!
159+
//style={{ height: '100%' }}
160160
fullWidth
161161
//inputProps={{ maxLength: 200 }}
162162
/>

src/pages/announcements/announcements-page.tsx

Lines changed: 38 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -8,25 +8,16 @@
88
import type { UUID } from 'crypto';
99
import { useCallback, useMemo, useRef, useState } from 'react';
1010
import { FormattedMessage, useIntl } from 'react-intl';
11-
import { Divider, Grid, type SxProps, type Theme, Typography } from '@mui/material';
11+
import { Divider, Grid, Typography } from '@mui/material';
1212
import { useSnackMessage } from '@gridsuite/commons-ui';
13-
import type { ColDef, GetRowIdParams, ValueGetterParams } from 'ag-grid-community';
13+
import type { ColDef, GetRowIdParams, ValueFormatterFunc } from 'ag-grid-community';
1414
import { type GridTableRef } from '../../components/Grid';
1515
import { Announcement, UserAdminSrv } from '../../services';
1616
import AddAnnouncementForm from './add-announcement-form';
17-
import { DateCellRenderer } from './date-cell-renderer';
1817
import AgGrid from '../../components/Grid/AgGrid';
19-
import { CancelButtonCellRenderer } from './cancel-button-cell-renderer';
18+
import CancelCellRenderer from './cancel-cell-renderer';
2019
import { getErrorMessage } from '../../utils/error';
2120

22-
const stylesLayout = {
23-
root: { display: 'flex' },
24-
columnContainer: {
25-
maxHeight: '60px',
26-
paddingLeft: '15px',
27-
},
28-
} as const satisfies Record<string, SxProps<Theme>>;
29-
3021
const defaultColDef: ColDef<Announcement> = {
3122
editable: false,
3223
resizable: true,
@@ -56,19 +47,25 @@ export default function AnnouncementsPage() {
5647
}
5748
}, [snackError]);
5849

59-
const convertSeverity = useCallback(
60-
(severity: string) => {
61-
if (severity === UserAdminSrv.AnnouncementSeverity.INFO) {
62-
return intl.formatMessage({ id: 'announcements.severity.INFO' });
63-
} else if (severity === UserAdminSrv.AnnouncementSeverity.WARN) {
64-
return intl.formatMessage({ id: 'announcements.severity.WARN' });
65-
} else {
66-
return '';
50+
const renderSeverity = useCallback<NonNullable<ValueFormatterFunc<Announcement, string>>>(
51+
(params) => {
52+
switch (params.value) {
53+
case UserAdminSrv.AnnouncementSeverity.INFO:
54+
return intl.formatMessage({ id: 'announcements.severity.INFO' });
55+
case UserAdminSrv.AnnouncementSeverity.WARN:
56+
return intl.formatMessage({ id: 'announcements.severity.WARN' });
57+
default:
58+
return params.value || '';
6759
}
6860
},
6961
[intl]
7062
);
7163

64+
const renderDate = useCallback<NonNullable<ValueFormatterFunc<Announcement, string>>>(
65+
(params) => (params.value ? intl.formatDate(params.value, { dateStyle: 'short', timeStyle: 'short' }) : ''),
66+
[intl]
67+
);
68+
7269
const refreshGrid = useCallback(() => {
7370
gridRef.current?.context?.refresh?.();
7471
}, []);
@@ -82,45 +79,48 @@ export default function AnnouncementsPage() {
8279

8380
const columns = useMemo(
8481
(): ColDef<Announcement>[] => [
85-
{
86-
field: 'message',
87-
cellDataType: 'text',
88-
flex: 3,
89-
headerName: intl.formatMessage({ id: 'announcements.table.message' }),
90-
},
9182
{
9283
field: 'startDate',
93-
cellRenderer: DateCellRenderer,
94-
flex: 3,
84+
valueFormatter: renderDate,
9585
headerName: intl.formatMessage({ id: 'announcements.table.startDate' }),
86+
sort: 'asc',
87+
sortIndex: 1,
88+
initialWidth: 150,
9689
},
9790
{
9891
field: 'endDate',
99-
cellRenderer: DateCellRenderer,
100-
flex: 3,
92+
valueFormatter: renderDate,
10193
headerName: intl.formatMessage({ id: 'announcements.table.endDate' }),
94+
sort: 'asc',
95+
sortIndex: 2,
96+
initialWidth: 150,
10297
},
10398
{
10499
field: 'severity',
105-
cellDataType: 'text',
106-
flex: 2,
100+
valueFormatter: renderSeverity,
107101
headerName: intl.formatMessage({ id: 'announcements.severity' }),
108-
valueGetter: (value: ValueGetterParams) => convertSeverity(value.data.severity),
102+
initialWidth: 150,
103+
},
104+
{
105+
field: 'message',
106+
cellDataType: 'text',
107+
flex: 1,
108+
headerName: intl.formatMessage({ id: 'announcements.table.message' }),
109109
},
110110
{
111111
field: 'id',
112-
cellRenderer: CancelButtonCellRenderer,
112+
cellRenderer: CancelCellRenderer,
113113
cellRendererParams: { onClickHandler: handleDeleteAnnouncement },
114-
flex: 2,
115-
headerName: intl.formatMessage({ id: 'announcements.table.cancel' }),
114+
headerName: '',
115+
initialWidth: 70,
116116
},
117117
],
118-
[intl, convertSeverity, handleDeleteAnnouncement]
118+
[renderDate, intl, handleDeleteAnnouncement, renderSeverity]
119119
);
120120

121121
// Note: using <Stack/> for the columns didn't work
122122
return (
123-
<Grid container spacing={1}>
123+
<Grid container spacing={2} marginLeft={'2px' /*Grid.spacing is in px?*/}>
124124
<Grid item container direction="column" xs={12} sm={6} md={4}>
125125
<Grid item xs="auto">
126126
<Typography variant="subtitle1">

src/pages/announcements/cancel-button-cell-renderer.tsx

Lines changed: 0 additions & 27 deletions
This file was deleted.
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/**
2+
* Copyright (c) 2025, RTE (http://www.rte-france.com)
3+
* This Source Code Form is subject to the terms of the Mozilla Public
4+
* License, v. 2.0. If a copy of the MPL was not distributed with this
5+
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
6+
*/
7+
import type { UUID } from 'crypto';
8+
import { useCallback } from 'react';
9+
import { IconButton, Tooltip } from '@mui/material';
10+
import { Delete } from '@mui/icons-material';
11+
import { FormattedMessage } from 'react-intl';
12+
13+
export type CancelButtonCellRendererProps = { value: UUID; onClickHandler: Function };
14+
15+
export default function CancelCellRenderer({ value, onClickHandler }: Readonly<CancelButtonCellRendererProps>) {
16+
return (
17+
<Tooltip title={<FormattedMessage id="announcements.table.cancel" />}>
18+
<IconButton
19+
disableRipple
20+
color="secondary"
21+
onClick={useCallback(() => {
22+
onClickHandler(value);
23+
}, [onClickHandler, value])}
24+
>
25+
<Delete fontSize="medium" />
26+
</IconButton>
27+
</Tooltip>
28+
);
29+
}

src/pages/announcements/date-cell-renderer.tsx

Lines changed: 0 additions & 40 deletions
This file was deleted.

src/translations/fr.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@
114114
"announcements.table.message": "Message",
115115
"announcements.table.startDate": "Date de début",
116116
"announcements.table.endDate": "Date de fin",
117-
"announcements.table.cancel": "Annulation",
117+
"announcements.table.cancel": "Annulé",
118118
"announcements.severity": "Sévérité",
119119
"announcements.severity.INFO": "Information",
120120
"announcements.severity.WARN": "Avertissement",

0 commit comments

Comments
 (0)