mirror of
https://github.com/donpat1to/Schichtenplaner.git
synced 2025-12-01 15:05:45 +01:00
user creation works; saving employee availibilities works
This commit is contained in:
@@ -55,10 +55,20 @@ const EmployeeList: React.FC<EmployeeListProps> = ({
|
||||
};
|
||||
|
||||
// Using shared configuration for consistent styling
|
||||
const getEmployeeTypeBadge = (type: 'manager' | 'trainee' | 'experienced') => {
|
||||
const config = EMPLOYEE_TYPE_CONFIG.find(t => t.value === type);
|
||||
return config || EMPLOYEE_TYPE_CONFIG[0];
|
||||
};
|
||||
type EmployeeType = typeof EMPLOYEE_TYPE_CONFIG[number]['value'];
|
||||
|
||||
const getEmployeeTypeBadge = (type: EmployeeType) => {
|
||||
const config = EMPLOYEE_TYPE_CONFIG.find(t => t.value === type)!;
|
||||
|
||||
const bgColor =
|
||||
type === 'manager'
|
||||
? '#fadbd8'
|
||||
: type === 'trainee'
|
||||
? '#d5f4e6'
|
||||
: '#d6eaf8'; // experienced
|
||||
|
||||
return { text: config.label, color: config.color, bgColor };
|
||||
};
|
||||
|
||||
const getStatusBadge = (isActive: boolean) => {
|
||||
return isActive
|
||||
@@ -72,6 +82,21 @@ const EmployeeList: React.FC<EmployeeListProps> = ({
|
||||
: { text: '❌ Betreuung', color: '#e74c3c', bgColor: '#fadbd8' };
|
||||
};
|
||||
|
||||
type Role = typeof ROLE_CONFIG[number]['value'];
|
||||
|
||||
const getRoleBadge = (role: Role) => {
|
||||
const { label, color } = ROLE_CONFIG.find(r => r.value === role)!;
|
||||
|
||||
const bgColor =
|
||||
role === 'user'
|
||||
? '#d5f4e6'
|
||||
: role === 'maintenance'
|
||||
? '#d6eaf8'
|
||||
: '#fadbd8'; // admin
|
||||
|
||||
return { text: label, color, bgColor };
|
||||
};
|
||||
|
||||
if (employees.length === 0) {
|
||||
return (
|
||||
<div style={{
|
||||
@@ -161,7 +186,7 @@ const EmployeeList: React.FC<EmployeeListProps> = ({
|
||||
alignItems: 'center'
|
||||
}}>
|
||||
<div>Name & E-Mail</div>
|
||||
<div>Typ</div>
|
||||
<div style={{ textAlign: 'center' }}>Typ</div>
|
||||
<div style={{ textAlign: 'center' }}>Eigenständigkeit</div>
|
||||
<div style={{ textAlign: 'center' }}>Rolle</div>
|
||||
<div style={{ textAlign: 'center' }}>Status</div>
|
||||
@@ -172,7 +197,7 @@ const EmployeeList: React.FC<EmployeeListProps> = ({
|
||||
{filteredEmployees.map(employee => {
|
||||
const employeeType = getEmployeeTypeBadge(employee.employeeType);
|
||||
const independence = getIndependenceBadge(employee.canWorkAlone);
|
||||
const roleColor = '#d5f4e6'; // Default color
|
||||
const roleColor = getRoleBadge(employee.role);
|
||||
const status = getStatusBadge(employee.isActive);
|
||||
const canEdit = canEditEmployee(employee);
|
||||
const canDelete = canDeleteEmployee(employee);
|
||||
@@ -213,7 +238,7 @@ const EmployeeList: React.FC<EmployeeListProps> = ({
|
||||
<div style={{ textAlign: 'center' }}>
|
||||
<span
|
||||
style={{
|
||||
backgroundColor: employeeType.color,
|
||||
backgroundColor: employeeType.bgColor,
|
||||
color: employeeType.color,
|
||||
padding: '6px 12px',
|
||||
borderRadius: '15px',
|
||||
@@ -222,7 +247,7 @@ const EmployeeList: React.FC<EmployeeListProps> = ({
|
||||
display: 'inline-block'
|
||||
}}
|
||||
>
|
||||
{employeeType.label}
|
||||
{employeeType.text}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@@ -247,8 +272,8 @@ const EmployeeList: React.FC<EmployeeListProps> = ({
|
||||
<div style={{ textAlign: 'center' }}>
|
||||
<span
|
||||
style={{
|
||||
backgroundColor: roleColor,
|
||||
color: 'white',
|
||||
backgroundColor: roleColor.bgColor,
|
||||
color: roleColor.color,
|
||||
padding: '6px 12px',
|
||||
borderRadius: '15px',
|
||||
fontSize: '12px',
|
||||
|
||||
Reference in New Issue
Block a user