From c5a6a72fa533bc02835ecee2074ef0ddb866cebb Mon Sep 17 00:00:00 2001
From: elforjani13 <39470382+elforjani13@users.noreply.github.com>
Date: Sat, 6 Aug 2022 12:35:41 +0200
Subject: [PATCH] fix: project timesheet table.
---
.../ProjectTimesheetsProvider.tsx | 12 ++++++++-
.../ProjectTimesheetsTable.tsx | 25 ++++++++++++++++---
.../ProjectTimeSheets/components.tsx | 9 +++++--
.../ProjectDetails/ProjectTimeSheets/hooks.ts | 2 +-
.../Projects/hooks/projectTimeEntry.tsx | 18 ++++++-------
5 files changed, 50 insertions(+), 16 deletions(-)
diff --git a/src/containers/Projects/containers/ProjectDetails/ProjectTimeSheets/ProjectTimesheetsProvider.tsx b/src/containers/Projects/containers/ProjectDetails/ProjectTimeSheets/ProjectTimesheetsProvider.tsx
index c047782b7..8cf718b9d 100644
--- a/src/containers/Projects/containers/ProjectDetails/ProjectTimeSheets/ProjectTimesheetsProvider.tsx
+++ b/src/containers/Projects/containers/ProjectDetails/ProjectTimeSheets/ProjectTimesheetsProvider.tsx
@@ -1,6 +1,6 @@
import React from 'react';
import { useParams } from 'react-router-dom';
-import { useProject } from '../../../hooks';
+import { useProject, useProjectTimeEntries } from '../../../hooks';
const ProjectTimesheetContext = React.createContext();
@@ -12,6 +12,14 @@ function ProjectTimesheetsProvider({ ...props }) {
const { id } = useParams();
const projectId = parseInt(id, 10);
+ // fetch project time entries.
+const {
+ data: { projectTimeEntries },
+ isLoading: isProjectTimeEntriesLoading,
+ } = useProjectTimeEntries(projectId, {
+ enabled: !!projectId,
+ });
+
// Handle fetch project detail.
const { data: project } = useProject(projectId, {
enabled: !!projectId,
@@ -21,6 +29,8 @@ function ProjectTimesheetsProvider({ ...props }) {
const provider = {
projectId,
project,
+ projectTimeEntries,
+ isProjectTimeEntriesLoading,
};
return ;
diff --git a/src/containers/Projects/containers/ProjectDetails/ProjectTimeSheets/ProjectTimesheetsTable.tsx b/src/containers/Projects/containers/ProjectDetails/ProjectTimeSheets/ProjectTimesheetsTable.tsx
index 790774a90..7efbf6ff8 100644
--- a/src/containers/Projects/containers/ProjectDetails/ProjectTimeSheets/ProjectTimesheetsTable.tsx
+++ b/src/containers/Projects/containers/ProjectDetails/ProjectTimeSheets/ProjectTimesheetsTable.tsx
@@ -6,10 +6,13 @@ import {
TableSkeletonHeader,
} from '@/components';
import { ActionsMenu } from './components';
-import { useProjectTimesheetColumns } from './hooks';
import { TABLES } from '@/constants/tables';
+import { useProjectTimesheetColumns } from './hooks';
import { useMemorizedColumnsWidths } from '@/hooks';
+import { useProjectTimesheetContext } from './ProjectTimesheetsProvider';
import withSettings from '@/containers/Settings/withSettings';
+import withAlertsActions from '@/containers/Alert/withAlertActions';
+import withDialogActions from '@/containers/Dialog/withDialogActions';
import { compose } from '@/utils';
@@ -20,12 +23,25 @@ import { compose } from '@/utils';
function ProjectTimesheetsTableRoot({
// #withSettings
timesheetsTableSize,
+
+ // #withDialog
+ openDialog,
+ // #withAlertsActions
+ openAlert,
}) {
+ const { projectTimeEntries } = useProjectTimesheetContext();
+
// Retrieve project timesheet table columns.
const columns = useProjectTimesheetColumns();
// Handle delete timesheet.
- const handleDeleteTimesheet = () => {};
+ const handleDeleteTimesheet = ({ id }) => {
+ openAlert('project-timesheet-delete', { timesheetId: id });
+ };
+
+ const handleEditTimesheet = ({ id }) => {
+ openDialog('project-time-entry-form', { timesheetId: id, action: 'edit' });
+ };
// Local storage memorizing columns widths.
const [initialColumnsWidths, , handleColumnResizing] =
@@ -34,7 +50,7 @@ function ProjectTimesheetsTableRoot({
return (
);
}
export const ProjectTimesheetsTable = compose(
+ withAlertsActions,
+ withDialogActions,
withSettings(({ timesheetsSettings }) => ({
timesheetsTableSize: timesheetsSettings?.tableSize,
})),
diff --git a/src/containers/Projects/containers/ProjectDetails/ProjectTimeSheets/components.tsx b/src/containers/Projects/containers/ProjectDetails/ProjectTimeSheets/components.tsx
index e4b74b5b6..bbc7f1918 100644
--- a/src/containers/Projects/containers/ProjectDetails/ProjectTimeSheets/components.tsx
+++ b/src/containers/Projects/containers/ProjectDetails/ProjectTimeSheets/components.tsx
@@ -9,13 +9,18 @@ import { safeCallback, firstLettersArgs } from '@/utils';
* Table actions cell.
*/
export function ActionsMenu({
- payload: { onDelete, onViewDetails },
+ payload: { onDelete, onEdit },
row: { original },
}) {
return (