Compare commits
6 Commits
005fdb3490
...
84a5be52f8
Author | SHA1 | Date | |
---|---|---|---|
84a5be52f8 | |||
b39df5f665 | |||
1da587d010 | |||
7d17422681 | |||
d67121c150 | |||
af5519fd60 |
@ -17,12 +17,11 @@ import eventBus from "../../services/eventBus";
|
|||||||
import {
|
import {
|
||||||
useEmployeesByProjectAllocated,
|
useEmployeesByProjectAllocated,
|
||||||
useManageProjectAllocation,
|
useManageProjectAllocation,
|
||||||
|
useProjectAssignedServices,
|
||||||
} from "../../hooks/useProjects";
|
} from "../../hooks/useProjects";
|
||||||
import { useSelectedProject } from "../../slices/apiDataManager";
|
import { useSelectedProject } from "../../slices/apiDataManager";
|
||||||
|
|
||||||
const Teams = () => {
|
const Teams = () => {
|
||||||
// const {projectId} = useParams()
|
|
||||||
// const projectId = useSelector((store)=>store.localVariables.projectId)
|
|
||||||
const projectId = useSelectedProject();
|
const projectId = useSelectedProject();
|
||||||
const dispatch = useDispatch();
|
const dispatch = useDispatch();
|
||||||
|
|
||||||
@ -37,6 +36,14 @@ const Teams = () => {
|
|||||||
const [activeEmployee, setActiveEmployee] = useState(true);
|
const [activeEmployee, setActiveEmployee] = useState(true);
|
||||||
const [deleteEmployee, setDeleteEmplyee] = useState(null);
|
const [deleteEmployee, setDeleteEmplyee] = useState(null);
|
||||||
const [searchTerm, setSearchTerm] = useState(""); // State for search term
|
const [searchTerm, setSearchTerm] = useState(""); // State for search term
|
||||||
|
const { data: assignedServices, isLoading: servicesLoading } = useProjectAssignedServices(projectId);
|
||||||
|
const handleToggleActive = e => setActiveEmployee(e.target.checked);
|
||||||
|
|
||||||
|
const [selectedService, setSelectedService] = useState("");
|
||||||
|
|
||||||
|
const handleServiceChange = (e) => {
|
||||||
|
setSelectedService(e.target.value);
|
||||||
|
};
|
||||||
|
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
|
|
||||||
@ -136,7 +143,6 @@ const Teams = () => {
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (projectEmployees) {
|
if (projectEmployees) {
|
||||||
setEmployees(projectEmployees);
|
setEmployees(projectEmployees);
|
||||||
//setFilteredEmployees(projectEmployees?.filter((emp) => emp.isActive));
|
|
||||||
const filtered = projectEmployees.filter((emp) => emp.isActive);
|
const filtered = projectEmployees.filter((emp) => emp.isActive);
|
||||||
setFilteredEmployees(filtered);
|
setFilteredEmployees(filtered);
|
||||||
}
|
}
|
||||||
@ -179,13 +185,6 @@ const Teams = () => {
|
|||||||
|
|
||||||
const handleFilterEmployee = (e) => {
|
const handleFilterEmployee = (e) => {
|
||||||
const filterValue = e.target.value;
|
const filterValue = e.target.value;
|
||||||
// if (filterValue === "true") {
|
|
||||||
// setActiveEmployee(true);
|
|
||||||
// setFilteredEmployees(employees.filter((emp) => emp.isActive));
|
|
||||||
// } else {
|
|
||||||
// setFilteredEmployees(employees.filter((emp) => !emp.isActive));
|
|
||||||
// setActiveEmployee(false);
|
|
||||||
// }
|
|
||||||
setActiveEmployee(filterValue === "true");
|
setActiveEmployee(filterValue === "true");
|
||||||
setSearchTerm("");
|
setSearchTerm("");
|
||||||
};
|
};
|
||||||
@ -264,6 +263,66 @@ const Teams = () => {
|
|||||||
<div className="card-body">
|
<div className="card-body">
|
||||||
<div className="row d-flex justify-content-between mb-4">
|
<div className="row d-flex justify-content-between mb-4">
|
||||||
<div className="col-md-6 col-12 d-flex align-items-center">
|
<div className="col-md-6 col-12 d-flex align-items-center">
|
||||||
|
<div className="dataTables_length text-start py-1 px-0 col-md-4 col-12">
|
||||||
|
{servicesLoading ? (
|
||||||
|
<span></span>
|
||||||
|
) : assignedServices?.length > 1 ? (
|
||||||
|
<label>
|
||||||
|
<select
|
||||||
|
name="DataTables_Table_0_length"
|
||||||
|
aria-controls="DataTables_Table_0"
|
||||||
|
className="form-select form-select-sm"
|
||||||
|
aria-label="Select Service"
|
||||||
|
value={selectedService}
|
||||||
|
onChange={handleServiceChange}
|
||||||
|
style={{ fontSize: "0.875rem", height: "32px", width: "190px" }}
|
||||||
|
>
|
||||||
|
{assignedServices.map((service) => (
|
||||||
|
<option key={service.id} value={service.id}>
|
||||||
|
{service.name}
|
||||||
|
</option>
|
||||||
|
))}
|
||||||
|
</select>
|
||||||
|
</label>
|
||||||
|
) : (
|
||||||
|
<div
|
||||||
|
style={{
|
||||||
|
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{/* fier fitting */}
|
||||||
|
{assignedServices?.length === 1
|
||||||
|
?<h5>{ assignedServices[0].name}</h5>
|
||||||
|
: "No service available"}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* <div className="dataTables_filter d-inline-flex align-items-center ms-2">
|
||||||
|
<input
|
||||||
|
type="search"
|
||||||
|
className="form-control form-control-sm me-4"
|
||||||
|
placeholder="Search by Name or Role"
|
||||||
|
aria-controls="DataTables_Table_0"
|
||||||
|
value={searchTerm}
|
||||||
|
onChange={handleSearch}
|
||||||
|
/>
|
||||||
|
</div> */}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div className="col-md-6 col-12 d-flex justify-content-end align-items-center">
|
||||||
|
<div className="form-check form-switch me-2 mt-2">
|
||||||
|
<input
|
||||||
|
type="checkbox"
|
||||||
|
className="form-check-input"
|
||||||
|
checked={activeEmployee}
|
||||||
|
onChange={handleToggleActive}
|
||||||
|
id="activeEmployeeSwitch"
|
||||||
|
/>
|
||||||
|
<label className="form-check-label ms-0 " htmlFor="activeEmployeeSwitch">
|
||||||
|
{activeEmployee ? "Active Employees" : "Inactive Employees"}
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
<div className="dataTables_filter d-inline-flex align-items-center ms-2">
|
<div className="dataTables_filter d-inline-flex align-items-center ms-2">
|
||||||
<input
|
<input
|
||||||
type="search"
|
type="search"
|
||||||
@ -274,32 +333,11 @@ const Teams = () => {
|
|||||||
onChange={handleSearch}
|
onChange={handleSearch}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
<div className="col-md-6 col-12 d-flex justify-content-end align-items-center">
|
|
||||||
<div
|
|
||||||
className="dataTables_length text-start py-2 px-2"
|
|
||||||
id="DataTables_Table_0_length"
|
|
||||||
>
|
|
||||||
<label>
|
|
||||||
<select
|
|
||||||
name="DataTables_Table_0_length"
|
|
||||||
aria-controls="DataTables_Table_0"
|
|
||||||
className="form-select form-select-sm"
|
|
||||||
onChange={handleFilterEmployee}
|
|
||||||
// value={false}
|
|
||||||
aria-label=""
|
|
||||||
defaultValue="true"
|
|
||||||
>
|
|
||||||
<option value="true">Active Employee</option>
|
|
||||||
<option value="false">In-Active Employee</option>
|
|
||||||
</select>
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
className={`link-button btn-primary btn-sm ${
|
className={`link-button btn-primary btn-sm ${HasAssignUserPermission ? "" : "d-none"
|
||||||
HasAssignUserPermission ? "" : "d-none"
|
}`}
|
||||||
}`}
|
|
||||||
data-bs-toggle="modal"
|
data-bs-toggle="modal"
|
||||||
data-bs-target="#user-model"
|
data-bs-target="#user-model"
|
||||||
>
|
>
|
||||||
@ -319,6 +357,7 @@ const Teams = () => {
|
|||||||
<th>
|
<th>
|
||||||
<div className="text-start ms-5">Name</div>
|
<div className="text-start ms-5">Name</div>
|
||||||
</th>
|
</th>
|
||||||
|
<th>Organization</th>
|
||||||
<th>Assigned Date</th>
|
<th>Assigned Date</th>
|
||||||
{!activeEmployee && <th>Release Date</th>}
|
{!activeEmployee && <th>Release Date</th>}
|
||||||
<th>Project Role</th>
|
<th>Project Role</th>
|
||||||
@ -334,7 +373,7 @@ const Teams = () => {
|
|||||||
<Avatar
|
<Avatar
|
||||||
firstName={item.firstName}
|
firstName={item.firstName}
|
||||||
lastName={item.lastName}
|
lastName={item.lastName}
|
||||||
></Avatar>
|
/>
|
||||||
<div className="d-flex flex-column">
|
<div className="d-flex flex-column">
|
||||||
<a
|
<a
|
||||||
onClick={() =>
|
onClick={() =>
|
||||||
@ -352,18 +391,16 @@ const Teams = () => {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
|
|
||||||
|
<td>{item.organizationName || "N/A"}</td>
|
||||||
|
|
||||||
<td>
|
<td>
|
||||||
{" "}
|
{moment(item.allocationDate).format("DD-MMM-YYYY")}
|
||||||
{moment(item.allocationDate).format(
|
|
||||||
"DD-MMM-YYYY"
|
|
||||||
)}{" "}
|
|
||||||
</td>
|
</td>
|
||||||
{!activeEmployee && (
|
{!activeEmployee && (
|
||||||
<td>
|
<td>
|
||||||
{item.reAllocationDate
|
{item.reAllocationDate
|
||||||
? moment(item.reAllocationDate).format(
|
? moment(item.reAllocationDate).format("DD-MMM-YYYY")
|
||||||
"DD-MMM-YYYY"
|
|
||||||
)
|
|
||||||
: "Present"}
|
: "Present"}
|
||||||
</td>
|
</td>
|
||||||
)}
|
)}
|
||||||
@ -373,7 +410,7 @@ const Teams = () => {
|
|||||||
</span>
|
</span>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
{item.isActive && (
|
{item.isActive ? (
|
||||||
<button
|
<button
|
||||||
aria-label="Delete"
|
aria-label="Delete"
|
||||||
type="button"
|
type="button"
|
||||||
@ -381,27 +418,26 @@ const Teams = () => {
|
|||||||
className="btn p-0 dropdown-toggle hide-arrow"
|
className="btn p-0 dropdown-toggle hide-arrow"
|
||||||
onClick={() => deleteModalOpen(item)}
|
onClick={() => deleteModalOpen(item)}
|
||||||
>
|
>
|
||||||
{" "}
|
|
||||||
{removingEmployeeId === item.id ? (
|
{removingEmployeeId === item.id ? (
|
||||||
<div
|
<div
|
||||||
className="spinner-border spinner-border-sm text-primary"
|
className="spinner-border spinner-border-sm text-primary"
|
||||||
role="status"
|
role="status"
|
||||||
>
|
>
|
||||||
<span className="visually-hidden">
|
<span className="visually-hidden">Loading...</span>
|
||||||
Loading...
|
|
||||||
</span>
|
|
||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
<i className="bx bx-trash me-1 text-danger"></i>
|
<i className="bx bx-trash me-1 text-danger"></i>
|
||||||
)}
|
)}
|
||||||
</button>
|
</button>
|
||||||
|
) : (
|
||||||
|
<span>Not in project</span>
|
||||||
)}
|
)}
|
||||||
{!item.isActive && <span>Not in project</span>}
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
))}
|
))}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
)}
|
)}
|
||||||
{!employeeLodaing && filteredEmployees.length === 0 && (
|
{!employeeLodaing && filteredEmployees.length === 0 && (
|
||||||
<div className="text-center text-muted py-3">
|
<div className="text-center text-muted py-3">
|
||||||
|
Loading…
x
Reference in New Issue
Block a user