Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
 
 

84 righe
2.4 KiB

  1. "use client";
  2. import { useCallback, useState } from "react";
  3. import { useTranslation } from "react-i18next";
  4. import Button from "@mui/material/Button";
  5. import Stack from "@mui/material/Stack";
  6. import { Add } from "@mui/icons-material";
  7. import { Typography } from "@mui/material";
  8. import ButtonGroup from "@mui/material/ButtonGroup";
  9. import AssignedProjects from "./AssignedProjects";
  10. import TimesheetModal from "../TimesheetModal";
  11. import { AssignedProject } from "@/app/api/projects";
  12. export interface Props {
  13. assignedProjects: AssignedProject[];
  14. }
  15. const UserWorkspacePage: React.FC<Props> = ({ assignedProjects }) => {
  16. const [isTimeheetModalVisible, setTimeheetModalVisible] = useState(false);
  17. const [isLeaveModalVisible, setLeaveModalVisible] = useState(false);
  18. const { t } = useTranslation("home");
  19. const handleAddTimesheetButtonClick = useCallback(() => {
  20. setTimeheetModalVisible(true);
  21. }, []);
  22. const handleCloseTimesheetModal = useCallback(() => {
  23. setTimeheetModalVisible(false);
  24. }, []);
  25. const handleAddLeaveButtonClick = useCallback(() => {
  26. setLeaveModalVisible(true);
  27. }, []);
  28. const handleCloseLeaveModal = useCallback(() => {
  29. setLeaveModalVisible(false);
  30. }, []);
  31. return (
  32. <>
  33. <Stack
  34. direction="row"
  35. justifyContent="space-between"
  36. flexWrap="wrap"
  37. rowGap={2}
  38. >
  39. <Typography variant="h4" marginInlineEnd={2}>
  40. {t("User Workspace")}
  41. </Typography>
  42. <Stack
  43. direction="row"
  44. justifyContent="right"
  45. flexWrap="wrap"
  46. spacing={2}
  47. >
  48. <ButtonGroup variant="contained">
  49. <Button startIcon={<Add />} onClick={handleAddTimesheetButtonClick}>
  50. {t("Enter Time")}
  51. </Button>
  52. <Button startIcon={<Add />} onClick={handleAddLeaveButtonClick}>
  53. {t("Record Leave")}
  54. </Button>
  55. </ButtonGroup>
  56. </Stack>
  57. </Stack>
  58. <TimesheetModal
  59. timesheetType="time"
  60. isOpen={isTimeheetModalVisible}
  61. onClose={handleCloseTimesheetModal}
  62. assignedProjects={assignedProjects}
  63. />
  64. <TimesheetModal
  65. timesheetType="leave"
  66. isOpen={isLeaveModalVisible}
  67. onClose={handleCloseLeaveModal}
  68. assignedProjects={assignedProjects}
  69. />
  70. <AssignedProjects assignedProjects={assignedProjects} />
  71. </>
  72. );
  73. };
  74. export default UserWorkspacePage;