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', + }, }, };