diff --git a/typescript/frontend-marios2/src/content/dashboards/Users/FlatUsersView.tsx b/typescript/frontend-marios2/src/content/dashboards/Users/FlatUsersView.tsx index e927a4fd4..762b53174 100644 --- a/typescript/frontend-marios2/src/content/dashboards/Users/FlatUsersView.tsx +++ b/typescript/frontend-marios2/src/content/dashboards/Users/FlatUsersView.tsx @@ -14,9 +14,17 @@ import { } from '@mui/material'; import { FormattedMessage } from 'react-intl'; import { useSearchParams } from 'react-router-dom'; -import { InnovEnergyUser } from 'src/interfaces/UserTypes'; +import { InnovEnergyUser, UserType } from 'src/interfaces/UserTypes'; import User from './User'; +// Translation keys for each UserType, indexed by the enum value +// (client=0, partner=1, admin=2). +export const USER_ROLE_LABEL_IDS: Record = { + [UserType.client]: 'roleClient', + [UserType.partner]: 'rolePartner', + [UserType.admin]: 'roleAdmin' +}; + interface FlatUsersViewProps { users: InnovEnergyUser[]; fetchDataAgain: () => void; @@ -79,6 +87,7 @@ const FlatUsersView = (props: FlatUsersViewProps) => { + @@ -115,6 +124,21 @@ const FlatUsersView = (props: FlatUsersViewProps) => { {user.name} + + + + + ('all'); const { allUsers, fetchAllUsers } = useContext(AccessContext); const [filteredData, setFilteredData] = useState(allUsers); const [openModal, setOpenModal] = useState(false); @@ -37,11 +40,13 @@ function UsersSearch() { }; useEffect(() => { - const filtered = allUsers.filter((item) => - item.name.toLowerCase().includes(searchTerm.toLowerCase()) + const filtered = allUsers.filter( + (item) => + item.name.toLowerCase().includes(searchTerm.toLowerCase()) && + (roleFilter === 'all' || item.userType === roleFilter) ); setFilteredData(filtered); - }, [searchTerm, allUsers]); + }, [searchTerm, roleFilter, allUsers]); const handleSubmit = () => { setOpenModal(true); @@ -162,6 +167,36 @@ function UsersSearch() { /> + + + + setRoleFilter( + e.target.value === 'all' + ? 'all' + : (Number(e.target.value) as UserType) + ) + } + fullWidth + > + + {intl.formatMessage({ id: 'allRoles' })} + + + {intl.formatMessage({ id: 'roleClient' })} + + + {intl.formatMessage({ id: 'rolePartner' })} + + + {intl.formatMessage({ id: 'roleAdmin' })} + + + + diff --git a/typescript/frontend-marios2/src/lang/de.json b/typescript/frontend-marios2/src/lang/de.json index 7f91d5bb0..924cd8f7a 100644 --- a/typescript/frontend-marios2/src/lang/de.json +++ b/typescript/frontend-marios2/src/lang/de.json @@ -532,6 +532,11 @@ "stopTimeMustBeLater": "Die Stoppzeit muss nach der Startzeit liegen", "signIn": "Anmelden", "username": "Benutzername", + "role": "Rolle", + "allRoles": "Alle Rollen", + "roleClient": "Kunde", + "rolePartner": "Partner", + "roleAdmin": "Admin", "password": "Passwort", "rememberMe": "Angemeldet bleiben", "login": "Anmelden", diff --git a/typescript/frontend-marios2/src/lang/en.json b/typescript/frontend-marios2/src/lang/en.json index 39a30399f..56b5293cd 100644 --- a/typescript/frontend-marios2/src/lang/en.json +++ b/typescript/frontend-marios2/src/lang/en.json @@ -280,6 +280,11 @@ "stopTimeMustBeLater": "Stop time must be later than start time", "signIn": "Sign in", "username": "Username", + "role": "Role", + "allRoles": "All roles", + "roleClient": "Client", + "rolePartner": "Partner", + "roleAdmin": "Admin", "password": "Password", "rememberMe": "Remember me", "login": "Login", diff --git a/typescript/frontend-marios2/src/lang/fr.json b/typescript/frontend-marios2/src/lang/fr.json index 8530516b4..c88b4e0e2 100644 --- a/typescript/frontend-marios2/src/lang/fr.json +++ b/typescript/frontend-marios2/src/lang/fr.json @@ -532,6 +532,11 @@ "stopTimeMustBeLater": "L'heure d'arrêt doit être postérieure à l'heure de début", "signIn": "Se connecter", "username": "Nom d'utilisateur", + "role": "Rôle", + "allRoles": "Tous les rôles", + "roleClient": "Client", + "rolePartner": "Partenaire", + "roleAdmin": "Admin", "password": "Mot de passe", "rememberMe": "Se souvenir de moi", "login": "Connexion", diff --git a/typescript/frontend-marios2/src/lang/it.json b/typescript/frontend-marios2/src/lang/it.json index 6e63e18a9..c064c099e 100644 --- a/typescript/frontend-marios2/src/lang/it.json +++ b/typescript/frontend-marios2/src/lang/it.json @@ -532,6 +532,11 @@ "stopTimeMustBeLater": "L'ora di fine deve essere successiva all'ora di inizio", "signIn": "Accedi", "username": "Nome utente", + "role": "Ruolo", + "allRoles": "Tutti i ruoli", + "roleClient": "Cliente", + "rolePartner": "Partner", + "roleAdmin": "Admin", "password": "Password", "rememberMe": "Ricordami", "login": "Accedi",