From 282dbd09130e8d4b9b3119455d0618df088802db Mon Sep 17 00:00:00 2001 From: Dave Richer Date: Mon, 1 Apr 2024 20:20:01 -0400 Subject: [PATCH] - Progress Commit Signed-off-by: Dave Richer --- .../components/header/header.component.jsx | 7 +- client/src/graphql/tasks.queries.js | 80 +++++++++---------- .../pages/manage/manage.page.component.jsx | 15 +++- .../src/pages/tasks/allTasksPageContainer.jsx | 48 +++++++++++ ...container.jsx => myTasksPageContainer.jsx} | 15 ++-- client/src/pages/tasks/taskPageTypes.jsx | 6 ++ .../src/pages/tasks/tasks.page.component.jsx | 22 +++-- client/src/translations/en_us/common.json | 5 ++ client/src/translations/es/common.json | 5 ++ client/src/translations/fr/common.json | 5 ++ 10 files changed, 148 insertions(+), 60 deletions(-) create mode 100644 client/src/pages/tasks/allTasksPageContainer.jsx rename client/src/pages/tasks/{tasks.page.container.jsx => myTasksPageContainer.jsx} (73%) create mode 100644 client/src/pages/tasks/taskPageTypes.jsx diff --git a/client/src/components/header/header.component.jsx b/client/src/components/header/header.component.jsx index 5b53c37ee..40e2d10ff 100644 --- a/client/src/components/header/header.component.jsx +++ b/client/src/components/header/header.component.jsx @@ -464,7 +464,12 @@ function Header({ { key: 'mytasks', icon: , - label: {t('menus.header.my_tasks')}, + label: {t('menus.header.my_tasks')}, + }, + { + key: 'all_tasks', + icon: , + label: {t('menus.header.all_tasks')}, } ] }, diff --git a/client/src/graphql/tasks.queries.js b/client/src/graphql/tasks.queries.js index 615a04963..0492dbf07 100644 --- a/client/src/graphql/tasks.queries.js +++ b/client/src/graphql/tasks.queries.js @@ -1,46 +1,5 @@ import {gql} from "@apollo/client"; -/** - * All tasks paginated query - * @type {DocumentNode} - */ -export const QUERY_ALL_TASKS_PAGINATED = gql` - query QUERY_ALL_TASKS_PAGINATED( - $offset: Int - $limit: Int - $order: [tasks_order_by!]! - ) { - tasks( - offset: $offset - limit: $limit - order_by: $order - ) { - id - created_at - updated_at - title - description - deleted - deleted_at - due_date - created_by - assigned_to - completed - completed_at - remind_at - priority - jobid - joblineid - partsorderid - billid - } - tasks_aggregate { - aggregate { - count - } - } - } -`; const PARTIAL_TASK_FIELDS = gql` fragment TaskFields on tasks { @@ -87,6 +46,45 @@ const PARTIAL_TASK_FIELDS = gql` } `; +export const QUERY_ALL_TASKS_PAGINATED = gql` + ${PARTIAL_TASK_FIELDS} + query QUERY_ALL_TASKS_PAGINATED( + $offset: Int + $limit: Int + $bodyshop: uuid! + $deleted: Boolean + $completed: Boolean + $assigned_to: String + $order: [tasks_order_by!]! + ) { + tasks( + offset: $offset + limit: $limit + order_by: $order + where: { + bodyshopid: {_eq: $bodyshop}, + deleted: {_eq: $deleted}, + assigned_to: {_eq: $assigned_to}, + completed: {_eq: $completed} + } + ) { + ...TaskFields + } + tasks_aggregate( + where: { + bodyshopid: {_eq: $bodyshop}, + deleted: {_eq: $deleted}, + assigned_to: {_eq: $assigned_to}, + completed: {_eq: $completed} + } + ) { + aggregate { + count + } + } + } +`; + // Query for joblineid export const QUERY_JOBLINE_TASKS_PAGINATED = gql` ${PARTIAL_TASK_FIELDS} diff --git a/client/src/pages/manage/manage.page.component.jsx b/client/src/pages/manage/manage.page.component.jsx index 035970b7c..319762891 100644 --- a/client/src/pages/manage/manage.page.component.jsx +++ b/client/src/pages/manage/manage.page.component.jsx @@ -102,7 +102,9 @@ const Dms = lazy(() => import("../dms/dms.container")); const DmsPayables = lazy(() => import("../dms-payables/dms-payables.container")); const ManageRootPage = lazy(() => import("../manage-root/manage-root.page.container")); const TtApprovals = lazy(() => import("../tt-approvals/tt-approvals.page.container")); -const TasksPage = lazy(() => import("../tasks/tasks.page.container")); +const MyTasksPage = lazy(() => import("../tasks/myTasksPageContainer.jsx")); +const AllTasksPage = lazy(() => import("../tasks/allTasksPageContainer.jsx")); + const TaskUpsertModalContainer = lazy(() => import("../../components/task-upsert-modal/task-upsert-modal.container")); const { Content, Footer } = Layout; @@ -259,12 +261,19 @@ export function Manage({ conflict, bodyshop, enableJoyRide, joyRideSteps, setJoy } /> }> - + } /> + }> + + } + /> ({ + setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)), + setSelectedHeader: (key) => dispatch(setSelectedHeader(key)), +}); + +export function MyTasksPageContainer({bodyshop, currentUser, setBreadcrumbs, setSelectedHeader, query}) { + const {t} = useTranslation(); + useEffect(() => { + document.title = t("titles.all_tasks", { + app: InstanceRenderManager({ + imex: '$t(titles.imexonline)', + rome: '$t(titles.romeonline)', + promanager: '$t(titles.promanager)' + }) + }); + setSelectedHeader("all_tasks"); + setBreadcrumbs([ + { + link: "/manage/alltasks", + label: t("titles.bc.all_tasks"), + },]); + }, [t, setBreadcrumbs, setSelectedHeader]); + + return ( + + ); +} + +export default connect( + mapStateToProps, + mapDispatchToProps +)(MyTasksPageContainer); diff --git a/client/src/pages/tasks/tasks.page.container.jsx b/client/src/pages/tasks/myTasksPageContainer.jsx similarity index 73% rename from client/src/pages/tasks/tasks.page.container.jsx rename to client/src/pages/tasks/myTasksPageContainer.jsx index c4151f1c6..94c3e07cd 100644 --- a/client/src/pages/tasks/tasks.page.container.jsx +++ b/client/src/pages/tasks/myTasksPageContainer.jsx @@ -7,6 +7,7 @@ import {createStructuredSelector} from "reselect"; import {setBreadcrumbs, setSelectedHeader} from "../../redux/application/application.actions"; import InstanceRenderManager from "../../utils/instanceRenderMgr.js"; import {selectBodyshop, selectCurrentUser} from "../../redux/user/user.selectors.js"; +import TaskPageTypes from "./taskPageTypes.jsx"; const mapStateToProps = createStructuredSelector({ bodyshop: selectBodyshop, @@ -18,30 +19,30 @@ const mapDispatchToProps = (dispatch) => ({ setSelectedHeader: (key) => dispatch(setSelectedHeader(key)), }); -export function TasksPageContainer({bodyshop, currentUser, setBreadcrumbs, setSelectedHeader}) { +export function MyTasksPageContainer({bodyshop, currentUser, setBreadcrumbs, setSelectedHeader, query}) { const {t} = useTranslation(); useEffect(() => { - document.title = t("titles.tasks", { + document.title = t("titles.my_tasks", { app: InstanceRenderManager({ imex: '$t(titles.imexonline)', rome: '$t(titles.romeonline)', promanager: '$t(titles.promanager)' }) }); - setSelectedHeader("tasks"); + setSelectedHeader("my_tasks"); setBreadcrumbs([ { - link: "/manage/tasks", - label: t("titles.bc.tasks"), + link: "/manage/mytasks", + label: t("titles.bc.my_tasks"), },]); }, [t, setBreadcrumbs, setSelectedHeader]); return ( - + ); } export default connect( mapStateToProps, mapDispatchToProps -)(TasksPageContainer); +)(MyTasksPageContainer); diff --git a/client/src/pages/tasks/taskPageTypes.jsx b/client/src/pages/tasks/taskPageTypes.jsx new file mode 100644 index 000000000..5e85c9602 --- /dev/null +++ b/client/src/pages/tasks/taskPageTypes.jsx @@ -0,0 +1,6 @@ +export const TaskPageTypes = { + MY_TASKS: 'myTasks', + ALL_TASKS: 'allTasks', +}; + +export default TaskPageTypes; diff --git a/client/src/pages/tasks/tasks.page.component.jsx b/client/src/pages/tasks/tasks.page.component.jsx index b3758f48a..299a8e216 100644 --- a/client/src/pages/tasks/tasks.page.component.jsx +++ b/client/src/pages/tasks/tasks.page.component.jsx @@ -1,13 +1,19 @@ import React from "react"; import TaskListContainer from "../../components/task-list/task-list.container.jsx"; -import {QUERY_MY_TASKS_PAGINATED} from "../../graphql/tasks.queries.js"; +import {QUERY_ALL_TASKS_PAGINATED, QUERY_MY_TASKS_PAGINATED} from "../../graphql/tasks.queries.js"; +import taskPageTypes from "./taskPageTypes.jsx"; -export default function TasksPageComponent({bodyshop, currentUser}) { +export default function TasksPageComponent({bodyshop, currentUser, type}) { + switch (type) { + case taskPageTypes.MY_TASKS: + return + case taskPageTypes.ALL_TASKS: + return + } - return ( -
- -
- ); } diff --git a/client/src/translations/en_us/common.json b/client/src/translations/en_us/common.json index d1c14f89b..74ad27d2c 100644 --- a/client/src/translations/en_us/common.json +++ b/client/src/translations/en_us/common.json @@ -2177,6 +2177,7 @@ "create_task": "Create Task", "tasks": "Tasks", "my_tasks": "My Tasks", + "all_tasks": "All Tasks", "accounting": "Accounting", "accounting-payables": "Payables", "accounting-payments": "Payments", @@ -3134,12 +3135,16 @@ }, "titles": { "tasks": "Tasks", + "all_tasks": "All Tasks", + "my_tasks": "My Tasks", "accounting-payables": "Payables | {{app}}", "accounting-payments": "Payments | {{app}}", "accounting-receivables": "Receivables | {{app}}", "app": "", "bc": { "tasks": "Tasks", + "all_tasks": "All Tasks", + "my_tasks": "My Tasks", "accounting-payables": "Payables", "accounting-payments": "Payments", "accounting-receivables": "Receivables", diff --git a/client/src/translations/es/common.json b/client/src/translations/es/common.json index 8d412e06b..e10d38c23 100644 --- a/client/src/translations/es/common.json +++ b/client/src/translations/es/common.json @@ -2175,6 +2175,7 @@ "header": { "create_task": "", "tasks": "", + "all_tasks": "", "my_tasks": "", "accounting": "", "accounting-payables": "", @@ -3133,12 +3134,16 @@ }, "titles": { "tasks": "", + "all_tasks": "", + "my_tasks": "", "accounting-payables": "", "accounting-payments": "", "accounting-receivables": "", "app": "", "bc": { "tasks": "", + "all_tasks": "", + "my_tasks": "", "accounting-payables": "", "accounting-payments": "", "accounting-receivables": "", diff --git a/client/src/translations/fr/common.json b/client/src/translations/fr/common.json index e39928eb3..e7f99b572 100644 --- a/client/src/translations/fr/common.json +++ b/client/src/translations/fr/common.json @@ -2176,6 +2176,7 @@ "create_task": "", "tasks": "", "my_tasks": "", + "all_tasks": "", "accounting": "", "accounting-payables": "", "accounting-payments": "", @@ -3137,8 +3138,12 @@ "accounting-receivables": "", "app": "", "tasks": "", + "all_tasks": "", + "my_tasks": "", "bc": { "tasks": "", + "all_tasks": "", + "my_tasks": "", "accounting-payables": "", "accounting-payments": "", "accounting-receivables": "",