From 01cbdf14a9192d81a28b29af2353303053645d5e Mon Sep 17 00:00:00 2001 From: Dave Richer Date: Fri, 16 Aug 2024 12:14:52 -0400 Subject: [PATCH] - Add Alert Filter to visual production board Signed-off-by: Dave Richer --- .../production-board-kanban.component.jsx | 12 +++++------- .../settings/defaultKanbanSettings.js | 4 +++- .../production-board-kanban.settings.component.jsx | 9 ++++++++- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/client/src/components/production-board-kanban/production-board-kanban.component.jsx b/client/src/components/production-board-kanban/production-board-kanban.component.jsx index 62917e9bd..0c515132b 100644 --- a/client/src/components/production-board-kanban/production-board-kanban.component.jsx +++ b/client/src/components/production-board-kanban/production-board-kanban.component.jsx @@ -21,7 +21,7 @@ import { createBoardData } from "./production-board-kanban.utils.js"; import ProductionBoardKanbanSettings from "./settings/production-board-kanban.settings.component.jsx"; import cloneDeep from "lodash/cloneDeep"; import isEqual from "lodash/isEqual"; -import { mergeWithDefaults } from "./settings/defaultKanbanSettings.js"; +import { defaultFilters, mergeWithDefaults } from "./settings/defaultKanbanSettings.js"; import NoteUpsertModal from "../../components/note-upsert-modal/note-upsert-modal.container"; const mapStateToProps = createStructuredSelector({ @@ -41,7 +41,7 @@ const mapDispatchToProps = (dispatch) => ({ function ProductionBoardKanbanComponent({ data, bodyshop, refetch, insertAuditTrail, associationSettings, statuses }) { const [boardLanes, setBoardLanes] = useState({ lanes: [] }); - const [filter, setFilter] = useState({ search: "", employeeId: null }); + const [filter, setFilter] = useState(defaultFilters); const [loading, setLoading] = useState(true); const [isMoving, setIsMoving] = useState(false); const [orientation, setOrientation] = useState("vertical"); @@ -187,11 +187,9 @@ function ProductionBoardKanbanComponent({ data, bodyshop, refetch, insertAuditTr return mergeWithDefaults(kanbanSettings); }, [associationSettings]); - const handleSettingsChange = useCallback((newSettings) => { - setLoading(true); - setOrientation(newSettings.orientation ? "vertical" : "horizontal"); - setLoading(false); - }, []); + const handleSettingsChange = () => { + setFilter(defaultFilters); + }; if (loading) { return ; diff --git a/client/src/components/production-board-kanban/settings/defaultKanbanSettings.js b/client/src/components/production-board-kanban/settings/defaultKanbanSettings.js index 0d10e4e39..87b364ea2 100644 --- a/client/src/components/production-board-kanban/settings/defaultKanbanSettings.js +++ b/client/src/components/production-board-kanban/settings/defaultKanbanSettings.js @@ -48,6 +48,8 @@ const defaultKanbanSettings = { selectedEstimators: [] }; +const defaultFilters = { search: "", employeeId: null, alert: false }; + const mergeWithDefaults = (settings) => { // Create a new object that starts with the default settings const mergedSettings = { ...defaultKanbanSettings }; @@ -64,4 +66,4 @@ const mergeWithDefaults = (settings) => { return mergedSettings; }; -export { defaultKanbanSettings, statisticsItems, mergeWithDefaults }; +export { defaultKanbanSettings, statisticsItems, mergeWithDefaults, defaultFilters }; diff --git a/client/src/components/production-board-kanban/settings/production-board-kanban.settings.component.jsx b/client/src/components/production-board-kanban/settings/production-board-kanban.settings.component.jsx index 23da13412..0d78416f8 100644 --- a/client/src/components/production-board-kanban/settings/production-board-kanban.settings.component.jsx +++ b/client/src/components/production-board-kanban/settings/production-board-kanban.settings.component.jsx @@ -9,8 +9,9 @@ import InformationSettings from "./InformationSettings.jsx"; import StatisticsSettings from "./StatisticsSettings.jsx"; import FilterSettings from "./FilterSettings.jsx"; import PropTypes from "prop-types"; +import { isFunction } from "lodash"; -function ProductionBoardKanbanSettings({ associationSettings, parentLoading, bodyshop, data }) { +function ProductionBoardKanbanSettings({ associationSettings, parentLoading, bodyshop, data, onSettingsChange }) { const [form] = Form.useForm(); const [open, setOpen] = useState(false); const [loading, setLoading] = useState(false); @@ -61,6 +62,11 @@ function ProductionBoardKanbanSettings({ associationSettings, parentLoading, bod setOpen(false); setLoading(false); parentLoading(false); + + if (onSettingsChange && isFunction(onSettingsChange)) { + onSettingsChange(values); + } + setHasChanges(false); }; @@ -156,6 +162,7 @@ ProductionBoardKanbanSettings.propTypes = { associationSettings: PropTypes.object, parentLoading: PropTypes.func.isRequired, bodyshop: PropTypes.object.isRequired, + onSettingsChange: PropTypes.func, data: PropTypes.array };