From a44f548ff9c87ac6baf14f6e359f10ff40ec00b6 Mon Sep 17 00:00:00 2001
From: elforjani13 <39470382+elforjani13@users.noreply.github.com>
Date: Sat, 11 Jun 2022 15:30:11 +0200
Subject: [PATCH] feat: projects actions bar.
---
src/common/tables.js | 3 +-
.../ProjectDialog/containers/ProjectForm.tsx | 3 +-
.../containers/ProjectFormFloatingActions.tsx | 2 +-
.../containers/ProjectFormProvider.tsx | 1 +
.../containers/TaskFormProvider.tsx | 5 ++-
.../containers/ProjectsActionsBar.tsx | 8 ++++-
.../Projects/containers/ProjectsDataTable.tsx | 34 ++++++++++++++++++-
src/containers/Settings/withSettings.js | 1 +
src/lang/en/index.json | 1 +
src/store/settings/settings.reducer.js | 3 ++
10 files changed, 54 insertions(+), 7 deletions(-)
diff --git a/src/common/tables.js b/src/common/tables.js
index 59c50dff7..0d26d3ace 100644
--- a/src/common/tables.js
+++ b/src/common/tables.js
@@ -16,7 +16,8 @@ export const TABLES = {
CASHFLOW_Transactions: 'cashflow_transactions',
CREDIT_NOTES: 'credit_notes',
VENDOR_CREDITS: 'vendor_credits',
- WAREHOUSE_TRANSFERS:'warehouse_transfers'
+ WAREHOUSE_TRANSFERS:'warehouse_transfers',
+ PROJECTS:'projects'
};
export const TABLE_SIZE = {
diff --git a/src/containers/Dialogs/ProjectDialog/containers/ProjectForm.tsx b/src/containers/Dialogs/ProjectDialog/containers/ProjectForm.tsx
index 4c2cd0ad0..15603a219 100644
--- a/src/containers/Dialogs/ProjectDialog/containers/ProjectForm.tsx
+++ b/src/containers/Dialogs/ProjectDialog/containers/ProjectForm.tsx
@@ -17,8 +17,7 @@ import { compose } from 'utils';
const defaultInitialValues = {
contact: '',
project_name: '',
- project_deadline: '',
- // project_deadline: moment(new Date()).format('YYYY-MM-DD'),
+ project_deadline: moment(new Date()).format('YYYY-MM-DD'),
project_state: false,
project_cost: '',
};
diff --git a/src/containers/Dialogs/ProjectDialog/containers/ProjectFormFloatingActions.tsx b/src/containers/Dialogs/ProjectDialog/containers/ProjectFormFloatingActions.tsx
index 1f118c72f..57b798d35 100644
--- a/src/containers/Dialogs/ProjectDialog/containers/ProjectFormFloatingActions.tsx
+++ b/src/containers/Dialogs/ProjectDialog/containers/ProjectFormFloatingActions.tsx
@@ -38,7 +38,7 @@ function ProjectFormFloatingActions({
style={{ minWidth: '75px' }}
type="submit"
>
- Create
+
diff --git a/src/containers/Dialogs/ProjectDialog/containers/ProjectFormProvider.tsx b/src/containers/Dialogs/ProjectDialog/containers/ProjectFormProvider.tsx
index 6bd504415..9f9379e05 100644
--- a/src/containers/Dialogs/ProjectDialog/containers/ProjectFormProvider.tsx
+++ b/src/containers/Dialogs/ProjectDialog/containers/ProjectFormProvider.tsx
@@ -26,6 +26,7 @@ function ProjectFormProvider({
// State provider.
const provider = {
customers,
+ dialogName,
};
return (
diff --git a/src/containers/Dialogs/TaskDialog/containers/TaskFormProvider.tsx b/src/containers/Dialogs/TaskDialog/containers/TaskFormProvider.tsx
index bdd933cfb..1f3384dd0 100644
--- a/src/containers/Dialogs/TaskDialog/containers/TaskFormProvider.tsx
+++ b/src/containers/Dialogs/TaskDialog/containers/TaskFormProvider.tsx
@@ -16,7 +16,10 @@ function TaskFormProvider({
...props
}) {
// State provider.
- const provider = {};
+ const provider = {
+ dialogName,
+ };
+
return (
diff --git a/src/containers/Projects/containers/ProjectsActionsBar.tsx b/src/containers/Projects/containers/ProjectsActionsBar.tsx
index 536e67c0c..d227a0aba 100644
--- a/src/containers/Projects/containers/ProjectsActionsBar.tsx
+++ b/src/containers/Projects/containers/ProjectsActionsBar.tsx
@@ -41,6 +41,9 @@ function ProjectsActionsBar({
// #withProjectsActions
setProjectsTableState,
+ // #withSettings
+ projectsTableSize,
+
// #withSettingsActions
addSetting,
}) {
@@ -100,7 +103,7 @@ function ProjectsActionsBar({
/>
@@ -123,4 +126,7 @@ export default compose(
withProjects(({ projectsTableState }) => ({
projectsFilterRoles: projectsTableState?.filterRoles,
})),
+ withSettings(({ projectSettings }) => ({
+ projectsTableSize: projectSettings?.tableSize,
+ })),
)(ProjectsActionsBar);
diff --git a/src/containers/Projects/containers/ProjectsDataTable.tsx b/src/containers/Projects/containers/ProjectsDataTable.tsx
index d2f954a14..45a9b1960 100644
--- a/src/containers/Projects/containers/ProjectsDataTable.tsx
+++ b/src/containers/Projects/containers/ProjectsDataTable.tsx
@@ -1,14 +1,18 @@
import React from 'react';
import { DataTable } from 'components';
+import { TABLES } from 'common/tables';
import TableSkeletonRows from 'components/Datatable/TableSkeletonRows';
import TableSkeletonHeader from 'components/Datatable/TableHeaderSkeleton';
import { useProjectsListContext } from './ProjectsListProvider';
+import { useMemorizedColumnsWidths } from 'hooks';
import { useProjectsListColumns, ActionsMenu } from '../components';
import withDialogActions from 'containers/Dialog/withDialogActions';
+import withProjectsActions from './withProjectsActions';
+import withSettings from '../../Settings/withSettings';
import { compose } from 'utils';
@@ -19,6 +23,18 @@ const projects = [
description: 'Project 1 description',
status: 'Active',
},
+ {
+ id: 2,
+ name: 'Project 2',
+ description: 'Project 2 description',
+ status: 'Active',
+ },
+ {
+ id: 3,
+ name: 'Project 3',
+ description: 'Project 3 description',
+ status: 'Active',
+ },
];
/**
@@ -28,6 +44,9 @@ const projects = [
function ProjectsDataTable({
// #withDial
openDialog,
+
+ // #withSettings
+ projectsTableSize,
}) {
// Retrieve projects table columns.
const columns = useProjectsListColumns();
@@ -40,6 +59,10 @@ function ProjectsDataTable({
openDialog('task-form');
};
+ // Local storage memorizing columns widths.
+ const [initialColumnsWidths, , handleColumnResizing] =
+ useMemorizedColumnsWidths(TABLES.PROJECTS);
+
return (
({
+ projectsTableSize: projectSettings?.tableSize,
+ })),
+)(ProjectsDataTable);
diff --git a/src/containers/Settings/withSettings.js b/src/containers/Settings/withSettings.js
index 08e7fd6dc..e1c1aa7db 100644
--- a/src/containers/Settings/withSettings.js
+++ b/src/containers/Settings/withSettings.js
@@ -22,6 +22,7 @@ export default (mapState) => {
creditNoteSettings: state.settings.data.creditNote,
vendorsCreditNoteSetting: state.settings.data.vendorCredit,
warehouseTransferSettings: state.settings.data.warehouseTransfers,
+ projectSettings:state.settings.data.projects
};
return mapState ? mapState(mapped, state, props) : mapped;
};
diff --git a/src/lang/en/index.json b/src/lang/en/index.json
index d6b4e9faf..2a1315ea7 100644
--- a/src/lang/en/index.json
+++ b/src/lang/en/index.json
@@ -2055,6 +2055,7 @@
"projects.label.deadline": "Deadline",
"projects.label.calculator_expenses": "Calculator from tasks & estimated expenses",
"projects.label.cost_estimate": "Cost Estimate",
+ "projects.label.create": "Create",
"task.label.new_task": "New Task",
"task.label.task_name": "Task Name",
"task.label.estimated_hours": "Task Name",
diff --git a/src/store/settings/settings.reducer.js b/src/store/settings/settings.reducer.js
index ee140bf98..fb28d894f 100644
--- a/src/store/settings/settings.reducer.js
+++ b/src/store/settings/settings.reducer.js
@@ -61,6 +61,9 @@ const initialState = {
warehouseTransfer: {
tableSize: 'medium',
},
+ projects: {
+ tableSize: 'medium',
+ },
},
};