diff --git a/client/src/components/task-center/task-center.component.jsx b/client/src/components/task-center/task-center.component.jsx
index 697beed09..7fb07ef2c 100644
--- a/client/src/components/task-center/task-center.component.jsx
+++ b/client/src/components/task-center/task-center.component.jsx
@@ -1,4 +1,3 @@
-// client/src/components/task-center/task-center.component.jsx
import { Virtuoso } from "react-virtuoso";
import { Badge, Button, Space, Spin, Switch, Tooltip, Typography } from "antd";
import { CheckCircleFilled, CheckCircleOutlined, EyeFilled, EyeOutlined } from "@ant-design/icons";
@@ -6,12 +5,12 @@ import { useTranslation } from "react-i18next";
import { forwardRef, useEffect, useRef } from "react";
import { DateTimeFormat } from "../../utils/DateFormatter.jsx";
import day from "../../utils/day.js";
-import "./task-center.styles.scss"; // You can clone this from notification styles for now
+import "./task-center.styles.scss";
const { Text, Title } = Typography;
const TaskCenterComponent = forwardRef(
- ({ visible, onClose, tasks, loading, showIncompleteOnly, toggleIncomplete, markAllComplete, onTaskClick }, ref) => {
+ ({ visible, tasks, loading, showIncompleteOnly, toggleIncomplete, markAllComplete, onTaskClick }, ref) => {
const { t } = useTranslation();
const virtuosoRef = useRef(null);
@@ -21,9 +20,12 @@ const TaskCenterComponent = forwardRef(
}
}, [showIncompleteOnly]);
+ // Filter tasks based on showIncompleteOnly
+ const filteredTasks = showIncompleteOnly ? tasks.filter((task) => !task.completed) : tasks;
+
const renderTask = (index, task) => {
const handleClick = () => {
- onTaskClick(task.id);
+ onTaskClick(task.id); // Use the prop handler
};
return (
@@ -80,8 +82,8 @@ const TaskCenterComponent = forwardRef(
diff --git a/client/src/components/task-center/task-center.container.jsx b/client/src/components/task-center/task-center.container.jsx
index 43fe077ef..dad0f97e7 100644
--- a/client/src/components/task-center/task-center.container.jsx
+++ b/client/src/components/task-center/task-center.container.jsx
@@ -1,4 +1,3 @@
-// client/src/components/task-center/task-center.container.jsx
import { useCallback, useEffect, useMemo, useState } from "react";
import { useMutation, useQuery } from "@apollo/client";
import { connect } from "react-redux";
@@ -10,6 +9,7 @@ import { useNotification } from "../../contexts/Notifications/notificationContex
import { MUTATION_TOGGLE_TASK_COMPLETED, QUERY_MY_TASKS_PAGINATED } from "../../graphql/tasks.queries";
import TaskCenterComponent from "./task-center.component";
import dayjs from "../../utils/day";
+import { setModalContext } from "../../redux/modals/modals.actions"; // Import setModalContext
const POLL_INTERVAL = 60; // seconds
@@ -18,7 +18,11 @@ const mapStateToProps = createStructuredSelector({
currentUser: selectCurrentUser
});
-const TaskCenterContainer = ({ visible, onClose, bodyshop, currentUser }) => {
+const mapDispatchToProps = (dispatch) => ({
+ setTaskUpsertContext: (context) => dispatch(setModalContext({ context, modal: "taskUpsert" }))
+});
+
+const TaskCenterContainer = ({ visible, onClose, bodyshop, currentUser, setTaskUpsertContext }) => {
const [tasks, setTasks] = useState([]);
const [showIncompleteOnly, setShowIncompleteOnly] = useState(true);
const [loading, setLoading] = useState(false);
@@ -93,10 +97,15 @@ const TaskCenterContainer = ({ visible, onClose, bodyshop, currentUser }) => {
(id) => {
const task = tasks.find((t) => t.id === id);
if (task) {
- window.location.href = `/manage/jobs/${task.jobid}`;
+ setTaskUpsertContext({
+ context: {
+ taskId: task.id,
+ view: true
+ }
+ });
}
},
- [tasks]
+ [tasks, setModalContext]
);
return (
@@ -108,9 +117,9 @@ const TaskCenterContainer = ({ visible, onClose, bodyshop, currentUser }) => {
showIncompleteOnly={showIncompleteOnly}
toggleIncomplete={handleToggleIncomplete}
markAllComplete={handleMarkAllComplete}
- onTaskClick={handleTaskClick}
+ onTaskClick={handleTaskClick} // Pass the updated handler
/>
);
};
-export default connect(mapStateToProps)(TaskCenterContainer);
+export default connect(mapStateToProps, mapDispatchToProps)(TaskCenterContainer);
diff --git a/client/src/components/task-list/task-list.component.jsx b/client/src/components/task-list/task-list.component.jsx
index 3258f29a2..96a587908 100644
--- a/client/src/components/task-list/task-list.component.jsx
+++ b/client/src/components/task-list/task-list.component.jsx
@@ -4,13 +4,12 @@ import {
DeleteFilled,
DeleteOutlined,
EditFilled,
- ExclamationCircleFilled,
PlusCircleFilled,
SyncOutlined
} from "@ant-design/icons";
import { Button, Card, Space, Switch, Table } from "antd";
import queryString from "query-string";
-import React, { useCallback, useEffect } from "react";
+import { useCallback, useEffect } from "react";
import { useTranslation } from "react-i18next";
import { connect } from "react-redux";
import { Link, useLocation, useNavigate } from "react-router-dom";
@@ -19,6 +18,7 @@ import { pageLimit } from "../../utils/config";
import { DateFormatter, DateTimeFormatter } from "../../utils/DateFormatter.jsx";
import dayjs from "../../utils/day";
import ShareToTeamsButton from "../share-to-teams/share-to-teams.component.jsx";
+import PriorityLabel from "../../utils/tasksPriorityLabel.jsx";
/**
* Task List Component
@@ -54,47 +54,12 @@ const RemindAtRecord = ({ remindAt }) => {
);
};
-/**
- * Priority Label Component
- * @param priority
- * @returns {Element}
- * @constructor
- */
-const PriorityLabel = ({ priority }) => {
- switch (priority) {
- case 1:
- return (
-
- High
-
- );
- case 2:
- return (
-
- Medium
-
- );
- case 3:
- return (
-
- Low
-
- );
- default:
- return (
-
- None
-
- );
- }
-};
-
const mapDispatchToProps = (dispatch) => ({
// Existing dispatch props...
setTaskUpsertContext: (context) => dispatch(setModalContext({ context, modal: "taskUpsert" }))
});
-const mapStateToProps = (state) => ({});
+const mapStateToProps = () => ({});
export default connect(mapStateToProps, mapDispatchToProps)(TaskListComponent);
diff --git a/client/src/components/task-upsert-modal/task-upsert-modal.component.jsx b/client/src/components/task-upsert-modal/task-upsert-modal.component.jsx
index 562141a40..6e1f8209b 100644
--- a/client/src/components/task-upsert-modal/task-upsert-modal.component.jsx
+++ b/client/src/components/task-upsert-modal/task-upsert-modal.component.jsx
@@ -1,5 +1,4 @@
import { Col, Form, Input, Row, Select, Switch } from "antd";
-import React from "react";
import { useTranslation } from "react-i18next";
import { createStructuredSelector } from "reselect";
import { selectBodyshop, selectCurrentUser } from "../../redux/user/user.selectors.js";
diff --git a/client/src/pages/tasks/allTasksPageContainer.jsx b/client/src/pages/tasks/allTasksPageContainer.jsx
index 4b63347cb..3979a961e 100644
--- a/client/src/pages/tasks/allTasksPageContainer.jsx
+++ b/client/src/pages/tasks/allTasksPageContainer.jsx
@@ -1,4 +1,4 @@
-import React, { useEffect } from "react";
+import { useEffect } from "react";
import { useTranslation } from "react-i18next";
import TasksPageComponent from "./tasks.page.component";
import queryString from "query-string";
diff --git a/client/src/utils/tasksPriorityLabel.jsx b/client/src/utils/tasksPriorityLabel.jsx
new file mode 100644
index 000000000..a33b557f3
--- /dev/null
+++ b/client/src/utils/tasksPriorityLabel.jsx
@@ -0,0 +1,38 @@
+import { ExclamationCircleFilled } from "@ant-design/icons";
+
+/**
+ * Priority Label Component
+ * @param priority
+ * @returns {Element}
+ * @constructor
+ */
+const PriorityLabel = ({ priority }) => {
+ switch (priority) {
+ case 1:
+ return (
+
+ High
+
+ );
+ case 2:
+ return (
+
+ Medium
+
+ );
+ case 3:
+ return (
+
+ Low
+
+ );
+ default:
+ return (
+
+ None
+
+ );
+ }
+};
+
+export default PriorityLabel;